500 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			500 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
 | |
| if you want to view the source, please visit the github repository of this plugin
 | |
| */
 | |
| 
 | |
| var __defProp = Object.defineProperty;
 | |
| var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
 | |
| var __getOwnPropNames = Object.getOwnPropertyNames;
 | |
| var __hasOwnProp = Object.prototype.hasOwnProperty;
 | |
| var __export = (target, all) => {
 | |
|   for (var name in all)
 | |
|     __defProp(target, name, { get: all[name], enumerable: true });
 | |
| };
 | |
| var __copyProps = (to, from, except, desc) => {
 | |
|   if (from && typeof from === "object" || typeof from === "function") {
 | |
|     for (let key of __getOwnPropNames(from))
 | |
|       if (!__hasOwnProp.call(to, key) && key !== except)
 | |
|         __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
 | |
|   }
 | |
|   return to;
 | |
| };
 | |
| var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
 | |
| var __accessCheck = (obj, member, msg) => {
 | |
|   if (!member.has(obj))
 | |
|     throw TypeError("Cannot " + msg);
 | |
| };
 | |
| var __privateGet = (obj, member, getter) => {
 | |
|   __accessCheck(obj, member, "read from private field");
 | |
|   return getter ? getter.call(obj) : member.get(obj);
 | |
| };
 | |
| var __privateAdd = (obj, member, value) => {
 | |
|   if (member.has(obj))
 | |
|     throw TypeError("Cannot add the same private member more than once");
 | |
|   member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
 | |
| };
 | |
| var __privateSet = (obj, member, value, setter) => {
 | |
|   __accessCheck(obj, member, "write to private field");
 | |
|   setter ? setter.call(obj, value) : member.set(obj, value);
 | |
|   return value;
 | |
| };
 | |
| 
 | |
| // src/main.ts
 | |
| var main_exports = {};
 | |
| __export(main_exports, {
 | |
|   default: () => QuickPreviewPlugin
 | |
| });
 | |
| module.exports = __toCommonJS(main_exports);
 | |
| var import_obsidian5 = require("obsidian");
 | |
| var import_obsidian6 = require("obsidian");
 | |
| 
 | |
| // node_modules/monkey-around/mjs/index.js
 | |
| function around(obj, factories) {
 | |
|   const removers = Object.keys(factories).map((key) => around1(obj, key, factories[key]));
 | |
|   return removers.length === 1 ? removers[0] : function() {
 | |
|     removers.forEach((r) => r());
 | |
|   };
 | |
| }
 | |
| function around1(obj, method, createWrapper) {
 | |
|   const original = obj[method], hadOwn = obj.hasOwnProperty(method);
 | |
|   let current = createWrapper(original);
 | |
|   if (original)
 | |
|     Object.setPrototypeOf(current, original);
 | |
|   Object.setPrototypeOf(wrapper, current);
 | |
|   obj[method] = wrapper;
 | |
|   return remove;
 | |
|   function wrapper(...args) {
 | |
|     if (current === original && obj[method] === wrapper)
 | |
|       remove();
 | |
|     return current.apply(this, args);
 | |
|   }
 | |
|   function remove() {
 | |
|     if (obj[method] === wrapper) {
 | |
|       if (hadOwn)
 | |
|         obj[method] = original;
 | |
|       else
 | |
|         delete obj[method];
 | |
|     }
 | |
|     if (current === original)
 | |
|       return;
 | |
|     current = original;
 | |
|     Object.setPrototypeOf(wrapper, original || Function);
 | |
|   }
 | |
| }
 | |
| 
 | |
| // src/settings.ts
 | |
| var import_obsidian2 = require("obsidian");
 | |
| 
 | |
| // src/utils.ts
 | |
| var import_obsidian = require("obsidian");
 | |
| function getModifierNameInPlatform(mod) {
 | |
|   if (mod === "Mod") {
 | |
|     return import_obsidian.Platform.isMacOS || import_obsidian.Platform.isIosApp ? "Command" : "Ctrl";
 | |
|   }
 | |
|   if (mod === "Shift") {
 | |
|     return "Shift";
 | |
|   }
 | |
|   if (mod === "Alt") {
 | |
|     return import_obsidian.Platform.isMacOS || import_obsidian.Platform.isIosApp ? "Option" : "Alt";
 | |
|   }
 | |
|   if (mod === "Meta") {
 | |
|     return import_obsidian.Platform.isMacOS || import_obsidian.Platform.isIosApp ? "Command" : import_obsidian.Platform.isWin ? "Win" : "Meta";
 | |
|   }
 | |
|   return "Ctrl";
 | |
| }
 | |
