SYMBOL INDEX (537 symbols across 47 files) FILE: src/action/action.ts type SingleArgument (line 16) | type SingleArgument = string | number | boolean | GameElement | Player; type Argument (line 29) | type Argument = SingleArgument | SingleArgument[]; type ActionStub (line 35) | type ActionStub = { type Group (line 64) | type Group = Record, R extends Group> = ... class Action (line 93) | class Action = NonNullable> { method constructor (line 106) | constructor({ prompt, description, condition }: { method isPossible (line 116) | isPossible(args: A): boolean { method _getPendingMoves (line 127) | _getPendingMoves(args: Record, debug?: ActionDebug):... method _getPendingMovesInner (line 172) | _getPendingMovesInner(args: Record, debug?: ActionDe... method _nextSelection (line 250) | _nextSelection(args: Record): ResolvedSelection | un... method _process (line 267) | _process(player: Player, args: Record): string | und... method _addSelection (line 314) | _addSelection(selection: Selection) { method _withDecoratedArgs (line 322) | _withDecoratedArgs(args: A, fn: (args: A) => any) { method _getError (line 344) | _getError(selection: ResolvedSelection, args: A) { method _getConfirmation (line 348) | _getConfirmation(selection: ResolvedSelection, args: A) { method do (line 386) | do(move: (args: A) => any): Action { method message (line 425) | message(text: string, args?: Record | ((a: A) => Rec... method messageTo (line 466) | messageTo(player: (Player | number) | (Player | number)[], text: strin... method chooseFrom (line 564) | chooseFrom( method enterText (line 614) | enterText(name: N, options?: { method chooseNumber (line 689) | chooseNumber(name: N, options: { method chooseOnBoard (line 805) | chooseOnBoard(name: N, choice... method choose (line 853) | choose( method confirm (line 948) | confirm(prompt: string | ((args: A) => string)): Action { method move (line 976) | move(piece: keyof A | Piece, into: keyof A | GameElement) { method swap (line 1013) | swap(piece1: keyof A | Piece, piece2: keyof A | Piece) { method reorder (line 1053) | reorder(collection: Piece[], options?: { method placePiece (line 1123) | placePiece(piece: T, into: PieceGrid... FILE: src/action/selection.ts type BoardQuerySingle (line 8) | type BoardQuerySingle = Record = Record = Record = Record): string | undefined { method options (line 223) | options(this: ResolvedSelection): {choice: Argument, error?: string, l... method isUnbounded (line 233) | isUnbounded(this: ResolvedSelection): boolean { method isResolved (line 238) | isResolved(): this is ResolvedSelection { method isMulti (line 249) | isMulti() { method isBoardChoice (line 253) | isBoardChoice() { method resolve (line 257) | resolve(args: Record): ResolvedSelection { method isPossible (line 279) | isPossible(this: ResolvedSelection): boolean { method isForced (line 289) | isForced(this: ResolvedSelection): Argument | undefined { method toString (line 306) | toString(): string { FILE: src/action/utils.ts type SerializedSingleArg (line 6) | type SerializedSingleArg = string | number | boolean; type SerializedArg (line 7) | type SerializedArg = SerializedSingleArg | SerializedSingleArg[]; type Serializable (line 8) | type Serializable = SingleArgument | null | undefined | Serializable[] |... FILE: src/board/adjacency-space.ts method isAdjacent (line 22) | isAdjacent(_el1: GameElement, _el2: GameElement): boolean { method _positionOf (line 26) | _positionOf(element: GameElement) { method _positionedParentOf (line 31) | _positionedParentOf(element: GameElement): GameElement { method configureLayout (line 40) | configureLayout(layoutConfiguration: Partial) { FILE: src/board/connected-space-map.ts class ConnectedSpaceMap (line 23) | class ConnectedSpaceMap extends AdjacencySpace { method constructor (line 28) | constructor(ctx: ElementContext) { method isAdjacent (line 41) | isAdjacent(el1: GameElement, el2: GameElement) { method connect (line 58) | connect(space1: Space, space2: Space, distance: number = 1) { method connectOneWay (line 65) | connectOneWay(space1: Space, space2: Space, distance: number = 1) { method distanceBetween (line 84) | distanceBetween(el1: GameElement, el2: GameElement) { method _distanceBetweenNodes (line 90) | _distanceBetweenNodes(n1: string, n2: string): number { method allAdjacentTo (line 115) | allAdjacentTo(element: GameElement, className?: any, ...finders: Eleme... method allWithinDistanceOf (line 137) | allWithinDistanceOf(element: GameElement, distance: number, className?... method allConnectedTo (line 165) | allConnectedTo(element: GameElement, className?: any, ...finders: Elem... method closestTo (line 188) | closestTo(element: GameElement, className?: any... FILE: src/board/element-collection.ts type Sorter (line 16) | type Sorter = keyof T | ((e: T) => number | string) type ElementFinder (line 42) | type ElementFinder = ( class ElementCollection (line 54) | class ElementCollection extends Arr... method slice (line 56) | slice(...a: Parameters['slice']>):ElementCollection {retur... method filter (line 57) | filter(...a: Parameters['filter']>):ElementCollection {ret... method all (line 77) | all(className?: ElementFinder | ElementClass, ...finders: ElementFinde... method _finder (line 85) | _finder( method first (line 149) | first(className?: ElementFinder | ElementClass, ...finders: ElementFin... method firstN (line 170) | firstN(n: number, className?: ElementFinder | ElementClass, ...finders... method last (line 188) | last(className?: ElementFinder | ElementClass, ...finders: ElementFind... method lastN (line 209) | lastN(n: number, className?: ElementFinder | ElementClass, ...finders:... method top (line 224) | top(className?: ElementFinder | ElementClass, ...finders: ElementFinde... method topN (line 238) | topN(n: number, className?: ElementFinder | ElementClass, ...finders: ... method bottom (line 253) | bottom(className?: ElementFinder | ElementClass, ...finders: ElementFi... method bottomN (line 267) | bottomN(n: number, className?: ElementFinder | ElementClass, ...finder... method showToAll (line 280) | showToAll(this: ElementCollection>) { method showOnlyTo (line 290) | showOnlyTo(this: ElementCollection>, player: Player | ... method showTo (line 305) | showTo(this: ElementCollection>, ...player: Player[] |... method hideFromAll (line 322) | hideFromAll(this: ElementCollection>) { method hideFrom (line 333) | hideFrom(this: ElementCollection>, ...player: Player[]... method sortBy (line 353) | sortBy(key: Sorter | Sorter[], direction?: "asc" | ... method sortedBy (line 372) | sortedBy(key: Sorter | (Sorter)[], direction: "asc" | "desc" = "... method sum (line 385) | sum(key: ((e: T) => number) | (keyof {[K in keyof T]: T[K] extends num... method withHighest (line 404) | withHighest(...attributes: Sorter[]): T | undefined { method withLowest (line 423) | withLowest(...attributes: Sorter[]): T | undefined { method max (line 441) | max(key: {[K2 in keyof T]: T[K2] extends K ... method min (line 461) | min(key: {[K2 in keyof T]: T[K2] extends K ... method areAllEqual (line 471) | areAllEqual(key: keyof T): boolean { method remove (line 481) | remove() { method putInto (line 492) | putInto(to: GameElement, options?: {position?: number, fromTop?: numbe... method layout (line 507) | layout( method configureLayout (line 520) | configureLayout( method appearance (line 531) | appearance(appearance: ElementUI['appearance']) { FILE: src/board/element.ts type ElementJSON (line 15) | type ElementJSON = ({className: string, children?: ElementJSON[]} & Reco... type ElementClass (line 17) | type ElementClass = { type GenericSorter (line 29) | type GenericSorter = string | ((e: GameElement) => number | string) type ElementAttributes (line 35) | type ElementAttributes = type ElementContext (line 38) | type ElementContext = { type Box (line 55) | type Box = { left: number, top: number, width: number, height: number }; type Vector (line 60) | type Vector = { x: number, y: number }; type Direction (line 62) | type Direction = 'up' | 'down' | 'left' | 'right' type DirectionWithDiagonals (line 63) | type DirectionWithDiagonals = Direction | 'upleft' | 'upright' | 'downle... type ElementUI (line 65) | type ElementUI = { type LayoutAttributes (line 93) | type LayoutAttributes = { class GameElement (line 234) | class GameElement) { method toString (line 351) | toString() { method isVisibleTo (line 355) | isVisibleTo(_player: Player | number) { method isVisible (line 359) | isVisible() { method all (line 381) | all(className?: any, ...finders: ElementFinder[]) { method first (line 393) | first(className?: any, ...finders: ElementFinder[]) { method firstN (line 409) | firstN(n: number, className?: any, ...finders: ElementFinder[]) { method last (line 421) | last(className?: any, ...finders: ElementFinder[]) { method lastN (line 437) | lastN(n: number, className: any, ...finders: ElementFinder[]) { method top (line 448) | top(className?: any, ...finders: ElementFinder[]) { method topN (line 458) | topN(n: number, className?: any, ...finders: ElementFinder[]) { method bottom (line 468) | bottom(className?: any, ...finders: ElementFinder[]) { method bottomN (line 478) | bottomN(n: number, className?: any, ...finders: ElementFinder[]) { method next (line 489) | next(this: F, ...finders: ElementFinder[]): ... method previous (line 502) | previous(this: F, ...finders: ElementFinder[... method others (line 515) | others(className?: any, ...finders: ElementFinder[]) { method has (line 527) | has(className?: any, ...finders: ElementFinder[]) { method isAdjacentTo (line 540) | isAdjacentTo(element: GameElement): boolean { method distanceTo (line 552) | distanceTo(element: GameElement): number { method adjacencies (line 566) | adjacencies(className?: any, ...finders: ElementFinder[]) { method withinDistance (line 580) | withinDistance(distance: number, className?: any, ...finders: ElementF... method setOrder (line 599) | setOrder(order: typeof this._t.order) { method container (line 611) | container(className?: ElementClass): T | und... method containerWithProperty (line 622) | containerWithProperty(property: string, value?: any): GameElement | un... method isEmpty (line 633) | isEmpty() { method sortBy (line 641) | sortBy(key: GenericSorter | GenericSorter[], direction?: "asc" | "desc... method shuffle (line 649) | shuffle() { method owner (line 664) | get owner(): P | undefined { method mine (line 679) | get mine() { method create (line 700) | create(className: ElementClass, name: string... method createMany (line 747) | createMany(n: number, className: ElementClass(className: ElementClass, name:... method destroy (line 774) | destroy() { method rotation (line 784) | get rotation() { method rotation (line 789) | set rotation(r: number) { method position (line 797) | position() { method branch (line 806) | branch() { method atBranch (line 823) | atBranch(b: string) { method atID (line 839) | atID(id: number): GameElement | undefined { method atRef (line 852) | atRef(ref: number): GameElement | undefined { method _cellAt (line 861) | _cellAt(pos: Vector): string | undefined { method _sizeNeededFor (line 869) | _sizeNeededFor(_element: GameElement) { method setShape (line 902) | setShape(...shape: string[]) { method setEdges (line 947) | setEdges(edges: Record>> | P... method isDescendantOf (line 963) | isDescendantOf(el: GameElement): boolean { method attributeList (line 967) | attributeList(this: T): ElementAttributes { method toJSON (line 983) | toJSON(seenBy?: number) { method createChildrenFromJSON (line 1018) | createChildrenFromJSON(childrenJSON: ElementJSON[], branch: string) { method assignAttributesFromJSON (line 1052) | assignAttributesFromJSON(childrenJSON: ElementJSON[], branch: string) { method resetUI (line 1077) | resetUI() { method layout (line 1105) | layout( method layoutAsDrawer (line 1157) | layoutAsDrawer(applyTo: Space | string, attributes: { method layoutAsTabs (line 1185) | layoutAsTabs(tabs: Record | string>, attributes: { method layoutAsPopout (line 1213) | layoutAsPopout(applyTo: Space | string, attributes: { method configureLayout (line 1226) | configureLayout(layoutConfiguration: Partial) { method appearance (line 1267) | appearance(appearance: ElementUI['appearance']) { method childRefsIfObscured (line 1271) | childRefsIfObscured() { method assignChildRefs (line 1281) | assignChildRefs(refs: number[]) { method hasMoved (line 1287) | hasMoved(): boolean { method resetMovementTracking (line 1291) | resetMovementTracking() { method resetRefTracking (line 1296) | resetRefTracking() { FILE: src/board/fixed-grid.ts method afterCreation (line 31) | afterCreation() { method create (line 50) | create(_className: ElementClass, _name: string): T { method _adjacentGridPositionsTo (line 54) | _adjacentGridPositionsTo(_column: number, _row: number): [number, number... method _gridPositions (line 58) | _gridPositions(): [number, number][] { FILE: src/board/game.ts type ActionLayout (line 35) | type ActionLayout = { type BoardSize (line 95) | type BoardSize = { type BoardSizeMatcher (line 105) | type BoardSizeMatcher = { type BaseGame (line 114) | interface BaseGame extends Game {} class Game (line 124) | class Game) { method registerClasses (line 161) | registerClasses(...classList: ElementClass[]) { method defineFlow (line 178) | defineFlow(...flow: FlowStep[]) { method defineSubflow (line 190) | defineSubflow(name: string, ...flow: FlowStep[]) { method defineActions (line 204) | defineActions(actions: Record Action = NonNullable>(defi... method followUp (line 303) | followUp(action: ActionStub) { method finish (line 348) | finish(winner?: P | P[], announcement?: string) { method getWinners (line 358) | getWinners() { method addDelay (line 369) | addDelay() { method message (line 402) | message(text: string, args?: Record) { method messageTo (line 429) | messageTo(player: (BasePlayer | number) | (BasePlayer | number)[], tex... method announce (line 453) | announce(announcement: string) { method allJSON (line 460) | allJSON(seenBy?: number): ElementJSON[] { method fromJSON (line 467) | fromJSON(boardJSON: ElementJSON[]) { method resetUI (line 515) | resetUI() { method setBoardSize (line 520) | setBoardSize(boardSize: BoardSize) { method getBoardSize (line 526) | getBoardSize(screenX: number, screenY: number, mobile: boolean) { method layoutControls (line 543) | layoutControls(attributes: ActionLayout) { method layoutStep (line 556) | layoutStep(step: string, attributes: ActionLayout) { method layoutAction (line 570) | layoutAction(action: string, attributes: ActionLayout) { method disableDefaultAppearance (line 580) | disableDefaultAppearance() { method showLayoutBoundingBoxes (line 589) | showLayoutBoundingBoxes() { FILE: src/board/hex-grid.ts class HexGrid (line 16) | class HexGrid extends FixedGrid { method _adjacentGridPositionsTo (line 67) | _adjacentGridPositionsTo(column: number, row: number): [number, number... method _gridPositions (line 92) | _gridPositions(): [number, number][] { method _cornerPositions (line 118) | _cornerPositions(): [number, number][] { FILE: src/board/index.ts function union (line 24) | function union(...queries: (T | ElementCollection... FILE: src/board/piece-grid.ts class PieceGrid (line 19) | class PieceGrid extends AdjacencySpace { method constructor (line 58) | constructor(ctx: ElementContext) { method isAdjacent (line 63) | isAdjacent(el1: GameElement, el2: GameElement): boolean { method _sizeNeededFor (line 67) | _sizeNeededFor(element: GameElement) { method cellsAround (line 80) | cellsAround(piece: Piece, pos: Vector) { method isOverlapping (line 97) | isOverlapping(piece: Piece, other?: Piece): boolean { method _fitPieceInFreePlace (line 127) | _fitPieceInFreePlace(piece: Piece, rows: number, columns: number, o... method adjacenciesByCell (line 201) | adjacenciesByCell(piece: Piece, other?: Piece): {piece: Piece... method adjacenciesByEdge (line 287) | adjacenciesByEdge(piece: Piece, other?: Piece): {piece: Piece... FILE: src/board/piece.ts class Piece (line 13) | class Piece>... method createElement (line 20) | createElement(className: ElementClass, name:... method showToAll (line 31) | showToAll() { method showOnlyTo (line 39) | showOnlyTo(player: Player | number) { method showTo (line 52) | showTo(...player: Player[] | number[]) { method hideFromAll (line 67) | hideFromAll() { method hideFrom (line 76) | hideFrom(...player: Player[] | number[]) { method isVisibleTo (line 94) | isVisibleTo(player: Player | number) { method isVisible (line 110) | isVisible() { method revealWhenHidden (line 126) | static revealWhenHidden>(this: ElementClass<... method putInto (line 144) | putInto(to: GameElement, options?: {position?: number, row?: number, c... method cloneInto (line 170) | cloneInto(this: T, into: GameElement): T { method remove (line 192) | remove() { FILE: src/board/single-layout.ts method layout (line 26) | layout() { method resetUI (line 30) | resetUI() { FILE: src/board/space.ts type ElementEventHandler (line 8) | type ElementEventHandler = {callback: (el: T) => ... class Space (line 15) | class Space(className: ElementClass, name: string... method addEventHandler (line 92) | addEventHandler(type: keyof Space['_eventHan... method onEnter (line 109) | onEnter(type: ElementClass, callback: (el: T... method onExit (line 125) | onExit(type: ElementClass, callback: (el: T)... method triggerEvent (line 129) | triggerEvent(event: keyof Space['_eventHandlers'], element: Piece extends FixedGrid { method _adjacentGridPositionsTo (line 22) | _adjacentGridPositionsTo(column: number, row: number): [number, number... method _gridPositions (line 43) | _gridPositions(): [number, number][] { FILE: src/board/stack.ts class Stack (line 14) | class Stack extends SingleLayout { method afterCreation (line 28) | afterCreation() { FILE: src/board/utils.ts function rotateDirection (line 3) | function rotateDirection(dir: Direction, rotation: number) { FILE: src/components/d6/d6.ts class D6 (line 14) | class D6 extends Piece { method roll (line 28) | roll() { FILE: src/flow/action-step.ts type ActionStepPosition (line 10) | type ActionStepPosition = { // turn taken by `player` class ActionStep (line 16) | class ActionStep extends Flow { method constructor (line 33) | constructor({ name, player, players, actions, prompt, description, opt... method reset (line 67) | reset() { method thisStepArgs (line 71) | thisStepArgs() { method setPosition (line 78) | setPosition(position: ActionStepPosition, sequence?: number) { method getPlayers (line 86) | getPlayers() { method awaitingAction (line 93) | awaitingAction() { method currentBlock (line 97) | currentBlock() { method allowedActions (line 106) | allowedActions(): string[] { method actionNeeded (line 110) | actionNeeded(player?: Player): { method processMove (line 137) | processMove(move: { method playOneStep (line 185) | playOneStep(): InterruptSignal[] | FlowControl | Flow { method advance (line 189) | advance() { method toJSON (line 195) | toJSON(forPlayer=true) { method fromJSON (line 207) | fromJSON(position: any) { method allSteps (line 215) | allSteps() { method toString (line 219) | toString(): string { method visualize (line 223) | visualize(top: Flow) { FILE: src/flow/each-player.ts class EachPlayer (line 8) | class EachPlayer

extends ForLoop

{ method constructor (line 12) | constructor({ name, startingPlayer, nextPlayer, turns, continueUntil, ... method setPosition (line 40) | setPosition(position: typeof this.position, sequence?: number, reset=t... method toJSON (line 47) | toJSON() { method fromJSON (line 54) | fromJSON(position: any) { method allSteps (line 61) | allSteps() { method toString (line 65) | toString(): string { method visualize (line 69) | visualize(top: Flow) { FILE: src/flow/enums.ts type LoopInterruptSignal (line 63) | type LoopInterruptSignal = { signal: InterruptControl.repeat | Interrupt... type SubflowSignal (line 64) | type SubflowSignal = { signal: InterruptControl.subflow, data: {name: st... type InterruptSignal (line 65) | type InterruptSignal = LoopInterruptSignal | SubflowSignal function interrupt (line 70) | function interrupt({ signal, data }: InterruptSignal) { type InterruptControl (line 83) | enum InterruptControl { type FlowControl (line 91) | enum FlowControl { FILE: src/flow/every-player.ts type EveryPlayerPosition (line 9) | type EveryPlayerPosition = {positions: FlowBranchJSON[][], sequences: nu... class EveryPlayer (line 11) | class EveryPlayer

extends Flow { method constructor (line 19) | constructor({ players, do: block, name }: { method reset (line 28) | reset() { method thisStepArgs (line 34) | thisStepArgs() { method withPlayer (line 43) | withPlayer(value: number, fn: () => T, mutate=false): T { method getPlayers (line 59) | getPlayers(): P[] { method branchJSON (line 64) | branchJSON(forPlayer=true): FlowBranchJSON[] { method setPosition (line 81) | setPosition(positionJSON: any, sequence?: number) { method currentBlock (line 101) | currentBlock() { method actionNeeded (line 107) | actionNeeded(player?: Player) { method processMove (line 113) | processMove(move: { method playOneStep (line 128) | playOneStep(): InterruptSignal[] | FlowControl | Flow { method toString (line 147) | toString(): string { method visualize (line 151) | visualize(top: Flow) { FILE: src/flow/flow.ts type FlowArguments (line 45) | type FlowArguments = Record; type FlowStep (line 54) | type FlowStep = Flow | ((args: FlowArguments) => any); type FlowDefinition (line 64) | type FlowDefinition = FlowStep | FlowStep[] type FlowBranchNode (line 66) | type FlowBranchNode = ({ type FlowBranchJSON (line 88) | type FlowBranchJSON = ({ type Position (line 96) | type Position = ( type FlowVisualization (line 100) | type FlowVisualization = { class Flow (line 112) | class Flow { method constructor (line 124) | constructor({ name, do: block }: { name?: string, do?: FlowDefinition ... method validateNoDuplicate (line 131) | validateNoDuplicate() { method flowStepArgs (line 138) | flowStepArgs(): FlowArguments { method thisStepArgs (line 148) | thisStepArgs() { method branchJSON (line 154) | branchJSON(forPlayer=true): FlowBranchJSON[] { method setBranchFromJSON (line 166) | setBranchFromJSON(branch: FlowBranchJSON[]) { method setPosition (line 178) | setPosition(position: any, sequence?: number, reset=true) { method setPositionFromJSON (line 200) | setPositionFromJSON(positionJSON: any, sequence?: number) { method currentLoop (line 204) | currentLoop(name?: string): WhileLoop | undefined { method currentProcessor (line 209) | currentProcessor(): Flow | undefined { method actionNeeded (line 214) | actionNeeded(player?: Player): { method processMove (line 225) | processMove(move: NonNullable): string | SubflowSi... method getStep (line 232) | getStep(name: string): Flow | undefined { method playOneStep (line 253) | playOneStep(): InterruptSignal[] | FlowControl | Flow { method play (line 283) | play() { method reset (line 301) | reset() { method currentBlock (line 306) | currentBlock(): FlowDefinition | undefined { method toJSON (line 311) | toJSON(_forPlayer=true): any { method fromJSON (line 316) | fromJSON(json: any): typeof this.position { method advance (line 321) | advance(): FlowControl { method allSteps (line 326) | allSteps(): FlowDefinition | undefined { method toString (line 330) | toString() { method stacktrace (line 334) | stacktrace(indent=0) { method visualize (line 340) | visualize(top: Flow) { method visualizeBlocks (line 351) | visualizeBlocks({ type, blocks, name, top, block, position }: { FILE: src/flow/for-each.ts type ForEachPosition (line 9) | type ForEachPosition = ForLoopPosition & { collection: T[] }; class ForEach (line 11) | class ForEach extends ForLoop { method constructor (line 17) | constructor({ name, collection, do: block }: { method reset (line 33) | reset() { method toJSON (line 38) | toJSON(forPlayer=true) { method fromJSON (line 46) | fromJSON(position: any) { method toString (line 54) | toString(): string { method visualize (line 58) | visualize(top: Flow) { FILE: src/flow/for-loop.ts type ForLoopPosition (line 7) | type ForLoopPosition = { index: number, value: T }; class ForLoop (line 9) | class ForLoop extends WhileLoop { method constructor (line 17) | constructor({ name, initial, next, do: block, while: whileCondition }: { method currentBlock (line 31) | currentBlock() { method toString (line 35) | toString(): string { method visualize (line 39) | visualize(top: Flow) { FILE: src/flow/if-else.ts class If (line 6) | class If extends SwitchCase { method constructor (line 7) | constructor({ name, if: test, do: doExpr, else: elseExpr }: { method toString (line 16) | toString(): string { method visualize (line 20) | visualize(top: Flow) { FILE: src/flow/switch-case.ts type SwitchCasePostion (line 8) | type SwitchCasePostion = { index?: number, value?: T, default?: boole... type SwitchCaseCases (line 9) | type SwitchCaseCases = ({eq: T, do: FlowDefinition} | {test: (a: T) =... class SwitchCase (line 11) | class SwitchCase extends Flow { method constructor (line 18) | constructor({ name, switch: switchExpr, cases, default: def }: { method reset (line 30) | reset() { method currentBlock (line 44) | currentBlock() { method toJSON (line 51) | toJSON(forPlayer=true) { method fromJSON (line 59) | fromJSON(position: any) { method allSteps (line 67) | allSteps(): FlowDefinition { method toString (line 73) | toString(): string { method visualize (line 77) | visualize(top: Flow) { FILE: src/flow/while-loop.ts type WhileLoopPosition (line 7) | type WhileLoopPosition = { index: number, value?: any }; class WhileLoop (line 9) | class WhileLoop extends Flow { method constructor (line 17) | constructor({ do: block, while: whileCondition }: { method reset (line 25) | reset() { method currentBlock (line 36) | currentBlock() { method advance (line 40) | advance() { method repeat (line 52) | repeat() { method exit (line 58) | exit(): FlowControl.complete { method interrupt (line 63) | interrupt(signal: InterruptControl) { method allSteps (line 69) | allSteps() { method toString (line 73) | toString(): string { method visualize (line 77) | visualize(top: Flow) { FILE: src/game-creator.ts type SetupFunction (line 8) | type SetupFunction = ( FILE: src/game-manager.ts type PlayerAttributes (line 24) | type PlayerAttributes = { type Move (line 32) | type Move = { type PendingMove (line 38) | type PendingMove = { type SerializedMove (line 45) | type SerializedMove = { type Message (line 50) | type Message = { type ActionDebug (line 55) | type ActionDebug = Record) { method setRandomSeed (line 118) | setRandomSeed(rseed: string) { method start (line 130) | start() { method play (line 141) | play(): void { method flow (line 175) | flow() { method getFlowStep (line 179) | getFlowStep(name: string) { method beginSubflow (line 186) | beginSubflow(flow: SubflowSignal['data']) { method setFlowFromJSON (line 209) | setFlowFromJSON(json: FlowStackJSON[]) { method startFlow (line 216) | startFlow(flowState: FlowStackJSON) { method flowJSON (line 236) | flowJSON(player: boolean = false) { method getState (line 254) | getState(player?: P): GameState { method getPlayerStates (line 267) | getPlayerStates(): PlayerState[] { method getUpdate (line 276) | getUpdate(): GameUpdate { method contextualizeBoardToPlayer (line 303) | contextualizeBoardToPlayer(player?: Player) { method inContextOfPlayer (line 309) | inContextOfPlayer(player: Player, fn: () => T): T { method trackMovement (line 316) | trackMovement(track=true) { method getAction (line 327) | getAction(name: string, player: P) { method godModeActions (line 348) | godModeActions(): Record { method processMove (line 389) | processMove({ player, name, args }: Move): string | undefined { method allowedActions (line 411) | allowedActions(player: P, debug?: ActionDebug): { method getPendingMoves (line 453) | getPendingMoves(player: P, name?: string, args?: Record extends Array

{ method addPlayer (line 29) | addPlayer(attrs: PlayerAttributes & Record) { method atPosition (line 41) | atPosition(position: number) { method current (line 49) | current(): P | undefined { method allCurrent (line 57) | allCurrent(): P[] { method host (line 64) | host(): P { method notCurrent (line 71) | notCurrent() { method inPositionOrder (line 79) | inPositionOrder() { method setCurrent (line 89) | setCurrent(players: number | P | number[] | P[]) { method next (line 98) | next() { method after (line 110) | after(player: number | P) { method seatedNext (line 118) | seatedNext(player: P, steps = 1) { method turnOrderOf (line 127) | turnOrderOf(player: number | P) { method sortBy (line 141) | sortBy(key: Sorter

| (Sorter

)[], direction?: "asc" | "desc") { method sortedBy (line 159) | sortedBy(key: Sorter

| (Sorter

)[], direction: "asc" | "desc" = "... method sum (line 163) | sum(key: ((e: P) => number) | (keyof {[K in keyof P]: P[K] extends num... method withHighest (line 167) | withHighest(...attributes: Sorter

[]) { method withLowest (line 171) | withLowest(...attributes: Sorter

[]) { method shuffle (line 175) | shuffle() { method max (line 179) | max(key: K): P[K] { method min (line 183) | min(key: K): P[K] { method fromJSON (line 187) | fromJSON(players: Record[]) { method assignAttributesFromJSON (line 196) | assignAttributesFromJSON(players: PlayerAttributes[]) { FILE: src/player/player.ts type BasePlayer (line 9) | interface BasePlayer extends Player {} class Player (line 18) | class Player(this: {new(): P; hiddenAttributes: s... method isCurrent (line 65) | isCurrent() { method setCurrent (line 72) | setCurrent(this: P) { method others (line 79) | others(): P[] { method other (line 86) | other(): P { method allMy (line 98) | allMy(className?: any, ...finders: ElementFinder[]) { method my (line 109) | my(className?: any, ...finders: ElementFinder[]) { method has (line 120) | has(className?: any, ...finders: ElementFinder[]): boolean { method toJSON (line 124) | toJSON(player?: Player) { method toString (line 148) | toString() { FILE: src/test-runner.ts type Window (line 12) | interface Window { class TestRunnerPlayer (line 17) | class TestRunnerPlayer { method constructor (line 25) | constructor(runner: TestRunner, position: number, store: ReturnType... method move (line 33) | move(name: string, args: Record) { method actions (line 49) | actions() { class TestRunner (line 56) | class TestRunner { method constructor (line 68) | constructor(private setup: SetupFunction, mocks?: (game: G) => void) { method start (line 100) | start({players, settings}: { method getCurrentGame (line 130) | getCurrentGame() { method updatePlayers (line 135) | updatePlayers() { method updatePlayersFromState (line 140) | updatePlayersFromState() { FILE: src/test/fixtures/games.ts class TestPlayer (line 9) | class TestPlayer extends Player { class TestGame (line 13) | class TestGame extends Game { class Token (line 17) | class Token extends Piece { FILE: src/test/game_manager_test.ts class TestPlayer (line 22) | class TestPlayer extends Player { class TestGame (line 28) | class TestGame extends Game { class Card (line 32) | class Card extends Piece { class Country (line 38) | class Country extends Space { class General (line 42) | class General extends Piece { FILE: src/test/game_test.ts class Country (line 150) | class Country extends Space { class Country (line 167) | class Country extends Space { class General (line 170) | class General extends Piece { class Card (line 229) | class Card extends Piece { class Cell (line 746) | class Cell extends Space { color: string } FILE: src/test/render_test.ts class Country (line 326) | class Country extends Space { } FILE: src/test/ui_test.ts function getGameStore (line 271) | function getGameStore(gameCreator: (game: Game) => void) { function updateStore (line 278) | function updateStore(store: ReturnType, players:... FILE: src/ui/Main.tsx type User (line 10) | type User = { type UsersEvent (line 23) | type UsersEvent = { type UserOnlineEvent (line 28) | type UserOnlineEvent = { type GameSettings (line 34) | type GameSettings = Record type SettingsUpdateEvent (line 37) | type SettingsUpdateEvent = { type GameUpdateEvent (line 43) | type GameUpdateEvent = { type GameFinishedEvent (line 50) | type GameFinishedEvent = { type MessageProcessedEvent (line 58) | type MessageProcessedEvent = { type SeatOperation (line 64) | type SeatOperation = { type UnseatOperation (line 73) | type UnseatOperation = { type UpdateOperation (line 78) | type UpdateOperation = { type PlayerOperation (line 87) | type PlayerOperation = SeatOperation | UnseatOperation | UpdateOperation type UpdatePlayersMessage (line 89) | type UpdatePlayersMessage = { type UpdateSettingsMessage (line 95) | type UpdateSettingsMessage = { type StartMessage (line 103) | type StartMessage = { type ReadyMessage (line 109) | type ReadyMessage = { type SwitchPlayerMessage (line 113) | type SwitchPlayerMessage = { FILE: src/ui/game/components/ProfileBadge.tsx function ProfileBadge (line 14) | function ProfileBadge({player}: {player: Player}) { FILE: src/ui/lib.ts type GamePendingMoves (line 16) | type GamePendingMoves = ReturnType; type UIMove (line 18) | type UIMove = PendingMove & { type MoveMessage (line 23) | type MoveMessage = { class NoRandomAllowed (line 35) | class NoRandomAllowed extends Error {} function updateSelections (line 45) | function updateSelections(store: GameStore): GameStore { function updateControls (line 261) | function updateControls(store: GameStore): Pick { function updateBoardSelections (line 376) | function updateBoardSelections(store: GameStore): Pick { function removePlacementPiece (line 450) | function removePlacementPiece(placement: NonNullable { FILE: src/ui/queue.ts class Queue (line 1) | class Queue { method constructor (line 7) | constructor( method schedule (line 12) | schedule(update: () => any, waitIfProcessing = false) { method pump (line 19) | pump() { method pause (line 32) | pause() { method resume (line 36) | resume() { FILE: src/ui/render.ts type UIRender (line 11) | type UIRender = { type UI (line 51) | type UI = { function applyLayouts (line 64) | function applyLayouts(game: Game, base?: (b: Game) => void): UI { function applyDOMKeys (line 100) | function applyDOMKeys(render: UIRender, ui: UI, oldUI: UI) { function applyDiff (line 118) | function applyDiff(render: UIRender, ui: UI, oldUI: UI): boolean { function calcLayouts (line 263) | function calcLayouts(el: GameElement, ui: UI): UIRender['layouts'] { function applyBaseStyles (line 843) | function applyBaseStyles(render: UIRender, element: GameElement) { function getLayoutItems (line 875) | function getLayoutItems(el: GameElement) { function getArea (line 920) | function getArea(absolutePosition: Box, margin?: number | { top: number,... function translate (line 944) | function translate(original: Box, transform: Box): Box { function cellBoxRC (line 953) | function cellBoxRC( function cellSizeForArea (line 985) | function cellSizeForArea( function getTotalArea (line 1016) | function getTotalArea( FILE: src/ui/setup/components/settingComponents.tsx type SetupComponentProps (line 5) | type SetupComponentProps = { FILE: src/ui/store.ts type GameStore (line 33) | type GameStore = { type SetupComponentProps (line 398) | type SetupComponentProps = {