制作一个表格生成器
搭建
注册命令
logseq.Editor.registerSlashCommand(
'create table', async () => {
logseq.showMainUI()
},
)写窗口
import React, {useEffect} from "react";
import "./table.css"
const createTable = (row:number, col:number)=>{ // 生成markdown表格的内容
let content = "|"
let rowContent = "|"
for(let i = 0; i < col; i++){
content += ` Col ${i} |`
}
content += "\n"
content += "|"
for(let i = 0; i < col; i++){
content += " --- |"
}
content += "\n"
for(let j = 0; j < col; j++){
rowContent += " |"
}
rowContent += "\n"
for(let i = 0; i < row; i++){
content +=
rowContent
}
return content
}
const insertContent = async (content:string) =>{ // 把内容插入到logseq
window.logseq.hideMainUI({ restoreEditingCursor: true });
await window.logseq.Editor.insertAtEditingCursor(content);
//
}
// eslint-disable-next-line react/display-name,no-empty-pattern
export const Table = React.forwardRef<HTMLDivElement>(({}, ref) => {
const [row, setRow] = React.useState("3");
const [col, setCol] = React.useState("4");
return(
<div
ref={ref}
className="table-root"
>
<div className="center">
<div>
Rows: <input value={row} onChange={(e)=>setRow(e.target.value)}/>
</div>
<div>
Cols: <input value={col} onChange={(e)=>setCol(e.target.value)} />
</div>
<div>
<button onClick={()=>{insertContent(createTable(Number(row),Number(col)))}}>Insert</button>
</div>
</div>
</div>
);
});让窗口出现在光标处

美化窗口

注册快捷键
esc实现
esc实现在main.tsx中加入监听器。
main.tsx中加入监听器。
Enter实现
Enter实现
拓展
最后更新于