molstar
Version:
A comprehensive macromolecular library.
82 lines • 2.95 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>
*/
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
;