for-any-project
全てのScrapbox projectで使うtakker.icon用UserScript/UserCSSのbuild URL
✅️scrapbox-bundlerで複数コードを一度にbuildできるようにしたので、これを押すだけで済むようになった
get built codes
$ 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
old version: import-oldのcommon.js
bundle & minifyしたコードは/takker-dist/for-any-project-minに置いてある
get bundled code
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だけのほうがファイルサイズが若干小さくなる
code: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@
scrapbox-watchlist-sync
code:script.ts
import { sync } from "../scrapbox-watchlist-sync/script.ts";
sync({ project: "takker-dist" });
code:script.ts
import { setDebugMode } from "jsr:@takker/debug-js@0.1";
setDebugMode(true);
Gyazoにuploadした画像URLをコピペするPage Menu@2.0.0
code:script.ts
import { addGyazoMenu } from "../Gyazoにuploadした画像URLをコピペするPage Menu@2.0.0/mod.ts";
import { GYAZO_ACCESS_TOKEN } from"../../takker-memex/GYAZO_ACCESS_TOKEN/auth.js";
addGyazoMenu({
maxCount: 10,
accessToken: GYAZO_ACCESS_TOKEN,
onClick: async (image, e) => {
try {
if (e.ctrlKey) {
await navigator.clipboard.writeText(image.permalink_url);
return;
}
const cursor = document.getElementById("text-input");
if (!cursor) {
throw Error("#text-input is not ditected.");
}
cursor.focus();
cursor.value = image.permalink_url;
const event = new InputEvent("input", { bubbles: true });
cursor.dispatchEvent(event);
await scrapbox.Page.waitForSave();
} catch(error) {
alert(${error});
console.error(error);
}
},
});
Open Google Calendar PageMenu
#2024-04-07 21:45:34 weekly-scheduler.tsxを導入したので不要
takker99/scrapbox-incremental-fulltext-search
code: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();
},
});
});
takker99/ScrapBindings
code:script.ts
import { scrapBindings } from "./bindings.ts";
export { scrapBindings };
code: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"));
}
takker99/ScrapBubble
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を加えた
関連する分野を探せるようにするのが目的
code:script.ts
import "./scrapBubble.ts";
code: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");
case "takker-books":
additional_list.push("work4ai");
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 になるっぽい
code:scrapBubble.ts
style: '@import "/api/code/takker/kakeruの背景を白にするUserCSS/style.css";\n@import "/api/code/takker/アイコン記法を画像記法っぽくするUserCSS/style2.css";',
});
アイコン記法を画像記法っぽくするUserCSS
@takker/ScrapJupyter
code: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,
);
})();
選択範囲に似ているリンクを入力補完するUserScript
code: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", "work4ai",
"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", "evergreens",
];
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", "概要と参加方法",
"work4ai", "work4ai",
"evergreens", "HOME",
].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); },
});
})();
⬜️useSelect()にdeselect()を入れる (scrapbox-select-suggestion)
ScrapRun
code: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",
) },
]});
scrapbox-history-slider
code:script.ts.disabled(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,
});
})();
code:script.ts
import { isMobile } from "../mobile版scrapboxの判定/script.js";
scrapbox-local-graph
2023-04-30 18:08:18 全然使っていないのになぜか裏で動いていて怖いので外した
メモリをバカ食いしているのは、もしかしたらこいつかも
code: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(); },
});
}
Popup Menuに独自のkeyboard shortcutを割り当てるUserScript
takker99/ScrapBindings-settingsで設定する
popup
code:script.ts
import "../popup/script.ts";
振り返り(takker-workflow@0.0.1)と1週間の振り返り (takker-workflow@0.0.1)の自動生成
code: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",
new Date(2024, 11, 24),
);
import "./sheet.ts";
日刊記録sheetを自動生成するUserScript
code:sheet.ts
import { main } from "../takker99%2Ftakker-scheduler/auto-diary.ts";
main(new Date(2024, 11, 24));
現在時刻をbarで視覚的に表示するUserScript
2024-05-27 15:11:33 当日の予定をタイムラインに常時表示するUserScriptがあるのでいらない
Porterっぽい編集バーを生やすUserScript@1.0.0
code: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が実装されたので不要
unlink Popup menu
code: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);
},
});
複数行に打ち消し線を引くUserScript
code: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
code:script.ts.disabled
addButton({
display: ({ selection }) => selection.hasSingleLineSelection() ?
{ type: "code" } :
"",
onClick: async ({ selection }) => {
const text = selection.getSelectedText();
await insertText(\`${text}\`);
},
});
URLを外部リンク記法に変換するUserScript (TamperMonkeyなし)
code: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);
},
});
Projectを横断してリンクを置換するUserScript
code: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検索
文字装飾
code: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),
});
}
scrapbox-editor-begin-edit
code:script.ts
import "../scrapbox-editor-begin-edit/script.ts";
mobileからtimestampを行頭に挿入するUserScript
code:script.ts
import "../mobileからtimestampを行頭に挿入するUserScript/script.js";
Kakeruを開くPage Menu
code:script.ts
import "../Kakeruを開くPage_Menu/script.js";
作業時間を🍅でリアルタイムに表示するUserScript
code:script.ts
import "../作業時間を🍅でリアルタイムに表示するUserScript/main.ts";
takker99/takker-scheduler/mobile
一部のコマンドははどのprojectでも使えるようにする
code: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
code: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 "../scrapbox-icon-button/script.js";
import "../Markdown形式でページのURLをコピーするPageMenu/script.js";
現在行をタスクリンクにするPageMenu
code:script.ts
import "../現在行をタスクリンクにするPageMenu/script.ts";
code: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;
settingsproject ??= false;
const wedget = await setupWedget(projects, settingsproject);
const toggle = () => {
settingsproject = !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,
});
}
}
})();
scrapbox-speech-input
2023-10-16 15:47:16 ボタン削減のため一旦外す
re-export
個別のprojectごとにさらにカスタマイズしたいときに使う
code:script.ts
export { addButton, insertText, };
import map
from-programming-notesのものがほとんど
userscriptで使うpreactの差し替えコード
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 最新版に差し替えたら直った
code: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",
"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"
}
}
差し替え用
code:parser.ts
export * as ScrapboxParser from "https://scrapbox.io/api/code/takker/scrapbox-parser/mod.ts";
code:date-fns.ts
import { lightFormat } from "../date-fns/mod.ts";
export const format = lightFormat;
export * from "../date-fns/mod.ts";
code:lightFormat.ts
import { lightFormat } from "../date-fns/mod.ts";
export { lightFormat as default };
#2025-04-01 18:00:08
#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
#2023-02-24
05:00:48 takker-workflow@0.0.1/next-action-viewerのtop-level awaitを消した
#2023-02-17 21:19:34 Gyazoにuploadした画像URLをコピペするPage Menuをはずした
#2023-02-16 06:59:20 scrapbox上でリアルタイムに残り時間を表示するUserScript@0.0.2をはずした
全然使っていない
#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 補完ソース追加
#2022-11-12 18:10:22 選択範囲に似ているリンクを入力補完するUserScriptの設定を修正
リンク入力補完 (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-05-16 14:47:51 scrapbox-history-slider
#2022-05-13 20:18:50 Porterっぽい編集バーを生やすUserScript@1.0.0
#2022-05-02 21:21:18 Porterっぽい編集バーを生やすUserScript
#2022-04-09 21:39:02 takker-workflow@0.0.1/next-action-viewer
#2022-03-12 21:32:03
#2022-03-03 19:48:15 Projectを横断してリンクを置換するUserScript
#2022-03-03 18:16:12 更新行をスクロールバーに表示するUserScript
#2022-02-22 14:53:30 ページを転送するUserScriptを入れた
#2022-02-21 16:19:07 次に取るべき行動の一覧を表示するPage Menuを入れた
#2022-02-20 16:49:05 mobileでURLを外部リンク記法に変換するPage menuをいれた
#2022-02-20 04:35:12 アナログ時計を表示するUserScriptをdefaultでOFFにした
#2022-01-19 21:56:48 takker-schedulerのコマンドを追加
#2022-01-17 05:28:23 scrapbox-pomodoro-timer-2を外した
全く使っていない
代わりにMarkdown形式でページのURLをコピーするPageMenuを入れた
#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