@atlaskit/editor-plugin-track-changes 12.0.2 → 12.1.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 +19 -0
- package/dist/cjs/pm-plugins/keymaps.js +4 -2
- package/dist/cjs/pm-plugins/main.js +6 -0
- package/dist/cjs/pm-plugins/types.js +1 -0
- package/dist/cjs/trackChangesPlugin.js +28 -7
- package/dist/cjs/ui/TrackChangesToolbarButton.js +11 -5
- package/dist/es2019/pm-plugins/keymaps.js +5 -3
- package/dist/es2019/pm-plugins/main.js +7 -0
- package/dist/es2019/pm-plugins/types.js +1 -0
- package/dist/es2019/trackChangesPlugin.js +25 -5
- package/dist/es2019/ui/TrackChangesToolbarButton.js +11 -5
- package/dist/esm/pm-plugins/keymaps.js +4 -2
- package/dist/esm/pm-plugins/main.js +6 -0
- package/dist/esm/pm-plugins/types.js +1 -0
- package/dist/esm/trackChangesPlugin.js +28 -7
- package/dist/esm/ui/TrackChangesToolbarButton.js +11 -5
- package/dist/types/pm-plugins/main.d.ts +6 -0
- package/dist/types/pm-plugins/types.d.ts +2 -1
- package/dist/types/trackChangesPluginType.d.ts +17 -0
- package/package.json +6 -6
- package/tsconfig.json +5 -15
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-track-changes
|
|
2
2
|
|
|
3
|
+
## 12.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`dcb19ae73b101`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/dcb19ae73b101) -
|
|
8
|
+
[CCI-18040] Disable the main toolbar's View changes (track changes) button and its keyboard
|
|
9
|
+
shortcut while the AI Review moment is visible. Adds a setToggleChangesDisabled command and
|
|
10
|
+
isToggleChangesDisabled shared state to the track changes plugin.
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies
|
|
15
|
+
|
|
16
|
+
## 12.0.3
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- Updated dependencies
|
|
21
|
+
|
|
3
22
|
## 12.0.2
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
|
@@ -18,8 +18,10 @@ function keymapPlugin(api) {
|
|
|
18
18
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
19
19
|
_keymaps.toggleViewChanges.common, function () {
|
|
20
20
|
var _api$trackChanges, _api$trackChanges2;
|
|
21
|
-
var
|
|
22
|
-
|
|
21
|
+
var trackChangesState = api === null || api === void 0 || (_api$trackChanges = api.trackChanges) === null || _api$trackChanges === void 0 ? void 0 : _api$trackChanges.sharedState.currentState();
|
|
22
|
+
// Mirror the toolbar button: no changes to show, or another plugin currently owns
|
|
23
|
+
// the diff decorations (e.g. the AI Review moment is visible).
|
|
24
|
+
if (!(trackChangesState !== null && trackChangesState !== void 0 && trackChangesState.isShowDiffAvailable) || trackChangesState !== null && trackChangesState !== void 0 && trackChangesState.isToggleChangesDisabled) {
|
|
23
25
|
return false;
|
|
24
26
|
}
|
|
25
27
|
var result = api === null || api === void 0 ? void 0 : api.core.actions.execute(api === null || api === void 0 || (_api$trackChanges2 = api.trackChanges) === null || _api$trackChanges2 === void 0 ? void 0 : _api$trackChanges2.commands.toggleChanges);
|
|
@@ -59,12 +59,18 @@ var createTrackChangesPlugin = exports.createTrackChangesPlugin = function creat
|
|
|
59
59
|
steps: [],
|
|
60
60
|
shouldChangesBeDisplayed: false,
|
|
61
61
|
isShowDiffAvailable: false,
|
|
62
|
+
isToggleChangesDisabled: false,
|
|
62
63
|
allocations: new Set()
|
|
63
64
|
};
|
|
64
65
|
},
|
|
65
66
|
apply: function apply(tr, state) {
|
|
66
67
|
var _api$history, _state$steps$at$alloc, _state$steps$at;
|
|
67
68
|
var metadata = tr.getMeta(trackChangesPluginKey);
|
|
69
|
+
if (metadata && metadata.action === _types.TOGGLE_TRACK_CHANGES_ACTION.SET_TOGGLE_CHANGES_DISABLED) {
|
|
70
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
71
|
+
isToggleChangesDisabled: Boolean(metadata.isDisabled)
|
|
72
|
+
});
|
|
73
|
+
}
|
|
68
74
|
if (metadata && metadata.action === _types.TOGGLE_TRACK_CHANGES_ACTION.RESET_BASELINE) {
|
|
69
75
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
70
76
|
steps: [],
|
|
@@ -7,5 +7,6 @@ exports.TOGGLE_TRACK_CHANGES_ACTION = void 0;
|
|
|
7
7
|
var TOGGLE_TRACK_CHANGES_ACTION = exports.TOGGLE_TRACK_CHANGES_ACTION = /*#__PURE__*/function (TOGGLE_TRACK_CHANGES_ACTION) {
|
|
8
8
|
TOGGLE_TRACK_CHANGES_ACTION["TOGGLE_TRACK_CHANGES"] = "TOGGLE_TRACK_CHANGES";
|
|
9
9
|
TOGGLE_TRACK_CHANGES_ACTION["RESET_BASELINE"] = "RESET_BASELINE";
|
|
10
|
+
TOGGLE_TRACK_CHANGES_ACTION["SET_TOGGLE_CHANGES_DISABLED"] = "SET_TOGGLE_CHANGES_DISABLED";
|
|
10
11
|
return TOGGLE_TRACK_CHANGES_ACTION;
|
|
11
12
|
}({});
|
|
@@ -49,15 +49,34 @@ var trackChangesPlugin = exports.trackChangesPlugin = function trackChangesPlugi
|
|
|
49
49
|
},
|
|
50
50
|
commands: {
|
|
51
51
|
toggleChanges: function toggleChanges(_ref2) {
|
|
52
|
+
var _api$trackChanges;
|
|
52
53
|
var tr = _ref2.tr;
|
|
54
|
+
// Another plugin currently owns the diff decorations (e.g. the AI Review moment),
|
|
55
|
+
// so toggling would fight over the same diff — bail out.
|
|
56
|
+
if (api !== null && api !== void 0 && (_api$trackChanges = api.trackChanges) !== null && _api$trackChanges !== void 0 && (_api$trackChanges = _api$trackChanges.sharedState.currentState()) !== null && _api$trackChanges !== void 0 && _api$trackChanges.isToggleChangesDisabled) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
53
59
|
return tr.setMeta(_main.trackChangesPluginKey, {
|
|
54
60
|
action: _types.TOGGLE_TRACK_CHANGES_ACTION.TOGGLE_TRACK_CHANGES
|
|
55
61
|
});
|
|
56
62
|
},
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
setToggleChangesDisabled: function setToggleChangesDisabled(isDisabled) {
|
|
64
|
+
return function (_ref3) {
|
|
65
|
+
var _api$trackChanges2;
|
|
66
|
+
var tr = _ref3.tr;
|
|
67
|
+
if ((api === null || api === void 0 || (_api$trackChanges2 = api.trackChanges) === null || _api$trackChanges2 === void 0 || (_api$trackChanges2 = _api$trackChanges2.sharedState.currentState()) === null || _api$trackChanges2 === void 0 ? void 0 : _api$trackChanges2.isToggleChangesDisabled) === isDisabled) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
return tr.setMeta(_main.trackChangesPluginKey, {
|
|
71
|
+
action: _types.TOGGLE_TRACK_CHANGES_ACTION.SET_TOGGLE_CHANGES_DISABLED,
|
|
72
|
+
isDisabled: isDisabled
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
},
|
|
76
|
+
resetBaseline: function resetBaseline(_ref4) {
|
|
77
|
+
var _api$trackChanges3;
|
|
78
|
+
var tr = _ref4.tr;
|
|
79
|
+
if (!(api !== null && api !== void 0 && (_api$trackChanges3 = api.trackChanges) !== null && _api$trackChanges3 !== void 0 && (_api$trackChanges3 = _api$trackChanges3.sharedState.currentState()) !== null && _api$trackChanges3 !== void 0 && _api$trackChanges3.isShowDiffAvailable)) {
|
|
61
80
|
return null;
|
|
62
81
|
}
|
|
63
82
|
return tr.setMeta(_main.trackChangesPluginKey, {
|
|
@@ -66,16 +85,18 @@ var trackChangesPlugin = exports.trackChangesPlugin = function trackChangesPlugi
|
|
|
66
85
|
}
|
|
67
86
|
},
|
|
68
87
|
getSharedState: function getSharedState(editorState) {
|
|
69
|
-
var _trackChangesPluginKe, _trackChangesPluginKe2;
|
|
88
|
+
var _trackChangesPluginKe, _trackChangesPluginKe2, _trackChangesPluginKe3;
|
|
70
89
|
if (!editorState) {
|
|
71
90
|
return {
|
|
72
91
|
isDisplayingChanges: false,
|
|
73
|
-
isShowDiffAvailable: false
|
|
92
|
+
isShowDiffAvailable: false,
|
|
93
|
+
isToggleChangesDisabled: false
|
|
74
94
|
};
|
|
75
95
|
}
|
|
76
96
|
return {
|
|
77
97
|
isDisplayingChanges: Boolean((_trackChangesPluginKe = _main.trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe === void 0 ? void 0 : _trackChangesPluginKe.shouldChangesBeDisplayed),
|
|
78
|
-
isShowDiffAvailable: Boolean((_trackChangesPluginKe2 = _main.trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe2 === void 0 ? void 0 : _trackChangesPluginKe2.isShowDiffAvailable)
|
|
98
|
+
isShowDiffAvailable: Boolean((_trackChangesPluginKe2 = _main.trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe2 === void 0 ? void 0 : _trackChangesPluginKe2.isShowDiffAvailable),
|
|
99
|
+
isToggleChangesDisabled: Boolean((_trackChangesPluginKe3 = _main.trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe3 === void 0 ? void 0 : _trackChangesPluginKe3.isToggleChangesDisabled)
|
|
79
100
|
};
|
|
80
101
|
}
|
|
81
102
|
};
|
|
@@ -18,14 +18,20 @@ var TrackChangesToolbarButton = exports.TrackChangesToolbarButton = function Tra
|
|
|
18
18
|
Wrapper = _ref.wrapper;
|
|
19
19
|
var isToolbarAIFCEnabled = Boolean(api === null || api === void 0 ? void 0 : api.toolbar);
|
|
20
20
|
var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['trackChanges'], function (states) {
|
|
21
|
-
var _states$trackChangesS, _states$trackChangesS2;
|
|
21
|
+
var _states$trackChangesS, _states$trackChangesS2, _states$trackChangesS3;
|
|
22
22
|
return {
|
|
23
23
|
isDisplayingChanges: (_states$trackChangesS = states.trackChangesState) === null || _states$trackChangesS === void 0 ? void 0 : _states$trackChangesS.isDisplayingChanges,
|
|
24
|
-
isShowDiffAvailable: (_states$trackChangesS2 = states.trackChangesState) === null || _states$trackChangesS2 === void 0 ? void 0 : _states$trackChangesS2.isShowDiffAvailable
|
|
24
|
+
isShowDiffAvailable: (_states$trackChangesS2 = states.trackChangesState) === null || _states$trackChangesS2 === void 0 ? void 0 : _states$trackChangesS2.isShowDiffAvailable,
|
|
25
|
+
isToggleChangesDisabled: (_states$trackChangesS3 = states.trackChangesState) === null || _states$trackChangesS3 === void 0 ? void 0 : _states$trackChangesS3.isToggleChangesDisabled
|
|
25
26
|
};
|
|
26
27
|
}),
|
|
27
28
|
isDisplayingChanges = _useSharedPluginState.isDisplayingChanges,
|
|
28
|
-
isShowDiffAvailable = _useSharedPluginState.isShowDiffAvailable
|
|
29
|
+
isShowDiffAvailable = _useSharedPluginState.isShowDiffAvailable,
|
|
30
|
+
isToggleChangesDisabled = _useSharedPluginState.isToggleChangesDisabled;
|
|
31
|
+
|
|
32
|
+
// Disabled either because there's nothing to diff, or because another plugin currently
|
|
33
|
+
// owns the diff decorations (e.g. the AI Review moment is visible).
|
|
34
|
+
var isDisabled = !isShowDiffAvailable || Boolean(isToggleChangesDisabled);
|
|
29
35
|
var _useIntl = (0, _reactIntl.useIntl)(),
|
|
30
36
|
formatMessage = _useIntl.formatMessage;
|
|
31
37
|
var handleClick = _react.default.useCallback(function () {
|
|
@@ -51,7 +57,7 @@ var TrackChangesToolbarButton = exports.TrackChangesToolbarButton = function Tra
|
|
|
51
57
|
icon: _editorToolbar.HistoryIcon,
|
|
52
58
|
label: formatMessage(_messages.trackChangesMessages.toolbarIconLabel),
|
|
53
59
|
appearance: "subtle",
|
|
54
|
-
isDisabled:
|
|
60
|
+
isDisabled: isDisabled,
|
|
55
61
|
isSelected: isDisplayingChanges,
|
|
56
62
|
onClick: handleClick
|
|
57
63
|
}));
|
|
@@ -64,7 +70,7 @@ var TrackChangesToolbarButton = exports.TrackChangesToolbarButton = function Tra
|
|
|
64
70
|
size: "small"
|
|
65
71
|
}),
|
|
66
72
|
onClick: handleClick,
|
|
67
|
-
isDisabled:
|
|
73
|
+
isDisabled: isDisabled,
|
|
68
74
|
isSelected: isDisplayingChanges
|
|
69
75
|
}));
|
|
70
76
|
return Wrapper ? /*#__PURE__*/_react.default.createElement(Wrapper, null, button) : button;
|
|
@@ -11,9 +11,11 @@ export function keymapPlugin(api) {
|
|
|
11
11
|
bindKeymapWithCommand(
|
|
12
12
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
13
13
|
toggleViewChanges.common, () => {
|
|
14
|
-
var _api$trackChanges, _api$
|
|
15
|
-
const
|
|
16
|
-
|
|
14
|
+
var _api$trackChanges, _api$trackChanges2;
|
|
15
|
+
const trackChangesState = api === null || api === void 0 ? void 0 : (_api$trackChanges = api.trackChanges) === null || _api$trackChanges === void 0 ? void 0 : _api$trackChanges.sharedState.currentState();
|
|
16
|
+
// Mirror the toolbar button: no changes to show, or another plugin currently owns
|
|
17
|
+
// the diff decorations (e.g. the AI Review moment is visible).
|
|
18
|
+
if (!(trackChangesState !== null && trackChangesState !== void 0 && trackChangesState.isShowDiffAvailable) || trackChangesState !== null && trackChangesState !== void 0 && trackChangesState.isToggleChangesDisabled) {
|
|
17
19
|
return false;
|
|
18
20
|
}
|
|
19
21
|
const result = api === null || api === void 0 ? void 0 : api.core.actions.execute(api === null || api === void 0 ? void 0 : (_api$trackChanges2 = api.trackChanges) === null || _api$trackChanges2 === void 0 ? void 0 : _api$trackChanges2.commands.toggleChanges);
|
|
@@ -34,12 +34,19 @@ export const createTrackChangesPlugin = api => {
|
|
|
34
34
|
steps: [],
|
|
35
35
|
shouldChangesBeDisplayed: false,
|
|
36
36
|
isShowDiffAvailable: false,
|
|
37
|
+
isToggleChangesDisabled: false,
|
|
37
38
|
allocations: new Set()
|
|
38
39
|
};
|
|
39
40
|
},
|
|
40
41
|
apply(tr, state) {
|
|
41
42
|
var _api$history, _state$steps$at$alloc, _state$steps$at;
|
|
42
43
|
const metadata = tr.getMeta(trackChangesPluginKey);
|
|
44
|
+
if (metadata && metadata.action === ACTION.SET_TOGGLE_CHANGES_DISABLED) {
|
|
45
|
+
return {
|
|
46
|
+
...state,
|
|
47
|
+
isToggleChangesDisabled: Boolean(metadata.isDisabled)
|
|
48
|
+
};
|
|
49
|
+
}
|
|
43
50
|
if (metadata && metadata.action === ACTION.RESET_BASELINE) {
|
|
44
51
|
return {
|
|
45
52
|
...state,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export let TOGGLE_TRACK_CHANGES_ACTION = /*#__PURE__*/function (TOGGLE_TRACK_CHANGES_ACTION) {
|
|
2
2
|
TOGGLE_TRACK_CHANGES_ACTION["TOGGLE_TRACK_CHANGES"] = "TOGGLE_TRACK_CHANGES";
|
|
3
3
|
TOGGLE_TRACK_CHANGES_ACTION["RESET_BASELINE"] = "RESET_BASELINE";
|
|
4
|
+
TOGGLE_TRACK_CHANGES_ACTION["SET_TOGGLE_CHANGES_DISABLED"] = "SET_TOGGLE_CHANGES_DISABLED";
|
|
4
5
|
return TOGGLE_TRACK_CHANGES_ACTION;
|
|
5
6
|
}({});
|
|
@@ -41,15 +41,33 @@ export const trackChangesPlugin = ({
|
|
|
41
41
|
toggleChanges: ({
|
|
42
42
|
tr
|
|
43
43
|
}) => {
|
|
44
|
+
var _api$trackChanges, _api$trackChanges$sha;
|
|
45
|
+
// Another plugin currently owns the diff decorations (e.g. the AI Review moment),
|
|
46
|
+
// so toggling would fight over the same diff — bail out.
|
|
47
|
+
if (api !== null && api !== void 0 && (_api$trackChanges = api.trackChanges) !== null && _api$trackChanges !== void 0 && (_api$trackChanges$sha = _api$trackChanges.sharedState.currentState()) !== null && _api$trackChanges$sha !== void 0 && _api$trackChanges$sha.isToggleChangesDisabled) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
44
50
|
return tr.setMeta(trackChangesPluginKey, {
|
|
45
51
|
action: ACTION.TOGGLE_TRACK_CHANGES
|
|
46
52
|
});
|
|
47
53
|
},
|
|
54
|
+
setToggleChangesDisabled: isDisabled => ({
|
|
55
|
+
tr
|
|
56
|
+
}) => {
|
|
57
|
+
var _api$trackChanges2, _api$trackChanges2$sh;
|
|
58
|
+
if ((api === null || api === void 0 ? void 0 : (_api$trackChanges2 = api.trackChanges) === null || _api$trackChanges2 === void 0 ? void 0 : (_api$trackChanges2$sh = _api$trackChanges2.sharedState.currentState()) === null || _api$trackChanges2$sh === void 0 ? void 0 : _api$trackChanges2$sh.isToggleChangesDisabled) === isDisabled) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return tr.setMeta(trackChangesPluginKey, {
|
|
62
|
+
action: ACTION.SET_TOGGLE_CHANGES_DISABLED,
|
|
63
|
+
isDisabled
|
|
64
|
+
});
|
|
65
|
+
},
|
|
48
66
|
resetBaseline: ({
|
|
49
67
|
tr
|
|
50
68
|
}) => {
|
|
51
|
-
var _api$
|
|
52
|
-
if (!(api !== null && api !== void 0 && (_api$
|
|
69
|
+
var _api$trackChanges3, _api$trackChanges3$sh;
|
|
70
|
+
if (!(api !== null && api !== void 0 && (_api$trackChanges3 = api.trackChanges) !== null && _api$trackChanges3 !== void 0 && (_api$trackChanges3$sh = _api$trackChanges3.sharedState.currentState()) !== null && _api$trackChanges3$sh !== void 0 && _api$trackChanges3$sh.isShowDiffAvailable)) {
|
|
53
71
|
return null;
|
|
54
72
|
}
|
|
55
73
|
return tr.setMeta(trackChangesPluginKey, {
|
|
@@ -58,16 +76,18 @@ export const trackChangesPlugin = ({
|
|
|
58
76
|
}
|
|
59
77
|
},
|
|
60
78
|
getSharedState: editorState => {
|
|
61
|
-
var _trackChangesPluginKe, _trackChangesPluginKe2;
|
|
79
|
+
var _trackChangesPluginKe, _trackChangesPluginKe2, _trackChangesPluginKe3;
|
|
62
80
|
if (!editorState) {
|
|
63
81
|
return {
|
|
64
82
|
isDisplayingChanges: false,
|
|
65
|
-
isShowDiffAvailable: false
|
|
83
|
+
isShowDiffAvailable: false,
|
|
84
|
+
isToggleChangesDisabled: false
|
|
66
85
|
};
|
|
67
86
|
}
|
|
68
87
|
return {
|
|
69
88
|
isDisplayingChanges: Boolean((_trackChangesPluginKe = trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe === void 0 ? void 0 : _trackChangesPluginKe.shouldChangesBeDisplayed),
|
|
70
|
-
isShowDiffAvailable: Boolean((_trackChangesPluginKe2 = trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe2 === void 0 ? void 0 : _trackChangesPluginKe2.isShowDiffAvailable)
|
|
89
|
+
isShowDiffAvailable: Boolean((_trackChangesPluginKe2 = trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe2 === void 0 ? void 0 : _trackChangesPluginKe2.isShowDiffAvailable),
|
|
90
|
+
isToggleChangesDisabled: Boolean((_trackChangesPluginKe3 = trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe3 === void 0 ? void 0 : _trackChangesPluginKe3.isToggleChangesDisabled)
|
|
71
91
|
};
|
|
72
92
|
}
|
|
73
93
|
};
|
|
@@ -13,14 +13,20 @@ export const TrackChangesToolbarButton = ({
|
|
|
13
13
|
const isToolbarAIFCEnabled = Boolean(api === null || api === void 0 ? void 0 : api.toolbar);
|
|
14
14
|
const {
|
|
15
15
|
isDisplayingChanges,
|
|
16
|
-
isShowDiffAvailable
|
|
16
|
+
isShowDiffAvailable,
|
|
17
|
+
isToggleChangesDisabled
|
|
17
18
|
} = useSharedPluginStateWithSelector(api, ['trackChanges'], states => {
|
|
18
|
-
var _states$trackChangesS, _states$trackChangesS2;
|
|
19
|
+
var _states$trackChangesS, _states$trackChangesS2, _states$trackChangesS3;
|
|
19
20
|
return {
|
|
20
21
|
isDisplayingChanges: (_states$trackChangesS = states.trackChangesState) === null || _states$trackChangesS === void 0 ? void 0 : _states$trackChangesS.isDisplayingChanges,
|
|
21
|
-
isShowDiffAvailable: (_states$trackChangesS2 = states.trackChangesState) === null || _states$trackChangesS2 === void 0 ? void 0 : _states$trackChangesS2.isShowDiffAvailable
|
|
22
|
+
isShowDiffAvailable: (_states$trackChangesS2 = states.trackChangesState) === null || _states$trackChangesS2 === void 0 ? void 0 : _states$trackChangesS2.isShowDiffAvailable,
|
|
23
|
+
isToggleChangesDisabled: (_states$trackChangesS3 = states.trackChangesState) === null || _states$trackChangesS3 === void 0 ? void 0 : _states$trackChangesS3.isToggleChangesDisabled
|
|
22
24
|
};
|
|
23
25
|
});
|
|
26
|
+
|
|
27
|
+
// Disabled either because there's nothing to diff, or because another plugin currently
|
|
28
|
+
// owns the diff decorations (e.g. the AI Review moment is visible).
|
|
29
|
+
const isDisabled = !isShowDiffAvailable || Boolean(isToggleChangesDisabled);
|
|
24
30
|
const {
|
|
25
31
|
formatMessage
|
|
26
32
|
} = useIntl();
|
|
@@ -47,7 +53,7 @@ export const TrackChangesToolbarButton = ({
|
|
|
47
53
|
icon: HistoryIcon,
|
|
48
54
|
label: formatMessage(trackChangesMessages.toolbarIconLabel),
|
|
49
55
|
appearance: "subtle",
|
|
50
|
-
isDisabled:
|
|
56
|
+
isDisabled: isDisabled,
|
|
51
57
|
isSelected: isDisplayingChanges,
|
|
52
58
|
onClick: handleClick
|
|
53
59
|
}));
|
|
@@ -60,7 +66,7 @@ export const TrackChangesToolbarButton = ({
|
|
|
60
66
|
size: "small"
|
|
61
67
|
}),
|
|
62
68
|
onClick: handleClick,
|
|
63
|
-
isDisabled:
|
|
69
|
+
isDisabled: isDisabled,
|
|
64
70
|
isSelected: isDisplayingChanges
|
|
65
71
|
}));
|
|
66
72
|
return Wrapper ? /*#__PURE__*/React.createElement(Wrapper, null, button) : button;
|
|
@@ -12,8 +12,10 @@ export function keymapPlugin(api) {
|
|
|
12
12
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
13
13
|
toggleViewChanges.common, function () {
|
|
14
14
|
var _api$trackChanges, _api$trackChanges2;
|
|
15
|
-
var
|
|
16
|
-
|
|
15
|
+
var trackChangesState = api === null || api === void 0 || (_api$trackChanges = api.trackChanges) === null || _api$trackChanges === void 0 ? void 0 : _api$trackChanges.sharedState.currentState();
|
|
16
|
+
// Mirror the toolbar button: no changes to show, or another plugin currently owns
|
|
17
|
+
// the diff decorations (e.g. the AI Review moment is visible).
|
|
18
|
+
if (!(trackChangesState !== null && trackChangesState !== void 0 && trackChangesState.isShowDiffAvailable) || trackChangesState !== null && trackChangesState !== void 0 && trackChangesState.isToggleChangesDisabled) {
|
|
17
19
|
return false;
|
|
18
20
|
}
|
|
19
21
|
var result = api === null || api === void 0 ? void 0 : api.core.actions.execute(api === null || api === void 0 || (_api$trackChanges2 = api.trackChanges) === null || _api$trackChanges2 === void 0 ? void 0 : _api$trackChanges2.commands.toggleChanges);
|
|
@@ -52,12 +52,18 @@ export var createTrackChangesPlugin = function createTrackChangesPlugin(api) {
|
|
|
52
52
|
steps: [],
|
|
53
53
|
shouldChangesBeDisplayed: false,
|
|
54
54
|
isShowDiffAvailable: false,
|
|
55
|
+
isToggleChangesDisabled: false,
|
|
55
56
|
allocations: new Set()
|
|
56
57
|
};
|
|
57
58
|
},
|
|
58
59
|
apply: function apply(tr, state) {
|
|
59
60
|
var _api$history, _state$steps$at$alloc, _state$steps$at;
|
|
60
61
|
var metadata = tr.getMeta(trackChangesPluginKey);
|
|
62
|
+
if (metadata && metadata.action === ACTION.SET_TOGGLE_CHANGES_DISABLED) {
|
|
63
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
64
|
+
isToggleChangesDisabled: Boolean(metadata.isDisabled)
|
|
65
|
+
});
|
|
66
|
+
}
|
|
61
67
|
if (metadata && metadata.action === ACTION.RESET_BASELINE) {
|
|
62
68
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
63
69
|
steps: [],
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export var TOGGLE_TRACK_CHANGES_ACTION = /*#__PURE__*/function (TOGGLE_TRACK_CHANGES_ACTION) {
|
|
2
2
|
TOGGLE_TRACK_CHANGES_ACTION["TOGGLE_TRACK_CHANGES"] = "TOGGLE_TRACK_CHANGES";
|
|
3
3
|
TOGGLE_TRACK_CHANGES_ACTION["RESET_BASELINE"] = "RESET_BASELINE";
|
|
4
|
+
TOGGLE_TRACK_CHANGES_ACTION["SET_TOGGLE_CHANGES_DISABLED"] = "SET_TOGGLE_CHANGES_DISABLED";
|
|
4
5
|
return TOGGLE_TRACK_CHANGES_ACTION;
|
|
5
6
|
}({});
|
|
@@ -42,15 +42,34 @@ export var trackChangesPlugin = function trackChangesPlugin(_ref) {
|
|
|
42
42
|
},
|
|
43
43
|
commands: {
|
|
44
44
|
toggleChanges: function toggleChanges(_ref2) {
|
|
45
|
+
var _api$trackChanges;
|
|
45
46
|
var tr = _ref2.tr;
|
|
47
|
+
// Another plugin currently owns the diff decorations (e.g. the AI Review moment),
|
|
48
|
+
// so toggling would fight over the same diff — bail out.
|
|
49
|
+
if (api !== null && api !== void 0 && (_api$trackChanges = api.trackChanges) !== null && _api$trackChanges !== void 0 && (_api$trackChanges = _api$trackChanges.sharedState.currentState()) !== null && _api$trackChanges !== void 0 && _api$trackChanges.isToggleChangesDisabled) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
46
52
|
return tr.setMeta(trackChangesPluginKey, {
|
|
47
53
|
action: ACTION.TOGGLE_TRACK_CHANGES
|
|
48
54
|
});
|
|
49
55
|
},
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
56
|
+
setToggleChangesDisabled: function setToggleChangesDisabled(isDisabled) {
|
|
57
|
+
return function (_ref3) {
|
|
58
|
+
var _api$trackChanges2;
|
|
59
|
+
var tr = _ref3.tr;
|
|
60
|
+
if ((api === null || api === void 0 || (_api$trackChanges2 = api.trackChanges) === null || _api$trackChanges2 === void 0 || (_api$trackChanges2 = _api$trackChanges2.sharedState.currentState()) === null || _api$trackChanges2 === void 0 ? void 0 : _api$trackChanges2.isToggleChangesDisabled) === isDisabled) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return tr.setMeta(trackChangesPluginKey, {
|
|
64
|
+
action: ACTION.SET_TOGGLE_CHANGES_DISABLED,
|
|
65
|
+
isDisabled: isDisabled
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
},
|
|
69
|
+
resetBaseline: function resetBaseline(_ref4) {
|
|
70
|
+
var _api$trackChanges3;
|
|
71
|
+
var tr = _ref4.tr;
|
|
72
|
+
if (!(api !== null && api !== void 0 && (_api$trackChanges3 = api.trackChanges) !== null && _api$trackChanges3 !== void 0 && (_api$trackChanges3 = _api$trackChanges3.sharedState.currentState()) !== null && _api$trackChanges3 !== void 0 && _api$trackChanges3.isShowDiffAvailable)) {
|
|
54
73
|
return null;
|
|
55
74
|
}
|
|
56
75
|
return tr.setMeta(trackChangesPluginKey, {
|
|
@@ -59,16 +78,18 @@ export var trackChangesPlugin = function trackChangesPlugin(_ref) {
|
|
|
59
78
|
}
|
|
60
79
|
},
|
|
61
80
|
getSharedState: function getSharedState(editorState) {
|
|
62
|
-
var _trackChangesPluginKe, _trackChangesPluginKe2;
|
|
81
|
+
var _trackChangesPluginKe, _trackChangesPluginKe2, _trackChangesPluginKe3;
|
|
63
82
|
if (!editorState) {
|
|
64
83
|
return {
|
|
65
84
|
isDisplayingChanges: false,
|
|
66
|
-
isShowDiffAvailable: false
|
|
85
|
+
isShowDiffAvailable: false,
|
|
86
|
+
isToggleChangesDisabled: false
|
|
67
87
|
};
|
|
68
88
|
}
|
|
69
89
|
return {
|
|
70
90
|
isDisplayingChanges: Boolean((_trackChangesPluginKe = trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe === void 0 ? void 0 : _trackChangesPluginKe.shouldChangesBeDisplayed),
|
|
71
|
-
isShowDiffAvailable: Boolean((_trackChangesPluginKe2 = trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe2 === void 0 ? void 0 : _trackChangesPluginKe2.isShowDiffAvailable)
|
|
91
|
+
isShowDiffAvailable: Boolean((_trackChangesPluginKe2 = trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe2 === void 0 ? void 0 : _trackChangesPluginKe2.isShowDiffAvailable),
|
|
92
|
+
isToggleChangesDisabled: Boolean((_trackChangesPluginKe3 = trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe3 === void 0 ? void 0 : _trackChangesPluginKe3.isToggleChangesDisabled)
|
|
72
93
|
};
|
|
73
94
|
}
|
|
74
95
|
};
|
|
@@ -11,14 +11,20 @@ export var TrackChangesToolbarButton = function TrackChangesToolbarButton(_ref)
|
|
|
11
11
|
Wrapper = _ref.wrapper;
|
|
12
12
|
var isToolbarAIFCEnabled = Boolean(api === null || api === void 0 ? void 0 : api.toolbar);
|
|
13
13
|
var _useSharedPluginState = useSharedPluginStateWithSelector(api, ['trackChanges'], function (states) {
|
|
14
|
-
var _states$trackChangesS, _states$trackChangesS2;
|
|
14
|
+
var _states$trackChangesS, _states$trackChangesS2, _states$trackChangesS3;
|
|
15
15
|
return {
|
|
16
16
|
isDisplayingChanges: (_states$trackChangesS = states.trackChangesState) === null || _states$trackChangesS === void 0 ? void 0 : _states$trackChangesS.isDisplayingChanges,
|
|
17
|
-
isShowDiffAvailable: (_states$trackChangesS2 = states.trackChangesState) === null || _states$trackChangesS2 === void 0 ? void 0 : _states$trackChangesS2.isShowDiffAvailable
|
|
17
|
+
isShowDiffAvailable: (_states$trackChangesS2 = states.trackChangesState) === null || _states$trackChangesS2 === void 0 ? void 0 : _states$trackChangesS2.isShowDiffAvailable,
|
|
18
|
+
isToggleChangesDisabled: (_states$trackChangesS3 = states.trackChangesState) === null || _states$trackChangesS3 === void 0 ? void 0 : _states$trackChangesS3.isToggleChangesDisabled
|
|
18
19
|
};
|
|
19
20
|
}),
|
|
20
21
|
isDisplayingChanges = _useSharedPluginState.isDisplayingChanges,
|
|
21
|
-
isShowDiffAvailable = _useSharedPluginState.isShowDiffAvailable
|
|
22
|
+
isShowDiffAvailable = _useSharedPluginState.isShowDiffAvailable,
|
|
23
|
+
isToggleChangesDisabled = _useSharedPluginState.isToggleChangesDisabled;
|
|
24
|
+
|
|
25
|
+
// Disabled either because there's nothing to diff, or because another plugin currently
|
|
26
|
+
// owns the diff decorations (e.g. the AI Review moment is visible).
|
|
27
|
+
var isDisabled = !isShowDiffAvailable || Boolean(isToggleChangesDisabled);
|
|
22
28
|
var _useIntl = useIntl(),
|
|
23
29
|
formatMessage = _useIntl.formatMessage;
|
|
24
30
|
var handleClick = React.useCallback(function () {
|
|
@@ -44,7 +50,7 @@ export var TrackChangesToolbarButton = function TrackChangesToolbarButton(_ref)
|
|
|
44
50
|
icon: HistoryIcon,
|
|
45
51
|
label: formatMessage(trackChangesMessages.toolbarIconLabel),
|
|
46
52
|
appearance: "subtle",
|
|
47
|
-
isDisabled:
|
|
53
|
+
isDisabled: isDisabled,
|
|
48
54
|
isSelected: isDisplayingChanges,
|
|
49
55
|
onClick: handleClick
|
|
50
56
|
}));
|
|
@@ -57,7 +63,7 @@ export var TrackChangesToolbarButton = function TrackChangesToolbarButton(_ref)
|
|
|
57
63
|
size: "small"
|
|
58
64
|
}),
|
|
59
65
|
onClick: handleClick,
|
|
60
|
-
isDisabled:
|
|
66
|
+
isDisabled: isDisabled,
|
|
61
67
|
isSelected: isDisplayingChanges
|
|
62
68
|
}));
|
|
63
69
|
return Wrapper ? /*#__PURE__*/React.createElement(Wrapper, null, button) : button;
|
|
@@ -8,6 +8,12 @@ export declare const trackChangesPluginKey: PluginKey<TrackChangesPluginState>;
|
|
|
8
8
|
type TrackChangesPluginState = {
|
|
9
9
|
allocations: Set<number>;
|
|
10
10
|
isShowDiffAvailable: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Set by other plugins (via the `setToggleChangesDisabled` command) while they own the
|
|
13
|
+
* diff decorations — e.g. the AI Review moment. While true the toolbar button and the
|
|
14
|
+
* keyboard shortcut must not toggle track changes.
|
|
15
|
+
*/
|
|
16
|
+
isToggleChangesDisabled: boolean;
|
|
11
17
|
shouldChangesBeDisplayed: boolean;
|
|
12
18
|
steps: InvertableStep[];
|
|
13
19
|
};
|
|
@@ -22,6 +22,17 @@ export type TrackChangesPlugin = NextEditorPlugin<'trackChanges', {
|
|
|
22
22
|
* Resets the baseline used for tracking changes in the editor.
|
|
23
23
|
*/
|
|
24
24
|
resetBaseline: EditorCommand;
|
|
25
|
+
/**
|
|
26
|
+
* Disables (or re-enables) the ability to toggle track changes.
|
|
27
|
+
*
|
|
28
|
+
* Intended for other plugins that temporarily own the diff decorations — for example
|
|
29
|
+
* the AI Review moment — so the toolbar button and keyboard shortcut don't fight over
|
|
30
|
+
* the same diff. While disabled the toolbar button renders in a disabled state and
|
|
31
|
+
* `toggleChanges` becomes a no-op.
|
|
32
|
+
*
|
|
33
|
+
* Callers are responsible for re-enabling (passing `false`) once they are done.
|
|
34
|
+
*/
|
|
35
|
+
setToggleChangesDisabled: (isDisabled: boolean) => EditorCommand;
|
|
25
36
|
/**
|
|
26
37
|
* Toggles the displaying of changes in the editor.
|
|
27
38
|
*/
|
|
@@ -55,5 +66,11 @@ export type TrackChangesPlugin = NextEditorPlugin<'trackChanges', {
|
|
|
55
66
|
* This will only be false initially before any changes in the session.
|
|
56
67
|
*/
|
|
57
68
|
isShowDiffAvailable: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Whether toggling track changes has been disabled by another plugin that currently
|
|
71
|
+
* owns the diff decorations (see the `setToggleChangesDisabled` command).
|
|
72
|
+
* Defaults to false.
|
|
73
|
+
*/
|
|
74
|
+
isToggleChangesDisabled: boolean;
|
|
58
75
|
};
|
|
59
76
|
}>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-plugin-track-changes",
|
|
3
|
-
"version": "12.0
|
|
3
|
+
"version": "12.1.0",
|
|
4
4
|
"description": "ShowDiff plugin for @atlaskit/editor-core",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"@atlaskit/button": "^25.0.0",
|
|
24
24
|
"@atlaskit/editor-plugin-history": "13.0.0",
|
|
25
25
|
"@atlaskit/editor-plugin-primary-toolbar": "^14.0.0",
|
|
26
|
-
"@atlaskit/editor-plugin-show-diff": "11.0.
|
|
27
|
-
"@atlaskit/editor-plugin-toolbar": "^10.
|
|
26
|
+
"@atlaskit/editor-plugin-show-diff": "11.0.3",
|
|
27
|
+
"@atlaskit/editor-plugin-toolbar": "^10.1.0",
|
|
28
28
|
"@atlaskit/editor-prosemirror": "^8.0.0",
|
|
29
29
|
"@atlaskit/editor-toolbar": "^2.4.0",
|
|
30
30
|
"@atlaskit/editor-toolbar-model": "^1.2.0",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@babel/runtime": "^7.0.0"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
35
|
-
"@atlaskit/editor-common": "^117.
|
|
35
|
+
"@atlaskit/editor-common": "^117.4.0",
|
|
36
36
|
"react": "^18.2.0 || ^19.2.0",
|
|
37
37
|
"react-intl": "^5.25.1 || ^6.0.0 || ^7.0.0"
|
|
38
38
|
},
|
|
@@ -79,10 +79,10 @@
|
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
81
|
"@af/editor-examples-helpers": "workspace:^",
|
|
82
|
-
"@atlaskit/editor-core": "^222.
|
|
82
|
+
"@atlaskit/editor-core": "^222.1.0",
|
|
83
83
|
"@atlaskit/primitives": "^22.2.0",
|
|
84
84
|
"@atlaskit/synchrony-test-helpers": "workspace:^",
|
|
85
|
-
"@atlaskit/tokens": "^16.
|
|
85
|
+
"@atlaskit/tokens": "^16.4.0",
|
|
86
86
|
"@atlassian/structured-docs-types": "workspace:^",
|
|
87
87
|
"@compiled/react": "^1.0.0",
|
|
88
88
|
"prosemirror-dev-tools": "^4.2.0",
|
package/tsconfig.json
CHANGED
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"example-helpers/**/*.tsx",
|
|
8
|
-
"src/**/*.ts",
|
|
9
|
-
"src/**/*.tsx",
|
|
10
|
-
"**/stories.ts",
|
|
11
|
-
"**/stories.tsx",
|
|
12
|
-
"**/stories/*.ts",
|
|
13
|
-
"**/stories/*.tsx",
|
|
14
|
-
"**/stories/**/*.ts",
|
|
15
|
-
"**/stories/**/*.tsx"
|
|
16
|
-
]
|
|
2
|
+
"extends": "./tsconfig.dev.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"disableReferencedProjectLoad": true,
|
|
5
|
+
"disableSolutionSearching": true
|
|
6
|
+
}
|
|
17
7
|
}
|