generated at
for-any-project
全てのScrapbox projectで使うtakker用UserScript/UserCSSのbuild URL
✅️scrapbox-bundlerで複数コードを一度にbuildできるようにしたので、これを押すだけで済むようになった

hr

全てのScrapbox projectでdefaultで用いるtakker用UserScript
old version: import-old common.js
bundle & minifyしたコードは/takker-dist/for-any-project-minに置いてある
2022-01-15
13:23:11 minifyだけにした
sourcemapがなくても、コードの形から大体どのあたりの処理なのか検討がつく
というかそんなにsourcemapでコードを閲覧する機会がない
13:21:01 やめた
page.lines must be less than 10000 linesという警告がでてしまった
minifyして行数を減らさないとダメそう
13:15:44 bundleだけにした
minifyコード+sourcemapよりbundleだけのほうがファイルサイズが若干小さくなる
template(txt)
for-any-project-min [for-any-project]を[このURL @URL@]でbundleしたもの code:script.js @https://scrapbox.io/api/code/takker/for-any-project/script.ts@ code:takker-memex.js @https://scrapbox.io/api/code/takker/import/takker-memex.js@ code:tex-worker.js @https://scrapbox.io/api/code/takker/ScrapRun/worker.ts@ code:esbuild-worker.js @https://scrapbox.io/api/code/takker/esbuild-wasm-no-blob/worker.ts@ code:takker-project.css @https://scrapbox.io/api/code/takker/takkerのbundle前CSS/project.css@ code:takker-user.css @https://scrapbox.io/api/code/takker/takkerのbundle前CSS/user.css@ code:takker-memex.css @https://scrapbox.io/api/code/takker/takker-memexのbundle前CSS/project.css@ code:takker-private.css @https://scrapbox.io/api/code/takker/takker-privateのbundle前CSS/project.css@

$ curl https://scrapbox.io/api/code/takker/for-any-project/import_map.json > deno-scrapbox-aaa.jsonc && deno check --remote -r=https://scrapbox.io --config=deno-scrapbox-aaa.jsonc https://scrapbox.io/api/code/takker/for-any-project/script.ts || rm deno-scrapbox-aaa.jsonc
$ deno info -r=https://scrapbox.io --import-map=https://scrapbox.io/api/code/takker/for-any-project/import_map.json https://scrapbox.io/api/code/takker/for-any-project/script.ts
script.ts
import { sync } from "../scrapbox-watchlist-sync/script.ts"; sync({ project: "takker-dist" });

script.ts
import "../Open_Gyazo_page_menu/script.js";

#2024-04-07 21:45:34 weekly-scheduler.tsxを導入したので不要

script.ts
import { setup as setupSearch } from "../takker99%2Fscrapbox-incremental-fulltext-search/mod.tsx"; setupSearch().then((ops) => { scrapbox.PageMenu.addItem({ title: "Fulltext Search", onClick: () => { ops.toggle(); }, }); });

script.ts
import { scrapBindings } from "./bindings.ts"; export { scrapBindings };
bindings.ts
import { Mousetrap } from "../takker99%2FScrapBindings/mod.ts"; import { useStatusBar, addTextInputEventListener, removeTextInputEventListener, } from "../scrapbox-userscript-std/dom.ts"; import { config, task } from "../takker99%2FScrapBindings-settings/config.ts"; import { Scrapbox } from "../scrapbox-jp%2Ftypes/userscript.ts"; declare const scrapbox: Scrapbox; const { render } = useStatusBar(); let animationId: number| undefined; const onSequenceUpdate = (text: string) => { if(animationId !== undefined) cancelAnimationFrame(animationId); animationId = requestAnimationFrame(() => render( { type: "text", text, } )); }; export const scrapBindings = new Mousetrap( { addEventListener: addTextInputEventListener, removeEventListener: removeTextInputEventListener, }, { onSequenceUpdate, }, ); const errors = scrapBindings.bind({ ...config, ...(scrapbox.Project.name === "takker-memex" ? task : {}), }); if(errors.size > 0) { alert([...errors.entries()].map( ([seq, messages]) => `${seq}:\n${ messages.map((message) => `- ${message}`).join("\n") }` ).join("\n")); }

