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 47s
Build Docker image / build-docker (push) Successful in 2m4s
Cancel previous runs / cancel (push) Failing after 3s
Publish Docker / publish-docker (push) Failing after 1m42s
New Sentry production release / sentry (push) Failing after 12s
* feat: switch between basic shapes * add tab for testing * style tweaks * only show hint when a new node is created * fix panel state * refactor * combine captures into one * keep original font size * switch multi * switch different types altogether * use tab only * fix font size atom * do not switch from active tool change * prefer generic when mixed * provide an optional direction when shape switching * adjust panel bg & shadow * redraw to correctly position text * remove redundant code * only tab to switch if focusing on app container * limit which linear elements can be switched * add shape switch to command palette * remove hint * cache initial panel position * bend line to elbow if needed * remove debug logic * clean switch of arrows using app state * safe conversion between line, sharp, curved, and elbow * cache linear when panel shows up * type safe element conversion * rename type * respect initial type when switching between linears * fix elbow segment indexing * use latest linear * merge converted elbow points if too close * focus on panel after click * set roudness to null to fix drag points offset for elbows * remove Mutable * add arrowBoundToElement check * make it dependent on one signle state * unmount when not showing * simpler types, tidy up code * can change linear when it's linear + non-generic * fix popup component lifecycle * move constant to CLASSES * DRY out type detection * file & variable renaming * refactor * throw in not-prod instead * simplify * semi-fix bindings on `generic` type conversion --------- Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
34 lines
969 B
TypeScript
34 lines
969 B
TypeScript
import type { ExcalidrawElement } from "@excalidraw/element/types";
|
|
|
|
import {
|
|
getConversionTypeFromElements,
|
|
convertElementTypePopupAtom,
|
|
} from "../components/ConvertElementTypePopup";
|
|
import { editorJotaiStore } from "../editor-jotai";
|
|
import { CaptureUpdateAction } from "../store";
|
|
|
|
import { register } from "./register";
|
|
|
|
export const actionToggleShapeSwitch = register({
|
|
name: "toggleShapeSwitch",
|
|
label: "labels.shapeSwitch",
|
|
icon: () => null,
|
|
viewMode: true,
|
|
trackEvent: {
|
|
category: "shape_switch",
|
|
action: "toggle",
|
|
},
|
|
keywords: ["change", "switch", "swap"],
|
|
perform(elements, appState, _, app) {
|
|
editorJotaiStore.set(convertElementTypePopupAtom, {
|
|
type: "panel",
|
|
});
|
|
|
|
return {
|
|
captureUpdate: CaptureUpdateAction.NEVER,
|
|
};
|
|
},
|
|
checked: (appState) => appState.gridModeEnabled,
|
|
predicate: (elements, appState, props) =>
|
|
getConversionTypeFromElements(elements as ExcalidrawElement[]) !== null,
|
|
});
|