@acorex/components 18.12.1 → 18.12.3

Sign up to get free protection for your applications and to get access to all the features.
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
  }