@atlaskit/editor-common 131.6.0 → 132.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/ai-xstate-migration/package.json +10 -0
  3. package/ai-xstate-migration-no-exposure/package.json +10 -0
  4. package/dist/cjs/extensibility/Extension/styles.js +1 -16
  5. package/dist/cjs/extensibility/index.js +0 -7
  6. package/dist/cjs/monitoring/error.js +1 -1
  7. package/dist/cjs/styles/shared/emoji.js +1 -3
  8. package/dist/cjs/ui/DropList/index.js +1 -1
  9. package/dist/cjs/ui/Emoji/index.js +1 -2
  10. package/dist/cjs/ui/MultiBodiedExtension/index.js +1 -38
  11. package/dist/cjs/utils/ai-xstate-migration-no-exposure.js +18 -0
  12. package/dist/cjs/utils/ai-xstate-migration.js +30 -0
  13. package/dist/es2019/extensibility/Extension/styles.js +0 -15
  14. package/dist/es2019/extensibility/index.js +1 -2
  15. package/dist/es2019/monitoring/error.js +1 -1
  16. package/dist/es2019/styles/shared/emoji.js +1 -3
  17. package/dist/es2019/ui/DropList/index.js +1 -1
  18. package/dist/es2019/ui/Emoji/index.js +1 -2
  19. package/dist/es2019/ui/MultiBodiedExtension/index.js +1 -38
  20. package/dist/es2019/utils/ai-xstate-migration-no-exposure.js +11 -0
  21. package/dist/es2019/utils/ai-xstate-migration.js +23 -0
  22. package/dist/esm/extensibility/Extension/styles.js +0 -15
  23. package/dist/esm/extensibility/index.js +1 -2
  24. package/dist/esm/monitoring/error.js +1 -1
  25. package/dist/esm/styles/shared/emoji.js +1 -3
  26. package/dist/esm/ui/DropList/index.js +1 -1
  27. package/dist/esm/ui/Emoji/index.js +1 -2
  28. package/dist/esm/ui/MultiBodiedExtension/index.js +1 -38
  29. package/dist/esm/utils/ai-xstate-migration-no-exposure.js +13 -0
  30. package/dist/esm/utils/ai-xstate-migration.js +25 -0
  31. package/dist/types/extensibility/Extension/styles.d.ts +0 -13
  32. package/dist/types/extensibility/index.d.ts +0 -1
  33. package/dist/types/styles/shared/emoji.d.ts +0 -1
  34. package/dist/types/utils/ai-xstate-migration-no-exposure.d.ts +8 -0
  35. package/dist/types/utils/ai-xstate-migration.d.ts +20 -0
  36. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,44 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 132.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`56bd2d041039c`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/56bd2d041039c) -
8
+ Remove the disabled extension block spacing experiment and its unused editor styles.
9
+ - Updated dependencies
10
+
11
+ ## 132.0.0
12
+
13
+ ### Major Changes
14
+
15
+ - [`4119d93011e41`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/4119d93011e41) -
16
+ Remove `platform_use_unicode_emojis` experiment checks and retain Twemoji images and sprites.
17
+ Remove the experiment-only `denormaliseStandardRepresentation` export. Call
18
+ `denormaliseServiceRepresentation` with the service representation instead. Remove the
19
+ `emoji-id-to-emoji` entrypoint and its `emojiIdToEmoji` utility. Use the existing provider image
20
+ or sprite representation for Twemoji rendering. Remove the Unicode representation type, renderer,
21
+ canvas utility, and public `unicode-emoji-image` entrypoint. Remove `renderUnicodeEmojiAsImage`
22
+ props and the Unicode type guard. Remove the editor Unicode node rendering and the `EMOJI_UNICODE`
23
+ shared CSS class. Use provider image and sprite representations instead of Unicode
24
+ representations. Remove the obsolete Unicode rendering props from consumers. Remove the
25
+ feature-only `getCachedEmojiType` provider API. Use the existing provider lookup methods for cache
26
+ or catalogue access.
27
+
28
+ ### Minor Changes
29
+
30
+ - [`0f0ca74ca517a`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0f0ca74ca517a) -
31
+ Add the `@atlaskit/editor-common/ai-xstate-migration` (`isAiXstateMigrationEnabled`) and
32
+ `@atlaskit/editor-common/ai-xstate-migration-no-exposure` (`isAiXstateMigrationEnabledNoExposure`)
33
+ entrypoints, which enable the AI xstate migration when either the Confluence
34
+ (`platform_editor_ai_xstate_migration`) or Jira (`platform_editor_ai_xstate_migration_jira`, a
35
+ platform feature experiment) experiment is on. Use the helper wherever the xstate migration is
36
+ checked.
37
+
38
+ ### Patch Changes
39
+
40
+ - Updated dependencies
41
+
3
42
  ## 131.6.0
