/// /// /// 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 {};