@atlaskit/editor-common 131.4.0 → 131.6.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 (67) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/cjs/ai-messages/ai.js +5 -0
  3. package/dist/cjs/analytics/types/enums.js +1 -0
  4. package/dist/cjs/analytics/types/numbered-headings-events.js +5 -0
  5. package/dist/cjs/emoji/fallback.js +15 -0
  6. package/dist/cjs/extensibility/Extension/Extension/index.js +5 -2
  7. package/dist/cjs/extensibility/MultiBodiedExtension/index.js +5 -1
  8. package/dist/cjs/extensibility/utils/should-extension-breakout.js +8 -1
  9. package/dist/cjs/mention-avatar.js +21 -0
  10. package/dist/cjs/messages/block-type.js +5 -0
  11. package/dist/cjs/monitoring/error.js +1 -1
  12. package/dist/cjs/numbered-headings/index.js +38 -0
  13. package/dist/cjs/preset/core-plugin/requestDocument.js +6 -0
  14. package/dist/cjs/toolbar/keys.js +10 -2
  15. package/dist/cjs/toolbar/rank.js +4 -3
  16. package/dist/cjs/ui/DropList/index.js +3 -17
  17. package/dist/cjs/ui/Emoji/index.js +2 -3
  18. package/dist/cjs/ui/Mention/index.js +7 -7
  19. package/dist/es2019/ai-messages/ai.js +5 -0
  20. package/dist/es2019/analytics/types/enums.js +1 -0
  21. package/dist/es2019/analytics/types/numbered-headings-events.js +1 -0
  22. package/dist/es2019/emoji/fallback.js +10 -0
  23. package/dist/es2019/extensibility/Extension/Extension/index.js +3 -2
  24. package/dist/es2019/extensibility/MultiBodiedExtension/index.js +3 -1
  25. package/dist/es2019/extensibility/utils/should-extension-breakout.js +7 -1
  26. package/dist/es2019/mention-avatar.js +15 -0
  27. package/dist/es2019/messages/block-type.js +5 -0
  28. package/dist/es2019/monitoring/error.js +1 -1
  29. package/dist/es2019/numbered-headings/index.js +32 -0
  30. package/dist/es2019/preset/core-plugin/requestDocument.js +6 -0
  31. package/dist/es2019/toolbar/keys.js +8 -0
  32. package/dist/es2019/toolbar/rank.js +7 -2
  33. package/dist/es2019/ui/DropList/index.js +4 -18
  34. package/dist/es2019/ui/Emoji/index.js +2 -3
  35. package/dist/es2019/ui/Mention/index.js +7 -5
  36. package/dist/esm/ai-messages/ai.js +5 -0
  37. package/dist/esm/analytics/types/enums.js +1 -0
  38. package/dist/esm/analytics/types/numbered-headings-events.js +1 -0
  39. package/dist/esm/emoji/fallback.js +10 -0
  40. package/dist/esm/extensibility/Extension/Extension/index.js +5 -2
  41. package/dist/esm/extensibility/MultiBodiedExtension/index.js +5 -1
  42. package/dist/esm/extensibility/utils/should-extension-breakout.js +8 -1
  43. package/dist/esm/mention-avatar.js +15 -0
  44. package/dist/esm/messages/block-type.js +5 -0
  45. package/dist/esm/monitoring/error.js +1 -1
  46. package/dist/esm/numbered-headings/index.js +32 -0
  47. package/dist/esm/preset/core-plugin/requestDocument.js +6 -0
  48. package/dist/esm/toolbar/keys.js +8 -0
  49. package/dist/esm/toolbar/rank.js +4 -3
  50. package/dist/esm/ui/DropList/index.js +4 -18
  51. package/dist/esm/ui/Emoji/index.js +2 -3
  52. package/dist/esm/ui/Mention/index.js +7 -7
  53. package/dist/types/ai-messages/ai.d.ts +5 -0
  54. package/dist/types/analytics/types/enums.d.ts +1 -0
  55. package/dist/types/analytics/types/events.d.ts +2 -1
  56. package/dist/types/analytics/types/numbered-headings-events.d.ts +8 -0
  57. package/dist/types/emoji/fallback.d.ts +2 -0
  58. package/dist/types/extensibility/utils/should-extension-breakout.d.ts +2 -1
  59. package/dist/types/mention-avatar.d.ts +8 -0
  60. package/dist/types/messages/block-type.d.ts +5 -0
  61. package/dist/types/numbered-headings/index.d.ts +14 -0
  62. package/dist/types/toolbar/keys.d.ts +8 -0
  63. package/dist/types/toolbar/rank.d.ts +5 -0
  64. package/emoji/fallback/package.json +10 -0
  65. package/mention-avatar/package.json +10 -0
  66. package/numbered-headings/package.json +10 -0
  67. package/package.json +6 -5
@@ -0,0 +1,32 @@
1
+ const MAX_HEADING_LEVEL = 6;
2
+
3
+ /**
4
+ * DOM attribute carrying a heading's computed number. Editor and renderer styles render it with
5
+ * `[data-heading-number]::before { content: attr(data-heading-number) "." }`.
6
+ */
7
+ export const HEADING_NUMBER_ATTRIBUTE = 'data-heading-number';
8
+
9
+ /**
10
+ * Computes decimal outline numbers (`1`, `1.1`, `1.1.1`) for headings in document order.
11
+ *
12
+ * Each number has exactly `level` segments. Skipped levels are backfilled with `1` and count as
13
+ * real siblings, and a higher-level heading resets all deeper counters.
14
+ *
15
+ * @example getHeadingNumbers([1, 3, 2]) // ['1', '1.1.1', '1.2']
16
+ */
17
+ export const getHeadingNumbers = levels => {
18
+ const counters = new Array(MAX_HEADING_LEVEL).fill(0);
19
+ return levels.map(rawLevel => {
20
+ const level = Math.min(Math.max(Math.trunc(rawLevel) || 1, 1), MAX_HEADING_LEVEL);
21
+ for (let index = 0; index < level - 1; index++) {
22
+ if (counters[index] === 0) {
23
+ counters[index] = 1;
24
+ }
25
+ }
26
+ counters[level - 1] += 1;
27
+ for (let index = level; index < MAX_HEADING_LEVEL; index++) {
28
+ counters[index] = 0;
29
+ }
30
+ return counters.slice(0, level).join('.');
31
+ });
32
+ };
@@ -1,5 +1,6 @@
1
1
  import { JSONTransformer } from '@atlaskit/editor-json-transformer/JSONTransformer-2';
