@atlaskit/editor-common 66.0.5 → 68.0.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 (83) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/cjs/styles/shared/annotation.js +12 -7
  3. package/dist/cjs/styles/shared/block-marks.js +1 -1
  4. package/dist/cjs/styles/shared/blockquote.js +3 -1
  5. package/dist/cjs/styles/shared/code-mark.js +4 -2
  6. package/dist/cjs/styles/shared/column-layout.js +1 -1
  7. package/dist/cjs/styles/shared/rule.js +4 -2
  8. package/dist/cjs/styles/shared/shadow.js +3 -1
  9. package/dist/cjs/styles/shared/table.js +18 -16
  10. package/dist/cjs/styles/shared/task-decision.js +1 -1
  11. package/dist/cjs/ui/BaseTheme/index.js +4 -21
  12. package/dist/cjs/ui/Caption/index.js +4 -2
  13. package/dist/cjs/ui/Expand/index.js +20 -18
  14. package/dist/cjs/ui/Messages/index.js +5 -3
  15. package/dist/cjs/ui/OverflowShadow/index.js +49 -11
  16. package/dist/cjs/ui/OverflowShadow/shadowObserver.js +107 -0
  17. package/dist/cjs/ui/UnsupportedBlock/index.js +3 -1
  18. package/dist/cjs/ui/UnsupportedInline/index.js +3 -1
  19. package/dist/cjs/ui/index.js +14 -0
  20. package/dist/cjs/utils/breakout.js +2 -2
  21. package/dist/cjs/utils/unsupportedContent/get-unsupported-content-level-data.js +3 -3
  22. package/dist/cjs/utils/validate-using-spec.js +2 -2
  23. package/dist/cjs/version.json +1 -1
  24. package/dist/es2019/styles/shared/annotation.js +17 -7
  25. package/dist/es2019/styles/shared/block-marks.js +1 -1
  26. package/dist/es2019/styles/shared/blockquote.js +3 -1
  27. package/dist/es2019/styles/shared/code-mark.js +3 -2
  28. package/dist/es2019/styles/shared/column-layout.js +1 -0
  29. package/dist/es2019/styles/shared/panel.js +2 -0
  30. package/dist/es2019/styles/shared/rule.js +3 -2
  31. package/dist/es2019/styles/shared/shadow.js +14 -0
  32. package/dist/es2019/styles/shared/table.js +22 -18
  33. package/dist/es2019/styles/shared/task-decision.js +1 -0
  34. package/dist/es2019/ui/BaseTheme/index.js +3 -21
  35. package/dist/es2019/ui/Caption/index.js +3 -2
  36. package/dist/es2019/ui/Expand/index.js +19 -17
  37. package/dist/es2019/ui/Messages/index.js +4 -3
  38. package/dist/es2019/ui/OverflowShadow/index.js +48 -12
  39. package/dist/es2019/ui/OverflowShadow/shadowObserver.js +82 -0
  40. package/dist/es2019/ui/UnsupportedBlock/index.js +3 -2
  41. package/dist/es2019/ui/UnsupportedInline/index.js +3 -2
  42. package/dist/es2019/ui/index.js +1 -0
  43. package/dist/es2019/utils/breakout.js +1 -1
  44. package/dist/es2019/utils/unsupportedContent/get-unsupported-content-level-data.js +1 -1
  45. package/dist/es2019/utils/validate-using-spec.js +1 -1
  46. package/dist/es2019/version.json +1 -1
  47. package/dist/esm/styles/shared/annotation.js +11 -7
  48. package/dist/esm/styles/shared/block-marks.js +1 -1
  49. package/dist/esm/styles/shared/blockquote.js +2 -1
  50. package/dist/esm/styles/shared/code-mark.js +3 -2
  51. package/dist/esm/styles/shared/column-layout.js +1 -1
  52. package/dist/esm/styles/shared/panel.js +2 -0
  53. package/dist/esm/styles/shared/rule.js +3 -2
  54. package/dist/esm/styles/shared/shadow.js +4 -1
  55. package/dist/esm/styles/shared/table.js +20 -16
  56. package/dist/esm/styles/shared/task-decision.js +1 -1
  57. package/dist/esm/ui/BaseTheme/index.js +4 -22
  58. package/dist/esm/ui/Caption/index.js +3 -2
  59. package/dist/esm/ui/Expand/index.js +19 -18
  60. package/dist/esm/ui/Messages/index.js +4 -3
  61. package/dist/esm/ui/OverflowShadow/index.js +50 -11
  62. package/dist/esm/ui/OverflowShadow/shadowObserver.js +98 -0
  63. package/dist/esm/ui/UnsupportedBlock/index.js +2 -1
  64. package/dist/esm/ui/UnsupportedInline/index.js +2 -1
  65. package/dist/esm/ui/index.js +1 -0
  66. package/dist/esm/utils/breakout.js +2 -2
  67. package/dist/esm/utils/unsupportedContent/get-unsupported-content-level-data.js +1 -1
  68. package/dist/esm/utils/validate-using-spec.js +1 -1
  69. package/dist/esm/version.json +1 -1
  70. package/dist/types/extensions/manifest-helpers.d.ts +1 -1
  71. package/dist/types/extensions/module-helpers.d.ts +1 -1
  72. package/dist/types/extensions/types/extension-handler.d.ts +1 -1
  73. package/dist/types/extensions/types/extension-manifest-toolbar-item.d.ts +1 -1
  74. package/dist/types/extensions/types/extension-manifest.d.ts +1 -1
  75. package/dist/types/extensions/types/utils.d.ts +1 -1
  76. package/dist/types/provider-factory/autoformatting-provider.d.ts +1 -1
  77. package/dist/types/ui/BaseTheme/index.d.ts +2 -4
  78. package/dist/types/ui/OverflowShadow/index.d.ts +10 -3
  79. package/dist/types/ui/OverflowShadow/shadowObserver.d.ts +27 -0
  80. package/dist/types/ui/index.d.ts +1 -0
  81. package/dist/types/utils/unsupportedContent/get-unsupported-content-level-data.d.ts +1 -1
  82. package/dist/types/utils/validate-using-spec.d.ts +2 -1
  83. package/package.json +15 -13
