@activejs/core
Version:
Pragmatic, Reactive State Management for JavaScript Apps
45 lines • 5.9 kB
JavaScript
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==