@tmdjr/ngx-editor-js2 20.3.4 → 21.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -19,7 +19,7 @@ import { ComponentPortal } from '@angular/cdk/portal';
19
19
 
20
20
  class ControlAccessorDirective {
21
21
  elementRef = inject(ElementRef);
22
- defaultValue = input();
22
+ defaultValue = input(...(ngDevMode ? [undefined, { debugName: "defaultValue" }] : []));
23
23
  onChange = () => { };
24
24
  onTouched = () => { };
25
25
  writeValue() {
@@ -37,8 +37,8 @@ class ControlAccessorDirective {
37
37
  onInput() {
38
38
  this.onChange(this.elementRef.nativeElement.innerHTML);
39
39
  }
40
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ControlAccessorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
41
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.4", type: ControlAccessorDirective, isStandalone: true, selector: "[controlAccessor]", inputs: { defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "blur": "onBlur()", "input": "onInput()" } }, providers: [
40
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ControlAccessorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
41
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: ControlAccessorDirective, isStandalone: true, selector: "[controlAccessor]", inputs: { defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "blur": "onBlur()", "input": "onInput()" } }, providers: [
42
42
  {
43
43
  provide: NG_VALUE_ACCESSOR,
44
44
  useExisting: forwardRef(() => ControlAccessorDirective),
@@ -46,7 +46,7 @@ class ControlAccessorDirective {
46
46
  },
47
47
  ], ngImport: i0 });
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ControlAccessorDirective, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ControlAccessorDirective, decorators: [{
50
50
  type: Directive,
51
51
  args: [{
52
52
  selector: '[controlAccessor]',
@@ -58,7 +58,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
58
58
  },
59
59
  ],
60
60
  }]
61
- }], propDecorators: { onBlur: [{
61
+ }], propDecorators: { defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], onBlur: [{
62
62
  type: HostListener,
63
63
  args: ['blur']
64
64
  }], onInput: [{
@@ -68,19 +68,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
68
68
 
69
69
  class AutofocusDirective {
70
70
  elementRef = inject(ElementRef);
71
- autofocus = input(false);
71
+ autofocus = input(false, ...(ngDevMode ? [{ debugName: "autofocus" }] : []));
72
72
  ngAfterContentInit() {
73
73
  this.autofocus() && this.elementRef.nativeElement.focus?.();
74
74
  }
75
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AutofocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
76
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.4", type: AutofocusDirective, isStandalone: true, selector: "[autofocus]", inputs: { autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
75
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AutofocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
76
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: AutofocusDirective, isStandalone: true, selector: "[autofocus]", inputs: { autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AutofocusDirective, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AutofocusDirective, decorators: [{
79
79
  type: Directive,
80
80
  args: [{
81
81
  selector: '[autofocus]',
82
82
  }]
83
- }] });
83
+ }], propDecorators: { autofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocus", required: false }] }] } });
84
84
 
85
85
  var MovePositionActions;
86
86
  (function (MovePositionActions) {
@@ -91,7 +91,7 @@ var MovePositionActions;
91
91
 
92
92
  class ToolbarBlockOptionsComponent {
93
93
  Position = MovePositionActions;
94
- blockOptionActions = input();
94
+ blockOptionActions = input(...(ngDevMode ? [undefined, { debugName: "blockOptionActions" }] : []));
95
95
  handleActionEmitter = output({ alias: 'handleAction' });
96
96
  moveBlockPositionEmitter = output({
97
97
  alias: 'moveBlockPosition',
@@ -102,8 +102,8 @@ class ToolbarBlockOptionsComponent {
102
102
  handleAction(action) {
103
103
  this.handleActionEmitter.emit(action);
104
104
  }
105
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolbarBlockOptionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
106
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: ToolbarBlockOptionsComponent, isStandalone: true, selector: "toolbar-block-options", inputs: { blockOptionActions: { classPropertyName: "blockOptionActions", publicName: "blockOptionActions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { handleActionEmitter: "handleAction", moveBlockPositionEmitter: "moveBlockPosition" }, ngImport: i0, template: `
105
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolbarBlockOptionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
106
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: ToolbarBlockOptionsComponent, isStandalone: true, selector: "toolbar-block-options", inputs: { blockOptionActions: { classPropertyName: "blockOptionActions", publicName: "blockOptionActions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { handleActionEmitter: "handleAction", moveBlockPositionEmitter: "moveBlockPosition" }, ngImport: i0, template: `
107
107
  <div class="actions-panel">
108
108
  <div class="action-btn" matRipple (click)="movePosition(Position.UP)">
109
109
  <mat-icon>arrow_upward</mat-icon>
@@ -130,7 +130,7 @@ class ToolbarBlockOptionsComponent {
130
130
  </div>
131
131
  `, isInline: true, styles: [":host .actions-panel{display:flex;flex-direction:row;flex-wrap:wrap;gap:1px;width:128px;max-height:128px;border-radius:4px;overflow:auto;background:var(--mat-sys-secondary);box-shadow:var(--mat-sys-level5)}:host .actions-panel .action-btn{cursor:pointer;width:42px;height:42px;display:flex;align-items:center;justify-content:center;border-radius:4px;color:var(--mat-sys-on-secondary);background:var(--mat-sys-secondary)}:host .actions-panel .action-btn:hover,:host .actions-panel .action-btn:focus{color:var(--mat-sys-secondary);background:var(--mat-sys-on-secondary)}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }] });
132
132
  }
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolbarBlockOptionsComponent, decorators: [{
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolbarBlockOptionsComponent, decorators: [{
134
134
  type: Component,
135
135
  args: [{ selector: 'toolbar-block-options', imports: [MatIcon, MatRipple], template: `
136
136
  <div class="actions-panel">
@@ -158,11 +158,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
158
158
  }
159
159
  </div>
160
160
  `, styles: [":host .actions-panel{display:flex;flex-direction:row;flex-wrap:wrap;gap:1px;width:128px;max-height:128px;border-radius:4px;overflow:auto;background:var(--mat-sys-secondary);box-shadow:var(--mat-sys-level5)}:host .actions-panel .action-btn{cursor:pointer;width:42px;height:42px;display:flex;align-items:center;justify-content:center;border-radius:4px;color:var(--mat-sys-on-secondary);background:var(--mat-sys-secondary)}:host .actions-panel .action-btn:hover,:host .actions-panel .action-btn:focus{color:var(--mat-sys-secondary);background:var(--mat-sys-on-secondary)}\n"] }]
161
- }] });
161
+ }], propDecorators: { blockOptionActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "blockOptionActions", required: false }] }], handleActionEmitter: [{ type: i0.Output, args: ["handleAction"] }], moveBlockPositionEmitter: [{ type: i0.Output, args: ["moveBlockPosition"] }] } });
162
162
 
163
163
  class ToolbarBlocksComponent {
164
164
  addBlockEmitter = output({ alias: 'addBlock' });
165
- supportedBlocks = input([]);
165
+ supportedBlocks = input([], ...(ngDevMode ? [{ debugName: "supportedBlocks" }] : []));
166
166
  supportedBlocks$ = toObservable(this.supportedBlocks);
167
167
  blockCtrl = new FormControl([]);
168
168
  filter$ = this.blockCtrl.valueChanges.pipe(startWith(''));
@@ -181,8 +181,8 @@ class ToolbarBlocksComponent {
181
181
  addBlock(block) {
182
182
  this.addBlockEmitter.emit(block?.component);
183
183
  }
184
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolbarBlocksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
185
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: ToolbarBlocksComponent, isStandalone: true, selector: "toolbar-blocks", inputs: { supportedBlocks: { classPropertyName: "supportedBlocks", publicName: "supportedBlocks", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { addBlockEmitter: "addBlock" }, ngImport: i0, template: `
184
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolbarBlocksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
185
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: ToolbarBlocksComponent, isStandalone: true, selector: "toolbar-blocks", inputs: { supportedBlocks: { classPropertyName: "supportedBlocks", publicName: "supportedBlocks", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { addBlockEmitter: "addBlock" }, ngImport: i0, template: `
186
186
  <div class="block-list-container">
187
187
  <mat-form-field appearance="fill" color="accent">
188
188
  <mat-label>Filter</mat-label>
@@ -207,7 +207,7 @@ class ToolbarBlocksComponent {
207
207
  </div>
208
208
  `, isInline: true, styles: [":host .mat-mdc-list-base{padding-top:0;margin-top:-14px}:host .block-list-container{border-radius:4px;background:var(--mat-sys-secondary-container);box-shadow:var(--mat-sys-level5)}:host .block-list-panel{max-width:280px;max-height:240px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;overflow:auto;color:var(--mat-sys-on-secondary-container)}:host mat-list-item{cursor:pointer;-webkit-user-select:none;user-select:none}:host mat-list-item:hover,:host mat-list-item:focus{background:var(--mat-sys-surface-bright)}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
209
209
  }
210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolbarBlocksComponent, decorators: [{
210
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolbarBlocksComponent, decorators: [{
211
211
  type: Component,
212
212
  args: [{ selector: 'toolbar-blocks', imports: [
213
213
  MatFormField,
@@ -242,18 +242,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
242
242
  }
243
243
  </div>
244
244
  `, styles: [":host .mat-mdc-list-base{padding-top:0;margin-top:-14px}:host .block-list-container{border-radius:4px;background:var(--mat-sys-secondary-container);box-shadow:var(--mat-sys-level5)}:host .block-list-panel{max-width:280px;max-height:240px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;overflow:auto;color:var(--mat-sys-on-secondary-container)}:host mat-list-item{cursor:pointer;-webkit-user-select:none;user-select:none}:host mat-list-item:hover,:host mat-list-item:focus{background:var(--mat-sys-surface-bright)}\n"] }]
245
- }] });
245
+ }], propDecorators: { addBlockEmitter: [{ type: i0.Output, args: ["addBlock"] }], supportedBlocks: [{ type: i0.Input, args: [{ isSignal: true, alias: "supportedBlocks", required: false }] }] } });
246
246
 
247
247
  class ToolbarComponent {
248
- componentContextPositionIndex = input.required();
249
- supportedBlocks = input.required();
250
- blockOptionActions = input();
251
- actionCallback = input(() => () => { });
252
- formControlName = input();
253
- addBlockCallback = input.required();
254
- moveBlockPositionCallback = input.required();
255
- openBlocks = signal(false);
256
- openBlocksOption = signal(false);
248
+ componentContextPositionIndex = input.required(...(ngDevMode ? [{ debugName: "componentContextPositionIndex" }] : []));
249
+ supportedBlocks = input.required(...(ngDevMode ? [{ debugName: "supportedBlocks" }] : []));
250
+ blockOptionActions = input(...(ngDevMode ? [undefined, { debugName: "blockOptionActions" }] : []));
251
+ actionCallback = input(() => () => { }, ...(ngDevMode ? [{ debugName: "actionCallback" }] : []));
252
+ formControlName = input(...(ngDevMode ? [undefined, { debugName: "formControlName" }] : []));
253
+ addBlockCallback = input.required(...(ngDevMode ? [{ debugName: "addBlockCallback" }] : []));
254
+ moveBlockPositionCallback = input.required(...(ngDevMode ? [{ debugName: "moveBlockPositionCallback" }] : []));
255
+ openBlocks = signal(false, ...(ngDevMode ? [{ debugName: "openBlocks" }] : []));
256
+ openBlocksOption = signal(false, ...(ngDevMode ? [{ debugName: "openBlocksOption" }] : []));
257
257
  openBlocksList() {
258
258
  this.openBlocks.update((prev) => !prev);
259
259
  }
@@ -276,8 +276,8 @@ class ToolbarComponent {
276
276
  this.openBlocks.set(false);
277
277
  this.openBlocksOption.set(false);
278
278
  }
279
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
280
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.4", type: ToolbarComponent, isStandalone: true, selector: "toolbar", inputs: { componentContextPositionIndex: { classPropertyName: "componentContextPositionIndex", publicName: "componentContextPositionIndex", isSignal: true, isRequired: true, transformFunction: null }, supportedBlocks: { classPropertyName: "supportedBlocks", publicName: "supportedBlocks", isSignal: true, isRequired: true, transformFunction: null }, blockOptionActions: { classPropertyName: "blockOptionActions", publicName: "blockOptionActions", isSignal: true, isRequired: false, transformFunction: null }, actionCallback: { classPropertyName: "actionCallback", publicName: "actionCallback", isSignal: true, isRequired: false, transformFunction: null }, formControlName: { classPropertyName: "formControlName", publicName: "formControlName", isSignal: true, isRequired: false, transformFunction: null }, addBlockCallback: { classPropertyName: "addBlockCallback", publicName: "addBlockCallback", isSignal: true, isRequired: true, transformFunction: null }, moveBlockPositionCallback: { classPropertyName: "moveBlockPositionCallback", publicName: "moveBlockPositionCallback", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
279
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
280
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.0", type: ToolbarComponent, isStandalone: true, selector: "toolbar", inputs: { componentContextPositionIndex: { classPropertyName: "componentContextPositionIndex", publicName: "componentContextPositionIndex", isSignal: true, isRequired: true, transformFunction: null }, supportedBlocks: { classPropertyName: "supportedBlocks", publicName: "supportedBlocks", isSignal: true, isRequired: true, transformFunction: null }, blockOptionActions: { classPropertyName: "blockOptionActions", publicName: "blockOptionActions", isSignal: true, isRequired: false, transformFunction: null }, actionCallback: { classPropertyName: "actionCallback", publicName: "actionCallback", isSignal: true, isRequired: false, transformFunction: null }, formControlName: { classPropertyName: "formControlName", publicName: "formControlName", isSignal: true, isRequired: false, transformFunction: null }, addBlockCallback: { classPropertyName: "addBlockCallback", publicName: "addBlockCallback", isSignal: true, isRequired: true, transformFunction: null }, moveBlockPositionCallback: { classPropertyName: "moveBlockPositionCallback", publicName: "moveBlockPositionCallback", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
281
281
  <div class="toolbar-buttons-container">
282
282
  <div
283
283
  class="toolbar-buttons"
@@ -333,9 +333,9 @@ class ToolbarComponent {
333
333
  (moveBlockPosition)="moveBlockPosition($event)"
334
334
  ></toolbar-block-options>
335
335
  </ng-template>
336
- `, isInline: true, styles: [":host .toolbar-buttons-container{position:relative;display:flex;gap:10px}:host .toolbar-buttons{cursor:pointer;width:30px;height:30px;display:flex;justify-content:center;align-items:center;border-radius:4px;margin-bottom:14px;-webkit-user-select:none;user-select:none;color:var(--mat-sys-on-tertiary-container);background:var(--mat-sys-tertiary-container);box-shadow:var(--mat-sys-level2)}:host .toolbar-buttons:hover,:host .toolbar-buttons:focus{background:var(--mat-sys-surface-bright)}@media (min-width: 768px){:host{position:absolute;margin-left:-80px;top:0}}\n"], dependencies: [{ kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ToolbarBlockOptionsComponent, selector: "toolbar-block-options", inputs: ["blockOptionActions"], outputs: ["handleAction", "moveBlockPosition"] }, { kind: "component", type: ToolbarBlocksComponent, selector: "toolbar-blocks", inputs: ["supportedBlocks"], outputs: ["addBlock"] }] });
336
+ `, isInline: true, styles: [":host .toolbar-buttons-container{position:relative;display:flex;gap:10px}:host .toolbar-buttons{cursor:pointer;width:30px;height:30px;display:flex;justify-content:center;align-items:center;border-radius:4px;margin-bottom:14px;-webkit-user-select:none;user-select:none;color:var(--mat-sys-on-tertiary-container);background:var(--mat-sys-tertiary-container);box-shadow:var(--mat-sys-level2)}:host .toolbar-buttons:hover,:host .toolbar-buttons:focus{background:var(--mat-sys-surface-bright)}@media(min-width:768px){:host{position:absolute;margin-left:-80px;top:0}}\n"], dependencies: [{ kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ToolbarBlockOptionsComponent, selector: "toolbar-block-options", inputs: ["blockOptionActions"], outputs: ["handleAction", "moveBlockPosition"] }, { kind: "component", type: ToolbarBlocksComponent, selector: "toolbar-blocks", inputs: ["supportedBlocks"], outputs: ["addBlock"] }] });
337
337
  }
338
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolbarComponent, decorators: [{
338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolbarComponent, decorators: [{
339
339
  type: Component,
340
340
  args: [{ selector: 'toolbar', imports: [
341
341
  CdkDragHandle,
@@ -399,8 +399,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
399
399
  (moveBlockPosition)="moveBlockPosition($event)"
400
400
  ></toolbar-block-options>
401
401
  </ng-template>
402
- `, styles: [":host .toolbar-buttons-container{position:relative;display:flex;gap:10px}:host .toolbar-buttons{cursor:pointer;width:30px;height:30px;display:flex;justify-content:center;align-items:center;border-radius:4px;margin-bottom:14px;-webkit-user-select:none;user-select:none;color:var(--mat-sys-on-tertiary-container);background:var(--mat-sys-tertiary-container);box-shadow:var(--mat-sys-level2)}:host .toolbar-buttons:hover,:host .toolbar-buttons:focus{background:var(--mat-sys-surface-bright)}@media (min-width: 768px){:host{position:absolute;margin-left:-80px;top:0}}\n"] }]
403
- }] });
402
+ `, styles: [":host .toolbar-buttons-container{position:relative;display:flex;gap:10px}:host .toolbar-buttons{cursor:pointer;width:30px;height:30px;display:flex;justify-content:center;align-items:center;border-radius:4px;margin-bottom:14px;-webkit-user-select:none;user-select:none;color:var(--mat-sys-on-tertiary-container);background:var(--mat-sys-tertiary-container);box-shadow:var(--mat-sys-level2)}:host .toolbar-buttons:hover,:host .toolbar-buttons:focus{background:var(--mat-sys-surface-bright)}@media(min-width:768px){:host{position:absolute;margin-left:-80px;top:0}}\n"] }]
403
+ }], propDecorators: { componentContextPositionIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "componentContextPositionIndex", required: true }] }], supportedBlocks: [{ type: i0.Input, args: [{ isSignal: true, alias: "supportedBlocks", required: true }] }], blockOptionActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "blockOptionActions", required: false }] }], actionCallback: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionCallback", required: false }] }], formControlName: [{ type: i0.Input, args: [{ isSignal: true, alias: "formControlName", required: false }] }], addBlockCallback: [{ type: i0.Input, args: [{ isSignal: true, alias: "addBlockCallback", required: true }] }], moveBlockPositionCallback: [{ type: i0.Input, args: [{ isSignal: true, alias: "moveBlockPositionCallback", required: true }] }] } });
404
404
 
405
405
  class BlockMovementService {
406
406
  componentRefMap = new Map();
@@ -435,10 +435,10 @@ class BlockMovementService {
435
435
  removeBlockComponent(ngxEditor, index, clear = false) {
436
436
  return of(Array.from(this.componentRefMap.values())).pipe(filter((componentRefs) => clear || componentRefs.length !== 1), map((componentRefs) => componentRefs.find((componentRef) => ngxEditor.indexOf(componentRef.hostView) === index - 1)), map((componentRef) => this.componentRefMap.delete(componentRef?.instance ?? {})), tap((successful) => successful && ngxEditor.remove(index - 1)), defaultIfEmpty(false));
437
437
  }
438
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: BlockMovementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
439
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: BlockMovementService, providedIn: 'root' });
438
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BlockMovementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
439
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BlockMovementService, providedIn: 'root' });
440
440
  }
441
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: BlockMovementService, decorators: [{
441
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BlockMovementService, decorators: [{
442
442
  type: Injectable,
443
443
  args: [{
444
444
  providedIn: 'root',
@@ -529,10 +529,10 @@ class EditorJsService {
529
529
  this.ngxEditor.clear();
530
530
  }), defaultIfEmpty(false));
531
531
  }
532
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: EditorJsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
533
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: EditorJsService, providedIn: 'root' });
532
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: EditorJsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
533
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: EditorJsService, providedIn: 'root' });
534
534
  }
535
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: EditorJsService, decorators: [{
535
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: EditorJsService, decorators: [{
536
536
  type: Injectable,
537
537
  args: [{
538
538
  providedIn: 'root',
@@ -571,10 +571,10 @@ class ToolFabService {
571
571
  movePositionAction(action, index, formControlName) {
572
572
  return lastValueFrom(this.editorJsService.determineMovePositionAction(action, index, formControlName));
573
573
  }
574
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolFabService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
575
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolFabService, providedIn: 'root' });
574
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolFabService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
575
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolFabService, providedIn: 'root' });
576
576
  }
577
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolFabService, decorators: [{
577
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolFabService, decorators: [{
578
578
  type: Injectable,
579
579
  args: [{
580
580
  providedIn: 'root',
@@ -584,11 +584,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
584
584
  class ToolbarFabDirective {
585
585
  toolFabService = inject(ToolFabService);
586
586
  viewContainerRef = inject(ViewContainerRef);
587
- autofocus = input();
588
- blockOptionActions = input();
589
- actionCallback = input.required();
590
- componentContextPositionIndex = input.required();
591
- formControlName = input.required();
587
+ autofocus = input(...(ngDevMode ? [undefined, { debugName: "autofocus" }] : []));
588
+ blockOptionActions = input(...(ngDevMode ? [undefined, { debugName: "blockOptionActions" }] : []));
589
+ actionCallback = input.required(...(ngDevMode ? [{ debugName: "actionCallback" }] : []));
590
+ componentContextPositionIndex = input.required(...(ngDevMode ? [{ debugName: "componentContextPositionIndex" }] : []));
591
+ formControlName = input.required(...(ngDevMode ? [{ debugName: "formControlName" }] : []));
592
592
  onMouseEnter() {
593
593
  this.toolFabService.componentContext.next({
594
594
  viewContainerRef: this.viewContainerRef,
@@ -603,15 +603,15 @@ class ToolbarFabDirective {
603
603
  this.autofocus() && this.onMouseEnter();
604
604
  });
605
605
  }
606
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolbarFabDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
607
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.4", type: ToolbarFabDirective, isStandalone: true, selector: "[toolbarFab]", inputs: { autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, blockOptionActions: { classPropertyName: "blockOptionActions", publicName: "blockOptionActions", isSignal: true, isRequired: false, transformFunction: null }, actionCallback: { classPropertyName: "actionCallback", publicName: "actionCallback", isSignal: true, isRequired: true, transformFunction: null }, componentContextPositionIndex: { classPropertyName: "componentContextPositionIndex", publicName: "componentContextPositionIndex", isSignal: true, isRequired: true, transformFunction: null }, formControlName: { classPropertyName: "formControlName", publicName: "formControlName", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mouseenter": "onMouseEnter()" } }, ngImport: i0 });
606
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolbarFabDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
607
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: ToolbarFabDirective, isStandalone: true, selector: "[toolbarFab]", inputs: { autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, blockOptionActions: { classPropertyName: "blockOptionActions", publicName: "blockOptionActions", isSignal: true, isRequired: false, transformFunction: null }, actionCallback: { classPropertyName: "actionCallback", publicName: "actionCallback", isSignal: true, isRequired: true, transformFunction: null }, componentContextPositionIndex: { classPropertyName: "componentContextPositionIndex", publicName: "componentContextPositionIndex", isSignal: true, isRequired: true, transformFunction: null }, formControlName: { classPropertyName: "formControlName", publicName: "formControlName", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mouseenter": "onMouseEnter()" } }, ngImport: i0 });
608
608
  }
609
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolbarFabDirective, decorators: [{
609
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolbarFabDirective, decorators: [{
610
610
  type: Directive,
611
611
  args: [{
612
612
  selector: '[toolbarFab]',
613
613
  }]
614
- }], ctorParameters: () => [], propDecorators: { onMouseEnter: [{
614
+ }], ctorParameters: () => [], propDecorators: { autofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocus", required: false }] }], blockOptionActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "blockOptionActions", required: false }] }], actionCallback: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionCallback", required: true }] }], componentContextPositionIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "componentContextPositionIndex", required: true }] }], formControlName: [{ type: i0.Input, args: [{ isSignal: true, alias: "formControlName", required: true }] }], onMouseEnter: [{
615
615
  type: HostListener,
616
616
  args: ['mouseenter']
617
617
  }] } });
@@ -622,10 +622,10 @@ class CleanPasteDataDirective {
622
622
  const text = event.clipboardData?.getData('text/plain');
623
623
  document.execCommand('insertText', false, text);
624
624
  }
625
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: CleanPasteDataDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
626
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.4", type: CleanPasteDataDirective, isStandalone: true, selector: "[cleanPasteData]", host: { listeners: { "paste": "onPaste($event)" } }, ngImport: i0 });
625
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: CleanPasteDataDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
626
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: CleanPasteDataDirective, isStandalone: true, selector: "[cleanPasteData]", host: { listeners: { "paste": "onPaste($event)" } }, ngImport: i0 });
627
627
  }
628
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: CleanPasteDataDirective, decorators: [{
628
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: CleanPasteDataDirective, decorators: [{
629
629
  type: Directive,
630
630
  args: [{
631
631
  selector: '[cleanPasteData]',
@@ -636,11 +636,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
636
636
  }] } });
637
637
 
638
638
  class HeaderBlockComponent {
639
- sortIndex = input(0);
639
+ sortIndex = input(0, ...(ngDevMode ? [{ debugName: "sortIndex" }] : []));
640
640
  componentInstanceName = 'HeaderBlockComponent';
641
- autofocus = input(true);
642
- formGroup = input.required();
643
- formControlName = input.required();
641
+ autofocus = input(true, ...(ngDevMode ? [{ debugName: "autofocus" }] : []));
642
+ formGroup = input.required(...(ngDevMode ? [{ debugName: "formGroup" }] : []));
643
+ formControlName = input.required(...(ngDevMode ? [{ debugName: "formControlName" }] : []));
644
644
  blockOptionActions = input([
645
645
  { action: 'h1', text: 'H1' },
646
646
  { action: 'h2', text: 'H2' },
@@ -648,14 +648,14 @@ class HeaderBlockComponent {
648
648
  { action: 'h4', text: 'H4' },
649
649
  { action: 'h5', text: 'H5' },
650
650
  { action: 'h6', text: 'H6' },
651
- ]);
652
- savedAction = signal('h1');
651
+ ], ...(ngDevMode ? [{ debugName: "blockOptionActions" }] : []));
652
+ savedAction = signal('h1', ...(ngDevMode ? [{ debugName: "savedAction" }] : []));
653
653
  actionCallbackBind = this.actionCallback.bind(this);
654
654
  actionCallback(selectedAction) {
655
655
  this.savedAction.set(selectedAction);
656
656
  }
657
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: HeaderBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
658
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: HeaderBlockComponent, isStandalone: true, selector: "header-block", inputs: { sortIndex: { classPropertyName: "sortIndex", publicName: "sortIndex", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null }, formControlName: { classPropertyName: "formControlName", publicName: "formControlName", isSignal: true, isRequired: true, transformFunction: null }, blockOptionActions: { classPropertyName: "blockOptionActions", publicName: "blockOptionActions", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "cdk-drag-animating" }, hostDirectives: [{ directive: i1$1.CdkDrag }], ngImport: i0, template: `
657
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: HeaderBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
658
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: HeaderBlockComponent, isStandalone: true, selector: "header-block", inputs: { sortIndex: { classPropertyName: "sortIndex", publicName: "sortIndex", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null }, formControlName: { classPropertyName: "formControlName", publicName: "formControlName", isSignal: true, isRequired: true, transformFunction: null }, blockOptionActions: { classPropertyName: "blockOptionActions", publicName: "blockOptionActions", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "cdk-drag-animating" }, hostDirectives: [{ directive: i1$1.CdkDrag }], ngImport: i0, template: `
659
659
  @switch (savedAction()) {
660
660
  @case ('h1') {
661
661
  <h1>
@@ -703,9 +703,9 @@ class HeaderBlockComponent {
703
703
  [componentContextPositionIndex]="sortIndex()"
704
704
  ></span>
705
705
  </ng-template>
706
- `, isInline: true, styles: [":host{display:block;position:relative}:host :is(h1,h2,h3,h4,h5,h6){margin:0}:host :is(h1,h2,h3,h4,h5,h6) span{display:block;line-height:inherit}:host h1>*{font:var(--mat-sys-display-large)}:host h2>*{font:var(--mat-sys-display-medium)}:host h3>*{font:var(--mat-sys-display-small)}:host h4>*{font:var(--mat-sys-headline-large)}:host h5>*{font:var(--mat-sys-headline-medium)}:host h6>*{font:var(--mat-sys-headline-small)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: ControlAccessorDirective, selector: "[controlAccessor]", inputs: ["defaultValue"] }, { kind: "directive", type: AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "directive", type: ToolbarFabDirective, selector: "[toolbarFab]", inputs: ["autofocus", "blockOptionActions", "actionCallback", "componentContextPositionIndex", "formControlName"] }, { kind: "directive", type: CleanPasteDataDirective, selector: "[cleanPasteData]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
706
+ `, isInline: true, styles: [":host{display:block;position:relative}:host :is(h1,h2,h3,h4,h5,h6){margin:0}:host :is(h1,h2,h3,h4,h5,h6) span{display:block;line-height:inherit}:host h1>*{font:var(--mat-sys-display-large)}:host h2>*{font:var(--mat-sys-display-medium)}:host h3>*{font:var(--mat-sys-display-small)}:host h4>*{font:var(--mat-sys-headline-large)}:host h5>*{font:var(--mat-sys-headline-medium)}:host h6>*{font:var(--mat-sys-headline-small)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: ControlAccessorDirective, selector: "[controlAccessor]", inputs: ["defaultValue"] }, { kind: "directive", type: AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "directive", type: ToolbarFabDirective, selector: "[toolbarFab]", inputs: ["autofocus", "blockOptionActions", "actionCallback", "componentContextPositionIndex", "formControlName"] }, { kind: "directive", type: CleanPasteDataDirective, selector: "[cleanPasteData]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
707
707
  }
708
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: HeaderBlockComponent, decorators: [{
708
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: HeaderBlockComponent, decorators: [{
709
709
  type: Component,
710
710
  args: [{ selector: 'header-block', host: { class: 'cdk-drag-animating' }, hostDirectives: [CdkDrag], imports: [
711
711
  ReactiveFormsModule,
@@ -763,14 +763,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
763
763
  ></span>
764
764
  </ng-template>
765
765
  `, styles: [":host{display:block;position:relative}:host :is(h1,h2,h3,h4,h5,h6){margin:0}:host :is(h1,h2,h3,h4,h5,h6) span{display:block;line-height:inherit}:host h1>*{font:var(--mat-sys-display-large)}:host h2>*{font:var(--mat-sys-display-medium)}:host h3>*{font:var(--mat-sys-display-small)}:host h4>*{font:var(--mat-sys-headline-large)}:host h5>*{font:var(--mat-sys-headline-medium)}:host h6>*{font:var(--mat-sys-headline-small)}\n"] }]
766
- }] });
766
+ }], propDecorators: { sortIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortIndex", required: false }] }], autofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocus", required: false }] }], formGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "formGroup", required: true }] }], formControlName: [{ type: i0.Input, args: [{ isSignal: true, alias: "formControlName", required: true }] }], blockOptionActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "blockOptionActions", required: false }] }] } });
767
767
 
