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