| function getSelectedItem(suggestions) {
 | |
|   return suggestions.values[suggestions.selectedItem];
 | |
| }
 | |
| 
 | |
| // src/settings.ts
 | |
| var POSITIONS = ["Auto", "Top left", "Top right", "Bottom left", "Bottom right", "Custom"];
 | |
| var DEFAULT_SETTINGS = {
 | |
|   modifier: "Alt",
 | |
|   lazyHide: true,
 | |
|   position: "Auto",
 | |
|   customPositionX: 0,
 | |
|   customPositionY: 0,
 | |
|   stickToMouse: true,
 | |
|   log: false,
 | |
|   disableCloseSuggest: false
 | |
| };
 | |
| var QuickPreviewSettingTab = class extends import_obsidian2.PluginSettingTab {
 | |
|   constructor(plugin) {
 | |
|     super(plugin.app, plugin);
 | |
|     this.plugin = plugin;
 | |
|   }
 | |
|   addTextSetting(settingName) {
 | |
|     return new import_obsidian2.Setting(this.containerEl).addText((text) => {
 | |
|       text.setValue(this.plugin.settings[settingName]).setPlaceholder(DEFAULT_SETTINGS[settingName]).onChange(async (value) => {
 | |
|         this.plugin.settings[settingName] = value;
 | |
|         await this.plugin.saveSettings();
 | |
|       });
 | |
|     });
 | |
|   }
 | |
|   addNumberSetting(settingName) {
 | |
|     return new import_obsidian2.Setting(this.containerEl).addText((text) => {
 | |
|       text.setValue("" + this.plugin.settings[settingName]).setPlaceholder("" + DEFAULT_SETTINGS[settingName]).then((text2) => text2.inputEl.type = "number").onChange(async (value) => {
 | |
|         this.plugin.settings[settingName] = value === "" ? DEFAULT_SETTINGS[settingName] : +value;
 | |
|         await this.plugin.saveSettings();
 | |
|       });
 | |
|     });
 | |
|   }
 | |
|   addToggleSetting(settingName, extraOnChange) {
 | |
|     return new import_obsidian2.Setting(this.containerEl).addToggle((toggle) => {
 | |
|       toggle.setValue(this.plugin.settings[settingName]).onChange(async (value) => {
 | |
|         this.plugin.settings[settingName] = value;
 | |
|         await this.plugin.saveSettings();
 | |
|         extraOnChange == null ? void 0 : extraOnChange(value);
 | |
|       });
 | |
|     });
 | |
|   }
 | |
|   addDropdowenSetting(settingName, options, display, extraOnChange) {
 | |
|     return new import_obsidian2.Setting(this.containerEl).addDropdown((dropdown) => {
 | |
|       var _a;
 | |
|       const displayNames = /* @__PURE__ */ new Set();
 | |
|       for (const option of options) {
 | |
|         const displayName = (_a = display == null ? void 0 : display(option)) != null ? _a : option;
 | |
|         if (!displayNames.has(displayName)) {
 | |
|           dropdown.addOption(option, displayName);
 | |
|           displayNames.add(displayName);
 | |
|         }
 | |
|       }
 | |
|       dropdown.setValue(this.plugin.settings[settingName]).onChange(async (value) => {
 | |
|         this.plugin.settings[settingName] = value;
 | |
|         await this.plugin.saveSettings();
 | |
|         extraOnChange == null ? void 0 : extraOnChange(value);
 | |
|       });
 | |
|     });
 | |
|   }
 | |
|   addSliderSetting(settingName, min, max, step) {
 | |
|     return new import_obsidian2.Setting(this.containerEl).addSlider((slider) => {
 | |
|       slider.setLimits(min, max, step).setValue(this.plugin.settings[settingName]).setDynamicTooltip().onChange(async (value) => {
 | |
|         this.plugin.settings[settingName] = value;
 | |
|         await this.plugin.saveSettings();
 | |
|       });
 | |
|     });
 | |
|   }
 | |
|   display() {
 | |
|     this.containerEl.empty();
 | |
|     this.addDropdowenSetting("modifier", ["Mod", "Ctrl", "Meta", "Shift", "Alt"], getModifierNameInPlatform).setName("Modifier key to toggle quick preview").setDesc("Hold down this key to preview a suggestion before selecting it.");
 | |
|     this.addDropdowenSetting("position", POSITIONS, void 0, () => this.display()).setName("Quick preview position").setDesc("Where to show the quick preview.");
 | |
|     if (this.plugin.settings.position === "Custom") {
 | |
|       this.addNumberSetting("customPositionX").setName("Custom x coordinate").setDesc("Offset relative to the left edge of the window.");
 | |
|       this.addNumberSetting("customPositionY").setName("Custom y coordinate").setDesc("Offset relative to the top edge of the window.");
 | |
|     }
 | |
|     this.addToggleSetting("stickToMouse").setName("Stick to mouse position").setDesc("If turned on, the preview popover will follow the mouse pointer.");
 | |
|     this.addToggleSetting("lazyHide").setName("Don't close the current preview until the next preview is ready").setDesc("If turned on, pressing arrow keys or hovering the mouse pointer over a suggestion while holding the modifier key will not immediately close the preview, but instead wait for the preview for the newly selected suggestion to load.");
 | |
|     new import_obsidian2.Setting(this.containerEl).setName("Debug mode (advanced)").setHeading();
 | |
|     this.addToggleSetting("log").setName("Show selected suggestion in console");
 | |
|     this.addToggleSetting("disableCloseSuggest", (disable) => {
 | |
|       const suggest = this.plugin.getBuiltInSuggest();
 | |
|       if (!disable && suggest.isOpen)
 | |
|         suggest.close();
 | |
|     }).setName("Prevent the suggestion box from closing").setDesc("Useful for inspecting the suggestion box DOM.");
 | |
|   }
 | |
| };
 | |
