@atlaskit/editor-common 99.6.1 → 99.7.1

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 (167) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/i18n/cs.js +5 -0
  3. package/dist/cjs/i18n/da.js +5 -0
  4. package/dist/cjs/i18n/de.js +6 -0
  5. package/dist/cjs/i18n/en.js +80 -0
  6. package/dist/cjs/i18n/en_GB.js +80 -0
  7. package/dist/cjs/i18n/en_ZZ.js +80 -0
  8. package/dist/cjs/i18n/es.js +10 -0
  9. package/dist/cjs/i18n/fi.js +5 -0
  10. package/dist/cjs/i18n/fr.js +6 -0
  11. package/dist/cjs/i18n/hu.js +6 -0
  12. package/dist/cjs/i18n/it.js +5 -0
  13. package/dist/cjs/i18n/ja.js +5 -0
  14. package/dist/cjs/i18n/ko.js +5 -0
  15. package/dist/cjs/i18n/nb.js +5 -0
  16. package/dist/cjs/i18n/nl.js +5 -0
  17. package/dist/cjs/i18n/pl.js +6 -0
  18. package/dist/cjs/i18n/pt_BR.js +5 -0
  19. package/dist/cjs/i18n/ru.js +9 -0
  20. package/dist/cjs/i18n/sv.js +5 -0
  21. package/dist/cjs/i18n/th.js +5 -0
  22. package/dist/cjs/i18n/tr.js +5 -0
  23. package/dist/cjs/i18n/uk.js +9 -0
  24. package/dist/cjs/i18n/vi.js +6 -0
  25. package/dist/cjs/i18n/zh.js +5 -0
  26. package/dist/cjs/i18n/zh_TW.js +5 -0
  27. package/dist/cjs/link/LinkSearch/index.js +1 -0
  28. package/dist/cjs/monitoring/error.js +1 -1
  29. package/dist/cjs/node-width/index.js +41 -4
  30. package/dist/cjs/react-node-view/getInlineNodeViewProducer.js +75 -19
  31. package/dist/cjs/react-node-view/onVisibleObserverFactory.js +48 -0
  32. package/dist/cjs/safe-plugin/index.js +1 -2
  33. package/dist/cjs/ui/DropList/index.js +1 -1
  34. package/dist/cjs/ui/WithCreateAnalyticsEvent/index.js +1 -0
  35. package/dist/cjs/utils/compare-props.js +2 -2
  36. package/dist/cjs/utils/compareNodes.js +2 -2
  37. package/dist/cjs/utils/filter/privacy-filter.js +3 -3
  38. package/dist/cjs/utils/index.js +6 -6
  39. package/dist/cjs/utils/performance/measure-tti.js +3 -3
  40. package/dist/cjs/utils/track-unsupported-content.js +2 -2
  41. package/dist/cjs/utils/validator.js +3 -3
  42. package/dist/cjs/with-plugin-state/index.js +1 -0
  43. package/dist/es2019/i18n/cs.js +5 -0
  44. package/dist/es2019/i18n/da.js +5 -0
  45. package/dist/es2019/i18n/de.js +6 -0
  46. package/dist/es2019/i18n/en.js +80 -0
  47. package/dist/es2019/i18n/en_GB.js +80 -0
  48. package/dist/es2019/i18n/en_ZZ.js +80 -0
  49. package/dist/es2019/i18n/es.js +10 -0
  50. package/dist/es2019/i18n/fi.js +5 -0
  51. package/dist/es2019/i18n/fr.js +6 -0
  52. package/dist/es2019/i18n/hu.js +6 -0
  53. package/dist/es2019/i18n/it.js +5 -0
  54. package/dist/es2019/i18n/ja.js +5 -0
  55. package/dist/es2019/i18n/ko.js +5 -0
  56. package/dist/es2019/i18n/nb.js +5 -0
  57. package/dist/es2019/i18n/nl.js +5 -0
  58. package/dist/es2019/i18n/pl.js +6 -0
  59. package/dist/es2019/i18n/pt_BR.js +5 -0
  60. package/dist/es2019/i18n/ru.js +9 -0
  61. package/dist/es2019/i18n/sv.js +5 -0
  62. package/dist/es2019/i18n/th.js +5 -0
  63. package/dist/es2019/i18n/tr.js +5 -0
  64. package/dist/es2019/i18n/uk.js +9 -0
  65. package/dist/es2019/i18n/vi.js +6 -0
  66. package/dist/es2019/i18n/zh.js +5 -0
  67. package/dist/es2019/i18n/zh_TW.js +5 -0
  68. package/dist/es2019/monitoring/error.js +1 -1
  69. package/dist/es2019/node-width/index.js +39 -4
  70. package/dist/es2019/react-node-view/getInlineNodeViewProducer.js +79 -20
  71. package/dist/es2019/react-node-view/onVisibleObserverFactory.js +31 -0
  72. package/dist/es2019/safe-plugin/index.js +1 -2
  73. package/dist/es2019/ui/DropList/index.js +1 -1
  74. package/dist/esm/i18n/cs.js +5 -0
  75. package/dist/esm/i18n/da.js +5 -0
  76. package/dist/esm/i18n/de.js +6 -0
  77. package/dist/esm/i18n/en.js +80 -0
  78. package/dist/esm/i18n/en_GB.js +80 -0
  79. package/dist/esm/i18n/en_ZZ.js +80 -0
  80. package/dist/esm/i18n/es.js +10 -0
  81. package/dist/esm/i18n/fi.js +5 -0
  82. package/dist/esm/i18n/fr.js +6 -0
  83. package/dist/esm/i18n/hu.js +6 -0
  84. package/dist/esm/i18n/it.js +5 -0
  85. package/dist/esm/i18n/ja.js +5 -0
  86. package/dist/esm/i18n/ko.js +5 -0
  87. package/dist/esm/i18n/nb.js +5 -0
  88. package/dist/esm/i18n/nl.js +5 -0
  89. package/dist/esm/i18n/pl.js +6 -0
  90. package/dist/esm/i18n/pt_BR.js +5 -0
  91. package/dist/esm/i18n/ru.js +9 -0
  92. package/dist/esm/i18n/sv.js +5 -0
  93. package/dist/esm/i18n/th.js +5 -0
  94. package/dist/esm/i18n/tr.js +5 -0
  95. package/dist/esm/i18n/uk.js +9 -0
  96. package/dist/esm/i18n/vi.js +6 -0
  97. package/dist/esm/i18n/zh.js +5 -0
  98. package/dist/esm/i18n/zh_TW.js +5 -0
  99. package/dist/esm/link/LinkSearch/index.js +1 -0
  100. package/dist/esm/monitoring/error.js +1 -1
  101. package/dist/esm/node-width/index.js +41 -4
  102. package/dist/esm/react-node-view/getInlineNodeViewProducer.js +75 -19
  103. package/dist/esm/react-node-view/onVisibleObserverFactory.js +41 -0
  104. package/dist/esm/safe-plugin/index.js +1 -2
  105. package/dist/esm/ui/DropList/index.js +1 -1
  106. package/dist/esm/ui/WithCreateAnalyticsEvent/index.js +1 -0
  107. package/dist/esm/utils/compare-props.js +3 -2
  108. package/dist/esm/utils/compareNodes.js +2 -2
  109. package/dist/esm/utils/filter/privacy-filter.js +3 -3
  110. package/dist/esm/utils/index.js +6 -6
  111. package/dist/esm/utils/performance/measure-tti.js +3 -3
  112. package/dist/esm/utils/track-unsupported-content.js +3 -2
  113. package/dist/esm/utils/validator.js +3 -3
  114. package/dist/esm/with-plugin-state/index.js +1 -0
  115. package/dist/types/i18n/cs.d.ts +5 -0
  116. package/dist/types/i18n/da.d.ts +5 -0
  117. package/dist/types/i18n/de.d.ts +6 -0
  118. package/dist/types/i18n/en.d.ts +80 -0
  119. package/dist/types/i18n/en_GB.d.ts +80 -0
  120. package/dist/types/i18n/en_ZZ.d.ts +80 -0
  121. package/dist/types/i18n/es.d.ts +10 -0
  122. package/dist/types/i18n/fi.d.ts +5 -0
  123. package/dist/types/i18n/fr.d.ts +6 -0
  124. package/dist/types/i18n/hu.d.ts +6 -0
  125. package/dist/types/i18n/it.d.ts +5 -0
  126. package/dist/types/i18n/ja.d.ts +5 -0
  127. package/dist/types/i18n/ko.d.ts +5 -0
  128. package/dist/types/i18n/nb.d.ts +5 -0
  129. package/dist/types/i18n/nl.d.ts +5 -0
  130. package/dist/types/i18n/pl.d.ts +6 -0
  131. package/dist/types/i18n/pt_BR.d.ts +5 -0
  132. package/dist/types/i18n/ru.d.ts +9 -0
  133. package/dist/types/i18n/sv.d.ts +5 -0
  134. package/dist/types/i18n/th.d.ts +5 -0
  135. package/dist/types/i18n/tr.d.ts +5 -0
  136. package/dist/types/i18n/uk.d.ts +9 -0
  137. package/dist/types/i18n/vi.d.ts +6 -0
  138. package/dist/types/i18n/zh.d.ts +5 -0
  139. package/dist/types/i18n/zh_TW.d.ts +5 -0
  140. package/dist/types/react-node-view/onVisibleObserverFactory.d.ts +8 -0
  141. package/dist/types-ts4.5/i18n/cs.d.ts +5 -0
  142. package/dist/types-ts4.5/i18n/da.d.ts +5 -0
  143. package/dist/types-ts4.5/i18n/de.d.ts +6 -0
  144. package/dist/types-ts4.5/i18n/en.d.ts +80 -0
  145. package/dist/types-ts4.5/i18n/en_GB.d.ts +80 -0
  146. package/dist/types-ts4.5/i18n/en_ZZ.d.ts +80 -0
  147. package/dist/types-ts4.5/i18n/es.d.ts +10 -0
  148. package/dist/types-ts4.5/i18n/fi.d.ts +5 -0
  149. package/dist/types-ts4.5/i18n/fr.d.ts +6 -0
  150. package/dist/types-ts4.5/i18n/hu.d.ts +6 -0
  151. package/dist/types-ts4.5/i18n/it.d.ts +5 -0
  152. package/dist/types-ts4.5/i18n/ja.d.ts +5 -0
  153. package/dist/types-ts4.5/i18n/ko.d.ts +5 -0
  154. package/dist/types-ts4.5/i18n/nb.d.ts +5 -0
  155. package/dist/types-ts4.5/i18n/nl.d.ts +5 -0
  156. package/dist/types-ts4.5/i18n/pl.d.ts +6 -0
  157. package/dist/types-ts4.5/i18n/pt_BR.d.ts +5 -0
  158. package/dist/types-ts4.5/i18n/ru.d.ts +9 -0
  159. package/dist/types-ts4.5/i18n/sv.d.ts +5 -0
  160. package/dist/types-ts4.5/i18n/th.d.ts +5 -0
  161. package/dist/types-ts4.5/i18n/tr.d.ts +5 -0
  162. package/dist/types-ts4.5/i18n/uk.d.ts +9 -0
  163. package/dist/types-ts4.5/i18n/vi.d.ts +6 -0
  164. package/dist/types-ts4.5/i18n/zh.d.ts +5 -0
  165. package/dist/types-ts4.5/i18n/zh_TW.d.ts +5 -0
  166. package/dist/types-ts4.5/react-node-view/onVisibleObserverFactory.d.ts +8 -0
  167. package/package.json +13 -10
