userscript-manage-icon-with-done
code: script.js
import {press} from '/api/code/mix-juice-public/scrapbox-keyboard-emulation-3/script.js';
import {insertText} from '/api/code/mix-juice-public/scrapbox-insert-text-2/script.js';
import {KeyDownListener} from '/api/code/mix-juice-public/userscript-keydown-listener/script.js';
export function listenChangeIconStatus(iconName, keyCodes) {
const handler = () => {
let cursorLineText = document.getElementsByClassName('cursor-line')0.textContent.trim(); // 新しい行を生成
let newLine = null;
if (cursorLineText.toLowerCase().startsWith([${iconName}.icon])) {
newLine = cursorLineText.replace(/.icon]/, '_done.icon]');
} else if (cursorLineText.toLowerCase().startsWith([${iconName}_done.icon])) {
newLine = cursorLineText.replace(/_done.icon]/, '.icon]');
} else if (cursorLineText.toLowerCase().startsWith([${iconName} done.icon])) {
newLine = cursorLineText.replace(/(\s)done.icon]/, '.icon]');
} else {
newLine = [${iconName}.icon] + cursorLineText;
}
// テキスト削除
if (cursorLineText.trim().length !== 0) {
press(39, false, false, false, true);
press(8, false, false, false, true);
}
// 新しいテキスト挿入
insertText(newLine);
};
new KeyDownListener(keyCodes).listen(handler);
}