| 
 | |
| // src/popoverManager.ts
 | |
| var import_obsidian3 = require("obsidian");
 | |
| 
 | |
| // src/hoverParent.ts
 | |
| var _hoverPopover;
 | |
| var QuickPreviewHoverParent = class {
 | |
|   constructor(suggest) {
 | |
|     this.suggest = suggest;
 | |
|     __privateAdd(this, _hoverPopover, null);
 | |
|     this.hidden = false;
 | |
|     this.manager = this.suggest.popoverManager;
 | |
|   }
 | |
|   hide() {
 | |
|     var _a;
 | |
|     (_a = this.hoverPopover) == null ? void 0 : _a.hide();
 | |
|     this.hidden = true;
 | |
|     if (this.manager.currentOpenHoverParent === this) {
 | |
|       this.manager.currentOpenHoverParent = null;
 | |
|     }
 | |
|   }
 | |
|   get hoverPopover() {
 | |
|     return __privateGet(this, _hoverPopover);
 | |
|   }
 | |
|   set hoverPopover(hoverPopover) {
 | |
|     var _a;
 | |
|     __privateSet(this, _hoverPopover, hoverPopover);
 | |
|     if (__privateGet(this, _hoverPopover)) {
 | |
|       this.manager.addChild(__privateGet(this, _hoverPopover));
 | |
|       (_a = this.manager.currentOpenHoverParent) == null ? void 0 : _a.hide();
 | |
|       this.manager.currentOpenHoverParent = this;
 | |
|       if (this.hidden) {
 | |
|         this.hide();
 | |
|         return;
 | |
|       }
 | |
|       __privateGet(this, _hoverPopover).hoverEl.addClass("quick-preview");
 | |
|       __privateGet(this, _hoverPopover).position(__privateGet(this, _hoverPopover).shownPos = this.manager.getShownPos());
 | |
|     }
 | |
|   }
 | |
| };
 | |
| _hoverPopover = new WeakMap();
 | |
| 
 | |
| // src/popoverManager.ts
 | |
