+ ${getSlashItem("# " + Lute.Caret, "iconH1", window.siyuan.languages.heading1, "true")}
+ ${getSlashItem("## " + Lute.Caret, "iconH2", window.siyuan.languages.heading2, "true")}
+
+ ${getSlashItem("### " + Lute.Caret, "iconH3", window.siyuan.languages.heading3, "true")}
+ ${getSlashItem("#### " + Lute.Caret, "iconH4", window.siyuan.languages.heading4, "true")}
+
+ ${getSlashItem("##### " + Lute.Caret, "iconH5", window.siyuan.languages.heading5, "true")}
+ ${getSlashItem("###### " + Lute.Caret, "iconH6", window.siyuan.languages.heading6, "true")}
+
+ ${getSlashItem("* " + Lute.Caret, "iconList", window.siyuan.languages.list, "true")}
+ ${getSlashItem("1. " + Lute.Caret, "iconOrderedList", window.siyuan.languages["ordered-list"], "true")}
+
+ ${getSlashItem("* [ ] " + Lute.Caret, "iconCheck", window.siyuan.languages.check, "true")}
+ ${getSlashItem("> " + Lute.Caret, "iconQuote", window.siyuan.languages.quote, "true")}
+
+ ${getSlashItem("```", "iconCode", window.siyuan.languages.code, "true")}
+ ${getSlashItem(`| ${Lute.Caret} | | |\n| --- | --- | --- |\n| | | |\n| | | |`, "iconTable", window.siyuan.languages.table, "true")}
+
+ ${getSlashItem("---", "iconLine", window.siyuan.languages.line, "true")}
+ ${getSlashItem("$$", "iconMath", window.siyuan.languages.math)}
+
+ ${getSlashItem("
", "iconHTML5", "HTML")}
+
+
+
+
+ ${getSlashItem("emoji", "iconEmoji", window.siyuan.languages.emoji, "true")}
+ ${getSlashItem("a", "iconLink", window.siyuan.languages.link)}
+
+
+ ${getSlashItem("strong", "iconBold", window.siyuan.languages.bold, "true")}
+ ${getSlashItem("em", "iconItalic", window.siyuan.languages.italic, "true")}
+
+
+ ${getSlashItem("u", "iconUnderline", window.siyuan.languages.underline, "true")}
+ ${getSlashItem("s", "iconStrike", window.siyuan.languages.strike, "true")}
+
+
+ ${getSlashItem("mark", "iconMark", window.siyuan.languages.mark, "true")}
+ ${getSlashItem("sup", "iconSup", window.siyuan.languages.sup, "true")}
+
+
+ ${getSlashItem("sub", "iconSub", window.siyuan.languages.sub, "true")}
+ ${getSlashItem("tag", "iconTags", window.siyuan.languages.tag, "true")}
+
+
+ ${getSlashItem("code", "iconInlineCode", window.siyuan.languages["inline-code"], "true")}
+ ${getSlashItem("inline-math", "iconMath", window.siyuan.languages["inline-math"])}
+
+
+
+ ${getSlashItem(Constants.ZWSP + 3, "iconDownload", window.siyuan.languages.insertAsset + '', "true")}
+ ${getSlashItem('', "iconLanguage", window.siyuan.languages.insertIframeURL, "true")}
+
+
+ ${getSlashItem("![]()", "iconImage", window.siyuan.languages.insertImgURL, "true")}
+ ${getSlashItem('', "iconVideo", window.siyuan.languages.insertVideoURL, "true")}
+
+
+ ${getSlashItem('
', "iconRecord", window.siyuan.languages.insertAudioURL, "true")}
+
+
+
+
+ ${getSlashItem("```abc\n```", "", window.siyuan.languages.staff, "true")}
+ ${getSlashItem("```echarts\n```", "", window.siyuan.languages.chart, "true")}
+
+
+ ${getSlashItem("```flowchart\n```", "", "Flow Chart", "true")}
+ ${getSlashItem("```graphviz\n```", "", "Graph", "true")}
+
+
+ ${getSlashItem("```mermaid\n```", "", "Mermaid", "true")}
+ ${getSlashItem("```mindmap\n```", "", window.siyuan.languages.mindmap, "true")}
+
+
+ ${getSlashItem("```plantuml\n```", "", "UML", "true")}
+
+
+
+
+ ${getSlashItem(`style${Constants.ZWSP}color: var(--b3-card-info-color);background-color: var(--b3-card-info-background);`, '
A
', window.siyuan.languages.infoStyle, "true")}
+ ${getSlashItem(`style${Constants.ZWSP}color: var(--b3-card-success-color);background-color: var(--b3-card-success-background);`, '
A
', window.siyuan.languages.successStyle, "true")}
+
+
+ ${getSlashItem(`style${Constants.ZWSP}color: var(--b3-card-warning-color);background-color: var(--b3-card-warning-background);`, '
A
', window.siyuan.languages.warningStyle, "true")}
+ ${getSlashItem(`style${Constants.ZWSP}color: var(--b3-card-error-color);background-color: var(--b3-card-error-background);`, '
A
', window.siyuan.languages.errorStyle, "true")}
+
+
+ ${getSlashItem(`style${Constants.ZWSP}`, '
A
', window.siyuan.languages.clearFontStyle, "true")}
+
`;
protyle.hint.bindUploadEvent(protyle, utilElement);
};
@@ -231,10 +333,15 @@ export const initKeyboardToolbar = () => {
const slashBtnElement = hasClosestByClassName(event.target as HTMLElement, "keyboard__slash-item");
const protyle = window.siyuan.mobile.editor.protyle;
if (slashBtnElement) {
- protyle.hint.fill(decodeURIComponent(slashBtnElement.getAttribute("data-value")), protyle);
- focusByRange(protyle.toolbar.range);
- event.preventDefault();
- event.stopPropagation();
+ const dataValue = decodeURIComponent(slashBtnElement.getAttribute("data-value"))
+ protyle.hint.fill(dataValue, protyle, false); // 点击后 range 会改变
+ if (dataValue !== Constants.ZWSP + 3) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ if (slashBtnElement.getAttribute("data-focus") === "true") {
+ focusByRange(protyle.toolbar.range);
+ }
return;
}
const buttonElement = hasClosestByMatchTag(target, "BUTTON");
diff --git a/app/src/protyle/hint/index.ts b/app/src/protyle/hint/index.ts
index 7ba9ae9ca..a4b14fd50 100644
--- a/app/src/protyle/hint/index.ts
+++ b/app/src/protyle/hint/index.ts
@@ -393,9 +393,11 @@ ${unicode2Emoji(emoji.unicode, true)}`;
}
}
- public fill(value: string, protyle: IProtyle) {
+ public fill(value: string, protyle: IProtyle, updateRange = true) {
hideElements(["hint", "toolbar"], protyle);
- protyle.toolbar.range = getEditorRange(protyle.wysiwyg.element);
+ if (updateRange) {
+ protyle.toolbar.range = getEditorRange(protyle.wysiwyg.element);
+ }
const range = protyle.toolbar.range;
let nodeElement = hasClosestBlock(protyle.toolbar.range.startContainer) as HTMLElement;
if (!nodeElement) {