@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.
@@ -1,16 +1,343 @@
1
- import { PluginInstance } from './plugin';
2
- import { PluginConfig } from './types';
3
- declare class PluginWrapper {
4
- version: string;
5
- create(config: PluginConfig): PluginInstance;
6
- }
7
- declare const DraftPlugin: PluginWrapper;
8
- declare global {
9
- interface Window {
10
- DraftPlugin: PluginWrapper;
11
- }
12
- }
13
- export default DraftPlugin;
14
- export type { PluginInstance } from './plugin';
15
- export * from './types';
16
- //# sourceMappingURL=index.d.ts.map
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.16.0",
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 -w ./",
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
- import {
2
- EditorMenu,
3
- ViewMode,
4
- type Notification,
5
- type PersonalizationDictionaryItems,
6
- type SerializedTemplate,
7
- } from '@getdraft/types';
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>;