From 7d34a9baff017b5d8327d7ecd6f74c596e7d1213 Mon Sep 17 00:00:00 2001 From: oeyoews Date: Tue, 1 Oct 2024 14:04:26 +0800 Subject: [PATCH] feat: support sound for button click and some accept completion --- package.json | 2 +- src/tiddlywiki-cmp/plugin.info | 3 ++- src/tiddlywiki-codemirror-6/config/index.ts | 11 +++++++++++ .../modules/completions/sources/help.ts | 2 ++ .../modules/completions/sources/template.ts | 1 + .../modules/completions/sources/tiddlers.ts | 2 ++ .../modules/extensions/tidExt.ts | 2 ++ .../modules/extensions/wordhover.ts | 2 ++ src/tiddlywiki-codemirror-6/plugin.info | 4 ++-- .../tiddlers/auto-generated-config/config-en.multids | 2 ++ .../tiddlers/auto-generated-config/config-zh.multids | 4 +++- .../tiddlers/auto-generated-config/lineWrapping.tid | 2 +- .../tiddlers/auto-generated-config/useSound.tid | 8 ++++++++ .../tiddlers/styles/styles.tid | 2 +- .../ui/Templates/settings-input-switch-template.tid | 10 +++++++++- src/tiddlywiki-codemirror-6/utils/capitalize.ts | 12 ++++++++++++ 16 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/useSound.tid diff --git a/package.json b/package.json index 5a63bf5c..76891d7c 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "registry": "https://registry.npmjs.org" }, "license": "MIT", - "version": "2.1.2", + "version": "2.2.0", "packageManager": "pnpm@9.0.6", "scripts": { "update:config": " pnpm ts-node scripts/generateConfig.ts", diff --git a/src/tiddlywiki-cmp/plugin.info b/src/tiddlywiki-cmp/plugin.info index 96bf5f3a..7a8ead17 100644 --- a/src/tiddlywiki-cmp/plugin.info +++ b/src/tiddlywiki-cmp/plugin.info @@ -11,7 +11,8 @@ "qrcode": "yes", "created": "2024-01-05", "dependents": [ - "$:/plugins/oeyoews/tiddlywiki-codemirror-6" + "$:/plugins/oeyoews/tiddlywiki-codemirror-6", + "$:/plugins/oeyoews/neotw-play-sound" ], "list": "readme" } \ No newline at end of file diff --git a/src/tiddlywiki-codemirror-6/config/index.ts b/src/tiddlywiki-codemirror-6/config/index.ts index eaef16e5..0e2d1807 100644 --- a/src/tiddlywiki-codemirror-6/config/index.ts +++ b/src/tiddlywiki-codemirror-6/config/index.ts @@ -41,6 +41,17 @@ function defineConfig( // #region tiddlers export const tiddlers = defineConfig({ + useSound: { + caption: { + zh: '使用声音', + en: 'Use Sound' + }, + text: 'no', + description: { + zh: '插件neotw-play-sound提供声音支持', + en: 'Use Sound' + } + }, insertModeFirst: { caption: { zh: 'VIM自动进入插入模式', diff --git a/src/tiddlywiki-codemirror-6/modules/completions/sources/help.ts b/src/tiddlywiki-codemirror-6/modules/completions/sources/help.ts index 03244e4d..7d3f4550 100644 --- a/src/tiddlywiki-codemirror-6/modules/completions/sources/help.ts +++ b/src/tiddlywiki-codemirror-6/modules/completions/sources/help.ts @@ -5,6 +5,7 @@ import { } from '@codemirror/autocomplete'; import { delimitersInfo } from '.'; import { IWidget } from '@/cm6/types/IWidget'; +import { useSound } from '@/cm6/utils/capitalize'; const section = 'help'; const type = 'cm-help'; @@ -29,6 +30,7 @@ function snippets(widget: IWidget): Completion[] { view.dispatch({ changes: { from, to, insert: item.delimiter } }); + useSound(); startCompletion(view); }, type: item.type diff --git a/src/tiddlywiki-codemirror-6/modules/completions/sources/template.ts b/src/tiddlywiki-codemirror-6/modules/completions/sources/template.ts index b1813066..a50b9c75 100644 --- a/src/tiddlywiki-codemirror-6/modules/completions/sources/template.ts +++ b/src/tiddlywiki-codemirror-6/modules/completions/sources/template.ts @@ -119,5 +119,6 @@ export default { section, type, delimiter, + description, snippets }; diff --git a/src/tiddlywiki-codemirror-6/modules/completions/sources/tiddlers.ts b/src/tiddlywiki-codemirror-6/modules/completions/sources/tiddlers.ts index bee4860b..5566909e 100644 --- a/src/tiddlywiki-codemirror-6/modules/completions/sources/tiddlers.ts +++ b/src/tiddlywiki-codemirror-6/modules/completions/sources/tiddlers.ts @@ -2,6 +2,7 @@ import { Completion } from '@codemirror/autocomplete'; import conf from '@/cm6/config'; import { renderTid } from '@/cm6/utils/renderTiddler'; import { EditorView } from '@codemirror/view'; +import { useSound } from '@/cm6/utils/capitalize'; const type = 'cm-tiddler'; const section = 'tiddlers'; @@ -40,6 +41,7 @@ export function getAllTiddlers(delimiter: string) { changes: { from, to, insert: delimiter + title }, selection: { anchor: cursorEndPosition, head: cursorEndPosition } }); + useSound(); } }) as Completion ); diff --git a/src/tiddlywiki-codemirror-6/modules/extensions/tidExt.ts b/src/tiddlywiki-codemirror-6/modules/extensions/tidExt.ts index 9bcbe452..e878e03b 100644 --- a/src/tiddlywiki-codemirror-6/modules/extensions/tidExt.ts +++ b/src/tiddlywiki-codemirror-6/modules/extensions/tidExt.ts @@ -7,6 +7,7 @@ import { } from '@codemirror/view'; import cm6 from '@/cm6/config'; import createViewPlugin from '@/cm6/utils/createViewPlugin'; +import { useSound } from '@/cm6/utils/capitalize'; class CustomLink extends WidgetType { constructor(state) { @@ -32,6 +33,7 @@ class CustomLink extends WidgetType { wrapper.onclick = (e: MouseEvent) => { e.preventDefault(); if (e.ctrlKey) { + useSound(); new $tw.Story().navigateTiddler(title); } }; diff --git a/src/tiddlywiki-codemirror-6/modules/extensions/wordhover.ts b/src/tiddlywiki-codemirror-6/modules/extensions/wordhover.ts index 65fec003..17678258 100644 --- a/src/tiddlywiki-codemirror-6/modules/extensions/wordhover.ts +++ b/src/tiddlywiki-codemirror-6/modules/extensions/wordhover.ts @@ -1,3 +1,4 @@ +import { useSound } from '@/cm6/utils/capitalize'; import { type Extension } from '@codemirror/state'; import { hoverTooltip, EditorView } from '@codemirror/view'; @@ -56,6 +57,7 @@ export const wordHover: Extension = hoverTooltip( dom.addEventListener('click', (e: MouseEvent) => { e.preventDefault(); if (e.ctrlKey) { + useSound(); dom.hidden = true; // 隐藏弹窗 new $tw.Story().navigateTiddler(title); } diff --git a/src/tiddlywiki-codemirror-6/plugin.info b/src/tiddlywiki-codemirror-6/plugin.info index b2f0a1ed..0ad9ed9c 100644 --- a/src/tiddlywiki-codemirror-6/plugin.info +++ b/src/tiddlywiki-codemirror-6/plugin.info @@ -2,7 +2,7 @@ "title": "$:/plugins/oeyoews/tiddlywiki-codemirror-6", "name": "CodeMirror6", "description": "CodeMirror 6 editor", - "version": "2.1.2", - "core-version": ">=5.3.3", + "version": "2.2.0", + "core-version": ">=5.3.4", "list": "readme usage" } \ No newline at end of file diff --git a/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/config-en.multids b/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/config-en.multids index 48a05c03..ed995b6f 100644 --- a/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/config-en.multids +++ b/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/config-en.multids @@ -1,5 +1,7 @@ title: $:/language/codemirror6/ +useSound/caption: 📝 Use Sound +useSound/description: Use Sound insertModeFirst/caption: 📝 Insert Mode Auto Firstly insertModeFirst/description: Insert Mode Auto Firstly lines/caption: 📝 Lines diff --git a/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/config-zh.multids b/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/config-zh.multids index 470f12ed..42b8e3cd 100644 --- a/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/config-zh.multids +++ b/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/config-zh.multids @@ -1,5 +1,7 @@ title: $:/language/codemirror6/zh/ +useSound/caption: 📝 使用声音 +useSound/description: 插件neotw-play-sound提供声音支持 insertModeFirst/caption: 📝 VIM自动进入插入模式 insertModeFirst/description: VIM自动进入插入模式 lines/caption: 📝 自动生成行数 @@ -7,7 +9,7 @@ lines/description: 新建tiddler自动生成N行 todobox/caption: 📝 代办事项复选框(MD) todobox/description: 代办事项复选框(MD) checkbox/caption: 📝 复选框(JS) -checkbox/description: 复选框(JS) +checkbox/description: 适用于tiddler类型为javascript, 用于切换常量的布尔值, 普通用户建议关闭 foldByIndent/caption: 📝 按缩进折叠 foldByIndent/description: 按缩进折叠 removeOutline/caption: 📝 移除编辑器边框 diff --git a/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/lineWrapping.tid b/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/lineWrapping.tid index 57823d02..34c7b845 100644 --- a/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/lineWrapping.tid +++ b/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/lineWrapping.tid @@ -5,4 +5,4 @@ description: {{$:/language/codemirror6/lineWrapping/description}} description-zh: {{$:/language/codemirror6/zh/lineWrapping/description}} settings-template: $:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch -no \ No newline at end of file +yes \ No newline at end of file diff --git a/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/useSound.tid b/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/useSound.tid new file mode 100644 index 00000000..a01ab66d --- /dev/null +++ b/src/tiddlywiki-codemirror-6/tiddlers/auto-generated-config/useSound.tid @@ -0,0 +1,8 @@ +title: $:/config/codemirror-6/useSound +caption: {{$:/language/codemirror6/useSound/caption}} +caption-zh: {{$:/language/codemirror6/zh/useSound/caption}} +description: {{$:/language/codemirror6/useSound/description}} +description-zh: {{$:/language/codemirror6/zh/useSound/description}} +settings-template: $:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch + +no \ No newline at end of file diff --git a/src/tiddlywiki-codemirror-6/tiddlers/styles/styles.tid b/src/tiddlywiki-codemirror-6/tiddlers/styles/styles.tid index c3e0766f..15117bf6 100644 --- a/src/tiddlywiki-codemirror-6/tiddlers/styles/styles.tid +++ b/src/tiddlywiki-codemirror-6/tiddlers/styles/styles.tid @@ -14,7 +14,7 @@ body { height: 100vh; width: 100vw; - z-index: 1; + z-index: 999; } .tc-tiddler-edit-frame[data-tiddler-title="$(cssEscapedTitle)$"] .tc-dropzone-editor { diff --git a/src/tiddlywiki-codemirror-6/tiddlers/ui/Templates/settings-input-switch-template.tid b/src/tiddlywiki-codemirror-6/tiddlers/ui/Templates/settings-input-switch-template.tid index 673e5e59..c49b64ea 100644 --- a/src/tiddlywiki-codemirror-6/tiddlers/ui/Templates/settings-input-switch-template.tid +++ b/src/tiddlywiki-codemirror-6/tiddlers/ui/Templates/settings-input-switch-template.tid @@ -1,5 +1,9 @@ title: $:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch +\define useSound() +<$action-sendmessage $message="neotw-play-sound" audioTiddler="$:/plugins/oeyoews/neotw-play-sound/sounds/bite.mp3" /> +\end + -<$checkbox field="text" checked="yes" unchecked="no" class="btcui-form-switch"/> \ No newline at end of file +<% if [[$:/config/codemirror-6/useSound]get[text]match[yes]] %> +<$checkbox field="text" checked="yes" unchecked="no" class="btcui-form-switch" actions=<>/> +<% else %> +<$checkbox field="text" checked="yes" unchecked="no" class="btcui-form-switch"/> +<% endif %> \ No newline at end of file diff --git a/src/tiddlywiki-codemirror-6/utils/capitalize.ts b/src/tiddlywiki-codemirror-6/utils/capitalize.ts index 48d5b0b6..93dbd88a 100644 --- a/src/tiddlywiki-codemirror-6/utils/capitalize.ts +++ b/src/tiddlywiki-codemirror-6/utils/capitalize.ts @@ -1,4 +1,16 @@ +import cm6 from '../config'; + // equal to $tw.utils.toTitleCase export function capitalize(str: string) { return str.replace(/^\w/, (match) => match.toUpperCase()); } + +export function useSound() { + if (!cm6.useSound()) return; + $tw.rootWidget.dispatchEvent({ + type: 'neotw-play-sound', + paramObject: { + audioTiddler: '$:/plugins/oeyoews/neotw-play-sound/sounds/bite.mp3' + } + }); +}