Skip to content

Commit 4c3fef0

Browse files
authored
Merge pull request #2 from takker99/feature/window-scrapbox
Add types of `window.scrapbox`
2 parents e695930 + e40ddbe commit 4c3fef0

File tree

1 file changed

+130
-0
lines changed

1 file changed

+130
-0
lines changed

scrapbox.d.ts

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
export type Layout =
2+
| "list"
3+
| "page"
4+
| "stream"
5+
| "project-settings-billing-page"
6+
| "project-settings-basic-page"
7+
| "project-settings-members-page"
8+
| "settings-profile-page"
9+
| "settings-extensions-page"
10+
| "settings-delete-account-page";
11+
export type Scrapbox =
12+
& {
13+
Project: {
14+
name: string;
15+
pages: PageBrief[];
16+
};
17+
TimeStamp: TimeStamp;
18+
PopupMenu?: {
19+
addButton: (
20+
props: {
21+
title: string | ((selectedText: string) => string);
22+
onClick: (selectedText: string) => string | undefined;
23+
},
24+
) => void;
25+
};
26+
PageMenu: ((name: string) => PageMenu) & {
27+
addMenu: (
28+
props: { title: string; image: string; onClick?: () => void },
29+
) => void;
30+
addItem: (props: AddItemProps) => void;
31+
addSeparator: () => void;
32+
removeAllItems: () => void;
33+
};
34+
addListener: (type: string, listener: () => void) => void;
35+
on: (type: string, listener: () => void) => void;
36+
removeListener: (type: string, listener: () => void) => void;
37+
off: (type: string, listener: () => void) => void;
38+
removeAllListeners: (type?: string) => void;
39+
once: (type: string, listener: () => void) => void;
40+
prependListener: (type: string, listener: () => void) => void;
41+
prependOnceListener: (type: string, listener: () => void) => void;
42+
listeners: (type: string) => (() => void)[];
43+
rawListeners: (type: string) => (() => void)[];
44+
listenerCount: (type: string) => number;
45+
emit: (type: string) => void;
46+
eventNames: () => string[];
47+
getMexListeners: () => number;
48+
setMexListeners: (length: number) => void;
49+
}
50+
& ({
51+
Layout:
52+
| "list"
53+
| "stream"
54+
| "project-settings-billing-page"
55+
| "project-settings-basic-page"
56+
| "project-settings-members-page"
57+
| "settings-profile-page"
58+
| "settings-extensions-page"
59+
| "settings-delete-account-page";
60+
Page: {
61+
title: null;
62+
lines: null;
63+
id: null;
64+
};
65+
} | {
66+
Layout: "page";
67+
Page: {
68+
title: string;
69+
lines: ParsedLine[];
70+
id: string;
71+
};
72+
});
73+
74+
export type PageBrief = {
75+
exists: boolean;
76+
hasIcon?: boolean;
77+
id: string;
78+
title: string;
79+
titleLc: string;
80+
updated: number;
81+
};
82+
83+
export type ParsedLine = {
84+
text: string;
85+
id: string;
86+
userId: string;
87+
updated: number;
88+
created: number;
89+
section: {
90+
number: number;
91+
start: boolean;
92+
end: boolean;
93+
};
94+
title?: boolean;
95+
};
96+
97+
type TimeStamp = {
98+
addFormat: (format: string | (() => string)) => void;
99+
removeAllFormat: () => void;
100+
};
101+
102+
type AddItemProps = {
103+
title: string | (() => string);
104+
image?: string;
105+
onClick: () => void;
106+
};
107+
type PageMenu = {
108+
addItem: (
109+
props: AddItemProps,
110+
) => void;
111+
addSeparator: () => void;
112+
removeAllItems: () => void;
113+
menuName: string;
114+
reset: () => void;
115+
emitChange: () => void;
116+
menus: Map<
117+
string,
118+
{
119+
image: string | null;
120+
onClick?: () => void;
121+
items: (AddItemProps & { separator: boolean })[];
122+
}
123+
>;
124+
};
125+
126+
export type eventName =
127+
| "lines:changed"
128+
| "page:changed"
129+
| "layout:changed"
130+
| "project:changed";

0 commit comments

Comments
 (0)