@getdraft/plugin 1.16.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +0 -0
- package/.turbo/turbo-dev-tsc.log +1 -1
- package/.turbo/turbo-eslint.log +16 -4
- package/README.md +12 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +51 -61
- package/dist/index.es.js.map +1 -1
- package/dist/index.iife.js +1 -1
- package/dist/index.iife.js.map +1 -1
- package/dist/types/index.d.ts +343 -16
- package/package.json +5 -5
- package/src/plugin.ts +8 -0
- package/src/types.ts +38 -9
- package/tsconfig.tsbuildinfo +1 -0
- package/vite.config.ts +1 -0
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/plugin.d.ts +0 -39
- package/dist/types/plugin.d.ts.map +0 -1
- package/dist/types/routes.d.ts +0 -3
- package/dist/types/routes.d.ts.map +0 -1
- package/dist/types/types.d.ts +0 -198
- package/dist/types/types.d.ts.map +0 -1
- package/dist/types/utils.d.ts +0 -5
- package/dist/types/utils.d.ts.map +0 -1
package/dist/types/index.d.ts
CHANGED
|
@@ -1,16 +1,343 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
declare
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
export declare type AnalyticsParams = DuplicateEvent | DestroyEvent | EditEvent | HistoryEvent | PreviewEvent | ToolbarMoveEvent | BlockInsertEvent | BlockSaveEvent | BlockDestroyEvent | DropEvent;
|
|
2
|
+
|
|
3
|
+
export declare type AsyncEventHandler<P, R> = (params: P) => Promise<R>;
|
|
4
|
+
|
|
5
|
+
export declare interface AutosaveParams {
|
|
6
|
+
json: TemplateJSON;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export declare interface BlockDestroyEvent {
|
|
10
|
+
name: 'block-destroy';
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export declare interface BlockInsertEvent {
|
|
14
|
+
name: 'block-insert';
|
|
15
|
+
context: 'double-click';
|
|
16
|
+
blockType: BlockType;
|
|
17
|
+
blockName: string;
|
|
18
|
+
blockCategory: string | number;
|
|
19
|
+
blockId: string | number;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export declare interface BlockSaveEvent {
|
|
23
|
+
name: 'block-save';
|
|
24
|
+
blockType: 'user';
|
|
25
|
+
blockName: string;
|
|
26
|
+
blockCategory: string | number;
|
|
27
|
+
blockId: string | number;
|
|
28
|
+
elements: Record<string, number> & {
|
|
29
|
+
sum: number;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export declare type BlockType = 'system' | 'user';
|
|
34
|
+
|
|
35
|
+
export declare interface DestroyEvent {
|
|
36
|
+
name: 'destroy';
|
|
37
|
+
context: HotkeyContext | ToolbarContext | UnitSettingsContext;
|
|
38
|
+
unitType: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export declare type DndDragContext = 'canvas' | 'list' | 'palette';
|
|
42
|
+
|
|
43
|
+
export declare type DndDropContext = 'dropline' | 'placeholder' | 'empty-placeholder';
|
|
44
|
+
|
|
45
|
+
export declare type DndDropTarget = 'root' | 'section' | 'column' | 'element';
|
|
46
|
+
|
|
47
|
+
export declare class DraftError extends Error {
|
|
48
|
+
readonly code: string;
|
|
49
|
+
constructor(code: string, message: string);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
declare const DraftPlugin: PluginWrapper;
|
|
53
|
+
export default DraftPlugin;
|
|
54
|
+
|
|
55
|
+
export declare interface DropEvent {
|
|
56
|
+
name: 'drop';
|
|
57
|
+
drag?: DropEventDragMeta;
|
|
58
|
+
dropzone?: DropEventDropzoneMeta;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export declare interface DropEventDragMeta {
|
|
62
|
+
context?: DndDragContext;
|
|
63
|
+
layer?: 'element' | 'section' | 'column' | 'root';
|
|
64
|
+
type?: string | string[];
|
|
65
|
+
blockCategory?: string | number;
|
|
66
|
+
blockId?: string | number;
|
|
67
|
+
blockName?: string;
|
|
68
|
+
blockType?: BlockType;
|
|
69
|
+
alt?: boolean;
|
|
70
|
+
dropKind?: 'create' | 'move';
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export declare interface DropEventDropzoneMeta {
|
|
74
|
+
context?: DndDropContext;
|
|
75
|
+
dropTarget?: DndDropTarget;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export declare interface DuplicateEvent {
|
|
79
|
+
name: 'duplicate';
|
|
80
|
+
context: HotkeyContext | ToolbarContext | UnitSettingsContext;
|
|
81
|
+
unitType: string;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export declare interface EditEvent {
|
|
85
|
+
name: 'edit';
|
|
86
|
+
context: OverlayContext | ToolbarContext;
|
|
87
|
+
unitType: string;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export declare enum EditorMenu {
|
|
91
|
+
Audit = "audit",
|
|
92
|
+
Guide = "guide",
|
|
93
|
+
Style = "style",
|
|
94
|
+
Blocks = "blocks"
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export declare interface ErrorParams {
|
|
98
|
+
message: string;
|
|
99
|
+
code?: string;
|
|
100
|
+
details?: unknown;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export declare type EventHandler<T> = (data: T) => void;
|
|
104
|
+
|
|
105
|
+
export declare interface ExitParams extends SaveParams {
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export declare interface ExportAsFileParams {
|
|
109
|
+
blob: Blob;
|
|
110
|
+
fileName: string;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export declare type HandlerParams<H> = H extends EventHandler<infer P> | AsyncEventHandler<infer P, unknown> ? P : never;
|
|
114
|
+
|
|
115
|
+
export declare interface Handlers {
|
|
116
|
+
ready: EventHandler<ReadyParams>;
|
|
117
|
+
error: EventHandler<ErrorParams>;
|
|
118
|
+
save: EventHandler<SaveParams>;
|
|
119
|
+
exit: EventHandler<ExitParams>;
|
|
120
|
+
notification: EventHandler<NotificationParams>;
|
|
121
|
+
autosave: EventHandler<AutosaveParams>;
|
|
122
|
+
toggleGrid: EventHandler<ToggleGridParams>;
|
|
123
|
+
toggleInvisibleCharacters: EventHandler<ToggleInvisibleCharactersParams>;
|
|
124
|
+
togglePreview: EventHandler<TogglePreviewParams>;
|
|
125
|
+
toggleViewMode: EventHandler<ToggleViewModeParams>;
|
|
126
|
+
toggleMenu: EventHandler<ToggleMenuParams>;
|
|
127
|
+
history: EventHandler<HistoryParams>;
|
|
128
|
+
analytics: EventHandler<AnalyticsParams>;
|
|
129
|
+
openGallery: EventHandler<(url?: string) => Promise<void>>;
|
|
130
|
+
uploadImage: AsyncEventHandler<UploadImageParams, string>;
|
|
131
|
+
loadPersonalization: AsyncEventHandler<void, PersonalizationDictionary>;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export declare interface HistoryEvent {
|
|
135
|
+
name: 'history';
|
|
136
|
+
type: 'undo' | 'redo';
|
|
137
|
+
context: HotkeyContext;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export declare interface HistoryParams {
|
|
141
|
+
hasUndos: boolean;
|
|
142
|
+
hasRedos: boolean;
|
|
143
|
+
currentStep: number;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export declare type HotkeyContext = 'hotkey';
|
|
147
|
+
|
|
148
|
+
export declare interface ImageParams {
|
|
149
|
+
url: string;
|
|
150
|
+
originalWidth: number;
|
|
151
|
+
originalHeight: number;
|
|
152
|
+
ratio: number;
|
|
153
|
+
fileSize: number;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export declare type MessageData = {
|
|
157
|
+
source: string;
|
|
158
|
+
event: string;
|
|
159
|
+
ok?: boolean;
|
|
160
|
+
code?: string;
|
|
161
|
+
message?: string;
|
|
162
|
+
action?: string;
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
declare interface Notification_2 {
|
|
166
|
+
intent: 'error' | 'info' | 'success' | 'warning';
|
|
167
|
+
errorDetails?: object;
|
|
168
|
+
message?: string;
|
|
169
|
+
title: string;
|
|
170
|
+
}
|
|
171
|
+
export { Notification_2 as Notification }
|
|
172
|
+
|
|
173
|
+
export declare type NotificationParams = Notification_2;
|
|
174
|
+
|
|
175
|
+
export declare type OnInitParams = MessageEvent<{
|
|
176
|
+
source: string;
|
|
177
|
+
event: 'loaded' | unknown;
|
|
178
|
+
}>;
|
|
179
|
+
|
|
180
|
+
export declare interface OpenGalleryParams {
|
|
181
|
+
id: string;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export declare type OverlayContext = 'overlay-click' | 'overlay-double-click';
|
|
185
|
+
|
|
186
|
+
export declare type PersonalizationDictionary = PersonalizationDictionaryItems;
|
|
187
|
+
|
|
188
|
+
declare type PersonalizationDictionaryEntry = {
|
|
189
|
+
name: string;
|
|
190
|
+
value: string;
|
|
191
|
+
} | {
|
|
192
|
+
groupName: string;
|
|
193
|
+
items: Array<{
|
|
194
|
+
name: string;
|
|
195
|
+
value: string;
|
|
196
|
+
}>;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
export declare type PersonalizationDictionaryItems = PersonalizationDictionaryEntry[];
|
|
200
|
+
|
|
201
|
+
export declare interface PluginConfig {
|
|
202
|
+
container: string;
|
|
203
|
+
locale?: string;
|
|
204
|
+
autosave?: boolean | {
|
|
205
|
+
interval: number;
|
|
206
|
+
};
|
|
207
|
+
token: string;
|
|
208
|
+
authData?: {
|
|
209
|
+
orgId: number;
|
|
210
|
+
projectId?: number;
|
|
211
|
+
};
|
|
212
|
+
pluginId: string;
|
|
213
|
+
apiUrl: string;
|
|
214
|
+
disableHotkeysPassing?: boolean;
|
|
215
|
+
__config?: object;
|
|
216
|
+
on: Partial<Handlers>;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export declare class PluginInstance {
|
|
220
|
+
config: PluginConfig;
|
|
221
|
+
iframe: HTMLIFrameElement | null;
|
|
222
|
+
private hotkeysAttached;
|
|
223
|
+
private iframeOrigin;
|
|
224
|
+
constructor(config: PluginConfig);
|
|
225
|
+
private captureHotkeysEnabled;
|
|
226
|
+
private onHostHotkey;
|
|
227
|
+
private static HEARTBEAT_TIMEOUT;
|
|
228
|
+
private promisedIframeMethod;
|
|
229
|
+
private postEvent;
|
|
230
|
+
private onImageUpload;
|
|
231
|
+
private onLoadPersonalization;
|
|
232
|
+
private onGalleryOpen;
|
|
233
|
+
private triggerEvent;
|
|
234
|
+
private onMessage;
|
|
235
|
+
start({ template, templateName, uid, }: {
|
|
236
|
+
template: string | TemplateJSON;
|
|
237
|
+
uid: string | number;
|
|
238
|
+
templateName?: string;
|
|
239
|
+
}): void;
|
|
240
|
+
destroy: () => void;
|
|
241
|
+
changeTemplate(template: string | TemplateJSON, options?: {
|
|
242
|
+
templateName?: string;
|
|
243
|
+
uid?: string;
|
|
244
|
+
}): void;
|
|
245
|
+
toggleGrid(state?: boolean): void;
|
|
246
|
+
toggleInvisibleCharacters(state?: boolean): void;
|
|
247
|
+
togglePreview(state?: boolean): void;
|
|
248
|
+
toggleMenu(menu?: EditorMenu | null): void;
|
|
249
|
+
toggleViewMode(viewMode: ViewMode): void;
|
|
250
|
+
undo(): void;
|
|
251
|
+
undoToStep(targetStep: number): void;
|
|
252
|
+
redo(): void;
|
|
253
|
+
save(): Promise<SaveParams>;
|
|
254
|
+
exit(): Promise<ExitParams>;
|
|
255
|
+
exportContent(): Promise<SaveParams>;
|
|
256
|
+
exportAsFile(): Promise<ExportAsFileParams>;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
declare class PluginWrapper {
|
|
260
|
+
version: string;
|
|
261
|
+
create(config: PluginConfig): PluginInstance;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export declare interface PreviewEvent {
|
|
265
|
+
name: 'preview';
|
|
266
|
+
context: HotkeyContext;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
export declare interface ReadyParams extends SaveParams {
|
|
270
|
+
lastSavedTemplate?: {
|
|
271
|
+
template: TemplateJSON;
|
|
272
|
+
date: Date;
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
export declare interface SaveParams {
|
|
277
|
+
json: TemplateJSON;
|
|
278
|
+
html: string;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
export declare interface SerializedTemplate {
|
|
282
|
+
[key: string]: unknown;
|
|
283
|
+
parentId: string | null;
|
|
284
|
+
id: string;
|
|
285
|
+
parameters: object;
|
|
286
|
+
layer: string;
|
|
287
|
+
type: string;
|
|
288
|
+
children?: SerializedTemplate[];
|
|
289
|
+
meta?: {
|
|
290
|
+
[key: string]: unknown;
|
|
291
|
+
version: string;
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
export declare type TemplateJSON = SerializedTemplate;
|
|
296
|
+
|
|
297
|
+
export declare interface ToggleGridParams extends ToggleParams {
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
export declare interface ToggleInvisibleCharactersParams extends ToggleParams {
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
export declare interface ToggleMenuParams {
|
|
304
|
+
menu: EditorMenu | null;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
declare interface ToggleParams {
|
|
308
|
+
state: boolean;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
export declare interface TogglePreviewParams extends ToggleParams {
|
|
312
|
+
json: TemplateJSON;
|
|
313
|
+
html: string;
|
|
314
|
+
darkHTML: string;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
export declare interface ToggleViewModeParams {
|
|
318
|
+
mode: ViewMode;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
export declare type ToolbarActionName = 'duplicate' | 'destroy' | 'edit' | 'up' | 'down';
|
|
322
|
+
|
|
323
|
+
export declare type ToolbarContext = 'toolbar';
|
|
324
|
+
|
|
325
|
+
export declare interface ToolbarMoveEvent {
|
|
326
|
+
name: 'up' | 'down';
|
|
327
|
+
context: ToolbarContext;
|
|
328
|
+
unitType: string;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
export declare type UnitSettingsContext = 'unit-settings';
|
|
332
|
+
|
|
333
|
+
export declare interface UploadImageParams {
|
|
334
|
+
file: string;
|
|
335
|
+
name: string;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
export declare enum ViewMode {
|
|
339
|
+
Desktop = "desktop",
|
|
340
|
+
Mobile = "mobile"
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
export { }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getdraft/plugin",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.17.0",
|
|
4
4
|
"main": "dist/index.cjs.js",
|
|
5
5
|
"module": "dist/index.es.js",
|
|
6
6
|
"types": "dist/types/index.d.ts",
|
|
@@ -11,11 +11,10 @@
|
|
|
11
11
|
"require": "./dist/index.cjs.js"
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
|
-
"dependencies": {
|
|
15
|
-
"@getdraft/types": "^1.0.0"
|
|
16
|
-
},
|
|
14
|
+
"dependencies": {},
|
|
17
15
|
"devDependencies": {
|
|
18
16
|
"vite-plugin-dts": "4.5.4",
|
|
17
|
+
"@getdraft/types": "^1.0.0",
|
|
19
18
|
"@getdraft/eslint-config-ts": "^1.0.0",
|
|
20
19
|
"@getdraft/prettier": "^1.0.0"
|
|
21
20
|
},
|
|
@@ -26,7 +25,8 @@
|
|
|
26
25
|
"dev-tsc": "tsc-check",
|
|
27
26
|
"eslint": "npx eslint src",
|
|
28
27
|
"eslint:fix": "pnpm eslint --fix",
|
|
29
|
-
"prettify": "npx prettier
|
|
28
|
+
"prettify": "npx prettier --check src",
|
|
29
|
+
"prettify:fix": "npx prettier -w src",
|
|
30
30
|
"prepublish": "pnpm build",
|
|
31
31
|
"watch": "NODE_ENV=development vite build --watch",
|
|
32
32
|
"start": "NODE_ENV=development npx vite"
|
package/src/plugin.ts
CHANGED
|
@@ -389,6 +389,10 @@ export class PluginInstance {
|
|
|
389
389
|
this.postEvent('toggleGrid', { state });
|
|
390
390
|
}
|
|
391
391
|
|
|
392
|
+
toggleInvisibleCharacters(state?: boolean) {
|
|
393
|
+
this.postEvent('toggleInvisibleCharacters', { state });
|
|
394
|
+
}
|
|
395
|
+
|
|
392
396
|
togglePreview(state?: boolean) {
|
|
393
397
|
this.postEvent('togglePreview', { state });
|
|
394
398
|
}
|
|
@@ -405,6 +409,10 @@ export class PluginInstance {
|
|
|
405
409
|
this.postEvent('undo');
|
|
406
410
|
}
|
|
407
411
|
|
|
412
|
+
undoToStep(targetStep: number) {
|
|
413
|
+
this.postEvent('undoToStep', { targetStep });
|
|
414
|
+
}
|
|
415
|
+
|
|
408
416
|
redo() {
|
|
409
417
|
this.postEvent('redo');
|
|
410
418
|
}
|
package/src/types.ts
CHANGED
|
@@ -1,10 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
export enum EditorMenu {
|
|
2
|
+
Audit = 'audit',
|
|
3
|
+
Guide = 'guide',
|
|
4
|
+
Style = 'style',
|
|
5
|
+
Blocks = 'blocks',
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export enum ViewMode {
|
|
9
|
+
Desktop = 'desktop',
|
|
10
|
+
Mobile = 'mobile',
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface Notification {
|
|
14
|
+
intent: 'error' | 'info' | 'success' | 'warning';
|
|
15
|
+
errorDetails?: object;
|
|
16
|
+
message?: string;
|
|
17
|
+
title: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
type PersonalizationDictionaryEntry =
|
|
21
|
+
| { name: string; value: string }
|
|
22
|
+
| { groupName: string; items: Array<{ name: string; value: string }> };
|
|
23
|
+
|
|
24
|
+
export type PersonalizationDictionaryItems = PersonalizationDictionaryEntry[];
|
|
25
|
+
|
|
26
|
+
export interface SerializedTemplate {
|
|
27
|
+
[key: string]: unknown;
|
|
28
|
+
parentId: string | null;
|
|
29
|
+
id: string;
|
|
30
|
+
parameters: object;
|
|
31
|
+
layer: string;
|
|
32
|
+
type: string;
|
|
33
|
+
children?: SerializedTemplate[];
|
|
34
|
+
meta?: { [key: string]: unknown; version: string };
|
|
35
|
+
}
|
|
8
36
|
|
|
9
37
|
export type EventHandler<T> = (data: T) => void;
|
|
10
38
|
|
|
@@ -44,8 +72,6 @@ export type OnInitParams = MessageEvent<{
|
|
|
44
72
|
event: 'loaded' | unknown;
|
|
45
73
|
}>;
|
|
46
74
|
|
|
47
|
-
export { EditorMenu, ViewMode };
|
|
48
|
-
|
|
49
75
|
export interface ReadyParams extends SaveParams {
|
|
50
76
|
lastSavedTemplate?: {
|
|
51
77
|
template: TemplateJSON;
|
|
@@ -90,6 +116,8 @@ interface ToggleParams {
|
|
|
90
116
|
|
|
91
117
|
export interface ToggleGridParams extends ToggleParams {}
|
|
92
118
|
|
|
119
|
+
export interface ToggleInvisibleCharactersParams extends ToggleParams {}
|
|
120
|
+
|
|
93
121
|
export interface TogglePreviewParams extends ToggleParams {
|
|
94
122
|
json: TemplateJSON;
|
|
95
123
|
html: string;
|
|
@@ -229,6 +257,7 @@ export interface Handlers {
|
|
|
229
257
|
notification: EventHandler<NotificationParams>;
|
|
230
258
|
autosave: EventHandler<AutosaveParams>;
|
|
231
259
|
toggleGrid: EventHandler<ToggleGridParams>;
|
|
260
|
+
toggleInvisibleCharacters: EventHandler<ToggleInvisibleCharactersParams>;
|
|
232
261
|
togglePreview: EventHandler<TogglePreviewParams>;
|
|
233
262
|
toggleViewMode: EventHandler<ToggleViewModeParams>;
|
|
234
263
|
toggleMenu: EventHandler<ToggleMenuParams>;
|