@atlaskit/editor-core 197.2.7 → 197.4.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 (99) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/afm-cc/tsconfig.json +0 -3
  3. package/afm-jira/tsconfig.json +0 -3
  4. package/dist/cjs/actions/index.js +16 -42
  5. package/dist/cjs/composable-editor/editor-internal.js +9 -7
  6. package/dist/cjs/composable-editor/hooks/useProviders.js +11 -1
  7. package/dist/cjs/composable-editor/utils/handleProviders.js +3 -1
  8. package/dist/cjs/create-editor/ReactEditorView.js +13 -9
  9. package/dist/cjs/presets/universal.js +15 -11
  10. package/dist/cjs/ui/Appearance/FullPage/FullPage.js +1 -3
  11. package/dist/cjs/ui/Appearance/FullPage/FullPageToolbar.js +1 -9
  12. package/dist/cjs/ui/ContentStyles/expand.js +9 -4
  13. package/dist/cjs/ui/ContentStyles/layout.js +8 -2
  14. package/dist/cjs/ui/Toolbar/ToolbarWithSizeDetector.js +3 -1
  15. package/dist/cjs/ui/ToolbarFeedback/index.js +5 -210
  16. package/dist/cjs/utils/action.js +9 -38
  17. package/dist/cjs/utils/getNodesCount.js +13 -0
  18. package/dist/cjs/utils/index.js +2 -2
  19. package/dist/cjs/utils/performance/getTimeSince.js +16 -0
  20. package/dist/cjs/utils/performance/track-transactions.js +5 -4
  21. package/dist/cjs/utils/{document.js → processRawFragmentValue.js} +2 -10
  22. package/dist/cjs/version-wrapper.js +1 -1
  23. package/dist/es2019/actions/index.js +4 -14
  24. package/dist/es2019/composable-editor/editor-internal.js +9 -7
  25. package/dist/es2019/composable-editor/hooks/useProviders.js +11 -1
  26. package/dist/es2019/composable-editor/utils/handleProviders.js +3 -1
  27. package/dist/es2019/create-editor/ReactEditorView.js +8 -4
  28. package/dist/es2019/index.js +8 -1
  29. package/dist/es2019/presets/universal.js +15 -11
  30. package/dist/es2019/ui/Appearance/FullPage/FullPage.js +1 -3
  31. package/dist/es2019/ui/Appearance/FullPage/FullPageToolbar.js +1 -9
  32. package/dist/es2019/ui/ContentStyles/expand.js +16 -2
  33. package/dist/es2019/ui/ContentStyles/layout.js +25 -15
  34. package/dist/es2019/ui/Toolbar/ToolbarWithSizeDetector.js +3 -1
  35. package/dist/es2019/ui/ToolbarFeedback/index.js +5 -188
  36. package/dist/es2019/utils/action.js +0 -10
  37. package/dist/es2019/utils/getNodesCount.js +7 -0
  38. package/dist/es2019/utils/index.js +1 -1
  39. package/dist/es2019/utils/performance/getTimeSince.js +8 -0
  40. package/dist/es2019/utils/performance/track-transactions.js +2 -1
  41. package/dist/es2019/utils/{document.js → processRawFragmentValue.js} +1 -8
  42. package/dist/es2019/version-wrapper.js +1 -1
  43. package/dist/esm/actions/index.js +17 -43
  44. package/dist/esm/composable-editor/editor-internal.js +9 -7
  45. package/dist/esm/composable-editor/hooks/useProviders.js +11 -1
  46. package/dist/esm/composable-editor/utils/handleProviders.js +3 -1
  47. package/dist/esm/create-editor/ReactEditorView.js +8 -4
  48. package/dist/esm/index.js +8 -1
  49. package/dist/esm/presets/universal.js +15 -11
  50. package/dist/esm/ui/Appearance/FullPage/FullPage.js +1 -3
  51. package/dist/esm/ui/Appearance/FullPage/FullPageToolbar.js +1 -9
  52. package/dist/esm/ui/ContentStyles/expand.js +9 -4
  53. package/dist/esm/ui/ContentStyles/layout.js +7 -2
  54. package/dist/esm/ui/Toolbar/ToolbarWithSizeDetector.js +3 -1
  55. package/dist/esm/ui/ToolbarFeedback/index.js +5 -212
  56. package/dist/esm/utils/action.js +9 -37
  57. package/dist/esm/utils/getNodesCount.js +7 -0
  58. package/dist/esm/utils/index.js +1 -1
  59. package/dist/esm/utils/performance/getTimeSince.js +10 -0
  60. package/dist/esm/utils/performance/track-transactions.js +2 -1
  61. package/dist/esm/utils/{document.js → processRawFragmentValue.js} +1 -8
  62. package/dist/esm/version-wrapper.js +1 -1
  63. package/dist/types/actions/index.d.ts +0 -1
  64. package/dist/types/composable-editor/hooks/useProviders.d.ts +3 -1
  65. package/dist/types/create-editor/ReactEditorView.d.ts +2 -1
  66. package/dist/types/create-editor/create-universal-preset.d.ts +1456 -77
  67. package/dist/types/index.d.ts +8 -1
  68. package/dist/types/presets/default.d.ts +1297 -45
  69. package/dist/types/presets/universal.d.ts +1457 -77
  70. package/dist/types/presets/useUniversalPreset.d.ts +2205 -826
  71. package/dist/types/types/editor-appearance-component.d.ts +0 -1
  72. package/dist/types/ui/Appearance/FullPage/FullPageToolbar.d.ts +0 -1
  73. package/dist/types/ui/Appearance/FullPage/StyledComponents.d.ts +1 -1
  74. package/dist/types/ui/ContentStyles/index.d.ts +2 -2
  75. package/dist/types/ui/ToolbarFeedback/index.d.ts +1 -26
  76. package/dist/types/utils/action.d.ts +0 -4
  77. package/dist/types/utils/getNodesCount.d.ts +2 -0
  78. package/dist/types/utils/index.d.ts +1 -1
  79. package/dist/types/utils/performance/getTimeSince.d.ts +8 -0
  80. package/dist/{types-ts4.5/utils/document.d.ts → types/utils/processRawFragmentValue.d.ts} +1 -2
  81. package/dist/types-ts4.5/actions/index.d.ts +0 -1
  82. package/dist/types-ts4.5/composable-editor/hooks/useProviders.d.ts +3 -1
  83. package/dist/types-ts4.5/create-editor/ReactEditorView.d.ts +2 -1
  84. package/dist/types-ts4.5/create-editor/create-universal-preset.d.ts +1648 -60
  85. package/dist/types-ts4.5/index.d.ts +8 -1
  86. package/dist/types-ts4.5/presets/default.d.ts +1466 -24
  87. package/dist/types-ts4.5/presets/universal.d.ts +1649 -60
  88. package/dist/types-ts4.5/presets/useUniversalPreset.d.ts +2424 -836
  89. package/dist/types-ts4.5/types/editor-appearance-component.d.ts +0 -1
  90. package/dist/types-ts4.5/ui/Appearance/FullPage/FullPageToolbar.d.ts +0 -1
  91. package/dist/types-ts4.5/ui/Appearance/FullPage/StyledComponents.d.ts +1 -1
  92. package/dist/types-ts4.5/ui/ContentStyles/index.d.ts +2 -2
  93. package/dist/types-ts4.5/ui/ToolbarFeedback/index.d.ts +1 -26
  94. package/dist/types-ts4.5/utils/action.d.ts +0 -7
  95. package/dist/types-ts4.5/utils/getNodesCount.d.ts +2 -0
  96. package/dist/types-ts4.5/utils/index.d.ts +1 -1
  97. package/dist/types-ts4.5/utils/performance/getTimeSince.d.ts +8 -0
  98. package/dist/{types/utils/document.d.ts → types-ts4.5/utils/processRawFragmentValue.d.ts} +1 -2
  99. package/package.json +20 -22
@@ -1,6 +1,7 @@
1
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import { useEffect } from 'react';
4
+ import { fg } from '@atlaskit/platform-feature-flags';
4
5
  import { usePresetContext } from '../../presets/context';
