@atlaskit/editor-core 197.2.1 → 197.2.3
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 +18 -0
- package/dist/cjs/actions/index.js +2 -1
- package/dist/cjs/composable-editor/core-editor.js +2 -2
- package/dist/cjs/create-editor/ErrorBoundary.js +2 -2
- package/dist/cjs/create-editor/ReactEditorView.js +17 -13
- package/dist/cjs/create-editor/create-schema.js +2 -2
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/ui/Appearance/FullPage/FullPage.js +2 -2
- package/dist/cjs/ui/Appearance/FullPage/FullPageContentArea.js +57 -66
- package/dist/cjs/ui/Appearance/FullPage/StyledComponents.js +1 -18
- package/dist/cjs/ui/ContentStyles/index.js +2 -2
- package/dist/cjs/ui/ContextPanel/index.js +1 -8
- package/dist/cjs/ui/ToolbarFeedback/index.js +2 -2
- package/dist/cjs/ui/WithHelpTrigger/index.js +2 -2
- package/dist/cjs/utils/document.js +0 -24
- package/dist/cjs/utils/findChangedNodesFromTransaction.js +28 -0
- package/dist/cjs/utils/outdatedBrowsers.js +30 -0
- package/dist/cjs/utils/sanitizeNodes.js +63 -0
- package/dist/cjs/utils/validateNodes.js +19 -0
- package/dist/cjs/version-wrapper.js +1 -1
- package/dist/es2019/actions/index.js +2 -1
- package/dist/es2019/composable-editor/core-editor.js +1 -1
- package/dist/es2019/create-editor/ErrorBoundary.js +1 -1
- package/dist/es2019/create-editor/ReactEditorView.js +5 -1
- package/dist/es2019/create-editor/create-schema.js +1 -1
- package/dist/es2019/index.js +1 -1
- package/dist/es2019/ui/Appearance/FullPage/FullPage.js +1 -1
- package/dist/es2019/ui/Appearance/FullPage/FullPageContentArea.js +58 -68
- package/dist/es2019/ui/Appearance/FullPage/StyledComponents.js +1 -18
- package/dist/es2019/ui/ContentStyles/index.js +1 -1
- package/dist/es2019/ui/ContextPanel/index.js +0 -5
- package/dist/es2019/ui/ToolbarFeedback/index.js +1 -1
- package/dist/es2019/ui/WithHelpTrigger/index.js +1 -1
- package/dist/es2019/utils/document.js +0 -20
- package/dist/es2019/utils/findChangedNodesFromTransaction.js +20 -0
- package/dist/es2019/utils/outdatedBrowsers.js +24 -0
- package/dist/es2019/utils/sanitizeNodes.js +49 -0
- package/dist/es2019/utils/validateNodes.js +11 -0
- package/dist/es2019/version-wrapper.js +1 -1
- package/dist/esm/actions/index.js +2 -1
- package/dist/esm/composable-editor/core-editor.js +1 -1
- package/dist/esm/create-editor/ErrorBoundary.js +1 -1
- package/dist/esm/create-editor/ReactEditorView.js +5 -1
- package/dist/esm/create-editor/create-schema.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/ui/Appearance/FullPage/FullPage.js +1 -1
- package/dist/esm/ui/Appearance/FullPage/FullPageContentArea.js +58 -67
- package/dist/esm/ui/Appearance/FullPage/StyledComponents.js +1 -18
- package/dist/esm/ui/ContentStyles/index.js +1 -1
- package/dist/esm/ui/ContextPanel/index.js +0 -5
- package/dist/esm/ui/ToolbarFeedback/index.js +1 -1
- package/dist/esm/ui/WithHelpTrigger/index.js +1 -1
- package/dist/esm/utils/document.js +0 -22
- package/dist/esm/utils/findChangedNodesFromTransaction.js +22 -0
- package/dist/esm/utils/outdatedBrowsers.js +24 -0
- package/dist/esm/utils/sanitizeNodes.js +56 -0
- package/dist/esm/utils/validateNodes.js +13 -0
- package/dist/esm/version-wrapper.js +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/ui/Appearance/FullPage/StyledComponents.d.ts +0 -1
- package/dist/types/ui/ContextPanel/index.d.ts +0 -1
- package/dist/types/utils/document.d.ts +0 -5
- package/dist/types/utils/findChangedNodesFromTransaction.d.ts +8 -0
- package/dist/types/utils/outdatedBrowsers.d.ts +1 -0
- package/dist/types/utils/sanitizeNodes.d.ts +8 -0
- package/dist/types/utils/validateNodes.d.ts +4 -0
- package/dist/types-ts4.5/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/Appearance/FullPage/StyledComponents.d.ts +0 -1
- package/dist/types-ts4.5/ui/ContextPanel/index.d.ts +0 -1
- package/dist/types-ts4.5/utils/document.d.ts +0 -5
- package/dist/types-ts4.5/utils/findChangedNodesFromTransaction.d.ts +8 -0
- package/dist/types-ts4.5/utils/outdatedBrowsers.d.ts +1 -0
- package/dist/types-ts4.5/utils/sanitizeNodes.d.ts +8 -0
- package/dist/types-ts4.5/utils/validateNodes.d.ts +4 -0
- package/package.json +4 -8
- package/dist/cjs/ui/ContextPanel/deprecated.js +0 -283
- package/dist/cjs/utils/node-width.js +0 -20
- package/dist/es2019/ui/ContextPanel/deprecated.js +0 -258
- package/dist/es2019/utils/node-width.js +0 -9
- package/dist/esm/ui/ContextPanel/deprecated.js +0 -277
- package/dist/esm/utils/node-width.js +0 -9
- package/dist/types/ui/ContextPanel/deprecated.d.ts +0 -44
- package/dist/types/utils/node-width.d.ts +0 -7
- package/dist/types-ts4.5/ui/ContextPanel/deprecated.d.ts +0 -44
- package/dist/types-ts4.5/utils/node-width.d.ts +0 -7
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isOutdatedBrowser = void 0;
|
|
7
|
+
var isOutdatedBrowser = exports.isOutdatedBrowser = function isOutdatedBrowser(userAgent) {
|
|
8
|
+
// Take browsers in both Desktop and Mobile (includes Chrome, Firefox, Edge and Safari) within last 2 years
|
|
9
|
+
var chrome = /Chrome\//.test(userAgent) && !/OPR\//.test(userAgent);
|
|
10
|
+
var chromeVersion = chrome ? parseInt((userAgent.match(/Chrome\/(\d+)/) || [])[1], 10) : 0;
|
|
11
|
+
if (chromeVersion >= 84) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
var gecko = /gecko\/\d/i.test(userAgent);
|
|
15
|
+
var geckoVersion = gecko ? parseInt((userAgent.match(/Firefox\/(\d+)/) || [])[1], 10) : 0;
|
|
16
|
+
if (geckoVersion >= 84) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
var edge = /Edge\/(\d+)/.exec(userAgent);
|
|
20
|
+
var edgeVersion = edge ? +edge[1] : 0;
|
|
21
|
+
if (edgeVersion >= 84) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
var safari = !chrome && !gecko && /Version\/([0-9\._]+).*Safari/.test(userAgent);
|
|
25
|
+
var safariVersion = safari ? parseInt((userAgent.match(/Version\/([0-9\._]+).*Safari/) || [])[1], 10) : 0;
|
|
26
|
+
if (safariVersion >= 12) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
30
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.sanitizeNodes = sanitizeNodes;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
10
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
11
|
+
function sanitizeNodes(nodes, supportedMarks) {
|
|
12
|
+
var nodeNames = Object.keys(nodes);
|
|
13
|
+
nodeNames.forEach(function (nodeKey) {
|
|
14
|
+
var nodeSpec = _objectSpread({}, nodes[nodeKey]);
|
|
15
|
+
if (nodeSpec.marks && nodeSpec.marks !== '_') {
|
|
16
|
+
nodeSpec.marks = nodeSpec.marks.split(' ').filter(function (mark) {
|
|
17
|
+
return !!supportedMarks[mark];
|
|
18
|
+
}).join(' ');
|
|
19
|
+
}
|
|
20
|
+
if (nodeSpec.content) {
|
|
21
|
+
nodeSpec.content = sanitizeNodeSpecContent(nodes, nodeSpec.content);
|
|
22
|
+
}
|
|
23
|
+
nodes[nodeKey] = nodeSpec;
|
|
24
|
+
});
|
|
25
|
+
return nodes;
|
|
26
|
+
}
|
|
27
|
+
function sanitizeNodeSpecContent(nodes, rawContent) {
|
|
28
|
+
var content = rawContent.replace(/\W/g, ' ');
|
|
29
|
+
var contentKeys = content.split(' ');
|
|
30
|
+
var unsupportedContentKeys = contentKeys.filter(function (contentKey) {
|
|
31
|
+
return !isContentSupported(nodes, contentKey);
|
|
32
|
+
});
|
|
33
|
+
return unsupportedContentKeys.reduce(function (newContent, nodeName) {
|
|
34
|
+
return sanitizedContent(newContent, nodeName);
|
|
35
|
+
}, rawContent);
|
|
36
|
+
}
|
|
37
|
+
function sanitizedContent(content, invalidContent) {
|
|
38
|
+
if (!invalidContent.length) {
|
|
39
|
+
return content || '';
|
|
40
|
+
}
|
|
41
|
+
if (!content || !content.match(/\w/)) {
|
|
42
|
+
return '';
|
|
43
|
+
}
|
|
44
|
+
var pattern = "(".concat(invalidContent, "((\\s)*\\|)+)|((\\|(\\s)*)+").concat(invalidContent, ")|(").concat(invalidContent, "$)|(").concat(invalidContent, "(\\+|\\*))");
|
|
45
|
+
return content.replace(new RegExp(pattern, 'g'), '').replace(' ', ' ').trim();
|
|
46
|
+
}
|
|
47
|
+
function isContentSupported(nodes, contentKey) {
|
|
48
|
+
var nodeKeys = Object.keys(nodes);
|
|
49
|
+
|
|
50
|
+
// content is with valid node
|
|
51
|
+
if (nodeKeys.indexOf(contentKey) > -1) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// content is with valid group
|
|
56
|
+
for (var supportedKey in nodes) {
|
|
57
|
+
var nodeSpec = nodes[supportedKey];
|
|
58
|
+
if (nodeSpec && nodeSpec.group === contentKey) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.validateNodes = exports.validNode = void 0;
|
|
7
|
+
var validNode = exports.validNode = function validNode(node) {
|
|
8
|
+
try {
|
|
9
|
+
node.check(); // this will throw an error if the node is invalid
|
|
10
|
+
} catch (error) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
return true;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
/** Validates prosemirror nodes, and returns true only if all nodes are valid */
|
|
17
|
+
var validateNodes = exports.validateNodes = function validateNodes(nodes) {
|
|
18
|
+
return nodes.every(validNode);
|
|
19
|
+
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import {
|
|
2
|
+
import { findNodePosByLocalIds, isEmptyDocument, processRawValue, toJSON } from '@atlaskit/editor-common/utils';
|
|
3
|
+
import { analyticsEventKey } from '@atlaskit/editor-common/utils/analytics';
|
|
3
4
|
import { Node } from '@atlaskit/editor-prosemirror/model';
|
|
4
5
|
import { NodeSelection, TextSelection } from '@atlaskit/editor-prosemirror/state';
|
|
5
6
|
import { findParentNode, safeInsert } from '@atlaskit/editor-prosemirror/utils';
|
|
@@ -15,7 +15,7 @@ import { ACTION, fireAnalyticsEvent } from '@atlaskit/editor-common/analytics';
|
|
|
15
15
|
import { useConstructor } from '@atlaskit/editor-common/hooks';
|
|
16
16
|
import { startMeasure, stopMeasure } from '@atlaskit/editor-common/performance-measures';
|
|
17
17
|
import { EditorExperience, ExperienceStore } from '@atlaskit/editor-common/ufo';
|
|
18
|
-
import { getAnalyticsAppearance } from '@atlaskit/editor-common/utils';
|
|
18
|
+
import { getAnalyticsAppearance } from '@atlaskit/editor-common/utils/analytics';
|
|
19
19
|
import EditorActions from '../actions';
|
|
20
20
|
import { createFeatureFlagsFromProps } from '../create-editor/feature-flags-from-props';
|
|
21
21
|
import { useEditorContext } from '../ui/EditorContext';
|
|
@@ -6,7 +6,7 @@ import { getDocStructure } from '@atlaskit/editor-common/core-utils';
|
|
|
6
6
|
import { IntlErrorBoundary } from '@atlaskit/editor-common/intl-error-boundary';
|
|
7
7
|
import { logException } from '@atlaskit/editor-common/monitoring';
|
|
8
8
|
import { ExperienceStore } from '@atlaskit/editor-common/ufo';
|
|
9
|
-
import { isOutdatedBrowser } from '
|
|
9
|
+
import { isOutdatedBrowser } from '../utils/outdatedBrowsers';
|
|
10
10
|
import { WithEditorView } from './WithEditorView';
|
|
11
11
|
export class ErrorBoundaryWithEditorView extends React.Component {
|
|
12
12
|
constructor(props) {
|
|
@@ -3,23 +3,27 @@ import React from 'react';
|
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { injectIntl } from 'react-intl-next';
|
|
5
5
|
import { ACTION, ACTION_SUBJECT, EVENT_TYPE, fireAnalyticsEvent, FULL_WIDTH_MODE, getAnalyticsEventsFromTransaction, PLATFORMS } from '@atlaskit/editor-common/analytics';
|
|
6
|
+
import { browser } from '@atlaskit/editor-common/browser';
|
|
6
7
|
import { getDocStructure } from '@atlaskit/editor-common/core-utils';
|
|
7
8
|
import { getEnabledFeatureFlagKeys } from '@atlaskit/editor-common/normalize-feature-flags';
|
|
8
9
|
import { startMeasure, stopMeasure } from '@atlaskit/editor-common/performance-measures';
|
|
9
10
|
import { EditorPluginInjectionAPI } from '@atlaskit/editor-common/preset';
|
|
10
11
|
import { EditorExperience, ExperienceStore, RELIABILITY_INTERVAL } from '@atlaskit/editor-common/ufo';
|
|
11
|
-
import {
|
|
12
|
+
import { countNodes, getResponseEndTime, measureRender, processRawValue, shouldForceTracking } from '@atlaskit/editor-common/utils';
|
|
13
|
+
import { analyticsEventKey, getAnalyticsEventSeverity } from '@atlaskit/editor-common/utils/analytics';
|
|
12
14
|
import { EditorState, Selection, TextSelection } from '@atlaskit/editor-prosemirror/state';
|
|
13
15
|
import { EditorView } from '@atlaskit/editor-prosemirror/view';
|
|
14
16
|
import { createDispatch, EventDispatcher } from '../event-dispatcher';
|
|
15
17
|
import { EditorAPIContext } from '../presets/context';
|
|
16
18
|
import { getNodesCount } from '../utils/document';
|
|
19
|
+
import { findChangedNodesFromTransaction } from '../utils/findChangedNodesFromTransaction';
|
|
17
20
|
import { isFullPage } from '../utils/is-full-page';
|
|
18
21
|
import { RenderTracking } from '../utils/performance/components/RenderTracking';
|
|
19
22
|
import measurements from '../utils/performance/measure-enum';
|
|
20
23
|
import { PluginPerformanceObserver } from '../utils/performance/plugin-performance-observer';
|
|
21
24
|
import { freezeUnsafeTransactionProperties } from '../utils/performance/safer-transactions';
|
|
22
25
|
import { EVENT_NAME_DISPATCH_TRANSACTION, EVENT_NAME_ON_CHANGE, EVENT_NAME_STATE_APPLY, EVENT_NAME_UPDATE_STATE, EVENT_NAME_VIEW_STATE_UPDATED, TransactionTracker } from '../utils/performance/track-transactions';
|
|
26
|
+
import { validateNodes, validNode } from '../utils/validateNodes';
|
|
23
27
|
import { DEFAULT_SAMPLING_RATE_VALID_TRANSACTIONS, PROSEMIRROR_RENDERED_DEGRADED_SEVERITY_THRESHOLD, PROSEMIRROR_RENDERED_NORMAL_SEVERITY_THRESHOLD } from './consts';
|
|
24
28
|
import { createErrorReporter, createPMPlugins, processPluginsList } from './create-editor';
|
|
25
29
|
import createPluginsList from './create-plugins-list';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { sanitizeNodes } from '@atlaskit/adf-schema/schema';
|
|
2
1
|
import { Schema } from '@atlaskit/editor-prosemirror/model';
|
|
2
|
+
import { sanitizeNodes } from '../utils/sanitizeNodes';
|
|
3
3
|
import { fixExcludes } from './create-editor';
|
|
4
4
|
import { sortByOrder } from './sort-by-order';
|
|
5
5
|
export function createSchema(editorConfig) {
|
package/dist/es2019/index.js
CHANGED
|
@@ -12,7 +12,7 @@ export {
|
|
|
12
12
|
* @deprecated
|
|
13
13
|
* DO NOT USE THIS WILL BE REMOVED SOON. This was intended for internal usage only
|
|
14
14
|
*/
|
|
15
|
-
|
|
15
|
+
ContextPanel } from './ui/ContextPanel';
|
|
16
16
|
export { EmojiResource } from '@atlaskit/emoji/resource';
|
|
17
17
|
export { MentionResource } from '@atlaskit/mention/resource';
|
|
18
18
|
export { TeamMentionResource } from '@atlaskit/mention/team-resource';
|
|
@@ -6,9 +6,9 @@ import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
|
6
6
|
|
|
7
7
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
8
8
|
import { jsx } from '@emotion/react';
|
|
9
|
+
import { browser } from '@atlaskit/editor-common/browser';
|
|
9
10
|
import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
|
|
10
11
|
import { ContextPanelWidthProvider } from '@atlaskit/editor-common/ui';
|
|
11
|
-
import { browser } from '@atlaskit/editor-common/utils';
|
|
12
12
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
13
13
|
import { FullPageContentArea } from './FullPageContentArea';
|
|
14
14
|
import { FullPageToolbar } from './FullPageToolbar';
|
|
@@ -9,13 +9,13 @@ import React, { useImperativeHandle, useRef } from 'react';
|
|
|
9
9
|
import { jsx, useTheme } from '@emotion/react';
|
|
10
10
|
import { injectIntl } from 'react-intl-next';
|
|
11
11
|
import { fullPageMessages as messages } from '@atlaskit/editor-common/messages';
|
|
12
|
-
import { ContextPanelConsumer } from '@atlaskit/editor-common/ui';
|
|
13
12
|
import { ClickAreaBlock } from '../../Addon';
|
|
14
|
-
import ContextPanel from '../../ContextPanel';
|
|
13
|
+
import { ContextPanel } from '../../ContextPanel';
|
|
15
14
|
import PluginSlot from '../../PluginSlot';
|
|
16
|
-
import { contentArea, contentAreaHeightNoToolbar, editorContentAreaStyle, editorContentGutterStyle,
|
|
15
|
+
import { contentArea, contentAreaHeightNoToolbar, editorContentAreaStyle, editorContentGutterStyle, ScrollContainer, sidebarArea } from './StyledComponents';
|
|
17
16
|
export const CONTENT_AREA_TEST_ID = 'ak-editor-fp-content-area';
|
|
18
17
|
const Content = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
18
|
+
var _contentAreaRef$curre;
|
|
19
19
|
const theme = useTheme();
|
|
20
20
|
const fullWidthMode = props.appearance === 'full-width';
|
|
21
21
|
const scrollContainerRef = useRef(null);
|
|
@@ -32,71 +32,61 @@ const Content = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
32
32
|
return containerRef.current;
|
|
33
33
|
}
|
|
34
34
|
}), []);
|
|
35
|
-
return (
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
dispatchAnalyticsEvent: props.dispatchAnalyticsEvent,
|
|
91
|
-
wrapperElement: props.wrapperElement
|
|
92
|
-
}), props.editorDOMElement, !!props.customContentComponents && 'after' in props.customContentComponents ? props.customContentComponents.after : null)))), jsx("div", {
|
|
93
|
-
css: sidebarArea
|
|
94
|
-
}, props.contextPanel || jsx(ContextPanel, {
|
|
95
|
-
editorAPI: props.editorAPI,
|
|
96
|
-
visible: false
|
|
97
|
-
})));
|
|
98
|
-
})
|
|
99
|
-
);
|
|
35
|
+
return jsx("div", {
|
|
36
|
+
css: [
|
|
37
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
|
|
38
|
+
contentArea,
|
|
39
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
|
|
40
|
+
props.isEditorToolbarHidden && contentAreaHeightNoToolbar],
|
|
41
|
+
"data-testid": CONTENT_AREA_TEST_ID,
|
|
42
|
+
ref: containerRef
|
|
43
|
+
}, jsx(ScrollContainer
|
|
44
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
45
|
+
, {
|
|
46
|
+
className: "fabric-editor-popup-scroll-parent",
|
|
47
|
+
featureFlags: props.featureFlags,
|
|
48
|
+
ref: scrollContainerRef
|
|
49
|
+
}, jsx(ClickAreaBlock, {
|
|
50
|
+
editorView: props.editorView,
|
|
51
|
+
editorDisabled: props.disabled
|
|
52
|
+
}, jsx("div", {
|
|
53
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
|
|
54
|
+
css: editorContentAreaStyle({
|
|
55
|
+
fullWidthMode,
|
|
56
|
+
layoutMaxWidth: theme.layoutMaxWidth
|
|
57
|
+
}),
|
|
58
|
+
role: "region",
|
|
59
|
+
"aria-label": props.intl.formatMessage(messages.editableContentLabel),
|
|
60
|
+
ref: contentAreaRef
|
|
61
|
+
}, jsx("div", {
|
|
62
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
|
|
63
|
+
css: editorContentGutterStyle()
|
|
64
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
65
|
+
,
|
|
66
|
+
className: ['ak-editor-content-area', fullWidthMode ? 'fabric-editor--full-width-mode' : ''].join(' '),
|
|
67
|
+
ref: contentAreaRef
|
|
68
|
+
}, !!props.customContentComponents && 'before' in props.customContentComponents ? props.customContentComponents.before : props.customContentComponents, jsx(PluginSlot, {
|
|
69
|
+
editorView: props.editorView,
|
|
70
|
+
editorActions: props.editorActions,
|
|
71
|
+
eventDispatcher: props.eventDispatcher,
|
|
72
|
+
providerFactory: props.providerFactory,
|
|
73
|
+
appearance: props.appearance,
|
|
74
|
+
items: props.contentComponents,
|
|
75
|
+
pluginHooks: props.pluginHooks,
|
|
76
|
+
contentArea: (_contentAreaRef$curre = contentAreaRef.current) !== null && _contentAreaRef$curre !== void 0 ? _contentAreaRef$curre : undefined,
|
|
77
|
+
popupsMountPoint: props.popupsMountPoint,
|
|
78
|
+
popupsBoundariesElement: props.popupsBoundariesElement,
|
|
79
|
+
popupsScrollableElement: props.popupsScrollableElement,
|
|
80
|
+
disabled: !!props.disabled,
|
|
81
|
+
containerElement: scrollContainerRef.current,
|
|
82
|
+
dispatchAnalyticsEvent: props.dispatchAnalyticsEvent,
|
|
83
|
+
wrapperElement: props.wrapperElement
|
|
84
|
+
}), props.editorDOMElement, !!props.customContentComponents && 'after' in props.customContentComponents ? props.customContentComponents.after : null)))), jsx("div", {
|
|
85
|
+
css: sidebarArea
|
|
86
|
+
}, props.contextPanel || jsx(ContextPanel, {
|
|
87
|
+
editorAPI: props.editorAPI,
|
|
88
|
+
visible: false
|
|
89
|
+
})));
|
|
100
90
|
});
|
|
101
91
|
export const FullPageContentArea = injectIntl(Content, {
|
|
102
92
|
forwardRef: true
|
|
@@ -3,7 +3,7 @@ import { css } from '@emotion/react';
|
|
|
3
3
|
import { decisionListSelector, taskListSelector } from '@atlaskit/adf-schema';
|
|
4
4
|
import { tableFullPageEditorStyles } from '@atlaskit/editor-plugins/table/ui/common-styles';
|
|
5
5
|
import { tableMarginFullWidthMode } from '@atlaskit/editor-plugins/table/ui/consts';
|
|
6
|
-
import {
|
|
6
|
+
import { akEditorFullWidthLayoutWidth, akEditorGutterPaddingDynamic, akEditorSwoopCubicBezier, akLayoutGutterOffset, FULL_PAGE_EDITOR_TOOLBAR_HEIGHT } from '@atlaskit/editor-shared-styles';
|
|
7
7
|
import { scrollbarStyles } from '@atlaskit/editor-shared-styles/scrollbar';
|
|
8
8
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
9
9
|
import { createEditorContentStyle } from '../../ContentStyles';
|
|
@@ -36,23 +36,6 @@ scrollbarStyles);
|
|
|
36
36
|
export const ScrollContainer = createEditorContentStyle(scrollStyles);
|
|
37
37
|
ScrollContainer.displayName = 'ScrollContainer';
|
|
38
38
|
|
|
39
|
-
// transition used to match scrollbar with config panel opening animation
|
|
40
|
-
// only use animation when opening as there is a bug with floating toolbars.
|
|
41
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
|
|
42
|
-
export const positionedOverEditorStyle = css({
|
|
43
|
-
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage/preview, @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
|
|
44
|
-
paddingRight: `${akEditorContextPanelWidth}px`,
|
|
45
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
|
|
46
|
-
transition: `padding 500ms ${akEditorSwoopCubicBezier}`,
|
|
47
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
|
|
48
|
-
'.fabric-editor-popup-scroll-parent': {
|
|
49
|
-
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage/preview, @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
|
|
50
|
-
paddingLeft: `${akEditorContextPanelWidth}px`,
|
|
51
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
|
|
52
|
-
transition: `padding 500ms ${akEditorSwoopCubicBezier}`
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
|
|
56
39
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
|
|
57
40
|
export const contentArea = () => {
|
|
58
41
|
const editorToolbarHeight = FULL_PAGE_EDITOR_TOOLBAR_HEIGHT();
|
|
@@ -11,13 +11,13 @@ import React, { useMemo } from 'react';
|
|
|
11
11
|
|
|
12
12
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
13
13
|
import { css, jsx, useTheme } from '@emotion/react';
|
|
14
|
+
import { browser } from '@atlaskit/editor-common/browser';
|
|
14
15
|
import { telepointerStyle } from '@atlaskit/editor-common/collab';
|
|
15
16
|
import { EmojiSharedCssClassName } from '@atlaskit/editor-common/emoji';
|
|
16
17
|
import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
|
|
17
18
|
import { MentionSharedCssClassName } from '@atlaskit/editor-common/mention';
|
|
18
19
|
import { gapCursorStyles } from '@atlaskit/editor-common/selection';
|
|
19
20
|
import { annotationSharedStyles, backgroundColorStyles, blockMarksSharedStyles, codeBlockInListSafariFix, codeMarkSharedStyles, dateSharedStyle, embedCardStyles, gridStyles, indentationSharedStyles, linkSharedStyle, listsSharedStyles, MediaSharedClassNames, paragraphSharedStyles, resizerStyles, ruleSharedStyles, shadowSharedStyle, SmartCardSharedCssClassName, smartCardSharedStyles, smartCardStyles, tasksAndDecisionsStyles, textColorStyles, unsupportedStyles, whitespaceSharedStyles } from '@atlaskit/editor-common/styles';
|
|
20
|
-
import { browser } from '@atlaskit/editor-common/utils';
|
|
21
21
|
import { blocktypeStyles } from '@atlaskit/editor-plugins/block-type/styles';
|
|
22
22
|
import { findReplaceStyles } from '@atlaskit/editor-plugins/find-replace/styles';
|
|
23
23
|
import { textHighlightStyle } from '@atlaskit/editor-plugins/paste-options-toolbar/styles';
|
|
@@ -12,9 +12,7 @@ import Transition from 'react-transition-group/Transition';
|
|
|
12
12
|
import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
|
|
13
13
|
import { ContextPanelConsumer } from '@atlaskit/editor-common/ui';
|
|
14
14
|
import { akEditorContextPanelWidth, akEditorSwoopCubicBezier } from '@atlaskit/editor-shared-styles';
|
|
15
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
16
15
|
import { N30 } from '@atlaskit/theme/colors';
|
|
17
|
-
import ContextPanelDeprecated from './deprecated';
|
|
18
16
|
const ANIM_SPEED_MS = 500;
|
|
19
17
|
const panelHidden = css({
|
|
20
18
|
width: 0
|
|
@@ -143,7 +141,4 @@ export function ContextPanel(props) {
|
|
|
143
141
|
editorAPI: props.editorAPI,
|
|
144
142
|
pluginContent: firstContent
|
|
145
143
|
}));
|
|
146
|
-
}
|
|
147
|
-
export default function ContextPanelDefault(props) {
|
|
148
|
-
return fg('platform_editor_context-panel_simplify_behaviour') ? jsx(ContextPanel, props) : jsx(ContextPanelDeprecated, props);
|
|
149
144
|
}
|
|
@@ -15,7 +15,7 @@ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit
|
|
|
15
15
|
import { Popup } from '@atlaskit/editor-common/ui';
|
|
16
16
|
import { ToolbarButton } from '@atlaskit/editor-common/ui-menu';
|
|
17
17
|
import { withReactEditorViewOuterListeners as withOuterListeners } from '@atlaskit/editor-common/ui-react';
|
|
18
|
-
import { analyticsEventKey } from '@atlaskit/editor-common/utils';
|
|
18
|
+
import { analyticsEventKey } from '@atlaskit/editor-common/utils/analytics';
|
|
19
19
|
import Spinner from '@atlaskit/spinner';
|
|
20
20
|
import { createDispatch } from '../../event-dispatcher';
|
|
21
21
|
import { usePresetContext } from '../../presets/context';
|
|
@@ -2,7 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
|
|
5
|
-
import { analyticsEventKey } from '@atlaskit/editor-common/utils';
|
|
5
|
+
import { analyticsEventKey } from '@atlaskit/editor-common/utils/analytics';
|
|
6
6
|
import { deprecatedOpenHelpCommand } from '@atlaskit/editor-plugins/help-dialog';
|
|
7
7
|
import { createDispatch } from '../../event-dispatcher';
|
|
8
8
|
export default class WithHelpTrigger extends React.Component {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { processRawValue } from '@atlaskit/editor-common/utils';
|
|
2
2
|
import { Fragment } from '@atlaskit/editor-prosemirror/model';
|
|
3
|
-
import { getBreakoutMode } from './node-width';
|
|
4
3
|
export function processRawFragmentValue(schema, value, providerFactory, sanitizePrivateContent, contentTransformer, dispatchAnalyticsEvent) {
|
|
5
4
|
if (!value) {
|
|
6
5
|
return;
|
|
@@ -17,23 +16,4 @@ export function getNodesCount(node) {
|
|
|
17
16
|
count[node.type.name] = (count[node.type.name] || 0) + 1;
|
|
18
17
|
});
|
|
19
18
|
return count;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Returns a set of active child breakout modes
|
|
24
|
-
*/
|
|
25
|
-
export function getChildBreakoutModes(doc, schema, filter = ['wide', 'full-width']) {
|
|
26
|
-
const breakoutModes = new Set();
|
|
27
|
-
if (doc.type.name === 'doc' && doc.childCount) {
|
|
28
|
-
for (let i = 0; i < doc.childCount; ++i) {
|
|
29
|
-
if (breakoutModes.size === filter.length) {
|
|
30
|
-
break;
|
|
31
|
-
}
|
|
32
|
-
const breakoutMode = getBreakoutMode(doc.child(i), schema.marks.breakout);
|
|
33
|
-
if (breakoutMode && filter.includes(breakoutMode)) {
|
|
34
|
-
breakoutModes.add(breakoutMode);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return [...breakoutModes];
|
|
39
19
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Finds all top level nodes affected by the transaction
|
|
3
|
+
* Uses from/to positions in transaction's steps to work out which nodes will
|
|
4
|
+
* be changed by the transaction
|
|
5
|
+
*/
|
|
6
|
+
export const findChangedNodesFromTransaction = tr => {
|
|
7
|
+
const nodes = [];
|
|
8
|
+
const steps = tr.steps || [];
|
|
9
|
+
steps.forEach(step => {
|
|
10
|
+
step.getMap().forEach((oldStart, oldEnd, newStart, newEnd) => {
|
|
11
|
+
tr.doc.nodesBetween(newStart, Math.min(newEnd, tr.doc.content.size), node => {
|
|
12
|
+
if (!nodes.find(n => n === node)) {
|
|
13
|
+
nodes.push(node);
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
return nodes;
|
|
20
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const isOutdatedBrowser = userAgent => {
|
|
2
|
+
// Take browsers in both Desktop and Mobile (includes Chrome, Firefox, Edge and Safari) within last 2 years
|
|
3
|
+
const chrome = /Chrome\//.test(userAgent) && !/OPR\//.test(userAgent);
|
|
4
|
+
const chromeVersion = chrome ? parseInt((userAgent.match(/Chrome\/(\d+)/) || [])[1], 10) : 0;
|
|
5
|
+
if (chromeVersion >= 84) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
const gecko = /gecko\/\d/i.test(userAgent);
|
|
9
|
+
const geckoVersion = gecko ? parseInt((userAgent.match(/Firefox\/(\d+)/) || [])[1], 10) : 0;
|
|
10
|
+
if (geckoVersion >= 84) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
const edge = /Edge\/(\d+)/.exec(userAgent);
|
|
14
|
+
const edgeVersion = edge ? +edge[1] : 0;
|
|
15
|
+
if (edgeVersion >= 84) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
const safari = !chrome && !gecko && /Version\/([0-9\._]+).*Safari/.test(userAgent);
|
|
19
|
+
const safariVersion = safari ? parseInt((userAgent.match(/Version\/([0-9\._]+).*Safari/) || [])[1], 10) : 0;
|
|
20
|
+
if (safariVersion >= 12) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export function sanitizeNodes(nodes, supportedMarks) {
|
|
2
|
+
const nodeNames = Object.keys(nodes);
|
|
3
|
+
nodeNames.forEach(nodeKey => {
|
|
4
|
+
const nodeSpec = {
|
|
5
|
+
...nodes[nodeKey]
|
|
6
|
+
};
|
|
7
|
+
if (nodeSpec.marks && nodeSpec.marks !== '_') {
|
|
8
|
+
nodeSpec.marks = nodeSpec.marks.split(' ').filter(mark => !!supportedMarks[mark]).join(' ');
|
|
9
|
+
}
|
|
10
|
+
if (nodeSpec.content) {
|
|
11
|
+
nodeSpec.content = sanitizeNodeSpecContent(nodes, nodeSpec.content);
|
|
12
|
+
}
|
|
13
|
+
nodes[nodeKey] = nodeSpec;
|
|
14
|
+
});
|
|
15
|
+
return nodes;
|
|
16
|
+
}
|
|
17
|
+
function sanitizeNodeSpecContent(nodes, rawContent) {
|
|
18
|
+
const content = rawContent.replace(/\W/g, ' ');
|
|
19
|
+
const contentKeys = content.split(' ');
|
|
20
|
+
const unsupportedContentKeys = contentKeys.filter(contentKey => !isContentSupported(nodes, contentKey));
|
|
21
|
+
return unsupportedContentKeys.reduce((newContent, nodeName) => sanitizedContent(newContent, nodeName), rawContent);
|
|
22
|
+
}
|
|
23
|
+
function sanitizedContent(content, invalidContent) {
|
|
24
|
+
if (!invalidContent.length) {
|
|
25
|
+
return content || '';
|
|
26
|
+
}
|
|
27
|
+
if (!content || !content.match(/\w/)) {
|
|
28
|
+
return '';
|
|
29
|
+
}
|
|
30
|
+
const pattern = `(${invalidContent}((\\s)*\\|)+)|((\\|(\\s)*)+${invalidContent})|(${invalidContent}$)|(${invalidContent}(\\+|\\*))`;
|
|
31
|
+
return content.replace(new RegExp(pattern, 'g'), '').replace(' ', ' ').trim();
|
|
32
|
+
}
|
|
33
|
+
function isContentSupported(nodes, contentKey) {
|
|
34
|
+
const nodeKeys = Object.keys(nodes);
|
|
35
|
+
|
|
36
|
+
// content is with valid node
|
|
37
|
+
if (nodeKeys.indexOf(contentKey) > -1) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// content is with valid group
|
|
42
|
+
for (const supportedKey in nodes) {
|
|
43
|
+
const nodeSpec = nodes[supportedKey];
|
|
44
|
+
if (nodeSpec && nodeSpec.group === contentKey) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const validNode = node => {
|
|
2
|
+
try {
|
|
3
|
+
node.check(); // this will throw an error if the node is invalid
|
|
4
|
+
} catch (error) {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
return true;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
/** Validates prosemirror nodes, and returns true only if all nodes are valid */
|
|
11
|
+
export const validateNodes = nodes => nodes.every(validNode);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export const name = "@atlaskit/editor-core";
|
|
2
|
-
export const version = "197.2.
|
|
2
|
+
export const version = "197.2.3";
|
|
@@ -3,7 +3,8 @@ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
|
3
3
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
4
4
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
5
5
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
6
|
-
import {
|
|
6
|
+
import { findNodePosByLocalIds, isEmptyDocument, processRawValue, toJSON } from '@atlaskit/editor-common/utils';
|
|
7
|
+
import { analyticsEventKey } from '@atlaskit/editor-common/utils/analytics';
|
|
7
8
|
import { Node } from '@atlaskit/editor-prosemirror/model';
|
|
8
9
|
import { NodeSelection, TextSelection } from '@atlaskit/editor-prosemirror/state';
|
|
9
10
|
import { findParentNode, safeInsert } from '@atlaskit/editor-prosemirror/utils';
|
|
@@ -15,7 +15,7 @@ import { ACTION, fireAnalyticsEvent } from '@atlaskit/editor-common/analytics';
|
|
|
15
15
|
import { useConstructor } from '@atlaskit/editor-common/hooks';
|
|
16
16
|
import { startMeasure, stopMeasure } from '@atlaskit/editor-common/performance-measures';
|
|
17
17
|
import { EditorExperience, ExperienceStore } from '@atlaskit/editor-common/ufo';
|
|
18
|
-
import { getAnalyticsAppearance } from '@atlaskit/editor-common/utils';
|
|
18
|
+
import { getAnalyticsAppearance } from '@atlaskit/editor-common/utils/analytics';
|
|
19
19
|
import EditorActions from '../actions';
|
|
20
20
|
import { createFeatureFlagsFromProps } from '../create-editor/feature-flags-from-props';
|
|
21
21
|
import { useEditorContext } from '../ui/EditorContext';
|
|
@@ -18,7 +18,7 @@ import { getDocStructure } from '@atlaskit/editor-common/core-utils';
|
|
|
18
18
|
import { IntlErrorBoundary } from '@atlaskit/editor-common/intl-error-boundary';
|
|
19
19
|
import { logException } from '@atlaskit/editor-common/monitoring';
|
|
20
20
|
import { ExperienceStore } from '@atlaskit/editor-common/ufo';
|
|
21
|
-
import { isOutdatedBrowser } from '
|
|
21
|
+
import { isOutdatedBrowser } from '../utils/outdatedBrowsers';
|
|
22
22
|
import { WithEditorView } from './WithEditorView';
|
|
23
23
|
export var ErrorBoundaryWithEditorView = /*#__PURE__*/function (_React$Component) {
|
|
24
24
|
_inherits(ErrorBoundaryWithEditorView, _React$Component);
|