768
768
  class ParagraphBlockComponent {
769
- sortIndex = input(0);
769
+ sortIndex = input(0, ...(ngDevMode ? [{ debugName: "sortIndex" }] : []));
770
770
  componentInstanceName = 'ParagraphBlockComponent';
771
- autofocus = input(true);
772
- formGroup = input.required();
773
- formControlName = input.required();
771
+ autofocus = input(true, ...(ngDevMode ? [{ debugName: "autofocus" }] : []));
772
+ formGroup = input.required(...(ngDevMode ? [{ debugName: "formGroup" }] : []));
773
+ formControlName = input.required(...(ngDevMode ? [{ debugName: "formControlName" }] : []));
774
774
  blockOptionActions = input([
775
775
  { action: 'small', icon: 'density_small' },
776
776
  { action: 'medium', icon: 'density_medium' },
@@ -778,14 +778,14 @@ class ParagraphBlockComponent {
778
778
  { action: 'title-small', text: 'TS' },
779
779
  { action: 'title-medium', text: 'TM' },
780
780
  { action: 'title-large', text: 'TL' },
781
- ]);
782
- savedAction = signal('medium');
781
+ ], ...(ngDevMode ? [{ debugName: "blockOptionActions" }] : []));
782
+ savedAction = signal('medium', ...(ngDevMode ? [{ debugName: "savedAction" }] : []));
783
783
  actionCallbackBind = this.actionCallback.bind(this);
784
784
  actionCallback(action) {
785
785
  this.savedAction.update(() => action);
786
786
  }
787
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ParagraphBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
788
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.4", type: ParagraphBlockComponent, isStandalone: true, selector: "paragraph-block", inputs: { sortIndex: { classPropertyName: "sortIndex", publicName: "sortIndex", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null }, formControlName: { classPropertyName: "formControlName", publicName: "formControlName", isSignal: true, isRequired: true, transformFunction: null }, blockOptionActions: { classPropertyName: "blockOptionActions", publicName: "blockOptionActions", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "cdk-drag-animating" }, hostDirectives: [{ directive: i1$1.CdkDrag }], ngImport: i0, template: `
787
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ParagraphBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
788
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.0", type: ParagraphBlockComponent, isStandalone: true, selector: "paragraph-block", inputs: { sortIndex: { classPropertyName: "sortIndex", publicName: "sortIndex", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null }, formControlName: { classPropertyName: "formControlName", publicName: "formControlName", isSignal: true, isRequired: true, transformFunction: null }, blockOptionActions: { classPropertyName: "blockOptionActions", publicName: "blockOptionActions", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "cdk-drag-animating" }, hostDirectives: [{ directive: i1$1.CdkDrag }], ngImport: i0, template: `
789
789
  <ng-container [formGroup]="formGroup()">
790
790
  <p
791
791
  controlAccessor
@@ -801,9 +801,9 @@ class ParagraphBlockComponent {
801
801
  [componentContextPositionIndex]="sortIndex()"
802
802
  ></p>
803
803
  </ng-container>
804
- `, isInline: true, styles: [":host{display:block;position:relative}:host .small{font:var(--mat-sys-body-small)}:host .medium{font:var(--mat-sys-body-medium)}:host .large{font:var(--mat-sys-body-large)}:host .title-small{font:var(--mat-sys-title-small)}:host .title-medium{font:var(--mat-sys-title-medium)}:host .title-large{font:var(--mat-sys-title-large)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: ControlAccessorDirective, selector: "[controlAccessor]", inputs: ["defaultValue"] }, { kind: "directive", type: AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "directive", type: ToolbarFabDirective, selector: "[toolbarFab]", inputs: ["autofocus", "blockOptionActions", "actionCallback", "componentContextPositionIndex", "formControlName"] }, { kind: "directive", type: CleanPasteDataDirective, selector: "[cleanPasteData]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
804
+ `, isInline: true, styles: [":host{display:block;position:relative}:host .small{font:var(--mat-sys-body-small)}:host .medium{font:var(--mat-sys-body-medium)}:host .large{font:var(--mat-sys-body-large)}:host .title-small{font:var(--mat-sys-title-small)}:host .title-medium{font:var(--mat-sys-title-medium)}:host .title-large{font:var(--mat-sys-title-large)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: ControlAccessorDirective, selector: "[controlAccessor]", inputs: ["defaultValue"] }, { kind: "directive", type: AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "directive", type: ToolbarFabDirective, selector: "[toolbarFab]", inputs: ["autofocus", "blockOptionActions", "actionCallback", "componentContextPositionIndex", "formControlName"] }, { kind: "directive", type: CleanPasteDataDirective, selector: "[cleanPasteData]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
805
805
  }
806
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ParagraphBlockComponent, decorators: [{
806
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ParagraphBlockComponent, decorators: [{
807
807
  type: Component,
808
808
  args: [{ selector: 'paragraph-block', host: { class: 'cdk-drag-animating' }, hostDirectives: [CdkDrag], imports: [
809
809
  ReactiveFormsModule,
@@ -829,7 +829,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
829
829
  ></p>
830
830
  </ng-container>
831
831
  `, styles: [":host{display:block;position:relative}:host .small{font:var(--mat-sys-body-small)}:host .medium{font:var(--mat-sys-body-medium)}:host .large{font:var(--mat-sys-body-large)}:host .title-small{font:var(--mat-sys-title-small)}:host .title-medium{font:var(--mat-sys-title-medium)}:host .title-large{font:var(--mat-sys-title-large)}\n"] }]
832
- }] });
832
+ }], propDecorators: { sortIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortIndex", required: false }] }], autofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocus", required: false }] }], formGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "formGroup", required: true }] }], formControlName: [{ type: i0.Input, args: [{ isSignal: true, alias: "formControlName", required: true }] }], blockOptionActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "blockOptionActions", required: false }] }] } });
833
833
 
834
834
  const NGX_EDITORJS_OPTIONS = new InjectionToken('NGX_EDITORJS_OPTIONS');
835
835
  class NgxEditorJs2Service {
@@ -896,10 +896,10 @@ class NgxEditorJs2Service {
896
896
  addBlocksToEditorJs(blocks) {
897
897
  return combineLatest(blocks.map((block) => this.editorJsService.addBlockComponent(block, false)));
898
898
  }
899
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: NgxEditorJs2Service, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
900
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: NgxEditorJs2Service, providedIn: 'root' });
899
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgxEditorJs2Service, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
900
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgxEditorJs2Service, providedIn: 'root' });
901
901
  }
902
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: NgxEditorJs2Service, decorators: [{
902
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgxEditorJs2Service, decorators: [{
903
903
  type: Injectable,
904
904
  args: [{
905
905
  providedIn: 'root',
@@ -909,10 +909,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
909
909
  class EditorJsComponent {
910
910
  editorJsService = inject(EditorJsService);
911
911
  ngxEditorJs2Service = inject(NgxEditorJs2Service);
912
- bootstrapEditorJs = input();
913
- blocks = input.required({
914
- transform: (value) => this.ngxEditorJs2Service.blocksToLoad.next(value),
915
- });
912
+ bootstrapEditorJs = input(...(ngDevMode ? [undefined, { debugName: "bootstrapEditorJs" }] : []));
913
+ blocks = input.required({ ...(ngDevMode ? { debugName: "blocks" } : {}), transform: (value) => this.ngxEditorJs2Service.blocksToLoad.next(value) });
916
914
  ngxEditor = viewChild.required('ngxEditor', { read: ViewContainerRef });
917
915
  constructor() {
918
916
  effect(() => {
@@ -922,29 +920,29 @@ class EditorJsComponent {
922
920
  drop(event) {
923
921
  void lastValueFrom(this.editorJsService.moveBlockComponentPosition(event.previousIndex, event.currentIndex).pipe(tap(() => this.editorJsService.formGroup.updateValueAndValidity())));
924
922
  }
925
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: EditorJsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
926
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.4", type: EditorJsComponent, isStandalone: true, selector: "editor-js", inputs: { bootstrapEditorJs: { classPropertyName: "bootstrapEditorJs", publicName: "bootstrapEditorJs", isSignal: true, isRequired: false, transformFunction: null }, blocks: { classPropertyName: "blocks", publicName: "blocks", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "ngxEditor", first: true, predicate: ["ngxEditor"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
923
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: EditorJsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
924
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.0", type: EditorJsComponent, isStandalone: true, selector: "editor-js", inputs: { bootstrapEditorJs: { classPropertyName: "bootstrapEditorJs", publicName: "bootstrapEditorJs", isSignal: true, isRequired: false, transformFunction: null }, blocks: { classPropertyName: "blocks", publicName: "blocks", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "ngxEditor", first: true, predicate: ["ngxEditor"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
927
925
  <div cdkDropList class="block-list" (cdkDropListDropped)="drop($event)" >
928
926
  <ng-container #ngxEditor></ng-container>
929
927
  </div>
930
- `, isInline: true, styles: [":host{display:block}:host .block-list{min-height:60px}\n"], dependencies: [{ kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }] });
928
+ `, isInline: true, styles: [":host{display:block}:host .block-list{min-height:60px}\n"], dependencies: [{ kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }] });
931
929
  }
932
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: EditorJsComponent, decorators: [{
930
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: EditorJsComponent, decorators: [{
933
931
  type: Component,
934
932
  args: [{ selector: 'editor-js', imports: [CdkDropList], template: `
935
933
  <div cdkDropList class="block-list" (cdkDropListDropped)="drop($event)" >
936
934
  <ng-container #ngxEditor></ng-container>
937
935
  </div>
938
936
  `, styles: [":host{display:block}:host .block-list{min-height:60px}\n"] }]
939
- }], ctorParameters: () => [] });
937
+ }], ctorParameters: () => [], propDecorators: { bootstrapEditorJs: [{ type: i0.Input, args: [{ isSignal: true, alias: "bootstrapEditorJs", required: false }] }], blocks: [{ type: i0.Input, args: [{ isSignal: true, alias: "blocks", required: true }] }], ngxEditor: [{ type: i0.ViewChild, args: ['ngxEditor', { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
940
938
 
941
939
  class ToolbarInlineComponent {
942
940
  // @Input() selection!: Selection;
943
- selection = input.required();
941
+ selection = input.required(...(ngDevMode ? [{ debugName: "selection" }] : []));
944
942
  closeOverlayEmitter = new EventEmitter();
945
943
  renderer = inject(Renderer2);
946
944
  url = '';
947
- showURLInputField = signal(false);
945
+ showURLInputField = signal(false, ...(ngDevMode ? [{ debugName: "showURLInputField" }] : []));
948
946
  savedRanges = [];
949
947
  options = [
950
948
  { icon: 'format_bold', action: 'bold' },
@@ -988,8 +986,8 @@ class ToolbarInlineComponent {
988
986
  document.execCommand('createLink', false, this.url);
989
987
  this.closeOverlayEmitter.emit();
990
988
  }
991
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolbarInlineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
992
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: ToolbarInlineComponent, isStandalone: true, selector: "toolbar-inline", inputs: { selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { closeOverlayEmitter: "closeOverlay" }, ngImport: i0, template: `
989
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolbarInlineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
990
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: ToolbarInlineComponent, isStandalone: true, selector: "toolbar-inline", inputs: { selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { closeOverlayEmitter: "closeOverlay" }, ngImport: i0, template: `
993
991
  <div class="panel">
994
992
  @for (item of options; track $index) {
995
993
  <div class="inline-option" (click)="addInlineTag(item.action)">
@@ -1022,7 +1020,7 @@ class ToolbarInlineComponent {
1022
1020
  }
1023
1021
  `, isInline: true, styles: [":host{color:var(--mat-sys-on-secondary);background:var(--mat-sys-secondary);box-shadow:var(--mat-sys-level5);border-radius:8px}:host .panel{display:flex;width:230px;flex-wrap:wrap;gap:1px}:host .inline-option{cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center}:host .block-option-input{width:197px;height:32px;border:none;outline:none;color:var(--mat-sys-on-secondary);background-color:transparent;box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1024
1022
  }
1025
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolbarInlineComponent, decorators: [{
1023
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolbarInlineComponent, decorators: [{
1026
1024
  type: Component,
1027
1025
  args: [{ selector: 'toolbar-inline', imports: [MatListModule, MatIconModule, FormsModule], template: `
1028
1026
  <div class="panel">
@@ -1056,7 +1054,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
1056
1054
  </div>
1057
1055
  }
1058
1056
  `, styles: [":host{color:var(--mat-sys-on-secondary);background:var(--mat-sys-secondary);box-shadow:var(--mat-sys-level5);border-radius:8px}:host .panel{display:flex;width:230px;flex-wrap:wrap;gap:1px}:host .inline-option{cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center}:host .block-option-input{width:197px;height:32px;border:none;outline:none;color:var(--mat-sys-on-secondary);background-color:transparent;box-sizing:border-box}\n"] }]
1059
- }], propDecorators: { closeOverlayEmitter: [{
1057
+ }], propDecorators: { selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: true }] }], closeOverlayEmitter: [{
1060
1058
  type: Output,
1061
1059
  args: ['closeOverlay']
1062
1060
  }] } });
@@ -1118,10 +1116,10 @@ class ToolbarInlineService {
1118
1116
  ]),
1119
1117
  });
1120
1118
  }
1121
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolbarInlineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1122
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolbarInlineService, providedIn: 'root' });
1119
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolbarInlineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1120
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolbarInlineService, providedIn: 'root' });
1123
1121
  }
