mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-05-03 10:00:07 -04:00
Some checks failed
Auto release excalidraw next / Auto-release-excalidraw-next (push) Failing after 2m36s
Build Docker image / build-docker (push) Failing after 6s
Cancel previous runs / cancel (push) Failing after 1s
Publish Docker / publish-docker (push) Failing after 31s
New Sentry production release / sentry (push) Failing after 2m3s
87 lines
2.4 KiB
TypeScript
87 lines
2.4 KiB
TypeScript
import { KEYS } from "@excalidraw/common";
|
|
|
|
import { getNonDeletedElements } from "@excalidraw/element";
|
|
|
|
import { showSelectedShapeActions } from "@excalidraw/element/showSelectedShapeActions";
|
|
|
|
import { ToolButton } from "../components/ToolButton";
|
|
import { HamburgerMenuIcon, HelpIconThin, palette } from "../components/icons";
|
|
import { t } from "../i18n";
|
|
|
|
import { CaptureUpdateAction } from "../store";
|
|
|
|
import { register } from "./register";
|
|
|
|
export const actionToggleCanvasMenu = register({
|
|
name: "toggleCanvasMenu",
|
|
label: "buttons.menu",
|
|
trackEvent: { category: "menu" },
|
|
perform: (_, appState) => ({
|
|
appState: {
|
|
...appState,
|
|
openMenu: appState.openMenu === "canvas" ? null : "canvas",
|
|
},
|
|
captureUpdate: CaptureUpdateAction.EVENTUALLY,
|
|
}),
|
|
PanelComponent: ({ appState, updateData }) => (
|
|
<ToolButton
|
|
type="button"
|
|
icon={HamburgerMenuIcon}
|
|
aria-label={t("buttons.menu")}
|
|
onClick={updateData}
|
|
selected={appState.openMenu === "canvas"}
|
|
/>
|
|
),
|
|
});
|
|
|
|
export const actionToggleEditMenu = register({
|
|
name: "toggleEditMenu",
|
|
label: "buttons.edit",
|
|
trackEvent: { category: "menu" },
|
|
perform: (_elements, appState) => ({
|
|
appState: {
|
|
...appState,
|
|
openMenu: appState.openMenu === "shape" ? null : "shape",
|
|
},
|
|
captureUpdate: CaptureUpdateAction.EVENTUALLY,
|
|
}),
|
|
PanelComponent: ({ elements, appState, updateData }) => (
|
|
<ToolButton
|
|
visible={showSelectedShapeActions(
|
|
appState,
|
|
getNonDeletedElements(elements),
|
|
)}
|
|
type="button"
|
|
icon={palette}
|
|
aria-label={t("buttons.edit")}
|
|
onClick={updateData}
|
|
selected={appState.openMenu === "shape"}
|
|
/>
|
|
),
|
|
});
|
|
|
|
export const actionShortcuts = register({
|
|
name: "toggleShortcuts",
|
|
label: "welcomeScreen.defaults.helpHint",
|
|
icon: HelpIconThin,
|
|
viewMode: true,
|
|
trackEvent: { category: "menu", action: "toggleHelpDialog" },
|
|
perform: (_elements, appState, _, { focusContainer }) => {
|
|
if (appState.openDialog?.name === "help") {
|
|
focusContainer();
|
|
}
|
|
return {
|
|
appState: {
|
|
...appState,
|
|
openDialog:
|
|
appState.openDialog?.name === "help"
|
|
? null
|
|
: {
|
|
name: "help",
|
|
},
|
|
},
|
|
captureUpdate: CaptureUpdateAction.EVENTUALLY,
|
|
};
|
|
},
|
|
keyTest: (event) => event.key === KEYS.QUESTION_MARK,
|
|
});
|