5
6
  /**
6
7
  * This hook is used to replace the old approach of using the `providerFactory`.
@@ -13,7 +14,8 @@ import { usePresetContext } from '../../presets/context';
13
14
  export var useProviders = function useProviders(_ref) {
14
15
  var contextIdentifierProvider = _ref.contextIdentifierProvider,
15
16
  mediaProvider = _ref.mediaProvider,
16
- cardProvider = _ref.cardProvider;
17
+ cardProvider = _ref.cardProvider,
18
+ emojiProvider = _ref.emojiProvider;
17
19
  var editorApi = usePresetContext();
18
20
  useEffect(function () {
19
21
  function setProvider() {
@@ -61,4 +63,12 @@ export var useProviders = function useProviders(_ref) {
61
63
  editorApi === null || editorApi === void 0 || (_editorApi$card = editorApi.card) === null || _editorApi$card === void 0 || _editorApi$card.actions.setProvider(cardProvider);
62
64
  }
63
65
  }, [cardProvider, editorApi]);
66
+ useEffect(function () {
67
+ if (fg('platform_editor_get_emoji_provider_from_config')) {
68
+ if (emojiProvider) {
69
+ var _editorApi$emoji;
70
+ editorApi === null || editorApi === void 0 || (_editorApi$emoji = editorApi.emoji) === null || _editorApi$emoji === void 0 || _editorApi$emoji.actions.setProvider(emojiProvider);
71
+ }
72
+ }
73
+ }, [emojiProvider, editorApi]);
64
74
  };
@@ -23,7 +23,9 @@ export default function handleProviders(providerFactory, _ref, extensionProvider
23
23
  autoformattingProvider = _ref.autoformattingProvider,
24
24
  searchProvider = _ref.searchProvider,
25
25
  cardProvider = _ref.cardProvider;
26
- providerFactory.setProvider('emojiProvider', emojiProvider);
26
+ if (!fg('platform_editor_get_emoji_provider_from_config')) {
27
+ providerFactory.setProvider('emojiProvider', emojiProvider);
28
+ }
27
29
  providerFactory.setProvider('mentionProvider', mentionProvider);
28
30
  providerFactory.setProvider('taskDecisionProvider', taskDecisionProvider);
29
31
  providerFactory.setProvider('contextIdentifierProvider', contextIdentifierProvider);
@@ -16,18 +16,22 @@ import { injectIntl } from 'react-intl-next';
16
16
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE, fireAnalyticsEvent, FULL_WIDTH_MODE, getAnalyticsEventsFromTransaction, PLATFORMS } from '@atlaskit/editor-common/analytics';
17
17
  import { browser } from '@atlaskit/editor-common/browser';
18
18
  import { getDocStructure } from '@atlaskit/editor-common/core-utils';
19
+ import { countNodes as _countNodes } from '@atlaskit/editor-common/count-nodes';
19
20
  import { getEnabledFeatureFlagKeys } from '@atlaskit/editor-common/normalize-feature-flags';
20
21
  import { startMeasure, stopMeasure } from '@atlaskit/editor-common/performance-measures';
22
+ import { measureRender } from '@atlaskit/editor-common/performance/measure-render';
23
+ import { getResponseEndTime } from '@atlaskit/editor-common/performance/navigation';
21
24
  import { EditorPluginInjectionAPI } from '@atlaskit/editor-common/preset';
25
+ import { processRawValue } from '@atlaskit/editor-common/process-raw-value';
22
26
  import { EditorExperience, ExperienceStore, RELIABILITY_INTERVAL } from '@atlaskit/editor-common/ufo';
23
- import { countNodes as _countNodes, getResponseEndTime, measureRender, processRawValue, shouldForceTracking } from '@atlaskit/editor-common/utils';
24
27
  import { analyticsEventKey, getAnalyticsEventSeverity } from '@atlaskit/editor-common/utils/analytics';
25
28
  import { EditorState, Selection, TextSelection } from '@atlaskit/editor-prosemirror/state';
26
29
  import { EditorView } from '@atlaskit/editor-prosemirror/view';
30
+ import { fg } from '@atlaskit/platform-feature-flags';
27
31
  import { createDispatch, EventDispatcher } from '../event-dispatcher';
28
32
  import { EditorAPIContext } from '../presets/context';
29
- import { getNodesCount } from '../utils/document';
30
33
  import { findChangedNodesFromTransaction } from '../utils/findChangedNodesFromTransaction';
34
+ import { getNodesCount } from '../utils/getNodesCount';
31
35
  import { isFullPage } from '../utils/is-full-page';
32
36
  import { RenderTracking } from '../utils/performance/components/RenderTracking';
33
37
  import measurements from '../utils/performance/measure-enum';
@@ -405,7 +409,7 @@ export var ReactEditorView = /*#__PURE__*/function (_React$Component) {
405
409
  startTime = _ref3.startTime,
406
410
  distortedDuration = _ref3.distortedDuration;
407
411
  var proseMirrorRenderedTracking = (_this$props$editorPro4 = _this.props.editorProps) === null || _this$props$editorPro4 === void 0 || (_this$props$editorPro4 = _this$props$editorPro4.performanceTracking) === null || _this$props$editorPro4 === void 0 ? void 0 : _this$props$editorPro4.proseMirrorRenderedTracking;
408
- var forceSeverityTracking = typeof proseMirrorRenderedTracking === 'undefined' && shouldForceTracking();
412
+ var forceSeverityTracking = typeof proseMirrorRenderedTracking === 'undefined';
409
413
  _this.proseMirrorRenderedSeverity = !!forceSeverityTracking || proseMirrorRenderedTracking !== null && proseMirrorRenderedTracking !== void 0 && proseMirrorRenderedTracking.trackSeverity ? getAnalyticsEventSeverity(duration, (_proseMirrorRenderedT = proseMirrorRenderedTracking === null || proseMirrorRenderedTracking === void 0 ? void 0 : proseMirrorRenderedTracking.severityNormalThreshold) !== null && _proseMirrorRenderedT !== void 0 ? _proseMirrorRenderedT : PROSEMIRROR_RENDERED_NORMAL_SEVERITY_THRESHOLD, (_proseMirrorRenderedT2 = proseMirrorRenderedTracking === null || proseMirrorRenderedTracking === void 0 ? void 0 : proseMirrorRenderedTracking.severityDegradedThreshold) !== null && _proseMirrorRenderedT2 !== void 0 ? _proseMirrorRenderedT2 : PROSEMIRROR_RENDERED_DEGRADED_SEVERITY_THRESHOLD) : undefined;
410
414
  if (_this.view) {
411
415
  var _this$pluginInjection2, _this$experienceStore10;
@@ -547,7 +551,7 @@ export var ReactEditorView = /*#__PURE__*/function (_React$Component) {
547
551
  });
548
552
  var _api = _this.pluginInjectionAPI.api();
549
553
  (_props$setEditorApi = props.setEditorApi) === null || _props$setEditorApi === void 0 || _props$setEditorApi.call(props, _api);
550
- if (props.editorProps.editorActions) {
554
+ if (props.editorProps.editorActions && !fg('platform_editor_remove_editor_actions_workaround')) {
551
555
  // @ts-expect-error
552
556
  props.editorProps.editorActions.__EDITOR_INTERNALS_DO_NOT_USE__API = _api;
553
557
  }
package/dist/esm/index.js CHANGED
@@ -6,7 +6,14 @@ export { default as WithEditorActions } from './ui/WithEditorActions';
6
6
  export { default as WithHelpTrigger } from './ui/WithHelpTrigger';
7
7
  export { default as CollapsedEditor } from './ui/CollapsedEditor';
8
8
  export { default as ToolbarHelp } from './ui/ToolbarHelp';
9
- export { default as ToolbarFeedback } from './ui/ToolbarFeedback';
9
+ export {
10
+ /**
11
+ * @deprecated
12
+ * DO NOT USE THIS WILL BE REMOVED SOON.
13
+ *
14
+ * This was intended for rollout of bitbucket only.
15
+ */
16
+ default as ToolbarFeedback } from './ui/ToolbarFeedback';
10
17
  export {
11
18
  /**
12
19
  * @deprecated
@@ -50,6 +50,7 @@ import { tasksAndDecisionsPlugin } from '@atlaskit/editor-plugins/tasks-and-deci
50
50
  import { textColorPlugin } from '@atlaskit/editor-plugins/text-color';
51
51
  import { toolbarListsIndentationPlugin } from '@atlaskit/editor-plugins/toolbar-lists-indentation';
52
52
  import { fg } from '@atlaskit/platform-feature-flags';
53
+ import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
53
54
  import { isFullPage as fullPageCheck } from '../utils/is-full-page';
54
55
  import { version as coreVersion } from '../version-wrapper';
55
56
  import { createDefaultPreset } from './default';
@@ -136,11 +137,16 @@ export default function createUniversalPresetInternal(_ref) {
136
137
  HighlightComponent: (_props$mention2 = props.mention) === null || _props$mention2 === void 0 ? void 0 : _props$mention2.HighlightComponent,
137
138
  profilecardProvider: (_props$mention3 = props.mention) === null || _props$mention3 === void 0 ? void 0 : _props$mention3.profilecardProvider
138
139
  }, initialPluginConfiguration === null || initialPluginConfiguration === void 0 ? void 0 : initialPluginConfiguration.mentionsPlugin)], Boolean(props.mentionProvider)).maybeAdd([emojiPlugin, {
140
+ emojiProvider: props.emojiProvider,
139
141
  emojiNodeDataProvider: initialPluginConfiguration === null || initialPluginConfiguration === void 0 || (_initialPluginConfigu = initialPluginConfiguration.emoji) === null || _initialPluginConfigu === void 0 ? void 0 : _initialPluginConfigu.emojiNodeDataProvider
140
142
  }], Boolean(props.emojiProvider)).maybeAdd([tablesPlugin, _objectSpread({
141
143
  tableOptions: !props.allowTables || typeof props.allowTables === 'boolean' ? {} : props.allowTables,
142
- dragAndDropEnabled: (featureFlags === null || featureFlags === void 0 ? void 0 : featureFlags.tableDragAndDrop) && (isFullPage || (isComment || isChromeless) && fg('platform_editor_table_support_in_comment')),
143
- isTableScalingEnabled: (featureFlags === null || featureFlags === void 0 ? void 0 : featureFlags.tablePreserveWidth) && (isFullPage || isComment && fg('platform_editor_table_support_in_comment')),
144
+ dragAndDropEnabled: (featureFlags === null || featureFlags === void 0 ? void 0 : featureFlags.tableDragAndDrop) && (isFullPage || (isComment || isChromeless) && editorExperiment('support_table_in_comment', true, {
145
+ exposure: true
146
+ })),
147
+ isTableScalingEnabled: (featureFlags === null || featureFlags === void 0 ? void 0 : featureFlags.tablePreserveWidth) && (isFullPage || isComment && editorExperiment('support_table_in_comment', true, {
148
+ exposure: true
149
+ })),
144
150
  allowContextualMenu: !isMobile,
145
151
  fullWidthEnabled: appearance === 'full-width',
146
152
  wasFullWidthEnabled: prevAppearance && prevAppearance === 'full-width',
@@ -211,7 +217,11 @@ export default function createUniversalPresetInternal(_ref) {
211
217
  tableSelectorSupported: (featureFlags === null || featureFlags === void 0 ? void 0 : featureFlags.tableSelector) && isFullPage,
212
218
  nativeStatusSupported: !statusMenuDisabled,
213
219
  showElementBrowserLink: props.elementBrowser && props.elementBrowser.showModal || false,
214
- replacePlusMenuWithElementBrowser: props.elementBrowser && props.elementBrowser.replacePlusMenu || false
220
+ replacePlusMenuWithElementBrowser: props.elementBrowser && props.elementBrowser.replacePlusMenu || false,
221
+ // @ts-ignore
222
+ // For platform_editor_element_level_templates experiment only
223
+ // clean up ticket ED-24873
224
+ UNSAFE_editorAppearance: appearance
215
225
  }]).maybeAdd([beforePrimaryToolbarPlugin, {
216
226
  beforePrimaryToolbarComponents: // @ts-expect-error 2339: Property 'before' does not exist on type 'PrimaryToolbarComponents'.
217
227
  (_props$primaryToolbar = props.primaryToolbarComponents) === null || _props$primaryToolbar === void 0 ? void 0 : _props$primaryToolbar.before
@@ -222,15 +232,9 @@ export default function createUniversalPresetInternal(_ref) {
222
232
  // https://hello.atlassian.net/wiki/spaces/PCG/pages/2851572180/Editor+toolbar+for+live+pages+and+edit+in+context+projects
223
233
  collabEdit: props.collabEdit,
224
234
  takeFullWidth: !hasBeforePrimaryToolbar(props.primaryToolbarComponents),
225
- showAvatarGroup:
226
- // Cleanup: `platform_editor_remove_hide_avatar_group_prop`
227
- // Remove `!props.hideAvatarGroup`
228
- !props.hideAvatarGroup && featureFlags.showAvatarGroupAsPlugin === true && !featureFlags.twoLineEditorToolbar
235
+ showAvatarGroup: featureFlags.showAvatarGroupAsPlugin === true && !featureFlags.twoLineEditorToolbar
229
236
  }]).maybeAdd([findReplacePlugin, {
230
- takeFullWidth:
231
- // Cleanup: `platform_editor_remove_hide_avatar_group_prop`
232
- // Remove `!props.hideAvatarGroup`
233
- !props.hideAvatarGroup && !!featureFlags.showAvatarGroupAsPlugin === false && !hasBeforePrimaryToolbar(props.primaryToolbarComponents),
237
+ takeFullWidth: !!featureFlags.showAvatarGroupAsPlugin === false && !hasBeforePrimaryToolbar(props.primaryToolbarComponents),
234
238
  twoLineEditorToolbar: !!props.primaryToolbarComponents && !!featureFlags.twoLineEditorToolbar
235
239
  }], Boolean(props.allowFindReplace)).maybeAdd(borderPlugin, Boolean(props.allowBorderMark || props.UNSAFE_allowBorderMark)).maybeAdd(fragmentPlugin, Boolean(props.allowFragmentMark)).add(pasteOptionsToolbarPlugin).add([codeBidiWarningPlugin, {
236
240
  appearance: appearance
@@ -10,7 +10,6 @@ import { jsx } from '@emotion/react';
10
10
  import { browser } from '@atlaskit/editor-common/browser';
11
11
  import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
12
12
  import { ContextPanelWidthProvider } from '@atlaskit/editor-common/ui';
13
- import { fg } from '@atlaskit/platform-feature-flags';
14
13
  import { FullPageContentArea } from './FullPageContentArea';
15
14
  import { FullPageToolbar } from './FullPageToolbar';
16
15
  import { fullPageEditorWrapper } from './StyledComponents';
@@ -87,8 +86,7 @@ export var FullPageEditor = function FullPageEditor(props) {
87
86
  primaryToolbarComponents: primaryToolbarComponents,
88
87
  providerFactory: props.providerFactory,
89
88
  showKeyline: showKeyline,
90
- featureFlags: props.featureFlags,
91
- hideAvatarGroup: fg('platform_editor_remove_hide_avatar_group_prop') ? undefined : props.hideAvatarGroup
89
+ featureFlags: props.featureFlags
92
90
  }), jsx(FullPageContentArea, {
93
91
  editorAPI: editorAPI,
94
92
  ref: scrollContentContainerRef,
@@ -17,7 +17,7 @@ import Toolbar from '../../Toolbar';
17
17
  import { BeforePrimaryToolbarWrapper } from './BeforeWrapper';
18
18
  import { customToolbarWrapperStyle, mainToolbarFirstChildStyle, mainToolbarIconBeforeStyle, mainToolbarSecondChildStyle, mainToolbarStyle, MAXIMUM_TWO_LINE_TOOLBAR_BREAKPOINT, nonCustomToolbarWrapperStyle } from './MainToolbar';
19
19
  export var EditorToolbar = /*#__PURE__*/React.memo(function (props) {
20
- var _props$featureFlags, _props$customPrimaryT, _props$featureFlags2, _props$featureFlags3, _editorAPI$avatarGrou, _props$collabEdit, _props$collabEdit2, _props$collabEdit3;
20
+ var _props$featureFlags, _props$customPrimaryT;
21
21
  var _useState = useState(false),
22
22
  _useState2 = _slicedToArray(_useState, 2),
23
23
  shouldSplitToolbar = _useState2[0],
@@ -54,14 +54,6 @@ export var EditorToolbar = /*#__PURE__*/React.memo(function (props) {
54
54
  css: customToolbarWrapperStyle
55
55
  }, twoLineEditorToolbar && !!props.customPrimaryToolbarComponents && 'before' in props.customPrimaryToolbarComponents ? jsx(BeforePrimaryToolbarWrapper, {
56
56
  beforePrimaryToolbarComponents: (_props$customPrimaryT = props.customPrimaryToolbarComponents) === null || _props$customPrimaryT === void 0 ? void 0 : _props$customPrimaryT.before
57
- }) : null, !fg('platform_editor_remove_hide_avatar_group_prop') ? props.hideAvatarGroup || (props === null || props === void 0 || (_props$featureFlags2 = props.featureFlags) === null || _props$featureFlags2 === void 0 ? void 0 : _props$featureFlags2.showAvatarGroupAsPlugin) === true && !((_props$featureFlags3 = props.featureFlags) !== null && _props$featureFlags3 !== void 0 && _props$featureFlags3.twoLineEditorToolbar) ? null : // Avatars are moved to Confluence codebase for Edit in Context
58
- // When Edit in Context is enabled customPrimaryToolbarComponents is undefined
59
- // For more details please check
60
- // https://hello.atlassian.net/wiki/spaces/PCG/pages/2851572180/Editor+toolbar+for+live+pages+and+edit+in+context+projects
61
- editorAPI === null || editorAPI === void 0 || (_editorAPI$avatarGrou = editorAPI.avatarGroup) === null || _editorAPI$avatarGrou === void 0 ? void 0 : _editorAPI$avatarGrou.actions.getToolbarItem({
62
- inviteToEditComponent: (_props$collabEdit = props.collabEdit) === null || _props$collabEdit === void 0 ? void 0 : _props$collabEdit.inviteToEditComponent,
63
- inviteToEditHandler: (_props$collabEdit2 = props.collabEdit) === null || _props$collabEdit2 === void 0 ? void 0 : _props$collabEdit2.inviteToEditHandler,
64
- isInviteToEditButtonSelected: (_props$collabEdit3 = props.collabEdit) === null || _props$collabEdit3 === void 0 ? void 0 : _props$collabEdit3.isInviteToEditButtonSelected
65
57
  }) : null, editorAPI !== null && editorAPI !== void 0 && editorAPI.findReplace && twoLineEditorToolbar ? editorAPI === null || editorAPI === void 0 ? void 0 : editorAPI.findReplace.actions.getToolbarButton({
66
58
  popupsBoundariesElement: props.popupsBoundariesElement,
67
59
  popupsMountPoint: props.popupsMountPoint,
@@ -1,11 +1,12 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
- var _templateObject;
2
+ var _templateObject, _templateObject2;
3
3
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
4
4
  import { css } from '@emotion/react';
5
5
  import { BreakoutCssClassName, expandClassNames, sharedExpandStyles } from '@atlaskit/editor-common/styles';
6
6
  import { akEditorSelectedNodeClassName, akLayoutGutterOffset, getSelectionStyles, SelectionStyle } from '@atlaskit/editor-shared-styles';
7
7
  import { fg } from '@atlaskit/platform-feature-flags';
8
8
  import { N100A, N40A, N50A, R300, R50 } from '@atlaskit/theme/colors';
9
+ import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
9
10
  var EXPAND_SELECTED_BACKGROUND = "var(--ds-background-neutral-subtle, rgba(255, 255, 255, 0.6))";
10
11
  var EXPAND_ICON_COLOR = function EXPAND_ICON_COLOR() {
11
12
  return css({
@@ -14,15 +15,19 @@ var EXPAND_ICON_COLOR = function EXPAND_ICON_COLOR() {
14
15
  };
15
16
  var DANGER_STATE_BACKGROUND_COLOR = "var(--ds-background-danger, ".concat(R50, ")");
16
17
  var DANGER_STATE_BORDER_COLOR = "var(--ds-border-danger, ".concat(R300, ")");
18
+ var firstNodeWithNotMarginTop = function firstNodeWithNotMarginTop() {
19
+ return editorExperiment('nested-dnd', true) ? // eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression
20
+ css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\t\t\t\t> :nth-child(1 of :not(style, .ProseMirror-gapcursor, .ProseMirror-widget, span)) {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t> div.ak-editor-expand[data-node-type='nestedExpand'] {\n\t\t\t\t\tmargin-top: ", ";\n\t\t\t\t}\n\t\t\t"])), "var(--ds-space-050, 0.25rem)") : '';
21
+ };
17
22
 
18
23
  /* eslint-disable @atlaskit/design-system/ensure-design-token-usage */
19
24
  // eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- Needs manual remediation
20
25
  export var expandStyles = function expandStyles() {
21
- return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\t.", " > div {\n\t\tdisplay: flex;\n\t}\n\n\t.", " {\n\t\t", "\n\n\t\tcursor: pointer;\n\t\tbox-sizing: border-box;\n\n\t\ttd > & {\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\t.", " svg {\n\t\t\t", ";\n\t\t\ttransform: rotate(90deg);\n\t\t}\n\n\t\t&.", ":not(.danger) {\n\t\t\t", "\n\t\t}\n\n\t\t&.danger {\n\t\t\tbackground: ", ";\n\t\t\tborder-color: ", ";\n\t\t}\n\t}\n\n\t.ProseMirror\n\t\t> .", ",\n\t\t.", "\n\t\t> .", " {\n\t\tmargin-left: -", "px;\n\t\tmargin-right: -", "px;\n\t}\n\n\t.", " {\n\t\t", "\n\t\tcursor: text;\n\t\tpadding-top: 0px;\n\t\t", "\n\t}\n\n\t.", " {\n\t\t", "\n\t}\n\n\t.", " {\n\t\t", ";\n\t\talign-items: center;\n\t\toverflow: visible;\n\t}\n\n\t.", " {\n\t\tbackground: ", ";\n\t\tborder-color: ", ";\n\n\t\t.", " {\n\t\t\tpadding-top: ", ";\n\t\t}\n\t}\n\n\t.", " {\n\t\twidth: 100%;\n\t}\n\n\t/* stylelint-disable property-no-unknown, value-keyword-case */\n\t.", ":(.", ") {\n\t\t.expand-content-wrapper {\n\t\t\theight: auto;\n\t\t}\n\t}\n\t/* stylelint-enable property-no-unknown, value-keyword-case */\n\n\t.", ":not(.", ") {\n\t\t.ak-editor-expand__content {\n\t\t\tposition: absolute;\n\t\t\theight: 1px;\n\t\t\twidth: 1px;\n\t\t\toverflow: hidden;\n\t\t\tclip: rect(1px, 1px, 1px, 1px);\n\t\t\twhite-space: nowrap;\n\t\t}\n\n\t\t.", " svg {\n\t\t\t", ";\n\t\t\ttransform: rotate(0deg);\n\t\t}\n\n\t\t&:not(.", "):not(.danger) {\n\t\t\tbackground: transparent;\n\t\t\tborder-color: transparent;\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: ", ";\n\t\t\t\tbackground: ", ";\n\t\t\t}\n\t\t}\n\t}\n"])), expandClassNames.icon, expandClassNames.prefix, sharedExpandStyles.containerStyles({
26
+ return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n\t.", " > div {\n\t\tdisplay: flex;\n\t}\n\n\t.", " {\n\t\t", "\n\n\t\tcursor: pointer;\n\t\tbox-sizing: border-box;\n\n\t\ttd > & {\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\t.", " svg {\n\t\t\t", ";\n\t\t\ttransform: rotate(90deg);\n\t\t}\n\n\t\t&.", ":not(.danger) {\n\t\t\t", "\n\t\t}\n\n\t\t&.danger {\n\t\t\tbackground: ", ";\n\t\t\tborder-color: ", ";\n\t\t}\n\t}\n\n\t.ProseMirror\n\t\t> .", ",\n\t\t.", "\n\t\t> .", " {\n\t\tmargin-left: -", "px;\n\t\tmargin-right: -", "px;\n\t}\n\n\t.", " {\n\t\t", "\n\t\tcursor: text;\n\t\tpadding-top: 0px;\n\t\t", "\n\t}\n\n\t.", " {\n\t\t", "\n\t}\n\n\t.", " {\n\t\t", ";\n\t\talign-items: center;\n\t\toverflow: visible;\n\t}\n\n\t.", " {\n\t\tbackground: ", ";\n\t\tborder-color: ", ";\n\n\t\t.", " {\n\t\t\tpadding-top: ", ";\n\n\t\t\t", "\n\t\t}\n\t}\n\n\t.", " {\n\t\twidth: 100%;\n\t}\n\n\t/* stylelint-disable property-no-unknown, value-keyword-case */\n\t.", ":(.", ") {\n\t\t.expand-content-wrapper {\n\t\t\theight: auto;\n\t\t}\n\t}\n\t/* stylelint-enable property-no-unknown, value-keyword-case */\n\n\t.", ":not(.", ") {\n\t\t.ak-editor-expand__content {\n\t\t\tposition: absolute;\n\t\t\theight: 1px;\n\t\t\twidth: 1px;\n\t\t\toverflow: hidden;\n\t\t\tclip: rect(1px, 1px, 1px, 1px);\n\t\t\twhite-space: nowrap;\n\t\t}\n\n\t\t.", " svg {\n\t\t\t", ";\n\t\t\ttransform: rotate(0deg);\n\t\t}\n\n\t\t&:not(.", "):not(.danger) {\n\t\t\tbackground: transparent;\n\t\t\tborder-color: transparent;\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: ", ";\n\t\t\t\tbackground: ", ";\n\t\t\t}\n\t\t}\n\t}\n"])), expandClassNames.icon, expandClassNames.prefix, sharedExpandStyles.containerStyles({
22
27
  expanded: false,
23
28
  focused: false
24
- })(), expandClassNames.iconContainer, EXPAND_ICON_COLOR(), akEditorSelectedNodeClassName, getSelectionStyles([SelectionStyle.Blanket, SelectionStyle.Border]), DANGER_STATE_BACKGROUND_COLOR, DANGER_STATE_BORDER_COLOR, expandClassNames.type('expand'), BreakoutCssClassName.BREAKOUT_MARK_DOM, expandClassNames.type('expand'), akLayoutGutterOffset, akLayoutGutterOffset, expandClassNames.content, sharedExpandStyles.contentStyles({
29
+ })(), expandClassNames.iconContainer, EXPAND_ICON_COLOR(), akEditorSelectedNodeClassName, getSelectionStyles([SelectionStyle.Blanket, SelectionStyle.Border]), DANGER_STATE_BACKGROUND_COLOR, DANGER_STATE_BORDER_COLOR, expandClassNames.type('expand'), BreakoutCssClassName.BREAKOUT_MARK_DOM, expandClassNames.type('expand'), akLayoutGutterOffset + (editorExperiment('nested-dnd', true) ? 8 : 0), akLayoutGutterOffset + (editorExperiment('nested-dnd', true) ? 8 : 0), expandClassNames.content, sharedExpandStyles.contentStyles({
25
30
  expanded: false,
26
31
  focused: false
27
- })(), fg('platform_editor_drag_and_drop_expand_style_fix') && "overflow-x: clip;", expandClassNames.titleInput, sharedExpandStyles.titleInputStyles(), expandClassNames.titleContainer, sharedExpandStyles.titleContainerStyles(), expandClassNames.expanded, EXPAND_SELECTED_BACKGROUND, "var(--ds-border, ".concat(N40A, ")"), expandClassNames.content, "var(--ds-space-100, 8px)", expandClassNames.inputContainer, expandClassNames.prefix, expandClassNames.expanded, expandClassNames.prefix, expandClassNames.expanded, expandClassNames.iconContainer, EXPAND_ICON_COLOR(), akEditorSelectedNodeClassName, "var(--ds-border, ".concat(N50A, ")"), EXPAND_SELECTED_BACKGROUND);
32
+ })(), fg('platform_editor_drag_and_drop_expand_style_fix') && "overflow-x: clip;", expandClassNames.titleInput, sharedExpandStyles.titleInputStyles(), expandClassNames.titleContainer, sharedExpandStyles.titleContainerStyles(), expandClassNames.expanded, EXPAND_SELECTED_BACKGROUND, "var(--ds-border, ".concat(N40A, ")"), expandClassNames.content, "var(--ds-space-100, 8px)", firstNodeWithNotMarginTop(), expandClassNames.inputContainer, expandClassNames.prefix, expandClassNames.expanded, expandClassNames.prefix, expandClassNames.expanded, expandClassNames.iconContainer, EXPAND_ICON_COLOR(), akEditorSelectedNodeClassName, "var(--ds-border, ".concat(N50A, ")"), EXPAND_SELECTED_BACKGROUND);
28
33
  };
@@ -1,5 +1,5 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
- var _templateObject;
2
+ var _templateObject, _templateObject2, _templateObject3;
3
3
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
4
4
  import { css } from '@emotion/react';
5
5
  import { columnLayoutSharedStyle, LAYOUT_COLUMN_PADDING, LAYOUT_SECTION_MARGIN } from '@atlaskit/editor-common/styles';
@@ -9,8 +9,13 @@ import { akEditorDeleteBackground, akEditorDeleteBorder, akEditorSelectedBorderS
9
9
  import { N40A, N50A } from '@atlaskit/theme/colors';
10
10
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
11
11
  export { LAYOUT_COLUMN_PADDING, LAYOUT_SECTION_MARGIN };
12
+ var firstNodeWithNotMarginTop = function firstNodeWithNotMarginTop() {
13
+ return editorExperiment('nested-dnd', true) ? // eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression
14
+ css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\t\t\t\t> :nth-child(1 of :not(style, .ProseMirror-gapcursor, .ProseMirror-widget, span)) {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\t\t\t"]))) : // eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression
15
+ css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n\t\t\t\t> :not(style):first-child,\n\t\t\t\t> style:first-child + * {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t> .ProseMirror-gapcursor:first-child + *,\n\t\t\t\t> style:first-child + .ProseMirror-gapcursor + * {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\t> .ProseMirror-gapcursor:first-child + span + * {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\t\t\t"])));
16
+ };
12
17
 
13
18
  // eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- Needs manual remediation
14
19
  export var layoutStyles = function layoutStyles(viewMode) {
15
- return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\t.ProseMirror {\n\t\t", " [data-layout-section] {\n\t\t\t// TODO: Migrate away from gridSize\n\t\t\t// Recommendation: Replace directly with 7px\n\t\t\tmargin: ", " -", "px 0;\n\t\t\ttransition: border-color 0.3s ", ";\n\t\t\tcursor: ", ";\n\n\t\t\t/* Inner cursor located 26px from left */\n\t\t\t[data-layout-column] {\n\t\t\t\tflex: 1;\n\t\t\t\tmin-width: 0;\n\t\t\t\tborder: ", "px solid\n\t\t\t\t\t", ";\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tpadding: ", "px ", "px ", "px\n\t\t\t\t\t", "px;\n\t\t\t\tbox-sizing: border-box;\n\n\t\t\t\t> div {\n\t\t\t\t\t> :not(style):first-child,\n\t\t\t\t\t> style:first-child + * {\n\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t> .ProseMirror-gapcursor:first-child + *,\n\t\t\t\t\t> style:first-child + .ProseMirror-gapcursor + * {\n\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t> .ProseMirror-gapcursor:first-child + span + *,\n\t\t\t\t\t> style:first-child + .ProseMirror-gapcursor:first-child + span + * {\n\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t> .embedCardView-content-wrap:first-of-type .rich-media-item {\n\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t> .mediaSingleView-content-wrap:first-of-type .rich-media-item {\n\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t> .ProseMirror-gapcursor.-right:first-child\n\t\t\t\t\t\t+ .mediaSingleView-content-wrap\n\t\t\t\t\t\t.rich-media-item,\n\t\t\t\t\t> style:first-child\n\t\t\t\t\t\t+ .ProseMirror-gapcursor.-right\n\t\t\t\t\t\t+ .mediaSingleView-content-wrap\n\t\t\t\t\t\t.rich-media-item,\n\t\t\t\t\t> .ProseMirror-gapcursor.-right:first-of-type\n\t\t\t\t\t\t+ .embedCardView-content-wrap\n\t\t\t\t\t\t.rich-media-item {\n\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t> .ProseMirror-gapcursor:first-child\n\t\t\t\t\t\t+ span\n\t\t\t\t\t\t+ .mediaSingleView-content-wrap\n\t\t\t\t\t\t.rich-media-item,\n\t\t\t\t\t> style:first-child\n\t\t\t\t\t\t+ .ProseMirror-gapcursor\n\t\t\t\t\t\t+ span\n\t\t\t\t\t\t+ .mediaSingleView-content-wrap\n\t\t\t\t\t\t.rich-media-item {\n\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Prevent first DecisionWrapper's margin-top: 8px from shifting decisions down\n and shrinking layout's node selectable area (leniency margin) */\n\t\t\t\t\t> [data-node-type='decisionList'] {\n\t\t\t\t\t\tli:first-of-type [data-decision-wrapper] {\n\t\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t/* Make the 'content' fill the entire height of the layout column to allow click\n handler of layout section nodeview to target only data-layout-column */\n\t\t\t\t[data-layout-content] {\n\t\t\t\t\theight: 100%;\n\t\t\t\t\tcursor: text;\n\t\t\t\t\t.mediaGroupView-content-wrap {\n\t\t\t\t\t\tclear: both;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t[data-layout-column] + [data-layout-column] {\n\t\t\t\tmargin-left: ", "px;\n\t\t\t}\n\n\t\t\t@media screen and (max-width: ", "px) {\n\t\t\t\t[data-layout-column] + [data-layout-column] {\n\t\t\t\t\tmargin-left: 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// TODO: Remove the border styles below once design tokens have been enabled and fallbacks are no longer triggered.\n\t\t\t// This is because the default state already uses the same token and, as such, the hover style won't change anything.\n\t\t\t// https://product-fabric.atlassian.net/browse/DSP-4441\n\t\t\t/* Shows the border when cursor is inside a layout */\n\t\t\t&.selected [data-layout-column],\n\t\t\t&:hover [data-layout-column] {\n\t\t\t\tborder: ", "px solid\n\t\t\t\t\t", ";\n\t\t\t}\n\n\t\t\t&.selected.danger > [data-layout-column] {\n\t\t\t\tbackground-color: ", ";\n\t\t\t\tborder-color: ", ";\n\t\t\t}\n\n\t\t\t&.", ":not(.danger) {\n\t\t\t\t[data-layout-column] {\n\t\t\t\t\t", "\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t.fabric-editor--full-width-mode .ProseMirror {\n\t\t[data-layout-section] {\n\t\t\t.", " {\n\t\t\t\tmargin: 0 ", "px;\n\t\t\t}\n\t\t}\n\t}\n"])), columnLayoutSharedStyle, "var(--ds-space-100, 8px)", akLayoutGutterOffset + (editorExperiment('nested-dnd', true) ? 8 : 0), akEditorSwoopCubicBezier, viewMode === 'view' ? 'default' : 'pointer', viewMode === 'view' ? 0 : akEditorSelectedBorderSize, "var(--ds-border, ".concat(N40A, ")"), LAYOUT_COLUMN_PADDING, LAYOUT_COLUMN_PADDING, LAYOUT_COLUMN_PADDING, LAYOUT_COLUMN_PADDING + (editorExperiment('nested-dnd', true) ? 8 : 0), LAYOUT_SECTION_MARGIN, gridMediumMaxWidth, viewMode === 'view' ? 0 : akEditorSelectedBorderSize, "var(--ds-border, ".concat(N50A, ")"), "var(--ds-background-danger, ".concat(akEditorDeleteBackground, ")"), "var(--ds-border-danger, ".concat(akEditorDeleteBorder, ")"), akEditorSelectedNodeClassName, getSelectionStyles([SelectionStyle.Border, SelectionStyle.Blanket]), TableCssClassName.TABLE_CONTAINER, tableMarginFullWidthMode);
20
+ return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n\t.ProseMirror {\n\t\t", " [data-layout-section] {\n\t\t\t// TODO: Migrate away from gridSize\n\t\t\t// Recommendation: Replace directly with 7px\n\t\t\tmargin: ", " -", "px 0;\n\t\t\ttransition: border-color 0.3s ", ";\n\t\t\tcursor: ", ";\n\n\t\t\t/* Inner cursor located 26px from left */\n\t\t\t[data-layout-column] {\n\t\t\t\tflex: 1;\n\t\t\t\tmin-width: 0;\n\t\t\t\tborder: ", "px solid\n\t\t\t\t\t", ";\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tpadding: ", "px\n\t\t\t\t\t", "px;\n\t\t\t\tbox-sizing: border-box;\n\n\t\t\t\t> div {\n\t\t\t\t\t", "\n\n\t\t\t\t\t> .embedCardView-content-wrap:first-of-type .rich-media-item {\n\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t> .mediaSingleView-content-wrap:first-of-type .rich-media-item {\n\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t> .ProseMirror-gapcursor.-right:first-child\n\t\t\t\t\t\t+ .mediaSingleView-content-wrap\n\t\t\t\t\t\t.rich-media-item,\n\t\t\t\t\t> style:first-child\n\t\t\t\t\t\t+ .ProseMirror-gapcursor.-right\n\t\t\t\t\t\t+ .mediaSingleView-content-wrap\n\t\t\t\t\t\t.rich-media-item,\n\t\t\t\t\t> .ProseMirror-gapcursor.-right:first-of-type\n\t\t\t\t\t\t+ .embedCardView-content-wrap\n\t\t\t\t\t\t.rich-media-item {\n\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t> .ProseMirror-gapcursor:first-child\n\t\t\t\t\t\t+ span\n\t\t\t\t\t\t+ .mediaSingleView-content-wrap\n\t\t\t\t\t\t.rich-media-item,\n\t\t\t\t\t> style:first-child\n\t\t\t\t\t\t+ .ProseMirror-gapcursor\n\t\t\t\t\t\t+ span\n\t\t\t\t\t\t+ .mediaSingleView-content-wrap\n\t\t\t\t\t\t.rich-media-item {\n\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Prevent first DecisionWrapper's margin-top: 8px from shifting decisions down\n and shrinking layout's node selectable area (leniency margin) */\n\t\t\t\t\t> [data-node-type='decisionList'] {\n\t\t\t\t\t\tli:first-of-type [data-decision-wrapper] {\n\t\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t/* Make the 'content' fill the entire height of the layout column to allow click\n handler of layout section nodeview to target only data-layout-column */\n\t\t\t\t[data-layout-content] {\n\t\t\t\t\theight: 100%;\n\t\t\t\t\tcursor: text;\n\t\t\t\t\t.mediaGroupView-content-wrap {\n\t\t\t\t\t\tclear: both;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t[data-layout-column] + [data-layout-column] {\n\t\t\t\tmargin-left: ", "px;\n\t\t\t}\n\n\t\t\t@media screen and (max-width: ", "px) {\n\t\t\t\t[data-layout-column] + [data-layout-column] {\n\t\t\t\t\tmargin-left: 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// TODO: Remove the border styles below once design tokens have been enabled and fallbacks are no longer triggered.\n\t\t\t// This is because the default state already uses the same token and, as such, the hover style won't change anything.\n\t\t\t// https://product-fabric.atlassian.net/browse/DSP-4441\n\t\t\t/* Shows the border when cursor is inside a layout */\n\t\t\t&.selected [data-layout-column],\n\t\t\t&:hover [data-layout-column] {\n\t\t\t\tborder: ", "px solid\n\t\t\t\t\t", ";\n\t\t\t}\n\n\t\t\t&.selected.danger > [data-layout-column] {\n\t\t\t\tbackground-color: ", ";\n\t\t\t\tborder-color: ", ";\n\t\t\t}\n\n\t\t\t&.", ":not(.danger) {\n\t\t\t\t[data-layout-column] {\n\t\t\t\t\t", "\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t.fabric-editor--full-width-mode .ProseMirror {\n\t\t[data-layout-section] {\n\t\t\t.", " {\n\t\t\t\tmargin: 0 ", "px;\n\t\t\t}\n\t\t}\n\t}\n"])), columnLayoutSharedStyle, "var(--ds-space-100, 8px)", akLayoutGutterOffset + (editorExperiment('nested-dnd', true) ? 8 : 0), akEditorSwoopCubicBezier, viewMode === 'view' ? 'default' : 'pointer', viewMode === 'view' ? 0 : akEditorSelectedBorderSize, "var(--ds-border, ".concat(N40A, ")"), LAYOUT_COLUMN_PADDING, LAYOUT_COLUMN_PADDING + (editorExperiment('nested-dnd', true) ? 8 : 0), firstNodeWithNotMarginTop(), LAYOUT_SECTION_MARGIN, gridMediumMaxWidth, viewMode === 'view' ? 0 : akEditorSelectedBorderSize, "var(--ds-border, ".concat(N50A, ")"), "var(--ds-background-danger, ".concat(akEditorDeleteBackground, ")"), "var(--ds-border-danger, ".concat(akEditorDeleteBorder, ")"), akEditorSelectedNodeClassName, getSelectionStyles([SelectionStyle.Border, SelectionStyle.Blanket]), TableCssClassName.TABLE_CONTAINER, tableMarginFullWidthMode);
16
21
  };
@@ -9,6 +9,7 @@ import React, { useMemo } from 'react';
9
9
 
10
10
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
11
11
  import { css, jsx } from '@emotion/react';
12
+ import { isSSR } from '@atlaskit/editor-common/core-utils';
12
13
  import { akEditorMobileMaxWidth } from '@atlaskit/editor-shared-styles';
13
14
  import { WidthObserver } from '@atlaskit/width-detector';
14
15
  import { isFullPage } from '../../utils/is-full-page';
@@ -34,7 +35,8 @@ export var ToolbarWithSizeDetector = function ToolbarWithSizeDetector(props) {
34
35
  var elementWidth = useElementWidth(ref, {
35
36
  skip: typeof width !== 'undefined'
36
37
  });
37
- var toolbarSize = typeof width === 'undefined' && typeof elementWidth === 'undefined' ? undefined : widthToToolbarSize(width || elementWidth, props.appearance);
38
+ var defaultToolbarSize = isSSR() && isFullPage(props.appearance) ? ToolbarSize.XXL : undefined;
39
+ var toolbarSize = typeof width === 'undefined' && typeof elementWidth === 'undefined' ? defaultToolbarSize : widthToToolbarSize(width || elementWidth, props.appearance);
38
40
  var toolbarStyle = useMemo(function () {
39
41
  var toolbarWidth = isFullPage(props.appearance) && props.twoLineEditorToolbar ? ToolbarSize.S : ToolbarSize.M;
40
42
  var toolbarMinWidth = toolbarSizeToWidth(toolbarWidth, props.appearance);
@@ -1,214 +1,7 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
- import _createClass from "@babel/runtime/helpers/createClass";
5
- import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
6
- import _inherits from "@babel/runtime/helpers/inherits";
7
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
8
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
9
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
10
- import _regeneratorRuntime from "@babel/runtime/regenerator";
11
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
14
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
15
- /**
16
- * @jsxRuntime classic
17
- * @jsx jsx
18
- */
19
- import { PureComponent } from 'react';
20
-
21
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
22
- import { jsx } from '@emotion/react';
23
- import PropTypes from 'prop-types';
24
- import ButtonGroup from '@atlaskit/button/button-group';
25
- import Button from '@atlaskit/button/new';
26
- import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
27
- import { Popup } from '@atlaskit/editor-common/ui';
28
- import { ToolbarButton } from '@atlaskit/editor-common/ui-menu';
29
- import { withReactEditorViewOuterListeners as withOuterListeners } from '@atlaskit/editor-common/ui-react';
30
- import { analyticsEventKey } from '@atlaskit/editor-common/utils/analytics';
31
- import Spinner from '@atlaskit/spinner';
32
- import { createDispatch } from '../../event-dispatcher';
33
- import { usePresetContext } from '../../presets/context';
34
- import deprecationWarnings from '../../utils/deprecation-warnings';
35
- import { buttonContent, confirmationHeader, confirmationImg, confirmationPopup, confirmationText, wrapper } from './styles';
36
- var PopupWithOutsideListeners = withOuterListeners(Popup);
37
- var POPUP_HEIGHT = 388;
38
- var POPUP_WIDTH = 280;
39
- var EDITOR_IMAGE_URL = 'https://confluence.atlassian.com/download/attachments/945114421/editorillustration@2x.png?api=v2';
40
- var deprecations = [{
41
- property: 'packageVersion',
42
- description: 'To pass package version use feedbackInfo property – <Editor feedbackInfo={{ packageVersion }} />',
43
- type: 'removed'
44
- }, {
45
- property: 'packageName',
46
- description: 'To pass package name use feedbackInfo property – <Editor feedbackInfo={{ packageName }} />',
47
- type: 'removed'
48
- }, {
49
- property: 'labels',
50
- description: 'To pass feedback labels use feedbackInfo property – <Editor feedbackInfo={{ labels }} />',
51
- type: 'removed'
52
- }];
53
- var ToolbarFeedbackInternal = /*#__PURE__*/function (_PureComponent) {
54
- _inherits(ToolbarFeedbackInternal, _PureComponent);
55
- var _super = _createSuper(ToolbarFeedbackInternal);
56
- function ToolbarFeedbackInternal(props) {
57
- var _this;
58
- _classCallCheck(this, ToolbarFeedbackInternal);
59
- _this = _super.call(this, props);
60
- _defineProperty(_assertThisInitialized(_this), "state", {
61
- jiraIssueCollectorScriptLoading: false,
62
- showOptOutOption: false
63
- });
64
- _defineProperty(_assertThisInitialized(_this), "handleRef", function (ref) {
65
- if (ref) {
66
- _this.setState({
67
- target: ref
68
- });
69
- }
70
- });
71
- // Create a FeedbackInfo instance from props.
72
- _defineProperty(_assertThisInitialized(_this), "getFeedbackInfo", function () {
73
- var _this$props = _this.props,
74
- product = _this$props.product,
75
- packageVersion = _this$props.packageVersion,
76
- packageName = _this$props.packageName,
77
- labels = _this$props.labels;
78
- return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, product !== undefined && {
79
- product: product
80
- }), packageVersion !== undefined && {
81
- packageVersion: packageVersion
82
- }), packageName !== undefined && {
83
- packageName: packageName
84
- }), labels !== undefined && {
85
- labels: labels
86
- });
87
- });
88
- _defineProperty(_assertThisInitialized(_this), "collectFeedback", function () {
89
- if (_this.props.product === 'bitbucket') {
90
- _this.setState({
91
- showOptOutOption: true
92
- });
93
- } else {
94
- _this.openFeedbackPopup();
95
- }
96
- });
97
- _defineProperty(_assertThisInitialized(_this), "toggleShowOptOutOption", function () {
98
- _this.setState({
99
- showOptOutOption: !_this.state.showOptOutOption
100
- });
101
- });
102
- _defineProperty(_assertThisInitialized(_this), "openJiraIssueCollector", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
103
- var _this$props$api, _window$localStorage$, _this$props$api2;
104
- var contentId, sessionId, tabId;
105
- return _regeneratorRuntime.wrap(function _callee$(_context) {
106
- while (1) switch (_context.prev = _context.next) {
107
- case 0:
108
- _this.setState({
109
- jiraIssueCollectorScriptLoading: true,
110
- showOptOutOption: false
111
- });
112
- contentId = (_this$props$api = _this.props.api) === null || _this$props$api === void 0 || (_this$props$api = _this$props$api.contextIdentifier) === null || _this$props$api === void 0 || (_this$props$api = _this$props$api.sharedState.currentState()) === null || _this$props$api === void 0 || (_this$props$api = _this$props$api.contextIdentifierProvider) === null || _this$props$api === void 0 ? void 0 : _this$props$api.objectId;
113
- sessionId = (_window$localStorage$ = window.localStorage.getItem('awc.session.id')) === null || _window$localStorage$ === void 0 ? void 0 : _window$localStorage$.toString();
114
- tabId = window.sessionStorage['awc.tab.id'];
115
- _context.next = 6;
116
- return (_this$props$api2 = _this.props.api) === null || _this$props$api2 === void 0 || (_this$props$api2 = _this$props$api2.feedbackDialog) === null || _this$props$api2 === void 0 ? void 0 : _this$props$api2.actions.openFeedbackDialog(_objectSpread(_objectSpread({}, _this.getFeedbackInfo()), {}, {
117
- sessionId: sessionId,
118
- contentId: contentId,
119
- tabId: tabId
120
- }));
121
- case 6:
122
- _this.setState({
123
- jiraIssueCollectorScriptLoading: false
124
- });
125
- case 7:
126
- case "end":
127
- return _context.stop();
128
- }
129
- }, _callee);
130
- })));
131
- _defineProperty(_assertThisInitialized(_this), "openFeedbackPopup", function () {
132
- var dispatch = createDispatch(_this.context.editorActions.eventDispatcher);
133
- dispatch(analyticsEventKey, {
134
- payload: {
135
- action: ACTION.CLICKED,
136
- actionSubject: ACTION_SUBJECT.BUTTON,
137
- actionSubjectId: ACTION_SUBJECT_ID.BUTTON_FEEDBACK,
138
- eventType: EVENT_TYPE.UI
139
- }
140
- });
141
- _this.openJiraIssueCollector();
142
- return true;
143
- });
144
- _defineProperty(_assertThisInitialized(_this), "openLearnMorePage", function () {
145
- window.open('https://confluence.atlassian.com/x/NU1VO', '_blank');
146
- _this.toggleShowOptOutOption();
147
- });
148
- _defineProperty(_assertThisInitialized(_this), "hasJquery", function () {
149
- return typeof window.jQuery !== 'undefined';
150
- });
151
- deprecationWarnings(ToolbarFeedback.name, props, deprecations);
152
- return _this;
1
+ export default function ToolbarFeedback() {
2
+ if (process.env.NODE_ENV === 'development') {
3
+ // eslint-disable-next-line no-console
4
+ console.warn('ToolbarFeedback component is no longer available. This will be deprecated soon.');
153
5
  }
154
- _createClass(ToolbarFeedbackInternal, [{
155
- key: "render",
156
- value: function render() {
157
- var _this$props2 = this.props,
158
- popupsMountPoint = _this$props2.popupsMountPoint,
159
- popupsBoundariesElement = _this$props2.popupsBoundariesElement,
160
- popupsScrollableElement = _this$props2.popupsScrollableElement;
161
- var iconBefore = this.state.jiraIssueCollectorScriptLoading ? jsx(Spinner, null) : undefined;
162
-
163
- // JIRA issue collector script is using jQuery internally
164
- return this.hasJquery() ?
165
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
166
- jsx("div", {
167
- css: wrapper
168
- }, jsx(ToolbarButton, {
169
- ref: this.handleRef,
170
- iconBefore: iconBefore,
171
- onClick: this.collectFeedback,
172
- selected: false,
173
- spacing: "compact"
174
- }, jsx("span", {
175
- css: buttonContent
176
- }, "Feedback")), this.state.showOptOutOption && jsx(PopupWithOutsideListeners, {
177
- target: this.state.target,
178
- mountTo: popupsMountPoint,
179
- boundariesElement: popupsBoundariesElement,
180
- scrollableElement: popupsScrollableElement,
181
- fitHeight: POPUP_HEIGHT,
182
- fitWidth: POPUP_WIDTH,
183
- handleClickOutside: this.toggleShowOptOutOption,
184
- handleEscapeKeydown: this.toggleShowOptOutOption
185
- }, jsx("div", {
186
- css: confirmationPopup
187
- }, jsx("div", {
188
- css: confirmationHeader
189
- }, jsx("img", {
190
- css: confirmationImg,
191
- src: EDITOR_IMAGE_URL
192
- })), jsx("div", {
193
- css: confirmationText
194
- }, jsx("div", null, "We are rolling out a new editing experience across Atlassian products. Help us improve by providing feedback."), jsx("div", null, "You can opt-out for now by turning off the \"Atlassian Editor\" feature on the Labs page in Bitbucket settings."), jsx(ButtonGroup, null, jsx(Button, {
195
- appearance: "primary",
196
- onClick: this.openFeedbackPopup
197
- }, "Give feedback"), jsx(Button, {
198
- appearance: "default",
199
- onClick: this.openLearnMorePage
200
- }, "Learn more")))))) : null;
201
- }
202
- }]);
203
- return ToolbarFeedbackInternal;
204
- }(PureComponent);
205
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
206
- _defineProperty(ToolbarFeedbackInternal, "contextTypes", {
207
- editorActions: PropTypes.object.isRequired
208
- });
209
- export default function ToolbarFeedback(props) {
210
- var api = usePresetContext();
211
- return jsx(ToolbarFeedbackInternal, _extends({
212
- api: api
213
- }, props));
6
+ return null;
214
7
  }
@@ -10,57 +10,29 @@ var mediaPluginKey = {
10
10
  return state['mediaPlugin$'];
11
11
  }
12
12
  };
13
- export function __temporaryFixForConfigPanel(_x, _x2) {
14
- return _temporaryFixForConfigPanel.apply(this, arguments);
15
- }
16
- function _temporaryFixForConfigPanel() {
17
- _temporaryFixForConfigPanel = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(editorView, api) {
18
- var _api$extension;
19
- var extensionPluginState;
20
- return _regeneratorRuntime.wrap(function _callee$(_context) {
21
- while (1) switch (_context.prev = _context.next) {
22
- case 0:
23
- extensionPluginState = api === null || api === void 0 || (_api$extension = api.extension) === null || _api$extension === void 0 ? void 0 : _api$extension.sharedState.currentState();
24
- if (!(extensionPluginState && extensionPluginState.showContextPanel)) {
25
- _context.next = 4;
26
- break;
27
- }
28
- _context.next = 4;
29
- return new Promise(function (resolve) {
30
- var _api$extension2, _api$contextPanel;
31
- api === null || api === void 0 || (_api$extension2 = api.extension) === null || _api$extension2 === void 0 || _api$extension2.actions.forceAutoSave(api === null || api === void 0 || (_api$contextPanel = api.contextPanel) === null || _api$contextPanel === void 0 ? void 0 : _api$contextPanel.actions.applyChange)(resolve)(editorView.state, editorView.dispatch);
32
- });
33
- case 4:
34
- case "end":
35
- return _context.stop();
36
- }
37
- }, _callee);
38
- }));
39
- return _temporaryFixForConfigPanel.apply(this, arguments);
40
- }
41
- export function getEditorValueWithMedia(_x3) {
13
+ export function getEditorValueWithMedia(_x) {
42
14
  return _getEditorValueWithMedia.apply(this, arguments);
43
15
  }
44
16
  function _getEditorValueWithMedia() {
45
- _getEditorValueWithMedia = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(editorView) {
17
+ _getEditorValueWithMedia = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(editorView) {
46
18
  var mediaPluginState;
47
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
48
- while (1) switch (_context2.prev = _context2.next) {
19
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
20
+ while (1) switch (_context.prev = _context.next) {
49
21
  case 0:
50
22
  mediaPluginState = editorView.state && mediaPluginKey.getState(editorView.state);
51
23
  if (!(mediaPluginState && mediaPluginState.waitForMediaUpload)) {
52
- _context2.next = 4;
24
+ _context.next = 4;
53
25
  break;
54
26
  }
55
- _context2.next = 4;
27
+ _context.next = 4;
56
28
  return mediaPluginState.waitForPendingTasks();
57
29
  case 4:
58
- return _context2.abrupt("return", editorView.state.doc);
30
+ return _context.abrupt("return", editorView.state.doc);
59
31
  case 5:
60
32
  case "end":
61
- return _context2.stop();
33
+ return _context.stop();
62
34
  }
63
- }, _callee2);
35
+ }, _callee);
64
36
  }));
65
37
  return _getEditorValueWithMedia.apply(this, arguments);
66
38
  }
@@ -0,0 +1,7 @@
1
+ export function getNodesCount(node) {
2
+ var count = {};
3
+ node.nodesBetween(0, node.nodeSize - 2, function (node) {
4
+ count[node.type.name] = (count[node.type.name] || 0) + 1;
5
+ });
6
+ return count;
7
+ }
@@ -1,4 +1,4 @@
1
- export { getNodesCount } from './document';
1
+ export { getNodesCount } from './getNodesCount';
2
2
  export { default as measurements } from './performance/measure-enum';
3
3
 
4
4
  /*