@@ -1,7 +1,9 @@
1
1
  import { findParentNodeOfTypeClosestToPos } from '@atlaskit/editor-prosemirror/utils';
2
2
  import { akEditorDefaultLayoutWidth, akEditorFullWidthLayoutWidth, akEditorWideLayoutWidth, akLayoutGutterOffset, gridMediumMaxWidth } from '@atlaskit/editor-shared-styles';
3
+ import { fg } from '@atlaskit/platform-feature-flags';
3
4
  import { BODIED_EXT_PADDING } from '../styles/shared/extension';
4
5
  import { LAYOUT_COLUMN_PADDING, LAYOUT_SECTION_MARGIN } from '../styles/shared/layout';
6
+ import { tableCellPadding } from '../styles/shared/table';
5
7
  import { absoluteBreakoutWidth } from '../utils/breakout';
6
8
  const GRID_SIZE = 8;
7
9
  export const layoutToWidth = {
@@ -46,7 +48,7 @@ export const getParentNodeWidth = (pos, state, containerWidth, isFullWidthModeEn
46
48
  return state['contextPanelPluginKey$'];
47
49
  }
48
50
  };
49
- if (node.type === schema.nodes.layoutSection) {
51
+ if (node.type === schema.nodes.layoutSection && !fg('platform_editor_nested_tables_resizing')) {
50
52
  var _contextPanelPluginKe, _contextPanelPluginKe2;
51
53
  parentWidth += akLayoutGutterOffset * 2; // extra width that gets added to layout
52
54
 
@@ -63,10 +65,27 @@ export const getParentNodeWidth = (pos, state, containerWidth, isFullWidthModeEn
63
65
  }
64
66
  }
65
67
  }
66
-
67
- // account for the padding of the parent node
68
68
  switch (node.type) {
69
69
  case schema.nodes.layoutSection:
70
+ if (fg('platform_editor_nested_tables_resizing')) {
71
+ var _contextPanelPluginKe3, _contextPanelPluginKe4;
72
+ parentWidth += akLayoutGutterOffset * 2; // extra width that gets added to layout
73
+
74
+ // Calculate width of parent layout column when
75
+ // Parallel layout with viewport greater than 1024px
76
+ // OR side panel of an extension is open and change the node width to smaller than containerWidth
77
+ if (containerWidth.width > gridMediumMaxWidth || ((_contextPanelPluginKe3 = contextPanelPluginKey.getState(state)) === null || _contextPanelPluginKe3 === void 0 ? void 0 : _contextPanelPluginKe3.contents.length) > 0 && ((_contextPanelPluginKe4 = contextPanelPluginKey.getState(state)) === null || _contextPanelPluginKe4 === void 0 ? void 0 : _contextPanelPluginKe4.contents[0]) !== undefined) {
78
+ parentWidth -= (LAYOUT_SECTION_MARGIN + 2) * (node.childCount - 1); // margin between sections
79
+ const $pos = state.doc.resolve(pos);
80
+ const column = findParentNodeOfTypeClosestToPos($pos, [state.schema.nodes.layoutColumn]);
81
+ if (column && column.node && !isNaN(column.node.attrs.width)) {
82
+ // get exact width of parent layout column using node attrs
83
+ parentWidth = Math.round(parentWidth * column.node.attrs.width * 0.01);
84
+ }
85
+ }
86
+ }
87
+
88
+ // account for the padding of the parent node
70
89
  parentWidth -= LAYOUT_COLUMN_PADDING * 2;
71
90
  break;
72
91
  case schema.nodes.bodiedExtension:
@@ -85,6 +104,17 @@ export const getParentNodeWidth = (pos, state, containerWidth, isFullWidthModeEn
85
104
  // padding left
86
105
  parentWidth -= GRID_SIZE * 4 - GRID_SIZE / 2;
87
106
  break;
107
+ case schema.nodes.tableCell:
108
+ case schema.nodes.tableHeader:
109
+ if (fg('platform_editor_nested_tables_resizing')) {
110
+ // Calculate the available column width
111
+ if (Array.isArray(node.attrs.colwidth)) {
112
+ parentWidth = node.attrs.colwidth.slice(0, node.attrs.colspan).reduce((sum, width) => sum + width, 0);
113
+ }
114
+ // Compensate for padding
115
+ parentWidth -= tableCellPadding * 2;
116
+ }
117
+ break;
88
118
  }
89
119
  parentWidth -= 2; // border
90
120
 
@@ -95,7 +125,12 @@ const getNestedParentNode = (tablePos, state) => {
95
125
  return null;
96
126
  }
97
127
  const $pos = state.doc.resolve(tablePos);
98
- const parent = findParentNodeOfTypeClosestToPos($pos, [state.schema.nodes.bodiedExtension, state.schema.nodes.extensionFrame, state.schema.nodes.layoutSection, state.schema.nodes.expand]);
128
+ let parent;
129
+ if (fg('platform_editor_nested_tables_resizing')) {
130
+ parent = findParentNodeOfTypeClosestToPos($pos, [state.schema.nodes.bodiedExtension, state.schema.nodes.extensionFrame, state.schema.nodes.layoutSection, state.schema.nodes.expand, state.schema.nodes.tableCell, state.schema.nodes.tableHeader]);
131
+ } else {
132
+ parent = findParentNodeOfTypeClosestToPos($pos, [state.schema.nodes.bodiedExtension, state.schema.nodes.extensionFrame, state.schema.nodes.layoutSection, state.schema.nodes.expand]);
133
+ }
99
134
  return parent ? parent.node : null;
100
135
  };
