@acorex/components 18.12.1 → 18.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (19) hide show
  1. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.mjs +43 -31
  2. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-toolbar/wysiwyg-toolbar.component.mjs +11 -5
  3. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component.mjs +7 -12
  4. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component.mjs +6 -11
  5. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component.mjs +23 -28
  6. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-history/wysiwyg-history.component.mjs +5 -11
  7. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component.mjs +4 -10
  8. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-list/wysiwyg-list.component.mjs +10 -15
  9. package/fesm2022/acorex-components-wysiwyg.mjs +93 -107
  10. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  11. package/package.json +36 -36
  12. package/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.d.ts +3 -7
  13. package/wysiwyg/lib/wysiwyg/wysiwyg-toolbar/wysiwyg-toolbar.component.d.ts +1 -0
  14. package/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component.d.ts +0 -3
  15. package/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component.d.ts +0 -3
  16. package/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component.d.ts +0 -3
  17. package/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-history/wysiwyg-history.component.d.ts +0 -5
  18. package/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component.d.ts +0 -5
  19. package/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-list/wysiwyg-list.component.d.ts +0 -3
@@ -10,6 +10,7 @@ import * as i3$1 from '@angular/forms';
10
10
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
11
11
  import { AXWysiwyg } from '@acorex/cdk/wysiwyg';
12
12
  import { MXInputBaseValueComponent, MXLookComponent, AXComponent, AXFocusableComponent, AXClearableComponent, AXValuableComponent } from '@acorex/components/common';
13
+ import { isBrowser } from '@acorex/core/platform';
13
14
  import { classes } from 'polytype';
14
15
  import { QuillDeltaToHtmlConverter } from 'quill-delta-to-html';
15
16
  import * as i4 from '@acorex/components/color-palette';
@@ -39,51 +40,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
39
40
  * @category Components
40
41
  */
