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 CHANGED
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://dragble.com">
3
- <img src="logo.png" alt="Dragble Email Editor - Angular Email Template Builder" width="300" />
3
+ <img src="logo.png" alt="Dragble - AI-Powered Angular Email Template Builder" width="300" />
4
4
  </a>
5
5
  </p>
6
6
 
@@ -11,14 +11,14 @@
11
11
 
12
12
  # dragble-angular-editor
13
13
 
14
- Angular component for building **email templates** with drag-and-drop. Embed a full-featured **email editor** into your Angular app — create responsive HTML emails, newsletters, transactional email templates, and email marketing campaigns visually without writing code.
14
+ AI-powered Angular component for building **email templates** with drag-and-drop. Embed a full-featured **AI-powered email editor** into your Angular app — create responsive HTML emails, newsletters, transactional email templates, and email marketing campaigns visually without writing code.
15
15
 
16
- [Dragble](https://dragble.com) is a modern **email builder** and **email template editor** that lets your users design professional emails with a visual drag-and-drop interface.
16
+ [Dragble](https://dragble.com) is a modern **AI-powered email builder** and **email template editor** that lets your users design professional emails with a visual drag-and-drop interface.
17
17
 
18
18
  [Website](https://dragble.com) | [Documentation](https://docs.dragble.com) | [Dashboard](https://developers.dragble.com)
19
19
 
20
20
  <p align="center">
21
- <img src="editor_image.png" alt="Dragble Angular Email Editor - Drag and Drop Email Template Builder" width="700" />
21
+ <img src="editor_image.png" alt="Dragble - AI-Powered Angular Email Editor with Drag and Drop" width="700" />
22
22
  </p>
23
23
 
24
24
  ## Features
package/dist/index.js CHANGED
@@ -1,6 +1,26 @@
1
- import * as i0 from '@angular/core';
2
- import { Output, Input, Component, EventEmitter, NgModule } from '@angular/core';
3
- export * from 'dragble-types';
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 = 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
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
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DragbleEditorComponent, decorators: [{
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 = 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,
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
- export { DragbleEditorComponent, DragbleEditorModule };
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":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAGA,MAAM,WAAW,GAAG,mDAAmD;AACvE;AACA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,SAAS,EAAE,UAAU,EAAE;AAC1C,IAAI,IAAI,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE;AAC/C,QAAQ,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC;AACtF,IAAI;AACJ,IAAI,OAAO,SAAS,IAAI,CAAC,wBAAwB,EAAE,UAAU,IAAI,QAAQ,CAAC,mBAAmB,CAAC;AAC9F;AACA;AACA;AACA;AACA,SAAS,yBAAyB,GAAG;AACrC,IAAI,OAAO;AACX,QAAQ,OAAO,EAAE,MAAM,CAAC,OAAO;AAC/B,QAAQ,YAAY,EAAE,CAAC,MAAM,KAAK;AAClC,YAAY,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;AAC7D,YAAY,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,YAAY,OAAO,QAAQ;AAC3B,QAAQ,CAAC;AACT,QAAQ,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW;AAC9C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,SAAS,EAAE;AAC5B,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC;AACvC;AACA,IAAI,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;AACrD,IAAI,IAAI,aAAa;AACrB,QAAQ,OAAO,aAAa;AAC5B;AACA,IAAI,IAAI,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;AACnF,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC;AAC3D,IAAI;AACJ,IAAI,OAAO,aAAa,CAAC,MAAM,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,MAAM,EAAE;AAC/B;AACA,IAAI,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;AACrD,IAAI,IAAI,aAAa;AACrB,QAAQ,OAAO,aAAa;AAC5B,IAAI,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACzD,QAAQ,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACvD,QAAQ,MAAM,CAAC,GAAG,GAAG,MAAM;AAC3B,QAAQ,MAAM,CAAC,KAAK,GAAG,IAAI;AAC3B,QAAQ,MAAM,CAAC,MAAM,GAAG,MAAM;AAC9B,YAAY,IAAI,MAAM,CAAC,OAAO,EAAE;AAChC;AACA,gBAAgB,OAAO,CAAC,yBAAyB,EAAE,CAAC;AACpD,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;AACxF,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM;AAC/B,YAAY,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1C,YAAY,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1E,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACzC,IAAI,CAAC,CAAC;AACN;AACA,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;AAC5C,IAAI,OAAO,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,sBAAsB,CAAC;AACpC,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,OAAO;AACjC;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,OAAO;AAC7B;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,OAAO;AAChC;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIA,eAAY,EAAE;AACvC;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAIA,eAAY,EAAE;AACtC;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIA,eAAY,EAAE;AACxC;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIA,eAAY,EAAE;AACvC;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAIA,eAAY,EAAE;AAC/C;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtF,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI;AACvB,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ;AAC5B,IAAI;AACJ,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM;AACjF,IAAI;AACJ,IAAI,IAAI,iBAAiB,GAAG;AAC5B,QAAQ,OAAO,OAAO,IAAI,CAAC,SAAS,KAAK;AACzC,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AAClC,cAAc,IAAI,CAAC,SAAS;AAC5B,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf;AACA,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,gBAAgB,EAAE;AAC/B,IAAI;AACJ,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ;AACvC,YAAY;AACZ;AACA,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;AACjE,YAAY,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY;AAC5D,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;AAC9C,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE;AACvE,YAAY,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY;AAC7D,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC;AAC9C,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;AACnE,YAAY,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY;AAC9D,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;AAC/C,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,OAAO,CAAC,mBAAmB,CAAC;AACxC,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE;AACvD,YAAY,MAAM,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,YAAY;AAC3E,YAAY,IAAI,aAAa,EAAE;AAC/B,gBAAgB,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC;AAC5D,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE;AACtB,YAAY,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;AAC9B,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI;AAC3B,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,IAAI;AACZ,YAAY,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;AAC1E,YAAY,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC;AAClE,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AAC7C,YAAY,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC;AAC5C,YAAY,IAAI,CAAC,GAAG,GAAG,GAAG;AAC1B;AACA,YAAY,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM;AACvD,gBAAgB,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpC,gBAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACpC,YAAY,CAAC,CAAC;AACd,YAAY,GAAG,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,IAAI,KAAK;AAC5D,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,YAAY,CAAC,CAAC;AACd,YAAY,GAAG,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,IAAI,KAAK;AAC7D,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7E,YAAY,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,OAAO,CAAC;AACjE,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAClC,QAAQ;AACR,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,KAAK;AAClD,cAAc;AACd,gBAAgB,GAAG,IAAI,CAAC,MAAM;AAC9B,gBAAgB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7C,gBAAgB,OAAO,EAAE,CAAC;AAC1B,gBAAgB,OAAO,EAAE,CAAC;AAC1B;AACA,cAAc,IAAI,CAAC,MAAM;AACzB;AACA,QAAQ,IAAI,cAAc,GAAG,IAAI,CAAC,QAAQ;AAC1C,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;AAC9C,YAAY,MAAM,mBAAmB,GAAG,OAAO,IAAI,CAAC,aAAa,KAAK;AACtE,kBAAkB;AAClB,oBAAoB,GAAG,IAAI,CAAC,aAAa;AACzC,oBAAoB,SAAS,EAAE,CAAC,MAAM,KAAK;AAC3C,wBAAwB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AACvD,oBAAoB,CAAC;AACrB;AACA,kBAAkB,IAAI,CAAC,aAAa;AACpC,YAAY,cAAc,GAAG;AAC7B,gBAAgB,GAAG,cAAc;AACjC,gBAAgB,aAAa,EAAE,mBAAmB;AAClD,aAAa;AACb,QAAQ;AACR;AACA,QAAQ,MAAM,SAAS,GAAG;AAC1B,YAAY,GAAG,IAAI,CAAC,SAAS;AAC7B,SAAS;AACT;AACA,QAAQ,MAAM,aAAa,GAAG;AAC9B,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/D,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACrE,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI;AACnD,gBAAgB,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/C,aAAa,CAAC;AACd,YAAY,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI;AACpD,gBAAgB,aAAa,EAAE,IAAI,CAAC,aAAa;AACjD,aAAa,CAAC;AACd,YAAY,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3E,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM;AAC/B,YAAY,SAAS,EAAE,IAAI,CAAC,SAAS;AACrC,YAAY,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9E,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI;AACnD,gBAAgB,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/C,aAAa,CAAC;AACd,YAAY,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACxE,YAAY,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,IAAI;AACxD,gBAAgB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;AACzD,aAAa,CAAC;AACd,YAAY,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACjF,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAClE,YAAY,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACpF,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAClE,YAAY,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACjF,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACrE,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACrE,YAAY,IAAI,YAAY,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AACvE,YAAY,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9E,YAAY,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3E,YAAY,IAAI,cAAc,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AAC7E,YAAY,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;AACzD,YAAY,GAAG,IAAI,CAAC,OAAO;AAC3B,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,WAAW,EAAE,IAAI,CAAC,WAAW;AACzC,YAAY,SAAS,EAAE,IAAI,CAAC,SAAS;AACrC,YAAY,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACjF,YAAY,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACjF,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACrE,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAClE,YAAY,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI;AACpD,gBAAgB,aAAa,EAAE,IAAI,CAAC,aAAa;AACjD,aAAa,CAAC;AACd,YAAY,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9E,YAAY,SAAS;AACrB,YAAY,OAAO,EAAE,aAAa;AAClC,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,SAAS,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,GAAG;AACvB,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE;AAChC,QAAQ,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;AAC7C,IAAI;AACJ,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE;AAC7B,IAAI;AACJ,IAAI,UAAU,CAAC,QAAQ,EAAE;AACzB,QAAQ,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtC,IAAI;AACJ,IAAI,SAAS,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE;AACpC,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC;AAC5C,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE;AAC1C,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE;AACrC,IAAI;AACJ,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC;AAC7C,IAAI;AACJ,IAAI,SAAS,CAAC,OAAO,EAAE;AACvB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC;AAC3C,IAAI;AACJ,IAAI,SAAS,CAAC,OAAO,EAAE;AACvB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC;AAC3C,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE;AACzC,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,MAAM,EAAE;AACzB,QAAQ,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC;AACtC,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE;AACvC,IAAI;AACJ;AACA,IAAI,eAAe,CAAC,MAAM,EAAE;AAC5B,QAAQ,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,MAAM,CAAC;AACzC,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE;AAC1C,IAAI;AACJ;AACA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC/B,QAAQ,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,OAAO,CAAC;AAC5C,IAAI;AACJ,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC;AACrC,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE;AACrC,IAAI;AACJ;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE;AACrB,QAAQ,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC;AAClC,IAAI;AACJ,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE;AACnC,IAAI;AACJ;AACA,IAAI,aAAa,CAAC,MAAM,EAAE;AAC1B,QAAQ,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC;AACvC,IAAI;AACJ,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE;AACxC,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC;AACrC,IAAI;AACJ,IAAI,cAAc,CAAC,MAAM,EAAE;AAC3B,QAAQ,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC;AACxC,IAAI;AACJ,IAAI,aAAa,CAAC,IAAI,EAAE;AACxB,QAAQ,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC;AACrC,IAAI;AACJ,IAAI,eAAe,CAAC,MAAM,EAAE;AAC5B,QAAQ,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,MAAM,CAAC;AACzC,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE;AAC1C,IAAI;AACJ,IAAI,SAAS,CAAC,MAAM,EAAE;AACtB,QAAQ,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC;AACnC,IAAI;AACJ,IAAI,gBAAgB,CAAC,SAAS,EAAE;AAChC,QAAQ,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,SAAS,CAAC;AAC7C,IAAI;AACJ,IAAI,aAAa,CAAC,MAAM,EAAE;AAC1B,QAAQ,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC;AACvC,IAAI;AACJ,IAAI,YAAY,CAAC,GAAG,EAAE;AACtB,QAAQ,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC;AACnC,IAAI;AACJ,IAAI,WAAW,CAAC,EAAE,EAAE;AACpB,QAAQ,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;AACjC,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC;AACvC,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE;AACtC,IAAI;AACJ;AACA,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;AACxB,IAAI;AACJ,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;AACxB,IAAI;AACJ,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;AACxB,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC;AACrC,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE;AAC/B,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,MAAM,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC;AAC7C,IAAI;AACJ,IAAI,cAAc,CAAC,MAAM,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC;AAC/C,IAAI;AACJ,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE;AACnC,IAAI;AACJ;AACA,IAAI,oBAAoB,CAAC,MAAM,EAAE;AACjC,QAAQ,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,MAAM,CAAC;AAC9C,IAAI;AACJ,IAAI,KAAK,CAAC,iBAAiB,EAAE,QAAQ,EAAE;AACvC,QAAQ,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE;AACrD,YAAY,OAAO,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,iBAAiB,CAAC;AACrD,QAAQ;AACR,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,OAAO,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,iBAAiB,EAAE,QAAQ,CAAC;AAC/D,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,iBAAiB,CAAC;AACjD,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,SAAS,EAAE;AAC3B,QAAQ,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,SAAS,CAAC;AACxC,IAAI;AACJ,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,QAAQ,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC;AACzC,IAAI;AACJ;AACA,IAAI,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACtC,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC1D,IAAI;AACJ,IAAI,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzC,QAAQ,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC;AACtD,IAAI;AACJ;AACA,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC;AACxC,IAAI;AACJ,IAAI,iBAAiB,CAAC,MAAM,EAAE;AAC9B,QAAQ,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,MAAM,CAAC;AAC3C,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,MAAM,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC;AAC7C,IAAI;AACJ,IAAI,YAAY,CAAC,UAAU,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,UAAU,CAAC;AACjD,IAAI;AACJ;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;AAClC,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;AAClC,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;AAClC,IAAI;AACJ;AACA,sBAAsB,CAAC,IAAI,GAAGC,aAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAEA,aAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAEA,aAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;AAC7L,sBAAsB,CAAC,IAAI,GAAGA,aAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,sBAAsB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAEA,aAAE,EAAE,QAAQ,EAAE,CAAC;AACrpC;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,sGAAsG,CAAC,EAAE,CAAC;AAC/IA,aAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAEA,aAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC;AACjI,YAAY,IAAI,EAAEC,YAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;AAC5D;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,sGAAsG,CAAC,EAAE;AAChJ,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,CAAC;AAC1C,gBAAgB,IAAI,EAAEC;AACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC;AACrB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;AAC/B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;AAC5B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;AAC/B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;AACpC,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;AAC5B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;AAC5B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;AAC5B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;AAC5B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;AACvB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAEC;AACtB,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;AACvB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAEA;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;AChnBnB;AACA;AACA;AACA;AACA;AACA;AAIO,MAAM,mBAAmB,CAAC;AACjC;AACA,mBAAmB,CAAC,IAAI,GAAGH,aAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAEA,aAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAEA,aAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;AACtL,mBAAmB,CAAC,IAAI,GAAGA,aAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAEA,aAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC;AAC9M,mBAAmB,CAAC,IAAI,GAAGA,aAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAEA,aAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;AACxIA,aAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAEA,aAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;AAC9H,YAAY,IAAI,EAAEI,WAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACrD,oBAAoB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACrD,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;;;;;;;;;;"}
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.1",
4
- "description": "Angular email editor component AI powered drag-and-drop email builder for creating responsive email templates and newsletters. Build HTML emails visually with Dragble.",
5
- "type": "module",
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.js",
6
+ "module": "dist/index.mjs",
8
7
  "types": "dist/index.d.ts",
9
8
  "exports": {
10
9
  ".": {
11
- "import": "./dist/index.js",
12
- "types": "./dist/index.d.ts"
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.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",