dragble-angular-editor 1.0.1 → 1.0.3

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://dragble.com">
3
- <img src="logo.png" alt="Dragble Email Editor - Angular Email Template Builder" width="300" />
3
+ <img src="logo.png" alt="Dragble - AI-Powered Angular Email Template Builder" width="300" />
4
4
  </a>
5
5
  </p>
6
6
 
@@ -11,14 +11,14 @@
11
11
 
12
12
  # dragble-angular-editor
13
13
 
14
- Angular component for building **email templates** with drag-and-drop. Embed a full-featured **email editor** into your Angular app — create responsive HTML emails, newsletters, transactional email templates, and email marketing campaigns visually without writing code.
14
+ AI-powered Angular component for building **email templates** with drag-and-drop. Embed a full-featured **AI-powered email editor** into your Angular app — create responsive HTML emails, newsletters, transactional email templates, and email marketing campaigns visually without writing code.
15
15
 
16
- [Dragble](https://dragble.com) is a modern **email builder** and **email template editor** that lets your users design professional emails with a visual drag-and-drop interface.
16
+ [Dragble](https://dragble.com) is a modern **AI-powered email builder** and **email template editor** that lets your users design professional emails with a visual drag-and-drop interface.
17
17
 
18
18
  [Website](https://dragble.com) | [Documentation](https://docs.dragble.com) | [Dashboard](https://developers.dragble.com)
19
19
 
20
20
  <p align="center">
21
- <img src="editor_image.png" alt="Dragble Angular Email Editor - Drag and Drop Email Template Builder" width="700" />
21
+ <img src="editor_image.png" alt="Dragble - AI-Powered Angular Email Editor with Drag and Drop" width="700" />
22
22
  </p>
23
23
 
24
24
  ## Features
@@ -123,7 +123,7 @@ export class EmailEditorComponent {
123
123
  }
124
124
  ```
125
125
 
126
- ### Standalone Component (Angular 15+)
126
+ ### Standalone Component (Angular 17+)
127
127
 
128
128
  ```typescript
129
129
  import { Component, ViewChild } from "@angular/core";
@@ -167,7 +167,7 @@ export class EditorComponent {
167
167
  | `language` | `Language` | `undefined` | Template language |
168
168
  | `appearance` | `AppearanceConfig` | `undefined` | Visual customization |
169
169
  | `tools` | `ToolsConfig` | `undefined` | Tool enable/disable |
170
- | `customTools` | `DragbleToolConfig[]` | `undefined` | Custom tool definitions |
170
+ | `customTools` | `DragbleToolConfig[]` | `undefined` | Custom tool definitions |
171
171
  | `features` | `FeaturesConfig` | `undefined` | Feature toggles |
172
172
  | `fonts` | `FontsConfig` | `undefined` | Fonts configuration |
173
173
  | `bodyValues` | `Record<string, unknown>` | `undefined` | Body-level values |
@@ -183,17 +183,17 @@ export class EditorComponent {
183
183
  | `height` | `string \| number` | `"600px"` | Editor height |
184
184
  | `minHeight` | `string \| number` | `"600px"` | Minimum height |
185
185
  | `options` | `Partial<EditorOptions>` | `undefined` | Additional editor options |
186
- | `callbacks` | `Omit<DragbleCallbacks, ...>` | `undefined` | SDK callbacks |
186
+ | `callbacks` | `Omit<DragbleCallbacks, ...>` | `undefined` | SDK callbacks |
187
187
 
188
- | `collaboration` | `boolean \| CollaborationFeaturesConfig` | `undefined` | Collaboration settings |
189
- | `user` | `UserInfo` | `undefined` | Current user info |
190
- | `designMode` | `"edit" \| "live"` | `undefined` | Template permissions mode |
188
+ | `collaboration` | `boolean \| CollaborationFeaturesConfig` | `undefined` | Collaboration settings |
189
+ | `user` | `UserInfo` | `undefined` | Current user info |
190
+ | `designMode` | `"edit" \| "live"` | `undefined` | Template permissions mode |
191
191
 
192
192
  ## Outputs
193
193
 
194
194
  | Output | Payload Type | Description |
195
195
  | --------------- | -------------------------------------- | -------------------------------- |
196
- | `ready` | `DragbleSDK` | Emitted when the editor is ready |
196
+ | `ready` | `DragbleSDK` | Emitted when the editor is ready |
197
197
  | `load` | `unknown` | Emitted when a design is loaded |
198
198
  | `change` | `{ design: DesignJson; type: string }` | Emitted on every design change |
199
199
  | `error` | `Error` | Emitted when an error occurs |
package/dist/index.cjs ADDED
@@ -0,0 +1,676 @@
1
+ 'use strict';
2
+
3
+ var i0 = require('@angular/core');
4
+ var dragbleTypes = require('dragble-types');
5
+
6
+ function _interopNamespaceDefault(e) {
7
+ var n = Object.create(null);
8
+ if (e) {
9
+ Object.keys(e).forEach(function (k) {
10
+ if (k !== 'default') {
11
+ var d = Object.getOwnPropertyDescriptor(e, k);
12
+ Object.defineProperty(n, k, d.get ? d : {
13
+ enumerable: true,
14
+ get: function () { return e[k]; }
15
+ });
16
+ }
17
+ });
18
+ }
19
+ n.default = e;
20
+ return Object.freeze(n);
21
+ }
22
+
23
+ var i0__namespace = /*#__PURE__*/_interopNamespaceDefault(i0);
24
+
25
+ /**
26
+ * Dragble Editor Angular Component
27
+ *
28
+ * An Angular wrapper for the Dragble Editor SDK.
29
+ */
30
+ const SDK_CDN_URL = "https://sdk.dragble.com/latest/dragble-sdk.min.js";
31
+ // Map of URL -> Promise for caching SDK loads per URL
32
+ const sdkLoadPromises = new Map();
33
+ /**
34
+ * Get the SDK URL to use.
35
+ * @param customUrl - Optional custom SDK URL
36
+ * @returns The SDK URL to load
37
+ */
38
+ function getSDKUrl(customUrl, sdkVersion) {
39
+ if (customUrl && sdkVersion !== undefined) {
40
+ console.warn("[DragbleEditor] sdkVersion is ignored when sdkUrl is provided.");
41
+ }
42
+ return customUrl ?? `https://sdk.dragble.com/${sdkVersion ?? "latest"}/dragble-sdk.min.js`;
43
+ }
44
+ /**
45
+ * Create an SDK module from the global dragble object.
46
+ */
47
+ function createSDKModuleFromGlobal() {
48
+ return {
49
+ dragble: window.dragble,
50
+ createEditor: (config) => {
51
+ const instance = new window.dragble.constructor();
52
+ instance.init(config);
53
+ return instance;
54
+ },
55
+ DragbleSDK: window.dragble.constructor,
56
+ };
57
+ }
58
+ /**
59
+ * Load the SDK from a URL.
60
+ * Supports custom SDK URLs for enterprise self-hosted or specific versions.
61
+ * @param customUrl - Optional custom SDK URL
62
+ */
63
+ function loadSDK(customUrl) {
64
+ const sdkUrl = getSDKUrl(customUrl);
65
+ // Check cache for this specific URL
66
+ const cachedPromise = sdkLoadPromises.get(sdkUrl);
67
+ if (cachedPromise)
68
+ return cachedPromise;
69
+ // Check if already loaded globally (only for default URL to avoid conflicts)
70
+ if (sdkUrl === SDK_CDN_URL && typeof window !== "undefined" && window.dragble) {
71
+ return Promise.resolve(createSDKModuleFromGlobal());
72
+ }
73
+ return loadSDKScript(sdkUrl);
74
+ }
75
+ /**
76
+ * Load the SDK script from a specific URL.
77
+ * Each unique URL is cached separately to support multiple SDK sources.
78
+ * @param sdkUrl - The SDK URL to load
79
+ */
80
+ function loadSDKScript(sdkUrl) {
81
+ // Check cache for this specific URL
82
+ const cachedPromise = sdkLoadPromises.get(sdkUrl);
83
+ if (cachedPromise)
84
+ return cachedPromise;
85
+ const loadPromise = new Promise((resolve, reject) => {
86
+ const script = document.createElement("script");
87
+ script.src = sdkUrl;
88
+ script.async = true;
89
+ script.onload = () => {
90
+ if (window.dragble) {
91
+ // Resolve with SDK module interface
92
+ resolve(createSDKModuleFromGlobal());
93
+ }
94
+ else {
95
+ sdkLoadPromises.delete(sdkUrl);
96
+ reject(new Error("Failed to load Dragble SDK - createEditor not found"));
97
+ }
98
+ };
99
+ script.onerror = () => {
100
+ sdkLoadPromises.delete(sdkUrl);
101
+ reject(new Error(`Failed to load Dragble SDK from ${sdkUrl}`));
102
+ };
103
+ document.head.appendChild(script);
104
+ });
105
+ // Cache the promise for this URL
106
+ sdkLoadPromises.set(sdkUrl, loadPromise);
107
+ return loadPromise;
108
+ }
109
+ // ============================================================================
110
+ // Component
111
+ // ============================================================================
112
+ /**
113
+ * DragbleEditorComponent
114
+ *
115
+ * @example
116
+ * ```html
117
+ * <dragble-editor
118
+ * editorKey="your-editor-key"
119
+ * editorMode="email"
120
+ * (ready)="onReady($event)"
121
+ * (change)="onChange($event)"
122
+ * ></dragble-editor>
123
+ * ```
124
+ *
125
+ * @example
126
+ * ```typescript
127
+ * import { Component, ViewChild } from '@angular/core';
128
+ * import { DragbleEditorComponent } from '@dragble/angular-editor';
129
+ *
130
+ * @Component({
131
+ * selector: 'app-editor',
132
+ * template: `
133
+ * <dragble-editor
134
+ * #editor
135
+ * editorKey="your-editor-key"
136
+ * (ready)="onReady($event)"
137
+ * ></dragble-editor>
138
+ * <button (click)="handleSave()">Save</button>
139
+ * `
140
+ * })
141
+ * export class EditorComponent {
142
+ * @ViewChild('editor') editor!: DragbleEditorComponent;
143
+ *
144
+ * onReady(sdk: DragbleSDK) {
145
+ * console.log('Editor ready!', sdk);
146
+ * }
147
+ *
148
+ * handleSave() {
149
+ * this.editor.saveDesign((design) => {
150
+ * console.log('Design:', design);
151
+ * });
152
+ * }
153
+ * }
154
+ * ```
155
+ */
156
+ class DragbleEditorComponent {
157
+ constructor() {
158
+ /** Editor mode (email, web, popup) */
159
+ this.editorMode = "email";
160
+ /** Height of the editor */
161
+ this.height = "600px";
162
+ /** Minimum height for the editor */
163
+ this.minHeight = "600px";
164
+ // ========================================================================
165
+ // Outputs
166
+ // ========================================================================
167
+ /** Emitted when the editor is ready */
168
+ this.ready = new i0.EventEmitter();
169
+ /** Emitted when a design is loaded */
170
+ this.load = new i0.EventEmitter();
171
+ /** Emitted when the design changes */
172
+ this.change = new i0.EventEmitter();
173
+ /** Emitted when an error occurs */
174
+ this.error = new i0.EventEmitter();
175
+ /** Emitted when a comment event occurs (create, edit, delete, resolve, reopen) */
176
+ this.commentAction = new i0.EventEmitter();
177
+ // ========================================================================
178
+ // Internal State
179
+ // ========================================================================
180
+ this.containerId = `dragble-editor-${Math.random().toString(36).substr(2, 9)}`;
181
+ this.sdk = null;
182
+ this._isReady = false;
183
+ }
184
+ get isReady() {
185
+ return this._isReady;
186
+ }
187
+ get computedHeight() {
188
+ return typeof this.height === "number" ? `${this.height}px` : this.height;
189
+ }
190
+ get computedMinHeight() {
191
+ return typeof this.minHeight === "number"
192
+ ? `${this.minHeight}px`
193
+ : this.minHeight;
194
+ }
195
+ // ========================================================================
196
+ // Lifecycle
197
+ // ========================================================================
198
+ ngOnInit() {
199
+ // Initialization happens in ngAfterViewInit
200
+ }
201
+ ngAfterViewInit() {
202
+ this.initializeEditor();
203
+ }
204
+ ngOnChanges(changes) {
205
+ if (!this.sdk || !this._isReady)
206
+ return;
207
+ // Watch for design changes
208
+ if (changes["design"] && !changes["design"].firstChange) {
209
+ const newDesign = changes["design"].currentValue;
210
+ if (newDesign) {
211
+ this.sdk.loadDesign(newDesign);
212
+ }
213
+ }
214
+ // Watch for merge tags changes
215
+ if (changes["mergeTags"] && !changes["mergeTags"].firstChange) {
216
+ const newTags = changes["mergeTags"].currentValue;
217
+ if (newTags) {
218
+ this.sdk.setMergeTags(newTags);
219
+ }
220
+ }
221
+ // Watch for modules changes
222
+ if (changes["modules"] && !changes["modules"].firstChange) {
223
+ const newModules = changes["modules"].currentValue;
224
+ if (newModules) {
225
+ this.sdk.setModules(newModules);
226
+ }
227
+ }
228
+ // Watch for display conditions changes
229
+ if (changes["displayConditions"] &&
230
+ !changes["displayConditions"].firstChange) {
231
+ const newConditions = changes["displayConditions"].currentValue;
232
+ if (newConditions) {
233
+ this.sdk.setDisplayConditions(newConditions);
234
+ }
235
+ }
236
+ }
237
+ ngOnDestroy() {
238
+ if (this.sdk) {
239
+ this.sdk.destroy();
240
+ this.sdk = null;
241
+ }
242
+ }
243
+ // ========================================================================
244
+ // Initialization
245
+ // ========================================================================
246
+ async initializeEditor() {
247
+ try {
248
+ const resolvedSdkUrl = getSDKUrl(this.sdkUrl, this.sdkVersion);
249
+ const { createEditor } = await loadSDK(resolvedSdkUrl);
250
+ const config = this.buildConfig();
251
+ const sdk = createEditor(config);
252
+ this.sdk = sdk;
253
+ // Set up event listeners
254
+ sdk.addEventListener("editor:ready", () => {
255
+ this._isReady = true;
256
+ this.ready.emit(sdk);
257
+ });
258
+ sdk.addEventListener("design:loaded", (data) => {
259
+ this.load.emit(data);
260
+ });
261
+ sdk.addEventListener("design:updated", (data) => {
262
+ this.change.emit(data);
263
+ });
264
+ }
265
+ catch (err) {
266
+ const error = err instanceof Error ? err : new Error(String(err));
267
+ console.error("Initialization error:", error.message);
268
+ this.error.emit(error);
269
+ }
270
+ }
271
+ buildConfig() {
272
+ const editorConfig = this.contentType === "module"
273
+ ? {
274
+ ...this.editor,
275
+ contentType: this.contentType,
276
+ minRows: 1,
277
+ maxRows: 1,
278
+ }
279
+ : this.editor;
280
+ // Build collaboration feature config
281
+ let featuresConfig = this.features;
282
+ if (this.collaboration !== undefined) {
283
+ const collaborationConfig = typeof this.collaboration === "object"
284
+ ? {
285
+ ...this.collaboration,
286
+ onComment: (action) => {
287
+ this.commentAction.emit(action);
288
+ },
289
+ }
290
+ : this.collaboration;
291
+ featuresConfig = {
292
+ ...featuresConfig,
293
+ collaboration: collaborationConfig,
294
+ };
295
+ }
296
+ // Build callbacks (merge Angular outputs with user-provided callbacks)
297
+ const callbacks = {
298
+ ...this.callbacks,
299
+ };
300
+ // Build nested options object
301
+ const editorOptions = {
302
+ ...(this.user !== undefined && { user: this.user }),
303
+ ...(this.locale !== undefined && { locale: this.locale }),
304
+ ...(this.translations !== undefined && {
305
+ translations: this.translations,
306
+ }),
307
+ ...(this.textDirection !== undefined && {
308
+ textDirection: this.textDirection,
309
+ }),
310
+ ...(this.language !== undefined && { language: this.language }),
311
+ height: this.height,
312
+ minHeight: this.minHeight,
313
+ ...(this.mergeTags !== undefined && { mergeTags: this.mergeTags }),
314
+ ...(this.specialLinks !== undefined && {
315
+ specialLinks: this.specialLinks,
316
+ }),
317
+ ...(this.modules !== undefined && { modules: this.modules }),
318
+ ...(this.displayConditions !== undefined && {
319
+ displayConditions: this.displayConditions,
320
+ }),
321
+ ...(this.appearance !== undefined && { appearance: this.appearance }),
322
+ ...(this.tools !== undefined && { tools: this.tools }),
323
+ ...(this.customTools !== undefined && { customTools: this.customTools }),
324
+ ...(this.fonts !== undefined && { fonts: this.fonts }),
325
+ ...(this.bodyValues !== undefined && { bodyValues: this.bodyValues }),
326
+ ...(this.header !== undefined && { header: this.header }),
327
+ ...(this.footer !== undefined && { footer: this.footer }),
328
+ ...(editorConfig !== undefined && { editor: editorConfig }),
329
+ ...(this.customCSS !== undefined && { customCSS: this.customCSS }),
330
+ ...(this.customJS !== undefined && { customJS: this.customJS }),
331
+ ...(featuresConfig !== undefined && { features: featuresConfig }),
332
+ ...(this.ai !== undefined && { ai: this.ai }),
333
+ ...this.options,
334
+ };
335
+ return {
336
+ containerId: this.containerId,
337
+ editorKey: this.editorKey,
338
+ ...(this.editorMode !== undefined && { editorMode: this.editorMode }),
339
+ ...(this.designMode !== undefined && { designMode: this.designMode }),
340
+ ...(this.design !== undefined && { design: this.design }),
341
+ ...(this.popup !== undefined && { popup: this.popup }),
342
+ ...(this.editorVersion !== undefined && {
343
+ editorVersion: this.editorVersion,
344
+ }),
345
+ ...(this.editorUrl !== undefined && { editorUrl: this.editorUrl }),
346
+ callbacks,
347
+ options: editorOptions,
348
+ };
349
+ }
350
+ // ========================================================================
351
+ // Public Methods - Full SDK pass-through
352
+ // ========================================================================
353
+ /** Get the underlying SDK instance */
354
+ getEditor() {
355
+ return this.sdk;
356
+ }
357
+ // Design methods
358
+ loadDesign(design, options) {
359
+ this.sdk?.loadDesign(design, options);
360
+ }
361
+ loadBlank() {
362
+ this.sdk?.loadBlank();
363
+ }
364
+ saveDesign(callback) {
365
+ this.sdk?.saveDesign(callback);
366
+ }
367
+ getDesign() {
368
+ return this.sdk?.getDesign();
369
+ }
370
+ // Export methods (async-only)
371
+ exportHtml(options) {
372
+ return this.sdk?.exportHtml(options);
373
+ }
374
+ exportPlainText() {
375
+ return this.sdk?.exportPlainText();
376
+ }
377
+ exportJson() {
378
+ return this.sdk?.exportJson();
379
+ }
380
+ exportImage(options) {
381
+ return this.sdk?.exportImage(options);
382
+ }
383
+ exportPdf(options) {
384
+ return this.sdk?.exportPdf(options);
385
+ }
386
+ exportZip(options) {
387
+ return this.sdk?.exportZip(options);
388
+ }
389
+ getPopupValues() {
390
+ return this.sdk?.getPopupValues();
391
+ }
392
+ // Merge tags
393
+ setMergeTags(config) {
394
+ this.sdk?.setMergeTags(config);
395
+ }
396
+ getMergeTags() {
397
+ return this.sdk?.getMergeTags();
398
+ }
399
+ // Special links
400
+ setSpecialLinks(config) {
401
+ this.sdk?.setSpecialLinks(config);
402
+ }
403
+ getSpecialLinks() {
404
+ return this.sdk?.getSpecialLinks();
405
+ }
406
+ // Modules
407
+ setModulesLoading(loading) {
408
+ this.sdk?.setModulesLoading(loading);
409
+ }
410
+ setModules(modules) {
411
+ this.sdk?.setModules(modules);
412
+ }
413
+ getModules() {
414
+ return this.sdk?.getModules();
415
+ }
416
+ // Fonts
417
+ setFonts(config) {
418
+ this.sdk?.setFonts(config);
419
+ }
420
+ getFonts() {
421
+ return this.sdk?.getFonts();
422
+ }
423
+ // Body values
424
+ setBodyValues(values) {
425
+ this.sdk?.setBodyValues(values);
426
+ }
427
+ getBodyValues() {
428
+ return this.sdk?.getBodyValues();
429
+ }
430
+ // Configuration
431
+ setOptions(options) {
432
+ this.sdk?.setOptions(options);
433
+ }
434
+ setToolsConfig(config) {
435
+ this.sdk?.setToolsConfig(config);
436
+ }
437
+ setEditorMode(mode) {
438
+ this.sdk?.setEditorMode(mode);
439
+ }
440
+ setEditorConfig(config) {
441
+ this.sdk?.setEditorConfig(config);
442
+ }
443
+ getEditorConfig() {
444
+ return this.sdk?.getEditorConfig();
445
+ }
446
+ setLocale(locale) {
447
+ this.sdk?.setLocale(locale);
448
+ }
449
+ setTextDirection(direction) {
450
+ this.sdk?.setTextDirection(direction);
451
+ }
452
+ setAppearance(config) {
453
+ this.sdk?.setAppearance(config);
454
+ }
455
+ setCustomCSS(css) {
456
+ this.sdk?.setCustomCSS(css);
457
+ }
458
+ setCustomJS(js) {
459
+ this.sdk?.setCustomJS(js);
460
+ }
461
+ // Multi-language
462
+ setLanguage(language) {
463
+ this.sdk?.setLanguage(language);
464
+ }
465
+ getLanguage() {
466
+ return this.sdk?.getLanguage();
467
+ }
468
+ // Undo/Redo
469
+ undo() {
470
+ this.sdk?.undo();
471
+ }
472
+ redo() {
473
+ this.sdk?.redo();
474
+ }
475
+ save() {
476
+ this.sdk?.save();
477
+ }
478
+ // Preview
479
+ showPreview(device) {
480
+ this.sdk?.showPreview(device);
481
+ }
482
+ hidePreview() {
483
+ this.sdk?.hidePreview();
484
+ }
485
+ // Tools
486
+ registerTool(config) {
487
+ return this.sdk?.registerTool(config);
488
+ }
489
+ unregisterTool(toolId) {
490
+ return this.sdk?.unregisterTool(toolId);
491
+ }
492
+ getTools() {
493
+ return this.sdk?.getTools();
494
+ }
495
+ // Display conditions
496
+ setDisplayConditions(config) {
497
+ this.sdk?.setDisplayConditions(config);
498
+ }
499
+ audit(optionsOrCallback, callback) {
500
+ if (typeof optionsOrCallback === "function") {
501
+ return this.sdk?.audit(optionsOrCallback);
502
+ }
503
+ if (callback) {
504
+ return this.sdk?.audit(optionsOrCallback, callback);
505
+ }
506
+ return this.sdk?.audit(optionsOrCallback);
507
+ }
508
+ // Collaboration
509
+ showComment(commentId) {
510
+ this.sdk?.showComment(commentId);
511
+ }
512
+ openCommentPanel(rowId) {
513
+ this.sdk?.openCommentPanel(rowId);
514
+ }
515
+ // Events
516
+ addEventListener(event, callback) {
517
+ return this.sdk?.addEventListener(event, callback);
518
+ }
519
+ removeEventListener(event, callback) {
520
+ this.sdk?.removeEventListener(event, callback);
521
+ }
522
+ // Advanced
523
+ registerColumns(cells) {
524
+ this.sdk?.registerColumns(cells);
525
+ }
526
+ setBrandingColors(config) {
527
+ this.sdk?.setBrandingColors(config);
528
+ }
529
+ // Custom widgets
530
+ createWidget(config) {
531
+ return this.sdk?.createWidget(config);
532
+ }
533
+ removeWidget(widgetName) {
534
+ return this.sdk?.removeWidget(widgetName);
535
+ }
536
+ // Undo/Redo state
537
+ canUndo() {
538
+ return this.sdk?.canUndo();
539
+ }
540
+ canRedo() {
541
+ return this.sdk?.canRedo();
542
+ }
543
+ // Tabs
544
+ updateTabs(tabs) {
545
+ this.sdk?.updateTabs(tabs);
546
+ }
547
+ }
548
+ DragbleEditorComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0__namespace, type: DragbleEditorComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
549
+ DragbleEditorComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DragbleEditorComponent, isStandalone: true, selector: "dragble-editor", inputs: { editorKey: "editorKey", design: "design", editorMode: "editorMode", popup: "popup", contentType: "contentType", ai: "ai", locale: "locale", translations: "translations", textDirection: "textDirection", language: "language", appearance: "appearance", tools: "tools", customTools: "customTools", features: "features", mergeTags: "mergeTags", specialLinks: "specialLinks", modules: "modules", displayConditions: "displayConditions", editor: "editor", fonts: "fonts", bodyValues: "bodyValues", header: "header", footer: "footer", customCSS: "customCSS", customJS: "customJS", height: "height", minHeight: "minHeight", options: "options", callbacks: "callbacks", sdkUrl: "sdkUrl", sdkVersion: "sdkVersion", editorVersion: "editorVersion", editorUrl: "editorUrl", collaboration: "collaboration", user: "user", designMode: "designMode" }, outputs: { ready: "ready", load: "load", change: "change", error: "error", commentAction: "commentAction" }, usesOnChanges: true, ngImport: i0__namespace, template: `<div
550
+ #container
551
+ [id]="containerId"
552
+ [style.width]="'100%'"
553
+ [style.height]="computedHeight"
554
+ [style.minHeight]="computedMinHeight"
555
+ ></div>`, isInline: true, styles: ["\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n "] });
556
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0__namespace, type: DragbleEditorComponent, decorators: [{
557
+ type: i0.Component,
558
+ args: [{ selector: "dragble-editor", template: `<div
559
+ #container
560
+ [id]="containerId"
561
+ [style.width]="'100%'"
562
+ [style.height]="computedHeight"
563
+ [style.minHeight]="computedMinHeight"
564
+ ></div>`, standalone: true, styles: ["\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n "] }]
565
+ }], propDecorators: { editorKey: [{
566
+ type: i0.Input
567
+ }], design: [{
568
+ type: i0.Input
569
+ }], editorMode: [{
570
+ type: i0.Input
571
+ }], popup: [{
572
+ type: i0.Input
573
+ }], contentType: [{
574
+ type: i0.Input
575
+ }], ai: [{
576
+ type: i0.Input
577
+ }], locale: [{
578
+ type: i0.Input
579
+ }], translations: [{
580
+ type: i0.Input
581
+ }], textDirection: [{
582
+ type: i0.Input
583
+ }], language: [{
584
+ type: i0.Input
585
+ }], appearance: [{
586
+ type: i0.Input
587
+ }], tools: [{
588
+ type: i0.Input
589
+ }], customTools: [{
590
+ type: i0.Input
591
+ }], features: [{
592
+ type: i0.Input
593
+ }], mergeTags: [{
594
+ type: i0.Input
595
+ }], specialLinks: [{
596
+ type: i0.Input
597
+ }], modules: [{
598
+ type: i0.Input
599
+ }], displayConditions: [{
600
+ type: i0.Input
601
+ }], editor: [{
602
+ type: i0.Input
603
+ }], fonts: [{
604
+ type: i0.Input
605
+ }], bodyValues: [{
606
+ type: i0.Input
607
+ }], header: [{
608
+ type: i0.Input
609
+ }], footer: [{
610
+ type: i0.Input
611
+ }], customCSS: [{
612
+ type: i0.Input
613
+ }], customJS: [{
614
+ type: i0.Input
615
+ }], height: [{
616
+ type: i0.Input
617
+ }], minHeight: [{
618
+ type: i0.Input
619
+ }], options: [{
620
+ type: i0.Input
621
+ }], callbacks: [{
622
+ type: i0.Input
623
+ }], sdkUrl: [{
624
+ type: i0.Input
625
+ }], sdkVersion: [{
626
+ type: i0.Input
627
+ }], editorVersion: [{
628
+ type: i0.Input
629
+ }], editorUrl: [{
630
+ type: i0.Input
631
+ }], collaboration: [{
632
+ type: i0.Input
633
+ }], user: [{
634
+ type: i0.Input
635
+ }], designMode: [{
636
+ type: i0.Input
637
+ }], ready: [{
638
+ type: i0.Output
639
+ }], load: [{
640
+ type: i0.Output
641
+ }], change: [{
642
+ type: i0.Output
643
+ }], error: [{
644
+ type: i0.Output
645
+ }], commentAction: [{
646
+ type: i0.Output
647
+ }] } });
648
+
649
+ /**
650
+ * Dragble Editor Angular Module
651
+ *
652
+ * This module is provided for backwards compatibility with non-standalone Angular apps.
653
+ * For Angular 14+ apps using standalone components, you can import DragbleEditorComponent directly.
654
+ */
655
+ class DragbleEditorModule {
656
+ }
657
+ DragbleEditorModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0__namespace, type: DragbleEditorModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
658
+ DragbleEditorModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0__namespace, type: DragbleEditorModule, imports: [DragbleEditorComponent], exports: [DragbleEditorComponent] });
659
+ DragbleEditorModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0__namespace, type: DragbleEditorModule });
660
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0__namespace, type: DragbleEditorModule, decorators: [{
661
+ type: i0.NgModule,
662
+ args: [{
663
+ imports: [DragbleEditorComponent],
664
+ exports: [DragbleEditorComponent],
665
+ }]
666
+ }] });
667
+
668
+ exports.DragbleEditorComponent = DragbleEditorComponent;
669
+ exports.DragbleEditorModule = DragbleEditorModule;
670
+ Object.keys(dragbleTypes).forEach(function (k) {
671
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
672
+ enumerable: true,
673
+ get: function () { return dragbleTypes[k]; }
674
+ });
675
+ });
676
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["out-tsc/dragble-editor.component.js","out-tsc/dragble-editor.module.js"],"sourcesContent":["/**\n * Dragble Editor Angular Component\n *\n * An Angular wrapper for the Dragble Editor SDK.\n */\nimport { Component, Input, Output, EventEmitter, } from \"@angular/core\";\nimport * as i0 from \"@angular/core\";\nconst SDK_CDN_URL = \"https://sdk.dragble.com/latest/dragble-sdk.min.js\";\n// Map of URL -> Promise for caching SDK loads per URL\nconst sdkLoadPromises = new Map();\n/**\n * Get the SDK URL to use.\n * @param customUrl - Optional custom SDK URL\n * @returns The SDK URL to load\n */\nfunction getSDKUrl(customUrl, sdkVersion) {\n if (customUrl && sdkVersion !== undefined) {\n console.warn(\"[DragbleEditor] sdkVersion is ignored when sdkUrl is provided.\");\n }\n return customUrl ?? `https://sdk.dragble.com/${sdkVersion ?? \"latest\"}/dragble-sdk.min.js`;\n}\n/**\n * Create an SDK module from the global dragble object.\n */\nfunction createSDKModuleFromGlobal() {\n return {\n dragble: window.dragble,\n createEditor: (config) => {\n const instance = new window.dragble.constructor();\n instance.init(config);\n return instance;\n },\n DragbleSDK: window.dragble.constructor,\n };\n}\n/**\n * Load the SDK from a URL.\n * Supports custom SDK URLs for enterprise self-hosted or specific versions.\n * @param customUrl - Optional custom SDK URL\n */\nfunction loadSDK(customUrl) {\n const sdkUrl = getSDKUrl(customUrl);\n // Check cache for this specific URL\n const cachedPromise = sdkLoadPromises.get(sdkUrl);\n if (cachedPromise)\n return cachedPromise;\n // Check if already loaded globally (only for default URL to avoid conflicts)\n if (sdkUrl === SDK_CDN_URL && typeof window !== \"undefined\" && window.dragble) {\n return Promise.resolve(createSDKModuleFromGlobal());\n }\n return loadSDKScript(sdkUrl);\n}\n/**\n * Load the SDK script from a specific URL.\n * Each unique URL is cached separately to support multiple SDK sources.\n * @param sdkUrl - The SDK URL to load\n */\nfunction loadSDKScript(sdkUrl) {\n // Check cache for this specific URL\n const cachedPromise = sdkLoadPromises.get(sdkUrl);\n if (cachedPromise)\n return cachedPromise;\n const loadPromise = new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = sdkUrl;\n script.async = true;\n script.onload = () => {\n if (window.dragble) {\n // Resolve with SDK module interface\n resolve(createSDKModuleFromGlobal());\n }\n else {\n sdkLoadPromises.delete(sdkUrl);\n reject(new Error(\"Failed to load Dragble SDK - createEditor not found\"));\n }\n };\n script.onerror = () => {\n sdkLoadPromises.delete(sdkUrl);\n reject(new Error(`Failed to load Dragble SDK from ${sdkUrl}`));\n };\n document.head.appendChild(script);\n });\n // Cache the promise for this URL\n sdkLoadPromises.set(sdkUrl, loadPromise);\n return loadPromise;\n}\n// ============================================================================\n// Component\n// ============================================================================\n/**\n * DragbleEditorComponent\n *\n * @example\n * ```html\n * <dragble-editor\n * editorKey=\"your-editor-key\"\n * editorMode=\"email\"\n * (ready)=\"onReady($event)\"\n * (change)=\"onChange($event)\"\n * ></dragble-editor>\n * ```\n *\n * @example\n * ```typescript\n * import { Component, ViewChild } from '@angular/core';\n * import { DragbleEditorComponent } from '@dragble/angular-editor';\n *\n * @Component({\n * selector: 'app-editor',\n * template: `\n * <dragble-editor\n * #editor\n * editorKey=\"your-editor-key\"\n * (ready)=\"onReady($event)\"\n * ></dragble-editor>\n * <button (click)=\"handleSave()\">Save</button>\n * `\n * })\n * export class EditorComponent {\n * @ViewChild('editor') editor!: DragbleEditorComponent;\n *\n * onReady(sdk: DragbleSDK) {\n * console.log('Editor ready!', sdk);\n * }\n *\n * handleSave() {\n * this.editor.saveDesign((design) => {\n * console.log('Design:', design);\n * });\n * }\n * }\n * ```\n */\nexport class DragbleEditorComponent {\n constructor() {\n /** Editor mode (email, web, popup) */\n this.editorMode = \"email\";\n /** Height of the editor */\n this.height = \"600px\";\n /** Minimum height for the editor */\n this.minHeight = \"600px\";\n // ========================================================================\n // Outputs\n // ========================================================================\n /** Emitted when the editor is ready */\n this.ready = new EventEmitter();\n /** Emitted when a design is loaded */\n this.load = new EventEmitter();\n /** Emitted when the design changes */\n this.change = new EventEmitter();\n /** Emitted when an error occurs */\n this.error = new EventEmitter();\n /** Emitted when a comment event occurs (create, edit, delete, resolve, reopen) */\n this.commentAction = new EventEmitter();\n // ========================================================================\n // Internal State\n // ========================================================================\n this.containerId = `dragble-editor-${Math.random().toString(36).substr(2, 9)}`;\n this.sdk = null;\n this._isReady = false;\n }\n get isReady() {\n return this._isReady;\n }\n get computedHeight() {\n return typeof this.height === \"number\" ? `${this.height}px` : this.height;\n }\n get computedMinHeight() {\n return typeof this.minHeight === \"number\"\n ? `${this.minHeight}px`\n : this.minHeight;\n }\n // ========================================================================\n // Lifecycle\n // ========================================================================\n ngOnInit() {\n // Initialization happens in ngAfterViewInit\n }\n ngAfterViewInit() {\n this.initializeEditor();\n }\n ngOnChanges(changes) {\n if (!this.sdk || !this._isReady)\n return;\n // Watch for design changes\n if (changes[\"design\"] && !changes[\"design\"].firstChange) {\n const newDesign = changes[\"design\"].currentValue;\n if (newDesign) {\n this.sdk.loadDesign(newDesign);\n }\n }\n // Watch for merge tags changes\n if (changes[\"mergeTags\"] && !changes[\"mergeTags\"].firstChange) {\n const newTags = changes[\"mergeTags\"].currentValue;\n if (newTags) {\n this.sdk.setMergeTags(newTags);\n }\n }\n // Watch for modules changes\n if (changes[\"modules\"] && !changes[\"modules\"].firstChange) {\n const newModules = changes[\"modules\"].currentValue;\n if (newModules) {\n this.sdk.setModules(newModules);\n }\n }\n // Watch for display conditions changes\n if (changes[\"displayConditions\"] &&\n !changes[\"displayConditions\"].firstChange) {\n const newConditions = changes[\"displayConditions\"].currentValue;\n if (newConditions) {\n this.sdk.setDisplayConditions(newConditions);\n }\n }\n }\n ngOnDestroy() {\n if (this.sdk) {\n this.sdk.destroy();\n this.sdk = null;\n }\n }\n // ========================================================================\n // Initialization\n // ========================================================================\n async initializeEditor() {\n try {\n const resolvedSdkUrl = getSDKUrl(this.sdkUrl, this.sdkVersion);\n const { createEditor } = await loadSDK(resolvedSdkUrl);\n const config = this.buildConfig();\n const sdk = createEditor(config);\n this.sdk = sdk;\n // Set up event listeners\n sdk.addEventListener(\"editor:ready\", () => {\n this._isReady = true;\n this.ready.emit(sdk);\n });\n sdk.addEventListener(\"design:loaded\", (data) => {\n this.load.emit(data);\n });\n sdk.addEventListener(\"design:updated\", (data) => {\n this.change.emit(data);\n });\n }\n catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n console.error(\"Initialization error:\", error.message);\n this.error.emit(error);\n }\n }\n buildConfig() {\n const editorConfig = this.contentType === \"module\"\n ? {\n ...this.editor,\n contentType: this.contentType,\n minRows: 1,\n maxRows: 1,\n }\n : this.editor;\n // Build collaboration feature config\n let featuresConfig = this.features;\n if (this.collaboration !== undefined) {\n const collaborationConfig = typeof this.collaboration === \"object\"\n ? {\n ...this.collaboration,\n onComment: (action) => {\n this.commentAction.emit(action);\n },\n }\n : this.collaboration;\n featuresConfig = {\n ...featuresConfig,\n collaboration: collaborationConfig,\n };\n }\n // Build callbacks (merge Angular outputs with user-provided callbacks)\n const callbacks = {\n ...this.callbacks,\n };\n // Build nested options object\n const editorOptions = {\n ...(this.user !== undefined && { user: this.user }),\n ...(this.locale !== undefined && { locale: this.locale }),\n ...(this.translations !== undefined && {\n translations: this.translations,\n }),\n ...(this.textDirection !== undefined && {\n textDirection: this.textDirection,\n }),\n ...(this.language !== undefined && { language: this.language }),\n height: this.height,\n minHeight: this.minHeight,\n ...(this.mergeTags !== undefined && { mergeTags: this.mergeTags }),\n ...(this.specialLinks !== undefined && {\n specialLinks: this.specialLinks,\n }),\n ...(this.modules !== undefined && { modules: this.modules }),\n ...(this.displayConditions !== undefined && {\n displayConditions: this.displayConditions,\n }),\n ...(this.appearance !== undefined && { appearance: this.appearance }),\n ...(this.tools !== undefined && { tools: this.tools }),\n ...(this.customTools !== undefined && { customTools: this.customTools }),\n ...(this.fonts !== undefined && { fonts: this.fonts }),\n ...(this.bodyValues !== undefined && { bodyValues: this.bodyValues }),\n ...(this.header !== undefined && { header: this.header }),\n ...(this.footer !== undefined && { footer: this.footer }),\n ...(editorConfig !== undefined && { editor: editorConfig }),\n ...(this.customCSS !== undefined && { customCSS: this.customCSS }),\n ...(this.customJS !== undefined && { customJS: this.customJS }),\n ...(featuresConfig !== undefined && { features: featuresConfig }),\n ...(this.ai !== undefined && { ai: this.ai }),\n ...this.options,\n };\n return {\n containerId: this.containerId,\n editorKey: this.editorKey,\n ...(this.editorMode !== undefined && { editorMode: this.editorMode }),\n ...(this.designMode !== undefined && { designMode: this.designMode }),\n ...(this.design !== undefined && { design: this.design }),\n ...(this.popup !== undefined && { popup: this.popup }),\n ...(this.editorVersion !== undefined && {\n editorVersion: this.editorVersion,\n }),\n ...(this.editorUrl !== undefined && { editorUrl: this.editorUrl }),\n callbacks,\n options: editorOptions,\n };\n }\n // ========================================================================\n // Public Methods - Full SDK pass-through\n // ========================================================================\n /** Get the underlying SDK instance */\n getEditor() {\n return this.sdk;\n }\n // Design methods\n loadDesign(design, options) {\n this.sdk?.loadDesign(design, options);\n }\n loadBlank() {\n this.sdk?.loadBlank();\n }\n saveDesign(callback) {\n this.sdk?.saveDesign(callback);\n }\n getDesign() {\n return this.sdk?.getDesign();\n }\n // Export methods (async-only)\n exportHtml(options) {\n return this.sdk?.exportHtml(options);\n }\n exportPlainText() {\n return this.sdk?.exportPlainText();\n }\n exportJson() {\n return this.sdk?.exportJson();\n }\n exportImage(options) {\n return this.sdk?.exportImage(options);\n }\n exportPdf(options) {\n return this.sdk?.exportPdf(options);\n }\n exportZip(options) {\n return this.sdk?.exportZip(options);\n }\n getPopupValues() {\n return this.sdk?.getPopupValues();\n }\n // Merge tags\n setMergeTags(config) {\n this.sdk?.setMergeTags(config);\n }\n getMergeTags() {\n return this.sdk?.getMergeTags();\n }\n // Special links\n setSpecialLinks(config) {\n this.sdk?.setSpecialLinks(config);\n }\n getSpecialLinks() {\n return this.sdk?.getSpecialLinks();\n }\n // Modules\n setModulesLoading(loading) {\n this.sdk?.setModulesLoading(loading);\n }\n setModules(modules) {\n this.sdk?.setModules(modules);\n }\n getModules() {\n return this.sdk?.getModules();\n }\n // Fonts\n setFonts(config) {\n this.sdk?.setFonts(config);\n }\n getFonts() {\n return this.sdk?.getFonts();\n }\n // Body values\n setBodyValues(values) {\n this.sdk?.setBodyValues(values);\n }\n getBodyValues() {\n return this.sdk?.getBodyValues();\n }\n // Configuration\n setOptions(options) {\n this.sdk?.setOptions(options);\n }\n setToolsConfig(config) {\n this.sdk?.setToolsConfig(config);\n }\n setEditorMode(mode) {\n this.sdk?.setEditorMode(mode);\n }\n setEditorConfig(config) {\n this.sdk?.setEditorConfig(config);\n }\n getEditorConfig() {\n return this.sdk?.getEditorConfig();\n }\n setLocale(locale) {\n this.sdk?.setLocale(locale);\n }\n setTextDirection(direction) {\n this.sdk?.setTextDirection(direction);\n }\n setAppearance(config) {\n this.sdk?.setAppearance(config);\n }\n setCustomCSS(css) {\n this.sdk?.setCustomCSS(css);\n }\n setCustomJS(js) {\n this.sdk?.setCustomJS(js);\n }\n // Multi-language\n setLanguage(language) {\n this.sdk?.setLanguage(language);\n }\n getLanguage() {\n return this.sdk?.getLanguage();\n }\n // Undo/Redo\n undo() {\n this.sdk?.undo();\n }\n redo() {\n this.sdk?.redo();\n }\n save() {\n this.sdk?.save();\n }\n // Preview\n showPreview(device) {\n this.sdk?.showPreview(device);\n }\n hidePreview() {\n this.sdk?.hidePreview();\n }\n // Tools\n registerTool(config) {\n return this.sdk?.registerTool(config);\n }\n unregisterTool(toolId) {\n return this.sdk?.unregisterTool(toolId);\n }\n getTools() {\n return this.sdk?.getTools();\n }\n // Display conditions\n setDisplayConditions(config) {\n this.sdk?.setDisplayConditions(config);\n }\n audit(optionsOrCallback, callback) {\n if (typeof optionsOrCallback === \"function\") {\n return this.sdk?.audit(optionsOrCallback);\n }\n if (callback) {\n return this.sdk?.audit(optionsOrCallback, callback);\n }\n return this.sdk?.audit(optionsOrCallback);\n }\n // Collaboration\n showComment(commentId) {\n this.sdk?.showComment(commentId);\n }\n openCommentPanel(rowId) {\n this.sdk?.openCommentPanel(rowId);\n }\n // Events\n addEventListener(event, callback) {\n return this.sdk?.addEventListener(event, callback);\n }\n removeEventListener(event, callback) {\n this.sdk?.removeEventListener(event, callback);\n }\n // Advanced\n registerColumns(cells) {\n this.sdk?.registerColumns(cells);\n }\n setBrandingColors(config) {\n this.sdk?.setBrandingColors(config);\n }\n // Custom widgets\n createWidget(config) {\n return this.sdk?.createWidget(config);\n }\n removeWidget(widgetName) {\n return this.sdk?.removeWidget(widgetName);\n }\n // Undo/Redo state\n canUndo() {\n return this.sdk?.canUndo();\n }\n canRedo() {\n return this.sdk?.canRedo();\n }\n // Tabs\n updateTabs(tabs) {\n this.sdk?.updateTabs(tabs);\n }\n}\nDragbleEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nDragbleEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.3.12\", type: DragbleEditorComponent, isStandalone: true, selector: \"dragble-editor\", inputs: { editorKey: \"editorKey\", design: \"design\", editorMode: \"editorMode\", popup: \"popup\", contentType: \"contentType\", ai: \"ai\", locale: \"locale\", translations: \"translations\", textDirection: \"textDirection\", language: \"language\", appearance: \"appearance\", tools: \"tools\", customTools: \"customTools\", features: \"features\", mergeTags: \"mergeTags\", specialLinks: \"specialLinks\", modules: \"modules\", displayConditions: \"displayConditions\", editor: \"editor\", fonts: \"fonts\", bodyValues: \"bodyValues\", header: \"header\", footer: \"footer\", customCSS: \"customCSS\", customJS: \"customJS\", height: \"height\", minHeight: \"minHeight\", options: \"options\", callbacks: \"callbacks\", sdkUrl: \"sdkUrl\", sdkVersion: \"sdkVersion\", editorVersion: \"editorVersion\", editorUrl: \"editorUrl\", collaboration: \"collaboration\", user: \"user\", designMode: \"designMode\" }, outputs: { ready: \"ready\", load: \"load\", change: \"change\", error: \"error\", commentAction: \"commentAction\" }, usesOnChanges: true, ngImport: i0, template: `<div\n #container\n [id]=\"containerId\"\n [style.width]=\"'100%'\"\n [style.height]=\"computedHeight\"\n [style.minHeight]=\"computedMinHeight\"\n ></div>`, isInline: true, styles: [\"\\n :host {\\n display: block;\\n width: 100%;\\n height: 100%;\\n }\\n \"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: \"dragble-editor\", template: `<div\n #container\n [id]=\"containerId\"\n [style.width]=\"'100%'\"\n [style.height]=\"computedHeight\"\n [style.minHeight]=\"computedMinHeight\"\n ></div>`, standalone: true, styles: [\"\\n :host {\\n display: block;\\n width: 100%;\\n height: 100%;\\n }\\n \"] }]\n }], propDecorators: { editorKey: [{\n type: Input\n }], design: [{\n type: Input\n }], editorMode: [{\n type: Input\n }], popup: [{\n type: Input\n }], contentType: [{\n type: Input\n }], ai: [{\n type: Input\n }], locale: [{\n type: Input\n }], translations: [{\n type: Input\n }], textDirection: [{\n type: Input\n }], language: [{\n type: Input\n }], appearance: [{\n type: Input\n }], tools: [{\n type: Input\n }], customTools: [{\n type: Input\n }], features: [{\n type: Input\n }], mergeTags: [{\n type: Input\n }], specialLinks: [{\n type: Input\n }], modules: [{\n type: Input\n }], displayConditions: [{\n type: Input\n }], editor: [{\n type: Input\n }], fonts: [{\n type: Input\n }], bodyValues: [{\n type: Input\n }], header: [{\n type: Input\n }], footer: [{\n type: Input\n }], customCSS: [{\n type: Input\n }], customJS: [{\n type: Input\n }], height: [{\n type: Input\n }], minHeight: [{\n type: Input\n }], options: [{\n type: Input\n }], callbacks: [{\n type: Input\n }], sdkUrl: [{\n type: Input\n }], sdkVersion: [{\n type: Input\n }], editorVersion: [{\n type: Input\n }], editorUrl: [{\n type: Input\n }], collaboration: [{\n type: Input\n }], user: [{\n type: Input\n }], designMode: [{\n type: Input\n }], ready: [{\n type: Output\n }], load: [{\n type: Output\n }], change: [{\n type: Output\n }], error: [{\n type: Output\n }], commentAction: [{\n type: Output\n }] } });\n//# sourceMappingURL=dragble-editor.component.js.map","/**\n * Dragble Editor Angular Module\n *\n * This module is provided for backwards compatibility with non-standalone Angular apps.\n * For Angular 14+ apps using standalone components, you can import DragbleEditorComponent directly.\n */\nimport { NgModule } from \"@angular/core\";\nimport { DragbleEditorComponent } from \"./dragble-editor.component\";\nimport * as i0 from \"@angular/core\";\nexport class DragbleEditorModule {\n}\nDragbleEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDragbleEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorModule, imports: [DragbleEditorComponent], exports: [DragbleEditorComponent] });\nDragbleEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [DragbleEditorComponent],\n exports: [DragbleEditorComponent],\n }]\n }] });\n//# sourceMappingURL=dragble-editor.module.js.map"],"names":["EventEmitter","i0","Component","Input","Output","NgModule"],"mappings":"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"}
@@ -646,4 +646,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
646
646
  }] });
