moved penMode from state to context
This commit is contained in:
parent
ceb43ed8fb
commit
cf8024bdc0
@ -62,7 +62,6 @@ export const actionClearCanvas = register({
|
|||||||
theme: appState.theme,
|
theme: appState.theme,
|
||||||
elementLocked: appState.elementLocked,
|
elementLocked: appState.elementLocked,
|
||||||
penMode: appState.penMode,
|
penMode: appState.penMode,
|
||||||
penDetected: appState.penDetected,
|
|
||||||
exportBackground: appState.exportBackground,
|
exportBackground: appState.exportBackground,
|
||||||
exportEmbedScene: appState.exportEmbedScene,
|
exportEmbedScene: appState.exportEmbedScene,
|
||||||
gridSize: appState.gridSize,
|
gridSize: appState.gridSize,
|
||||||
|
@ -44,7 +44,6 @@ export const getDefaultAppState = (): Omit<
|
|||||||
elementLocked: false,
|
elementLocked: false,
|
||||||
elementType: "selection",
|
elementType: "selection",
|
||||||
penMode: false,
|
penMode: false,
|
||||||
penDetected: false,
|
|
||||||
errorMessage: null,
|
errorMessage: null,
|
||||||
exportBackground: true,
|
exportBackground: true,
|
||||||
exportScale: defaultExportScale,
|
exportScale: defaultExportScale,
|
||||||
@ -133,7 +132,6 @@ const APP_STATE_STORAGE_CONF = (<
|
|||||||
elementLocked: { browser: true, export: false, server: false },
|
elementLocked: { browser: true, export: false, server: false },
|
||||||
elementType: { browser: true, export: false, server: false },
|
elementType: { browser: true, export: false, server: false },
|
||||||
penMode: { browser: false, 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 },
|
errorMessage: { browser: false, export: false, server: false },
|
||||||
exportBackground: { browser: true, export: false, server: false },
|
exportBackground: { browser: true, export: false, server: false },
|
||||||
exportEmbedScene: { browser: true, export: false, server: false },
|
exportEmbedScene: { browser: true, export: false, server: false },
|
||||||
|
@ -258,6 +258,7 @@ import {
|
|||||||
const defaultDeviceTypeContext: DeviceType = {
|
const defaultDeviceTypeContext: DeviceType = {
|
||||||
isMobile: false,
|
isMobile: false,
|
||||||
isTouchScreen: false,
|
isTouchScreen: false,
|
||||||
|
penDetected: false,
|
||||||
};
|
};
|
||||||
const DeviceTypeContext = React.createContext(defaultDeviceTypeContext);
|
const DeviceTypeContext = React.createContext(defaultDeviceTypeContext);
|
||||||
export const useDeviceType = () => useContext(DeviceTypeContext);
|
export const useDeviceType = () => useContext(DeviceTypeContext);
|
||||||
@ -295,6 +296,7 @@ class App extends React.Component<AppProps, AppState> {
|
|||||||
deviceType: DeviceType = {
|
deviceType: DeviceType = {
|
||||||
isMobile: false,
|
isMobile: false,
|
||||||
isTouchScreen: false,
|
isTouchScreen: false,
|
||||||
|
penDetected: false,
|
||||||
};
|
};
|
||||||
detachIsMobileMqHandler?: () => void;
|
detachIsMobileMqHandler?: () => void;
|
||||||
|
|
||||||
@ -2863,11 +2865,11 @@ class App extends React.Component<AppProps, AppState> {
|
|||||||
|
|
||||||
//fires only once, if pen is detected, penMode is enabled
|
//fires only once, if pen is detected, penMode is enabled
|
||||||
//the user can disable this by toggling the penMode button
|
//the user can disable this by toggling the penMode button
|
||||||
if (!this.state.penDetected && event.pointerType === "pen") {
|
if (!this.deviceType.penDetected && event.pointerType === "pen") {
|
||||||
|
this.deviceType = updateObject(this.deviceType, { penDetected: true });
|
||||||
this.setState((prevState) => {
|
this.setState((prevState) => {
|
||||||
return {
|
return {
|
||||||
penMode: true,
|
penMode: true,
|
||||||
penDetected: true,
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -321,7 +321,7 @@ const LayerUI = ({
|
|||||||
checked={appState.penMode}
|
checked={appState.penMode}
|
||||||
onChange={onPenModeToggle}
|
onChange={onPenModeToggle}
|
||||||
title={t("toolBar.penMode")}
|
title={t("toolBar.penMode")}
|
||||||
penDetected={appState.penDetected}
|
penDetected={deviceType.penDetected}
|
||||||
/>
|
/>
|
||||||
<LockButton
|
<LockButton
|
||||||
zenModeEnabled={zenModeEnabled}
|
zenModeEnabled={zenModeEnabled}
|
||||||
|
@ -18,6 +18,7 @@ import { UserList } from "./UserList";
|
|||||||
import { BackgroundPickerAndDarkModeToggle } from "./BackgroundPickerAndDarkModeToggle";
|
import { BackgroundPickerAndDarkModeToggle } from "./BackgroundPickerAndDarkModeToggle";
|
||||||
import { LibraryButton } from "./LibraryButton";
|
import { LibraryButton } from "./LibraryButton";
|
||||||
import { PenModeButton } from "./PenModeButton";
|
import { PenModeButton } from "./PenModeButton";
|
||||||
|
import { useDeviceType } from "./App";
|
||||||
|
|
||||||
type MobileMenuProps = {
|
type MobileMenuProps = {
|
||||||
appState: AppState;
|
appState: AppState;
|
||||||
@ -61,6 +62,7 @@ export const MobileMenu = ({
|
|||||||
onImageAction,
|
onImageAction,
|
||||||
renderTopRightUI,
|
renderTopRightUI,
|
||||||
}: MobileMenuProps) => {
|
}: MobileMenuProps) => {
|
||||||
|
const deviceType = useDeviceType();
|
||||||
const renderToolbar = () => {
|
const renderToolbar = () => {
|
||||||
return (
|
return (
|
||||||
<FixedSideContainer side="top" className="App-top-bar">
|
<FixedSideContainer side="top" className="App-top-bar">
|
||||||
@ -101,7 +103,7 @@ export const MobileMenu = ({
|
|||||||
onChange={onPenModeToggle}
|
onChange={onPenModeToggle}
|
||||||
title={t("toolBar.penMode")}
|
title={t("toolBar.penMode")}
|
||||||
isMobile
|
isMobile
|
||||||
penDetected={appState.penDetected}
|
penDetected={deviceType.penDetected}
|
||||||
/>
|
/>
|
||||||
</Stack.Row>
|
</Stack.Row>
|
||||||
{libraryMenu}
|
{libraryMenu}
|
||||||
|
@ -80,7 +80,6 @@ export type AppState = {
|
|||||||
elementType: typeof SHAPES[number]["value"] | "eraser";
|
elementType: typeof SHAPES[number]["value"] | "eraser";
|
||||||
elementLocked: boolean;
|
elementLocked: boolean;
|
||||||
penMode: boolean;
|
penMode: boolean;
|
||||||
penDetected: boolean;
|
|
||||||
exportBackground: boolean;
|
exportBackground: boolean;
|
||||||
exportEmbedScene: boolean;
|
exportEmbedScene: boolean;
|
||||||
exportWithDarkMode: boolean;
|
exportWithDarkMode: boolean;
|
||||||
@ -412,4 +411,5 @@ export type ExcalidrawImperativeAPI = {
|
|||||||
export type DeviceType = {
|
export type DeviceType = {
|
||||||
isMobile: boolean;
|
isMobile: boolean;
|
||||||
isTouchScreen: boolean;
|
isTouchScreen: boolean;
|
||||||
|
penDetected: boolean;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user