| var PopoverManager = class extends import_obsidian3.Component {
 | |
|   constructor(plugin, suggest, itemNormalizer) {
 | |
|     super();
 | |
|     this.plugin = plugin;
 | |
|     this.suggest = suggest;
 | |
|     this.itemNormalizer = itemNormalizer;
 | |
|     this.currentHoverParent = null;
 | |
|     this.currentOpenHoverParent = null;
 | |
|     this.lastEvent = null;
 | |
|     this.handlers = [];
 | |
|     this.popoverHeight = null;
 | |
|     this.popoverWidth = null;
 | |
|     if (suggest instanceof import_obsidian3.PopoverSuggest)
 | |
|       this.suggestions = suggest.suggestions;
 | |
|     else
 | |
|       this.suggestions = suggest.chooser;
 | |
|   }
 | |
|   get doc() {
 | |
|     return this.suggestions.containerEl.doc;
 | |
|   }
 | |
|   get win() {
 | |
|     return this.doc.win;
 | |
|   }
 | |
|   onload() {
 | |
|     this.registerDomEvent(this.win, "keydown", (event) => {
 | |
|       if (this.suggest.isOpen && import_obsidian3.Keymap.isModifier(event, this.plugin.settings.modifier)) {
 | |
|         if (this.currentOpenHoverParent)
 | |
|           this.hide();
 | |
|         else {
 | |
|           const item = getSelectedItem(this.suggestions);
 | |
|           if (item)
 | |
|             this.spawnPreview(item);
 | |
|         }
 | |
|       }
 | |
|     });
 | |
|     this.registerDomEvent(this.win, "keyup", (event) => {
 | |
|       if (event.key === this.plugin.settings.modifier)
 | |
|         this.hide();
 | |
|     });
 | |
|     this.registerDomEvent(this.win, "mousemove", (event) => {
 | |
|       if (!import_obsidian3.Keymap.isModifier(event, this.plugin.settings.modifier))
 | |
|         this.hide();
 | |
|     });
 | |
|     this.handlers.push(
 | |
|       this.suggest.scope.register([this.plugin.settings.modifier], "ArrowUp", (event) => {
 | |
|         this.suggestions.moveUp(event);
 | |
|         return false;
 | |
|       }),
 | |
|       this.suggest.scope.register([this.plugin.settings.modifier], "ArrowDown", (event) => {
 | |
|         this.suggestions.moveDown(event);
 | |
|         return false;
 | |
|       })
 | |
|     );
 | |
|   }
 | |
|   onunload() {
 | |
|     var _a, _b;
 | |
|     this.handlers.forEach((handler) => {
 | |
|       this.suggest.scope.unregister(handler);
 | |
|     });
 | |
|     this.handlers.length = 0;
 | |
|     (_a = this.currentHoverParent) == null ? void 0 : _a.hide();
 | |
|     this.currentHoverParent = null;
 | |
|     (_b = this.currentOpenHoverParent) == null ? void 0 : _b.hide();
 | |
|     this.currentOpenHoverParent = null;
 | |
|     this.lastEvent = null;
 | |
|   }
 | |
|   hide(lazy = false) {
 | |
|     var _a;
 | |
|     if (!lazy)
 | |
|       (_a = this.currentHoverParent) == null ? void 0 : _a.hide();
 | |
|     this.currentHoverParent = null;
 | |
|   }
 | |
|   spawnPreview(item, lazyHide = false, event = null) {
 | |
|     this.hide(lazyHide);
 | |
|     if (event && (event.instanceOf(MouseEvent) || event.instanceOf(PointerEvent)))
 | |
|       this.lastEvent = event;
 | |
|     this.currentHoverParent = new QuickPreviewHoverParent(this.suggest);
 | |
|     const info = this.itemNormalizer(item);
 | |
|     if (info)
 | |
|       this.plugin.onLinkHover(this.currentHoverParent, this.doc.body, info.linktext, info.sourcePath, { scroll: info.line });
 | |
|   }
 | |
|   getShownPos() {
 | |
|     if (this.plugin.settings.stickToMouse && this.lastEvent)
 | |
|       return { x: this.lastEvent.clientX, y: this.lastEvent.clientY };
 | |
|     const position = this.plugin.settings.position;
 | |
|     if (position === "Auto") {
 | |
|       return this.getShownPosAuto();
 | |
|     } else if (position === "Custom") {
 | |
|       return { x: this.plugin.settings.customPositionX, y: this.plugin.settings.customPositionY };
 | |
|     }
 | |
|     return this.getShownPosCorner(position);
 | |
|   }
 | |
|   getShownPosCorner(position) {
 | |
|     if (position === "Top left") {
 | |
|       return { x: 0, y: 0 };
 | |
|     } else if (position === "Top right") {
 | |
|       return { x: this.win.innerWidth, y: 0 };
 | |
|     } else if (position === "Bottom left") {
 | |
|       return { x: 0, y: this.win.innerHeight };
 | |
|     }
 | |
|     return { x: this.win.innerWidth, y: this.win.innerHeight };
 | |
|   }
 | |
|   getShownPosAuto() {
 | |
|     var _a, _b, _c, _d, _e;
 | |
|     const el = this.suggestions.containerEl;
 | |
|     const { top, bottom, left, right, width, height } = el.getBoundingClientRect();
 | |
|     const popover = (_a = this.currentHoverParent) == null ? void 0 : _a.hoverPopover;
 | |
|     this.popoverWidth = (_c = (_b = popover == null ? void 0 : popover.hoverEl.offsetWidth) != null ? _b : this.popoverWidth) != null ? _c : null;
 | |
|     this.popoverHeight = (_e = (_d = popover == null ? void 0 : popover.hoverEl.offsetHeight) != null ? _d : this.popoverHeight) != null ? _e : null;
 | |
|     if (this.popoverWidth && this.popoverHeight) {
 | |
|       let offsetX = width * 0.1;
 | |
|       let offsetY = height * 0.1;
 | |
|       if (right - offsetX + this.popoverWidth < this.win.innerWidth)
 | |
|         return { x: right - offsetX, y: top + offsetY };
 | |
|       offsetX = width * 0.03;
 | |
|       offsetY = height * 0.05;
 | |
|       if (left > this.popoverWidth + offsetX)
 | |
|         return { x: left - this.popoverWidth - offsetX, y: top + offsetY };
 | |
|     }
 | |
|     const x = (left + right) * 0.5;
 | |
|     const y = (top + bottom) * 0.5;
 | |
|     if (x >= this.win.innerWidth * 0.6) {
 | |
|       if (y >= this.win.innerHeight * 0.5)
 | |
|         return this.getShownPosCorner("Top left");
 | |
|       return this.getShownPosCorner("Bottom left");
 | |
|     }
 | |
|     if (y >= this.win.innerHeight * 0.5)
 | |
|       return this.getShownPosCorner("Top right");
 | |
|     return this.getShownPosCorner("Bottom right");
 | |
|   }
 | |
| };
 | |