647
647
 
648
648
  export { DragbleEditorComponent, DragbleEditorModule };
649
- //# sourceMappingURL=index.js.map
649
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["out-tsc/dragble-editor.component.js","out-tsc/dragble-editor.module.js"],"sourcesContent":["/**\n * Dragble Editor Angular Component\n *\n * An Angular wrapper for the Dragble Editor SDK.\n */\nimport { Component, Input, Output, EventEmitter, } from \"@angular/core\";\nimport * as i0 from \"@angular/core\";\nconst SDK_CDN_URL = \"https://sdk.dragble.com/latest/dragble-sdk.min.js\";\n// Map of URL -> Promise for caching SDK loads per URL\nconst sdkLoadPromises = new Map();\n/**\n * Get the SDK URL to use.\n * @param customUrl - Optional custom SDK URL\n * @returns The SDK URL to load\n */\nfunction getSDKUrl(customUrl, sdkVersion) {\n if (customUrl && sdkVersion !== undefined) {\n console.warn(\"[DragbleEditor] sdkVersion is ignored when sdkUrl is provided.\");\n }\n return customUrl ?? `https://sdk.dragble.com/${sdkVersion ?? \"latest\"}/dragble-sdk.min.js`;\n}\n/**\n * Create an SDK module from the global dragble object.\n */\nfunction createSDKModuleFromGlobal() {\n return {\n dragble: window.dragble,\n createEditor: (config) => {\n const instance = new window.dragble.constructor();\n instance.init(config);\n return instance;\n },\n DragbleSDK: window.dragble.constructor,\n };\n}\n/**\n * Load the SDK from a URL.\n * Supports custom SDK URLs for enterprise self-hosted or specific versions.\n * @param customUrl - Optional custom SDK URL\n */\nfunction loadSDK(customUrl) {\n const sdkUrl = getSDKUrl(customUrl);\n // Check cache for this specific URL\n const cachedPromise = sdkLoadPromises.get(sdkUrl);\n if (cachedPromise)\n return cachedPromise;\n // Check if already loaded globally (only for default URL to avoid conflicts)\n if (sdkUrl === SDK_CDN_URL && typeof window !== \"undefined\" && window.dragble) {\n return Promise.resolve(createSDKModuleFromGlobal());\n }\n return loadSDKScript(sdkUrl);\n}\n/**\n * Load the SDK script from a specific URL.\n * Each unique URL is cached separately to support multiple SDK sources.\n * @param sdkUrl - The SDK URL to load\n */\nfunction loadSDKScript(sdkUrl) {\n // Check cache for this specific URL\n const cachedPromise = sdkLoadPromises.get(sdkUrl);\n if (cachedPromise)\n return cachedPromise;\n const loadPromise = new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = sdkUrl;\n script.async = true;\n script.onload = () => {\n if (window.dragble) {\n // Resolve with SDK module interface\n resolve(createSDKModuleFromGlobal());\n }\n else {\n sdkLoadPromises.delete(sdkUrl);\n reject(new Error(\"Failed to load Dragble SDK - createEditor not found\"));\n }\n };\n script.onerror = () => {\n sdkLoadPromises.delete(sdkUrl);\n reject(new Error(`Failed to load Dragble SDK from ${sdkUrl}`));\n };\n document.head.appendChild(script);\n });\n // Cache the promise for this URL\n sdkLoadPromises.set(sdkUrl, loadPromise);\n return loadPromise;\n}\n// ============================================================================\n// Component\n// ============================================================================\n/**\n * DragbleEditorComponent\n *\n * @example\n * ```html\n * <dragble-editor\n * editorKey=\"your-editor-key\"\n * editorMode=\"email\"\n * (ready)=\"onReady($event)\"\n * (change)=\"onChange($event)\"\n * ></dragble-editor>\n * ```\n *\n * @example\n * ```typescript\n * import { Component, ViewChild } from '@angular/core';\n * import { DragbleEditorComponent } from '@dragble/angular-editor';\n *\n * @Component({\n * selector: 'app-editor',\n * template: `\n * <dragble-editor\n * #editor\n * editorKey=\"your-editor-key\"\n * (ready)=\"onReady($event)\"\n * ></dragble-editor>\n * <button (click)=\"handleSave()\">Save</button>\n * `\n * })\n * export class EditorComponent {\n * @ViewChild('editor') editor!: DragbleEditorComponent;\n *\n * onReady(sdk: DragbleSDK) {\n * console.log('Editor ready!', sdk);\n * }\n *\n * handleSave() {\n * this.editor.saveDesign((design) => {\n * console.log('Design:', design);\n * });\n * }\n * }\n * ```\n */\nexport class DragbleEditorComponent {\n constructor() {\n /** Editor mode (email, web, popup) */\n this.editorMode = \"email\";\n /** Height of the editor */\n this.height = \"600px\";\n /** Minimum height for the editor */\n this.minHeight = \"600px\";\n // ========================================================================\n // Outputs\n // ========================================================================\n /** Emitted when the editor is ready */\n this.ready = new EventEmitter();\n /** Emitted when a design is loaded */\n this.load = new EventEmitter();\n /** Emitted when the design changes */\n this.change = new EventEmitter();\n /** Emitted when an error occurs */\n this.error = new EventEmitter();\n /** Emitted when a comment event occurs (create, edit, delete, resolve, reopen) */\n this.commentAction = new EventEmitter();\n // ========================================================================\n // Internal State\n // ========================================================================\n this.containerId = `dragble-editor-${Math.random().toString(36).substr(2, 9)}`;\n this.sdk = null;\n this._isReady = false;\n }\n get isReady() {\n return this._isReady;\n }\n get computedHeight() {\n return typeof this.height === \"number\" ? `${this.height}px` : this.height;\n }\n get computedMinHeight() {\n return typeof this.minHeight === \"number\"\n ? `${this.minHeight}px`\n : this.minHeight;\n }\n // ========================================================================\n // Lifecycle\n // ========================================================================\n ngOnInit() {\n // Initialization happens in ngAfterViewInit\n }\n ngAfterViewInit() {\n this.initializeEditor();\n }\n ngOnChanges(changes) {\n if (!this.sdk || !this._isReady)\n return;\n // Watch for design changes\n if (changes[\"design\"] && !changes[\"design\"].firstChange) {\n const newDesign = changes[\"design\"].currentValue;\n if (newDesign) {\n this.sdk.loadDesign(newDesign);\n }\n }\n // Watch for merge tags changes\n if (changes[\"mergeTags\"] && !changes[\"mergeTags\"].firstChange) {\n const newTags = changes[\"mergeTags\"].currentValue;\n if (newTags) {\n this.sdk.setMergeTags(newTags);\n }\n }\n // Watch for modules changes\n if (changes[\"modules\"] && !changes[\"modules\"].firstChange) {\n const newModules = changes[\"modules\"].currentValue;\n if (newModules) {\n this.sdk.setModules(newModules);\n }\n }\n // Watch for display conditions changes\n if (changes[\"displayConditions\"] &&\n !changes[\"displayConditions\"].firstChange) {\n const newConditions = changes[\"displayConditions\"].currentValue;\n if (newConditions) {\n this.sdk.setDisplayConditions(newConditions);\n }\n }\n }\n ngOnDestroy() {\n if (this.sdk) {\n this.sdk.destroy();\n this.sdk = null;\n }\n }\n // ========================================================================\n // Initialization\n // ========================================================================\n async initializeEditor() {\n try {\n const resolvedSdkUrl = getSDKUrl(this.sdkUrl, this.sdkVersion);\n const { createEditor } = await loadSDK(resolvedSdkUrl);\n const config = this.buildConfig();\n const sdk = createEditor(config);\n this.sdk = sdk;\n // Set up event listeners\n sdk.addEventListener(\"editor:ready\", () => {\n this._isReady = true;\n this.ready.emit(sdk);\n });\n sdk.addEventListener(\"design:loaded\", (data) => {\n this.load.emit(data);\n });\n sdk.addEventListener(\"design:updated\", (data) => {\n this.change.emit(data);\n });\n }\n catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n console.error(\"Initialization error:\", error.message);\n this.error.emit(error);\n }\n }\n buildConfig() {\n const editorConfig = this.contentType === \"module\"\n ? {\n ...this.editor,\n contentType: this.contentType,\n minRows: 1,\n maxRows: 1,\n }\n : this.editor;\n // Build collaboration feature config\n let featuresConfig = this.features;\n if (this.collaboration !== undefined) {\n const collaborationConfig = typeof this.collaboration === \"object\"\n ? {\n ...this.collaboration,\n onComment: (action) => {\n this.commentAction.emit(action);\n },\n }\n : this.collaboration;\n featuresConfig = {\n ...featuresConfig,\n collaboration: collaborationConfig,\n };\n }\n // Build callbacks (merge Angular outputs with user-provided callbacks)\n const callbacks = {\n ...this.callbacks,\n };\n // Build nested options object\n const editorOptions = {\n ...(this.user !== undefined && { user: this.user }),\n ...(this.locale !== undefined && { locale: this.locale }),\n ...(this.translations !== undefined && {\n translations: this.translations,\n }),\n ...(this.textDirection !== undefined && {\n textDirection: this.textDirection,\n }),\n ...(this.language !== undefined && { language: this.language }),\n height: this.height,\n minHeight: this.minHeight,\n ...(this.mergeTags !== undefined && { mergeTags: this.mergeTags }),\n ...(this.specialLinks !== undefined && {\n specialLinks: this.specialLinks,\n }),\n ...(this.modules !== undefined && { modules: this.modules }),\n ...(this.displayConditions !== undefined && {\n displayConditions: this.displayConditions,\n }),\n ...(this.appearance !== undefined && { appearance: this.appearance }),\n ...(this.tools !== undefined && { tools: this.tools }),\n ...(this.customTools !== undefined && { customTools: this.customTools }),\n ...(this.fonts !== undefined && { fonts: this.fonts }),\n ...(this.bodyValues !== undefined && { bodyValues: this.bodyValues }),\n ...(this.header !== undefined && { header: this.header }),\n ...(this.footer !== undefined && { footer: this.footer }),\n ...(editorConfig !== undefined && { editor: editorConfig }),\n ...(this.customCSS !== undefined && { customCSS: this.customCSS }),\n ...(this.customJS !== undefined && { customJS: this.customJS }),\n ...(featuresConfig !== undefined && { features: featuresConfig }),\n ...(this.ai !== undefined && { ai: this.ai }),\n ...this.options,\n };\n return {\n containerId: this.containerId,\n editorKey: this.editorKey,\n ...(this.editorMode !== undefined && { editorMode: this.editorMode }),\n ...(this.designMode !== undefined && { designMode: this.designMode }),\n ...(this.design !== undefined && { design: this.design }),\n ...(this.popup !== undefined && { popup: this.popup }),\n ...(this.editorVersion !== undefined && {\n editorVersion: this.editorVersion,\n }),\n ...(this.editorUrl !== undefined && { editorUrl: this.editorUrl }),\n callbacks,\n options: editorOptions,\n };\n }\n // ========================================================================\n // Public Methods - Full SDK pass-through\n // ========================================================================\n /** Get the underlying SDK instance */\n getEditor() {\n return this.sdk;\n }\n // Design methods\n loadDesign(design, options) {\n this.sdk?.loadDesign(design, options);\n }\n loadBlank() {\n this.sdk?.loadBlank();\n }\n saveDesign(callback) {\n this.sdk?.saveDesign(callback);\n }\n getDesign() {\n return this.sdk?.getDesign();\n }\n // Export methods (async-only)\n exportHtml(options) {\n return this.sdk?.exportHtml(options);\n }\n exportPlainText() {\n return this.sdk?.exportPlainText();\n }\n exportJson() {\n return this.sdk?.exportJson();\n }\n exportImage(options) {\n return this.sdk?.exportImage(options);\n }\n exportPdf(options) {\n return this.sdk?.exportPdf(options);\n }\n exportZip(options) {\n return this.sdk?.exportZip(options);\n }\n getPopupValues() {\n return this.sdk?.getPopupValues();\n }\n // Merge tags\n setMergeTags(config) {\n this.sdk?.setMergeTags(config);\n }\n getMergeTags() {\n return this.sdk?.getMergeTags();\n }\n // Special links\n setSpecialLinks(config) {\n this.sdk?.setSpecialLinks(config);\n }\n getSpecialLinks() {\n return this.sdk?.getSpecialLinks();\n }\n // Modules\n setModulesLoading(loading) {\n this.sdk?.setModulesLoading(loading);\n }\n setModules(modules) {\n this.sdk?.setModules(modules);\n }\n getModules() {\n return this.sdk?.getModules();\n }\n // Fonts\n setFonts(config) {\n this.sdk?.setFonts(config);\n }\n getFonts() {\n return this.sdk?.getFonts();\n }\n // Body values\n setBodyValues(values) {\n this.sdk?.setBodyValues(values);\n }\n getBodyValues() {\n return this.sdk?.getBodyValues();\n }\n // Configuration\n setOptions(options) {\n this.sdk?.setOptions(options);\n }\n setToolsConfig(config) {\n this.sdk?.setToolsConfig(config);\n }\n setEditorMode(mode) {\n this.sdk?.setEditorMode(mode);\n }\n setEditorConfig(config) {\n this.sdk?.setEditorConfig(config);\n }\n getEditorConfig() {\n return this.sdk?.getEditorConfig();\n }\n setLocale(locale) {\n this.sdk?.setLocale(locale);\n }\n setTextDirection(direction) {\n this.sdk?.setTextDirection(direction);\n }\n setAppearance(config) {\n this.sdk?.setAppearance(config);\n }\n setCustomCSS(css) {\n this.sdk?.setCustomCSS(css);\n }\n setCustomJS(js) {\n this.sdk?.setCustomJS(js);\n }\n // Multi-language\n setLanguage(language) {\n this.sdk?.setLanguage(language);\n }\n getLanguage() {\n return this.sdk?.getLanguage();\n }\n // Undo/Redo\n undo() {\n this.sdk?.undo();\n }\n redo() {\n this.sdk?.redo();\n }\n save() {\n this.sdk?.save();\n }\n // Preview\n showPreview(device) {\n this.sdk?.showPreview(device);\n }\n hidePreview() {\n this.sdk?.hidePreview();\n }\n // Tools\n registerTool(config) {\n return this.sdk?.registerTool(config);\n }\n unregisterTool(toolId) {\n return this.sdk?.unregisterTool(toolId);\n }\n getTools() {\n return this.sdk?.getTools();\n }\n // Display conditions\n setDisplayConditions(config) {\n this.sdk?.setDisplayConditions(config);\n }\n audit(optionsOrCallback, callback) {\n if (typeof optionsOrCallback === \"function\") {\n return this.sdk?.audit(optionsOrCallback);\n }\n if (callback) {\n return this.sdk?.audit(optionsOrCallback, callback);\n }\n return this.sdk?.audit(optionsOrCallback);\n }\n // Collaboration\n showComment(commentId) {\n this.sdk?.showComment(commentId);\n }\n openCommentPanel(rowId) {\n this.sdk?.openCommentPanel(rowId);\n }\n // Events\n addEventListener(event, callback) {\n return this.sdk?.addEventListener(event, callback);\n }\n removeEventListener(event, callback) {\n this.sdk?.removeEventListener(event, callback);\n }\n // Advanced\n registerColumns(cells) {\n this.sdk?.registerColumns(cells);\n }\n setBrandingColors(config) {\n this.sdk?.setBrandingColors(config);\n }\n // Custom widgets\n createWidget(config) {\n return this.sdk?.createWidget(config);\n }\n removeWidget(widgetName) {\n return this.sdk?.removeWidget(widgetName);\n }\n // Undo/Redo state\n canUndo() {\n return this.sdk?.canUndo();\n }\n canRedo() {\n return this.sdk?.canRedo();\n }\n // Tabs\n updateTabs(tabs) {\n this.sdk?.updateTabs(tabs);\n }\n}\nDragbleEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nDragbleEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.3.12\", type: DragbleEditorComponent, isStandalone: true, selector: \"dragble-editor\", inputs: { editorKey: \"editorKey\", design: \"design\", editorMode: \"editorMode\", popup: \"popup\", contentType: \"contentType\", ai: \"ai\", locale: \"locale\", translations: \"translations\", textDirection: \"textDirection\", language: \"language\", appearance: \"appearance\", tools: \"tools\", customTools: \"customTools\", features: \"features\", mergeTags: \"mergeTags\", specialLinks: \"specialLinks\", modules: \"modules\", displayConditions: \"displayConditions\", editor: \"editor\", fonts: \"fonts\", bodyValues: \"bodyValues\", header: \"header\", footer: \"footer\", customCSS: \"customCSS\", customJS: \"customJS\", height: \"height\", minHeight: \"minHeight\", options: \"options\", callbacks: \"callbacks\", sdkUrl: \"sdkUrl\", sdkVersion: \"sdkVersion\", editorVersion: \"editorVersion\", editorUrl: \"editorUrl\", collaboration: \"collaboration\", user: \"user\", designMode: \"designMode\" }, outputs: { ready: \"ready\", load: \"load\", change: \"change\", error: \"error\", commentAction: \"commentAction\" }, usesOnChanges: true, ngImport: i0, template: `<div\n #container\n [id]=\"containerId\"\n [style.width]=\"'100%'\"\n [style.height]=\"computedHeight\"\n [style.minHeight]=\"computedMinHeight\"\n ></div>`, isInline: true, styles: [\"\\n :host {\\n display: block;\\n width: 100%;\\n height: 100%;\\n }\\n \"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: \"dragble-editor\", template: `<div\n #container\n [id]=\"containerId\"\n [style.width]=\"'100%'\"\n [style.height]=\"computedHeight\"\n [style.minHeight]=\"computedMinHeight\"\n ></div>`, standalone: true, styles: [\"\\n :host {\\n display: block;\\n width: 100%;\\n height: 100%;\\n }\\n \"] }]\n }], propDecorators: { editorKey: [{\n type: Input\n }], design: [{\n type: Input\n }], editorMode: [{\n type: Input\n }], popup: [{\n type: Input\n }], contentType: [{\n type: Input\n }], ai: [{\n type: Input\n }], locale: [{\n type: Input\n }], translations: [{\n type: Input\n }], textDirection: [{\n type: Input\n }], language: [{\n type: Input\n }], appearance: [{\n type: Input\n }], tools: [{\n type: Input\n }], customTools: [{\n type: Input\n }], features: [{\n type: Input\n }], mergeTags: [{\n type: Input\n }], specialLinks: [{\n type: Input\n }], modules: [{\n type: Input\n }], displayConditions: [{\n type: Input\n }], editor: [{\n type: Input\n }], fonts: [{\n type: Input\n }], bodyValues: [{\n type: Input\n }], header: [{\n type: Input\n }], footer: [{\n type: Input\n }], customCSS: [{\n type: Input\n }], customJS: [{\n type: Input\n }], height: [{\n type: Input\n }], minHeight: [{\n type: Input\n }], options: [{\n type: Input\n }], callbacks: [{\n type: Input\n }], sdkUrl: [{\n type: Input\n }], sdkVersion: [{\n type: Input\n }], editorVersion: [{\n type: Input\n }], editorUrl: [{\n type: Input\n }], collaboration: [{\n type: Input\n }], user: [{\n type: Input\n }], designMode: [{\n type: Input\n }], ready: [{\n type: Output\n }], load: [{\n type: Output\n }], change: [{\n type: Output\n }], error: [{\n type: Output\n }], commentAction: [{\n type: Output\n }] } });\n//# sourceMappingURL=dragble-editor.component.js.map","/**\n * Dragble Editor Angular Module\n *\n * This module is provided for backwards compatibility with non-standalone Angular apps.\n * For Angular 14+ apps using standalone components, you can import DragbleEditorComponent directly.\n */\nimport { NgModule } from \"@angular/core\";\nimport { DragbleEditorComponent } from \"./dragble-editor.component\";\nimport * as i0 from \"@angular/core\";\nexport class DragbleEditorModule {\n}\nDragbleEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDragbleEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorModule, imports: [DragbleEditorComponent], exports: [DragbleEditorComponent] });\nDragbleEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [DragbleEditorComponent],\n exports: [DragbleEditorComponent],\n }]\n }] });\n//# sourceMappingURL=dragble-editor.module.js.map"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "dragble-angular-editor",
3
- "version": "1.0.1",
4
- "description": "Angular email editor component AI powered drag-and-drop email builder for creating responsive email templates and newsletters. Build HTML emails visually with Dragble.",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "module": "dist/index.js",
3
+ "version": "1.0.3",
4
+ "description": "AI-powered Angular email editor component. Drag-and-drop email builder for creating responsive email templates and newsletters. Build HTML emails visually with Dragble.",
5
+ "main": "dist/index.cjs",
6
+ "module": "dist/index.mjs",
8
7
  "types": "dist/index.d.ts",
9
8
  "exports": {
10
9
  ".": {
11
- "import": "./dist/index.js",
12
- "types": "./dist/index.d.ts"
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.cjs"
13
13
  }
14
14
  },
15
15
  "files": [
@@ -29,6 +29,10 @@
29
29
  "prepare": "husky"
30
30
  },
31
31
  "keywords": [
32
+ "ai",
33
+ "ai-powered",
34
+ "ai-email-editor",
35
+ "ai-email-builder",
32
36
  "dragble",
33
37
  "email",
34
38
  "email-editor",
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["out-tsc/dragble-editor.component.js","out-tsc/dragble-editor.module.js"],"sourcesContent":["/**\n * Dragble Editor Angular Component\n *\n * An Angular wrapper for the Dragble Editor SDK.\n */\nimport { Component, Input, Output, EventEmitter, } from \"@angular/core\";\nimport * as i0 from \"@angular/core\";\nconst SDK_CDN_URL = \"https://sdk.dragble.com/latest/dragble-sdk.min.js\";\n// Map of URL -> Promise for caching SDK loads per URL\nconst sdkLoadPromises = new Map();\n/**\n * Get the SDK URL to use.\n * @param customUrl - Optional custom SDK URL\n * @returns The SDK URL to load\n */\nfunction getSDKUrl(customUrl, sdkVersion) {\n if (customUrl && sdkVersion !== undefined) {\n console.warn(\"[DragbleEditor] sdkVersion is ignored when sdkUrl is provided.\");\n }\n return customUrl ?? `https://sdk.dragble.com/${sdkVersion ?? \"latest\"}/dragble-sdk.min.js`;\n}\n/**\n * Create an SDK module from the global dragble object.\n */\nfunction createSDKModuleFromGlobal() {\n return {\n dragble: window.dragble,\n createEditor: (config) => {\n const instance = new window.dragble.constructor();\n instance.init(config);\n return instance;\n },\n DragbleSDK: window.dragble.constructor,\n };\n}\n/**\n * Load the SDK from a URL.\n * Supports custom SDK URLs for enterprise self-hosted or specific versions.\n * @param customUrl - Optional custom SDK URL\n */\nfunction loadSDK(customUrl) {\n const sdkUrl = getSDKUrl(customUrl);\n // Check cache for this specific URL\n const cachedPromise = sdkLoadPromises.get(sdkUrl);\n if (cachedPromise)\n return cachedPromise;\n // Check if already loaded globally (only for default URL to avoid conflicts)\n if (sdkUrl === SDK_CDN_URL && typeof window !== \"undefined\" && window.dragble) {\n return Promise.resolve(createSDKModuleFromGlobal());\n }\n return loadSDKScript(sdkUrl);\n}\n/**\n * Load the SDK script from a specific URL.\n * Each unique URL is cached separately to support multiple SDK sources.\n * @param sdkUrl - The SDK URL to load\n */\nfunction loadSDKScript(sdkUrl) {\n // Check cache for this specific URL\n const cachedPromise = sdkLoadPromises.get(sdkUrl);\n if (cachedPromise)\n return cachedPromise;\n const loadPromise = new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = sdkUrl;\n script.async = true;\n script.onload = () => {\n if (window.dragble) {\n // Resolve with SDK module interface\n resolve(createSDKModuleFromGlobal());\n }\n else {\n sdkLoadPromises.delete(sdkUrl);\n reject(new Error(\"Failed to load Dragble SDK - createEditor not found\"));\n }\n };\n script.onerror = () => {\n sdkLoadPromises.delete(sdkUrl);\n reject(new Error(`Failed to load Dragble SDK from ${sdkUrl}`));\n };\n document.head.appendChild(script);\n });\n // Cache the promise for this URL\n sdkLoadPromises.set(sdkUrl, loadPromise);\n return loadPromise;\n}\n// ============================================================================\n// Component\n// ============================================================================\n/**\n * DragbleEditorComponent\n *\n * @example\n * ```html\n * <dragble-editor\n * editorKey=\"your-editor-key\"\n * editorMode=\"email\"\n * (ready)=\"onReady($event)\"\n * (change)=\"onChange($event)\"\n * ></dragble-editor>\n * ```\n *\n * @example\n * ```typescript\n * import { Component, ViewChild } from '@angular/core';\n * import { DragbleEditorComponent } from '@dragble/angular-editor';\n *\n * @Component({\n * selector: 'app-editor',\n * template: `\n * <dragble-editor\n * #editor\n * editorKey=\"your-editor-key\"\n * (ready)=\"onReady($event)\"\n * ></dragble-editor>\n * <button (click)=\"handleSave()\">Save</button>\n * `\n * })\n * export class EditorComponent {\n * @ViewChild('editor') editor!: DragbleEditorComponent;\n *\n * onReady(sdk: DragbleSDK) {\n * console.log('Editor ready!', sdk);\n * }\n *\n * handleSave() {\n * this.editor.saveDesign((design) => {\n * console.log('Design:', design);\n * });\n * }\n * }\n * ```\n */\nexport class DragbleEditorComponent {\n constructor() {\n /** Editor mode (email, web, popup) */\n this.editorMode = \"email\";\n /** Height of the editor */\n this.height = \"600px\";\n /** Minimum height for the editor */\n this.minHeight = \"600px\";\n // ========================================================================\n // Outputs\n // ========================================================================\n /** Emitted when the editor is ready */\n this.ready = new EventEmitter();\n /** Emitted when a design is loaded */\n this.load = new EventEmitter();\n /** Emitted when the design changes */\n this.change = new EventEmitter();\n /** Emitted when an error occurs */\n this.error = new EventEmitter();\n /** Emitted when a comment event occurs (create, edit, delete, resolve, reopen) */\n this.commentAction = new EventEmitter();\n // ========================================================================\n // Internal State\n // ========================================================================\n this.containerId = `dragble-editor-${Math.random().toString(36).substr(2, 9)}`;\n this.sdk = null;\n this._isReady = false;\n }\n get isReady() {\n return this._isReady;\n }\n get computedHeight() {\n return typeof this.height === \"number\" ? `${this.height}px` : this.height;\n }\n get computedMinHeight() {\n return typeof this.minHeight === \"number\"\n ? `${this.minHeight}px`\n : this.minHeight;\n }\n // ========================================================================\n // Lifecycle\n // ========================================================================\n ngOnInit() {\n // Initialization happens in ngAfterViewInit\n }\n ngAfterViewInit() {\n this.initializeEditor();\n }\n ngOnChanges(changes) {\n if (!this.sdk || !this._isReady)\n return;\n // Watch for design changes\n if (changes[\"design\"] && !changes[\"design\"].firstChange) {\n const newDesign = changes[\"design\"].currentValue;\n if (newDesign) {\n this.sdk.loadDesign(newDesign);\n }\n }\n // Watch for merge tags changes\n if (changes[\"mergeTags\"] && !changes[\"mergeTags\"].firstChange) {\n const newTags = changes[\"mergeTags\"].currentValue;\n if (newTags) {\n this.sdk.setMergeTags(newTags);\n }\n }\n // Watch for modules changes\n if (changes[\"modules\"] && !changes[\"modules\"].firstChange) {\n const newModules = changes[\"modules\"].currentValue;\n if (newModules) {\n this.sdk.setModules(newModules);\n }\n }\n // Watch for display conditions changes\n if (changes[\"displayConditions\"] &&\n !changes[\"displayConditions\"].firstChange) {\n const newConditions = changes[\"displayConditions\"].currentValue;\n if (newConditions) {\n this.sdk.setDisplayConditions(newConditions);\n }\n }\n }\n ngOnDestroy() {\n if (this.sdk) {\n this.sdk.destroy();\n this.sdk = null;\n }\n }\n // ========================================================================\n // Initialization\n // ========================================================================\n async initializeEditor() {\n try {\n const resolvedSdkUrl = getSDKUrl(this.sdkUrl, this.sdkVersion);\n const { createEditor } = await loadSDK(resolvedSdkUrl);\n const config = this.buildConfig();\n const sdk = createEditor(config);\n this.sdk = sdk;\n // Set up event listeners\n sdk.addEventListener(\"editor:ready\", () => {\n this._isReady = true;\n this.ready.emit(sdk);\n });\n sdk.addEventListener(\"design:loaded\", (data) => {\n this.load.emit(data);\n });\n sdk.addEventListener(\"design:updated\", (data) => {\n this.change.emit(data);\n });\n }\n catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n console.error(\"Initialization error:\", error.message);\n this.error.emit(error);\n }\n }\n buildConfig() {\n const editorConfig = this.contentType === \"module\"\n ? {\n ...this.editor,\n contentType: this.contentType,\n minRows: 1,\n maxRows: 1,\n }\n : this.editor;\n // Build collaboration feature config\n let featuresConfig = this.features;\n if (this.collaboration !== undefined) {\n const collaborationConfig = typeof this.collaboration === \"object\"\n ? {\n ...this.collaboration,\n onComment: (action) => {\n this.commentAction.emit(action);\n },\n }\n : this.collaboration;\n featuresConfig = {\n ...featuresConfig,\n collaboration: collaborationConfig,\n };\n }\n // Build callbacks (merge Angular outputs with user-provided callbacks)\n const callbacks = {\n ...this.callbacks,\n };\n // Build nested options object\n const editorOptions = {\n ...(this.user !== undefined && { user: this.user }),\n ...(this.locale !== undefined && { locale: this.locale }),\n ...(this.translations !== undefined && {\n translations: this.translations,\n }),\n ...(this.textDirection !== undefined && {\n textDirection: this.textDirection,\n }),\n ...(this.language !== undefined && { language: this.language }),\n height: this.height,\n minHeight: this.minHeight,\n ...(this.mergeTags !== undefined && { mergeTags: this.mergeTags }),\n ...(this.specialLinks !== undefined && {\n specialLinks: this.specialLinks,\n }),\n ...(this.modules !== undefined && { modules: this.modules }),\n ...(this.displayConditions !== undefined && {\n displayConditions: this.displayConditions,\n }),\n ...(this.appearance !== undefined && { appearance: this.appearance }),\n ...(this.tools !== undefined && { tools: this.tools }),\n ...(this.customTools !== undefined && { customTools: this.customTools }),\n ...(this.fonts !== undefined && { fonts: this.fonts }),\n ...(this.bodyValues !== undefined && { bodyValues: this.bodyValues }),\n ...(this.header !== undefined && { header: this.header }),\n ...(this.footer !== undefined && { footer: this.footer }),\n ...(editorConfig !== undefined && { editor: editorConfig }),\n ...(this.customCSS !== undefined && { customCSS: this.customCSS }),\n ...(this.customJS !== undefined && { customJS: this.customJS }),\n ...(featuresConfig !== undefined && { features: featuresConfig }),\n ...(this.ai !== undefined && { ai: this.ai }),\n ...this.options,\n };\n return {\n containerId: this.containerId,\n editorKey: this.editorKey,\n ...(this.editorMode !== undefined && { editorMode: this.editorMode }),\n ...(this.designMode !== undefined && { designMode: this.designMode }),\n ...(this.design !== undefined && { design: this.design }),\n ...(this.popup !== undefined && { popup: this.popup }),\n ...(this.editorVersion !== undefined && {\n editorVersion: this.editorVersion,\n }),\n ...(this.editorUrl !== undefined && { editorUrl: this.editorUrl }),\n callbacks,\n options: editorOptions,\n };\n }\n // ========================================================================\n // Public Methods - Full SDK pass-through\n // ========================================================================\n /** Get the underlying SDK instance */\n getEditor() {\n return this.sdk;\n }\n // Design methods\n loadDesign(design, options) {\n this.sdk?.loadDesign(design, options);\n }\n loadBlank() {\n this.sdk?.loadBlank();\n }\n saveDesign(callback) {\n this.sdk?.saveDesign(callback);\n }\n getDesign() {\n return this.sdk?.getDesign();\n }\n // Export methods (async-only)\n exportHtml(options) {\n return this.sdk?.exportHtml(options);\n }\n exportPlainText() {\n return this.sdk?.exportPlainText();\n }\n exportJson() {\n return this.sdk?.exportJson();\n }\n exportImage(options) {\n return this.sdk?.exportImage(options);\n }\n exportPdf(options) {\n return this.sdk?.exportPdf(options);\n }\n exportZip(options) {\n return this.sdk?.exportZip(options);\n }\n getPopupValues() {\n return this.sdk?.getPopupValues();\n }\n // Merge tags\n setMergeTags(config) {\n this.sdk?.setMergeTags(config);\n }\n getMergeTags() {\n return this.sdk?.getMergeTags();\n }\n // Special links\n setSpecialLinks(config) {\n this.sdk?.setSpecialLinks(config);\n }\n getSpecialLinks() {\n return this.sdk?.getSpecialLinks();\n }\n // Modules\n setModulesLoading(loading) {\n this.sdk?.setModulesLoading(loading);\n }\n setModules(modules) {\n this.sdk?.setModules(modules);\n }\n getModules() {\n return this.sdk?.getModules();\n }\n // Fonts\n setFonts(config) {\n this.sdk?.setFonts(config);\n }\n getFonts() {\n return this.sdk?.getFonts();\n }\n // Body values\n setBodyValues(values) {\n this.sdk?.setBodyValues(values);\n }\n getBodyValues() {\n return this.sdk?.getBodyValues();\n }\n // Configuration\n setOptions(options) {\n this.sdk?.setOptions(options);\n }\n setToolsConfig(config) {\n this.sdk?.setToolsConfig(config);\n }\n setEditorMode(mode) {\n this.sdk?.setEditorMode(mode);\n }\n setEditorConfig(config) {\n this.sdk?.setEditorConfig(config);\n }\n getEditorConfig() {\n return this.sdk?.getEditorConfig();\n }\n setLocale(locale) {\n this.sdk?.setLocale(locale);\n }\n setTextDirection(direction) {\n this.sdk?.setTextDirection(direction);\n }\n setAppearance(config) {\n this.sdk?.setAppearance(config);\n }\n setCustomCSS(css) {\n this.sdk?.setCustomCSS(css);\n }\n setCustomJS(js) {\n this.sdk?.setCustomJS(js);\n }\n // Multi-language\n setLanguage(language) {\n this.sdk?.setLanguage(language);\n }\n getLanguage() {\n return this.sdk?.getLanguage();\n }\n // Undo/Redo\n undo() {\n this.sdk?.undo();\n }\n redo() {\n this.sdk?.redo();\n }\n save() {\n this.sdk?.save();\n }\n // Preview\n showPreview(device) {\n this.sdk?.showPreview(device);\n }\n hidePreview() {\n this.sdk?.hidePreview();\n }\n // Tools\n registerTool(config) {\n return this.sdk?.registerTool(config);\n }\n unregisterTool(toolId) {\n return this.sdk?.unregisterTool(toolId);\n }\n getTools() {\n return this.sdk?.getTools();\n }\n // Display conditions\n setDisplayConditions(config) {\n this.sdk?.setDisplayConditions(config);\n }\n audit(optionsOrCallback, callback) {\n if (typeof optionsOrCallback === \"function\") {\n return this.sdk?.audit(optionsOrCallback);\n }\n if (callback) {\n return this.sdk?.audit(optionsOrCallback, callback);\n }\n return this.sdk?.audit(optionsOrCallback);\n }\n // Collaboration\n showComment(commentId) {\n this.sdk?.showComment(commentId);\n }\n openCommentPanel(rowId) {\n this.sdk?.openCommentPanel(rowId);\n }\n // Events\n addEventListener(event, callback) {\n return this.sdk?.addEventListener(event, callback);\n }\n removeEventListener(event, callback) {\n this.sdk?.removeEventListener(event, callback);\n }\n // Advanced\n registerColumns(cells) {\n this.sdk?.registerColumns(cells);\n }\n setBrandingColors(config) {\n this.sdk?.setBrandingColors(config);\n }\n // Custom widgets\n createWidget(config) {\n return this.sdk?.createWidget(config);\n }\n removeWidget(widgetName) {\n return this.sdk?.removeWidget(widgetName);\n }\n // Undo/Redo state\n canUndo() {\n return this.sdk?.canUndo();\n }\n canRedo() {\n return this.sdk?.canRedo();\n }\n // Tabs\n updateTabs(tabs) {\n this.sdk?.updateTabs(tabs);\n }\n}\nDragbleEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nDragbleEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.3.12\", type: DragbleEditorComponent, isStandalone: true, selector: \"dragble-editor\", inputs: { editorKey: \"editorKey\", design: \"design\", editorMode: \"editorMode\", popup: \"popup\", contentType: \"contentType\", ai: \"ai\", locale: \"locale\", translations: \"translations\", textDirection: \"textDirection\", language: \"language\", appearance: \"appearance\", tools: \"tools\", customTools: \"customTools\", features: \"features\", mergeTags: \"mergeTags\", specialLinks: \"specialLinks\", modules: \"modules\", displayConditions: \"displayConditions\", editor: \"editor\", fonts: \"fonts\", bodyValues: \"bodyValues\", header: \"header\", footer: \"footer\", customCSS: \"customCSS\", customJS: \"customJS\", height: \"height\", minHeight: \"minHeight\", options: \"options\", callbacks: \"callbacks\", sdkUrl: \"sdkUrl\", sdkVersion: \"sdkVersion\", editorVersion: \"editorVersion\", editorUrl: \"editorUrl\", collaboration: \"collaboration\", user: \"user\", designMode: \"designMode\" }, outputs: { ready: \"ready\", load: \"load\", change: \"change\", error: \"error\", commentAction: \"commentAction\" }, usesOnChanges: true, ngImport: i0, template: `<div\n #container\n [id]=\"containerId\"\n [style.width]=\"'100%'\"\n [style.height]=\"computedHeight\"\n [style.minHeight]=\"computedMinHeight\"\n ></div>`, isInline: true, styles: [\"\\n :host {\\n display: block;\\n width: 100%;\\n height: 100%;\\n }\\n \"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: \"dragble-editor\", template: `<div\n #container\n [id]=\"containerId\"\n [style.width]=\"'100%'\"\n [style.height]=\"computedHeight\"\n [style.minHeight]=\"computedMinHeight\"\n ></div>`, standalone: true, styles: [\"\\n :host {\\n display: block;\\n width: 100%;\\n height: 100%;\\n }\\n \"] }]\n }], propDecorators: { editorKey: [{\n type: Input\n }], design: [{\n type: Input\n }], editorMode: [{\n type: Input\n }], popup: [{\n type: Input\n }], contentType: [{\n type: Input\n }], ai: [{\n type: Input\n }], locale: [{\n type: Input\n }], translations: [{\n type: Input\n }], textDirection: [{\n type: Input\n }], language: [{\n type: Input\n }], appearance: [{\n type: Input\n }], tools: [{\n type: Input\n }], customTools: [{\n type: Input\n }], features: [{\n type: Input\n }], mergeTags: [{\n type: Input\n }], specialLinks: [{\n type: Input\n }], modules: [{\n type: Input\n }], displayConditions: [{\n type: Input\n }], editor: [{\n type: Input\n }], fonts: [{\n type: Input\n }], bodyValues: [{\n type: Input\n }], header: [{\n type: Input\n }], footer: [{\n type: Input\n }], customCSS: [{\n type: Input\n }], customJS: [{\n type: Input\n }], height: [{\n type: Input\n }], minHeight: [{\n type: Input\n }], options: [{\n type: Input\n }], callbacks: [{\n type: Input\n }], sdkUrl: [{\n type: Input\n }], sdkVersion: [{\n type: Input\n }], editorVersion: [{\n type: Input\n }], editorUrl: [{\n type: Input\n }], collaboration: [{\n type: Input\n }], user: [{\n type: Input\n }], designMode: [{\n type: Input\n }], ready: [{\n type: Output\n }], load: [{\n type: Output\n }], change: [{\n type: Output\n }], error: [{\n type: Output\n }], commentAction: [{\n type: Output\n }] } });\n//# sourceMappingURL=dragble-editor.component.js.map","/**\n * Dragble Editor Angular Module\n *\n * This module is provided for backwards compatibility with non-standalone Angular apps.\n * For Angular 14+ apps using standalone components, you can import DragbleEditorComponent directly.\n */\nimport { NgModule } from \"@angular/core\";\nimport { DragbleEditorComponent } from \"./dragble-editor.component\";\nimport * as i0 from \"@angular/core\";\nexport class DragbleEditorModule {\n}\nDragbleEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDragbleEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorModule, imports: [DragbleEditorComponent], exports: [DragbleEditorComponent] });\nDragbleEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.3.12\", ngImport: i0, type: DragbleEditorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [DragbleEditorComponent],\n exports: [DragbleEditorComponent],\n }]\n }] });\n//# sourceMappingURL=dragble-editor.module.js.map"],"names":[],"mappings":"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"}