1124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: ToolbarInlineService, decorators: [{
1122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ToolbarInlineService, decorators: [{
1125
1123
  type: Injectable,
1126
1124
  args: [{
1127
1125
  providedIn: 'root',
@@ -1135,12 +1133,10 @@ class NgxEditorJs2Component {
1135
1133
  constructor() {
1136
1134
  this.editorJsService.formGroup.valueChanges.pipe(takeUntilDestroyed(), debounceTime(500), switchMap(() => this.editorJsService.getBlocks$()), tap((blocks) => this.formChanged.emit(blocks))).subscribe();
1137
1135
  }
1138
- blocks = input([]);
1136
+ blocks = input([], ...(ngDevMode ? [{ debugName: "blocks" }] : []));
1139
1137
  // Allows the parent component to request the current blocks
1140
1138
  blocksRequested = output();
1141
- requestBlocks = input.required({
1142
- transform: (value) => value && this.blocksRequested.emit(this.editorJsService.getBlocks$()),
1143
- });
1139
+ requestBlocks = input.required({ ...(ngDevMode ? { debugName: "requestBlocks" } : {}), transform: (value) => value && this.blocksRequested.emit(this.editorJsService.getBlocks$()) });
1144
1140
  // Tells the parent component when the form has changed
1145
1141
  formChanged = output();
1146
1142
  bootstrapEditorJs$ = combineLatest([
@@ -1148,15 +1144,15 @@ class NgxEditorJs2Component {
1148
1144
  this.ngxEditorJs2Service.loadBlocks$,
1149
1145
  fromEvent(document, 'selectionchange').pipe(debounceTime(200), switchMap((event) => this.inlineToolbarSerivce.determineToDisplayInlineToolbarBlock(event)))
1150
1146
  ]);
1151
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: NgxEditorJs2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
1152
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.4", type: NgxEditorJs2Component, isStandalone: true, selector: "ngx-editor-js2", inputs: { blocks: { classPropertyName: "blocks", publicName: "blocks", isSignal: true, isRequired: false, transformFunction: null }, requestBlocks: { classPropertyName: "requestBlocks", publicName: "requestBlocks", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { blocksRequested: "blocksRequested", formChanged: "formChanged" }, ngImport: i0, template: `
1147
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgxEditorJs2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
1148
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.0", type: NgxEditorJs2Component, isStandalone: true, selector: "ngx-editor-js2", inputs: { blocks: { classPropertyName: "blocks", publicName: "blocks", isSignal: true, isRequired: false, transformFunction: null }, requestBlocks: { classPropertyName: "requestBlocks", publicName: "requestBlocks", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { blocksRequested: "blocksRequested", formChanged: "formChanged" }, ngImport: i0, template: `
1153
1149
  <editor-js
1154
1150
  [blocks]="blocks()"
1155
1151
  [bootstrapEditorJs]="bootstrapEditorJs$ | async"
1156
1152
  ></editor-js>
1157
1153
  `, isInline: true, dependencies: [{ kind: "component", type: EditorJsComponent, selector: "editor-js", inputs: ["bootstrapEditorJs", "blocks"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
1158
1154
  }
1159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: NgxEditorJs2Component, decorators: [{
1155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgxEditorJs2Component, decorators: [{
1160
1156
  type: Component,
1161
1157
  args: [{
1162
1158
  selector: 'ngx-editor-js2',
@@ -1168,7 +1164,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
1168
1164
  ></editor-js>
1169
1165
  `,
1170
1166
  }]
1171
- }], ctorParameters: () => [] });
1167
+ }], ctorParameters: () => [], propDecorators: { blocks: [{ type: i0.Input, args: [{ isSignal: true, alias: "blocks", required: false }] }], blocksRequested: [{ type: i0.Output, args: ["blocksRequested"] }], requestBlocks: [{ type: i0.Input, args: [{ isSignal: true, alias: "requestBlocks", required: true }] }], formChanged: [{ type: i0.Output, args: ["formChanged"] }] } });
1172
1168
 