| 
 | |
| // src/reload.ts
 | |
| var import_obsidian4 = require("obsidian");
 | |
| var ReloadModal = class extends import_obsidian4.Modal {
 | |
|   constructor(app) {
 | |
|     super(app);
 | |
|   }
 | |
|   onOpen() {
 | |
|     this.titleEl.setText("Quick Preview");
 | |
|     this.contentEl.setText("You need to reload the app to be able to use this plugin together with Hover Editor.");
 | |
|     new import_obsidian4.Setting(this.contentEl).addButton((button) => {
 | |
|       button.setButtonText("Reload").setCta().onClick(() => this.app.commands.executeCommandById("app:reload"));
 | |
|     }).addButton((button) => {
 | |
|       button.setButtonText("Not now").onClick(() => this.close());
 | |
|     });
 | |
|   }
 | |
|   onClose() {
 | |
|     this.contentEl.empty();
 | |
|   }
 | |
| };
 | |
| 
 | |
| // src/main.ts
 | |
| var _originalOnLinkHover;
 | |
| var QuickPreviewPlugin = class extends import_obsidian6.Plugin {
 | |
|   constructor() {
 | |
|     super(...arguments);
 | |
|     __privateAdd(this, _originalOnLinkHover, void 0);
 | |
|   }
 | |
|   async onload() {
 | |
|     if (this.app.workspace.layoutReady && this.app.plugins.enabledPlugins.has("obsidian-hover-editor")) {
 | |
|       new ReloadModal(this.app).open();
 | |
|     }
 | |
|     __privateSet(this, _originalOnLinkHover, this.app.internalPlugins.getPluginById("page-preview").instance.onLinkHover);
 | |
|     await this.loadSettings();
 | |
|     await this.saveSettings();
 | |
|     this.addSettingTab(new QuickPreviewSettingTab(this));
 | |
|     this.app.workspace.onLayoutReady(() => {
 | |
|       this.patchSetSelectedItem();
 | |
|       this.patchSuggester(this.getBuiltInSuggest().constructor, (item) => {
 | |
|         if (!item.file)
 | |
|           return null;
 | |
|         const info = { linktext: item.file.path, sourcePath: "" };
 | |
|         if (item.type === "heading")
 | |
|           info.linktext += "#" + (0, import_obsidian5.stripHeadingForLink)(item.heading);
 | |
|         else if (item.type === "block")
 | |
|           info.line = item.node.position.start.line;
 | |
|         return info;
 | |
|       });
 | |
|       const quickSwitcherConstructor = this.app.internalPlugins.getPluginById("switcher").instance.QuickSwitcherModal;
 | |
|       const generalFileSuggestConstructor = Object.getPrototypeOf(quickSwitcherConstructor);
 | |
|       this.patchSuggester(
 | |
|         generalFileSuggestConstructor,
 | |
|         (item) => {
 | |
|           var _a;
 | |
|           if (!item.file)
 | |
|             return null;
 | |
|           const info = { linktext: item.file.path, sourcePath: "" };
 | |
|           if (item.type === "headingsList")
 | |
|             info.linktext += "#" + (0, import_obsidian5.stripHeadingForLink)(item.item.heading);
 | |
|           else if (item.type === "symbolList")
 | |
|             info.line = item.item.symbol.position.start.line;
 | |
|           else if (item.type === "bookmark" && item.item.type === "file")
 | |
|             info.linktext = item.item.path + ((_a = item.item.subpath) != null ? _a : "");
 | |
|           return info;
 | |
|         }
 | |
|       );
 | |
|     });
 | |
|   }
 | |
|   async loadSettings() {
 | |
|     this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
 | |
|   }
 | |
|   async saveSettings() {
 | |
|     await this.saveData(this.settings);
 | |
|   }
 | |
|   /** Call the core Page Preview plugin's (potentially) original onLinkHover method. */
 | |
|   onLinkHover(hoverParent, targetEl, linktext, sourcePath, state) {
 | |
|     const self = this.app.internalPlugins.getPluginById("page-preview").instance;
 | |
|     return __privateGet(this, _originalOnLinkHover).call(self, hoverParent, targetEl, linktext, sourcePath, state);
 | |
|   }
 | |
|   getBuiltInSuggest() {
 | |
|     return this.app.workspace.editorSuggest.suggests[0];
 | |
|   }
 | |
|   patchSetSelectedItem() {
 | |
|     const plugin = this;
 | |
|     const suggest = this.getBuiltInSuggest();
 | |
|     this.register(around(suggest.suggestions.constructor.prototype, {
 | |
|       setSelectedItem(old) {
 | |
|         return function(index, event) {
 | |
|           old.call(this, index, event);
 | |
|           if (this.chooser.popoverManager instanceof PopoverManager) {
 | |
|             const manager = this.chooser.popoverManager;
 | |
|             if (plugin.settings.log)
 | |
|               console.log(getSelectedItem(this));
 | |
|             if (event && import_obsidian6.Keymap.isModifier(event, plugin.settings.modifier)) {
 | |
|               const item = getSelectedItem(this);
 | |
|               if (item)
 | |
|                 manager.spawnPreview(item, plugin.settings.lazyHide, event);
 | |
|             }
 | |
|           }
 | |
|         };
 | |
|       }
 | |
|     }));
 | |
|   }
 | |
|   patchSuggester(suggestClass, itemNormalizer) {
 | |
|     const prototype = suggestClass.prototype;
 | |
|     const plugin = this;
 | |
|     const uninstaller = around(prototype, {
 | |
|       open(old) {
 | |
|         return function() {
 | |
|           old.call(this);
 | |
|           if (!this.popoverManager)
 | |
|             this.popoverManager = new PopoverManager(plugin, this, itemNormalizer);
 | |
|           this.popoverManager.load();
 | |
|         };
 | |
|       },
 | |
|       close(old) {
 | |
|         return function() {
 | |
|           var _a;
 | |
|           if (plugin.settings.disableCloseSuggest)
 | |
|             return;
 | |
|           old.call(this);
 | |
|           (_a = this.popoverManager) == null ? void 0 : _a.unload();
 | |
|         };
 | |
|       }
 | |
|     });
 | |
|     this.register(uninstaller);
 | |
|     return uninstaller;
 | |
|   }
 | |
| };
 | |
| _originalOnLinkHover = new WeakMap();
 |