@atlaskit/adf-schema 40.8.2 → 40.9.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 +12 -0
- package/dist/cjs/next-schema/generated/nodeTypes.js +1 -1
- package/dist/cjs/next-schema/nodes/blockquote.js +1 -1
- package/dist/cjs/steps/batch-attrs-step.js +191 -0
- package/dist/cjs/steps.js +8 -1
- package/dist/cjs/validator-schema/generated/validatorSpec.js +1 -1
- package/dist/es2019/next-schema/generated/nodeTypes.js +1 -1
- package/dist/es2019/next-schema/nodes/blockquote.js +1 -1
- package/dist/es2019/steps/batch-attrs-step.js +167 -0
- package/dist/es2019/steps.js +2 -1
- package/dist/es2019/validator-schema/generated/validatorSpec.js +1 -1
- package/dist/esm/next-schema/generated/nodeTypes.js +1 -1
- package/dist/esm/next-schema/nodes/blockquote.js +1 -1
- package/dist/esm/steps/batch-attrs-step.js +184 -0
- package/dist/esm/steps.js +2 -1
- package/dist/esm/validator-schema/generated/validatorSpec.js +1 -1
- package/dist/json-schema/v1/full.json +3 -3
- package/dist/json-schema/v1/stage-0.json +3 -3
- package/dist/types/steps/batch-attrs-step.d.ts +74 -0
- package/dist/types/steps.d.ts +2 -0
- package/json-schema/v1/full.json +3 -3
- package/json-schema/v1/stage-0.json +3 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# @atlaskit/adf-schema
|
2
2
|
|
3
|
+
## 40.9.1
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- 3fbc24f: [ED-24525] Move mediaGroup ranking after mediaSingle in blockquote's content to fix bug where pasting external images would be converted to a mediaGroup instead of mediaSingle.
|
8
|
+
|
9
|
+
## 40.9.0
|
10
|
+
|
11
|
+
### Minor Changes
|
12
|
+
|
13
|
+
- dcc54e6: [ED-24636] Implements BatchAttrsStep
|
14
|
+
|
3
15
|
## 40.8.2
|
4
16
|
|
5
17
|
### Patch Changes
|
@@ -34,7 +34,7 @@ var blockCard = exports.blockCard = (0, _createPMSpecFactory.createPMNodeSpecFac
|
|
34
34
|
draggable: true
|
35
35
|
});
|
36
36
|
var blockquote = exports.blockquote = (0, _createPMSpecFactory.createPMNodeSpecFactory)({
|
37
|
-
content: '(paragraph | orderedList | bulletList | unsupportedBlock | codeBlock |
|
37
|
+
content: '(paragraph | orderedList | bulletList | unsupportedBlock | codeBlock | mediaSingle | mediaGroup)+',
|
38
38
|
group: 'block',
|
39
39
|
selectable: false,
|
40
40
|
defining: true
|
@@ -17,7 +17,7 @@ var blockquote = exports.blockquote = (0, _adfSchemaGenerator.adfNode)('blockquo
|
|
17
17
|
defining: true,
|
18
18
|
selectable: false,
|
19
19
|
marks: [_unsupportedMark.unsupportedMark, _unsupportedNodeAttribute.unsupportedNodeAttribute],
|
20
|
-
content: [(0, _adfSchemaGenerator.$onePlus)((0, _adfSchemaGenerator.$or)(_paragraph.paragraph.use('with_no_marks'), _list.orderedList, _list.bulletList, _unsupportedBlock.unsupportedBlock, _codeBlock.codeBlock.use('with_no_marks'),
|
20
|
+
content: [(0, _adfSchemaGenerator.$onePlus)((0, _adfSchemaGenerator.$or)(_paragraph.paragraph.use('with_no_marks'), _list.orderedList, _list.bulletList, _unsupportedBlock.unsupportedBlock, _codeBlock.codeBlock.use('with_no_marks'), _mediaSingle.mediaSingle.use('caption'), _mediaSingle.mediaSingle.use('full'), _mediaGroup.mediaGroup))]
|
21
21
|
}).variant('legacy', {
|
22
22
|
ignore: ['json-schema', 'validator-spec'],
|
23
23
|
content: [(0, _adfSchemaGenerator.$onePlus)((0, _adfSchemaGenerator.$or)(_paragraph.paragraph, _unsupportedBlock.unsupportedBlock))]
|
@@ -0,0 +1,191 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.BatchAttrsStep = void 0;
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
11
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
12
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
13
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
14
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
15
|
+
var _model = require("@atlaskit/editor-prosemirror/model");
|
16
|
+
var _transform = require("@atlaskit/editor-prosemirror/transform");
|
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
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
20
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
21
|
+
var stepType = 'batchAttrs';
|
22
|
+
var isValidData = function isValidData(data) {
|
23
|
+
if (data !== null && !Array.isArray(data)) {
|
24
|
+
return false;
|
25
|
+
}
|
26
|
+
return !data.some(function (d) {
|
27
|
+
var invalidPosition = typeof d.position !== 'number';
|
28
|
+
var invalidNodeType = typeof d.nodeType !== 'string';
|
29
|
+
var invalidAttrs = (0, _typeof2.default)(d.attrs) !== 'object';
|
30
|
+
return invalidPosition || invalidNodeType || invalidAttrs;
|
31
|
+
});
|
32
|
+
};
|
33
|
+
|
34
|
+
/**
|
35
|
+
* 📢 Public API: Editor FE Platform
|
36
|
+
*
|
37
|
+
* Represents a step that applies a batch of attribute changes to nodes in a ProseMirror document.
|
38
|
+
*
|
39
|
+
* This step is particularly useful when you need to update the attributes of multiple nodes in a document
|
40
|
+
* in a single operation. For example, you might want to change the color of several panels or update metadata
|
41
|
+
* for various sections without needing to perform multiple separate operations.
|
42
|
+
*
|
43
|
+
* **Use Cases:**
|
44
|
+
* - **Efficiency**: Apply multiple attribute changes in a single step to reduce the number of operations.
|
45
|
+
* - **Atomicity**: Ensure that a group of attribute changes are applied together, maintaining document consistency.
|
46
|
+
* - **Consistency**: Use when changes are logically related, such as updating theme attributes for a document section.
|
47
|
+
*
|
48
|
+
* **When Not to Use:**
|
49
|
+
* - **Single Changes**: If you only need to change attributes on a single node, a more straightforward step might be suitable like `AttrsStep` from prosemirror.
|
50
|
+
* - **Complex Node Transformations**: This step is designed for attribute changes rather than structural changes.
|
51
|
+
* - **Performance Concerns**: While efficient for batch updates, unnecessary use for single updates may add overhead.
|
52
|
+
*
|
53
|
+
* @example
|
54
|
+
* ```typescript
|
55
|
+
* import { BatchAttrsStep } from '@atlaskit/adf-schema/steps';
|
56
|
+
*
|
57
|
+
* // Define the attribute changes
|
58
|
+
* const changes = [
|
59
|
+
* {
|
60
|
+
* position: 0, // Position of the first panel
|
61
|
+
* nodeType: 'panel',
|
62
|
+
* attrs: { panelType: 'error' }
|
63
|
+
* },
|
64
|
+
* {
|
65
|
+
* position: 7, // Position of the second panel
|
66
|
+
* nodeType: 'panel',
|
67
|
+
* attrs: { panelType: 'success' }
|
68
|
+
* }
|
69
|
+
* ];
|
70
|
+
*
|
71
|
+
* // Create the step and apply it to the document
|
72
|
+
* const step = new BatchAttrsStep(changes);
|
73
|
+
*
|
74
|
+
* const tr = editorState.tr;
|
75
|
+
*
|
76
|
+
* tr.step(step);
|
77
|
+
* ```
|
78
|
+
*
|
79
|
+
* @class
|
80
|
+
* @extends {Step}
|
81
|
+
*/
|
82
|
+
var BatchAttrsStep = exports.BatchAttrsStep = /*#__PURE__*/function (_Step) {
|
83
|
+
function BatchAttrsStep(data) {
|
84
|
+
var _this;
|
85
|
+
var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
86
|
+
(0, _classCallCheck2.default)(this, BatchAttrsStep);
|
87
|
+
_this = _callSuper(this, BatchAttrsStep);
|
88
|
+
_this.data = data;
|
89
|
+
_this.inverted = inverted;
|
90
|
+
return _this;
|
91
|
+
}
|
92
|
+
(0, _inherits2.default)(BatchAttrsStep, _Step);
|
93
|
+
return (0, _createClass2.default)(BatchAttrsStep, [{
|
94
|
+
key: "apply",
|
95
|
+
value: function apply(doc) {
|
96
|
+
var resultDoc = this.data.reduce(function (acc, value) {
|
97
|
+
var _acc$doc;
|
98
|
+
if (!acc.doc || acc.failed) {
|
99
|
+
return acc;
|
100
|
+
}
|
101
|
+
var position = value.position,
|
102
|
+
attrs = value.attrs;
|
103
|
+
if (acc.doc && position > acc.doc.nodeSize || position < 0) {
|
104
|
+
return _transform.StepResult.fail("Position ".concat(position, " out of document range."));
|
105
|
+
}
|
106
|
+
var target = (_acc$doc = acc.doc) === null || _acc$doc === void 0 ? void 0 : _acc$doc.nodeAt(position);
|
107
|
+
if (!target) {
|
108
|
+
return _transform.StepResult.fail("No node at given position: ".concat(position));
|
109
|
+
}
|
110
|
+
if (target.isText) {
|
111
|
+
return _transform.StepResult.fail('Target is a text node. Attributes are not allowed.');
|
112
|
+
}
|
113
|
+
var mergedAttrs = _objectSpread(_objectSpread({}, target.attrs || {}), attrs || {});
|
114
|
+
var updatedNode = target.type.create(mergedAttrs, null, target.marks);
|
115
|
+
var slice = new _model.Slice(_model.Fragment.from(updatedNode), 0, target.isLeaf ? 0 : 1);
|
116
|
+
return _transform.StepResult.fromReplace(acc.doc, position, position + 1, slice);
|
117
|
+
}, _transform.StepResult.ok(doc));
|
118
|
+
return resultDoc;
|
119
|
+
}
|
120
|
+
}, {
|
121
|
+
key: "invert",
|
122
|
+
value: function invert(doc) {
|
123
|
+
var previousData = this.data.reduce(function (acc, value) {
|
124
|
+
var position = value.position,
|
125
|
+
nodeType = value.nodeType,
|
126
|
+
nextAttrs = value.attrs;
|
127
|
+
if (position > doc.nodeSize) {
|
128
|
+
return acc;
|
129
|
+
}
|
130
|
+
var target = doc.nodeAt(position);
|
131
|
+
if (!target) {
|
132
|
+
return acc;
|
133
|
+
}
|
134
|
+
if (target.isText) {
|
135
|
+
return acc;
|
136
|
+
}
|
137
|
+
var previousAttrs = Object.keys(nextAttrs).reduce(function (attributesIterator, key) {
|
138
|
+
var oldValue = target.attrs[key];
|
139
|
+
attributesIterator[key] = oldValue;
|
140
|
+
return attributesIterator;
|
141
|
+
}, {});
|
142
|
+
var prev = {
|
143
|
+
position: position,
|
144
|
+
nodeType: nodeType,
|
145
|
+
attrs: previousAttrs
|
146
|
+
};
|
147
|
+
acc.push(prev);
|
148
|
+
return acc;
|
149
|
+
}, []);
|
150
|
+
return new BatchAttrsStep(previousData, true);
|
151
|
+
}
|
152
|
+
}, {
|
153
|
+
key: "map",
|
154
|
+
value: function map(mapping) {
|
155
|
+
var mappedData = this.data.reduce(function (acc, value) {
|
156
|
+
var position = value.position;
|
157
|
+
var mappedPosition = mapping.mapResult(position);
|
158
|
+
if (mappedPosition.deleted) {
|
159
|
+
return acc;
|
160
|
+
}
|
161
|
+
acc.push(_objectSpread(_objectSpread({}, value), {}, {
|
162
|
+
position: mappedPosition.pos
|
163
|
+
}));
|
164
|
+
return acc;
|
165
|
+
}, []);
|
166
|
+
if (mappedData.length === 0) {
|
167
|
+
return null;
|
168
|
+
}
|
169
|
+
return new BatchAttrsStep(mappedData, this.inverted);
|
170
|
+
}
|
171
|
+
}, {
|
172
|
+
key: "toJSON",
|
173
|
+
value: function toJSON() {
|
174
|
+
return {
|
175
|
+
stepType: stepType,
|
176
|
+
data: this.data,
|
177
|
+
inverted: this.inverted
|
178
|
+
};
|
179
|
+
}
|
180
|
+
}], [{
|
181
|
+
key: "fromJSON",
|
182
|
+
value: function fromJSON(_schema, json) {
|
183
|
+
var data = json === null || json === void 0 ? void 0 : json.data;
|
184
|
+
if (!isValidData(data)) {
|
185
|
+
throw new Error('Invalid input for BatchAttrsStep.fromJSON');
|
186
|
+
}
|
187
|
+
return new BatchAttrsStep(data, Boolean(json.inverted));
|
188
|
+
}
|
189
|
+
}]);
|
190
|
+
}(_transform.Step);
|
191
|
+
_transform.Step.jsonID(stepType, BatchAttrsStep);
|
package/dist/cjs/steps.js
CHANGED
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "AnalyticsStep", {
|
|
9
9
|
return _analytics.AnalyticsStep;
|
10
10
|
}
|
11
11
|
});
|
12
|
+
Object.defineProperty(exports, "BatchAttrsStep", {
|
13
|
+
enumerable: true,
|
14
|
+
get: function get() {
|
15
|
+
return _batchAttrsStep.BatchAttrsStep;
|
16
|
+
}
|
17
|
+
});
|
12
18
|
Object.defineProperty(exports, "InsertTypeAheadStages", {
|
13
19
|
enumerable: true,
|
14
20
|
get: function get() {
|
@@ -43,4 +49,5 @@ var _typeAhead = require("./steps/type-ahead");
|
|
43
49
|
var _setAttrs = require("./steps/set-attrs");
|
44
50
|
var _analytics = require("./steps/analytics");
|
45
51
|
var _linkMetaStep = require("./steps/link-meta-step");
|
46
|
-
var _overrideDocumentStep = require("./steps/override-document-step");
|
52
|
+
var _overrideDocumentStep = require("./steps/override-document-step");
|
53
|
+
var _batchAttrsStep = require("./steps/batch-attrs-step");
|
@@ -1129,7 +1129,7 @@ var blockquote = exports.blockquote = {
|
|
1129
1129
|
},
|
1130
1130
|
content: {
|
1131
1131
|
type: 'array',
|
1132
|
-
items: [['paragraph_with_no_marks', 'orderedList', 'bulletList', 'codeBlock_with_no_marks', '
|
1132
|
+
items: [['paragraph_with_no_marks', 'orderedList', 'bulletList', 'codeBlock_with_no_marks', 'mediaSingle_caption', 'mediaSingle_full', 'mediaGroup']],
|
1133
1133
|
minItems: 1,
|
1134
1134
|
allowUnsupportedBlock: true
|
1135
1135
|
}
|
@@ -28,7 +28,7 @@ export const blockCard = createPMNodeSpecFactory({
|
|
28
28
|
draggable: true
|
29
29
|
});
|
30
30
|
export const blockquote = createPMNodeSpecFactory({
|
31
|
-
content: '(paragraph | orderedList | bulletList | unsupportedBlock | codeBlock |
|
31
|
+
content: '(paragraph | orderedList | bulletList | unsupportedBlock | codeBlock | mediaSingle | mediaGroup)+',
|
32
32
|
group: 'block',
|
33
33
|
selectable: false,
|
34
34
|
defining: true
|
@@ -11,7 +11,7 @@ export const blockquote = adfNode('blockquote').define({
|
|
11
11
|
defining: true,
|
12
12
|
selectable: false,
|
13
13
|
marks: [unsupportedMark, unsupportedNodeAttribute],
|
14
|
-
content: [$onePlus($or(paragraph.use('with_no_marks'), orderedList, bulletList, unsupportedBlock, codeBlock.use('with_no_marks'),
|
14
|
+
content: [$onePlus($or(paragraph.use('with_no_marks'), orderedList, bulletList, unsupportedBlock, codeBlock.use('with_no_marks'), mediaSingle.use('caption'), mediaSingle.use('full'), mediaGroup))]
|
15
15
|
}).variant('legacy', {
|
16
16
|
ignore: ['json-schema', 'validator-spec'],
|
17
17
|
content: [$onePlus($or(paragraph, unsupportedBlock))]
|
@@ -0,0 +1,167 @@
|
|
1
|
+
import { Fragment, Slice } from '@atlaskit/editor-prosemirror/model';
|
2
|
+
import { Step, StepResult } from '@atlaskit/editor-prosemirror/transform';
|
3
|
+
const stepType = 'batchAttrs';
|
4
|
+
const isValidData = data => {
|
5
|
+
if (data !== null && !Array.isArray(data)) {
|
6
|
+
return false;
|
7
|
+
}
|
8
|
+
return !data.some(d => {
|
9
|
+
const invalidPosition = typeof d.position !== 'number';
|
10
|
+
const invalidNodeType = typeof d.nodeType !== 'string';
|
11
|
+
const invalidAttrs = typeof d.attrs !== 'object';
|
12
|
+
return invalidPosition || invalidNodeType || invalidAttrs;
|
13
|
+
});
|
14
|
+
};
|
15
|
+
|
16
|
+
/**
|
17
|
+
* 📢 Public API: Editor FE Platform
|
18
|
+
*
|
19
|
+
* Represents a step that applies a batch of attribute changes to nodes in a ProseMirror document.
|
20
|
+
*
|
21
|
+
* This step is particularly useful when you need to update the attributes of multiple nodes in a document
|
22
|
+
* in a single operation. For example, you might want to change the color of several panels or update metadata
|
23
|
+
* for various sections without needing to perform multiple separate operations.
|
24
|
+
*
|
25
|
+
* **Use Cases:**
|
26
|
+
* - **Efficiency**: Apply multiple attribute changes in a single step to reduce the number of operations.
|
27
|
+
* - **Atomicity**: Ensure that a group of attribute changes are applied together, maintaining document consistency.
|
28
|
+
* - **Consistency**: Use when changes are logically related, such as updating theme attributes for a document section.
|
29
|
+
*
|
30
|
+
* **When Not to Use:**
|
31
|
+
* - **Single Changes**: If you only need to change attributes on a single node, a more straightforward step might be suitable like `AttrsStep` from prosemirror.
|
32
|
+
* - **Complex Node Transformations**: This step is designed for attribute changes rather than structural changes.
|
33
|
+
* - **Performance Concerns**: While efficient for batch updates, unnecessary use for single updates may add overhead.
|
34
|
+
*
|
35
|
+
* @example
|
36
|
+
* ```typescript
|
37
|
+
* import { BatchAttrsStep } from '@atlaskit/adf-schema/steps';
|
38
|
+
*
|
39
|
+
* // Define the attribute changes
|
40
|
+
* const changes = [
|
41
|
+
* {
|
42
|
+
* position: 0, // Position of the first panel
|
43
|
+
* nodeType: 'panel',
|
44
|
+
* attrs: { panelType: 'error' }
|
45
|
+
* },
|
46
|
+
* {
|
47
|
+
* position: 7, // Position of the second panel
|
48
|
+
* nodeType: 'panel',
|
49
|
+
* attrs: { panelType: 'success' }
|
50
|
+
* }
|
51
|
+
* ];
|
52
|
+
*
|
53
|
+
* // Create the step and apply it to the document
|
54
|
+
* const step = new BatchAttrsStep(changes);
|
55
|
+
*
|
56
|
+
* const tr = editorState.tr;
|
57
|
+
*
|
58
|
+
* tr.step(step);
|
59
|
+
* ```
|
60
|
+
*
|
61
|
+
* @class
|
62
|
+
* @extends {Step}
|
63
|
+
*/
|
64
|
+
export class BatchAttrsStep extends Step {
|
65
|
+
constructor(data, inverted = false) {
|
66
|
+
super();
|
67
|
+
this.data = data;
|
68
|
+
this.inverted = inverted;
|
69
|
+
}
|
70
|
+
apply(doc) {
|
71
|
+
const resultDoc = this.data.reduce((acc, value) => {
|
72
|
+
var _acc$doc;
|
73
|
+
if (!acc.doc || acc.failed) {
|
74
|
+
return acc;
|
75
|
+
}
|
76
|
+
const {
|
77
|
+
position,
|
78
|
+
attrs
|
79
|
+
} = value;
|
80
|
+
if (acc.doc && position > acc.doc.nodeSize || position < 0) {
|
81
|
+
return StepResult.fail(`Position ${position} out of document range.`);
|
82
|
+
}
|
83
|
+
const target = (_acc$doc = acc.doc) === null || _acc$doc === void 0 ? void 0 : _acc$doc.nodeAt(position);
|
84
|
+
if (!target) {
|
85
|
+
return StepResult.fail(`No node at given position: ${position}`);
|
86
|
+
}
|
87
|
+
if (target.isText) {
|
88
|
+
return StepResult.fail('Target is a text node. Attributes are not allowed.');
|
89
|
+
}
|
90
|
+
const mergedAttrs = {
|
91
|
+
...(target.attrs || {}),
|
92
|
+
...(attrs || {})
|
93
|
+
};
|
94
|
+
const updatedNode = target.type.create(mergedAttrs, null, target.marks);
|
95
|
+
const slice = new Slice(Fragment.from(updatedNode), 0, target.isLeaf ? 0 : 1);
|
96
|
+
return StepResult.fromReplace(acc.doc, position, position + 1, slice);
|
97
|
+
}, StepResult.ok(doc));
|
98
|
+
return resultDoc;
|
99
|
+
}
|
100
|
+
invert(doc) {
|
101
|
+
const previousData = this.data.reduce((acc, value) => {
|
102
|
+
const {
|
103
|
+
position,
|
104
|
+
nodeType,
|
105
|
+
attrs: nextAttrs
|
106
|
+
} = value;
|
107
|
+
if (position > doc.nodeSize) {
|
108
|
+
return acc;
|
109
|
+
}
|
110
|
+
const target = doc.nodeAt(position);
|
111
|
+
if (!target) {
|
112
|
+
return acc;
|
113
|
+
}
|
114
|
+
if (target.isText) {
|
115
|
+
return acc;
|
116
|
+
}
|
117
|
+
const previousAttrs = Object.keys(nextAttrs).reduce((attributesIterator, key) => {
|
118
|
+
const oldValue = target.attrs[key];
|
119
|
+
attributesIterator[key] = oldValue;
|
120
|
+
return attributesIterator;
|
121
|
+
}, {});
|
122
|
+
const prev = {
|
123
|
+
position,
|
124
|
+
nodeType,
|
125
|
+
attrs: previousAttrs
|
126
|
+
};
|
127
|
+
acc.push(prev);
|
128
|
+
return acc;
|
129
|
+
}, []);
|
130
|
+
return new BatchAttrsStep(previousData, true);
|
131
|
+
}
|
132
|
+
map(mapping) {
|
133
|
+
const mappedData = this.data.reduce((acc, value) => {
|
134
|
+
const {
|
135
|
+
position
|
136
|
+
} = value;
|
137
|
+
const mappedPosition = mapping.mapResult(position);
|
138
|
+
if (mappedPosition.deleted) {
|
139
|
+
return acc;
|
140
|
+
}
|
141
|
+
acc.push({
|
142
|
+
...value,
|
143
|
+
position: mappedPosition.pos
|
144
|
+
});
|
145
|
+
return acc;
|
146
|
+
}, []);
|
147
|
+
if (mappedData.length === 0) {
|
148
|
+
return null;
|
149
|
+
}
|
150
|
+
return new BatchAttrsStep(mappedData, this.inverted);
|
151
|
+
}
|
152
|
+
toJSON() {
|
153
|
+
return {
|
154
|
+
stepType,
|
155
|
+
data: this.data,
|
156
|
+
inverted: this.inverted
|
157
|
+
};
|
158
|
+
}
|
159
|
+
static fromJSON(_schema, json) {
|
160
|
+
const data = json === null || json === void 0 ? void 0 : json.data;
|
161
|
+
if (!isValidData(data)) {
|
162
|
+
throw new Error('Invalid input for BatchAttrsStep.fromJSON');
|
163
|
+
}
|
164
|
+
return new BatchAttrsStep(data, Boolean(json.inverted));
|
165
|
+
}
|
166
|
+
}
|
167
|
+
Step.jsonID(stepType, BatchAttrsStep);
|
package/dist/es2019/steps.js
CHANGED
@@ -2,4 +2,5 @@ export { InsertTypeAheadStages, InsertTypeAheadStep } from './steps/type-ahead';
|
|
2
2
|
export { SetAttrsStep } from './steps/set-attrs';
|
3
3
|
export { AnalyticsStep } from './steps/analytics';
|
4
4
|
export { LinkMetaStep } from './steps/link-meta-step';
|
5
|
-
export { OverrideDocumentStep } from './steps/override-document-step';
|
5
|
+
export { OverrideDocumentStep } from './steps/override-document-step';
|
6
|
+
export { BatchAttrsStep } from './steps/batch-attrs-step';
|
@@ -1122,7 +1122,7 @@ export const blockquote = {
|
|
1122
1122
|
},
|
1123
1123
|
content: {
|
1124
1124
|
type: 'array',
|
1125
|
-
items: [['paragraph_with_no_marks', 'orderedList', 'bulletList', 'codeBlock_with_no_marks', '
|
1125
|
+
items: [['paragraph_with_no_marks', 'orderedList', 'bulletList', 'codeBlock_with_no_marks', 'mediaSingle_caption', 'mediaSingle_full', 'mediaGroup']],
|
1126
1126
|
minItems: 1,
|
1127
1127
|
allowUnsupportedBlock: true
|
1128
1128
|
}
|
@@ -28,7 +28,7 @@ export var blockCard = createPMNodeSpecFactory({
|
|
28
28
|
draggable: true
|
29
29
|
});
|
30
30
|
export var blockquote = createPMNodeSpecFactory({
|
31
|
-
content: '(paragraph | orderedList | bulletList | unsupportedBlock | codeBlock |
|
31
|
+
content: '(paragraph | orderedList | bulletList | unsupportedBlock | codeBlock | mediaSingle | mediaGroup)+',
|
32
32
|
group: 'block',
|
33
33
|
selectable: false,
|
34
34
|
defining: true
|
@@ -11,7 +11,7 @@ export var blockquote = adfNode('blockquote').define({
|
|
11
11
|
defining: true,
|
12
12
|
selectable: false,
|
13
13
|
marks: [unsupportedMark, unsupportedNodeAttribute],
|
14
|
-
content: [$onePlus($or(paragraph.use('with_no_marks'), orderedList, bulletList, unsupportedBlock, codeBlock.use('with_no_marks'),
|
14
|
+
content: [$onePlus($or(paragraph.use('with_no_marks'), orderedList, bulletList, unsupportedBlock, codeBlock.use('with_no_marks'), mediaSingle.use('caption'), mediaSingle.use('full'), mediaGroup))]
|
15
15
|
}).variant('legacy', {
|
16
16
|
ignore: ['json-schema', 'validator-spec'],
|
17
17
|
content: [$onePlus($or(paragraph, unsupportedBlock))]
|
@@ -0,0 +1,184 @@
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
2
|
+
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
3
|
+
import _createClass from "@babel/runtime/helpers/createClass";
|
4
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
5
|
+
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
6
|
+
import _inherits from "@babel/runtime/helpers/inherits";
|
7
|
+
import _typeof from "@babel/runtime/helpers/typeof";
|
8
|
+
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; }
|
9
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
10
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
11
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
12
|
+
import { Fragment, Slice } from '@atlaskit/editor-prosemirror/model';
|
13
|
+
import { Step, StepResult } from '@atlaskit/editor-prosemirror/transform';
|
14
|
+
var stepType = 'batchAttrs';
|
15
|
+
var isValidData = function isValidData(data) {
|
16
|
+
if (data !== null && !Array.isArray(data)) {
|
17
|
+
return false;
|
18
|
+
}
|
19
|
+
return !data.some(function (d) {
|
20
|
+
var invalidPosition = typeof d.position !== 'number';
|
21
|
+
var invalidNodeType = typeof d.nodeType !== 'string';
|
22
|
+
var invalidAttrs = _typeof(d.attrs) !== 'object';
|
23
|
+
return invalidPosition || invalidNodeType || invalidAttrs;
|
24
|
+
});
|
25
|
+
};
|
26
|
+
|
27
|
+
/**
|
28
|
+
* 📢 Public API: Editor FE Platform
|
29
|
+
*
|
30
|
+
* Represents a step that applies a batch of attribute changes to nodes in a ProseMirror document.
|
31
|
+
*
|
32
|
+
* This step is particularly useful when you need to update the attributes of multiple nodes in a document
|
33
|
+
* in a single operation. For example, you might want to change the color of several panels or update metadata
|
34
|
+
* for various sections without needing to perform multiple separate operations.
|
35
|
+
*
|
36
|
+
* **Use Cases:**
|
37
|
+
* - **Efficiency**: Apply multiple attribute changes in a single step to reduce the number of operations.
|
38
|
+
* - **Atomicity**: Ensure that a group of attribute changes are applied together, maintaining document consistency.
|
39
|
+
* - **Consistency**: Use when changes are logically related, such as updating theme attributes for a document section.
|
40
|
+
*
|
41
|
+
* **When Not to Use:**
|
42
|
+
* - **Single Changes**: If you only need to change attributes on a single node, a more straightforward step might be suitable like `AttrsStep` from prosemirror.
|
43
|
+
* - **Complex Node Transformations**: This step is designed for attribute changes rather than structural changes.
|
44
|
+
* - **Performance Concerns**: While efficient for batch updates, unnecessary use for single updates may add overhead.
|
45
|
+
*
|
46
|
+
* @example
|
47
|
+
* ```typescript
|
48
|
+
* import { BatchAttrsStep } from '@atlaskit/adf-schema/steps';
|
49
|
+
*
|
50
|
+
* // Define the attribute changes
|
51
|
+
* const changes = [
|
52
|
+
* {
|
53
|
+
* position: 0, // Position of the first panel
|
54
|
+
* nodeType: 'panel',
|
55
|
+
* attrs: { panelType: 'error' }
|
56
|
+
* },
|
57
|
+
* {
|
58
|
+
* position: 7, // Position of the second panel
|
59
|
+
* nodeType: 'panel',
|
60
|
+
* attrs: { panelType: 'success' }
|
61
|
+
* }
|
62
|
+
* ];
|
63
|
+
*
|
64
|
+
* // Create the step and apply it to the document
|
65
|
+
* const step = new BatchAttrsStep(changes);
|
66
|
+
*
|
67
|
+
* const tr = editorState.tr;
|
68
|
+
*
|
69
|
+
* tr.step(step);
|
70
|
+
* ```
|
71
|
+
*
|
72
|
+
* @class
|
73
|
+
* @extends {Step}
|
74
|
+
*/
|
75
|
+
export var BatchAttrsStep = /*#__PURE__*/function (_Step) {
|
76
|
+
function BatchAttrsStep(data) {
|
77
|
+
var _this;
|
78
|
+
var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
79
|
+
_classCallCheck(this, BatchAttrsStep);
|
80
|
+
_this = _callSuper(this, BatchAttrsStep);
|
81
|
+
_this.data = data;
|
82
|
+
_this.inverted = inverted;
|
83
|
+
return _this;
|
84
|
+
}
|
85
|
+
_inherits(BatchAttrsStep, _Step);
|
86
|
+
return _createClass(BatchAttrsStep, [{
|
87
|
+
key: "apply",
|
88
|
+
value: function apply(doc) {
|
89
|
+
var resultDoc = this.data.reduce(function (acc, value) {
|
90
|
+
var _acc$doc;
|
91
|
+
if (!acc.doc || acc.failed) {
|
92
|
+
return acc;
|
93
|
+
}
|
94
|
+
var position = value.position,
|
95
|
+
attrs = value.attrs;
|
96
|
+
if (acc.doc && position > acc.doc.nodeSize || position < 0) {
|
97
|
+
return StepResult.fail("Position ".concat(position, " out of document range."));
|
98
|
+
}
|
99
|
+
var target = (_acc$doc = acc.doc) === null || _acc$doc === void 0 ? void 0 : _acc$doc.nodeAt(position);
|
100
|
+
if (!target) {
|
101
|
+
return StepResult.fail("No node at given position: ".concat(position));
|
102
|
+
}
|
103
|
+
if (target.isText) {
|
104
|
+
return StepResult.fail('Target is a text node. Attributes are not allowed.');
|
105
|
+
}
|
106
|
+
var mergedAttrs = _objectSpread(_objectSpread({}, target.attrs || {}), attrs || {});
|
107
|
+
var updatedNode = target.type.create(mergedAttrs, null, target.marks);
|
108
|
+
var slice = new Slice(Fragment.from(updatedNode), 0, target.isLeaf ? 0 : 1);
|
109
|
+
return StepResult.fromReplace(acc.doc, position, position + 1, slice);
|
110
|
+
}, StepResult.ok(doc));
|
111
|
+
return resultDoc;
|
112
|
+
}
|
113
|
+
}, {
|
114
|
+
key: "invert",
|
115
|
+
value: function invert(doc) {
|
116
|
+
var previousData = this.data.reduce(function (acc, value) {
|
117
|
+
var position = value.position,
|
118
|
+
nodeType = value.nodeType,
|
119
|
+
nextAttrs = value.attrs;
|
120
|
+
if (position > doc.nodeSize) {
|
121
|
+
return acc;
|
122
|
+
}
|
123
|
+
var target = doc.nodeAt(position);
|
124
|
+
if (!target) {
|
125
|
+
return acc;
|
126
|
+
}
|
127
|
+
if (target.isText) {
|
128
|
+
return acc;
|
129
|
+
}
|
130
|
+
var previousAttrs = Object.keys(nextAttrs).reduce(function (attributesIterator, key) {
|
131
|
+
var oldValue = target.attrs[key];
|
132
|
+
attributesIterator[key] = oldValue;
|
133
|
+
return attributesIterator;
|
134
|
+
}, {});
|
135
|
+
var prev = {
|
136
|
+
position: position,
|
137
|
+
nodeType: nodeType,
|
138
|
+
attrs: previousAttrs
|
139
|
+
};
|
140
|
+
acc.push(prev);
|
141
|
+
return acc;
|
142
|
+
}, []);
|
143
|
+
return new BatchAttrsStep(previousData, true);
|
144
|
+
}
|
145
|
+
}, {
|
146
|
+
key: "map",
|
147
|
+
value: function map(mapping) {
|
148
|
+
var mappedData = this.data.reduce(function (acc, value) {
|
149
|
+
var position = value.position;
|
150
|
+
var mappedPosition = mapping.mapResult(position);
|
151
|
+
if (mappedPosition.deleted) {
|
152
|
+
return acc;
|
153
|
+
}
|
154
|
+
acc.push(_objectSpread(_objectSpread({}, value), {}, {
|
155
|
+
position: mappedPosition.pos
|
156
|
+
}));
|
157
|
+
return acc;
|
158
|
+
}, []);
|
159
|
+
if (mappedData.length === 0) {
|
160
|
+
return null;
|
161
|
+
}
|
162
|
+
return new BatchAttrsStep(mappedData, this.inverted);
|
163
|
+
}
|
164
|
+
}, {
|
165
|
+
key: "toJSON",
|
166
|
+
value: function toJSON() {
|
167
|
+
return {
|
168
|
+
stepType: stepType,
|
169
|
+
data: this.data,
|
170
|
+
inverted: this.inverted
|
171
|
+
};
|
172
|
+
}
|
173
|
+
}], [{
|
174
|
+
key: "fromJSON",
|
175
|
+
value: function fromJSON(_schema, json) {
|
176
|
+
var data = json === null || json === void 0 ? void 0 : json.data;
|
177
|
+
if (!isValidData(data)) {
|
178
|
+
throw new Error('Invalid input for BatchAttrsStep.fromJSON');
|
179
|
+
}
|
180
|
+
return new BatchAttrsStep(data, Boolean(json.inverted));
|
181
|
+
}
|
182
|
+
}]);
|
183
|
+
}(Step);
|
184
|
+
Step.jsonID(stepType, BatchAttrsStep);
|
package/dist/esm/steps.js
CHANGED
@@ -2,4 +2,5 @@ export { InsertTypeAheadStages, InsertTypeAheadStep } from './steps/type-ahead';
|
|
2
2
|
export { SetAttrsStep } from './steps/set-attrs';
|
3
3
|
export { AnalyticsStep } from './steps/analytics';
|
4
4
|
export { LinkMetaStep } from './steps/link-meta-step';
|
5
|
-
export { OverrideDocumentStep } from './steps/override-document-step';
|
5
|
+
export { OverrideDocumentStep } from './steps/override-document-step';
|
6
|
+
export { BatchAttrsStep } from './steps/batch-attrs-step';
|
@@ -1122,7 +1122,7 @@ export var blockquote = {
|
|
1122
1122
|
},
|
1123
1123
|
content: {
|
1124
1124
|
type: 'array',
|
1125
|
-
items: [['paragraph_with_no_marks', 'orderedList', 'bulletList', 'codeBlock_with_no_marks', '
|
1125
|
+
items: [['paragraph_with_no_marks', 'orderedList', 'bulletList', 'codeBlock_with_no_marks', 'mediaSingle_caption', 'mediaSingle_full', 'mediaGroup']],
|
1126
1126
|
minItems: 1,
|
1127
1127
|
allowUnsupportedBlock: true
|
1128
1128
|
}
|
@@ -1489,14 +1489,14 @@
|
|
1489
1489
|
{
|
1490
1490
|
"$ref": "#/definitions/codeBlock_with_no_marks_node"
|
1491
1491
|
},
|
1492
|
-
{
|
1493
|
-
"$ref": "#/definitions/mediaGroup_node"
|
1494
|
-
},
|
1495
1492
|
{
|
1496
1493
|
"$ref": "#/definitions/mediaSingle_caption_node"
|
1497
1494
|
},
|
1498
1495
|
{
|
1499
1496
|
"$ref": "#/definitions/mediaSingle_full_node"
|
1497
|
+
},
|
1498
|
+
{
|
1499
|
+
"$ref": "#/definitions/mediaGroup_node"
|
1500
1500
|
}
|
1501
1501
|
]
|
1502
1502
|
},
|
@@ -1596,14 +1596,14 @@
|
|
1596
1596
|
{
|
1597
1597
|
"$ref": "#/definitions/codeBlock_with_no_marks_node"
|
1598
1598
|
},
|
1599
|
-
{
|
1600
|
-
"$ref": "#/definitions/mediaGroup_node"
|
1601
|
-
},
|
1602
1599
|
{
|
1603
1600
|
"$ref": "#/definitions/mediaSingle_caption_node"
|
1604
1601
|
},
|
1605
1602
|
{
|
1606
1603
|
"$ref": "#/definitions/mediaSingle_full_node"
|
1604
|
+
},
|
1605
|
+
{
|
1606
|
+
"$ref": "#/definitions/mediaGroup_node"
|
1607
1607
|
}
|
1608
1608
|
]
|
1609
1609
|
},
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import { type Schema } from '@atlaskit/editor-prosemirror/model';
|
2
|
+
import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
|
3
|
+
import { Step, StepResult } from '@atlaskit/editor-prosemirror/transform';
|
4
|
+
import type { Mappable } from '@atlaskit/editor-prosemirror/transform';
|
5
|
+
export type BatchAttrsStepData = {
|
6
|
+
position: number;
|
7
|
+
nodeType: string;
|
8
|
+
attrs: Record<string, unknown>;
|
9
|
+
};
|
10
|
+
/**
|
11
|
+
* 📢 Public API: Editor FE Platform
|
12
|
+
*
|
13
|
+
* Represents a step that applies a batch of attribute changes to nodes in a ProseMirror document.
|
14
|
+
*
|
15
|
+
* This step is particularly useful when you need to update the attributes of multiple nodes in a document
|
16
|
+
* in a single operation. For example, you might want to change the color of several panels or update metadata
|
17
|
+
* for various sections without needing to perform multiple separate operations.
|
18
|
+
*
|
19
|
+
* **Use Cases:**
|
20
|
+
* - **Efficiency**: Apply multiple attribute changes in a single step to reduce the number of operations.
|
21
|
+
* - **Atomicity**: Ensure that a group of attribute changes are applied together, maintaining document consistency.
|
22
|
+
* - **Consistency**: Use when changes are logically related, such as updating theme attributes for a document section.
|
23
|
+
*
|
24
|
+
* **When Not to Use:**
|
25
|
+
* - **Single Changes**: If you only need to change attributes on a single node, a more straightforward step might be suitable like `AttrsStep` from prosemirror.
|
26
|
+
* - **Complex Node Transformations**: This step is designed for attribute changes rather than structural changes.
|
27
|
+
* - **Performance Concerns**: While efficient for batch updates, unnecessary use for single updates may add overhead.
|
28
|
+
*
|
29
|
+
* @example
|
30
|
+
* ```typescript
|
31
|
+
* import { BatchAttrsStep } from '@atlaskit/adf-schema/steps';
|
32
|
+
*
|
33
|
+
* // Define the attribute changes
|
34
|
+
* const changes = [
|
35
|
+
* {
|
36
|
+
* position: 0, // Position of the first panel
|
37
|
+
* nodeType: 'panel',
|
38
|
+
* attrs: { panelType: 'error' }
|
39
|
+
* },
|
40
|
+
* {
|
41
|
+
* position: 7, // Position of the second panel
|
42
|
+
* nodeType: 'panel',
|
43
|
+
* attrs: { panelType: 'success' }
|
44
|
+
* }
|
45
|
+
* ];
|
46
|
+
*
|
47
|
+
* // Create the step and apply it to the document
|
48
|
+
* const step = new BatchAttrsStep(changes);
|
49
|
+
*
|
50
|
+
* const tr = editorState.tr;
|
51
|
+
*
|
52
|
+
* tr.step(step);
|
53
|
+
* ```
|
54
|
+
*
|
55
|
+
* @class
|
56
|
+
* @extends {Step}
|
57
|
+
*/
|
58
|
+
export declare class BatchAttrsStep extends Step {
|
59
|
+
data: Array<BatchAttrsStepData>;
|
60
|
+
private inverted;
|
61
|
+
constructor(data: Array<BatchAttrsStepData>, inverted?: boolean);
|
62
|
+
apply(doc: PMNode): StepResult;
|
63
|
+
invert(doc: PMNode): BatchAttrsStep;
|
64
|
+
map(mapping: Mappable): BatchAttrsStep;
|
65
|
+
toJSON(): {
|
66
|
+
stepType: string;
|
67
|
+
data: BatchAttrsStepData[];
|
68
|
+
inverted: boolean;
|
69
|
+
};
|
70
|
+
static fromJSON(_schema: Schema, json: {
|
71
|
+
data: Array<Record<string, unknown>>;
|
72
|
+
inverted?: boolean;
|
73
|
+
}): BatchAttrsStep;
|
74
|
+
}
|
package/dist/types/steps.d.ts
CHANGED
@@ -6,3 +6,5 @@ export { LinkMetaStep } from './steps/link-meta-step';
|
|
6
6
|
export type { LinkStepMetadata } from './steps/link-meta-step';
|
7
7
|
export { OverrideDocumentStep } from './steps/override-document-step';
|
8
8
|
export type { OverrideDocumentStepJSON } from './steps/override-document-step';
|
9
|
+
export { BatchAttrsStep } from './steps/batch-attrs-step';
|
10
|
+
export type { BatchAttrsStepData } from './steps/batch-attrs-step';
|
package/json-schema/v1/full.json
CHANGED
@@ -1489,14 +1489,14 @@
|
|
1489
1489
|
{
|
1490
1490
|
"$ref": "#/definitions/codeBlock_with_no_marks_node"
|
1491
1491
|
},
|
1492
|
-
{
|
1493
|
-
"$ref": "#/definitions/mediaGroup_node"
|
1494
|
-
},
|
1495
1492
|
{
|
1496
1493
|
"$ref": "#/definitions/mediaSingle_caption_node"
|
1497
1494
|
},
|
1498
1495
|
{
|
1499
1496
|
"$ref": "#/definitions/mediaSingle_full_node"
|
1497
|
+
},
|
1498
|
+
{
|
1499
|
+
"$ref": "#/definitions/mediaGroup_node"
|
1500
1500
|
}
|
1501
1501
|
]
|
1502
1502
|
},
|
@@ -1596,14 +1596,14 @@
|
|
1596
1596
|
{
|
1597
1597
|
"$ref": "#/definitions/codeBlock_with_no_marks_node"
|
1598
1598
|
},
|
1599
|
-
{
|
1600
|
-
"$ref": "#/definitions/mediaGroup_node"
|
1601
|
-
},
|
1602
1599
|
{
|
1603
1600
|
"$ref": "#/definitions/mediaSingle_caption_node"
|
1604
1601
|
},
|
1605
1602
|
{
|
1606
1603
|
"$ref": "#/definitions/mediaSingle_full_node"
|
1604
|
+
},
|
1605
|
+
{
|
1606
|
+
"$ref": "#/definitions/mediaGroup_node"
|
1607
1607
|
}
|
1608
1608
|
]
|
1609
1609
|
},
|
package/package.json
CHANGED