From 182457e7cf2d1eaecda5f51af4a485e13923a42c Mon Sep 17 00:00:00 2001 From: Filip Noetzel Date: Thu, 20 Mar 2025 06:46:10 +0100 Subject: [PATCH] fix typescript --- main.ts | 34 ++++++++---------- package-lock.json | 91 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 3 files changed, 106 insertions(+), 20 deletions(-) diff --git a/main.ts b/main.ts index 743c42e..216c9e2 100644 --- a/main.ts +++ b/main.ts @@ -1,4 +1,4 @@ -const { Plugin } = require("obsidian"); +import { MarkdownView, Plugin } from 'obsidian'; function getUnicodeCharLength(str) { return [...str].length; @@ -34,35 +34,29 @@ const SYMBOL_PATTERNS = [ ]; class InteractiveRatingsPlugin extends Plugin { + + ratingsOverlay: HTMLElement | null; + async onload() { console.log('Loading Interactive Ratings plugin'); - + // For editing mode, add event listener to the app's workspace this.registerDomEvent(document, 'mousemove', (evt) => { - // Check if we're in editor mode - const activeLeaf = this.app.workspace.activeLeaf; - if (!activeLeaf || !activeLeaf.view) return; - - // Check if the view is a markdown editor in source mode - const isSourceMode = activeLeaf.view.getViewType() === 'markdown' && - activeLeaf.view.getMode() !== 'preview'; + // Check if we're in editor mode using getActiveViewOfType instead of activeLeaf + const markdownView = this.app.workspace.getActiveViewOfType(MarkdownView); + if (!markdownView) return; + // Check if the view is in source mode + const isSourceMode = markdownView.getMode() !== 'preview'; if (!isSourceMode) return; - // Get the editor element - const editor = activeLeaf.view.editor; + // Get the editor using the markdownView + const editor = markdownView.editor; if (!editor) return; - - // Check if target is in the editor - const editorEl = editor.editorComponent.editorEl; - if (!editorEl.contains(evt.target)) return; - + // Process the event this.handleEditorHover(evt, editor); }); - - // Add CSS to the document - this.addStyle(); } @@ -286,7 +280,7 @@ class InteractiveRatingsPlugin extends Plugin { // Use Unicode-aware character counting const symbolCount = getUnicodeCharLength(symbols); - overlay.dataset.symbolCount = symbolCount; + overlay.dataset.symbolCount = symbolCount.toString(); // Add symbols to the overlay - properly iterate over Unicode characters const symbolsArray = [...symbols]; diff --git a/package-lock.json b/package-lock.json index 3610c53..c6102e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,33 @@ "version": "1.0.0", "license": "MIT", "devDependencies": { + "obsidian": "^1.8.7", "ts-node": "^10.9.2", "typescript": "^5.8.2" } }, + "node_modules/@codemirror/state": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz", + "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==", + "dev": true, + "peer": true, + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.36.4", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.36.4.tgz", + "integrity": "sha512-ZQ0V5ovw/miKEXTvjgzRyjnrk9TwriUB1k4R5p7uNnHR9Hus+D1SXHGdJshijEzPFjU25xea/7nhIeSqYFKdbA==", + "dev": true, + "peer": true, + "dependencies": { + "@codemirror/state": "^6.5.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -50,6 +73,13 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", + "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", + "dev": true, + "peer": true + }, "node_modules/@tsconfig/node10": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", @@ -74,6 +104,21 @@ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, + "node_modules/@types/codemirror": { + "version": "5.60.8", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.8.tgz", + "integrity": "sha512-VjFgDF/eB+Aklcy15TtOTLQeMjTo07k7KAjql8OK5Dirr7a6sJY4T1uVBDuTVG9VEmn1uUsohOpYnVfgC6/jyw==", + "dev": true, + "dependencies": { + "@types/tern": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, "node_modules/@types/node": { "version": "22.13.10", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", @@ -84,6 +129,15 @@ "undici-types": "~6.20.0" } }, + "node_modules/@types/tern": { + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz", + "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", @@ -135,6 +189,36 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/obsidian": { + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-1.8.7.tgz", + "integrity": "sha512-h4bWwNFAGRXlMlMAzdEiIM2ppTGlrh7uGOJS6w4gClrsjc+ei/3YAtU2VdFUlCiPuTHpY4aBpFJJW75S1Tl/JA==", + "dev": true, + "dependencies": { + "@types/codemirror": "5.60.8", + "moment": "2.29.4" + }, + "peerDependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", + "dev": true, + "peer": true + }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -204,6 +288,13 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "dev": true, + "peer": true + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index 3e00f51..c3c736b 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "author": "peritus", "license": "MIT", "devDependencies": { + "obsidian": "^1.8.7", "ts-node": "^10.9.2", "typescript": "^5.8.2" }