///
///
///
import { TextFileView, WorkspaceLeaf, TFile, Menu } from "obsidian";
import { ExcalidrawElement, FileId } from "@zsviczian/excalidraw/types/element/types";
import ExcalidrawPlugin from "./main";
import { ExcalidrawAutomate } from "./ExcalidrawAutomate";
import { ExcalidrawData } from "./ExcalidrawData";
import { EmbeddedFilesLoader, FileData } from "./EmbeddedFileLoader";
import { ExportDialog } from "./dialogs/ExportDialog";
import { ModifierKeys } from "./utils/ModifierkeyHelper";
import { CanvasNodeFactory, ObsidianCanvasNode } from "./utils/CanvasNodeFactory";
declare module "obsidian" {
interface Workspace {
floatingSplit: any;
}
interface WorkspaceSplit {
containerEl: HTMLDivElement;
}
}
type SelectedElementWithLink = {
id: string;
text: string;
};
type SelectedImage = {
id: string;
fileId: FileId;
};
export declare enum TextMode {
parsed = "parsed",
raw = "raw"
}
export interface ExportSettings {
withBackground: boolean;
withTheme: boolean;
}
export declare const addFiles: (files: FileData[], view: ExcalidrawView, isDark?: boolean) => Promise;
export default class ExcalidrawView extends TextFileView {
excalidrawContainer: HTMLDivElement;
exportDialog: ExportDialog;
excalidrawData: ExcalidrawData;
getScene: Function;
addElements: Function;
private getSelectedTextElement;
private getSelectedImageElement;
private getSelectedElementWithLink;
addText: Function;
private refresh;
excalidrawRef: React.MutableRefObject;
excalidrawAPI: any;
excalidrawWrapperRef: React.MutableRefObject;
toolsPanelRef: React.MutableRefObject;
embeddableMenuRef: React.MutableRefObject;
private parentMoveObserver;
linksAlwaysOpenInANewPane: boolean;
allowFrameButtonsInViewMode: boolean;
private hookServer;
lastSaveTimestamp: number;
private lastLoadedFile;
private onKeyUp;
private onKeyDown;
private modifierKeyDown;
currentPosition: {
x: number;
y: number;
};
ownerWindow: Window;
ownerDocument: Document;
private draginfoDiv;
canvasNodeFactory: CanvasNodeFactory;
private embeddableRefs;
private embeddableLeafRefs;
semaphores: {
popoutUnload: boolean;
viewunload: boolean;
scriptsReady: boolean;
justLoaded: boolean;
preventAutozoom: boolean;
autosaving: boolean;
forceSaving: boolean;
dirty: string;
preventReload: boolean;
isEditingText: boolean;
saving: boolean;
hoverSleep: boolean;
wheelTimeout: NodeJS.Timeout;
};
plugin: ExcalidrawPlugin;
autosaveTimer: any;
textMode: TextMode;
private textIsParsed_Element;
private textIsRaw_Element;
private linkAction_Element;
compatibilityMode: boolean;
private obsidianMenu;
private embeddableMenu;
private isEditingTextResetTimer;
id: string;
constructor(leaf: WorkspaceLeaf, plugin: ExcalidrawPlugin);
setHookServer(ea: ExcalidrawAutomate): void;
getHookServer: () => ExcalidrawAutomate;
preventAutozoom(): void;
saveExcalidraw(scene?: any): boolean;
exportExcalidraw(selectedOnly?: boolean): Promise;
svg(scene: any, theme?: string, embedScene?: boolean): Promise;
saveSVG(scene?: any, embedScene?: boolean): Promise;
exportSVG(embedScene?: boolean, selectedOnly?: boolean): Promise;
png(scene: any, theme?: string, embedScene?: boolean): Promise;
savePNG(scene?: any, embedScene?: boolean): Promise;
exportPNGToClipboard(embedScene?: boolean, selectedOnly?: boolean): Promise;
exportPNG(embedScene?: boolean, selectedOnly?: boolean): Promise;
private preventReloadResetTimer;
save(preventReload?: boolean, forcesave?: boolean): Promise;
getViewData(): string;
private hiddenMobileLeaves;
restoreMobileLeaves(): void;
toggleDisableBinding(): void;
toggleFrameRendering(): void;
toggleFrameClipping(): void;
gotoFullscreen(): void;
isFullscreen(): boolean;
exitFullscreen(): void;
removeLinkTooltip(): void;
handleLinkHookCall(element: ExcalidrawElement, link: string, event: any): boolean;
openExternalLink(link: string, element?: ExcalidrawElement): boolean;
openTagSearch(link: string): void;
linkClick(ev: MouseEvent, selectedText: SelectedElementWithLink, selectedImage: SelectedImage, selectedElementWithLink: SelectedElementWithLink, keys?: ModifierKeys): Promise;
handleLinkClick(ev: MouseEvent): Promise;
onResize(): void;
diskIcon: HTMLElement;
excalidrawGetSceneVersion: (elements: ExcalidrawElement[]) => number;
getSceneVersion(elements: ExcalidrawElement[]): number;
wheelEvent: (ev: WheelEvent) => void;
clearHoverPreview: Function;
forceSave(silent?: boolean): Promise;
onload(): void;
private slidingPanesListner;
private addSlidingPanesListner;
private removeSlidingPanesListner;
private offsetLeft;
private offsetTop;
private addParentMoveObserver;
private removeParentMoveObserver;
setTheme(theme: string): void;
private prevTextMode;
private blockTextModeChange;
changeTextMode(textMode: TextMode, reload?: boolean): Promise;
autosaveFunction: Function;
setupAutosaveTimer(): void;
onunload(): void;
/**
* reload is triggered by the modifyEventHandler in main.ts when ever an excalidraw drawing that is currently open
* in a workspace leaf is modified. There can be two reasons for the file change:
* - The user saves the drawing in the active view (either force-save or autosave)
* - The file is modified by some other process, typically as a result of background sync, or because the drawing is open
* side by side, e.g. the canvas in one view and markdown view in the other.
* @param fullreload
* @param file
* @returns
*/
reload(fullreload?: boolean, file?: TFile): Promise;
zoomToElementId(id: string, hasGroupref: boolean): Promise;
setEphemeralState(state: any): void;
clear(): void;
isLoaded: boolean;
setViewData(data: string, clear?: boolean): Promise;
private getGridColor;
activeLoader: EmbeddedFilesLoader;
private nextLoader;
loadSceneFiles(): Promise;
synchronizeWithData(inData: ExcalidrawData): Promise;
initialContainerSizeUpdate: boolean;
/**
*
* @param justloaded - a flag to trigger zoom to fit after the drawing has been loaded
*/
private loadDrawing;
isEditedAsMarkdownInOtherView(): boolean;
private onAfterLoadScene;
setDirty(debug?: number): void;
clearDirty(): void;
initializeToolsIconPanelAfterLoading(): void;
canAcceptExtension(extension: string): boolean;
getDisplayText(): string;
getViewType(): string;
getIcon(): string;
setMarkdownView(): void;
openAsMarkdown(): Promise;
convertExcalidrawToMD(): Promise;
addYouTubeThumbnail(link: string): Promise;
addImageWithURL(link: string): Promise;
addImageSaveToVault(link: string): Promise;
addTextWithIframely(text: string): Promise;
onPaneMenu(menu: Menu, source: string): void;
getLibrary(): Promise;
private previousSceneVersion;
previousBackgroundColor: string;
previousTheme: string;
private colorChangeTimer;
private instantiateExcalidraw;
private updateContainerSize;
zoomToFit(delay?: boolean, justLoaded?: boolean): void;
updatePinnedScripts(): boolean;
updatePinnedCustomPens(): boolean;
updatePinchZoom(): boolean;
updateWheelZoom(): boolean;
toggleTrayMode(): Promise;
selectElementsMatchingQuery(elements: ExcalidrawElement[], query: string[], selectResult?: boolean, exactMatch?: boolean, //https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/530
selectGroup?: boolean): void;
zoomToElements(selectResult: boolean, elements: ExcalidrawElement[]): void;
getViewSelectedElements(): ExcalidrawElement[];
copyLinkToSelectedElementToClipboard(prefix: string): Promise;
updateScene(scene: {
elements?: ExcalidrawElement[];
appState?: any;
files?: any;
commitToHistory?: boolean;
}, shouldRestore?: boolean): void;
updateEmbeddableRef(id: string, ref: HTMLIFrameElement | HTMLWebViewElement | null): void;
getEmbeddableElementById(id: string): HTMLIFrameElement | HTMLWebViewElement | undefined;
updateEmbeddableLeafRef(id: string, ref: any): void;
getEmbeddableLeafElementById(id: string): {
leaf: WorkspaceLeaf;
node?: ObsidianCanvasNode;
} | null;
getActiveEmbeddable: () => {
leaf: WorkspaceLeaf;
node?: ObsidianCanvasNode;
} | null;
get editor(): any;
}
export declare function getTextMode(data: string): TextMode;
export {};