hadron-document 7.6.0 → 7.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.depcheckrc +0 -2
- package/index.d.ts +192 -0
- package/lib/document.js +122 -55
- package/lib/editor/date.js +151 -0
- package/lib/editor/decimal128.js +88 -0
- package/lib/editor/double.js +113 -0
- package/lib/editor/index.js +50 -0
- package/lib/editor/int32.js +68 -0
- package/lib/editor/int64.js +88 -0
- package/lib/editor/null.js +81 -0
- package/lib/editor/objectid.js +98 -0
- package/lib/editor/standard.js +108 -0
- package/lib/editor/string.js +48 -0
- package/lib/editor/undefined.js +81 -0
- package/lib/element-events.js +15 -0
- package/lib/element.js +156 -85
- package/lib/index.js +4 -1
- package/lib/object-generator.js +1 -1
- package/lib/utils.js +10 -0
- package/package.json +4 -5
- package/src/document.js +44 -3
- package/src/editor/date.js +95 -0
- package/src/editor/decimal128.js +46 -0
- package/src/editor/double.js +70 -0
- package/src/editor/index.js +40 -0
- package/src/editor/int32.js +29 -0
- package/src/editor/int64.js +46 -0
- package/src/editor/null.js +42 -0
- package/src/editor/objectid.js +54 -0
- package/src/editor/standard.js +78 -0
- package/src/editor/string.js +20 -0
- package/src/editor/undefined.js +42 -0
- package/src/element-events.js +14 -0
- package/src/element.js +90 -39
- package/src/index.js +3 -0
- package/src/utils.js +6 -0
package/.depcheckrc
CHANGED
package/index.d.ts
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import type { TypeCastTypes, TypeCastMap } from 'hadron-type-checker';
|
|
2
|
+
|
|
3
|
+
declare class EventEmitter {
|
|
4
|
+
on(name: string, fn: Function): void;
|
|
5
|
+
off(name: string, fn: Function): void;
|
|
6
|
+
emit(name: string, ...args: unknown[]): void;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
declare class LinkedList<T> {
|
|
10
|
+
size: number;
|
|
11
|
+
at(index: number): T | undefined;
|
|
12
|
+
get(key: string): T | undefined;
|
|
13
|
+
insertAfter(
|
|
14
|
+
el: T,
|
|
15
|
+
key: string,
|
|
16
|
+
value: unknown,
|
|
17
|
+
added?: boolean,
|
|
18
|
+
parent?: T
|
|
19
|
+
): T;
|
|
20
|
+
updateKeys(el: T, add: 1 | -1): void;
|
|
21
|
+
handleEmptyKeys(el: T): void;
|
|
22
|
+
insertBefore(
|
|
23
|
+
el: T,
|
|
24
|
+
key: string,
|
|
25
|
+
value: unknown,
|
|
26
|
+
added?: boolean,
|
|
27
|
+
parent?: T
|
|
28
|
+
): T;
|
|
29
|
+
insertBeginning(key: string, value: unknown, added?: boolean, parent?: T): T;
|
|
30
|
+
insertEnd(key: string, value: unknown, added?: boolean, parent?: T): T;
|
|
31
|
+
flush(): void;
|
|
32
|
+
[Symbol.iterator](): IterableIterator<T>;
|
|
33
|
+
remove(el: T): this;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
declare const HadronElementEvents: {
|
|
37
|
+
Added: 'Element::Added';
|
|
38
|
+
Edited: 'Element::Edited';
|
|
39
|
+
Removed: 'Element::Removed';
|
|
40
|
+
Reverted: 'Element::Reverted';
|
|
41
|
+
Converted: 'Element::Converted';
|
|
42
|
+
Invalid: 'Element::Invalid';
|
|
43
|
+
Valid: 'Element::Valid';
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
declare class HadronElement extends EventEmitter {
|
|
47
|
+
constructor(
|
|
48
|
+
key: string,
|
|
49
|
+
value: unknown,
|
|
50
|
+
added: boolean,
|
|
51
|
+
parent: HadronDocument | HadronElement | null,
|
|
52
|
+
previousElement: HadronElement | null,
|
|
53
|
+
nextElement: HadronElement | null
|
|
54
|
+
);
|
|
55
|
+
uuid: string;
|
|
56
|
+
key: string;
|
|
57
|
+
currentKey: string;
|
|
58
|
+
parent: HadronDocument | HadronElement | null;
|
|
59
|
+
previousElement: HadronElement | null;
|
|
60
|
+
nextElement: HadronElement | null;
|
|
61
|
+
added: boolean;
|
|
62
|
+
removed: boolean;
|
|
63
|
+
type: TypeCastTypes;
|
|
64
|
+
currentType: TypeCastTypes;
|
|
65
|
+
currentTypeValid: boolean;
|
|
66
|
+
invalidTypeMessage?: string;
|
|
67
|
+
elements?: LinkedList<HadronElement>;
|
|
68
|
+
originalExpandableValue?: TypeCastMap[typeof this.type];
|
|
69
|
+
value?: TypeCastMap[typeof this.type];
|
|
70
|
+
currentValue: TypeCastMap[typeof this.type];
|
|
71
|
+
level: number;
|
|
72
|
+
bulkEdit(value: string): void;
|
|
73
|
+
cancel(): void;
|
|
74
|
+
edit(value: unknown): void;
|
|
75
|
+
changeType(newType: TypeCastTypes): void;
|
|
76
|
+
get(key: string): HadronElement | undefined;
|
|
77
|
+
at(i: number): HadronElement | undefined;
|
|
78
|
+
next(): HadronElement;
|
|
79
|
+
rename(key: string): void;
|
|
80
|
+
generateObject(): unknown;
|
|
81
|
+
generateOriginalObject(): unknown;
|
|
82
|
+
insertAfter(element: HadronElement, key: string, value: unknown): HadronElement;
|
|
83
|
+
insertEnd(key: string, value: unknown): HadronElement;
|
|
84
|
+
insertPlaceholder(): HadronElement;
|
|
85
|
+
insertSiblingPlaceholder(): HadronElement;
|
|
86
|
+
isAdded(): boolean;
|
|
87
|
+
isBlank(): boolean;
|
|
88
|
+
isCurrentTypeValid(): boolean;
|
|
89
|
+
setValid(): void;
|
|
90
|
+
setInvalid(value: unknown, newType: string, message: string): void;
|
|
91
|
+
isDuplicateKey(key: string): boolean;
|
|
92
|
+
isEdited(): boolean;
|
|
93
|
+
isLast(): boolean;
|
|
94
|
+
isRenamed(): boolean;
|
|
95
|
+
isRevertable(): boolean;
|
|
96
|
+
isRemovable(): boolean;
|
|
97
|
+
isNotActionable(): boolean;
|
|
98
|
+
isValueEditable(): boolean;
|
|
99
|
+
isParentEditable(): boolean;
|
|
100
|
+
isKeyEditable(): boolean;
|
|
101
|
+
isModified(): boolean;
|
|
102
|
+
isRemoved(): boolean;
|
|
103
|
+
isRoot(): false;
|
|
104
|
+
remove(): void;
|
|
105
|
+
revert(): void;
|
|
106
|
+
static Events: typeof HadronElementEvents;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
declare const HadronDocumentEvents: {
|
|
110
|
+
Cancel: 'Document::Cancel';
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
declare class HadronDocument extends EventEmitter {
|
|
114
|
+
constructor(doc: unknown, cloned: boolean);
|
|
115
|
+
uuid: string;
|
|
116
|
+
type: 'Document';
|
|
117
|
+
currentType: 'Document';
|
|
118
|
+
elements: LinkedList<HadronElement>;
|
|
119
|
+
cancel(): void;
|
|
120
|
+
apply(doc: unknown): void;
|
|
121
|
+
generateObject(): unknown;
|
|
122
|
+
generateOriginalObject(): unknown;
|
|
123
|
+
generateUpdateUnlessChangedInBackgroundQuery(
|
|
124
|
+
alwaysIncludeKeys: null | unknown
|
|
125
|
+
): { query: unknown; updateDoc: unknown };
|
|
126
|
+
get(key: string): HadronElement;
|
|
127
|
+
getChild(path: string[]): HadronElement;
|
|
128
|
+
getId(): unknown | null;
|
|
129
|
+
getOriginalKeysAndValuesForFieldsThatWereUpdated(
|
|
130
|
+
alwaysIncludeKeys: null | unknown
|
|
131
|
+
): unknown;
|
|
132
|
+
getOriginalKeysAndValuesForSpecifiedKeys(keys: unknown): unknown;
|
|
133
|
+
getSetUpdateForDocumentChanges(): unknown;
|
|
134
|
+
getStringId(): string;
|
|
135
|
+
getUnsetUpdateForDocumentChanges(): unknown;
|
|
136
|
+
insertPlaceholder(): HadronElement;
|
|
137
|
+
insertEnd(key: string, value: unknown): HadronElement;
|
|
138
|
+
insertBeginning(key: string, value: unknown): HadronElement;
|
|
139
|
+
insertAfter(
|
|
140
|
+
element: HadronElement,
|
|
141
|
+
key: string,
|
|
142
|
+
value: unknown
|
|
143
|
+
): HadronElement;
|
|
144
|
+
isAdded(): false;
|
|
145
|
+
isModified(): boolean;
|
|
146
|
+
isRemoved(): false;
|
|
147
|
+
isRoot(): true;
|
|
148
|
+
next(): void;
|
|
149
|
+
static Events: typeof HadronDocumentEvents;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export declare class Editor {
|
|
153
|
+
constructor(element: HadronElement);
|
|
154
|
+
element: HadronElement;
|
|
155
|
+
edit(value: unknown): void;
|
|
156
|
+
paste(value: string): void;
|
|
157
|
+
size(): number;
|
|
158
|
+
value(): unknown;
|
|
159
|
+
start(): void;
|
|
160
|
+
complete(): void;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
declare const ElementEditor: {
|
|
164
|
+
(element: HadronElement): {
|
|
165
|
+
Standard: Editor;
|
|
166
|
+
String: Editor;
|
|
167
|
+
Decimal128: Editor;
|
|
168
|
+
Date: Editor;
|
|
169
|
+
Double: Editor;
|
|
170
|
+
Int32: Editor;
|
|
171
|
+
Int64: Editor;
|
|
172
|
+
Null: Editor;
|
|
173
|
+
Undefined: Editor;
|
|
174
|
+
ObjectId: Editor;
|
|
175
|
+
};
|
|
176
|
+
DateEditor: typeof Editor;
|
|
177
|
+
StandardEditor: typeof Editor;
|
|
178
|
+
StringEditor: typeof Editor;
|
|
179
|
+
Decimal128Editor: typeof Editor;
|
|
180
|
+
DoubleEditor: typeof Editor;
|
|
181
|
+
Int32Editor: typeof Editor;
|
|
182
|
+
Int64Editor: typeof Editor;
|
|
183
|
+
NullEditor: typeof Editor;
|
|
184
|
+
UndefinedEditor: typeof Editor;
|
|
185
|
+
ObjectIdEditor: typeof Editor;
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
export default HadronDocument;
|
|
189
|
+
export { HadronDocumentEvents as DocumentEvents };
|
|
190
|
+
export { HadronElement as Element };
|
|
191
|
+
export { HadronElementEvents as ElementEvents };
|
|
192
|
+
export { ElementEditor };
|
package/lib/document.js
CHANGED
|
@@ -1,26 +1,42 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof";
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
4
|
|
|
5
|
-
function
|
|
5
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
6
6
|
|
|
7
|
-
function
|
|
7
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
8
|
+
|
|
9
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
8
10
|
|
|
9
11
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
12
|
|
|
11
|
-
function
|
|
13
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
14
|
+
|
|
15
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
16
|
+
|
|
17
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
18
|
+
|
|
19
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
20
|
+
|
|
21
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
22
|
+
|
|
23
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
12
24
|
|
|
13
25
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
14
26
|
|
|
15
27
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
16
28
|
|
|
29
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
30
|
+
|
|
31
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
32
|
+
|
|
17
33
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
18
34
|
|
|
19
35
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
20
36
|
|
|
21
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
37
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
22
38
|
|
|
23
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
39
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
24
40
|
|
|
25
41
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
26
42
|
|
|
@@ -36,6 +52,8 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
|
|
|
36
52
|
|
|
37
53
|
var EventEmitter = require('eventemitter3');
|
|
38
54
|
|
|
55
|
+
var uuid = require('uuid');
|
|
56
|
+
|
|
39
57
|
var Element = require('./element');
|
|
40
58
|
|
|
41
59
|
var LinkedList = Element.LinkedList;
|
|
@@ -75,18 +93,15 @@ var Document = /*#__PURE__*/function (_EventEmitter) {
|
|
|
75
93
|
_classCallCheck(this, Document);
|
|
76
94
|
|
|
77
95
|
_this = _super.call(this);
|
|
96
|
+
_this.uuid = uuid.v4();
|
|
78
97
|
_this.doc = doc;
|
|
79
98
|
_this.cloned = cloned || false;
|
|
80
99
|
_this.isUpdatable = true;
|
|
81
100
|
_this.elements = _this._generateElements();
|
|
101
|
+
_this.type = 'Document';
|
|
102
|
+
_this.currentType = 'Document';
|
|
82
103
|
return _this;
|
|
83
104
|
}
|
|
84
|
-
/**
|
|
85
|
-
* Generate the javascript object for this document.
|
|
86
|
-
*
|
|
87
|
-
* @returns {Object} The javascript object.
|
|
88
|
-
*/
|
|
89
|
-
|
|
90
105
|
|
|
91
106
|
_createClass(Document, [{
|
|
92
107
|
key: "cancel",
|
|
@@ -95,22 +110,52 @@ var Document = /*#__PURE__*/function (_EventEmitter) {
|
|
|
95
110
|
* Send cancel event.
|
|
96
111
|
*/
|
|
97
112
|
function cancel() {
|
|
98
|
-
|
|
99
|
-
|
|
113
|
+
// Cancel will remove elements from iterator, clone it before iterating
|
|
114
|
+
// otherwise we will skip items
|
|
115
|
+
for (var _i = 0, _Array$from = Array.from(this.elements); _i < _Array$from.length; _i++) {
|
|
116
|
+
var element = _Array$from[_i];
|
|
117
|
+
element.cancel();
|
|
118
|
+
}
|
|
100
119
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
120
|
+
this.emit(Events.Cancel);
|
|
121
|
+
}
|
|
122
|
+
}, {
|
|
123
|
+
key: "apply",
|
|
124
|
+
value: function apply(doc) {
|
|
125
|
+
var updatedKeys = [];
|
|
126
|
+
var prevKey = null;
|
|
127
|
+
|
|
128
|
+
for (var _i2 = 0, _Object$entries = Object.entries(doc); _i2 < _Object$entries.length; _i2++) {
|
|
129
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 2),
|
|
130
|
+
key = _Object$entries$_i[0],
|
|
131
|
+
value = _Object$entries$_i[1];
|
|
132
|
+
|
|
133
|
+
if (this.get(key)) {
|
|
134
|
+
this.get(key).edit(value);
|
|
135
|
+
} else if (prevKey) {
|
|
136
|
+
this.insertAfter(this.get(prevKey), key, value);
|
|
137
|
+
} else {
|
|
138
|
+
this.insertBeginning(key, value);
|
|
105
139
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
_iterator.f();
|
|
140
|
+
|
|
141
|
+
prevKey = key;
|
|
142
|
+
updatedKeys.push(key);
|
|
110
143
|
}
|
|
111
144
|
|
|
112
|
-
this.
|
|
145
|
+
for (var _i3 = 0, _arr2 = _toConsumableArray(this.elements); _i3 < _arr2.length; _i3++) {
|
|
146
|
+
var el = _arr2[_i3];
|
|
147
|
+
|
|
148
|
+
if (!updatedKeys.includes(el.currentKey)) {
|
|
149
|
+
el.remove();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
113
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Generate the javascript object for this document.
|
|
155
|
+
*
|
|
156
|
+
* @returns {Object} The javascript object.
|
|
157
|
+
*/
|
|
158
|
+
|
|
114
159
|
}, {
|
|
115
160
|
key: "generateObject",
|
|
116
161
|
value: function generateObject() {
|
|
@@ -245,12 +290,12 @@ var Document = /*#__PURE__*/function (_EventEmitter) {
|
|
|
245
290
|
var object = {};
|
|
246
291
|
|
|
247
292
|
if (this.elements) {
|
|
248
|
-
var
|
|
249
|
-
|
|
293
|
+
var _iterator = _createForOfIteratorHelper(this.elements),
|
|
294
|
+
_step;
|
|
250
295
|
|
|
251
296
|
try {
|
|
252
|
-
for (
|
|
253
|
-
var element =
|
|
297
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
298
|
+
var element = _step.value;
|
|
254
299
|
|
|
255
300
|
if (element.isModified() && !element.isAdded() || alwaysIncludeKeys && element.key in alwaysIncludeKeys) {
|
|
256
301
|
// Using `.key` instead of `.currentKey` to ensure we look at
|
|
@@ -267,9 +312,9 @@ var Document = /*#__PURE__*/function (_EventEmitter) {
|
|
|
267
312
|
}
|
|
268
313
|
}
|
|
269
314
|
} catch (err) {
|
|
270
|
-
|
|
315
|
+
_iterator.e(err);
|
|
271
316
|
} finally {
|
|
272
|
-
|
|
317
|
+
_iterator.f();
|
|
273
318
|
}
|
|
274
319
|
}
|
|
275
320
|
|
|
@@ -293,12 +338,12 @@ var Document = /*#__PURE__*/function (_EventEmitter) {
|
|
|
293
338
|
var object = {};
|
|
294
339
|
|
|
295
340
|
if (this.elements) {
|
|
296
|
-
var
|
|
297
|
-
|
|
341
|
+
var _iterator2 = _createForOfIteratorHelper(this.elements),
|
|
342
|
+
_step2;
|
|
298
343
|
|
|
299
344
|
try {
|
|
300
|
-
for (
|
|
301
|
-
var element =
|
|
345
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
346
|
+
var element = _step2.value;
|
|
302
347
|
|
|
303
348
|
if (element.key in keys) {
|
|
304
349
|
// Using `.key` instead of `.currentKey` to ensure we look at
|
|
@@ -307,9 +352,9 @@ var Document = /*#__PURE__*/function (_EventEmitter) {
|
|
|
307
352
|
}
|
|
308
353
|
}
|
|
309
354
|
} catch (err) {
|
|
310
|
-
|
|
355
|
+
_iterator2.e(err);
|
|
311
356
|
} finally {
|
|
312
|
-
|
|
357
|
+
_iterator2.f();
|
|
313
358
|
}
|
|
314
359
|
}
|
|
315
360
|
|
|
@@ -328,12 +373,12 @@ var Document = /*#__PURE__*/function (_EventEmitter) {
|
|
|
328
373
|
var object = {};
|
|
329
374
|
|
|
330
375
|
if (this.elements) {
|
|
331
|
-
var
|
|
332
|
-
|
|
376
|
+
var _iterator3 = _createForOfIteratorHelper(this.elements),
|
|
377
|
+
_step3;
|
|
333
378
|
|
|
334
379
|
try {
|
|
335
|
-
for (
|
|
336
|
-
var element =
|
|
380
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
381
|
+
var element = _step3.value;
|
|
337
382
|
|
|
338
383
|
if (!element.isRemoved() && element.currentKey !== '' && element.isModified()) {
|
|
339
384
|
// Include the full modified element.
|
|
@@ -347,9 +392,9 @@ var Document = /*#__PURE__*/function (_EventEmitter) {
|
|
|
347
392
|
}
|
|
348
393
|
}
|
|
349
394
|
} catch (err) {
|
|
350
|
-
|
|
395
|
+
_iterator3.e(err);
|
|
351
396
|
} finally {
|
|
352
|
-
|
|
397
|
+
_iterator3.f();
|
|
353
398
|
}
|
|
354
399
|
}
|
|
355
400
|
|
|
@@ -387,12 +432,12 @@ var Document = /*#__PURE__*/function (_EventEmitter) {
|
|
|
387
432
|
var object = {};
|
|
388
433
|
|
|
389
434
|
if (this.elements) {
|
|
390
|
-
var
|
|
391
|
-
|
|
435
|
+
var _iterator4 = _createForOfIteratorHelper(this.elements),
|
|
436
|
+
_step4;
|
|
392
437
|
|
|
393
438
|
try {
|
|
394
|
-
for (
|
|
395
|
-
var element =
|
|
439
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
440
|
+
var element = _step4.value;
|
|
396
441
|
|
|
397
442
|
if (!element.isAdded() && element.isRemoved() && element.key !== '') {
|
|
398
443
|
object[element.key] = true;
|
|
@@ -404,9 +449,9 @@ var Document = /*#__PURE__*/function (_EventEmitter) {
|
|
|
404
449
|
}
|
|
405
450
|
}
|
|
406
451
|
} catch (err) {
|
|
407
|
-
|
|
452
|
+
_iterator4.e(err);
|
|
408
453
|
} finally {
|
|
409
|
-
|
|
454
|
+
_iterator4.f();
|
|
410
455
|
}
|
|
411
456
|
}
|
|
412
457
|
|
|
@@ -432,11 +477,31 @@ var Document = /*#__PURE__*/function (_EventEmitter) {
|
|
|
432
477
|
* @returns {Element} The new element.
|
|
433
478
|
*/
|
|
434
479
|
|
|
480
|
+
}, {
|
|
481
|
+
key: "insertBeginning",
|
|
482
|
+
value: function insertBeginning(key, value) {
|
|
483
|
+
var newElement = this.elements.insertBeginning(key, value, true, this);
|
|
484
|
+
|
|
485
|
+
newElement._bubbleUp(Element.Events.Added, newElement, this);
|
|
486
|
+
|
|
487
|
+
return newElement;
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Add a new element to this document.
|
|
491
|
+
*
|
|
492
|
+
* @param {String} key - The element key.
|
|
493
|
+
* @param {Object} value - The value.
|
|
494
|
+
*
|
|
495
|
+
* @returns {Element} The new element.
|
|
496
|
+
*/
|
|
497
|
+
|
|
435
498
|
}, {
|
|
436
499
|
key: "insertEnd",
|
|
437
500
|
value: function insertEnd(key, value) {
|
|
438
501
|
var newElement = this.elements.insertEnd(key, value, true, this);
|
|
439
|
-
|
|
502
|
+
|
|
503
|
+
newElement._bubbleUp(Element.Events.Added, newElement, this);
|
|
504
|
+
|
|
440
505
|
return newElement;
|
|
441
506
|
}
|
|
442
507
|
/**
|
|
@@ -453,7 +518,9 @@ var Document = /*#__PURE__*/function (_EventEmitter) {
|
|
|
453
518
|
key: "insertAfter",
|
|
454
519
|
value: function insertAfter(element, key, value) {
|
|
455
520
|
var newElement = this.elements.insertAfter(element, key, value, true, this);
|
|
456
|
-
|
|
521
|
+
|
|
522
|
+
newElement._bubbleUp(Element.Events.Added, newElement, this);
|
|
523
|
+
|
|
457
524
|
return newElement;
|
|
458
525
|
}
|
|
459
526
|
/**
|
|
@@ -476,21 +543,21 @@ var Document = /*#__PURE__*/function (_EventEmitter) {
|
|
|
476
543
|
}, {
|
|
477
544
|
key: "isModified",
|
|
478
545
|
value: function isModified() {
|
|
479
|
-
var
|
|
480
|
-
|
|
546
|
+
var _iterator5 = _createForOfIteratorHelper(this.elements),
|
|
547
|
+
_step5;
|
|
481
548
|
|
|
482
549
|
try {
|
|
483
|
-
for (
|
|
484
|
-
var element =
|
|
550
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
551
|
+
var element = _step5.value;
|
|
485
552
|
|
|
486
553
|
if (element.isModified()) {
|
|
487
554
|
return true;
|
|
488
555
|
}
|
|
489
556
|
}
|
|
490
557
|
} catch (err) {
|
|
491
|
-
|
|
558
|
+
_iterator5.e(err);
|
|
492
559
|
} finally {
|
|
493
|
-
|
|
560
|
+
_iterator5.f();
|
|
494
561
|
}
|
|
495
562
|
|
|
496
563
|
return false;
|