101
136
  const calcBreakoutNodeWidth = (layout, containerWidth, isFullWidthModeEnabled) => {
@@ -7,12 +7,18 @@ import React from 'react';
7
7
 
8
8
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
9
9
  import { jsx } from '@emotion/react';
10
+ import { DOMSerializer } from '@atlaskit/editor-prosemirror/model';
11
+ import { fg } from '@atlaskit/platform-feature-flags';
10
12
  import { ACTION_SUBJECT, ACTION_SUBJECT_ID } from '../analytics';
11
13
  import { ErrorBoundary } from '../ui/ErrorBoundary';
12
14
  import { analyticsEventKey, browser, getPerformanceOptions, startMeasureReactNodeViewRendered, stopMeasureReactNodeViewRendered } from '../utils';
13
15
  import { ZERO_WIDTH_SPACE } from '../whitespace';
14
16
  import { generateUniqueNodeKey } from './generateUniqueNodeKey';
17
+ import { getOrCreateOnVisibleObserver } from './onVisibleObserverFactory';
15
18
  export const inlineNodeViewClassname = 'inlineNodeView';
19
+ const canRenderFallback = node => {
20
+ return node.type.isInline && node.type.isAtom && node.type.isLeaf;
21
+ };
16
22
  function createNodeView({
17
23
  nodeViewParams,
18
24
  pmPluginFactoryParams,
@@ -20,6 +26,7 @@ function createNodeView({
20
26
  extraComponentProps,
21
27
  extraNodeViewProps
22
28
  }) {
29
+ const shouldVirtualize = fg('platform_editor_lego__inline_node_virtualization');
23
30
  // We set a variable for the current node which is
24
31
  // used for comparisions when doing updates, before being
25
32
  // overwritten to the updated node.
@@ -63,23 +70,62 @@ function createNodeView({
63
70
  extraComponentProps
64
71
  }), domRef, key);
65
72
  }
66
- const {
67
- samplingRate,
68
- slowThreshold,
69
- trackingEnabled
70
- } = getPerformanceOptions(nodeViewParams.view);
71
- trackingEnabled && startMeasureReactNodeViewRendered({
72
- nodeTypeName: currentNode.type.name
73
- });
73
+ let didRenderComponentWithIntersectionObserver = false;
74
+ let destroyed = false;
75
+ let removeIntersectionObserver = () => {};
76
+ function renderFallback() {
77
+ var _currentNode$type, _currentNode$type$spe;
78
+ if (canRenderFallback(currentNode) && typeof ((_currentNode$type = currentNode.type) === null || _currentNode$type === void 0 ? void 0 : (_currentNode$type$spe = _currentNode$type.spec) === null || _currentNode$type$spe === void 0 ? void 0 : _currentNode$type$spe.toDOM) === 'function') {
79
+ const fallback = DOMSerializer.renderSpec(document, currentNode.type.spec.toDOM(currentNode));
80
+ domRef.replaceChildren(fallback.dom);
81
+ }
82
+ }
83
+ function attachNodeViewObserver() {
84
+ const observer = getOrCreateOnVisibleObserver(nodeViewParams.view);
85
+ removeIntersectionObserver = observer.observe(domRef, () => {
86
+ if (!didRenderComponentWithIntersectionObserver && !destroyed) {
87
+ domRef.replaceChildren();
88
+ renderComponent();
89
+ didRenderComponentWithIntersectionObserver = true;
90
+ }
91
+ });
92
+ }
93
+ if (shouldVirtualize) {
94
+ renderFallback();
95
+ attachNodeViewObserver();
96
+ } else {
97
+ const {
98
+ samplingRate,
99
+ slowThreshold,
100
+ trackingEnabled
101
+ } = getPerformanceOptions(nodeViewParams.view);
102
+ trackingEnabled && startMeasureReactNodeViewRendered({
103
+ nodeTypeName: currentNode.type.name
104
+ });
74
105
 
75
- // We render the component while creating the node view
76
- renderComponent();
77
- trackingEnabled && stopMeasureReactNodeViewRendered({
78
- nodeTypeName: currentNode.type.name,
79
- dispatchAnalyticsEvent,
80
- samplingRate,
81
- slowThreshold
82
- });
106
+ // We render the component while creating the node view
107
+ renderComponent();
108
+ trackingEnabled && stopMeasureReactNodeViewRendered({
109
+ nodeTypeName: currentNode.type.name,
110
+ dispatchAnalyticsEvent,
111
+ samplingRate,
112
+ slowThreshold
113
+ });
114
+ }
115
+ const extraNodeViewPropsWithStopEvent = {
116
+ ...extraNodeViewProps,
117
+ ...(fg('platform_editor_lego__inline_node_virtualization') ? {
118
+ // This is not related to virtualization, but it's something we should fix/handle
119
+ // Remove this comment when `platform_editor_lego__inline_node_virtualization` FF is cleaned up
120
+ stopEvent(event) {
121
+ const maybeStopEvent = extraNodeViewProps === null || extraNodeViewProps === void 0 ? void 0 : extraNodeViewProps.stopEvent;
122
+ if (typeof maybeStopEvent === 'function') {
123
+ return maybeStopEvent(event);
124
+ }
125
+ return false;
126
+ }
127
+ } : {})
128
+ };
83
129
 
84
130
  // https://prosemirror.net/docs/ref/#view.NodeView
85
131
  const nodeView = {
@@ -111,10 +157,20 @@ function createNodeView({
111
157
  setDomAttrs(nextNode, domRef);
112
158
  }
113
159
  currentNode = nextNode;
114
- renderComponent();
160
+ if (shouldVirtualize) {
161
+ if (didRenderComponentWithIntersectionObserver) {
162
+ renderComponent();
163
+ }
164
+ } else {
165
+ renderComponent();
166
+ }
115
167
  return true;
116
168
  },
117
169
  destroy() {
170
+ if (shouldVirtualize) {
171
+ removeIntersectionObserver();
172
+ }
173
+
118
174
  // When prosemirror destroys the node view, we need to clean up
119
175
  // what we have previously rendered using the editor portal
120
176
  // provider api.
@@ -123,8 +179,11 @@ function createNodeView({
123
179
  // of HTMLSpanElement type however once the node view has
124
180
  // been destroyed no other consumers should still be using it.
125
181
  domRef = undefined;
182
+ if (shouldVirtualize) {
183
+ destroyed = true;
184
+ }
126
185
  },
127
- ...extraNodeViewProps
186
+ ...extraNodeViewPropsWithStopEvent
128
187
  };
129
188
  return nodeView;
130
189
  }
@@ -146,7 +205,7 @@ function getPortalChildren({
146
205
  extraComponentProps
147
206
  }) {
148
207
  return function portalChildren() {
149
- var _currentNode$type$nam, _currentNode$type;
208
+ var _currentNode$type$nam, _currentNode$type2;
150
209
  // All inline nodes use `display: inline` to allow for multi-line
151
210
  // wrapping. This does produce an issue in Chrome where it is not
152
211
  // possible to click select the position after the node,
@@ -170,7 +229,7 @@ function getPortalChildren({
170
229
 
171
230
  return jsx(ErrorBoundary, {
172
231
  component: ACTION_SUBJECT.REACT_NODE_VIEW,
173
- componentId: (_currentNode$type$nam = currentNode === null || currentNode === void 0 ? void 0 : (_currentNode$type = currentNode.type) === null || _currentNode$type === void 0 ? void 0 : _currentNode$type.name) !== null && _currentNode$type$nam !== void 0 ? _currentNode$type$nam : ACTION_SUBJECT_ID.UNKNOWN_NODE,
232
+ componentId: (_currentNode$type$nam = currentNode === null || currentNode === void 0 ? void 0 : (_currentNode$type2 = currentNode.type) === null || _currentNode$type2 === void 0 ? void 0 : _currentNode$type2.name) !== null && _currentNode$type$nam !== void 0 ? _currentNode$type$nam : ACTION_SUBJECT_ID.UNKNOWN_NODE,
174
233
  dispatchAnalyticsEvent: dispatchAnalyticsEvent
175
234
  }, jsx("span", {
176
235
  className: `zeroWidthSpaceContainer`
@@ -0,0 +1,31 @@
1
+ import memoize from 'lodash/memoize';
2
+ // Use this selector to set the intersection observer boundary for editor's inline node views
3
+ // If this does not exist, it will use the IntersectionObserver's default root
4
+ const INTERSECTION_OBSERVER_ROOT_SELECTOR = '[data-editor-scroll-container="true"]';
5
+ const INTERSECTION_OBSERVER_OPTIONS = {
6
+ rootMargin: '0px 0px 100px 0px',
7
+ threshold: 0
8
+ };
9
+
10
+ // Parameterized singleton
11
+ export const getOrCreateOnVisibleObserver = memoize(view => {
12
+ const intersectionObserverOptions = {
13
+ root: view.dom.closest(INTERSECTION_OBSERVER_ROOT_SELECTOR),
14
+ ...INTERSECTION_OBSERVER_OPTIONS
15
+ };
16
+ const callbackMap = new WeakMap();
17
+ const observer = new IntersectionObserver(entries => {
18
+ entries.filter(entry => entry.isIntersecting) // Only process visible entries
19
+ .map(entry => callbackMap.get(entry.target))
20
+ // Invoke callbacks together to group browser rendering
21
+ // Avoiding requestAnimationFrame to reduce visual flickering
22
+ .forEach(cb => cb === null || cb === void 0 ? void 0 : cb());
23
+ }, intersectionObserverOptions);
24
+ return {
25
+ observe: (el, callback) => {
26
+ callbackMap.set(el, callback);
27
+ observer.observe(el);
28
+ return () => observer.unobserve(el);
29
+ }
30
+ };
31
+ });
@@ -1,5 +1,4 @@
1
1
  import { Plugin } from '@atlaskit/editor-prosemirror/state';
2
- import { fg } from '@atlaskit/platform-feature-flags';
3
2
  import { createProseMirrorMetadata } from '../prosemirror-dom-metadata';
4
3
  /**
5
4
  * 🧱 Internal Helper Function: Editor FE Platform
@@ -46,7 +45,7 @@ const wrapGetPosExceptions = spec => {
46
45
  // eslint-disable-next-line no-extra-bind
47
46
  }).bind(thisArg);
48
47
  const result = Reflect.apply(target, thisArg, [node, view, safeGetPos, ...more]);
49
- if ((result === null || result === void 0 ? void 0 : result.dom) instanceof HTMLElement && fg('platform_editor_breakout_use_css')) {
48
+ if ((result === null || result === void 0 ? void 0 : result.dom) instanceof HTMLElement) {
50
49
  attachGenericProseMirrorMetadata({
51
50
  nodeOrMark: node,
52
51
  dom: result.dom
@@ -13,7 +13,7 @@ import withAnalyticsContext from '@atlaskit/analytics-next/withAnalyticsContext'
13
13
  import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
14
14
  import Layer from '../Layer';
15
15
  const packageName = "@atlaskit/editor-common";
16
- const packageVersion = "99.6.1";
16
+ const packageVersion = "99.7.1";
17
17
  const halfFocusRing = 1;
18
18
  const dropOffset = '0, 8';
19
19
  // Ignored via go/ees005
@@ -86,6 +86,7 @@ export default {
86
86
  'fabric.editor.columnMovedRight': 'Sloupec byl přesunut doprava na pozici {index} z {total}',
87
87
  'fabric.editor.columnSelected': 'Je vybrán sloupec {index} z {total}',
88
88
  'fabric.editor.columns': 'Rozvržení',
89
+ 'fabric.editor.columns.advanced.layout.description': '{numberOfColumns, plural, one {Vložit {numberOfColumns} stejný sloupec} few {Vložit {numberOfColumns} stejné sloupce} many {Vložit {numberOfColumns} stejného sloupce} other {Vložit {numberOfColumns} stejných sloupců}}',
89
90
  'fabric.editor.columns.description': 'Uspořádejte svou stránku pomocí oddílů',
90
91
  'fabric.editor.columnsAreInserted': '{count, plural, one {Byl vložen sloupec.} few {Byly vloženy {count} sloupce.} many {Bylo vloženo {count} sloupce.} other {Bylo vloženo {count} sloupců.}}',
91
92
  'fabric.editor.columnsAreRemoved': '{count, plural, one {Sloupec byl odebrán.} few {Byly odebrány {count} sloupce.} many {Bylo odebráno {count} sloupce.} other {Bylo odebráno {count} sloupců.}}',
@@ -296,6 +297,7 @@ export default {
296
297
  'fabric.editor.keyboardShortcuts': 'Klávesové zkratky',
297
298
  'fabric.editor.layout.columnOption': '{count, plural, one {Sloupec} few {{count} sloupce} many {{count} sloupce} other {{count} sloupců}}',
298
299
  'fabric.editor.layout.placeholder': 'Přidat obsah',
300
+ 'fabric.editor.layout.resizeLayout': 'Změnit velikost rozvržení',
299
301
  'fabric.editor.layoutFixedWidth': 'Zpět na zobrazení standardní šířky',
300
302
  'fabric.editor.layoutFullWidth': 'Přepnout do zobrazení na celou šířku',
301
303
  'fabric.editor.layoutWide': 'Přepnout do zobrazení na šířku',
@@ -363,6 +365,8 @@ export default {
363
365
  'fabric.editor.notePanel.description': 'Přidat poznámku do barevného panelu',
364
366
  'fabric.editor.numberedColumn': 'Číslovaný sloupec',
365
367
  'fabric.editor.off': 'Formátování {formattingType} vypnuto',
368
+ 'fabric.editor.offlineErrorFallbackDescription': 'Zkuste stránku načíst znovu.',
369
+ 'fabric.editor.offlineErrorFallbackHeading': 'Něco se pokazilo',
366
370
  'fabric.editor.on': '{formattingType} zapnuto',
367
371
  'fabric.editor.openCellOptions': 'Otevřít možnosti buňky',
368
372
  'fabric.editor.openLink': 'Otevřít odkaz na nové kartě',
@@ -501,6 +505,7 @@ export default {
501
505
  'fabric.editor.unableToOpenLink': 'Tento odkaz nelze otevřít',
502
506
  'fabric.editor.underline': 'Podtržení',
503
507
  'fabric.editor.undo': 'Vrátit',
508
+ 'fabric.editor.unknown.label': 'Neznámý',
504
509
  'fabric.editor.unlink': 'Zrušit propojení',
505
510
  'fabric.editor.unorderedList': 'Seznam s odrážkami',
506
511
  'fabric.editor.unorderedList.description': 'Vytvořit neseřazený seznam',
@@ -86,6 +86,7 @@ export default {
86
86
  'fabric.editor.columnMovedRight': 'Kolonne flyttet til højre til {index} af {total}',
87
87
  'fabric.editor.columnSelected': 'Kolonne {index} af {total} er valgt',
88
88
  'fabric.editor.columns': 'Layout',
89
+ 'fabric.editor.columns.advanced.layout.description': '{numberOfColumns, plural, one {Indsæt {numberOfColumns} lige kolonne} other {Indsæt {numberOfColumns} lige kolonner}}',
89
90
  'fabric.editor.columns.description': 'Opdel din side i afsnit',
90
91
  'fabric.editor.columnsAreInserted': '{count, plural, one {En kolonne er blevet indsat} other {{count} kolonner er blevet indsat}}',
91
92
  'fabric.editor.columnsAreRemoved': '{count, plural, one {Kolonnen er blevet fjernet} other {{count} kolonner er blevet fjernet}}',
@@ -296,6 +297,7 @@ export default {
296
297
  'fabric.editor.keyboardShortcuts': 'Tastaturgenveje',
297
298
  'fabric.editor.layout.columnOption': '{count, plural, one {Kolonne} other {{count} kolonner}}',
298
299
  'fabric.editor.layout.placeholder': 'Tilføj indhold',
300
+ 'fabric.editor.layout.resizeLayout': 'Ændr størrelse på layout',
299
301
  'fabric.editor.layoutFixedWidth': 'Tilbage til centrering',
300
302
  'fabric.editor.layoutFullWidth': 'Vis i fuld bredde',
301
303
  'fabric.editor.layoutWide': 'Vis bred',
@@ -363,6 +365,8 @@ export default {
363
365
  'fabric.editor.notePanel.description': 'Tilføj en note i et farvet panel',
364
366
  'fabric.editor.numberedColumn': 'Kolonne med nummerering',
365
367
  'fabric.editor.off': '{formattingType} fra',
368
+ 'fabric.editor.offlineErrorFallbackDescription': 'Prøv at genindlæse siden.',
369
+ 'fabric.editor.offlineErrorFallbackHeading': 'Noget gik galt!',
366
370
  'fabric.editor.on': '{formattingType} til',
367
371
  'fabric.editor.openCellOptions': 'Åbn celleegenskaber',
368
372
  'fabric.editor.openLink': 'Åbn link i en nye fane',
@@ -501,6 +505,7 @@ export default {
501
505
  'fabric.editor.unableToOpenLink': 'Kan ikke åbne dette link',
502
506
  'fabric.editor.underline': 'Understreget',
503
507
  'fabric.editor.undo': 'Fortryd',
508
+ 'fabric.editor.unknown.label': 'Ukendt',
504
509
  'fabric.editor.unlink': 'Fjern link',
505
510
  'fabric.editor.unorderedList': 'Punktopstilling',
506
511
  'fabric.editor.unorderedList.description': 'Opret en ikke-sorteret liste',
@@ -86,6 +86,7 @@ export default {
86
86
  'fabric.editor.columnMovedRight': 'Spalte nach rechts verschoben auf {index} von {total}',
87
87
  'fabric.editor.columnSelected': 'Spalte {index} von {total} ausgewählt',
88
88
  'fabric.editor.columns': 'Layouts',
89
+ 'fabric.editor.columns.advanced.layout.description': '{numberOfColumns, plural, one {{numberOfColumns} gleich große Spalte einfügen} other {{numberOfColumns} gleich große Spalten einfügen}}',
89
90
  'fabric.editor.columns.description': 'Seite mithilfe von Abschnitten strukturieren',
90
91
  'fabric.editor.columnsAreInserted': '{count, plural, one {Eine Spalte wurde hinzugefügt.} other {{count} Spalten wurden hinzugefügt.}}',
91
92
  'fabric.editor.columnsAreRemoved': '{count, plural, one {Die Spalte wurde entfernt.} other {{count} Spalten wurden entfernt.}}',
@@ -296,6 +297,7 @@ export default {
296
297
  'fabric.editor.keyboardShortcuts': 'Tastenkombinationen',
297
298
  'fabric.editor.layout.columnOption': '{count, plural, one {Spalte} other {{count} Spalten}}',
298
299
  'fabric.editor.layout.placeholder': 'Inhalt hinzufügen',
300
+ 'fabric.editor.layout.resizeLayout': 'Größe des Layouts ändern',
299
301
  'fabric.editor.layoutFixedWidth': 'Zurück zur Mitte',
300
302
  'fabric.editor.layoutFullWidth': 'Volle Breite wählen',
301
303
  'fabric.editor.layoutWide': 'Verbreitern',
@@ -363,6 +365,8 @@ export default {
363
365
  'fabric.editor.notePanel.description': 'Hinweis in einem farbigen Panel einfügen',
364
366
  'fabric.editor.numberedColumn': 'Nummerierte Spalte',
365
367
  'fabric.editor.off': '{formattingType} aus',
368
+ 'fabric.editor.offlineErrorFallbackDescription': 'Versuchen Sie, die Seite neu zu laden.',
369
+ 'fabric.editor.offlineErrorFallbackHeading': 'Etwas ist schiefgelaufen!',
366
370
  'fabric.editor.on': '{formattingType} ein',
367
371
  'fabric.editor.openCellOptions': 'Zellenoptionen öffnen',
368
372
  'fabric.editor.openLink': 'Link in neuer Registerkarte öffnen',
@@ -467,6 +471,7 @@ export default {
467
471
  'fabric.editor.text.formatting.off': 'Textformatierung aus',
468
472
  'fabric.editor.textColor': 'Textfarbe: {selectedColorName}',
469
473
  'fabric.editor.textColorTooltip': 'Textfarbe',
474
+ 'fabric.editor.textFormat': 'Text formatieren',
470
475
  'fabric.editor.textFormatting': 'Textformatierung',
471
476
  'fabric.editor.textStyles': 'Textstile: {blockTypeName}',
472
477
  'fabric.editor.textStylesTooltip': 'Textstile',
@@ -500,6 +505,7 @@ export default {
500
505
  'fabric.editor.unableToOpenLink': 'Dieser Link konnte nicht geöffnet werden.',
501
506
  'fabric.editor.underline': 'Unterstrichen',
502
507
  'fabric.editor.undo': 'Rückgängig machen',
508
+ 'fabric.editor.unknown.label': 'Unbekannt',
503
509
  'fabric.editor.unlink': 'Verknüpfung löschen',
504
510
  'fabric.editor.unorderedList': 'Aufzählung',
505
511
  'fabric.editor.unorderedList.description': 'Unsortierte Liste erstellen',
@@ -22,6 +22,82 @@ export default {
22
22
  'fabric.editor.addMediaFiles': 'Add image, video, or file',
23
23
  'fabric.editor.addRowAbove': 'Add row above',
24
24
  'fabric.editor.addRowBelow': 'Add row below',
25
+ 'fabric.editor.ai.proactive.askAIButtonLabel.non-final': 'Ask AI',
26
+ 'fabric.editor.ai.proactive.beta.label.non-final': 'BETA',
27
+ 'fabric.editor.ai.proactive.close.label.non-final': 'Close',
28
+ 'fabric.editor.ai.proactive.enableSuggestionsButtonLabel.non-final': 'Turn on',
29
+ 'fabric.editor.ai.proactive.enableSuggestionsState.description.non-final': 'Turn on suggested edits to quickly preview content improvements.',
30
+ 'fabric.editor.ai.proactive.enableSuggestionsState.title.non-final': 'You create. We polish.',
31
+ 'fabric.editor.ai.proactive.error.markdownErrorMessage': "We're having trouble generating the preview. Close the dialog and try again.",
32
+ 'fabric.editor.ai.proactive.error.unhandledErrorMessage': "We're having trouble. Close the dialog and try again.",
33
+ 'fabric.editor.ai.proactive.findingMoreSuggestionsLoadingLabel.non-final': 'Finding more suggestions',
34
+ 'fabric.editor.ai.proactive.findingSuggestionsLabel.non-final': 'Finding suggestions',
35
+ 'fabric.editor.ai.proactive.findingSuggestionsLoadingLabel.non-final': 'Finding suggestions',
36
+ 'fabric.editor.ai.proactive.loading.iconAltText.non-final': 'Loading icon',
37
+ 'fabric.editor.ai.proactive.moreActions.label.non-final': 'More actions',
38
+ 'fabric.editor.ai.proactive.moreMenu.giveFeedback.non-final': 'Give feedback',
39
+ 'fabric.editor.ai.proactive.moreMenu.label.non-final': 'more',
40
+ 'fabric.editor.ai.proactive.moreMenu.manageSuggestions.non-final': 'Manage Suggestions',
41
+ 'fabric.editor.ai.proactive.moreMenu.manageSuggestionsTitle.non-final': 'Manage suggestions',
42
+ 'fabric.editor.ai.proactive.moreMenu.toggleAllPanelSuggestionsDescription.non-final': 'Use panels to make your message stand out.',
43
+ 'fabric.editor.ai.proactive.moreMenu.toggleAllPanelSuggestionsTitle.non-final': 'Panels',
44
+ 'fabric.editor.ai.proactive.moreMenu.toggleAllSuggestionsDescription.non-final': 'Toggle to turn suggested edits on or off.',
45
+ 'fabric.editor.ai.proactive.moreMenu.toggleAllSuggestionsTitle.non-final': 'All suggestions',
46
+ 'fabric.editor.ai.proactive.moreMenu.toggleErrorPanelDescription.non-final': 'Transform text into a red error panel.',
47
+ 'fabric.editor.ai.proactive.moreMenu.toggleErrorPanelTitle.non-final': 'Error panel',
48
+ 'fabric.editor.ai.proactive.moreMenu.toggleFormatParagraphDescription.non-final': 'Suggestions for writing, lists, content structure, and spelling.',
49
+ 'fabric.editor.ai.proactive.moreMenu.toggleFormatParagraphTitle.non-final': 'Enhance content',
50
+ 'fabric.editor.ai.proactive.moreMenu.toggleInfoPanelDescription.non-final': 'Transform text into a blue information panel.',
51
+ 'fabric.editor.ai.proactive.moreMenu.toggleInfoPanelTitle.non-final': 'Info panel',
52
+ 'fabric.editor.ai.proactive.moreMenu.toggleNotePanelDescription.non-final': 'Transform text into a purple note panel.',
53
+ 'fabric.editor.ai.proactive.moreMenu.toggleNotePanelTitle.non-final': 'Note panel',
54
+ 'fabric.editor.ai.proactive.moreMenu.toggleSplitParagraphDescription.non-final': 'Add paragraph breaks to separate key ideas.',
55
+ 'fabric.editor.ai.proactive.moreMenu.toggleSplitParagraphTitle.non-final': 'Paragraph break',
56
+ 'fabric.editor.ai.proactive.moreMenu.toggleSuccessPanelDescription.non-final': 'Transform text into a green success panel.',
57
+ 'fabric.editor.ai.proactive.moreMenu.toggleSuccessPanelTitle.non-final': 'Success panel',
58
+ 'fabric.editor.ai.proactive.moreMenu.toggleTableDescription.non-final': 'Format content in a table to improve readability.',
59
+ 'fabric.editor.ai.proactive.moreMenu.toggleTableTitle.non-final': 'Table',
60
+ 'fabric.editor.ai.proactive.moreMenu.toggleWarningPanelDescription.non-final': 'Transform text into a yellow warning panel.',
61
+ 'fabric.editor.ai.proactive.moreMenu.toggleWarningPanelTitle.non-final': 'Warning panel',
62
+ 'fabric.editor.ai.proactive.noSuggestionsState.description.non-final': 'You can also ask AI to improve your page with requests such as <i>Add a table of contents</i> or <i>Create headings</i>.',
63
+ 'fabric.editor.ai.proactive.noSuggestionsState.title.non-final': 'Suggestions will appear here',
64
+ 'fabric.editor.ai.proactive.preview.dismissProactiveRecommendation.non-final': 'Dismiss',
65
+ 'fabric.editor.ai.proactive.preview.insertBelowProactiveRecommendation': 'Insert below',
66
+ 'fabric.editor.ai.proactive.preview.replaceProactiveRecommendation': 'Replace',
67
+ 'fabric.editor.ai.proactive.recommendation.convertToErrorPanel.description.non-final': 'Use a red error panel to make your message stand out.',
68
+ 'fabric.editor.ai.proactive.recommendation.convertToErrorPanel.title.non-final': 'Frame with error panel',
69
+ 'fabric.editor.ai.proactive.recommendation.convertToInfoPanel.description.non-final': 'Use a blue info panel to make your message stand out.',
70
+ 'fabric.editor.ai.proactive.recommendation.convertToInfoPanel.title.non-final': 'Frame with info panel',
71
+ 'fabric.editor.ai.proactive.recommendation.convertToNotePanel.description.non-final': 'Use a purple note panel to make your message stand out.',
72
+ 'fabric.editor.ai.proactive.recommendation.convertToNotePanel.title.non-final': 'Frame with note panel',
73
+ 'fabric.editor.ai.proactive.recommendation.convertToSuccessPanel.description.non-final': 'Use a green success panel to make your message stand out.',
74
+ 'fabric.editor.ai.proactive.recommendation.convertToSuccessPanel.title.non-final': 'Frame with success panel',
75
+ 'fabric.editor.ai.proactive.recommendation.convertToTable.description.non-final': 'Format content in a table to improve readability.',
76
+ 'fabric.editor.ai.proactive.recommendation.convertToTable.title.non-final': 'Format in table',
77
+ 'fabric.editor.ai.proactive.recommendation.convertToWarnPanel.description.non-final': 'Use a yellow warning panel to make your message stand out.',
78
+ 'fabric.editor.ai.proactive.recommendation.convertToWarnPanel.title.non-final': 'Frame with warning panel',
79
+ 'fabric.editor.ai.proactive.recommendation.default.description.non-final': 'A suggestion to improve the content.',
80
+ 'fabric.editor.ai.proactive.recommendation.default.title.non-final': 'Suggestion',
81
+ 'fabric.editor.ai.proactive.recommendation.dismiss.button.non-final': 'Dismiss',
82
+ 'fabric.editor.ai.proactive.recommendation.formatParagraph.description.non-final': 'Clarify content writing and structure.',
83
+ 'fabric.editor.ai.proactive.recommendation.formatParagraph.title.non-final': 'Enhance content',
84
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphClarity.description.non-final': 'Simplify phrasing and grammar.',
85
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphClarity.title.non-final': 'Clarify writing',
86
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphList.description.non-final': 'Turn content into a scannable list.',
87
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphList.title.non-final': 'Create list',
88
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphSpellcheck.description.non-final': 'Spot and correct spelling errors.',
89
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphSpellcheck.title.non-final': 'Fix spelling',
90
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphStructure.description.non-final': 'Add paragraph breaks and headings.',
91
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphStructure.title.non-final': 'Improve structure',
92
+ 'fabric.editor.ai.proactive.recommendation.preview.button.non-final': 'Preview',
93
+ 'fabric.editor.ai.proactive.recommendation.replace.button.non-final': 'Replace',
94
+ 'fabric.editor.ai.proactive.recommendation.splitParagraph.description.non-final': 'Add paragraph breaks to separate key ideas.',
95
+ 'fabric.editor.ai.proactive.recommendation.splitParagraph.title.non-final': 'Divide paragraph',
96
+ 'fabric.editor.ai.proactive.reloadSuggestionsButtonLabel.non-final': 'View past suggestions',
97
+ 'fabric.editor.ai.proactive.reloadSuggestionsState.description.non-final': 'Any new suggestions will appear here.',
98
+ 'fabric.editor.ai.proactive.reloadSuggestionsState.title.non-final': 'Your content’s looking good',
99
+ 'fabric.editor.ai.proactive.spellingAndGrammar.label.non-final': 'Spelling and grammar',
100
+ 'fabric.editor.ai.proactive.suggestions.title.non-final': 'Suggestions',
25
101
  'fabric.editor.ai.selectionToolbar.define.disabled.tooltip': 'Highlight a term, acronym, or abbreviation',
26
102
  'fabric.editor.ai.selectionToolbar.define.title': 'Define',
27
103
  'fabric.editor.alignCenter': 'Align center',
@@ -297,6 +373,7 @@ export default {
297
373
  'fabric.editor.keyboardShortcuts': 'Keyboard shortcuts',
298
374
  'fabric.editor.layout.columnOption': '{count, plural, one { Column} other {{count} Columns}}',
299
375
  'fabric.editor.layout.placeholder': 'Add content',
376
+ 'fabric.editor.layout.resizeLayout': 'Resize layout',
300
377
  'fabric.editor.layoutFixedWidth': 'Back to center',
301
378
  'fabric.editor.layoutFullWidth': 'Go full width',
302
379
  'fabric.editor.layoutWide': 'Go wide',
@@ -364,6 +441,8 @@ export default {
364
441
  'fabric.editor.notePanel.description': 'Add a note in a colored panel',
365
442
  'fabric.editor.numberedColumn': 'Numbered column',
366
443
  'fabric.editor.off': '{formattingType} Off',
444
+ 'fabric.editor.offlineErrorFallbackDescription': 'Try reloading the page.',
445
+ 'fabric.editor.offlineErrorFallbackHeading': 'Something went wrong!',
367
446
  'fabric.editor.on': '{formattingType} On',
368
447
  'fabric.editor.openCellOptions': 'Open cell options',
369
448
  'fabric.editor.openLink': 'Open link in a new tab',
@@ -503,6 +582,7 @@ export default {
503
582
  'fabric.editor.unableToOpenLink': 'Unable to open this link',
504
583
  'fabric.editor.underline': 'Underline',
505
584
  'fabric.editor.undo': 'Undo',
585
+ 'fabric.editor.unknown.label': 'Unknown',
506
586
  'fabric.editor.unlink': 'Unlink',
507
587
  'fabric.editor.unorderedList': 'Bullet list',
508
588
  'fabric.editor.unorderedList.description': 'Create an unordered list',
@@ -22,6 +22,82 @@ export default {
22
22
  'fabric.editor.addMediaFiles': 'Add image, video, or file',
23
23
  'fabric.editor.addRowAbove': 'Add row above',
24
24
  'fabric.editor.addRowBelow': 'Add row below',
25
+ 'fabric.editor.ai.proactive.askAIButtonLabel.non-final': 'Ask AI',
26
+ 'fabric.editor.ai.proactive.beta.label.non-final': 'BETA',
27
+ 'fabric.editor.ai.proactive.close.label.non-final': 'Close',
28
+ 'fabric.editor.ai.proactive.enableSuggestionsButtonLabel.non-final': 'Turn on',
29
+ 'fabric.editor.ai.proactive.enableSuggestionsState.description.non-final': 'Turn on suggested edits to quickly preview content improvements.',
30
+ 'fabric.editor.ai.proactive.enableSuggestionsState.title.non-final': 'You create. We polish.',
31
+ 'fabric.editor.ai.proactive.error.markdownErrorMessage': "We're having trouble generating the preview. Close the dialog and try again.",
32
+ 'fabric.editor.ai.proactive.error.unhandledErrorMessage': "We're having trouble. Close the dialog and try again.",
33
+ 'fabric.editor.ai.proactive.findingMoreSuggestionsLoadingLabel.non-final': 'Finding more suggestions',
34
+ 'fabric.editor.ai.proactive.findingSuggestionsLabel.non-final': 'Finding suggestions',
35
+ 'fabric.editor.ai.proactive.findingSuggestionsLoadingLabel.non-final': 'Finding suggestions',
36
+ 'fabric.editor.ai.proactive.loading.iconAltText.non-final': 'Loading icon',
37
+ 'fabric.editor.ai.proactive.moreActions.label.non-final': 'More actions',
38
+ 'fabric.editor.ai.proactive.moreMenu.giveFeedback.non-final': 'Give feedback',
39
+ 'fabric.editor.ai.proactive.moreMenu.label.non-final': 'more',
40
+ 'fabric.editor.ai.proactive.moreMenu.manageSuggestions.non-final': 'Manage Suggestions',
41
+ 'fabric.editor.ai.proactive.moreMenu.manageSuggestionsTitle.non-final': 'Manage suggestions',
42
+ 'fabric.editor.ai.proactive.moreMenu.toggleAllPanelSuggestionsDescription.non-final': 'Use panels to make your message stand out.',
43
+ 'fabric.editor.ai.proactive.moreMenu.toggleAllPanelSuggestionsTitle.non-final': 'Panels',
44
+ 'fabric.editor.ai.proactive.moreMenu.toggleAllSuggestionsDescription.non-final': 'Toggle to turn suggested edits on or off.',
45
+ 'fabric.editor.ai.proactive.moreMenu.toggleAllSuggestionsTitle.non-final': 'All suggestions',
46
+ 'fabric.editor.ai.proactive.moreMenu.toggleErrorPanelDescription.non-final': 'Transform text into a red error panel.',
47
+ 'fabric.editor.ai.proactive.moreMenu.toggleErrorPanelTitle.non-final': 'Error panel',
48
+ 'fabric.editor.ai.proactive.moreMenu.toggleFormatParagraphDescription.non-final': 'Suggestions for writing, lists, content structure, and spelling.',
49
+ 'fabric.editor.ai.proactive.moreMenu.toggleFormatParagraphTitle.non-final': 'Enhance content',
50
+ 'fabric.editor.ai.proactive.moreMenu.toggleInfoPanelDescription.non-final': 'Transform text into a blue information panel.',
51
+ 'fabric.editor.ai.proactive.moreMenu.toggleInfoPanelTitle.non-final': 'Info panel',
52
+ 'fabric.editor.ai.proactive.moreMenu.toggleNotePanelDescription.non-final': 'Transform text into a purple note panel.',
53
+ 'fabric.editor.ai.proactive.moreMenu.toggleNotePanelTitle.non-final': 'Note panel',
54
+ 'fabric.editor.ai.proactive.moreMenu.toggleSplitParagraphDescription.non-final': 'Add paragraph breaks to separate key ideas.',
55
+ 'fabric.editor.ai.proactive.moreMenu.toggleSplitParagraphTitle.non-final': 'Paragraph break',
56
+ 'fabric.editor.ai.proactive.moreMenu.toggleSuccessPanelDescription.non-final': 'Transform text into a green success panel.',
57
+ 'fabric.editor.ai.proactive.moreMenu.toggleSuccessPanelTitle.non-final': 'Success panel',
58
+ 'fabric.editor.ai.proactive.moreMenu.toggleTableDescription.non-final': 'Format content in a table to improve readability.',
59
+ 'fabric.editor.ai.proactive.moreMenu.toggleTableTitle.non-final': 'Table',
60
+ 'fabric.editor.ai.proactive.moreMenu.toggleWarningPanelDescription.non-final': 'Transform text into a yellow warning panel.',
61
+ 'fabric.editor.ai.proactive.moreMenu.toggleWarningPanelTitle.non-final': 'Warning panel',
62
+ 'fabric.editor.ai.proactive.noSuggestionsState.description.non-final': 'You can also ask AI to improve your page with requests such as <i>Add a table of contents</i> or <i>Create headings</i>.',
63
+ 'fabric.editor.ai.proactive.noSuggestionsState.title.non-final': 'Suggestions will appear here',
64
+ 'fabric.editor.ai.proactive.preview.dismissProactiveRecommendation.non-final': 'Dismiss',
65
+ 'fabric.editor.ai.proactive.preview.insertBelowProactiveRecommendation': 'Insert below',
66
+ 'fabric.editor.ai.proactive.preview.replaceProactiveRecommendation': 'Replace',
67
+ 'fabric.editor.ai.proactive.recommendation.convertToErrorPanel.description.non-final': 'Use a red error panel to make your message stand out.',
68
+ 'fabric.editor.ai.proactive.recommendation.convertToErrorPanel.title.non-final': 'Frame with error panel',
69
+ 'fabric.editor.ai.proactive.recommendation.convertToInfoPanel.description.non-final': 'Use a blue info panel to make your message stand out.',
70
+ 'fabric.editor.ai.proactive.recommendation.convertToInfoPanel.title.non-final': 'Frame with info panel',
71
+ 'fabric.editor.ai.proactive.recommendation.convertToNotePanel.description.non-final': 'Use a purple note panel to make your message stand out.',
72
+ 'fabric.editor.ai.proactive.recommendation.convertToNotePanel.title.non-final': 'Frame with note panel',
73
+ 'fabric.editor.ai.proactive.recommendation.convertToSuccessPanel.description.non-final': 'Use a green success panel to make your message stand out.',
74
+ 'fabric.editor.ai.proactive.recommendation.convertToSuccessPanel.title.non-final': 'Frame with success panel',
75
+ 'fabric.editor.ai.proactive.recommendation.convertToTable.description.non-final': 'Format content in a table to improve readability.',
76
+ 'fabric.editor.ai.proactive.recommendation.convertToTable.title.non-final': 'Format in table',
77
+ 'fabric.editor.ai.proactive.recommendation.convertToWarnPanel.description.non-final': 'Use a yellow warning panel to make your message stand out.',
78
+ 'fabric.editor.ai.proactive.recommendation.convertToWarnPanel.title.non-final': 'Frame with warning panel',
79
+ 'fabric.editor.ai.proactive.recommendation.default.description.non-final': 'A suggestion to improve the content.',
80
+ 'fabric.editor.ai.proactive.recommendation.default.title.non-final': 'Suggestion',
81
+ 'fabric.editor.ai.proactive.recommendation.dismiss.button.non-final': 'Dismiss',
82
+ 'fabric.editor.ai.proactive.recommendation.formatParagraph.description.non-final': 'Clarify content writing and structure.',
83
+ 'fabric.editor.ai.proactive.recommendation.formatParagraph.title.non-final': 'Enhance content',
84
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphClarity.description.non-final': 'Simplify phrasing and grammar.',
85
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphClarity.title.non-final': 'Clarify writing',
86
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphList.description.non-final': 'Turn content into a scannable list.',
87
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphList.title.non-final': 'Create list',
88
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphSpellcheck.description.non-final': 'Spot and correct spelling errors.',
89
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphSpellcheck.title.non-final': 'Fix spelling',
90
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphStructure.description.non-final': 'Add paragraph breaks and headings.',
91
+ 'fabric.editor.ai.proactive.recommendation.formatParagraphStructure.title.non-final': 'Improve structure',
92
+ 'fabric.editor.ai.proactive.recommendation.preview.button.non-final': 'Preview',
93
+ 'fabric.editor.ai.proactive.recommendation.replace.button.non-final': 'Replace',
94
+ 'fabric.editor.ai.proactive.recommendation.splitParagraph.description.non-final': 'Add paragraph breaks to separate key ideas.',
95
+ 'fabric.editor.ai.proactive.recommendation.splitParagraph.title.non-final': 'Divide paragraph',
96
+ 'fabric.editor.ai.proactive.reloadSuggestionsButtonLabel.non-final': 'View past suggestions',
97
+ 'fabric.editor.ai.proactive.reloadSuggestionsState.description.non-final': 'Any new suggestions will appear here.',
98
+ 'fabric.editor.ai.proactive.reloadSuggestionsState.title.non-final': 'Your content’s looking good',
99
+ 'fabric.editor.ai.proactive.spellingAndGrammar.label.non-final': 'Spelling and grammar',
100
+ 'fabric.editor.ai.proactive.suggestions.title.non-final': 'Suggestions',
25
101
  'fabric.editor.ai.selectionToolbar.define.disabled.tooltip': 'Highlight a term, acronym, or abbreviation',
26
102
  'fabric.editor.ai.selectionToolbar.define.title': 'Define',
27
103
  'fabric.editor.alignCenter': 'Align center',
@@ -297,6 +373,7 @@ export default {
297
373
  'fabric.editor.keyboardShortcuts': 'Keyboard shortcuts',
298
374
  'fabric.editor.layout.columnOption': '{count, plural, one { Column} other {{count} Columns}}',
299
375
  'fabric.editor.layout.placeholder': 'Add content',
376
+ 'fabric.editor.layout.resizeLayout': 'Resize layout',
300
377
  'fabric.editor.layoutFixedWidth': 'Back to center',
301
378
  'fabric.editor.layoutFullWidth': 'Go full width',
302
379
  'fabric.editor.layoutWide': 'Go wide',
@@ -364,6 +441,8 @@ export default {
364
441
  'fabric.editor.notePanel.description': 'Add a note in a coloured panel',
365
442
  'fabric.editor.numberedColumn': 'Numbered column',
366
443
  'fabric.editor.off': '{formattingType} Off',
444
+ 'fabric.editor.offlineErrorFallbackDescription': 'Try reloading the page.',
445
+ 'fabric.editor.offlineErrorFallbackHeading': 'Something went wrong!',
367
446
  'fabric.editor.on': '{formattingType} On',
368
447
  'fabric.editor.openCellOptions': 'Open cell options',
369
448
  'fabric.editor.openLink': 'Open link in a new tab',
@@ -503,6 +582,7 @@ export default {
503
582
  'fabric.editor.unableToOpenLink': 'Unable to open this link',
504
583
  'fabric.editor.underline': 'Underline',
505
584
  'fabric.editor.undo': 'Undo',
585
+ 'fabric.editor.unknown.label': 'Unknown',
506
586
  'fabric.editor.unlink': 'Unlink',
507
587
  'fabric.editor.unorderedList': 'Bullet list',
508
588
  'fabric.editor.unorderedList.description': 'Create an unordered list',