@lionweb/class-core 0.7.0-beta.9 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -1
- package/README.md +6 -6
- package/dist/LionCore_builtins.g.d.ts +2 -2
- package/dist/LionCore_builtins.g.d.ts.map +1 -1
- package/dist/LionCore_builtins.g.js +1 -1
- package/dist/LionCore_builtins.g.js.map +1 -1
- package/dist/base-types.d.ts +7 -11
- package/dist/base-types.d.ts.map +1 -1
- package/dist/base-types.js +3 -28
- package/dist/base-types.js.map +1 -1
- package/dist/convenience.d.ts +10 -9
- package/dist/convenience.d.ts.map +1 -1
- package/dist/convenience.js +12 -11
- package/dist/convenience.js.map +1 -1
- package/dist/deltas/appliers.d.ts +5 -4
- package/dist/deltas/appliers.d.ts.map +1 -1
- package/dist/deltas/appliers.js +369 -163
- package/dist/deltas/appliers.js.map +1 -1
- package/dist/deltas/compositor.d.ts +51 -0
- package/dist/deltas/compositor.d.ts.map +1 -0
- package/dist/deltas/compositor.js +95 -0
- package/dist/deltas/compositor.js.map +1 -0
- package/dist/deltas/index.d.ts +2 -1
- package/dist/deltas/index.d.ts.map +1 -1
- package/dist/deltas/index.js +2 -1
- package/dist/deltas/index.js.map +1 -1
- package/dist/deltas/inverters.d.ts.map +1 -1
- package/dist/deltas/inverters.js +91 -28
- package/dist/deltas/inverters.js.map +1 -1
- package/dist/deltas/receivers.d.ts +39 -0
- package/dist/deltas/receivers.d.ts.map +1 -0
- package/dist/deltas/receivers.js +60 -0
- package/dist/deltas/receivers.js.map +1 -0
- package/dist/deltas/serialization/deserializer.g.d.ts.map +1 -1
- package/dist/deltas/serialization/deserializer.g.js +167 -59
- package/dist/deltas/serialization/deserializer.g.js.map +1 -1
- package/dist/deltas/serialization/serializer-helpers.d.ts +1 -1
- package/dist/deltas/serialization/serializer-helpers.d.ts.map +1 -1
- package/dist/deltas/serialization/serializer-helpers.js +3 -4
- package/dist/deltas/serialization/serializer-helpers.js.map +1 -1
- package/dist/deltas/serialization/serializer.g.d.ts +2 -2
- package/dist/deltas/serialization/serializer.g.d.ts.map +1 -1
- package/dist/deltas/serialization/serializer.g.js +186 -47
- package/dist/deltas/serialization/serializer.g.js.map +1 -1
- package/dist/deltas/serialization/types.g.d.ts +156 -43
- package/dist/deltas/serialization/types.g.d.ts.map +1 -1
- package/dist/deltas/types.g.d.ts +155 -55
- package/dist/deltas/types.g.d.ts.map +1 -1
- package/dist/deltas/types.g.js +170 -57
- package/dist/deltas/types.g.js.map +1 -1
- package/dist/deserializer.d.ts +6 -6
- package/dist/deserializer.d.ts.map +1 -1
- package/dist/deserializer.js +16 -27
- package/dist/deserializer.js.map +1 -1
- package/dist/duplicator.d.ts.map +1 -1
- package/dist/duplicator.js.map +1 -1
- package/dist/factory.d.ts +10 -2
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +25 -16
- package/dist/factory.js.map +1 -1
- package/dist/id-mapping.d.ts +31 -3
- package/dist/id-mapping.d.ts.map +1 -1
- package/dist/id-mapping.js +46 -14
- package/dist/id-mapping.js.map +1 -1
- package/dist/serializer.d.ts.map +1 -1
- package/dist/textualizer.d.ts +1 -1
- package/dist/textualizer.d.ts.map +1 -1
- package/dist/textualizer.js +1 -1
- package/dist/textualizer.js.map +1 -1
- package/dist/value-managers/annotations.d.ts +5 -0
- package/dist/value-managers/annotations.d.ts.map +1 -1
- package/dist/value-managers/annotations.js +31 -3
- package/dist/value-managers/annotations.js.map +1 -1
- package/dist/value-managers/base.d.ts +2 -2
- package/dist/value-managers/base.d.ts.map +1 -1
- package/dist/value-managers/base.js +4 -4
- package/dist/value-managers/base.js.map +1 -1
- package/dist/value-managers/containments.d.ts +4 -1
- package/dist/value-managers/containments.d.ts.map +1 -1
- package/dist/value-managers/containments.js +151 -20
- package/dist/value-managers/containments.js.map +1 -1
- package/dist/value-managers/properties.d.ts.map +1 -1
- package/dist/value-managers/properties.js +1 -0
- package/dist/value-managers/properties.js.map +1 -1
- package/dist/value-managers/references.d.ts +3 -0
- package/dist/value-managers/references.d.ts.map +1 -1
- package/dist/value-managers/references.js +26 -8
- package/dist/value-managers/references.js.map +1 -1
- package/package.json +34 -37
- package/src/LionCore_builtins.g.ts +2 -2
- package/src/base-types.ts +6 -32
- package/src/convenience.ts +15 -14
- package/src/deltas/appliers.ts +377 -177
- package/src/deltas/compositor.ts +107 -0
- package/src/deltas/index.ts +3 -1
- package/src/deltas/inverters.ts +108 -36
- package/src/deltas/receivers.ts +92 -0
- package/src/deltas/serialization/deserializer.g.ts +185 -64
- package/src/deltas/serialization/serializer-helpers.ts +3 -10
- package/src/deltas/serialization/serializer.g.ts +242 -63
- package/src/deltas/serialization/types.g.ts +190 -51
- package/src/deltas/types.g.ts +190 -51
- package/src/deserializer.ts +32 -43
- package/src/duplicator.ts +1 -1
- package/src/factory.ts +31 -17
- package/src/id-mapping.ts +43 -5
- package/src/textualizer.ts +1 -1
- package/src/value-managers/annotations.ts +28 -2
- package/src/value-managers/base.ts +4 -4
- package/src/value-managers/containments.ts +144 -20
- package/src/value-managers/properties.ts +1 -0
- package/src/value-managers/references.ts +28 -8
- package/dist/deltas/handlers.d.ts +0 -17
- package/dist/deltas/handlers.d.ts.map +0 -1
- package/dist/deltas/handlers.js +0 -43
- package/dist/deltas/handlers.js.map +0 -1
- package/src/deltas/handlers.ts +0 -64
|
@@ -19,7 +19,12 @@ import { Reference, SingleRef } from "@lionweb/core"
|
|
|
19
19
|
import { action, observable } from "mobx"
|
|
20
20
|
|
|
21
21
|
import { INodeBase } from "../base-types.js"
|
|
22
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
EntryMovedInSameReferenceDelta,
|
|
24
|
+
ReferenceAddedDelta,
|
|
25
|
+
ReferenceChangedDelta,
|
|
26
|
+
ReferenceDeletedDelta
|
|
27
|
+
} from "../deltas/index.js"
|
|
23
28
|
import { checkIndex, FeatureValueManager } from "./base.js"
|
|
24
29
|
|
|
25
30
|
|
|
@@ -37,6 +42,7 @@ export abstract class ReferenceValueManager<T extends INodeBase> extends Feature
|
|
|
37
42
|
/**
|
|
38
43
|
* Adds the given target to the reference.
|
|
39
44
|
* For a single-valued reference, this replaces an already-present target.
|
|
45
|
+
* **Note**: this method predominantly exists for the benefit of the deserializer and duplicator!
|
|
40
46
|
*/
|
|
41
47
|
abstract addDirectly(newTarget: SingleRef<T> | undefined): void;
|
|
42
48
|
|
|
@@ -89,18 +95,18 @@ export class OptionalSingleReferenceValueManager<T extends INodeBase> extends Si
|
|
|
89
95
|
return
|
|
90
96
|
}
|
|
91
97
|
if (newTarget === undefined) {
|
|
92
|
-
this.
|
|
98
|
+
this.setDirectly(undefined);
|
|
93
99
|
if (oldTarget === undefined) {
|
|
94
100
|
// (nothing)
|
|
95
101
|
} else {
|
|
96
102
|
this.emitDelta(() => new ReferenceDeletedDelta(this.container, this.reference, 0, oldTarget));
|
|
97
103
|
}
|
|
98
104
|
} else {
|
|
99
|
-
this.
|
|
105
|
+
this.setDirectly(newTarget);
|
|
100
106
|
if (oldTarget === undefined) {
|
|
101
107
|
this.emitDelta(() => new ReferenceAddedDelta(this.container, this.reference, 0, newTarget));
|
|
102
108
|
} else {
|
|
103
|
-
this.emitDelta(() => new
|
|
109
|
+
this.emitDelta(() => new ReferenceChangedDelta(this.container, this.reference, 0, newTarget, oldTarget));
|
|
104
110
|
}
|
|
105
111
|
}
|
|
106
112
|
}
|
|
@@ -132,11 +138,11 @@ export class RequiredSingleReferenceValueManager<T extends INodeBase> extends Si
|
|
|
132
138
|
if (newTarget === undefined) {
|
|
133
139
|
this.throwOnUnset();
|
|
134
140
|
} else {
|
|
135
|
-
this.
|
|
141
|
+
this.setDirectly(newTarget);
|
|
136
142
|
if (oldTarget === undefined) {
|
|
137
143
|
this.emitDelta(() => new ReferenceAddedDelta(this.container, this.reference, 0, newTarget));
|
|
138
144
|
} else {
|
|
139
|
-
this.emitDelta(() => new
|
|
145
|
+
this.emitDelta(() => new ReferenceChangedDelta(this.container, this.reference, 0, newTarget, oldTarget));
|
|
140
146
|
}
|
|
141
147
|
}
|
|
142
148
|
}
|
|
@@ -158,7 +164,7 @@ export abstract class MultiReferenceValueManager<T extends INodeBase> extends Re
|
|
|
158
164
|
}
|
|
159
165
|
|
|
160
166
|
get(): SingleRef<T>[] {
|
|
161
|
-
return this.getDirectly().slice();
|
|
167
|
+
return this.getDirectly().slice(); // make defensive copy
|
|
162
168
|
}
|
|
163
169
|
|
|
164
170
|
isSet(): boolean {
|
|
@@ -194,6 +200,11 @@ export abstract class MultiReferenceValueManager<T extends INodeBase> extends Re
|
|
|
194
200
|
|
|
195
201
|
abstract remove(targetToRemove: SingleRef<T>): void;
|
|
196
202
|
|
|
203
|
+
@action removeAtIndexDirectly(index: number): SingleRef<T> {
|
|
204
|
+
checkIndex(index, this.targets.length, false);
|
|
205
|
+
return this.targets.splice(index, 1)[0];
|
|
206
|
+
}
|
|
207
|
+
|
|
197
208
|
@action moveDirectly(oldIndex: number, newIndex: number): SingleRef<T> | undefined {
|
|
198
209
|
checkIndex(oldIndex, this.targets.length, false);
|
|
199
210
|
checkIndex(newIndex, this.targets.length, false);
|
|
@@ -208,7 +219,16 @@ export abstract class MultiReferenceValueManager<T extends INodeBase> extends Re
|
|
|
208
219
|
@action move(oldIndex: number, newIndex: number) {
|
|
209
220
|
const target = this.moveDirectly(oldIndex, newIndex);
|
|
210
221
|
if (target !== undefined) {
|
|
211
|
-
this.emitDelta(() => new
|
|
222
|
+
this.emitDelta(() => new EntryMovedInSameReferenceDelta(this.container, this.reference, oldIndex, newIndex, target));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
@action moveAndReplaceDirectly(oldIndex: number, newIndex: number) {
|
|
227
|
+
checkIndex(oldIndex, this.targets.length, false);
|
|
228
|
+
checkIndex(newIndex, this.targets.length, false);
|
|
229
|
+
if (oldIndex !== newIndex) {
|
|
230
|
+
this.targets.splice(newIndex, 1, this.targets[oldIndex]);
|
|
231
|
+
this.targets.splice(oldIndex, 1);
|
|
212
232
|
}
|
|
213
233
|
}
|
|
214
234
|
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { IDelta } from "./base.js";
|
|
2
|
-
/**
|
|
3
|
-
* A type for functions that handle deltas.
|
|
4
|
-
*/
|
|
5
|
-
export type DeltaHandler = (delta: IDelta) => void;
|
|
6
|
-
export declare const collectingDeltaHandler: (printSerializations?: boolean) => [DeltaHandler, IDelta[]];
|
|
7
|
-
/**
|
|
8
|
-
* An interface for {@link DeltaHandler delta handlers} that can be switched on and off — “latching”.
|
|
9
|
-
*/
|
|
10
|
-
export interface LatchingDeltaHandler extends DeltaHandler {
|
|
11
|
-
latch(emitDeltas: boolean): void;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* @return a latching version of the given {@link DeltaHandler delta handler}.
|
|
15
|
-
*/
|
|
16
|
-
export declare const latching: (handleDelta: DeltaHandler) => LatchingDeltaHandler;
|
|
17
|
-
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/deltas/handlers.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAIlC;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEnD,eAAO,MAAM,sBAAsB,qCAAkC,CAAC,YAAY,EAAE,MAAM,EAAE,CAS3F,CAAC;AAGF;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACtD,KAAK,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;CACpC;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,gBAAiB,YAAY,KAAG,oBAcpD,CAAC"}
|
package/dist/deltas/handlers.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
// Copyright 2025 TRUMPF Laser SE and other contributors
|
|
2
|
-
//
|
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License")
|
|
4
|
-
// you may not use this file except in compliance with the License.
|
|
5
|
-
// You may obtain a copy of the License at
|
|
6
|
-
//
|
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
//
|
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
// See the License for the specific language governing permissions and
|
|
13
|
-
// limitations under the License.
|
|
14
|
-
//
|
|
15
|
-
// SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
|
|
16
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
17
|
-
import { serializeDelta } from "./serialization/index.js";
|
|
18
|
-
export const collectingDeltaHandler = (printSerializations = false) => {
|
|
19
|
-
const deltas = [];
|
|
20
|
-
const handleDelta = (delta) => {
|
|
21
|
-
deltas.push(delta);
|
|
22
|
-
if (printSerializations) {
|
|
23
|
-
console.log(JSON.stringify(serializeDelta(delta), null, 4));
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
return [handleDelta, deltas];
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* @return a latching version of the given {@link DeltaHandler delta handler}.
|
|
30
|
-
*/
|
|
31
|
-
export const latching = (handleDelta) => {
|
|
32
|
-
let emitDeltas = false;
|
|
33
|
-
return Object.assign((delta) => {
|
|
34
|
-
if (emitDeltas) {
|
|
35
|
-
handleDelta(delta);
|
|
36
|
-
}
|
|
37
|
-
}, {
|
|
38
|
-
latch(emitDeltas_) {
|
|
39
|
-
emitDeltas = emitDeltas_;
|
|
40
|
-
},
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=handlers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/deltas/handlers.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,iEAAiE;AACjE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,sCAAsC;AAGtC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAQzD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,mBAAmB,GAAG,KAAK,EAA4B,EAAE;IAC5F,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAiB,CAAC,KAAK,EAAE,EAAE;QACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,mBAAmB,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;IACL,CAAC,CAAC;IACF,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC;AAUF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,WAAyB,EAAwB,EAAE;IACxE,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,OAAO,MAAM,CAAC,MAAM,CAChB,CAAC,KAAa,EAAE,EAAE;QACd,IAAI,UAAU,EAAE,CAAC;YACb,WAAW,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACL,CAAC,EACD;QACI,KAAK,CAAC,WAAoB;YACtB,UAAU,GAAG,WAAW,CAAC;QAC7B,CAAC;KACJ,CACJ,CAAC;AACN,CAAC,CAAC"}
|
package/src/deltas/handlers.ts
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
// Copyright 2025 TRUMPF Laser SE and other contributors
|
|
2
|
-
//
|
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License")
|
|
4
|
-
// you may not use this file except in compliance with the License.
|
|
5
|
-
// You may obtain a copy of the License at
|
|
6
|
-
//
|
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
//
|
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
// See the License for the specific language governing permissions and
|
|
13
|
-
// limitations under the License.
|
|
14
|
-
//
|
|
15
|
-
// SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
|
|
16
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
17
|
-
|
|
18
|
-
import { IDelta } from "./base.js"
|
|
19
|
-
import { serializeDelta } from "./serialization/index.js"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* A type for functions that handle deltas.
|
|
24
|
-
*/
|
|
25
|
-
export type DeltaHandler = (delta: IDelta) => void;
|
|
26
|
-
|
|
27
|
-
export const collectingDeltaHandler = (printSerializations = false): [DeltaHandler, IDelta[]] => {
|
|
28
|
-
const deltas: IDelta[] = [];
|
|
29
|
-
const handleDelta: DeltaHandler = (delta) => {
|
|
30
|
-
deltas.push(delta);
|
|
31
|
-
if (printSerializations) {
|
|
32
|
-
console.log(JSON.stringify(serializeDelta(delta), null, 4));
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
return [handleDelta, deltas];
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* An interface for {@link DeltaHandler delta handlers} that can be switched on and off — “latching”.
|
|
41
|
-
*/
|
|
42
|
-
export interface LatchingDeltaHandler extends DeltaHandler {
|
|
43
|
-
latch(emitDeltas: boolean): void;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* @return a latching version of the given {@link DeltaHandler delta handler}.
|
|
48
|
-
*/
|
|
49
|
-
export const latching = (handleDelta: DeltaHandler): LatchingDeltaHandler => {
|
|
50
|
-
let emitDeltas = false;
|
|
51
|
-
return Object.assign(
|
|
52
|
-
(delta: IDelta) => {
|
|
53
|
-
if (emitDeltas) {
|
|
54
|
-
handleDelta(delta);
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
latch(emitDeltas_: boolean) {
|
|
59
|
-
emitDeltas = emitDeltas_;
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
);
|
|
63
|
-
};
|
|
64
|
-
|