UNPKG

@umbraco/json-models-builders

Version:
106 lines 3.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MemberTypeBuilder = void 0; const memberTypeCompositionBuilder_1 = require("./memberTypeCompositionBuilder"); const memberTypeContainerBuilder_1 = require("./memberTypeContainerBuilder"); const memberTypePropertyBuilder_1 = require("./memberTypePropertyBuilder"); class MemberTypeBuilder { alias; name; description; icon; allowedAsRoot; variesByCulture; variesBySegment; collectionId; isElement; memberTypePropertyBuilder; memberTypeContainerBuilder; id; memberTypeCompositionBuilder; constructor() { this.memberTypePropertyBuilder = []; this.memberTypeContainerBuilder = []; this.memberTypeCompositionBuilder = []; } withAlias(alias) { this.alias = alias; return this; } withName(name) { this.name = name; return this; } withDescription(description) { this.description = description; return this; } withIcon(icon) { this.icon = icon; return this; } withAllowedAsRoot(allowedAsRoot) { this.allowedAsRoot = allowedAsRoot; return this; } withVariesByCulture(variesByCulture) { this.variesByCulture = variesByCulture; return this; } withVariesBySegment(variesBySegment) { this.variesBySegment = variesBySegment; return this; } withIsElement(isElement) { this.isElement = isElement; return this; } addProperty() { const builder = new memberTypePropertyBuilder_1.MemberTypePropertyBuilder(this); this.memberTypePropertyBuilder.push(builder); return builder; } addContainer() { const builder = new memberTypeContainerBuilder_1.MemberTypeContainerBuilder(this); this.memberTypeContainerBuilder.push(builder); return builder; } addComposition() { const builder = new memberTypeCompositionBuilder_1.MemberTypeCompositionBuilder(this); this.memberTypeCompositionBuilder.push(builder); return builder; } withId(id) { this.id = id; return this; } build() { if (this.id == null) { const crypto = require('crypto'); this.id = crypto.randomUUID(); } return { alias: this.alias || "", name: this.name || "", description: this.description || "", icon: this.icon || "icon-user", allowedAsRoot: this.allowedAsRoot || false, variesByCulture: this.variesByCulture || false, variesBySegment: this.variesBySegment || false, collection: this.collectionId ? { id: this.collectionId } : null, isElement: this.isElement || false, properties: this.memberTypePropertyBuilder.map((builder) => { return builder.build(); }) || [], containers: this.memberTypeContainerBuilder.map((builder) => { return builder.build(); }) || [], id: this.id, compositions: this.memberTypeCompositionBuilder.map((builder) => { return builder.build(); }) || [] }; } } exports.MemberTypeBuilder = MemberTypeBuilder; //# sourceMappingURL=memberTypeBuilder.js.map