2023-07-10
10:20:47 井戸端を追加し、scrapbox.io/NDLSH-SBを削除した
2023-02-10
05:47:18 mobileでのhover待機時間を0.5秒から0.3秒に縮めた
これで長押しメニューを開かずにbubbleさせられるようになった
操作はややトリッキー
長押しメニューが開く前に指をずらす
単に離すとクリックになってしまう
2021-12-22
06:20:39 tampermonkeyから使うコードと共通化した
bundleしなきゃ使えないんだった
06:17:43 scrapbox.io/NDLSH-SBを加えた
関連する分野を探せるようにするのが目的
script.ts
import "./scrapBubble.ts";
scrapBubble.ts
import { mount } from "../takker99%2FScrapBubble/mod.tsx"; import { Scrapbox } from "../scrapbox-jp%2Ftypes/userscript.ts"; declare const scrapbox: Scrapbox; const takker_list = ["takker-memex", "takker-private", "takker", "takker-books", "villagepump"]; const additional_list= []; switch (scrapbox.Project.name) { case "hub": case "villagepump": case "verbalizing-community": additional_list.push("villagepump", "hub", "verbalizing-community"); break; case "programming-notes": case "customize": case "scrapboxlab": additional_list.push("programming-notes", "customize", "scrapboxlab"); break; case "sta": additional_list.push("sta-taskmanagement"); break; case "sta-taskmanagement": case "taskmanagement": additional_list.push("sta-taskmanagement", "taskmanagement"); break; case "plurality-japanese": additional_list.push("nishio", "tkgshn"); break; } mount({ //expired: 10 /*60秒は長いので10秒にした*/, delay: /mobile/i.test(navigator.userAgent) ? 300 : 500, whiteList: [...takker_list, ...additional_list],
<style> の基準となるURLは、https://scrapbox.io/assets/index.html になるっぽい
scrapBubble.ts
style: '@import "/api/code/takker/kakeruの背景を白にするUserCSS/style.css";\n@import "/api/code/takker/アイコン記法を画像記法っぽくするUserCSS/style2.css";', });

script.ts
import { setup as setupJupyter } from "../@takker%2FScrapJupyter/mod.ts"; import { findLatestCache, saveApiCache } from "../scrapbox-userscript-std/dom.ts"; // v0.24.0 const WASM_URL = "https://scrapbox.io/files/67344295032adf96d1e4c276.wasm"; const WORKER_URL = "/api/code/takker-dist/for-any-project-min/esbuild-worker.js"; (async () => { const req = new Request(WASM_URL); let res = await findLatestCache(req); if (!res) { res = await fetch(req); await saveApiCache(req, res); } await setupJupyter( await WebAssembly.compileStreaming(res), WORKER_URL, ); })();

