UNPKG

vulcain-corejs

Version:
35 lines (33 loc) 1.45 kB
"use strict"; // Copyright (c) Zenasoft. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. const dynamicProperty_1 = require("./dynamicProperty"); const chainedDynamicProperty_1 = require("./chainedDynamicProperty"); class PropertiesFactory { constructor(_properties) { this._properties = _properties; } add(name, prop) { this._properties.addProperty(name, prop); } asProperty(value, name, dontCheck = false) { if (!dontCheck && name && this._properties.getProperty(name)) { throw new Error("Duplicate property name"); } let p = new dynamicProperty_1.DynamicProperty(this._properties, name, value); if (name) this.add(name, p); p.set(value); // To send propertychanged return p; } asChainedProperty(defaultValue, name, fallbackPropertyNames) { fallbackPropertyNames = fallbackPropertyNames.filter(n => !!n); if (fallbackPropertyNames.length === 0 || !name) throw new Error("You must provide at least one fallback property name"); let properties = [name].concat(fallbackPropertyNames); let p = new chainedDynamicProperty_1.ChainedDynamicProperty(this._properties, properties, defaultValue); return p; } } exports.PropertiesFactory = PropertiesFactory; //# sourceMappingURL=propertiesFactory.js.map