@atlaskit/editor-plugin-extension 0.6.3 → 0.7.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 +16 -0
- package/dist/cjs/actions.js +31 -35
- package/dist/cjs/context-panel.js +18 -9
- package/dist/cjs/extension-api.js +12 -0
- package/dist/cjs/plugin.js +5 -4
- package/dist/cjs/pm-plugins/macro/actions.js +21 -11
- package/dist/cjs/pm-plugins/main.js +10 -53
- package/dist/cjs/toolbar.js +1 -1
- package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +55 -29
- package/dist/cjs/ui/ConfigPanel/ConfigPanelFieldsLoader.js +3 -1
- package/dist/es2019/actions.js +22 -24
- package/dist/es2019/context-panel.js +15 -4
- package/dist/es2019/extension-api.js +17 -1
- package/dist/es2019/plugin.js +5 -4
- package/dist/es2019/pm-plugins/macro/actions.js +20 -6
- package/dist/es2019/pm-plugins/main.js +3 -22
- package/dist/es2019/toolbar.js +1 -1
- package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +58 -28
- package/dist/es2019/ui/ConfigPanel/ConfigPanelFieldsLoader.js +3 -1
- package/dist/esm/actions.js +30 -34
- package/dist/esm/context-panel.js +19 -9
- package/dist/esm/extension-api.js +12 -0
- package/dist/esm/plugin.js +5 -4
- package/dist/esm/pm-plugins/macro/actions.js +21 -11
- package/dist/esm/pm-plugins/main.js +9 -52
- package/dist/esm/toolbar.js +1 -1
- package/dist/esm/ui/ConfigPanel/ConfigPanel.js +55 -29
- package/dist/esm/ui/ConfigPanel/ConfigPanelFieldsLoader.js +3 -1
- package/dist/types/actions.d.ts +2 -5
- package/dist/types/context-panel.d.ts +9 -4
- package/dist/types/pm-plugins/main.d.ts +1 -2
- package/dist/types/types.d.ts +4 -4
- package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +4 -3
- package/dist/types/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +4 -3
- package/dist/types-ts4.5/actions.d.ts +2 -5
- package/dist/types-ts4.5/context-panel.d.ts +9 -4
- package/dist/types-ts4.5/pm-plugins/main.d.ts +1 -2
- package/dist/types-ts4.5/types.d.ts +4 -4
- package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanel.d.ts +4 -3
- package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +4 -3
- package/example-utils/config-panel/ConfigPanelWithProviders.tsx +2 -1
- package/example-utils/config-panel/FieldTypePicker.tsx +1 -1
- package/package.json +5 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-extension
|
|
2
2
|
|
|
3
|
+
## 0.7.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#70741](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/70741) [`7c1487568202`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/7c1487568202) - ED-21973: Fix for MBE side panel config params update
|
|
8
|
+
|
|
9
|
+
## 0.7.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [#68640](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/68640) [`e173cb423c75`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/e173cb423c75) - Migrate extension plugin to useSharedPluginState from WithPluginState. Adds new dependency on BasePlugin.
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Updated dependencies
|
|
18
|
+
|
|
3
19
|
## 0.6.3
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/dist/cjs/actions.js
CHANGED
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.performNodeUpdate = exports.
|
|
7
|
+
exports.performNodeUpdate = exports.editExtension = exports.createEditSelectedExtensionAction = exports.buildExtensionNode = void 0;
|
|
8
8
|
Object.defineProperty(exports, "transformSliceToRemoveOpenBodiedExtension", {
|
|
9
9
|
enumerable: true,
|
|
10
10
|
get: function get() {
|
|
@@ -57,18 +57,26 @@ var performNodeUpdate = exports.performNodeUpdate = function performNodeUpdate(e
|
|
|
57
57
|
bodiedExtension = _schema$nodes.bodiedExtension,
|
|
58
58
|
multiBodiedExtension = _schema$nodes.multiBodiedExtension;
|
|
59
59
|
var isBodiedExtensionSelected = !!(0, _utils.findSelectedNodeOfType)([bodiedExtension])(selection);
|
|
60
|
+
var isMultiBodiedExtensionSelected = !!(0, _utils.findSelectedNodeOfType)([multiBodiedExtension])(selection);
|
|
60
61
|
var extensionState = (0, _main.getPluginState)(state);
|
|
62
|
+
var updateSelectionsByNodeType = function updateSelectionsByNodeType(nodeType) {
|
|
63
|
+
// Bodied/MultiBodied extensions can trigger an update when the cursor is inside which means that there is no node selected.
|
|
64
|
+
// To work around that we replace the parent and create a text selection instead of new node selection
|
|
65
|
+
tr = (0, _utils.replaceParentNodeOfType)(nodeType, newNode)(tr);
|
|
66
|
+
// Replacing selected node doesn't update the selection. `selection.node` still returns the old node
|
|
67
|
+
tr.setSelection(_state2.TextSelection.create(tr.doc, state.selection.anchor));
|
|
68
|
+
};
|
|
61
69
|
var targetSelectionSource = _analytics.TARGET_SELECTION_SOURCE.CURRENT_SELECTION;
|
|
62
70
|
var action = _analytics.ACTION.UPDATED;
|
|
63
71
|
var tr = state.tr;
|
|
64
72
|
|
|
65
73
|
// When it's a bodiedExtension but not selected
|
|
66
74
|
if (newNode.type === bodiedExtension && !isBodiedExtensionSelected) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
updateSelectionsByNodeType(state.schema.nodes.bodiedExtension);
|
|
76
|
+
}
|
|
77
|
+
// When it's a multiBodiedExtension but not selected
|
|
78
|
+
else if (newNode.type === multiBodiedExtension && !isMultiBodiedExtensionSelected) {
|
|
79
|
+
updateSelectionsByNodeType(state.schema.nodes.multiBodiedExtension);
|
|
72
80
|
}
|
|
73
81
|
// If any extension is currently selected
|
|
74
82
|
else if ((0, _utils.findSelectedNodeOfType)([extension, bodiedExtension, inlineExtension, multiBodiedExtension])(selection)) {
|
|
@@ -139,26 +147,29 @@ var updateExtensionParams = function updateExtensionParams(editorAnalyticsAPI) {
|
|
|
139
147
|
case 7:
|
|
140
148
|
newParameters = _context.sent;
|
|
141
149
|
if (!newParameters) {
|
|
142
|
-
_context.next =
|
|
150
|
+
_context.next = 12;
|
|
143
151
|
break;
|
|
144
152
|
}
|
|
145
153
|
newAttrs = _objectSpread(_objectSpread({}, attrs), {}, {
|
|
146
154
|
parameters: _objectSpread(_objectSpread({}, parameters), newParameters)
|
|
147
155
|
});
|
|
156
|
+
if (type.name === 'multiBodiedExtension') {
|
|
157
|
+
newAttrs.parameters.macroParams = _objectSpread(_objectSpread({}, parameters.macroParams), newParameters === null || newParameters === void 0 ? void 0 : newParameters.macroParams);
|
|
158
|
+
}
|
|
148
159
|
return _context.abrupt("return", performNodeUpdate(editorAnalyticsAPI)(type.name, newAttrs, content, marks, true)(state, dispatch, view));
|
|
149
|
-
case
|
|
150
|
-
_context.next =
|
|
160
|
+
case 12:
|
|
161
|
+
_context.next = 16;
|
|
151
162
|
break;
|
|
152
|
-
case
|
|
153
|
-
_context.prev =
|
|
163
|
+
case 14:
|
|
164
|
+
_context.prev = 14;
|
|
154
165
|
_context.t0 = _context["catch"](4);
|
|
155
|
-
case 15:
|
|
156
|
-
return _context.abrupt("return", true);
|
|
157
166
|
case 16:
|
|
167
|
+
return _context.abrupt("return", true);
|
|
168
|
+
case 17:
|
|
158
169
|
case "end":
|
|
159
170
|
return _context.stop();
|
|
160
171
|
}
|
|
161
|
-
}, _callee, null, [[4,
|
|
172
|
+
}, _callee, null, [[4, 14]]);
|
|
162
173
|
}));
|
|
163
174
|
return function (_x, _x2, _x3) {
|
|
164
175
|
return _ref.apply(this, arguments);
|
|
@@ -166,28 +177,13 @@ var updateExtensionParams = function updateExtensionParams(editorAnalyticsAPI) {
|
|
|
166
177
|
}();
|
|
167
178
|
};
|
|
168
179
|
};
|
|
169
|
-
|
|
170
|
-
// This is to decouple extensions from editor core
|
|
171
|
-
// Ideally in the future we completely deprecate `EditorActions`
|
|
172
|
-
var editSelectedExtension = exports.editSelectedExtension = function editSelectedExtension(editorActions) {
|
|
173
|
-
var editorView = editorActions._privateGetEditorView();
|
|
174
|
-
var _getPluginState = (0, _main.getPluginState)(editorView.state),
|
|
175
|
-
updateExtension = _getPluginState.updateExtension,
|
|
176
|
-
applyChangeToContextPanel = _getPluginState.applyChangeToContextPanel;
|
|
177
|
-
// The analytics API cannot be accessed in this case because
|
|
178
|
-
// we do not have access to the plugin injection API. Rather
|
|
179
|
-
// than change the way this works - we just won't use analytics
|
|
180
|
-
// here for now.
|
|
181
|
-
var editorAnalyticsAPI = undefined;
|
|
182
|
-
return editExtension(null, applyChangeToContextPanel, editorAnalyticsAPI, updateExtension)(editorView.state, editorView.dispatch, editorView);
|
|
183
|
-
};
|
|
184
180
|
var editExtension = exports.editExtension = function editExtension(macroProvider, applyChangeToContextPanel, editorAnalyticsAPI, updateExtension) {
|
|
185
181
|
return function (state, dispatch, view) {
|
|
186
182
|
if (!view) {
|
|
187
183
|
return false;
|
|
188
184
|
}
|
|
189
|
-
var
|
|
190
|
-
localId =
|
|
185
|
+
var _getPluginState = (0, _main.getPluginState)(state),
|
|
186
|
+
localId = _getPluginState.localId;
|
|
191
187
|
var nodeWithPos = (0, _utils2.findExtensionWithLocalId)(state, localId);
|
|
192
188
|
if (!nodeWithPos) {
|
|
193
189
|
return false;
|
|
@@ -225,15 +221,15 @@ var editExtension = exports.editExtension = function editExtension(macroProvider
|
|
|
225
221
|
};
|
|
226
222
|
var createEditSelectedExtensionAction = exports.createEditSelectedExtensionAction = function createEditSelectedExtensionAction(_ref2) {
|
|
227
223
|
var editorViewRef = _ref2.editorViewRef,
|
|
228
|
-
editorAnalyticsAPI = _ref2.editorAnalyticsAPI
|
|
224
|
+
editorAnalyticsAPI = _ref2.editorAnalyticsAPI,
|
|
225
|
+
applyChangeToContextPanel = _ref2.applyChangeToContextPanel;
|
|
229
226
|
return function () {
|
|
230
227
|
var view = editorViewRef.current;
|
|
231
228
|
if (!view) {
|
|
232
229
|
return false;
|
|
233
230
|
}
|
|
234
|
-
var
|
|
235
|
-
updateExtension =
|
|
236
|
-
applyChangeToContextPanel = _getPluginState3.applyChangeToContextPanel;
|
|
231
|
+
var _getPluginState2 = (0, _main.getPluginState)(view.state),
|
|
232
|
+
updateExtension = _getPluginState2.updateExtension;
|
|
237
233
|
return editExtension(null, applyChangeToContextPanel, editorAnalyticsAPI, updateExtension)(view.state, view.dispatch, view);
|
|
238
234
|
};
|
|
239
235
|
};
|
|
@@ -46,9 +46,11 @@ var duplicateSelection = exports.duplicateSelection = function duplicateSelectio
|
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
48
|
var getContextPanel = exports.getContextPanel = function getContextPanel(getEditorView) {
|
|
49
|
-
return function (allowAutoSave, featureFlags
|
|
49
|
+
return function (api, allowAutoSave, featureFlags) {
|
|
50
50
|
return function (state) {
|
|
51
|
+
var _api$contextPanel;
|
|
51
52
|
var nodeWithPos = (0, _utils.getSelectedExtension)(state, true);
|
|
53
|
+
var applyChange = api === null || api === void 0 || (_api$contextPanel = api.contextPanel) === null || _api$contextPanel === void 0 ? void 0 : _api$contextPanel.actions.applyChange;
|
|
52
54
|
|
|
53
55
|
// Adding checks to bail out early
|
|
54
56
|
if (!nodeWithPos) {
|
|
@@ -82,6 +84,7 @@ var getContextPanel = exports.getContextPanel = function getContextPanel(getEdit
|
|
|
82
84
|
return null;
|
|
83
85
|
}
|
|
84
86
|
return /*#__PURE__*/_react.default.createElement(_ConfigPanelLoader.default, {
|
|
87
|
+
api: api,
|
|
85
88
|
showHeader: true,
|
|
86
89
|
closeOnEsc: true,
|
|
87
90
|
extensionType: extensionType,
|
|
@@ -155,6 +158,8 @@ var getContextPanel = exports.getContextPanel = function getContextPanel(getEdit
|
|
|
155
158
|
};
|
|
156
159
|
};
|
|
157
160
|
};
|
|
161
|
+
|
|
162
|
+
// Added this interface to handle the macroParams on Parameters
|
|
158
163
|
function onChangeAction(_x2) {
|
|
159
164
|
return _onChangeAction.apply(this, arguments);
|
|
160
165
|
}
|
|
@@ -175,6 +180,7 @@ function _onChangeAction() {
|
|
|
175
180
|
_ref6,
|
|
176
181
|
positions,
|
|
177
182
|
node,
|
|
183
|
+
newAttributes,
|
|
178
184
|
newNode,
|
|
179
185
|
positionUpdated,
|
|
180
186
|
transaction,
|
|
@@ -232,15 +238,18 @@ function _onChangeAction() {
|
|
|
232
238
|
return _context3.abrupt("return");
|
|
233
239
|
case 23:
|
|
234
240
|
node = nodeWithPos.node;
|
|
235
|
-
|
|
236
|
-
parameters: _objectSpread(_objectSpread({}, oldParameters), newParameters)
|
|
237
|
-
|
|
241
|
+
newAttributes = _objectSpread(_objectSpread({}, node.attrs), {}, {
|
|
242
|
+
parameters: _objectSpread(_objectSpread(_objectSpread({}, oldParameters), newParameters), {}, {
|
|
243
|
+
macroParams: _objectSpread(_objectSpread({}, oldParameters === null || oldParameters === void 0 ? void 0 : oldParameters.macroParams), newParameters === null || newParameters === void 0 ? void 0 : newParameters.macroParams)
|
|
244
|
+
})
|
|
245
|
+
});
|
|
246
|
+
newNode = (0, _actions.buildExtensionNode)(nodeWithPos.node.toJSON().type, editorView.state.schema, newAttributes, node.content, node.marks);
|
|
238
247
|
if (newNode) {
|
|
239
|
-
_context3.next =
|
|
248
|
+
_context3.next = 28;
|
|
240
249
|
break;
|
|
241
250
|
}
|
|
242
251
|
return _context3.abrupt("return");
|
|
243
|
-
case
|
|
252
|
+
case 28:
|
|
244
253
|
positionUpdated = positions[key];
|
|
245
254
|
transaction = editorView.state.tr.replaceWith(positionUpdated, positionUpdated + newNode.nodeSize, newNode); // Ensure we preserve the selection, tr.replaceWith causes it to be lost in some cases
|
|
246
255
|
// when replacing the node
|
|
@@ -253,13 +262,13 @@ function _onChangeAction() {
|
|
|
253
262
|
}
|
|
254
263
|
positionsLess = _objectSpread({}, (0, _main.getPluginState)(editorView.state).positions);
|
|
255
264
|
delete positionsLess[key];
|
|
256
|
-
_context3.next =
|
|
265
|
+
_context3.next = 36;
|
|
257
266
|
return (0, _commands.updateState)({
|
|
258
267
|
positions: positionsLess
|
|
259
268
|
})(editorView.state, editorView.dispatch);
|
|
260
|
-
case 35:
|
|
261
|
-
editorView.dispatch(transaction);
|
|
262
269
|
case 36:
|
|
270
|
+
editorView.dispatch(transaction);
|
|
271
|
+
case 37:
|
|
263
272
|
case "end":
|
|
264
273
|
return _context3.stop();
|
|
265
274
|
}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.getEditInLegacyMacroBrowser = exports.createExtensionAPI = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
8
9
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
9
10
|
var _validator = require("@atlaskit/adf-utils/validator");
|
|
10
11
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
@@ -17,6 +18,8 @@ var _commands = require("./commands");
|
|
|
17
18
|
var _actions = require("./pm-plugins/macro/actions");
|
|
18
19
|
var _pluginKey = require("./pm-plugins/macro/plugin-key");
|
|
19
20
|
var _utils3 = require("./utils");
|
|
21
|
+
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; }
|
|
22
|
+
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; }
|
|
20
23
|
var getEditInLegacyMacroBrowser = exports.getEditInLegacyMacroBrowser = function getEditInLegacyMacroBrowser(_ref) {
|
|
21
24
|
var view = _ref.view,
|
|
22
25
|
macroProvider = _ref.macroProvider,
|
|
@@ -221,6 +224,15 @@ var createExtensionAPI = exports.createExtensionAPI = function createExtensionAP
|
|
|
221
224
|
}) : node.marks;
|
|
222
225
|
var newContent = changedValues.hasOwnProperty('content') ? _model.Fragment.fromJSON(schema, changedValues.content) : node.content;
|
|
223
226
|
var newAttrs = changedValues.hasOwnProperty('attrs') ? changedValues.attrs : node.attrs;
|
|
227
|
+
if (node.type.name === 'multiBodiedExtension') {
|
|
228
|
+
var _changedValues$attrs, _node$attrs$parameter, _changedValues$attrs2;
|
|
229
|
+
newAttrs = _objectSpread(_objectSpread(_objectSpread({}, node.attrs), changedValues.attrs), {}, {
|
|
230
|
+
parameters: _objectSpread(_objectSpread(_objectSpread({}, node.attrs.parameters), (_changedValues$attrs = changedValues.attrs) === null || _changedValues$attrs === void 0 ? void 0 : _changedValues$attrs.parameters), {}, {
|
|
231
|
+
macroParams: _objectSpread(_objectSpread({}, (_node$attrs$parameter = node.attrs.parameters) === null || _node$attrs$parameter === void 0 ? void 0 : _node$attrs$parameter.macroParams), (_changedValues$attrs2 = changedValues.attrs) === null || _changedValues$attrs2 === void 0 || (_changedValues$attrs2 = _changedValues$attrs2.parameters) === null || _changedValues$attrs2 === void 0 ? void 0 : _changedValues$attrs2.macroParams)
|
|
232
|
+
})
|
|
233
|
+
});
|
|
234
|
+
// console.log('newAttrs', newAttrs);
|
|
235
|
+
}
|
|
224
236
|
|
|
225
237
|
// Validate if the new attributes, content and marks result in a valid node and adf.
|
|
226
238
|
try {
|
package/dist/cjs/plugin.js
CHANGED
|
@@ -19,7 +19,7 @@ var _main = require("./pm-plugins/main");
|
|
|
19
19
|
var _uniqueId = require("./pm-plugins/unique-id");
|
|
20
20
|
var _toolbar = require("./toolbar");
|
|
21
21
|
var extensionPlugin = exports.extensionPlugin = function extensionPlugin(_ref) {
|
|
22
|
-
var _api$featureFlags, _api$analytics2, _api$analytics3, _api$
|
|
22
|
+
var _api$featureFlags, _api$analytics2, _api$analytics3, _api$contextPanel3, _api$decorations, _api$contextPanel4, _api$analytics4;
|
|
23
23
|
var _ref$config = _ref.config,
|
|
24
24
|
options = _ref$config === void 0 ? {} : _ref$config,
|
|
25
25
|
_api = _ref.api;
|
|
@@ -126,7 +126,8 @@ var extensionPlugin = exports.extensionPlugin = function extensionPlugin(_ref) {
|
|
|
126
126
|
insertMacroFromMacroBrowser: (0, _actions2.insertMacroFromMacroBrowser)(_api === null || _api === void 0 || (_api$analytics2 = _api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions),
|
|
127
127
|
editSelectedExtension: (0, _actions.createEditSelectedExtensionAction)({
|
|
128
128
|
editorViewRef: editorViewRef,
|
|
129
|
-
editorAnalyticsAPI: _api === null || _api === void 0 || (_api$analytics3 = _api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions
|
|
129
|
+
editorAnalyticsAPI: _api === null || _api === void 0 || (_api$analytics3 = _api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions,
|
|
130
|
+
applyChangeToContextPanel: _api === null || _api === void 0 || (_api$contextPanel3 = _api.contextPanel) === null || _api$contextPanel3 === void 0 ? void 0 : _api$contextPanel3.actions.applyChange
|
|
130
131
|
}),
|
|
131
132
|
runMacroAutoConvert: _actions2.runMacroAutoConvert,
|
|
132
133
|
forceAutoSave: _commands.forceAutoSave
|
|
@@ -135,13 +136,13 @@ var extensionPlugin = exports.extensionPlugin = function extensionPlugin(_ref) {
|
|
|
135
136
|
floatingToolbar: (0, _toolbar.getToolbarConfig)({
|
|
136
137
|
breakoutEnabled: options.breakoutEnabled,
|
|
137
138
|
hoverDecoration: _api === null || _api === void 0 || (_api$decorations = _api.decorations) === null || _api$decorations === void 0 ? void 0 : _api$decorations.actions.hoverDecoration,
|
|
138
|
-
applyChangeToContextPanel: _api === null || _api === void 0 || (_api$
|
|
139
|
+
applyChangeToContextPanel: _api === null || _api === void 0 || (_api$contextPanel4 = _api.contextPanel) === null || _api$contextPanel4 === void 0 ? void 0 : _api$contextPanel4.actions.applyChange,
|
|
139
140
|
editorAnalyticsAPI: _api === null || _api === void 0 || (_api$analytics4 = _api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions
|
|
140
141
|
}),
|
|
141
142
|
contextPanel: (0, _contextPanel.getContextPanel)(function () {
|
|
142
143
|
var _editorViewRef$curren;
|
|
143
144
|
return (_editorViewRef$curren = editorViewRef.current) !== null && _editorViewRef$curren !== void 0 ? _editorViewRef$curren : undefined;
|
|
144
|
-
})(options.allowAutoSave, featureFlags
|
|
145
|
+
})(_api, options.allowAutoSave, featureFlags)
|
|
145
146
|
}
|
|
146
147
|
};
|
|
147
148
|
};
|
|
@@ -22,7 +22,7 @@ var insertMacroFromMacroBrowser = exports.insertMacroFromMacroBrowser = function
|
|
|
22
22
|
return function (macroProvider, macroNode, isEditing) {
|
|
23
23
|
return /*#__PURE__*/function () {
|
|
24
24
|
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(view) {
|
|
25
|
-
var newMacro, state, dispatch, currentLayout, node, selection, schema, _schema$nodes, extension, inlineExtension, bodiedExtension, extensionState, targetSelectionSource, tr, isBodiedExtensionSelected, pos, _macroNode$attrs, extensionType, extensionKey, layout, localId;
|
|
25
|
+
var newMacro, state, dispatch, currentLayout, node, selection, schema, _schema$nodes, extension, inlineExtension, bodiedExtension, multiBodiedExtension, updateSelectionsByNodeType, extensionState, targetSelectionSource, tr, isBodiedExtensionSelected, isMultiBodiedExtensionSelected, pos, _macroNode$attrs, extensionType, extensionKey, layout, localId;
|
|
26
26
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
27
27
|
while (1) switch (_context.prev = _context.next) {
|
|
28
28
|
case 0:
|
|
@@ -37,7 +37,7 @@ var insertMacroFromMacroBrowser = exports.insertMacroFromMacroBrowser = function
|
|
|
37
37
|
case 4:
|
|
38
38
|
newMacro = _context.sent;
|
|
39
39
|
if (!(newMacro && macroNode)) {
|
|
40
|
-
_context.next =
|
|
40
|
+
_context.next = 22;
|
|
41
41
|
break;
|
|
42
42
|
}
|
|
43
43
|
state = view.state, dispatch = view.dispatch;
|
|
@@ -52,19 +52,27 @@ var insertMacroFromMacroBrowser = exports.insertMacroFromMacroBrowser = function
|
|
|
52
52
|
return _context.abrupt("return", false);
|
|
53
53
|
case 11:
|
|
54
54
|
selection = state.selection, schema = state.schema;
|
|
55
|
-
_schema$nodes = schema.nodes, extension = _schema$nodes.extension, inlineExtension = _schema$nodes.inlineExtension, bodiedExtension = _schema$nodes.bodiedExtension;
|
|
55
|
+
_schema$nodes = schema.nodes, extension = _schema$nodes.extension, inlineExtension = _schema$nodes.inlineExtension, bodiedExtension = _schema$nodes.bodiedExtension, multiBodiedExtension = _schema$nodes.multiBodiedExtension;
|
|
56
|
+
updateSelectionsByNodeType = function updateSelectionsByNodeType(nodeType) {
|
|
57
|
+
// `isEditing` is `false` when we are inserting from insert-block toolbar
|
|
58
|
+
tr = isEditing ? (0, _utils.replaceParentNodeOfType)(nodeType, node)(tr) : (0, _utils.safeInsert)(node)(tr);
|
|
59
|
+
// Replacing selected node doesn't update the selection. `selection.node` still returns the old node
|
|
60
|
+
tr.setSelection(_state.TextSelection.create(tr.doc, state.selection.anchor));
|
|
61
|
+
};
|
|
56
62
|
extensionState = (0, _pluginFactory.getPluginState)(state);
|
|
57
63
|
targetSelectionSource = _analytics.TARGET_SELECTION_SOURCE.CURRENT_SELECTION;
|
|
58
64
|
tr = state.tr;
|
|
59
|
-
isBodiedExtensionSelected = !!(0, _utils.findSelectedNodeOfType)([bodiedExtension])(selection);
|
|
65
|
+
isBodiedExtensionSelected = !!(0, _utils.findSelectedNodeOfType)([bodiedExtension])(selection);
|
|
66
|
+
isMultiBodiedExtensionSelected = !!(0, _utils.findSelectedNodeOfType)([multiBodiedExtension])(selection); // When it's a bodiedExtension but not selected
|
|
60
67
|
if (macroNode.type === bodiedExtension && !isBodiedExtensionSelected) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
68
|
+
updateSelectionsByNodeType(state.schema.nodes.bodiedExtension);
|
|
69
|
+
}
|
|
70
|
+
// When it's a multiBodiedExtension but not selected
|
|
71
|
+
else if (macroNode.type === multiBodiedExtension && !isMultiBodiedExtensionSelected) {
|
|
72
|
+
updateSelectionsByNodeType(state.schema.nodes.multiBodiedExtension);
|
|
65
73
|
}
|
|
66
74
|
// If any extension is currently selected
|
|
67
|
-
else if ((0, _utils.findSelectedNodeOfType)([extension, bodiedExtension, inlineExtension])(selection)) {
|
|
75
|
+
else if ((0, _utils.findSelectedNodeOfType)([extension, bodiedExtension, inlineExtension, multiBodiedExtension])(selection)) {
|
|
68
76
|
tr = (0, _utils.replaceSelectedNode)(node)(tr);
|
|
69
77
|
// Replacing selected node doesn't update the selection. `selection.node` still returns the old node
|
|
70
78
|
tr.setSelection(_state.NodeSelection.create(tr.doc, tr.mapping.map(state.selection.anchor)));
|
|
@@ -101,9 +109,9 @@ var insertMacroFromMacroBrowser = exports.insertMacroFromMacroBrowser = function
|
|
|
101
109
|
dispatch(tr.scrollIntoView());
|
|
102
110
|
}
|
|
103
111
|
return _context.abrupt("return", true);
|
|
104
|
-
case
|
|
112
|
+
case 22:
|
|
105
113
|
return _context.abrupt("return", false);
|
|
106
|
-
case
|
|
114
|
+
case 23:
|
|
107
115
|
case "end":
|
|
108
116
|
return _context.stop();
|
|
109
117
|
}
|
|
@@ -130,6 +138,8 @@ var resolveMacro = exports.resolveMacro = function resolveMacro(macro, state, op
|
|
|
130
138
|
node = schema.nodes.bodiedExtension.create(_objectSpread(_objectSpread({}, attrs), optionalAttrs), schema.nodeFromJSON(macro).content);
|
|
131
139
|
} else if (type === 'inlineExtension') {
|
|
132
140
|
node = schema.nodes.inlineExtension.create(attrs);
|
|
141
|
+
} else if (type === 'multiBodiedExtension') {
|
|
142
|
+
node = schema.nodes.multiBodiedExtension.create(_objectSpread(_objectSpread({}, attrs), optionalAttrs), schema.nodeFromJSON(macro).content);
|
|
133
143
|
}
|
|
134
144
|
return node && (0, _insert.normaliseNestedLayout)(state, node);
|
|
135
145
|
};
|
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "createCommand", {
|
|
|
10
10
|
return _pluginFactory.createCommand;
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
-
exports.createPlugin = exports.createExtensionProviderHandler =
|
|
13
|
+
exports.createPlugin = exports.createExtensionProviderHandler = void 0;
|
|
14
14
|
Object.defineProperty(exports, "getPluginState", {
|
|
15
15
|
enumerable: true,
|
|
16
16
|
get: function get() {
|
|
@@ -123,50 +123,12 @@ var createExtensionProviderHandler = exports.createExtensionProviderHandler = fu
|
|
|
123
123
|
};
|
|
124
124
|
}();
|
|
125
125
|
};
|
|
126
|
-
var
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
case 0:
|
|
133
|
-
if (!(name === 'contextIdentifierProvider' && provider)) {
|
|
134
|
-
_context3.next = 11;
|
|
135
|
-
break;
|
|
136
|
-
}
|
|
137
|
-
_context3.prev = 1;
|
|
138
|
-
_context3.next = 4;
|
|
139
|
-
return provider;
|
|
140
|
-
case 4:
|
|
141
|
-
contextIdentifierProvider = _context3.sent;
|
|
142
|
-
(0, _commands.updateState)({
|
|
143
|
-
contextIdentifierProvider: contextIdentifierProvider
|
|
144
|
-
})(view.state, view.dispatch);
|
|
145
|
-
_context3.next = 11;
|
|
146
|
-
break;
|
|
147
|
-
case 8:
|
|
148
|
-
_context3.prev = 8;
|
|
149
|
-
_context3.t0 = _context3["catch"](1);
|
|
150
|
-
(0, _commands.updateState)({
|
|
151
|
-
contextIdentifierProvider: undefined
|
|
152
|
-
})(view.state, view.dispatch);
|
|
153
|
-
case 11:
|
|
154
|
-
case "end":
|
|
155
|
-
return _context3.stop();
|
|
156
|
-
}
|
|
157
|
-
}, _callee3, null, [[1, 8]]);
|
|
158
|
-
}));
|
|
159
|
-
return function (_x6, _x7) {
|
|
160
|
-
return _ref3.apply(this, arguments);
|
|
161
|
-
};
|
|
162
|
-
}();
|
|
163
|
-
};
|
|
164
|
-
var handleUpdate = exports.handleUpdate = function handleUpdate(_ref4) {
|
|
165
|
-
var view = _ref4.view,
|
|
166
|
-
prevState = _ref4.prevState,
|
|
167
|
-
domAtPos = _ref4.domAtPos,
|
|
168
|
-
extensionHandlers = _ref4.extensionHandlers,
|
|
169
|
-
applyChange = _ref4.applyChange;
|
|
126
|
+
var handleUpdate = exports.handleUpdate = function handleUpdate(_ref3) {
|
|
127
|
+
var view = _ref3.view,
|
|
128
|
+
prevState = _ref3.prevState,
|
|
129
|
+
domAtPos = _ref3.domAtPos,
|
|
130
|
+
extensionHandlers = _ref3.extensionHandlers,
|
|
131
|
+
applyChange = _ref3.applyChange;
|
|
170
132
|
var state = view.state,
|
|
171
133
|
dispatch = view.dispatch;
|
|
172
134
|
var _getPluginState = (0, _pluginFactory.getPluginState)(state),
|
|
@@ -224,13 +186,11 @@ var handleUpdate = exports.handleUpdate = function handleUpdate(_ref4) {
|
|
|
224
186
|
return true;
|
|
225
187
|
};
|
|
226
188
|
var createPlugin = exports.createPlugin = function createPlugin(dispatch, providerFactory, extensionHandlers, portalProviderAPI, eventDispatcher, pluginInjectionApi) {
|
|
227
|
-
var _pluginInjectionApi$c;
|
|
228
189
|
var useLongPressSelection = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
|
|
229
190
|
var options = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : {};
|
|
230
191
|
var state = (0, _pluginFactory.createPluginState)(dispatch, {
|
|
231
192
|
showEditButton: false,
|
|
232
|
-
showContextPanel: false
|
|
233
|
-
applyChangeToContextPanel: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c = pluginInjectionApi.contextPanel) === null || _pluginInjectionApi$c === void 0 || (_pluginInjectionApi$c = _pluginInjectionApi$c.actions) === null || _pluginInjectionApi$c === void 0 ? void 0 : _pluginInjectionApi$c.applyChange
|
|
193
|
+
showContextPanel: false
|
|
234
194
|
});
|
|
235
195
|
var extensionNodeViewOptions = {
|
|
236
196
|
appearance: options.appearance
|
|
@@ -240,23 +200,20 @@ var createPlugin = exports.createPlugin = function createPlugin(dispatch, provid
|
|
|
240
200
|
view: function view(editorView) {
|
|
241
201
|
var domAtPos = editorView.domAtPos.bind(editorView);
|
|
242
202
|
var extensionProviderHandler = createExtensionProviderHandler(editorView);
|
|
243
|
-
var contextIdentificationProviderHandler = createContextIdentifierProviderHandler(editorView);
|
|
244
203
|
providerFactory.subscribe('extensionProvider', extensionProviderHandler);
|
|
245
|
-
providerFactory.subscribe('contextIdentificationProvider', contextIdentificationProviderHandler);
|
|
246
204
|
return {
|
|
247
205
|
update: function update(view, prevState) {
|
|
248
|
-
var _pluginInjectionApi$
|
|
206
|
+
var _pluginInjectionApi$c;
|
|
249
207
|
handleUpdate({
|
|
250
208
|
view: view,
|
|
251
209
|
prevState: prevState,
|
|
252
210
|
domAtPos: domAtPos,
|
|
253
211
|
extensionHandlers: extensionHandlers,
|
|
254
|
-
applyChange: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$
|
|
212
|
+
applyChange: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c = pluginInjectionApi.contextPanel) === null || _pluginInjectionApi$c === void 0 ? void 0 : _pluginInjectionApi$c.actions.applyChange
|
|
255
213
|
});
|
|
256
214
|
},
|
|
257
215
|
destroy: function destroy() {
|
|
258
216
|
providerFactory.unsubscribe('extensionProvider', extensionProviderHandler);
|
|
259
|
-
providerFactory.unsubscribe('contextIdentificationProvider', contextIdentificationProviderHandler);
|
|
260
217
|
}
|
|
261
218
|
};
|
|
262
219
|
},
|
package/dist/cjs/toolbar.js
CHANGED
|
@@ -64,7 +64,7 @@ var isLayoutSupported = function isLayoutSupported(state, selectedExtNode) {
|
|
|
64
64
|
if (!selectedExtNode) {
|
|
65
65
|
return false;
|
|
66
66
|
}
|
|
67
|
-
return !!((
|
|
67
|
+
return !!(([bodiedExtension, multiBodiedExtension].includes(selectedExtNode.node.type) || selectedExtNode.node.type === extension && !(0, _utils2.hasParentNodeOfType)([bodiedExtension, table, expand].filter(Boolean))(selection)) && !(0, _utils2.hasParentNodeOfType)([layoutSection])(selection));
|
|
68
68
|
};
|
|
69
69
|
var breakoutOptions = function breakoutOptions(state, formatMessage, extensionState, breakoutEnabled) {
|
|
70
70
|
var nodeWithPos = (0, _utils3.getSelectedExtension)(state, true);
|
|
@@ -26,9 +26,8 @@ var _buttonGroup = _interopRequireDefault(require("@atlaskit/button/button-group
|
|
|
26
26
|
var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
|
|
27
27
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
28
28
|
var _extensions = require("@atlaskit/editor-common/extensions");
|
|
29
|
-
var
|
|
29
|
+
var _hooks = require("@atlaskit/editor-common/hooks");
|
|
30
30
|
var _form = _interopRequireWildcard(require("@atlaskit/form"));
|
|
31
|
-
var _pluginKey = require("../../plugin-key");
|
|
32
31
|
var _constants = require("./constants");
|
|
33
32
|
var _ErrorMessage = _interopRequireDefault(require("./ErrorMessage"));
|
|
34
33
|
var _FormContent = _interopRequireDefault(require("./FormContent"));
|
|
@@ -414,7 +413,8 @@ var ConfigPanel = /*#__PURE__*/function (_React$Component) {
|
|
|
414
413
|
errorMessage = _this$props7.errorMessage,
|
|
415
414
|
fields = _this$props7.fields,
|
|
416
415
|
isLoading = _this$props7.isLoading,
|
|
417
|
-
onCancel = _this$props7.onCancel
|
|
416
|
+
onCancel = _this$props7.onCancel,
|
|
417
|
+
api = _this$props7.api;
|
|
418
418
|
var _this$state = this.state,
|
|
419
419
|
currentParameters = _this$state.currentParameters,
|
|
420
420
|
hasParsedParameters = _this$state.hasParsedParameters,
|
|
@@ -437,32 +437,20 @@ var ConfigPanel = /*#__PURE__*/function (_React$Component) {
|
|
|
437
437
|
noValidate: true,
|
|
438
438
|
onKeyDown: handleKeyDown,
|
|
439
439
|
"data-testid": "extension-config-panel"
|
|
440
|
-
}), _this2.renderHeader(extensionManifest), /*#__PURE__*/_react.default.createElement(
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
fields: fields,
|
|
455
|
-
firstVisibleFieldName: firstVisibleFieldName,
|
|
456
|
-
hasParsedParameters: hasParsedParameters,
|
|
457
|
-
isLoading: isLoading || false,
|
|
458
|
-
onCancel: onCancel,
|
|
459
|
-
onFieldChange: onFieldChange,
|
|
460
|
-
parameters: currentParameters,
|
|
461
|
-
submitting: submitting,
|
|
462
|
-
contextIdentifierProvider: extension === null || extension === void 0 ? void 0 : extension.contextIdentifierProvider,
|
|
463
|
-
featureFlags: featureFlags
|
|
464
|
-
}));
|
|
465
|
-
}
|
|
440
|
+
}), _this2.renderHeader(extensionManifest), /*#__PURE__*/_react.default.createElement(ConfigFormIntlWithBoundary, {
|
|
441
|
+
api: api,
|
|
442
|
+
canSave: !autoSave,
|
|
443
|
+
errorMessage: errorMessage,
|
|
444
|
+
extensionManifest: extensionManifest,
|
|
445
|
+
fields: fields !== null && fields !== void 0 ? fields : [],
|
|
446
|
+
firstVisibleFieldName: firstVisibleFieldName,
|
|
447
|
+
hasParsedParameters: hasParsedParameters,
|
|
448
|
+
isLoading: isLoading || false,
|
|
449
|
+
onCancel: onCancel,
|
|
450
|
+
onFieldChange: onFieldChange,
|
|
451
|
+
parameters: currentParameters,
|
|
452
|
+
submitting: submitting,
|
|
453
|
+
featureFlags: featureFlags
|
|
466
454
|
}));
|
|
467
455
|
});
|
|
468
456
|
});
|
|
@@ -470,6 +458,44 @@ var ConfigPanel = /*#__PURE__*/function (_React$Component) {
|
|
|
470
458
|
}]);
|
|
471
459
|
return ConfigPanel;
|
|
472
460
|
}(_react.default.Component);
|
|
461
|
+
function ConfigFormIntlWithBoundary(_ref6) {
|
|
462
|
+
var api = _ref6.api,
|
|
463
|
+
fields = _ref6.fields,
|
|
464
|
+
submitting = _ref6.submitting,
|
|
465
|
+
parameters = _ref6.parameters,
|
|
466
|
+
featureFlags = _ref6.featureFlags,
|
|
467
|
+
canSave = _ref6.canSave,
|
|
468
|
+
extensionManifest = _ref6.extensionManifest,
|
|
469
|
+
onFieldChange = _ref6.onFieldChange,
|
|
470
|
+
onCancel = _ref6.onCancel,
|
|
471
|
+
isLoading = _ref6.isLoading,
|
|
472
|
+
hasParsedParameters = _ref6.hasParsedParameters,
|
|
473
|
+
firstVisibleFieldName = _ref6.firstVisibleFieldName,
|
|
474
|
+
errorMessage = _ref6.errorMessage;
|
|
475
|
+
var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['contextIdentifier']),
|
|
476
|
+
contextIdentifierState = _useSharedPluginState.contextIdentifierState;
|
|
477
|
+
var _ref7 = contextIdentifierState !== null && contextIdentifierState !== void 0 ? contextIdentifierState : {},
|
|
478
|
+
contextIdentifierProvider = _ref7.contextIdentifierProvider;
|
|
479
|
+
return /*#__PURE__*/_react.default.createElement(_FormErrorBoundary.FormErrorBoundary, {
|
|
480
|
+
contextIdentifierProvider: contextIdentifierProvider,
|
|
481
|
+
extensionKey: extensionManifest.key,
|
|
482
|
+
fields: fields
|
|
483
|
+
}, /*#__PURE__*/_react.default.createElement(ConfigFormIntl, {
|
|
484
|
+
canSave: canSave,
|
|
485
|
+
errorMessage: errorMessage,
|
|
486
|
+
extensionManifest: extensionManifest,
|
|
487
|
+
fields: fields,
|
|
488
|
+
firstVisibleFieldName: firstVisibleFieldName,
|
|
489
|
+
hasParsedParameters: hasParsedParameters,
|
|
490
|
+
isLoading: isLoading || false,
|
|
491
|
+
onCancel: onCancel,
|
|
492
|
+
onFieldChange: onFieldChange,
|
|
493
|
+
parameters: parameters,
|
|
494
|
+
submitting: submitting,
|
|
495
|
+
contextIdentifierProvider: contextIdentifierProvider,
|
|
496
|
+
featureFlags: featureFlags
|
|
497
|
+
}));
|
|
498
|
+
}
|
|
473
499
|
var _default = exports.default = (0, _analyticsNext.withAnalyticsContext)({
|
|
474
500
|
source: 'ConfigPanel'
|
|
475
501
|
})((0, _analyticsNext.withAnalyticsEvents)()(ConfigPanel));
|
|
@@ -87,7 +87,8 @@ function FieldsLoader(_ref) {
|
|
|
87
87
|
showHeader = _ref.showHeader,
|
|
88
88
|
featureFlags = _ref.featureFlags,
|
|
89
89
|
onChange = _ref.onChange,
|
|
90
|
-
onCancel = _ref.onCancel
|
|
90
|
+
onCancel = _ref.onCancel,
|
|
91
|
+
api = _ref.api;
|
|
91
92
|
var _useStateFromPromise = (0, _useStateFromPromise3.useStateFromPromise)(function () {
|
|
92
93
|
return extensionProvider.getExtension(extensionType, extensionKey);
|
|
93
94
|
}, [extensionProvider, extensionType, extensionKey]),
|
|
@@ -104,6 +105,7 @@ function FieldsLoader(_ref) {
|
|
|
104
105
|
extensionParameters: extensionParameters
|
|
105
106
|
}, function (fields) {
|
|
106
107
|
return /*#__PURE__*/_react.default.createElement(_ConfigPanel.default, {
|
|
108
|
+
api: api,
|
|
107
109
|
extensionManifest: extensionManifest,
|
|
108
110
|
isLoading: !extensionManifest || errorMessage === null && !fields,
|
|
109
111
|
fields: fields,
|