41
42
  class AXWysiwygContainerComponent extends classes((MXInputBaseValueComponent), MXLookComponent) {
42
- /** @ignore */
43
43
  constructor() {
44
44
  super();
45
45
  /** @ignore */
46
- this.zone = inject(NgZone);
47
- this.wysiwyg = signal(null);
48
- /** @ignore */
49
- this.view = signal(null);
50
- /** @ignore */
51
46
  this.service = inject(AXWysiwygService);
47
+ /** @ignore */
48
+ this.zone = inject(NgZone);
52
49
  /**
53
50
  * Specifies the placeholder text.
54
51
  *
55
52
  */
56
53
  this.placeHolder = input();
57
- afterNextRender(() => {
58
- this.view.set(this.getHostElement().querySelector('ax-wysiwyg-view'));
59
- this.zone.runOutsideAngular(() => {
60
- this.wysiwyg.set(new AXWysiwyg(this.view(), {
61
- readOnly: true,
62
- }));
63
- this.wysiwyg().wysiwygObj.on('text-change', this.changeHandler.bind(this));
54
+ this.#init = afterNextRender(() => {
55
+ const view = this.getHostElement().querySelector('ax-wysiwyg-view');
56
+ this.zone.runOutsideAngular(async () => {
57
+ if (isBrowser()) {
58
+ const newWysiwyg = new AXWysiwyg();
59
+ await newWysiwyg.init(view, {
60
+ readOnly: true,
61
+ });
62
+ this.service.wysiwyg.set(newWysiwyg);
63
+ }
64
64
  });
65
- this.service.wysiwyg.set(this.wysiwyg());
66
- this.setTimeOut = setTimeout(() => {
67
- this.wysiwyg().wysiwygObj.enable();
68
- }, 1000);
69
65
  });
70
- effect(() => {
71
- if (this.placeHolder() && this.wysiwyg()) {
72
- this.wysiwyg().wysiwygObj.root.setAttribute('data-placeholder', this.placeHolder());
66
+ this.#effect1 = effect(() => {
67
+ if (this.placeHolder() && this.service.wysiwyg()?.quillObj()) {
68
+ this.service.wysiwyg().quillObj().root.setAttribute('data-placeholder', this.placeHolder());
73
69
  }
74
- else {
75
- this.wysiwyg().wysiwygObj.root.setAttribute('data-placeholder', 'Write Your Message ...');
70
+ else if (this.service.wysiwyg()?.quillObj()) {
71
+ this.service.wysiwyg().quillObj().root.setAttribute('data-placeholder', 'Write Your Message ...');
76
72
  }
77
73
  });
78
- effect(() => {
79
- if (this.value) {
80
- this.wysiwyg().wysiwygObj.root.innerHTML = this.value;
74
+ this.#effect2 = effect(() => {
75
+ if (this.value && this.service.wysiwyg()?.quillObj()) {
76
+ this.service.wysiwyg().quillObj().root.innerHTML = this.value;
81
77
  }
82
- }, { allowSignalWrites: true });
78
+ });
79
+ this.#effect3 = effect(() => {
80
+ if (this.service.wysiwyg()?.quillObj()) {
81
+ this.service.wysiwyg().quillObj().on('text-change', this.changeHandler.bind(this));
82
+ this.setTimeOut = setTimeout(() => {
83
+ this.service.wysiwyg()?.quillObj().enable();
84
+ }, 1000);
85
+ }
86
+ });
87
+ this.onValueChanged.subscribe((v) => {
88
+ this.service.wysiwyg()?.setContent(v.value);
89
+ });
83
90
  }
91
+ #init;
92
+ #effect1;
93
+ #effect2;
94
+ #effect3;
84
95
  /** @ignore */
85
96
  changeHandler() {
86
- const value = this.wysiwyg().wysiwygObj.root.innerHTML;
97
+ const value = this.service.wysiwyg()?.quillObj().root.innerHTML;
87
98
  if (value === '<p><br></p>' || !value) {
88
99
  this.commitValue(null);
89
100
  if (this.service.isEditorClean())
@@ -91,7 +102,7 @@ class AXWysiwygContainerComponent extends classes((MXInputBaseValueComponent), M
91
102
  this.service.isEditorClean.set(true);
92
103
  }
93
104
  else {
94
- const delta = this.wysiwyg().wysiwygObj.editor.delta.ops;
105
+ const delta = this.service.wysiwyg()?.quillObj().editor.delta.ops;
95
106
  const cfg = { inlineStyles: true };
96
107
  const converter = new QuillDeltaToHtmlConverter(delta, cfg);
97
108
  const html = converter.convert();
@@ -103,8 +114,9 @@ class AXWysiwygContainerComponent extends classes((MXInputBaseValueComponent), M
103
114
  }
104
115
  /** @ignore */
105
116
  ngOnDestroy() {
106
- this.wysiwyg().wysiwygObj.off('text-change', this.changeHandler);
117
+ this.service.wysiwyg()?.quillObj().off('text-change', this.changeHandler);
107
118
  clearTimeout(this.setTimeOut);
119
+ this.onValueChanged.unsubscribe();
108
120
  }
109
121
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXWysiwygContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
110
122
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: AXWysiwygContainerComponent, selector: "ax-wysiwyg-container", inputs: { look: { classPropertyName: "look", publicName: "look", isSignal: false, isRequired: false, transformFunction: null }, placeHolder: { classPropertyName: "placeHolder", publicName: "placeHolder", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onValueChanged: "onValueChanged" }, providers: [
@@ -139,13 +151,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
139
151
  * @category Components
140
152
  */
141
153
  class AXWysiwygToolbarComponent {
154
+ get __hostClass() {
155
+ return `ax-sm`;
156
+ }
142
157
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXWysiwygToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
143
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXWysiwygToolbarComponent, selector: "ax-wysiwyg-toolbar", ngImport: i0, template: "<div class=\"ax-wysiwyg-tool-container ax-sm\">\r\n <ng-content select=\"ax-prefix\"></ng-content>\r\n <ng-content></ng-content>\r\n <ng-content select=\"ax-suffix\"></ng-content>\r\n</div>\r\n", styles: ["ax-wysiwyg-toolbar .ax-icon{font-weight:900;font-size:1rem}ax-wysiwyg-toolbar .ax-wysiwyg-tool-container{padding-block:.5rem;overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center}ax-wysiwyg-toolbar .ax-wysiwyg-tool-container ax-button{margin-inline:.1rem}ax-wysiwyg-toolbar .ax-wysiwyg-tool-container ax-select-box{margin-inline:.5rem}ax-wysiwyg-toolbar ax-select-box{width:auto!important}\n"], encapsulation: i0.ViewEncapsulation.None }); }
158
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXWysiwygToolbarComponent, selector: "ax-wysiwyg-toolbar", host: { properties: { "class": "this.__hostClass" } }, ngImport: i0, template: "<ng-content select=\"ax-prefix\"></ng-content>\r\n<div class=\"ax-wysiwyg-tools\"><ng-content></ng-content></div>\r\n<ng-content select=\"ax-suffix\"></ng-content>\r\n", styles: ["ax-wysiwyg-toolbar{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:space-between;padding:.5rem}ax-wysiwyg-toolbar .ax-icon{font-weight:900;font-size:1rem}ax-wysiwyg-toolbar ax-button{margin-inline:.1rem}ax-wysiwyg-toolbar ax-select-box{margin-inline:.5rem}ax-wysiwyg-toolbar .ax-wysiwyg-tools{display:flex;flex-wrap:wrap}ax-wysiwyg-toolbar ax-select-box{width:auto!important}\n"], encapsulation: i0.ViewEncapsulation.None }); }
144
159
  }
145
160
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXWysiwygToolbarComponent, decorators: [{
146
161
  type: Component,
147
- args: [{ selector: 'ax-wysiwyg-toolbar', encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-wysiwyg-tool-container ax-sm\">\r\n <ng-content select=\"ax-prefix\"></ng-content>\r\n <ng-content></ng-content>\r\n <ng-content select=\"ax-suffix\"></ng-content>\r\n</div>\r\n", styles: ["ax-wysiwyg-toolbar .ax-icon{font-weight:900;font-size:1rem}ax-wysiwyg-toolbar .ax-wysiwyg-tool-container{padding-block:.5rem;overflow:hidden;display:flex;flex-wrap:wrap;justify-content:center}ax-wysiwyg-toolbar .ax-wysiwyg-tool-container ax-button{margin-inline:.1rem}ax-wysiwyg-toolbar .ax-wysiwyg-tool-container ax-select-box{margin-inline:.5rem}ax-wysiwyg-toolbar ax-select-box{width:auto!important}\n"] }]
148
- }] });
162
+ args: [{ selector: 'ax-wysiwyg-toolbar', encapsulation: ViewEncapsulation.None, template: "<ng-content select=\"ax-prefix\"></ng-content>\r\n<div class=\"ax-wysiwyg-tools\"><ng-content></ng-content></div>\r\n<ng-content select=\"ax-suffix\"></ng-content>\r\n", styles: ["ax-wysiwyg-toolbar{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:space-between;padding:.5rem}ax-wysiwyg-toolbar .ax-icon{font-weight:900;font-size:1rem}ax-wysiwyg-toolbar ax-button{margin-inline:.1rem}ax-wysiwyg-toolbar ax-select-box{margin-inline:.5rem}ax-wysiwyg-toolbar .ax-wysiwyg-tools{display:flex;flex-wrap:wrap}ax-wysiwyg-toolbar ax-select-box{width:auto!important}\n"] }]
163
+ }], propDecorators: { __hostClass: [{
164
+ type: HostBinding,
165
+ args: ['class']
166
+ }] } });
149
167
 
