Skip to content

Commit 0eeee56

Browse files
committed
Merge branch 'main' into feature/scrapbox-types
2 parents 47e50f5 + 4c3fef0 commit 0eeee56

File tree

1 file changed

+131
-0
lines changed

1 file changed

+131
-0
lines changed

scrapbox.d.ts

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,3 +171,134 @@ export type LinksResponse =
171171
/** ページの更新日時 */ updated: number;
172172
/** ページ内のリンク */ links: string[];
173173
}[];
174+
175+
export type Layout =
176+
| "list"
177+
| "page"
178+
| "stream"
179+
| "project-settings-billing-page"
180+
| "project-settings-basic-page"
181+
| "project-settings-members-page"
182+
| "settings-profile-page"
183+
| "settings-extensions-page"
184+
| "settings-delete-account-page";
185+
export type Scrapbox =
186+
& {
187+
Project: {
188+
name: string;
189+
pages: PageBrief[];
190+
};
191+
TimeStamp: TimeStamp;
192+
PopupMenu?: {
193+
addButton: (
194+
props: {
195+
title: string | ((selectedText: string) => string);
196+
onClick: (selectedText: string) => string | undefined;
197+
},
198+
) => void;
199+
};
200+
PageMenu: ((name: string) => PageMenu) & {
201+
addMenu: (
202+
props: { title: string; image: string; onClick?: () => void },
203+
) => void;
204+
addItem: (props: AddItemProps) => void;
205+
addSeparator: () => void;
206+
removeAllItems: () => void;
207+
};
208+
addListener: (type: string, listener: () => void) => void;
209+
on: (type: string, listener: () => void) => void;
210+
removeListener: (type: string, listener: () => void) => void;
211+
off: (type: string, listener: () => void) => void;
212+
removeAllListeners: (type?: string) => void;
213+
once: (type: string, listener: () => void) => void;
214+
prependListener: (type: string, listener: () => void) => void;
215+
prependOnceListener: (type: string, listener: () => void) => void;
216+
listeners: (type: string) => (() => void)[];
217+
rawListeners: (type: string) => (() => void)[];
218+
listenerCount: (type: string) => number;
219+
emit: (type: string) => void;
220+
eventNames: () => string[];
221+
getMexListeners: () => number;
222+
setMexListeners: (length: number) => void;
223+
}
224+
& ({
225+
Layout:
226+
| "list"
227+
| "stream"
228+
| "project-settings-billing-page"
229+
| "project-settings-basic-page"
230+
| "project-settings-members-page"
231+
| "settings-profile-page"
232+
| "settings-extensions-page"
233+
| "settings-delete-account-page";
234+
Page: {
235+
title: null;
236+
lines: null;
237+
id: null;
238+
};
239+
} | {
240+
Layout: "page";
241+
Page: {
242+
title: string;
243+
lines: ParsedLine[];
244+
id: string;
245+
};
246+
});
247+
248+
export type PageBrief = {
249+
exists: boolean;
250+
hasIcon?: boolean;
251+
id: string;
252+
title: string;
253+
titleLc: string;
254+
updated: number;
255+
};
256+
257+
export type ParsedLine = {
258+
text: string;
259+
id: string;
260+
userId: string;
261+
updated: number;
262+
created: number;
263+
section: {
264+
number: number;
265+
start: boolean;
266+
end: boolean;
267+
};
268+
title?: boolean;
269+
};
270+
271+
type TimeStamp = {
272+
addFormat: (format: string | (() => string)) => void;
273+
removeAllFormat: () => void;
274+
};
275+
276+
type AddItemProps = {
277+
title: string | (() => string);
278+
image?: string;
279+
onClick: () => void;
280+
};
281+
type PageMenu = {
282+
addItem: (
283+
props: AddItemProps,
284+
) => void;
285+
addSeparator: () => void;
286+
removeAllItems: () => void;
287+
menuName: string;
288+
reset: () => void;
289+
emitChange: () => void;
290+
menus: Map<
291+
string,
292+
{
293+
image: string | null;
294+
onClick?: () => void;
295+
items: (AddItemProps & { separator: boolean })[];
296+
}
297+
>;
298+
};
299+
300+
export type eventName =
301+
| "lines:changed"
302+
| "page:changed"
303+
| "layout:changed"
304+
| "project:changed";

0 commit comments

Comments
 (0)