ngx-email-builder 1.0.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/index.d.ts ADDED
@@ -0,0 +1,429 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnInit, EventEmitter, AfterViewInit, OnChanges, OnDestroy, ElementRef, SimpleChanges } from '@angular/core';
3
+ import { Observable } from 'rxjs';
4
+
5
+ interface EmailBuilderApiConfig {
6
+ baseUrl?: string;
7
+ headers?: Record<string, string>;
8
+ }
9
+ declare class EmailBuilderStorageService {
10
+ private http;
11
+ private apiUrl;
12
+ private config;
13
+ setConfig(config: EmailBuilderApiConfig): void;
14
+ private generateUniqueId;
15
+ private getSystemSessionId;
16
+ private getHeaders;
17
+ saveTemplate(data: any): Observable<any>;
18
+ listTemplates(): Observable<any>;
19
+ getTemplate(id: string): Observable<any>;
20
+ deleteTemplate(id: string): Observable<any>;
21
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmailBuilderStorageService, never>;
22
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<EmailBuilderStorageService>;
23
+ }
24
+
25
+ type TemplateBlockType = 'hero' | 'header' | 'text' | 'paragraph' | 'image' | 'columns' | 'quote' | 'button' | 'coupon' | 'list' | 'badge' | 'divider' | 'spacer' | 'footer' | 'social';
26
+ type EditorView = 'canvas' | 'source';
27
+ type ResizeSide = 'left' | 'right';
28
+ type ViewportSize = 'desktop' | 'tablet' | 'mobile';
29
+ interface SocialLink {
30
+ type: 'facebook' | 'twitter' | 'instagram' | 'linkedin' | 'youtube' | 'custom' | 'website' | 'email';
31
+ url: string;
32
+ icon?: string;
33
+ iconType?: 'material' | 'url' | 'svg';
34
+ label?: string;
35
+ }
36
+ interface TemplateBlock {
37
+ id: number;
38
+ type: TemplateBlockType;
39
+ label: string;
40
+ icon: string;
41
+ title?: string;
42
+ text?: string;
43
+ secondaryText?: string;
44
+ url?: string;
45
+ imageUrl?: string;
46
+ backgroundColor?: string;
47
+ textColor?: string;
48
+ titleColor?: string;
49
+ buttonColor?: string;
50
+ buttonTextColor?: string;
51
+ textAlign?: 'left' | 'center' | 'right' | 'justify';
52
+ columnCount?: number;
53
+ columns?: TemplateBlock[][];
54
+ padding?: number;
55
+ radius?: number;
56
+ socialLinks?: SocialLink[];
57
+ }
58
+ interface BlockPreset {
59
+ type: TemplateBlockType;
60
+ label: string;
61
+ icon: string;
62
+ description: string;
63
+ columnCount?: number;
64
+ }
65
+ interface TemplateVariable {
66
+ id: number;
67
+ name: string;
68
+ value: string;
69
+ }
70
+ interface BlockUpdate {
71
+ key: keyof TemplateBlock;
72
+ value: TemplateBlock[keyof TemplateBlock];
73
+ }
74
+ interface VariableUpdate {
75
+ id: number;
76
+ key: 'name' | 'value';
77
+ value: string;
78
+ }
79
+ interface SampleTemplate {
80
+ id: string;
81
+ name: string;
82
+ description: string;
83
+ icon: string;
84
+ category: string;
85
+ accentColor: string;
86
+ blocks: TemplateBlock[];
87
+ }
88
+
89
+ declare class EmailTemplateBuilderComponent implements OnInit {
90
+ apiConfig?: EmailBuilderApiConfig;
91
+ autoSave: boolean;
92
+ saveInterval: number;
93
+ initialTemplateId?: string;
94
+ onSaveSuccess: EventEmitter<any>;
95
+ onSaveError: EventEmitter<any>;
96
+ readonly blockLibrary: _angular_core.WritableSignal<BlockPreset[]>;
97
+ readonly sampleTemplates: SampleTemplate[];
98
+ readonly templateDrawerOpen: _angular_core.WritableSignal<boolean>;
99
+ readonly viewport: _angular_core.WritableSignal<ViewportSize>;
100
+ readonly previewMode: _angular_core.WritableSignal<boolean>;
101
+ readonly editorView: _angular_core.WritableSignal<EditorView>;
102
+ readonly lastSaved: _angular_core.WritableSignal<string>;
103
+ readonly currentTemplateId: _angular_core.WritableSignal<string>;
104
+ readonly isSaving: _angular_core.WritableSignal<boolean>;
105
+ private readonly templateService;
106
+ private readonly versionService;
107
+ readonly libVersion = "1.0.0";
108
+ private readonly destroyRef;
109
+ private readonly autoSave$;
110
+ readonly selectedBlockId: _angular_core.WritableSignal<number>;
111
+ readonly sourceCode: _angular_core.WritableSignal<string>;
112
+ readonly sourceStatus: _angular_core.WritableSignal<string>;
113
+ readonly draggedBlockId: _angular_core.WritableSignal<number>;
114
+ readonly dropTargetIndex: _angular_core.WritableSignal<number>;
115
+ readonly leftPanelWidth: _angular_core.WritableSignal<number>;
116
+ readonly rightPanelWidth: _angular_core.WritableSignal<number>;
117
+ readonly resizingSide: _angular_core.WritableSignal<ResizeSide>;
118
+ readonly templateName: _angular_core.WritableSignal<string>;
119
+ readonly focusedField: _angular_core.WritableSignal<string>;
120
+ readonly drawerTab: _angular_core.WritableSignal<"samples" | "saved">;
121
+ readonly autoSaveEnabled: _angular_core.WritableSignal<boolean>;
122
+ readonly toastMessage: _angular_core.WritableSignal<string>;
123
+ private isApplying;
124
+ readonly variables: _angular_core.WritableSignal<TemplateVariable[]>;
125
+ readonly blocks: _angular_core.WritableSignal<TemplateBlock[]>;
126
+ readonly selectedBlock: _angular_core.Signal<TemplateBlock>;
127
+ readonly workspaceGridColumns: _angular_core.Signal<string>;
128
+ readonly variableValues: _angular_core.Signal<Record<string, string>>;
129
+ constructor();
130
+ ngOnInit(): void;
131
+ selectBlock(blockId: number): void;
132
+ openTemplateDrawer(): void;
133
+ closeTemplateDrawer(): void;
134
+ applyTemplate(template: SampleTemplate): void;
135
+ private executeApplyTemplate;
136
+ loadSavedTemplate(template: any): void;
137
+ private executeLoadSavedTemplate;
138
+ openMyTemplates(): void;
139
+ openSampleTemplates(): void;
140
+ clearCanvas(): void;
141
+ addBlock(preset: BlockPreset): void;
142
+ patchBlockLibrary(presets: BlockPreset[]): void;
143
+ insertBlock(preset: BlockPreset, index: number): void;
144
+ duplicateBlock(blockId: number, event?: Event): void;
145
+ deleteBlock(blockId: number, event?: Event): void;
146
+ moveBlock(blockId: number, direction: -1 | 1, event?: Event): void;
147
+ updateSelected(key: keyof TemplateBlock, value: TemplateBlock[keyof TemplateBlock]): void;
148
+ saveTemplate(isAutoSave?: boolean): void;
149
+ exportTemplate(): void;
150
+ copyTemplate(): void;
151
+ showToast(message: string): void;
152
+ onLibraryDragStart(preset: BlockPreset, event: DragEvent): void;
153
+ onBlockDragStart(blockId: number, event: DragEvent): void;
154
+ onDragOver(event: DragEvent, index?: number): void;
155
+ onDrop(event: DragEvent, index?: number): void;
156
+ clearDragState(): void;
157
+ onSourceCodeChange(html: string): void;
158
+ addVariable(): void;
159
+ handleImageUpload(file: File): void;
160
+ handleSocialIconUpload(event: {
161
+ file: File;
162
+ index: number;
163
+ }): void;
164
+ updateVariable(id: number, key: 'name' | 'value', value: string): void;
165
+ deleteVariable(id: number): void;
166
+ insertVariableToken(name: string): void;
167
+ addColumnContent(blockId: number, columnIndex: number, type: TemplateBlockType): void;
168
+ removeColumnContent(blockId: number, columnIndex: number, childId: number): void;
169
+ updateColumnCount(blockId: number, columnCount: number): void;
170
+ startPanelResize(side: ResizeSide, event: MouseEvent): void;
171
+ onPanelResize(event: MouseEvent): void;
172
+ stopPanelResize(): void;
173
+ trackByBlockId(_: number, block: TemplateBlock): number;
174
+ private reorderBlock;
175
+ private readDroppedPreset;
176
+ private syncSourceCode;
177
+ private applySourceCode;
178
+ private parseBlockRow;
179
+ private createBlock;
180
+ private createColumns;
181
+ private normalizeColumns;
182
+ private createColumnChild;
183
+ private nextBlockId;
184
+ private renderColumnChildHtml;
185
+ private buildEmailHtml;
186
+ private renderBlockHtml;
187
+ private escapeHtml;
188
+ private isBlockType;
189
+ private readTextAlign;
190
+ private readText;
191
+ private readStyleValue;
192
+ private readPadding;
193
+ private readPixels;
194
+ private readNumber;
195
+ private readBorderColor;
196
+ private clamp;
197
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmailTemplateBuilderComponent, never>;
198
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmailTemplateBuilderComponent, "ngx-email-builder", never, { "apiConfig": { "alias": "apiConfig"; "required": false; }; "autoSave": { "alias": "autoSave"; "required": false; }; "saveInterval": { "alias": "saveInterval"; "required": false; }; "initialTemplateId": { "alias": "initialTemplateId"; "required": false; }; }, { "onSaveSuccess": "onSaveSuccess"; "onSaveError": "onSaveError"; }, never, never, true, never>;
199
+ }
200
+
201
+ declare const EMAIL_BLOCK_LIBRARY: BlockPreset[];
202
+
203
+ declare const EMAIL_SAMPLE_TEMPLATES: SampleTemplate[];
204
+
205
+ declare class EmailBuilderFooterComponent {
206
+ version: string;
207
+ isSaving: boolean;
208
+ autoSaveEnabled: boolean;
209
+ lastSaved: string;
210
+ blockCount: number;
211
+ variableCount: number;
212
+ autoSaveToggle: EventEmitter<boolean>;
213
+ toggleAutoSave(): void;
214
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmailBuilderFooterComponent, never>;
215
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmailBuilderFooterComponent, "app-email-builder-footer", never, { "version": { "alias": "version"; "required": true; }; "isSaving": { "alias": "isSaving"; "required": false; }; "autoSaveEnabled": { "alias": "autoSaveEnabled"; "required": true; }; "lastSaved": { "alias": "lastSaved"; "required": true; }; "blockCount": { "alias": "blockCount"; "required": true; }; "variableCount": { "alias": "variableCount"; "required": true; }; }, { "autoSaveToggle": "autoSaveToggle"; }, never, never, true, never>;
216
+ }
217
+
218
+ declare class EmailBuilderHeaderComponent {
219
+ viewport: ViewportSize;
220
+ previewMode: boolean;
221
+ editorView: EditorView;
222
+ templateName: string;
223
+ viewportChange: EventEmitter<ViewportSize>;
224
+ previewModeChange: EventEmitter<boolean>;
225
+ editorViewChange: EventEmitter<EditorView>;
226
+ copyTemplate: EventEmitter<void>;
227
+ saveTemplate: EventEmitter<void>;
228
+ clearCanvas: EventEmitter<void>;
229
+ exportTemplate: EventEmitter<void>;
230
+ templateNameChange: EventEmitter<string>;
231
+ openMyTemplates: EventEmitter<void>;
232
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmailBuilderHeaderComponent, never>;
233
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmailBuilderHeaderComponent, "app-email-builder-header", never, { "viewport": { "alias": "viewport"; "required": true; }; "previewMode": { "alias": "previewMode"; "required": true; }; "editorView": { "alias": "editorView"; "required": true; }; "templateName": { "alias": "templateName"; "required": true; }; }, { "viewportChange": "viewportChange"; "previewModeChange": "previewModeChange"; "editorViewChange": "editorViewChange"; "copyTemplate": "copyTemplate"; "saveTemplate": "saveTemplate"; "clearCanvas": "clearCanvas"; "exportTemplate": "exportTemplate"; "templateNameChange": "templateNameChange"; "openMyTemplates": "openMyTemplates"; }, never, never, true, never>;
234
+ }
235
+
236
+ declare class EmailBuilderInspectorComponent {
237
+ block: TemplateBlock | undefined;
238
+ variables: TemplateVariable[];
239
+ selectedTab: 'basics' | 'variable' | 'social';
240
+ readonly showVariablePicker: _angular_core.WritableSignal<boolean>;
241
+ activeFieldName: string | null;
242
+ activeElement: HTMLInputElement | HTMLTextAreaElement | null;
243
+ cursorPos: number;
244
+ update: EventEmitter<BlockUpdate>;
245
+ addVariable: EventEmitter<void>;
246
+ updateVariable: EventEmitter<VariableUpdate>;
247
+ deleteVariable: EventEmitter<number>;
248
+ insertVariable: EventEmitter<string>;
249
+ focusField: EventEmitter<string>;
250
+ uploadImage: EventEmitter<File>;
251
+ uploadSocialIcon: EventEmitter<{
252
+ file: File;
253
+ index: number;
254
+ }>;
255
+ readonly textAlignments: Array<{
256
+ value: NonNullable<TemplateBlock['textAlign']>;
257
+ icon: string;
258
+ }>;
259
+ onFieldFocus(fieldName: string, element: HTMLInputElement | HTMLTextAreaElement): void;
260
+ updateCursor(element: HTMLInputElement | HTMLTextAreaElement): void;
261
+ onPanelClick(event: MouseEvent): void;
262
+ onVariableSelect(variableData: string, type: 'name' | 'value'): void;
263
+ onFileSelected(event: Event): void;
264
+ onSocialIconSelected(event: Event, index: number): void;
265
+ addSocialLink(): void;
266
+ updateSocialLink(index: number, key: string, value: any): void;
267
+ removeSocialLink(index: number): void;
268
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmailBuilderInspectorComponent, never>;
269
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmailBuilderInspectorComponent, "app-email-builder-inspector", never, { "block": { "alias": "block"; "required": false; }; "variables": { "alias": "variables"; "required": true; }; }, { "update": "update"; "addVariable": "addVariable"; "updateVariable": "updateVariable"; "deleteVariable": "deleteVariable"; "insertVariable": "insertVariable"; "focusField": "focusField"; "uploadImage": "uploadImage"; "uploadSocialIcon": "uploadSocialIcon"; }, never, never, true, never>;
270
+ }
271
+
272
+ declare class EmailBuilderSidebarComponent {
273
+ readonly initialBlockCount = 8;
274
+ readonly previewCount = 3;
275
+ blockLibrary: BlockPreset[];
276
+ blocks: TemplateBlock[];
277
+ selectedBlockId: number;
278
+ sampleTemplates: SampleTemplate[];
279
+ draggedBlockId: number | null;
280
+ dropTargetIndex: number | null;
281
+ addBlock: EventEmitter<BlockPreset>;
282
+ selectBlock: EventEmitter<number>;
283
+ openTemplateDrawer: EventEmitter<void>;
284
+ applyTemplate: EventEmitter<SampleTemplate>;
285
+ libraryDragStart: EventEmitter<{
286
+ preset: BlockPreset;
287
+ event: DragEvent;
288
+ }>;
289
+ blockDragStart: EventEmitter<{
290
+ blockId: number;
291
+ event: DragEvent;
292
+ }>;
293
+ dragOver: EventEmitter<{
294
+ event: DragEvent;
295
+ index?: number;
296
+ }>;
297
+ drop: EventEmitter<{
298
+ event: DragEvent;
299
+ index?: number;
300
+ }>;
301
+ clearDragState: EventEmitter<void>;
302
+ readonly blockSearch: _angular_core.WritableSignal<string>;
303
+ readonly showAllBlocks: _angular_core.WritableSignal<boolean>;
304
+ readonly previewTemplates: _angular_core.Signal<SampleTemplate[]>;
305
+ readonly filteredBlocks: _angular_core.Signal<BlockPreset[]>;
306
+ readonly visibleBlocks: _angular_core.Signal<BlockPreset[]>;
307
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmailBuilderSidebarComponent, never>;
308
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmailBuilderSidebarComponent, "app-email-builder-sidebar", never, { "blockLibrary": { "alias": "blockLibrary"; "required": true; }; "blocks": { "alias": "blocks"; "required": true; }; "selectedBlockId": { "alias": "selectedBlockId"; "required": true; }; "sampleTemplates": { "alias": "sampleTemplates"; "required": true; }; "draggedBlockId": { "alias": "draggedBlockId"; "required": false; }; "dropTargetIndex": { "alias": "dropTargetIndex"; "required": false; }; }, { "addBlock": "addBlock"; "selectBlock": "selectBlock"; "openTemplateDrawer": "openTemplateDrawer"; "applyTemplate": "applyTemplate"; "libraryDragStart": "libraryDragStart"; "blockDragStart": "blockDragStart"; "dragOver": "dragOver"; "drop": "drop"; "clearDragState": "clearDragState"; }, never, never, true, never>;
309
+ }
310
+
311
+ declare class EmailBuilderTemplateDrawerComponent implements OnInit {
312
+ templates: SampleTemplate[];
313
+ initialTab: 'samples' | 'saved';
314
+ close: EventEmitter<void>;
315
+ useTemplate: EventEmitter<SampleTemplate>;
316
+ loadSavedTemplate: EventEmitter<any>;
317
+ private templateService;
318
+ selectedId: string | null;
319
+ readonly searchQuery: _angular_core.WritableSignal<string>;
320
+ readonly activeTab: _angular_core.WritableSignal<"samples" | "saved">;
321
+ readonly savedTemplates: _angular_core.WritableSignal<any[]>;
322
+ readonly toastMessage: _angular_core.WritableSignal<string>;
323
+ ngOnInit(): void;
324
+ fetchSavedTemplates(): void;
325
+ deleteTemplate(id: string): void;
326
+ loadSaved(template: any): void;
327
+ copyToClipboard(id: string): void;
328
+ private showToast;
329
+ readonly filteredTemplates: _angular_core.Signal<SampleTemplate[]>;
330
+ applyTemplate(template: SampleTemplate): void;
331
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmailBuilderTemplateDrawerComponent, never>;
332
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmailBuilderTemplateDrawerComponent, "app-email-builder-template-drawer", never, { "templates": { "alias": "templates"; "required": true; }; "initialTab": { "alias": "initialTab"; "required": false; }; }, { "close": "close"; "useTemplate": "useTemplate"; "loadSavedTemplate": "loadSavedTemplate"; }, never, never, true, never>;
333
+ }
334
+
335
+ declare class EmailTemplateCanvasComponent {
336
+ blocks: TemplateBlock[];
337
+ selectedBlockId: number;
338
+ viewport: ViewportSize;
339
+ previewMode: boolean;
340
+ editorView: EditorView;
341
+ sourceCode: string;
342
+ sourceStatus: string;
343
+ variableValues: Record<string, string>;
344
+ draggedBlockId: number | null;
345
+ dropTargetIndex: number | null;
346
+ editorViewChange: EventEmitter<EditorView>;
347
+ sourceCodeChange: EventEmitter<string>;
348
+ selectBlock: EventEmitter<number>;
349
+ blockDragStart: EventEmitter<{
350
+ blockId: number;
351
+ event: DragEvent;
352
+ }>;
353
+ dragOver: EventEmitter<{
354
+ event: DragEvent;
355
+ index?: number;
356
+ }>;
357
+ drop: EventEmitter<{
358
+ event: DragEvent;
359
+ index?: number;
360
+ }>;
361
+ clearDragState: EventEmitter<void>;
362
+ dropTargetIndexChange: EventEmitter<number>;
363
+ updateBlock: EventEmitter<{
364
+ key: keyof TemplateBlock;
365
+ value: TemplateBlock[keyof TemplateBlock];
366
+ }>;
367
+ columnCountChange: EventEmitter<{
368
+ blockId: number;
369
+ columnCount: number;
370
+ }>;
371
+ addColumnContent: EventEmitter<{
372
+ blockId: number;
373
+ columnIndex: number;
374
+ type: TemplateBlockType;
375
+ }>;
376
+ removeColumnContent: EventEmitter<{
377
+ blockId: number;
378
+ columnIndex: number;
379
+ childId: number;
380
+ }>;
381
+ moveBlock: EventEmitter<{
382
+ blockId: number;
383
+ direction: -1 | 1;
384
+ event: Event;
385
+ }>;
386
+ duplicateBlock: EventEmitter<{
387
+ blockId: number;
388
+ event: Event;
389
+ }>;
390
+ deleteBlock: EventEmitter<{
391
+ blockId: number;
392
+ event: Event;
393
+ }>;
394
+ readonly textAlignments: Array<{
395
+ value: NonNullable<TemplateBlock['textAlign']>;
396
+ label: string;
397
+ icon: string;
398
+ }>;
399
+ resolveText(value: string | undefined): string;
400
+ selectedBlock(): TemplateBlock | undefined;
401
+ normalizedColumns(block: TemplateBlock): TemplateBlock[][];
402
+ columnsTemplate(block: TemplateBlock): string;
403
+ listItems(value: string | undefined): string[];
404
+ justifyHeader(align: string | undefined): string;
405
+ getSocialIcon(type: string): string;
406
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmailTemplateCanvasComponent, never>;
407
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmailTemplateCanvasComponent, "app-email-template-canvas", never, { "blocks": { "alias": "blocks"; "required": true; }; "selectedBlockId": { "alias": "selectedBlockId"; "required": true; }; "viewport": { "alias": "viewport"; "required": true; }; "previewMode": { "alias": "previewMode"; "required": true; }; "editorView": { "alias": "editorView"; "required": true; }; "sourceCode": { "alias": "sourceCode"; "required": true; }; "sourceStatus": { "alias": "sourceStatus"; "required": true; }; "variableValues": { "alias": "variableValues"; "required": true; }; "draggedBlockId": { "alias": "draggedBlockId"; "required": false; }; "dropTargetIndex": { "alias": "dropTargetIndex"; "required": false; }; }, { "editorViewChange": "editorViewChange"; "sourceCodeChange": "sourceCodeChange"; "selectBlock": "selectBlock"; "blockDragStart": "blockDragStart"; "dragOver": "dragOver"; "drop": "drop"; "clearDragState": "clearDragState"; "dropTargetIndexChange": "dropTargetIndexChange"; "updateBlock": "updateBlock"; "columnCountChange": "columnCountChange"; "addColumnContent": "addColumnContent"; "removeColumnContent": "removeColumnContent"; "moveBlock": "moveBlock"; "duplicateBlock": "duplicateBlock"; "deleteBlock": "deleteBlock"; }, never, never, true, never>;
408
+ }
409
+
410
+ declare class CodeEditorComponent implements AfterViewInit, OnChanges, OnDestroy {
411
+ private platformId;
412
+ language: string;
413
+ theme: string;
414
+ code: string;
415
+ readonly: boolean;
416
+ codeChange: EventEmitter<string>;
417
+ editorContainer: ElementRef;
418
+ private editorInstance;
419
+ private monaco;
420
+ constructor(platformId: Object);
421
+ ngAfterViewInit(): Promise<void>;
422
+ ngOnChanges(changes: SimpleChanges): void;
423
+ ngOnDestroy(): void;
424
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CodeEditorComponent, never>;
425
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeEditorComponent, "app-code-editor", never, { "language": { "alias": "language"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "code": { "alias": "code"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; }, { "codeChange": "codeChange"; }, never, never, true, never>;
426
+ }
427
+
428
+ export { CodeEditorComponent, EMAIL_BLOCK_LIBRARY, EMAIL_SAMPLE_TEMPLATES, EmailBuilderFooterComponent, EmailBuilderHeaderComponent, EmailBuilderInspectorComponent, EmailBuilderSidebarComponent, EmailBuilderStorageService, EmailBuilderTemplateDrawerComponent, EmailTemplateBuilderComponent, EmailTemplateCanvasComponent };
429
+ export type { BlockPreset, BlockUpdate, EditorView, EmailBuilderApiConfig, ResizeSide, SampleTemplate, SocialLink, TemplateBlock, TemplateBlockType, TemplateVariable, VariableUpdate, ViewportSize };
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "ngx-email-builder",
3
+ "version": "1.0.0",
4
+ "description": "A high-end, standalone email template builder for Angular",
5
+ "main": "dist/index.js",
6
+ "typings": "index.d.ts",
7
+ "keywords": [
8
+ "angular",
9
+ "email",
10
+ "builder",
11
+ "template",
12
+ "ngx"
13
+ ],
14
+ "author": "Ashish Kumar",
15
+ "license": "MIT",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/jd-ashish/ngx-email-builder"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/jd-ashish/ngx-email-builder/issues"
22
+ },
23
+ "homepage": "https://github.com/jd-ashish/ngx-email-builder#readme",
24
+ "dependencies": {
25
+ "tslib": "^2.3.0"
26
+ },
27
+ "peerDependencies": {
28
+ "sweetalert2": "^11.23.0",
29
+ "monaco-editor": "^0.53.0",
30
+ "@angular/common": "^20.0.0",
31
+ "@angular/core": "^20.0.0",
32
+ "@angular/forms": "^20.0.0",
33
+ "rxjs": "~7.8.0"
34
+ },
35
+ "module": "fesm2022/ngx-email-builder.mjs",
36
+ "exports": {
37
+ "./package.json": {
38
+ "default": "./package.json"
39
+ },
40
+ ".": {
41
+ "types": "./index.d.ts",
42
+ "default": "./fesm2022/ngx-email-builder.mjs"
43
+ }
44
+ },
45
+ "sideEffects": false
46
+ }