UNPKG

@activejs/core

Version:

Pragmatic, Reactive State Management for JavaScript Apps

45 lines 5.9 kB
import { GenericUnit } from './generic-unit'; import { BoolUnit } from './bool-unit'; import { NumUnit } from './num-unit'; import { StringUnit } from './string-unit'; import { ListUnit } from './list-unit'; import { DictUnit } from './dict-unit'; import { isDict } from '../utils/funcs'; /** * @hidden * @experimental Meaning, It can disappear in the next version. * * An experimental short-hand function for Unit creation. * It automatically chooses an appropriate type of Unit depending on the * provided `initialValue`. * * For a `boolean` value, {@link BoolUnit} will be selected. \ * For a `number` value, {@link NumUnit} will be selected. \ * For a `string` value, {@link StringUnit} will be selected. \ * For an `array` value, {@link ListUnit} will be selected. \ * For a simple `dictionary object`, a {@link DictUnit} will be selected. \ * For every other value, {@link GenericUnit} will be selected. \ * * @param initialValue Initial value of the Unit. * @param config The configuration for the automatically selected Unit. */ export function createUnit(initialValue, config) { const unitConfig = Object.assign(Object.assign({}, config), { initialValue }); const typeOfValue = typeof initialValue; switch (true) { case initialValue == null: default: return new GenericUnit(unitConfig); case typeOfValue === 'boolean': return new BoolUnit(unitConfig); case typeOfValue === 'number': return new NumUnit(unitConfig); case typeOfValue === 'string': return new StringUnit(unitConfig); case Array.isArray(initialValue): return new ListUnit(unitConfig); case isDict(initialValue): return new DictUnit(unitConfig); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRvcnMuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvYWN0aXZlanMvYWN0aXZlanMvcGFja2FnZXMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvY3JlYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FDeEIsWUFBZSxFQUNmLE1BQStDO0lBRS9DLE1BQU0sVUFBVSxtQ0FBc0IsTUFBTSxLQUFFLFlBQVksR0FBQyxDQUFDO0lBQzVELE1BQU0sV0FBVyxHQUFHLE9BQU8sWUFBWSxDQUFDO0lBRXhDLFFBQVEsSUFBSSxFQUFFO1FBQ1osS0FBSyxZQUFZLElBQUksSUFBSSxDQUFDO1FBQzFCO1lBQ0UsT0FBTyxJQUFJLFdBQVcsQ0FBQyxVQUFpQixDQUFRLENBQUM7UUFDbkQsS0FBSyxXQUFXLEtBQUssU0FBUztZQUM1QixPQUFPLElBQUksUUFBUSxDQUFDLFVBQWlCLENBQVEsQ0FBQztRQUNoRCxLQUFLLFdBQVcsS0FBSyxRQUFRO1lBQzNCLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBaUIsQ0FBUSxDQUFDO1FBQy9DLEtBQUssV0FBVyxLQUFLLFFBQVE7WUFDM0IsT0FBTyxJQUFJLFVBQVUsQ0FBQyxVQUFpQixDQUFRLENBQUM7UUFDbEQsS0FBSyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUM5QixPQUFPLElBQUksUUFBUSxDQUFDLFVBQWlCLENBQVEsQ0FBQztRQUNoRCxLQUFLLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDdkIsT0FBTyxJQUFJLFFBQVEsQ0FBQyxVQUFpQixDQUFRLENBQUM7S0FDakQ7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtHZW5lcmljVW5pdH0gZnJvbSAnLi9nZW5lcmljLXVuaXQnO1xuaW1wb3J0IHtCb29sVW5pdH0gZnJvbSAnLi9ib29sLXVuaXQnO1xuaW1wb3J0IHtOdW1Vbml0fSBmcm9tICcuL251bS11bml0JztcbmltcG9ydCB7U3RyaW5nVW5pdH0gZnJvbSAnLi9zdHJpbmctdW5pdCc7XG5pbXBvcnQge0xpc3RVbml0fSBmcm9tICcuL2xpc3QtdW5pdCc7XG5pbXBvcnQge0RpY3RVbml0fSBmcm9tICcuL2RpY3QtdW5pdCc7XG5pbXBvcnQge2lzRGljdH0gZnJvbSAnLi4vdXRpbHMvZnVuY3MnO1xuaW1wb3J0IHtVbml0Q29uZmlnLCBWYWx1ZVRvVW5pdFR5cGV9IGZyb20gJy4uL21vZGVscyc7XG5cbi8qKlxuICogQGhpZGRlblxuICogQGV4cGVyaW1lbnRhbCBNZWFuaW5nLCBJdCBjYW4gZGlzYXBwZWFyIGluIHRoZSBuZXh0IHZlcnNpb24uXG4gKlxuICogQW4gZXhwZXJpbWVudGFsIHNob3J0LWhhbmQgZnVuY3Rpb24gZm9yIFVuaXQgY3JlYXRpb24uXG4gKiBJdCBhdXRvbWF0aWNhbGx5IGNob29zZXMgYW4gYXBwcm9wcmlhdGUgdHlwZSBvZiBVbml0IGRlcGVuZGluZyBvbiB0aGVcbiAqIHByb3ZpZGVkIGBpbml0aWFsVmFsdWVgLlxuICpcbiAqIEZvciBhIGBib29sZWFuYCB2YWx1ZSwge0BsaW5rIEJvb2xVbml0fSB3aWxsIGJlIHNlbGVjdGVkLiBcXFxuICogRm9yIGEgYG51bWJlcmAgdmFsdWUsIHtAbGluayBOdW1Vbml0fSB3aWxsIGJlIHNlbGVjdGVkLiBcXFxuICogRm9yIGEgYHN0cmluZ2AgdmFsdWUsIHtAbGluayBTdHJpbmdVbml0fSB3aWxsIGJlIHNlbGVjdGVkLiBcXFxuICogRm9yIGFuIGBhcnJheWAgdmFsdWUsIHtAbGluayBMaXN0VW5pdH0gd2lsbCBiZSBzZWxlY3RlZC4gXFxcbiAqIEZvciBhIHNpbXBsZSBgZGljdGlvbmFyeSBvYmplY3RgLCBhIHtAbGluayBEaWN0VW5pdH0gd2lsbCBiZSBzZWxlY3RlZC4gXFxcbiAqIEZvciBldmVyeSBvdGhlciB2YWx1ZSwge0BsaW5rIEdlbmVyaWNVbml0fSB3aWxsIGJlIHNlbGVjdGVkLiBcXFxuICpcbiAqIEBwYXJhbSBpbml0aWFsVmFsdWUgSW5pdGlhbCB2YWx1ZSBvZiB0aGUgVW5pdC5cbiAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIFVuaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVbml0PFQ+KFxuICBpbml0aWFsVmFsdWU6IFQsXG4gIGNvbmZpZz86IEV4Y2x1ZGU8VW5pdENvbmZpZzxUPiwgJ2luaXRpYWxWYWx1ZSc+XG4pOiBWYWx1ZVRvVW5pdFR5cGU8VD4ge1xuICBjb25zdCB1bml0Q29uZmlnOiBVbml0Q29uZmlnPFQ+ID0gey4uLmNvbmZpZywgaW5pdGlhbFZhbHVlfTtcbiAgY29uc3QgdHlwZU9mVmFsdWUgPSB0eXBlb2YgaW5pdGlhbFZhbHVlO1xuXG4gIHN3aXRjaCAodHJ1ZSkge1xuICAgIGNhc2UgaW5pdGlhbFZhbHVlID09IG51bGw6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBuZXcgR2VuZXJpY1VuaXQodW5pdENvbmZpZyBhcyBhbnkpIGFzIGFueTtcbiAgICBjYXNlIHR5cGVPZlZhbHVlID09PSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4gbmV3IEJvb2xVbml0KHVuaXRDb25maWcgYXMgYW55KSBhcyBhbnk7XG4gICAgY2FzZSB0eXBlT2ZWYWx1ZSA9PT0gJ251bWJlcic6XG4gICAgICByZXR1cm4gbmV3IE51bVVuaXQodW5pdENvbmZpZyBhcyBhbnkpIGFzIGFueTtcbiAgICBjYXNlIHR5cGVPZlZhbHVlID09PSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiBuZXcgU3RyaW5nVW5pdCh1bml0Q29uZmlnIGFzIGFueSkgYXMgYW55O1xuICAgIGNhc2UgQXJyYXkuaXNBcnJheShpbml0aWFsVmFsdWUpOlxuICAgICAgcmV0dXJuIG5ldyBMaXN0VW5pdCh1bml0Q29uZmlnIGFzIGFueSkgYXMgYW55O1xuICAgIGNhc2UgaXNEaWN0KGluaXRpYWxWYWx1ZSk6XG4gICAgICByZXR1cm4gbmV3IERpY3RVbml0KHVuaXRDb25maWcgYXMgYW55KSBhcyBhbnk7XG4gIH1cbn1cbiJdfQ==