@@ -5,20 +5,6 @@ import { akEditorDefaultLayoutWidth } from '@atlaskit/editor-shared-styles';
5
5
  import { useGlobalTheme } from '@atlaskit/theme/components';
6
6
  import { CHANNEL, fontSize } from '@atlaskit/theme/constants';
7
7
  import { WidthConsumer } from '../WidthProvider';
8
-
9
- function mapBreakpointToFontSize(breakpoint) {
10
- switch (breakpoint) {
11
- case 'M':
12
- return fontSize() + 2;
13
-
14
- case 'L':
15
- return fontSize() + 4;
16
-
17
- default:
18
- return fontSize();
19
- }
20
- }
21
-
22
8
  export function mapBreakpointToLayoutMaxWidth(breakpoint) {
23
9
  switch (breakpoint) {
24
10
  case 'M':
@@ -32,9 +18,7 @@ export function mapBreakpointToLayoutMaxWidth(breakpoint) {
32
18
  }
33
19
  }
34
20
  export function BaseThemeWrapper(_ref) {
35
- var breakpoint = _ref.breakpoint,
36
- dynamicTextSizing = _ref.dynamicTextSizing,
37
- baseFontSize = _ref.baseFontSize,
21
+ var baseFontSize = _ref.baseFontSize,
38
22
  children = _ref.children;
39
23
 
40
24
  var _useGlobalTheme = useGlobalTheme(),
@@ -42,24 +26,22 @@ export function BaseThemeWrapper(_ref) {
42
26
 
43
27
  var memoizedTheme = useMemo(function () {
44
28
  return _defineProperty({
45
- baseFontSize: dynamicTextSizing ? mapBreakpointToFontSize(breakpoint) : baseFontSize || mapBreakpointToFontSize('S'),
46
- layoutMaxWidth: dynamicTextSizing ? mapBreakpointToLayoutMaxWidth(breakpoint) : akEditorDefaultLayoutWidth
29
+ baseFontSize: baseFontSize || fontSize(),
30
+ layoutMaxWidth: akEditorDefaultLayoutWidth
47
31
  }, CHANNEL, {
48
32
  mode: mode
49
33
  });
50
- }, [breakpoint, dynamicTextSizing, baseFontSize, mode]);
34
+ }, [baseFontSize, mode]);
51
35
  return /*#__PURE__*/React.createElement(ThemeProvider, {
52
36
  theme: memoizedTheme
53
37
  }, children);
54
38
  }
