From 3265c15c935bd2cd00c47583c22609a0e1026ccf Mon Sep 17 00:00:00 2001 From: cumany <42957010+cumany@users.noreply.github.com> Date: Sat, 12 Nov 2022 23:24:46 +0800 Subject: [PATCH 1/2] :bug: fix: focus on editor before inserting emoji (close #61) --- src/index.ts | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/index.ts b/src/index.ts index f0c44fd..cb598ca 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -import { App, MarkdownPostProcessor, MarkdownPreviewRenderer, Modal, Notice, Plugin, PluginSettingTab, Setting } from "obsidian"; +import { App, MarkdownPostProcessor, MarkdownPreviewRenderer, MarkdownView, Modal, Notice, Plugin, PluginSettingTab, Setting, Editor } from "obsidian"; import React from "react"; import ReactDOM from "react-dom"; import twemoji from 'twemoji' @@ -10,17 +10,25 @@ function sleep(ms: number) { return new Promise(resolve => setTimeout(resolve, ms || DEF_DELAY)); } +function insertText(editor: Editor, text: string) { + if (text.length === 0 || text==null) return + const cursor = editor.getCursor('from') + editor.replaceRange(text, cursor, cursor) + app.commands.executeCommandById("editor:focus") + app.workspace.activeLeaf.view.editor.exec("goRight") +} + class EmojiModal extends Modal { private div: HTMLElement; private reactComponent: React.ReactElement; - constructor(app: App, theme: str, isNative: boolean) { + constructor(app: App, theme: str, isNative: boolean, editor: Editor) { super(app) this.reactComponent = React.createElement(EmojiToolbar, { - "onSelect": async (emoji: any) => { + "onSelect": async (emoji) => { this.close() await sleep(10) - document.execCommand('insertText', false, emoji.native) + insertText(editor, emoji.native) }, "onClose": () => { this.close() @@ -82,7 +90,9 @@ export default class EmojiPickerPlugin extends Plugin { try { const theme = this.app.getTheme() === 'moonstone' ? 'light' : 'dark' const isNative = !this.settings.twitterEmojiActive - const myModal = new EmojiModal(this.app, theme, isNative); + const view = this.app.workspace.getActiveViewOfType(MarkdownView) + if (!view){ return } + const myModal = new EmojiModal(this.app, theme, isNative, view.editor) myModal.open() document.getElementsByClassName("emoji-mart-search")[0].getElementsByTagName('input')[0].focus() document.getElementsByClassName("emoji-mart-search")[0].getElementsByTagName('input')[0].select() From b80f64a6216513537e7284c3f1b4ce393efe1e5f Mon Sep 17 00:00:00 2001 From: Oliver Yerbury-Hodgson Date: Wed, 3 May 2023 21:47:12 +0100 Subject: [PATCH 2/2] :wrench: chore: bump version to v0.4.1 --- manifest.json | 2 +- package-lock.json | 2 +- package.json | 2 +- versions.json | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/manifest.json b/manifest.json index 78193d2..558fddf 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-emoji-toolbar", "name": "Emoji Toolbar", - "version": "0.4.0", + "version": "0.4.1", "description": "Quickly search for and insert emojis into your notes.", "author": "oliveryh", "authorUrl": "https://github.com/oliveryh/obsidian-emoji-toolbar", diff --git a/package-lock.json b/package-lock.json index 5065657..713391b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "obsidian-emoji-toolbar", - "version": "0.4.0", + "version": "0.4.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 5fdc682..b2420c8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-emoji-toolbar", - "version": "0.4.0", + "version": "0.4.1", "description": "Quickly search for an insert emojis into your editor.", "repository": { "type": "git", diff --git a/versions.json b/versions.json index bdfb8e9..a5d980d 100644 --- a/versions.json +++ b/versions.json @@ -7,5 +7,6 @@ "0.3.0": "0.10.11", "0.3.1": "0.10.11", "0.3.2": "0.16.3", - "0.4.0": "0.16.3" + "0.4.0": "0.16.3", + "0.4.1": "0.16.3" }