|
@@ -1,12 +1,12 @@
|
|
|
import oc from "open-color";
|
|
|
-import { AppState, FlooredNumber, NormalizedZoomValue } from "./types";
|
|
|
-import { getDateTime } from "./utils";
|
|
|
-import { t } from "./i18n";
|
|
|
import {
|
|
|
- DEFAULT_FONT_SIZE,
|
|
|
DEFAULT_FONT_FAMILY,
|
|
|
+ DEFAULT_FONT_SIZE,
|
|
|
DEFAULT_TEXT_ALIGN,
|
|
|
} from "./constants";
|
|
|
+import { t } from "./i18n";
|
|
|
+import { AppState, FlooredNumber, NormalizedZoomValue } from "./types";
|
|
|
+import { getDateTime } from "./utils";
|
|
|
|
|
|
export const getDefaultAppState = (): Omit<
|
|
|
AppState,
|
|
@@ -14,64 +14,63 @@ export const getDefaultAppState = (): Omit<
|
|
|
> => {
|
|
|
return {
|
|
|
appearance: "light",
|
|
|
- isLoading: false,
|
|
|
- errorMessage: null,
|
|
|
- draggingElement: null,
|
|
|
- resizingElement: null,
|
|
|
- multiElement: null,
|
|
|
- editingElement: null,
|
|
|
- startBoundElement: null,
|
|
|
- editingLinearElement: null,
|
|
|
- elementType: "selection",
|
|
|
- elementLocked: false,
|
|
|
- exportBackground: true,
|
|
|
- exportEmbedScene: false,
|
|
|
- shouldAddWatermark: false,
|
|
|
- currentItemStrokeColor: oc.black,
|
|
|
+ collaborators: new Map(),
|
|
|
+ currentChartType: "bar",
|
|
|
currentItemBackgroundColor: "transparent",
|
|
|
+ currentItemEndArrowhead: "arrow",
|
|
|
currentItemFillStyle: "hachure",
|
|
|
- currentItemStrokeWidth: 1,
|
|
|
- currentItemStrokeStyle: "solid",
|
|
|
- currentItemRoughness: 1,
|
|
|
- currentItemOpacity: 100,
|
|
|
- currentItemFontSize: DEFAULT_FONT_SIZE,
|
|
|
currentItemFontFamily: DEFAULT_FONT_FAMILY,
|
|
|
- currentItemTextAlign: DEFAULT_TEXT_ALIGN,
|
|
|
- currentItemStrokeSharpness: "sharp",
|
|
|
+ currentItemFontSize: DEFAULT_FONT_SIZE,
|
|
|
currentItemLinearStrokeSharpness: "round",
|
|
|
+ currentItemOpacity: 100,
|
|
|
+ currentItemRoughness: 1,
|
|
|
currentItemStartArrowhead: null,
|
|
|
- currentItemEndArrowhead: "arrow",
|
|
|
- viewBackgroundColor: oc.white,
|
|
|
- scrollX: 0 as FlooredNumber,
|
|
|
- scrollY: 0 as FlooredNumber,
|
|
|
+ currentItemStrokeColor: oc.black,
|
|
|
+ currentItemStrokeSharpness: "sharp",
|
|
|
+ currentItemStrokeStyle: "solid",
|
|
|
+ currentItemStrokeWidth: 1,
|
|
|
+ currentItemTextAlign: DEFAULT_TEXT_ALIGN,
|
|
|
cursorButton: "up",
|
|
|
- scrolledOutside: false,
|
|
|
- name: `${t("labels.untitled")}-${getDateTime()}`,
|
|
|
+ draggingElement: null,
|
|
|
+ editingElement: null,
|
|
|
+ editingGroupId: null,
|
|
|
+ editingLinearElement: null,
|
|
|
+ elementLocked: false,
|
|
|
+ elementType: "selection",
|
|
|
+ errorMessage: null,
|
|
|
+ exportBackground: true,
|
|
|
+ exportEmbedScene: false,
|
|
|
+ fileHandle: null,
|
|
|
+ gridSize: null,
|
|
|
+ height: window.innerHeight,
|
|
|
isBindingEnabled: true,
|
|
|
+ isLibraryOpen: false,
|
|
|
+ isLoading: false,
|
|
|
isResizing: false,
|
|
|
isRotating: false,
|
|
|
- selectionElement: null,
|
|
|
- zoom: {
|
|
|
- value: 1 as NormalizedZoomValue,
|
|
|
- translation: { x: 0, y: 0 },
|
|
|
- },
|
|
|
- openMenu: null,
|
|
|
lastPointerDownWith: "mouse",
|
|
|
- selectedElementIds: {},
|
|
|
+ multiElement: null,
|
|
|
+ name: `${t("labels.untitled")}-${getDateTime()}`,
|
|
|
+ openMenu: null,
|
|
|
+ pasteDialog: { shown: false, data: null },
|
|
|
previousSelectedElementIds: {},
|
|
|
+ resizingElement: null,
|
|
|
+ scrolledOutside: false,
|
|
|
+ scrollX: 0 as FlooredNumber,
|
|
|
+ scrollY: 0 as FlooredNumber,
|
|
|
+ selectedElementIds: {},
|
|
|
+ selectedGroupIds: {},
|
|
|
+ selectionElement: null,
|
|
|
+ shouldAddWatermark: false,
|
|
|
shouldCacheIgnoreZoom: false,
|
|
|
showShortcutsDialog: false,
|
|
|
+ showStats: false,
|
|
|
+ startBoundElement: null,
|
|
|
suggestedBindings: [],
|
|
|
- zenModeEnabled: false,
|
|
|
- gridSize: null,
|
|
|
- editingGroupId: null,
|
|
|
- selectedGroupIds: {},
|
|
|
+ viewBackgroundColor: oc.white,
|
|
|
width: window.innerWidth,
|
|
|
- height: window.innerHeight,
|
|
|
- isLibraryOpen: false,
|
|
|
- fileHandle: null,
|
|
|
- collaborators: new Map(),
|
|
|
- showStats: false,
|
|
|
+ zenModeEnabled: false,
|
|
|
+ zoom: { value: 1 as NormalizedZoomValue, translation: { x: 0, y: 0 } },
|
|
|
};
|
|
|
};
|
|
|
|
|
@@ -91,24 +90,25 @@ const APP_STATE_STORAGE_CONF = (<
|
|
|
config: { [K in keyof T]: K extends keyof AppState ? T[K] : never },
|
|
|
) => config)({
|
|
|
appearance: { browser: true, export: false },
|
|
|
+ collaborators: { browser: false, export: false },
|
|
|
+ currentChartType: { browser: true, export: false },
|
|
|
currentItemBackgroundColor: { browser: true, export: false },
|
|
|
+ currentItemEndArrowhead: { browser: true, export: false },
|
|
|
currentItemFillStyle: { browser: true, export: false },
|
|
|
currentItemFontFamily: { browser: true, export: false },
|
|
|
currentItemFontSize: { browser: true, export: false },
|
|
|
+ currentItemLinearStrokeSharpness: { browser: true, export: false },
|
|
|
currentItemOpacity: { browser: true, export: false },
|
|
|
currentItemRoughness: { browser: true, export: false },
|
|
|
+ currentItemStartArrowhead: { browser: true, export: false },
|
|
|
currentItemStrokeColor: { browser: true, export: false },
|
|
|
+ currentItemStrokeSharpness: { browser: true, export: false },
|
|
|
currentItemStrokeStyle: { browser: true, export: false },
|
|
|
currentItemStrokeWidth: { browser: true, export: false },
|
|
|
currentItemTextAlign: { browser: true, export: false },
|
|
|
- currentItemStrokeSharpness: { browser: true, export: false },
|
|
|
- currentItemLinearStrokeSharpness: { browser: true, export: false },
|
|
|
- currentItemStartArrowhead: { browser: true, export: false },
|
|
|
- currentItemEndArrowhead: { browser: true, export: false },
|
|
|
cursorButton: { browser: true, export: false },
|
|
|
draggingElement: { browser: false, export: false },
|
|
|
editingElement: { browser: false, export: false },
|
|
|
- startBoundElement: { browser: false, export: false },
|
|
|
editingGroupId: { browser: true, export: false },
|
|
|
editingLinearElement: { browser: false, export: false },
|
|
|
elementLocked: { browser: true, export: false },
|
|
@@ -116,6 +116,7 @@ const APP_STATE_STORAGE_CONF = (<
|
|
|
errorMessage: { browser: false, export: false },
|
|
|
exportBackground: { browser: true, export: false },
|
|
|
exportEmbedScene: { browser: true, export: false },
|
|
|
+ fileHandle: { browser: false, export: false },
|
|
|
gridSize: { browser: true, export: true },
|
|
|
height: { browser: false, export: false },
|
|
|
isBindingEnabled: { browser: false, export: false },
|
|
@@ -126,7 +127,10 @@ const APP_STATE_STORAGE_CONF = (<
|
|
|
lastPointerDownWith: { browser: true, export: false },
|
|
|
multiElement: { browser: false, export: false },
|
|
|
name: { browser: true, export: false },
|
|
|
+ offsetLeft: { browser: false, export: false },
|
|
|
+ offsetTop: { browser: false, export: false },
|
|
|
openMenu: { browser: true, export: false },
|
|
|
+ pasteDialog: { browser: false, export: false },
|
|
|
previousSelectedElementIds: { browser: true, export: false },
|
|
|
resizingElement: { browser: false, export: false },
|
|
|
scrolledOutside: { browser: true, export: false },
|
|
@@ -138,16 +142,13 @@ const APP_STATE_STORAGE_CONF = (<
|
|
|
shouldAddWatermark: { browser: true, export: false },
|
|
|
shouldCacheIgnoreZoom: { browser: true, export: false },
|
|
|
showShortcutsDialog: { browser: false, export: false },
|
|
|
+ showStats: { browser: true, export: false },
|
|
|
+ startBoundElement: { browser: false, export: false },
|
|
|
suggestedBindings: { browser: false, export: false },
|
|
|
viewBackgroundColor: { browser: true, export: true },
|
|
|
width: { browser: false, export: false },
|
|
|
zenModeEnabled: { browser: true, export: false },
|
|
|
zoom: { browser: true, export: false },
|
|
|
- offsetTop: { browser: false, export: false },
|
|
|
- offsetLeft: { browser: false, export: false },
|
|
|
- fileHandle: { browser: false, export: false },
|
|
|
- collaborators: { browser: false, export: false },
|
|
|
- showStats: { browser: true, export: false },
|
|
|
});
|
|
|
|
|
|
const _clearAppStateForStorage = <ExportType extends "export" | "browser">(
|