1173
1169
  /*
1174
1170
  * Public API Surface of ngx-editor-js2
@@ -1 +1 @@
1
- {"version":3,"file":"tmdjr-ngx-editor-js2.mjs","sources":["../../../projects/ngx-editor-js2/src/lib/directives/control-accessor.directive.ts","../../../projects/ngx-editor-js2/src/lib/directives/autofocus.directive.ts","../../../projects/ngx-editor-js2/src/lib/ngx-editor-js2.interface.ts","../../../projects/ngx-editor-js2/src/lib/components/toolbar/toolbar-block-options.component.ts","../../../projects/ngx-editor-js2/src/lib/components/toolbar/toolbar-blocks.component.ts","../../../projects/ngx-editor-js2/src/lib/components/toolbar/toolbar.component.ts","../../../projects/ngx-editor-js2/src/lib/services/block-movement.service.ts","../../../projects/ngx-editor-js2/src/lib/services/editor-js.service.ts","../../../projects/ngx-editor-js2/src/lib/services/tool-fab.service.ts","../../../projects/ngx-editor-js2/src/lib/directives/toolbar-fab.directive.ts","../../../projects/ngx-editor-js2/src/lib/directives/clean-paste-data.directive.ts","../../../projects/ngx-editor-js2/src/lib/components/blocks/header-block.component.ts","../../../projects/ngx-editor-js2/src/lib/components/blocks/paragraph-block.component.ts","../../../projects/ngx-editor-js2/src/lib/services/ngx-editor-js2.service.ts","../../../projects/ngx-editor-js2/src/lib/components/editor-js.component.ts","../../../projects/ngx-editor-js2/src/lib/components/toolbar-inline/toolbar-inline.component.ts","../../../projects/ngx-editor-js2/src/lib/services/toolbar-inline.service.ts","../../../projects/ngx-editor-js2/src/lib/ngx-editor-js2.component.ts","../../../projects/ngx-editor-js2/src/public-api.ts","../../../projects/ngx-editor-js2/src/tmdjr-ngx-editor-js2.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n input,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Directive({\n selector: '[controlAccessor]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ControlAccessorDirective),\n multi: true,\n },\n ],\n})\nexport class ControlAccessorDirective implements ControlValueAccessor {\n elementRef = inject(ElementRef);\n\n defaultValue = input<string>();\n\n onChange: (value: any) => void = () => {};\n onTouched: () => void = () => {};\n\n writeValue(): void {\n this.elementRef.nativeElement.innerHTML = this.defaultValue() || '';\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.onTouched();\n }\n\n @HostListener('input')\n onInput(): void {\n this.onChange(this.elementRef.nativeElement.innerHTML);\n }\n}\n","import {\n AfterContentInit,\n Directive,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\n\n@Directive({\n selector: '[autofocus]',\n})\nexport class AutofocusDirective implements AfterContentInit {\n elementRef = inject(ElementRef);\n\n autofocus = input<boolean>(false);\n\n ngAfterContentInit() {\n this.autofocus() && this.elementRef.nativeElement.focus?.();\n }\n}\n","import { InjectionToken, InputSignal, Signal, Type } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nexport interface NgxEditorjsOptions {\n consumerSupportedBlocks?: SupportedBlock[];\n}\nexport interface SupportedBlock {\n name: string;\n componentInstanceName: string;\n component: Type<BlockComponent>;\n}\n\nexport interface NgxEditorJsBlock {\n blockId: string;\n sortIndex: number;\n componentInstanceName: string;\n dataClean: string;\n savedAction?: string;\n}\nexport interface NgxEditorJsBlockWithComponent extends NgxEditorJsBlock {\n component: Type<BlockComponent>;\n autofocus?: boolean;\n}\n\nexport interface BlockComponent {\n sortIndex: InputSignal<number>;\n componentInstanceName: string;\n formControlName: InputSignal<string>;\n formGroup: InputSignal<FormGroup>;\n blockOptionActions: InputSignal<BlockOptionAction[]>;\n savedAction: Signal<string>;\n actionCallback?: (string: string) => void;\n}\n\nexport interface BlockOptionAction {\n action: string;\n icon?: string;\n text?: string;\n}\n\nexport enum MovePositionActions {\n UP = 'UP',\n DOWN = 'DOWN',\n DELETE = 'DELETE',\n}\n\nexport type TAddBlockCallback = (\n block: Type<BlockComponent>,\n index: number\n) => Observable<unknown>;\n\nexport type TMoveBlockPositionCallback = (\n action: MovePositionActions,\n index: number\n) => Observable<unknown>;\n","import { Component, input, output } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatRipple } from '@angular/material/core';\nimport {\n BlockOptionAction,\n MovePositionActions,\n} from '../../ngx-editor-js2.interface';\n\n@Component({\n selector: 'toolbar-block-options',\n imports: [MatIcon, MatRipple],\n template: `\n <div class=\"actions-panel\">\n <div class=\"action-btn\" matRipple (click)=\"movePosition(Position.UP)\">\n <mat-icon>arrow_upward</mat-icon>\n </div>\n <div class=\"action-btn\" matRipple (click)=\"movePosition(Position.DELETE)\">\n <mat-icon>delete</mat-icon>\n </div>\n <div class=\"action-btn\" matRipple (click)=\"movePosition(Position.DOWN)\">\n <mat-icon>arrow_downward</mat-icon>\n </div>\n @for(blockOptionAction of blockOptionActions(); track $index) {\n <div\n class=\"action-btn\"\n (click)=\"handleAction(blockOptionAction.action)\"\n matRipple\n >\n @if (blockOptionAction.text) {\n {{ blockOptionAction.text }}\n } @else {\n <mat-icon>{{ blockOptionAction.icon }}</mat-icon>\n }\n </div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n .actions-panel {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 1px;\n width: 128px;\n max-height: 128px;\n border-radius: 4px;\n overflow: auto;\n background: var(--mat-sys-secondary);\n box-shadow: var(--mat-sys-level5);\n .action-btn {\n cursor: pointer;\n width: 42px;\n height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n\n color: var(--mat-sys-on-secondary);\n background: var(--mat-sys-secondary);\n &:hover,\n &:focus {\n color: var(--mat-sys-secondary);\n background: var(--mat-sys-on-secondary);\n }\n }\n }\n }\n `,\n ],\n})\nexport class ToolbarBlockOptionsComponent {\n readonly Position = MovePositionActions;\n\n blockOptionActions = input<BlockOptionAction[]>();\n\n handleActionEmitter = output<string>({ alias: 'handleAction' });\n moveBlockPositionEmitter = output<MovePositionActions>({\n alias: 'moveBlockPosition',\n });\n\n movePosition(action: MovePositionActions) {\n this.moveBlockPositionEmitter.emit(action);\n }\n\n handleAction(action: string) {\n this.handleActionEmitter.emit(action);\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { Component, input, output, Type } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatRipple } from '@angular/material/core';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatList, MatListItem } from '@angular/material/list';\nimport { combineLatest, map, startWith } from 'rxjs';\nimport { BlockComponent, SupportedBlock } from '../../ngx-editor-js2.interface';\n\n@Component({\n selector: 'toolbar-blocks',\n imports: [\n MatFormField,\n MatInput,\n MatList,\n MatListItem,\n MatRipple,\n MatLabel,\n ReactiveFormsModule,\n AsyncPipe,\n ],\n template: `\n <div class=\"block-list-container\">\n <mat-form-field appearance=\"fill\" color=\"accent\">\n <mat-label>Filter</mat-label>\n <input\n class=\"filter-text\"\n matInput\n [formControl]=\"blockCtrl\"\n [autofocus]=\"true\"\n />\n </mat-form-field>\n @if(filteredBlocks$ | async; as filteredBlocks) {\n <mat-list class=\"block-list-panel\">\n @if (filteredBlocks.length <= 0) {\n <mat-list-item matRipple mat-list-item> No Results </mat-list-item>\n } @else { @for(block of filteredBlocks; track $index) {\n <mat-list-item matRipple mat-list-item (click)=\"addBlock(block)\">\n {{ block.name }}\n </mat-list-item>\n } }\n </mat-list>\n }\n </div>\n `,\n styles: [\n `\n :host {\n .mat-mdc-list-base {\n padding-top: 0px;\n margin-top: -14px;\n }\n\n .block-list-container {\n border-radius: 4px;\n background: var(--mat-sys-secondary-container);\n box-shadow: var(--mat-sys-level5);\n }\n\n .block-list-panel {\n max-width: 280px;\n max-height: 240px;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n overflow: auto;\n color: var(--mat-sys-on-secondary-container);\n }\n\n mat-list-item {\n cursor: pointer;\n user-select: none;\n &:hover,\n &:focus {\n background: var(--mat-sys-surface-bright);\n }\n }\n }\n `,\n ],\n})\nexport class ToolbarBlocksComponent {\n addBlockEmitter = output<Type<BlockComponent>>({ alias: 'addBlock' });\n supportedBlocks = input<SupportedBlock[]>([]);\n supportedBlocks$ = toObservable(this.supportedBlocks);\n\n blockCtrl = new FormControl([]);\n filter$ = this.blockCtrl.valueChanges.pipe(startWith(''));\n\n filteredBlocks$ = combineLatest([this.supportedBlocks$, this.filter$]).pipe(\n map(([blocks, filterString]) => {\n if (typeof filterString !== 'string') filterString = '';\n filterString = filterString.replace(/\\\\/g, '');\n const pattern = filterString\n ?.split('')\n .map((v: string) => `(?=.*${v})`)\n .join('');\n const regex = new RegExp(`${pattern}`, 'gi');\n\n // return blocks.filter(block => regex.exec(block));\n return blocks.filter((block) => block.name.match(regex));\n })\n );\n\n addBlock(block: SupportedBlock) {\n this.addBlockEmitter.emit(block?.component);\n }\n}\n","import { Component, input, signal, Type } from '@angular/core';\nimport { MatRipple } from '@angular/material/core';\nimport { CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { ToolbarBlockOptionsComponent } from './toolbar-block-options.component';\nimport { ToolbarBlocksComponent } from './toolbar-blocks.component';\nimport { firstValueFrom } from 'rxjs';\nimport {\n BlockComponent,\n BlockOptionAction,\n MovePositionActions,\n SupportedBlock,\n TAddBlockCallback,\n TMoveBlockPositionCallback,\n} from '../../ngx-editor-js2.interface';\n\n@Component({\n selector: 'toolbar',\n imports: [\n CdkDragHandle,\n MatRipple,\n OverlayModule,\n ToolbarBlockOptionsComponent,\n ToolbarBlocksComponent,\n ],\n template: `\n <div class=\"toolbar-buttons-container\">\n <div\n class=\"toolbar-buttons\"\n #blockListTigger=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n matRipple\n (click)=\"openBlocksList()\"\n >\n <span class=\"material-icons\">add</span>\n </div>\n <div\n class=\"toolbar-buttons\"\n #blockOptionListTigger=\"cdkOverlayOrigin\"\n cdkDragHandle\n cdkOverlayOrigin\n matRipple\n (click)=\"openBlockOptionList()\"\n >\n <span class=\"material-icons\">drag_indicator</span>\n </div>\n </div>\n\n <!-- Block type search list -->\n <ng-template\n cdkConnectedOverlay\n (overlayOutsideClick)=\"openBlocks.set(false)\"\n [cdkConnectedOverlayOrigin]=\"blockListTigger\"\n [cdkConnectedOverlayOpen]=\"openBlocks()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayOffsetY]=\"15\"\n [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n >\n <toolbar-blocks\n [supportedBlocks]=\"supportedBlocks()\"\n (addBlock)=\"addBlock($event)\"\n ></toolbar-blocks>\n </ng-template>\n\n <!-- Options List-->\n <ng-template\n cdkConnectedOverlay\n (overlayOutsideClick)=\"openBlocksOption.set(false)\"\n [cdkConnectedOverlayOrigin]=\"blockOptionListTigger\"\n [cdkConnectedOverlayOpen]=\"openBlocksOption()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayOffsetX]=\"-49\"\n [cdkConnectedOverlayOffsetY]=\"15\"\n [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n >\n <toolbar-block-options\n [blockOptionActions]=\"blockOptionActions()\"\n (handleAction)=\"handleAction($event)\"\n (moveBlockPosition)=\"moveBlockPosition($event)\"\n ></toolbar-block-options>\n </ng-template>\n `,\n styles: [\n `\n :host {\n .toolbar-buttons-container {\n position: relative;\n display: flex;\n gap: 10px;\n }\n .toolbar-buttons {\n cursor: pointer;\n width: 30px;\n height: 30px;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 4px;\n margin-bottom: 14px;\n user-select: none;\n color: var(--mat-sys-on-tertiary-container);\n background: var(--mat-sys-tertiary-container);\n box-shadow: var(--mat-sys-level2);\n }\n .toolbar-buttons {\n &:hover,\n &:focus {\n background: var(--mat-sys-surface-bright);\n }\n }\n }\n @media (min-width: 768px) {\n :host {\n position: absolute;\n margin-left: -80px;\n top: 0;\n }\n }\n `,\n ],\n})\nexport class ToolbarComponent {\n componentContextPositionIndex = input.required<number>();\n supportedBlocks = input.required<SupportedBlock[]>();\n blockOptionActions = input<BlockOptionAction[]>();\n actionCallback = input<(action: string) => void>(() => () => {});\n formControlName = input<string>();\n addBlockCallback = input.required<TAddBlockCallback>();\n moveBlockPositionCallback = input.required<TMoveBlockPositionCallback>();\n\n openBlocks = signal<boolean>(false);\n openBlocksOption = signal<boolean>(false);\n\n openBlocksList() {\n this.openBlocks.update((prev) => !prev);\n }\n\n openBlockOptionList() {\n this.openBlocksOption.update((prev) => !prev);\n }\n\n moveBlockPosition(action: MovePositionActions) {\n this.closeLists();\n this.moveBlockPositionCallback()(\n action,\n this.componentContextPositionIndex()\n );\n }\n\n handleAction(action: string) {\n this.closeLists();\n this.actionCallback()(action);\n }\n\n addBlock(block: Type<BlockComponent>) {\n this.closeLists();\n firstValueFrom(\n this.addBlockCallback()(block, this.componentContextPositionIndex())\n );\n }\n\n closeLists() {\n this.openBlocks.set(false);\n this.openBlocksOption.set(false);\n }\n}\n","import { ComponentRef, Injectable, ViewContainerRef } from '@angular/core';\nimport { defaultIfEmpty, filter, from, map, of, tap } from 'rxjs';\nimport {\n BlockComponent,\n MovePositionActions,\n} from '../ngx-editor-js2.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BlockMovementService {\n componentRefMap = new Map<object, ComponentRef<BlockComponent>>();\n\n clearComponentRefs() {\n this.componentRefMap.clear();\n }\n\n getNgxEditorJsBlocks() {\n return of(Array.from(this.componentRefMap.values()));\n }\n\n newComponentAttached(componentRef: ComponentRef<BlockComponent>) {\n this.componentRefMap.set(componentRef.instance, componentRef);\n }\n\n updateComponentIndices(ngxEditor: ViewContainerRef) {\n return from(this.componentRefMap.values()).pipe(\n tap((componentRef: any) =>\n componentRef.setInput(\n 'sortIndex',\n ngxEditor.indexOf(componentRef.hostView)\n )\n )\n );\n }\n\n moveBlockComponentPosition(\n ngxEditor: ViewContainerRef,\n action: MovePositionActions,\n index: number\n ) {\n return of(Array.from(this.componentRefMap.values())).pipe(\n map((componentRefs) =>\n componentRefs.find(\n (componentRef) =>\n ngxEditor.indexOf(componentRef.hostView) === index - 1\n )\n ),\n filter((componentRef) => !!componentRef),\n map((componentRef) => ({\n componentRef,\n totalComponents: ngxEditor.length - 1,\n currentIndex: ngxEditor.indexOf(componentRef.hostView),\n newIndex: (index: number) =>\n action === MovePositionActions.UP ? index - 1 : index + 1,\n })),\n map(({ componentRef, totalComponents, currentIndex, newIndex }) => ({\n componentRef,\n currentIndex,\n newIndex: Math.max(\n 0,\n Math.min(newIndex(currentIndex), totalComponents)\n ),\n })),\n filter(({ currentIndex, newIndex }) => currentIndex !== newIndex),\n tap(({ componentRef, newIndex }) => {\n ngxEditor.move(componentRef.hostView, newIndex);\n componentRef.setInput('sortIndex', newIndex);\n componentRef.setInput('autofocus', true);\n }),\n defaultIfEmpty(false)\n );\n }\n\n removeBlockComponent(\n ngxEditor: ViewContainerRef,\n index: number,\n clear = false\n ) {\n return of(Array.from(this.componentRefMap.values())).pipe(\n filter((componentRefs) => clear || componentRefs.length !== 1),\n map((componentRefs) =>\n componentRefs.find(\n (componentRef) =>\n ngxEditor.indexOf(componentRef.hostView) === index - 1\n )\n ),\n map((componentRef) =>\n this.componentRefMap.delete(componentRef?.instance ?? {})\n ),\n tap((successful) => successful && ngxEditor.remove(index - 1)),\n defaultIfEmpty(false)\n );\n }\n}\n","import { inject, Injectable, Type, ViewContainerRef } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport {\n combineLatest,\n defaultIfEmpty,\n filter,\n forkJoin,\n iif,\n lastValueFrom,\n map,\n mergeMap,\n Observable,\n of,\n switchMap,\n tap,\n} from 'rxjs';\nimport {\n BlockComponent,\n MovePositionActions,\n NgxEditorJsBlock,\n NgxEditorJsBlockWithComponent,\n} from '../ngx-editor-js2.interface';\nimport { BlockMovementService } from './block-movement.service';\n\nconst createUID = () => Math.random().toString(36).substring(7);\n@Injectable({\n providedIn: 'root',\n})\nexport class EditorJsService {\n formBuilder = inject(FormBuilder);\n blockMovementService = inject(BlockMovementService);\n\n componentRefMap = new Map<object, unknown>();\n\n ngxEditor!: ViewContainerRef;\n formGroup = this.formBuilder.group({});\n\n // TODO - Handle this idiomatically\n setNgxEditor(ngxEditor: ViewContainerRef) {\n this.ngxEditor = ngxEditor;\n }\n\n getBlocks$(): Observable<NgxEditorJsBlock[]> {\n return new Observable<NgxEditorJsBlock[]>((observer) => {\n lastValueFrom(\n this.blockMovementService.getNgxEditorJsBlocks().pipe(\n map((componentRefs) =>\n componentRefs.map<NgxEditorJsBlock>(({ instance }) => ({\n blockId: instance.formControlName(),\n sortIndex: instance.sortIndex(),\n componentInstanceName: instance.componentInstanceName,\n savedAction: instance.savedAction(),\n dataClean: instance.formGroup().get(instance.formControlName())\n ?.value,\n }))\n ),\n map((blocks) => blocks.sort((a, b) => a.sortIndex - b.sortIndex))\n )\n ).then((blocks) => {\n observer.next(blocks);\n observer.complete();\n });\n });\n }\n\n createNgxEditorJsBlockWithComponent(\n blockComponent: Type<BlockComponent>,\n componentContextPositionIndex: number\n ) {\n return of<NgxEditorJsBlockWithComponent>({\n blockId: createUID(),\n sortIndex: componentContextPositionIndex,\n componentInstanceName: blockComponent.name,\n component: blockComponent,\n // TODO - Force content-type for dataClean? JSON, HTML, etc.\n // TODO - And maybe rename dataClean to just data?\n dataClean: '',\n autofocus: true,\n });\n }\n\n addBlockComponent(\n ngxEditorJsBlock: NgxEditorJsBlockWithComponent,\n emitEvent = true\n ): Observable<void> {\n return forkJoin([\n this.createFormGroupControl(ngxEditorJsBlock, emitEvent),\n this.attachComponent(ngxEditorJsBlock),\n this.blockMovementService.updateComponentIndices(this.ngxEditor),\n ]).pipe(map(() => void 0));\n }\n\n createFormGroupControl({\n blockId,\n dataClean,\n }: NgxEditorJsBlockWithComponent, emitEvent = true) {\n return of(this.formBuilder.control(dataClean, [])).pipe(\n tap((formControl) => this.formGroup.addControl(blockId, formControl, { emitEvent }))\n );\n }\n\n attachComponent({\n component,\n blockId,\n autofocus,\n savedAction,\n sortIndex: index,\n }: NgxEditorJsBlockWithComponent) {\n return of(blockId).pipe(\n map((controlName) => {\n const componentRef = this.ngxEditor.createComponent(component, {\n index,\n });\n\n (componentRef.location.nativeElement as HTMLElement)\n .classList.add('ngx-editor-js2-block');\n\n componentRef.setInput('sortIndex', index);\n componentRef.setInput('formGroup', this.formGroup);\n componentRef.setInput('formControlName', controlName);\n componentRef.setInput('autofocus', autofocus);\n\n savedAction && componentRef.instance.actionCallback?.(savedAction);\n\n this.blockMovementService.newComponentAttached(componentRef);\n return componentRef;\n })\n );\n }\n\n determineMovePositionAction(\n action: MovePositionActions,\n index: number,\n formControlName: string\n ) {\n return iif(\n () => action === MovePositionActions.DELETE,\n this.removeBlockComponent(index, formControlName),\n this.blockMovementService.moveBlockComponentPosition(\n this.ngxEditor,\n action,\n index\n )\n ).pipe(\n switchMap(() =>\n this.blockMovementService.updateComponentIndices(this.ngxEditor)\n )\n );\n }\n\n moveBlockComponentPosition(previousIndex: number, currentIndex: number) {\n return of(this.ngxEditor.get(previousIndex)).pipe(\n filter((viewRef) => !!viewRef),\n tap((viewRef) => {\n this.ngxEditor.move(viewRef, currentIndex);\n }),\n switchMap(() =>\n this.blockMovementService.updateComponentIndices(this.ngxEditor)\n ),\n defaultIfEmpty(false)\n );\n }\n\n removeBlockComponent(index: number, formControlName: string, clear = false) {\n return combineLatest([\n this.blockMovementService.removeBlockComponent(\n this.ngxEditor,\n index,\n clear\n ),\n of(this.formGroup.removeControl(formControlName)),\n ]);\n }\n\n clearBlocks() {\n return this.blockMovementService.getNgxEditorJsBlocks().pipe(\n filter((componentRefs) => componentRefs.length > 0),\n map((componentRefs) =>\n componentRefs.sort(\n (a, b) => a.instance.sortIndex() - b.instance.sortIndex()\n )\n ),\n mergeMap((componentRefs) =>\n forkJoin(\n Array.from(componentRefs.values()).map((componentRef) =>\n this.removeBlockComponent(\n componentRef.instance.sortIndex() + 1,\n componentRef.instance.formControlName(),\n true\n )\n )\n )\n ),\n switchMap(() =>\n this.blockMovementService.updateComponentIndices(this.ngxEditor)\n ),\n tap(() => {\n this.blockMovementService.clearComponentRefs();\n this.ngxEditor.clear();\n }),\n defaultIfEmpty(false)\n );\n }\n}\n","import { inject, Injectable, Type, ViewContainerRef } from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n lastValueFrom,\n map,\n switchMap,\n tap,\n} from 'rxjs';\nimport { ToolbarComponent } from '../components/toolbar/toolbar.component';\nimport { EditorJsService } from './editor-js.service';\nimport { NgxEditorJs2Service } from './ngx-editor-js2.service';\nimport {\n BlockOptionAction,\n BlockComponent,\n MovePositionActions,\n} from '../ngx-editor-js2.interface';\n\ntype ComponentContext = {\n index: number;\n viewContainerRef: ViewContainerRef;\n blockOptionActions: BlockOptionAction[];\n actionCallback: (v: string) => void;\n formControlName: string;\n} | null;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToolFabService {\n ngxEditorJs2Service = inject(NgxEditorJs2Service);\n editorJsService = inject(EditorJsService);\n // I need to explain this in detail so the future me can understand this.\n componentContext = new BehaviorSubject<ComponentContext>(null);\n toolbarComponentRef$ = combineLatest({\n componentContext: this.componentContext.asObservable(),\n supportedBlocks: this.ngxEditorJs2Service.supportedBlocks$,\n }).pipe(\n filter(({ componentContext }) => componentContext !== null),\n distinctUntilChanged(\n ({ componentContext: previous }, { componentContext: current }) =>\n previous!.index !== current!.index ||\n previous!.viewContainerRef !== current!.viewContainerRef\n ? (previous!.viewContainerRef.clear(), false)\n : true\n ),\n map(({ componentContext, supportedBlocks }) => {\n const {\n index,\n viewContainerRef,\n blockOptionActions,\n actionCallback,\n formControlName,\n } = componentContext!;\n // TODO We will need to create a ToolbarBottomRailComponent to handle the mobile view\n const componentRef = viewContainerRef.createComponent(ToolbarComponent);\n componentRef.setInput('componentContextPositionIndex', index + 1);\n componentRef.setInput('supportedBlocks', supportedBlocks);\n componentRef.setInput('blockOptionActions', blockOptionActions);\n componentRef.setInput('actionCallback', actionCallback);\n componentRef.setInput('formControlName', formControlName);\n componentRef.setInput('addBlockCallback', this.addBlock.bind(this));\n componentRef.setInput(\n 'moveBlockPositionCallback',\n this.movePositionAction.bind(this)\n );\n return componentRef;\n }),\n );\n\n addBlock(block: Type<BlockComponent>, index: number) {\n return this.editorJsService\n .createNgxEditorJsBlockWithComponent(block, index)\n .pipe(\n switchMap((block) => this.editorJsService.addBlockComponent(block))\n );\n }\n\n movePositionAction(\n action: MovePositionActions,\n index: number,\n formControlName: string\n ) {\n return lastValueFrom(\n this.editorJsService.determineMovePositionAction(\n action,\n index,\n formControlName\n )\n );\n }\n}\n","import {\n ComponentRef,\n Directive,\n effect,\n HostListener,\n inject,\n input,\n ViewContainerRef,\n} from '@angular/core';\nimport { ToolFabService } from '../services/tool-fab.service';\nimport { Observable } from 'rxjs';\nimport { ToolbarComponent } from '../components/toolbar/toolbar.component';\nimport { BlockOptionAction } from '../ngx-editor-js2.interface';\n\nexport type ToolbarComponentRef = Observable<ComponentRef<ToolbarComponent>>;\n\n@Directive({\n selector: '[toolbarFab]',\n})\nexport class ToolbarFabDirective {\n toolFabService = inject(ToolFabService);\n viewContainerRef = inject(ViewContainerRef);\n\n autofocus = input<boolean>();\n blockOptionActions = input<BlockOptionAction[]>();\n actionCallback = input.required<(action: string) => void>();\n componentContextPositionIndex = input.required<number>();\n formControlName = input.required<string>();\n\n @HostListener('mouseenter') onMouseEnter() {\n this.toolFabService.componentContext.next({\n viewContainerRef: this.viewContainerRef,\n blockOptionActions: this.blockOptionActions() ?? [],\n actionCallback: this.actionCallback(),\n index: this.componentContextPositionIndex(),\n formControlName: this.formControlName(),\n });\n }\n\n constructor() {\n effect(() => {\n this.autofocus() && this.onMouseEnter();\n });\n }\n}\n","import {\n Directive,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[cleanPasteData]',\n})\nexport class CleanPasteDataDirective {\n @HostListener('paste', ['$event'])\n onPaste(event: Event) {\n event.preventDefault();\n const text = (event as ClipboardEvent).clipboardData?.getData('text/plain');\n document.execCommand('insertText', false, text);\n }\n}\n","import { Component, input, signal } from '@angular/core';\nimport { ControlAccessorDirective } from '../../directives/control-accessor.directive';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { AutofocusDirective } from '../../directives/autofocus.directive';\nimport { ToolbarFabDirective } from '../../directives/toolbar-fab.directive';\nimport { CleanPasteDataDirective } from '../../directives/clean-paste-data.directive';\nimport {\n BlockComponent,\n BlockOptionAction,\n} from '../../ngx-editor-js2.interface';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { CdkDrag } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'header-block',\n host: { class: 'cdk-drag-animating' },\n hostDirectives: [CdkDrag],\n imports: [\n ReactiveFormsModule,\n ControlAccessorDirective,\n AutofocusDirective,\n ToolbarFabDirective,\n CleanPasteDataDirective,\n NgTemplateOutlet\n],\n template: `\n@switch (savedAction()) {\n @case ('h1') {\n <h1>\n <ng-container *ngTemplateOutlet=\"sharedHeaderTemplate\"></ng-container>\n </h1>\n }\n @case ('h2') {\n <h2>\n <ng-container *ngTemplateOutlet=\"sharedHeaderTemplate\"></ng-container>\n </h2>\n }\n @case ('h3') {\n <h3>\n <ng-container *ngTemplateOutlet=\"sharedHeaderTemplate\"></ng-container>\n </h3>\n }\n @case ('h4') {\n <h4>\n <ng-container *ngTemplateOutlet=\"sharedHeaderTemplate\"></ng-container>\n </h4>\n }\n @case ('h5') {\n <h5>\n <ng-container *ngTemplateOutlet=\"sharedHeaderTemplate\"></ng-container>\n </h5>\n }\n @case ('h6') {\n <h6>\n <ng-container *ngTemplateOutlet=\"sharedHeaderTemplate\"></ng-container>\n </h6>\n }\n}\n\n<ng-template [formGroup]=\"formGroup()\" #sharedHeaderTemplate>\n <span\n controlAccessor\n cleanPasteData\n contentEditable\n toolbarFab\n [defaultValue]=\"formGroup().get(formControlName())?.value\"\n [actionCallback]=\"actionCallbackBind\"\n [blockOptionActions]=\"blockOptionActions()\"\n [autofocus]=\"autofocus()\"\n [formControlName]=\"formControlName()\"\n [componentContextPositionIndex]=\"sortIndex()\"\n ></span>\n</ng-template>\n`,\n styles: [\n `\n :host {\n display: block;\n position: relative;\n :is(h1, h2, h3, h4, h5, h6) {\n margin: 0;\n span {\n display: block;\n line-height: inherit;\n }\n }\n\n h1 > * {\n font: var(--mat-sys-display-large);\n }\n h2 > * {\n font: var(--mat-sys-display-medium);\n }\n h3 > * {\n font: var(--mat-sys-display-small);\n }\n h4 > * {\n font: var(--mat-sys-headline-large);\n }\n h5 > * {\n font: var(--mat-sys-headline-medium);\n }\n h6 > * {\n font: var(--mat-sys-headline-small);\n }\n }\n `,\n ],\n})\nexport class HeaderBlockComponent implements BlockComponent {\n sortIndex = input<number>(0);\n componentInstanceName = 'HeaderBlockComponent';\n autofocus = input<boolean>(true);\n formGroup = input.required<FormGroup>();\n formControlName = input.required<string>();\n blockOptionActions = input<BlockOptionAction[]>([\n { action: 'h1', text: 'H1' },\n { action: 'h2', text: 'H2' },\n { action: 'h3', text: 'H3' },\n { action: 'h4', text: 'H4' },\n { action: 'h5', text: 'H5' },\n { action: 'h6', text: 'H6' },\n ]);\n\n savedAction = signal<string>('h1');\n actionCallbackBind = this.actionCallback.bind(this);\n\n actionCallback(selectedAction: string) {\n this.savedAction.set(selectedAction);\n }\n}\n","import { Component, input, signal } from '@angular/core';\nimport { ControlAccessorDirective } from '../../directives/control-accessor.directive';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { AutofocusDirective } from '../../directives/autofocus.directive';\nimport { ToolbarFabDirective } from '../../directives/toolbar-fab.directive';\nimport { CleanPasteDataDirective } from '../../directives/clean-paste-data.directive';\nimport {\n BlockComponent,\n BlockOptionAction,\n} from '../../ngx-editor-js2.interface';\nimport { NgClass } from '@angular/common';\nimport { CdkDrag } from '@angular/cdk/drag-drop';\n\n\n@Component({\n selector: 'paragraph-block',\n host: { class: 'cdk-drag-animating' },\n hostDirectives: [CdkDrag],\n imports: [\n ReactiveFormsModule,\n ControlAccessorDirective,\n AutofocusDirective,\n ToolbarFabDirective,\n CleanPasteDataDirective,\n NgClass,\n ],\n template: `\n <ng-container [formGroup]=\"formGroup()\">\n <p\n controlAccessor\n contentEditable\n toolbarFab\n cleanPasteData\n [ngClass]=\"savedAction()\"\n [defaultValue]=\"formGroup().get(formControlName())?.value\"\n [actionCallback]=\"actionCallbackBind\"\n [autofocus]=\"autofocus()\"\n [blockOptionActions]=\"blockOptionActions()\"\n [formControlName]=\"formControlName()\"\n [componentContextPositionIndex]=\"sortIndex()\"\n ></p>\n </ng-container>\n `,\n styles: [\n `\n :host {\n display: block;\n position: relative;\n .small {\n font: var(--mat-sys-body-small);\n }\n .medium {\n font: var(--mat-sys-body-medium);\n }\n .large {\n font: var(--mat-sys-body-large);\n }\n .title-small {\n font: var(--mat-sys-title-small);\n }\n .title-medium {\n font: var(--mat-sys-title-medium);\n }\n .title-large {\n font: var(--mat-sys-title-large);\n }\n }\n `,\n ],\n})\nexport class ParagraphBlockComponent implements BlockComponent {\n sortIndex = input<number>(0);\n componentInstanceName = 'ParagraphBlockComponent';\n autofocus = input<boolean>(true);\n formGroup = input.required<FormGroup>();\n formControlName = input.required<string>();\n blockOptionActions = input<BlockOptionAction[]>([\n { action: 'small', icon: 'density_small' },\n { action: 'medium', icon: 'density_medium' },\n { action: 'large', icon: 'density_large' },\n { action: 'title-small', text: 'TS' },\n { action: 'title-medium', text: 'TM' },\n { action: 'title-large', text: 'TL' },\n ]);\n\n savedAction = signal<string>('medium');\n actionCallbackBind = this.actionCallback.bind(this);\n\n actionCallback(action: string) {\n this.savedAction.update(() => action);\n }\n}\n","import { inject, Injectable, InjectionToken, Type } from '@angular/core';\nimport { HeaderBlockComponent } from '../components/blocks/header-block.component';\nimport { ParagraphBlockComponent } from '../components/blocks/paragraph-block.component';\nimport {\n BehaviorSubject,\n combineLatest,\n delay,\n exhaustMap,\n forkJoin,\n map,\n mergeMap,\n of,\n switchMap,\n} from 'rxjs';\nimport { EditorJsService } from './editor-js.service';\nimport {\n NgxEditorjsOptions,\n NgxEditorJsBlock,\n NgxEditorJsBlockWithComponent,\n SupportedBlock,\n BlockComponent,\n} from '../ngx-editor-js2.interface';\n\nexport const NGX_EDITORJS_OPTIONS = new InjectionToken<NgxEditorjsOptions>(\n 'NGX_EDITORJS_OPTIONS'\n);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxEditorJs2Service {\n editorJsService = inject(EditorJsService);\n\n consumerSupportedBlocks = new BehaviorSubject<SupportedBlock[]>(\n inject(NGX_EDITORJS_OPTIONS, { optional: true })?.consumerSupportedBlocks ??\n []\n );\n\n internalSupportedBlocks = new BehaviorSubject<SupportedBlock[]>([\n {\n name: 'Paragraph',\n component: ParagraphBlockComponent,\n componentInstanceName: 'ParagraphBlockComponent',\n },\n {\n name: 'Header',\n component: HeaderBlockComponent,\n componentInstanceName: 'HeaderBlockComponent',\n },\n ]);\n\n supportedBlocks$ = combineLatest([\n this.internalSupportedBlocks.asObservable(),\n this.consumerSupportedBlocks.asObservable(),\n ]).pipe(map(([internal, consumer]) => [...internal, ...consumer]));\n\n blocksToLoad = new BehaviorSubject<NgxEditorJsBlock[]>([]);\n\n loadBlocks$ = this.blocksToLoad.asObservable().pipe(\n delay(0),\n exhaustMap((blocks) => this.clearBlocksFromEditorJs(blocks)),\n map(([blocks]) => this.determineToloadDefaultBlocks(blocks)),\n map((blocks) => this.removeDuplicateBlocksWithSameIds(blocks)),\n map((blocks) => this.sortBlocks(blocks)),\n switchMap((blocks) => this.combineSupportBlocks(blocks)),\n map(([blocks, supportedBlocks]) =>\n this.createALookupMapForSupportedBlocks(blocks, supportedBlocks)\n ),\n map(({ blocks, supportedBlocksMap }) =>\n this.findAndMarshalBlocksComponent(blocks, supportedBlocksMap)\n ),\n mergeMap((blocks) =>\n this.addBlocksToEditorJs(blocks).pipe(map(() => blocks))\n )\n );\n\n clearBlocksFromEditorJs(blocks: NgxEditorJsBlock[]) {\n return forkJoin([of(blocks), this.editorJsService.clearBlocks()]);\n }\n\n determineToloadDefaultBlocks(blocks: NgxEditorJsBlock[]) {\n return blocks.length > 0 ? blocks : this.loadDefaultBlocks();\n }\n\n loadDefaultBlocks() {\n return [\n {\n blockId: 'tmdjr',\n sortIndex: 0,\n componentInstanceName: 'HeaderBlockComponent',\n dataClean: \"Let's get started... 🚀\",\n savedAction: 'h1',\n },\n ];\n }\n\n removeDuplicateBlocksWithSameIds(blocks: NgxEditorJsBlock[]) {\n return Array.from(\n new Map(blocks.map((block) => [block.blockId, block])).values()\n );\n }\n\n sortBlocks(blocks: NgxEditorJsBlock[]) {\n return blocks.sort((a, b) => a.sortIndex - b.sortIndex);\n }\n\n combineSupportBlocks(blocks: NgxEditorJsBlock[]) {\n return combineLatest([of(blocks), this.supportedBlocks$]);\n }\n\n createALookupMapForSupportedBlocks(\n blocks: NgxEditorJsBlock[],\n supportedBlocks: SupportedBlock[]\n ) {\n return {\n blocks,\n supportedBlocksMap: new Map(\n supportedBlocks.map((sb) => [sb.componentInstanceName, sb.component])\n ),\n };\n }\n\n findAndMarshalBlocksComponent(\n blocks: NgxEditorJsBlock[],\n supportedBlocksMap: Map<string, Type<BlockComponent>>\n ) {\n return blocks.map((block) => ({\n ...block,\n component:\n supportedBlocksMap.get(block.componentInstanceName) ??\n HeaderBlockComponent,\n }));\n }\n\n addBlocksToEditorJs(blocks: NgxEditorJsBlockWithComponent[]) {\n return combineLatest(\n blocks.map((block: NgxEditorJsBlockWithComponent) =>\n this.editorJsService.addBlockComponent(block, false)\n )\n );\n }\n}\n","import {\n Component,\n effect,\n inject,\n input,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { EditorJsService } from '../services/editor-js.service';\nimport { NgxEditorJs2Service } from '../services/ngx-editor-js2.service';\nimport { NgxEditorJsBlock } from '../ngx-editor-js2.interface';\nimport { CdkDropList, CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { lastValueFrom, tap } from 'rxjs';\n\n@Component({\n selector: 'editor-js',\n imports: [CdkDropList],\n template: `\n <div cdkDropList class=\"block-list\" (cdkDropListDropped)=\"drop($event)\" >\n <ng-container #ngxEditor></ng-container>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n .block-list {\n min-height: 60px;\n }\n }\n `,\n ],\n})\nexport class EditorJsComponent {\n editorJsService = inject(EditorJsService);\n ngxEditorJs2Service = inject(NgxEditorJs2Service);\n\n bootstrapEditorJs = input();\n blocks = input.required({\n transform: (value: NgxEditorJsBlock[]) =>\n this.ngxEditorJs2Service.blocksToLoad.next(value),\n });\n\n ngxEditor = viewChild.required('ngxEditor', { read: ViewContainerRef });\n\n constructor() {\n effect(() => {\n this.editorJsService.setNgxEditor(this.ngxEditor());\n });\n }\n\n drop(event: CdkDragDrop<string[]>) {\n void lastValueFrom(\n this.editorJsService.moveBlockComponentPosition(\n event.previousIndex,\n event.currentIndex\n ).pipe(\n tap(() => this.editorJsService.formGroup.updateValueAndValidity())\n )\n );\n }\n}\n","import {\n Component,\n EventEmitter,\n inject,\n input,\n Input,\n Output,\n Renderer2,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\n\n@Component({\n selector: 'toolbar-inline',\n imports: [MatListModule, MatIconModule, FormsModule],\n template: `\n <div class=\"panel\">\n @for (item of options; track $index) {\n <div class=\"inline-option\" (click)=\"addInlineTag(item.action)\">\n <mat-icon>{{ item.icon }}</mat-icon>\n </div>\n }\n <div class=\"inline-option\" (click)=\"addClassTag('code', 'inline-code')\">\n <mat-icon>code</mat-icon>\n </div>\n <div class=\"inline-option\" (click)=\"openUrlInput()\">\n <mat-icon>insert_link</mat-icon>\n </div>\n <div class=\"inline-option\" (click)=\"clearTags()\">\n <mat-icon>format_clear</mat-icon>\n </div>\n </div>\n\n @if(showURLInputField()) {\n <div class=\"panel\">\n <input\n type=\"text\"\n placeholder=\"Enter URL\"\n class=\"block-option-input\"\n [(ngModel)]=\"url\"\n />\n <div class=\"inline-option\" (click)=\"createLink()\">\n <mat-icon>add</mat-icon>\n </div>\n </div>\n }\n `,\n styles: [\n `\n :host {\n color: var(--mat-sys-on-secondary);\n background: var(--mat-sys-secondary);\n box-shadow: var(--mat-sys-level5);\n border-radius: 8px;\n .panel {\n display: flex;\n width: 230px;\n flex-wrap: wrap;\n gap: 1px;\n }\n .inline-option {\n cursor: pointer;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .block-option-input {\n width: 197px;\n height: 32px;\n border: none;\n outline: none;\n color: var(--mat-sys-on-secondary);\n background-color: transparent;\n box-sizing: border-box;\n }\n }\n `,\n ],\n})\nexport class ToolbarInlineComponent {\n // @Input() selection!: Selection;\n selection = input.required<Selection>();\n @Output('closeOverlay') closeOverlayEmitter = new EventEmitter();\n\n renderer = inject(Renderer2);\n\n url = '';\n showURLInputField = signal(false);\n savedRanges: Range[] = [];\n options = [\n { icon: 'format_bold', action: 'bold' },\n { icon: 'format_italic', action: 'italic' },\n { icon: 'format_underlined', action: 'underline' },\n { icon: 'strikethrough_s', action: 'strikethrough' },\n { icon: 'format_list_bulleted', action: 'insertUnorderedList' },\n { icon: 'format_list_numbered', action: 'insertOrderedList' },\n { icon: 'highlight', action: 'highlightColor' },\n { icon: 'format_align_left', action: 'justifyLeft' },\n { icon: 'format_align_center', action: 'justifyCenter' },\n { icon: 'format_align_right', action: 'justifyRight' },\n { icon: 'format_align_justify', action: 'justifyFull' },\n ];\n\n addInlineTag(tag: string) {\n // https://stackoverflow.com/questions/60581285/execcommand-is-now-obsolete-whats-the-alternative\n document.execCommand(tag);\n this.closeOverlayEmitter.emit();\n }\n\n addClassTag(tag: string, className: string) {\n const range = this.selection().getRangeAt(0);\n const element = this.renderer.createElement(tag);\n element.className = className ?? '';\n element.innerHTML = range.toString();\n range.deleteContents();\n range.insertNode(element);\n this.closeOverlayEmitter.emit();\n }\n\n clearTags() {\n document.execCommand('removeFormat');\n document.execCommand('unlink');\n this.closeOverlayEmitter.emit();\n }\n\n openUrlInput() {\n this.savedRanges.push(this.selection().getRangeAt(0));\n this.showURLInputField.set(true);\n }\n\n createLink() {\n this.selection().removeAllRanges();\n this.selection().addRange(this.savedRanges.pop()!);\n document.execCommand('createLink', false, this.url);\n this.closeOverlayEmitter.emit();\n }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { inject, Injectable } from '@angular/core';\nimport { exhaustMap, filter, lastValueFrom, map, merge, of, tap } from 'rxjs';\nimport { ToolbarInlineComponent } from '../components/toolbar-inline/toolbar-inline.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToolbarInlineService {\n overlay = inject(Overlay);\n overlayRef!: OverlayRef;\n\n determineToDisplayInlineToolbarBlock(_event: Event) {\n return of(window.getSelection()).pipe(\n filter((selection) => selection !== null),\n filter((selection) => selection.rangeCount > 0),\n filter((selection) => selection.toString().length > 0),\n filter((selection) => selection.toString() !== ''),\n tap(() => this.overlayRef?.hasAttached() && this.overlayRef.dispose()), // So hacky tired to do this properly\n map((selection) => ({\n selection,\n parant: this.getSelectionParent(selection),\n })),\n filter(({ parant }) => this.isSelectionInABlock(parant as HTMLElement)),\n exhaustMap(({ selection }) => this.attachInlineToolbar(selection))\n );\n }\n\n getSelectionParent(selection: Selection): HTMLElement | null {\n const range = selection.getRangeAt(0);\n return range.commonAncestorContainer.nodeType === Node.ELEMENT_NODE\n ? (range.commonAncestorContainer as HTMLElement)\n : range.commonAncestorContainer.parentElement;\n }\n\n isSelectionInABlock(target: HTMLElement | null) {\n // ! TODO: This is a hacky way to determine if the selection is in a block\n // ! Need to also check if the block wants to display the inline toolbar\n return (\n !!target &&\n (target.closest('.no-toolbar-inline') !== null\n ? false\n : target.closest('ngx-editor-js2') !== null\n ? true\n : false)\n );\n }\n\n attachInlineToolbar(selection: Selection) {\n return of(selection.getRangeAt(0)).pipe(\n map((range) => range.getBoundingClientRect()),\n map((selectionRect) => this.createOverlay(selectionRect)),\n // So hacky tired to do this properly\n // passing the refs down the pipe adds a bug\n // user selects text with a drag\n // (mousedown → mousemove → wait → mousemove → mouseup)\n tap((overlayRef) => (this.overlayRef = overlayRef)),\n map((overlayRef) => {\n const inlineToolbar = overlayRef.attach(\n new ComponentPortal(ToolbarInlineComponent)\n );\n inlineToolbar.setInput('selection', selection);\n\n lastValueFrom(\n merge(\n overlayRef.backdropClick(),\n inlineToolbar.instance.closeOverlayEmitter\n ).pipe(\n tap(() => overlayRef.dispose()),\n tap(() => selection.removeAllRanges())\n )\n );\n return true;\n })\n );\n }\n\n createOverlay(selectionRect: DOMRect) {\n return this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(selectionRect)\n .withPositions([\n {\n offsetY: 8,\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n ]),\n });\n }\n}\n","import { Component, inject, input, output } from '@angular/core';\nimport { EditorJsComponent } from './components/editor-js.component';\nimport { AsyncPipe } from '@angular/common';\nimport {\n combineLatest,\n debounceTime,\n firstValueFrom,\n fromEvent,\n Observable,\n switchMap,\n tap,\n} from 'rxjs';\nimport { ToolFabService } from './services/tool-fab.service';\nimport { NgxEditorJsBlock } from './ngx-editor-js2.interface';\nimport { ToolbarInlineService } from './services/toolbar-inline.service';\nimport { EditorJsService } from './services/editor-js.service';\nimport { NgxEditorJs2Service } from './services/ngx-editor-js2.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ngx-editor-js2',\n imports: [EditorJsComponent, AsyncPipe],\n template: `\n <editor-js\n [blocks]=\"blocks()\"\n [bootstrapEditorJs]=\"bootstrapEditorJs$ | async\"\n ></editor-js>\n `,\n})\nexport class NgxEditorJs2Component {\n inlineToolbarSerivce = inject(ToolbarInlineService);\n editorJsService = inject(EditorJsService);\n ngxEditorJs2Service = inject(NgxEditorJs2Service);\n\n constructor() {\n this.editorJsService.formGroup.valueChanges.pipe(\n takeUntilDestroyed(),\n debounceTime(500),\n switchMap(() => this.editorJsService.getBlocks$()),\n tap((blocks) => this.formChanged.emit(blocks)),\n ).subscribe();\n }\n\n blocks = input<NgxEditorJsBlock[]>([]);\n\n // Allows the parent component to request the current blocks\n blocksRequested = output<Observable<NgxEditorJsBlock[]>>();\n requestBlocks = input.required({\n transform: (value: unknown) =>\n value && this.blocksRequested.emit(this.editorJsService.getBlocks$()),\n });\n\n // Tells the parent component when the form has changed\n formChanged = output<NgxEditorJsBlock[]>();\n\n\n bootstrapEditorJs$ = combineLatest([\n inject(ToolFabService).toolbarComponentRef$,\n this.ngxEditorJs2Service.loadBlocks$,\n fromEvent(document, 'selectionchange').pipe(\n debounceTime(200),\n switchMap((event) =>\n this.inlineToolbarSerivce.determineToDisplayInlineToolbarBlock(event)\n )\n )\n ]);\n}\n","/*\n * Public API Surface of ngx-editor-js2\n */\n\nexport * from './lib/services/ngx-editor-js2.service';\nexport * from './lib/ngx-editor-js2.component';\nexport type * from './lib/ngx-editor-js2.interface';\nexport * from './lib/directives/autofocus.directive';\nexport * from './lib/directives/toolbar-fab.directive';\nexport * from './lib/directives/control-accessor.directive';\nexport * from './lib/directives/clean-paste-data.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"tmdjr-ngx-editor-js2.mjs","sources":["../../../projects/ngx-editor-js2/src/lib/directives/control-accessor.directive.ts","../../../projects/ngx-editor-js2/src/lib/directives/autofocus.directive.ts","../../../projects/ngx-editor-js2/src/lib/ngx-editor-js2.interface.ts","../../../projects/ngx-editor-js2/src/lib/components/toolbar/toolbar-block-options.component.ts","../../../projects/ngx-editor-js2/src/lib/components/toolbar/toolbar-blocks.component.ts","../../../projects/ngx-editor-js2/src/lib/components/toolbar/toolbar.component.ts","../../../projects/ngx-editor-js2/src/lib/services/block-movement.service.ts","../../../projects/ngx-editor-js2/src/lib/services/editor-js.service.ts","../../../projects/ngx-editor-js2/src/lib/services/tool-fab.service.ts","../../../projects/ngx-editor-js2/src/lib/directives/toolbar-fab.directive.ts","../../../projects/ngx-editor-js2/src/lib/directives/clean-paste-data.directive.ts","../../../projects/ngx-editor-js2/src/lib/components/blocks/header-block.component.ts","../../../projects/ngx-editor-js2/src/lib/components/blocks/paragraph-block.component.ts","../../../projects/ngx-editor-js2/src/lib/services/ngx-editor-js2.service.ts","../../../projects/ngx-editor-js2/src/lib/components/editor-js.component.ts","../../../projects/ngx-editor-js2/src/lib/components/toolbar-inline/toolbar-inline.component.ts","../../../projects/ngx-editor-js2/src/lib/services/toolbar-inline.service.ts","../../../projects/ngx-editor-js2/src/lib/ngx-editor-js2.component.ts","../../../projects/ngx-editor-js2/src/public-api.ts","../../../projects/ngx-editor-js2/src/tmdjr-ngx-editor-js2.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n input,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Directive({\n selector: '[controlAccessor]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ControlAccessorDirective),\n multi: true,\n },\n ],\n})\nexport class ControlAccessorDirective implements ControlValueAccessor {\n elementRef = inject(ElementRef);\n\n defaultValue = input<string>();\n\n onChange: (value: any) => void = () => {};\n onTouched: () => void = () => {};\n\n writeValue(): void {\n this.elementRef.nativeElement.innerHTML = this.defaultValue() || '';\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.onTouched();\n }\n\n @HostListener('input')\n onInput(): void {\n this.onChange(this.elementRef.nativeElement.innerHTML);\n }\n}\n","import {\n AfterContentInit,\n Directive,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\n\n@Directive({\n selector: '[autofocus]',\n})\nexport class AutofocusDirective implements AfterContentInit {\n elementRef = inject(ElementRef);\n\n autofocus = input<boolean>(false);\n\n ngAfterContentInit() {\n this.autofocus() && this.elementRef.nativeElement.focus?.();\n }\n}\n","import { InjectionToken, InputSignal, Signal, Type } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nexport interface NgxEditorjsOptions {\n consumerSupportedBlocks?: SupportedBlock[];\n}\nexport interface SupportedBlock {\n name: string;\n componentInstanceName: string;\n component: Type<BlockComponent>;\n}\n\nexport interface NgxEditorJsBlock {\n blockId: string;\n sortIndex: number;\n componentInstanceName: string;\n dataClean: string;\n savedAction?: string;\n}\nexport interface NgxEditorJsBlockWithComponent extends NgxEditorJsBlock {\n component: Type<BlockComponent>;\n autofocus?: boolean;\n}\n\nexport interface BlockComponent {\n sortIndex: InputSignal<number>;\n componentInstanceName: string;\n formControlName: InputSignal<string>;\n formGroup: InputSignal<FormGroup>;\n blockOptionActions: InputSignal<BlockOptionAction[]>;\n savedAction: Signal<string>;\n actionCallback?: (string: string) => void;\n}\n\nexport interface BlockOptionAction {\n action: string;\n icon?: string;\n text?: string;\n}\n\nexport enum MovePositionActions {\n UP = 'UP',\n DOWN = 'DOWN',\n DELETE = 'DELETE',\n}\n\nexport type TAddBlockCallback = (\n block: Type<BlockComponent>,\n index: number\n) => Observable<unknown>;\n\nexport type TMoveBlockPositionCallback = (\n action: MovePositionActions,\n index: number\n) => Observable<unknown>;\n","import { Component, input, output } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatRipple } from '@angular/material/core';\nimport {\n BlockOptionAction,\n MovePositionActions,\n} from '../../ngx-editor-js2.interface';\n\n@Component({\n selector: 'toolbar-block-options',\n imports: [MatIcon, MatRipple],\n template: `\n <div class=\"actions-panel\">\n <div class=\"action-btn\" matRipple (click)=\"movePosition(Position.UP)\">\n <mat-icon>arrow_upward</mat-icon>\n </div>\n <div class=\"action-btn\" matRipple (click)=\"movePosition(Position.DELETE)\">\n <mat-icon>delete</mat-icon>\n </div>\n <div class=\"action-btn\" matRipple (click)=\"movePosition(Position.DOWN)\">\n <mat-icon>arrow_downward</mat-icon>\n </div>\n @for(blockOptionAction of blockOptionActions(); track $index) {\n <div\n class=\"action-btn\"\n (click)=\"handleAction(blockOptionAction.action)\"\n matRipple\n >\n @if (blockOptionAction.text) {\n {{ blockOptionAction.text }}\n } @else {\n <mat-icon>{{ blockOptionAction.icon }}</mat-icon>\n }\n </div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n .actions-panel {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 1px;\n width: 128px;\n max-height: 128px;\n border-radius: 4px;\n overflow: auto;\n background: var(--mat-sys-secondary);\n box-shadow: var(--mat-sys-level5);\n .action-btn {\n cursor: pointer;\n width: 42px;\n height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n\n color: var(--mat-sys-on-secondary);\n background: var(--mat-sys-secondary);\n &:hover,\n &:focus {\n color: var(--mat-sys-secondary);\n background: var(--mat-sys-on-secondary);\n }\n }\n }\n }\n `,\n ],\n})\nexport class ToolbarBlockOptionsComponent {\n readonly Position = MovePositionActions;\n\n blockOptionActions = input<BlockOptionAction[]>();\n\n handleActionEmitter = output<string>({ alias: 'handleAction' });\n moveBlockPositionEmitter = output<MovePositionActions>({\n alias: 'moveBlockPosition',\n });\n\n movePosition(action: MovePositionActions) {\n this.moveBlockPositionEmitter.emit(action);\n }\n\n handleAction(action: string) {\n this.handleActionEmitter.emit(action);\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { Component, input, output, Type } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatRipple } from '@angular/material/core';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatList, MatListItem } from '@angular/material/list';\nimport { combineLatest, map, startWith } from 'rxjs';\nimport { BlockComponent, SupportedBlock } from '../../ngx-editor-js2.interface';\n\n@Component({\n selector: 'toolbar-blocks',\n imports: [\n MatFormField,\n MatInput,\n MatList,\n MatListItem,\n MatRipple,\n MatLabel,\n ReactiveFormsModule,\n AsyncPipe,\n ],\n template: `\n <div class=\"block-list-container\">\n <mat-form-field appearance=\"fill\" color=\"accent\">\n <mat-label>Filter</mat-label>\n <input\n class=\"filter-text\"\n matInput\n [formControl]=\"blockCtrl\"\n [autofocus]=\"true\"\n />\n </mat-form-field>\n @if(filteredBlocks$ | async; as filteredBlocks) {\n <mat-list class=\"block-list-panel\">\n @if (filteredBlocks.length <= 0) {\n <mat-list-item matRipple mat-list-item> No Results </mat-list-item>\n } @else { @for(block of filteredBlocks; track $index) {\n <mat-list-item matRipple mat-list-item (click)=\"addBlock(block)\">\n {{ block.name }}\n </mat-list-item>\n } }\n </mat-list>\n }\n </div>\n `,\n styles: [\n `\n :host {\n .mat-mdc-list-base {\n padding-top: 0px;\n margin-top: -14px;\n }\n\n .block-list-container {\n border-radius: 4px;\n background: var(--mat-sys-secondary-container);\n box-shadow: var(--mat-sys-level5);\n }\n\n .block-list-panel {\n max-width: 280px;\n max-height: 240px;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n overflow: auto;\n color: var(--mat-sys-on-secondary-container);\n }\n\n mat-list-item {\n cursor: pointer;\n user-select: none;\n &:hover,\n &:focus {\n background: var(--mat-sys-surface-bright);\n }\n }\n }\n `,\n ],\n})\nexport class ToolbarBlocksComponent {\n addBlockEmitter = output<Type<BlockComponent>>({ alias: 'addBlock' });\n supportedBlocks = input<SupportedBlock[]>([]);\n supportedBlocks$ = toObservable(this.supportedBlocks);\n\n blockCtrl = new FormControl([]);\n filter$ = this.blockCtrl.valueChanges.pipe(startWith(''));\n\n filteredBlocks$ = combineLatest([this.supportedBlocks$, this.filter$]).pipe(\n map(([blocks, filterString]) => {\n if (typeof filterString !== 'string') filterString = '';\n filterString = filterString.replace(/\\\\/g, '');\n const pattern = filterString\n ?.split('')\n .map((v: string) => `(?=.*${v})`)\n .join('');\n const regex = new RegExp(`${pattern}`, 'gi');\n\n // return blocks.filter(block => regex.exec(block));\n return blocks.filter((block) => block.name.match(regex));\n })\n );\n\n addBlock(block: SupportedBlock) {\n this.addBlockEmitter.emit(block?.component);\n }\n}\n","import { Component, input, signal, Type } from '@angular/core';\nimport { MatRipple } from '@angular/material/core';\nimport { CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { ToolbarBlockOptionsComponent } from './toolbar-block-options.component';\nimport { ToolbarBlocksComponent } from './toolbar-blocks.component';\nimport { firstValueFrom } from 'rxjs';\nimport {\n BlockComponent,\n BlockOptionAction,\n MovePositionActions,\n SupportedBlock,\n TAddBlockCallback,\n TMoveBlockPositionCallback,\n} from '../../ngx-editor-js2.interface';\n\n@Component({\n selector: 'toolbar',\n imports: [\n CdkDragHandle,\n MatRipple,\n OverlayModule,\n ToolbarBlockOptionsComponent,\n ToolbarBlocksComponent,\n ],\n template: `\n <div class=\"toolbar-buttons-container\">\n <div\n class=\"toolbar-buttons\"\n #blockListTigger=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n matRipple\n (click)=\"openBlocksList()\"\n >\n <span class=\"material-icons\">add</span>\n </div>\n <div\n class=\"toolbar-buttons\"\n #blockOptionListTigger=\"cdkOverlayOrigin\"\n cdkDragHandle\n cdkOverlayOrigin\n matRipple\n (click)=\"openBlockOptionList()\"\n >\n <span class=\"material-icons\">drag_indicator</span>\n </div>\n </div>\n\n <!-- Block type search list -->\n <ng-template\n cdkConnectedOverlay\n (overlayOutsideClick)=\"openBlocks.set(false)\"\n [cdkConnectedOverlayOrigin]=\"blockListTigger\"\n [cdkConnectedOverlayOpen]=\"openBlocks()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayOffsetY]=\"15\"\n [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n >\n <toolbar-blocks\n [supportedBlocks]=\"supportedBlocks()\"\n (addBlock)=\"addBlock($event)\"\n ></toolbar-blocks>\n </ng-template>\n\n <!-- Options List-->\n <ng-template\n cdkConnectedOverlay\n (overlayOutsideClick)=\"openBlocksOption.set(false)\"\n [cdkConnectedOverlayOrigin]=\"blockOptionListTigger\"\n [cdkConnectedOverlayOpen]=\"openBlocksOption()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayOffsetX]=\"-49\"\n [cdkConnectedOverlayOffsetY]=\"15\"\n [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n >\n <toolbar-block-options\n [blockOptionActions]=\"blockOptionActions()\"\n (handleAction)=\"handleAction($event)\"\n (moveBlockPosition)=\"moveBlockPosition($event)\"\n ></toolbar-block-options>\n </ng-template>\n `,\n styles: [\n `\n :host {\n .toolbar-buttons-container {\n position: relative;\n display: flex;\n gap: 10px;\n }\n .toolbar-buttons {\n cursor: pointer;\n width: 30px;\n height: 30px;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 4px;\n margin-bottom: 14px;\n user-select: none;\n color: var(--mat-sys-on-tertiary-container);\n background: var(--mat-sys-tertiary-container);\n box-shadow: var(--mat-sys-level2);\n }\n .toolbar-buttons {\n &:hover,\n &:focus {\n background: var(--mat-sys-surface-bright);\n }\n }\n }\n @media (min-width: 768px) {\n :host {\n position: absolute;\n margin-left: -80px;\n top: 0;\n }\n }\n `,\n ],\n})\nexport class ToolbarComponent {\n componentContextPositionIndex = input.required<number>();\n supportedBlocks = input.required<SupportedBlock[]>();\n blockOptionActions = input<BlockOptionAction[]>();\n actionCallback = input<(action: string) => void>(() => () => {});\n formControlName = input<string>();\n addBlockCallback = input.required<TAddBlockCallback>();\n moveBlockPositionCallback = input.required<TMoveBlockPositionCallback>();\n\n openBlocks = signal<boolean>(false);\n openBlocksOption = signal<boolean>(false);\n\n openBlocksList() {\n this.openBlocks.update((prev) => !prev);\n }\n\n openBlockOptionList() {\n this.openBlocksOption.update((prev) => !prev);\n }\n\n moveBlockPosition(action: MovePositionActions) {\n this.closeLists();\n this.moveBlockPositionCallback()(\n action,\n this.componentContextPositionIndex()\n );\n }\n\n handleAction(action: string) {\n this.closeLists();\n this.actionCallback()(action);\n }\n\n addBlock(block: Type<BlockComponent>) {\n this.closeLists();\n firstValueFrom(\n this.addBlockCallback()(block, this.componentContextPositionIndex())\n );\n }\n\n closeLists() {\n this.openBlocks.set(false);\n this.openBlocksOption.set(false);\n }\n}\n","import { ComponentRef, Injectable, ViewContainerRef } from '@angular/core';\nimport { defaultIfEmpty, filter, from, map, of, tap } from 'rxjs';\nimport {\n BlockComponent,\n MovePositionActions,\n} from '../ngx-editor-js2.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BlockMovementService {\n componentRefMap = new Map<object, ComponentRef<BlockComponent>>();\n\n clearComponentRefs() {\n this.componentRefMap.clear();\n }\n\n getNgxEditorJsBlocks() {\n return of(Array.from(this.componentRefMap.values()));\n }\n\n newComponentAttached(componentRef: ComponentRef<BlockComponent>) {\n this.componentRefMap.set(componentRef.instance, componentRef);\n }\n\n updateComponentIndices(ngxEditor: ViewContainerRef) {\n return from(this.componentRefMap.values()).pipe(\n tap((componentRef: any) =>\n componentRef.setInput(\n 'sortIndex',\n ngxEditor.indexOf(componentRef.hostView)\n )\n )\n );\n }\n\n moveBlockComponentPosition(\n ngxEditor: ViewContainerRef,\n action: MovePositionActions,\n index: number\n ) {\n return of(Array.from(this.componentRefMap.values())).pipe(\n map((componentRefs) =>\n componentRefs.find(\n (componentRef) =>\n ngxEditor.indexOf(componentRef.hostView) === index - 1\n )\n ),\n filter((componentRef) => !!componentRef),\n map((componentRef) => ({\n componentRef,\n totalComponents: ngxEditor.length - 1,\n currentIndex: ngxEditor.indexOf(componentRef.hostView),\n newIndex: (index: number) =>\n action === MovePositionActions.UP ? index - 1 : index + 1,\n })),\n map(({ componentRef, totalComponents, currentIndex, newIndex }) => ({\n componentRef,\n currentIndex,\n newIndex: Math.max(\n 0,\n Math.min(newIndex(currentIndex), totalComponents)\n ),\n })),\n filter(({ currentIndex, newIndex }) => currentIndex !== newIndex),\n tap(({ componentRef, newIndex }) => {\n ngxEditor.move(componentRef.hostView, newIndex);\n componentRef.setInput('sortIndex', newIndex);\n componentRef.setInput('autofocus', true);\n }),\n defaultIfEmpty(false)\n );\n }\n\n removeBlockComponent(\n ngxEditor: ViewContainerRef,\n index: number,\n clear = false\n ) {\n return of(Array.from(this.componentRefMap.values())).pipe(\n filter((componentRefs) => clear || componentRefs.length !== 1),\n map((componentRefs) =>\n componentRefs.find(\n (componentRef) =>\n ngxEditor.indexOf(componentRef.hostView) === index - 1\n )\n ),\n map((componentRef) =>\n this.componentRefMap.delete(componentRef?.instance ?? {})\n ),\n tap((successful) => successful && ngxEditor.remove(index - 1)),\n defaultIfEmpty(false)\n );\n }\n}\n","import { inject, Injectable, Type, ViewContainerRef } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport {\n combineLatest,\n defaultIfEmpty,\n filter,\n forkJoin,\n iif,\n lastValueFrom,\n map,\n mergeMap,\n Observable,\n of,\n switchMap,\n tap,\n} from 'rxjs';\nimport {\n BlockComponent,\n MovePositionActions,\n NgxEditorJsBlock,\n NgxEditorJsBlockWithComponent,\n} from '../ngx-editor-js2.interface';\nimport { BlockMovementService } from './block-movement.service';\n\nconst createUID = () => Math.random().toString(36).substring(7);\n@Injectable({\n providedIn: 'root',\n})\nexport class EditorJsService {\n formBuilder = inject(FormBuilder);\n blockMovementService = inject(BlockMovementService);\n\n componentRefMap = new Map<object, unknown>();\n\n ngxEditor!: ViewContainerRef;\n formGroup = this.formBuilder.group({});\n\n // TODO - Handle this idiomatically\n setNgxEditor(ngxEditor: ViewContainerRef) {\n this.ngxEditor = ngxEditor;\n }\n\n getBlocks$(): Observable<NgxEditorJsBlock[]> {\n return new Observable<NgxEditorJsBlock[]>((observer) => {\n lastValueFrom(\n this.blockMovementService.getNgxEditorJsBlocks().pipe(\n map((componentRefs) =>\n componentRefs.map<NgxEditorJsBlock>(({ instance }) => ({\n blockId: instance.formControlName(),\n sortIndex: instance.sortIndex(),\n componentInstanceName: instance.componentInstanceName,\n savedAction: instance.savedAction(),\n dataClean: instance.formGroup().get(instance.formControlName())\n ?.value,\n }))\n ),\n map((blocks) => blocks.sort((a, b) => a.sortIndex - b.sortIndex))\n )\n ).then((blocks) => {\n observer.next(blocks);\n observer.complete();\n });\n });\n }\n\n createNgxEditorJsBlockWithComponent(\n blockComponent: Type<BlockComponent>,\n componentContextPositionIndex: number\n ) {\n return of<NgxEditorJsBlockWithComponent>({\n blockId: createUID(),\n sortIndex: componentContextPositionIndex,\n componentInstanceName: blockComponent.name,\n component: blockComponent,\n // TODO - Force content-type for dataClean? JSON, HTML, etc.\n // TODO - And maybe rename dataClean to just data?\n dataClean: '',\n autofocus: true,\n });\n }\n\n addBlockComponent(\n ngxEditorJsBlock: NgxEditorJsBlockWithComponent,\n emitEvent = true\n ): Observable<void> {\n return forkJoin([\n this.createFormGroupControl(ngxEditorJsBlock, emitEvent),\n this.attachComponent(ngxEditorJsBlock),\n this.blockMovementService.updateComponentIndices(this.ngxEditor),\n ]).pipe(map(() => void 0));\n }\n\n createFormGroupControl({\n blockId,\n dataClean,\n }: NgxEditorJsBlockWithComponent, emitEvent = true) {\n return of(this.formBuilder.control(dataClean, [])).pipe(\n tap((formControl) => this.formGroup.addControl(blockId, formControl, { emitEvent }))\n );\n }\n\n attachComponent({\n component,\n blockId,\n autofocus,\n savedAction,\n sortIndex: index,\n }: NgxEditorJsBlockWithComponent) {\n return of(blockId).pipe(\n map((controlName) => {\n const componentRef = this.ngxEditor.createComponent(component, {\n index,\n });\n\n (componentRef.location.nativeElement as HTMLElement)\n .classList.add('ngx-editor-js2-block');\n\n componentRef.setInput('sortIndex', index);\n componentRef.setInput('formGroup', this.formGroup);\n componentRef.setInput('formControlName', controlName);\n componentRef.setInput('autofocus', autofocus);\n\n savedAction && componentRef.instance.actionCallback?.(savedAction);\n\n this.blockMovementService.newComponentAttached(componentRef);\n return componentRef;\n })\n );\n }\n\n determineMovePositionAction(\n action: MovePositionActions,\n index: number,\n formControlName: string\n ) {\n return iif(\n () => action === MovePositionActions.DELETE,\n this.removeBlockComponent(index, formControlName),\n this.blockMovementService.moveBlockComponentPosition(\n this.ngxEditor,\n action,\n index\n )\n ).pipe(\n switchMap(() =>\n this.blockMovementService.updateComponentIndices(this.ngxEditor)\n )\n );\n }\n\n moveBlockComponentPosition(previousIndex: number, currentIndex: number) {\n return of(this.ngxEditor.get(previousIndex)).pipe(\n filter((viewRef) => !!viewRef),\n tap((viewRef) => {\n this.ngxEditor.move(viewRef, currentIndex);\n }),\n switchMap(() =>\n this.blockMovementService.updateComponentIndices(this.ngxEditor)\n ),\n defaultIfEmpty(false)\n );\n }\n\n removeBlockComponent(index: number, formControlName: string, clear = false) {\n return combineLatest([\n this.blockMovementService.removeBlockComponent(\n this.ngxEditor,\n index,\n clear\n ),\n of(this.formGroup.removeControl(formControlName)),\n ]);\n }\n\n clearBlocks() {\n return this.blockMovementService.getNgxEditorJsBlocks().pipe(\n filter((componentRefs) => componentRefs.length > 0),\n map((componentRefs) =>\n componentRefs.sort(\n (a, b) => a.instance.sortIndex() - b.instance.sortIndex()\n )\n ),\n mergeMap((componentRefs) =>\n forkJoin(\n Array.from(componentRefs.values()).map((componentRef) =>\n this.removeBlockComponent(\n componentRef.instance.sortIndex() + 1,\n componentRef.instance.formControlName(),\n true\n )\n )\n )\n ),\n switchMap(() =>\n this.blockMovementService.updateComponentIndices(this.ngxEditor)\n ),\n tap(() => {\n this.blockMovementService.clearComponentRefs();\n this.ngxEditor.clear();\n }),\n defaultIfEmpty(false)\n );\n }\n}\n","import { inject, Injectable, Type, ViewContainerRef } from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n lastValueFrom,\n map,\n switchMap,\n tap,\n} from 'rxjs';\nimport { ToolbarComponent } from '../components/toolbar/toolbar.component';\nimport { EditorJsService } from './editor-js.service';\nimport { NgxEditorJs2Service } from './ngx-editor-js2.service';\nimport {\n BlockOptionAction,\n BlockComponent,\n MovePositionActions,\n} from '../ngx-editor-js2.interface';\n\ntype ComponentContext = {\n index: number;\n viewContainerRef: ViewContainerRef;\n blockOptionActions: BlockOptionAction[];\n actionCallback: (v: string) => void;\n formControlName: string;\n} | null;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToolFabService {\n ngxEditorJs2Service = inject(NgxEditorJs2Service);\n editorJsService = inject(EditorJsService);\n // I need to explain this in detail so the future me can understand this.\n componentContext = new BehaviorSubject<ComponentContext>(null);\n toolbarComponentRef$ = combineLatest({\n componentContext: this.componentContext.asObservable(),\n supportedBlocks: this.ngxEditorJs2Service.supportedBlocks$,\n }).pipe(\n filter(({ componentContext }) => componentContext !== null),\n distinctUntilChanged(\n ({ componentContext: previous }, { componentContext: current }) =>\n previous!.index !== current!.index ||\n previous!.viewContainerRef !== current!.viewContainerRef\n ? (previous!.viewContainerRef.clear(), false)\n : true\n ),\n map(({ componentContext, supportedBlocks }) => {\n const {\n index,\n viewContainerRef,\n blockOptionActions,\n actionCallback,\n formControlName,\n } = componentContext!;\n // TODO We will need to create a ToolbarBottomRailComponent to handle the mobile view\n const componentRef = viewContainerRef.createComponent(ToolbarComponent);\n componentRef.setInput('componentContextPositionIndex', index + 1);\n componentRef.setInput('supportedBlocks', supportedBlocks);\n componentRef.setInput('blockOptionActions', blockOptionActions);\n componentRef.setInput('actionCallback', actionCallback);\n componentRef.setInput('formControlName', formControlName);\n componentRef.setInput('addBlockCallback', this.addBlock.bind(this));\n componentRef.setInput(\n 'moveBlockPositionCallback',\n this.movePositionAction.bind(this)\n );\n return componentRef;\n }),\n );\n\n addBlock(block: Type<BlockComponent>, index: number) {\n return this.editorJsService\n .createNgxEditorJsBlockWithComponent(block, index)\n .pipe(\n switchMap((block) => this.editorJsService.addBlockComponent(block))\n );\n }\n\n movePositionAction(\n action: MovePositionActions,\n index: number,\n formControlName: string\n ) {\n return lastValueFrom(\n this.editorJsService.determineMovePositionAction(\n action,\n index,\n formControlName\n )\n );\n }\n}\n","import {\n ComponentRef,\n Directive,\n effect,\n HostListener,\n inject,\n input,\n ViewContainerRef,\n} from '@angular/core';\nimport { ToolFabService } from '../services/tool-fab.service';\nimport { Observable } from 'rxjs';\nimport { ToolbarComponent } from '../components/toolbar/toolbar.component';\nimport { BlockOptionAction } from '../ngx-editor-js2.interface';\n\nexport type ToolbarComponentRef = Observable<ComponentRef<ToolbarComponent>>;\n\n@Directive({\n selector: '[toolbarFab]',\n})\nexport class ToolbarFabDirective {\n toolFabService = inject(ToolFabService);\n viewContainerRef = inject(ViewContainerRef);\n\n autofocus = input<boolean>();\n blockOptionActions = input<BlockOptionAction[]>();\n actionCallback = input.required<(action: string) => void>();\n componentContextPositionIndex = input.required<number>();\n formControlName = input.required<string>();\n\n @HostListener('mouseenter') onMouseEnter() {\n this.toolFabService.componentContext.next({\n viewContainerRef: this.viewContainerRef,\n blockOptionActions: this.blockOptionActions() ?? [],\n actionCallback: this.actionCallback(),\n index: this.componentContextPositionIndex(),\n formControlName: this.formControlName(),\n });\n }\n\n constructor() {\n effect(() => {\n this.autofocus() && this.onMouseEnter();\n });\n }\n}\n","import {\n Directive,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[cleanPasteData]',\n})\nexport class CleanPasteDataDirective {\n @HostListener('paste', ['$event'])\n onPaste(event: Event) {\n event.preventDefault();\n const text = (event as ClipboardEvent).clipboardData?.getData('text/plain');\n document.execCommand('insertText', false, text);\n }\n}\n","import { Component, input, signal } from '@angular/core';\nimport { ControlAccessorDirective } from '../../directives/control-accessor.directive';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { AutofocusDirective } from '../../directives/autofocus.directive';\nimport { ToolbarFabDirective } from '../../directives/toolbar-fab.directive';\nimport { CleanPasteDataDirective } from '../../directives/clean-paste-data.directive';\nimport {\n BlockComponent,\n BlockOptionAction,\n} from '../../ngx-editor-js2.interface';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { CdkDrag } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'header-block',\n host: { class: 'cdk-drag-animating' },\n hostDirectives: [CdkDrag],\n imports: [\n ReactiveFormsModule,\n ControlAccessorDirective,\n AutofocusDirective,\n ToolbarFabDirective,\n CleanPasteDataDirective,\n NgTemplateOutlet\n],\n template: `\n@switch (savedAction()) {\n @case ('h1') {\n <h1>\n <ng-container *ngTemplateOutlet=\"sharedHeaderTemplate\"></ng-container>\n </h1>\n }\n @case ('h2') {\n <h2>\n <ng-container *ngTemplateOutlet=\"sharedHeaderTemplate\"></ng-container>\n </h2>\n }\n @case ('h3') {\n <h3>\n <ng-container *ngTemplateOutlet=\"sharedHeaderTemplate\"></ng-container>\n </h3>\n }\n @case ('h4') {\n <h4>\n <ng-container *ngTemplateOutlet=\"sharedHeaderTemplate\"></ng-container>\n </h4>\n }\n @case ('h5') {\n <h5>\n <ng-container *ngTemplateOutlet=\"sharedHeaderTemplate\"></ng-container>\n </h5>\n }\n @case ('h6') {\n <h6>\n <ng-container *ngTemplateOutlet=\"sharedHeaderTemplate\"></ng-container>\n </h6>\n }\n}\n\n<ng-template [formGroup]=\"formGroup()\" #sharedHeaderTemplate>\n <span\n controlAccessor\n cleanPasteData\n contentEditable\n toolbarFab\n [defaultValue]=\"formGroup().get(formControlName())?.value\"\n [actionCallback]=\"actionCallbackBind\"\n [blockOptionActions]=\"blockOptionActions()\"\n [autofocus]=\"autofocus()\"\n [formControlName]=\"formControlName()\"\n [componentContextPositionIndex]=\"sortIndex()\"\n ></span>\n</ng-template>\n`,\n styles: [\n `\n :host {\n display: block;\n position: relative;\n :is(h1, h2, h3, h4, h5, h6) {\n margin: 0;\n span {\n display: block;\n line-height: inherit;\n }\n }\n\n h1 > * {\n font: var(--mat-sys-display-large);\n }\n h2 > * {\n font: var(--mat-sys-display-medium);\n }\n h3 > * {\n font: var(--mat-sys-display-small);\n }\n h4 > * {\n font: var(--mat-sys-headline-large);\n }\n h5 > * {\n font: var(--mat-sys-headline-medium);\n }\n h6 > * {\n font: var(--mat-sys-headline-small);\n }\n }\n `,\n ],\n})\nexport class HeaderBlockComponent implements BlockComponent {\n sortIndex = input<number>(0);\n componentInstanceName = 'HeaderBlockComponent';\n autofocus = input<boolean>(true);\n formGroup = input.required<FormGroup>();\n formControlName = input.required<string>();\n blockOptionActions = input<BlockOptionAction[]>([\n { action: 'h1', text: 'H1' },\n { action: 'h2', text: 'H2' },\n { action: 'h3', text: 'H3' },\n { action: 'h4', text: 'H4' },\n { action: 'h5', text: 'H5' },\n { action: 'h6', text: 'H6' },\n ]);\n\n savedAction = signal<string>('h1');\n actionCallbackBind = this.actionCallback.bind(this);\n\n actionCallback(selectedAction: string) {\n this.savedAction.set(selectedAction);\n }\n}\n","import { Component, input, signal } from '@angular/core';\nimport { ControlAccessorDirective } from '../../directives/control-accessor.directive';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { AutofocusDirective } from '../../directives/autofocus.directive';\nimport { ToolbarFabDirective } from '../../directives/toolbar-fab.directive';\nimport { CleanPasteDataDirective } from '../../directives/clean-paste-data.directive';\nimport {\n BlockComponent,\n BlockOptionAction,\n} from '../../ngx-editor-js2.interface';\nimport { NgClass } from '@angular/common';\nimport { CdkDrag } from '@angular/cdk/drag-drop';\n\n\n@Component({\n selector: 'paragraph-block',\n host: { class: 'cdk-drag-animating' },\n hostDirectives: [CdkDrag],\n imports: [\n ReactiveFormsModule,\n ControlAccessorDirective,\n AutofocusDirective,\n ToolbarFabDirective,\n CleanPasteDataDirective,\n NgClass,\n ],\n template: `\n <ng-container [formGroup]=\"formGroup()\">\n <p\n controlAccessor\n contentEditable\n toolbarFab\n cleanPasteData\n [ngClass]=\"savedAction()\"\n [defaultValue]=\"formGroup().get(formControlName())?.value\"\n [actionCallback]=\"actionCallbackBind\"\n [autofocus]=\"autofocus()\"\n [blockOptionActions]=\"blockOptionActions()\"\n [formControlName]=\"formControlName()\"\n [componentContextPositionIndex]=\"sortIndex()\"\n ></p>\n </ng-container>\n `,\n styles: [\n `\n :host {\n display: block;\n position: relative;\n .small {\n font: var(--mat-sys-body-small);\n }\n .medium {\n font: var(--mat-sys-body-medium);\n }\n .large {\n font: var(--mat-sys-body-large);\n }\n .title-small {\n font: var(--mat-sys-title-small);\n }\n .title-medium {\n font: var(--mat-sys-title-medium);\n }\n .title-large {\n font: var(--mat-sys-title-large);\n }\n }\n `,\n ],\n})\nexport class ParagraphBlockComponent implements BlockComponent {\n sortIndex = input<number>(0);\n componentInstanceName = 'ParagraphBlockComponent';\n autofocus = input<boolean>(true);\n formGroup = input.required<FormGroup>();\n formControlName = input.required<string>();\n blockOptionActions = input<BlockOptionAction[]>([\n { action: 'small', icon: 'density_small' },\n { action: 'medium', icon: 'density_medium' },\n { action: 'large', icon: 'density_large' },\n { action: 'title-small', text: 'TS' },\n { action: 'title-medium', text: 'TM' },\n { action: 'title-large', text: 'TL' },\n ]);\n\n savedAction = signal<string>('medium');\n actionCallbackBind = this.actionCallback.bind(this);\n\n actionCallback(action: string) {\n this.savedAction.update(() => action);\n }\n}\n","import { inject, Injectable, InjectionToken, Type } from '@angular/core';\nimport { HeaderBlockComponent } from '../components/blocks/header-block.component';\nimport { ParagraphBlockComponent } from '../components/blocks/paragraph-block.component';\nimport {\n BehaviorSubject,\n combineLatest,\n delay,\n exhaustMap,\n forkJoin,\n map,\n mergeMap,\n of,\n switchMap,\n} from 'rxjs';\nimport { EditorJsService } from './editor-js.service';\nimport {\n NgxEditorjsOptions,\n NgxEditorJsBlock,\n NgxEditorJsBlockWithComponent,\n SupportedBlock,\n BlockComponent,\n} from '../ngx-editor-js2.interface';\n\nexport const NGX_EDITORJS_OPTIONS = new InjectionToken<NgxEditorjsOptions>(\n 'NGX_EDITORJS_OPTIONS'\n);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxEditorJs2Service {\n editorJsService = inject(EditorJsService);\n\n consumerSupportedBlocks = new BehaviorSubject<SupportedBlock[]>(\n inject(NGX_EDITORJS_OPTIONS, { optional: true })?.consumerSupportedBlocks ??\n []\n );\n\n internalSupportedBlocks = new BehaviorSubject<SupportedBlock[]>([\n {\n name: 'Paragraph',\n component: ParagraphBlockComponent,\n componentInstanceName: 'ParagraphBlockComponent',\n },\n {\n name: 'Header',\n component: HeaderBlockComponent,\n componentInstanceName: 'HeaderBlockComponent',\n },\n ]);\n\n supportedBlocks$ = combineLatest([\n this.internalSupportedBlocks.asObservable(),\n this.consumerSupportedBlocks.asObservable(),\n ]).pipe(map(([internal, consumer]) => [...internal, ...consumer]));\n\n blocksToLoad = new BehaviorSubject<NgxEditorJsBlock[]>([]);\n\n loadBlocks$ = this.blocksToLoad.asObservable().pipe(\n delay(0),\n exhaustMap((blocks) => this.clearBlocksFromEditorJs(blocks)),\n map(([blocks]) => this.determineToloadDefaultBlocks(blocks)),\n map((blocks) => this.removeDuplicateBlocksWithSameIds(blocks)),\n map((blocks) => this.sortBlocks(blocks)),\n switchMap((blocks) => this.combineSupportBlocks(blocks)),\n map(([blocks, supportedBlocks]) =>\n this.createALookupMapForSupportedBlocks(blocks, supportedBlocks)\n ),\n map(({ blocks, supportedBlocksMap }) =>\n this.findAndMarshalBlocksComponent(blocks, supportedBlocksMap)\n ),\n mergeMap((blocks) =>\n this.addBlocksToEditorJs(blocks).pipe(map(() => blocks))\n )\n );\n\n clearBlocksFromEditorJs(blocks: NgxEditorJsBlock[]) {\n return forkJoin([of(blocks), this.editorJsService.clearBlocks()]);\n }\n\n determineToloadDefaultBlocks(blocks: NgxEditorJsBlock[]) {\n return blocks.length > 0 ? blocks : this.loadDefaultBlocks();\n }\n\n loadDefaultBlocks() {\n return [\n {\n blockId: 'tmdjr',\n sortIndex: 0,\n componentInstanceName: 'HeaderBlockComponent',\n dataClean: \"Let's get started... 🚀\",\n savedAction: 'h1',\n },\n ];\n }\n\n removeDuplicateBlocksWithSameIds(blocks: NgxEditorJsBlock[]) {\n return Array.from(\n new Map(blocks.map((block) => [block.blockId, block])).values()\n );\n }\n\n sortBlocks(blocks: NgxEditorJsBlock[]) {\n return blocks.sort((a, b) => a.sortIndex - b.sortIndex);\n }\n\n combineSupportBlocks(blocks: NgxEditorJsBlock[]) {\n return combineLatest([of(blocks), this.supportedBlocks$]);\n }\n\n createALookupMapForSupportedBlocks(\n blocks: NgxEditorJsBlock[],\n supportedBlocks: SupportedBlock[]\n ) {\n return {\n blocks,\n supportedBlocksMap: new Map(\n supportedBlocks.map((sb) => [sb.componentInstanceName, sb.component])\n ),\n };\n }\n\n findAndMarshalBlocksComponent(\n blocks: NgxEditorJsBlock[],\n supportedBlocksMap: Map<string, Type<BlockComponent>>\n ) {\n return blocks.map((block) => ({\n ...block,\n component:\n supportedBlocksMap.get(block.componentInstanceName) ??\n HeaderBlockComponent,\n }));\n }\n\n addBlocksToEditorJs(blocks: NgxEditorJsBlockWithComponent[]) {\n return combineLatest(\n blocks.map((block: NgxEditorJsBlockWithComponent) =>\n this.editorJsService.addBlockComponent(block, false)\n )\n );\n }\n}\n","import {\n Component,\n effect,\n inject,\n input,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { EditorJsService } from '../services/editor-js.service';\nimport { NgxEditorJs2Service } from '../services/ngx-editor-js2.service';\nimport { NgxEditorJsBlock } from '../ngx-editor-js2.interface';\nimport { CdkDropList, CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { lastValueFrom, tap } from 'rxjs';\n\n@Component({\n selector: 'editor-js',\n imports: [CdkDropList],\n template: `\n <div cdkDropList class=\"block-list\" (cdkDropListDropped)=\"drop($event)\" >\n <ng-container #ngxEditor></ng-container>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n .block-list {\n min-height: 60px;\n }\n }\n `,\n ],\n})\nexport class EditorJsComponent {\n editorJsService = inject(EditorJsService);\n ngxEditorJs2Service = inject(NgxEditorJs2Service);\n\n bootstrapEditorJs = input();\n blocks = input.required({\n transform: (value: NgxEditorJsBlock[]) =>\n this.ngxEditorJs2Service.blocksToLoad.next(value),\n });\n\n ngxEditor = viewChild.required('ngxEditor', { read: ViewContainerRef });\n\n constructor() {\n effect(() => {\n this.editorJsService.setNgxEditor(this.ngxEditor());\n });\n }\n\n drop(event: CdkDragDrop<string[]>) {\n void lastValueFrom(\n this.editorJsService.moveBlockComponentPosition(\n event.previousIndex,\n event.currentIndex\n ).pipe(\n tap(() => this.editorJsService.formGroup.updateValueAndValidity())\n )\n );\n }\n}\n","import {\n Component,\n EventEmitter,\n inject,\n input,\n Input,\n Output,\n Renderer2,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\n\n@Component({\n selector: 'toolbar-inline',\n imports: [MatListModule, MatIconModule, FormsModule],\n template: `\n <div class=\"panel\">\n @for (item of options; track $index) {\n <div class=\"inline-option\" (click)=\"addInlineTag(item.action)\">\n <mat-icon>{{ item.icon }}</mat-icon>\n </div>\n }\n <div class=\"inline-option\" (click)=\"addClassTag('code', 'inline-code')\">\n <mat-icon>code</mat-icon>\n </div>\n <div class=\"inline-option\" (click)=\"openUrlInput()\">\n <mat-icon>insert_link</mat-icon>\n </div>\n <div class=\"inline-option\" (click)=\"clearTags()\">\n <mat-icon>format_clear</mat-icon>\n </div>\n </div>\n\n @if(showURLInputField()) {\n <div class=\"panel\">\n <input\n type=\"text\"\n placeholder=\"Enter URL\"\n class=\"block-option-input\"\n [(ngModel)]=\"url\"\n />\n <div class=\"inline-option\" (click)=\"createLink()\">\n <mat-icon>add</mat-icon>\n </div>\n </div>\n }\n `,\n styles: [\n `\n :host {\n color: var(--mat-sys-on-secondary);\n background: var(--mat-sys-secondary);\n box-shadow: var(--mat-sys-level5);\n border-radius: 8px;\n .panel {\n display: flex;\n width: 230px;\n flex-wrap: wrap;\n gap: 1px;\n }\n .inline-option {\n cursor: pointer;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .block-option-input {\n width: 197px;\n height: 32px;\n border: none;\n outline: none;\n color: var(--mat-sys-on-secondary);\n background-color: transparent;\n box-sizing: border-box;\n }\n }\n `,\n ],\n})\nexport class ToolbarInlineComponent {\n // @Input() selection!: Selection;\n selection = input.required<Selection>();\n @Output('closeOverlay') closeOverlayEmitter = new EventEmitter();\n\n renderer = inject(Renderer2);\n\n url = '';\n showURLInputField = signal(false);\n savedRanges: Range[] = [];\n options = [\n { icon: 'format_bold', action: 'bold' },\n { icon: 'format_italic', action: 'italic' },\n { icon: 'format_underlined', action: 'underline' },\n { icon: 'strikethrough_s', action: 'strikethrough' },\n { icon: 'format_list_bulleted', action: 'insertUnorderedList' },\n { icon: 'format_list_numbered', action: 'insertOrderedList' },\n { icon: 'highlight', action: 'highlightColor' },\n { icon: 'format_align_left', action: 'justifyLeft' },\n { icon: 'format_align_center', action: 'justifyCenter' },\n { icon: 'format_align_right', action: 'justifyRight' },\n { icon: 'format_align_justify', action: 'justifyFull' },\n ];\n\n addInlineTag(tag: string) {\n // https://stackoverflow.com/questions/60581285/execcommand-is-now-obsolete-whats-the-alternative\n document.execCommand(tag);\n this.closeOverlayEmitter.emit();\n }\n\n addClassTag(tag: string, className: string) {\n const range = this.selection().getRangeAt(0);\n const element = this.renderer.createElement(tag);\n element.className = className ?? '';\n element.innerHTML = range.toString();\n range.deleteContents();\n range.insertNode(element);\n this.closeOverlayEmitter.emit();\n }\n\n clearTags() {\n document.execCommand('removeFormat');\n document.execCommand('unlink');\n this.closeOverlayEmitter.emit();\n }\n\n openUrlInput() {\n this.savedRanges.push(this.selection().getRangeAt(0));\n this.showURLInputField.set(true);\n }\n\n createLink() {\n this.selection().removeAllRanges();\n this.selection().addRange(this.savedRanges.pop()!);\n document.execCommand('createLink', false, this.url);\n this.closeOverlayEmitter.emit();\n }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { inject, Injectable } from '@angular/core';\nimport { exhaustMap, filter, lastValueFrom, map, merge, of, tap } from 'rxjs';\nimport { ToolbarInlineComponent } from '../components/toolbar-inline/toolbar-inline.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToolbarInlineService {\n overlay = inject(Overlay);\n overlayRef!: OverlayRef;\n\n determineToDisplayInlineToolbarBlock(_event: Event) {\n return of(window.getSelection()).pipe(\n filter((selection) => selection !== null),\n filter((selection) => selection.rangeCount > 0),\n filter((selection) => selection.toString().length > 0),\n filter((selection) => selection.toString() !== ''),\n tap(() => this.overlayRef?.hasAttached() && this.overlayRef.dispose()), // So hacky tired to do this properly\n map((selection) => ({\n selection,\n parant: this.getSelectionParent(selection),\n })),\n filter(({ parant }) => this.isSelectionInABlock(parant as HTMLElement)),\n exhaustMap(({ selection }) => this.attachInlineToolbar(selection))\n );\n }\n\n getSelectionParent(selection: Selection): HTMLElement | null {\n const range = selection.getRangeAt(0);\n return range.commonAncestorContainer.nodeType === Node.ELEMENT_NODE\n ? (range.commonAncestorContainer as HTMLElement)\n : range.commonAncestorContainer.parentElement;\n }\n\n isSelectionInABlock(target: HTMLElement | null) {\n // ! TODO: This is a hacky way to determine if the selection is in a block\n // ! Need to also check if the block wants to display the inline toolbar\n return (\n !!target &&\n (target.closest('.no-toolbar-inline') !== null\n ? false\n : target.closest('ngx-editor-js2') !== null\n ? true\n : false)\n );\n }\n\n attachInlineToolbar(selection: Selection) {\n return of(selection.getRangeAt(0)).pipe(\n map((range) => range.getBoundingClientRect()),\n map((selectionRect) => this.createOverlay(selectionRect)),\n // So hacky tired to do this properly\n // passing the refs down the pipe adds a bug\n // user selects text with a drag\n // (mousedown → mousemove → wait → mousemove → mouseup)\n tap((overlayRef) => (this.overlayRef = overlayRef)),\n map((overlayRef) => {\n const inlineToolbar = overlayRef.attach(\n new ComponentPortal(ToolbarInlineComponent)\n );\n inlineToolbar.setInput('selection', selection);\n\n lastValueFrom(\n merge(\n overlayRef.backdropClick(),\n inlineToolbar.instance.closeOverlayEmitter\n ).pipe(\n tap(() => overlayRef.dispose()),\n tap(() => selection.removeAllRanges())\n )\n );\n return true;\n })\n );\n }\n\n createOverlay(selectionRect: DOMRect) {\n return this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(selectionRect)\n .withPositions([\n {\n offsetY: 8,\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n ]),\n });\n }\n}\n","import { Component, inject, input, output } from '@angular/core';\nimport { EditorJsComponent } from './components/editor-js.component';\nimport { AsyncPipe } from '@angular/common';\nimport {\n combineLatest,\n debounceTime,\n firstValueFrom,\n fromEvent,\n Observable,\n switchMap,\n tap,\n} from 'rxjs';\nimport { ToolFabService } from './services/tool-fab.service';\nimport { NgxEditorJsBlock } from './ngx-editor-js2.interface';\nimport { ToolbarInlineService } from './services/toolbar-inline.service';\nimport { EditorJsService } from './services/editor-js.service';\nimport { NgxEditorJs2Service } from './services/ngx-editor-js2.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ngx-editor-js2',\n imports: [EditorJsComponent, AsyncPipe],\n template: `\n <editor-js\n [blocks]=\"blocks()\"\n [bootstrapEditorJs]=\"bootstrapEditorJs$ | async\"\n ></editor-js>\n `,\n})\nexport class NgxEditorJs2Component {\n inlineToolbarSerivce = inject(ToolbarInlineService);\n editorJsService = inject(EditorJsService);\n ngxEditorJs2Service = inject(NgxEditorJs2Service);\n\n constructor() {\n this.editorJsService.formGroup.valueChanges.pipe(\n takeUntilDestroyed(),\n debounceTime(500),\n switchMap(() => this.editorJsService.getBlocks$()),\n tap((blocks) => this.formChanged.emit(blocks)),\n ).subscribe();\n }\n\n blocks = input<NgxEditorJsBlock[]>([]);\n\n // Allows the parent component to request the current blocks\n blocksRequested = output<Observable<NgxEditorJsBlock[]>>();\n requestBlocks = input.required({\n transform: (value: unknown) =>\n value && this.blocksRequested.emit(this.editorJsService.getBlocks$()),\n });\n\n // Tells the parent component when the form has changed\n formChanged = output<NgxEditorJsBlock[]>();\n\n\n bootstrapEditorJs$ = combineLatest([\n inject(ToolFabService).toolbarComponentRef$,\n this.ngxEditorJs2Service.loadBlocks$,\n fromEvent(document, 'selectionchange').pipe(\n debounceTime(200),\n switchMap((event) =>\n this.inlineToolbarSerivce.determineToDisplayInlineToolbarBlock(event)\n )\n )\n ]);\n}\n","/*\n * Public API Surface of ngx-editor-js2\n */\n\nexport * from './lib/services/ngx-editor-js2.service';\nexport * from './lib/ngx-editor-js2.component';\nexport type * from './lib/ngx-editor-js2.interface';\nexport * from './lib/directives/autofocus.directive';\nexport * from './lib/directives/toolbar-fab.directive';\nexport * from './lib/directives/control-accessor.directive';\nexport * from './lib/directives/clean-paste-data.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;;;;MAoBa,wBAAwB,CAAA;AACnC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAE/B,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE9B,IAAA,QAAQ,GAAyB,MAAK,EAAE,CAAC;AACzC,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAEhC,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;IACrE;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAGA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;IAGA,OAAO,GAAA;QACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC;IACxD;uGA5BW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EARxB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAVpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,8BAA8B,CAAC;AACvD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;;sBAqBE,YAAY;uBAAC,MAAM;;sBAKnB,YAAY;uBAAC,OAAO;;;MClCV,kBAAkB,CAAA;AAC7B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;IAEjC,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI;IAC7D;uGAPW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACxB,iBAAA;;;AC+BD,IAAY,mBAIX;AAJD,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;;MCgClB,4BAA4B,CAAA;IAC9B,QAAQ,GAAG,mBAAmB;IAEvC,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAuB;IAEjD,mBAAmB,GAAG,MAAM,CAAS,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAC/D,wBAAwB,GAAG,MAAM,CAAsB;AACrD,QAAA,KAAK,EAAE,mBAAmB;AAC3B,KAAA,CAAC;AAEF,IAAA,YAAY,CAAC,MAA2B,EAAA;AACtC,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5C;AAEA,IAAA,YAAY,CAAC,MAAc,EAAA;AACzB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC;IACvC;uGAhBW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9D7B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4jBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA1BS,OAAO,2IAAE,SAAS,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FA+DjB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAjExC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,WACxB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAA,QAAA,EACnB;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4jBAAA,CAAA,EAAA;;;MC8CU,sBAAsB,CAAA;IACjC,eAAe,GAAG,MAAM,CAAuB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACrE,IAAA,eAAe,GAAG,KAAK,CAAmB,EAAE,2DAAC;AAC7C,IAAA,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AAErD,IAAA,SAAS,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC;AAC/B,IAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAEzD,eAAe,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACzE,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,KAAI;QAC7B,IAAI,OAAO,YAAY,KAAK,QAAQ;YAAE,YAAY,GAAG,EAAE;QACvD,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG;cACZ,KAAK,CAAC,EAAE;aACT,GAAG,CAAC,CAAC,CAAS,KAAK,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAA,CAAG;aAC/B,IAAI,CAAC,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAA,EAAG,OAAO,CAAA,CAAE,EAAE,IAAI,CAAC;;AAG5C,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC,CAAC,CACH;AAED,IAAA,QAAQ,CAAC,KAAqB,EAAA;QAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;IAC7C;uGAzBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3DvB;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mhBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAhCC,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,QAAQ,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,WAAW,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,SAAS,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACR,mBAAmB,qkBACnB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;2FA6DA,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAvElC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EACjB;wBACP,YAAY;wBACZ,QAAQ;wBACR,OAAO;wBACP,WAAW;wBACX,SAAS;wBACT,QAAQ;wBACR,mBAAmB;wBACnB,SAAS;qBACV,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,mhBAAA,CAAA,EAAA;;;MC2EU,gBAAgB,CAAA;AAC3B,IAAA,6BAA6B,GAAG,KAAK,CAAC,QAAQ,wEAAU;AACxD,IAAA,eAAe,GAAG,KAAK,CAAC,QAAQ,0DAAoB;IACpD,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAuB;IACjD,cAAc,GAAG,KAAK,CAA2B,MAAM,MAAK,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAChE,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACjC,IAAA,gBAAgB,GAAG,KAAK,CAAC,QAAQ,2DAAqB;AACtD,IAAA,yBAAyB,GAAG,KAAK,CAAC,QAAQ,oEAA8B;AAExE,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,sDAAC;AACnC,IAAA,gBAAgB,GAAG,MAAM,CAAU,KAAK,4DAAC;IAEzC,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;IACzC;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;IAC/C;AAEA,IAAA,iBAAiB,CAAC,MAA2B,EAAA;QAC3C,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,yBAAyB,EAAE,CAC9B,MAAM,EACN,IAAI,CAAC,6BAA6B,EAAE,CACrC;IACH;AAEA,IAAA,YAAY,CAAC,MAAc,EAAA;QACzB,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC;IAC/B;AAEA,IAAA,QAAQ,CAAC,KAA2B,EAAA;QAClC,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,cAAc,CACZ,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,6BAA6B,EAAE,CAAC,CACrE;IACH;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;IAClC;uGA3CW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,6BAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhGjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA9DC,aAAa,+FACb,SAAS,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,4BAA4B,kJAC5B,sBAAsB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAkGb,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAzG5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,OAAA,EACV;wBACP,aAAa;wBACb,SAAS;wBACT,aAAa;wBACb,4BAA4B;wBAC5B,sBAAsB;qBACvB,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,qjBAAA,CAAA,EAAA;;;MCvEU,oBAAoB,CAAA;AAC/B,IAAA,eAAe,GAAG,IAAI,GAAG,EAAwC;IAEjE,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;IAC9B;IAEA,oBAAoB,GAAA;AAClB,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IACtD;AAEA,IAAA,oBAAoB,CAAC,YAA0C,EAAA;QAC7D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC;IAC/D;AAEA,IAAA,sBAAsB,CAAC,SAA2B,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC7C,GAAG,CAAC,CAAC,YAAiB,KACpB,YAAY,CAAC,QAAQ,CACnB,WAAW,EACX,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CACzC,CACF,CACF;IACH;AAEA,IAAA,0BAA0B,CACxB,SAA2B,EAC3B,MAA2B,EAC3B,KAAa,EAAA;AAEb,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CACvD,GAAG,CAAC,CAAC,aAAa,KAChB,aAAa,CAAC,IAAI,CAChB,CAAC,YAAY,KACX,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,KAAK,GAAG,CAAC,CACzD,CACF,EACD,MAAM,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,YAAY,CAAC,EACxC,GAAG,CAAC,CAAC,YAAY,MAAM;YACrB,YAAY;AACZ,YAAA,eAAe,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC;YACrC,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC;YACtD,QAAQ,EAAE,CAAC,KAAa,KACtB,MAAM,KAAK,mBAAmB,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;AAC5D,SAAA,CAAC,CAAC,EACH,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM;YAClE,YAAY;YACZ,YAAY;AACZ,YAAA,QAAQ,EAAE,IAAI,CAAC,GAAG,CAChB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC,CAClD;SACF,CAAC,CAAC,EACH,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,YAAY,KAAK,QAAQ,CAAC,EACjE,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAI;YACjC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC/C,YAAA,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;AAC5C,YAAA,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;AAC1C,QAAA,CAAC,CAAC,EACF,cAAc,CAAC,KAAK,CAAC,CACtB;IACH;AAEA,IAAA,oBAAoB,CAClB,SAA2B,EAC3B,KAAa,EACb,KAAK,GAAG,KAAK,EAAA;QAEb,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CACvD,MAAM,CAAC,CAAC,aAAa,KAAK,KAAK,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,EAC9D,GAAG,CAAC,CAAC,aAAa,KAChB,aAAa,CAAC,IAAI,CAChB,CAAC,YAAY,KACX,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,KAAK,GAAG,CAAC,CACzD,CACF,EACD,GAAG,CAAC,CAAC,YAAY,KACf,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,IAAI,EAAE,CAAC,CAC1D,EACD,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAC9D,cAAc,CAAC,KAAK,CAAC,CACtB;IACH;uGAnFW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA;;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACeD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;MAIlD,eAAe,CAAA;AAC1B,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAEnD,IAAA,eAAe,GAAG,IAAI,GAAG,EAAmB;AAE5C,IAAA,SAAS;IACT,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;;AAGtC,IAAA,YAAY,CAAC,SAA2B,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC5B;IAEA,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,UAAU,CAAqB,CAAC,QAAQ,KAAI;AACrD,YAAA,aAAa,CACX,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,CAAC,IAAI,CACnD,GAAG,CAAC,CAAC,aAAa,KAChB,aAAa,CAAC,GAAG,CAAmB,CAAC,EAAE,QAAQ,EAAE,MAAM;AACrD,gBAAA,OAAO,EAAE,QAAQ,CAAC,eAAe,EAAE;AACnC,gBAAA,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE;gBAC/B,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;AACrD,gBAAA,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE;AACnC,gBAAA,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE;AAC5D,sBAAE,KAAK;AACV,aAAA,CAAC,CAAC,CACJ,EACD,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAClE,CACF,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAChB,gBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrB,QAAQ,CAAC,QAAQ,EAAE;AACrB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,mCAAmC,CACjC,cAAoC,EACpC,6BAAqC,EAAA;AAErC,QAAA,OAAO,EAAE,CAAgC;YACvC,OAAO,EAAE,SAAS,EAAE;AACpB,YAAA,SAAS,EAAE,6BAA6B;YACxC,qBAAqB,EAAE,cAAc,CAAC,IAAI;AAC1C,YAAA,SAAS,EAAE,cAAc;;;AAGzB,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,SAAS,EAAE,IAAI;AAChB,SAAA,CAAC;IACJ;AAEA,IAAA,iBAAiB,CACf,gBAA+C,EAC/C,SAAS,GAAG,IAAI,EAAA;AAEhB,QAAA,OAAO,QAAQ,CAAC;AACd,YAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,SAAS,CAAC;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;YACtC,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC;AACjE,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAC5B;IAEA,sBAAsB,CAAC,EACrB,OAAO,EACP,SAAS,GACqB,EAAE,SAAS,GAAG,IAAI,EAAA;AAChD,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CACrD,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CACrF;IACH;AAEA,IAAA,eAAe,CAAC,EACd,SAAS,EACT,OAAO,EACP,SAAS,EACT,WAAW,EACX,SAAS,EAAE,KAAK,GACc,EAAA;AAC9B,QAAA,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CACrB,GAAG,CAAC,CAAC,WAAW,KAAI;YAClB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE;gBAC7D,KAAK;AACN,aAAA,CAAC;YAEH,YAAY,CAAC,QAAQ,CAAC;AACpB,iBAAA,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC;AAEtC,YAAA,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;YACzC,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;AAClD,YAAA,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC;AACrD,YAAA,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;YAE7C,WAAW,IAAI,YAAY,CAAC,QAAQ,CAAC,cAAc,GAAG,WAAW,CAAC;AAElE,YAAA,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,YAAY,CAAC;AAC5D,YAAA,OAAO,YAAY;QACrB,CAAC,CAAC,CACH;IACH;AAEA,IAAA,2BAA2B,CACzB,MAA2B,EAC3B,KAAa,EACb,eAAuB,EAAA;QAEvB,OAAO,GAAG,CACR,MAAM,MAAM,KAAK,mBAAmB,CAAC,MAAM,EAC3C,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,eAAe,CAAC,EACjD,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,CAClD,IAAI,CAAC,SAAS,EACd,MAAM,EACN,KAAK,CACN,CACF,CAAC,IAAI,CACJ,SAAS,CAAC,MACR,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CACjE,CACF;IACH;IAEA,0BAA0B,CAAC,aAAqB,EAAE,YAAoB,EAAA;AACpE,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAC/C,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,EAC9B,GAAG,CAAC,CAAC,OAAO,KAAI;YACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;QAC5C,CAAC,CAAC,EACF,SAAS,CAAC,MACR,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CACjE,EACD,cAAc,CAAC,KAAK,CAAC,CACtB;IACH;AAEA,IAAA,oBAAoB,CAAC,KAAa,EAAE,eAAuB,EAAE,KAAK,GAAG,KAAK,EAAA;AACxE,QAAA,OAAO,aAAa,CAAC;AACnB,YAAA,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAC5C,IAAI,CAAC,SAAS,EACd,KAAK,EACL,KAAK,CACN;YACD,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AAClD,SAAA,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAC1D,MAAM,CAAC,CAAC,aAAa,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,EACnD,GAAG,CAAC,CAAC,aAAa,KAChB,aAAa,CAAC,IAAI,CAChB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAC1D,CACF,EACD,QAAQ,CAAC,CAAC,aAAa,KACrB,QAAQ,CACN,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,KAClD,IAAI,CAAC,oBAAoB,CACvB,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,EACrC,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE,EACvC,IAAI,CACL,CACF,CACF,CACF,EACD,SAAS,CAAC,MACR,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CACjE,EACD,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE;AAC9C,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,QAAA,CAAC,CAAC,EACF,cAAc,CAAC,KAAK,CAAC,CACtB;IACH;uGA9KW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCIY,cAAc,CAAA;AACzB,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;;AAEzC,IAAA,gBAAgB,GAAG,IAAI,eAAe,CAAmB,IAAI,CAAC;IAC9D,oBAAoB,GAAG,aAAa,CAAC;AACnC,QAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACtD,QAAA,eAAe,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB;AAC3D,KAAA,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,KAAK,IAAI,CAAC,EAC3D,oBAAoB,CAClB,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAC5D,QAAS,CAAC,KAAK,KAAK,OAAQ,CAAC,KAAK;AAClC,QAAA,QAAS,CAAC,gBAAgB,KAAK,OAAQ,CAAC;WACnC,QAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,KAAK;AAC5C,UAAE,IAAI,CACX,EACD,GAAG,CAAC,CAAC,EAAE,gBAAgB,EAAE,eAAe,EAAE,KAAI;AAC5C,QAAA,MAAM,EACJ,KAAK,EACL,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,eAAe,GAChB,GAAG,gBAAiB;;QAErB,MAAM,YAAY,GAAG,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,CAAC;QACvE,YAAY,CAAC,QAAQ,CAAC,+BAA+B,EAAE,KAAK,GAAG,CAAC,CAAC;AACjE,QAAA,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE,eAAe,CAAC;AACzD,QAAA,YAAY,CAAC,QAAQ,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;AAC/D,QAAA,YAAY,CAAC,QAAQ,CAAC,gBAAgB,EAAE,cAAc,CAAC;AACvD,QAAA,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE,eAAe,CAAC;AACzD,QAAA,YAAY,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,QAAA,YAAY,CAAC,QAAQ,CACnB,2BAA2B,EAC3B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CACnC;AACD,QAAA,OAAO,YAAY;IACrB,CAAC,CAAC,CACH;IAED,QAAQ,CAAC,KAA2B,EAAE,KAAa,EAAA;QACjD,OAAO,IAAI,CAAC;AACT,aAAA,mCAAmC,CAAC,KAAK,EAAE,KAAK;AAChD,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CACpE;IACL;AAEA,IAAA,kBAAkB,CAChB,MAA2B,EAC3B,KAAa,EACb,eAAuB,EAAA;AAEvB,QAAA,OAAO,aAAa,CAClB,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAC9C,MAAM,EACN,KAAK,EACL,eAAe,CAChB,CACF;IACH;uGA7DW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCXY,mBAAmB,CAAA;AAC9B,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAE3C,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;IAC5B,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAuB;AACjD,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,yDAA4B;AAC3D,IAAA,6BAA6B,GAAG,KAAK,CAAC,QAAQ,wEAAU;AACxD,IAAA,eAAe,GAAG,KAAK,CAAC,QAAQ,0DAAU;IAEd,YAAY,GAAA;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACxC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACvC,YAAA,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE;AACnD,YAAA,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE;AACrC,YAAA,KAAK,EAAE,IAAI,CAAC,6BAA6B,EAAE;AAC3C,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;AACxC,SAAA,CAAC;IACJ;AAEA,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;AACzC,QAAA,CAAC,CAAC;IACJ;uGAxBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,6BAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA;;sBAWE,YAAY;uBAAC,YAAY;;;MCrBf,uBAAuB,CAAA;AAElC,IAAA,OAAO,CAAC,KAAY,EAAA;QAClB,KAAK,CAAC,cAAc,EAAE;QACtB,MAAM,IAAI,GAAI,KAAwB,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC;QAC3E,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC;IACjD;uGANW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA;;sBAEE,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MCoGtB,oBAAoB,CAAA;AAC/B,IAAA,SAAS,GAAG,KAAK,CAAS,CAAC,qDAAC;IAC5B,qBAAqB,GAAG,sBAAsB;AAC9C,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,qDAAC;AAChC,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAa;AACvC,IAAA,eAAe,GAAG,KAAK,CAAC,QAAQ,0DAAU;IAC1C,kBAAkB,GAAG,KAAK,CAAsB;AAC9C,QAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5B,QAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5B,QAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5B,QAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5B,QAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5B,QAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAC7B,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEF,IAAA,WAAW,GAAG,MAAM,CAAS,IAAI,uDAAC;IAClC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAEnD,IAAA,cAAc,CAAC,cAAsB,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC;IACtC;uGApBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApFrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDX,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uaAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAvDG,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,kBAAkB,+EAClB,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,+BAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAsFP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhGhC,SAAS;+BACE,cAAc,EAAA,IAAA,EAClB,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAA,cAAA,EACrB,CAAC,OAAO,CAAC,EAAA,OAAA,EAChB;wBACP,mBAAmB;wBACnB,wBAAwB;wBACxB,kBAAkB;wBAClB,mBAAmB;wBACnB,uBAAuB;wBACvB;qBACH,EAAA,QAAA,EACW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDX,CAAA,EAAA,MAAA,EAAA,CAAA,uaAAA,CAAA,EAAA;;;MCHY,uBAAuB,CAAA;AAClC,IAAA,SAAS,GAAG,KAAK,CAAS,CAAC,qDAAC;IAC5B,qBAAqB,GAAG,yBAAyB;AACjD,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,qDAAC;AAChC,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAa;AACvC,IAAA,eAAe,GAAG,KAAK,CAAC,QAAQ,0DAAU;IAC1C,kBAAkB,GAAG,KAAK,CAAsB;AAC9C,QAAA,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE;AAC1C,QAAA,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE;AAC5C,QAAA,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE;AAC1C,QAAA,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;AACrC,QAAA,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;AACtC,QAAA,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;AACtC,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEF,IAAA,WAAW,GAAG,MAAM,CAAS,QAAQ,uDAAC;IACtC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAEnD,IAAA,cAAc,CAAC,MAAc,EAAA;QAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC;IACvC;uGApBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5CxB;;;;;;;;;;;;;;;;GAgBT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2UAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAvBC,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,kBAAkB,+EAClB,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,+BAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FA8CE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAxDnC,SAAS;+BACE,iBAAiB,EAAA,IAAA,EACrB,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAA,cAAA,EACrB,CAAC,OAAO,CAAC,EAAA,OAAA,EAChB;wBACP,mBAAmB;wBACnB,wBAAwB;wBACxB,kBAAkB;wBAClB,mBAAmB;wBACnB,uBAAuB;wBACvB,OAAO;qBACR,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2UAAA,CAAA,EAAA;;;MCnBU,oBAAoB,GAAG,IAAI,cAAc,CACpD,sBAAsB;MAMX,mBAAmB,CAAA;AAC9B,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAEzC,IAAA,uBAAuB,GAAG,IAAI,eAAe,CAC3C,MAAM,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,uBAAuB;AACvE,QAAA,EAAE,CACL;IAED,uBAAuB,GAAG,IAAI,eAAe,CAAmB;AAC9D,QAAA;AACE,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,qBAAqB,EAAE,yBAAyB;AACjD,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,qBAAqB,EAAE,sBAAsB;AAC9C,SAAA;AACF,KAAA,CAAC;IAEF,gBAAgB,GAAG,aAAa,CAAC;AAC/B,QAAA,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE;AAC3C,QAAA,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE;KAC5C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;AAElE,IAAA,YAAY,GAAG,IAAI,eAAe,CAAqB,EAAE,CAAC;AAE1D,IAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,IAAI,CACjD,KAAK,CAAC,CAAC,CAAC,EACR,UAAU,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,EAC5D,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,EAC5D,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC,EAC9D,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EACxC,SAAS,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EACxD,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,KAC5B,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,eAAe,CAAC,CACjE,EACD,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,KACjC,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAC/D,EACD,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC,CACzD,CACF;AAED,IAAA,uBAAuB,CAAC,MAA0B,EAAA;AAChD,QAAA,OAAO,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE;AAEA,IAAA,4BAA4B,CAAC,MAA0B,EAAA;AACrD,QAAA,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;IAC9D;IAEA,iBAAiB,GAAA;QACf,OAAO;AACL,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,qBAAqB,EAAE,sBAAsB;AAC7C,gBAAA,SAAS,EAAE,yBAAyB;AACpC,gBAAA,WAAW,EAAE,IAAI;AAClB,aAAA;SACF;IACH;AAEA,IAAA,gCAAgC,CAAC,MAA0B,EAAA;AACzD,QAAA,OAAO,KAAK,CAAC,IAAI,CACf,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAChE;IACH;AAEA,IAAA,UAAU,CAAC,MAA0B,EAAA;AACnC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;IACzD;AAEA,IAAA,oBAAoB,CAAC,MAA0B,EAAA;AAC7C,QAAA,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3D;IAEA,kCAAkC,CAChC,MAA0B,EAC1B,eAAiC,EAAA;QAEjC,OAAO;YACL,MAAM;YACN,kBAAkB,EAAE,IAAI,GAAG,CACzB,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CACtE;SACF;IACH;IAEA,6BAA6B,CAC3B,MAA0B,EAC1B,kBAAqD,EAAA;QAErD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AAC5B,YAAA,GAAG,KAAK;YACR,SAAS,EACP,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC;gBACnD,oBAAoB;AACvB,SAAA,CAAC,CAAC;IACL;AAEA,IAAA,mBAAmB,CAAC,MAAuC,EAAA;QACzD,OAAO,aAAa,CAClB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAoC,KAC9C,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CACrD,CACF;IACH;uGA9GW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCIY,iBAAiB,CAAA;AAC5B,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;IAEjD,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAE;IAC3B,MAAM,GAAG,KAAK,CAAC,QAAQ,kDACrB,SAAS,EAAE,CAAC,KAAyB,KACnC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAA,CACnD;AAEF,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAEvE,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACrD,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAI,CAAC,KAA4B,EAAA;AAC/B,QAAA,KAAK,aAAa,CAChB,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAC7C,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CACnB,CAAC,IAAI,CACJ,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CACnE,CACF;IACH;uGA3BW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAUwB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1B1D;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EALS,WAAW,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAiBV,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnB7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,OAAA,EACZ,CAAC,WAAW,CAAC,EAAA,QAAA,EACZ;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0DAAA,CAAA,EAAA;AAsB8B,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,WAAW,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCwC3D,sBAAsB,CAAA;;AAEjC,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAa;AACf,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAE;AAEhE,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAE5B,GAAG,GAAG,EAAE;AACR,IAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,6DAAC;IACjC,WAAW,GAAY,EAAE;AACzB,IAAA,OAAO,GAAG;AACR,QAAA,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE;AACvC,QAAA,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC3C,QAAA,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,WAAW,EAAE;AAClD,QAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,eAAe,EAAE;AACpD,QAAA,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,qBAAqB,EAAE;AAC/D,QAAA,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,mBAAmB,EAAE;AAC7D,QAAA,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE;AAC/C,QAAA,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE;AACpD,QAAA,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,eAAe,EAAE;AACxD,QAAA,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,cAAc,EAAE;AACtD,QAAA,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,aAAa,EAAE;KACxD;AAED,IAAA,YAAY,CAAC,GAAW,EAAA;;AAEtB,QAAA,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC;AACzB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;IACjC;IAEA,WAAW,CAAC,GAAW,EAAE,SAAiB,EAAA;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AAChD,QAAA,OAAO,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE;AACnC,QAAA,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE;QACpC,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;AACzB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;IACjC;IAEA,SAAS,GAAA;AACP,QAAA,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC;AACpC,QAAA,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;IACjC;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,eAAe,EAAE;AAClC,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAG,CAAC;QAClD,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;AACnD,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;IACjC;uGAxDW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlEvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kdAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAhCS,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAmExC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBArElC,SAAS;+BACE,gBAAgB,EAAA,OAAA,EACjB,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,EAAA,QAAA,EAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,kdAAA,CAAA,EAAA;;sBAsCA,MAAM;uBAAC,cAAc;;;MC7EX,oBAAoB,CAAA;AAC/B,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,UAAU;AAEV,IAAA,oCAAoC,CAAC,MAAa,EAAA;AAChD,QAAA,OAAO,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CACnC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,KAAK,IAAI,CAAC,EACzC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,EAC/C,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EACtD,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAClD,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AACtE,QAAA,GAAG,CAAC,CAAC,SAAS,MAAM;YAClB,SAAS;AACT,YAAA,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;AAC3C,SAAA,CAAC,CAAC,EACH,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC,mBAAmB,CAAC,MAAqB,CAAC,CAAC,EACvE,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CACnE;IACH;AAEA,IAAA,kBAAkB,CAAC,SAAoB,EAAA;QACrC,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC,uBAAuB,CAAC,QAAQ,KAAK,IAAI,CAAC;cAClD,KAAK,CAAC;AACT,cAAE,KAAK,CAAC,uBAAuB,CAAC,aAAa;IACjD;AAEA,IAAA,mBAAmB,CAAC,MAA0B,EAAA;;;QAG5C,QACE,CAAC,CAAC,MAAM;AACR,aAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK;AACxC,kBAAE;kBACA,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK;AACvC,sBAAE;AACF,sBAAE,KAAK,CAAC;IAEd;AAEA,IAAA,mBAAmB,CAAC,SAAoB,EAAA;AACtC,QAAA,OAAO,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACrC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,qBAAqB,EAAE,CAAC,EAC7C,GAAG,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;;;;;QAKzD,GAAG,CAAC,CAAC,UAAU,MAAM,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,EACnD,GAAG,CAAC,CAAC,UAAU,KAAI;AACjB,YAAA,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CACrC,IAAI,eAAe,CAAC,sBAAsB,CAAC,CAC5C;AACD,YAAA,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;AAE9C,YAAA,aAAa,CACX,KAAK,CACH,UAAU,CAAC,aAAa,EAAE,EAC1B,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAC3C,CAAC,IAAI,CACJ,GAAG,CAAC,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,EAC/B,GAAG,CAAC,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC,CACvC,CACF;AACD,YAAA,OAAO,IAAI;QACb,CAAC,CAAC,CACH;IACH;AAEA,IAAA,aAAa,CAAC,aAAsB,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACzB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,kCAAkC;YACjD,gBAAgB,EAAE,IAAI,CAAC;AACpB,iBAAA,QAAQ;iBACR,mBAAmB,CAAC,aAAa;AACjC,iBAAA,aAAa,CAAC;AACb,gBAAA;AACE,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,QAAQ,EAAE,KAAK;AAChB,iBAAA;aACF,CAAC;AACL,SAAA,CAAC;IACJ;uGAtFW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA;;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCqBY,qBAAqB,CAAA;AAChC,IAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACnD,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAEjD,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAC9C,kBAAkB,EAAE,EACpB,YAAY,CAAC,GAAG,CAAC,EACjB,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,EAClD,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAC/C,CAAC,SAAS,EAAE;IACf;AAEA,IAAA,MAAM,GAAG,KAAK,CAAqB,EAAE,kDAAC;;IAGtC,eAAe,GAAG,MAAM,EAAkC;AAC1D,IAAA,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,GAAA,EAAA,CAAA,EAC5B,SAAS,EAAE,CAAC,KAAc,KACxB,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,EAAA,CACvE;;IAGF,WAAW,GAAG,MAAM,EAAsB;IAG1C,kBAAkB,GAAG,aAAa,CAAC;AACjC,QAAA,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB;QAC3C,IAAI,CAAC,mBAAmB,CAAC,WAAW;AACpC,QAAA,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,IAAI,CACzC,YAAY,CAAC,GAAG,CAAC,EACjB,SAAS,CAAC,CAAC,KAAK,KACd,IAAI,CAAC,oBAAoB,CAAC,oCAAoC,CAAC,KAAK,CAAC,CACtE;AAEJ,KAAA,CAAC;uGApCS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPtB;;;;;GAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EANS,iBAAiB,0FAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;2FAQ3B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC;AACvC,oBAAA,QAAQ,EAAE;;;;;AAKT,EAAA,CAAA;AACF,iBAAA;;;AC5BD;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,28 +1,28 @@
1
1
  {
2
2
  "name": "@tmdjr/ngx-editor-js2",
3
- "version": "20.3.4",
3
+ "version": "21.0.3",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "peerDependencies": {
6
- "@angular/animations": "^20.0.4",
7
- "@angular/cdk": "^20.0.3",
8
- "@angular/common": "^20.0.4",
9
- "@angular/compiler": "^20.0.4",
10
- "@angular/core": "^20.0.4",
11
- "@angular/forms": "^20.0.4",
12
- "@angular/material": "^20.0.3"
6
+ "@angular/animations": "^21.1.0",
7
+ "@angular/cdk": "^21.1.0",
8
+ "@angular/common": "^21.1.0",
9
+ "@angular/compiler": "^21.1.0",
10
+ "@angular/core": "^21.1.0",
11
+ "@angular/forms": "^21.1.0",
12
+ "@angular/material": "^21.1.0"
13
13
  },
14
14
  "dependencies": {
15
15
  "tslib": "^2.3.0"
16
16
  },
17
17
  "sideEffects": false,
18
18
  "module": "fesm2022/tmdjr-ngx-editor-js2.mjs",
19
- "typings": "index.d.ts",
19
+ "typings": "types/tmdjr-ngx-editor-js2.d.ts",
20
20
  "exports": {
21
21
  "./package.json": {
22
22
  "default": "./package.json"
23
23
  },
24
24
  ".": {
25
- "types": "./index.d.ts",
25
+ "types": "./types/tmdjr-ngx-editor-js2.d.ts",
26
26
  "default": "./fesm2022/tmdjr-ngx-editor-js2.mjs"
27
27
  }
28
28
  }
@@ -2,7 +2,10 @@
2
2
  overflow: visible;
3
3
  color: var(--mat-sys-on-secondary-container);
4
4
  background-color: var(--mat-sys-secondary-container);
5
- border-radius: var(--mat-card-outlined-container-shape, var(--mat-sys-corner-medium));
5
+ border-radius: var(
6
+ --mat-card-outlined-container-shape,
7
+ var(--mat-sys-corner-medium)
8
+ );
6
9
  box-shadow: var(--mat-sys-level4);
7
10
  }
8
11
 
@@ -15,20 +18,20 @@
15
18
  }
16
19
 
17
20
  .ngx-editor-js2-block.cdk-drag-preview,
18
- .block-list.cdk-drop-list-dragging .ngx-editor-js2-block:not(.cdk-drag-placeholder) {
21
+ .block-list.cdk-drop-list-dragging
22
+ .ngx-editor-js2-block:not(.cdk-drag-placeholder) {
19
23
  transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
20
24
  }
21
25
 
22
-
23
26
  paragraph-block.cdk-drag-preview {
27
+ & *:not(toolbar, ul) {
28
+ margin: 0 !important;
29
+ }
24
30
  p {
25
- & *:not(toolbar, ul) {
26
- margin: 0 !important;
27
- }
28
-
29
31
  ul {
30
32
  margin: 0 0 14px 0 !important;
31
33
  padding-left: 40px !important;
34
+
32
35
  &:not(:first-child) {
33
36
  margin: 14px 0 14px 0 !important;
34
37
  }
@@ -2,7 +2,10 @@
2
2
  overflow: visible;
3
3
  color: var(--mat-sys-on-secondary-container);
4
4
  background-color: var(--mat-sys-secondary-container);
5
- border-radius: var(--mat-card-outlined-container-shape, var(--mat-sys-corner-medium));
5
+ border-radius: var(
6
+ --mat-card-outlined-container-shape,
7
+ var(--mat-sys-corner-medium)
8
+ );
6
9
  box-shadow: var(--mat-sys-level4);
7
10
  }
8
11
 
@@ -15,20 +18,20 @@
15
18
  }
16
19
 
17
20
  .ngx-editor-js2-block.cdk-drag-preview,
18
- .block-list.cdk-drop-list-dragging .ngx-editor-js2-block:not(.cdk-drag-placeholder) {
21
+ .block-list.cdk-drop-list-dragging
22
+ .ngx-editor-js2-block:not(.cdk-drag-placeholder) {
19
23
  transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
20
24
  }
21
25
 
22
-
23
26
  paragraph-block.cdk-drag-preview {
27
+ & *:not(toolbar, ul) {
28
+ margin: 0 !important;
29
+ }
24
30
  p {
25
- & *:not(toolbar, ul) {
26
- margin: 0 !important;
27
- }
28
-
29
31
  ul {
30
32
  margin: 0 0 14px 0 !important;
31
33
  padding-left: 40px !important;
34
+
32
35
  &:not(:first-child) {
33
36
  margin: 14px 0 14px 0 !important;
34
37
  }
File without changes