script.ts
import { setup as setupSelectSuggestion } from "../選択範囲に似ているリンクを入力補完するUserScript/mod.tsx"; import { addTextInputEventListener } from "../scrapbox-userscript-std/dom.ts"; import { Scrapbox } from "../scrapbox-jp%2Ftypes/userscript.ts"; declare const scrapbox: Scrapbox; (async () => { const projects = [ scrapbox.Project.name, "takker", "takker-memex", "takker-books", "takker-private", "villagepump", "hub", "arpla", "unnamedcamp", "unnamed-project", "nishio", "enchi", "rashitamemo", "motoso", "shokai", "masui", "rakusai", "yuiseki", "akiroom", "c4j", "miyamonz", "mrsekut-p", "masuilab", "kidaaam-92022284", "nwtgck", "juneboku", "marshmallow-rm", "sushitecture", "sno2wman", "inteltank", "issac-37765679", "blu3mo", "yosider", "Mijinko", "Mijinko-other", "scrapbox-drinkup", "nota-techconf", "customize", "scrapboxlab", "scrasobox", "programming-notes", "tus-alpine", "tus-alpine-private", "guiland", ]; const ops = await setupSelectSuggestion({ projects, mark: { ...Object.fromEntries( [ ["takker", "takker"], ["takker-memex", "takker"], ["takker-books", "takker-books"], ["takker-private", "takker-private"], ["nishio", "nishio"], ["rashitamemo", "rashita"], ["enchi", "雑談_2022-04-12~"], ["rakusai", "rakusai"], ["masui", "概要"], ["shokai", "shokai"], ["yuiseki", "yuiseki"], ["akiroom", "はじめに"], ["inteltank", "sawachin"], ["motoso", "もとそのもと"], ["villagepump", "井戸端"], ["hub", "scrapbox.io%2Fhub_について"], ["masuilab", "増井研に入ったらまずやること"], ["marshmallow-rm", "読書猿マシュマロ全質問回答"], ["miyamonz", "miyamonz"], ["mrsekut-p", "mrsekut"], ["kidaaam-92022284", "kidooom"], ["c4j", "Code_for_Japan"], ["suto3", "suto3"], ["blu3mo", "blu3mo"], ["nwtgck", "nwtgck"], ["juneboku", "juneboku"], ["jigsaw", "jgs"], ["sno2wman", "SnO2WMaN"], ["sushitecture", "hashrock"], ["unnamedcamp", "知を営む"], ["unnamed-project", "unnamed-project"], ["issac-37765679", "cFQ2f7LRuLYP"], ["blu3mo", "blu3mo"], ["yosider", "yosider"], ["Mijinko", "Mijinko_SD"], ["Mijinko-other", "Mijinko_SD"], ["customize", "みんなのカスタマイズ"], ["scrapboxlab", "入会手続き"], ["scrasobox", "Scrapboxとあそぶ"], ["programming-notes", "参加する"], ["guiland", "概要と参加方法"], ].map(([p, t]) => [p, `https://scrapbox.io/api/pages/${p}/${t}/icon`]) ), "NDLSH-SB": "📚", "scrapbox-drinkup": "https://scrapbox.io/assets/img/page-icon/scrapbox_beaver.png", "nota-techconf": "https://i.gyazo.com/727f42bbd9e2534d99d70e6ea90705b3.jpg", "plurality-japanese": "⿻", }, enableSelfProjectOnStart: true, }); const pvsp = (e: Event): void => { e.preventDefault(); e.stopPropagation(); }; const hasPopup = (): boolean => document.querySelector(".line .popup-menu") !== null; scrapBindings.bind({ "<Tab>": (e) => { if(hasPopup()) return; if(!ops.selectNext?.({ cyclic: true })) return; pvsp(e); }, "<S-Tab>": (e) => { if(hasPopup()) return; if(!ops.selectPrev?.({ cyclic: true })) return; pvsp(e); }, "<Enter>": (e) => { if(hasPopup()) return; if(!ops.confirm?.()) return; pvsp(e); }, "<Esc>": (e) => { if(hasPopup()) return; if(!ops.cancel?.()) return; pvsp(e); }, }); })();

script.ts
import { setup as setUpRun, previewSVG, previewGLSL, previewPlantUML, previewTikZ } from "../ScrapRun/mod.ts"; setUpRun({ previewers: [ { when: /(?:^|\.)svg$/, preview: previewSVG }, { when: /(?:^|\.)glsl$/, preview: previewGLSL }, { when: /(?:^|\.)(?:plantuml|puml|pu)$/, preview: previewPlantUML }, { when: /(?:^|\.)tikz\(tex\)$/, preview: previewTikZ( "/api/code/takker-dist/for-any-project-min/tex-worker.js", "https://scrapbox.io/files/65d1645c19cd8e002433c3df", ) }, ]});

script.ts
import { setup as setupSlider } from "https://raw.githubusercontent.com/takker99/scrapbox-history-slider/0.2.1/App.tsx"; (async () => { const { toggle } = await setupSlider([]); scrapbox.PageMenu.addItem({ title: "履歴スライダー", image: "https://1.bp.blogspot.com/-UZtkSEX0wh4/U5l5_dNcEsI/AAAAAAAAhWs/UzJGVzyiX8Y/s800/kaichu_dokei.png", onClick: toggle, }); })();

script.ts
import { isMobile } from "../mobile版scrapboxの判定/script.js";

2023-04-30 18:08:18 全然使っていないのになぜか裏で動いていて怖いので外した
メモリをバカ食いしているのは、もしかしたらこいつかも
script.js.disabled
import { setup as setup2 } from "../scrapbox-local-graph/mod.tsx"; // 現状だとmobileでクラッシュする if (!/mobile/i.test(navigator.userAgent)) { const { open, close, isOpen } = setup2( document.documentElement.dataset?.projectTheme?.includes?.("dark") || scrapbox.Project.name === "takker" ? "svg { --graph-link: #5a5a5a; }" : "" ); close(); scrapbox.PageMenu.addItem({ title: "toggle Local Graph", onClick: () => { isOpen() ? close(): open(); }, }); }


script.ts
import "../popup/script.ts";