55
39
  export function BaseTheme(_ref3) {
56
40
  var children = _ref3.children,
57
- dynamicTextSizing = _ref3.dynamicTextSizing,
58
41
  baseFontSize = _ref3.baseFontSize;
59
42
  return /*#__PURE__*/React.createElement(WidthConsumer, null, function (_ref4) {
60
43
  var breakpoint = _ref4.breakpoint;
61
44
  return /*#__PURE__*/React.createElement(BaseThemeWrapper, {
62
- dynamicTextSizing: dynamicTextSizing,
63
45
  breakpoint: breakpoint,
64
46
  baseFontSize: baseFontSize
65
47
  }, /*#__PURE__*/React.createElement(React.Fragment, null, children));
@@ -17,9 +17,10 @@ import React from 'react';
17
17
  import { css, jsx } from '@emotion/react';
18
18
  import { injectIntl } from 'react-intl-next';
19
19
  import { N200, N400 } from '@atlaskit/theme/colors';
20
+ import { token } from '@atlaskit/tokens';
20
21
  import { messages } from './messages';
21
- var captionWrapperStyle = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n margin-top: 8px;\n text-align: center;\n position: relative;\n color: ", ";\n"])), N400);
22
- var placeholderStyle = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n color: ", ";\n position: absolute;\n top: 0;\n width: 100%;\n"])), N200);
22
+ var captionWrapperStyle = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n margin-top: 8px;\n text-align: center;\n position: relative;\n color: ", ";\n"])), token('color.text.subtle', N400));
23
+ var placeholderStyle = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n color: ", ";\n position: absolute;\n top: 0;\n width: 100%;\n"])), token('color.text.subtlest', N200));
23
24
  export var CaptionComponent = /*#__PURE__*/function (_React$Component) {
24
25
  _inherits(CaptionComponent, _React$Component);
25
26
 
@@ -13,6 +13,7 @@ import { akEditorLineHeight, akEditorSwoopCubicBezier, akLayoutGutterOffset, rel
13
13
  import * as colors from '@atlaskit/theme/colors';
14
14
  import { themed } from '@atlaskit/theme/components';
15
15
  import { fontSize, gridSize } from '@atlaskit/theme/constants';
16
+ import { token } from '@atlaskit/tokens';
16
17
  export var messages = defineMessages({
17
18
  collapseNode: {
18
19
  id: 'fabric.editor.collapseNode',
@@ -36,16 +37,16 @@ export var messages = defineMessages({
36
37
  }
37
38
  });
38
39
  var BORDER_RADIUS = gridSize() / 2;
39
- var EXPAND_COLLAPSED_BACKGROUND = 'transparent';
40
+ var EXPAND_COLLAPSED_BACKGROUND = token('color.background.neutral.subtle', 'transparent');
40
41
  var EXPAND_SELECTED_BACKGROUND = themed({
41
- light: 'rgba(255, 255, 255, 0.6)',
42
- dark: 'rgba(9, 10, 11, 0.29)'
42
+ light: token('elevation.surface', 'rgba(255, 255, 255, 0.6)'),
43
+ dark: token('elevation.surface', 'rgba(9, 10, 11, 0.29)')
43
44
  });
44
- var EXPAND_FOCUSED_BORDER_COLOR = colors.B300;
45
+ var EXPAND_FOCUSED_BORDER_COLOR = token('color.border.focused', colors.B300);
45
46
  var EXPAND_COLLAPSED_BORDER_COLOR = 'transparent';
46
47
  var EXPAND_EXPANDED_BORDER_COLOR = themed({
47
- light: colors.N40A,
48
- dark: colors.DN50
48
+ light: token('color.border', colors.N40A),
49
+ dark: token('color.border', colors.DN50)
49
50
  });
50
51
  export var ExpandIconWrapper = function ExpandIconWrapper(_ref) {
51
52
  var children = _ref.children,
@@ -59,9 +60,9 @@ export var ExpandIconWrapper = function ExpandIconWrapper(_ref) {
59
60
 
60
61
  var expandIconWrapperStyle = function expandIconWrapperStyle(props) {
61
62
  return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n cursor: pointer;\n display: flex;\n color: ", ";\n border-radius: ", "px;\n width: 24px;\n height: 24px;\n\n &:hover {\n background: ", ";\n }\n\n svg {\n transition: transform 0.2s ", ";\n }\n"])), themed({
62
- light: colors.N90,
63
- dark: '#d9dde3'
64
- })(props), gridSize() / 2, colors.N30A, akEditorSwoopCubicBezier);
63
+ light: token('color.icon', colors.N90),
64
+ dark: token('color.icon', '#d9dde3')
65
+ })(props), gridSize() / 2, token('color.background.neutral.subtle.hovered', colors.N30A), akEditorSwoopCubicBezier);
65
66
  };
66
67
 
67
68
  var expandIconWrapperExpandedStyle = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n svg {\n transform: rotate(90deg);\n }\n"])));
@@ -87,9 +88,9 @@ var containerStyles = function containerStyles(styleProps) {
87
88
  var marginHorizontal = styleProps['data-node-type'] === 'expand' ? "-".concat(akLayoutGutterOffset, "px") : 0;
88
89
  var margin = "".concat(marginTop, " ").concat(marginHorizontal, " ").concat(marginBottom);
89
90
  return function (themeProps) {
90
- return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n border-width: 1px;\n border-style: solid;\n border-color: ", ";\n border-radius: ", "px;\n min-height: 25px;\n background: ", ";\n margin: ", ";\n\n transition: background 0.3s ", ",\n border-color 0.3s ", ";\n padding: ", "px;\n\n &:hover {\n border: 1px solid\n ", ";\n background: ", ";\n }\n\n td > &:first-child {\n margin-top: 0;\n }\n "])), focused ? EXPAND_FOCUSED_BORDER_COLOR : expanded ? EXPAND_EXPANDED_BORDER_COLOR(themeProps) : EXPAND_COLLAPSED_BORDER_COLOR, BORDER_RADIUS, !expanded ? EXPAND_COLLAPSED_BACKGROUND : EXPAND_SELECTED_BACKGROUND(themeProps), margin, akEditorSwoopCubicBezier, akEditorSwoopCubicBezier, gridSize(), themed({
91
- light: colors.N50A,
92
- dark: colors.DN50
91
+ return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n border-width: 1px;\n border-style: solid;\n border-color: ", ";\n border-radius: ", "px;\n min-height: 25px;\n background: ", ";\n margin: ", ";\n\n transition: background 0.3s ", ",\n border-color 0.3s ", ";\n padding: ", "px;\n\n // TODO: https://product-fabric.atlassian.net/browse/DSP-4152\n &:hover {\n border: 1px solid\n ", ";\n background: ", ";\n }\n\n td > &:first-child {\n margin-top: 0;\n }\n "])), focused ? EXPAND_FOCUSED_BORDER_COLOR : expanded ? EXPAND_EXPANDED_BORDER_COLOR(themeProps) : EXPAND_COLLAPSED_BORDER_COLOR, BORDER_RADIUS, !expanded ? EXPAND_COLLAPSED_BACKGROUND : EXPAND_SELECTED_BACKGROUND(themeProps), margin, akEditorSwoopCubicBezier, akEditorSwoopCubicBezier, gridSize(), themed({
92
+ light: token('color.border', colors.N50A),
93
+ dark: token('color.border', colors.DN50)
93
94
  })(themeProps), EXPAND_SELECTED_BACKGROUND(themeProps));
94
95
  };
95
96
  };
@@ -102,18 +103,18 @@ var contentStyles = function contentStyles(styleProps) {
102
103
 
103
104
  var titleInputStyles = function titleInputStyles(props) {
104
105
  return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n outline: none;\n border: none;\n font-size: ", ";\n line-height: ", ";\n font-weight: normal;\n color: ", ";\n background: transparent;\n display: flex;\n flex: 1;\n padding: 0 0 0 ", "px;\n width: 100%;\n\n &::placeholder {\n opacity: 0.6;\n color: ", ";\n }\n"])), relativeFontSizeToBase16(fontSize()), akEditorLineHeight, themed({
105
- light: colors.N200A,
106
- dark: colors.DN600
106
+ light: token('color.text.subtlest', colors.N200A),
107
+ dark: token('color.text.subtlest', colors.DN600)
107
108
  })(props), gridSize() / 2, themed({
108
- light: colors.N200A,
109
- dark: colors.DN600
109
+ light: token('color.text.subtlest', colors.N200A),
110
+ dark: token('color.text.subtlest', colors.DN600)
110
111
  })(props));
