@atlaskit/editor-common 98.0.0 → 98.0.2

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,22 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 98.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#99274](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/99274)
8
+ [`b4dd134e0caaa`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/b4dd134e0caaa) -
9
+ ED-25961 Add analytics for clear formatting and adding blockquote from text styles menu
10
+
11
+ ## 98.0.1
12
+
13
+ ### Patch Changes
14
+
15
+ - [#99080](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/99080)
16
+ [`8b2f0af25c400`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/8b2f0af25c400) -
17
+ [ux] ED-26062: Removed icon blue borders when selected
18
+ - Updated dependencies
19
+
3
20
  ## 98.0.0
4
21
 
5
22
  ### Major Changes
@@ -17,7 +17,7 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
17
17
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
18
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
19
19
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
20
- var packageVersion = "98.0.0";
20
+ var packageVersion = "98.0.2";
21
21
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
22
22
  // Remove URL as it has UGC
23
23
  // TODO: Sanitise the URL instead of just removing it
@@ -207,6 +207,12 @@ Object.defineProperty(exports, "dateSharedStyle", {
207
207
  return _date.dateSharedStyle;
208
208
  }
209
209
  });
210
+ Object.defineProperty(exports, "disableBlueBorderStyles", {
211
+ enumerable: true,
212
+ get: function get() {
213
+ return _plugins.disableBlueBorderStyles;
214
+ }
215
+ });
210
216
  Object.defineProperty(exports, "embedCardStyles", {
211
217
  enumerable: true,
212
218
  get: function get() {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.wrapperStyle = exports.triggerWrapperStylesWithPadding = exports.triggerWrapperStyles = exports.separatorStyles = exports.buttonGroupStyle = void 0;
6
+ exports.wrapperStyle = exports.triggerWrapperStylesWithPadding = exports.triggerWrapperStyles = exports.separatorStyles = exports.disableBlueBorderStyles = exports.buttonGroupStyle = void 0;
7
7
  var _react = require("@emotion/react");
8
8
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
9
9
 
@@ -14,6 +14,13 @@ var buttonGroupStyle = exports.buttonGroupStyle = (0, _react.css)({
14
14
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
15
15
  '& > div': {
16
16
  display: 'flex'
17
+ },
18
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
19
+ button: {
20
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors
21
+ '&:not([disabled])::after': {
22
+ border: 'none' // remove blue border when an item has been selected
23
+ }
17
24
  }
18
25
  });
19
26
 
@@ -42,16 +49,45 @@ var wrapperStyle = exports.wrapperStyle = (0, _react.css)({
42
49
  display: 'flex'
43
50
  },
44
51
  marginLeft: 0,
45
- minWidth: 'auto'
52
+ minWidth: 'auto',
53
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
54
+ button: {
55
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors
56
+ '&:not([disabled])::after': {
57
+ border: 'none' // remove blue border when an item has been selected
58
+ }
59
+ }
46
60
  });
47
61
 
48
62
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
49
63
  var triggerWrapperStyles = exports.triggerWrapperStyles = (0, _react.css)({
50
- display: 'flex'
64
+ display: 'flex',
65
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
66
+ button: {
67
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-selectors
68
+ '&:not([disabled])::after': {
69
+ border: 'none' // remove blue border when an item has been selected
70
+ }
71
+ }
51
72
  });
52
73
 
53
74
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles
54
75
  var triggerWrapperStylesWithPadding = exports.triggerWrapperStylesWithPadding = (0, _react.css)({
55
76
  display: 'flex',
56
- paddingRight: "var(--ds-space-025, 2px)"
77
+ paddingRight: "var(--ds-space-025, 2px)",
78
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
79
+ button: {
80
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-selectors
81
+ '&:not([disabled])::after': {
82
+ border: 'none' // remove blue border when an item has been selected
83
+ }
84
+ }
85
+ });
86
+
87
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles
88
+ var disableBlueBorderStyles = exports.disableBlueBorderStyles = (0, _react.css)({
89
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors
90
+ '&:not([disabled])::after': {
91
+ border: 'none' // remove blue border when an item has been selected
92
+ }
57
93
  });
@@ -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 = "98.0.0";
26
+ var packageVersion = "98.0.2";
27
27
  var halfFocusRing = 1;
28
28
  var dropOffset = '0, 8';
29
29
  // Ignored via go/ees005
@@ -1,7 +1,7 @@
1
1
  import { isFedRamp } from './environment';
2
2
  const SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
3
3
  const packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
4
- const packageVersion = "98.0.0";
4
+ const packageVersion = "98.0.2";
5
5
  const sanitiseSentryEvents = (data, _hint) => {
6
6
  // Remove URL as it has UGC
7
7
  // TODO: Sanitise the URL instead of just removing it
@@ -30,7 +30,7 @@ export { resizerStyles, resizerHandleClassName, resizerHandleTrackClassName, res
30
30
  export { gridStyles, GRID_GUTTER } from './shared/grid';
31
31
  export { smartCardStyles, FLOATING_TOOLBAR_LINKPICKER_CLASSNAME, DATASOURCE_INNER_CONTAINER_CLASSNAME } from './shared/smartCard';
32
32
  export { embedCardStyles, embedSpacingStyles } from './shared/embedCard';
33
- export { buttonGroupStyle, separatorStyles, wrapperStyle, triggerWrapperStyles, triggerWrapperStylesWithPadding } from './shared/plugins';
33
+ export { buttonGroupStyle, disableBlueBorderStyles, separatorStyles, wrapperStyle, triggerWrapperStyles, triggerWrapperStylesWithPadding } from './shared/plugins';
34
34
  export { UnsupportedSharedCssClassName, unsupportedStyles } from './shared/unsupported-content';
35
35
  export { expandIconWrapperStyle, expandClassNames, expandIconContainerStyle } from './shared/expand';
36
36
  export { sharedExpandStyles } from '../ui/Expand/sharedStyles';
@@ -7,6 +7,13 @@ export const buttonGroupStyle = css({
7
7
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
8
8
  '& > div': {
9
9
  display: 'flex'
10
+ },
11
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
12
+ button: {
13
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors
14
+ '&:not([disabled])::after': {
15
+ border: 'none' // remove blue border when an item has been selected
16
+ }
10
17
  }
11
18
  });
12
19
 
@@ -35,16 +42,45 @@ export const wrapperStyle = css({
35
42
  display: 'flex'
36
43
  },
37
44
  marginLeft: 0,
38
- minWidth: 'auto'
45
+ minWidth: 'auto',
46
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
47
+ button: {
48
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors
49
+ '&:not([disabled])::after': {
50
+ border: 'none' // remove blue border when an item has been selected
51
+ }
52
+ }
39
53
  });
40
54
 
41
55
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
42
56
  export const triggerWrapperStyles = css({
43
- display: 'flex'
57
+ display: 'flex',
58
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
59
+ button: {
60
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-selectors
61
+ '&:not([disabled])::after': {
62
+ border: 'none' // remove blue border when an item has been selected
63
+ }
64
+ }
44
65
  });
45
66
 
46
67
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles
47
68
  export const triggerWrapperStylesWithPadding = css({
48
69
  display: 'flex',
49
- paddingRight: "var(--ds-space-025, 2px)"
70
+ paddingRight: "var(--ds-space-025, 2px)",
71
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
72
+ button: {
73
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-selectors
74
+ '&:not([disabled])::after': {
75
+ border: 'none' // remove blue border when an item has been selected
76
+ }
77
+ }
78
+ });
79
+
80
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles
81
+ export const disableBlueBorderStyles = css({
82
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors
83
+ '&:not([disabled])::after': {
84
+ border: 'none' // remove blue border when an item has been selected
85
+ }
50
86
  });
@@ -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 = "98.0.0";
16
+ const packageVersion = "98.0.2";
17
17
  const halfFocusRing = 1;
18
18
  const dropOffset = '0, 8';
19
19
  // Ignored via go/ees005
@@ -7,7 +7,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
7
7
  import { isFedRamp } from './environment';
8
8
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
9
9
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
10
- var packageVersion = "98.0.0";
10
+ var packageVersion = "98.0.2";
11
11
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
12
12
  // Remove URL as it has UGC
13
13
  // TODO: Sanitise the URL instead of just removing it
@@ -30,7 +30,7 @@ export { resizerStyles, resizerHandleClassName, resizerHandleTrackClassName, res
30
30
  export { gridStyles, GRID_GUTTER } from './shared/grid';
31
31
  export { smartCardStyles, FLOATING_TOOLBAR_LINKPICKER_CLASSNAME, DATASOURCE_INNER_CONTAINER_CLASSNAME } from './shared/smartCard';
32
32
  export { embedCardStyles, embedSpacingStyles } from './shared/embedCard';
33
- export { buttonGroupStyle, separatorStyles, wrapperStyle, triggerWrapperStyles, triggerWrapperStylesWithPadding } from './shared/plugins';
33
+ export { buttonGroupStyle, disableBlueBorderStyles, separatorStyles, wrapperStyle, triggerWrapperStyles, triggerWrapperStylesWithPadding } from './shared/plugins';
34
34
  export { UnsupportedSharedCssClassName, unsupportedStyles } from './shared/unsupported-content';
35
35
  export { expandIconWrapperStyle, expandClassNames, expandIconContainerStyle } from './shared/expand';
36
36
  export { sharedExpandStyles } from '../ui/Expand/sharedStyles';
@@ -7,6 +7,13 @@ export var buttonGroupStyle = css({
7
7
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
8
8
  '& > div': {
9
9
  display: 'flex'
10
+ },
11
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
12
+ button: {
13
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors
14
+ '&:not([disabled])::after': {
15
+ border: 'none' // remove blue border when an item has been selected
16
+ }
10
17
  }
11
18
  });
12
19
 
@@ -35,16 +42,45 @@ export var wrapperStyle = css({
35
42
  display: 'flex'
36
43
  },
37
44
  marginLeft: 0,
38
- minWidth: 'auto'
45
+ minWidth: 'auto',
46
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
47
+ button: {
48
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors
49
+ '&:not([disabled])::after': {
50
+ border: 'none' // remove blue border when an item has been selected
51
+ }
52
+ }
39
53
  });
40
54
 
41
55
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
42
56
  export var triggerWrapperStyles = css({
43
- display: 'flex'
57
+ display: 'flex',
58
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
59
+ button: {
60
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-selectors
61
+ '&:not([disabled])::after': {
62
+ border: 'none' // remove blue border when an item has been selected
63
+ }
64
+ }
44
65
  });
45
66
 
46
67
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles
47
68
  export var triggerWrapperStylesWithPadding = css({
48
69
  display: 'flex',
49
- paddingRight: "var(--ds-space-025, 2px)"
70
+ paddingRight: "var(--ds-space-025, 2px)",
71
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors
72
+ button: {
73
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-selectors
74
+ '&:not([disabled])::after': {
75
+ border: 'none' // remove blue border when an item has been selected
76
+ }
77
+ }
78
+ });
79
+
80
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles
81
+ export var disableBlueBorderStyles = css({
82
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors
83
+ '&:not([disabled])::after': {
84
+ border: 'none' // remove blue border when an item has been selected
85
+ }
50
86
  });
@@ -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 = "98.0.0";
23
+ var packageVersion = "98.0.2";
24
24
  var halfFocusRing = 1;
25
25
  var dropOffset = '0, 8';
26
26
  // Ignored via go/ees005
@@ -37,6 +37,7 @@ type FormatBlockQuoteAEP = FormatAEP<ACTION_SUBJECT_ID.FORMAT_BLOCK_QUOTE, {
37
37
  type FormatClearAEP = FormatAEP<ACTION_SUBJECT_ID.FORMAT_CLEAR, {
38
38
  inputMethod: INPUT_METHOD.TOOLBAR | INPUT_METHOD.SHORTCUT | INPUT_METHOD.FLOATING_TB;
39
39
  formattingCleared: string[];
40
+ dropdownMenu?: 'textFormatting' | 'textStyle';
40
41
  }>;
41
42
  type FormatColorAEP = FormatAEP<ACTION_SUBJECT_ID.FORMAT_COLOR, {
42
43
  newColor: string;
@@ -27,7 +27,7 @@ export { resizerStyles, resizerHandleClassName, resizerHandleTrackClassName, res
27
27
  export { gridStyles, GRID_GUTTER } from './shared/grid';
28
28
  export { smartCardStyles, FLOATING_TOOLBAR_LINKPICKER_CLASSNAME, DATASOURCE_INNER_CONTAINER_CLASSNAME, } from './shared/smartCard';
29
29
  export { embedCardStyles, embedSpacingStyles } from './shared/embedCard';
30
- export { buttonGroupStyle, separatorStyles, wrapperStyle, triggerWrapperStyles, triggerWrapperStylesWithPadding, } from './shared/plugins';
30
+ export { buttonGroupStyle, disableBlueBorderStyles, separatorStyles, wrapperStyle, triggerWrapperStyles, triggerWrapperStylesWithPadding, } from './shared/plugins';
31
31
  export { UnsupportedSharedCssClassName, unsupportedStyles } from './shared/unsupported-content';
32
32
  export { expandIconWrapperStyle, expandClassNames, expandIconContainerStyle, } from './shared/expand';
33
33
  export { sharedExpandStyles } from '../ui/Expand/sharedStyles';
@@ -3,3 +3,4 @@ export declare const separatorStyles: import("@emotion/react").SerializedStyles;
3
3
  export declare const wrapperStyle: import("@emotion/react").SerializedStyles;
4
4
  export declare const triggerWrapperStyles: import("@emotion/react").SerializedStyles;
5
5
  export declare const triggerWrapperStylesWithPadding: import("@emotion/react").SerializedStyles;
6
+ export declare const disableBlueBorderStyles: import("@emotion/react").SerializedStyles;
@@ -37,6 +37,7 @@ type FormatBlockQuoteAEP = FormatAEP<ACTION_SUBJECT_ID.FORMAT_BLOCK_QUOTE, {
37
37
  type FormatClearAEP = FormatAEP<ACTION_SUBJECT_ID.FORMAT_CLEAR, {
38
38
  inputMethod: INPUT_METHOD.TOOLBAR | INPUT_METHOD.SHORTCUT | INPUT_METHOD.FLOATING_TB;
39
39
  formattingCleared: string[];
40
+ dropdownMenu?: 'textFormatting' | 'textStyle';
40
41
  }>;
41
42
  type FormatColorAEP = FormatAEP<ACTION_SUBJECT_ID.FORMAT_COLOR, {
42
43
  newColor: string;
@@ -27,7 +27,7 @@ export { resizerStyles, resizerHandleClassName, resizerHandleTrackClassName, res
27
27
  export { gridStyles, GRID_GUTTER } from './shared/grid';
28
28
  export { smartCardStyles, FLOATING_TOOLBAR_LINKPICKER_CLASSNAME, DATASOURCE_INNER_CONTAINER_CLASSNAME, } from './shared/smartCard';
29
29
  export { embedCardStyles, embedSpacingStyles } from './shared/embedCard';
30
- export { buttonGroupStyle, separatorStyles, wrapperStyle, triggerWrapperStyles, triggerWrapperStylesWithPadding, } from './shared/plugins';
30
+ export { buttonGroupStyle, disableBlueBorderStyles, separatorStyles, wrapperStyle, triggerWrapperStyles, triggerWrapperStylesWithPadding, } from './shared/plugins';
31
31
  export { UnsupportedSharedCssClassName, unsupportedStyles } from './shared/unsupported-content';
32
32
  export { expandIconWrapperStyle, expandClassNames, expandIconContainerStyle, } from './shared/expand';
33
33
  export { sharedExpandStyles } from '../ui/Expand/sharedStyles';
@@ -3,3 +3,4 @@ export declare const separatorStyles: import("@emotion/react").SerializedStyles;
3
3
  export declare const wrapperStyle: import("@emotion/react").SerializedStyles;
4
4
  export declare const triggerWrapperStyles: import("@emotion/react").SerializedStyles;
5
5
  export declare const triggerWrapperStylesWithPadding: import("@emotion/react").SerializedStyles;
6
+ export declare const disableBlueBorderStyles: import("@emotion/react").SerializedStyles;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-common",
3
- "version": "98.0.0",
3
+ "version": "98.0.2",
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/"
@@ -149,7 +149,7 @@
149
149
  "@atlaskit/primitives": "^13.3.0",
150
150
  "@atlaskit/profilecard": "^21.1.0",
151
151
  "@atlaskit/section-message": "^6.8.0",
152
- "@atlaskit/smart-card": "^33.3.0",
152
+ "@atlaskit/smart-card": "^33.4.0",
153
153
  "@atlaskit/smart-user-picker": "^6.11.0",
154
154
  "@atlaskit/spinner": "^16.3.0",
155
155
  "@atlaskit/task-decision": "^17.11.0",