update
This commit is contained in:
parent
6b903d5a14
commit
5cfd0da04d
5 changed files with 10 additions and 433 deletions
|
@ -59,6 +59,7 @@
|
||||||
* 插件中使用的文本,比如按钮文字和提示信息
|
* 插件中使用的文本,比如按钮文字和提示信息
|
||||||
* src/i18n/*.json 语言配置文件
|
* src/i18n/*.json 语言配置文件
|
||||||
* 代码中使用 `this.i18.key` 获取文本
|
* 代码中使用 `this.i18.key` 获取文本
|
||||||
|
* 最后在 plugin.json 中的 `i18n` 字段中声明该插件支持的语言
|
||||||
|
|
||||||
建议插件至少支持英文和简体中文,这样可以方便更多人使用。
|
建议插件至少支持英文和简体中文,这样可以方便更多人使用。
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "plugin-sample-vite-svelte",
|
"name": "plugin-sample-vite-svelte",
|
||||||
"version": "0.0.6",
|
"version": "0.1.4",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "",
|
"description": "",
|
||||||
"repository": "",
|
"repository": "",
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
"minimist": "^1.2.8",
|
"minimist": "^1.2.8",
|
||||||
"rollup-plugin-livereload": "^2.0.5",
|
"rollup-plugin-livereload": "^2.0.5",
|
||||||
"sass": "^1.62.1",
|
"sass": "^1.62.1",
|
||||||
"siyuan": "^0.7.2",
|
"siyuan": "0.7.3",
|
||||||
"svelte": "^3.57.0",
|
"svelte": "^3.57.0",
|
||||||
"ts-node": "^10.9.1",
|
"ts-node": "^10.9.1",
|
||||||
"typescript": "^5.0.4",
|
"typescript": "^5.0.4",
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"name": "plugin-sample-vite-svelte",
|
"name": "plugin-sample-vite-svelte",
|
||||||
"author": "frostime",
|
"author": "frostime",
|
||||||
"url": "https://github.com/siyuan-note/plugin-sample-vite-svelte",
|
"url": "https://github.com/siyuan-note/plugin-sample-vite-svelte",
|
||||||
"version": "0.1.3",
|
"version": "0.1.4",
|
||||||
"minAppVersion": "2.9.0",
|
"minAppVersion": "2.9.0",
|
||||||
"backends": ["windows", "linux", "darwin"],
|
"backends": ["windows", "linux", "darwin"],
|
||||||
"frontends": ["desktop"],
|
"frontends": ["desktop"],
|
||||||
|
|
424
src/siyuan.d.ts
vendored
424
src/siyuan.d.ts
vendored
|
@ -1,424 +0,0 @@
|
||||||
type TEventBus = "ws-main" | "click-blockicon" | "click-editorcontent" | "click-pdf" |
|
|
||||||
"click-editortitleicon" | "open-noneditableblock"
|
|
||||||
|
|
||||||
type TCardType = "doc" | "notebook" | "all"
|
|
||||||
|
|
||||||
declare global {
|
|
||||||
interface Window {
|
|
||||||
Lute: Lute
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ITab {
|
|
||||||
id: string;
|
|
||||||
headElement: HTMLElement;
|
|
||||||
panelElement: HTMLElement;
|
|
||||||
model: IModel;
|
|
||||||
title: string;
|
|
||||||
icon: string;
|
|
||||||
docIcon: string;
|
|
||||||
updateTitle: (title: string) => void;
|
|
||||||
pin: () => void;
|
|
||||||
unpin: () => void;
|
|
||||||
setDocIcon: (icon: string) => void;
|
|
||||||
close: () => void;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface IModel {
|
|
||||||
element: Element;
|
|
||||||
tab: ITab;
|
|
||||||
data: any;
|
|
||||||
type: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface IObject {
|
|
||||||
[key: string]: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ILuteNode {
|
|
||||||
TokensStr: () => string;
|
|
||||||
__internal_object__: {
|
|
||||||
Parent: {
|
|
||||||
Type: number,
|
|
||||||
},
|
|
||||||
HeadingLevel: string,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ISearchOption {
|
|
||||||
page?: number
|
|
||||||
group?: number, // 0:不分组,1:按文档分组
|
|
||||||
hasReplace?: boolean,
|
|
||||||
method?: number // 0:文本,1:查询语法,2:SQL,3:正则表达式
|
|
||||||
hPath?: string
|
|
||||||
idPath?: string[]
|
|
||||||
k: string
|
|
||||||
r?: string
|
|
||||||
types?: {
|
|
||||||
mathBlock: boolean
|
|
||||||
table: boolean
|
|
||||||
blockquote: boolean
|
|
||||||
superBlock: boolean
|
|
||||||
paragraph: boolean
|
|
||||||
document: boolean
|
|
||||||
heading: boolean
|
|
||||||
list: boolean
|
|
||||||
listItem: boolean
|
|
||||||
codeBlock: boolean
|
|
||||||
htmlBlock: boolean
|
|
||||||
embedBlock: boolean
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
interface IWebSocketData {
|
|
||||||
cmd: string
|
|
||||||
callback?: string
|
|
||||||
data: any
|
|
||||||
msg: string
|
|
||||||
code: number
|
|
||||||
sid: string
|
|
||||||
}
|
|
||||||
|
|
||||||
declare interface IPluginDockTab {
|
|
||||||
position: "LeftTop" | "LeftBottom" | "RightTop" | "RightBottom" | "BottomLeft" | "BottomRight",
|
|
||||||
size: { width: number, height: number },
|
|
||||||
icon: string,
|
|
||||||
hotkey?: string,
|
|
||||||
title: string,
|
|
||||||
index?: number,
|
|
||||||
show?: boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
interface IMenuItemOption {
|
|
||||||
label?: string,
|
|
||||||
click?: (element: HTMLElement) => void,
|
|
||||||
type?: "separator" | "submenu" | "readonly",
|
|
||||||
accelerator?: string,
|
|
||||||
action?: string,
|
|
||||||
id?: string,
|
|
||||||
submenu?: IMenuItemOption[]
|
|
||||||
disabled?: boolean
|
|
||||||
icon?: string
|
|
||||||
iconHTML?: string
|
|
||||||
current?: boolean
|
|
||||||
bind?: (element: HTMLElement) => void
|
|
||||||
index?: number
|
|
||||||
element?: HTMLElement
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ICommandOption {
|
|
||||||
langKey: string, // 多语言 key
|
|
||||||
/**
|
|
||||||
* 目前需使用 MacOS 符号标识,顺序按照 ⌥⇧⌘,入 ⌥⇧⌘A
|
|
||||||
* "Ctrl": "⌘",
|
|
||||||
* "Shift": "⇧",
|
|
||||||
* "Alt": "⌥",
|
|
||||||
* "Tab": "⇥",
|
|
||||||
* "Backspace": "⌫",
|
|
||||||
* "Delete": "⌦",
|
|
||||||
* "Enter": "↩",
|
|
||||||
*/
|
|
||||||
hotkey: string,
|
|
||||||
customHotkey?: string,
|
|
||||||
callback?: () => void
|
|
||||||
fileTreeCallback?: (file: any) => void
|
|
||||||
editorCallback?: (protyle: any) => void
|
|
||||||
dockCallback?: (element: HTMLElement) => void
|
|
||||||
}
|
|
||||||
|
|
||||||
export function fetchPost(url: string, data?: any, callback?: (response: IWebSocketData) => void, headers?: IObject): void;
|
|
||||||
|
|
||||||
export function fetchSyncPost(url: string, data?: any): Promise<IWebSocketData>;
|
|
||||||
|
|
||||||
export function fetchGet(url: string, callback: (response: IWebSocketData) => void): void;
|
|
||||||
|
|
||||||
export function openTab(options: {
|
|
||||||
app: App,
|
|
||||||
doc?: {
|
|
||||||
id: string, // 块 id
|
|
||||||
action?: string [] // cb-get-all:获取所有内容;cb-get-focus:打开后光标定位在 id 所在的块;cb-get-hl: 打开后 id 块高亮
|
|
||||||
zoomIn?: boolean // 是否缩放
|
|
||||||
},
|
|
||||||
pdf?: {
|
|
||||||
path: string,
|
|
||||||
page?: number, // pdf 页码
|
|
||||||
id?: string, // File Annotation id
|
|
||||||
},
|
|
||||||
asset?: {
|
|
||||||
path: string,
|
|
||||||
},
|
|
||||||
search?: ISearchOption
|
|
||||||
card?: {
|
|
||||||
type: TCardType,
|
|
||||||
id?: string, // cardType 为 all 时不传,否则传文档或笔记本 id
|
|
||||||
title?: string // cardType 为 all 时不传,否则传文档或笔记本名称
|
|
||||||
},
|
|
||||||
custom?: {
|
|
||||||
title: string,
|
|
||||||
icon: string,
|
|
||||||
data?: any
|
|
||||||
fn?: () => IModel,
|
|
||||||
}
|
|
||||||
position?: "right" | "bottom",
|
|
||||||
keepCursor?: boolean // 是否跳转到新 tab 上
|
|
||||||
removeCurrentTab?: boolean // 在当前页签打开时需移除原有页签
|
|
||||||
afterOpen?: () => void // 打开后回调
|
|
||||||
}): ITab
|
|
||||||
|
|
||||||
export function getFrontend(): "desktop" | "desktop-window" | "mobile" | "browser-desktop" | "browser-mobile";
|
|
||||||
|
|
||||||
export function getBackend(): "windows" | "linux" | "darwin" | "docker" | "android" | "ios"
|
|
||||||
|
|
||||||
export function adaptHotkey(hotkey: string): string;
|
|
||||||
|
|
||||||
export function confirm(title: string, text: string, confirmCallback?: () => void, cancelCallback?: () => void): void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param timeout - ms. 0: manual close;-1: always show; 6000: default
|
|
||||||
* @param {string} [type=info]
|
|
||||||
*/
|
|
||||||
export function showMessage(text: string, timeout?: number, type?: "info" | "error", id?: string): void;
|
|
||||||
|
|
||||||
export class App {
|
|
||||||
plugins: Plugin[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export abstract class Plugin {
|
|
||||||
eventBus: EventBus;
|
|
||||||
i18n: IObject;
|
|
||||||
data: any;
|
|
||||||
name: string;
|
|
||||||
app: App;
|
|
||||||
commands: ICommandOption[];
|
|
||||||
|
|
||||||
constructor(options: {
|
|
||||||
app: App,
|
|
||||||
name: string,
|
|
||||||
i18n: IObject
|
|
||||||
})
|
|
||||||
|
|
||||||
onload(): void;
|
|
||||||
|
|
||||||
onunload(): void;
|
|
||||||
|
|
||||||
onLayoutReady(): void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Must be executed before the synchronous function.
|
|
||||||
* @param {string} [options.position=right]
|
|
||||||
*/
|
|
||||||
addTopBar(options: {
|
|
||||||
icon: string,
|
|
||||||
title: string,
|
|
||||||
callback: (event: MouseEvent) => void
|
|
||||||
position?: "right" | "left"
|
|
||||||
}): HTMLElement;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Must be executed before the synchronous function.
|
|
||||||
* @param {string} [options.position=right]
|
|
||||||
*/
|
|
||||||
addStatusBar(options: {
|
|
||||||
element: HTMLElement,
|
|
||||||
position?: "right" | "left"
|
|
||||||
}): HTMLElement
|
|
||||||
|
|
||||||
openSetting(): void
|
|
||||||
|
|
||||||
loadData(storageName: string): Promise<any>;
|
|
||||||
|
|
||||||
saveData(storageName: string, content: any): Promise<void>;
|
|
||||||
|
|
||||||
removeData(storageName: string): Promise<any>;
|
|
||||||
|
|
||||||
addIcons(svg: string): void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Must be executed before the synchronous function.
|
|
||||||
*/
|
|
||||||
addTab(options: {
|
|
||||||
type: string,
|
|
||||||
destroy?: () => void,
|
|
||||||
resize?: () => void,
|
|
||||||
update?: () => void,
|
|
||||||
init: () => void
|
|
||||||
}): () => IModel
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Must be executed before the synchronous function.
|
|
||||||
*/
|
|
||||||
addDock(options: {
|
|
||||||
config: IPluginDockTab,
|
|
||||||
data: any,
|
|
||||||
type: string,
|
|
||||||
destroy?: () => void,
|
|
||||||
resize?: () => void,
|
|
||||||
update?: () => void,
|
|
||||||
init: () => void
|
|
||||||
}): { config: IPluginDockTab, model: IModel }
|
|
||||||
|
|
||||||
addCommand(options: ICommandOption): void
|
|
||||||
|
|
||||||
addFloatLayer(options: {
|
|
||||||
ids: string[],
|
|
||||||
defIds?: string[],
|
|
||||||
x?: number,
|
|
||||||
y?: number,
|
|
||||||
targetElement?: HTMLElement
|
|
||||||
}): void
|
|
||||||
}
|
|
||||||
|
|
||||||
export class EventBus {
|
|
||||||
on(type: TEventBus, listener: (event: CustomEvent<any>) => void): void;
|
|
||||||
|
|
||||||
once(type: TEventBus, listener: (event: CustomEvent<any>) => void): void;
|
|
||||||
|
|
||||||
off(type: TEventBus, listener: (event: CustomEvent<any>) => void): void;
|
|
||||||
|
|
||||||
emit(type: TEventBus, detail?: any): boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Dialog {
|
|
||||||
|
|
||||||
element: HTMLElement;
|
|
||||||
|
|
||||||
constructor(options: {
|
|
||||||
title?: string,
|
|
||||||
transparent?: boolean,
|
|
||||||
content: string,
|
|
||||||
width?: string
|
|
||||||
height?: string,
|
|
||||||
destroyCallback?: (options?: IObject) => void
|
|
||||||
disableClose?: boolean
|
|
||||||
disableAnimation?: boolean
|
|
||||||
});
|
|
||||||
|
|
||||||
destroy(options?: IObject): void;
|
|
||||||
|
|
||||||
bindInput(inputElement: HTMLInputElement | HTMLTextAreaElement, enterEvent?: () => void): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Menu {
|
|
||||||
constructor(id?: string, closeCallback?: () => void);
|
|
||||||
|
|
||||||
showSubMenu(subMenuElement: HTMLElement): void;
|
|
||||||
|
|
||||||
addItem(options: IMenuItemOption): HTMLElement;
|
|
||||||
|
|
||||||
addSeparator(index?: number): void;
|
|
||||||
|
|
||||||
open(options: { x: number, y: number, h?: number, w?: number, isLeft?: boolean }): void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {string} [position=all]
|
|
||||||
*/
|
|
||||||
fullscreen(position?: "bottom" | "all"): void;
|
|
||||||
|
|
||||||
close(): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare class Lute {
|
|
||||||
public static WalkStop: number;
|
|
||||||
public static WalkSkipChildren: number;
|
|
||||||
public static WalkContinue: number;
|
|
||||||
public static Version: string;
|
|
||||||
public static Caret: string;
|
|
||||||
|
|
||||||
public static New(): Lute;
|
|
||||||
|
|
||||||
public static EChartsMindmapStr(text: string): string;
|
|
||||||
|
|
||||||
public static NewNodeID(): string;
|
|
||||||
|
|
||||||
public static Sanitize(html: string): string;
|
|
||||||
|
|
||||||
public static EscapeHTMLStr(str: string): string;
|
|
||||||
|
|
||||||
public static UnEscapeHTMLStr(str: string): string;
|
|
||||||
|
|
||||||
public static GetHeadingID(node: ILuteNode): string;
|
|
||||||
|
|
||||||
public static BlockDOM2Content(html: string): string;
|
|
||||||
|
|
||||||
private constructor();
|
|
||||||
|
|
||||||
public BlockDOM2Content(text: string): string;
|
|
||||||
|
|
||||||
public BlockDOM2EscapeMarkerContent(text: string): string;
|
|
||||||
|
|
||||||
public SetTextMark(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetHeadingID(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetProtyleMarkNetImg(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetSpellcheck(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetFileAnnotationRef(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetSetext(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetYamlFrontMatter(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetChineseParagraphBeginningSpace(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetRenderListStyle(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetImgPathAllowSpace(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetKramdownIAL(enable: boolean): void;
|
|
||||||
|
|
||||||
public BlockDOM2Md(html: string): string;
|
|
||||||
|
|
||||||
public BlockDOM2StdMd(html: string): string;
|
|
||||||
|
|
||||||
public SetGitConflict(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetSuperBlock(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetTag(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetMark(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetSub(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetSup(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetBlockRef(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetSanitize(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetHeadingAnchor(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetImageLazyLoading(imagePath: string): void;
|
|
||||||
|
|
||||||
public SetInlineMathAllowDigitAfterOpenMarker(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetToC(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetIndentCodeBlock(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetParagraphBeginningSpace(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetFootnotes(enable: boolean): void;
|
|
||||||
|
|
||||||
public SetLinkRef(enalbe: boolean): void;
|
|
||||||
|
|
||||||
public SetEmojiSite(emojiSite: string): void;
|
|
||||||
|
|
||||||
public PutEmojis(emojis: IObject): void;
|
|
||||||
|
|
||||||
public SpinBlockDOM(html: string): string;
|
|
||||||
|
|
||||||
public Md2BlockDOM(html: string): string;
|
|
||||||
|
|
||||||
public SetProtyleWYSIWYG(wysiwyg: boolean): void;
|
|
||||||
|
|
||||||
public MarkdownStr(name: string, md: string): string;
|
|
||||||
|
|
||||||
public IsValidLinkDest(text: string): boolean;
|
|
||||||
|
|
||||||
public BlockDOM2InlineBlockDOM(html: string): string;
|
|
||||||
|
|
||||||
public BlockDOM2HTML(html: string): string;
|
|
||||||
}
|
|
|
@ -36,10 +36,10 @@
|
||||||
"vite/client",
|
"vite/client",
|
||||||
"svelte"
|
"svelte"
|
||||||
],
|
],
|
||||||
"baseUrl": "./src",
|
// "baseUrl": "./src",
|
||||||
"paths": {
|
"paths": {
|
||||||
"@/*": ["*"],
|
"@/*": ["./src/*"],
|
||||||
"@/libs/*": ["libs/*"],
|
"@/libs/*": ["./src/libs/*"],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"include": [
|
"include": [
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue