UNPKG

molstar

Version:

A comprehensive macromolecular library.

110 lines 5.89 kB
"use strict"; /** * Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.CustomModelProperty = void 0; var tslib_1 = require("tslib"); var param_definition_1 = require("../../mol-util/param-definition"); var mol_util_1 = require("../../mol-util"); var custom_property_1 = require("../../mol-model/custom-property"); var string_1 = require("../../mol-util/string"); var CustomModelProperty; (function (CustomModelProperty) { function createProvider(builder) { var _this = this; var descriptorName = builder.descriptor.name; var propertyDataName = builder.type === 'static' ? '_staticPropertyData' : '_dynamicPropertyData'; var get = function (data) { if (!(descriptorName in data[propertyDataName])) { data[propertyDataName][descriptorName] = { props: (0, tslib_1.__assign)({}, param_definition_1.ParamDefinition.getDefaultValues(builder.getParams(data))), data: mol_util_1.ValueBox.create(undefined) }; } return data[propertyDataName][descriptorName]; }; var set = function (data, props, value) { var property = get(data); data[propertyDataName][descriptorName] = { props: props, data: mol_util_1.ValueBox.withValue(property.data, value) }; }; return { label: builder.label, descriptor: builder.descriptor, isHidden: builder.isHidden, getParams: function (data) { var params = param_definition_1.ParamDefinition.clone(builder.getParams(data)); param_definition_1.ParamDefinition.setDefaultValues(params, get(data).props); return params; }, defaultParams: builder.defaultParams, isApplicable: builder.isApplicable, attach: function (ctx, data, props, addRef) { if (props === void 0) { props = {}; } return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var property, p, _a, value, assets; return (0, tslib_1.__generator)(this, function (_b) { switch (_b.label) { case 0: if (addRef) data.customProperties.reference(builder.descriptor, true); property = get(data); p = param_definition_1.ParamDefinition.merge(builder.defaultParams, property.props, props); if (property.data.value && param_definition_1.ParamDefinition.areEqual(builder.defaultParams, property.props, p)) return [2 /*return*/]; return [4 /*yield*/, builder.obtain(ctx, data, p)]; case 1: _a = _b.sent(), value = _a.value, assets = _a.assets; data.customProperties.add(builder.descriptor); data.customProperties.assets(builder.descriptor, assets); set(data, p, value); return [2 /*return*/]; } }); }); }, ref: function (data, add) { return data.customProperties.reference(builder.descriptor, add); }, get: function (data) { var _a; return (_a = get(data)) === null || _a === void 0 ? void 0 : _a.data; }, set: function (data, props) { if (props === void 0) { props = {}; } var property = get(data); var p = param_definition_1.ParamDefinition.merge(builder.defaultParams, property.props, props); if (!param_definition_1.ParamDefinition.areEqual(builder.defaultParams, property.props, p)) { // this invalidates property.value set(data, p, undefined); // dispose of assets data.customProperties.assets(builder.descriptor); } }, props: function (data) { return get(data).props; }, }; } CustomModelProperty.createProvider = createProvider; function createSimple(name, type, defaultValue) { var _this = this; var defaultParams = { value: param_definition_1.ParamDefinition.Value(defaultValue, { isHidden: true }) }; return createProvider({ label: (0, string_1.stringToWords)(name), descriptor: (0, custom_property_1.CustomPropertyDescriptor)({ name: name }), isHidden: true, type: type, defaultParams: defaultParams, getParams: function () { return ({ value: param_definition_1.ParamDefinition.Value(defaultValue, { isHidden: true }) }); }, isApplicable: function () { return true; }, obtain: function (ctx, data, props) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var _a; return (0, tslib_1.__generator)(this, function (_b) { return [2 /*return*/, { value: (_a = props.value) !== null && _a !== void 0 ? _a : defaultValue }]; }); }); } }); } CustomModelProperty.createSimple = createSimple; })(CustomModelProperty || (CustomModelProperty = {})); exports.CustomModelProperty = CustomModelProperty; //# sourceMappingURL=custom-model-property.js.map