150
168
  /**
151
169
  * A container component for WYSIWYG (What You See Is What You Get) editor functionality.
@@ -159,8 +177,6 @@ class AXWysiwygAlignmentComponent {
159
177
  /** @ignore */
160
178
  this.alignState = signal('');
161
179
  /** @ignore */
162
- this.wysiwyg = signal(null);
163
- /** @ignore */
164
180
  this.popoverOption = {
165
181
  openOn: 'click',
166
182
  closeOn: 'clickOut',
@@ -169,30 +185,27 @@ class AXWysiwygAlignmentComponent {
169
185
  offsetY: 0,
170
186
  };
171
187
  effect(() => {
172
- if (!this.wysiwyg())
188
+ if (!this.service.wysiwyg())
173
189
  return;
174
190
  switch (this.service.currentSelectedElemAlign()) {
175
191
  case 'ql-align-center':
176
192
  this.alignState.set('center');
177
- this.wysiwyg().align('center');
193
+ this.service.wysiwyg().align('center');
178
194
  break;
179
195
  case 'ql-align-right':
180
196
  this.alignState.set('right');
181
- this.wysiwyg().align('right');
197
+ this.service.wysiwyg().align('right');
182
198
  break;
183
199
  default:
184
200
  this.alignState.set('left');
185
- this.wysiwyg().align('left');
201
+ this.service.wysiwyg().align('left');
186
202
  }
187
203
  }, { allowSignalWrites: true });
188
- afterNextRender(() => {
189
- this.wysiwyg.set(this.service.wysiwyg());
190
- });
191
204
  }