2
2
  import { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
3
+ import { fg } from '@atlaskit/platform-feature-flags/fg';
3
4
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '../../analytics';
4
5
  const transformer = new JSONTransformer();
5
6
  export function toJSON(node) {
@@ -53,6 +54,11 @@ export function returnDocumentRequest(editorView, callback, transformer, fireAna
53
54
  schema
54
55
  } = (_editorView$state = editorView === null || editorView === void 0 ? void 0 : editorView.state) !== null && _editorView$state !== void 0 ? _editorView$state : {};
55
56
  if (!doc || !schema) {
57
+ if (fg('platform_editor_resolve_missing_document_request')) {
58
+ // Notify callers that no document is available.
59
+ // Async requests rely on this callback to settle their promise.
60
+ callback(undefined);
61
+ }
56
62
  return undefined;
57
63
  }
58
64
  try {
@@ -201,6 +201,14 @@ export const TEXT_STYLES_MENU_SECTION = {
201
201
  key: 'text-styles-menu-section',
202
202
  type: 'menu-section'
203
203
  };
204
+ export const NUMBERED_HEADINGS_MENU_SECTION = {
205
+ key: 'numbered-headings-menu-section',
206
+ type: 'menu-section'
207
+ };
208
+ export const NUMBERED_HEADINGS_MENU_ITEM = {
209
+ key: 'numbered-headings-menu-item',
210
+ type: 'menu-item'
211
+ };
204
212
  export const NORMAL_TEXT_MENU_ITEM = {
205
213
  key: 'normal-text-menu-item',
206
214
  type: 'menu-item'
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @atlaskit/volt-strict-mode/no-multiple-exports */
2
2
 
3
- import { AI_PASTE_MENU_SECTION, AI_SECTION, APPS_SECTION, COLLAB_SECTION, IMPROVE_WRITING_GROUP, IMPROVE_WRITING_BUTTON, HERO_PROMPT_BUTTON_GROUP, HERO_PROMPT_BUTTON, HERO_PROMPT_MENU_ITEM, LINKING_SECTION, OVERFLOW_SECTION, ROVO_GROUP, ROVO_HERO_BUTTON, ROVO_MENU, TEXT_SECTION, MAKE_SHORTER_MENU_ITEM, MAKE_LONGER_MENU_ITEM, SPELLING_AND_GRAMMAR_MENU_ITEM, CHANGE_TONE_NESTED_MENU, CHANGE_TONE_MENU_SECTION, MORE_PROFESSIONAL_MENU_ITEM, MORE_CASUAL_MENU_ITEM, MORE_EMPATHETIC_MENU_ITEM, TRANSLATE_NESTED_MENU, COMMENT_GROUP, COMMENT_HERO_BUTTON, ROVO_PROMPT_MENU_SECTION, TRANSLATE_MENU_SECTION, TEXT_FORMATTING_GROUP, TEXT_FORMATTING_HERO_BUTTON, TEXT_FORMATTING_HERO_BUTTON_COLLAPSED, BOLD_BUTTON_GROUP, UNDERLINE_BUTTON_GROUP, TEXT_FORMATTING_MENU, TEXT_FORMATTING_MENU_SECTION, TEXT_STYLES_GROUP, TEXT_STYLES_MENU, TEXT_STYLES_MENU_SECTION, NORMAL_TEXT_MENU_ITEM, SMALL_TEXT_MENU_ITEM, HEADING_1_MENU_ITEM, HEADING_2_MENU_ITEM, HEADING_3_MENU_ITEM, HEADING_4_MENU_ITEM, HEADING_5_MENU_ITEM, HEADING_6_MENU_ITEM, BLOCK_QUOTE_MENU_ITEM, UNDERLINE_MENU_ITEM, ITALIC_MENU_ITEM, STRIKE_MENU_ITEM, BOLD_MENU_ITEM, CODE_MENU_ITEM, SUBSCRIPT_MENU_ITEM, SUPERSCRIPT_MENU_ITEM, CLEAR_FORMARTTING_MENU_SECTION, CLEAR_FORMATTING_MENU_ITEM, TEXT_COLOR_HIGHLIGHT_GROUP, TEXT_COLOR_MENU_ITEM, HIGHLIGHT_MENU_ITEM, CLEAR_COLOR_MENU_ITEM, COLOR_ACCESSIBILITY_MENU_ITEM, TEXT_COLOR_HIGHLIGHT_MENU, TEXT_COLOR_HIGHLIGHT_MENU_SECTION, PIN_MENU_ITEM, PIN_MENU_SECTION, OVERFLOW_MENU, OVERFLOW_GROUP, LINKING_GROUP, LINKING_BUTTON, ALIGNMENT_MENU, ALIGNMENT_GROUP, ALIGNMENT_MENU_SECTION, ALIGN_LEFT_MENU_ITEM, ALIGN_CENTER_MENU_ITEM, ALIGN_RIGHT_MENU_ITEM, LISTS_INDENTATION_GROUP, BULLETED_LIST_BUTTON, LISTS_INDENTATION_HERO_BUTTON, LISTS_INDENTATION_MENU, LISTS_INDENTATION_MENU_SECTION, NUMBERED_LIST_MENU_ITEM, BULLETED_LIST_MENU_ITEM, TASK_LIST_MENU_ITEM, OUTDENT_MENU_ITEM, INDENT_MENU_ITEM, TASK_LIST_GROUP, MEDIA_GROUP, MENTION_GROUP, LAYOUT_GROUP, TABLE_GROUP, EMOJI_GROUP, INSERT_BLOCK_SECTION, TASK_LIST_BUTTON, MEDIA_BUTTON, MENTION_BUTTON, EMOJI_BUTTON, LAYOUT_BUTTON, TABLE_BUTTON, TABLE_SIZE_PICKER, INSERT_GROUP, INSERT_BUTTON, TRACK_CHANGES_SECTION, UNDO_BUTTON, REDO_BUTTON, TRACK_CHANGES_BUTTON, UNDO_CHANGES_GROUP, REDO_CHANGES_GROUP, TRACK_CHANGES_GROUP, PIN_SECTION, PIN_BUTTON, PIN_GROUP, LOOM_MENU_SECTION, LOOM_MENU_ITEM, OVERFLOW_SECTION_PRIMARY_TOOLBAR, OVERFLOW_GROUP_PRIMARY_TOOLBAR, OVERFLOW_MENU_PRIMARY_TOOLBAR, TEXT_SECTION_COLLAPSED, TEXT_COLLAPSED_GROUP, TEXT_COLLAPSED_MENU, SELECTION_EXTENSION_MENU_SECTION, DEFINE_MENU_ITEM, DEFINE_BUTTON, DEFINE_GROUP, AI_VIEW_SECTION, LISTS_INDENTATION_HERO_BUTTON_COLLAPSED, BULLETED_LIST_BUTTON_GROUP, CODE_BLOCK_BUTTON, CODE_BLOCK_GROUP, IMPROVE_WRITING_MENU_ITEM, ROVO_MENU_DISPLAY_SMALL, ROVO_PROMPT_MENU_SECTION_DISPLAY_SMALL, ROVO_GROUP_DISPLAY_SMALL, ROVO_GROUP_PRIMARY_TOOLBAR, ROVO_WRITE_BUTTON_PRIMARY_TOOLBAR, SYNCED_BLOCK_GROUP, SYNCED_BLOCK_SECTION, SYNCED_BLOCK_BUTTON, ADD_POLISH_MENU_ITEM, AI_SUGGESTIONS_GROUP, AI_SUGGESTIONS_BUTTON, OVERFLOW_EXTENSIONS_MENU_SECTION, FIRST_PARTY_EXTENSIONS_MENU_ITEM, EXTERNAL_EXTENSIONS_MENU_ITEM, PASTE_MENU_SECTION, PASTE_NESTED_MENU, PASTE_MENU_NESTED_SECTION, PASTE_RICH_TEXT_MENU_ITEM, PASTE_MARKDOWN_MENU_ITEM, PASTE_PLAIN_TEXT_MENU_ITEM, VIEW_MODE_TOGGLE_SECTION } from './keys';
3
+ import { AI_PASTE_MENU_SECTION, AI_SECTION, APPS_SECTION, COLLAB_SECTION, IMPROVE_WRITING_GROUP, IMPROVE_WRITING_BUTTON, HERO_PROMPT_BUTTON_GROUP, HERO_PROMPT_BUTTON, HERO_PROMPT_MENU_ITEM, LINKING_SECTION, OVERFLOW_SECTION, ROVO_GROUP, ROVO_HERO_BUTTON, ROVO_MENU, TEXT_SECTION, MAKE_SHORTER_MENU_ITEM, MAKE_LONGER_MENU_ITEM, SPELLING_AND_GRAMMAR_MENU_ITEM, CHANGE_TONE_NESTED_MENU, CHANGE_TONE_MENU_SECTION, MORE_PROFESSIONAL_MENU_ITEM, MORE_CASUAL_MENU_ITEM, MORE_EMPATHETIC_MENU_ITEM, TRANSLATE_NESTED_MENU, COMMENT_GROUP, COMMENT_HERO_BUTTON, ROVO_PROMPT_MENU_SECTION, TRANSLATE_MENU_SECTION, TEXT_FORMATTING_GROUP, TEXT_FORMATTING_HERO_BUTTON, TEXT_FORMATTING_HERO_BUTTON_COLLAPSED, BOLD_BUTTON_GROUP, UNDERLINE_BUTTON_GROUP, TEXT_FORMATTING_MENU, TEXT_FORMATTING_MENU_SECTION, TEXT_STYLES_GROUP, TEXT_STYLES_MENU, TEXT_STYLES_MENU_SECTION, NUMBERED_HEADINGS_MENU_SECTION, NUMBERED_HEADINGS_MENU_ITEM, NORMAL_TEXT_MENU_ITEM, SMALL_TEXT_MENU_ITEM, HEADING_1_MENU_ITEM, HEADING_2_MENU_ITEM, HEADING_3_MENU_ITEM, HEADING_4_MENU_ITEM, HEADING_5_MENU_ITEM, HEADING_6_MENU_ITEM, BLOCK_QUOTE_MENU_ITEM, UNDERLINE_MENU_ITEM, ITALIC_MENU_ITEM, STRIKE_MENU_ITEM, BOLD_MENU_ITEM, CODE_MENU_ITEM, SUBSCRIPT_MENU_ITEM, SUPERSCRIPT_MENU_ITEM, CLEAR_FORMARTTING_MENU_SECTION, CLEAR_FORMATTING_MENU_ITEM, TEXT_COLOR_HIGHLIGHT_GROUP, TEXT_COLOR_MENU_ITEM, HIGHLIGHT_MENU_ITEM, CLEAR_COLOR_MENU_ITEM, COLOR_ACCESSIBILITY_MENU_ITEM, TEXT_COLOR_HIGHLIGHT_MENU, TEXT_COLOR_HIGHLIGHT_MENU_SECTION, PIN_MENU_ITEM, PIN_MENU_SECTION, OVERFLOW_MENU, OVERFLOW_GROUP, LINKING_GROUP, LINKING_BUTTON, ALIGNMENT_MENU, ALIGNMENT_GROUP, ALIGNMENT_MENU_SECTION, ALIGN_LEFT_MENU_ITEM, ALIGN_CENTER_MENU_ITEM, ALIGN_RIGHT_MENU_ITEM, LISTS_INDENTATION_GROUP, BULLETED_LIST_BUTTON, LISTS_INDENTATION_HERO_BUTTON, LISTS_INDENTATION_MENU, LISTS_INDENTATION_MENU_SECTION, NUMBERED_LIST_MENU_ITEM, BULLETED_LIST_MENU_ITEM, TASK_LIST_MENU_ITEM, OUTDENT_MENU_ITEM, INDENT_MENU_ITEM, TASK_LIST_GROUP, MEDIA_GROUP, MENTION_GROUP, LAYOUT_GROUP, TABLE_GROUP, EMOJI_GROUP, INSERT_BLOCK_SECTION, TASK_LIST_BUTTON, MEDIA_BUTTON, MENTION_BUTTON, EMOJI_BUTTON, LAYOUT_BUTTON, TABLE_BUTTON, TABLE_SIZE_PICKER, INSERT_GROUP, INSERT_BUTTON, TRACK_CHANGES_SECTION, UNDO_BUTTON, REDO_BUTTON, TRACK_CHANGES_BUTTON, UNDO_CHANGES_GROUP, REDO_CHANGES_GROUP, TRACK_CHANGES_GROUP, PIN_SECTION, PIN_BUTTON, PIN_GROUP, LOOM_MENU_SECTION, LOOM_MENU_ITEM, OVERFLOW_SECTION_PRIMARY_TOOLBAR, OVERFLOW_GROUP_PRIMARY_TOOLBAR, OVERFLOW_MENU_PRIMARY_TOOLBAR, TEXT_SECTION_COLLAPSED, TEXT_COLLAPSED_GROUP, TEXT_COLLAPSED_MENU, SELECTION_EXTENSION_MENU_SECTION, DEFINE_MENU_ITEM, DEFINE_BUTTON, DEFINE_GROUP, AI_VIEW_SECTION, LISTS_INDENTATION_HERO_BUTTON_COLLAPSED, BULLETED_LIST_BUTTON_GROUP, CODE_BLOCK_BUTTON, CODE_BLOCK_GROUP, IMPROVE_WRITING_MENU_ITEM, ROVO_MENU_DISPLAY_SMALL, ROVO_PROMPT_MENU_SECTION_DISPLAY_SMALL, ROVO_GROUP_DISPLAY_SMALL, ROVO_GROUP_PRIMARY_TOOLBAR, ROVO_WRITE_BUTTON_PRIMARY_TOOLBAR, SYNCED_BLOCK_GROUP, SYNCED_BLOCK_SECTION, SYNCED_BLOCK_BUTTON, ADD_POLISH_MENU_ITEM, AI_SUGGESTIONS_GROUP, AI_SUGGESTIONS_BUTTON, OVERFLOW_EXTENSIONS_MENU_SECTION, FIRST_PARTY_EXTENSIONS_MENU_ITEM, EXTERNAL_EXTENSIONS_MENU_ITEM, PASTE_MENU_SECTION, PASTE_NESTED_MENU, PASTE_MENU_NESTED_SECTION, PASTE_RICH_TEXT_MENU_ITEM, PASTE_MARKDOWN_MENU_ITEM, PASTE_PLAIN_TEXT_MENU_ITEM, VIEW_MODE_TOGGLE_SECTION } from './keys';
4
4
  export const TOOLBAR_RANK = {
5
5
  [AI_SECTION.key]: 100,
6
6
  [AI_VIEW_SECTION.key]: 100,
@@ -111,6 +111,7 @@ export const TEXT_COLLAPSED_GROUP_RANK = {
111
111
  };
112
112
  export const TEXT_COLLAPSED_MENU_RANK = {
113
113
  [TEXT_STYLES_MENU_SECTION.key]: 100,
114
+ [NUMBERED_HEADINGS_MENU_SECTION.key]: 150,
114
115
  [TEXT_FORMATTING_MENU_SECTION.key]: 200,
115
116
  [CLEAR_FORMARTTING_MENU_SECTION.key]: 300,
116
117
  [LISTS_INDENTATION_MENU_SECTION.key]: 400,
@@ -125,7 +126,11 @@ export const TEXT_STYLES_GROUP_RANK = {
125
126
  [TEXT_STYLES_MENU.key]: 100
126
127
  };
127
128
  export const TEXT_STYLES_MENU_RANK = {
128
- [TEXT_STYLES_MENU_SECTION.key]: 100
129
+ [TEXT_STYLES_MENU_SECTION.key]: 100,
130
+ [NUMBERED_HEADINGS_MENU_SECTION.key]: 200
131
+ };
132
+ export const NUMBERED_HEADINGS_MENU_SECTION_RANK = {
133
+ [NUMBERED_HEADINGS_MENU_ITEM.key]: 100
129
134
  };
130
135
  export const TEXT_STYLES_MENU_SECTION_RANK = {
131
136
  [NORMAL_TEXT_MENU_ITEM.key]: 100,
@@ -7,24 +7,15 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
7
7
  import { Component } from 'react';
8
8
 
9
9
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
10
- import { css, jsx, keyframes } from '@emotion/react';
10
+ import { css, jsx } from '@emotion/react';
11
11
  import createAndFireEvent from '@atlaskit/analytics-next/createAndFireEvents';
12
12
  import withAnalyticsContext from '@atlaskit/analytics-next/withAnalyticsContext';
13
13
  import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
14
- import { fg } from '@atlaskit/platform-feature-flags/fg';
15
14
  import Layer from '../Layer';
16
15
  const packageName = "@atlaskit/editor-common";
17
- const packageVersion = "131.3.0";
16
+ const packageVersion = "131.5.0";
18
17
  const halfFocusRing = 1;
19
18
  const dropOffset = '0, 8';
20
- const fadeIn = keyframes({
21
- '0%': {
22
- opacity: 0
23
- },
24
- '100%': {
25
- opacity: 1
26
- }
27
- });
28
19
  // Ignored via go/ees005
29
20
  // eslint-disable-next-line @repo/internal/react/no-class-components
30
21
  class DropList extends Component {
@@ -46,11 +37,6 @@ class DropList extends Component {
46
37
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
47
38
  boxSizing: this.props.shouldFitContainer ? 'border-box' : undefined
48
39
  }));
49
- _defineProperty(this, "motionStyles", css({
50
- animationName: `${fadeIn}`,
51
- animationDuration: '360ms',
52
- animationTimingFunction: 'cubic-bezier(0.8, 0, 0, 1)'
53
- }));
54
40
  /* eslint-disable @atlaskit/design-system/ensure-design-token-usage */
55
41
  _defineProperty(this, "menuWrapper", () => {
56
42
  return css({
@@ -168,7 +154,7 @@ class DropList extends Component {
168
154
  role: "presentation"
169
155
  }, children) : null;
170
156
  return jsx("div", {
171
- css: [this.wrapperStyles, fg('p2m-drop-down-motion') && this.motionStyles],
157
+ css: this.wrapperStyles,
172
158
  ref: this.handleDroplistRef
173
159
  }, jsx(Layer, {
174
160
  content: layerContent,
@@ -176,7 +162,7 @@ class DropList extends Component {
176
162
  position: position,
177
163
  onPositioned: onPositioned
178
164
  }, jsx("div", {
179
- css: [this.triggerStyles, fg('p2m-drop-down-motion') && this.motionStyles],
165
+ css: this.triggerStyles,
180
166
  ref: this.handleTriggerRef
181
167
  }, trigger)));
182
168
  }
@@ -1,7 +1,6 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import ResourcedEmoji from '@atlaskit/emoji/resourced-emoji';
3
- import { fg } from '@atlaskit/platform-feature-flags/fg';
4
- import { isSingleEmoji } from '../../utils/isSingleEmoji';
3
+ import { getEmojiCustomFallback } from '../../emoji/fallback';
5
4
  const EmojiNodeFunctional = props => {
6
5
  var _resourceConfig$optim;
7
6
  const {
@@ -20,7 +19,7 @@ const EmojiNodeFunctional = props => {
20
19
  fallback
21
20
  }), [shortName, id, fallback]);
22
21
  const emojiProviderResolver = useMemo(() => Promise.resolve(emojiProvider), [emojiProvider]);
23
- const customFallback = fg('platform_editor_custom_emoji_unicode_fallback') && !isSingleEmoji(fallback || shortName) ? '\uFFFD' : undefined;
22
+ const customFallback = getEmojiCustomFallback(fallback || shortName);
24
23
  if (allowTextFallback && !emojiProvider) {
25
24
  return /*#__PURE__*/React.createElement("span", {
26
25
  "data-emoji-id": id,
@@ -2,14 +2,12 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  /* eslint-disable @repo/internal/react/no-class-components */
3
3
 
4
4
  import React, { PureComponent } from 'react';
5
- import { expVal } from '@atlaskit/platform-feature-experiments/exp-val';
6
5
  import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
7
6
  import { fg } from '@atlaskit/platform-feature-flags/fg';
7
+ import { isMentionAvatarEnabled } from '../../mention-avatar';
8
8
  import { ProviderFactory, WithProviders } from '../../provider-factory';
9
9
  import { MissingMentionAvatarProvider, MentionWithAvatarProviders, MentionWithProviders } from './mention-with-providers';
10
10
  const MENTION_PROVIDERS = ['mentionProvider', 'profilecardProvider'];
11
- const GENERIC_MENTION_IDS = ['HipChat', 'all', 'here'];
12
- const isAgentMentionUserType = userType => userType === 'APP' || userType === 'AGENT';
13
11
  export default class Mention extends PureComponent {
14
12
  constructor(props) {
15
13
  super(props);
@@ -31,8 +29,12 @@ export default class Mention extends PureComponent {
31
29
  } = providers;
32
30
  const hasProvider = Boolean(mentionNodeDataProvider);
33
31
  const canReportMissingProvider = !hasProvider && fg('platform_editor_mention_avatar_observability');
34
- const cohort = expVal('convo_ai_entity_hover_cards_non_hello_exp', 'hover_card_cohort', 'control');
35
- const isAvatarEnabled = (hasProvider || canReportMissingProvider) && userType !== 'SPECIAL' && !GENERIC_MENTION_IDS.includes(id) && (cohort === 'person' || cohort === 'all' || isExperimentEnabled('platform_editor_mention_node_avatar') || isExperimentEnabled('platform_editor_mention_node_graphql_provider') || isAgentMentionUserType(userType) && isExperimentEnabled('platform_editor_drop3_hexagon_agent_avatar'));
32
+ const isAvatarEnabled = isMentionAvatarEnabled({
33
+ id,
34
+ userType,
35
+ hasProvider,
36
+ canReportMissingProvider
37
+ });
36
38
  if (isAvatarEnabled && mentionNodeDataProvider) {
37
39
  return /*#__PURE__*/React.createElement(MentionWithAvatarProviders, {
38
40
  id: id,
@@ -327,5 +327,10 @@ export var aiMessages = defineMessages({
327
327
  id: 'fabric.editor.ai.smartlink.action.listTodos',
328
328
  defaultMessage: 'List to-dos',
329
329
  description: 'Action to list to-dos from the linked content'
330
+ },
331
+ smartlinkResolutionErrorDescription: {
332
+ id: 'fabric.editor.ai.smartlink.resolution-error.description',
333
+ defaultMessage: 'This link failed to resolve.',
334
+ description: 'Shown when a Smart Link AI action cannot load link metadata.'
330
335
  }
331
336
  });
@@ -352,6 +352,7 @@ export var ACTION_SUBJECT = /*#__PURE__*/function (ACTION_SUBJECT) {
352
352
  ACTION_SUBJECT["MENTION"] = "mention";
353
353
  ACTION_SUBJECT["MENTION_TYPEAHEAD"] = "mentionTypeahead";
354
354
  ACTION_SUBJECT["NESTED_EXPAND"] = "nestedExpand";
355
+ ACTION_SUBJECT["NUMBERED_HEADINGS"] = "numberedHeadings";
355
356
  ACTION_SUBJECT["PANEL"] = "panel";
356
357
  ACTION_SUBJECT["PICKER"] = "picker";
357
358
  ACTION_SUBJECT["PLUS_MENU"] = "plusMenu";
@@ -0,0 +1,10 @@
1
+ import { fg } from '@atlaskit/platform-feature-flags/fg';
2
+ import { isSingleEmoji } from '../utils/isSingleEmoji';
3
+
4
+ /** Shared custom-emoji fallback without importing components or resolving providers. */
5
+ export function getEmojiCustomFallback(fallbackText) {
6
+ if (fg('platform_editor_custom_emoji_unicode_fallback')) {
7
+ return isSingleEmoji(fallbackText) ? undefined : "\uFFFD";
8
+ }
9
+ return undefined;
10
+ }
@@ -47,7 +47,7 @@ var isCssScrollTimelineSupported = memoizeOne(function (browserCSS) {
47
47
  return browserCSS.supports('animation-timeline', '--test-timeline') && browserCSS.supports('scroll-timeline-name', '--test-timeline') && browserCSS.supports('timeline-scope', '--test-timeline') && browserCSS.supports('animation-range', '0% 101%');
48
48
  });
49
49
  function ExtensionWithPluginState(props) {
50
- var _node$attrs;
50
+ var _node$attrs, _node$marks;
51
51
  var node = props.node,
52
52
  handleContentDOMRef = props.handleContentDOMRef,
53
53
  children = props.children,
@@ -103,7 +103,10 @@ function ExtensionWithPluginState(props) {
103
103
  var shouldBreakout = shouldExtensionBreakout({
104
104
  layout: layout,
105
105
  isTopLevelNode: isTopLevelNode,
106
- editorAppearance: editorAppearance
106
+ editorAppearance: editorAppearance,
107
+ hasBreakoutMark: (_node$marks = node.marks) === null || _node$marks === void 0 ? void 0 : _node$marks.some(function (mark) {
108
+ return mark.type.name === 'breakout';
109
+ })
107
110
  });
108
111
 
109
112
  // We don't want to show border for non-empty 1p bodied extensions in live pages
@@ -174,6 +174,7 @@ var getWrapperTitleContent = function getWrapperTitleContent(imageData, title, s
174
174
  }), title);
175
175
  };
176
176
  var MultiBodiedExtensionWithWidth = function MultiBodiedExtensionWithWidth(_ref2) {
177
+ var _node$marks;
177
178
  var node = _ref2.node,
178
179
  handleContentDOMRef = _ref2.handleContentDOMRef,
179
180
  getPos = _ref2.getPos,
@@ -249,7 +250,10 @@ var MultiBodiedExtensionWithWidth = function MultiBodiedExtensionWithWidth(_ref2
249
250
  var shouldBreakout = shouldExtensionBreakout({
250
251
  layout: layout,
251
252
  editorAppearance: editorAppearance,
252
- isTopLevelNode: true
253
+ isTopLevelNode: true,
254
+ hasBreakoutMark: (_node$marks = node.marks) === null || _node$marks === void 0 ? void 0 : _node$marks.some(function (mark) {
255
+ return mark.type.name === 'breakout';
256
+ })
253
257
  });
254
258
  var mbeWrapperStyles = {};
255
259
  if (shouldBreakout) {
@@ -1,3 +1,4 @@
1
+ import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
1
2
  var breakoutLayouts = new Set(['full-width', 'wide']);
2
3
  var shouldRespectBreakoutForAppearance = function shouldRespectBreakoutForAppearance(appearance) {
3
4
  if (!appearance) {
@@ -15,7 +16,13 @@ export var shouldExtensionBreakout = function shouldExtensionBreakout(_ref) {
15
16
  var layout = _ref.layout,
16
17
  _ref$isTopLevelNode = _ref.isTopLevelNode,
17
18
  isTopLevelNode = _ref$isTopLevelNode === void 0 ? true : _ref$isTopLevelNode,
18
- editorAppearance = _ref.editorAppearance;
19
+ editorAppearance = _ref.editorAppearance,
20
+ _ref$hasBreakoutMark = _ref.hasBreakoutMark,
21
+ hasBreakoutMark = _ref$hasBreakoutMark === void 0 ? false : _ref$hasBreakoutMark;
22
+ // the breakout mark wrapper owns the width, so the legacy layout must not size the node too
23
+ if (hasBreakoutMark && isExperimentEnabled('platform_editor_lovability_resize_extensions')) {
24
+ return false;
25
+ }
19
26
  if (!layout || !breakoutLayouts.has(layout)) {
20
27
  return false;
21
28
  }
@@ -0,0 +1,15 @@
1
+ import { expVal } from '@atlaskit/platform-feature-experiments/exp-val';
2
+ import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
3
+ var GENERIC_MENTION_IDS = ['HipChat', 'all', 'here'];
4
+
5
+ /** Shared avatar eligibility without importing mention components or resolving provider data. */
6
+ export function isMentionAvatarEnabled(_ref) {
7
+ var id = _ref.id,
8
+ userType = _ref.userType,
9
+ hasProvider = _ref.hasProvider,
10
+ _ref$canReportMissing = _ref.canReportMissingProvider,
11
+ canReportMissingProvider = _ref$canReportMissing === void 0 ? false : _ref$canReportMissing;
12
+ // Preserve Platform's cohort exposure, including when a provider is missing.
13
+ var cohort = expVal('convo_ai_entity_hover_cards_non_hello_exp', 'hover_card_cohort', 'control');
14
+ return (hasProvider || canReportMissingProvider) && userType !== 'SPECIAL' && !GENERIC_MENTION_IDS.includes(id) && (cohort === 'person' || cohort === 'all' || isExperimentEnabled('platform_editor_mention_node_avatar') || isExperimentEnabled('platform_editor_mention_node_graphql_provider') || (userType === 'APP' || userType === 'AGENT') && isExperimentEnabled('platform_editor_drop3_hexagon_agent_avatar'));
15
+ }
@@ -184,5 +184,10 @@ export var messages = defineMessages({
184
184
  id: 'fabric.editor.other',
185
185
  defaultMessage: 'Others...',
186
186
  description: 'Label shown as a menu item in the block type dropdown to access additional text formatting options in the editor.'
187
+ },
188
+ numberedHeadings: {
189
+ id: 'editor-common.messages.block-type.numberedHeadings',
190
+ defaultMessage: 'Numbered headings',
191
+ description: 'Label for a toggle in the text styles menu that turns automatic numbering (1, 1.1, 1.1.1) on or off for every heading on the page.'
187
192
  }
188
193
  });
@@ -19,7 +19,7 @@ var NETWORK_FAILURE_REGEX = /^network failure/i;
19
19
  var RESIZE_OBSERVER_LOOP_REGEX = /ResizeObserver loop completed with undelivered notifications/;
20
20
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
21
21
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
22
- var packageVersion = "131.3.0";
22
+ var packageVersion = "131.5.0";
23
23
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
24
24
  // Remove URL as it has UGC
25
25
  // Ignored via go/ees007
@@ -0,0 +1,32 @@
1
+ var MAX_HEADING_LEVEL = 6;
2
+
3
+ /**
4
+ * DOM attribute carrying a heading's computed number. Editor and renderer styles render it with
5
+ * `[data-heading-number]::before { content: attr(data-heading-number) "." }`.
6
+ */
7
+ export var HEADING_NUMBER_ATTRIBUTE = 'data-heading-number';
8
+
9
+ /**
10
+ * Computes decimal outline numbers (`1`, `1.1`, `1.1.1`) for headings in document order.
11
+ *
12
+ * Each number has exactly `level` segments. Skipped levels are backfilled with `1` and count as
13
+ * real siblings, and a higher-level heading resets all deeper counters.
14
+ *
15
+ * @example getHeadingNumbers([1, 3, 2]) // ['1', '1.1.1', '1.2']
16
+ */
17
+ export var getHeadingNumbers = function getHeadingNumbers(levels) {
18
+ var counters = new Array(MAX_HEADING_LEVEL).fill(0);
19
+ return levels.map(function (rawLevel) {
20
+ var level = Math.min(Math.max(Math.trunc(rawLevel) || 1, 1), MAX_HEADING_LEVEL);
21
+ for (var index = 0; index < level - 1; index++) {
22
+ if (counters[index] === 0) {
23
+ counters[index] = 1;
24
+ }
25
+ }
26
+ counters[level - 1] += 1;
27
+ for (var _index = level; _index < MAX_HEADING_LEVEL; _index++) {
28
+ counters[_index] = 0;
29
+ }
30
+ return counters.slice(0, level).join('.');
31
+ });
32
+ };
@@ -2,6 +2,7 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import { JSONTransformer } from '@atlaskit/editor-json-transformer/JSONTransformer-2';
4
4
  import { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
5
+ import { fg } from '@atlaskit/platform-feature-flags/fg';
5
6
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '../../analytics';
6
7
  var transformer = new JSONTransformer();
7
8
  export function toJSON(node) {
@@ -62,6 +63,11 @@ export function returnDocumentRequest(editorView, callback, transformer, fireAna
62
63
  doc = _ref.doc,
63
64
  schema = _ref.schema;
64
65
  if (!doc || !schema) {
66
+ if (fg('platform_editor_resolve_missing_document_request')) {
67
+ // Notify callers that no document is available.
68
+ // Async requests rely on this callback to settle their promise.
69
+ callback(undefined);
70
+ }
65
71
  return undefined;
66
72
  }
67
73
  try {
@@ -201,6 +201,14 @@ export var TEXT_STYLES_MENU_SECTION = {
201
201
  key: 'text-styles-menu-section',
202
202
  type: 'menu-section'
203
203
  };
204
+ export var NUMBERED_HEADINGS_MENU_SECTION = {
205
+ key: 'numbered-headings-menu-section',
206
+ type: 'menu-section'
207
+ };
208
+ export var NUMBERED_HEADINGS_MENU_ITEM = {
209
+ key: 'numbered-headings-menu-item',
210
+ type: 'menu-item'
211
+ };
204
212
  export var NORMAL_TEXT_MENU_ITEM = {
205
213
  key: 'normal-text-menu-item',
206
214
  type: 'menu-item'
@@ -2,7 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  var _TOOLBAR_RANK;
3
3
  /* eslint-disable @atlaskit/volt-strict-mode/no-multiple-exports */
4
4
 
5
- import { AI_PASTE_MENU_SECTION, AI_SECTION, APPS_SECTION, COLLAB_SECTION, IMPROVE_WRITING_GROUP, IMPROVE_WRITING_BUTTON, HERO_PROMPT_BUTTON_GROUP, HERO_PROMPT_BUTTON, HERO_PROMPT_MENU_ITEM, LINKING_SECTION, OVERFLOW_SECTION, ROVO_GROUP, ROVO_HERO_BUTTON, ROVO_MENU, TEXT_SECTION, MAKE_SHORTER_MENU_ITEM, MAKE_LONGER_MENU_ITEM, SPELLING_AND_GRAMMAR_MENU_ITEM, CHANGE_TONE_NESTED_MENU, CHANGE_TONE_MENU_SECTION, MORE_PROFESSIONAL_MENU_ITEM, MORE_CASUAL_MENU_ITEM, MORE_EMPATHETIC_MENU_ITEM, TRANSLATE_NESTED_MENU, COMMENT_GROUP, COMMENT_HERO_BUTTON, ROVO_PROMPT_MENU_SECTION, TRANSLATE_MENU_SECTION, TEXT_FORMATTING_GROUP, TEXT_FORMATTING_HERO_BUTTON, TEXT_FORMATTING_HERO_BUTTON_COLLAPSED, BOLD_BUTTON_GROUP, UNDERLINE_BUTTON_GROUP, TEXT_FORMATTING_MENU, TEXT_FORMATTING_MENU_SECTION, TEXT_STYLES_GROUP, TEXT_STYLES_MENU, TEXT_STYLES_MENU_SECTION, NORMAL_TEXT_MENU_ITEM, SMALL_TEXT_MENU_ITEM, HEADING_1_MENU_ITEM, HEADING_2_MENU_ITEM, HEADING_3_MENU_ITEM, HEADING_4_MENU_ITEM, HEADING_5_MENU_ITEM, HEADING_6_MENU_ITEM, BLOCK_QUOTE_MENU_ITEM, UNDERLINE_MENU_ITEM, ITALIC_MENU_ITEM, STRIKE_MENU_ITEM, BOLD_MENU_ITEM, CODE_MENU_ITEM, SUBSCRIPT_MENU_ITEM, SUPERSCRIPT_MENU_ITEM, CLEAR_FORMARTTING_MENU_SECTION, CLEAR_FORMATTING_MENU_ITEM, TEXT_COLOR_HIGHLIGHT_GROUP, TEXT_COLOR_MENU_ITEM, HIGHLIGHT_MENU_ITEM, CLEAR_COLOR_MENU_ITEM, COLOR_ACCESSIBILITY_MENU_ITEM, TEXT_COLOR_HIGHLIGHT_MENU, TEXT_COLOR_HIGHLIGHT_MENU_SECTION, PIN_MENU_ITEM, PIN_MENU_SECTION, OVERFLOW_MENU, OVERFLOW_GROUP, LINKING_GROUP, LINKING_BUTTON, ALIGNMENT_MENU, ALIGNMENT_GROUP, ALIGNMENT_MENU_SECTION, ALIGN_LEFT_MENU_ITEM, ALIGN_CENTER_MENU_ITEM, ALIGN_RIGHT_MENU_ITEM, LISTS_INDENTATION_GROUP, BULLETED_LIST_BUTTON, LISTS_INDENTATION_HERO_BUTTON, LISTS_INDENTATION_MENU, LISTS_INDENTATION_MENU_SECTION, NUMBERED_LIST_MENU_ITEM, BULLETED_LIST_MENU_ITEM, TASK_LIST_MENU_ITEM, OUTDENT_MENU_ITEM, INDENT_MENU_ITEM, TASK_LIST_GROUP, MEDIA_GROUP, MENTION_GROUP, LAYOUT_GROUP, TABLE_GROUP, EMOJI_GROUP, INSERT_BLOCK_SECTION, TASK_LIST_BUTTON, MEDIA_BUTTON, MENTION_BUTTON, EMOJI_BUTTON, LAYOUT_BUTTON, TABLE_BUTTON, TABLE_SIZE_PICKER, INSERT_GROUP, INSERT_BUTTON, TRACK_CHANGES_SECTION, UNDO_BUTTON, REDO_BUTTON, TRACK_CHANGES_BUTTON, UNDO_CHANGES_GROUP, REDO_CHANGES_GROUP, TRACK_CHANGES_GROUP, PIN_SECTION, PIN_BUTTON, PIN_GROUP, LOOM_MENU_SECTION, LOOM_MENU_ITEM, OVERFLOW_SECTION_PRIMARY_TOOLBAR, OVERFLOW_GROUP_PRIMARY_TOOLBAR, OVERFLOW_MENU_PRIMARY_TOOLBAR, TEXT_SECTION_COLLAPSED, TEXT_COLLAPSED_GROUP, TEXT_COLLAPSED_MENU, SELECTION_EXTENSION_MENU_SECTION, DEFINE_MENU_ITEM, DEFINE_BUTTON, DEFINE_GROUP, AI_VIEW_SECTION, LISTS_INDENTATION_HERO_BUTTON_COLLAPSED, BULLETED_LIST_BUTTON_GROUP, CODE_BLOCK_BUTTON, CODE_BLOCK_GROUP, IMPROVE_WRITING_MENU_ITEM, ROVO_MENU_DISPLAY_SMALL, ROVO_PROMPT_MENU_SECTION_DISPLAY_SMALL, ROVO_GROUP_DISPLAY_SMALL, ROVO_GROUP_PRIMARY_TOOLBAR, ROVO_WRITE_BUTTON_PRIMARY_TOOLBAR, SYNCED_BLOCK_GROUP, SYNCED_BLOCK_SECTION, SYNCED_BLOCK_BUTTON, ADD_POLISH_MENU_ITEM, AI_SUGGESTIONS_GROUP, AI_SUGGESTIONS_BUTTON, OVERFLOW_EXTENSIONS_MENU_SECTION, FIRST_PARTY_EXTENSIONS_MENU_ITEM, EXTERNAL_EXTENSIONS_MENU_ITEM, PASTE_MENU_SECTION, PASTE_NESTED_MENU, PASTE_MENU_NESTED_SECTION, PASTE_RICH_TEXT_MENU_ITEM, PASTE_MARKDOWN_MENU_ITEM, PASTE_PLAIN_TEXT_MENU_ITEM, VIEW_MODE_TOGGLE_SECTION } from './keys';
5
+ import { AI_PASTE_MENU_SECTION, AI_SECTION, APPS_SECTION, COLLAB_SECTION, IMPROVE_WRITING_GROUP, IMPROVE_WRITING_BUTTON, HERO_PROMPT_BUTTON_GROUP, HERO_PROMPT_BUTTON, HERO_PROMPT_MENU_ITEM, LINKING_SECTION, OVERFLOW_SECTION, ROVO_GROUP, ROVO_HERO_BUTTON, ROVO_MENU, TEXT_SECTION, MAKE_SHORTER_MENU_ITEM, MAKE_LONGER_MENU_ITEM, SPELLING_AND_GRAMMAR_MENU_ITEM, CHANGE_TONE_NESTED_MENU, CHANGE_TONE_MENU_SECTION, MORE_PROFESSIONAL_MENU_ITEM, MORE_CASUAL_MENU_ITEM, MORE_EMPATHETIC_MENU_ITEM, TRANSLATE_NESTED_MENU, COMMENT_GROUP, COMMENT_HERO_BUTTON, ROVO_PROMPT_MENU_SECTION, TRANSLATE_MENU_SECTION, TEXT_FORMATTING_GROUP, TEXT_FORMATTING_HERO_BUTTON, TEXT_FORMATTING_HERO_BUTTON_COLLAPSED, BOLD_BUTTON_GROUP, UNDERLINE_BUTTON_GROUP, TEXT_FORMATTING_MENU, TEXT_FORMATTING_MENU_SECTION, TEXT_STYLES_GROUP, TEXT_STYLES_MENU, TEXT_STYLES_MENU_SECTION, NUMBERED_HEADINGS_MENU_SECTION, NUMBERED_HEADINGS_MENU_ITEM, NORMAL_TEXT_MENU_ITEM, SMALL_TEXT_MENU_ITEM, HEADING_1_MENU_ITEM, HEADING_2_MENU_ITEM, HEADING_3_MENU_ITEM, HEADING_4_MENU_ITEM, HEADING_5_MENU_ITEM, HEADING_6_MENU_ITEM, BLOCK_QUOTE_MENU_ITEM, UNDERLINE_MENU_ITEM, ITALIC_MENU_ITEM, STRIKE_MENU_ITEM, BOLD_MENU_ITEM, CODE_MENU_ITEM, SUBSCRIPT_MENU_ITEM, SUPERSCRIPT_MENU_ITEM, CLEAR_FORMARTTING_MENU_SECTION, CLEAR_FORMATTING_MENU_ITEM, TEXT_COLOR_HIGHLIGHT_GROUP, TEXT_COLOR_MENU_ITEM, HIGHLIGHT_MENU_ITEM, CLEAR_COLOR_MENU_ITEM, COLOR_ACCESSIBILITY_MENU_ITEM, TEXT_COLOR_HIGHLIGHT_MENU, TEXT_COLOR_HIGHLIGHT_MENU_SECTION, PIN_MENU_ITEM, PIN_MENU_SECTION, OVERFLOW_MENU, OVERFLOW_GROUP, LINKING_GROUP, LINKING_BUTTON, ALIGNMENT_MENU, ALIGNMENT_GROUP, ALIGNMENT_MENU_SECTION, ALIGN_LEFT_MENU_ITEM, ALIGN_CENTER_MENU_ITEM, ALIGN_RIGHT_MENU_ITEM, LISTS_INDENTATION_GROUP, BULLETED_LIST_BUTTON, LISTS_INDENTATION_HERO_BUTTON, LISTS_INDENTATION_MENU, LISTS_INDENTATION_MENU_SECTION, NUMBERED_LIST_MENU_ITEM, BULLETED_LIST_MENU_ITEM, TASK_LIST_MENU_ITEM, OUTDENT_MENU_ITEM, INDENT_MENU_ITEM, TASK_LIST_GROUP, MEDIA_GROUP, MENTION_GROUP, LAYOUT_GROUP, TABLE_GROUP, EMOJI_GROUP, INSERT_BLOCK_SECTION, TASK_LIST_BUTTON, MEDIA_BUTTON, MENTION_BUTTON, EMOJI_BUTTON, LAYOUT_BUTTON, TABLE_BUTTON, TABLE_SIZE_PICKER, INSERT_GROUP, INSERT_BUTTON, TRACK_CHANGES_SECTION, UNDO_BUTTON, REDO_BUTTON, TRACK_CHANGES_BUTTON, UNDO_CHANGES_GROUP, REDO_CHANGES_GROUP, TRACK_CHANGES_GROUP, PIN_SECTION, PIN_BUTTON, PIN_GROUP, LOOM_MENU_SECTION, LOOM_MENU_ITEM, OVERFLOW_SECTION_PRIMARY_TOOLBAR, OVERFLOW_GROUP_PRIMARY_TOOLBAR, OVERFLOW_MENU_PRIMARY_TOOLBAR, TEXT_SECTION_COLLAPSED, TEXT_COLLAPSED_GROUP, TEXT_COLLAPSED_MENU, SELECTION_EXTENSION_MENU_SECTION, DEFINE_MENU_ITEM, DEFINE_BUTTON, DEFINE_GROUP, AI_VIEW_SECTION, LISTS_INDENTATION_HERO_BUTTON_COLLAPSED, BULLETED_LIST_BUTTON_GROUP, CODE_BLOCK_BUTTON, CODE_BLOCK_GROUP, IMPROVE_WRITING_MENU_ITEM, ROVO_MENU_DISPLAY_SMALL, ROVO_PROMPT_MENU_SECTION_DISPLAY_SMALL, ROVO_GROUP_DISPLAY_SMALL, ROVO_GROUP_PRIMARY_TOOLBAR, ROVO_WRITE_BUTTON_PRIMARY_TOOLBAR, SYNCED_BLOCK_GROUP, SYNCED_BLOCK_SECTION, SYNCED_BLOCK_BUTTON, ADD_POLISH_MENU_ITEM, AI_SUGGESTIONS_GROUP, AI_SUGGESTIONS_BUTTON, OVERFLOW_EXTENSIONS_MENU_SECTION, FIRST_PARTY_EXTENSIONS_MENU_ITEM, EXTERNAL_EXTENSIONS_MENU_ITEM, PASTE_MENU_SECTION, PASTE_NESTED_MENU, PASTE_MENU_NESTED_SECTION, PASTE_RICH_TEXT_MENU_ITEM, PASTE_MARKDOWN_MENU_ITEM, PASTE_PLAIN_TEXT_MENU_ITEM, VIEW_MODE_TOGGLE_SECTION } from './keys';
6
6
  export var TOOLBAR_RANK = (_TOOLBAR_RANK = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_TOOLBAR_RANK, AI_SECTION.key, 100), AI_VIEW_SECTION.key, 100), TEXT_SECTION.key, 200), TEXT_SECTION_COLLAPSED.key, 200), INSERT_BLOCK_SECTION.key, 300), LINKING_SECTION.key, 400), COLLAB_SECTION.key, 500), APPS_SECTION.key, 600), TRACK_CHANGES_SECTION.key, 700), OVERFLOW_SECTION.key, 800), _defineProperty(_defineProperty(_defineProperty(_TOOLBAR_RANK, PIN_SECTION.key, 900), VIEW_MODE_TOGGLE_SECTION.key, 950), OVERFLOW_SECTION_PRIMARY_TOOLBAR.key, 1000));
7
7
 
8
8
  /**
@@ -28,13 +28,14 @@ export var TEXT_SECTION_RANK = _defineProperty(_defineProperty(_defineProperty(_
28
28
  export var TEXT_SECTION_PRIMARY_TOOLBAR_RANK = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, TEXT_STYLES_GROUP.key, 100), BOLD_BUTTON_GROUP.key, 200), UNDERLINE_BUTTON_GROUP.key, 300), TEXT_FORMATTING_GROUP.key, 400), BULLETED_LIST_BUTTON_GROUP.key, 500), LISTS_INDENTATION_GROUP.key, 600), ALIGNMENT_GROUP.key, 700), TEXT_COLOR_HIGHLIGHT_GROUP.key, 800);
29
29
  export var TEXT_SECTION_COLLAPSED_RANK = _defineProperty({}, TEXT_COLLAPSED_GROUP.key, 100);
30
30
  export var TEXT_COLLAPSED_GROUP_RANK = _defineProperty({}, TEXT_COLLAPSED_MENU.key, 100);
31
- export var TEXT_COLLAPSED_MENU_RANK = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, TEXT_STYLES_MENU_SECTION.key, 100), TEXT_FORMATTING_MENU_SECTION.key, 200), CLEAR_FORMARTTING_MENU_SECTION.key, 300), LISTS_INDENTATION_MENU_SECTION.key, 400), ALIGNMENT_MENU_SECTION.key, 500), TEXT_COLOR_HIGHLIGHT_MENU_SECTION.key, 600);
31
+ export var TEXT_COLLAPSED_MENU_RANK = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, TEXT_STYLES_MENU_SECTION.key, 100), NUMBERED_HEADINGS_MENU_SECTION.key, 150), TEXT_FORMATTING_MENU_SECTION.key, 200), CLEAR_FORMARTTING_MENU_SECTION.key, 300), LISTS_INDENTATION_MENU_SECTION.key, 400), ALIGNMENT_MENU_SECTION.key, 500), TEXT_COLOR_HIGHLIGHT_MENU_SECTION.key, 600);
32
32
 
33
33
  /**
34
34
  * Text styles group
35
35
  */
36
36
  export var TEXT_STYLES_GROUP_RANK = _defineProperty({}, TEXT_STYLES_MENU.key, 100);
37
- export var TEXT_STYLES_MENU_RANK = _defineProperty({}, TEXT_STYLES_MENU_SECTION.key, 100);
37
+ export var TEXT_STYLES_MENU_RANK = _defineProperty(_defineProperty({}, TEXT_STYLES_MENU_SECTION.key, 100), NUMBERED_HEADINGS_MENU_SECTION.key, 200);
38
+ export var NUMBERED_HEADINGS_MENU_SECTION_RANK = _defineProperty({}, NUMBERED_HEADINGS_MENU_ITEM.key, 100);
38
39
  export var TEXT_STYLES_MENU_SECTION_RANK = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, NORMAL_TEXT_MENU_ITEM.key, 100), SMALL_TEXT_MENU_ITEM.key, 150), HEADING_1_MENU_ITEM.key, 200), HEADING_2_MENU_ITEM.key, 300), HEADING_3_MENU_ITEM.key, 400), HEADING_4_MENU_ITEM.key, 500), HEADING_5_MENU_ITEM.key, 600), HEADING_6_MENU_ITEM.key, 700), BLOCK_QUOTE_MENU_ITEM.key, 800);
39
40
 
40
41
  /**
@@ -14,24 +14,15 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
14
14
  import { Component } from 'react';
15
15
 
16
16
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
17
- import { css, jsx, keyframes } from '@emotion/react';
17
+ import { css, jsx } from '@emotion/react';
18
18
  import createAndFireEvent from '@atlaskit/analytics-next/createAndFireEvents';
19
19
  import withAnalyticsContext from '@atlaskit/analytics-next/withAnalyticsContext';
20
20
  import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
21
- import { fg } from '@atlaskit/platform-feature-flags/fg';
22
21
  import Layer from '../Layer';
23
22
  var packageName = "@atlaskit/editor-common";
24
- var packageVersion = "131.3.0";
23
+ var packageVersion = "131.5.0";
25
24
  var halfFocusRing = 1;
26
25
  var dropOffset = '0, 8';
27
- var fadeIn = keyframes({
28
- '0%': {
29
- opacity: 0
30
- },
31
- '100%': {
32
- opacity: 1
33
- }
34
- });
35
26
  // Ignored via go/ees005
36
27
  // eslint-disable-next-line @repo/internal/react/no-class-components
37
28
  var DropList = /*#__PURE__*/function (_Component) {
@@ -58,11 +49,6 @@ var DropList = /*#__PURE__*/function (_Component) {
58
49
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
59
50
  boxSizing: _this.props.shouldFitContainer ? 'border-box' : undefined
60
51
  }));
61
- _defineProperty(_this, "motionStyles", css({
62
- animationName: "".concat(fadeIn),
63
- animationDuration: '360ms',
64
- animationTimingFunction: 'cubic-bezier(0.8, 0, 0, 1)'
65
- }));
66
52
  /* eslint-disable @atlaskit/design-system/ensure-design-token-usage */
67
53
  _defineProperty(_this, "menuWrapper", function () {
68
54
  return css({
@@ -180,7 +166,7 @@ var DropList = /*#__PURE__*/function (_Component) {
180
166
  role: "presentation"
181
167
  }, children) : null;
182
168
  return jsx("div", {
183
- css: [this.wrapperStyles, fg('p2m-drop-down-motion') && this.motionStyles],
169
+ css: this.wrapperStyles,
184
170
  ref: this.handleDroplistRef
185
171
  }, jsx(Layer, {
186
172
  content: layerContent,
@@ -188,7 +174,7 @@ var DropList = /*#__PURE__*/function (_Component) {
188
174
  position: position,
189
175
  onPositioned: onPositioned
190
176
  }, jsx("div", {
191
- css: [this.triggerStyles, fg('p2m-drop-down-motion') && this.motionStyles],
177
+ css: this.triggerStyles,
192
178
  ref: this.handleTriggerRef
193
179
  }, trigger)));
194
180
  }
@@ -1,7 +1,6 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import ResourcedEmoji from '@atlaskit/emoji/resourced-emoji';
3
- import { fg } from '@atlaskit/platform-feature-flags/fg';
4
- import { isSingleEmoji } from '../../utils/isSingleEmoji';
3
+ import { getEmojiCustomFallback } from '../../emoji/fallback';
5
4
  var EmojiNodeFunctional = function EmojiNodeFunctional(props) {
6
5
  var _resourceConfig$optim;
7
6
  var allowTextFallback = props.allowTextFallback,
@@ -22,7 +21,7 @@ var EmojiNodeFunctional = function EmojiNodeFunctional(props) {
22
21
  var emojiProviderResolver = useMemo(function () {
23
22
  return Promise.resolve(emojiProvider);
24
23
  }, [emojiProvider]);
25
- var customFallback = fg('platform_editor_custom_emoji_unicode_fallback') && !isSingleEmoji(fallback || shortName) ? "\uFFFD" : undefined;
24
+ var customFallback = getEmojiCustomFallback(fallback || shortName);
26
25
  if (allowTextFallback && !emojiProvider) {
27
26
  return /*#__PURE__*/React.createElement("span", {
28
27
  "data-emoji-id": id,
@@ -9,16 +9,12 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
9
9
  /* eslint-disable @repo/internal/react/no-class-components */
10
10
 
11
11
  import React, { PureComponent } from 'react';
12
- import { expVal } from '@atlaskit/platform-feature-experiments/exp-val';
13
12
  import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
14
13
  import { fg } from '@atlaskit/platform-feature-flags/fg';
14
+ import { isMentionAvatarEnabled } from '../../mention-avatar';
15
15
  import { ProviderFactory, WithProviders } from '../../provider-factory';
16
16
  import { MissingMentionAvatarProvider, MentionWithAvatarProviders, MentionWithProviders } from './mention-with-providers';
17
17
  var MENTION_PROVIDERS = ['mentionProvider', 'profilecardProvider'];
18
- var GENERIC_MENTION_IDS = ['HipChat', 'all', 'here'];
19
- var isAgentMentionUserType = function isAgentMentionUserType(userType) {
20
- return userType === 'APP' || userType === 'AGENT';
21
- };
22
18
  var Mention = /*#__PURE__*/function (_PureComponent) {
23
19
  function Mention(props) {
24
20
  var _this;
@@ -39,8 +35,12 @@ var Mention = /*#__PURE__*/function (_PureComponent) {
39
35
  profilecardProvider = providers.profilecardProvider;
40
36
  var hasProvider = Boolean(mentionNodeDataProvider);
41
37
  var canReportMissingProvider = !hasProvider && fg('platform_editor_mention_avatar_observability');
42
- var cohort = expVal('convo_ai_entity_hover_cards_non_hello_exp', 'hover_card_cohort', 'control');
43
- var isAvatarEnabled = (hasProvider || canReportMissingProvider) && userType !== 'SPECIAL' && !GENERIC_MENTION_IDS.includes(id) && (cohort === 'person' || cohort === 'all' || isExperimentEnabled('platform_editor_mention_node_avatar') || isExperimentEnabled('platform_editor_mention_node_graphql_provider') || isAgentMentionUserType(userType) && isExperimentEnabled('platform_editor_drop3_hexagon_agent_avatar'));
38
+ var isAvatarEnabled = isMentionAvatarEnabled({
39
+ id: id,
40
+ userType: userType,
41
+ hasProvider: hasProvider,
42
+ canReportMissingProvider: canReportMissingProvider
43
+ });
44
44
  if (isAvatarEnabled && mentionNodeDataProvider) {
45
45
  return /*#__PURE__*/React.createElement(MentionWithAvatarProviders, {
46
46
  id: id,
@@ -264,6 +264,11 @@ export declare const aiMessages: {
264
264
  description: string;
265
265
  id: string;
266
266
  };
267
+ smartlinkResolutionErrorDescription: {
268
+ defaultMessage: string;
269
+ description: string;
270
+ id: string;
271
+ };
267
272
  smartlinkSummarizeChanges: {
268
273
  defaultMessage: string;
269
274
  description: string;
@@ -330,6 +330,7 @@ export declare enum ACTION_SUBJECT {
330
330
  MENTION = "mention",
331
331
  MENTION_TYPEAHEAD = "mentionTypeahead",
332
332
  NESTED_EXPAND = "nestedExpand",
333
+ NUMBERED_HEADINGS = "numberedHeadings",
333
334
  PANEL = "panel",
334
335
  PICKER = "picker",
335
336
  PLUS_MENU = "plusMenu",
@@ -50,6 +50,7 @@ import type { MoveContentEventPayload } from './move-content-events';
50
50
  import type { NativeEmbedResizeErroredAEP } from './native-embed-events';
51
51
  import type { NestedTableActionsEventPayload } from './nested-table-events';
52
52
  import type { NodeEventPayload } from './node-events';
53
+ import type { NumberedHeadingsEventPayload } from './numbered-headings-events';
53
54
  import type { OfflineEditingEventPayload } from './offline-editing-event';
54
55
  import type { PasteActionsMenuEventPayload, PasteEventPayload } from './paste-events';
55
56
  import type { QuickInsertInformationEventPayload, QuickInsertSearchOutcomeEventPayload } from './quick-insert-events';
@@ -73,7 +74,7 @@ export type SimplifiedNode = {
73
74
  pos: number;
74
75
  type: string;
75
76
  };
76
- export type AnalyticsEventPayload<T = void> = AvatarEventPayload | GeneralEventPayload<T> | FormatEventPayload | SubstituteEventPayload | InsertEventPayload | NodeEventPayload | MoveContentEventPayload | MediaEventPayload | TableEventPayload | PasteEventPayload | PasteActionsMenuEventPayload | QuickInsertInformationEventPayload | QuickInsertSearchOutcomeEventPayload | CutCopyEventPayload | ErrorEventPayload | TextColorEventPayload | FindReplaceEventPayload | DateEventPayload | SelectionEventPayload | ListEventPayload | ConfigPanelEventPayload | ElementBrowserEventPayload | CreateLinkInlineDialogEventPayload | HighlightActionsEventPayload | UnsupportedContentPayload | ExtensionEventPayload | TypeAheadPayload | UnlinkToolbarAEP | EditLinkToolbarAEP | PreviewItemClickedAEP | OpenLinkToolbarAEP | OpenSettingsToolbarAEP | CustomPanelEventPayload | FeatureExposureAEP | NewCollabSyncUpErrorAEP | UnsupportedContentTooltipPayload | ReferentialityEventPayload | LoomEventPayload | MBEEventPayload | HighlightEventPayload | DatasourceClickedPayload | ElementEventPayload | VisitedLinkAEP | ViewEventPayload | MediaUploadEventPayload | MentionEventPayload | EngagementPlatformEventPayload | NestedTableActionsEventPayload | ContainerNodeActionsEventPayload | AICommandPaletteEventPayload | AIDefinitionsEventPayload | AIEventPayload | AIStreamingEventPayload | AIProactiveEventPayload | AiAutocompleteEventPayload | AiSuggestionsEventPayload | ContextualTypeaheadEventPayload | AIQuickPromptEventPayload | AIUnifiedEventPayload | BreakoutEventPayload | BlockMenuEventPayload | ActiveSessionEventPayload | AIInlineSuggestionPayload | SelectionExtensionEventPayload | TelepointerClickPayload | SelectionToolbarEventPayload | ExperienceEventPayload | AlignmentEventPayload | UndoRedoAEP | OfflineEditingEventPayload | AgentEditShimmerNotShownAEP | FloatingToolbarOverflowEventPayload | SyncBlockEventPayload | FloatingToolbarEventPayload;
77
+ export type AnalyticsEventPayload<T = void> = AvatarEventPayload | GeneralEventPayload<T> | FormatEventPayload | SubstituteEventPayload | InsertEventPayload | NodeEventPayload | MoveContentEventPayload | MediaEventPayload | TableEventPayload | PasteEventPayload | PasteActionsMenuEventPayload | QuickInsertInformationEventPayload | QuickInsertSearchOutcomeEventPayload | CutCopyEventPayload | ErrorEventPayload | TextColorEventPayload | FindReplaceEventPayload | DateEventPayload | SelectionEventPayload | ListEventPayload | ConfigPanelEventPayload | ElementBrowserEventPayload | CreateLinkInlineDialogEventPayload | HighlightActionsEventPayload | UnsupportedContentPayload | ExtensionEventPayload | TypeAheadPayload | UnlinkToolbarAEP | EditLinkToolbarAEP | PreviewItemClickedAEP | OpenLinkToolbarAEP | OpenSettingsToolbarAEP | CustomPanelEventPayload | FeatureExposureAEP | NewCollabSyncUpErrorAEP | UnsupportedContentTooltipPayload | ReferentialityEventPayload | LoomEventPayload | MBEEventPayload | HighlightEventPayload | DatasourceClickedPayload | ElementEventPayload | VisitedLinkAEP | ViewEventPayload | MediaUploadEventPayload | MentionEventPayload | EngagementPlatformEventPayload | NestedTableActionsEventPayload | ContainerNodeActionsEventPayload | AICommandPaletteEventPayload | AIDefinitionsEventPayload | AIEventPayload | AIStreamingEventPayload | AIProactiveEventPayload | AiAutocompleteEventPayload | AiSuggestionsEventPayload | ContextualTypeaheadEventPayload | AIQuickPromptEventPayload | AIUnifiedEventPayload | BreakoutEventPayload | BlockMenuEventPayload | ActiveSessionEventPayload | AIInlineSuggestionPayload | SelectionExtensionEventPayload | TelepointerClickPayload | SelectionToolbarEventPayload | ExperienceEventPayload | AlignmentEventPayload | UndoRedoAEP | OfflineEditingEventPayload | AgentEditShimmerNotShownAEP | FloatingToolbarOverflowEventPayload | SyncBlockEventPayload | NumberedHeadingsEventPayload | FloatingToolbarEventPayload;
77
78
  type CustomPanelEventPayload = TrackAEP<ACTION.CHANGED_BACKGROUND_COLOR | ACTION.CHANGED_ICON | ACTION.REMOVE_ICON, ACTION_SUBJECT.PANEL, ACTION_SUBJECT_ID.PANEL, {
78
79
  newColor: string;
79
80
  previousColor: string;