@atlaskit/editor-plugin-undo-redo 6.0.7 → 6.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @atlaskit/editor-plugin-undo-redo
2
2
 
3
+ ## 6.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`c74a1bd9f8e48`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/c74a1bd9f8e48) -
8
+ EDITOR-1818: extend undo analytics to describe attribute changes. This is to help us investigate
9
+ undos that have no visible effects
10
+ - Updated dependencies
11
+
12
+ ## 6.1.0
13
+
14
+ ### Minor Changes
15
+
16
+ - [`0ac75e0d28c72`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0ac75e0d28c72) -
17
+ Migrate @atlaskit/editor-prosemirror/history to @atlaskit/prosemirror-history package
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies
22
+
3
23
  ## 6.0.7
4
24
 
5
25
  ### Patch Changes
@@ -1,13 +1,21 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.attachInputMetaWithAnalytics = exports.attachInputMeta = void 0;
8
+ exports.getChanges = getChanges;
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
11
  var _analytics = require("@atlaskit/editor-common/analytics");
8
12
  var _editorAnalytics = require("@atlaskit/editor-common/editor-analytics");
13
+ var _document = require("@atlaskit/editor-common/utils/document");
14
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
9
15
  var _enums = require("./enums");
10
16
  var _pluginKey = require("./plugin-key");