192
205
  /** @ignore */
193
206
  alignStateHandler(e) {
194
207
  this.alignState.set(e);
195
- this.wysiwyg().align(e);
208
+ this.service.wysiwyg().align(e);
196
209
  }
197
210
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXWysiwygAlignmentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
198
211
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXWysiwygAlignmentComponent, selector: "ax-wysiwyg-alignment", ngImport: i0, template: "<ax-button look=\"blank\" #alignPop>\n <ax-icon class=\"ax-icon ax-icon-align-left\"></ax-icon>\n</ax-button>\n<ax-popover [openOn]=\"popoverOption.openOn\" [closeOn]=\"popoverOption.closeOn\" [target]=\"alignPop\" [placement]=\"popoverOption.placement\">\n <div class=\"ax-overlay-pane ax-alignment-cotainer ax-sm\">\n <ax-button (click)=\"alignStateHandler('left')\" look=\"blank\" [selected]=\"alignState() === 'left' ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-align-left\"></ax-icon>\n </ax-button>\n\n <ax-button (click)=\"alignStateHandler('center')\" look=\"blank\" [selected]=\"alignState() === 'center' ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-align-center\"></ax-icon>\n </ax-button>\n\n <ax-button (click)=\"alignStateHandler('right')\" look=\"blank\" [selected]=\"alignState() === 'right' ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-align-right\"></ax-icon>\n </ax-button>\n </div>\n</ax-popover>\n", styles: [".ax-alignment-cotainer{padding:.5rem}\n"], dependencies: [{ kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }] }); }
@@ -212,8 +225,6 @@ class AXWysiwygColorsComponent {
212
225
  /** @ignore */
213
226
  this.service = inject(AXWysiwygService);
214
227
  /** @ignore */
215
- this.wysiwyg = signal(null);
216
- /** @ignore */
217
228
  this.selectedColor = signal('rgb(151, 148, 148)');
218
229
  /** @ignore */
219
230
  this.selectedHighlightColor = signal('rgba(223, 223, 24, 0.5)');
@@ -229,9 +240,6 @@ class AXWysiwygColorsComponent {
229
240
  offsetX: 0,
230
241
  offsetY: 0,
231
242
  };
232
- afterNextRender(() => {
233
- this.wysiwyg.set(this.service.wysiwyg());
234
- });
235
243
  effect(() => {
236
244
  if (this.service.isEditorClean()) {
237
245
  this.selectedHighlightColor.set('rgba(223, 223, 24, 0.5)');
@@ -244,28 +252,28 @@ class AXWysiwygColorsComponent {
244
252
  if (!this.userInteractColor())
245
253
  return;
246
254
  this.selectedColor.set(e);
247
- this.wysiwyg().color(e);
255
+ this.service.wysiwyg().color(e);
248
256
  }
249
257
  /** @ignore */
250
258
  changeHighlightColorHandler(e) {
251
259
  if (!this.userInteractHighligh())
252
260
  return;
253
261
  this.selectedHighlightColor.set(e);
254
- this.wysiwyg().background(e);
262
+ this.service.wysiwyg().background(e);
255
263
  }
256
264
  /** @ignore */
257
265
  initialHighlightHandler() {
258
266
  if (this.userInteractHighligh())
259
267
  return;
260
268
  this.userInteractHighligh.set(true);
261
- this.wysiwyg().background('rgba(223, 223, 24, 0.5)');
269
+ this.service.wysiwyg().background('rgba(223, 223, 24, 0.5)');
262
270
  }
263
271
  /** @ignore */
264
272
  initialColorHandler() {
265
273
  if (this.userInteractColor())
266
274
  return;
267
275
  this.userInteractColor.set(true);
268
- this.wysiwyg().color('rgb(151, 148, 148)');
276
+ this.service.wysiwyg().color('rgb(151, 148, 148)');
269
277
  }
270
278
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXWysiwygColorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
271
279
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXWysiwygColorsComponent, selector: "ax-wysiwyg-colors", ngImport: i0, template: "<div class=\"ax-color-picker-wysiwyg-container\">\n <div (click)=\"initialColorHandler()\" class=\"ax-color-flex-wysiwyg-container\">\n <div [style]=\"{ backgroundColor: selectedColor() }\" class=\"ax-submit-color\"></div>\n <ax-button #colorBtn look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-color-palette\"></ax-icon>\n </ax-button>\n </div>\n\n <div (click)=\"initialHighlightHandler()\" class=\"ax-color-flex-wysiwyg-container\">\n <div [style]=\"{ backgroundColor: selectedHighlightColor() }\" class=\"ax-submit-color\"></div>\n <ax-button #highlightBtn look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n </ax-button>\n </div>\n</div>\n\n<ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"colorBtn\"\n [placement]=\"popoverOption.placement\"\n>\n <div class=\"ax-overlay-pane\">\n <ax-color-palette (ngModelChange)=\"changeColorHandler($event)\" [ngModel]=\"selectedColor()\">\n <ax-color-palette-preview></ax-color-palette-preview>\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n </div>\n</ax-popover>\n\n<ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"highlightBtn\"\n [placement]=\"popoverOption.placement\"\n>\n <div class=\"ax-overlay-pane\">\n <ax-color-palette\n (ngModelChange)=\"changeHighlightColorHandler($event)\"\n [ngModel]=\"selectedHighlightColor()\"\n >\n <ax-color-palette-preview></ax-color-palette-preview>\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n </div>\n</ax-popover>\n", styles: [".ax-color-picker-wysiwyg-container{display:flex;align-items:center}.ax-color-picker-wysiwyg-container .ax-color-flex-wysiwyg-container{display:flex;align-items:center;cursor:pointer}.ax-color-picker-wysiwyg-container .ax-submit-color{border:1px solid rgb(var(--ax-color-text-default));width:.6rem;height:.6rem;border-radius:1000vmax}\n"], dependencies: [{ kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.AXColorPalleteComponent, selector: "ax-color-palette", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "checked"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange"] }, { kind: "component", type: i4.AXColorPalettePreviewComponent, selector: "ax-color-palette-preview" }, { kind: "component", type: i4.AXColorPaletteInputComponent, selector: "ax-color-palette-input" }, { kind: "component", type: i4.AXColorPalettePickerComponent, selector: "ax-color-palette-picker" }, { kind: "component", type: i3.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }], encapsulation: i0.ViewEncapsulation.None }); }
@@ -285,8 +293,6 @@ class AXWysiwygFontStyleComponent {
285
293
  /** @ignore */
286
294
  this.parent = inject(AXWysiwygContainerComponent);
287
295
  /** @ignore */
288
- this.wysiwyg = signal(null);
289
- /** @ignore */
290
296
  this.boldState = signal(false);
291
297
  /** @ignore */
292
298
  this.italicState = signal(false);
@@ -299,97 +305,94 @@ class AXWysiwygFontStyleComponent {
299
305
  /** @ignore */
300
306
  this.service = inject(AXWysiwygService);
301
307
  effect(() => {
302
- if (!this.wysiwyg())
308
+ if (!this.service.wysiwyg())
303
309
  return;
304
310
  this.service.currentSelectedElemArray().forEach((item) => {
305
311
  switch (item) {
306
312
  case 'U':
307
- this.wysiwyg().underLine(true);
313
+ this.service.wysiwyg().underLine(true);
308
314
  this.underLineState.set(true);
309
315
  break;
310
316
  case 'S':
311
- this.wysiwyg().strike(true);
317
+ this.service.wysiwyg().strike(true);
312
318
  this.strikeLineState.set(true);
313
319
  break;
314
320
  case 'EM':
315
- this.wysiwyg().italic(true);
321
+ this.service.wysiwyg().italic(true);
316
322
  this.italicState.set(true);
317
323
  break;
318
324
  case 'STRONG':
319
- this.wysiwyg().bold(true);
325
+ this.service.wysiwyg().bold(true);
320
326
  this.boldState.set(true);
321
327
  break;
322
328
  default:
323
329
  if (this.boldState())
324
- this.wysiwyg().bold(true);
330
+ this.service.wysiwyg().bold(true);
325
331
  if (this.italicState())
326
- this.wysiwyg().italic(true);
332
+ this.service.wysiwyg().italic(true);
327
333
  if (this.strikeLineState())
328
- this.wysiwyg().strike(true);
334
+ this.service.wysiwyg().strike(true);
329
335
  if (this.underLineState())
330
- this.wysiwyg().underLine(true);
336
+ this.service.wysiwyg().underLine(true);
331
337
  }
332
338
  });
333
339
  }, { allowSignalWrites: true });
334
- afterNextRender(() => {
335
- this.wysiwyg.set(this.service.wysiwyg());
336
- });
337
340
  }
338
341
  /** @ignore */
339
342
  bold() {
340
343
  if (this.boldState()) {
341
- this.wysiwyg().bold(false);
344
+ this.service.wysiwyg().bold(false);
342
345
  this.boldState.set(false);
343
346
  }
344
347
  else {
345
- this.wysiwyg().bold(true);
348
+ this.service.wysiwyg().bold(true);
346
349
  this.boldState.set(true);
347
350
  }
348
351
  }
349
352
  /** @ignore */
350
353
  italic() {
351
354
  if (this.italicState()) {
352
- this.wysiwyg().italic(false);
355
+ this.service.wysiwyg().italic(false);
353
356
  this.italicState.set(false);
354
357
  }
355
358
  else {
356
- this.wysiwyg().italic(true);
359
+ this.service.wysiwyg().italic(true);
357
360
  this.italicState.set(true);
358
361
  }
359
362
  }
360
363
  /** @ignore */
361
364
  underLine() {
362
365
  if (this.underLineState()) {
363
- this.wysiwyg().underLine(false);
366
+ this.service.wysiwyg().underLine(false);
364
367
  this.underLineState.set(false);
365
368
  }
366
369
  else {
367
- this.wysiwyg().underLine(true);
370
+ this.service.wysiwyg().underLine(true);
368
371
  this.underLineState.set(true);
369
372
  }
370
373
  }
371
374
  /** @ignore */
372
375
  strike() {
373
376
  if (this.strikeLineState()) {
374
- this.wysiwyg().strike(false);
377
+ this.service.wysiwyg().strike(false);
375
378
  this.strikeLineState.set(false);
376
379
  }
377
380
  else {
378
- this.wysiwyg().strike(true);
381
+ this.service.wysiwyg().strike(true);
379
382
  this.strikeLineState.set(true);
380
383
  }
381
384
  }
382
385
  /** @ignore */
383
386
  fontSizeHandler(e) {
384
- const range = this.wysiwyg().wysiwygObj.getSelection();
385
- if (!range.length)
387
+ const range = this.service.wysiwyg()?.quillObj().getSelection();
388
+ if (!range?.length)
386
389
  return;
387
390
  if (e === 'medium') {
388
- this.wysiwyg().fontSize(false, range);
391
+ this.service.wysiwyg().fontSize(false, range);
389
392
  this.selectedFont.set('medium');
390
393
  }
391
394
  else {
392
- this.wysiwyg().fontSize(e, range);
395
+ this.service.wysiwyg().fontSize(e, range);
393
396
  this.selectedFont.set(e);
394
397
  }
395
398
  }
@@ -406,23 +409,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
406
409
  * @category Components
407
410
  */
408
411
  class AXWysiwygHistoryComponent {
409
- /** @ignore */
410
412
  constructor() {
411
413
  /** @ignore */
412
414
  this.service = inject(AXWysiwygService);
413
- /** @ignore */
414
- this.wysiwyg = signal(null);
415
- afterNextRender(() => {
416
- this.wysiwyg.set(this.service.wysiwyg());
417
- });
418
415
  }
419
416
  /** @ignore */
420
417
  undo() {
421
- this.wysiwyg().undo();
418
+ this.service.wysiwyg().undo();
422
419
  }
423
420
  /** @ignore */
424
421
  redo() {
425
- this.wysiwyg().redo();
422
+ this.service.wysiwyg().redo();
426
423
  }
427
424
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXWysiwygHistoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
428
425
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXWysiwygHistoryComponent, selector: "ax-wysiwyg-history", ngImport: i0, template: "<ax-button class=\"\" (click)=\"undo()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-undo\"></ax-icon>\n</ax-button>\n\n<ax-button class=\"\" (click)=\"redo()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-redo\"></ax-icon>\n</ax-button>\n", styles: [""], dependencies: [{ kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }], encapsulation: i0.ViewEncapsulation.None }); }
@@ -430,20 +427,17 @@ class AXWysiwygHistoryComponent {
430
427
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXWysiwygHistoryComponent, decorators: [{
431
428
  type: Component,
432
429
  args: [{ selector: 'ax-wysiwyg-history', encapsulation: ViewEncapsulation.None, template: "<ax-button class=\"\" (click)=\"undo()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-undo\"></ax-icon>\n</ax-button>\n\n<ax-button class=\"\" (click)=\"redo()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-redo\"></ax-icon>\n</ax-button>\n" }]
433
- }], ctorParameters: () => [] });
430
+ }] });
434
431
 
