/** * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal */ import { StateObject, StateObjectCell } from '../object.js'; import { State } from '../state.js'; import { StateTree } from '../tree.js'; import { StateTransform } from '../transform.js'; import { StateTransformer } from '../transformer.js'; declare namespace StateSelection { type Selector = Query | Builder | string | C; type CellSeq = C[]; type Query = (state: State) => CellSeq; function select(s: Selector, state: State): CellSeq; function compile(s: Selector): Query; interface Builder { flatMap(f: (n: C) => D[]): Builder; mapObject(f: (n: C) => D): Builder; unique(): Builder; parent(): Builder; first(): Builder; filter(p: (n: C) => boolean): Builder; withTag(tag: string): Builder; withTransformer, any>>(t: T): Builder, StateTransform>>; withStatus(s: StateObjectCell.Status): Builder; subtree(): Builder; children(): Builder; ofType(t: T): Builder>>; ancestor(test: (c: StateObjectCell) => (boolean | void | undefined)): Builder>>; ancestorOfType(t: T | T[]): Builder>>; ancestorWithTransformer(transfomers: T | T[]): Builder>>; root(test: (c: StateObjectCell) => (boolean | void | undefined)): Builder>>; rootOfType(t: T | T[]): Builder>>; select(state: State): CellSeq; } namespace Generators { const root: Builder>, StateTransform>, StateObject>, any>>>>; function byRef(...refs: StateTransform.Ref[]): Builder, StateTransform>, StateObject>, any>>>>; function byValue(...objects: T[]): Builder; function rootsOfType(type: T, root?: StateTransform.Ref): Builder, StateTransform>, StateObject>, any>>>>; function ofType(type: T, root?: StateTransform.Ref): Builder, StateTransform>, StateObject>, any>>>>; function ofTransformer, A extends StateObject>(t: T, root?: StateTransform.Ref): Builder>>; function ofTransformerWithError, A extends StateObject>(t: T, root?: StateTransform.Ref): Builder>>; } function flatMap(b: Selector, f: (obj: StateObjectCell, state: State) => CellSeq): Builder>, StateTransform>, StateObject>, any>>>>; function mapObject(b: Selector, f: (n: StateObjectCell, state: State) => StateObjectCell | undefined): Builder>, StateTransform>, StateObject>, any>>>>; function unique(b: Selector): Builder>, StateTransform>, StateObject>, any>>>>; function first(b: Selector): Builder>, StateTransform>, StateObject>, any>>>>; function filter(b: Selector, p: (n: StateObjectCell) => boolean): Builder>, StateTransform>, StateObject>, any>>>>; function withStatus(b: Selector, s: StateObjectCell.Status): Builder>, StateTransform>, StateObject>, any>>>>; function withTag(b: Selector, tag: string): Builder>, StateTransform>, StateObject>, any>>>>; function subtree(b: Selector): Builder>, StateTransform>, StateObject>, any>>>>; function children(b: Selector): Builder>, StateTransform>, StateObject>, any>>>>; function ofType(b: Selector, t: StateObject.Ctor): Builder>, StateTransform>, StateObject>, any>>>>; function ancestor(b: Selector, test: (c: StateObjectCell) => (boolean | void | undefined)): Builder>, StateTransform>, StateObject>, any>>>>; function ancestorOfType(b: Selector, types: StateObject.Ctor[]): Builder>, StateTransform>, StateObject>, any>>>>; function ancestorWithTransformer(b: Selector, transfomers: StateTransformer[]): Builder>, StateTransform>, StateObject>, any>>>>; function withTransformer(b: Selector, t: StateTransformer): Builder>, StateTransform>, StateObject>, any>>>>; function root(b: Selector, test: (c: StateObjectCell) => (boolean | void | undefined)): Builder>, StateTransform>, StateObject>, any>>>>; function rootOfType(b: Selector, types: StateObject.Ctor | StateObject.Ctor[]): Builder>, StateTransform>, StateObject>, any>>>>; function parent(b: Selector): Builder>, StateTransform>, StateObject>, any>>>>; function findAncestor(tree: StateTree, cells: State.Cells, root: StateTransform.Ref, test: (c: StateObjectCell) => (boolean | void | undefined)): StateObjectCell, StateTransform>, StateObject>, any>>> | undefined; function findRoot(tree: StateTree, cells: State.Cells, root: StateTransform.Ref, test: (c: StateObjectCell) => (boolean | void | undefined)): StateObjectCell, StateTransform>, StateObject>, any>>> | undefined; function findAncestorWithTransformer(tree: StateTree, cells: State.Cells, root: StateTransform.Ref, transfomers: T | T[]): StateObjectCell> | undefined; function findAncestorOfType(tree: StateTree, cells: State.Cells, root: StateTransform.Ref, types: T | T[]): StateObjectCell> | undefined; function findRootOfType(tree: StateTree, cells: State.Cells, root: StateTransform.Ref, types: T | T[]): StateObjectCell> | undefined; function findUniqueTagsInSubtree(tree: StateTree, root: StateTransform.Ref, tags: Set): { [name in K]?: StateTransform.Ref; }; function findTagInSubtree(tree: StateTree, root: StateTransform.Ref, tag: string): StateTransform.Ref | undefined; function findWithAllTags(tree: StateTree, root: StateTransform.Ref, tags: Set): StateTransform[]; function tryFindDecorator(state: State, root: StateTransform.Ref, transformer: T): StateObjectCell, StateTransform> | undefined; function getDecorated(state: State, root: StateTransform.Ref): StateObjectCell; } export { StateSelection };