@umbraco/json-models-builders
Version:
Builders and models for Umbraco Sites
106 lines • 3.39 kB
JavaScript
"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