4
43
 
5
44
  ### Minor Changes
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "@atlaskit/editor-common/ai-xstate-migration",
3
+ "main": "../dist/cjs/utils/ai-xstate-migration.js",
4
+ "module": "../dist/esm/utils/ai-xstate-migration.js",
5
+ "module:es2019": "../dist/es2019/utils/ai-xstate-migration.js",
6
+ "sideEffects": [
7
+ "**/*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/utils/ai-xstate-migration.d.ts"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "@atlaskit/editor-common/ai-xstate-migration-no-exposure",
3
+ "main": "../dist/cjs/utils/ai-xstate-migration-no-exposure.js",
4
+ "module": "../dist/esm/utils/ai-xstate-migration-no-exposure.js",
5
+ "module:es2019": "../dist/es2019/utils/ai-xstate-migration-no-exposure.js",
6
+ "sideEffects": [
7
+ "**/*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/utils/ai-xstate-migration-no-exposure.d.ts"
10
+ }
@@ -3,26 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.wrapperDefault = exports.styledImage = exports.placeholderFallbackParams = exports.placeholderFallback = exports.overlay = exports.EXTENSION_BLOCK_SPACING_VAR = void 0;
6
+ exports.wrapperDefault = exports.styledImage = exports.placeholderFallbackParams = exports.placeholderFallback = exports.overlay = void 0;
7
7
  var _react = require("@emotion/react");
8
8
  /* eslint-disable @atlaskit/ui-styling-standard/use-compiled -- Pre-existing lint debt surfaced by this mechanical type-import-only PR. */
9
9
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
10
10
 
11
- /**
12
- * CSS custom property that controls the vertical margin between editor block elements
13
- *
14
- * Consumers can opt in to custom block spacing by setting this property on any ancestor of the
15
- * editor content (typically `:root` or the editor wrapper). When the property is unset, every block
16
- * margin rule falls back to its original token/value, so this is a no-op for all existing consumers.
17
- *
18
- * The editor only emits the `var(...)` block-margin rules when the
19
- * `platform_editor_extension_block_spacing` editor experiment is enabled, so the hook can be
20
- * disabled centrally and its SSR/layout performance impact can be tracked. Setting this property
21
- * has no effect while the experiment is off.
22
- */
23
-
24
- var EXTENSION_BLOCK_SPACING_VAR = exports.EXTENSION_BLOCK_SPACING_VAR = '--ak-editor-extension-block-spacing';
25
-
26
11
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
27
12
  var wrapperDefault = exports.wrapperDefault = (0, _react.css)({
28
13
  background: "var(--ds-background-neutral, #0515240F)",
@@ -4,12 +4,6 @@ var _typeof = require("@babel/runtime/helpers/typeof");
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- Object.defineProperty(exports, "EXTENSION_BLOCK_SPACING_VAR", {
8
- enumerable: true,
9
- get: function get() {
10
- return _styles.EXTENSION_BLOCK_SPACING_VAR;
11
- }
12
- });
13
7
  Object.defineProperty(exports, "Extension", {
14
8
  enumerable: true,
15
9
  get: function get() {
@@ -44,5 +38,4 @@ var _ExtensionNodeWrapper = require("./ExtensionNodeWrapper");
44
38
  var _Extension = require("./Extension");
45
39
  var _extensionNodeView = _interopRequireWildcard(require("./extensionNodeView"));
46
40
  var _ExtensionComponent = require("./ExtensionComponent");
47
- var _styles = require("./Extension/styles");
48
41
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
@@ -27,7 +27,7 @@ var NETWORK_FAILURE_REGEX = /^network failure/i;
27
27
  var RESIZE_OBSERVER_LOOP_REGEX = /ResizeObserver loop completed with undelivered notifications/;
28
28
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
29
29
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
30
- var packageVersion = "131.5.0";
30
+ var packageVersion = "132.0.0";
31
31
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
32
32
  // Remove URL as it has UGC
33
33
  // Ignored via go/ees007
@@ -16,7 +16,5 @@ var EmojiSharedCssClassName = exports.EmojiSharedCssClassName = {
16
16
  // eslint-disable-next-line @atlaskit/editor/no-re-export
17
17
  EMOJI_IMAGE: _styles.emojiImage,
18
18
  // eslint-disable-next-line @atlaskit/editor/no-re-export
19
- EMOJI_PLACEHOLDER: _styles.placeholder,
20
- // eslint-disable-next-line @atlaskit/editor/no-re-export
21
- EMOJI_UNICODE: 'emoji-common-emoji-unicode'
19
+ EMOJI_PLACEHOLDER: _styles.placeholder
22
20
  };
@@ -23,7 +23,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
23
23
  * @jsx jsx
24
24
  */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
25
25
  var packageName = "@atlaskit/editor-common";
26
- var packageVersion = "131.5.0";
26
+ var packageVersion = "132.0.0";
27
27
  var halfFocusRing = 1;
28
28
  var dropOffset = '0, 8';
29
29
  // Ignored via go/ees005
@@ -53,8 +53,7 @@ var EmojiNodeFunctional = function EmojiNodeFunctional(props) {
53
53
  fallback: fallback,
54
54
  shortName: shortName
55
55
  }),
56
- editorEmoji: true,
57
- renderUnicodeEmojiAsImage: false
56
+ editorEmoji: true
58
57
  });
59
58
  };
60
59
  var EmojiNode = function EmojiNode(_ref) {
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.sharedMultiBodiedExtensionStyles = exports.removeMarginsAndBorder = void 0;
7
7
  var _react = require("@emotion/react");
8
- var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
9
8
  var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
10
9
  /* eslint-disable @atlaskit/ui-styling-standard/use-compiled -- Pre-existing lint debt surfaced by this mechanical type-import-only PR. */
11
10
  /**
@@ -134,39 +133,6 @@ var extensionFrameContent = (0, _react.css)({
134
133
  marginTop: "var(--ds-space-100, 8px)".concat(" !important")
135
134
  }
136
135
  });
137
-
138
- // Block spacing hook variant of extensionFrameContent. Identical to extensionFrameContent except
139
- // the extension content margins read from the `--ak-editor-extension-block-spacing` CSS custom
140
- // property (falling back to the original token values). Selected only when
141
- // isExperimentEnabled('platform_editor_extension_block_spacing') is enabled.
142
- var extensionFrameContentWithBlockSpacing = (0, _react.css)({
143
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles -- Ignored via go/DSP-18766
144
- display: 'block !important',
145
- minHeight: '100px',
146
- background: 'transparent',
147
- borderBottomLeftRadius: "var(--ds-radius-small, 3px)",
148
- borderBottomRightRadius: "var(--ds-radius-small, 3px)",
149
- marginLeft: "var(--ds-space-100, 8px)",
150
- marginRight: "var(--ds-space-100, 8px)",
151
- cursor: 'initial',
152
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
153
- '.pm-table-with-controls': {
154
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles -- Ignored via go/DSP-18766
155
- marginLeft: "var(--ds-space-150, 12px)".concat(" !important"),
156
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles -- Ignored via go/DSP-18766
157
- paddingRight: "var(--ds-space-150, 12px)".concat(" !important")
158
- },
159
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
160
- '.bodiedExtensionView-content-wrap': {
161
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
162
- marginTop: "var(--ak-editor-extension-block-spacing, ".concat("var(--ds-space-150, 12px)", ") !important")
163
- },
164
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
165
- '.extensionView-content-wrap': {
166
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
167
- marginTop: "var(--ak-editor-extension-block-spacing, ".concat("var(--ds-space-100, 8px)", ") !important")
168
- }
169
- });
170
136
  var extensionFrameContentOld = (0, _react.css)({
171
137
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles -- Ignored via go/DSP-18766
172
138
  padding: "var(--ds-space-100, 8px)".concat(" !important"),
@@ -215,9 +181,6 @@ var sharedMultiBodiedExtensionStyles = exports.sharedMultiBodiedExtensionStyles
215
181
  if (!(0, _expValEquals.expValEquals)('confluence_native_tabs_experiment', 'isEnabled', true)) {
216
182
  return extensionFrameContentOld;
217
183
  }
218
- // Block spacing hook — when the experiment is on, use the variant whose extension content
219
- // margins read from --ak-editor-extension-block-spacing (falling back to the originals).
220
- // isExperimentEnabled always fires an exposure event.
221
- return (0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_extension_block_spacing') ? extensionFrameContentWithBlockSpacing : extensionFrameContent;
184
+ return extensionFrameContent;
222
185
  }
223
186
  };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isAiXstateMigrationEnabledNoExposure = void 0;
7
+ var _unsafeExpValNoExposure = require("@atlaskit/platform-feature-experiments/unsafe-exp-val-no-exposure");
8
+ var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure");
9
+ /**
10
+ * Same as `isAiXstateMigrationEnabled` from `@atlaskit/editor-common/ai-xstate-migration`
11
+ * (Confluence `platform_editor_ai_xstate_migration` OR Jira
12
+ * `platform_editor_ai_xstate_migration_jira`), but never fires exposure.
13
+ *
14
+ * Cleanup: only remove once BOTH experiments have shipped.
15
+ */
16
+ var isAiXstateMigrationEnabledNoExposure = exports.isAiXstateMigrationEnabledNoExposure = function isAiXstateMigrationEnabledNoExposure() {
17
+ return (0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_ai_xstate_migration', 'isEnabled', true) || (0, _unsafeExpValNoExposure.UNSAFE_expValNoExposure)('platform_editor_ai_xstate_migration_jira', 'isEnabled', false) === true;
18
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isAiXstateMigrationEnabled = void 0;
7
+ var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
8
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
9
+ /**
10
+ * Whether the editor AI xstate migration is enabled for the current product.
11
+ *
12
+ * The migration is rolled out via two product-specific experiments:
13
+ * - `platform_editor_ai_xstate_migration` (Confluence), a legacy editor experiment
14
+ * read via `@atlaskit/tmp-editor-statsig`
15
+ * - `platform_editor_ai_xstate_migration_jira` (Jira), a platform feature experiment
16
+ * read via `@atlaskit/platform-feature-experiments`
17
+ *
18
+ * Use this helper instead of checking either experiment directly so every call site
19
+ * stays consistent across products. Use `isAiXstateMigrationEnabledNoExposure` from
20
+ * `@atlaskit/editor-common/ai-xstate-migration-no-exposure` when exposure must not fire.
21
+ *
22
+ * Cleanup: only remove this helper (and replace its call sites with `true`) once
23
+ * BOTH experiments have shipped. Cleaning up the Confluence experiment alone by
24
+ * replacing it with `true` would also force the migration on for Jira.
25
+ *
26
+ * Note: This method fires exposure for the evaluated experiment(s).
27
+ */
28
+ var isAiXstateMigrationEnabled = exports.isAiXstateMigrationEnabled = function isAiXstateMigrationEnabled() {
29
+ return (0, _expValEquals.expValEquals)('platform_editor_ai_xstate_migration', 'isEnabled', true) || (0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_ai_xstate_migration_jira');
30
+ };
@@ -1,21 +1,6 @@
1
1
  /* eslint-disable @atlaskit/ui-styling-standard/use-compiled -- Pre-existing lint debt surfaced by this mechanical type-import-only PR. */
2
2
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
3
3
  import { css } from '@emotion/react';
4
- /**
5
- * CSS custom property that controls the vertical margin between editor block elements
6
- *
7
- * Consumers can opt in to custom block spacing by setting this property on any ancestor of the
8
- * editor content (typically `:root` or the editor wrapper). When the property is unset, every block
9
- * margin rule falls back to its original token/value, so this is a no-op for all existing consumers.
10
- *
11
- * The editor only emits the `var(...)` block-margin rules when the
12
- * `platform_editor_extension_block_spacing` editor experiment is enabled, so the hook can be
13
- * disabled centrally and its SSR/layout performance impact can be tracked. Setting this property
14
- * has no effect while the experiment is off.
15
- */
16
-
17
- export const EXTENSION_BLOCK_SPACING_VAR = '--ak-editor-extension-block-spacing';
18
-
19
4
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
20
5
  export const wrapperDefault = css({
21
6
  background: "var(--ds-background-neutral, #0515240F)",
@@ -4,5 +4,4 @@
4
4
  export { ExtensionNodeWrapper } from './ExtensionNodeWrapper';
5
5
  export { Extension } from './Extension';
6
6
  export { default as ExtensionNodeView, ExtensionNode } from './extensionNodeView';
7
- export { ExtensionComponent } from './ExtensionComponent';
8
- export { EXTENSION_BLOCK_SPACING_VAR } from './Extension/styles';
7
+ export { ExtensionComponent } from './ExtensionComponent';
@@ -13,7 +13,7 @@ const NETWORK_FAILURE_REGEX = /^network failure/i;
13
13
  const RESIZE_OBSERVER_LOOP_REGEX = /ResizeObserver loop completed with undelivered notifications/;
14
14
  const SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
15
15
  const packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
16
- const packageVersion = "131.5.0";
16
+ const packageVersion = "132.0.0";
17
17
  const sanitiseSentryEvents = (data, _hint) => {
18
18
  // Remove URL as it has UGC
19
19
  // Ignored via go/ees007
@@ -11,7 +11,5 @@ export const EmojiSharedCssClassName = {
11
11
  // eslint-disable-next-line @atlaskit/editor/no-re-export
12
12
  EMOJI_IMAGE: emojiImage,
13
13
  // eslint-disable-next-line @atlaskit/editor/no-re-export
14
- EMOJI_PLACEHOLDER: emojiPlaceholder,
15
- // eslint-disable-next-line @atlaskit/editor/no-re-export
16
- EMOJI_UNICODE: 'emoji-common-emoji-unicode'
14
+ EMOJI_PLACEHOLDER: emojiPlaceholder
17
15
  };
@@ -13,7 +13,7 @@ import withAnalyticsContext from '@atlaskit/analytics-next/withAnalyticsContext'
13
13
  import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
14
14
  import Layer from '../Layer';
15
15
  const packageName = "@atlaskit/editor-common";
16
- const packageVersion = "131.5.0";
16
+ const packageVersion = "132.0.0";
17
17
  const halfFocusRing = 1;
18
18
  const dropOffset = '0, 8';
19
19
  // Ignored via go/ees005
@@ -42,8 +42,7 @@ const EmojiNodeFunctional = props => {
42
42
  fallback,
43
43
  shortName
44
44
  }),
45
- editorEmoji: true,
46
- renderUnicodeEmojiAsImage: false
45
+ editorEmoji: true
47
46
  });
48
47
  };
49
48
  const EmojiNode = ({
@@ -6,7 +6,6 @@
6
6
 
7
7
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
8
8
  import { css } from '@emotion/react';
9
- import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
10
9
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
11
10
  // Wraps the navigation bar and extensionFrames
12
11
  const mbeExtensionContainerOld = css({
@@ -127,39 +126,6 @@ const extensionFrameContent = css({
127
126
  marginTop: `${"var(--ds-space-100, 8px)"} !important`
128
127
  }
129
128
  });
130
-
131
- // Block spacing hook variant of extensionFrameContent. Identical to extensionFrameContent except
132
- // the extension content margins read from the `--ak-editor-extension-block-spacing` CSS custom
133
- // property (falling back to the original token values). Selected only when
134
- // isExperimentEnabled('platform_editor_extension_block_spacing') is enabled.
135
- const extensionFrameContentWithBlockSpacing = css({
136
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles -- Ignored via go/DSP-18766
137
- display: 'block !important',
138
- minHeight: '100px',
139
- background: 'transparent',
140
- borderBottomLeftRadius: "var(--ds-radius-small, 3px)",
141
- borderBottomRightRadius: "var(--ds-radius-small, 3px)",
142
- marginLeft: "var(--ds-space-100, 8px)",
143
- marginRight: "var(--ds-space-100, 8px)",
144
- cursor: 'initial',
145
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
146
- '.pm-table-with-controls': {
147
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles -- Ignored via go/DSP-18766
148
- marginLeft: `${"var(--ds-space-150, 12px)"} !important`,
149
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles -- Ignored via go/DSP-18766
150
- paddingRight: `${"var(--ds-space-150, 12px)"} !important`
151
- },
152
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
153
- '.bodiedExtensionView-content-wrap': {
154
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
155
- marginTop: `var(--ak-editor-extension-block-spacing, ${"var(--ds-space-150, 12px)"}) !important`
156
- },
157
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
158
- '.extensionView-content-wrap': {
159
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
160
- marginTop: `var(--ak-editor-extension-block-spacing, ${"var(--ds-space-100, 8px)"}) !important`
161
- }
162
- });
163
129
  const extensionFrameContentOld = css({
164
130
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles -- Ignored via go/DSP-18766
165
131
  padding: `${"var(--ds-space-100, 8px)"} !important`,
@@ -208,9 +174,6 @@ export const sharedMultiBodiedExtensionStyles = {
208
174
  if (!expValEquals('confluence_native_tabs_experiment', 'isEnabled', true)) {
209
175
  return extensionFrameContentOld;
210
176
  }
211
- // Block spacing hook — when the experiment is on, use the variant whose extension content
212
- // margins read from --ak-editor-extension-block-spacing (falling back to the originals).
213
- // isExperimentEnabled always fires an exposure event.
214
- return isExperimentEnabled('platform_editor_extension_block_spacing') ? extensionFrameContentWithBlockSpacing : extensionFrameContent;
177
+ return extensionFrameContent;
215
178
  }
216
179
  };
@@ -0,0 +1,11 @@
1
+ import { UNSAFE_expValNoExposure } from '@atlaskit/platform-feature-experiments/unsafe-exp-val-no-exposure';
2
+ import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
3
+
4
+ /**
5
+ * Same as `isAiXstateMigrationEnabled` from `@atlaskit/editor-common/ai-xstate-migration`
6
+ * (Confluence `platform_editor_ai_xstate_migration` OR Jira
7
+ * `platform_editor_ai_xstate_migration_jira`), but never fires exposure.
8
+ *
9
+ * Cleanup: only remove once BOTH experiments have shipped.
10
+ */
11
+ export const isAiXstateMigrationEnabledNoExposure = () => expValEqualsNoExposure('platform_editor_ai_xstate_migration', 'isEnabled', true) || UNSAFE_expValNoExposure('platform_editor_ai_xstate_migration_jira', 'isEnabled', false) === true;
@@ -0,0 +1,23 @@
1
+ import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
2
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
3
+
4
+ /**
5
+ * Whether the editor AI xstate migration is enabled for the current product.
6
+ *
7
+ * The migration is rolled out via two product-specific experiments:
8
+ * - `platform_editor_ai_xstate_migration` (Confluence), a legacy editor experiment
9
+ * read via `@atlaskit/tmp-editor-statsig`
10
+ * - `platform_editor_ai_xstate_migration_jira` (Jira), a platform feature experiment
11
+ * read via `@atlaskit/platform-feature-experiments`
12
+ *
13
+ * Use this helper instead of checking either experiment directly so every call site
14
+ * stays consistent across products. Use `isAiXstateMigrationEnabledNoExposure` from
15
+ * `@atlaskit/editor-common/ai-xstate-migration-no-exposure` when exposure must not fire.
16
+ *
17
+ * Cleanup: only remove this helper (and replace its call sites with `true`) once
18
+ * BOTH experiments have shipped. Cleaning up the Confluence experiment alone by
19
+ * replacing it with `true` would also force the migration on for Jira.
20
+ *
21
+ * Note: This method fires exposure for the evaluated experiment(s).
22
+ */
23
+ export const isAiXstateMigrationEnabled = () => expValEquals('platform_editor_ai_xstate_migration', 'isEnabled', true) || isExperimentEnabled('platform_editor_ai_xstate_migration_jira');
@@ -1,21 +1,6 @@
1
1
  /* eslint-disable @atlaskit/ui-styling-standard/use-compiled -- Pre-existing lint debt surfaced by this mechanical type-import-only PR. */
2
2
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
3
3
  import { css } from '@emotion/react';
4
- /**
5
- * CSS custom property that controls the vertical margin between editor block elements
6
- *
7
- * Consumers can opt in to custom block spacing by setting this property on any ancestor of the
8
- * editor content (typically `:root` or the editor wrapper). When the property is unset, every block
9
- * margin rule falls back to its original token/value, so this is a no-op for all existing consumers.
10
- *
11
- * The editor only emits the `var(...)` block-margin rules when the
12
- * `platform_editor_extension_block_spacing` editor experiment is enabled, so the hook can be
13
- * disabled centrally and its SSR/layout performance impact can be tracked. Setting this property
14
- * has no effect while the experiment is off.
15
- */
16
-
17
- export var EXTENSION_BLOCK_SPACING_VAR = '--ak-editor-extension-block-spacing';
18
-
19
4
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
20
5
  export var wrapperDefault = css({
21
6
  background: "var(--ds-background-neutral, #0515240F)",
@@ -4,5 +4,4 @@
4
4
  export { ExtensionNodeWrapper } from './ExtensionNodeWrapper';
5
5
  export { Extension } from './Extension';
6
6
  export { default as ExtensionNodeView, ExtensionNode } from './extensionNodeView';
7
- export { ExtensionComponent } from './ExtensionComponent';
8
- export { EXTENSION_BLOCK_SPACING_VAR } from './Extension/styles';
7
+ export { ExtensionComponent } from './ExtensionComponent';
@@ -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.5.0";
22
+ var packageVersion = "132.0.0";
23
23
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
24
24
  // Remove URL as it has UGC
25
25
  // Ignored via go/ees007
@@ -11,7 +11,5 @@ export var EmojiSharedCssClassName = {
11
11
  // eslint-disable-next-line @atlaskit/editor/no-re-export
12
12
  EMOJI_IMAGE: emojiImage,
13
13
  // eslint-disable-next-line @atlaskit/editor/no-re-export
14
- EMOJI_PLACEHOLDER: emojiPlaceholder,
15
- // eslint-disable-next-line @atlaskit/editor/no-re-export
16
- EMOJI_UNICODE: 'emoji-common-emoji-unicode'
14
+ EMOJI_PLACEHOLDER: emojiPlaceholder
17
15
  };
@@ -20,7 +20,7 @@ import withAnalyticsContext from '@atlaskit/analytics-next/withAnalyticsContext'
20
20
  import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
21
21
  import Layer from '../Layer';
22
22
  var packageName = "@atlaskit/editor-common";
23
- var packageVersion = "131.5.0";
23
+ var packageVersion = "132.0.0";
24
24
  var halfFocusRing = 1;
25
25
  var dropOffset = '0, 8';
26
26
  // Ignored via go/ees005
@@ -44,8 +44,7 @@ var EmojiNodeFunctional = function EmojiNodeFunctional(props) {
44
44
  fallback: fallback,
45
45
  shortName: shortName
46
46
  }),
47
- editorEmoji: true,
48
- renderUnicodeEmojiAsImage: false
47
+ editorEmoji: true
49
48
  });
50
49
  };
51
50
  var EmojiNode = function EmojiNode(_ref) {
@@ -6,7 +6,6 @@
6
6
 
7
7
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
8
8
  import { css } from '@emotion/react';
9
- import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
10
9
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
11
10
  // Wraps the navigation bar and extensionFrames
12
11
  var mbeExtensionContainerOld = css({
@@ -127,39 +126,6 @@ var extensionFrameContent = css({
127
126
  marginTop: "var(--ds-space-100, 8px)".concat(" !important")
128
127
  }
129
128
  });
130
-
131
- // Block spacing hook variant of extensionFrameContent. Identical to extensionFrameContent except
132
- // the extension content margins read from the `--ak-editor-extension-block-spacing` CSS custom
133
- // property (falling back to the original token values). Selected only when
134
- // isExperimentEnabled('platform_editor_extension_block_spacing') is enabled.
135
- var extensionFrameContentWithBlockSpacing = css({
136
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles -- Ignored via go/DSP-18766
137
- display: 'block !important',
138
- minHeight: '100px',
139
- background: 'transparent',
140
- borderBottomLeftRadius: "var(--ds-radius-small, 3px)",
141
- borderBottomRightRadius: "var(--ds-radius-small, 3px)",
142
- marginLeft: "var(--ds-space-100, 8px)",
143
- marginRight: "var(--ds-space-100, 8px)",
144
- cursor: 'initial',
145
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
146
- '.pm-table-with-controls': {
147
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles -- Ignored via go/DSP-18766
148
- marginLeft: "var(--ds-space-150, 12px)".concat(" !important"),
149
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles -- Ignored via go/DSP-18766
150
- paddingRight: "var(--ds-space-150, 12px)".concat(" !important")
151
- },
152
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
153
- '.bodiedExtensionView-content-wrap': {
154
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
155
- marginTop: "var(--ak-editor-extension-block-spacing, ".concat("var(--ds-space-150, 12px)", ") !important")
156
- },
157
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
158
- '.extensionView-content-wrap': {
159
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
160
- marginTop: "var(--ak-editor-extension-block-spacing, ".concat("var(--ds-space-100, 8px)", ") !important")
161
- }
162
- });
163
129
  var extensionFrameContentOld = css({
164
130
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-important-styles -- Ignored via go/DSP-18766
165
131
  padding: "var(--ds-space-100, 8px)".concat(" !important"),
@@ -208,9 +174,6 @@ export var sharedMultiBodiedExtensionStyles = {
208
174
  if (!expValEquals('confluence_native_tabs_experiment', 'isEnabled', true)) {
209
175
  return extensionFrameContentOld;
210
176
  }
211
- // Block spacing hook — when the experiment is on, use the variant whose extension content
212
- // margins read from --ak-editor-extension-block-spacing (falling back to the originals).
213
- // isExperimentEnabled always fires an exposure event.
214
- return isExperimentEnabled('platform_editor_extension_block_spacing') ? extensionFrameContentWithBlockSpacing : extensionFrameContent;
177
+ return extensionFrameContent;
215
178
  }
216
179
  };
@@ -0,0 +1,13 @@
1
+ import { UNSAFE_expValNoExposure } from '@atlaskit/platform-feature-experiments/unsafe-exp-val-no-exposure';
2
+ import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
3
+
4
+ /**
5
+ * Same as `isAiXstateMigrationEnabled` from `@atlaskit/editor-common/ai-xstate-migration`
6
+ * (Confluence `platform_editor_ai_xstate_migration` OR Jira
7
+ * `platform_editor_ai_xstate_migration_jira`), but never fires exposure.
8
+ *
9
+ * Cleanup: only remove once BOTH experiments have shipped.
10
+ */
11
+ export var isAiXstateMigrationEnabledNoExposure = function isAiXstateMigrationEnabledNoExposure() {
12
+ return expValEqualsNoExposure('platform_editor_ai_xstate_migration', 'isEnabled', true) || UNSAFE_expValNoExposure('platform_editor_ai_xstate_migration_jira', 'isEnabled', false) === true;
13
+ };
@@ -0,0 +1,25 @@
1
+ import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
2
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
3
+
4
+ /**
5
+ * Whether the editor AI xstate migration is enabled for the current product.
6
+ *
7
+ * The migration is rolled out via two product-specific experiments:
8
+ * - `platform_editor_ai_xstate_migration` (Confluence), a legacy editor experiment
9
+ * read via `@atlaskit/tmp-editor-statsig`
10
+ * - `platform_editor_ai_xstate_migration_jira` (Jira), a platform feature experiment
11
+ * read via `@atlaskit/platform-feature-experiments`
12
+ *
13
+ * Use this helper instead of checking either experiment directly so every call site
14
+ * stays consistent across products. Use `isAiXstateMigrationEnabledNoExposure` from
15
+ * `@atlaskit/editor-common/ai-xstate-migration-no-exposure` when exposure must not fire.
16
+ *
17
+ * Cleanup: only remove this helper (and replace its call sites with `true`) once
18
+ * BOTH experiments have shipped. Cleaning up the Confluence experiment alone by
19
+ * replacing it with `true` would also force the migration on for Jira.
20
+ *
21
+ * Note: This method fires exposure for the evaluated experiment(s).
22
+ */
23
+ export var isAiXstateMigrationEnabled = function isAiXstateMigrationEnabled() {
24
+ return expValEquals('platform_editor_ai_xstate_migration', 'isEnabled', true) || isExperimentEnabled('platform_editor_ai_xstate_migration_jira');
25
+ };
@@ -1,17 +1,4 @@
1
1
  import type { SerializedStyles } from '@emotion/react';
2
- /**
3
- * CSS custom property that controls the vertical margin between editor block elements
4
- *
5
- * Consumers can opt in to custom block spacing by setting this property on any ancestor of the
6
- * editor content (typically `:root` or the editor wrapper). When the property is unset, every block
7
- * margin rule falls back to its original token/value, so this is a no-op for all existing consumers.
8
- *
9
- * The editor only emits the `var(...)` block-margin rules when the
10
- * `platform_editor_extension_block_spacing` editor experiment is enabled, so the hook can be
11
- * disabled centrally and its SSR/layout performance impact can be tracked. Setting this property
12
- * has no effect while the experiment is off.
13
- */
14
- export declare const EXTENSION_BLOCK_SPACING_VAR = "--ak-editor-extension-block-spacing";
15
2
  export declare const wrapperDefault: SerializedStyles;
16
3
  export declare const overlay: SerializedStyles;
17
4
  export declare const placeholderFallback: SerializedStyles;
@@ -3,4 +3,3 @@ export { Extension } from './Extension';
3
3
  export { default as ExtensionNodeView, ExtensionNode } from './extensionNodeView';
4
4
  export { ExtensionComponent } from './ExtensionComponent';
5
5
  export type { MacroInteractionDesignFeatureFlags, GetPMNodeHeight } from './types';
6
- export { EXTENSION_BLOCK_SPACING_VAR } from './Extension/styles';
@@ -4,5 +4,4 @@ export declare const EmojiSharedCssClassName: {
4
4
  EMOJI_NODE: string;
5
5
  EMOJI_PLACEHOLDER: string;
6
6
  EMOJI_SPRITE: string;
7
- EMOJI_UNICODE: string;
8
7
  };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Same as `isAiXstateMigrationEnabled` from `@atlaskit/editor-common/ai-xstate-migration`
3
+ * (Confluence `platform_editor_ai_xstate_migration` OR Jira
4
+ * `platform_editor_ai_xstate_migration_jira`), but never fires exposure.
5
+ *
6
+ * Cleanup: only remove once BOTH experiments have shipped.
7
+ */
8
+ export declare const isAiXstateMigrationEnabledNoExposure: () => boolean;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Whether the editor AI xstate migration is enabled for the current product.
3
+ *
4
+ * The migration is rolled out via two product-specific experiments:
5
+ * - `platform_editor_ai_xstate_migration` (Confluence), a legacy editor experiment
6
+ * read via `@atlaskit/tmp-editor-statsig`
7
+ * - `platform_editor_ai_xstate_migration_jira` (Jira), a platform feature experiment
8
+ * read via `@atlaskit/platform-feature-experiments`
9
+ *
10
+ * Use this helper instead of checking either experiment directly so every call site
11
+ * stays consistent across products. Use `isAiXstateMigrationEnabledNoExposure` from
12
+ * `@atlaskit/editor-common/ai-xstate-migration-no-exposure` when exposure must not fire.
13
+ *
14
+ * Cleanup: only remove this helper (and replace its call sites with `true`) once
15
+ * BOTH experiments have shipped. Cleaning up the Confluence experiment alone by
16
+ * replacing it with `true` would also force the migration on for Jira.
17
+ *
18
+ * Note: This method fires exposure for the evaluated experiment(s).
19
+ */
20
+ export declare const isAiXstateMigrationEnabled: () => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-common",
3
- "version": "131.6.0",
3
+ "version": "132.0.1",
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/"
@@ -50,7 +50,7 @@
50
50
  "@atlaskit/editor-toolbar": "^2.8.0",
51
51
  "@atlaskit/editor-toolbar-model": "^1.2.0",
52
52
  "@atlaskit/editor-ui-control-model": "^2.10.0",
53
- "@atlaskit/emoji": "^72.5.0",
53
+ "@atlaskit/emoji": "^73.0.0",
54
54
  "@atlaskit/feature-gate-js-client": "^7.0.0",
55
55
  "@atlaskit/icon": "^38.0.0",
56
56
  "@atlaskit/link": "^5.1.0",
@@ -65,7 +65,7 @@
65
65
  "@atlaskit/media-picker": "^73.2.0",
66
66
  "@atlaskit/media-ui": "^31.3.0",
67
67
  "@atlaskit/media-viewer": "^54.11.0",
68
- "@atlaskit/mention": "^30.2.0",
68
+ "@atlaskit/mention": "^30.3.0",
69
69
  "@atlaskit/menu": "^11.0.0",
70
70
  "@atlaskit/object": "^2.3.0",
71
71
  "@atlaskit/onboarding": "^15.4.0",