@atlaskit/editor-plugin-synced-block 4.2.7 → 4.2.8
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 +8 -0
- package/afm-cc/tsconfig.json +9 -0
- package/afm-jira/tsconfig.json +1 -1
- package/dist/cjs/nodeviews/bodiedSyncedBlock.js +27 -5
- package/dist/cjs/pm-plugins/main.js +83 -39
- package/dist/cjs/pm-plugins/utils/ignore-dom-event.js +30 -0
- package/dist/cjs/pm-plugins/utils/track-sync-blocks.js +49 -1
- package/dist/cjs/syncedBlockPlugin.js +16 -1
- package/dist/cjs/types/index.js +12 -0
- package/dist/cjs/ui/CreateSyncedBlockButton.js +10 -5
- package/dist/cjs/ui/CreateSyncedBlockDropdownItem.js +13 -11
- package/dist/cjs/ui/CreateSyncedBlockItem.js +17 -15
- package/dist/cjs/ui/DeleteConfirmationModal.js +12 -2
- package/dist/cjs/ui/Flag.js +67 -0
- package/dist/cjs/ui/floating-toolbar.js +3 -2
- package/dist/es2019/nodeviews/bodiedSyncedBlock.js +18 -0
- package/dist/es2019/pm-plugins/main.js +89 -40
- package/dist/es2019/pm-plugins/utils/ignore-dom-event.js +26 -0
- package/dist/es2019/pm-plugins/utils/track-sync-blocks.js +41 -0
- package/dist/es2019/syncedBlockPlugin.js +18 -2
- package/dist/es2019/types/index.js +6 -0
- package/dist/es2019/ui/CreateSyncedBlockButton.js +10 -4
- package/dist/es2019/ui/CreateSyncedBlockDropdownItem.js +13 -11
- package/dist/es2019/ui/CreateSyncedBlockItem.js +18 -14
- package/dist/es2019/ui/DeleteConfirmationModal.js +13 -2
- package/dist/es2019/ui/Flag.js +66 -0
- package/dist/es2019/ui/floating-toolbar.js +3 -2
- package/dist/esm/nodeviews/bodiedSyncedBlock.js +27 -5
- package/dist/esm/pm-plugins/main.js +85 -41
- package/dist/esm/pm-plugins/utils/ignore-dom-event.js +24 -0
- package/dist/esm/pm-plugins/utils/track-sync-blocks.js +48 -0
- package/dist/esm/syncedBlockPlugin.js +17 -2
- package/dist/esm/types/index.js +6 -0
- package/dist/esm/ui/CreateSyncedBlockButton.js +10 -5
- package/dist/esm/ui/CreateSyncedBlockDropdownItem.js +13 -11
- package/dist/esm/ui/CreateSyncedBlockItem.js +17 -15
- package/dist/esm/ui/DeleteConfirmationModal.js +12 -2
- package/dist/esm/ui/Flag.js +58 -0
- package/dist/esm/ui/floating-toolbar.js +3 -2
- package/dist/types/nodeviews/bodiedSyncedBlock.d.ts +1 -1
- package/dist/types/pm-plugins/main.d.ts +4 -2
- package/dist/types/pm-plugins/utils/ignore-dom-event.d.ts +8 -0
- package/dist/types/pm-plugins/utils/track-sync-blocks.d.ts +5 -0
- package/dist/types/syncedBlockPluginType.d.ts +5 -1
- package/dist/types/types/index.d.ts +11 -0
- package/dist/types/ui/DeleteConfirmationModal.d.ts +4 -1
- package/dist/types/ui/Flag.d.ts +8 -0
- package/dist/types-ts4.5/nodeviews/bodiedSyncedBlock.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/main.d.ts +4 -2
- package/dist/types-ts4.5/pm-plugins/utils/ignore-dom-event.d.ts +8 -0
- package/dist/types-ts4.5/pm-plugins/utils/track-sync-blocks.d.ts +5 -0
- package/dist/types-ts4.5/syncedBlockPluginType.d.ts +5 -1
- package/dist/types-ts4.5/types/index.d.ts +11 -0
- package/dist/types-ts4.5/ui/DeleteConfirmationModal.d.ts +4 -1
- package/dist/types-ts4.5/ui/Flag.d.ts +8 -0
- package/package.json +6 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-synced-block
|
|
2
2
|
|
|
3
|
+
## 4.2.8
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`63628e69e52e7`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/63628e69e52e7) -
|
|
8
|
+
[ux] [EDITOR-2557] Disable sync block creation, edition and deletion in offline mode
|
|
9
|
+
- Updated dependencies
|
|
10
|
+
|
|
3
11
|
## 4.2.7
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
package/afm-cc/tsconfig.json
CHANGED
|
@@ -34,6 +34,9 @@
|
|
|
34
34
|
{
|
|
35
35
|
"path": "../../editor-plugin-block-menu/afm-cc/tsconfig.json"
|
|
36
36
|
},
|
|
37
|
+
{
|
|
38
|
+
"path": "../../editor-plugin-connectivity/afm-cc/tsconfig.json"
|
|
39
|
+
},
|
|
37
40
|
{
|
|
38
41
|
"path": "../../editor-plugin-decorations/afm-cc/tsconfig.json"
|
|
39
42
|
},
|
|
@@ -55,6 +58,9 @@
|
|
|
55
58
|
{
|
|
56
59
|
"path": "../../editor-toolbar/afm-cc/tsconfig.json"
|
|
57
60
|
},
|
|
61
|
+
{
|
|
62
|
+
"path": "../../../design-system/flag/afm-cc/tsconfig.json"
|
|
63
|
+
},
|
|
58
64
|
{
|
|
59
65
|
"path": "../../../design-system/icon/afm-cc/tsconfig.json"
|
|
60
66
|
},
|
|
@@ -73,6 +79,9 @@
|
|
|
73
79
|
{
|
|
74
80
|
"path": "../../../design-system/primitives/afm-cc/tsconfig.json"
|
|
75
81
|
},
|
|
82
|
+
{
|
|
83
|
+
"path": "../../../design-system/tokens/afm-cc/tsconfig.json"
|
|
84
|
+
},
|
|
76
85
|
{
|
|
77
86
|
"path": "../../../design-system/tooltip/afm-cc/tsconfig.json"
|
|
78
87
|
},
|
package/afm-jira/tsconfig.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"extends": "../../../../tsconfig.entry-points.jira.json",
|
|
3
3
|
"compilerOptions": {
|
|
4
4
|
"target": "es5",
|
|
5
|
-
"outDir": "../../../../../tsDist/@atlaskit__editor-plugin-synced-block/app",
|
|
5
|
+
"outDir": "../../../../../jira/tsDist/@atlaskit__editor-plugin-synced-block/app",
|
|
6
6
|
"rootDir": "../",
|
|
7
7
|
"composite": true
|
|
8
8
|
},
|
|
@@ -29,10 +29,25 @@ var BodiedSyncBlock = /*#__PURE__*/function (_ReactNodeView) {
|
|
|
29
29
|
(0, _classCallCheck2.default)(this, BodiedSyncBlock);
|
|
30
30
|
_this = _callSuper(this, BodiedSyncBlock, [props.node, props.view, props.getPos, props.portalProviderAPI, props.eventDispatcher, props]);
|
|
31
31
|
_this.syncBlockStore = props.syncBlockStore;
|
|
32
|
+
_this.api = props.api;
|
|
33
|
+
_this.handleConnectivityModeChange();
|
|
32
34
|
return _this;
|
|
33
35
|
}
|
|
34
36
|
(0, _inherits2.default)(BodiedSyncBlock, _ReactNodeView);
|
|
35
37
|
return (0, _createClass2.default)(BodiedSyncBlock, [{
|
|
38
|
+
key: "handleConnectivityModeChange",
|
|
39
|
+
value: function handleConnectivityModeChange() {
|
|
40
|
+
var _this$api,
|
|
41
|
+
_this2 = this;
|
|
42
|
+
if ((_this$api = this.api) !== null && _this$api !== void 0 && _this$api.connectivity) {
|
|
43
|
+
this.cleanupConnectivityModeListener = this.api.connectivity.sharedState.onChange(function (_ref) {
|
|
44
|
+
var _this2$contentDOM;
|
|
45
|
+
var nextSharedState = _ref.nextSharedState;
|
|
46
|
+
(_this2$contentDOM = _this2.contentDOM) === null || _this2$contentDOM === void 0 || _this2$contentDOM.setAttribute('contenteditable', nextSharedState.mode === 'online' ? 'true' : 'false');
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}, {
|
|
36
51
|
key: "createDomRef",
|
|
37
52
|
value: function createDomRef() {
|
|
38
53
|
var domRef = document.createElement('div');
|
|
@@ -62,13 +77,20 @@ var BodiedSyncBlock = /*#__PURE__*/function (_ReactNodeView) {
|
|
|
62
77
|
}
|
|
63
78
|
return undefined;
|
|
64
79
|
}
|
|
80
|
+
}, {
|
|
81
|
+
key: "destroy",
|
|
82
|
+
value: function destroy() {
|
|
83
|
+
if (this.cleanupConnectivityModeListener) {
|
|
84
|
+
this.cleanupConnectivityModeListener();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
65
87
|
}]);
|
|
66
88
|
}(_reactNodeView.default);
|
|
67
|
-
var bodiedSyncBlockNodeView = exports.bodiedSyncBlockNodeView = function bodiedSyncBlockNodeView(
|
|
68
|
-
var pluginOptions =
|
|
69
|
-
pmPluginFactoryParams =
|
|
70
|
-
api =
|
|
71
|
-
syncBlockStore =
|
|
89
|
+
var bodiedSyncBlockNodeView = exports.bodiedSyncBlockNodeView = function bodiedSyncBlockNodeView(_ref2) {
|
|
90
|
+
var pluginOptions = _ref2.pluginOptions,
|
|
91
|
+
pmPluginFactoryParams = _ref2.pmPluginFactoryParams,
|
|
92
|
+
api = _ref2.api,
|
|
93
|
+
syncBlockStore = _ref2.syncBlockStore;
|
|
72
94
|
return function (node, view, getPos) {
|
|
73
95
|
var portalProviderAPI = pmPluginFactoryParams.portalProviderAPI,
|
|
74
96
|
eventDispatcher = pmPluginFactoryParams.eventDispatcher;
|
|
@@ -5,17 +5,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.syncedBlockPluginKey = exports.createPlugin = void 0;
|
|
8
|
-
var
|
|
8
|
+
var _readOnlyError2 = _interopRequireDefault(require("@babel/runtime/helpers/readOnlyError"));
|
|
9
9
|
var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
|
|
10
10
|
var _selection = require("@atlaskit/editor-common/selection");
|
|
11
11
|
var _syncBlock = require("@atlaskit/editor-common/sync-block");
|
|
12
12
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
13
|
+
var _view = require("@atlaskit/editor-prosemirror/view");
|
|
13
14
|
var _bodiedLazySyncedBlock = require("../nodeviews/bodiedLazySyncedBlock");
|
|
14
15
|
var _lazySyncedBlock = require("../nodeviews/lazySyncedBlock");
|
|
16
|
+
var _types = require("../types");
|
|
17
|
+
var _ignoreDomEvent = require("./utils/ignore-dom-event");
|
|
15
18
|
var _selectionDecorations = require("./utils/selection-decorations");
|
|
16
19
|
var _trackSyncBlocks2 = require("./utils/track-sync-blocks");
|
|
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; }
|
|
19
20
|
var syncedBlockPluginKey = exports.syncedBlockPluginKey = new _state.PluginKey('syncedBlockPlugin');
|
|
20
21
|
var createPlugin = exports.createPlugin = function createPlugin(options, pmPluginFactoryParams, syncBlockStore, api) {
|
|
21
22
|
var _ref = options || {},
|
|
@@ -30,25 +31,23 @@ var createPlugin = exports.createPlugin = function createPlugin(options, pmPlugi
|
|
|
30
31
|
});
|
|
31
32
|
syncBlockStore.fetchSyncBlocksData(syncBlockNodes);
|
|
32
33
|
return {
|
|
33
|
-
|
|
34
|
+
selectionDecorationSet: (0, _selectionDecorations.calculateDecorations)(instance.doc, instance.selection, instance.schema),
|
|
35
|
+
showFlag: false
|
|
34
36
|
};
|
|
35
37
|
},
|
|
36
38
|
apply: function apply(tr, currentPluginState, oldEditorState) {
|
|
39
|
+
var _meta$showFlag;
|
|
37
40
|
var meta = tr.getMeta(syncedBlockPluginKey);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
var newState = currentPluginState;
|
|
41
|
+
var showFlag = currentPluginState.showFlag,
|
|
42
|
+
selectionDecorationSet = currentPluginState.selectionDecorationSet;
|
|
43
|
+
var newDecorationSet = selectionDecorationSet.map(tr.mapping, tr.doc);
|
|
42
44
|
if (!tr.selection.eq(oldEditorState.selection)) {
|
|
43
|
-
|
|
44
|
-
decorationSet: (0, _selectionDecorations.calculateDecorations)(tr.doc, tr.selection, tr.doc.type.schema)
|
|
45
|
-
});
|
|
46
|
-
} else if (newState.decorationSet) {
|
|
47
|
-
newState = _objectSpread(_objectSpread({}, newState), {}, {
|
|
48
|
-
decorationSet: newState.decorationSet.map(tr.mapping, tr.doc)
|
|
49
|
-
});
|
|
45
|
+
newDecorationSet = (0, _selectionDecorations.calculateDecorations)(tr.doc, tr.selection, tr.doc.type.schema);
|
|
50
46
|
}
|
|
51
|
-
return
|
|
47
|
+
return {
|
|
48
|
+
showFlag: (_meta$showFlag = meta === null || meta === void 0 ? void 0 : meta.showFlag) !== null && _meta$showFlag !== void 0 ? _meta$showFlag : showFlag,
|
|
49
|
+
selectionDecorationSet: newDecorationSet
|
|
50
|
+
};
|
|
52
51
|
}
|
|
53
52
|
},
|
|
54
53
|
props: {
|
|
@@ -67,14 +66,34 @@ var createPlugin = exports.createPlugin = function createPlugin(options, pmPlugi
|
|
|
67
66
|
})
|
|
68
67
|
},
|
|
69
68
|
decorations: function decorations(state) {
|
|
70
|
-
var
|
|
71
|
-
|
|
69
|
+
var _syncedBlockPluginKey, _syncedBlockPluginKey2, _api$connectivity;
|
|
70
|
+
var selectionDecorationSet = (_syncedBlockPluginKey = (_syncedBlockPluginKey2 = syncedBlockPluginKey.getState(state)) === null || _syncedBlockPluginKey2 === void 0 ? void 0 : _syncedBlockPluginKey2.selectionDecorationSet) !== null && _syncedBlockPluginKey !== void 0 ? _syncedBlockPluginKey : _view.DecorationSet.empty;
|
|
71
|
+
var doc = state.doc;
|
|
72
|
+
var decorations = [];
|
|
73
|
+
if ((api === null || api === void 0 || (_api$connectivity = api.connectivity) === null || _api$connectivity === void 0 || (_api$connectivity = _api$connectivity.sharedState.currentState()) === null || _api$connectivity === void 0 ? void 0 : _api$connectivity.mode) === 'offline') {
|
|
74
|
+
state.doc.descendants(function (node, pos) {
|
|
75
|
+
if (node.type.name === 'bodiedSyncBlock') {
|
|
76
|
+
decorations.push(_view.Decoration.node(pos, pos + node.nodeSize, {
|
|
77
|
+
class: _syncBlock.SyncBlockStateCssClassName.disabledClassName
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return selectionDecorationSet.add(doc, decorations);
|
|
72
83
|
},
|
|
73
84
|
handleClickOn: (0, _selection.createSelectionClickHandler)(['bodiedSyncBlock'], function (target) {
|
|
74
85
|
return !!target.closest(".".concat(_syncBlock.BodiedSyncBlockSharedCssClassName.prefix));
|
|
75
86
|
}, {
|
|
76
87
|
useLongPressSelection: useLongPressSelection
|
|
77
|
-
})
|
|
88
|
+
}),
|
|
89
|
+
handleDOMEvents: {
|
|
90
|
+
mouseover: function mouseover(view, event) {
|
|
91
|
+
return (0, _ignoreDomEvent.shouldIgnoreDomEvent)(view, event, api);
|
|
92
|
+
},
|
|
93
|
+
mousedown: function mousedown(view, event) {
|
|
94
|
+
return (0, _ignoreDomEvent.shouldIgnoreDomEvent)(view, event, api);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
78
97
|
},
|
|
79
98
|
view: function view(editorView) {
|
|
80
99
|
syncBlockStore.setEditorView(editorView);
|
|
@@ -85,36 +104,61 @@ var createPlugin = exports.createPlugin = function createPlugin(options, pmPlugi
|
|
|
85
104
|
};
|
|
86
105
|
},
|
|
87
106
|
filterTransaction: function filterTransaction(tr, state) {
|
|
107
|
+
var _api$connectivity2;
|
|
108
|
+
var isOffline = (api === null || api === void 0 || (_api$connectivity2 = api.connectivity) === null || _api$connectivity2 === void 0 || (_api$connectivity2 = _api$connectivity2.sharedState.currentState()) === null || _api$connectivity2 === void 0 ? void 0 : _api$connectivity2.mode) === 'offline';
|
|
109
|
+
var isConfirmedSyncBlockDeletion = Boolean(tr.getMeta('isConfirmedSyncBlockDeletion'));
|
|
88
110
|
// Ignore transactions that don't change the document
|
|
89
111
|
// or are from remote (collab) or already confirmed sync block deletion
|
|
90
112
|
// We only care about local changes that change the document
|
|
91
113
|
// and are not yet confirmed for sync block deletion
|
|
92
|
-
if (!tr.docChanged || !(syncBlockStore !== null && syncBlockStore !== void 0 && syncBlockStore.requireConfirmationBeforeDelete()) && !syncBlockStore.hasPendingCreation() || Boolean(tr.getMeta('isRemote')) || Boolean(tr.getMeta('
|
|
114
|
+
if (!tr.docChanged || !(syncBlockStore !== null && syncBlockStore !== void 0 && syncBlockStore.requireConfirmationBeforeDelete()) && !syncBlockStore.hasPendingCreation() || Boolean(tr.getMeta('isRemote')) || Boolean(tr.getMeta('isCommitSyncBlockCreation')) || !isOffline && isConfirmedSyncBlockDeletion) {
|
|
93
115
|
return true;
|
|
94
116
|
}
|
|
95
117
|
var _trackSyncBlocks = (0, _trackSyncBlocks2.trackSyncBlocks)(syncBlockStore, tr, state),
|
|
96
118
|
removed = _trackSyncBlocks.removed,
|
|
97
119
|
added = _trackSyncBlocks.added;
|
|
98
|
-
if (
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
120
|
+
if (!isOffline) {
|
|
121
|
+
if (removed.length > 0) {
|
|
122
|
+
// If there are source sync blocks being removed, and we need to confirm with user before deleting,
|
|
123
|
+
// we block the transaction here, and wait for user confirmation to proceed with deletion.
|
|
124
|
+
// See editor-common/src/sync-block/sync-block-store-manager.ts for how we handle user confirmation and
|
|
125
|
+
// proceed with deletion.
|
|
126
|
+
syncBlockStore.deleteSyncBlocksWithConfirmation(tr, removed);
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
if (added.length > 0) {
|
|
130
|
+
// If there is bodiedSyncBlock node addition and it's waiting for the result of saving the node to backend (syncBlockStore.hasPendingCreation()),
|
|
131
|
+
// we need to intercept the transaction and save it in insert callback so that we only insert it to the document when backend call if backend call is successful
|
|
132
|
+
// The callback will be evoked by in SourceSyncBlockStoreManager.commitPendingCreation
|
|
133
|
+
syncBlockStore.registerCreationCallback(function () {
|
|
134
|
+
var _api$core;
|
|
135
|
+
api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 || _api$core.actions.execute(function () {
|
|
136
|
+
return tr.setMeta('isCommitSyncBlockCreation', true);
|
|
137
|
+
});
|
|
138
|
+
api === null || api === void 0 || api.core.actions.focus();
|
|
114
139
|
});
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
} else {
|
|
143
|
+
// Disable node deletion/creation/edition in offline mode and trigger an error flag instead
|
|
144
|
+
var errorFlag = false;
|
|
145
|
+
if (isConfirmedSyncBlockDeletion || removed.length > 0) {
|
|
146
|
+
errorFlag = _types.FLAG_ID.CANNOT_DELETE_WHEN_OFFLINE;
|
|
147
|
+
} else if (added.length > 0) {
|
|
148
|
+
errorFlag = _types.FLAG_ID.CANNOT_CREATE_WHEN_OFFLINE;
|
|
149
|
+
} else if ((0, _trackSyncBlocks2.hasEditInSyncBlock)(tr, state)) {
|
|
150
|
+
errorFlag = _types.FLAG_ID.CANNOT_EDIT_WHEN_OFFLINE;
|
|
151
|
+
}
|
|
152
|
+
if (errorFlag) {
|
|
153
|
+
api === null || api === void 0 || api.core.actions.execute(function (_ref2) {
|
|
154
|
+
var tr = _ref2.tr;
|
|
155
|
+
tr.setMeta(syncedBlockPluginKey, {
|
|
156
|
+
showFlag: errorFlag
|
|
157
|
+
});
|
|
158
|
+
return tr;
|
|
159
|
+
});
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
118
162
|
}
|
|
119
163
|
return true;
|
|
120
164
|
},
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.shouldIgnoreDomEvent = void 0;
|
|
7
|
+
var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* @returns true if should ignore event happens within bodiedSyncBlock node when offline
|
|
11
|
+
*/
|
|
12
|
+
var shouldIgnoreDomEvent = exports.shouldIgnoreDomEvent = function shouldIgnoreDomEvent(view, event, api) {
|
|
13
|
+
var _api$connectivity, _view$posAtCoords;
|
|
14
|
+
if ((api === null || api === void 0 || (_api$connectivity = api.connectivity) === null || _api$connectivity === void 0 || (_api$connectivity = _api$connectivity.sharedState.currentState()) === null || _api$connectivity === void 0 ? void 0 : _api$connectivity.mode) !== 'offline') {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
var bodiedSyncBlock = view.state.schema.nodes.bodiedSyncBlock;
|
|
18
|
+
var pos = (_view$posAtCoords = view.posAtCoords({
|
|
19
|
+
left: event.clientX,
|
|
20
|
+
top: event.clientY
|
|
21
|
+
})) === null || _view$posAtCoords === void 0 ? void 0 : _view$posAtCoords.pos;
|
|
22
|
+
if (pos === undefined) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
var $pos = view.state.doc.resolve(pos);
|
|
26
|
+
var maybeNode = (0, _utils.findParentNodeOfTypeClosestToPos)($pos, bodiedSyncBlock);
|
|
27
|
+
if (maybeNode) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
@@ -3,8 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.trackSyncBlocks = void 0;
|
|
6
|
+
exports.trackSyncBlocks = exports.hasEditInSyncBlock = void 0;
|
|
7
7
|
var _transform = require("@atlaskit/editor-prosemirror/transform");
|
|
8
|
+
var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
9
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
10
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
11
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
8
12
|
var trackSyncBlocks = exports.trackSyncBlocks = function trackSyncBlocks(storeManager, tr, state) {
|
|
9
13
|
var sourceSyncBlockRemoved = {};
|
|
10
14
|
var sourceSyncBlockAdded = {};
|
|
@@ -61,4 +65,48 @@ var trackSyncBlocks = exports.trackSyncBlocks = function trackSyncBlocks(storeMa
|
|
|
61
65
|
removed: Object.values(sourceSyncBlockRemoved),
|
|
62
66
|
added: Object.values(sourceSyncBlockAdded)
|
|
63
67
|
};
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
*
|
|
72
|
+
* @returns true if steps modifies children node within bodiedSyncBlock
|
|
73
|
+
*/
|
|
74
|
+
var hasEditInSyncBlock = exports.hasEditInSyncBlock = function hasEditInSyncBlock(tr, state) {
|
|
75
|
+
var bodiedSyncBlock = state.schema.nodes.bodiedSyncBlock;
|
|
76
|
+
var _iterator = _createForOfIteratorHelper(tr.steps),
|
|
77
|
+
_step;
|
|
78
|
+
try {
|
|
79
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
80
|
+
var step = _step.value;
|
|
81
|
+
var map = step.getMap();
|
|
82
|
+
var doc = tr.doc;
|
|
83
|
+
var positions = [];
|
|
84
|
+
|
|
85
|
+
// Extract positions from steps dynamically based on applicable properties
|
|
86
|
+
if ('from' in step && typeof step.from === 'number' && 'to' in step && typeof step.to === 'number') {
|
|
87
|
+
var _ref = step,
|
|
88
|
+
from = _ref.from,
|
|
89
|
+
to = _ref.to;
|
|
90
|
+
positions.push(from, to);
|
|
91
|
+
} else if ('pos' in step && typeof step.pos === 'number') {
|
|
92
|
+
var _ref2 = step,
|
|
93
|
+
pos = _ref2.pos;
|
|
94
|
+
positions.push(pos);
|
|
95
|
+
}
|
|
96
|
+
for (var _i = 0, _positions = positions; _i < _positions.length; _i++) {
|
|
97
|
+
var _pos = _positions[_i];
|
|
98
|
+
var newPos = map.map(_pos);
|
|
99
|
+
if (newPos >= 0 && newPos <= doc.content.size) {
|
|
100
|
+
if ((0, _utils.findParentNodeOfTypeClosestToPos)(doc.resolve(newPos), bodiedSyncBlock)) {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
} catch (err) {
|
|
107
|
+
_iterator.e(err);
|
|
108
|
+
} finally {
|
|
109
|
+
_iterator.f();
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
64
112
|
};
|
|
@@ -16,6 +16,7 @@ var _editorCommands = require("./editor-commands");
|
|
|
16
16
|
var _main = require("./pm-plugins/main");
|
|
17
17
|
var _blockMenuComponents = require("./ui/block-menu-components");
|
|
18
18
|
var _DeleteConfirmationModal = require("./ui/DeleteConfirmationModal");
|
|
19
|
+
var _Flag = require("./ui/Flag");
|
|
19
20
|
var _floatingToolbar = require("./ui/floating-toolbar");
|
|
20
21
|
var _SyncBlockRefresher = require("./ui/SyncBlockRefresher");
|
|
21
22
|
var _toolbarComponents = require("./ui/toolbar-components");
|
|
@@ -73,6 +74,7 @@ var syncedBlockPlugin = exports.syncedBlockPlugin = function syncedBlockPlugin(_
|
|
|
73
74
|
description: formatMessage(_messages.blockTypeMessages.syncedBlockDescription),
|
|
74
75
|
priority: 800,
|
|
75
76
|
keywords: ['synced', 'block', 'synced-block', 'sync', 'sync-block', 'auto', 'update', 'excerpt', 'connect'],
|
|
77
|
+
isDisabledOffline: true,
|
|
76
78
|
keyshortcut: '',
|
|
77
79
|
lozenge: /*#__PURE__*/_react.default.createElement(_lozenge.default, {
|
|
78
80
|
appearance: "new"
|
|
@@ -99,8 +101,21 @@ var syncedBlockPlugin = exports.syncedBlockPlugin = function syncedBlockPlugin(_
|
|
|
99
101
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_SyncBlockRefresher.SyncBlockRefresher, {
|
|
100
102
|
syncBlockStoreManager: syncBlockStore
|
|
101
103
|
}), /*#__PURE__*/_react.default.createElement(_DeleteConfirmationModal.DeleteConfirmationModal, {
|
|
102
|
-
syncBlockStoreManager: syncBlockStore
|
|
104
|
+
syncBlockStoreManager: syncBlockStore,
|
|
105
|
+
api: api
|
|
106
|
+
}), /*#__PURE__*/_react.default.createElement(_Flag.Flag, {
|
|
107
|
+
api: api
|
|
103
108
|
}));
|
|
109
|
+
},
|
|
110
|
+
getSharedState: function getSharedState(editorState) {
|
|
111
|
+
if (!editorState) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
var _syncedBlockPluginKey = _main.syncedBlockPluginKey.getState(editorState),
|
|
115
|
+
showFlag = _syncedBlockPluginKey.showFlag;
|
|
116
|
+
return {
|
|
117
|
+
showFlag: showFlag
|
|
118
|
+
};
|
|
104
119
|
}
|
|
105
120
|
};
|
|
106
121
|
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.FLAG_ID = void 0;
|
|
7
|
+
var FLAG_ID = exports.FLAG_ID = /*#__PURE__*/function (FLAG_ID) {
|
|
8
|
+
FLAG_ID["CANNOT_DELETE_WHEN_OFFLINE"] = "cannot-delete-when-offline";
|
|
9
|
+
FLAG_ID["CANNOT_EDIT_WHEN_OFFLINE"] = "cannot-edit-when-offline";
|
|
10
|
+
FLAG_ID["CANNOT_CREATE_WHEN_OFFLINE"] = "cannot-create-when-offline";
|
|
11
|
+
return FLAG_ID;
|
|
12
|
+
}({});
|
|
@@ -17,16 +17,21 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
17
17
|
var CreateSyncedBlockButton = exports.CreateSyncedBlockButton = function CreateSyncedBlockButton(_ref) {
|
|
18
18
|
var api = _ref.api;
|
|
19
19
|
var intl = (0, _reactIntlNext.useIntl)();
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['selection', 'connectivity'], function (states) {
|
|
21
|
+
var _states$selectionStat, _states$connectivityS;
|
|
22
|
+
return {
|
|
23
|
+
selection: (_states$selectionStat = states.selectionState) === null || _states$selectionStat === void 0 ? void 0 : _states$selectionStat.selection,
|
|
24
|
+
mode: (_states$connectivityS = states.connectivityState) === null || _states$connectivityS === void 0 ? void 0 : _states$connectivityS.mode
|
|
25
|
+
};
|
|
26
|
+
}),
|
|
27
|
+
selection = _useSharedPluginState.selection,
|
|
28
|
+
mode = _useSharedPluginState.mode;
|
|
24
29
|
|
|
25
30
|
// for toolbar button, we allow both creating a new synced block
|
|
26
31
|
// and converting existing block to synced block
|
|
27
32
|
var canBeConverted = Boolean(selection && (0, _utils.canBeConvertedToSyncBlock)(selection));
|
|
28
33
|
var canInsertEmptyBlock = Boolean(selection === null || selection === void 0 ? void 0 : selection.empty);
|
|
29
|
-
var isDisabled = Boolean(!canBeConverted && !canInsertEmptyBlock);
|
|
34
|
+
var isDisabled = Boolean(mode === 'offline' || !canBeConverted && !canInsertEmptyBlock);
|
|
30
35
|
var onClick = (0, _react.useCallback)(function () {
|
|
31
36
|
var _api$core, _api$core2;
|
|
32
37
|
api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 || _api$core.actions.execute(function (_ref2) {
|
|
@@ -19,15 +19,17 @@ var CreateSyncedBlockDropdownItem = function CreateSyncedBlockDropdownItem(_ref)
|
|
|
19
19
|
var api = _ref.api;
|
|
20
20
|
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
21
21
|
formatMessage = _useIntl.formatMessage;
|
|
22
|
-
var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['selection', 'blockControls'], function (states) {
|
|
23
|
-
var _states$selectionStat, _states$blockControls, _states$blockControls2;
|
|
22
|
+
var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['selection', 'blockControls', 'connectivity'], function (states) {
|
|
23
|
+
var _states$selectionStat, _states$blockControls, _states$blockControls2, _states$connectivityS;
|
|
24
24
|
return {
|
|
25
25
|
selection: (_states$selectionStat = states.selectionState) === null || _states$selectionStat === void 0 ? void 0 : _states$selectionStat.selection,
|
|
26
|
-
menuTriggerByNode: (_states$blockControls = (_states$blockControls2 = states.blockControlsState) === null || _states$blockControls2 === void 0 ? void 0 : _states$blockControls2.menuTriggerByNode) !== null && _states$blockControls !== void 0 ? _states$blockControls : undefined
|
|
26
|
+
menuTriggerByNode: (_states$blockControls = (_states$blockControls2 = states.blockControlsState) === null || _states$blockControls2 === void 0 ? void 0 : _states$blockControls2.menuTriggerByNode) !== null && _states$blockControls !== void 0 ? _states$blockControls : undefined,
|
|
27
|
+
mode: (_states$connectivityS = states.connectivityState) === null || _states$connectivityS === void 0 ? void 0 : _states$connectivityS.mode
|
|
27
28
|
};
|
|
28
29
|
}),
|
|
29
30
|
selection = _useSharedPluginState.selection,
|
|
30
|
-
menuTriggerByNode = _useSharedPluginState.menuTriggerByNode
|
|
31
|
+
menuTriggerByNode = _useSharedPluginState.menuTriggerByNode,
|
|
32
|
+
mode = _useSharedPluginState.mode;
|
|
31
33
|
var isNested = menuTriggerByNode && menuTriggerByNode.rootPos !== menuTriggerByNode.pos;
|
|
32
34
|
var canBeConverted = (0, _react.useMemo)(function () {
|
|
33
35
|
return selection && (0, _utils.canBeConvertedToSyncBlock)(selection);
|
|
@@ -42,17 +44,17 @@ var CreateSyncedBlockDropdownItem = function CreateSyncedBlockDropdownItem(_ref)
|
|
|
42
44
|
closeMenu: true
|
|
43
45
|
}));
|
|
44
46
|
};
|
|
47
|
+
var isOffline = mode === 'offline';
|
|
45
48
|
return /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarDropdownItem, {
|
|
46
49
|
elemBefore: /*#__PURE__*/_react.default.createElement(_editorToolbar.SyncBlocksIcon, {
|
|
47
50
|
label: ""
|
|
48
51
|
}),
|
|
49
|
-
onClick: onClick
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}, formatMessage(_messages.blockMenuMessages.newLozenge))));
|
|
52
|
+
onClick: onClick,
|
|
53
|
+
isDisabled: isOffline,
|
|
54
|
+
elemAfter: /*#__PURE__*/_react.default.createElement(_lozenge.default, {
|
|
55
|
+
appearance: "new"
|
|
56
|
+
}, formatMessage(_messages.blockMenuMessages.newLozenge))
|
|
57
|
+
}, formatMessage(_messages.blockMenuMessages.createSyncedBlock));
|
|
56
58
|
};
|
|
57
59
|
var CopySyncedBlockDropdownItem = function CopySyncedBlockDropdownItem(_ref2) {
|
|
58
60
|
var api = _ref2.api;
|
|
@@ -13,17 +13,22 @@ var _messages = require("@atlaskit/editor-common/messages");
|
|
|
13
13
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
14
14
|
var _blockSynced = _interopRequireDefault(require("@atlaskit/icon-lab/core/block-synced"));
|
|
15
15
|
var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
|
|
16
|
-
var _compiled = require("@atlaskit/primitives/compiled");
|
|
17
16
|
var _utils = require("../pm-plugins/utils/utils");
|
|
18
17
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
19
18
|
var CreateSyncedBlockItem = exports.CreateSyncedBlockItem = function CreateSyncedBlockItem(_ref) {
|
|
20
19
|
var api = _ref.api;
|
|
21
|
-
var
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
21
|
+
formatMessage = _useIntl.formatMessage;
|
|
22
|
+
var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['selection', 'connectivity'], function (states) {
|
|
23
|
+
var _states$selectionStat, _states$connectivityS;
|
|
24
|
+
return {
|
|
25
|
+
selection: (_states$selectionStat = states.selectionState) === null || _states$selectionStat === void 0 ? void 0 : _states$selectionStat.selection,
|
|
26
|
+
mode: (_states$connectivityS = states.connectivityState) === null || _states$connectivityS === void 0 ? void 0 : _states$connectivityS.mode
|
|
27
|
+
};
|
|
28
|
+
}),
|
|
29
|
+
selection = _useSharedPluginState.selection,
|
|
30
|
+
mode = _useSharedPluginState.mode;
|
|
31
|
+
var isDisabled = Boolean(!selection || !(0, _utils.canBeConvertedToSyncBlock)(selection) || mode === 'offline');
|
|
27
32
|
var onClick = (0, _react.useCallback)(function () {
|
|
28
33
|
var _api$core, _api$core2;
|
|
29
34
|
api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 || _api$core.actions.execute(function (_ref2) {
|
|
@@ -34,18 +39,15 @@ var CreateSyncedBlockItem = exports.CreateSyncedBlockItem = function CreateSynce
|
|
|
34
39
|
});
|
|
35
40
|
api === null || api === void 0 || (_api$core2 = api.core) === null || _api$core2 === void 0 || _api$core2.actions.focus();
|
|
36
41
|
}, [api]);
|
|
37
|
-
var message = intl.formatMessage(_messages.syncBlockMessages.createSyncBlockLabel);
|
|
38
42
|
return /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarDropdownItem, {
|
|
39
43
|
onClick: onClick,
|
|
40
44
|
isDisabled: isDisabled,
|
|
41
45
|
elemBefore: /*#__PURE__*/_react.default.createElement(_blockSynced.default, {
|
|
42
46
|
size: "small",
|
|
43
47
|
label: ""
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
},
|
|
49
|
-
appearance: "new"
|
|
50
|
-
}, intl.formatMessage(_messages.syncBlockMessages.newLozenge))));
|
|
48
|
+
}),
|
|
49
|
+
elemAfter: /*#__PURE__*/_react.default.createElement(_lozenge.default, {
|
|
50
|
+
appearance: "new"
|
|
51
|
+
}, formatMessage(_messages.syncBlockMessages.newLozenge))
|
|
52
|
+
}, formatMessage(_messages.syncBlockMessages.createSyncBlockLabel));
|
|
51
53
|
};
|
|
@@ -10,12 +10,14 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _reactIntlNext = require("react-intl-next");
|
|
12
12
|
var _new = _interopRequireDefault(require("@atlaskit/button/new"));
|
|
13
|
+
var _hooks = require("@atlaskit/editor-common/hooks");
|
|
13
14
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
14
15
|
var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog"));
|
|
15
16
|
var _compiled = require("@atlaskit/primitives/compiled");
|
|
16
17
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
17
18
|
var DeleteConfirmationModal = exports.DeleteConfirmationModal = function DeleteConfirmationModal(_ref) {
|
|
18
|
-
var syncBlockStoreManager = _ref.syncBlockStoreManager
|
|
19
|
+
var syncBlockStoreManager = _ref.syncBlockStoreManager,
|
|
20
|
+
api = _ref.api;
|
|
19
21
|
var _useState = (0, _react.useState)(false),
|
|
20
22
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
21
23
|
isOpen = _useState2[0],
|
|
@@ -24,6 +26,13 @@ var DeleteConfirmationModal = exports.DeleteConfirmationModal = function DeleteC
|
|
|
24
26
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
25
27
|
syncBlockCount = _useState4[0],
|
|
26
28
|
setSyncBlockCount = _useState4[1];
|
|
29
|
+
var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['connectivity'], function (states) {
|
|
30
|
+
var _states$connectivityS;
|
|
31
|
+
return {
|
|
32
|
+
mode: (_states$connectivityS = states.connectivityState) === null || _states$connectivityS === void 0 ? void 0 : _states$connectivityS.mode
|
|
33
|
+
};
|
|
34
|
+
}),
|
|
35
|
+
mode = _useSharedPluginState.mode;
|
|
27
36
|
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
28
37
|
formatMessage = _useIntl.formatMessage;
|
|
29
38
|
var resolverRef = _react.default.useRef(undefined);
|
|
@@ -64,6 +73,7 @@ var DeleteConfirmationModal = exports.DeleteConfirmationModal = function DeleteC
|
|
|
64
73
|
}, formatMessage(_messages.syncBlockMessages.deleteConfirmationModalCancelButton)), /*#__PURE__*/_react.default.createElement(_new.default, {
|
|
65
74
|
appearance: "warning",
|
|
66
75
|
onClick: handleClose(true),
|
|
67
|
-
autoFocus: true
|
|
76
|
+
autoFocus: true,
|
|
77
|
+
isDisabled: mode === 'offline'
|
|
68
78
|
}, formatMessage(_messages.syncBlockMessages.deleteConfirmationModalDeleteButton)))));
|
|
69
79
|
};
|