UNPKG

molstar

Version:

A comprehensive macromolecular library.

186 lines 6.52 kB
/** * 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