UNPKG

molstar

Version:

A comprehensive macromolecular library.

82 lines 2.95 kB
"use strict"; /** * 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> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.CustomProperties = exports.CustomPropertyDescriptor = void 0; var mol_util_1 = require("../mol-util"); function CustomPropertyDescriptor(desc) { return desc; } exports.CustomPropertyDescriptor = CustomPropertyDescriptor; (function (CustomPropertyDescriptor) { function getUUID(prop) { if (!prop.__key) { prop.__key = mol_util_1.UUID.create22(); } return prop.__key; } CustomPropertyDescriptor.getUUID = getUUID; })(CustomPropertyDescriptor || (CustomPropertyDescriptor = {})); exports.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; }()); exports.CustomProperties = CustomProperties; //# sourceMappingURL=custom-property.js.map