From 56d0e15e60bed51a3d01c9ebeb96b9f07a9c9732 Mon Sep 17 00:00:00 2001 From: David Sehnal <david.sehnal@gmail.com> Date: Fri, 19 Oct 2018 15:52:18 +0200 Subject: [PATCH] mol-state: wip --- .../{context/event.ts => event/dispatcher.ts} | 0 src/mol-state/event/event.ts | 9 +++++++ src/mol-state/state.ts | 25 +++++++++++++++---- src/mol-state/transformer/controller.ts | 7 ++++++ src/mol-state/tree/context.ts | 2 +- src/mol-state/tree/transation.ts | 4 ++- 6 files changed, 40 insertions(+), 7 deletions(-) rename src/mol-state/{context/event.ts => event/dispatcher.ts} (100%) create mode 100644 src/mol-state/event/event.ts create mode 100644 src/mol-state/transformer/controller.ts diff --git a/src/mol-state/context/event.ts b/src/mol-state/event/dispatcher.ts similarity index 100% rename from src/mol-state/context/event.ts rename to src/mol-state/event/dispatcher.ts diff --git a/src/mol-state/event/event.ts b/src/mol-state/event/event.ts new file mode 100644 index 000000000..32dcb9a05 --- /dev/null +++ b/src/mol-state/event/event.ts @@ -0,0 +1,9 @@ +/** + * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. + * + * @author David Sehnal <david.sehnal@gmail.com> + */ + +export interface EventDispatcher { + // TODO +} \ No newline at end of file diff --git a/src/mol-state/state.ts b/src/mol-state/state.ts index 0dc9aa8e4..fb65ca6dc 100644 --- a/src/mol-state/state.ts +++ b/src/mol-state/state.ts @@ -7,9 +7,24 @@ import { StateObject } from './object'; import { TransformTree } from './tree/tree'; import { Transform } from './tree/transform'; +import { Map as ImmutableMap } from 'immutable'; +import { StateContext } from './context/context'; -export interface State { - tree: TransformTree, - objects: Map<Transform.InstanceId, StateObject>, - history: TransformTree[] -} \ No newline at end of file +export interface State<ObjectProps = unknown> { + definition: State.Definition<ObjectProps>, + objects: Map<Transform.InstanceId, StateObject> +} + +export namespace State { + export type ObjectProps<P> = ImmutableMap<Transform.InstanceId, P> + + export interface Definition<P = unknown> { + tree: TransformTree, + // things like object visibility + props: ObjectProps<P> + } + + export async function update<P>(context: StateContext, old: State<P>, tree: Definition<P>, props?: ObjectProps<P>): Promise<State<P>> { + throw 'nyi'; + } +} diff --git a/src/mol-state/transformer/controller.ts b/src/mol-state/transformer/controller.ts new file mode 100644 index 000000000..4d970bf1e --- /dev/null +++ b/src/mol-state/transformer/controller.ts @@ -0,0 +1,7 @@ +/** + * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. + * + * @author David Sehnal <david.sehnal@gmail.com> + */ + +// TODO: relactive transformer params controller \ No newline at end of file diff --git a/src/mol-state/tree/context.ts b/src/mol-state/tree/context.ts index 8c4bb7c09..1c274d8cc 100644 --- a/src/mol-state/tree/context.ts +++ b/src/mol-state/tree/context.ts @@ -4,7 +4,7 @@ * @author David Sehnal <david.sehnal@gmail.com> */ -import { EventDispatcher } from '../context/event'; +import { EventDispatcher } from '../event/event'; export interface TransformContext { /** An event dispatcher for executing child tasks. */ diff --git a/src/mol-state/tree/transation.ts b/src/mol-state/tree/transation.ts index 7c7fe8338..e05c32a20 100644 --- a/src/mol-state/tree/transation.ts +++ b/src/mol-state/tree/transation.ts @@ -4,4 +4,6 @@ * @author David Sehnal <david.sehnal@gmail.com> */ -// TODO \ No newline at end of file +export interface TreeTransaction { + +} \ No newline at end of file -- GitLab