script.ts
import { main } from "../takker99%2Ftakker-scheduler/auto-review.ts"; main( "takker", ["takker", "振り返り(takker-workflow@0.0.1)のtemplate", "txt"], ["takker", "1週間の振り返り(takker-workflow@0.0.1)のtemplate", "txt"] );

2024-05-27 15:11:33 当日の予定をタイムラインに常時表示するUserScriptがあるのでいらない

script.ts
import { addButton } from "../Porterっぽい編集バーを生やすUserScript@1.0.0/mod.ts"; import { porterCopy, porterCut, porterPaste, toggleCaret } from "../Porterっぽい編集バーを生やすUserScript@1.0.0/commands.ts"; import { downBlocks, downLines, indentBlocks, indentLines, insertText, outdentBlocks, outdentLines, upBlocks, upLines, redo, undo, } from "../scrapbox-userscript-std/dom.ts"; if (isMobile()) { addButton({ display: { type: "caret-left" }, onClick: ({ cursor, selection }) => { cursor.focus(); selection.getSelectedText() === "" ? outdentBlocks() : outdentLines(); }, }); addButton({ display: { type: "caret-right" }, onClick: ({ cursor, selection }) => { cursor.focus(); selection.getSelectedText() === "" ? indentBlocks() : indentLines(); }, }); addButton({ display: { type: "caret-up" }, onClick: ({ cursor, selection }) => { cursor.focus(); selection.getSelectedText() === "" ? upBlocks() : upLines(); }, }); addButton({ display: { type: "caret-down" }, onClick: ({ cursor, selection }) => { cursor.focus(); selection.getSelectedText() === "" ? downBlocks() : downLines() }, }); addButton({ display: { type: "copy" }, onClick: async ({ cursor, selection }) => await porterCopy(cursor, selection), }); addButton({ display: { type: "cut" }, onClick: async ({ cursor, selection }) => await porterCut(cursor, selection), }); addButton({ display: { type: "clipboard" }, onClick: async ({ cursor }) => await porterPaste(cursor), });

(revert)popup menuのいくつかのコマンドを持ってくる
2023-02-06 20:22:40 mobile PopupMenuが実装されたので不要
script.ts.disabled
addButton({ display: ({ selection }) => selection.hasSelection() ? { type: "unlink" } : "", onClick: async ({ selection }) => { const text = selection.getSelectedText(); const unlinked = text.split("\n") .map(line => line.replace( /\[((?:[^\[$!"#%&'()\*\+,\-\.\/\{\|\}<>_~]\s?|[\[$!"#%&'()\*\+,\-\.\/\{\|\}<>_~]\S)[^\[\]]*)\]/g, "$1" )) .join("\n"); if (text === unlinked) return; await insertText(unlinked); }, });
script.ts.disabled
addButton({ display: ({ selection }) => selection.hasSelection() ? { type: "strikethrough" } : "", onClick: async ({ selection }) => { const text = selection.getSelectedText(); const striked = strike(text); if (text === striked) return; await insertText(striked); }, });
文字装飾
code
script.ts.disabled
addButton({ display: ({ selection }) => selection.hasSingleLineSelection() ? { type: "code" } : "", onClick: async ({ selection }) => { const text = selection.getSelectedText(); await insertText(`\`${text}\``); }, });
script.ts.disabled
addButton({ display: ({ selection }) => hasURL(selection.getSelectedText()) ? "URL" : "", onClick: async ({ selection }) => { const text = selection.getSelectedText(); const converted = await convertURL(text); if (text === converted) return; await insertText(converted); }, });
script.ts.disabled
addButton({ display: ({ selection }) => getLink(selection.getSelectedText()) ? "update a link" : "", onClick: async ({ selection }) => { const text = selection.getSelectedText(); await replace( text, [scrapbox.Project.name, "takker", "takker-memex", "takker-private"], ); }, });
入れる候補
google検索
ndl検索
OALD検索
文字装飾


script.ts
addButton({ display: { type: "undo" }, onClick: () => undo(), }); addButton({ display: { type: "redo" }, onClick: () => redo(), }); addButton({ display: ({ cursor }) => cursor.getVisible() && cursor.hasFocus // @ts-ignore private扱いだけど、これしかアクセス方法がないため使わせていただく && cursor.visiblePopupMenu ? { type: ["i-cursor", "slash"] } : { type: "i-cursor" }, onClick: ({ cursor }) => toggleCaret(cursor), }); }

script.ts
import "../scrapbox-editor-begin-edit/script.ts";


script.ts
import "../mobileからtimestampを行頭に挿入するUserScript/script.js";

script.ts
import "../Kakeruを開くPage_Menu/script.js";

一部のコマンドははどのprojectでも使えるようにする
script.ts
import { transport, createTask, } from "../takker99%2Ftakker-scheduler/deps.ts"; if (isMobile() && scrapbox.Project.name !== "takker-memex") { const id = "task"; scrapbox.PageMenu.addMenu({ title: id, image: 'https://img.icons8.com/ios/180/FFFFFF/todo-list--v2.png', }); scrapbox.PageMenu(id).addItem({ title: 'Book starting', image: 'https://img.icons8.com/ios/180/FFFFFF/plus-1day.png', onClick: createTask, }); scrapbox.PageMenu(id).addItem({ title: 'Transport', onClick: () => transport({ from: { project: scrapbox.Project.name, title: scrapbox.Page.title!, }, to: "takker-memex", }), }); }

その他script
script.ts
import { makeNewPage } from "../custom-new-page/mod.ts"; import { newPageHook, splittedLinkHook, taskLineHook, } from "../for-custom-new-page/mod.ts"; if (isMobile()) { const id = "New Page"; const hooks = [taskLineHook, newPageHook, splittedLinkHook]; scrapbox.PageMenu.addMenu({ title: id, image: "https://img.icons8.com/ios/180/FFFFFF/cut-paper.png", }); scrapbox.PageMenu(id).addItem({ title: "New Page", onClick: () => { const project = window.prompt("Create a new page at", scrapbox.Project.name); if (!project) return; makeNewPage({ project, mode: "noopen", hooks })?.(); }, }); scrapbox.PageMenu(id).addItem({ title: "New Page and Open", onClick: () => { const project = window.prompt("Create a new page at", scrapbox.Project.name); if (!project) return; makeNewPage({ project, mode: "self", hooks })?.(); }, }); } import "../ページを転送するUserScript/pageMenu.ts"; import { addToInboxFromPrompt } from "../Inboxに素早く入れるUserScript/mod.ts"; scrapbox.PageMenu.addMenu({ title: "Add to inbox", image: "https://img.icons8.com/ios/180/FFFFFF/inbox.png", onClick: () => addToInboxFromPrompt( "takker-memex", "メモ帳", ), }); import "../scrapbox-icon-button/script.js"; import "../Markdown形式でページのURLをコピーするPageMenu/script.js";

script.ts
import { setup as setupActions } from "../takker99%2Ftakker-scheduler/viewer.tsx"; import { setup as setupScheduler, setupWedget } from "../takker99%2Ftakker-scheduler/weekly-scheduler.tsx"; (async () => { const id = "next-action"; const selector = `head style[data-userscript-name="${id}"]`; document.querySelector(selector)?.remove?.(); const style = document.createElement("style"); style.dataset.userscriptName = id; style.textContent = ` button:is(#${id}, #scheduler).tool-btn::before { position: absolute; font: 900 20px/46px "Font Awesome 5 Free"; } button#${id}.tool-btn::before { content: "\\f0ae"; } button#scheduler.tool-btn::before { content: "\\f073"; font-weight: 400; } button:is(#${id}, #scheduler).tool-btn img { opacity: 0; }`; document.head.append(style); const projects = ["takker-memex", "takker"]; const { open } = await setupActions(projects); scrapbox.PageMenu.addMenu({ title: id, image: "/assets/img/favicon/apple-touch-icon.png", onClick: open, }); const scheduler = await setupScheduler(projects); scrapbox.PageMenu.addMenu({ title: "scheduler", image: "/assets/img/favicon/apple-touch-icon.png", onClick: scheduler.open, }); { const key = "takker-scheduler/wedget"; let settings = JSON.parse(localStorage.getItem(key) ?? "{}"); const project = scrapbox.Project.name; settings[project] ??= false; const wedget = await setupWedget(projects, settings[project]); const toggle = () => { settings[project] = !wedget.isOpen; if (wedget.isOpen) { wedget.close(); } else { wedget.open?.(); } localStorage.setItem(key, JSON.stringify(settings)); }; if (!isMobile()) { scrapbox.PageMenu.addItem({ title: "toggle wedget", onClick: toggle, }); } else { addButton({ display: { type: "calendar" }, onClick: toggle, }); } } })();

2023-10-16 15:47:16 ボタン削減のため一旦外す

re-export
個別のprojectごとにさらにカスタマイズしたいときに使う
script.ts
export { addButton, insertText, };

import map
from-programming-notesのものがほとんど
2024-11-13 17:10:39 deno.jsoncとして使うようにした
@jsxImportSourceなどを使うようになったため、どうしてもdeno.jsoncから型設定を指定しなければならなくなった
2023-03-29 16:45:07 https://esm.sh/stable/preact@10.11.3/es2022/preact.mjs がredirectで循環参照している?
通信内容を見る限りだと、読み込めているんだけどな……
16:56:05 最新版に差し替えたら直った
import_map.json
{ "imports": { "https://scrapbox.io/api/code/takker/date-fns.min.js/script.js": "https://scrapbox.io/api/code/takker/for-any-project/date-fns.ts", "https://scrapbox.io/api/code/takker/scrapbox-parser.min.js/parser.js": "https://scrapbox.io/api/code/takker/for-any-project/parser.ts", "https://esm.sh/@progfay/scrapbox-parser@8.1.0": "https://scrapbox.io/api/code/takker/scrapbox-parser/mod.ts", "https://esm.sh/@progfay/scrapbox-parser@9.0.0": "https://scrapbox.io/api/code/takker/scrapbox-parser/mod.ts", "https://esm.sh/preact@10.13.2": "https://scrapbox.io/api/code/takker/preact/mod.tsx", "https://esm.sh/preact@10.13.2/hooks": "https://scrapbox.io/api/code/takker/preact/hooks.ts", "https://esm.sh/preact@10.22.1": "https://scrapbox.io/api/code/takker/preact/mod.tsx", "https://esm.sh/preact@10.22.1/hooks": "https://scrapbox.io/api/code/takker/preact/hooks.ts", "https://esm.sh/preact@10.6.4": "https://scrapbox.io/api/code/takker/preact/mod.tsx", "https://esm.sh/preact@10.6.4/hooks": "https://scrapbox.io/api/code/takker/preact/hooks.ts", "https://esm.sh/preact@10.6.4?dev": "https://scrapbox.io/api/code/takker/preact/mod.tsx", "https://esm.sh/preact@10.6.4/hooks?dev": "https://scrapbox.io/api/code/takker/preact/hooks.ts", "react": "npm:preact@10", "react/": "npm:preact@10/", "https://deno.land/std@0.224.0/async/mod.ts": "jsr:@std/async@1", "https://deno.land/x/date_fns@v2.22.1/lightFormat/index.ts": "https://scrapbox.io/api/code/takker/for-any-project/lightFormat.ts", "https://raw.githubusercontent.com/takker99/scrapbox-storage/0.1.3/": "https://raw.githubusercontent.com/takker99/scrapbox-storage/0.1.4/", "https://raw.githubusercontent.com/scrapbox-jp/types/0.3.5/rest.ts": "jsr:@cosense/types@0.10/rest", "https://raw.githubusercontent.com/scrapbox-jp/types/0.4.2/rest.ts": "jsr:@cosense/types@0.10/rest", "https://raw.githubusercontent.com/scrapbox-jp/types/0.7.1/rest.ts": "jsr:@cosense/types@0.10/rest", "https://raw.githubusercontent.com/scrapbox-jp/types/0.9.0/rest.ts": "jsr:@cosense/types@0.10/rest", "https://raw.githubusercontent.com/scrapbox-jp/types/0.3.5/userscript.ts": "jsr:@cosense/types@0.10/userscript", "https://raw.githubusercontent.com/scrapbox-jp/types/0.4.2/userscript.ts": "jsr:@cosense/types@0.10/userscript", "https://raw.githubusercontent.com/scrapbox-jp/types/0.5.0/userscript.ts": "jsr:@cosense/types@0.10/userscript", "https://raw.githubusercontent.com/scrapbox-jp/types/0.7.1/userscript.ts": "jsr:@cosense/types@0.10/userscript", "https://raw.githubusercontent.com/scrapbox-jp/types/0.9.0/userscript.ts": "jsr:@cosense/types@0.10/userscript", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.23.1/browser/dom/mod.ts": "jsr:@cosense/std@0.29/browser/dom", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.23.1/rest/mod.ts": "jsr:@cosense/std@0.29/rest", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.23.1/title.ts": "jsr:@cosense/std@0.29/title", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.23.1/text.ts": "jsr:@cosense/std@0.29/text", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.23.1/mod.ts": "jsr:@cosense/std@0.29", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.27.0/browser/dom/mod.ts": "jsr:@cosense/std@0.29/browser/dom", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.27.0/rest/mod.ts": "jsr:@cosense/std@0.29/rest", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.27.0/title.ts": "jsr:@cosense/std@0.29/title", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.27.0/text.ts": "jsr:@cosense/std@0.29/text", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.26.2/browser/dom/mod.ts": "jsr:@cosense/std@0.29/browser/dom", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.26.2/title.ts": "jsr:@cosense/std@0.29/title", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.24.3/text.ts": "jsr:@cosense/std@0.29/text", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.27.0/browser/websocket/mod.ts": "jsr:@cosense/std@0.29/browser/websocket", "https://raw.githubusercontent.com/takker99/scrapbox-userscript-std/0.24.3/browser/dom/mod.ts": "jsr:@cosense/std@0.29/browser/dom", "jsr:@cosense/std@0.28/browser/dom": "jsr:@cosense/std@0.29/browser/dom", "jsr:@cosense/std@0.28/parseAbsoluteLink": "jsr:@cosense/std@0.29/parseAbsoluteLink", "jsr:@cosense/std@0.28/rest": "jsr:@cosense/std@0.29/rest", "jsr:@luca/esbuild-deno-loader@0.11": "jsr:@luca/esbuild-deno-loader@0.10", "npm:option-t@50/plain_result": "npm:option-t@49/plain_result" }, "compilerOptions": { "lib": [ "esnext", "dom", "dom.iterable", "deno.ns" ], "jsx": "react-jsx", "jsxImportSource": "npm:preact@10" } }
差し替え用
parser.ts
export * as ScrapboxParser from "https://scrapbox.io/api/code/takker/scrapbox-parser/mod.ts";
date-fns.ts
import { lightFormat } from "../date-fns/mod.ts"; export const format = lightFormat; export * from "../date-fns/mod.ts";
lightFormat.ts
import { lightFormat } from "../date-fns/mod.ts"; export { lightFormat as default };

#2024-07-28 00:51:17
#2024-07-01 23:21:25
#2024-06-13 20:10:45 @takker/ScrapJupyter WASM_URL WORKER_URL をコード中に埋め込んだ
#2024-06-07 09:50:32 takker99/ScrapBindingsの変更適用 & 他のuserscriptのキーバインドもこれを使う
#2024-05-27 15:09:06 TSに書き換え
#2024-04-11 09:25:55
#2024-01-10 13:16:37 scrapbox-keichoを削除
#2023-11-08 08:54:32
#2023-08-16 20:02:10
#2023-04-30 18:08:56
#2023-03-24 19:28:11
05:00:48 takker-workflow@0.0.1/next-action-viewerのtop-level awaitを消した
全然使っていない
#2023-02-15 18:06:15 top-level awaitを消した
多分このせいで他のUserScriptの読み込みがblockingされてしまっていた
#2023-02-10 05:51:38
#2023-02-06 20:25:42 custom-new-page@0.4.0の変更を反映
#2022-11-29 11:43:50 s/ addToInboxFromSelection / addToInboxFromPrompt
#2022-11-14 13:29:32 補完ソース追加
リンク入力補完 (scrapbox)時には <Esc> 以外のキーを無効化する
#2022-11-03 02:45:21 入力補完のソース追加 (/enchi)
#2022-09-28 16:03:31 入力補完のソース追加
#2022-09-24 17:42:13 import mapのversion up
#2022-09-06 16:19:50
#2022-08-30 17:34:18 選択範囲に似ているリンクを入力補完するUserScriptのキーボードショートカットを導入
#2022-08-29 02:22:30 preactのimport先差し替え
#2022-06-19 17:14:34
#2022-06-15 14:38:28 /takker-PS/takker-booksに差し替えた
#2022-06-06 19:53:59
#2022-05-21 14:02:32
#2022-05-19 11:21:18 add re-export feature
#2022-03-12 21:32:03
#2022-01-19 21:56:48 takker-schedulerのコマンドを追加
全く使っていない
#2022-01-15 13:16:20 bundleだけにした
#2022-01-13 09:22:29 version up
#2022-01-07 10:06:47 version up
#2021-12-31 06:07:10 ScrapJupyterの設定を更新
#2021-12-22 06:20:25
#2021-12-15 15:17:15
#2021-11-23 15:24:27
#2021-11-16 18:49:37