molstar
Version:
A comprehensive macromolecular library.
77 lines (76 loc) • 2.62 kB
JavaScript
/**
* 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;
}());