111
112
  };
112
113
 
113
114
  var titleContainerStyles = function titleContainerStyles(props) {
114
115
  return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n padding: 0;\n display: flex;\n align-items: flex-start;\n background: none;\n border: none;\n font-size: ", ";\n width: 100%;\n color: ", ";\n overflow: hidden;\n cursor: pointer;\n // Prevent browser selection being inside the title container\n user-select: none;\n\n &:focus {\n outline: 0;\n }\n"])), relativeFontSizeToBase16(fontSize()), themed({
115
- light: colors.N300A,
116
- dark: colors.DN600
116
+ light: token('color.text.subtle', colors.N300A),
117
+ dark: token('color.text.subtle', colors.DN600)
117
118
  })(props));
118
119
  };
119
120
 
@@ -9,11 +9,12 @@ import ErrorIcon from '@atlaskit/icon/glyph/error';
9
9
  import { G400, N200, R400 } from '@atlaskit/theme/colors';
10
10
  import { gridSize } from '@atlaskit/theme/constants';
11
11
  import { h200 } from '@atlaskit/theme/typography';
12
- var errorColor = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n color: ", ";\n"])), R400);
13
- var validColor = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n color: ", ";\n"])), G400);
12
+ import { token } from '@atlaskit/tokens';
13
+ var errorColor = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n color: ", ";\n"])), token('color.text.danger', R400));
14
+ var validColor = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n color: ", ";\n"])), token('color.text.success', G400));
14
15
 
15
16
  var messageStyle = function messageStyle(props) {
16
- return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n ", " font-weight: normal;\n color: ", ";\n margin-top: ", "px;\n display: flex;\n justify-content: baseline;\n"])), h200(props), N200, gridSize() / 2);
17
+ return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n ", " font-weight: normal;\n color: ", ";\n margin-top: ", "px;\n display: flex;\n justify-content: baseline;\n"])), h200(props), token('color.text.subtlest', N200), gridSize() / 2);
17
18
  };
18
19
 
19
20
  var iconWrapperStyle = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n margin-right: 4px;\n"])));
@@ -12,12 +12,11 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
12
12
  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
13
 
14
14
  import React from 'react';
15
- import browser from '../../utils/browser';
15
+ import { ShadowObserver, shadowObserverClassNames } from './shadowObserver';
16
16
  export var shadowClassNames = {
17
17
  RIGHT_SHADOW: 'right-shadow',
18
18
  LEFT_SHADOW: 'left-shadow'
19
19
  };
