import { Cell } from '@ephox/katamari'; import type { BehaviourState, BehaviourStateInitialiser } from './BehaviourState'; export interface BehaviourCellState extends BehaviourState { readonly get: () => T; readonly set: (newState: T) => void; readonly clear: () => void; readonly readState: () => any; } export const SetupBehaviourCellState = (initialState: T): BehaviourStateInitialiser> => { const init = (): BehaviourCellState => { const cell = Cell(initialState); const get = () => cell.get(); const set = (newState: T) => cell.set(newState); const clear = () => cell.set(initialState); const readState = (): any => cell.get(); return { get, set, clear, readState }; }; return { init }; };