Compare commits

...

19 Commits

Author SHA1 Message Date
Zsolt Viczian
3b37ffbf6e remove toast debug message 2022-03-21 18:43:00 +01:00
Zsolt Viczian
38b58ea1da testing iOS 2022-03-21 18:39:00 +01:00
Zsolt Viczian
89a0dbafde testing 2022-03-21 18:25:11 +01:00
Zsolt Viczian
01789c3375 testing 2022-03-21 18:19:42 +01:00
Zsolt Viczian
563caa3f07 iOS debug 2022-03-21 18:14:02 +01:00
zsviczian
bb04943564
debugging iOS 2022-03-21 15:35:14 +01:00
zsviczian
7bcc1f2a41
debugging iOS 2022-03-21 15:31:55 +01:00
zsviczian
fb449b6758
debugging iOS 2022-03-21 15:24:01 +01:00
zsviczian
8d60f22ff7
Update Actions.tsx 2022-03-21 15:20:13 +01:00
zsviczian
93bd035d03
debugging iOS 2022-03-21 15:18:55 +01:00
Zsolt Viczian
4dec449516 cleanup 2022-03-20 19:12:50 +01:00
Zsolt Viczian
c45433c8db testing to understand why it does not work on iOS 2022-03-20 19:03:16 +01:00
Zsolt Viczian
22cd6f5115 setDeviceType 2022-03-20 18:21:19 +01:00
Zsolt Viczian
53ba9dffd9 setDeviceType 2022-03-20 18:14:47 +01:00
Zsolt Viczian
7e7864ca3d testing 2022-03-20 17:51:53 +01:00
Zsolt Viczian
15d88d0fe0 passing penDetected to ShapesSwitcher 2022-03-20 17:40:25 +01:00
Zsolt Viczian
24d7380333 penMode 2022-03-20 17:07:25 +01:00
Zsolt Viczian
0ecb53e2f2 updated test, set penMode on ToolButton change 2022-03-20 12:13:35 +01:00
Zsolt Viczian
cf8024bdc0 moved penMode from state to context 2022-03-20 11:36:02 +01:00
11 changed files with 84 additions and 127 deletions

View File

