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;