import { Node } from "../html/ast"; import { EngineDelegateEvent } from "./events"; import { DependencyContent } from "./graph"; import { LoadedData } from "../html/virt"; export enum BasicPaperclipActionType { AST_REQUESTED = "AST_REQUESTED", LOADED_DATA_REQUESTED = "LOADED_DATA_REQUESTED", LOADED_DATA_EMITTED = "LOADED_DATA_EMITTED", AST_EMITTED = "AST_EMITTED", ENGINE_DELEGATE_CHANGED = "ENGINE_DELEGATE_CHANGED", PREVIEW_CONTENT = "PREVIEW_CONTENT" } export const actionCreator = >( type: TAction["type"] ) => (payload: TAction["payload"]) => ({ type, payload }); type BaseAction = { type: TType; payload: TPayload; }; export type AstRequested = BaseAction< BasicPaperclipActionType.AST_REQUESTED, { uri: string } >; export type LoadedDataRequested = BaseAction< BasicPaperclipActionType.LOADED_DATA_REQUESTED, { uri: string } >; export type LoadedDataEmitted = BaseAction< BasicPaperclipActionType.LOADED_DATA_EMITTED, { uri: string; data: LoadedData; imports: Record; ast: DependencyContent; } >; export type PreviewContent = BaseAction< BasicPaperclipActionType.PREVIEW_CONTENT, { uri: string; value: string } >; export type AstEmitted = BaseAction< BasicPaperclipActionType.AST_EMITTED, { uri: string; content: DependencyContent } >; export type EngineDelegateChanged = BaseAction< BasicPaperclipActionType.ENGINE_DELEGATE_CHANGED, EngineDelegateEvent >; export const astEmitted = actionCreator( BasicPaperclipActionType.AST_EMITTED ); export const astRequested = actionCreator( BasicPaperclipActionType.AST_REQUESTED ); export const loadedDataRequested = actionCreator( BasicPaperclipActionType.LOADED_DATA_REQUESTED ); export const loadedDataEmitted = actionCreator( BasicPaperclipActionType.LOADED_DATA_EMITTED ); export const previewContent = actionCreator( BasicPaperclipActionType.PREVIEW_CONTENT ); export const engineDelegateChanged = actionCreator( BasicPaperclipActionType.ENGINE_DELEGATE_CHANGED ); export type BasicPaperclipAction = | AstEmitted | AstRequested | LoadedDataRequested | LoadedDataEmitted | EngineDelegateChanged | PreviewContent;