435
432
  /**
436
433
  * A container component for WYSIWYG (What You See Is What You Get) editor functionality.
437
434
  * @category Components
438
435
  */
439
436
  class AXWysiwygInsertComponent {
440
- /** @ignore */
441
437
  constructor() {
442
438
  /** @ignore */
443
439
  this.service = inject(AXWysiwygService);
444
440
  /** @ignore */
445
- this.wysiwyg = signal(null);
446
- /** @ignore */
447
441
  this.textBoxOptions = {
448
442
  text: '',
449
443
  placeholder: 'Enter yor url ...',
@@ -457,13 +451,10 @@ class AXWysiwygInsertComponent {
457
451
  offsetX: 0,
458
452
  offsetY: 0,
459
453
  };
460
- afterNextRender(() => {
461
- this.wysiwyg.set(this.service.wysiwyg());
462
- });
463
454
  }
464
455
  /** @ignore */
465
456
  submitLink() {
466
- this.wysiwyg().addImage(this.textBoxOptions.text);
457
+ this.service.wysiwyg().addImage(this.textBoxOptions.text);
467
458
  }
468
459
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXWysiwygInsertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
469
460
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXWysiwygInsertComponent, selector: "ax-wysiwyg-insert", ngImport: i0, template: "<ax-button #linkBtn look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-image\"></ax-icon>\n</ax-button>\n\n<ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"linkBtn\"\n [placement]=\"popoverOption.placement\"\n>\n <div class=\"ax-overlay-pane ax-insert-container\">\n <ax-text-box\n class=\"{{ textBoxOptions.size }}\"\n [(ngModel)]=\"textBoxOptions.text\"\n [placeholder]=\"textBoxOptions.placeholder\"\n >\n <ax-suffix>\n <ax-button (click)=\"submitLink()\" class=\"ax-sm\" color=\"secondary\" text=\"Add\"> </ax-button>\n </ax-suffix>\n </ax-text-box>\n </div>\n</ax-popover>\n", styles: [".ax-insert-container{display:flex;padding:.5rem}\n"], dependencies: [{ kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: i5.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }], encapsulation: i0.ViewEncapsulation.None }); }
@@ -471,7 +462,7 @@ class AXWysiwygInsertComponent {
471
462
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXWysiwygInsertComponent, decorators: [{
472
463
  type: Component,
473
464
  args: [{ selector: 'ax-wysiwyg-insert', encapsulation: ViewEncapsulation.None, template: "<ax-button #linkBtn look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-image\"></ax-icon>\n</ax-button>\n\n<ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"linkBtn\"\n [placement]=\"popoverOption.placement\"\n>\n <div class=\"ax-overlay-pane ax-insert-container\">\n <ax-text-box\n class=\"{{ textBoxOptions.size }}\"\n [(ngModel)]=\"textBoxOptions.text\"\n [placeholder]=\"textBoxOptions.placeholder\"\n >\n <ax-suffix>\n <ax-button (click)=\"submitLink()\" class=\"ax-sm\" color=\"secondary\" text=\"Add\"> </ax-button>\n </ax-suffix>\n </ax-text-box>\n </div>\n</ax-popover>\n", styles: [".ax-insert-container{display:flex;padding:.5rem}\n"] }]
474
- }], ctorParameters: () => [] });
465
+ }] });
475
466
 
