UNPKG

molstar

Version:

A comprehensive macromolecular library.

77 lines (76 loc) 2.62 kB
/** * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> * @author Alexander Rose <alexander.rose@weirdbyte.de> */ import { UUID } from '../mol-util'; export { CustomPropertyDescriptor, CustomProperties }; function CustomPropertyDescriptor(desc) { return desc; } (function (CustomPropertyDescriptor) { function getUUID(prop) { if (!prop.__key) { prop.__key = UUID.create22(); } return prop.__key; } CustomPropertyDescriptor.getUUID = getUUID; })(CustomPropertyDescriptor || (CustomPropertyDescriptor = {})); var CustomProperties = /** @class */ (function () { function CustomProperties() { this._list = []; this._set = new Set(); this._refs = new Map(); this._assets = new Map(); } Object.defineProperty(CustomProperties.prototype, "all", { get: function () { return this._list; }, enumerable: false, configurable: true }); CustomProperties.prototype.add = function (desc) { if (this._set.has(desc)) return; this._list.push(desc); this._set.add(desc); }; CustomProperties.prototype.reference = function (desc, add) { var refs = this._refs.get(desc) || 0; refs += add ? 1 : -1; this._refs.set(desc, Math.max(refs, 0)); }; CustomProperties.prototype.hasReference = function (desc) { return (this._refs.get(desc) || 0) > 0; }; CustomProperties.prototype.has = function (desc) { return this._set.has(desc); }; /** Sets assets for a prop, disposes of existing assets for that prop */ CustomProperties.prototype.assets = function (desc, assets) { var prevAssets = this._assets.get(desc); if (prevAssets) { for (var _i = 0, prevAssets_1 = prevAssets; _i < prevAssets_1.length; _i++) { var a = prevAssets_1[_i]; a.dispose(); } } if (assets) this._assets.set(desc, assets); else this._assets.delete(desc); }; /** Disposes of all assets of all props */ CustomProperties.prototype.dispose = function () { this._assets.forEach(function (assets) { for (var _i = 0, assets_1 = assets; _i < assets_1.length; _i++) { var a = assets_1[_i]; a.dispose(); } }); }; return CustomProperties; }());