From 6ec259a0e71174651bae95d4628138bf6fd68742 Mon Sep 17 00:00:00 2001 From: kj_sh604 Date: Sun, 15 Mar 2026 16:19:35 -0400 Subject: refactor: packages/ --- packages/excalidraw/actions/actionAddToLibrary.ts | 63 +++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 packages/excalidraw/actions/actionAddToLibrary.ts (limited to 'packages/excalidraw/actions/actionAddToLibrary.ts') diff --git a/packages/excalidraw/actions/actionAddToLibrary.ts b/packages/excalidraw/actions/actionAddToLibrary.ts new file mode 100644 index 0000000..3186e3b --- /dev/null +++ b/packages/excalidraw/actions/actionAddToLibrary.ts @@ -0,0 +1,63 @@ +import { register } from "./register"; +import { deepCopyElement } from "../element/newElement"; +import { randomId } from "../random"; +import { t } from "../i18n"; +import { LIBRARY_DISABLED_TYPES } from "../constants"; +import { CaptureUpdateAction } from "../store"; + +export const actionAddToLibrary = register({ + name: "addToLibrary", + trackEvent: { category: "element" }, + perform: (elements, appState, _, app) => { + const selectedElements = app.scene.getSelectedElements({ + selectedElementIds: appState.selectedElementIds, + includeBoundTextElement: true, + includeElementsInFrames: true, + }); + + for (const type of LIBRARY_DISABLED_TYPES) { + if (selectedElements.some((element) => element.type === type)) { + return { + captureUpdate: CaptureUpdateAction.EVENTUALLY, + appState: { + ...appState, + errorMessage: t(`errors.libraryElementTypeError.${type}`), + }, + }; + } + } + + return app.library + .getLatestLibrary() + .then((items) => { + return app.library.setLibrary([ + { + id: randomId(), + status: "unpublished", + elements: selectedElements.map(deepCopyElement), + created: Date.now(), + }, + ...items, + ]); + }) + .then(() => { + return { + captureUpdate: CaptureUpdateAction.EVENTUALLY, + appState: { + ...appState, + toast: { message: t("toast.addedToLibrary") }, + }, + }; + }) + .catch((error) => { + return { + captureUpdate: CaptureUpdateAction.EVENTUALLY, + appState: { + ...appState, + errorMessage: error.message, + }, + }; + }); + }, + label: "labels.addToLibrary", +}); -- cgit v1.2.3