17
+ 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; }
18
+ 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
19
  var attachInputMeta = exports.attachInputMeta = function attachInputMeta(inputSource) {
12
20
  return function (command) {
13
21
  return function (state, dispatch) {
@@ -39,10 +47,66 @@ var inputSourceToInputMethod = function inputSourceToInputMethod(inputSource) {
39
47
  return _analytics.INPUT_METHOD.EXTERNAL;
40
48
  }
41
49
  };
50
+ function getNodesWithDifferingAttributes(_ref) {
51
+ var before = _ref.before,
52
+ after = _ref.after;
53
+ var allAttributeKeys = Object.keys(_objectSpread(_objectSpread({}, before.attrs), after.attrs));
54
+ var differingAttributes = allAttributeKeys.filter(function (key) {
55
+ return before.attrs[key] !== after.attrs[key];
56
+ });
57
+ var affectedNodes = differingAttributes.length ? [{
58
+ type: before.type.name,
59
+ attributes: differingAttributes
60
+ }] : [];
61
+ return before.children.reduce(function (acc, beforeChild, index) {
62
+ return [].concat((0, _toConsumableArray2.default)(acc), (0, _toConsumableArray2.default)(getNodesWithDifferingAttributes({
63
+ before: beforeChild,
64
+ after: after.child(index)
65
+ })));
66
+ }, affectedNodes);
67
+ }
68
+
69
+ /**
70
+ * Analyzes changes between two ProseMirror document nodes.
71
+ *
72
+ * @param params - Object containing before and after node states
73
+ * @param params.before - The document node before changes
74
+ * @param params.after - The document node after changes
75
+ * @returns Object containing change analysis results with hasChanged boolean and affectedNodes array
76
+ */
77
+ function getChanges(_ref2) {
78
+ var before = _ref2.before,
79
+ after = _ref2.after;
80
+ var hasChanged = !(0, _document.areNodesEqualIgnoreAttrs)(after, before);
81
+ var affectedNodes = hasChanged ? undefined : getNodesWithDifferingAttributes({
82
+ before: before,
83
+ after: after
84
+ })
85
+ // Limit to 25 nodes to avoid oversize payloads
86
+ .slice(0, 25);
87
+ return {
88
+ hasChanged: hasChanged,
89
+ affectedNodes: affectedNodes
90
+ };
91
+ }
42
92
  var attachInputMetaWithAnalytics = exports.attachInputMetaWithAnalytics = function attachInputMetaWithAnalytics(editorAnalyticsAPI) {
43
93
  return function (inputSource, action) {
44
94
  return function (command) {
45
- return attachInputMeta(inputSource)((0, _editorAnalytics.withAnalytics)(editorAnalyticsAPI, {
95
+ return attachInputMeta(inputSource)((0, _editorAnalytics.withAnalytics)(editorAnalyticsAPI, (0, _platformFeatureFlags.fg)('platform_editor_add_undo_meta_analytics') ? function (_ref3, _ref4) {
96
+ var before = _ref3.doc;
97
+ var after = _ref4.currentDoc;
98
+ return {
99
+ eventType: _analytics.EVENT_TYPE.TRACK,
100
+ action: action,
101
+ actionSubject: _analytics.ACTION_SUBJECT.EDITOR,
102
+ attributes: _objectSpread({
103
+ inputMethod: inputSourceToInputMethod(inputSource)
104
+ }, getChanges({
105
+ before: before,
106
+ after: after
107
+ }))
108
+ };
109
+ } : {
46
110
  eventType: _analytics.EVENT_TYPE.TRACK,
47
111
  action: action,
48
112
  actionSubject: _analytics.ACTION_SUBJECT.EDITOR,
@@ -5,22 +5,22 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.undoFromToolbarWithAnalytics = exports.undoFromToolbar = exports.undoFromKeyboardWithAnalytics = exports.undoFromKeyboard = exports.redoFromToolbarWithAnalytics = exports.redoFromToolbar = exports.redoFromKeyboardWithAnalytics = exports.redoFromKeyboard = void 0;
7
7
  var _analytics = require("@atlaskit/editor-common/analytics");
8
- var _history = require("@atlaskit/editor-prosemirror/history");
8
+ var _prosemirrorHistory = require("@atlaskit/prosemirror-history");
9
9
  var _attachInputMeta = require("./attach-input-meta");
10
10
  var _enums = require("./enums");
11
- var undoFromKeyboard = exports.undoFromKeyboard = (0, _attachInputMeta.attachInputMeta)(_enums.InputSource.KEYBOARD)(_history.undo);
12
- var redoFromKeyboard = exports.redoFromKeyboard = (0, _attachInputMeta.attachInputMeta)(_enums.InputSource.KEYBOARD)(_history.redo);
13
- var undoFromToolbar = exports.undoFromToolbar = (0, _attachInputMeta.attachInputMeta)(_enums.InputSource.TOOLBAR)(_history.undo);
14
- var redoFromToolbar = exports.redoFromToolbar = (0, _attachInputMeta.attachInputMeta)(_enums.InputSource.TOOLBAR)(_history.redo);
11
+ var undoFromKeyboard = exports.undoFromKeyboard = (0, _attachInputMeta.attachInputMeta)(_enums.InputSource.KEYBOARD)(_prosemirrorHistory.undo);
12
+ var redoFromKeyboard = exports.redoFromKeyboard = (0, _attachInputMeta.attachInputMeta)(_enums.InputSource.KEYBOARD)(_prosemirrorHistory.redo);
13
+ var undoFromToolbar = exports.undoFromToolbar = (0, _attachInputMeta.attachInputMeta)(_enums.InputSource.TOOLBAR)(_prosemirrorHistory.undo);
14
+ var redoFromToolbar = exports.redoFromToolbar = (0, _attachInputMeta.attachInputMeta)(_enums.InputSource.TOOLBAR)(_prosemirrorHistory.redo);
15
15
  var undoFromKeyboardWithAnalytics = exports.undoFromKeyboardWithAnalytics = function undoFromKeyboardWithAnalytics(editorAnalyticsAPI) {
16
- return (0, _attachInputMeta.attachInputMetaWithAnalytics)(editorAnalyticsAPI)(_enums.InputSource.KEYBOARD, _analytics.ACTION.UNDO_PERFORMED)(_history.undo);
16
+ return (0, _attachInputMeta.attachInputMetaWithAnalytics)(editorAnalyticsAPI)(_enums.InputSource.KEYBOARD, _analytics.ACTION.UNDO_PERFORMED)(_prosemirrorHistory.undo);
17
17
  };
18
18
  var redoFromKeyboardWithAnalytics = exports.redoFromKeyboardWithAnalytics = function redoFromKeyboardWithAnalytics(editorAnalyticsAPI) {
19
- return (0, _attachInputMeta.attachInputMetaWithAnalytics)(editorAnalyticsAPI)(_enums.InputSource.KEYBOARD, _analytics.ACTION.REDO_PERFORMED)(_history.redo);
19
+ return (0, _attachInputMeta.attachInputMetaWithAnalytics)(editorAnalyticsAPI)(_enums.InputSource.KEYBOARD, _analytics.ACTION.REDO_PERFORMED)(_prosemirrorHistory.redo);
20
20
  };
21
21
  var undoFromToolbarWithAnalytics = exports.undoFromToolbarWithAnalytics = function undoFromToolbarWithAnalytics(editorAnalyticsAPI) {
22
- return (0, _attachInputMeta.attachInputMetaWithAnalytics)(editorAnalyticsAPI)(_enums.InputSource.TOOLBAR, _analytics.ACTION.UNDO_PERFORMED)(_history.undo);
22
+ return (0, _attachInputMeta.attachInputMetaWithAnalytics)(editorAnalyticsAPI)(_enums.InputSource.TOOLBAR, _analytics.ACTION.UNDO_PERFORMED)(_prosemirrorHistory.undo);
23
23
  };
24
24
  var redoFromToolbarWithAnalytics = exports.redoFromToolbarWithAnalytics = function redoFromToolbarWithAnalytics(editorAnalyticsAPI) {
25
- return (0, _attachInputMeta.attachInputMetaWithAnalytics)(editorAnalyticsAPI)(_enums.InputSource.TOOLBAR, _analytics.ACTION.REDO_PERFORMED)(_history.redo);
25
+ return (0, _attachInputMeta.attachInputMetaWithAnalytics)(editorAnalyticsAPI)(_enums.InputSource.TOOLBAR, _analytics.ACTION.REDO_PERFORMED)(_prosemirrorHistory.redo);
26
26
  };
@@ -8,7 +8,7 @@ exports.undoRedoPlugin = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _analytics = require("@atlaskit/editor-common/analytics");
10
10
  var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
11
- var _history = require("@atlaskit/editor-prosemirror/history");
11
+ var _prosemirrorHistory = require("@atlaskit/prosemirror-history");
12
12
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
13
13
  var _attachInputMeta = require("./pm-plugins/attach-input-meta");
14
14
  var _enums = require("./pm-plugins/enums");
@@ -57,14 +57,14 @@ var undoRedoPlugin = exports.undoRedoPlugin = function undoRedoPlugin(_ref) {
57
57
  if (!editorViewRef.current) {
58
58
  return false;
59
59
  }
60
- return (0, _utils.forceFocus)(editorViewRef.current, api)((0, _attachInputMeta.attachInputMetaWithAnalytics)(api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions)(inputSource || _enums.InputSource.EXTERNAL, _analytics.ACTION.UNDO_PERFORMED)(_history.undo));
60
+ return (0, _utils.forceFocus)(editorViewRef.current, api)((0, _attachInputMeta.attachInputMetaWithAnalytics)(api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions)(inputSource || _enums.InputSource.EXTERNAL, _analytics.ACTION.UNDO_PERFORMED)(_prosemirrorHistory.undo));
61
61
  };
62
62
  var handleRedo = function handleRedo(inputSource) {
63
63
  var _api$analytics2;
64
64
  if (!editorViewRef.current) {
65
65
  return false;
66
66
  }
67
- return (0, _utils.forceFocus)(editorViewRef.current, api)((0, _attachInputMeta.attachInputMetaWithAnalytics)(api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions)(inputSource || _enums.InputSource.EXTERNAL, _analytics.ACTION.REDO_PERFORMED)(_history.redo));
67
+ return (0, _utils.forceFocus)(editorViewRef.current, api)((0, _attachInputMeta.attachInputMetaWithAnalytics)(api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions)(inputSource || _enums.InputSource.EXTERNAL, _analytics.ACTION.REDO_PERFORMED)(_prosemirrorHistory.redo));
68
68
  };
69
69
  return {
70
70
  name: 'undoRedoPlugin',
@@ -1,5 +1,7 @@
1
1
  import { ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
2
2
  import { withAnalytics } from '@atlaskit/editor-common/editor-analytics';
3
+ import { areNodesEqualIgnoreAttrs } from '@atlaskit/editor-common/utils/document';
4
+ import { fg } from '@atlaskit/platform-feature-flags';
3
5
  import { InputSource } from './enums';
4
6
  import { pluginKey as undoPluginKey } from './plugin-key';
5
7
  export const attachInputMeta = inputSource => command => (state, dispatch) => {
@@ -29,7 +31,65 @@ const inputSourceToInputMethod = inputSource => {
29
31
  return INPUT_METHOD.EXTERNAL;
30
32
  }
31
33
  };
32
- export const attachInputMetaWithAnalytics = editorAnalyticsAPI => (inputSource, action) => command => attachInputMeta(inputSource)(withAnalytics(editorAnalyticsAPI, {
34
+ function getNodesWithDifferingAttributes({
35
+ before,
36
+ after
37
+ }) {
38
+ const allAttributeKeys = Object.keys({
39
+ ...before.attrs,
40
+ ...after.attrs
41
+ });
42
+ const differingAttributes = allAttributeKeys.filter(key => before.attrs[key] !== after.attrs[key]);
43
+ const affectedNodes = differingAttributes.length ? [{
44
+ type: before.type.name,
45
+ attributes: differingAttributes
46
+ }] : [];
47
+ return before.children.reduce((acc, beforeChild, index) => [...acc, ...getNodesWithDifferingAttributes({
48
+ before: beforeChild,
49
+ after: after.child(index)
50
+ })], affectedNodes);
51
+ }
52
+
53
+ /**
54
+ * Analyzes changes between two ProseMirror document nodes.
55
+ *
56
+ * @param params - Object containing before and after node states
57
+ * @param params.before - The document node before changes
58
+ * @param params.after - The document node after changes
59
+ * @returns Object containing change analysis results with hasChanged boolean and affectedNodes array
60
+ */
61
+ export function getChanges({
62
+ before,
63
+ after
64
+ }) {
65
+ const hasChanged = !areNodesEqualIgnoreAttrs(after, before);
66
+ const affectedNodes = hasChanged ? undefined : getNodesWithDifferingAttributes({
67
+ before,
68
+ after
69
+ })
70
+ // Limit to 25 nodes to avoid oversize payloads
71
+ .slice(0, 25);
72
+ return {
73
+ hasChanged,
74
+ affectedNodes
75
+ };
76
+ }
77
+ export const attachInputMetaWithAnalytics = editorAnalyticsAPI => (inputSource, action) => command => attachInputMeta(inputSource)(withAnalytics(editorAnalyticsAPI, fg('platform_editor_add_undo_meta_analytics') ? ({
78
+ doc: before
79
+ }, {
80
+ currentDoc: after
81
+ }) => ({
82
+ eventType: EVENT_TYPE.TRACK,
83
+ action,
84
+ actionSubject: ACTION_SUBJECT.EDITOR,
85
+ attributes: {
86
+ inputMethod: inputSourceToInputMethod(inputSource),
87
+ ...getChanges({
88
+ before,
89
+ after
90
+ })
91
+ }
92
+ }) : {
33
93
  eventType: EVENT_TYPE.TRACK,
34
94
  action,
35
95
  actionSubject: ACTION_SUBJECT.EDITOR,
@@ -1,5 +1,5 @@
1
1
  import { ACTION } from '@atlaskit/editor-common/analytics';
2
- import { redo, undo } from '@atlaskit/editor-prosemirror/history';
2
+ import { redo, undo } from '@atlaskit/prosemirror-history';
3
3
  import { attachInputMeta, attachInputMetaWithAnalytics } from './attach-input-meta';
4
4
  import { InputSource } from './enums';
5
5
  export const undoFromKeyboard = attachInputMeta(InputSource.KEYBOARD)(undo);
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { ACTION } from '@atlaskit/editor-common/analytics';
3
3
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
4
- import { redo, undo } from '@atlaskit/editor-prosemirror/history';
4
+ import { redo, undo } from '@atlaskit/prosemirror-history';
5
5
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
6
6
  import { attachInputMetaWithAnalytics } from './pm-plugins/attach-input-meta';
7
7
  import { InputSource } from './pm-plugins/enums';
@@ -1,5 +1,11 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ 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; }
4
+ 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) { _defineProperty(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; }
1
5
  import { ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
2
6
  import { withAnalytics } from '@atlaskit/editor-common/editor-analytics';
7
+ import { areNodesEqualIgnoreAttrs } from '@atlaskit/editor-common/utils/document';
8
+ import { fg } from '@atlaskit/platform-feature-flags';
3
9
  import { InputSource } from './enums';
4
10
  import { pluginKey as undoPluginKey } from './plugin-key';
5
11
  export var attachInputMeta = function attachInputMeta(inputSource) {
@@ -33,10 +39,66 @@ var inputSourceToInputMethod = function inputSourceToInputMethod(inputSource) {
33
39
  return INPUT_METHOD.EXTERNAL;
34
40
  }
35
41
  };
42
+ function getNodesWithDifferingAttributes(_ref) {
43
+ var before = _ref.before,
44
+ after = _ref.after;
45
+ var allAttributeKeys = Object.keys(_objectSpread(_objectSpread({}, before.attrs), after.attrs));
46
+ var differingAttributes = allAttributeKeys.filter(function (key) {
47
+ return before.attrs[key] !== after.attrs[key];
48
+ });
49
+ var affectedNodes = differingAttributes.length ? [{
50
+ type: before.type.name,
51
+ attributes: differingAttributes
52
+ }] : [];
53
+ return before.children.reduce(function (acc, beforeChild, index) {
54
+ return [].concat(_toConsumableArray(acc), _toConsumableArray(getNodesWithDifferingAttributes({
55
+ before: beforeChild,
56
+ after: after.child(index)
57
+ })));
58
+ }, affectedNodes);
59
+ }
60
+
61
+ /**
62
+ * Analyzes changes between two ProseMirror document nodes.
63
+ *
64
+ * @param params - Object containing before and after node states
65
+ * @param params.before - The document node before changes
66
+ * @param params.after - The document node after changes
67
+ * @returns Object containing change analysis results with hasChanged boolean and affectedNodes array
68
+ */
69
+ export function getChanges(_ref2) {
70
+ var before = _ref2.before,
71
+ after = _ref2.after;
72
+ var hasChanged = !areNodesEqualIgnoreAttrs(after, before);
73
+ var affectedNodes = hasChanged ? undefined : getNodesWithDifferingAttributes({
74
+ before: before,
75
+ after: after
76
+ })
77
+ // Limit to 25 nodes to avoid oversize payloads
78
+ .slice(0, 25);
79
+ return {
80
+ hasChanged: hasChanged,
81
+ affectedNodes: affectedNodes
82
+ };
83
+ }
36
84
  export var attachInputMetaWithAnalytics = function attachInputMetaWithAnalytics(editorAnalyticsAPI) {
37
85
  return function (inputSource, action) {
38
86
  return function (command) {
39
- return attachInputMeta(inputSource)(withAnalytics(editorAnalyticsAPI, {
87
+ return attachInputMeta(inputSource)(withAnalytics(editorAnalyticsAPI, fg('platform_editor_add_undo_meta_analytics') ? function (_ref3, _ref4) {
88
+ var before = _ref3.doc;
89
+ var after = _ref4.currentDoc;
90
+ return {
91
+ eventType: EVENT_TYPE.TRACK,
92
+ action: action,
93
+ actionSubject: ACTION_SUBJECT.EDITOR,
94
+ attributes: _objectSpread({
95
+ inputMethod: inputSourceToInputMethod(inputSource)
96
+ }, getChanges({
97
+ before: before,
98
+ after: after
99
+ }))
100
+ };
101
+ } : {
40
102
  eventType: EVENT_TYPE.TRACK,
41
103
  action: action,
42
104
  actionSubject: ACTION_SUBJECT.EDITOR,
@@ -1,5 +1,5 @@
1
1
  import { ACTION } from '@atlaskit/editor-common/analytics';
2
- import { redo, undo } from '@atlaskit/editor-prosemirror/history';
2
+ import { redo, undo } from '@atlaskit/prosemirror-history';
3
3
  import { attachInputMeta, attachInputMetaWithAnalytics } from './attach-input-meta';
4
4
  import { InputSource } from './enums';
5
5
  export var undoFromKeyboard = attachInputMeta(InputSource.KEYBOARD)(undo);
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { ACTION } from '@atlaskit/editor-common/analytics';
3
3
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
4
- import { redo, undo } from '@atlaskit/editor-prosemirror/history';
4
+ import { redo, undo } from '@atlaskit/prosemirror-history';
5
5
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
6
6
  import { attachInputMetaWithAnalytics } from './pm-plugins/attach-input-meta';
7
7
  import { InputSource } from './pm-plugins/enums';
@@ -1,8 +1,28 @@
1
- import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
- import { type ACTION } from '@atlaskit/editor-common/analytics';
1
+ import type { EditorAnalyticsAPI, ACTION } from '@atlaskit/editor-common/analytics';
3
2
  import type { HigherOrderCommand, Command } from '@atlaskit/editor-common/types';
3
+ import type { Node } from '@atlaskit/editor-prosemirror/model';
4
4
  import { InputSource } from './enums';
5
5
  type AttachInputMeta = (inputSource: InputSource) => HigherOrderCommand;
6
6
  export declare const attachInputMeta: AttachInputMeta;
7
+ type NodeHistory = {
8
+ after: Node;
9
+ before: Node;
10
+ };
11
+ type NodeWithDifferingAttributes = {
12
+ attributes: string[];
13
+ type: string;
14
+ };
15
+ /**
16
+ * Analyzes changes between two ProseMirror document nodes.
17
+ *
18
+ * @param params - Object containing before and after node states
19
+ * @param params.before - The document node before changes
20
+ * @param params.after - The document node after changes
21
+ * @returns Object containing change analysis results with hasChanged boolean and affectedNodes array
22
+ */
23
+ export declare function getChanges({ before, after }: NodeHistory): {
24
+ hasChanged: boolean;
25
+ affectedNodes: NodeWithDifferingAttributes[] | undefined;
26
+ };
7
27
  export declare const attachInputMetaWithAnalytics: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => (inputSource: InputSource, action: ACTION.UNDO_PERFORMED | ACTION.REDO_PERFORMED) => (command: Command) => Command;
8
28
  export {};
@@ -1,8 +1,28 @@
1
- import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
- import { type ACTION } from '@atlaskit/editor-common/analytics';
1
+ import type { EditorAnalyticsAPI, ACTION } from '@atlaskit/editor-common/analytics';
3
2
  import type { HigherOrderCommand, Command } from '@atlaskit/editor-common/types';
3
+ import type { Node } from '@atlaskit/editor-prosemirror/model';
4
4
  import { InputSource } from './enums';
5
5
  type AttachInputMeta = (inputSource: InputSource) => HigherOrderCommand;
6
6
  export declare const attachInputMeta: AttachInputMeta;
7
+ type NodeHistory = {
8
+ after: Node;
9
+ before: Node;
10
+ };
11
+ type NodeWithDifferingAttributes = {
12
+ attributes: string[];
13
+ type: string;
14
+ };
15
+ /**
16
+ * Analyzes changes between two ProseMirror document nodes.
17
+ *
18
+ * @param params - Object containing before and after node states
19
+ * @param params.before - The document node before changes
20
+ * @param params.after - The document node after changes
21
+ * @returns Object containing change analysis results with hasChanged boolean and affectedNodes array
22
+ */
23
+ export declare function getChanges({ before, after }: NodeHistory): {
24
+ hasChanged: boolean;
25
+ affectedNodes: NodeWithDifferingAttributes[] | undefined;
26
+ };
7
27
  export declare const attachInputMetaWithAnalytics: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => (inputSource: InputSource, action: ACTION.UNDO_PERFORMED | ACTION.REDO_PERFORMED) => (command: Command) => Command;
8
28
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-undo-redo",
3
- "version": "6.0.7",
3
+ "version": "6.1.1",
4
4
  "description": "Undo redo plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -32,18 +32,19 @@
32
32
  "@atlaskit/editor-plugin-history": "^6.0.0",
33
33
  "@atlaskit/editor-plugin-primary-toolbar": "^7.0.0",
34
34
  "@atlaskit/editor-plugin-toolbar": "^3.1.0",
35
- "@atlaskit/editor-plugin-type-ahead": "^6.2.0",
35
+ "@atlaskit/editor-plugin-type-ahead": "^6.4.0",
36
36
  "@atlaskit/editor-prosemirror": "7.0.0",
37
37
  "@atlaskit/editor-toolbar": "^0.14.0",
38
38
  "@atlaskit/editor-toolbar-model": "^0.2.0",
39
- "@atlaskit/icon": "^28.4.0",
39
+ "@atlaskit/icon": "^28.5.0",
40
40
  "@atlaskit/platform-feature-flags": "^1.1.0",
41
- "@atlaskit/tmp-editor-statsig": "^13.2.0",
41
+ "@atlaskit/prosemirror-history": "^0.2.0",
42
+ "@atlaskit/tmp-editor-statsig": "^13.7.0",
42
43
  "@babel/runtime": "^7.0.0",
43
44
  "@emotion/react": "^11.7.1"
44
45
  },
45
46
  "peerDependencies": {
46
- "@atlaskit/editor-common": "^110.4.0",
47
+ "@atlaskit/editor-common": "^110.10.0",
47
48
  "react": "^18.2.0",
48
49
  "react-intl-next": "npm:react-intl@^5.18.1"
49
50
  },
@@ -91,6 +92,9 @@
91
92
  "platform-feature-flags": {
92
93
  "platform_editor_cmd_y_mac_redo_shortcut": {
93
94
  "type": "boolean"
95
+ },
96
+ "platform_editor_add_undo_meta_analytics": {
97
+ "type": "boolean"
94
98
  }
95
99
  }
96
100
  }