@atlaskit/editor-common 116.10.0 → 116.11.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,51 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 116.11.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`b483e293da76f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/b483e293da76f) -
8
+ Add a gated `isSuggested` attribute to block menu element transformed analytics events so
9
+ suggested and non-suggested transform selections can be distinguished. The event attribute is
10
+ gated behind the `platform_editor_blocks_patch_2` feature gate.
11
+ - [`dbf22f118dd9e`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/dbf22f118dd9e) -
12
+ Rewrite Rovo Chat @-mention provider on a single Relay-native RovoChatMentionResource that fires
13
+ people + agents in parallel via Promise. People render as soon as URS resolves and agents pop in
14
+ below when ready. New aliased agentStudio_getAgents query consolidates 3 prefetch round trips into
15
+ 1, drops over-fetched fields, and uses real abort plumbing. Adds opt-in subscribeToItemsUpdates
16
+ multi-emit contract to the editor mention typeahead so progressive emissions are no longer dropped
17
+ after the first frame.
18
+ - [`77f3d60237123`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/77f3d60237123) -
19
+ Add a live word count next to the line count in the markdown source view footer
20
+ - [`59f92f7b6fbac`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/59f92f7b6fbac) -
21
+ EDITOR-7095: Use shorter tooltip for padlock
22
+
23
+ ### Patch Changes
24
+
25
+ - [`ee28cf33718b0`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ee28cf33718b0) -
26
+ Add @atlassian/react-compiler-gating as a runtime dependency to enable React Compiler platform
27
+ gating.
28
+ - [`64a0b50380570`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/64a0b50380570) - -
29
+ Improve TypeScript auto-detection for class fields and typed arrow function params/return types.
30
+ - Avoid unnecessary code block node updates when auto-detection re-detects the same language.
31
+ - Prevent wrap toggles from scrolling long code blocks to the top.
32
+ - Keep the language picker placement stable while it is open.
33
+ - Reset language picker search state on reopen so recent selections are not reported as search
34
+ selections.
35
+ - Prevent language picker close/selection from scrolling partially visible code blocks while
36
+ restoring editor focus.
37
+ - Add auto-detection analytics metadata to distinguish initial detection from re-detection.
38
+ - Updated dependencies
39
+
40
+ ## 116.10.1
41
+
42
+ ### Patch Changes
43
+
44
+ - [`e108322f4ea71`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/e108322f4ea71) -
45
+ Add emoji tooltip on hover using VanillaTooltip behind platform_editor_emoji_hover_show_tooltip
46
+ experiment
47
+ - Updated dependencies
48
+
3
49
  ## 116.10.0
4
50
 
5
51
  ### Minor Changes
@@ -184,6 +184,9 @@
184
184
  {
185
185
  "path": "../../../design-system/width-detector/afm-cc/tsconfig.json"
186
186
  },
187
+ {
188
+ "path": "../../../react-compiler/react-compiler-gating/afm-cc/tsconfig.json"
189
+ },
187
190
  {
188
191
  "path": "../../../media/media-core/afm-cc/tsconfig.json"
189
192
  }
@@ -184,6 +184,9 @@
184
184
  {
185
185
  "path": "../../../design-system/width-detector/afm-products/tsconfig.json"
186
186
  },
187
+ {
188
+ "path": "../../../react-compiler/react-compiler-gating/afm-products/tsconfig.json"
189
+ },
187
190
  {
188
191
  "path": "../../../media/media-core/afm-products/tsconfig.json"
189
192
  }
@@ -121,9 +121,9 @@ var aiSuggestionsMessages = exports.aiSuggestionsMessages = (0, _reactIntl.defin
121
121
  defaultMessage: 'Private',
122
122
  description: 'Label for the private/lock indicator on the AI suggestions card'
123
123
  },
124
- cardPrivateTooltipLabel: {
125
- id: 'fabric.editor.ai.suggestions.card.privateTooltipLabel.non-final',
126
- defaultMessage: 'Only you and those with access to the sources can see this private suggestion.',
124
+ cardPrivateTooltipLabelShort: {
125
+ id: 'fabric.editor.ai.suggestions.card.privateTooltipLabelShort.non-final',
126
+ defaultMessage: 'Visible only to you',
127
127
  description: 'Tooltip shown on the private indicator icon in the AI suggestions card'
128
128
  },
129
129
  cardSourcesButtonLabel: {
@@ -28,7 +28,7 @@ var NETWORK_FAILURE_REGEX = /^network failure/i;
28
28
  var RESIZE_OBSERVER_LOOP_REGEX = /ResizeObserver loop completed with undelivered notifications/;
29
29
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
30
30
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
31
- var packageVersion = "116.9.1";
31
+ var packageVersion = "116.10.1";
32
32
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
33
33
  // Remove URL as it has UGC
34
34
  // Ignored via go/ees007
@@ -24,7 +24,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
24
24
  * @jsx jsx
25
25
  */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
26
26
  var packageName = "@atlaskit/editor-common";
27
- var packageVersion = "116.9.1";
27
+ var packageVersion = "116.10.1";
28
28
  var halfFocusRing = 1;
29
29
  var dropOffset = '0, 8';
30
30
  var fadeIn = (0, _react2.keyframes)({
@@ -43,6 +43,13 @@ var VanillaTooltip = exports.VanillaTooltip = /*#__PURE__*/function () {
43
43
  className) {
44
44
  var _this = this;
45
45
  var timeout = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 300;
46
+ var
47
+ /**
48
+ * Optional inline styles to apply directly to the tooltip element.
49
+ * Useful when the tooltip is rendered in the browser's top layer (via Popover API),
50
+ * where ancestor CSS selectors cannot reach it.
51
+ */
52
+ styles = arguments.length > 5 ? arguments[5] : undefined;
46
53
  (0, _classCallCheck2.default)(this, VanillaTooltip);
47
54
  (0, _defineProperty2.default)(this, "listeners", []);
48
55
  (0, _defineProperty2.default)(this, "shouldHidePopover", false);
@@ -55,6 +62,9 @@ var VanillaTooltip = exports.VanillaTooltip = /*#__PURE__*/function () {
55
62
  tooltip.className = className;
56
63
  tooltip.id = id;
57
64
  tooltip.textContent = content;
65
+ if (styles) {
66
+ Object.assign(tooltip.style, styles);
67
+ }
58
68
  this.tooltip = tooltip;
59
69
 
60
70
  // Button preparation
@@ -115,9 +115,9 @@ export const aiSuggestionsMessages = defineMessages({
115
115
  defaultMessage: 'Private',
116
116
  description: 'Label for the private/lock indicator on the AI suggestions card'
117
117
  },
118
- cardPrivateTooltipLabel: {
119
- id: 'fabric.editor.ai.suggestions.card.privateTooltipLabel.non-final',
120
- defaultMessage: 'Only you and those with access to the sources can see this private suggestion.',
118
+ cardPrivateTooltipLabelShort: {
119
+ id: 'fabric.editor.ai.suggestions.card.privateTooltipLabelShort.non-final',
120
+ defaultMessage: 'Visible only to you',
121
121
  description: 'Tooltip shown on the private indicator icon in the AI suggestions card'
122
122
  },
123
123
  cardSourcesButtonLabel: {
@@ -14,7 +14,7 @@ const NETWORK_FAILURE_REGEX = /^network failure/i;
14
14
  const RESIZE_OBSERVER_LOOP_REGEX = /ResizeObserver loop completed with undelivered notifications/;
15
15
  const SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
16
16
  const packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
17
- const packageVersion = "116.9.1";
17
+ const packageVersion = "116.10.1";
18
18
  const sanitiseSentryEvents = (data, _hint) => {
19
19
  // Remove URL as it has UGC
20
20
  // Ignored via go/ees007
@@ -14,7 +14,7 @@ import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
14
14
  import { fg } from '@atlaskit/platform-feature-flags';
15
15
  import Layer from '../Layer';
16
16
  const packageName = "@atlaskit/editor-common";
17
- const packageVersion = "116.9.1";
17
+ const packageVersion = "116.10.1";
18
18
  const halfFocusRing = 1;
19
19
  const dropOffset = '0, 8';
20
20
  const fadeIn = keyframes({
@@ -29,7 +29,13 @@ export class VanillaTooltip {
29
29
  /**
30
30
  * Class Name – used for styling.
31
31
  */
32
- className, timeout = 300) {
32
+ className, timeout = 300,
33
+ /**
34
+ * Optional inline styles to apply directly to the tooltip element.
35
+ * Useful when the tooltip is rendered in the browser's top layer (via Popover API),
36
+ * where ancestor CSS selectors cannot reach it.
37
+ */
38
+ styles) {
33
39
  _defineProperty(this, "listeners", []);
34
40
  _defineProperty(this, "shouldHidePopover", false);
35
41
  _defineProperty(this, "isDisplayed", false);
@@ -41,6 +47,9 @@ export class VanillaTooltip {
41
47
  tooltip.className = className;
42
48
  tooltip.id = id;
43
49
  tooltip.textContent = content;
50
+ if (styles) {
51
+ Object.assign(tooltip.style, styles);
52
+ }
44
53
  this.tooltip = tooltip;
45
54
 
46
55
  // Button preparation
@@ -115,9 +115,9 @@ export var aiSuggestionsMessages = defineMessages({
115
115
  defaultMessage: 'Private',
116
116
  description: 'Label for the private/lock indicator on the AI suggestions card'
117
117
  },
118
- cardPrivateTooltipLabel: {
119
- id: 'fabric.editor.ai.suggestions.card.privateTooltipLabel.non-final',
120
- defaultMessage: 'Only you and those with access to the sources can see this private suggestion.',
118
+ cardPrivateTooltipLabelShort: {
119
+ id: 'fabric.editor.ai.suggestions.card.privateTooltipLabelShort.non-final',
120
+ defaultMessage: 'Visible only to you',
121
121
  description: 'Tooltip shown on the private indicator icon in the AI suggestions card'
122
122
  },
123
123
  cardSourcesButtonLabel: {
@@ -20,7 +20,7 @@ var NETWORK_FAILURE_REGEX = /^network failure/i;
20
20
  var RESIZE_OBSERVER_LOOP_REGEX = /ResizeObserver loop completed with undelivered notifications/;
21
21
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
22
22
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
23
- var packageVersion = "116.9.1";
23
+ var packageVersion = "116.10.1";
24
24
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
25
25
  // Remove URL as it has UGC
26
26
  // Ignored via go/ees007
@@ -21,7 +21,7 @@ import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
21
21
  import { fg } from '@atlaskit/platform-feature-flags';
22
22
  import Layer from '../Layer';
23
23
  var packageName = "@atlaskit/editor-common";
24
- var packageVersion = "116.9.1";
24
+ var packageVersion = "116.10.1";
25
25
  var halfFocusRing = 1;
26
26
  var dropOffset = '0, 8';
27
27
  var fadeIn = keyframes({
@@ -36,6 +36,13 @@ export var VanillaTooltip = /*#__PURE__*/function () {
36
36
  className) {
37
37
  var _this = this;
38
38
  var timeout = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 300;
39
+ var
40
+ /**
41
+ * Optional inline styles to apply directly to the tooltip element.
42
+ * Useful when the tooltip is rendered in the browser's top layer (via Popover API),
43
+ * where ancestor CSS selectors cannot reach it.
44
+ */
45
+ styles = arguments.length > 5 ? arguments[5] : undefined;
39
46
  _classCallCheck(this, VanillaTooltip);
40
47
  _defineProperty(this, "listeners", []);
41
48
  _defineProperty(this, "shouldHidePopover", false);
@@ -48,6 +55,9 @@ export var VanillaTooltip = /*#__PURE__*/function () {
48
55
  tooltip.className = className;
49
56
  tooltip.id = id;
50
57
  tooltip.textContent = content;
58
+ if (styles) {
59
+ Object.assign(tooltip.style, styles);
60
+ }
51
61
  this.tooltip = tooltip;
52
62
 
53
63
  // Button preparation
@@ -59,7 +59,7 @@ export declare const aiSuggestionsMessages: {
59
59
  description: string;
60
60
  id: string;
61
61
  };
62
- cardPrivateTooltipLabel: {
62
+ cardPrivateTooltipLabelShort: {
63
63
  defaultMessage: string;
64
64
  description: string;
65
65
  id: string;
@@ -37,6 +37,7 @@ interface ElementTransformAttr {
37
37
  inputMethod: INPUT_METHOD.BLOCK_MENU;
38
38
  isEmptyLine: boolean;
39
39
  isNested: boolean;
40
+ isSuggested?: boolean;
40
41
  outputNodesCount: number;
41
42
  sourceNodesCount: number;
42
43
  sourceNodesCountByType: Record<string, number>;
@@ -174,6 +174,7 @@ type CodeBlockLanguageSelectedAEP = TrackAEP<ACTION.LANGUAGE_SELECTED, ACTION_SU
174
174
  selectionSource?: 'all' | 'pinned' | 'recentlyUsed' | 'search';
175
175
  }, undefined>;
176
176
  type CodeBlockLanguageAutoDetectedAEP = TrackAEP<ACTION.LANGUAGE_AUTO_DETECTED, ACTION_SUBJECT.CODE_BLOCK, undefined, {
177
+ detectionPhase?: 'initial' | 'redetection';
177
178
  detectionResult: 'detected' | 'noneDetected';
178
179
  language: string;
179
180
  }, undefined>;
@@ -23,6 +23,7 @@ export type _MarkdownModePluginStateStub = {
23
23
  columnNumber: number;
24
24
  lineCount: number;
25
25
  lineNumber: number;
26
+ wordCount?: number;
26
27
  } | null;
27
28
  view: 'syntax' | 'split-view' | 'preview';
28
29
  wrapSourceCode: boolean;
@@ -59,6 +60,7 @@ export type _MarkdownModePluginStub = NextEditorPlugin<'markdownMode', {
59
60
  columnNumber: number;
60
61
  lineCount: number;
61
62
  lineNumber: number;
63
+ wordCount?: number;
62
64
  } | null) => void;
63
65
  setView: (view: 'syntax' | 'split-view' | 'preview') => void;
64
66
  setWrapSourceCode: (wrapSourceCode: boolean) => void;
@@ -75,6 +75,33 @@ export type TypeAheadSectionTitleUpdate = {
75
75
  title: string;
76
76
  };
77
77
  export type TypeAheadForceSelect = (props: TypeAheadForceSelectProps) => TypeAheadItem | undefined;
78
+ /**
79
+ * Multi-emit contract returned by `TypeAheadHandler.subscribeToItemsUpdates`.
80
+ *
81
+ * The runtime awaits `initial` to render the dropdown's first frame,
82
+ * then re-renders with whatever each `subscribe` callback delivers
83
+ * thereafter. The returned unsubscribe function is called when the
84
+ * query changes or the component unmounts.
85
+ */
86
+ export type TypeAheadItemsUpdate = {
87
+ initial: Promise<Array<TypeAheadItem>>;
88
+ /**
89
+ * Subscribe to incremental updates from this `TypeAheadItemsUpdate`.
90
+ *
91
+ * **Single-subscriber contract.** Implementations are NOT required
92
+ * to support multiple concurrent subscribers; calling `subscribe`
93
+ * twice on the same instance may silently overwrite the first
94
+ * callback. The runtime calls this once per filter cycle, and a
95
+ * fresh `TypeAheadItemsUpdate` is produced by
96
+ * `subscribeToItemsUpdates` for every query, so fan-out is never
97
+ * needed in practice.
98
+ *
99
+ * The returned function unsubscribes the callback and releases any
100
+ * underlying transport. The runtime calls it on query change or
101
+ * component unmount.
102
+ */
103
+ subscribe: (update: (items: Array<TypeAheadItem>) => void) => () => void;
104
+ };
78
105
  export type MoreOptionsButtonConfig = {
79
106
  ariaLabel?: string;
80
107
  iconBefore?: ReactNode;
@@ -119,6 +146,28 @@ export type TypeAheadHandler = {
119
146
  onOpen?: (editorState: EditorState) => void;
120
147
  /** Handler returns a transaction which inserts the TypeAheadItem into the doc */
121
148
  selectItem: TypeAheadSelectItem;
149
+ /**
150
+ * Optional opt-in to multi-emit. When implemented, the type-ahead
151
+ * runtime calls this INSTEAD of `getItems` and renders the dropdown
152
+ * progressively as updates arrive.
153
+ *
154
+ * Returns:
155
+ * - `initial`: a Promise that resolves with the first set of items
156
+ * to show. Replaces the single-shot `getItems` Promise.
157
+ * - `subscribe(update)`: registers a callback that fires with a
158
+ * fresh items array whenever the underlying provider has more
159
+ * results (for example: "people first, then merged people +
160
+ * agents" for the Rovo Chat mention provider). Returns an
161
+ * unsubscribe function that the runtime calls on query change
162
+ * or component unmount.
163
+ *
164
+ * Existing handlers using only `getItems` continue to work
165
+ * unchanged. This field is purely additive.
166
+ */
167
+ subscribeToItemsUpdates?: (props: {
168
+ editorState: EditorState;
169
+ query: string;
170
+ }) => TypeAheadItemsUpdate;
122
171
  /** Pattern that will trigger the TypeAhead */
123
172
  trigger: string;
124
173
  };
@@ -21,7 +21,13 @@ export declare class VanillaTooltip {
21
21
  /**
22
22
  * Class Name – used for styling.
23
23
  */
24
- className: string, timeout?: number);
24
+ className: string, timeout?: number,
25
+ /**
26
+ * Optional inline styles to apply directly to the tooltip element.
27
+ * Useful when the tooltip is rendered in the browser's top layer (via Popover API),
28
+ * where ancestor CSS selectors cannot reach it.
29
+ */
30
+ styles?: Record<string, string>);
25
31
  private createPopperInstance;
26
32
  destroy(): void;
27
33
  private hide;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-common",
3
- "version": "116.10.0",
3
+ "version": "116.11.0",
4
4
  "description": "A package that contains common classes and components for editor and renderer",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -72,17 +72,18 @@
72
72
  "@atlaskit/profilecard": "^26.1.0",
73
73
  "@atlaskit/prosemirror-history": "^1.0.0",
74
74
  "@atlaskit/react-ufo": "^7.1.0",
75
- "@atlaskit/section-message": "^9.0.0",
75
+ "@atlaskit/section-message": "^9.1.0",
76
76
  "@atlaskit/smart-card": "^45.2.0",
77
77
  "@atlaskit/smart-user-picker": "^11.0.0",
78
78
  "@atlaskit/spinner": "^20.0.0",
79
79
  "@atlaskit/task-decision": "^21.2.0",
80
80
  "@atlaskit/teams-app-config": "^2.0.0",
81
81
  "@atlaskit/textfield": "^9.0.0",
82
- "@atlaskit/tmp-editor-statsig": "^109.2.0",
83
- "@atlaskit/tokens": "^14.0.0",
82
+ "@atlaskit/tmp-editor-statsig": "^110.0.0",
83
+ "@atlaskit/tokens": "^15.0.0",
84
84
  "@atlaskit/tooltip": "^23.0.0",
85
85
  "@atlaskit/width-detector": "^6.0.0",
86
+ "@atlassian/react-compiler-gating": "^0.2.0",
86
87
  "@babel/runtime": "^7.0.0",
87
88
  "@compiled/react": "^0.20.0",
88
89
  "@emotion/react": "^11.7.1",
@@ -121,7 +122,6 @@
121
122
  "devDependencies": {
122
123
  "@atlaskit/media-core": "^38.0.0",
123
124
  "@atlassian/a11y-jest-testing": "^0.12.0",
124
- "@atlassian/react-compiler-gating": "workspace:^",
125
125
  "@testing-library/dom": "^10.1.0",
126
126
  "@testing-library/jest-dom": "^6.4.5",
127
127
  "@testing-library/react": "^16.3.0",