blob: 001cdb908c2e1615882530bba4de90536bae602e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ContainerReflection = void 0;
const abstract_1 = require("./abstract");
const ReflectionCategory_1 = require("../ReflectionCategory");
const ReflectionGroup_1 = require("../ReflectionGroup");
class ContainerReflection extends abstract_1.Reflection {
/**
* Return a list of all children of a certain kind.
*
* @param kind The desired kind of children.
* @returns An array containing all children with the desired kind.
*/
getChildrenByKind(kind) {
return (this.children || []).filter((child) => child.kindOf(kind));
}
traverse(callback) {
for (const child of this.children?.slice() || []) {
if (callback(child, abstract_1.TraverseProperty.Children) === false) {
return;
}
}
}
toObject(serializer) {
return {
...super.toObject(serializer),
children: serializer.toObjectsOptional(this.children),
groups: serializer.toObjectsOptional(this.groups),
categories: serializer.toObjectsOptional(this.categories),
};
}
fromObject(de, obj) {
super.fromObject(de, obj);
this.children = de.reviveMany(obj.children, (child) => de.constructReflection(child));
this.groups = de.reviveMany(obj.groups, (group) => new ReflectionGroup_1.ReflectionGroup(group.title));
this.categories = de.reviveMany(obj.categories, (cat) => new ReflectionCategory_1.ReflectionCategory(cat.title));
}
}
exports.ContainerReflection = ContainerReflection;
|