tandem-front-end
Version:
Visual editor for web components
914 lines (785 loc) • 22.8 kB
text/typescript
import { Action } from "redux";
import * as React from "react";
import {
Directory,
Point,
Bounds,
Struct,
StructReference,
TreeNode,
File,
TreeMoveOffset,
FSItem,
FSItemTagNames
} from "tandem-common";
import { publicActionCreator } from "tandem-common";
import {
Dependency,
DependencyGraph,
ComputedDisplayInfo,
SyntheticNativeNodeMap,
SyntheticVisibleNode,
PCNodeClip,
Frame,
PCComponent
} from "paperclip";
import { RegisteredComponent } from "..";
import { ClientOffset } from "react-dnd";
import { FrameMode, ToolType } from "../state";
export const PROJECT_LOADED = "PROJECT_LOADED";
export const ACTIVE_FILE_CHANGED = "ACTIVE_FILE_CHANGED";
export const SYNTHETIC_WINDOW_OPENED = "SYNTHETIC_WINDOW_OPENED";
export const PROJECT_DIRECTORY_LOADED = "PROJECT_DIRECTORY_LOADED";
export const DOCUMENT_RENDERED = "DOCUMENT_RENDERERED";
export const CANVAS_TOOL_OVERLAY_MOUSE_LEAVE =
"CANVAS_TOOL_OVERLAY_MOUSE_LEAVE";
export const CANVAS_TOOL_OVERLAY_MOUSE_PAN_START =
"CANVAS_TOOL_OVERLAY_MOUSE_PAN_START";
export const CANVAS_TOOL_OVERLAY_MOUSE_PANNING =
"CANVAS_TOOL_OVERLAY_MOUSE_PANNING";
export const CANVAS_TOOL_OVERLAY_MOUSE_PAN_END =
"CANVAS_TOOL_OVERLAY_MOUSE_PAN_END";
export const CANVAS_TOOL_OVERLAY_MOUSE_DOUBLE_CLICKED =
"CANVAS_TOOL_OVERLAY_MOUSE_DOUBLE_CLICKED";
export const CANVAS_TOOL_WINDOW_BACKGROUND_CLICKED =
"CANVAS_TOOL_WINDOW_BACKGROUND_CLICKED";
export const CANVAS_TOOL_WINDOW_KEY_DOWN = "CANVAS_TOOL_WINDOW_KEY_DOWN";
export const CANVAS_TOOL_ARTBOARD_TITLE_CLICKED =
"CANVAS_TOOL_ARTBOARD_TITLE_CLICKED";
export const CANVAS_TOOL_PREVIEW_BUTTON_CLICKED =
"CANVAS_TOOL_PREVIEW_BUTTON_CLICKED";
export const FILE_NAVIGATOR_ITEM_CLICKED = "FILE_NAVIGATOR_ITEM_CLICKED";
export const FILE_NAVIGATOR_ITEM_DOUBLE_CLICKED =
"FILE_NAVIGATOR_ITEM_DOUBLE_CLICKED";
export const FILE_NAVIGATOR_NEW_FILE_CLICKED =
"FILE_NAVIGATOR_NEW_FILE_CLICKED";
export const FILE_NAVIGATOR_NEW_DIRECTORY_CLICKED =
"FILE_NAVIGATOR_NEW_DIRECTORY_CLICKED";
export const FILE_NAVIGATOR_TOGGLE_DIRECTORY_CLICKED =
"FILE_NAVIGATOR_TOGGLE_DIRECTORY_CLICKED";
export const FILE_NAVIGATOR_NEW_FILE_ENTERED =
"FILE_NAVIGATOR_NEW_FILE_ENTERED";
export const FILE_NAVIGATOR_DROPPED_ITEM = "FILE_NAVIGATOR_DROPPED_ITEM";
export const TOOLBAR_TOOL_CLICKED = "TOOLBAR_TOOL_CLICKED";
export const EDITOR_TAB_CLICKED = "EDITOR_TAB_CLICKED";
export const EDITOR_TAB_CLOSE_BUTTON_CLICKED =
"EDITOR_TAB_CLOSE_BUTTON_CLICKED";
export const OPEN_FILE_ITEM_CLICKED = "OPEN_FILE_ITEM_CLICKED";
export const OPEN_FILE_ITEM_CLOSE_CLICKED = "OPEN_FILE_ITEM_CLOSE_CLICKED";
export const CANVAS_MOUNTED = "CANVAS_MOUNTED";
export const CANVAS_MOUSE_MOVED = "CANVAS_MOUSE_MOVED";
export const CANVAS_DRAGGED_OVER = "CANVAS_DRAGGED_OVER";
export const CANVAS_MOUSE_CLICKED = "CANVAS_MOUSE_CLICKED";
export const CANVAS_WHEEL = "CANVAS_WHEEL";
export const CANVAS_MOTION_RESTED = "CANVAS_MOTION_RESTED";
export const CANVAS_DROPPED_ITEM = "CANVAS_DROPPED_ITEM";
export const FRAME_MODE_CHANGE_COMPLETE = "FRAME_MODE_CHANGE_COMPLETE";
export const RESIZER_PATH_MOUSE_MOVED = "RESIZER_PATH_MOUSE_MOVED";
export const RESIZER_PATH_MOUSE_STOPPED_MOVING =
"RESIZER_PATH_MOUSE_STOPPED_MOVING";
export const RESIZER_MOVED = "RESIZER_MOVED";
export const RESIZER_STOPPED_MOVING = "RESIZER_STOPPED_MOVING";
export const COMPONENT_PICKER_BACKGROUND_CLICK =
"COMPONENT_PICKER_BACKGROUND_CLICK";
export const COMPONENT_PICKER_ITEM_CLICK = "COMPONENT_PICKER_ITEM_CLICK";
export const RESIZER_MOUSE_DOWN = "RESIZER_MOUSE_DOWN";
export const RESIZER_START_DRGG = "RESIZER_START_DRGG";
export const SELECTOR_DOUBLE_CLICKED = "SELECTOR_DOUBLE_CLICKED";
export const SHORTCUT_ZOOM_IN_KEY_DOWN = "SHORTCUT_ZOOM_IN_KEY_DOWN";
export const SHORTCUT_ZOOM_OUT_KEY_DOWN = "SHORTCUT_ZOOM_OUT_KEY_DOWN";
export const SHORTCUT_ESCAPE_KEY_DOWN = "SHORTCUT_ESCAPE_KEY_DOWN";
export const SHORTCUT_SAVE_KEY_DOWN = "SHORTCUT_SAVE_KEY_DOWN";
export const SHORTCUT_QUICK_SEARCH_KEY_DOWN = "SHORTCUT_QUICK_SEARCH_KEY_DOWN";
export const SHORTCUT_DELETE_KEY_DOWN = "SHORTCUT_DELETE_KEY_DOWN";
export const SHORTCUT_UNDO_KEY_DOWN = "SHORTCUT_UNDO_KEY_DOWN";
export const SHORTCUT_REDO_KEY_DOWN = "SHORTCUT_REDO_KEY_DOWN";
export const SHORTCUT_R_KEY_DOWN = "SHORTCUT_R_KEY_DOWN";
export const SHORTCUT_C_KEY_DOWN = "SHORTCUT_C_KEY_DOWN";
export const SHORTCUT_T_KEY_DOWN = "SHORTCUT_T_KEY_DOWN";
export const SHORTCUT_SELECT_NEXT_TAB = "SHORTCUT_SELECT_NEXT_TAB";
export const SHORTCUT_SELECT_PREVIOUS_TAB = "SHORTCUT_SELECT_PREVIOUS_TAB";
export const SHORTCUT_CLOSE_CURRENT_TAB = "SHORTCUT_CLOSE_CURRENT_TAB";
export const SHORTCUT_CONVERT_TO_COMPONENT_KEY_DOWN =
"SHORTCUT_CONVERT_TO_COMPONENT_KEY_DOWN";
export const INSERT_TOOL_FINISHED = "INSERT_TOOL_FINISHED";
export const SYNTHETIC_NODES_PASTED = "SYNTHETIC_NODES_PASTED";
export const APP_LOADED = "APP_LOADED";
export const SAVED_FILE = "SAVED_FILE";
export const SAVED_ALL_FILES = "SAVED_ALL_FILES";
export const NEW_FILE_ENTERED = "NEW_FILE_ENTERED";
export const NEW_DIRECTORY_ENTERED = "NEW_DIRECTORY_ENTERED";
export const RAW_CSS_TEXT_CHANGED = "RAW_CSS_TEXT_CHANGED";
export const CSS_PROPERTY_CHANGED = "CSS_PROPERTY_CHANGED";
export const CSS_PROPERTY_CHANGE_COMPLETED = "CSS_PROPERTY_CHANGE_COMPLETED";
export const ATTRIBUTE_CHANGED = "ATTRIBUTE_CHANGED";
export const SLOT_TOGGLE_CLICK = "SLOT_TOGGLE_CLICK";
export const NATIVE_NODE_TYPE_CHANGED = "NATIVE_NODE_TYPE_CHANGED";
export const TEXT_VALUE_CHANGED = "TEXT_VALUE_CHANGED";
export const ELEMENT_TYPE_CHANGED = "ELEMENT_TYPE_CHANGED";
export const PC_LAYER_MOUSE_OVER = "PC_LAYER_MOUSE_OVER";
export const PC_LAYER_MOUSE_OUT = "PC_LAYER_MOUSE_OUT";
export const PC_LAYER_CLICK = "PC_LAYER_CLICK";
export const PC_LAYER_DOUBLE_CLICK = "PC_LAYER_DOUBLE_CLICK";
export const PC_LAYER_LABEL_CHANGED = "PC_LAYER_LABEL_CHANGED";
export const PC_LAYER_EXPAND_TOGGLE_CLICK = "PC_LAYER_EXPAND_TOGGLE_CLICK";
export const PC_LAYER_DROPPED_NODE = "PC_LAYER_DROPPED_NODE";
export const PC_LAYER_EDIT_LABEL_BLUR = "PC_LAYER_EDIT_LABEL_BLUR";
export const NEW_FILE_ADDED = "NEW_FILE_ADDED";
export const QUICK_SEARCH_ITEM_CLICKED = "QUICK_SEARCH_ITEM_CLICKED";
export const QUICK_SEARCH_BACKGROUND_CLICK = "QUICK_SEARCH_BACKGROUND_CLICK";
export const NEW_VARIANT_NAME_ENTERED = "NEW_VARIANT_NAME_ENTERED";
export const COMPONENT_VARIANT_REMOVED = "COMPONENT_VARIANT_REMOVED";
export const COMPONENT_VARIANT_NAME_CHANGED = "COMPONENT_VARIANT_NAME_CHANGED";
export const COMPONENT_VARIANT_NAME_CLICKED = "COMPONENT_VARIANT_NAME_CLICKED";
export const COMPONENT_VARIANT_NAME_DEFAULT_TOGGLE_CLICK =
"COMPONENT_VARIANT_NAME_DEFAULT_TOGGLE_CLICK";
export const ELEMENT_VARIANT_TOGGLED = "ELEMENT_VARIANT_TOGGLED";
export type WrappedEvent<T> = {
sourceEvent: T;
} & Action;
export type ProjectLoaded = {
uri: string;
} & Action;
export type DocumentRendered = {
nativeMap: SyntheticNativeNodeMap;
documentId: string;
info: ComputedDisplayInfo;
} & Action;
export type FileNavigatorItemClicked = {
node: FSItem;
} & Action;
export type OpenFilesItemClick = {
uri: string;
} & WrappedEvent<React.MouseEvent<any>>;
export type ToolbarToolClicked = {
toolType: ToolType;
} & Action;
export type RawCSSTextChanged = {
value: string;
} & Action;
export type CSSPropertyChanged = {
name: string;
value: string;
} & Action;
export type AttributeChanged = {
name: string;
value: string;
} & Action;
export type ProjectDirectoryLoaded = {
directory: Directory;
} & Action;
export type CanvasToolOverlayMousePanStart = {
documentId: string;
} & Action;
export type CanvasToolOverlayMousePanning = {
documentId: string;
deltaY: number;
velocityY: number;
center: Point;
} & Action;
export type NewFileAdded = {
uri: string;
fileType: FSItemTagNames;
} & Action;
export type CanvasToolOverlayMousePanEnd = {
documentId: string;
} & Action;
export type CanvasToolOverlayClicked = {
documentId: string;
} & WrappedEvent<React.MouseEvent<any>>;
export type CanvasToolOverlayMouseMoved = {} & WrappedEvent<
React.MouseEvent<any>
>;
export type ElementVariantToggled = {
node: SyntheticVisibleNode;
newVariants: string[];
} & Action;
export type CanvasWheel = {
canvasWidth: number;
canvasHeight: number;
type: string;
metaKey: boolean;
ctrlKey: boolean;
deltaX: number;
deltaY: number;
} & Action;
export type TreeLayerMouseOver = {
type: string;
node: TreeNode<any>;
} & Action;
export type TreeLayerLabelChanged = {
label: string;
node: TreeNode<any>;
} & Action;
export type TreeLayerDroppedNode = {
node: TreeNode<any>;
targetNode: TreeNode<any>;
offset?: 0 | -1 | 1;
} & Action;
export type TreeLayerClick = TreeLayerMouseOver &
WrappedEvent<React.MouseEvent<any>>;
export type TreeLayerExpandToggleClick = TreeLayerMouseOver;
export type TreeLayerMouseOut = TreeLayerMouseOver;
export type CanvasMounted = {
element: HTMLDivElement;
fileUri: string;
} & Action;
export type NewFileEntered = {
basename: string;
} & Action;
export type CanvasToolWindowKeyDown = {
documentId: string;
} & WrappedEvent<React.KeyboardEvent<any>>;
export type CanvasToolArtboardTitleClicked = {
frame: Frame;
} & WrappedEvent<React.MouseEvent<any>>;
export type SlotToggleClick = {} & Action;
export type NativeNodeTypeChanged = {
nativeType: string;
} & Action;
export type NewVariantNameEntered = {
value: string;
} & Action;
export type ComponentVariantNameChanged = {
oldName: string;
newName: string;
} & Action;
export type ComponentVariantNameClicked = {
name: string;
} & Action;
export type ComponentVariantRemoved = {
name: string;
} & Action;
export type ComponentVariantNameDefaultToggleClick = {
name: string;
value: boolean;
} & Action;
export type TextValueChanged = {
value: string;
} & Action;
export type ElementTypeChanged = {
value: string;
} & Action;
export type ResizerPathMoved = {
originalBounds: Bounds;
newBounds: Bounds;
anchor: Point;
} & WrappedEvent<MouseEvent>;
export type ResizerMoved = {
point: Point;
} & Action;
export type ResizerMouseDown = {} & WrappedEvent<React.MouseEvent<any>>;
export type ResizerPathStoppedMoving = {} & ResizerPathMoved;
export type FrameModeChangeComplete = {
frame: Frame;
mode: FrameMode;
} & Action;
export type SelectorDoubleClicked = {
nodeId: string;
} & WrappedEvent<React.MouseEvent<any>>;
export type ShortcutKeyDown = {};
export type QuickSearchItemClicked = {
file: File;
} & Action;
export type ComponentPickerItemClick = {
component: PCComponent;
} & Action;
export type SavedFile = {
uri: string;
} & Action;
export type SavedAllFiles = {} & Action;
export type InsertToolFinished = {
fileUri: string;
point: Point;
} & Action;
export type SyntheticVisibleNodesPasted = {
clips: PCNodeClip[];
} & Action;
export type FileNavigatorLabelClicked = {
fileId: string;
} & Action;
export type FileNavigatorNewFileEntered = {
basename: string;
} & Action;
export type FileNavigatorDroppedItem = {
node: File;
targetNode: FSItem;
offset: TreeMoveOffset;
} & Action;
export type EditorTabClicked = {
uri: string;
} & Action;
export type CanvasDroppedItem = {
editorUri: string;
item: RegisteredComponent | TreeNode<any>;
point: Point;
} & Action;
export type CanvasDraggingOver = {
item: any;
offset: Point;
} & Action;
export const fileNavigatorDroppedItem = (
node: File,
targetNode: Directory,
offset: 0 | -1 | 1
): FileNavigatorDroppedItem => ({
node,
targetNode,
offset,
type: FILE_NAVIGATOR_DROPPED_ITEM
});
export const editorTabClicked = (uri: string): EditorTabClicked => ({
uri,
type: EDITOR_TAB_CLICKED
});
export const editorTabCloseButtonClicked = (uri: string): EditorTabClicked => ({
uri,
type: EDITOR_TAB_CLOSE_BUTTON_CLICKED
});
export const fileNavigatorItemClicked = (
node: FSItem
): FileNavigatorItemClicked => ({
node,
type: FILE_NAVIGATOR_ITEM_CLICKED
});
export const fileNavigatorToggleDirectoryClicked = (
node: FSItem
): FileNavigatorItemClicked => ({
node,
type: FILE_NAVIGATOR_TOGGLE_DIRECTORY_CLICKED
});
export const newFileAdded = (
uri: string,
fileType: FSItemTagNames
): NewFileAdded => ({
uri,
fileType,
type: NEW_FILE_ADDED
});
export const elementVariantToggled = (
newVariants: string[],
node: SyntheticVisibleNode
): ElementVariantToggled => ({
newVariants,
node,
type: ELEMENT_VARIANT_TOGGLED
});
export const fileNavigatorNewFileClicked = (): Action => ({
type: FILE_NAVIGATOR_NEW_FILE_CLICKED
});
export const fileNavigatorNewDirectoryClicked = (): Action => ({
type: FILE_NAVIGATOR_NEW_DIRECTORY_CLICKED
});
export const componentPickerBackgroundClick = (): Action => ({
type: COMPONENT_PICKER_BACKGROUND_CLICK
});
export const componentPickerItemClick = (
component: PCComponent
): ComponentPickerItemClick => ({
component,
type: COMPONENT_PICKER_ITEM_CLICK
});
export const quickSearchItemClicked = (file: File): QuickSearchItemClicked => ({
file,
type: QUICK_SEARCH_ITEM_CLICKED
});
export const quickSearchBackgroundClick = (): Action => ({
type: QUICK_SEARCH_BACKGROUND_CLICK
});
export const fileNavigatorNewFileEntered = (
basename: string
): FileNavigatorNewFileEntered => ({
basename,
type: FILE_NAVIGATOR_NEW_FILE_ENTERED
});
export const openFilesItemClick = (
uri: string,
sourceEvent: React.MouseEvent<any>
): OpenFilesItemClick => ({
uri,
sourceEvent,
type: OPEN_FILE_ITEM_CLICKED
});
export const openFilesItemCloseClick = (uri: string): OpenFilesItemClick => ({
uri,
sourceEvent: null,
type: OPEN_FILE_ITEM_CLOSE_CLICKED
});
export const frameModeChangeComplete = (
frame: Frame,
mode: FrameMode
): FrameModeChangeComplete => ({
type: FRAME_MODE_CHANGE_COMPLETE,
frame,
mode
});
export const toolbarToolClicked = (toolType: ToolType): ToolbarToolClicked => ({
type: TOOLBAR_TOOL_CLICKED,
toolType
});
export const fileNavigatorItemDoubleClicked = (
node: FSItem
): FileNavigatorItemClicked => ({
node,
type: FILE_NAVIGATOR_ITEM_DOUBLE_CLICKED
});
export const pcLayerMouseOver = (node: TreeNode<any>): TreeLayerMouseOver => ({
node,
type: PC_LAYER_MOUSE_OVER
});
export const pcLayerDoubleClick = (
node: TreeNode<any>
): TreeLayerMouseOver => ({
node,
type: PC_LAYER_DOUBLE_CLICK
});
export const pcLayerLabelChanged = (
label: string,
node: TreeNode<any>
): TreeLayerLabelChanged => ({
label,
node,
type: PC_LAYER_LABEL_CHANGED
});
export const pcLayerMouseOut = (node: TreeNode<any>): TreeLayerMouseOut => ({
node,
type: PC_LAYER_MOUSE_OUT
});
export const pcEditLayerLabelBlur = (
node: TreeNode<any>
): TreeLayerMouseOut => ({
node,
type: PC_LAYER_EDIT_LABEL_BLUR
});
export const pcLayerClick = (
node: TreeNode<any>,
sourceEvent: React.MouseEvent<any>
): TreeLayerClick => ({
node,
sourceEvent,
type: PC_LAYER_CLICK
});
export const newVariantNameEntered = (
value: string
): NewVariantNameEntered => ({
value,
type: NEW_VARIANT_NAME_ENTERED
});
export const componentComponentVariantNameChanged = (
oldName: string,
newName: string
): ComponentVariantNameChanged => ({
oldName,
newName,
type: COMPONENT_VARIANT_NAME_CHANGED
});
export const componentComponentVariantNameClicked = (
name: string
): ComponentVariantNameClicked => ({
name,
type: COMPONENT_VARIANT_NAME_CLICKED
});
export const componentVariantRemoved = (
name: string
): ComponentVariantRemoved => ({
name,
type: COMPONENT_VARIANT_REMOVED
});
export const componentVariantNameDefaultToggleClick = (
name: string,
value: boolean
): ComponentVariantNameDefaultToggleClick => ({
name,
value,
type: COMPONENT_VARIANT_NAME_DEFAULT_TOGGLE_CLICK
});
export const pcLayerExpandToggleClick = (
node: TreeNode<any>
): TreeLayerExpandToggleClick => ({
node,
type: PC_LAYER_EXPAND_TOGGLE_CLICK
});
export const pcLayerDroppedNode = (
node: SyntheticVisibleNode,
targetNode: TreeNode<any>,
offset?: 0 | -1 | 1
): TreeLayerDroppedNode => ({
node,
targetNode,
offset,
type: PC_LAYER_DROPPED_NODE
});
export const rawCssTextChanged = (value: string): RawCSSTextChanged => ({
value,
type: RAW_CSS_TEXT_CHANGED
});
export const cssPropertyChanged = (
name: string,
value: string
): CSSPropertyChanged => ({
name,
value,
type: CSS_PROPERTY_CHANGED
});
export const cssPropertyChangeCompleted = (
name: string,
value: string
): CSSPropertyChanged => ({
name,
value,
type: CSS_PROPERTY_CHANGE_COMPLETED
});
export const attributeChanged = (
name: string,
value: string
): AttributeChanged => ({
name,
value,
type: ATTRIBUTE_CHANGED
});
export const slotToggleClick = (): SlotToggleClick => ({
type: SLOT_TOGGLE_CLICK
});
export const nativeNodeTypeChange = (
nativeType: string
): NativeNodeTypeChanged => ({
nativeType,
type: NATIVE_NODE_TYPE_CHANGED
});
export const textValueChanged = (value: string): TextValueChanged => ({
value,
type: TEXT_VALUE_CHANGED
});
export const elementTypeChanged = (value: string): ElementTypeChanged => ({
value,
type: ELEMENT_TYPE_CHANGED
});
export const appLoaded = publicActionCreator(() => ({ type: APP_LOADED }));
export const newFileEntered = (basename: string): NewFileEntered => ({
basename,
type: NEW_FILE_ENTERED
});
export const newDirectoryEntered = (basename: string): NewFileEntered => ({
basename,
type: NEW_DIRECTORY_ENTERED
});
export const projectLoaded = (uri: string): ProjectLoaded => ({
uri,
type: PROJECT_LOADED
});
export const projectDirectoryLoaded = publicActionCreator(
(directory: Directory): ProjectDirectoryLoaded => ({
directory,
type: PROJECT_DIRECTORY_LOADED
})
);
export const shortcutKeyDown = publicActionCreator(
(type: string): ShortcutKeyDown => ({
type
})
);
export const syntheticNodesPasted = (
clips: PCNodeClip[]
): SyntheticVisibleNodesPasted => ({
clips,
type: SYNTHETIC_NODES_PASTED
});
export const documentRendered = (
documentId: string,
info: ComputedDisplayInfo,
nativeMap: SyntheticNativeNodeMap
): DocumentRendered => ({
nativeMap,
documentId,
info,
type: DOCUMENT_RENDERED
});
export const savedFile = (uri: string): SavedFile => ({
uri,
type: SAVED_FILE
});
export const savedAllFiles = (uri: string): SavedAllFiles => ({
type: SAVED_ALL_FILES
});
export const canvasToolOverlayMousePanStart = (
documentId: string
): CanvasToolOverlayMousePanStart => ({
documentId,
type: CANVAS_TOOL_OVERLAY_MOUSE_PAN_START
});
export const canvasToolOverlayMousePanning = (
documentId: string,
center: Point,
deltaY: number,
velocityY: number
): CanvasToolOverlayMousePanning => ({
documentId,
center,
deltaY,
velocityY,
type: CANVAS_TOOL_OVERLAY_MOUSE_PANNING
});
export const canvasToolOverlayMouseLeave = (
sourceEvent: React.MouseEvent<any>
): CanvasToolOverlayMouseMoved => ({
type: CANVAS_TOOL_OVERLAY_MOUSE_LEAVE,
sourceEvent
});
export const canvasToolOverlayMousePanEnd = (
documentId: string
): CanvasToolOverlayMousePanEnd => ({
documentId,
type: CANVAS_TOOL_OVERLAY_MOUSE_PAN_END
});
export const canvasToolOverlayMouseDoubleClicked = (
documentId: string,
sourceEvent: React.MouseEvent<any>
): CanvasToolOverlayClicked => ({
documentId,
type: CANVAS_TOOL_OVERLAY_MOUSE_DOUBLE_CLICKED,
sourceEvent
});
export const canvasContainerMounted = (
element: HTMLDivElement,
fileUri: string
): CanvasMounted => ({
element,
fileUri,
type: CANVAS_MOUNTED
});
export const canvasMouseMoved = (
sourceEvent: React.MouseEvent<any>
): WrappedEvent<React.MouseEvent<any>> => ({
sourceEvent,
type: CANVAS_MOUSE_MOVED
});
export const canvasDraggedOver = (
item: any,
offset: Point
): CanvasDraggingOver => ({
item,
offset,
type: CANVAS_DRAGGED_OVER
});
export const canvasMouseClicked = (
sourceEvent: React.MouseEvent<any>
): WrappedEvent<React.MouseEvent<any>> => ({
sourceEvent,
type: CANVAS_MOUSE_CLICKED
});
export const canvasWheel = (
canvasWidth: number,
canvasHeight: number,
{ metaKey, ctrlKey, deltaX, deltaY, clientX, clientY }: React.WheelEvent<any>
): CanvasWheel => ({
metaKey,
canvasWidth,
canvasHeight,
ctrlKey,
deltaX,
deltaY,
type: CANVAS_WHEEL
});
export const canvasDroppedItem = (
item: RegisteredComponent,
point: Point,
editorUri: string
): CanvasDroppedItem => ({
editorUri,
item,
point,
type: CANVAS_DROPPED_ITEM
});
export const canvasMotionRested = () => ({
type: CANVAS_MOTION_RESTED
});
export const insertToolFinished = (
point: Point,
fileUri: string
): InsertToolFinished => ({
point,
fileUri,
type: INSERT_TOOL_FINISHED
});
export const canvasToolWindowBackgroundClicked = (
sourceEvent: React.KeyboardEvent<any>
): WrappedEvent<React.KeyboardEvent<any>> => ({
type: CANVAS_TOOL_WINDOW_BACKGROUND_CLICKED,
sourceEvent
});
export const canvasToolWindowKeyDown = (
documentId: string,
sourceEvent: React.KeyboardEvent<any>
): CanvasToolWindowKeyDown => ({
type: CANVAS_TOOL_WINDOW_KEY_DOWN,
documentId,
sourceEvent
});
export const canvasToolDocumentTitleClicked = (
frame: Frame,
sourceEvent: React.MouseEvent<any>
): CanvasToolArtboardTitleClicked => ({
type: CANVAS_TOOL_ARTBOARD_TITLE_CLICKED,
frame,
sourceEvent
});
export const canvasToolPreviewButtonClicked = (
frame: Frame,
sourceEvent: React.MouseEvent<any>
): CanvasToolArtboardTitleClicked => ({
type: CANVAS_TOOL_PREVIEW_BUTTON_CLICKED,
frame,
sourceEvent
});
export const resizerPathMoved = (
anchor: Point,
originalBounds: Bounds,
newBounds: Bounds,
sourceEvent: MouseEvent
): ResizerPathMoved => ({
type: RESIZER_PATH_MOUSE_MOVED,
anchor,
originalBounds,
newBounds,
sourceEvent
});
export const resizerPathStoppedMoving = (
anchor: Point,
originalBounds: Bounds,
newBounds: Bounds,
sourceEvent: MouseEvent
): ResizerPathMoved => ({
type: RESIZER_PATH_MOUSE_STOPPED_MOVING,
anchor,
originalBounds,
newBounds,
sourceEvent: { ...sourceEvent }
});
export const resizerMoved = (point: Point): ResizerMoved => ({
point,
type: RESIZER_MOVED
});
export const resizerStoppedMoving = (point: Point): ResizerMoved => ({
point,
type: RESIZER_STOPPED_MOVING
});
export const resizerMouseDown = (
sourceEvent: React.MouseEvent<any>
): ResizerMouseDown => ({
sourceEvent,
type: RESIZER_MOUSE_DOWN
});
export const resizerStartDrag = (
sourceEvent: React.MouseEvent<any>
): ResizerMouseDown => ({
sourceEvent,
type: RESIZER_START_DRGG
});
export const selectorDoubleClicked = (
nodeId: string,
sourceEvent: React.MouseEvent<any>
): SelectorDoubleClicked => ({
nodeId,
type: SELECTOR_DOUBLE_CLICKED,
sourceEvent
});