|
@@ -17,7 +17,7 @@ import { Language, t } from "../i18n";
|
|
|
import useIsMobile from "../is-mobile";
|
|
|
import { calculateScrollCenter, getSelectedElements } from "../scene";
|
|
|
import { ExportType } from "../scene/types";
|
|
|
-import { AppState, LibraryItem, LibraryItems } from "../types";
|
|
|
+import { AppState, ExcalidrawProps, LibraryItem, LibraryItems } from "../types";
|
|
|
import { muteFSAbortError } from "../utils";
|
|
|
import { SelectedShapeActions, ShapesSwitcher, ZoomActions } from "./Actions";
|
|
|
import { BackgroundPickerAndDarkModeToggle } from "./BackgroundPickerAndDarkModeToggle";
|
|
@@ -63,6 +63,7 @@ interface LayerUIProps {
|
|
|
) => void;
|
|
|
renderCustomFooter?: (isMobile: boolean) => JSX.Element;
|
|
|
viewModeEnabled: boolean;
|
|
|
+ libraryReturnUrl: ExcalidrawProps["libraryReturnUrl"];
|
|
|
}
|
|
|
|
|
|
const useOnClickOutside = (
|
|
@@ -101,6 +102,7 @@ const LibraryMenuItems = ({
|
|
|
pendingElements,
|
|
|
setAppState,
|
|
|
setLibraryItems,
|
|
|
+ libraryReturnUrl,
|
|
|
}: {
|
|
|
library: LibraryItems;
|
|
|
pendingElements: LibraryItem;
|
|
@@ -109,6 +111,7 @@ const LibraryMenuItems = ({
|
|
|
onAddToLibrary: (elements: LibraryItem) => void;
|
|
|
setAppState: React.Component<any, AppState>["setState"];
|
|
|
setLibraryItems: (library: LibraryItems) => void;
|
|
|
+ libraryReturnUrl: ExcalidrawProps["libraryReturnUrl"];
|
|
|
}) => {
|
|
|
const isMobile = useIsMobile();
|
|
|
const numCells = library.length + (pendingElements.length > 0 ? 1 : 0);
|
|
@@ -117,6 +120,8 @@ const LibraryMenuItems = ({
|
|
|
const rows = [];
|
|
|
let addedPendingElements = false;
|
|
|
|
|
|
+ const referrer = libraryReturnUrl || window.location.origin;
|
|
|
+
|
|
|
rows.push(
|
|
|
<div className="layer-ui__library-header">
|
|
|
<ToolButton
|
|
@@ -166,7 +171,10 @@ const LibraryMenuItems = ({
|
|
|
}}
|
|
|
/>
|
|
|
|
|
|
- <a href="https://libraries.excalidraw.com" target="_excalidraw_libraries">
|
|
|
+ <a
|
|
|
+ href={`https://libraries.excalidraw.com?referrer=${referrer}`}
|
|
|
+ target="_excalidraw_libraries"
|
|
|
+ >
|
|
|
{t("labels.libraries")}
|
|
|
</a>
|
|
|
</div>,
|
|
@@ -219,12 +227,14 @@ const LibraryMenu = ({
|
|
|
pendingElements,
|
|
|
onAddToLibrary,
|
|
|
setAppState,
|
|
|
+ libraryReturnUrl,
|
|
|
}: {
|
|
|
pendingElements: LibraryItem;
|
|
|
onClickOutside: (event: MouseEvent) => void;
|
|
|
onInsertShape: (elements: LibraryItem) => void;
|
|
|
onAddToLibrary: () => void;
|
|
|
setAppState: React.Component<any, AppState>["setState"];
|
|
|
+ libraryReturnUrl: ExcalidrawProps["libraryReturnUrl"];
|
|
|
}) => {
|
|
|
const ref = useRef<HTMLDivElement | null>(null);
|
|
|
useOnClickOutside(ref, (event) => {
|
|
@@ -297,6 +307,7 @@ const LibraryMenu = ({
|
|
|
pendingElements={pendingElements}
|
|
|
setAppState={setAppState}
|
|
|
setLibraryItems={setLibraryItems}
|
|
|
+ libraryReturnUrl={libraryReturnUrl}
|
|
|
/>
|
|
|
)}
|
|
|
</Island>
|
|
@@ -319,6 +330,7 @@ const LayerUI = ({
|
|
|
onExportToBackend,
|
|
|
renderCustomFooter,
|
|
|
viewModeEnabled,
|
|
|
+ libraryReturnUrl,
|
|
|
}: LayerUIProps) => {
|
|
|
const isMobile = useIsMobile();
|
|
|
|
|
@@ -482,6 +494,7 @@ const LayerUI = ({
|
|
|
onInsertShape={onInsertElements}
|
|
|
onAddToLibrary={deselectItems}
|
|
|
setAppState={setAppState}
|
|
|
+ libraryReturnUrl={libraryReturnUrl}
|
|
|
/>
|
|
|
) : null;
|
|
|
|