diff --git a/src/ExcalidrawView.ts b/src/ExcalidrawView.ts
index c718231..f2f1d97 100644
--- a/src/ExcalidrawView.ts
+++ b/src/ExcalidrawView.ts
@@ -93,10 +93,11 @@ import {
hyperlinkIsYouTubeLink,
getYouTubeThumbnailLink,
isContainer,
+ fragWithHTML,
} from "./utils/Utils";
import { getLeaf, getParentOfClass } from "./utils/ObsidianUtils";
import { splitFolderAndFilename } from "./utils/FileUtils";
-import { ConfirmationPrompt, NewFileActions, Prompt } from "./dialogs/Prompt";
+import { ConfirmationPrompt, GenericInputPrompt, NewFileActions, Prompt } from "./dialogs/Prompt";
import { ClipboardData } from "@zsviczian/excalidraw/types/clipboard";
import { updateEquation } from "./LaTeX";
import {
@@ -778,7 +779,14 @@ export default class ExcalidrawView extends TextFileView {
el.addClass(SHOW);
el = el.parentElement;
}
- if(el) el.addClass(SHOW);
+ if(el) {
+ el.addClass(SHOW);
+ el.querySelectorAll(`div.workspace-split:not(.${SHOW})`).forEach(el=>el.addClass(SHOW));
+ el.querySelector(`div.workspace-leaf-content.${SHOW} > .view-header`).addClass(SHOW);
+ el.querySelectorAll(`div.workspace-tab-container.${SHOW} > div.workspace-leaf:not(.${SHOW})`).forEach(el=>el.addClass(SHOW));
+ el.querySelectorAll(`div.workspace-tabs.${SHOW} > div.workspace-tab-header-container`).forEach(el=>el.addClass(SHOW));
+ el.querySelectorAll(`div.workspace-split.${SHOW} > div.workspace-tabs:not(.${SHOW})`).forEach(el=>el.addClass(SHOW));
+ }
const doc = this.ownerDocument;
doc.body.querySelectorAll(`div.workspace-split:not(.${SHOW})`).forEach(el=>el.addClass(HIDE));
doc.body.querySelector(`div.workspace-leaf-content.${SHOW} > .view-header`).addClass(HIDE);
@@ -991,22 +999,28 @@ export default class ExcalidrawView extends TextFileView {
ef.file.extension === "md" &&
!this.plugin.isExcalidrawFile(ef.file)
) {
- const prompt = new Prompt(
- app,
- "Customize the link",
- ef.linkParts.original,
- "",
- "Do not add [[square brackets]] around the filename!
Follow this format when editing your link:
filename#^blockref|WIDTHxMAXHEIGHT",
- );
- prompt.openAndGetValue(async (link: string) => {
+ const handler = async (link:string) => {
if (!link || ef.linkParts.original === link) {
return;
}
ef.resetImage(this.file.path, link);
+ this.setDirty(2);
await this.save(false);
await this.loadSceneFiles();
- this.setDirty(2);
- });
+ }
+ GenericInputPrompt.Prompt(
+ this,
+ this.plugin,
+ app,
+ "Customize the link",
+ undefined,
+ ef.linkParts.original,
+ [{caption: "✅", action: handler}],
+ 1,
+ false,
+ (container) => container.createEl("p",{text: fragWithHTML("Do not add [[square brackets]] around the filename!
Follow this format when editing your link:
filename#^blockref|WIDTHxMAXHEIGHT")}),
+ false
+ ).then(handler, () => {});
return;
}
}
@@ -3769,7 +3783,7 @@ export default class ExcalidrawView extends TextFileView {
}
},
- iframeURLWhitelist: [/.*/],
+ iframeURLWhitelist: [true],
renderCustomIFrame: (
element: NonDeletedExcalidrawElement,
radius: number,
diff --git a/src/customIFrame.tsx b/src/customIFrame.tsx
index 7430900..a158004 100644
--- a/src/customIFrame.tsx
+++ b/src/customIFrame.tsx
@@ -2,7 +2,7 @@ import { NonDeletedExcalidrawElement } from "@zsviczian/excalidraw/types/element
import ExcalidrawView from "./ExcalidrawView";
import { Notice, Workspace, WorkspaceLeaf, WorkspaceSplit } from "obsidian";
import * as React from "react";
-import { getParentOfClass, isObsidianThemeDark } from "./utils/ObsidianUtils";
+import { ConstructableWorkspaceSplit, getContainerForDocument, getParentOfClass, isObsidianThemeDark } from "./utils/ObsidianUtils";
import { getLinkParts } from "./utils/Utils";
import { DEVICE, REG_LINKINDEX_INVALIDCHARS } from "./Constants";
import { ExcalidrawImperativeAPI, UIAppState } from "@zsviczian/excalidraw/types/types";
@@ -58,17 +58,6 @@ const VIMEO_REG =
/^(?:http(?:s)?:\/\/)?(?:(?:w){3}.)?(?:player\.)?vimeo\.com\/(?:video\/)?([^?\s]+)(?:\?.*)?$/;
const TWITTER_REG = /^(?:http(?:s)?:\/\/)?(?:(?:w){3}.)?twitter.com/;
-type ConstructableWorkspaceSplit = new (ws: Workspace, dir: "horizontal"|"vertical") => WorkspaceSplit;
-
-const getContainerForDocument = (doc:Document) => {
- if (doc !== document && app.workspace.floatingSplit) {
- for (const container of app.workspace.floatingSplit.children) {
- if (container.doc === doc) return container;
- }
- }
- return app.workspace.rootSplit;
-};
-
export const useDefaultExcalidrawFrame = (element: NonDeletedExcalidrawElement) => {
return element.link.match(YOUTUBE_REG) || element.link.match(VIMEO_REG);
}
@@ -226,6 +215,8 @@ function RenderObsidianView(
return;
}
leafRef.current.view.setMode(modes['source']);
+ //@ts-ignore
+ window.al = leafRef.current;
app.workspace.setActiveLeaf(leafRef.current);
isEditingRef.current = true;
patchMobileView();
@@ -309,22 +300,6 @@ export const CustomIFrame: React.FC<{element: NonDeletedExcalidrawElement; radiu
view={view}
containerRef={containerRef}
appState={appState}/>
- {(appState.activeIFrame?.element === element && appState.activeIFrame?.state === "hover") && (