import type { Layer } from "./layer"; import { LayerStack } from "./layerStack"; import type { DefaultLayerError, EndArgs, LayerCallContext, LayerState, } from "./types"; /** * Creates the framework-neutral imperative context passed to a layer component. * Adapters provide rendering; stack and layer instances retain lifecycle control. */ export function createCallContext( stack: LayerStack, layer: Layer, state: LayerState, rootProps?: RootProps, ): LayerCallContext { return { end: (...args: EndArgs) => { const [response, opts] = args; return stack.dismiss(layer, response as R, opts); }, dismiss: (...args: EndArgs) => { const [response, opts] = args; return stack.dismiss(layer, response as R, opts); }, addBlocker: (fn) => layer.addBlocker(fn), update: (patch: Partial

) => stack.update(layer, patch), setRunning: (running: boolean) => stack.setRunning(layer, running), settle: () => stack.settle(layer), ended: state.ended, index: state.index, stackSize: state.stackSize, root: rootProps as RootProps, stackId: stack.id, layerId: layer.id, }; }