@@ -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