@atlaskit/editor-common 110.32.3 → 110.33.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 +21 -0
- package/dist/cjs/extensibility/Extension/Lozenge/ExtensionLabel.js +1 -1
- package/dist/cjs/hooks/useSharedPluginState.js +1 -1
- package/dist/cjs/hooks/useSharedPluginStateSelector/useSharedPluginStateSelector.js +2 -2
- package/dist/cjs/messages/placeholder-text.js +25 -0
- package/dist/cjs/monitoring/error.js +1 -1
- package/dist/cjs/ui/DropList/index.js +1 -1
- package/dist/cjs/ui-menu/DropdownMenu/index.js +3 -2
- package/dist/cjs/utils/document.js +19 -4
- package/dist/es2019/extensibility/Extension/Lozenge/ExtensionLabel.js +1 -1
- package/dist/es2019/hooks/useSharedPluginState.js +1 -1
- package/dist/es2019/hooks/useSharedPluginStateSelector/useSharedPluginStateSelector.js +2 -2
- package/dist/es2019/messages/placeholder-text.js +25 -0
- package/dist/es2019/monitoring/error.js +1 -1
- package/dist/es2019/ui/DropList/index.js +1 -1
- package/dist/es2019/ui-menu/DropdownMenu/index.js +5 -4
- package/dist/es2019/utils/document.js +19 -4
- package/dist/esm/extensibility/Extension/Lozenge/ExtensionLabel.js +1 -1
- package/dist/esm/hooks/useSharedPluginState.js +1 -1
- package/dist/esm/hooks/useSharedPluginStateSelector/useSharedPluginStateSelector.js +2 -2
- package/dist/esm/messages/placeholder-text.js +25 -0
- package/dist/esm/monitoring/error.js +1 -1
- package/dist/esm/ui/DropList/index.js +1 -1
- package/dist/esm/ui-menu/DropdownMenu/index.js +3 -2
- package/dist/esm/utils/document.js +19 -4
- package/dist/types/extensibility/Extension/Lozenge/ExtensionLabel.d.ts +1 -1
- package/dist/types/hooks/useSharedPluginState.d.ts +1 -1
- package/dist/types/hooks/useSharedPluginStateSelector/useSharedPluginStateSelector.d.ts +1 -1
- package/dist/types/messages/placeholder-text.d.ts +25 -0
- package/dist/types/utils/document.d.ts +2 -1
- package/dist/types-ts4.5/extensibility/Extension/Lozenge/ExtensionLabel.d.ts +1 -1
- package/dist/types-ts4.5/hooks/useSharedPluginState.d.ts +1 -1
- package/dist/types-ts4.5/hooks/useSharedPluginStateSelector/useSharedPluginStateSelector.d.ts +1 -1
- package/dist/types-ts4.5/messages/placeholder-text.d.ts +25 -0
- package/dist/types-ts4.5/utils/document.d.ts +2 -1
- package/package.json +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @atlaskit/editor-common
|
|
2
2
|
|
|
3
|
+
## 110.33.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`025002b2a71fc`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/025002b2a71fc) -
|
|
8
|
+
[ux] [EDITOR-3320] fix bug on panel and table placeholders/ added code mark on keyboard shorcuts
|
|
9
|
+
on panel and table placeholders
|
|
10
|
+
- [`e12aaa9abfa83`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/e12aaa9abfa83) -
|
|
11
|
+
EDITOR-3302 - Support multiple editor streaming
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [`05ee61c6ace09`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/05ee61c6ace09) -
|
|
16
|
+
Improve performance of show diff by increasing merge of steps
|
|
17
|
+
- [`516909774accc`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/516909774accc) -
|
|
18
|
+
Fixing type issues
|
|
19
|
+
- [`3ff392895f5d3`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/3ff392895f5d3) -
|
|
20
|
+
[ux] A11y issue fix: The fallback colors used for menu items are not accessible and does not match
|
|
21
|
+
with tokens
|
|
22
|
+
- Updated dependencies
|
|
23
|
+
|
|
3
24
|
## 110.32.3
|
|
4
25
|
|
|
5
26
|
### Patch Changes
|
|
@@ -138,7 +138,7 @@ var ExtensionLabel = exports.ExtensionLabel = function ExtensionLabel(_ref) {
|
|
|
138
138
|
showUpdatedLivePages1PBodiedExtensionUI = _ref.showUpdatedLivePages1PBodiedExtensionUI,
|
|
139
139
|
showLivePagesBodiedMacrosRendererView = _ref.showLivePagesBodiedMacrosRendererView,
|
|
140
140
|
showBodiedExtensionRendererView = _ref.showBodiedExtensionRendererView,
|
|
141
|
-
|
|
141
|
+
_pluginInjectionApi = _ref.pluginInjectionApi;
|
|
142
142
|
var isInlineExtension = extensionName === 'inlineExtension';
|
|
143
143
|
var showDefaultBodiedStyles = (0, _expValEquals.expValEquals)('cc_editor_ttvc_release_bundle_one', 'isEnabled', true) ? isBodiedMacro : isBodiedMacro && !isNodeHovered;
|
|
144
144
|
var shouldShowBodiedMacroLabel = getShouldShowBodiedMacroLabel(isBodiedMacro, isNodeHovered, showLivePagesBodiedMacrosRendererView, showBodiedExtensionRendererView, showUpdatedLivePages1PBodiedExtensionUI);
|
|
@@ -43,7 +43,7 @@ function useStaticPlugins(plugins) {
|
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
45
|
*
|
|
46
|
-
* NOTE: Generally you want to use `
|
|
46
|
+
* NOTE: Generally you want to use `useSharedPluginStateWithSelector` over this which behaves similarly
|
|
47
47
|
* but selects a slice of the state which is more performant.
|
|
48
48
|
*
|
|
49
49
|
* ⚠️⚠️⚠️ This is a debounced hook ⚠️⚠️⚠️
|
|
@@ -41,9 +41,9 @@ var _usePluginStateEffect = require("../usePluginStateEffect");
|
|
|
41
41
|
|
|
42
42
|
/**
|
|
43
43
|
*
|
|
44
|
-
* NOTE: Generally you want to use `
|
|
44
|
+
* NOTE: Generally you want to use `useSharedPluginStateWithSelector` over this which behaves similarly
|
|
45
45
|
* but selects a slice of the state which is more performant.
|
|
46
|
-
*
|
|
46
|
+
*
|
|
47
47
|
* ⚠️⚠️⚠️ This is a debounced hook ⚠️⚠️⚠️
|
|
48
48
|
* If the plugins you are listening to generate multiple shared states while the user is typing,
|
|
49
49
|
* your React Component will get only the last one.
|
|
@@ -16,11 +16,36 @@ var placeholderTextMessages = exports.placeholderTextMessages = (0, _reactIntlNe
|
|
|
16
16
|
defaultMessage: '/ to insert',
|
|
17
17
|
description: 'Short placeholder text for empty nodes'
|
|
18
18
|
},
|
|
19
|
+
shortEmptyNodePlaceholderADFSlashShortcut: {
|
|
20
|
+
id: 'fabric.editor.shortEmptyNodePlaceholderSlash',
|
|
21
|
+
defaultMessage: '/',
|
|
22
|
+
description: 'Slash character in short empty node placeholder'
|
|
23
|
+
},
|
|
24
|
+
shortEmptyNodePlaceholderADFSuffix: {
|
|
25
|
+
id: 'fabric.editor.shortEmptyNodePlaceholderSuffix',
|
|
26
|
+
defaultMessage: ' to insert',
|
|
27
|
+
description: 'Text after slash in short empty node placeholder'
|
|
28
|
+
},
|
|
19
29
|
longEmptyNodePlaceholderText: {
|
|
20
30
|
id: 'fabric.editor.longEmptyNodePlaceholderText',
|
|
21
31
|
defaultMessage: 'Type / to insert elements',
|
|
22
32
|
description: 'Long placeholder text for empty nodes'
|
|
23
33
|
},
|
|
34
|
+
longEmptyNodePlaceholderADFPrefix: {
|
|
35
|
+
id: 'fabric.editor.longEmptyNodePlaceholderPrefix',
|
|
36
|
+
defaultMessage: 'Type ',
|
|
37
|
+
description: 'Text before slash in long empty node placeholder'
|
|
38
|
+
},
|
|
39
|
+
longEmptyNodePlaceholderADFSlashShortcut: {
|
|
40
|
+
id: 'fabric.editor.longEmptyNodePlaceholderSlash',
|
|
41
|
+
defaultMessage: '/',
|
|
42
|
+
description: 'Slash character in long empty node placeholder'
|
|
43
|
+
},
|
|
44
|
+
longEmptyNodePlaceholderADFSuffix: {
|
|
45
|
+
id: 'fabric.editor.longEmptyNodePlaceholderSuffix',
|
|
46
|
+
defaultMessage: ' to insert elements',
|
|
47
|
+
description: 'Text after slash in long empty node placeholder'
|
|
48
|
+
},
|
|
24
49
|
syncBlockPlaceholderText: {
|
|
25
50
|
id: 'fabric.editor.syncBlockPlaceholderText',
|
|
26
51
|
defaultMessage: 'Add content then copy this synced block to access it across spaces',
|
|
@@ -16,7 +16,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
16
16
|
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); }
|
|
17
17
|
var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
|
|
18
18
|
var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
|
|
19
|
-
var packageVersion = "
|
|
19
|
+
var packageVersion = "110.32.3";
|
|
20
20
|
var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
|
|
21
21
|
// Remove URL as it has UGC
|
|
22
22
|
// 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 = "
|
|
27
|
+
var packageVersion = "110.32.3";
|
|
28
28
|
var halfFocusRing = 1;
|
|
29
29
|
var dropOffset = '0, 8';
|
|
30
30
|
var fadeIn = (0, _react2.keyframes)({
|
|
@@ -22,6 +22,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
22
22
|
var _react2 = require("@emotion/react");
|
|
23
23
|
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
24
24
|
var _menu = require("@atlaskit/menu");
|
|
25
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
25
26
|
var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
|
|
26
27
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
27
28
|
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
@@ -63,14 +64,14 @@ var buttonStyles = function buttonStyles(isActive, submenuActive) {
|
|
|
63
64
|
* Hack for item to imitate old dropdown-menu selected styles
|
|
64
65
|
*/
|
|
65
66
|
// eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- needs manual remediation
|
|
66
|
-
return (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t\tposition: relative;\n\t\t\t\t&::before {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\twidth: 2px;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tleft: 0;\n\t\t\t\t\ttop: 0;\n\t\t\t\t\tbackground: ", ";\n\t\t\t\t\tcontent: '';\n\t\t\t\t}\n\t\t\t\t> span,\n\t\t\t\t> span:hover,\n\t\t\t\t> span:active {\n\t\t\t\t\tbackground: ", ";\n\t\t\t\t\tcolor: ", ";\n\t\t\t\t}\n\t\t\t\t:focus > span[aria-disabled='false'] {\n\t\t\t\t\t", ";\n\t\t\t\t}\n\t\t\t\t:focus-visible,\n\t\t\t\t:focus-visible > span[aria-disabled='false'] {\n\t\t\t\t\toutline: none;\n\t\t\t\t}\n\t\t\t"])), "var(--ds-border-selected, transparent)", "var(--ds-background-selected, #6c798f)", "var(--ds-text-selected, #0C66E4)", focusedMenuItemStyle);
|
|
67
|
+
return (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t\tposition: relative;\n\t\t\t\t&::before {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\twidth: 2px;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tleft: 0;\n\t\t\t\t\ttop: 0;\n\t\t\t\t\tbackground: ", ";\n\t\t\t\t\tcontent: '';\n\t\t\t\t}\n\t\t\t\t> span,\n\t\t\t\t> span:hover,\n\t\t\t\t> span:active {\n\t\t\t\t\tbackground: ", ";\n\t\t\t\t\tcolor: ", ";\n\t\t\t\t}\n\t\t\t\t:focus > span[aria-disabled='false'] {\n\t\t\t\t\t", ";\n\t\t\t\t}\n\t\t\t\t:focus-visible,\n\t\t\t\t:focus-visible > span[aria-disabled='false'] {\n\t\t\t\t\toutline: none;\n\t\t\t\t}\n\t\t\t"])), "var(--ds-border-selected, transparent)", "var(--ds-background-selected, ".concat((0, _platformFeatureFlags.fg)('platform_editor_updated_dropdown_colors') ? '#E9F2FE' : '#6c798f', ")"), "var(--ds-text-selected, ".concat((0, _platformFeatureFlags.fg)('platform_editor_updated_dropdown_colors') ? '#1868DB' : '#0C66E4', ")"), focusedMenuItemStyle);
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
/**
|
|
70
71
|
* Hack for item to imitate old dropdown-menu selected styles
|
|
71
72
|
*/
|
|
72
73
|
// eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- needs manual remediation
|
|
73
|
-
return (0, _react2.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t> span,\n\t\t\t> span:hover,\n\t\t\t> span:active {\n\t\t\t\tbackground: ", ";\n\t\t\t\tcolor: ", ";\n\t\t\t}\n\t\t\t:focus > span[aria-disabled='false'] {\n\t\t\t\t", ";\n\t\t\t}\n\t\t\t:focus-visible,\n\t\t\t:focus-visible > span[aria-disabled='false'] {\n\t\t\t\toutline: none;\n\t\t\t}\n\t\t"])), "var(--ds-background-selected, #6c798f)", "var(--ds-text-selected, #0C66E4)", focusedMenuItemStyle);
|
|
74
|
+
return (0, _react2.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t> span,\n\t\t\t> span:hover,\n\t\t\t> span:active {\n\t\t\t\tbackground: ", ";\n\t\t\t\tcolor: ", ";\n\t\t\t}\n\t\t\t:focus > span[aria-disabled='false'] {\n\t\t\t\t", ";\n\t\t\t}\n\t\t\t:focus-visible,\n\t\t\t:focus-visible > span[aria-disabled='false'] {\n\t\t\t\toutline: none;\n\t\t\t}\n\t\t"])), "var(--ds-background-selected, ".concat((0, _platformFeatureFlags.fg)('platform_editor_updated_dropdown_colors') ? '#E9F2FE' : '#6c798f', ")"), "var(--ds-text-selected, ".concat((0, _platformFeatureFlags.fg)('platform_editor_updated_dropdown_colors') ? '#1868DB' : '#0C66E4', ")"), focusedMenuItemStyle);
|
|
74
75
|
} else {
|
|
75
76
|
// eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- needs manual remediation
|
|
76
77
|
return (0, _react2.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t> span:hover[aria-disabled='false'] {\n\t\t\t\tcolor: ", ";\n\t\t\t\tbackground-color: ", ";\n\t\t\t}\n\t\t\t", "\n\t\t\t> span[aria-disabled='true'] {\n\t\t\t\tcolor: ", ";\n\t\t\t}\n\t\t\t:focus > span[aria-disabled='false'] {\n\t\t\t\t", ";\n\t\t\t}\n\t\t\t:focus-visible,\n\t\t\t:focus-visible > span[aria-disabled='false'] {\n\t\t\t\toutline: none;\n\t\t\t}\n\t\t"])), "var(--ds-text, #292A2E)", "var(--ds-background-neutral-subtle-hovered, rgb(244, 245, 247))", !submenuActive && "\n\t\t\t\t\t> span:active[aria-disabled='false'] {\n\t\t\t\t\t\tbackground-color: ".concat("var(--ds-background-neutral-subtle-pressed, rgb(179, 212, 255))", ";\n\t\t\t\t\t}"), "var(--ds-text-disabled, #080F214A)", focusedMenuItemStyle); // The default focus-visible style is removed to ensure consistency across browsers
|
|
@@ -168,22 +168,37 @@ var isReplaceDocOperation = exports.isReplaceDocOperation = function isReplaceDo
|
|
|
168
168
|
*
|
|
169
169
|
* @param doc1 PMNode
|
|
170
170
|
* @param doc2 PMNode
|
|
171
|
+
* @param attributesToIgnore Specific array of attribute keys to ignore - defaults to ignoring all
|
|
171
172
|
* @returns boolean
|
|
172
173
|
*/
|
|
173
|
-
function areNodesEqualIgnoreAttrs(node1, node2) {
|
|
174
|
+
function areNodesEqualIgnoreAttrs(node1, node2, attributesToIgnore) {
|
|
174
175
|
if (node1.isText) {
|
|
175
176
|
return node1.eq(node2);
|
|
176
177
|
}
|
|
177
|
-
|
|
178
|
+
|
|
179
|
+
// If no attributes to ignore, compare all attributes
|
|
180
|
+
if (!attributesToIgnore || attributesToIgnore.length === 0) {
|
|
181
|
+
return node1 === node2 || node1.hasMarkup(node2.type, node1.attrs, node2.marks) && areFragmentsEqual(node1.content, node2.content);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Build attrs to compare by excluding ignored attributes
|
|
185
|
+
var attrsToCompare = node2.attrs;
|
|
186
|
+
var ignoreSet = new Set(attributesToIgnore);
|
|
187
|
+
for (var key in node2.attrs) {
|
|
188
|
+
if (ignoreSet.has(key)) {
|
|
189
|
+
attrsToCompare[key] = node1.attrs[key];
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return node1 === node2 || node1.hasMarkup(node2.type, attrsToCompare, node2.marks) && areFragmentsEqual(node1.content, node2.content, attributesToIgnore);
|
|
178
193
|
}
|
|
179
|
-
function areFragmentsEqual(frag1, frag2) {
|
|
194
|
+
function areFragmentsEqual(frag1, frag2, attributesToIgnore) {
|
|
180
195
|
if (frag1.content.length !== frag2.content.length) {
|
|
181
196
|
return false;
|
|
182
197
|
}
|
|
183
198
|
var childrenEqual = true;
|
|
184
199
|
frag1.content.forEach(function (child, i) {
|
|
185
200
|
var otherChild = frag2.child(i);
|
|
186
|
-
if (child === otherChild || otherChild && areNodesEqualIgnoreAttrs(child, otherChild)) {
|
|
201
|
+
if (child === otherChild || otherChild && areNodesEqualIgnoreAttrs(child, otherChild, attributesToIgnore)) {
|
|
187
202
|
return;
|
|
188
203
|
}
|
|
189
204
|
childrenEqual = false;
|
|
@@ -128,7 +128,7 @@ export const ExtensionLabel = ({
|
|
|
128
128
|
showUpdatedLivePages1PBodiedExtensionUI,
|
|
129
129
|
showLivePagesBodiedMacrosRendererView,
|
|
130
130
|
showBodiedExtensionRendererView,
|
|
131
|
-
pluginInjectionApi
|
|
131
|
+
pluginInjectionApi: _pluginInjectionApi
|
|
132
132
|
}) => {
|
|
133
133
|
const isInlineExtension = extensionName === 'inlineExtension';
|
|
134
134
|
const showDefaultBodiedStyles = expValEquals('cc_editor_ttvc_release_bundle_one', 'isEnabled', true) ? isBodiedMacro : isBodiedMacro && !isNodeHovered;
|
|
@@ -29,7 +29,7 @@ function useStaticPlugins(plugins) {
|
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
*
|
|
32
|
-
* NOTE: Generally you want to use `
|
|
32
|
+
* NOTE: Generally you want to use `useSharedPluginStateWithSelector` over this which behaves similarly
|
|
33
33
|
* but selects a slice of the state which is more performant.
|
|
34
34
|
*
|
|
35
35
|
* ⚠️⚠️⚠️ This is a debounced hook ⚠️⚠️⚠️
|
|
@@ -32,9 +32,9 @@ import { usePluginStateEffect } from '../usePluginStateEffect';
|
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
*
|
|
35
|
-
* NOTE: Generally you want to use `
|
|
35
|
+
* NOTE: Generally you want to use `useSharedPluginStateWithSelector` over this which behaves similarly
|
|
36
36
|
* but selects a slice of the state which is more performant.
|
|
37
|
-
*
|
|
37
|
+
*
|
|
38
38
|
* ⚠️⚠️⚠️ This is a debounced hook ⚠️⚠️⚠️
|
|
39
39
|
* If the plugins you are listening to generate multiple shared states while the user is typing,
|
|
40
40
|
* your React Component will get only the last one.
|
|
@@ -10,11 +10,36 @@ export const placeholderTextMessages = defineMessages({
|
|
|
10
10
|
defaultMessage: '/ to insert',
|
|
11
11
|
description: 'Short placeholder text for empty nodes'
|
|
12
12
|
},
|
|
13
|
+
shortEmptyNodePlaceholderADFSlashShortcut: {
|
|
14
|
+
id: 'fabric.editor.shortEmptyNodePlaceholderSlash',
|
|
15
|
+
defaultMessage: '/',
|
|
16
|
+
description: 'Slash character in short empty node placeholder'
|
|
17
|
+
},
|
|
18
|
+
shortEmptyNodePlaceholderADFSuffix: {
|
|
19
|
+
id: 'fabric.editor.shortEmptyNodePlaceholderSuffix',
|
|
20
|
+
defaultMessage: ' to insert',
|
|
21
|
+
description: 'Text after slash in short empty node placeholder'
|
|
22
|
+
},
|
|
13
23
|
longEmptyNodePlaceholderText: {
|
|
14
24
|
id: 'fabric.editor.longEmptyNodePlaceholderText',
|
|
15
25
|
defaultMessage: 'Type / to insert elements',
|
|
16
26
|
description: 'Long placeholder text for empty nodes'
|
|
17
27
|
},
|
|
28
|
+
longEmptyNodePlaceholderADFPrefix: {
|
|
29
|
+
id: 'fabric.editor.longEmptyNodePlaceholderPrefix',
|
|
30
|
+
defaultMessage: 'Type ',
|
|
31
|
+
description: 'Text before slash in long empty node placeholder'
|
|
32
|
+
},
|
|
33
|
+
longEmptyNodePlaceholderADFSlashShortcut: {
|
|
34
|
+
id: 'fabric.editor.longEmptyNodePlaceholderSlash',
|
|
35
|
+
defaultMessage: '/',
|
|
36
|
+
description: 'Slash character in long empty node placeholder'
|
|
37
|
+
},
|
|
38
|
+
longEmptyNodePlaceholderADFSuffix: {
|
|
39
|
+
id: 'fabric.editor.longEmptyNodePlaceholderSuffix',
|
|
40
|
+
defaultMessage: ' to insert elements',
|
|
41
|
+
description: 'Text after slash in long empty node placeholder'
|
|
42
|
+
},
|
|
18
43
|
syncBlockPlaceholderText: {
|
|
19
44
|
id: 'fabric.editor.syncBlockPlaceholderText',
|
|
20
45
|
defaultMessage: 'Add content then copy this synced block to access it across spaces',
|
|
@@ -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 = "
|
|
4
|
+
const packageVersion = "110.32.3";
|
|
5
5
|
const sanitiseSentryEvents = (data, _hint) => {
|
|
6
6
|
// Remove URL as it has UGC
|
|
7
7
|
// 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 = "
|
|
17
|
+
const packageVersion = "110.32.3";
|
|
18
18
|
const halfFocusRing = 1;
|
|
19
19
|
const dropOffset = '0, 8';
|
|
20
20
|
const fadeIn = keyframes({
|
|
@@ -12,6 +12,7 @@ import React, { PureComponent, useContext } from 'react';
|
|
|
12
12
|
import { css, jsx } from '@emotion/react';
|
|
13
13
|
import { akEditorFloatingPanelZIndex } from '@atlaskit/editor-shared-styles';
|
|
14
14
|
import { CustomItem, MenuGroup, Section } from '@atlaskit/menu';
|
|
15
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
15
16
|
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
16
17
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
17
18
|
import Tooltip from '@atlaskit/tooltip';
|
|
@@ -55,8 +56,8 @@ const buttonStyles = (isActive, submenuActive) => {
|
|
|
55
56
|
> span,
|
|
56
57
|
> span:hover,
|
|
57
58
|
> span:active {
|
|
58
|
-
background: ${
|
|
59
|
-
color: ${
|
|
59
|
+
background: ${`var(--ds-background-selected, ${fg('platform_editor_updated_dropdown_colors') ? '#E9F2FE' : '#6c798f'})`};
|
|
60
|
+
color: ${`var(--ds-text-selected, ${fg('platform_editor_updated_dropdown_colors') ? '#1868DB' : '#0C66E4'})`};
|
|
60
61
|
}
|
|
61
62
|
:focus > span[aria-disabled='false'] {
|
|
62
63
|
${focusedMenuItemStyle};
|
|
@@ -76,8 +77,8 @@ const buttonStyles = (isActive, submenuActive) => {
|
|
|
76
77
|
> span,
|
|
77
78
|
> span:hover,
|
|
78
79
|
> span:active {
|
|
79
|
-
background: ${
|
|
80
|
-
color: ${
|
|
80
|
+
background: ${`var(--ds-background-selected, ${fg('platform_editor_updated_dropdown_colors') ? '#E9F2FE' : '#6c798f'})`};
|
|
81
|
+
color: ${`var(--ds-text-selected, ${fg('platform_editor_updated_dropdown_colors') ? '#1868DB' : '#0C66E4'})`};
|
|
81
82
|
}
|
|
82
83
|
:focus > span[aria-disabled='false'] {
|
|
83
84
|
${focusedMenuItemStyle};
|
|
@@ -155,22 +155,37 @@ export const isReplaceDocOperation = (transactions, oldState) => {
|
|
|
155
155
|
*
|
|
156
156
|
* @param doc1 PMNode
|
|
157
157
|
* @param doc2 PMNode
|
|
158
|
+
* @param attributesToIgnore Specific array of attribute keys to ignore - defaults to ignoring all
|
|
158
159
|
* @returns boolean
|
|
159
160
|
*/
|
|
160
|
-
export function areNodesEqualIgnoreAttrs(node1, node2) {
|
|
161
|
+
export function areNodesEqualIgnoreAttrs(node1, node2, attributesToIgnore) {
|
|
161
162
|
if (node1.isText) {
|
|
162
163
|
return node1.eq(node2);
|
|
163
164
|
}
|
|
164
|
-
|
|
165
|
+
|
|
166
|
+
// If no attributes to ignore, compare all attributes
|
|
167
|
+
if (!attributesToIgnore || attributesToIgnore.length === 0) {
|
|
168
|
+
return node1 === node2 || node1.hasMarkup(node2.type, node1.attrs, node2.marks) && areFragmentsEqual(node1.content, node2.content);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Build attrs to compare by excluding ignored attributes
|
|
172
|
+
const attrsToCompare = node2.attrs;
|
|
173
|
+
const ignoreSet = new Set(attributesToIgnore);
|
|
174
|
+
for (const key in node2.attrs) {
|
|
175
|
+
if (ignoreSet.has(key)) {
|
|
176
|
+
attrsToCompare[key] = node1.attrs[key];
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return node1 === node2 || node1.hasMarkup(node2.type, attrsToCompare, node2.marks) && areFragmentsEqual(node1.content, node2.content, attributesToIgnore);
|
|
165
180
|
}
|
|
166
|
-
function areFragmentsEqual(frag1, frag2) {
|
|
181
|
+
function areFragmentsEqual(frag1, frag2, attributesToIgnore) {
|
|
167
182
|
if (frag1.content.length !== frag2.content.length) {
|
|
168
183
|
return false;
|
|
169
184
|
}
|
|
170
185
|
let childrenEqual = true;
|
|
171
186
|
frag1.content.forEach((child, i) => {
|
|
172
187
|
const otherChild = frag2.child(i);
|
|
173
|
-
if (child === otherChild || otherChild && areNodesEqualIgnoreAttrs(child, otherChild)) {
|
|
188
|
+
if (child === otherChild || otherChild && areNodesEqualIgnoreAttrs(child, otherChild, attributesToIgnore)) {
|
|
174
189
|
return;
|
|
175
190
|
}
|
|
176
191
|
childrenEqual = false;
|
|
@@ -129,7 +129,7 @@ export var ExtensionLabel = function ExtensionLabel(_ref) {
|
|
|
129
129
|
showUpdatedLivePages1PBodiedExtensionUI = _ref.showUpdatedLivePages1PBodiedExtensionUI,
|
|
130
130
|
showLivePagesBodiedMacrosRendererView = _ref.showLivePagesBodiedMacrosRendererView,
|
|
131
131
|
showBodiedExtensionRendererView = _ref.showBodiedExtensionRendererView,
|
|
132
|
-
|
|
132
|
+
_pluginInjectionApi = _ref.pluginInjectionApi;
|
|
133
133
|
var isInlineExtension = extensionName === 'inlineExtension';
|
|
134
134
|
var showDefaultBodiedStyles = expValEquals('cc_editor_ttvc_release_bundle_one', 'isEnabled', true) ? isBodiedMacro : isBodiedMacro && !isNodeHovered;
|
|
135
135
|
var shouldShowBodiedMacroLabel = getShouldShowBodiedMacroLabel(isBodiedMacro, isNodeHovered, showLivePagesBodiedMacrosRendererView, showBodiedExtensionRendererView, showUpdatedLivePages1PBodiedExtensionUI);
|
|
@@ -37,7 +37,7 @@ function useStaticPlugins(plugins) {
|
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
*
|
|
40
|
-
* NOTE: Generally you want to use `
|
|
40
|
+
* NOTE: Generally you want to use `useSharedPluginStateWithSelector` over this which behaves similarly
|
|
41
41
|
* but selects a slice of the state which is more performant.
|
|
42
42
|
*
|
|
43
43
|
* ⚠️⚠️⚠️ This is a debounced hook ⚠️⚠️⚠️
|
|
@@ -35,9 +35,9 @@ import { usePluginStateEffect } from '../usePluginStateEffect';
|
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
37
|
*
|
|
38
|
-
* NOTE: Generally you want to use `
|
|
38
|
+
* NOTE: Generally you want to use `useSharedPluginStateWithSelector` over this which behaves similarly
|
|
39
39
|
* but selects a slice of the state which is more performant.
|
|
40
|
-
*
|
|
40
|
+
*
|
|
41
41
|
* ⚠️⚠️⚠️ This is a debounced hook ⚠️⚠️⚠️
|
|
42
42
|
* If the plugins you are listening to generate multiple shared states while the user is typing,
|
|
43
43
|
* your React Component will get only the last one.
|
|
@@ -10,11 +10,36 @@ export var placeholderTextMessages = defineMessages({
|
|
|
10
10
|
defaultMessage: '/ to insert',
|
|
11
11
|
description: 'Short placeholder text for empty nodes'
|
|
12
12
|
},
|
|
13
|
+
shortEmptyNodePlaceholderADFSlashShortcut: {
|
|
14
|
+
id: 'fabric.editor.shortEmptyNodePlaceholderSlash',
|
|
15
|
+
defaultMessage: '/',
|
|
16
|
+
description: 'Slash character in short empty node placeholder'
|
|
17
|
+
},
|
|
18
|
+
shortEmptyNodePlaceholderADFSuffix: {
|
|
19
|
+
id: 'fabric.editor.shortEmptyNodePlaceholderSuffix',
|
|
20
|
+
defaultMessage: ' to insert',
|
|
21
|
+
description: 'Text after slash in short empty node placeholder'
|
|
22
|
+
},
|
|
13
23
|
longEmptyNodePlaceholderText: {
|
|
14
24
|
id: 'fabric.editor.longEmptyNodePlaceholderText',
|
|
15
25
|
defaultMessage: 'Type / to insert elements',
|
|
16
26
|
description: 'Long placeholder text for empty nodes'
|
|
17
27
|
},
|
|
28
|
+
longEmptyNodePlaceholderADFPrefix: {
|
|
29
|
+
id: 'fabric.editor.longEmptyNodePlaceholderPrefix',
|
|
30
|
+
defaultMessage: 'Type ',
|
|
31
|
+
description: 'Text before slash in long empty node placeholder'
|
|
32
|
+
},
|
|
33
|
+
longEmptyNodePlaceholderADFSlashShortcut: {
|
|
34
|
+
id: 'fabric.editor.longEmptyNodePlaceholderSlash',
|
|
35
|
+
defaultMessage: '/',
|
|
36
|
+
description: 'Slash character in long empty node placeholder'
|
|
37
|
+
},
|
|
38
|
+
longEmptyNodePlaceholderADFSuffix: {
|
|
39
|
+
id: 'fabric.editor.longEmptyNodePlaceholderSuffix',
|
|
40
|
+
defaultMessage: ' to insert elements',
|
|
41
|
+
description: 'Text after slash in long empty node placeholder'
|
|
42
|
+
},
|
|
18
43
|
syncBlockPlaceholderText: {
|
|
19
44
|
id: 'fabric.editor.syncBlockPlaceholderText',
|
|
20
45
|
defaultMessage: 'Add content then copy this synced block to access it across spaces',
|
|
@@ -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 = "
|
|
10
|
+
var packageVersion = "110.32.3";
|
|
11
11
|
var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
|
|
12
12
|
// Remove URL as it has UGC
|
|
13
13
|
// 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 = "
|
|
24
|
+
var packageVersion = "110.32.3";
|
|
25
25
|
var halfFocusRing = 1;
|
|
26
26
|
var dropOffset = '0, 8';
|
|
27
27
|
var fadeIn = keyframes({
|
|
@@ -27,6 +27,7 @@ import React, { PureComponent, useContext } from 'react';
|
|
|
27
27
|
import { css, jsx } from '@emotion/react';
|
|
28
28
|
import { akEditorFloatingPanelZIndex } from '@atlaskit/editor-shared-styles';
|
|
29
29
|
import { CustomItem, MenuGroup, Section } from '@atlaskit/menu';
|
|
30
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
30
31
|
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
31
32
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
32
33
|
import Tooltip from '@atlaskit/tooltip';
|
|
@@ -55,14 +56,14 @@ var buttonStyles = function buttonStyles(isActive, submenuActive) {
|
|
|
55
56
|
* Hack for item to imitate old dropdown-menu selected styles
|
|
56
57
|
*/
|
|
57
58
|
// eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- needs manual remediation
|
|
58
|
-
return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\t\t\t\tposition: relative;\n\t\t\t\t&::before {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\twidth: 2px;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tleft: 0;\n\t\t\t\t\ttop: 0;\n\t\t\t\t\tbackground: ", ";\n\t\t\t\t\tcontent: '';\n\t\t\t\t}\n\t\t\t\t> span,\n\t\t\t\t> span:hover,\n\t\t\t\t> span:active {\n\t\t\t\t\tbackground: ", ";\n\t\t\t\t\tcolor: ", ";\n\t\t\t\t}\n\t\t\t\t:focus > span[aria-disabled='false'] {\n\t\t\t\t\t", ";\n\t\t\t\t}\n\t\t\t\t:focus-visible,\n\t\t\t\t:focus-visible > span[aria-disabled='false'] {\n\t\t\t\t\toutline: none;\n\t\t\t\t}\n\t\t\t"])), "var(--ds-border-selected, transparent)", "var(--ds-background-selected, #6c798f)", "var(--ds-text-selected, #0C66E4)", focusedMenuItemStyle);
|
|
59
|
+
return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\t\t\t\tposition: relative;\n\t\t\t\t&::before {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\twidth: 2px;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tleft: 0;\n\t\t\t\t\ttop: 0;\n\t\t\t\t\tbackground: ", ";\n\t\t\t\t\tcontent: '';\n\t\t\t\t}\n\t\t\t\t> span,\n\t\t\t\t> span:hover,\n\t\t\t\t> span:active {\n\t\t\t\t\tbackground: ", ";\n\t\t\t\t\tcolor: ", ";\n\t\t\t\t}\n\t\t\t\t:focus > span[aria-disabled='false'] {\n\t\t\t\t\t", ";\n\t\t\t\t}\n\t\t\t\t:focus-visible,\n\t\t\t\t:focus-visible > span[aria-disabled='false'] {\n\t\t\t\t\toutline: none;\n\t\t\t\t}\n\t\t\t"])), "var(--ds-border-selected, transparent)", "var(--ds-background-selected, ".concat(fg('platform_editor_updated_dropdown_colors') ? '#E9F2FE' : '#6c798f', ")"), "var(--ds-text-selected, ".concat(fg('platform_editor_updated_dropdown_colors') ? '#1868DB' : '#0C66E4', ")"), focusedMenuItemStyle);
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
/**
|
|
62
63
|
* Hack for item to imitate old dropdown-menu selected styles
|
|
63
64
|
*/
|
|
64
65
|
// eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- needs manual remediation
|
|
65
|
-
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n\t\t\t> span,\n\t\t\t> span:hover,\n\t\t\t> span:active {\n\t\t\t\tbackground: ", ";\n\t\t\t\tcolor: ", ";\n\t\t\t}\n\t\t\t:focus > span[aria-disabled='false'] {\n\t\t\t\t", ";\n\t\t\t}\n\t\t\t:focus-visible,\n\t\t\t:focus-visible > span[aria-disabled='false'] {\n\t\t\t\toutline: none;\n\t\t\t}\n\t\t"])), "var(--ds-background-selected, #6c798f)", "var(--ds-text-selected, #0C66E4)", focusedMenuItemStyle);
|
|
66
|
+
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n\t\t\t> span,\n\t\t\t> span:hover,\n\t\t\t> span:active {\n\t\t\t\tbackground: ", ";\n\t\t\t\tcolor: ", ";\n\t\t\t}\n\t\t\t:focus > span[aria-disabled='false'] {\n\t\t\t\t", ";\n\t\t\t}\n\t\t\t:focus-visible,\n\t\t\t:focus-visible > span[aria-disabled='false'] {\n\t\t\t\toutline: none;\n\t\t\t}\n\t\t"])), "var(--ds-background-selected, ".concat(fg('platform_editor_updated_dropdown_colors') ? '#E9F2FE' : '#6c798f', ")"), "var(--ds-text-selected, ".concat(fg('platform_editor_updated_dropdown_colors') ? '#1868DB' : '#0C66E4', ")"), focusedMenuItemStyle);
|
|
66
67
|
} else {
|
|
67
68
|
// eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- needs manual remediation
|
|
68
69
|
return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n\t\t\t> span:hover[aria-disabled='false'] {\n\t\t\t\tcolor: ", ";\n\t\t\t\tbackground-color: ", ";\n\t\t\t}\n\t\t\t", "\n\t\t\t> span[aria-disabled='true'] {\n\t\t\t\tcolor: ", ";\n\t\t\t}\n\t\t\t:focus > span[aria-disabled='false'] {\n\t\t\t\t", ";\n\t\t\t}\n\t\t\t:focus-visible,\n\t\t\t:focus-visible > span[aria-disabled='false'] {\n\t\t\t\toutline: none;\n\t\t\t}\n\t\t"])), "var(--ds-text, #292A2E)", "var(--ds-background-neutral-subtle-hovered, rgb(244, 245, 247))", !submenuActive && "\n\t\t\t\t\t> span:active[aria-disabled='false'] {\n\t\t\t\t\t\tbackground-color: ".concat("var(--ds-background-neutral-subtle-pressed, rgb(179, 212, 255))", ";\n\t\t\t\t\t}"), "var(--ds-text-disabled, #080F214A)", focusedMenuItemStyle); // The default focus-visible style is removed to ensure consistency across browsers
|
|
@@ -153,22 +153,37 @@ export var isReplaceDocOperation = function isReplaceDocOperation(transactions,
|
|
|
153
153
|
*
|
|
154
154
|
* @param doc1 PMNode
|
|
155
155
|
* @param doc2 PMNode
|
|
156
|
+
* @param attributesToIgnore Specific array of attribute keys to ignore - defaults to ignoring all
|
|
156
157
|
* @returns boolean
|
|
157
158
|
*/
|
|
158
|
-
export function areNodesEqualIgnoreAttrs(node1, node2) {
|
|
159
|
+
export function areNodesEqualIgnoreAttrs(node1, node2, attributesToIgnore) {
|
|
159
160
|
if (node1.isText) {
|
|
160
161
|
return node1.eq(node2);
|
|
161
162
|
}
|
|
162
|
-
|
|
163
|
+
|
|
164
|
+
// If no attributes to ignore, compare all attributes
|
|
165
|
+
if (!attributesToIgnore || attributesToIgnore.length === 0) {
|
|
166
|
+
return node1 === node2 || node1.hasMarkup(node2.type, node1.attrs, node2.marks) && areFragmentsEqual(node1.content, node2.content);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Build attrs to compare by excluding ignored attributes
|
|
170
|
+
var attrsToCompare = node2.attrs;
|
|
171
|
+
var ignoreSet = new Set(attributesToIgnore);
|
|
172
|
+
for (var key in node2.attrs) {
|
|
173
|
+
if (ignoreSet.has(key)) {
|
|
174
|
+
attrsToCompare[key] = node1.attrs[key];
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return node1 === node2 || node1.hasMarkup(node2.type, attrsToCompare, node2.marks) && areFragmentsEqual(node1.content, node2.content, attributesToIgnore);
|
|
163
178
|
}
|
|
164
|
-
function areFragmentsEqual(frag1, frag2) {
|
|
179
|
+
function areFragmentsEqual(frag1, frag2, attributesToIgnore) {
|
|
165
180
|
if (frag1.content.length !== frag2.content.length) {
|
|
166
181
|
return false;
|
|
167
182
|
}
|
|
168
183
|
var childrenEqual = true;
|
|
169
184
|
frag1.content.forEach(function (child, i) {
|
|
170
185
|
var otherChild = frag2.child(i);
|
|
171
|
-
if (child === otherChild || otherChild && areNodesEqualIgnoreAttrs(child, otherChild)) {
|
|
186
|
+
if (child === otherChild || otherChild && areNodesEqualIgnoreAttrs(child, otherChild, attributesToIgnore)) {
|
|
172
187
|
return;
|
|
173
188
|
}
|
|
174
189
|
childrenEqual = false;
|
|
@@ -19,5 +19,5 @@ type ExtensionLabelProps = {
|
|
|
19
19
|
showUpdatedLivePages1PBodiedExtensionUI?: boolean;
|
|
20
20
|
text: string;
|
|
21
21
|
};
|
|
22
|
-
export declare const ExtensionLabel: ({ text, extensionName, isNodeHovered, customContainerStyles, isNodeNested, setIsNodeHovered, isBodiedMacro, showUpdatedLivePages1PBodiedExtensionUI, showLivePagesBodiedMacrosRendererView, showBodiedExtensionRendererView, pluginInjectionApi, }: ExtensionLabelProps) => jsx.JSX.Element;
|
|
22
|
+
export declare const ExtensionLabel: ({ text, extensionName, isNodeHovered, customContainerStyles, isNodeNested, setIsNodeHovered, isBodiedMacro, showUpdatedLivePages1PBodiedExtensionUI, showLivePagesBodiedMacrosRendererView, showBodiedExtensionRendererView, pluginInjectionApi: _pluginInjectionApi, }: ExtensionLabelProps) => jsx.JSX.Element;
|
|
23
23
|
export {};
|
|
@@ -8,7 +8,7 @@ type Options = {
|
|
|
8
8
|
};
|
|
9
9
|
/**
|
|
10
10
|
*
|
|
11
|
-
* NOTE: Generally you want to use `
|
|
11
|
+
* NOTE: Generally you want to use `useSharedPluginStateWithSelector` over this which behaves similarly
|
|
12
12
|
* but selects a slice of the state which is more performant.
|
|
13
13
|
*
|
|
14
14
|
* ⚠️⚠️⚠️ This is a debounced hook ⚠️⚠️⚠️
|
|
@@ -31,7 +31,7 @@ type Options = {
|
|
|
31
31
|
};
|
|
32
32
|
/**
|
|
33
33
|
*
|
|
34
|
-
* NOTE: Generally you want to use `
|
|
34
|
+
* NOTE: Generally you want to use `useSharedPluginStateWithSelector` over this which behaves similarly
|
|
35
35
|
* but selects a slice of the state which is more performant.
|
|
36
36
|
*
|
|
37
37
|
* ⚠️⚠️⚠️ This is a debounced hook ⚠️⚠️⚠️
|
|
@@ -9,11 +9,36 @@ export declare const placeholderTextMessages: {
|
|
|
9
9
|
defaultMessage: string;
|
|
10
10
|
description: string;
|
|
11
11
|
};
|
|
12
|
+
shortEmptyNodePlaceholderADFSlashShortcut: {
|
|
13
|
+
id: string;
|
|
14
|
+
defaultMessage: string;
|
|
15
|
+
description: string;
|
|
16
|
+
};
|
|
17
|
+
shortEmptyNodePlaceholderADFSuffix: {
|
|
18
|
+
id: string;
|
|
19
|
+
defaultMessage: string;
|
|
20
|
+
description: string;
|
|
21
|
+
};
|
|
12
22
|
longEmptyNodePlaceholderText: {
|
|
13
23
|
id: string;
|
|
14
24
|
defaultMessage: string;
|
|
15
25
|
description: string;
|
|
16
26
|
};
|
|
27
|
+
longEmptyNodePlaceholderADFPrefix: {
|
|
28
|
+
id: string;
|
|
29
|
+
defaultMessage: string;
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
longEmptyNodePlaceholderADFSlashShortcut: {
|
|
33
|
+
id: string;
|
|
34
|
+
defaultMessage: string;
|
|
35
|
+
description: string;
|
|
36
|
+
};
|
|
37
|
+
longEmptyNodePlaceholderADFSuffix: {
|
|
38
|
+
id: string;
|
|
39
|
+
defaultMessage: string;
|
|
40
|
+
description: string;
|
|
41
|
+
};
|
|
17
42
|
syncBlockPlaceholderText: {
|
|
18
43
|
id: string;
|
|
19
44
|
defaultMessage: string;
|
|
@@ -30,7 +30,8 @@ export declare const isReplaceDocOperation: (transactions: readonly Transaction[
|
|
|
30
30
|
*
|
|
31
31
|
* @param doc1 PMNode
|
|
32
32
|
* @param doc2 PMNode
|
|
33
|
+
* @param attributesToIgnore Specific array of attribute keys to ignore - defaults to ignoring all
|
|
33
34
|
* @returns boolean
|
|
34
35
|
*/
|
|
35
|
-
export declare function areNodesEqualIgnoreAttrs(node1: Node, node2: Node): boolean;
|
|
36
|
+
export declare function areNodesEqualIgnoreAttrs(node1: Node, node2: Node, attributesToIgnore?: string[]): boolean;
|
|
36
37
|
export {};
|
|
@@ -19,5 +19,5 @@ type ExtensionLabelProps = {
|
|
|
19
19
|
showUpdatedLivePages1PBodiedExtensionUI?: boolean;
|
|
20
20
|
text: string;
|
|
21
21
|
};
|
|
22
|
-
export declare const ExtensionLabel: ({ text, extensionName, isNodeHovered, customContainerStyles, isNodeNested, setIsNodeHovered, isBodiedMacro, showUpdatedLivePages1PBodiedExtensionUI, showLivePagesBodiedMacrosRendererView, showBodiedExtensionRendererView, pluginInjectionApi, }: ExtensionLabelProps) => jsx.JSX.Element;
|
|
22
|
+
export declare const ExtensionLabel: ({ text, extensionName, isNodeHovered, customContainerStyles, isNodeNested, setIsNodeHovered, isBodiedMacro, showUpdatedLivePages1PBodiedExtensionUI, showLivePagesBodiedMacrosRendererView, showBodiedExtensionRendererView, pluginInjectionApi: _pluginInjectionApi, }: ExtensionLabelProps) => jsx.JSX.Element;
|
|
23
23
|
export {};
|
|
@@ -8,7 +8,7 @@ type Options = {
|
|
|
8
8
|
};
|
|
9
9
|
/**
|
|
10
10
|
*
|
|
11
|
-
* NOTE: Generally you want to use `
|
|
11
|
+
* NOTE: Generally you want to use `useSharedPluginStateWithSelector` over this which behaves similarly
|
|
12
12
|
* but selects a slice of the state which is more performant.
|
|
13
13
|
*
|
|
14
14
|
* ⚠️⚠️⚠️ This is a debounced hook ⚠️⚠️⚠️
|
package/dist/types-ts4.5/hooks/useSharedPluginStateSelector/useSharedPluginStateSelector.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ type Options = {
|
|
|
31
31
|
};
|
|
32
32
|
/**
|
|
33
33
|
*
|
|
34
|
-
* NOTE: Generally you want to use `
|
|
34
|
+
* NOTE: Generally you want to use `useSharedPluginStateWithSelector` over this which behaves similarly
|
|
35
35
|
* but selects a slice of the state which is more performant.
|
|
36
36
|
*
|
|
37
37
|
* ⚠️⚠️⚠️ This is a debounced hook ⚠️⚠️⚠️
|
|
@@ -9,11 +9,36 @@ export declare const placeholderTextMessages: {
|
|
|
9
9
|
defaultMessage: string;
|
|
10
10
|
description: string;
|
|
11
11
|
};
|
|
12
|
+
shortEmptyNodePlaceholderADFSlashShortcut: {
|
|
13
|
+
id: string;
|
|
14
|
+
defaultMessage: string;
|
|
15
|
+
description: string;
|
|
16
|
+
};
|
|
17
|
+
shortEmptyNodePlaceholderADFSuffix: {
|
|
18
|
+
id: string;
|
|
19
|
+
defaultMessage: string;
|
|
20
|
+
description: string;
|
|
21
|
+
};
|
|
12
22
|
longEmptyNodePlaceholderText: {
|
|
13
23
|
id: string;
|
|
14
24
|
defaultMessage: string;
|
|
15
25
|
description: string;
|
|
16
26
|
};
|
|
27
|
+
longEmptyNodePlaceholderADFPrefix: {
|
|
28
|
+
id: string;
|
|
29
|
+
defaultMessage: string;
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
longEmptyNodePlaceholderADFSlashShortcut: {
|
|
33
|
+
id: string;
|
|
34
|
+
defaultMessage: string;
|
|
35
|
+
description: string;
|
|
36
|
+
};
|
|
37
|
+
longEmptyNodePlaceholderADFSuffix: {
|
|
38
|
+
id: string;
|
|
39
|
+
defaultMessage: string;
|
|
40
|
+
description: string;
|
|
41
|
+
};
|
|
17
42
|
syncBlockPlaceholderText: {
|
|
18
43
|
id: string;
|
|
19
44
|
defaultMessage: string;
|
|
@@ -30,7 +30,8 @@ export declare const isReplaceDocOperation: (transactions: readonly Transaction[
|
|
|
30
30
|
*
|
|
31
31
|
* @param doc1 PMNode
|
|
32
32
|
* @param doc2 PMNode
|
|
33
|
+
* @param attributesToIgnore Specific array of attribute keys to ignore - defaults to ignoring all
|
|
33
34
|
* @returns boolean
|
|
34
35
|
*/
|
|
35
|
-
export declare function areNodesEqualIgnoreAttrs(node1: Node, node2: Node): boolean;
|
|
36
|
+
export declare function areNodesEqualIgnoreAttrs(node1: Node, node2: Node, attributesToIgnore?: string[]): boolean;
|
|
36
37
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-common",
|
|
3
|
-
"version": "110.
|
|
3
|
+
"version": "110.33.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/"
|
|
@@ -162,6 +162,9 @@
|
|
|
162
162
|
"platform-custom-icon-migration": {
|
|
163
163
|
"type": "boolean"
|
|
164
164
|
},
|
|
165
|
+
"platform_editor_updated_dropdown_colors": {
|
|
166
|
+
"type": "boolean"
|
|
167
|
+
},
|
|
165
168
|
"linking_platform_datasource_assets_objects": {
|
|
166
169
|
"type": "boolean"
|
|
167
170
|
},
|