20
- var isIE11 = browser.ie_version === 11;
21
20
  export default function overflowShadow(Component, options) {
22
21
  return /*#__PURE__*/function (_React$Component) {
23
22
  _inherits(OverflowShadow, _React$Component);
@@ -35,13 +34,15 @@ export default function overflowShadow(Component, options) {
35
34
 
36
35
  _this = _super.call.apply(_super, [this].concat(args));
37
36
 
37
+ _defineProperty(_assertThisInitialized(_this), "overflowContainerWidth", 0);
38
+
38
39
  _defineProperty(_assertThisInitialized(_this), "state", {
39
40
  showLeftShadow: false,
40
41
  showRightShadow: false
41
42
  });
42
43
 
43
44
  _defineProperty(_assertThisInitialized(_this), "handleScroll", function (event) {
44
- if (!_this.overflowContainer || event.target !== _this.overflowContainer) {
45
+ if (!_this.overflowContainer || event.target !== _this.overflowContainer || options.useShadowObserver) {
45
46
  return;
46
47
  }
47
48
 
@@ -49,6 +50,10 @@ export default function overflowShadow(Component, options) {
49
50
  });
50
51
 
51
52
  _defineProperty(_assertThisInitialized(_this), "updateShadows", function () {
53
+ if (options.useShadowObserver) {
54
+ return;
55
+ }
56
+
52
57
  _this.setState(function (prevState) {
53
58
  if (!_this.overflowContainer) {
54
59
  return;
@@ -115,15 +120,15 @@ export default function overflowShadow(Component, options) {
115
120
  _this.overflowContainer = container;
116
121
  }
117
122
 
118
- if (options.scrollableSelector) {
119
- _this.scrollable = container.querySelectorAll(options.scrollableSelector);
123
+ if (options.useShadowObserver) {
124
+ _this.initShadowObserver();
125
+
126
+ return;
120
127
  }
121
128
 
122
129
  _this.updateShadows();
123
130
 
124
- if (!isIE11) {
125
- _this.overflowContainer.addEventListener('scroll', _this.handleScroll);
126
- }
131
+ _this.overflowContainer.addEventListener('scroll', _this.handleScroll);
127
132
  });
128
133
 
129
134
  return _this;
@@ -132,7 +137,11 @@ export default function overflowShadow(Component, options) {
132
137
  _createClass(OverflowShadow, [{
133
138
  key: "componentWillUnmount",
134
139
  value: function componentWillUnmount() {
135
- if (this.overflowContainer && !isIE11) {
140
+ if (options.useShadowObserver) {
141
+ return this.shadowObserver && this.shadowObserver.dispose();
142
+ }
143
+
144
+ if (this.overflowContainer) {
136
145
  this.overflowContainer.removeEventListener('scroll', this.handleScroll);
137
146
  }
138
147
 
@@ -141,7 +150,37 @@ export default function overflowShadow(Component, options) {
141
150
  }, {
142
151
  key: "componentDidUpdate",
143
152
  value: function componentDidUpdate() {
144
- this.updateShadows();
153
+ if (!options.useShadowObserver) {
154
+ this.updateShadows();
155
+ }
156
+ }
157
+ }, {
158
+ key: "initShadowObserver",
159
+ value: function initShadowObserver() {
160
+ var _this2 = this;
161
+
162
+ if (this.shadowObserver || !this.overflowContainer) {
163
+ return;
164
+ }
165
+
166
+ this.shadowObserver = new ShadowObserver({
167
+ scrollContainer: this.overflowContainer,
168
+ onUpdateShadows: function onUpdateShadows(shadowStates) {
169
+ _this2.setState(function (prevState) {
170
+ var showLeftShadow = shadowStates.showLeftShadow,
171
+ showRightShadow = shadowStates.showRightShadow;
172
+
173
+ if (showLeftShadow !== prevState.showLeftShadow || showRightShadow !== prevState.showRightShadow) {
174
+ return {
175
+ showLeftShadow: showLeftShadow,
176
+ showRightShadow: showRightShadow
177
+ };
178
+ }
179
+
180
+ return null;
181
+ });
182
+ }
183
+ });
145
184
  }
146
185
  }, {
147
186
  key: "render",
@@ -149,7 +188,7 @@ export default function overflowShadow(Component, options) {
149
188
  var _this$state = this.state,
150
189
  showLeftShadow = _this$state.showLeftShadow,
151
190
  showRightShadow = _this$state.showRightShadow;
152
- var classNames = [showRightShadow && shadowClassNames.RIGHT_SHADOW, showLeftShadow && shadowClassNames.LEFT_SHADOW].filter(Boolean).join(' ');
191
+ var classNames = [showRightShadow && shadowClassNames.RIGHT_SHADOW, showLeftShadow && shadowClassNames.LEFT_SHADOW, options.useShadowObserver && shadowObserverClassNames.SHADOW_CONTAINER].filter(Boolean).join(' ');
153
192
  return /*#__PURE__*/React.createElement(Component, _extends({
154
193
  handleRef: this.handleContainer,
155
194
  shadowClassNames: classNames
@@ -0,0 +1,98 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
3
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
+ export var ShadowKeys;
5
+
6
+ (function (ShadowKeys) {
7
+ ShadowKeys["SHOW_LEFT_SHADOW"] = "showLeftShadow";
8
+ ShadowKeys["SHOW_RIGHT_SHADOW"] = "showRightShadow";
9
+ })(ShadowKeys || (ShadowKeys = {}));
10
+
11
+ export var shadowObserverClassNames = {
12
+ SENTINEL_LEFT: 'sentinel-left',
13
+ SENTINEL_RIGHT: 'sentinel-right',
14
+ SHADOW_CONTAINER: 'with-shadow-observer'
15
+ };
16
+
17
+ var requestIdleCallback = function requestIdleCallback(fn) {
18
+ return window.requestIdleCallback ? window.requestIdleCallback(fn) : window.requestAnimationFrame(fn);
19
+ };
20
+
21
+ var cancelIdleCallback = function cancelIdleCallback(id) {
22
+ return window.cancelIdleCallback ? window.cancelIdleCallback(id) : window.cancelAnimationFrame(id);
23
+ };
24
+
25
+ export var ShadowObserver = /*#__PURE__*/function () {
26
+ function ShadowObserver(_ref) {
27
+ var _defineProperty2,
28
+ _this = this;
29
+
30
+ var scrollContainer = _ref.scrollContainer,
31
+ onUpdateShadows = _ref.onUpdateShadows;
32
+
33
+ _classCallCheck(this, ShadowObserver);
34
+
35
+ _defineProperty(this, "sentinels", {});
36
+
37
+ _defineProperty(this, "shadowStates", (_defineProperty2 = {}, _defineProperty(_defineProperty2, ShadowKeys.SHOW_LEFT_SHADOW, false), _defineProperty(_defineProperty2, ShadowKeys.SHOW_RIGHT_SHADOW, false), _defineProperty2));
38
+
39
+ _defineProperty(this, "init", function () {
40
+ if (!_this.scrollContainer || _this.intersectionObserver) {
41
+ return;
42
+ }
43
+
44
+ _this.sentinels.right = document.createElement('div');
45
+
46
+ _this.sentinels.right.classList.add(shadowObserverClassNames.SENTINEL_RIGHT);
47
+
48
+ _this.scrollContainer.appendChild(_this.sentinels.right);
49
+
50
+ _this.sentinels.left = document.createElement('div');
51
+
52
+ _this.sentinels.left.classList.add(shadowObserverClassNames.SENTINEL_LEFT);
53
+
54
+ _this.scrollContainer.prepend(_this.sentinels.left);
55
+
56
+ _this.intersectionObserver = new IntersectionObserver(function (entries, _) {
57
+ entries.forEach(_this.onIntersect);
58
+ }, {
59
+ root: _this.scrollContainer
60
+ });
61
+
62
+ _this.intersectionObserver.observe(_this.sentinels.left);
63
+
64
+ _this.intersectionObserver.observe(_this.sentinels.right);
65
+ });
66
+
67
+ _defineProperty(this, "onIntersect", function (entry) {
68
+ _this.requestCallbackId = requestIdleCallback(function () {
69
+ if (entry.target.classList.contains(shadowObserverClassNames.SENTINEL_LEFT)) {
70
+ _this.shadowStates[ShadowKeys.SHOW_LEFT_SHADOW] = !entry.isIntersecting;
71
+ }
72
+
73
+ if (entry.target.classList.contains(shadowObserverClassNames.SENTINEL_RIGHT)) {
74
+ _this.shadowStates[ShadowKeys.SHOW_RIGHT_SHADOW] = !entry.isIntersecting;
75
+ }
76
+
77
+ _this.onUpdateShadows(_this.shadowStates);
78
+ });
79
+ });
80
+
81
+ this.scrollContainer = scrollContainer;
82
+ this.onUpdateShadows = onUpdateShadows;
83
+ this.init();
84
+ }
85
+
86
+ _createClass(ShadowObserver, [{
87
+ key: "dispose",
88
+ value: function dispose() {
89
+ if (this.intersectionObserver) {
90
+ this.intersectionObserver.disconnect();
91
+ this.intersectionObserver = undefined;
92
+ this.requestCallbackId && cancelIdleCallback(this.requestCallbackId);
93
+ }
94
+ }
95
+ }]);
96
+
97
+ return ShadowObserver;
98
+ }();
@@ -10,12 +10,13 @@ import { relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
10
10
  import QuestionsIcon from '@atlaskit/icon/glyph/question-circle';
11
11
  import { N30, N50 } from '@atlaskit/theme/colors';
12
12
  import { borderRadius, fontSize } from '@atlaskit/theme/constants';
13
+ import { token } from '@atlaskit/tokens';
13
14
  import Tooltip from '@atlaskit/tooltip';
14
15
  import { unsupportedContentMessages } from '../../messages/unsupportedContent';
15
16
  import { ACTION_SUBJECT_ID } from '../../utils/analytics';
16
17
  import { trackUnsupportedContentTooltipDisplayedFor } from '../../utils/track-unsupported-content';
17
18
  import { getUnsupportedContent } from '../unsupported-content-helper';
18
- var blockNodeStyle = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n background: ", ";\n border: 1px dashed ", ";\n border-radius: ", "px;\n box-sizing: border-box;\n cursor: default;\n display: flex;\n font-size: ", ";\n margin: 10px 0;\n min-height: 24px;\n padding: 10px;\n text-align: center;\n vertical-align: text-bottom;\n min-width: 120px;\n align-items: center;\n justify-content: center;\n"])), N30, N50, borderRadius(), relativeFontSizeToBase16(fontSize()));
19
+ var blockNodeStyle = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n background: ", ";\n border: 1px dashed ", ";\n border-radius: ", "px;\n box-sizing: border-box;\n cursor: default;\n display: flex;\n font-size: ", ";\n margin: 10px 0;\n min-height: 24px;\n padding: 10px;\n text-align: center;\n vertical-align: text-bottom;\n min-width: 120px;\n align-items: center;\n justify-content: center;\n"])), token('color.background.disabled', N30), token('color.border.disabled', N50), borderRadius(), relativeFontSizeToBase16(fontSize()));
19
20
 
20
21
  var UnsupportedBlockNode = function UnsupportedBlockNode(_ref) {
21
22
  var node = _ref.node,
@@ -10,12 +10,13 @@ import { relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
10
10
  import QuestionsIcon from '@atlaskit/icon/glyph/question-circle';
11
11
  import { N30, N50 } from '@atlaskit/theme/colors';
12
12
  import { borderRadius, fontSize } from '@atlaskit/theme/constants';
13
+ import { token } from '@atlaskit/tokens';
13
14
  import Tooltip from '@atlaskit/tooltip';
14
15
  import { unsupportedContentMessages } from '../../messages/unsupportedContent';
15
16
  import { ACTION_SUBJECT_ID } from '../../utils/analytics';
16
17
  import { trackUnsupportedContentTooltipDisplayedFor } from '../../utils/track-unsupported-content';
17
18
  import { getUnsupportedContent } from '../unsupported-content-helper';
18
- var inlineNodeStyle = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n align-items: center;\n background: ", ";\n border: 1px dashed ", ";\n border-radius: ", "px;\n box-sizing: border-box;\n cursor: default;\n display: inline-flex;\n font-size: ", ";\n margin: 0 2px;\n min-height: 24px;\n padding: 0 10px;\n vertical-align: middle;\n white-space: nowrap;\n"])), N30, N50, borderRadius(), relativeFontSizeToBase16(fontSize()));
19
+ var inlineNodeStyle = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n align-items: center;\n background: ", ";\n border: 1px dashed ", ";\n border-radius: ", "px;\n box-sizing: border-box;\n cursor: default;\n display: inline-flex;\n font-size: ", ";\n margin: 0 2px;\n min-height: 24px;\n padding: 0 10px;\n vertical-align: middle;\n white-space: nowrap;\n"])), token('color.background.disabled', N30), token('color.border.disabled', N50), borderRadius(), relativeFontSizeToBase16(fontSize()));
19
20
 
20
21
  var UnsupportedInlineNode = function UnsupportedInlineNode(_ref) {
21
22
  var node = _ref.node,
@@ -10,6 +10,7 @@ export { BaseTheme, mapBreakpointToLayoutMaxWidth } from './BaseTheme';
10
10
  export { default as withOuterListeners } from './with-outer-listeners';
11
11
  export { WidthConsumer, WidthProvider, getBreakpoint } from './WidthProvider';
12
12
  export { default as overflowShadow, shadowClassNames } from './OverflowShadow';
13
+ export { shadowObserverClassNames, ShadowObserver } from './OverflowShadow/shadowObserver';
13
14
  export { WithCreateAnalyticsEvent } from './WithCreateAnalyticsEvent';
14
15
  export { messages as expandMessages, sharedExpandStyles, ExpandIconWrapper, expandLayoutWrapperStyle, ExpandLayoutWrapperWithRef } from './Expand';
15
16
  export { ErrorMessage, HelperMessage, ValidMessage } from './Messages';
@@ -29,8 +29,8 @@ var breakoutConsts = {
29
29
  return '100%';
30
30
  }
31
31
  },
32
- calcLineLength: function calcLineLength(containerWidth, allowDynamicTextSizing) {
33
- return allowDynamicTextSizing && containerWidth ? breakoutConsts.mapBreakpointToLayoutMaxWidth(breakoutConsts.getBreakpoint(containerWidth)) : breakoutConsts.defaultLayoutWidth;
32
+ calcLineLength: function calcLineLength() {
33
+ return breakoutConsts.defaultLayoutWidth;
34
34
  },
35
35
  calcWideWidth: function calcWideWidth() {
36
36
  var containerWidth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : breakoutConsts.defaultLayoutWidth;
@@ -1,4 +1,4 @@
1
- import { traverse } from '@atlaskit/adf-utils';
1
+ import { traverse } from '@atlaskit/adf-utils/traverse';
2
2
  export var UNSUPPORTED_CONTENT_LEVEL_SEVERITY;
3
3
 
4
4
  (function (UNSUPPORTED_CONTENT_LEVEL_SEVERITY) {
@@ -1,4 +1,4 @@
1
- import { validator } from '@atlaskit/adf-utils';
1
+ import { validator } from '@atlaskit/adf-utils/validator';
2
2
  export var UNSUPPORTED_NODE_ATTRIBUTE = 'unsupportedNodeAttribute';
3
3
  import { ACTION_SUBJECT_ID } from './analytics';
4
4
  import { fireUnsupportedEvent } from './track-unsupported-content';
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-common",
3
- "version": "66.0.5",
3
+ "version": "68.0.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,4 +1,4 @@
1
- import { ADFEntity } from '@atlaskit/adf-utils';
1
+ import type { ADFEntity } from '@atlaskit/adf-utils/types';
2
2
  import { ExtensionKey, ExtensionManifest, ExtensionModuleAction, ExtensionModuleActionObject, ExtensionType, Module } from './types/extension-manifest';
3
3
  export declare const FORGE_EXTENSION_TYPE = "com.atlassian.ecosystem";
4
4
  export declare const getExtensionKeyAndNodeKey: (extensionKey: ExtensionKey, extensionType: ExtensionType) => string[];
@@ -1,4 +1,4 @@
1
- import { ADFEntity } from '@atlaskit/adf-utils';
1
+ import type { ADFEntity } from '@atlaskit/adf-utils/types';
2
2
  import { ExtensionAPI, ExtensionAutoConvertHandler, ExtensionManifest, ExtensionModule, ExtensionProvider, ExtensionToolbarButton, MenuItem } from './types';
3
3
  export declare const groupBy: <T>(arr: T[], attr: keyof T, keyRenamer: (key: T[keyof T]) => string) => {
4
4
  [k: string]: T;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { ADFEntity } from '@atlaskit/adf-utils';
2
+ import type { ADFEntity } from '@atlaskit/adf-utils/types';
3
3
  import { Parameters } from './extension-parameters';
4
4
  export interface ExtensionParams<T extends Parameters> {
5
5
  extensionKey: string;
@@ -1,4 +1,4 @@
1
- import { ADFEntity } from '@atlaskit/adf-utils';
1
+ import type { ADFEntity } from '@atlaskit/adf-utils/types';
2
2
  import { ExtensionAPI } from './extension-handler';
3
3
  import { ExtensionIconModule } from './extension-manifest-common';
4
4
  export declare type ToolbarButtonAction = (contextNode: ADFEntity, api: ExtensionAPI) => Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import { ComponentType } from 'react';
2
- import { ADFEntity } from '@atlaskit/adf-utils';
2
+ import type { ADFEntity } from '@atlaskit/adf-utils/types';
3
3
  import { ExtensionParams, UpdateExtension } from './extension-handler';
4
4
  import { ExtensionIconModule, MaybeESModule } from './extension-manifest-common';
5
5
  import { ContextualToolbar } from './extension-manifest-toolbar-item';
@@ -1,4 +1,4 @@
1
- import { ADFEntity } from '@atlaskit/adf-utils';
1
+ import type { ADFEntity } from '@atlaskit/adf-utils/types';
2
2
  import { ExtensionModuleActionHandler, ExtensionType, Icon } from './extension-manifest';
3
3
  export declare type MenuItem = {
4
4
  key: string;
@@ -1,4 +1,4 @@
1
- import { ADFEntity } from '@atlaskit/adf-utils';
1
+ import type { ADFEntity } from '@atlaskit/adf-utils/types';
2
2
  export declare type AutoformatReplacement = ADFEntity;
3
3
  export declare type AutoformatHandler = (match: Array<string>) => Promise<AutoformatReplacement>;
4
4
  export declare type AutoformatRuleset = {
@@ -3,15 +3,13 @@ import { Breakpoints } from '../WidthProvider';
3
3
  export declare function mapBreakpointToLayoutMaxWidth(breakpoint: Breakpoints): 760 | 850 | 680;
4
4
  declare type BaseThemeWrapperProps = {
5
5
  breakpoint: Breakpoints;
6
- dynamicTextSizing?: boolean;
7
6
  children: React.ReactNode;
8
7
  baseFontSize?: number;
9
8
  };
10
- export declare function BaseThemeWrapper({ breakpoint, dynamicTextSizing, baseFontSize, children, }: BaseThemeWrapperProps): JSX.Element;
9
+ export declare function BaseThemeWrapper({ baseFontSize, children, }: BaseThemeWrapperProps): JSX.Element;
11
10
  declare type BaseThemeProps = {
12
11
  children: React.ReactNode;
13
- dynamicTextSizing?: boolean;
14
12
  baseFontSize?: number;
15
13
  };
16
- export declare function BaseTheme({ children, dynamicTextSizing, baseFontSize, }: BaseThemeProps): JSX.Element;
14
+ export declare function BaseTheme({ children, baseFontSize }: BaseThemeProps): JSX.Element;
17
15
  export {};
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
+ import { ShadowObserver } from './shadowObserver';
2
3
  export declare const shadowClassNames: {
3
4
  RIGHT_SHADOW: string;
4
5
  LEFT_SHADOW: string;
5
6
  };
6
7
  export interface OverflowShadowProps {
7
- handleRef: (ref: HTMLElement | null) => void;
8
- shadowClassNames: string;
8
+ handleRef?: (ref: HTMLElement | null) => void;
9
+ shadowClassNames?: string;
9
10
  }
10
11
  export interface OverflowShadowState {
11
12
  showLeftShadow: boolean;
@@ -13,12 +14,14 @@ export interface OverflowShadowState {
13
14
  }
14
15
  export interface OverflowShadowOptions {
15
16
  overflowSelector: string;
16
- scrollableSelector?: string;
17
+ useShadowObserver?: boolean;
17
18
  }
18
19
  export default function overflowShadow<P>(Component: React.ComponentType<P & OverflowShadowProps> | React.StatelessComponent<P & OverflowShadowProps>, options: OverflowShadowOptions): {
19
20
  new (props: Readonly<P>): {
20
21
  overflowContainer?: HTMLElement | null | undefined;
21
22
  container?: HTMLElement | undefined;
23
+ shadowObserver?: ShadowObserver | undefined;
24
+ overflowContainerWidth: number;
22
25
  scrollable?: NodeList | undefined;
23
26
  diff?: number | undefined;
24
27
  state: {
@@ -33,6 +36,7 @@ export default function overflowShadow<P>(Component: React.ComponentType<P & Ove
33
36
  calcOverflowDiff: () => number;
34
37
  calcScrollableWidth: () => number;
35
38
  handleContainer: (container: HTMLElement | null) => void;
39
+ initShadowObserver(): void;
36
40
  render(): JSX.Element;
37
41
  context: any;
38
42
  setState<K extends keyof OverflowShadowState>(state: OverflowShadowState | ((prevState: Readonly<OverflowShadowState>, props: Readonly<P>) => OverflowShadowState | Pick<OverflowShadowState, K> | null) | Pick<OverflowShadowState, K> | null, callback?: (() => void) | undefined): void;
@@ -57,6 +61,8 @@ export default function overflowShadow<P>(Component: React.ComponentType<P & Ove
57
61
  new (props: P, context?: any): {
58
62
  overflowContainer?: HTMLElement | null | undefined;
59
63
  container?: HTMLElement | undefined;
64
+ shadowObserver?: ShadowObserver | undefined;
65
+ overflowContainerWidth: number;
60
66
  scrollable?: NodeList | undefined;
61
67
  diff?: number | undefined;
62
68
  state: {
@@ -71,6 +77,7 @@ export default function overflowShadow<P>(Component: React.ComponentType<P & Ove
71
77
  calcOverflowDiff: () => number;
72
78
  calcScrollableWidth: () => number;
73
79
  handleContainer: (container: HTMLElement | null) => void;
80
+ initShadowObserver(): void;
74
81
  render(): JSX.Element;
75
82
  context: any;
76
83
  setState<K extends keyof OverflowShadowState>(state: OverflowShadowState | ((prevState: Readonly<OverflowShadowState>, props: Readonly<P>) => OverflowShadowState | Pick<OverflowShadowState, K> | null) | Pick<OverflowShadowState, K> | null, callback?: (() => void) | undefined): void;
@@ -0,0 +1,27 @@
1
+ export declare enum ShadowKeys {
2
+ SHOW_LEFT_SHADOW = "showLeftShadow",
3
+ SHOW_RIGHT_SHADOW = "showRightShadow"
4
+ }
5
+ export declare type ShadowsStates = {
6
+ [ShadowKey in ShadowKeys]: boolean;
7
+ };
8
+ export declare const shadowObserverClassNames: {
9
+ SENTINEL_LEFT: string;
10
+ SENTINEL_RIGHT: string;
11
+ SHADOW_CONTAINER: string;
12
+ };
13
+ export declare class ShadowObserver {
14
+ private intersectionObserver?;
15
+ private scrollContainer;
16
+ private onUpdateShadows;
17
+ private sentinels;
18
+ private requestCallbackId?;
19
+ readonly shadowStates: ShadowsStates;
20
+ constructor({ scrollContainer, onUpdateShadows, }: {
21
+ scrollContainer: HTMLElement;
22
+ onUpdateShadows: (eventData: ShadowsStates) => void;
23
+ });
24
+ private init;
25
+ private onIntersect;
26
+ dispose(): void;
27
+ }
@@ -16,6 +16,7 @@ export { WidthConsumer, WidthProvider, getBreakpoint } from './WidthProvider';
16
16
  export type { WidthConsumerContext, Breakpoints } from './WidthProvider';
17
17
  export { default as overflowShadow, shadowClassNames } from './OverflowShadow';
18
18
  export type { OverflowShadowOptions, OverflowShadowProps, OverflowShadowState, } from './OverflowShadow';
19
+ export { shadowObserverClassNames, ShadowObserver, } from './OverflowShadow/shadowObserver';
19
20
  export { WithCreateAnalyticsEvent } from './WithCreateAnalyticsEvent';
20
21
  export { messages as expandMessages, sharedExpandStyles, ExpandIconWrapper, expandLayoutWrapperStyle, ExpandLayoutWrapperWithRef, } from './Expand';
21
22
  export type { StyleProps as ExpandStyleProps } from './Expand';