UNPKG

@tangential/configurable-input-widgets

Version:

Input Widgets with persistable, dynamic configuration.

24 lines 4.42 kB
import { ObjectUtil } from '@tangential/core'; import { StampedMediaType } from '@tangential/media-types'; const inputTypeRegistry = {}; const Model = { _inputTypeKey: null, defaultValue: null }; export class ConfigurableInputType extends StampedMediaType { constructor(config, key) { super(config, key); this._inputTypeKey = this.getInputTypeKey(); } static register(inputTypeCtor) { inputTypeRegistry[inputTypeCtor['TYPE_NAME']] = inputTypeCtor; } static create(typeConfig, key, inputTypeKey) { typeConfig = typeConfig || {}; key = key || typeConfig.$key; inputTypeKey = inputTypeKey || typeConfig._inputTypeKey; return new inputTypeRegistry[inputTypeKey](typeConfig, key); } } ConfigurableInputType.$model = ObjectUtil.assignDeep({}, StampedMediaType.$model, Model); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLWlucHV0LXR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nZW50aWFsL2NvbmZpZ3VyYWJsZS1pbnB1dC13aWRnZXRzL3NyYy9saWIvZGF0YS10eXBlL2NvbmZpZ3VyYWJsZS1pbnB1dC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBWSxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQXVCLE1BQU0seUJBQXlCLENBQUE7QUFTOUUsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUE7QUFFNUIsTUFBTSxLQUFLLEdBQThCO0lBQ3ZDLGFBQWEsRUFBRSxJQUFJO0lBQ25CLFlBQVksRUFBRyxJQUFJO0NBQ3BCLENBQUE7QUFFRCxNQUFNLE9BQWdCLHFCQUFzQixTQUFRLGdCQUFnQjtJQU9sRSxZQUFZLE1BQVcsRUFBRSxHQUFZO1FBQ25DLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7SUFDN0MsQ0FBQztJQVFELE1BQU0sQ0FBQyxRQUFRLENBQWtDLGFBQXNCO1FBQ3JFLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQTtJQUMvRCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFxQyxFQUFFLEdBQVksRUFBRSxZQUFxQjtRQUN0RixVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQTtRQUM3QixHQUFHLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUE7UUFDNUIsWUFBWSxHQUFHLFlBQVksSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFBO1FBQ3ZELE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDN0QsQ0FBQzs7QUExQmUsNEJBQU0sR0FBOEIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtKc29uaWZpZWQsIE9iamVjdFV0aWx9IGZyb20gJ0B0YW5nZW50aWFsL2NvcmUnXG5pbXBvcnQge1N0YW1wZWRNZWRpYVR5cGUsIFN0YW1wZWRNZWRpYVR5cGVKc29ufSBmcm9tICdAdGFuZ2VudGlhbC9tZWRpYS10eXBlcydcbmltcG9ydCB7Q29uZmlndXJhYmxlSW5wdXRJdmFsfSBmcm9tICcuL2NvbmZpZ3VyYWJsZS1pbnB1dC1pdmFsJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYWJsZUlucHV0VHlwZUpzb24gZXh0ZW5kcyBTdGFtcGVkTWVkaWFUeXBlSnNvbiB7XG4gIF9pbnB1dFR5cGVLZXk/OiBzdHJpbmdcbiAgZGVmYXVsdFZhbHVlPzogYW55XG59XG5cblxuY29uc3QgaW5wdXRUeXBlUmVnaXN0cnkgPSB7fVxuXG5jb25zdCBNb2RlbDogQ29uZmlndXJhYmxlSW5wdXRUeXBlSnNvbiA9IHtcbiAgX2lucHV0VHlwZUtleTogbnVsbCxcbiAgZGVmYXVsdFZhbHVlOiAgbnVsbFxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29uZmlndXJhYmxlSW5wdXRUeXBlIGV4dGVuZHMgU3RhbXBlZE1lZGlhVHlwZSBpbXBsZW1lbnRzIEpzb25pZmllZDxDb25maWd1cmFibGVJbnB1dFR5cGUsIENvbmZpZ3VyYWJsZUlucHV0VHlwZUpzb24+LCBDb25maWd1cmFibGVJbnB1dFR5cGVKc29uIHtcbiAgc3RhdGljIG92ZXJyaWRlICRtb2RlbDogQ29uZmlndXJhYmxlSW5wdXRUeXBlSnNvbiA9IE9iamVjdFV0aWwuYXNzaWduRGVlcCh7fSwgU3RhbXBlZE1lZGlhVHlwZS4kbW9kZWwsIE1vZGVsKVxuXG4gIHN0YXRpYyBUWVBFX05BTUU6IHN0cmluZ1xuICBkZWZhdWx0VmFsdWU/OiBhbnlcbiAgX2lucHV0VHlwZUtleT86IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogYW55LCBrZXk/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihjb25maWcsIGtleSlcbiAgICB0aGlzLl9pbnB1dFR5cGVLZXkgPSB0aGlzLmdldElucHV0VHlwZUtleSgpXG4gIH1cblxuICBhYnN0cmFjdCBnZXRJbnB1dFR5cGVLZXkoKTogc3RyaW5nXG5cbiAgYWJzdHJhY3QgaXNOdW1lcmljKCk6IGJvb2xlYW5cblxuICBhYnN0cmFjdCBjcmVhdGVWYWx1ZSh2YWx1ZUNvbmZpZz86IGFueSwga2V5Pzogc3RyaW5nKTogQ29uZmlndXJhYmxlSW5wdXRJdmFsXG5cbiAgc3RhdGljIHJlZ2lzdGVyPFQgZXh0ZW5kcyBDb25maWd1cmFibGVJbnB1dFR5cGU+KGlucHV0VHlwZUN0b3I6IFR5cGU8VD4pIHtcbiAgICBpbnB1dFR5cGVSZWdpc3RyeVtpbnB1dFR5cGVDdG9yWydUWVBFX05BTUUnXV0gPSBpbnB1dFR5cGVDdG9yXG4gIH1cblxuICBzdGF0aWMgY3JlYXRlKHR5cGVDb25maWc6IENvbmZpZ3VyYWJsZUlucHV0VHlwZUpzb24sIGtleT86IHN0cmluZywgaW5wdXRUeXBlS2V5Pzogc3RyaW5nKSB7XG4gICAgdHlwZUNvbmZpZyA9IHR5cGVDb25maWcgfHwge31cbiAgICBrZXkgPSBrZXkgfHwgdHlwZUNvbmZpZy4ka2V5XG4gICAgaW5wdXRUeXBlS2V5ID0gaW5wdXRUeXBlS2V5IHx8IHR5cGVDb25maWcuX2lucHV0VHlwZUtleVxuICAgIHJldHVybiBuZXcgaW5wdXRUeXBlUmVnaXN0cnlbaW5wdXRUeXBlS2V5XSh0eXBlQ29uZmlnLCBrZXkpXG4gIH1cbn1cbiJdfQ==