@ -62,7 +62,6 @@ export const actionClearCanvas = register({
theme: appState.theme,
elementLocked: appState.elementLocked,
penMode: appState.penMode,
penDetected: appState.penDetected,
exportBackground: appState.exportBackground,
exportEmbedScene: appState.exportEmbedScene,
gridSize: appState.gridSize,

View File

@ -44,7 +44,6 @@ export const getDefaultAppState = (): Omit<
elementLocked: false,
elementType: "selection",
penMode: false,
penDetected: false,
errorMessage: null,
exportBackground: true,
exportScale: defaultExportScale,
@ -133,7 +132,6 @@ const APP_STATE_STORAGE_CONF = (<
elementLocked: { browser: true, export: false, server: false },
elementType: { browser: true, export: false, server: false },
penMode: { browser: false, export: false, server: false },
penDetected: { browser: false, export: false, server: false },
errorMessage: { browser: false, export: false, server: false },
exportBackground: { browser: true, export: false, server: false },
exportEmbedScene: { browser: true, export: false, server: false },

View File

@ -14,7 +14,7 @@ import {
hasText,
} from "../scene";
import { SHAPES } from "../shapes";
import { AppState, Zoom } from "../types";
import { AppState, DeviceType, Zoom } from "../types";
import { capitalizeString, isTransparent, setCursorForShape } from "../utils";
import Stack from "./Stack";
import { ToolButton } from "./ToolButton";
@ -186,49 +186,60 @@ export const ShapesSwitcher = ({
setAppState,
onImageAction,
appState,
setDeviceType,
}: {
canvas: HTMLCanvasElement | null;
elementType: AppState["elementType"];
setAppState: React.Component<any, AppState>["setState"];
onImageAction: (data: { pointerType: PointerType | null }) => void;
appState: AppState;
}) => (
<>
{SHAPES.map(({ value, icon, key }, index) => {
const label = t(`toolBar.${value}`);
const letter = key && (typeof key === "string" ? key : key[0]);
const shortcut = letter
? `${capitalizeString(letter)} ${t("helpDialog.or")} ${index + 1}`
: `${index + 1}`;
return (
<ToolButton
className="Shape"
key={value}
type="radio"
icon={icon}
checked={elementType === value}
name="editor-current-shape"
title={`${capitalizeString(label)}${shortcut}`}
keyBindingLabel={`${index + 1}`}
aria-label={capitalizeString(label)}
aria-keyshortcuts={shortcut}
data-testid={value}
onChange={({ pointerType }) => {
setAppState({
elementType: value,
multiElement: null,
selectedElementIds: {},
});
setCursorForShape(canvas, { ...appState, elementType: value });
if (value === "image") {
onImageAction({ pointerType });
}
}}
/>
);
})}
</>
);
setDeviceType: (obj: Partial<DeviceType>) => void;
}) => {
const penDetected = useDeviceType().penDetected;
return (
<>
{SHAPES.map(({ value, icon, key }, index) => {
const label = t(`toolBar.${value}`);
const letter = key && (typeof key === "string" ? key : key[0]);
const shortcut = letter
? `${capitalizeString(letter)} ${t("helpDialog.or")} ${index + 1}`
: `${index + 1}`;
return (
<ToolButton
className="Shape"
key={value}
type="radio"
icon={icon}
checked={elementType === value}
name="editor-current-shape"
title={`${capitalizeString(label)}${shortcut}`}
keyBindingLabel={`${index + 1}`}
aria-label={capitalizeString(label)}
aria-keyshortcuts={shortcut}
data-testid={value}
onPointerDown={({ pointerType }) => {
if (!penDetected && pointerType === "pen") {
setAppState({ penMode: true });
setDeviceType({ penDetected: true });
}
}}
onChange={({ pointerType }) => {
setAppState({
elementType: value,
multiElement: null,
selectedElementIds: {},
});
setCursorForShape(canvas, { ...appState, elementType: value });
if (value === "image") {
onImageAction({ pointerType });
}
}}
/>
);
})}
</>
);
};
export const ZoomActions = ({
renderAction,

View File

@ -258,6 +258,7 @@ import {
const defaultDeviceTypeContext: DeviceType = {
isMobile: false,
isTouchScreen: false,
penDetected: false,
};
const DeviceTypeContext = React.createContext(defaultDeviceTypeContext);
export const useDeviceType = () => useContext(DeviceTypeContext);
@ -295,6 +296,7 @@ class App extends React.Component<AppProps, AppState> {
deviceType: DeviceType = {
isMobile: false,
isTouchScreen: false,
penDetected: false,
};
detachIsMobileMqHandler?: () => void;
@ -495,6 +497,7 @@ class App extends React.Component<AppProps, AppState> {
appState={this.state}
files={this.files}
setAppState={this.setAppState}
setDeviceType={this.setDeviceType}
actionManager={this.actionManager}
elements={this.scene.getElements()}
onCollabButtonClick={onCollabButtonClick}
@ -900,7 +903,7 @@ class App extends React.Component<AppProps, AppState> {
// ---------------------------------------------------------------------
const { width, height } =
this.excalidrawContainerRef.current!.getBoundingClientRect();
this.deviceType = updateObject(this.deviceType, {
this.setDeviceType({
isMobile:
width < MQ_MAX_WIDTH_PORTRAIT ||
(height < MQ_MAX_HEIGHT_LANDSCAPE &&
@ -916,9 +919,7 @@ class App extends React.Component<AppProps, AppState> {
`(max-width: ${MQ_MAX_WIDTH_PORTRAIT}px), (max-height: ${MQ_MAX_HEIGHT_LANDSCAPE}px) and (max-width: ${MQ_MAX_WIDTH_LANDSCAPE}px)`,
);
const handler = () => {
this.deviceType = updateObject(this.deviceType, {
isMobile: mediaQuery.matches,
});
this.setDeviceType({ isMobile: mediaQuery.matches });
};
mediaQuery.addListener(handler);
this.detachIsMobileMqHandler = () => mediaQuery.removeListener(handler);
@ -1560,6 +1561,10 @@ class App extends React.Component<AppProps, AppState> {
this.setState(obj);
};
setDeviceType = (obj: Partial<DeviceType>): void => {
this.deviceType = updateObject(this.deviceType, obj);
};
removePointer = (event: React.PointerEvent<HTMLElement> | PointerEvent) => {
if (touchTimeout) {
this.resetContextMenuTimer();
@ -2863,20 +2868,16 @@ class App extends React.Component<AppProps, AppState> {
//fires only once, if pen is detected, penMode is enabled
//the user can disable this by toggling the penMode button
if (!this.state.penDetected && event.pointerType === "pen") {
this.setState((prevState) => {
return {
penMode: true,
penDetected: true,
};
});
if (!this.deviceType.penDetected && event.pointerType === "pen") {
this.setDeviceType({ penDetected: true });
this.setState({ penMode: true });
}
if (
!this.deviceType.isTouchScreen &&
["pen", "touch"].includes(event.pointerType)
) {
this.deviceType = updateObject(this.deviceType, { isTouchScreen: true });
this.setDeviceType({ isTouchScreen: true });
}
if (isPanning) {

View File

@ -8,7 +8,13 @@ import { NonDeletedExcalidrawElement } from "../element/types";
import { Language, t } from "../i18n";
import { calculateScrollCenter, getSelectedElements } from "../scene";
import { ExportType } from "../scene/types";
import { AppProps, AppState, ExcalidrawProps, BinaryFiles } from "../types";
import {
AppProps,
AppState,
ExcalidrawProps,
BinaryFiles,
DeviceType,
} from "../types";
import { muteFSAbortError } from "../utils";
import { SelectedShapeActions, ShapesSwitcher, ZoomActions } from "./Actions";
import { BackgroundPickerAndDarkModeToggle } from "./BackgroundPickerAndDarkModeToggle";
@ -44,6 +50,7 @@ interface LayerUIProps {
files: BinaryFiles;
canvas: HTMLCanvasElement | null;
setAppState: React.Component<any, AppState>["setState"];
setDeviceType: (obj: Partial<DeviceType>) => void;
elements: readonly NonDeletedExcalidrawElement[];
onCollabButtonClick?: () => void;
onLockToggle: () => void;
@ -74,6 +81,7 @@ const LayerUI = ({
appState,
files,
setAppState,
setDeviceType,
canvas,
elements,
onCollabButtonClick,
@ -321,7 +329,7 @@ const LayerUI = ({
checked={appState.penMode}
onChange={onPenModeToggle}
title={t("toolBar.penMode")}
penDetected={appState.penDetected}
penDetected={deviceType.penDetected}
/>
<LockButton
zenModeEnabled={zenModeEnabled}
@ -352,6 +360,7 @@ const LayerUI = ({
insertOnCanvasDirectly: pointerType !== "mouse",
});
}}
setDeviceType={setDeviceType}
/>
</Stack.Row>
</Island>
@ -530,6 +539,7 @@ const LayerUI = ({
renderJSONExportDialog={renderJSONExportDialog}
renderImageExportDialog={renderImageExportDialog}
setAppState={setAppState}
setDeviceType={setDeviceType}
onCollabButtonClick={onCollabButtonClick}
onLockToggle={onLockToggle}
onPenModeToggle={onPenModeToggle}

View File

@ -1,5 +1,5 @@
import React from "react";
import { AppState } from "../types";
import { AppState, DeviceType } from "../types";
import { ActionManager } from "../actions/manager";
import { t } from "../i18n";
import Stack from "./Stack";
@ -18,6 +18,7 @@ import { UserList } from "./UserList";
import { BackgroundPickerAndDarkModeToggle } from "./BackgroundPickerAndDarkModeToggle";
import { LibraryButton } from "./LibraryButton";
import { PenModeButton } from "./PenModeButton";
import { useDeviceType } from "./App";
type MobileMenuProps = {
appState: AppState;
@ -25,6 +26,7 @@ type MobileMenuProps = {
renderJSONExportDialog: () => React.ReactNode;
renderImageExportDialog: () => React.ReactNode;
setAppState: React.Component<any, AppState>["setState"];
setDeviceType: (obj: Partial<DeviceType>) => void;
elements: readonly NonDeletedExcalidrawElement[];
libraryMenu: JSX.Element | null;
onCollabButtonClick?: () => void;
@ -50,6 +52,7 @@ export const MobileMenu = ({
renderJSONExportDialog,
renderImageExportDialog,
setAppState,
setDeviceType,
onCollabButtonClick,
onLockToggle,
onPenModeToggle,
@ -61,6 +64,7 @@ export const MobileMenu = ({
onImageAction,
renderTopRightUI,
}: MobileMenuProps) => {
const deviceType = useDeviceType();
const renderToolbar = () => {
return (
<FixedSideContainer side="top" className="App-top-bar">
@ -81,6 +85,7 @@ export const MobileMenu = ({
insertOnCanvasDirectly: pointerType !== "mouse",
});
}}
setDeviceType={setDeviceType}
/>
</Stack.Row>
</Island>
@ -101,7 +106,7 @@ export const MobileMenu = ({
onChange={onPenModeToggle}
title={t("toolBar.penMode")}
isMobile
penDetected={appState.penDetected}
penDetected={deviceType.penDetected}
/>
</Stack.Row>
{libraryMenu}

View File

@ -48,6 +48,7 @@ type ToolButtonProps =
type: "radio";
checked: boolean;
onChange?(data: { pointerType: PointerType | null }): void;
onPointerDown?(data: { pointerType: PointerType }): void;
});
export const ToolButton = React.forwardRef((props: ToolButtonProps, ref) => {
@ -149,6 +150,7 @@ export const ToolButton = React.forwardRef((props: ToolButtonProps, ref) => {
title={props.title}
onPointerDown={(event) => {
lastPointerTypeRef.current = event.pointerType || null;
props.onPointerDown?.({ pointerType: event.pointerType || null });
}}
onPointerUp={() => {
requestAnimationFrame(() => {

View File

@ -49,7 +49,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -220,7 +219,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -547,7 +545,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -874,7 +871,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -1045,7 +1041,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -1251,7 +1246,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -1514,7 +1508,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -1859,7 +1852,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -2634,7 +2626,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -2961,7 +2952,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -3288,7 +3278,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -3693,7 +3682,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -3962,7 +3950,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -4310,7 +4297,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -4412,7 +4398,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -4492,7 +4477,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},

View File

@ -49,7 +49,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -542,7 +541,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -1041,7 +1039,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -1875,7 +1872,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -2089,7 +2085,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -2579,7 +2574,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -2846,7 +2840,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -3017,7 +3010,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -3490,7 +3482,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -3739,7 +3730,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -3953,7 +3943,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -4210,7 +4199,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -4476,7 +4464,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -4884,7 +4871,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -5197,7 +5183,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -5486,7 +5471,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -5705,7 +5689,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -5876,7 +5859,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -6361,7 +6343,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -6698,7 +6679,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -8876,7 +8856,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -9261,7 +9240,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -9528,7 +9506,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -9757,7 +9734,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -10053,7 +10029,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -10224,7 +10199,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -10395,7 +10369,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -10566,7 +10539,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -10767,7 +10739,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -10968,7 +10939,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -11187,7 +11157,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -11388,7 +11357,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -11559,7 +11527,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -11760,7 +11727,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -11931,7 +11897,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -12102,7 +12067,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -12321,7 +12285,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -13090,7 +13053,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -13357,7 +13319,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -13461,7 +13422,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -13563,7 +13523,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -13737,7 +13696,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -14077,7 +14035,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -14287,7 +14244,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -15171,7 +15127,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -15273,7 +15228,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -16086,7 +16040,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -16518,7 +16471,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {
@ -16807,7 +16759,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -16911,7 +16862,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -17439,7 +17389,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},
@ -17541,7 +17490,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},

View File

@ -47,7 +47,6 @@ Object {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElement": null,
"previousSelectedElementIds": Object {},

View File

@ -80,7 +80,6 @@ export type AppState = {
elementType: typeof SHAPES[number]["value"] | "eraser";
elementLocked: boolean;
penMode: boolean;
penDetected: boolean;
exportBackground: boolean;
exportEmbedScene: boolean;
exportWithDarkMode: boolean;
@ -412,4 +411,5 @@ export type ExcalidrawImperativeAPI = {
export type DeviceType = {
isMobile: boolean;
isTouchScreen: boolean;
penDetected: boolean;
};