476
467
  /**
477
468
  * A container component for WYSIWYG (What You See Is What You Get) editor functionality.
@@ -483,49 +474,44 @@ class AXWysiwygListComponent {
483
474
  /** @ignore */
484
475
  this.service = inject(AXWysiwygService);
485
476
  /** @ignore */
486
- this.wysiwyg = signal(null);
487
- /** @ignore */
488
477
  this.listState = signal('');
489
478
  effect(() => {
490
- if (!this.wysiwyg())
479
+ if (!this.service.wysiwyg())
491
480
  return;
492
481
  switch (this.service.currentSelectedElemList()) {
493
482
  case 'ordered':
494
- this.wysiwyg().list('ordered');
483
+ this.service.wysiwyg().list('ordered');
495
484
  this.listState.set('ordered');
496
485
  break;
497
486
  case 'bullet':
498
- this.wysiwyg().list('bullet');
487
+ this.service.wysiwyg().list('bullet');
499
488
  this.listState.set('bullet');
500
489
  break;
501
490
  default:
502
- this.wysiwyg().list('');
491
+ this.service.wysiwyg().list('');
503
492
  this.listState.set('');
504
493
  }
505
494
  }, { allowSignalWrites: true });
506
- afterNextRender(() => {
507
- this.wysiwyg.set(this.service.wysiwyg());
508
- });
509
495
  }
510
496
  /** @ignore */
511
497
  orderList() {
512
498
  if (!this.listState() || this.listState() === 'bullet') {
513
- this.wysiwyg().list('ordered');
499
+ this.service.wysiwyg().list('ordered');
514
500
  this.listState.set('ordered');
515
501
  }
516
502
  else {
517
- this.wysiwyg().list('');
503
+ this.service.wysiwyg().list('');
518
504
  this.listState.set('');
519
505
  }
520
506
  }
521
507
  /** @ignore */
522
508
  unOrderList() {
523
509
  if (!this.listState() || this.listState() === 'ordered') {
524
- this.wysiwyg().list('bullet');
510
+ this.service.wysiwyg().list('bullet');
525
511
  this.listState.set('bullet');
526
512
  }
527
513
  else {
528
- this.wysiwyg().list('');
514
+ this.service.wysiwyg().list('');
529
515
  this.listState.set('');
530
516
  }
531
517
  }