molstar
Version:
A comprehensive macromolecular library.
64 lines (63 loc) • 2.42 kB
TypeScript
/**
* Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
import { StateTransformer } from './transformer';
export { Transform as StateTransform };
interface Transform<T extends StateTransformer = StateTransformer> {
readonly parent: Transform.Ref;
readonly transformer: T;
readonly state: Transform.State;
readonly tags?: string[];
readonly ref: Transform.Ref;
/**
* Sibling-like dependency
* Do NOT make a cell dependent on its ancestor.
*/
readonly dependsOn?: Transform.Ref[];
readonly params?: StateTransformer.Params<T>;
readonly version: string;
}
declare namespace Transform {
type Ref = string;
type Transformer<T extends Transform> = T extends Transform<infer S> ? S : never;
const RootRef: string;
interface State {
isGhost?: boolean;
isLocked?: boolean;
isHidden?: boolean;
isCollapsed?: boolean;
}
function areStatesEqual(a: State, b: State): boolean;
function isStateChange(a: State, b?: Partial<State>): boolean;
function assignState(a: State, b?: Partial<State>): boolean;
function syncState(a: State, b?: Partial<State>): boolean;
interface Options {
ref?: string;
tags?: string | string[];
state?: State;
dependsOn?: Ref[];
}
function create<T extends StateTransformer>(parent: Ref, transformer: T, params?: StateTransformer.Params<T>, options?: Options): Transform<T>;
function withParams(t: Transform, params: any): Transform;
function withState(t: Transform, state?: Partial<State>): Transform;
function withTags(t: Transform, newTags?: string | string[]): Transform;
function withParent(t: Transform, parent: Ref): Transform;
function createRoot(state?: State): Transform;
function hasTag(t: Transform, tag: string): boolean;
function hasTags(t: Transform, tags: string | string[]): boolean;
interface Serialized {
parent: string;
transformer: string;
params: any;
state?: State;
tags?: string[];
isDecorator?: boolean;
ref: string;
dependsOn?: string[];
version: string;
}
function toJSON(t: Transform): Serialized;
function fromJSON(t: Serialized): Transform;
}