molstar
Version:
A comprehensive macromolecular library.
186 lines • 6.52 kB
JavaScript
/**
* Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
import { __assign } from "tslib";
import { StateTransformer } from './transformer';
import { UUID } from '../mol-util';
export { Transform as StateTransform };
var Transform;
(function (Transform) {
Transform.RootRef = '-=root=-';
function areStatesEqual(a, b) {
return !!a.isHidden !== !!b.isHidden || !!a.isCollapsed !== !!b.isCollapsed
|| !!a.isGhost !== !!b.isGhost || !!a.isLocked !== !!b.isLocked;
}
Transform.areStatesEqual = areStatesEqual;
function isStateChange(a, b) {
if (!b)
return false;
if (typeof b.isCollapsed !== 'undefined' && a.isCollapsed !== b.isCollapsed)
return true;
if (typeof b.isHidden !== 'undefined' && a.isHidden !== b.isHidden)
return true;
if (typeof b.isGhost !== 'undefined' && a.isGhost !== b.isGhost)
return true;
if (typeof b.isLocked !== 'undefined' && a.isLocked !== b.isLocked)
return true;
return false;
}
Transform.isStateChange = isStateChange;
function assignState(a, b) {
if (!b)
return false;
var changed = false;
for (var _i = 0, _a = Object.keys(b); _i < _a.length; _i++) {
var k = _a[_i];
var s = b[k], t = a[k];
if (!!s === !!t)
continue;
changed = true;
a[k] = s;
}
return changed;
}
Transform.assignState = assignState;
function syncState(a, b) {
if (!b)
return false;
var changed = false;
for (var _i = 0, _a = Object.keys(b); _i < _a.length; _i++) {
var k = _a[_i];
var s = b[k], t = a[k];
if (!!s === !!t)
continue;
changed = true;
a[k] = s;
}
for (var _b = 0, _c = Object.keys(a); _b < _c.length; _b++) {
var k = _c[_b];
var s = b[k], t = a[k];
if (!!s === !!t)
continue;
changed = true;
a[k] = s;
}
return changed;
}
Transform.syncState = syncState;
function create(parent, transformer, params, options) {
var ref = options && options.ref ? options.ref : UUID.create22();
var tags = void 0;
if (options && options.tags) {
tags = typeof options.tags === 'string' ? [options.tags] : options.tags;
if (tags.length === 0)
tags = void 0;
else
tags.sort();
}
return {
parent: parent,
transformer: transformer,
state: (options === null || options === void 0 ? void 0 : options.state) || {},
tags: tags,
ref: ref,
dependsOn: options && options.dependsOn,
params: params,
version: UUID.create22()
};
}
Transform.create = create;
function withParams(t, params) {
return __assign(__assign({}, t), { params: params, version: UUID.create22() });
}
Transform.withParams = withParams;
function withState(t, state) {
if (!state)
return t;
return __assign(__assign({}, t), { state: __assign(__assign({}, t.state), state) });
}
Transform.withState = withState;
function withTags(t, newTags) {
var tags = void 0;
if (newTags) {
tags = typeof newTags === 'string' ? [newTags] : newTags;
if (tags.length === 0)
tags = void 0;
else
tags.sort();
}
return __assign(__assign({}, t), { tags: tags, version: UUID.create22() });
}
Transform.withTags = withTags;
function withParent(t, parent) {
return __assign(__assign({}, t), { parent: parent, version: UUID.create22() });
}
Transform.withParent = withParent;
function createRoot(state) {
return create(Transform.RootRef, StateTransformer.ROOT, {}, { ref: Transform.RootRef, state: state });
}
Transform.createRoot = createRoot;
function hasTag(t, tag) {
if (!t.tags)
return false;
return t.tags.indexOf(tag) >= 0;
}
Transform.hasTag = hasTag;
function hasTags(t, tags) {
if (!t.tags)
return typeof tags !== 'string' && tags.length === 0;
if (typeof tags === 'string')
return hasTag(t, tags);
for (var _i = 0, tags_1 = tags; _i < tags_1.length; _i++) {
var tag = tags_1[_i];
if (t.tags.indexOf(tag) < 0)
return false;
}
return true;
}
Transform.hasTags = hasTags;
function _id(x) { return x; }
function toJSON(t) {
var pToJson = t.transformer.definition.customSerialization
? t.transformer.definition.customSerialization.toJSON
: _id;
var state = void 0;
for (var _i = 0, _a = Object.keys(t.state); _i < _a.length; _i++) {
var k = _a[_i];
var s = t.state[k];
if (!s)
continue;
if (!state)
state = {};
state[k] = true;
}
return {
parent: t.parent,
transformer: t.transformer.id,
params: t.params ? pToJson(t.params) : void 0,
state: state,
tags: t.tags,
ref: t.ref,
dependsOn: t.dependsOn,
version: t.version
};
}
Transform.toJSON = toJSON;
function fromJSON(t) {
var transformer = StateTransformer.get(t.transformer);
var pFromJson = transformer.definition.customSerialization
? transformer.definition.customSerialization.fromJSON
: _id;
return {
parent: t.parent,
transformer: transformer,
params: t.params ? pFromJson(t.params) : void 0,
state: t.state || {},
tags: t.tags,
ref: t.ref,
dependsOn: t.dependsOn,
version: t.version
};
}
Transform.fromJSON = fromJSON;
})(Transform || (Transform = {}));
//# sourceMappingURL=transform.js.map