@talrace/ngx-noder 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +72 -64
  2. package/esm2022/lib/+shared/add-link-dialog/add-link-dialog.component.mjs +9 -5
  3. package/esm2022/lib/+shared/confirm-dialog/confirm-dialog.component.mjs +10 -6
  4. package/esm2022/lib/+shared/editor/core/editor.mjs +7 -14
  5. package/esm2022/lib/+shared/editor/core/helpers/rendering.helper.mjs +9 -8
  6. package/esm2022/lib/+shared/editor/core/layers/text.layer.mjs +4 -4
  7. package/esm2022/lib/+shared/editor/custom-components/image/components/image.component.mjs +4 -3
  8. package/esm2022/lib/+shared/editor/custom-components/shared/abstract/base.component.mjs +4 -2
  9. package/esm2022/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.mjs +6 -12
  10. package/esm2022/lib/+shared/editor/custom-components/tab/tab.component.mjs +3 -2
  11. package/esm2022/lib/+shared/editor/custom-components/table/components/table-cell.component.mjs +6 -4
  12. package/esm2022/lib/+shared/editor/custom-components/table/components/table.component.mjs +7 -5
  13. package/esm2022/lib/+shared/editor/editor.component.mjs +5 -12
  14. package/esm2022/lib/+shared/editor/editor.module.mjs +1 -4
  15. package/esm2022/lib/+shared/editor/execution/models/general-properties.model.mjs +1 -1
  16. package/esm2022/lib/+shared/editor/execution/regulator.service.mjs +15 -5
  17. package/esm2022/lib/+shared/editor-title/editor-title.component.mjs +83 -0
  18. package/esm2022/lib/+shared/editor-toolbar/color-picker/color-picker.component.mjs +2 -2
  19. package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.component.mjs +77 -91
  20. package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.module.mjs +11 -1
  21. package/esm2022/lib/+shared/editor-toolbar/font/font.component.mjs +3 -3
  22. package/esm2022/lib/+shared/editor-toolbar/font-size/font-size.component.mjs +2 -2
  23. package/esm2022/lib/+shared/editor-toolbar/font-style/font-style.component.mjs +2 -2
  24. package/esm2022/lib/+shared/editor-toolbar/menu-dropdowns/menu-dropdowns.component.mjs +194 -0
  25. package/esm2022/lib/+shared/editor-toolbar/numbering/numbering.component.mjs +3 -3
  26. package/esm2022/lib/+shared/editor-toolbar/print/print.component.mjs +2 -2
  27. package/esm2022/lib/+shared/editor-toolbar/toolbar-actions/toolbar-actions.component.mjs +126 -0
  28. package/esm2022/lib/+shared/editor-toolbar/undo-redo/undo-redo.component.mjs +2 -2
  29. package/esm2022/lib/+shared/helpers/scaling.helper.mjs +9 -0
  30. package/esm2022/public-api.mjs +2 -2
  31. package/fesm2022/talrace-ngx-noder.mjs +455 -398
  32. package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
  33. package/lib/+shared/add-link-dialog/add-link-dialog.component.d.ts +1 -0
  34. package/lib/+shared/confirm-dialog/confirm-dialog.component.d.ts +1 -0
  35. package/lib/+shared/editor/core/editor.d.ts +3 -3
  36. package/lib/+shared/editor/core/helpers/rendering.helper.d.ts +3 -3
  37. package/lib/+shared/editor/custom-components/shared/abstract/base.component.d.ts +3 -1
  38. package/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.d.ts +1 -1
  39. package/lib/+shared/editor/custom-components/table/components/table-cell.component.d.ts +2 -2
  40. package/lib/+shared/editor/custom-components/table/components/table.component.d.ts +0 -2
  41. package/lib/+shared/editor/editor.component.d.ts +1 -5
  42. package/lib/+shared/editor/editor.module.d.ts +15 -16
  43. package/lib/+shared/editor/execution/models/general-properties.model.d.ts +1 -0
  44. package/lib/+shared/editor/execution/regulator.service.d.ts +2 -2
  45. package/lib/+shared/editor-title/editor-title.component.d.ts +24 -0
  46. package/lib/+shared/editor-toolbar/editor-toolbar.component.d.ts +31 -30
  47. package/lib/+shared/editor-toolbar/editor-toolbar.module.d.ts +19 -16
  48. package/lib/+shared/editor-toolbar/menu-dropdowns/menu-dropdowns.component.d.ts +73 -0
  49. package/lib/+shared/editor-toolbar/toolbar-actions/toolbar-actions.component.d.ts +49 -0
  50. package/lib/+shared/helpers/scaling.helper.d.ts +4 -0
  51. package/package.json +1 -1
  52. package/public-api.d.ts +1 -1
  53. package/src/_ngx-noder.theme.scss +10 -8
  54. package/src/lib/+shared/add-link-dialog/_add-link-dialog.theme.scss +3 -3
  55. package/src/lib/+shared/confirm-dialog/_theme.scss +6 -6
  56. package/src/lib/+shared/editor/_editor.theme.scss +84 -15
  57. package/src/lib/+shared/editor/_theme.scss +0 -2
  58. package/src/lib/+shared/editor-title/_editor-title.theme.scss +28 -0
  59. package/src/lib/+shared/editor-toolbar/_editor-toolbar.theme.scss +1 -24
  60. package/src/lib/+shared/editor-toolbar/_theme.scss +14 -2
  61. package/src/lib/+shared/editor-toolbar/font-size/_font-size.theme.scss +14 -0
  62. package/src/lib/+shared/editor-toolbar/font-style/_font-style.theme.scss +21 -0
  63. package/src/lib/+shared/editor-toolbar/format/_format.theme.scss +21 -0
  64. package/src/lib/+shared/editor-toolbar/menu-dropdowns/_menu-dropdowns.theme.scss +22 -0
  65. package/src/lib/+shared/editor-toolbar/numbering/_numbering.theme.scss +52 -11
  66. package/src/lib/+shared/editor-toolbar/toolbar-actions/_toolbar-actions.theme.scss +21 -0
  67. package/src/lib/+shared/editor-toolbar/undo-redo/_undo-redo.theme.scss +16 -0
  68. package/src/lib/+shared/insert-table/_insert-table.theme.scss +9 -6
  69. package/src/scss/_mixins.scss +2 -37
  70. package/esm2022/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.mjs +0 -35
  71. package/esm2022/lib/+shared/editor-header/editor-header.component.mjs +0 -314
  72. package/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.d.ts +0 -14
  73. package/lib/+shared/editor-header/editor-header.component.d.ts +0 -101
  74. package/src/lib/+shared/editor/custom-components/external-element/element-toolbar/_element-toolbar.theme.scss +0 -10
  75. package/src/lib/+shared/editor-header/_editor-header.theme.scss +0 -106
@@ -13,28 +13,27 @@ import { OverlayConfig } from '@angular/cdk/overlay';
13
13
  import * as i3 from '@angular/material/icon';
14
14
  import { MatIconModule } from '@angular/material/icon';
15
15
  import * as i5 from '@angular/cdk/clipboard';
16
- import * as i7 from '@angular/material/sidenav';
16
+ import * as i6 from '@angular/material/sidenav';
17
17
  import { MatSidenavModule } from '@angular/material/sidenav';
18
18
  import * as i2$1 from '@angular/material/button';
19
19
  import { MatButtonModule } from '@angular/material/button';
20
- import * as i4 from '@angular/material/tooltip';
21
- import { MatTooltipModule } from '@angular/material/tooltip';
22
20
  import * as i1$4 from '@angular/material/dialog';
23
21
  import { MatDialogModule, MAT_DIALOG_DATA } from '@angular/material/dialog';
24
- import * as i2$3 from '@angular/forms';
25
- import { ReactiveFormsModule, FormsModule, FormControl, Validators } from '@angular/forms';
22
+ import * as i4 from '@angular/material/tooltip';
23
+ import { MatTooltipModule } from '@angular/material/tooltip';
24
+ import * as i2$2 from '@angular/forms';
25
+ import { ReactiveFormsModule, FormControl, FormsModule, Validators } from '@angular/forms';
26
+ import { MatSelectModule } from '@angular/material/select';
27
+ import * as i6$1 from '@angular/material/input';
28
+ import { MatInputModule } from '@angular/material/input';
26
29
  import * as i4$1 from '@angular/material/form-field';
27
30
  import { MatFormFieldModule } from '@angular/material/form-field';
28
- import * as i6 from '@angular/material/input';
29
- import { MatInputModule } from '@angular/material/input';
31
+ import * as i2$3 from '@angular/platform-browser';
30
32
  import * as i4$2 from '@angular/material/menu';
31
33
  import { MatMenuModule } from '@angular/material/menu';
32
- import * as i7$1 from '@angular/material/select';
33
- import { MatSelectModule } from '@angular/material/select';
34
- import * as i2$2 from '@angular/platform-browser';
35
- import * as i4$3 from '@angular/material/core';
36
34
  import * as i3$1 from '@angular/material/autocomplete';
37
35
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
36
+ import * as i4$3 from '@angular/material/core';
38
37
  import * as i1$3 from '@angular/material/button-toggle';
39
38
  import { MatButtonToggleModule } from '@angular/material/button-toggle';
40
39
  import * as i5$1 from 'ngx-colors';
@@ -368,7 +367,7 @@ class BaseNoderComponent extends ObserverComponent {
368
367
  this.cdr.markForCheck();
369
368
  }
370
369
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: BaseNoderComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
371
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.1", type: BaseNoderComponent, inputs: { content: "content", sessionId: "sessionId", contentWidth: "contentWidth" }, host: { properties: { "class.focused": "this.focused", "attr.data-session-id": "this.sessionId", "attr.data-insert-index": "this.insertIndex" } }, usesInheritance: true, ngImport: i0 }); }
370
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.1", type: BaseNoderComponent, inputs: { content: "content", sessionId: "sessionId", contentWidth: "contentWidth", generalProperties: "generalProperties" }, host: { properties: { "class.focused": "this.focused", "attr.data-session-id": "this.sessionId", "attr.data-insert-index": "this.insertIndex" } }, usesInheritance: true, ngImport: i0 }); }
372
371
  }
373
372
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: BaseNoderComponent, decorators: [{
374
373
  type: Directive
@@ -387,6 +386,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
387
386
  args: ['attr.data-insert-index']
388
387
  }], contentWidth: [{
389
388
  type: Input
389
+ }], generalProperties: [{
390
+ type: Input
390
391
  }] } });
391
392
 
392
393
  class OperationsHistoryInfoModel {
@@ -1403,7 +1404,7 @@ class InsertStyledTextModel {
1403
1404
  }
1404
1405
  }
1405
1406
 
1406
- class InsertTableColumnsModel {
1407
+ class InsertTabModel {
1407
1408
  constructor(fields) {
1408
1409
  if (fields) {
1409
1410
  Object.assign(this, fields);
@@ -1411,7 +1412,7 @@ class InsertTableColumnsModel {
1411
1412
  }
1412
1413
  }
1413
1414
 
1414
- class InsertTableModel {
1415
+ class InsertTableColumnsModel {
1415
1416
  constructor(fields) {
1416
1417
  if (fields) {
1417
1418
  Object.assign(this, fields);
@@ -1419,7 +1420,7 @@ class InsertTableModel {
1419
1420
  }
1420
1421
  }
1421
1422
 
1422
- class InsertTableRowsModel {
1423
+ class InsertTableModel {
1423
1424
  constructor(fields) {
1424
1425
  if (fields) {
1425
1426
  Object.assign(this, fields);
@@ -1427,7 +1428,7 @@ class InsertTableRowsModel {
1427
1428
  }
1428
1429
  }
1429
1430
 
1430
- class InsertTabModel {
1431
+ class InsertTableRowsModel {
1431
1432
  constructor(fields) {
1432
1433
  if (fields) {
1433
1434
  Object.assign(this, fields);
@@ -1443,21 +1444,6 @@ class InsertTextModel {
1443
1444
  }
1444
1445
  }
1445
1446
 
1446
- class MarginModel {
1447
- constructor(fields) {
1448
- this.left = DocumentInfo.paddingLeft;
1449
- this.right = DocumentInfo.paddingRight;
1450
- this.top = DocumentInfo.paddingTop;
1451
- this.bottom = DocumentInfo.paddingBottom;
1452
- this.header = DocumentInfo.paddingHeader;
1453
- this.footer = DocumentInfo.paddingFooter;
1454
- if (!fields) {
1455
- return;
1456
- }
1457
- Object.assign(this, fields);
1458
- }
1459
- }
1460
-
1461
1447
  var MouseButton;
1462
1448
  (function (MouseButton) {
1463
1449
  MouseButton[MouseButton["Left"] = 0] = "Left";
@@ -2189,12 +2175,21 @@ class FormatExtModel extends FormatModel {
2189
2175
  }
2190
2176
  }
2191
2177
 
2178
+ class ScalingHelper {
2179
+ static getRatio(current, original) {
2180
+ return parseFloat((current / original).toFixed(1));
2181
+ }
2182
+ static scale(initial, scale) {
2183
+ return Math.round(initial * scale);
2184
+ }
2185
+ }
2186
+
2192
2187
  class RenderingHelper {
2193
- static createLineElement(lineInfo, numberingOffsetLeft) {
2188
+ static createLineElement(lineInfo, numberingOffsetLeft, scalingRatio) {
2194
2189
  let lineEl = document.createElement('div');
2195
2190
  lineEl.className = 'ace-line';
2196
2191
  if (lineInfo) {
2197
- const paddingLeft = lineInfo.paddingLeft - numberingOffsetLeft;
2192
+ const paddingLeft = ScalingHelper.scale(lineInfo.paddingLeft - numberingOffsetLeft, scalingRatio);
2198
2193
  const marginLeft = paddingLeft < 0 ? paddingLeft : 0;
2199
2194
  lineEl.setAttribute('style',
2200
2195
  // eslint-disable-next-line prettier/prettier
@@ -2216,12 +2211,12 @@ class RenderingHelper {
2216
2211
  }
2217
2212
  domContent.parentNode.appendChild(valueFragment);
2218
2213
  }
2219
- static renderContentWrappedLine(domContent, splits, currentParagraph, formatsExt, distance, customContentService, customComponents, breaks = []) {
2214
+ static renderContentWrappedLine(domContent, splits, currentParagraph, formatsExt, distance, customContentService, customComponents, scalingRatio, breaks = []) {
2220
2215
  let splitIndex = 0;
2221
2216
  const numberingOffsetLeft = currentParagraph.numberingData.numberingId === null
2222
2217
  ? 0
2223
2218
  : currentParagraph.numberingData.width + currentParagraph.numberingData.paddingLeft;
2224
- let lineEl = RenderingHelper.createLineElement(currentParagraph.textLinesInfo[splitIndex], numberingOffsetLeft);
2219
+ let lineEl = RenderingHelper.createLineElement(currentParagraph.textLinesInfo[splitIndex], numberingOffsetLeft, scalingRatio);
2225
2220
  domContent.parentNode.appendChild(lineEl);
2226
2221
  const valueFragment = DomHelper.createFragment(domContent.currentElement);
2227
2222
  let paragraphChars = 0;
@@ -2243,7 +2238,7 @@ class RenderingHelper {
2243
2238
  while (paragraphChars === split && nextFragmentStartIndex !== distance.end) {
2244
2239
  split = splits[++splitIndex];
2245
2240
  const nextFragmentDocumentStartIndex = fragmentDocumentStartIndex + nextFragmentStartIndex - fragmentStartIndex;
2246
- lineEl = RenderingHelper.createLineElement(currentParagraph.textLinesInfo[splitIndex], numberingOffsetLeft);
2241
+ lineEl = RenderingHelper.createLineElement(currentParagraph.textLinesInfo[splitIndex], numberingOffsetLeft, scalingRatio);
2247
2242
  if (split > formatExt.endIndex) {
2248
2243
  const nextFragmentEndIndex = formatExt.content.length - 1;
2249
2244
  const nextFragmentDistance = new DistanceModel({ start: nextFragmentStartIndex, end: nextFragmentEndIndex });
@@ -2273,7 +2268,7 @@ class RenderingHelper {
2273
2268
  }
2274
2269
  }
2275
2270
  }
2276
- static renderNumberingMarker(paragraph, layerElement) {
2271
+ static renderNumberingMarker(paragraph, layerElement, scalingRatio) {
2277
2272
  const markerHeight = paragraph.numberingData.height;
2278
2273
  const markerLineInfo = {
2279
2274
  paddingLeft: paragraph.numberingData.paddingLeft,
@@ -2284,7 +2279,7 @@ class RenderingHelper {
2284
2279
  offsetAfter: 0,
2285
2280
  screenLine: 0
2286
2281
  };
2287
- const numberingLineEl = this.createLineElement(markerLineInfo, 0);
2282
+ const numberingLineEl = this.createLineElement(markerLineInfo, 0, scalingRatio);
2288
2283
  const markerFragment = DomHelper.createFragment(layerElement);
2289
2284
  const marker = paragraph.numberingData.marker;
2290
2285
  const markerExtModel = new FormatExtModel({
@@ -2922,7 +2917,7 @@ class TextLayer extends EventEmitting {
2922
2917
  DomHelper.setStyle(paragraphCell.element.style, 'top', `${paragraphTop}px`);
2923
2918
  const paragraph = paragraphs[row];
2924
2919
  if (paragraph.numberingData.numberingId !== null) {
2925
- const numberingElement = this.renderingHelper.renderNumberingMarker(paragraph, this.element);
2920
+ const numberingElement = this.renderingHelper.renderNumberingMarker(paragraph, this.element, this.session.properties.scalingRatio);
2926
2921
  numberingElement.className = 'numberingMarker';
2927
2922
  paragraphCell.element.appendChild(numberingElement);
2928
2923
  }
@@ -2947,13 +2942,13 @@ class TextLayer extends EventEmitting {
2947
2942
  }));
2948
2943
  if (splits?.length) {
2949
2944
  const distance = new DistanceModel({ start: startIndex, end: endIndex });
2950
- this.renderingHelper.renderContentWrappedLine({ currentElement: this.element, parentNode: linesContainerElement }, splits, currentParagraph, formatsExt, distance, this.session.customContentService, this.session.customComponents, this.session.model.breaks);
2945
+ this.renderingHelper.renderContentWrappedLine({ currentElement: this.element, parentNode: linesContainerElement }, splits, currentParagraph, formatsExt, distance, this.session.customContentService, this.session.customComponents, this.session.properties.scalingRatio, this.session.model.breaks);
2951
2946
  }
2952
2947
  else {
2953
2948
  const numberingOffsetLeft = currentParagraph.numberingData.numberingId === null
2954
2949
  ? 0
2955
2950
  : currentParagraph.numberingData.width + currentParagraph.numberingData.paddingLeft;
2956
- const lastLineEl = this.renderingHelper.createLineElement(currentParagraph.textLinesInfo[0], numberingOffsetLeft);
2951
+ const lastLineEl = this.renderingHelper.createLineElement(currentParagraph.textLinesInfo[0], numberingOffsetLeft, this.session.properties.scalingRatio);
2957
2952
  linesContainerElement.appendChild(lastLineEl);
2958
2953
  const rowDistance = new DistanceModel({ start: startIndex, end: endIndex });
2959
2954
  this.renderingHelper.renderContentSimpleLine({ currentElement: this.element, parentNode: lastLineEl }, formatsExt, rowDistance, this.session.customContentService, this.session.customComponents, this.session.model.breaks);
@@ -4871,15 +4866,8 @@ class Editor extends EventEmitting {
4871
4866
  initMainSession() {
4872
4867
  const pageWidth = this.customPageWidth ?? this.model.pageWidth;
4873
4868
  this.container.nativeElement.style.maxWidth = `${pageWidth}px`;
4874
- const pageMargin = new MarginModel({
4875
- left: this.model.marginLeft,
4876
- right: this.model.marginRight,
4877
- top: this.model.marginTop,
4878
- bottom: this.model.marginBottom,
4879
- header: this.model.marginHeader,
4880
- footer: this.model.marginFooter
4881
- });
4882
- this.regulatorService.addMainSession(this.model, pageMargin, pageWidth, this.container);
4869
+ const scalingRatio = this.customPageWidth ? ScalingHelper.getRatio(this.customPageWidth, this.model.pageWidth) : 1;
4870
+ this.regulatorService.addMainSession(this.model, pageWidth, scalingRatio, this.container);
4883
4871
  this.mainSession.addEventListener('changeScrollTop', this.onScrollTopChange);
4884
4872
  this.session.addEventListener('setStyles', this.setStyles);
4885
4873
  this.mainRenderer.scrollTo(0);
@@ -5900,8 +5888,8 @@ class NoderImageComponent extends BaseNoderComponent {
5900
5888
  }
5901
5889
  initialize() {
5902
5890
  const url = this.image.content?.replace('/api/', '') ?? '';
5903
- this._height = this.image.height;
5904
- this._width = this.image.width;
5891
+ this._height = ScalingHelper.scale(this.image.height, this.generalProperties.scalingRatio);
5892
+ this._width = ScalingHelper.scale(this.image.width, this.generalProperties.scalingRatio);
5905
5893
  this.apiService.getFile(url).subscribe((res) => {
5906
5894
  const fileSource = URL.createObjectURL(res);
5907
5895
  const image = this.createImage(fileSource);
@@ -5981,7 +5969,7 @@ class NoderTabComponent extends BaseNoderComponent {
5981
5969
  }
5982
5970
  calculateProperties() {
5983
5971
  this._height = this.tab.fontSize;
5984
- this._width = this.tab.width;
5972
+ this._width = ScalingHelper.scale(this.tab.width, this.generalProperties.scalingRatio);
5985
5973
  }
5986
5974
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NoderTabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5987
5975
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: NoderTabComponent, selector: "app-noder-tab", host: { properties: { "style.width.px": "this.width", "style.fontSize.pt": "this.height" } }, usesInheritance: true, ngImport: i0, template: "&emsp;\n", styles: [":host{position:relative;outline:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -6154,6 +6142,21 @@ class CellResizerParametersModel {
6154
6142
  }
6155
6143
  }
6156
6144
 
6145
+ class MarginModel {
6146
+ constructor(fields) {
6147
+ this.left = DocumentInfo.paddingLeft;
6148
+ this.right = DocumentInfo.paddingRight;
6149
+ this.top = DocumentInfo.paddingTop;
6150
+ this.bottom = DocumentInfo.paddingBottom;
6151
+ this.header = DocumentInfo.paddingHeader;
6152
+ this.footer = DocumentInfo.paddingFooter;
6153
+ if (!fields) {
6154
+ return;
6155
+ }
6156
+ Object.assign(this, fields);
6157
+ }
6158
+ }
6159
+
6157
6160
  class NoderTableCellComponent {
6158
6161
  get session() {
6159
6162
  return this.cellSession.session;
@@ -6188,7 +6191,7 @@ class NoderTableCellComponent {
6188
6191
  header: 0,
6189
6192
  footer: 0
6190
6193
  });
6191
- this.cellSession = this.regulatorService.addCellSession(this.table, marginModel, this, this.properties);
6194
+ this.cellSession = this.regulatorService.addCellSession(this.table, marginModel, this, this.generalProperties);
6192
6195
  this.sessionId = this.cellSession.sessionId;
6193
6196
  this.addEventListeners();
6194
6197
  }
@@ -6207,11 +6210,11 @@ class NoderTableCellComponent {
6207
6210
  this.session.pagesWrap.addEventListener('pagesCountChanged', this.pagesCountChangedHandler);
6208
6211
  }
6209
6212
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NoderTableCellComponent, deps: [{ token: EditorService }, { token: RegulatorService }], target: i0.ɵɵFactoryTarget.Component }); }
6210
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: NoderTableCellComponent, selector: "app-noder-table-cell", inputs: { table: "table", cell: "cell", rowIndex: "rowIndex", cellIndex: "cellIndex", columnIndex: "columnIndex", width: "width", parentSessionId: "parentSessionId", heightChanged: "heightChanged", startResizing: "startResizing" }, host: { properties: { "class.highlighted": "this.isHighlighted", "attr.data-session-id": "this.sessionId" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }], ngImport: i0, template: "<div\n *ngIf=\"cellIndex === 0\"\n class=\"resizer left-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Left)\"></div>\n<div\n #container\n class=\"edit-container\"></div>\n<div class=\"highlight-container\"></div>\n<div\n class=\"resizer right-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Right)\"></div>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}app-element-toolbar{right:15px;top:50px}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n", ".highlight-container{visibility:hidden;position:absolute;width:100%;height:100%;background-color:#5ea8f766;pointer-events:none;overflow:hidden}:host{min-height:19px;height:100%;background:transparent}:host.highlighted .highlight-container{visibility:visible}.edit-container{min-height:1px;overflow:hidden}.left-border{left:-6px}.resizer{cursor:col-resize;width:11px;height:100%;position:absolute;z-index:1}.right-border{right:-6px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6213
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: NoderTableCellComponent, selector: "app-noder-table-cell", inputs: { table: "table", cell: "cell", rowIndex: "rowIndex", cellIndex: "cellIndex", columnIndex: "columnIndex", width: "width", parentSessionId: "parentSessionId", generalProperties: "generalProperties", heightChanged: "heightChanged", startResizing: "startResizing" }, host: { properties: { "class.highlighted": "this.isHighlighted", "attr.data-session-id": "this.sessionId" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }], ngImport: i0, template: "<div\n *ngIf=\"cellIndex === 0\"\n class=\"resizer left-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Left)\"></div>\n<div\n #container\n class=\"edit-container\"></div>\n<div class=\"highlight-container\"></div>\n<div\n class=\"resizer right-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Right)\"></div>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n", ".highlight-container{visibility:hidden;position:absolute;width:100%;height:100%;background-color:#5ea8f766;pointer-events:none;overflow:hidden}:host{min-height:19px;height:100%;background:transparent}:host.highlighted .highlight-container{visibility:visible}.edit-container{min-height:1px;overflow:hidden}.left-border{left:-6px}.resizer{cursor:col-resize;width:11px;height:100%;position:absolute;z-index:1}.right-border{right:-6px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6211
6214
  }
6212
6215
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NoderTableCellComponent, decorators: [{
6213
6216
  type: Component,
6214
- args: [{ selector: 'app-noder-table-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"cellIndex === 0\"\n class=\"resizer left-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Left)\"></div>\n<div\n #container\n class=\"edit-container\"></div>\n<div class=\"highlight-container\"></div>\n<div\n class=\"resizer right-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Right)\"></div>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}app-element-toolbar{right:15px;top:50px}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n", ".highlight-container{visibility:hidden;position:absolute;width:100%;height:100%;background-color:#5ea8f766;pointer-events:none;overflow:hidden}:host{min-height:19px;height:100%;background:transparent}:host.highlighted .highlight-container{visibility:visible}.edit-container{min-height:1px;overflow:hidden}.left-border{left:-6px}.resizer{cursor:col-resize;width:11px;height:100%;position:absolute;z-index:1}.right-border{right:-6px}\n"] }]
6217
+ args: [{ selector: 'app-noder-table-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"cellIndex === 0\"\n class=\"resizer left-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Left)\"></div>\n<div\n #container\n class=\"edit-container\"></div>\n<div class=\"highlight-container\"></div>\n<div\n class=\"resizer right-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Right)\"></div>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n", ".highlight-container{visibility:hidden;position:absolute;width:100%;height:100%;background-color:#5ea8f766;pointer-events:none;overflow:hidden}:host{min-height:19px;height:100%;background:transparent}:host.highlighted .highlight-container{visibility:visible}.edit-container{min-height:1px;overflow:hidden}.left-border{left:-6px}.resizer{cursor:col-resize;width:11px;height:100%;position:absolute;z-index:1}.right-border{right:-6px}\n"] }]
6215
6218
  }], ctorParameters: () => [{ type: EditorService }, { type: RegulatorService }], propDecorators: { table: [{
6216
6219
  type: Input
6217
6220
  }], cell: [{
@@ -6226,6 +6229,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
6226
6229
  type: Input
6227
6230
  }], parentSessionId: [{
6228
6231
  type: Input
6232
+ }], generalProperties: [{
6233
+ type: Input
6229
6234
  }], heightChanged: [{
6230
6235
  type: Input
6231
6236
  }], startResizing: [{
@@ -6818,7 +6823,7 @@ class NoderTableComponent extends BaseNoderComponent {
6818
6823
  tableRow.cells[cellIndex].widthType = 'dxa';
6819
6824
  return (cellWidth * this._width) / 5000; // 5000 is equal to 100% in docx units of measurement
6820
6825
  }
6821
- return cellWidth;
6826
+ return ScalingHelper.scale(cellWidth, this.generalProperties.scalingRatio);
6822
6827
  }
6823
6828
  createResizer() {
6824
6829
  this.resizerEl = document.createElement('div');
@@ -6892,9 +6897,9 @@ class NoderTableComponent extends BaseNoderComponent {
6892
6897
  cellIndex: modelCellIndex,
6893
6898
  columnIndex: currentTargetIndex,
6894
6899
  width: this.getAdjustedWidth(this.table.rows[rowIndex], modelCellIndex, currentTargetIndex),
6900
+ generalProperties: this.generalProperties,
6895
6901
  heightChanged: this.cellHeightChanged,
6896
- startResizing: this.startResizing,
6897
- properties: this.properties
6902
+ startResizing: this.startResizing
6898
6903
  });
6899
6904
  const cellContentHeight = componentRef.instance.getCellContentHeight();
6900
6905
  const cellData = new CellDataModel(cell, cellContentHeight, componentRef);
@@ -6925,7 +6930,8 @@ class NoderTableComponent extends BaseNoderComponent {
6925
6930
  let i = 0;
6926
6931
  while (i < this.table.columns.length) {
6927
6932
  const col = document.createElement('col');
6928
- col.style.width = `${this.table.columns[i].width}px`;
6933
+ const scaledWidth = ScalingHelper.scale(this.table.columns[i].width, this.generalProperties.scalingRatio);
6934
+ col.style.width = `${scaledWidth}px`;
6929
6935
  colgroup.appendChild(col);
6930
6936
  i++;
6931
6937
  }
@@ -10940,26 +10946,21 @@ class CustomContentService {
10940
10946
  this.injector = injector;
10941
10947
  this.elements = this.injector.get(EXTERNAL_ELEMENT_SERVICE).elements;
10942
10948
  }
10943
- generateComponents(model, sessionId, properties, document) {
10949
+ generateComponents(model, sessionId, generalProperties, document) {
10944
10950
  const contentWidth = document.pageWidth - (document.pageMargin.left + document.pageMargin.right);
10945
10951
  return {
10946
10952
  images: this.componentService.generateComponents(NoderImageComponent, model?.images || [], x => {
10947
- return { image: x, sessionId };
10953
+ return { image: x, sessionId, generalProperties };
10948
10954
  }),
10949
10955
  tables: this.componentService.generateComponents(NoderTableComponent, model?.tables || [], x => {
10950
- return { table: x, sessionId, properties };
10956
+ return { table: x, sessionId, generalProperties };
10951
10957
  }),
10952
10958
  tabs: this.componentService.generateComponents(NoderTabComponent, model?.tabs || [], x => {
10953
- return { tab: x, sessionId };
10959
+ return { tab: x, sessionId, generalProperties };
10954
10960
  }),
10955
10961
  customElements: this.generateElementComponents(model?.elements || [], sessionId, contentWidth),
10956
10962
  edges: model instanceof DocxModel
10957
- ? new Edges(this.componentService, model.headers, model.footers, new MarginModel({
10958
- left: model.marginLeft,
10959
- right: model.marginRight,
10960
- top: model.marginHeader,
10961
- bottom: model.marginFooter
10962
- }), document.pageWidth, sessionId, properties)
10963
+ ? new Edges(this.componentService, model.headers, model.footers, document.pageMargin, document.pageWidth, sessionId, generalProperties)
10963
10964
  : null
10964
10965
  };
10965
10966
  }
@@ -11050,14 +11051,22 @@ class RegulatorService {
11050
11051
  this.sessionIdIncrement = 0;
11051
11052
  this.edgeEditingPage = null;
11052
11053
  }
11053
- addMainSession(model, margins, pageWidth, container) {
11054
+ addMainSession(model, pageWidth, scalingRatio, container) {
11054
11055
  const currentSessionId = ++this.sessionIdIncrement;
11055
- const document = new Document(model, margins, DocumentInfo.pagesSpace, pageWidth, model.pageHeight);
11056
+ const document = new Document(model, new MarginModel({
11057
+ left: ScalingHelper.scale(model.marginLeft, scalingRatio),
11058
+ right: ScalingHelper.scale(model.marginRight, scalingRatio),
11059
+ top: model.marginTop,
11060
+ bottom: model.marginBottom,
11061
+ header: model.marginHeader,
11062
+ footer: model.marginFooter
11063
+ }), DocumentInfo.pagesSpace, pageWidth, model.pageHeight);
11056
11064
  const renderer = new VirtualRenderer(container.nativeElement, this.editorService);
11057
11065
  const session = new EditSession(document, currentSessionId, this.customContentService, model, this.selection, new GeneralPropertiesModel({
11058
11066
  numberings: model.numberings,
11059
- defaultTabWidth: model.defaultTabWidth,
11060
- maxEdgeHeight: model.pageHeight * DEFAULT_EDGE_MAX_HEIGHT_MULTIPLIER
11067
+ defaultTabWidth: ScalingHelper.scale(model.defaultTabWidth, scalingRatio),
11068
+ maxEdgeHeight: model.pageHeight * DEFAULT_EDGE_MAX_HEIGHT_MULTIPLIER,
11069
+ scalingRatio
11061
11070
  }));
11062
11071
  renderer.setSession(session);
11063
11072
  renderer.scrollTo(session.scrollTop);
@@ -11236,34 +11245,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
11236
11245
  type: Injectable
11237
11246
  }] });
11238
11247
 
11239
- class ElementToolbarComponent {
11240
- constructor() {
11241
- this.isDisabled = false;
11242
- this.createElement = new EventEmitter();
11243
- this.isHide = false;
11244
- }
11245
- changeVisibility() {
11246
- this.isHide = !this.isHide;
11247
- }
11248
- async create(model) {
11249
- const data = await model.factoryMethod();
11250
- const element = new ElementDataModel(model.type, data.width, data.height, data.guid);
11251
- this.createElement.emit(element);
11252
- }
11253
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ElementToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11254
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ElementToolbarComponent, selector: "app-element-toolbar", inputs: { isDisabled: "isDisabled", elements: "elements" }, outputs: { createElement: "createElement" }, ngImport: i0, template: "<button\n class=\"menu\"\n mat-raised-button\n (click)=\"changeVisibility()\">\n <div class=\"icon\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-menu-circle\"></mat-icon>\n </div>\n</button>\n<div\n class=\"menu-items\"\n *ngIf=\"!isHide\">\n <div class=\"empty-place\"></div>\n <button\n *ngFor=\"let element of elements\"\n mat-icon-button\n matTooltip=\"{{ element.name }}\"\n matTooltipPosition=\"left\"\n (click)=\"create(element)\"\n [disabled]=\"isDisabled\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n </button>\n</div>\n", styles: [":host{position:absolute}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{padding-right:21px}.menu-items{z-index:1;top:24px;position:absolute;max-width:50px;display:flex;flex-direction:column;border-radius:0 0 20px 20px;box-shadow:1px 2px 5px #0000001a}.menu-items .empty-place{height:24px}.menu{border-radius:30px 0 0 30px;min-width:56px;width:56px;height:48px;z-index:2}.menu .icon mat-icon{height:22px;width:24px;font-size:24px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11255
- }
11256
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ElementToolbarComponent, decorators: [{
11257
- type: Component,
11258
- args: [{ selector: 'app-element-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"menu\"\n mat-raised-button\n (click)=\"changeVisibility()\">\n <div class=\"icon\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-menu-circle\"></mat-icon>\n </div>\n</button>\n<div\n class=\"menu-items\"\n *ngIf=\"!isHide\">\n <div class=\"empty-place\"></div>\n <button\n *ngFor=\"let element of elements\"\n mat-icon-button\n matTooltip=\"{{ element.name }}\"\n matTooltipPosition=\"left\"\n (click)=\"create(element)\"\n [disabled]=\"isDisabled\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n </button>\n</div>\n", styles: [":host{position:absolute}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{padding-right:21px}.menu-items{z-index:1;top:24px;position:absolute;max-width:50px;display:flex;flex-direction:column;border-radius:0 0 20px 20px;box-shadow:1px 2px 5px #0000001a}.menu-items .empty-place{height:24px}.menu{border-radius:30px 0 0 30px;min-width:56px;width:56px;height:48px;z-index:2}.menu .icon mat-icon{height:22px;width:24px;font-size:24px}\n"] }]
11259
- }], propDecorators: { isDisabled: [{
11260
- type: Input
11261
- }], elements: [{
11262
- type: Input
11263
- }], createElement: [{
11264
- type: Output
11265
- }] } });
11266
-
11267
11248
  class EditorComponent {
11268
11249
  get isViewOnly$() {
11269
11250
  return this.editorService.isViewOnly$;
@@ -11289,7 +11270,6 @@ class EditorComponent {
11289
11270
  this.class = 'base-editor';
11290
11271
  this.subscriptions = [];
11291
11272
  this.sidenavComponentRef = null;
11292
- this.elements = this.injector.get(EXTERNAL_ELEMENT_SERVICE).elements;
11293
11273
  this.sidenavProperties = this.injector.get(EXTERNAL_ELEMENT_SIDENAV);
11294
11274
  FontMetrics.checkVersion(EDITOR_VERSION);
11295
11275
  }
@@ -11304,10 +11284,6 @@ class EditorComponent {
11304
11284
  this.editor = new Editor(content, this.container, this.editorService, this.regulatorService, this.commandsService, this.clipboard, this.customPageWidth);
11305
11285
  this.subscriptions.push(this.toggleSidenavSubscription());
11306
11286
  }
11307
- createElement(model) {
11308
- this.editor.createCustomElement(model);
11309
- this.editor.focus();
11310
- }
11311
11287
  toggleSidenavSubscription() {
11312
11288
  return this.editorService.toggleSidenav$.subscribe(data => {
11313
11289
  if (this.sidenav.opened === data.open) {
@@ -11331,11 +11307,11 @@ class EditorComponent {
11331
11307
  });
11332
11308
  }
11333
11309
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: ComponentService }, { token: EditorService }, { token: i0.Injector }, { token: RegulatorService }, { token: CommandsService }, { token: i5.Clipboard }], target: i0.ɵɵFactoryTarget.Component }); }
11334
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: EditorComponent, selector: "app-editor", inputs: { customPageWidth: "customPageWidth", content: "content" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }, { propertyName: "sidenavContainer", first: true, predicate: ["drawerContainer"], descendants: true, static: true }, { propertyName: "sidenav", first: true, predicate: ["drawer"], descendants: true, static: true }], ngImport: i0, template: "<mat-drawer-container\n class=\"sidenav-container\"\n [hasBackdrop]=\"sidenavProperties.hasBackdrop\">\n <mat-drawer-content>\n <div class=\"container\">\n <div\n #container\n class=\"edit-container\"></div>\n <app-element-toolbar\n *ngIf=\"elements.length\"\n [elements]=\"elements\"\n [isDisabled]=\"isViewOnly$ | async\"\n (createElement)=\"createElement($event)\"></app-element-toolbar>\n </div>\n </mat-drawer-content>\n <mat-drawer\n #drawer\n [autoFocus]=\"sidenavProperties.autoFocus\"\n [position]=\"sidenavProperties.position\"\n [mode]=\"sidenavProperties.mode\">\n <div\n #drawerContainer\n class=\"drawer-container\"></div>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}app-element-toolbar{right:15px;top:50px}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i7.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i7.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: ElementToolbarComponent, selector: "app-element-toolbar", inputs: ["isDisabled", "elements"], outputs: ["createElement"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11310
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: EditorComponent, selector: "app-editor", inputs: { customPageWidth: "customPageWidth", content: "content" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }, { propertyName: "sidenavContainer", first: true, predicate: ["drawerContainer"], descendants: true, static: true }, { propertyName: "sidenav", first: true, predicate: ["drawer"], descendants: true, static: true }], ngImport: i0, template: "<mat-drawer-container\n class=\"sidenav-container\"\n [hasBackdrop]=\"sidenavProperties.hasBackdrop\">\n <mat-drawer-content>\n <div class=\"container\">\n <div\n #container\n class=\"edit-container\"></div>\n </div>\n </mat-drawer-content>\n <mat-drawer\n #drawer\n [autoFocus]=\"sidenavProperties.autoFocus\"\n [position]=\"sidenavProperties.position\"\n [mode]=\"sidenavProperties.mode\">\n <div\n #drawerContainer\n class=\"drawer-container\"></div>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n"], dependencies: [{ kind: "component", type: i6.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i6.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i6.MatDrawerContent, selector: "mat-drawer-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11335
11311
  }
11336
11312
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorComponent, decorators: [{
11337
11313
  type: Component,
11338
- args: [{ selector: 'app-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-drawer-container\n class=\"sidenav-container\"\n [hasBackdrop]=\"sidenavProperties.hasBackdrop\">\n <mat-drawer-content>\n <div class=\"container\">\n <div\n #container\n class=\"edit-container\"></div>\n <app-element-toolbar\n *ngIf=\"elements.length\"\n [elements]=\"elements\"\n [isDisabled]=\"isViewOnly$ | async\"\n (createElement)=\"createElement($event)\"></app-element-toolbar>\n </div>\n </mat-drawer-content>\n <mat-drawer\n #drawer\n [autoFocus]=\"sidenavProperties.autoFocus\"\n [position]=\"sidenavProperties.position\"\n [mode]=\"sidenavProperties.mode\">\n <div\n #drawerContainer\n class=\"drawer-container\"></div>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}app-element-toolbar{right:15px;top:50px}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n"] }]
11314
+ args: [{ selector: 'app-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-drawer-container\n class=\"sidenav-container\"\n [hasBackdrop]=\"sidenavProperties.hasBackdrop\">\n <mat-drawer-content>\n <div class=\"container\">\n <div\n #container\n class=\"edit-container\"></div>\n </div>\n </mat-drawer-content>\n <mat-drawer\n #drawer\n [autoFocus]=\"sidenavProperties.autoFocus\"\n [position]=\"sidenavProperties.position\"\n [mode]=\"sidenavProperties.mode\">\n <div\n #drawerContainer\n class=\"drawer-container\"></div>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n"] }]
11339
11315
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: ComponentService }, { type: EditorService }, { type: i0.Injector }, { type: RegulatorService }, { type: CommandsService }, { type: i5.Clipboard }], propDecorators: { customPageWidth: [{
11340
11316
  type: Input
11341
11317
  }], content: [{
@@ -11381,7 +11357,6 @@ class EditorModule {
11381
11357
  }
11382
11358
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11383
11359
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: EditorModule, declarations: [EditorComponent,
11384
- ElementToolbarComponent,
11385
11360
  NoderEdgeComponent,
11386
11361
  NoderImageComponent,
11387
11362
  NoderTabComponent,
@@ -11404,7 +11379,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
11404
11379
  args: [{
11405
11380
  declarations: [
11406
11381
  EditorComponent,
11407
- ElementToolbarComponent,
11408
11382
  NoderEdgeComponent,
11409
11383
  NoderImageComponent,
11410
11384
  NoderTabComponent,
@@ -11427,70 +11401,152 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
11427
11401
  }]
11428
11402
  }] });
11429
11403
 
11430
- var Alignment;
11431
- (function (Alignment) {
11432
- Alignment[Alignment["Left"] = 0] = "Left";
11433
- Alignment[Alignment["Center"] = 1] = "Center";
11434
- Alignment[Alignment["Right"] = 2] = "Right";
11435
- Alignment[Alignment["Justify"] = 3] = "Justify";
11436
- })(Alignment || (Alignment = {}));
11404
+ var Mode;
11405
+ (function (Mode) {
11406
+ Mode[Mode["Edit"] = 0] = "Edit";
11407
+ Mode[Mode["Fill"] = 1] = "Fill";
11408
+ Mode[Mode["View"] = 2] = "View";
11409
+ })(Mode || (Mode = {}));
11437
11410
 
11438
- class InsertTableComponent {
11439
- constructor() {
11440
- this.selectSizes = new EventEmitter();
11441
- this.maxRows = 20;
11442
- this.minRows = 5;
11443
- this.maxColumns = 20;
11444
- this.minColumns = 10;
11445
- this.rows = Array(this.minRows)
11446
- .fill(undefined)
11447
- .map((_, i) => i + 1);
11448
- this.columns = Array(this.minColumns)
11449
- .fill(undefined)
11450
- .map((_, i) => i + 1);
11451
- this.currentRow = 1;
11452
- this.currentColumn = 1;
11411
+ class EditorTitleComponent {
11412
+ set rename$(value) {
11413
+ value?.subscribe(() => this.setTitleActive(this.titleSpan.nativeElement));
11453
11414
  }
11454
- onCreateTable(rows, columns) {
11455
- this.selectSizes.emit({ rows, columns });
11415
+ constructor(cdr) {
11416
+ this.cdr = cdr;
11417
+ this.changeMode = new EventEmitter();
11418
+ this.renameDocumentTitle = new EventEmitter();
11419
+ this.selectedMode = Mode.Edit;
11420
+ this.modeOptions = [
11421
+ {
11422
+ id: Mode.Edit,
11423
+ text: 'Edit document',
11424
+ icon: 'icon-edit-mode'
11425
+ },
11426
+ {
11427
+ id: Mode.Fill,
11428
+ text: 'Fill or print document',
11429
+ icon: 'icon-fill-done'
11430
+ },
11431
+ {
11432
+ id: Mode.View,
11433
+ text: 'Read or print document',
11434
+ icon: 'icon-view'
11435
+ }
11436
+ ];
11456
11437
  }
11457
- onCellHover(row, column) {
11458
- this.currentRow = row;
11459
- this.currentColumn = column;
11460
- this.rows = this.calculateArray(row, this.rows, this.minRows, this.maxRows);
11461
- this.columns = this.calculateArray(column, this.columns, this.minColumns, this.maxColumns);
11438
+ onRenameTitle(event) {
11439
+ event.target.contentEditable = 'false';
11440
+ this.title = event.target.textContent || DEFAULT_FILE_NAME;
11441
+ event.target.innerText = this.title;
11442
+ this.renameDocumentTitle.emit(this.title);
11443
+ this.cdr.detectChanges();
11462
11444
  }
11463
- calculateArray(currentValue, arrayValues, minValue, maxValue) {
11464
- if (currentValue >= arrayValues.length && currentValue <= maxValue) {
11465
- const count = currentValue >= maxValue ? maxValue : arrayValues.length + 1;
11466
- return Array(count)
11467
- .fill(undefined)
11468
- .map((_, i) => i + 1);
11469
- }
11470
- else if (currentValue < arrayValues.length && arrayValues.length > minValue) {
11471
- const count = currentValue <= minValue ? minValue + 1 : arrayValues.length - (arrayValues.length - currentValue) + 1;
11472
- return Array(count)
11473
- .fill(undefined)
11474
- .map((_, i) => i + 1);
11445
+ onFocus(event) {
11446
+ this.setTitleActive(event.target);
11447
+ }
11448
+ setTitleActive(element) {
11449
+ if (element.contentEditable === 'true') {
11450
+ return;
11475
11451
  }
11476
- return arrayValues;
11452
+ element.contentEditable = 'true';
11453
+ const range = document.createRange();
11454
+ const sel = window.getSelection();
11455
+ range.setStart(element.firstChild, element.textContent.length);
11456
+ range.collapse(true);
11457
+ sel.removeAllRanges();
11458
+ sel.addRange(range);
11459
+ element.focus();
11477
11460
  }
11478
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: InsertTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11479
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: InsertTableComponent, isStandalone: true, selector: "app-insert-table", outputs: { selectSizes: "selectSizes" }, ngImport: i0, template: "<div class=\"table-size-container\">\n <ng-container *ngFor=\"let row of rows\">\n <div class=\"row\">\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"cell-container\"\n (mouseenter)=\"onCellHover(row, column)\"\n (click)=\"onCreateTable(row, column)\">\n <div\n class=\"cell\"\n [class.highlighted]=\"row <= currentRow && column <= currentColumn\"></div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <div class=\"table-size\">{{ currentColumn }} x {{ currentRow }}</div>\n</div>\n", styles: [":host{border-radius:4px}.table-size-container{padding:14px 10px 8px}.row{display:flex;flex-direction:row}.cell-container{padding:2px}.cell{height:16px;width:16px}.table-size{display:flex;justify-content:center;padding-top:14px;font-size:14px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11461
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorTitleComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
11462
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: EditorTitleComponent, isStandalone: true, selector: "app-editor-title", inputs: { title: "title", rename$: "rename$" }, outputs: { changeMode: "changeMode", renameDocumentTitle: "renameDocumentTitle" }, providers: [ExternalElementService], viewQueries: [{ propertyName: "titleSpan", first: true, predicate: ["titleSpan"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"menu-header\">\n <div class=\"file-name\">\n <span\n #titleSpan\n class=\"title\"\n matTooltip=\"Double click to rename\"\n (blur)=\"onRenameTitle($event)\"\n (keydown.enter)=\"$event.target.blur()\"\n (dblclick)=\"onFocus($event)\">\n {{ title }}\n </span>\n </div>\n</div>\n<div class=\"editor-mode\">\n <button\n *ngFor=\"let mode of modeOptions\"\n mat-icon-button\n [class.selected-mode]=\"selectedMode === mode.id\"\n [matTooltip]=\"mode.text\"\n (click)=\"selectedMode = mode.id; changeMode.emit(mode.id)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ mode.icon }}\"></mat-icon>\n </button>\n</div>\n", styles: [":host{display:flex;position:relative;align-items:center;width:100%}.menu-header{width:35%;line-height:0;z-index:1}.file-name{display:block;margin:0 8px;overflow:hidden}.title{font-size:18px;font-weight:400;line-height:normal;outline:none;display:inline-block;white-space:nowrap;min-width:1px;overflow:hidden;max-width:100%;-webkit-user-select:none;user-select:none}.title:not(:focus){text-overflow:ellipsis}.editor-mode{display:flex;position:absolute;justify-content:center;width:100%}.mdc-icon-button{min-width:40px;min-height:40px;width:40px;height:40px;padding:8px}.mdc-icon-button:not(:first-child){margin-left:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatSelectModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11480
11463
  }
11481
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: InsertTableComponent, decorators: [{
11464
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorTitleComponent, decorators: [{
11482
11465
  type: Component,
11483
- args: [{ standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-insert-table', template: "<div class=\"table-size-container\">\n <ng-container *ngFor=\"let row of rows\">\n <div class=\"row\">\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"cell-container\"\n (mouseenter)=\"onCellHover(row, column)\"\n (click)=\"onCreateTable(row, column)\">\n <div\n class=\"cell\"\n [class.highlighted]=\"row <= currentRow && column <= currentColumn\"></div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <div class=\"table-size\">{{ currentColumn }} x {{ currentRow }}</div>\n</div>\n", styles: [":host{border-radius:4px}.table-size-container{padding:14px 10px 8px}.row{display:flex;flex-direction:row}.cell-container{padding:2px}.cell{height:16px;width:16px}.table-size{display:flex;justify-content:center;padding-top:14px;font-size:14px}\n"] }]
11484
- }], propDecorators: { selectSizes: [{
11466
+ args: [{ standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule, MatTooltipModule, MatSelectModule], providers: [ExternalElementService], selector: 'app-editor-title', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"menu-header\">\n <div class=\"file-name\">\n <span\n #titleSpan\n class=\"title\"\n matTooltip=\"Double click to rename\"\n (blur)=\"onRenameTitle($event)\"\n (keydown.enter)=\"$event.target.blur()\"\n (dblclick)=\"onFocus($event)\">\n {{ title }}\n </span>\n </div>\n</div>\n<div class=\"editor-mode\">\n <button\n *ngFor=\"let mode of modeOptions\"\n mat-icon-button\n [class.selected-mode]=\"selectedMode === mode.id\"\n [matTooltip]=\"mode.text\"\n (click)=\"selectedMode = mode.id; changeMode.emit(mode.id)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ mode.icon }}\"></mat-icon>\n </button>\n</div>\n", styles: [":host{display:flex;position:relative;align-items:center;width:100%}.menu-header{width:35%;line-height:0;z-index:1}.file-name{display:block;margin:0 8px;overflow:hidden}.title{font-size:18px;font-weight:400;line-height:normal;outline:none;display:inline-block;white-space:nowrap;min-width:1px;overflow:hidden;max-width:100%;-webkit-user-select:none;user-select:none}.title:not(:focus){text-overflow:ellipsis}.editor-mode{display:flex;position:absolute;justify-content:center;width:100%}.mdc-icon-button{min-width:40px;min-height:40px;width:40px;height:40px;padding:8px}.mdc-icon-button:not(:first-child){margin-left:10px}\n"] }]
11467
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { title: [{
11468
+ type: Input
11469
+ }], rename$: [{
11470
+ type: Input
11471
+ }], changeMode: [{
11472
+ type: Output
11473
+ }], renameDocumentTitle: [{
11485
11474
  type: Output
11475
+ }], titleSpan: [{
11476
+ type: ViewChild,
11477
+ args: ['titleSpan', { static: true }]
11486
11478
  }] } });
11487
11479
 
11488
- var Mode;
11489
- (function (Mode) {
11490
- Mode[Mode["Edit"] = 0] = "Edit";
11491
- Mode[Mode["Fill"] = 1] = "Fill";
11492
- Mode[Mode["View"] = 2] = "View";
11493
- })(Mode || (Mode = {}));
11480
+ class EditorSearchDialogComponent extends ObserverComponent {
11481
+ constructor(editorService) {
11482
+ super();
11483
+ this.editorService = editorService;
11484
+ this.searchControl = new FormControl('');
11485
+ this.replaceControl = new FormControl('');
11486
+ this.isReplace = false;
11487
+ this.searchIteration$ = this.editorService.searchIteration$;
11488
+ }
11489
+ ngOnInit() {
11490
+ this.subscriptions.push(this.searchSubscription());
11491
+ }
11492
+ onClose() {
11493
+ this.editorService.openSearchDialog = false;
11494
+ }
11495
+ findNext() {
11496
+ this.editorService.searchOptions = {
11497
+ term: this.searchControl.value,
11498
+ skipCurrent: true,
11499
+ backwards: false
11500
+ };
11501
+ }
11502
+ findPrev() {
11503
+ this.editorService.searchOptions = {
11504
+ term: this.searchControl.value,
11505
+ skipCurrent: true,
11506
+ backwards: true
11507
+ };
11508
+ }
11509
+ setReplace() {
11510
+ this.isReplace = !this.isReplace;
11511
+ }
11512
+ replace() {
11513
+ this.editorService.replace = { replaceValue: this.replaceControl.value, searchValue: this.searchControl.value };
11514
+ }
11515
+ searchSubscription() {
11516
+ return this.searchControl.valueChanges.pipe(debounceTime(300), distinctUntilChanged()).subscribe(() => {
11517
+ this.editorService.searchOptions = {
11518
+ term: this.searchControl.value,
11519
+ skipCurrent: false,
11520
+ backwards: false
11521
+ };
11522
+ });
11523
+ }
11524
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorSearchDialogComponent, deps: [{ token: EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
11525
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: EditorSearchDialogComponent, isStandalone: true, selector: "app-editor-search-dialog", providers: [ExternalElementService], usesInheritance: true, ngImport: i0, template: "<div class=\"line search-form\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Search for</mat-label>\n <input\n matInput\n [formControl]=\"searchControl\"\n (keydown.enter)=\"findNext()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findPrev()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-onleft\"></mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findNext()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-onright\"></mat-icon>\n </button>\n</div>\n<ng-container *ngIf=\"{ searchIteration: searchIteration$ | async } as data\">\n <div\n class=\"replace-form\"\n *ngIf=\"isReplace\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Replace with</mat-label>\n <input\n matInput\n [formControl]=\"replaceControl\"\n spellcheck=\"false\"\n autocomplete=\"off\"\n (keydown.enter)=\"replace()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-button\n (click)=\"replace()\">\n Replace\n </button>\n </div>\n <div class=\"search-options\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Toggle Replace Mode\"\n (click)=\"setReplace()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ isReplace ? 'icon-arrow-up' : 'icon-arrow-down' }}\"></mat-icon>\n </button>\n <div class=\"counter\">\n <span>{{ data.searchIteration?.current ?? 0 }} of {{ data.searchIteration?.total ?? 0 }}</span>\n </div>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Close\"\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n </button>\n </div>\n</ng-container>\n", styles: [":host{min-height:56px;max-width:100%;display:block;font-size:10px;padding:3px}.close-icon{position:absolute;right:1px;top:1px}.search-form,.replace-form,.search-options{display:flex}mat-form-field{padding-left:10px}.mdc-button{font-size:12px;padding:0 8px;min-width:unset}.search-options{line-height:40px}.search-options .counter{text-align:center;flex:1}.mat-mdc-input-element{font-size:10px}.replace-form .mdc-button{width:80px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11526
+ }
11527
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorSearchDialogComponent, decorators: [{
11528
+ type: Component,
11529
+ args: [{ standalone: true, imports: [CommonModule, FormsModule, MatButtonModule, MatIconModule, MatInputModule, MatTooltipModule, ReactiveFormsModule], providers: [ExternalElementService], changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-editor-search-dialog', template: "<div class=\"line search-form\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Search for</mat-label>\n <input\n matInput\n [formControl]=\"searchControl\"\n (keydown.enter)=\"findNext()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findPrev()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-onleft\"></mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findNext()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-onright\"></mat-icon>\n </button>\n</div>\n<ng-container *ngIf=\"{ searchIteration: searchIteration$ | async } as data\">\n <div\n class=\"replace-form\"\n *ngIf=\"isReplace\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Replace with</mat-label>\n <input\n matInput\n [formControl]=\"replaceControl\"\n spellcheck=\"false\"\n autocomplete=\"off\"\n (keydown.enter)=\"replace()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-button\n (click)=\"replace()\">\n Replace\n </button>\n </div>\n <div class=\"search-options\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Toggle Replace Mode\"\n (click)=\"setReplace()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ isReplace ? 'icon-arrow-up' : 'icon-arrow-down' }}\"></mat-icon>\n </button>\n <div class=\"counter\">\n <span>{{ data.searchIteration?.current ?? 0 }} of {{ data.searchIteration?.total ?? 0 }}</span>\n </div>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Close\"\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n </button>\n </div>\n</ng-container>\n", styles: [":host{min-height:56px;max-width:100%;display:block;font-size:10px;padding:3px}.close-icon{position:absolute;right:1px;top:1px}.search-form,.replace-form,.search-options{display:flex}mat-form-field{padding-left:10px}.mdc-button{font-size:12px;padding:0 8px;min-width:unset}.search-options{line-height:40px}.search-options .counter{text-align:center;flex:1}.mat-mdc-input-element{font-size:10px}.replace-form .mdc-button{width:80px}\n"] }]
11530
+ }], ctorParameters: () => [{ type: EditorService }] });
11531
+
11532
+ var Alignment;
11533
+ (function (Alignment) {
11534
+ Alignment[Alignment["Left"] = 0] = "Left";
11535
+ Alignment[Alignment["Center"] = 1] = "Center";
11536
+ Alignment[Alignment["Right"] = 2] = "Right";
11537
+ Alignment[Alignment["Justify"] = 3] = "Justify";
11538
+ })(Alignment || (Alignment = {}));
11539
+
11540
+ class NumberingLevelModel {
11541
+ constructor(fields) {
11542
+ if (fields) {
11543
+ if (fields.markerStyle) {
11544
+ fields.markerStyle = new TextStyleModel(fields.markerStyle);
11545
+ }
11546
+ Object.assign(this, fields);
11547
+ }
11548
+ }
11549
+ }
11494
11550
 
11495
11551
  var NumberingTemplateType;
11496
11552
  (function (NumberingTemplateType) {
@@ -11508,17 +11564,6 @@ var NumberingTemplateType;
11508
11564
  NumberingTemplateType[NumberingTemplateType["NumberList6"] = 11] = "NumberList6";
11509
11565
  })(NumberingTemplateType || (NumberingTemplateType = {}));
11510
11566
 
11511
- class NumberingLevelModel {
11512
- constructor(fields) {
11513
- if (fields) {
11514
- if (fields.markerStyle) {
11515
- fields.markerStyle = new TextStyleModel(fields.markerStyle);
11516
- }
11517
- Object.assign(this, fields);
11518
- }
11519
- }
11520
- }
11521
-
11522
11567
  const NumberingTemplates = [
11523
11568
  {
11524
11569
  templateType: NumberingTemplateType.NumberList1,
@@ -12896,7 +12941,7 @@ class CustomIconService {
12896
12941
  this.matIconRegistry.addSvgIconLiteral('number-5', this.sanitizer.bypassSecurityTrustHtml(SVG_NUMBER_5));
12897
12942
  this.matIconRegistry.addSvgIconLiteral('number-6', this.sanitizer.bypassSecurityTrustHtml(SVG_NUMBER_6));
12898
12943
  }
12899
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: CustomIconService, deps: [{ token: i3.MatIconRegistry }, { token: i2$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable }); }
12944
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: CustomIconService, deps: [{ token: i3.MatIconRegistry }, { token: i2$3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable }); }
12900
12945
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: CustomIconService, providedIn: 'any' }); }
12901
12946
  }
12902
12947
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: CustomIconService, decorators: [{
@@ -12904,15 +12949,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
12904
12949
  args: [{
12905
12950
  providedIn: 'any'
12906
12951
  }]
12907
- }], ctorParameters: () => [{ type: i3.MatIconRegistry }, { type: i2$2.DomSanitizer }] });
12952
+ }], ctorParameters: () => [{ type: i3.MatIconRegistry }, { type: i2$3.DomSanitizer }] });
12953
+
12954
+ class InsertTableComponent {
12955
+ constructor() {
12956
+ this.selectSizes = new EventEmitter();
12957
+ this.maxRows = 20;
12958
+ this.minRows = 5;
12959
+ this.maxColumns = 20;
12960
+ this.minColumns = 10;
12961
+ this.rows = Array(this.minRows)
12962
+ .fill(undefined)
12963
+ .map((_, i) => i + 1);
12964
+ this.columns = Array(this.minColumns)
12965
+ .fill(undefined)
12966
+ .map((_, i) => i + 1);
12967
+ this.currentRow = 1;
12968
+ this.currentColumn = 1;
12969
+ }
12970
+ onCreateTable(rows, columns) {
12971
+ this.selectSizes.emit({ rows, columns });
12972
+ }
12973
+ onCellHover(row, column) {
12974
+ this.currentRow = row;
12975
+ this.currentColumn = column;
12976
+ this.rows = this.calculateArray(row, this.rows, this.minRows, this.maxRows);
12977
+ this.columns = this.calculateArray(column, this.columns, this.minColumns, this.maxColumns);
12978
+ }
12979
+ calculateArray(currentValue, arrayValues, minValue, maxValue) {
12980
+ if (currentValue >= arrayValues.length && currentValue <= maxValue) {
12981
+ const count = currentValue >= maxValue ? maxValue : arrayValues.length + 1;
12982
+ return Array(count)
12983
+ .fill(undefined)
12984
+ .map((_, i) => i + 1);
12985
+ }
12986
+ else if (currentValue < arrayValues.length && arrayValues.length > minValue) {
12987
+ const count = currentValue <= minValue ? minValue + 1 : arrayValues.length - (arrayValues.length - currentValue) + 1;
12988
+ return Array(count)
12989
+ .fill(undefined)
12990
+ .map((_, i) => i + 1);
12991
+ }
12992
+ return arrayValues;
12993
+ }
12994
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: InsertTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12995
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: InsertTableComponent, isStandalone: true, selector: "app-insert-table", outputs: { selectSizes: "selectSizes" }, ngImport: i0, template: "<div class=\"table-size-container\">\n <ng-container *ngFor=\"let row of rows\">\n <div class=\"row\">\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"cell-container\"\n (mouseenter)=\"onCellHover(row, column)\"\n (click)=\"onCreateTable(row, column)\">\n <div\n class=\"cell\"\n [class.highlighted]=\"row <= currentRow && column <= currentColumn\"></div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <div class=\"table-size\">{{ currentColumn }} x {{ currentRow }}</div>\n</div>\n", styles: [":host{border-radius:4px}.table-size-container{padding:14px 10px 8px}.row{display:flex;flex-direction:row}.cell-container{padding:2px}.cell{height:16px;width:16px}.table-size{display:flex;justify-content:center;padding-top:14px;font-size:14px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12996
+ }
12997
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: InsertTableComponent, decorators: [{
12998
+ type: Component,
12999
+ args: [{ standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-insert-table', template: "<div class=\"table-size-container\">\n <ng-container *ngFor=\"let row of rows\">\n <div class=\"row\">\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"cell-container\"\n (mouseenter)=\"onCellHover(row, column)\"\n (click)=\"onCreateTable(row, column)\">\n <div\n class=\"cell\"\n [class.highlighted]=\"row <= currentRow && column <= currentColumn\"></div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <div class=\"table-size\">{{ currentColumn }} x {{ currentRow }}</div>\n</div>\n", styles: [":host{border-radius:4px}.table-size-container{padding:14px 10px 8px}.row{display:flex;flex-direction:row}.cell-container{padding:2px}.cell{height:16px;width:16px}.table-size{display:flex;justify-content:center;padding-top:14px;font-size:14px}\n"] }]
13000
+ }], propDecorators: { selectSizes: [{
13001
+ type: Output
13002
+ }] } });
12908
13003
 
12909
- class EditorHeaderComponent {
13004
+ class MenuDropdownsComponent {
12910
13005
  set historyInfo(value) {
12911
13006
  this.canUndo = value.step !== -1;
12912
13007
  this.canRedo = value.step < value.lastStep;
12913
13008
  }
12914
13009
  set styles(value) {
12915
- this._styles = value;
12916
13010
  this._styles = value;
12917
13011
  this.numberingTemplateType = ToolbarStylesHelper.getNumberingTemplateType(value.numberingLevelsStyles);
12918
13012
  }
@@ -12930,12 +13024,11 @@ class EditorHeaderComponent {
12930
13024
  this.insertPageBreak = new EventEmitter();
12931
13025
  this.createDocument = new EventEmitter();
12932
13026
  this.insertImage = new EventEmitter();
12933
- this.changeMode = new EventEmitter();
12934
- this.renameDocumentTitle = new EventEmitter();
13027
+ this.rename = new EventEmitter();
12935
13028
  this.delete = new EventEmitter();
12936
13029
  this.openEditMenu = new EventEmitter();
12937
- this.undo = new EventEmitter();
12938
13030
  this.redo = new EventEmitter();
13031
+ this.undo = new EventEmitter();
12939
13032
  this.cutSelected = new EventEmitter();
12940
13033
  this.copySelected = new EventEmitter();
12941
13034
  this.pasteClipboardData = new EventEmitter();
@@ -12948,31 +13041,9 @@ class EditorHeaderComponent {
12948
13041
  this.setNumberingTemplateType = new EventEmitter();
12949
13042
  this.removeNumberings = new EventEmitter();
12950
13043
  this.insertTable = new EventEmitter();
12951
- this.mode = Mode;
12952
- this.alignments = Alignment;
12953
- this.selectedMode = Mode.Edit;
12954
13044
  this.numberingTemplateTypes = NumberingTemplateType;
12955
- this.modeOptions = [
12956
- {
12957
- id: Mode.Edit,
12958
- name: 'Editing',
12959
- text: 'Edit document',
12960
- icon: 'icon-edit'
12961
- },
12962
- {
12963
- id: Mode.Fill,
12964
- name: 'Filling',
12965
- text: 'Fill or print document',
12966
- icon: 'icon-fill-done'
12967
- },
12968
- {
12969
- id: Mode.View,
12970
- name: 'Viewing',
12971
- text: 'Read or print document',
12972
- icon: 'icon-view'
12973
- }
12974
- ];
12975
13045
  this.showInsertTableMenu = false;
13046
+ this.alignments = Alignment;
12976
13047
  this.customIconService.register();
12977
13048
  this.elements = this.injector.get(EXTERNAL_ELEMENT_SERVICE).elements;
12978
13049
  }
@@ -12980,59 +13051,10 @@ class EditorHeaderComponent {
12980
13051
  this.openFileFromDisk.emit(event);
12981
13052
  event.target.value = null;
12982
13053
  }
12983
- onSaveAs() {
12984
- this.saveAs.emit();
12985
- }
12986
- onPrint() {
12987
- this.print.emit();
12988
- }
12989
- onDelete() {
12990
- this.delete.emit();
12991
- }
12992
13054
  onInsertImage(event) {
12993
13055
  this.insertImage.emit(event);
12994
13056
  event.target.value = null;
12995
13057
  }
12996
- onInsertLink() {
12997
- this.insertLink.emit();
12998
- }
12999
- onRenameTitle(event) {
13000
- event.target.contentEditable = 'false';
13001
- this.title = event.target.textContent || DEFAULT_FILE_NAME;
13002
- event.target.innerText = this.title;
13003
- this.renameDocumentTitle.emit(this.title);
13004
- this.cdr.detectChanges();
13005
- }
13006
- onRename() {
13007
- this.setTitleActive(this.titleSpan.nativeElement);
13008
- }
13009
- onFocus(event) {
13010
- this.setTitleActive(event.target);
13011
- }
13012
- menuOpened() {
13013
- this.openEditMenu.emit();
13014
- }
13015
- onUndo() {
13016
- this.undo.emit();
13017
- }
13018
- onRedo() {
13019
- this.redo.emit();
13020
- }
13021
- onCut() {
13022
- this.cutSelected.emit();
13023
- }
13024
- onCopy() {
13025
- this.copySelected.emit();
13026
- }
13027
- onPaste() {
13028
- this.pasteClipboardData.emit();
13029
- }
13030
- onSelectAll() {
13031
- this.selectAll.emit();
13032
- }
13033
- onRemoveSelected() {
13034
- this.removeSelected.emit();
13035
- }
13036
13058
  onSelectFormat(alignment) {
13037
13059
  this.changeParagraphStyle.emit(new ParagraphStyleModel({ alignment }));
13038
13060
  }
@@ -13057,24 +13079,19 @@ class EditorHeaderComponent {
13057
13079
  this.setNumberingTemplateType.emit(templateLevels);
13058
13080
  }
13059
13081
  }
13082
+ onTableInsertMenuClosed() {
13083
+ this.tableInsertMenu._animationDone
13084
+ .pipe(filter(e => e.toState === 'void'), take(1))
13085
+ .subscribe(() => {
13086
+ this.showInsertTableMenu = false;
13087
+ this.cdr.markForCheck();
13088
+ });
13089
+ }
13060
13090
  async onCreate(model) {
13061
13091
  const data = await model.factoryMethod();
13062
13092
  const element = new ElementDataModel(model.type, data.width, data.height, data.guid);
13063
13093
  this.createElement.emit(element);
13064
13094
  }
13065
- setTitleActive(element) {
13066
- if (element.contentEditable === 'true') {
13067
- return;
13068
- }
13069
- element.contentEditable = 'true';
13070
- const range = document.createRange();
13071
- const sel = window.getSelection();
13072
- range.setStart(element.firstChild, element.textContent.length);
13073
- range.collapse(true);
13074
- sel.removeAllRanges();
13075
- sel.addRange(range);
13076
- element.focus();
13077
- }
13078
13095
  checkFontLoadedAndApplyStyle(style) {
13079
13096
  const newStyles = { ...this.styles, ...style };
13080
13097
  const italic = newStyles.italic ? 'italic ' : '';
@@ -13091,41 +13108,22 @@ class EditorHeaderComponent {
13091
13108
  // continue regardless of error
13092
13109
  });
13093
13110
  }
13094
- onTableInsertMenuClosed() {
13095
- this.tableInsertMenu._animationDone
13096
- .pipe(filter(e => e.toState === 'void'), take(1))
13097
- .subscribe(() => {
13098
- this.showInsertTableMenu = false;
13099
- this.cdr.markForCheck();
13100
- });
13101
- }
13102
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: CustomIconService }], target: i0.ɵɵFactoryTarget.Component }); }
13103
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: EditorHeaderComponent, isStandalone: true, selector: "app-editor-header", inputs: { isViewOnly: "isViewOnly", hasSelection: "hasSelection", clipboardData: "clipboardData", title: "title", historyInfo: "historyInfo", styles: "styles" }, outputs: { openFileFromDisk: "openFileFromDisk", addCustomElement: "addCustomElement", saveAs: "saveAs", print: "print", insertPageBreak: "insertPageBreak", createDocument: "createDocument", insertImage: "insertImage", changeMode: "changeMode", renameDocumentTitle: "renameDocumentTitle", delete: "delete", openEditMenu: "openEditMenu", undo: "undo", redo: "redo", cutSelected: "cutSelected", copySelected: "copySelected", pasteClipboardData: "pasteClipboardData", selectAll: "selectAll", removeSelected: "removeSelected", insertLink: "insertLink", createElement: "createElement", changeParagraphStyle: "changeParagraphStyle", changeTextStyle: "changeTextStyle", setNumberingTemplateType: "setNumberingTemplateType", removeNumberings: "removeNumberings", insertTable: "insertTable" }, providers: [ExternalElementService], viewQueries: [{ propertyName: "titleSpan", first: true, predicate: ["titleSpan"], descendants: true, static: true }, { propertyName: "tableInsertMenu", first: true, predicate: ["tableInsert"], descendants: true }], ngImport: i0, template: "<div class=\"menu-header\">\n <div class=\"file-name\">\n <span\n #titleSpan\n class=\"title\"\n matTooltip=\"Double click to rename\"\n (blur)=\"onRenameTitle($event)\"\n (keydown.enter)=\"$event.target.blur()\"\n (dblclick)=\"onFocus($event)\">\n {{ title }}\n </span>\n </div>\n <div class=\"menu-buttons\">\n <button\n id=\"editor-header-menu-file\"\n mat-button\n [matMenuTriggerFor]=\"fileMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n File\n </button>\n <mat-menu #fileMenu=\"matMenu\">\n <button\n *ngIf=\"!isViewOnly\"\n id=\"editor-header-menu-item-new\"\n mat-menu-item\n (click)=\"createDocument.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add-new\"></mat-icon>\n <span class=\"menu-item-text\">New</span>\n </div>\n </button>\n <input\n #fileInput\n class=\"upload-input\"\n accept=\".docx\"\n type=\"file\"\n id=\"file-input\"\n (change)=\"onOpenFileFromDisk($event)\" />\n <button\n *ngIf=\"!isViewOnly\"\n id=\"editor-header-menu-item-open-from\"\n mat-menu-item\n (click)=\"fileInput.click()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-open-from\"></mat-icon>\n <span class=\"menu-item-text\">Open From</span>\n <span class=\"hot-keys\">Ctrl+O</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-save-as\"\n mat-menu-item\n (click)=\"onSaveAs()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-save\"></mat-icon>\n <span class=\"menu-item-text\">Save As</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-rename\"\n mat-menu-item\n (click)=\"onRename()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-rename\"></mat-icon>\n <span class=\"menu-item-text\">Rename</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-print\"\n mat-menu-item\n (click)=\"onPrint()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-print\"></mat-icon>\n <span class=\"menu-item-text\">Print</span>\n <span class=\"hot-keys\">Ctrl+P</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-delete\"\n mat-menu-item\n (click)=\"onDelete()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">Delete</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"editor-header-menu-edit\"\n mat-button\n [matMenuTriggerFor]=\"editMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n (menuOpened)=\"menuOpened()\">\n Edit\n </button>\n <mat-menu #editMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-undo\"\n mat-menu-item\n [disabled]=\"!canUndo\"\n (click)=\"onUndo()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n <span class=\"menu-item-text\">Undo</span>\n <span class=\"hot-keys\">Ctrl+Z</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-redo\"\n mat-menu-item\n [disabled]=\"!canRedo\"\n (click)=\"onRedo()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n <span class=\"menu-item-text\">Redo</span>\n <span class=\"hot-keys\">Ctrl+Y</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-cut\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"onCut()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-content-cut\"></mat-icon>\n <span class=\"menu-item-text\">Cut</span>\n <span class=\"hot-keys\">Ctrl+X</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-copy\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"onCopy()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-file-copy\"></mat-icon>\n <span class=\"menu-item-text\">Copy</span>\n <span class=\"hot-keys\">Ctrl+C</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-paste\"\n mat-menu-item\n [disabled]=\"!clipboardData?.length\"\n (click)=\"onPaste()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-content-paste\"></mat-icon>\n <span class=\"menu-item-text\">Paste</span>\n <span class=\"hot-keys\">Ctrl+V</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-select-all\"\n mat-menu-item\n (click)=\"onSelectAll()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-select-all\"></mat-icon>\n <span class=\"menu-item-text\">Select All</span>\n <span class=\"hot-keys\">Ctrl+A</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-delete-text\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"onRemoveSelected()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">Delete</span>\n </div>\n </button>\n </mat-menu>\n <button\n *ngIf=\"!isViewOnly\"\n #insertMenuTrigger=\"matMenuTrigger\"\n id=\"editor-header-menu-insert\"\n mat-button\n [matMenuTriggerFor]=\"insertMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Insert\n </button>\n <mat-menu #insertMenu=\"matMenu\">\n <input\n #imageFileInput\n class=\"upload-input\"\n accept=\"image/gif, image/jpeg, image/png, image/bmp, image/webp\"\n type=\"file\"\n id=\"image-file-input\"\n (change)=\"onInsertImage($event)\" />\n <button\n id=\"editor-header-menu-item-image\"\n mat-menu-item\n (click)=\"imageFileInput.click()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-image\"></mat-icon>\n <span class=\"menu-item-text\">Image</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-table\"\n mat-menu-item\n [matMenuTriggerFor]=\"tableInsert\"\n (menuOpened)=\"showInsertTableMenu = true\"\n (menuClosed)=\"onTableInsertMenuClosed()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-table\"></mat-icon>\n Table\n </button>\n <button\n id=\"editor-header-menu-item-link\"\n mat-menu-item\n (click)=\"onInsertLink()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-link-on\"></mat-icon>\n <span class=\"menu-item-text\">Link</span>\n <span class=\"hot-keys\">Ctrl+K</span>\n </div>\n </button>\n <button\n *ngFor=\"let element of elements\"\n id=\"editor-header-menu-item-{{ element.title }}\"\n mat-menu-item\n (click)=\"onCreate(element)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n <span class=\"menu-item-text\">{{ element.name }}</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-headers-footers\"\n mat-menu-item\n class=\"hidden\"\n [matMenuTriggerFor]=\"listHeadersFootersMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">Headers & Footers</span>\n </div>\n </button>\n <mat-menu #listHeadersFootersMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-header\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-header\"></mat-icon>\n <span class=\"menu-item-text\">Header</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-footer\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-bottom\"></mat-icon>\n <span class=\"menu-item-text\">Footer</span>\n </div>\n </button>\n </mat-menu>\n </mat-menu>\n <button\n *ngIf=\"!isViewOnly\"\n id=\"editor-header-menu-layout\"\n mat-button\n [matMenuTriggerFor]=\"layoutMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Layout\n </button>\n <mat-menu #layoutMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-page-break\"\n mat-menu-item\n (click)=\"insertPageBreak.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-page-break\"></mat-icon>\n <span class=\"menu-item-text\">Page Break</span>\n <span class=\"hot-keys\">Ctrl+Enter</span>\n </div>\n </button>\n </mat-menu>\n <button\n *ngIf=\"!isViewOnly\"\n id=\"editor-header-menu-format\"\n mat-button\n [matMenuTriggerFor]=\"formatMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Format\n </button>\n <mat-menu #formatMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-align\"\n mat-menu-item\n [matMenuTriggerFor]=\"listAlignMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">Align</span>\n </div>\n </button>\n <mat-menu #listAlignMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-align-left\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Left)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">Left</span>\n <span class=\"hot-keys\">Ctrl+L</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-align-center\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Center)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-aligncenter\"></mat-icon>\n <span class=\"menu-item-text\">Center</span>\n <span class=\"hot-keys\">Ctrl+E</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-align-right\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Right)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignright\"></mat-icon>\n <span class=\"menu-item-text\">Right</span>\n <span class=\"hot-keys\">Ctrl+R</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"editor-header-menu-item-bullets-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletsNumberingMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">Bullets & Numbering</span>\n </div>\n </button>\n <mat-menu #listBulletsNumberingMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-bullets\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">Bullet List Menu</span>\n </div>\n </button>\n <mat-menu\n #listBulletedMenu=\"matMenu\"\n yPosition=\"below\">\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList1)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList1\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList2)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList2\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList3)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList4)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList4\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList5)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList5\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList6)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList6\"></mat-icon>\n </div>\n </mat-menu>\n <button\n id=\"editor-header-menu-item-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listNumberedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-numbered\"></mat-icon>\n <span class=\"menu-item-text\">Numbered List Menu</span>\n </div>\n </button>\n <mat-menu\n #listNumberedMenu=\"matMenu\"\n yPosition=\"below\">\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList1)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList1\"></mat-icon>\n <mat-icon\n svgIcon=\"number-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList2)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList2\"></mat-icon>\n <mat-icon\n svgIcon=\"number-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList3)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList4)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList4\"></mat-icon>\n <mat-icon\n svgIcon=\"number-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList5)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList5\"></mat-icon>\n <mat-icon\n svgIcon=\"number-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList6)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList6\"></mat-icon>\n </div>\n </mat-menu>\n </mat-menu>\n <button\n id=\"editor-header-menu-item-text\"\n mat-menu-item\n [matMenuTriggerFor]=\"listTextMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">Text</span>\n </div>\n </button>\n <mat-menu #listTextMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-bold\"\n mat-menu-item\n (click)=\"onApplyBold()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">Bold</span>\n <span class=\"hot-keys\">Ctrl+B</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-italic\"\n mat-menu-item\n (click)=\"onApplyItalic()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-italic\"></mat-icon>\n <span class=\"menu-item-text\">Italic</span>\n <span class=\"hot-keys\">Ctrl+I</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-underlined\"\n mat-menu-item\n (click)=\"onApplyUnderline()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-underlined\"></mat-icon>\n <span class=\"menu-item-text\">Underlined</span>\n <span class=\"hot-keys\">Ctrl+U</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"editor-header-menu-item-header-footer\"\n mat-menu-item\n class=\"hidden\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">Headers & Footers</span>\n </div>\n </button>\n </mat-menu>\n <mat-menu\n #tableInsert=\"matMenu\"\n class=\"insert-table\">\n <app-insert-table\n *ngIf=\"showInsertTableMenu\"\n (selectSizes)=\"insertTable.emit($event)\" />\n </mat-menu>\n </div>\n</div>\n\n<div class=\"editor-mode\">\n <mat-form-field appearance=\"outline\">\n <mat-select\n [(value)]=\"selectedMode\"\n (selectionChange)=\"changeMode.emit($event)\">\n <mat-select-trigger>\n <div class=\"select-trigger\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ modeOptions[selectedMode].icon }}\"></mat-icon>\n <span class=\"item-title\">{{ modeOptions[selectedMode].name }}</span>\n <div class=\"separator\"></div>\n </div>\n </mat-select-trigger>\n <mat-option\n *ngFor=\"let mode of modeOptions\"\n class=\"editor-mode-option\"\n [value]=\"mode.id\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ mode.icon }}\"></mat-icon>\n <div class=\"item-content\">\n <span class=\"item-title\">{{ mode.name }}</span>\n <span class=\"item-text\">{{ mode.text }}</span>\n </div>\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n", styles: [":host{width:100%;display:flex;align-items:center;justify-content:space-between;padding:8px 24px}:host .mat-mdc-form-field{width:auto;height:24px;text-align:right}:host .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}:host .mat-mdc-form-field ::ng-deep .mat-mdc-text-field-wrapper{align-items:center}:host .mat-mdc-form-field ::ng-deep .mdc-notched-outline>*{border:unset}:host .mat-mdc-form-field ::ng-deep .mat-mdc-select-value{margin-right:4px}:host .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-infix{padding:0;width:auto}:host .mat-mdc-form-field ::ng-deep .mat-mdc-select-arrow svg{top:0}:host .mat-mdc-form-field .mat-mdc-select{font-size:14px;font-weight:700}.upload-input{display:none}mat-icon{width:24px;height:24px;font-size:24px}.editor-mode{display:flex;justify-content:flex-end;align-items:center;overflow:hidden;height:40px;border:1px solid;border-radius:20px}::ng-deep .cdk-overlay-pane{min-width:min-content}.separator{border-left:1px solid;opacity:.1;height:18px;margin:2px 8px}.select-trigger{display:inline-flex;text-align:left;margin-top:1px}.select-trigger .mat-icon{width:32px}.item-content{display:grid}.item-content .item-title{line-height:6px;padding-top:10px}.item-content .item-text{font-size:10px;font-weight:400;text-wrap:nowrap}.menu-buttons{display:flex;flex-wrap:wrap}.menu-buttons button{font-weight:500;height:24px;min-width:unset}.menu-header{display:flex;flex-direction:column;flex:1;overflow:hidden}.file-name{flex-basis:0;margin:0 8px 6px;display:block;min-height:32px;overflow:hidden}.file-name .title{font-size:18px;font-weight:500;line-height:normal;outline:none;display:inline-block;white-space:nowrap;min-width:1px;min-height:32px;overflow:hidden;max-width:100%;-webkit-user-select:none;user-select:none}.file-name .title:not(:focus){text-overflow:ellipsis}.heading-menu{display:inline-flex;width:210px}.hot-keys{text-align:end;width:auto}.menu-item-text{white-space:nowrap;width:64%}.mat-mdc-menu-item .mat-icon{margin-right:4px;width:28px}#editor-header-menu-item-print,#editor-header-menu-item-redo,#editor-header-menu-item-paste,#editor-header-menu-item-link,#editor-header-menu-item-image{border-bottom:1px solid}.hidden{display:none}.list-marker,.list-number{margin:0 5px}.list-marker mat-icon,.list-number mat-icon{width:70px;height:80px;margin:0 5px}.list-marker mat-icon:hover,.list-number mat-icon:hover{border:none}.list-icon .selected,.list-number .selected,.list-icon .selected:hover,.list-number .selected:hover{border:2px solid}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: InsertTableComponent, selector: "app-insert-table", outputs: ["selectSizes"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i7$1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i7$1.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i4$3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MenuDropdownsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: CustomIconService }], target: i0.ɵɵFactoryTarget.Component }); }
13112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: MenuDropdownsComponent, selector: "app-menu-dropdowns", inputs: { isViewOnly: "isViewOnly", hasSelection: "hasSelection", clipboardData: "clipboardData", historyInfo: "historyInfo", styles: "styles" }, outputs: { openFileFromDisk: "openFileFromDisk", addCustomElement: "addCustomElement", saveAs: "saveAs", print: "print", insertPageBreak: "insertPageBreak", createDocument: "createDocument", insertImage: "insertImage", rename: "rename", delete: "delete", openEditMenu: "openEditMenu", redo: "redo", undo: "undo", cutSelected: "cutSelected", copySelected: "copySelected", pasteClipboardData: "pasteClipboardData", selectAll: "selectAll", removeSelected: "removeSelected", insertLink: "insertLink", createElement: "createElement", changeParagraphStyle: "changeParagraphStyle", changeTextStyle: "changeTextStyle", setNumberingTemplateType: "setNumberingTemplateType", removeNumberings: "removeNumberings", insertTable: "insertTable" }, viewQueries: [{ propertyName: "tableInsertMenu", first: true, predicate: ["tableInsert"], descendants: true }], ngImport: i0, template: "<button\n id=\"menu-dropdowns-menu-file\"\n mat-button\n [matMenuTriggerFor]=\"fileMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n File\n</button>\n<mat-menu\n #fileMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n *ngIf=\"!isViewOnly\"\n id=\"menu-dropdowns-menu-item-new\"\n mat-menu-item\n (click)=\"createDocument.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add-new\"></mat-icon>\n <span class=\"menu-item-text\">New</span>\n </div>\n </button>\n <input\n #fileInput\n class=\"upload-input\"\n accept=\".docx\"\n type=\"file\"\n id=\"file-input\"\n (change)=\"onOpenFileFromDisk($event)\" />\n <button\n *ngIf=\"!isViewOnly\"\n id=\"menu-dropdowns-menu-item-open-from\"\n mat-menu-item\n (click)=\"fileInput.click()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-open-from\"></mat-icon>\n <span class=\"menu-item-text\">Open From</span>\n <span class=\"hot-keys\">Ctrl+O</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-save-as\"\n mat-menu-item\n (click)=\"saveAs.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-save\"></mat-icon>\n <span class=\"menu-item-text\">Save As</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-rename\"\n mat-menu-item\n (click)=\"rename.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-rename\"></mat-icon>\n <span class=\"menu-item-text\">Rename</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-print\"\n mat-menu-item\n (click)=\"print.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-print\"></mat-icon>\n <span class=\"menu-item-text\">Print</span>\n <span class=\"hot-keys\">Ctrl+P</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-delete\"\n mat-menu-item\n (click)=\"delete.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">Delete</span>\n </div>\n </button>\n</mat-menu>\n<button\n id=\"menu-dropdowns-menu-edit\"\n mat-button\n [matMenuTriggerFor]=\"editMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n (menuOpened)=\"openEditMenu.emit()\">\n Edit\n</button>\n<mat-menu\n #editMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-undo\"\n mat-menu-item\n [disabled]=\"!canUndo\"\n (click)=\"undo.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n <span class=\"menu-item-text\">Undo</span>\n <span class=\"hot-keys\">Ctrl+Z</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-redo\"\n mat-menu-item\n [disabled]=\"!canRedo\"\n (click)=\"redo.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n <span class=\"menu-item-text\">Redo</span>\n <span class=\"hot-keys\">Ctrl+Y</span>\n </div>\n </button>\n <hr class=\"noder-divider\" />\n <button\n id=\"menu-dropdowns-menu-item-cut\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"cutSelected.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-content-cut\"></mat-icon>\n <span class=\"menu-item-text\">Cut</span>\n <span class=\"hot-keys\">Ctrl+X</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-copy\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"copySelected.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-file-copy\"></mat-icon>\n <span class=\"menu-item-text\">Copy</span>\n <span class=\"hot-keys\">Ctrl+C</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-paste\"\n mat-menu-item\n [disabled]=\"!clipboardData?.length\"\n (click)=\"pasteClipboardData.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-content-paste\"></mat-icon>\n <span class=\"menu-item-text\">Paste</span>\n <span class=\"hot-keys\">Ctrl+V</span>\n </div>\n </button>\n <hr class=\"noder-divider\" />\n <button\n id=\"menu-dropdowns-menu-item-select-all\"\n mat-menu-item\n (click)=\"selectAll.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-select-all\"></mat-icon>\n <span class=\"menu-item-text\">Select All</span>\n <span class=\"hot-keys\">Ctrl+A</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-delete-text\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"removeSelected.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">Delete</span>\n </div>\n </button>\n</mat-menu>\n<button\n *ngIf=\"!isViewOnly\"\n #insertMenuTrigger=\"matMenuTrigger\"\n id=\"menu-dropdowns-menu-insert\"\n mat-button\n [matMenuTriggerFor]=\"insertMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Insert\n</button>\n<mat-menu\n #insertMenu=\"matMenu\"\n class=\"noder-modal\">\n <input\n #imageFileInput\n class=\"upload-input\"\n accept=\"image/gif, image/jpeg, image/png, image/bmp, image/webp\"\n type=\"file\"\n id=\"image-file-input\"\n (change)=\"onInsertImage($event)\" />\n <button\n id=\"menu-dropdowns-menu-item-image\"\n mat-menu-item\n (click)=\"imageFileInput.click()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-image\"></mat-icon>\n <span class=\"menu-item-text\">Image</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-table\"\n mat-menu-item\n [matMenuTriggerFor]=\"tableInsert\"\n (menuOpened)=\"showInsertTableMenu = true\"\n (menuClosed)=\"onTableInsertMenuClosed()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-table\"></mat-icon>\n Table\n </button>\n <hr class=\"noder-divider\" />\n <button\n id=\"menu-dropdowns-menu-item-link\"\n mat-menu-item\n (click)=\"insertLink.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-link-on\"></mat-icon>\n <span class=\"menu-item-text\">Link</span>\n <span class=\"hot-keys\">Ctrl+K</span>\n </div>\n </button>\n <button\n *ngFor=\"let element of elements\"\n id=\"menu-dropdowns-menu-item-{{ element.title }}\"\n mat-menu-item\n (click)=\"onCreate(element)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n <span class=\"menu-item-text\">{{ element.name }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-headers-footers\"\n mat-menu-item\n class=\"hidden\"\n [matMenuTriggerFor]=\"listHeadersFootersMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">Headers & Footers</span>\n </div>\n </button>\n <mat-menu\n #listHeadersFootersMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-header\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-header\"></mat-icon>\n <span class=\"menu-item-text\">Header</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-footer\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-bottom\"></mat-icon>\n <span class=\"menu-item-text\">Footer</span>\n </div>\n </button>\n </mat-menu>\n</mat-menu>\n<button\n *ngIf=\"!isViewOnly\"\n id=\"menu-dropdowns-menu-layout\"\n mat-button\n [matMenuTriggerFor]=\"layoutMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Layout\n</button>\n<mat-menu\n #layoutMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-page-break\"\n mat-menu-item\n (click)=\"insertPageBreak.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-page-break\"></mat-icon>\n <span class=\"menu-item-text\">Page Break</span>\n <span class=\"hot-keys\">Ctrl+Enter</span>\n </div>\n </button>\n</mat-menu>\n<button\n *ngIf=\"!isViewOnly\"\n id=\"menu-dropdowns-menu-format\"\n mat-button\n [matMenuTriggerFor]=\"formatMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Format\n</button>\n<mat-menu\n #formatMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-align\"\n mat-menu-item\n [matMenuTriggerFor]=\"listAlignMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">Align</span>\n </div>\n </button>\n <mat-menu\n #listAlignMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-align-left\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Left)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">Left</span>\n <span class=\"hot-keys\">Ctrl+L</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-align-center\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Center)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-aligncenter\"></mat-icon>\n <span class=\"menu-item-text\">Center</span>\n <span class=\"hot-keys\">Ctrl+E</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-align-right\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Right)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignright\"></mat-icon>\n <span class=\"menu-item-text\">Right</span>\n <span class=\"hot-keys\">Ctrl+R</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-bullets-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletsNumberingMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">Bullets & Numbering</span>\n </div>\n </button>\n <mat-menu\n #listBulletsNumberingMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-bullets\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">Bullet List Menu</span>\n </div>\n </button>\n <mat-menu\n #listBulletedMenu=\"matMenu\"\n class=\"dropdown-numbering-overlay noder-modal\"\n yPosition=\"below\">\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-1\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList1)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-2\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList2)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-3\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList3)\"></mat-icon>\n </div>\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-4\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList4)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-5\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList5)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-6\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList6)\"></mat-icon>\n </div>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listNumberedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-numbered\"></mat-icon>\n <span class=\"menu-item-text\">Numbered List Menu</span>\n </div>\n </button>\n <mat-menu\n #listNumberedMenu=\"matMenu\"\n class=\"dropdown-numbering-overlay noder-modal\"\n yPosition=\"below\">\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-1\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList1)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-2\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList2)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-3\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList3)\"></mat-icon>\n </div>\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-4\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList4)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-5\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList5)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-6\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList6)\"></mat-icon>\n </div>\n </mat-menu>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-text\"\n mat-menu-item\n [matMenuTriggerFor]=\"listTextMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">Text</span>\n </div>\n </button>\n <mat-menu\n #listTextMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-bold\"\n mat-menu-item\n (click)=\"onApplyBold()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">Bold</span>\n <span class=\"hot-keys\">Ctrl+B</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-italic\"\n mat-menu-item\n (click)=\"onApplyItalic()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-italic\"></mat-icon>\n <span class=\"menu-item-text\">Italic</span>\n <span class=\"hot-keys\">Ctrl+I</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-underlined\"\n mat-menu-item\n (click)=\"onApplyUnderline()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-underlined\"></mat-icon>\n <span class=\"menu-item-text\">Underlined</span>\n <span class=\"hot-keys\">Ctrl+U</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-header-footer\"\n mat-menu-item\n class=\"hidden\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">Headers & Footers</span>\n </div>\n </button>\n</mat-menu>\n<mat-menu\n #tableInsert=\"matMenu\"\n class=\"insert-table noder-modal\">\n <app-insert-table\n *ngIf=\"showInsertTableMenu\"\n (selectSizes)=\"insertTable.emit($event)\" />\n</mat-menu>\n", styles: [":host{display:flex;align-items:center;height:100%}.upload-input{display:none}.menu-buttons mat-icon{width:24px;height:24px;font-size:24px}.heading-menu{display:inline-flex;width:210px}.hot-keys{text-align:end;width:auto}.menu-item-text{white-space:nowrap;width:64%}.mat-mdc-menu-item .mat-icon{margin-right:4px;width:28px}.hidden{display:none}.list-marker,.list-number{margin:0 5px}.list-marker mat-icon,.list-number mat-icon{width:70px;height:80px;margin:0 5px}.list-marker mat-icon:hover,.list-number mat-icon:hover{border:none}.list-icon .selected,.list-icon .selected:hover,.list-number .selected,.list-number .selected:hover{border-width:2px;border-style:solid}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InsertTableComponent, selector: "app-insert-table", outputs: ["selectSizes"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13104
13113
  }
13105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorHeaderComponent, decorators: [{
13114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MenuDropdownsComponent, decorators: [{
13106
13115
  type: Component,
13107
- args: [{ standalone: true, imports: [
13108
- CommonModule,
13109
- FormsModule,
13110
- InsertTableComponent,
13111
- MatButtonModule,
13112
- MatFormFieldModule,
13113
- MatIconModule,
13114
- MatInputModule,
13115
- MatMenuModule,
13116
- MatSelectModule,
13117
- MatTooltipModule
13118
- ], providers: [ExternalElementService], selector: 'app-editor-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"menu-header\">\n <div class=\"file-name\">\n <span\n #titleSpan\n class=\"title\"\n matTooltip=\"Double click to rename\"\n (blur)=\"onRenameTitle($event)\"\n (keydown.enter)=\"$event.target.blur()\"\n (dblclick)=\"onFocus($event)\">\n {{ title }}\n </span>\n </div>\n <div class=\"menu-buttons\">\n <button\n id=\"editor-header-menu-file\"\n mat-button\n [matMenuTriggerFor]=\"fileMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n File\n </button>\n <mat-menu #fileMenu=\"matMenu\">\n <button\n *ngIf=\"!isViewOnly\"\n id=\"editor-header-menu-item-new\"\n mat-menu-item\n (click)=\"createDocument.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add-new\"></mat-icon>\n <span class=\"menu-item-text\">New</span>\n </div>\n </button>\n <input\n #fileInput\n class=\"upload-input\"\n accept=\".docx\"\n type=\"file\"\n id=\"file-input\"\n (change)=\"onOpenFileFromDisk($event)\" />\n <button\n *ngIf=\"!isViewOnly\"\n id=\"editor-header-menu-item-open-from\"\n mat-menu-item\n (click)=\"fileInput.click()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-open-from\"></mat-icon>\n <span class=\"menu-item-text\">Open From</span>\n <span class=\"hot-keys\">Ctrl+O</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-save-as\"\n mat-menu-item\n (click)=\"onSaveAs()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-save\"></mat-icon>\n <span class=\"menu-item-text\">Save As</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-rename\"\n mat-menu-item\n (click)=\"onRename()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-rename\"></mat-icon>\n <span class=\"menu-item-text\">Rename</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-print\"\n mat-menu-item\n (click)=\"onPrint()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-print\"></mat-icon>\n <span class=\"menu-item-text\">Print</span>\n <span class=\"hot-keys\">Ctrl+P</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-delete\"\n mat-menu-item\n (click)=\"onDelete()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">Delete</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"editor-header-menu-edit\"\n mat-button\n [matMenuTriggerFor]=\"editMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n (menuOpened)=\"menuOpened()\">\n Edit\n </button>\n <mat-menu #editMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-undo\"\n mat-menu-item\n [disabled]=\"!canUndo\"\n (click)=\"onUndo()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n <span class=\"menu-item-text\">Undo</span>\n <span class=\"hot-keys\">Ctrl+Z</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-redo\"\n mat-menu-item\n [disabled]=\"!canRedo\"\n (click)=\"onRedo()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n <span class=\"menu-item-text\">Redo</span>\n <span class=\"hot-keys\">Ctrl+Y</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-cut\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"onCut()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-content-cut\"></mat-icon>\n <span class=\"menu-item-text\">Cut</span>\n <span class=\"hot-keys\">Ctrl+X</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-copy\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"onCopy()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-file-copy\"></mat-icon>\n <span class=\"menu-item-text\">Copy</span>\n <span class=\"hot-keys\">Ctrl+C</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-paste\"\n mat-menu-item\n [disabled]=\"!clipboardData?.length\"\n (click)=\"onPaste()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-content-paste\"></mat-icon>\n <span class=\"menu-item-text\">Paste</span>\n <span class=\"hot-keys\">Ctrl+V</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-select-all\"\n mat-menu-item\n (click)=\"onSelectAll()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-select-all\"></mat-icon>\n <span class=\"menu-item-text\">Select All</span>\n <span class=\"hot-keys\">Ctrl+A</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-delete-text\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"onRemoveSelected()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">Delete</span>\n </div>\n </button>\n </mat-menu>\n <button\n *ngIf=\"!isViewOnly\"\n #insertMenuTrigger=\"matMenuTrigger\"\n id=\"editor-header-menu-insert\"\n mat-button\n [matMenuTriggerFor]=\"insertMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Insert\n </button>\n <mat-menu #insertMenu=\"matMenu\">\n <input\n #imageFileInput\n class=\"upload-input\"\n accept=\"image/gif, image/jpeg, image/png, image/bmp, image/webp\"\n type=\"file\"\n id=\"image-file-input\"\n (change)=\"onInsertImage($event)\" />\n <button\n id=\"editor-header-menu-item-image\"\n mat-menu-item\n (click)=\"imageFileInput.click()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-image\"></mat-icon>\n <span class=\"menu-item-text\">Image</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-table\"\n mat-menu-item\n [matMenuTriggerFor]=\"tableInsert\"\n (menuOpened)=\"showInsertTableMenu = true\"\n (menuClosed)=\"onTableInsertMenuClosed()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-table\"></mat-icon>\n Table\n </button>\n <button\n id=\"editor-header-menu-item-link\"\n mat-menu-item\n (click)=\"onInsertLink()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-link-on\"></mat-icon>\n <span class=\"menu-item-text\">Link</span>\n <span class=\"hot-keys\">Ctrl+K</span>\n </div>\n </button>\n <button\n *ngFor=\"let element of elements\"\n id=\"editor-header-menu-item-{{ element.title }}\"\n mat-menu-item\n (click)=\"onCreate(element)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n <span class=\"menu-item-text\">{{ element.name }}</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-headers-footers\"\n mat-menu-item\n class=\"hidden\"\n [matMenuTriggerFor]=\"listHeadersFootersMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">Headers & Footers</span>\n </div>\n </button>\n <mat-menu #listHeadersFootersMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-header\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-header\"></mat-icon>\n <span class=\"menu-item-text\">Header</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-footer\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-bottom\"></mat-icon>\n <span class=\"menu-item-text\">Footer</span>\n </div>\n </button>\n </mat-menu>\n </mat-menu>\n <button\n *ngIf=\"!isViewOnly\"\n id=\"editor-header-menu-layout\"\n mat-button\n [matMenuTriggerFor]=\"layoutMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Layout\n </button>\n <mat-menu #layoutMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-page-break\"\n mat-menu-item\n (click)=\"insertPageBreak.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-page-break\"></mat-icon>\n <span class=\"menu-item-text\">Page Break</span>\n <span class=\"hot-keys\">Ctrl+Enter</span>\n </div>\n </button>\n </mat-menu>\n <button\n *ngIf=\"!isViewOnly\"\n id=\"editor-header-menu-format\"\n mat-button\n [matMenuTriggerFor]=\"formatMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Format\n </button>\n <mat-menu #formatMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-align\"\n mat-menu-item\n [matMenuTriggerFor]=\"listAlignMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">Align</span>\n </div>\n </button>\n <mat-menu #listAlignMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-align-left\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Left)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">Left</span>\n <span class=\"hot-keys\">Ctrl+L</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-align-center\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Center)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-aligncenter\"></mat-icon>\n <span class=\"menu-item-text\">Center</span>\n <span class=\"hot-keys\">Ctrl+E</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-align-right\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Right)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignright\"></mat-icon>\n <span class=\"menu-item-text\">Right</span>\n <span class=\"hot-keys\">Ctrl+R</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"editor-header-menu-item-bullets-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletsNumberingMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">Bullets & Numbering</span>\n </div>\n </button>\n <mat-menu #listBulletsNumberingMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-bullets\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">Bullet List Menu</span>\n </div>\n </button>\n <mat-menu\n #listBulletedMenu=\"matMenu\"\n yPosition=\"below\">\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList1)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList1\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList2)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList2\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList3)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList4)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList4\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList5)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList5\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList6)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList6\"></mat-icon>\n </div>\n </mat-menu>\n <button\n id=\"editor-header-menu-item-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listNumberedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-numbered\"></mat-icon>\n <span class=\"menu-item-text\">Numbered List Menu</span>\n </div>\n </button>\n <mat-menu\n #listNumberedMenu=\"matMenu\"\n yPosition=\"below\">\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList1)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList1\"></mat-icon>\n <mat-icon\n svgIcon=\"number-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList2)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList2\"></mat-icon>\n <mat-icon\n svgIcon=\"number-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList3)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList4)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList4\"></mat-icon>\n <mat-icon\n svgIcon=\"number-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList5)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList5\"></mat-icon>\n <mat-icon\n svgIcon=\"number-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList6)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList6\"></mat-icon>\n </div>\n </mat-menu>\n </mat-menu>\n <button\n id=\"editor-header-menu-item-text\"\n mat-menu-item\n [matMenuTriggerFor]=\"listTextMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">Text</span>\n </div>\n </button>\n <mat-menu #listTextMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-bold\"\n mat-menu-item\n (click)=\"onApplyBold()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">Bold</span>\n <span class=\"hot-keys\">Ctrl+B</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-italic\"\n mat-menu-item\n (click)=\"onApplyItalic()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-italic\"></mat-icon>\n <span class=\"menu-item-text\">Italic</span>\n <span class=\"hot-keys\">Ctrl+I</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-underlined\"\n mat-menu-item\n (click)=\"onApplyUnderline()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-underlined\"></mat-icon>\n <span class=\"menu-item-text\">Underlined</span>\n <span class=\"hot-keys\">Ctrl+U</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"editor-header-menu-item-header-footer\"\n mat-menu-item\n class=\"hidden\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">Headers & Footers</span>\n </div>\n </button>\n </mat-menu>\n <mat-menu\n #tableInsert=\"matMenu\"\n class=\"insert-table\">\n <app-insert-table\n *ngIf=\"showInsertTableMenu\"\n (selectSizes)=\"insertTable.emit($event)\" />\n </mat-menu>\n </div>\n</div>\n\n<div class=\"editor-mode\">\n <mat-form-field appearance=\"outline\">\n <mat-select\n [(value)]=\"selectedMode\"\n (selectionChange)=\"changeMode.emit($event)\">\n <mat-select-trigger>\n <div class=\"select-trigger\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ modeOptions[selectedMode].icon }}\"></mat-icon>\n <span class=\"item-title\">{{ modeOptions[selectedMode].name }}</span>\n <div class=\"separator\"></div>\n </div>\n </mat-select-trigger>\n <mat-option\n *ngFor=\"let mode of modeOptions\"\n class=\"editor-mode-option\"\n [value]=\"mode.id\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ mode.icon }}\"></mat-icon>\n <div class=\"item-content\">\n <span class=\"item-title\">{{ mode.name }}</span>\n <span class=\"item-text\">{{ mode.text }}</span>\n </div>\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n", styles: [":host{width:100%;display:flex;align-items:center;justify-content:space-between;padding:8px 24px}:host .mat-mdc-form-field{width:auto;height:24px;text-align:right}:host .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}:host .mat-mdc-form-field ::ng-deep .mat-mdc-text-field-wrapper{align-items:center}:host .mat-mdc-form-field ::ng-deep .mdc-notched-outline>*{border:unset}:host .mat-mdc-form-field ::ng-deep .mat-mdc-select-value{margin-right:4px}:host .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-infix{padding:0;width:auto}:host .mat-mdc-form-field ::ng-deep .mat-mdc-select-arrow svg{top:0}:host .mat-mdc-form-field .mat-mdc-select{font-size:14px;font-weight:700}.upload-input{display:none}mat-icon{width:24px;height:24px;font-size:24px}.editor-mode{display:flex;justify-content:flex-end;align-items:center;overflow:hidden;height:40px;border:1px solid;border-radius:20px}::ng-deep .cdk-overlay-pane{min-width:min-content}.separator{border-left:1px solid;opacity:.1;height:18px;margin:2px 8px}.select-trigger{display:inline-flex;text-align:left;margin-top:1px}.select-trigger .mat-icon{width:32px}.item-content{display:grid}.item-content .item-title{line-height:6px;padding-top:10px}.item-content .item-text{font-size:10px;font-weight:400;text-wrap:nowrap}.menu-buttons{display:flex;flex-wrap:wrap}.menu-buttons button{font-weight:500;height:24px;min-width:unset}.menu-header{display:flex;flex-direction:column;flex:1;overflow:hidden}.file-name{flex-basis:0;margin:0 8px 6px;display:block;min-height:32px;overflow:hidden}.file-name .title{font-size:18px;font-weight:500;line-height:normal;outline:none;display:inline-block;white-space:nowrap;min-width:1px;min-height:32px;overflow:hidden;max-width:100%;-webkit-user-select:none;user-select:none}.file-name .title:not(:focus){text-overflow:ellipsis}.heading-menu{display:inline-flex;width:210px}.hot-keys{text-align:end;width:auto}.menu-item-text{white-space:nowrap;width:64%}.mat-mdc-menu-item .mat-icon{margin-right:4px;width:28px}#editor-header-menu-item-print,#editor-header-menu-item-redo,#editor-header-menu-item-paste,#editor-header-menu-item-link,#editor-header-menu-item-image{border-bottom:1px solid}.hidden{display:none}.list-marker,.list-number{margin:0 5px}.list-marker mat-icon,.list-number mat-icon{width:70px;height:80px;margin:0 5px}.list-marker mat-icon:hover,.list-number mat-icon:hover{border:none}.list-icon .selected,.list-number .selected,.list-icon .selected:hover,.list-number .selected:hover{border:2px solid}\n"] }]
13116
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-menu-dropdowns', template: "<button\n id=\"menu-dropdowns-menu-file\"\n mat-button\n [matMenuTriggerFor]=\"fileMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n File\n</button>\n<mat-menu\n #fileMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n *ngIf=\"!isViewOnly\"\n id=\"menu-dropdowns-menu-item-new\"\n mat-menu-item\n (click)=\"createDocument.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add-new\"></mat-icon>\n <span class=\"menu-item-text\">New</span>\n </div>\n </button>\n <input\n #fileInput\n class=\"upload-input\"\n accept=\".docx\"\n type=\"file\"\n id=\"file-input\"\n (change)=\"onOpenFileFromDisk($event)\" />\n <button\n *ngIf=\"!isViewOnly\"\n id=\"menu-dropdowns-menu-item-open-from\"\n mat-menu-item\n (click)=\"fileInput.click()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-open-from\"></mat-icon>\n <span class=\"menu-item-text\">Open From</span>\n <span class=\"hot-keys\">Ctrl+O</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-save-as\"\n mat-menu-item\n (click)=\"saveAs.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-save\"></mat-icon>\n <span class=\"menu-item-text\">Save As</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-rename\"\n mat-menu-item\n (click)=\"rename.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-rename\"></mat-icon>\n <span class=\"menu-item-text\">Rename</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-print\"\n mat-menu-item\n (click)=\"print.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-print\"></mat-icon>\n <span class=\"menu-item-text\">Print</span>\n <span class=\"hot-keys\">Ctrl+P</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-delete\"\n mat-menu-item\n (click)=\"delete.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">Delete</span>\n </div>\n </button>\n</mat-menu>\n<button\n id=\"menu-dropdowns-menu-edit\"\n mat-button\n [matMenuTriggerFor]=\"editMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n (menuOpened)=\"openEditMenu.emit()\">\n Edit\n</button>\n<mat-menu\n #editMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-undo\"\n mat-menu-item\n [disabled]=\"!canUndo\"\n (click)=\"undo.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n <span class=\"menu-item-text\">Undo</span>\n <span class=\"hot-keys\">Ctrl+Z</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-redo\"\n mat-menu-item\n [disabled]=\"!canRedo\"\n (click)=\"redo.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n <span class=\"menu-item-text\">Redo</span>\n <span class=\"hot-keys\">Ctrl+Y</span>\n </div>\n </button>\n <hr class=\"noder-divider\" />\n <button\n id=\"menu-dropdowns-menu-item-cut\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"cutSelected.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-content-cut\"></mat-icon>\n <span class=\"menu-item-text\">Cut</span>\n <span class=\"hot-keys\">Ctrl+X</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-copy\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"copySelected.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-file-copy\"></mat-icon>\n <span class=\"menu-item-text\">Copy</span>\n <span class=\"hot-keys\">Ctrl+C</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-paste\"\n mat-menu-item\n [disabled]=\"!clipboardData?.length\"\n (click)=\"pasteClipboardData.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-content-paste\"></mat-icon>\n <span class=\"menu-item-text\">Paste</span>\n <span class=\"hot-keys\">Ctrl+V</span>\n </div>\n </button>\n <hr class=\"noder-divider\" />\n <button\n id=\"menu-dropdowns-menu-item-select-all\"\n mat-menu-item\n (click)=\"selectAll.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-select-all\"></mat-icon>\n <span class=\"menu-item-text\">Select All</span>\n <span class=\"hot-keys\">Ctrl+A</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-delete-text\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"removeSelected.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">Delete</span>\n </div>\n </button>\n</mat-menu>\n<button\n *ngIf=\"!isViewOnly\"\n #insertMenuTrigger=\"matMenuTrigger\"\n id=\"menu-dropdowns-menu-insert\"\n mat-button\n [matMenuTriggerFor]=\"insertMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Insert\n</button>\n<mat-menu\n #insertMenu=\"matMenu\"\n class=\"noder-modal\">\n <input\n #imageFileInput\n class=\"upload-input\"\n accept=\"image/gif, image/jpeg, image/png, image/bmp, image/webp\"\n type=\"file\"\n id=\"image-file-input\"\n (change)=\"onInsertImage($event)\" />\n <button\n id=\"menu-dropdowns-menu-item-image\"\n mat-menu-item\n (click)=\"imageFileInput.click()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-image\"></mat-icon>\n <span class=\"menu-item-text\">Image</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-table\"\n mat-menu-item\n [matMenuTriggerFor]=\"tableInsert\"\n (menuOpened)=\"showInsertTableMenu = true\"\n (menuClosed)=\"onTableInsertMenuClosed()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-table\"></mat-icon>\n Table\n </button>\n <hr class=\"noder-divider\" />\n <button\n id=\"menu-dropdowns-menu-item-link\"\n mat-menu-item\n (click)=\"insertLink.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-link-on\"></mat-icon>\n <span class=\"menu-item-text\">Link</span>\n <span class=\"hot-keys\">Ctrl+K</span>\n </div>\n </button>\n <button\n *ngFor=\"let element of elements\"\n id=\"menu-dropdowns-menu-item-{{ element.title }}\"\n mat-menu-item\n (click)=\"onCreate(element)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n <span class=\"menu-item-text\">{{ element.name }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-headers-footers\"\n mat-menu-item\n class=\"hidden\"\n [matMenuTriggerFor]=\"listHeadersFootersMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">Headers & Footers</span>\n </div>\n </button>\n <mat-menu\n #listHeadersFootersMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-header\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-header\"></mat-icon>\n <span class=\"menu-item-text\">Header</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-footer\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-bottom\"></mat-icon>\n <span class=\"menu-item-text\">Footer</span>\n </div>\n </button>\n </mat-menu>\n</mat-menu>\n<button\n *ngIf=\"!isViewOnly\"\n id=\"menu-dropdowns-menu-layout\"\n mat-button\n [matMenuTriggerFor]=\"layoutMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Layout\n</button>\n<mat-menu\n #layoutMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-page-break\"\n mat-menu-item\n (click)=\"insertPageBreak.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-page-break\"></mat-icon>\n <span class=\"menu-item-text\">Page Break</span>\n <span class=\"hot-keys\">Ctrl+Enter</span>\n </div>\n </button>\n</mat-menu>\n<button\n *ngIf=\"!isViewOnly\"\n id=\"menu-dropdowns-menu-format\"\n mat-button\n [matMenuTriggerFor]=\"formatMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Format\n</button>\n<mat-menu\n #formatMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-align\"\n mat-menu-item\n [matMenuTriggerFor]=\"listAlignMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">Align</span>\n </div>\n </button>\n <mat-menu\n #listAlignMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-align-left\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Left)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">Left</span>\n <span class=\"hot-keys\">Ctrl+L</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-align-center\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Center)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-aligncenter\"></mat-icon>\n <span class=\"menu-item-text\">Center</span>\n <span class=\"hot-keys\">Ctrl+E</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-align-right\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Right)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignright\"></mat-icon>\n <span class=\"menu-item-text\">Right</span>\n <span class=\"hot-keys\">Ctrl+R</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-bullets-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletsNumberingMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">Bullets & Numbering</span>\n </div>\n </button>\n <mat-menu\n #listBulletsNumberingMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-bullets\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">Bullet List Menu</span>\n </div>\n </button>\n <mat-menu\n #listBulletedMenu=\"matMenu\"\n class=\"dropdown-numbering-overlay noder-modal\"\n yPosition=\"below\">\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-1\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList1)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-2\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList2)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-3\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList3)\"></mat-icon>\n </div>\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-4\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList4)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-5\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList5)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-6\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList6)\"></mat-icon>\n </div>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listNumberedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-numbered\"></mat-icon>\n <span class=\"menu-item-text\">Numbered List Menu</span>\n </div>\n </button>\n <mat-menu\n #listNumberedMenu=\"matMenu\"\n class=\"dropdown-numbering-overlay noder-modal\"\n yPosition=\"below\">\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-1\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList1)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-2\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList2)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-3\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList3)\"></mat-icon>\n </div>\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-4\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList4)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-5\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList5)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-6\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList6)\"></mat-icon>\n </div>\n </mat-menu>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-text\"\n mat-menu-item\n [matMenuTriggerFor]=\"listTextMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">Text</span>\n </div>\n </button>\n <mat-menu\n #listTextMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-bold\"\n mat-menu-item\n (click)=\"onApplyBold()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">Bold</span>\n <span class=\"hot-keys\">Ctrl+B</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-italic\"\n mat-menu-item\n (click)=\"onApplyItalic()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-italic\"></mat-icon>\n <span class=\"menu-item-text\">Italic</span>\n <span class=\"hot-keys\">Ctrl+I</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-underlined\"\n mat-menu-item\n (click)=\"onApplyUnderline()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-underlined\"></mat-icon>\n <span class=\"menu-item-text\">Underlined</span>\n <span class=\"hot-keys\">Ctrl+U</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-header-footer\"\n mat-menu-item\n class=\"hidden\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">Headers & Footers</span>\n </div>\n </button>\n</mat-menu>\n<mat-menu\n #tableInsert=\"matMenu\"\n class=\"insert-table noder-modal\">\n <app-insert-table\n *ngIf=\"showInsertTableMenu\"\n (selectSizes)=\"insertTable.emit($event)\" />\n</mat-menu>\n", styles: [":host{display:flex;align-items:center;height:100%}.upload-input{display:none}.menu-buttons mat-icon{width:24px;height:24px;font-size:24px}.heading-menu{display:inline-flex;width:210px}.hot-keys{text-align:end;width:auto}.menu-item-text{white-space:nowrap;width:64%}.mat-mdc-menu-item .mat-icon{margin-right:4px;width:28px}.hidden{display:none}.list-marker,.list-number{margin:0 5px}.list-marker mat-icon,.list-number mat-icon{width:70px;height:80px;margin:0 5px}.list-marker mat-icon:hover,.list-number mat-icon:hover{border:none}.list-icon .selected,.list-icon .selected:hover,.list-number .selected,.list-number .selected:hover{border-width:2px;border-style:solid}\n"] }]
13119
13117
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: CustomIconService }], propDecorators: { isViewOnly: [{
13120
13118
  type: Input
13121
13119
  }], hasSelection: [{
13122
13120
  type: Input
13123
13121
  }], clipboardData: [{
13124
13122
  type: Input
13125
- }], title: [{
13126
- type: Input
13127
13123
  }], historyInfo: [{
13128
13124
  type: Input
13125
+ }], styles: [{
13126
+ type: Input
13129
13127
  }], openFileFromDisk: [{
13130
13128
  type: Output
13131
13129
  }], addCustomElement: [{
@@ -13140,18 +13138,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
13140
13138
  type: Output
13141
13139
  }], insertImage: [{
13142
13140
  type: Output
13143
- }], changeMode: [{
13144
- type: Output
13145
- }], renameDocumentTitle: [{
13141
+ }], rename: [{
13146
13142
  type: Output
13147
13143
  }], delete: [{
13148
13144
  type: Output
13149
13145
  }], openEditMenu: [{
13150
13146
  type: Output
13151
- }], undo: [{
13152
- type: Output
13153
13147
  }], redo: [{
13154
13148
  type: Output
13149
+ }], undo: [{
13150
+ type: Output
13155
13151
  }], cutSelected: [{
13156
13152
  type: Output
13157
13153
  }], copySelected: [{
@@ -13174,11 +13170,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
13174
13170
  type: Output
13175
13171
  }], removeNumberings: [{
13176
13172
  type: Output
13177
- }], titleSpan: [{
13178
- type: ViewChild,
13179
- args: ['titleSpan', { static: true }]
13180
- }], styles: [{
13181
- type: Input
13182
13173
  }], insertTable: [{
13183
13174
  type: Output
13184
13175
  }], tableInsertMenu: [{
@@ -13186,58 +13177,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
13186
13177
  args: ['tableInsert']
13187
13178
  }] } });
13188
13179
 
13189
- class EditorSearchDialogComponent extends ObserverComponent {
13190
- constructor(editorService) {
13191
- super();
13192
- this.editorService = editorService;
13193
- this.searchControl = new FormControl('');
13194
- this.replaceControl = new FormControl('');
13195
- this.isReplace = false;
13196
- this.searchIteration$ = this.editorService.searchIteration$;
13197
- }
13198
- ngOnInit() {
13199
- this.subscriptions.push(this.searchSubscription());
13200
- }
13201
- onClose() {
13202
- this.editorService.openSearchDialog = false;
13203
- }
13204
- findNext() {
13205
- this.editorService.searchOptions = {
13206
- term: this.searchControl.value,
13207
- skipCurrent: true,
13208
- backwards: false
13209
- };
13210
- }
13211
- findPrev() {
13212
- this.editorService.searchOptions = {
13213
- term: this.searchControl.value,
13214
- skipCurrent: true,
13215
- backwards: true
13216
- };
13217
- }
13218
- setReplace() {
13219
- this.isReplace = !this.isReplace;
13220
- }
13221
- replace() {
13222
- this.editorService.replace = { replaceValue: this.replaceControl.value, searchValue: this.searchControl.value };
13223
- }
13224
- searchSubscription() {
13225
- return this.searchControl.valueChanges.pipe(debounceTime(300), distinctUntilChanged()).subscribe(() => {
13226
- this.editorService.searchOptions = {
13227
- term: this.searchControl.value,
13228
- skipCurrent: false,
13229
- backwards: false
13230
- };
13231
- });
13232
- }
13233
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorSearchDialogComponent, deps: [{ token: EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
13234
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: EditorSearchDialogComponent, isStandalone: true, selector: "app-editor-search-dialog", providers: [ExternalElementService], usesInheritance: true, ngImport: i0, template: "<div class=\"line search-form\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Search for</mat-label>\n <input\n matInput\n [formControl]=\"searchControl\"\n (keydown.enter)=\"findNext()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findPrev()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-onleft\"></mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findNext()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-onright\"></mat-icon>\n </button>\n</div>\n<ng-container *ngIf=\"{ searchIteration: searchIteration$ | async } as data\">\n <div\n class=\"replace-form\"\n *ngIf=\"isReplace\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Replace with</mat-label>\n <input\n matInput\n [formControl]=\"replaceControl\"\n spellcheck=\"false\"\n autocomplete=\"off\"\n (keydown.enter)=\"replace()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-button\n (click)=\"replace()\">\n Replace\n </button>\n </div>\n <div class=\"search-options\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Toggle Replace Mode\"\n (click)=\"setReplace()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ isReplace ? 'icon-arrow-up' : 'icon-arrow-down' }}\"></mat-icon>\n </button>\n <div class=\"counter\">\n <span>{{ data.searchIteration?.current ?? 0 }} of {{ data.searchIteration?.total ?? 0 }}</span>\n </div>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Close\"\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n </button>\n </div>\n</ng-container>\n", styles: [":host{min-height:56px;max-width:100%;display:block;font-size:10px;padding:3px}.close-icon{position:absolute;right:1px;top:1px}.search-form,.replace-form,.search-options{display:flex}mat-form-field{padding-left:10px}.mdc-button{font-size:12px;padding:0 8px;min-width:unset}.search-options{line-height:40px}.search-options .counter{text-align:center;flex:1}.mat-mdc-input-element{font-size:10px}.replace-form .mdc-button{width:80px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13235
- }
13236
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorSearchDialogComponent, decorators: [{
13237
- type: Component,
13238
- args: [{ standalone: true, imports: [CommonModule, FormsModule, MatButtonModule, MatIconModule, MatInputModule, MatTooltipModule, ReactiveFormsModule], providers: [ExternalElementService], changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-editor-search-dialog', template: "<div class=\"line search-form\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Search for</mat-label>\n <input\n matInput\n [formControl]=\"searchControl\"\n (keydown.enter)=\"findNext()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findPrev()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-onleft\"></mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findNext()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-onright\"></mat-icon>\n </button>\n</div>\n<ng-container *ngIf=\"{ searchIteration: searchIteration$ | async } as data\">\n <div\n class=\"replace-form\"\n *ngIf=\"isReplace\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Replace with</mat-label>\n <input\n matInput\n [formControl]=\"replaceControl\"\n spellcheck=\"false\"\n autocomplete=\"off\"\n (keydown.enter)=\"replace()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-button\n (click)=\"replace()\">\n Replace\n </button>\n </div>\n <div class=\"search-options\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Toggle Replace Mode\"\n (click)=\"setReplace()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ isReplace ? 'icon-arrow-up' : 'icon-arrow-down' }}\"></mat-icon>\n </button>\n <div class=\"counter\">\n <span>{{ data.searchIteration?.current ?? 0 }} of {{ data.searchIteration?.total ?? 0 }}</span>\n </div>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Close\"\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n </button>\n </div>\n</ng-container>\n", styles: [":host{min-height:56px;max-width:100%;display:block;font-size:10px;padding:3px}.close-icon{position:absolute;right:1px;top:1px}.search-form,.replace-form,.search-options{display:flex}mat-form-field{padding-left:10px}.mdc-button{font-size:12px;padding:0 8px;min-width:unset}.search-options{line-height:40px}.search-options .counter{text-align:center;flex:1}.mat-mdc-input-element{font-size:10px}.replace-form .mdc-button{width:80px}\n"] }]
13239
- }], ctorParameters: () => [{ type: EditorService }] });
13240
-
13241
13180
  class FontComponent {
13242
13181
  constructor() {
13243
13182
  this.isDisabled = false;
@@ -13263,11 +13202,11 @@ class FontComponent {
13263
13202
  this.selectFont.emit(font);
13264
13203
  }
13265
13204
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FontComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13266
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: FontComponent, selector: "app-font", inputs: { isDisabled: "isDisabled", styles: "styles" }, outputs: { selectFont: "selectFont" }, ngImport: i0, template: "<button\n mat-button\n [matMenuTriggerFor]=\"fontMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n <div class=\"font-menu\">\n <span>{{ font }}</span>\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </div>\n</button>\n<mat-menu #fontMenu=\"matMenu\">\n <ng-container *ngFor=\"let font of fonts\">\n <button\n mat-menu-item\n [disabled]=\"isDisabled\"\n (click)=\"onSelectFont(font)\">\n {{ font }}\n </button>\n </ng-container>\n</mat-menu>\n", styles: [":host{display:flex;align-items:center}:host button{height:28px;margin:0 4px}.font-menu{display:flex;justify-content:space-between;align-items:center;min-width:130px}span{padding-left:10%}mat-icon{margin-right:5%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13205
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: FontComponent, selector: "app-font", inputs: { isDisabled: "isDisabled", styles: "styles" }, outputs: { selectFont: "selectFont" }, ngImport: i0, template: "<button\n mat-button\n [matMenuTriggerFor]=\"fontMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n <div class=\"font-menu\">\n <span>{{ font }}</span>\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </div>\n</button>\n<mat-menu\n #fontMenu=\"matMenu\"\n class=\"noder-modal\">\n <ng-container *ngFor=\"let font of fonts\">\n <button\n mat-menu-item\n [disabled]=\"isDisabled\"\n (click)=\"onSelectFont(font)\">\n {{ font }}\n </button>\n </ng-container>\n</mat-menu>\n", styles: [".font-menu{display:flex;justify-content:space-between;align-items:center;min-width:130px}span{padding-left:10%}button{height:28px;margin:0 4px}mat-icon{margin-right:5%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13267
13206
  }
13268
13207
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FontComponent, decorators: [{
13269
13208
  type: Component,
13270
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-font', template: "<button\n mat-button\n [matMenuTriggerFor]=\"fontMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n <div class=\"font-menu\">\n <span>{{ font }}</span>\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </div>\n</button>\n<mat-menu #fontMenu=\"matMenu\">\n <ng-container *ngFor=\"let font of fonts\">\n <button\n mat-menu-item\n [disabled]=\"isDisabled\"\n (click)=\"onSelectFont(font)\">\n {{ font }}\n </button>\n </ng-container>\n</mat-menu>\n", styles: [":host{display:flex;align-items:center}:host button{height:28px;margin:0 4px}.font-menu{display:flex;justify-content:space-between;align-items:center;min-width:130px}span{padding-left:10%}mat-icon{margin-right:5%}\n"] }]
13209
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-font', template: "<button\n mat-button\n [matMenuTriggerFor]=\"fontMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n <div class=\"font-menu\">\n <span>{{ font }}</span>\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </div>\n</button>\n<mat-menu\n #fontMenu=\"matMenu\"\n class=\"noder-modal\">\n <ng-container *ngFor=\"let font of fonts\">\n <button\n mat-menu-item\n [disabled]=\"isDisabled\"\n (click)=\"onSelectFont(font)\">\n {{ font }}\n </button>\n </ng-container>\n</mat-menu>\n", styles: [".font-menu{display:flex;justify-content:space-between;align-items:center;min-width:130px}span{padding-left:10%}button{height:28px;margin:0 4px}mat-icon{margin-right:5%}\n"] }]
13271
13210
  }], propDecorators: { isDisabled: [{
13272
13211
  type: Input
13273
13212
  }], styles: [{
@@ -13335,11 +13274,11 @@ class FontSizeComponent {
13335
13274
  }
13336
13275
  }
13337
13276
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FontSizeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13338
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: FontSizeComponent, selector: "app-font-size", inputs: { isDisabled: "isDisabled", fontSize: "fontSize" }, outputs: { selectFontSize: "selectFontSize" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: ["auto"], descendants: true }], ngImport: i0, template: "<button\n mat-button\n [disabled]=\"!fontSize || isDisabled\"\n (click)=\"onDecrementFontSize()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-remove\"></mat-icon>\n</button>\n<input\n type=\"text\"\n [formControl]=\"fontSizeControl\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"onSetFontSize()\"\n (blur)=\"resetFontSize()\" />\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n panelWidth=\"60\"\n disableRipple=\"false\"\n hideSingleSelectionIndicator=\"true\">\n <mat-option\n *ngFor=\"let fontSize of fontSizes\"\n [value]=\"fontSize\"\n (click)=\"onSelectFontSize(fontSize)\">\n {{ fontSize }}\n </mat-option>\n</mat-autocomplete>\n<button\n mat-button\n [disabled]=\"!fontSize || isDisabled\"\n (click)=\"onIncrementFontSize()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add\"></mat-icon>\n</button>\n", styles: [":host{justify-content:center;align-items:center;display:flex}button{margin:4px}input{width:30px;height:25px;text-align:center;border-color:transparent;outline-color:#1b84e0}.mdc-button{min-width:28px;min-height:28px;width:28px;height:28px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0;font-size:24px;height:24px;width:24px}.mat-mdc-option{padding-left:6px;padding-right:6px;min-height:30px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i3$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4$3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13277
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: FontSizeComponent, selector: "app-font-size", inputs: { isDisabled: "isDisabled", fontSize: "fontSize" }, outputs: { selectFontSize: "selectFontSize" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: ["auto"], descendants: true }], ngImport: i0, template: "<button\n mat-button\n [disabled]=\"!fontSize || isDisabled\"\n (click)=\"onDecrementFontSize()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-remove\"></mat-icon>\n</button>\n<input\n type=\"text\"\n [formControl]=\"fontSizeControl\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"onSetFontSize()\"\n (blur)=\"resetFontSize()\" />\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n panelWidth=\"60\"\n disableRipple=\"false\"\n hideSingleSelectionIndicator=\"true\">\n <mat-option\n *ngFor=\"let fontSize of fontSizes\"\n [value]=\"fontSize\"\n (click)=\"onSelectFontSize(fontSize)\">\n {{ fontSize }}\n </mat-option>\n</mat-autocomplete>\n<button\n mat-button\n [disabled]=\"!fontSize || isDisabled\"\n (click)=\"onIncrementFontSize()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add\"></mat-icon>\n</button>\n", styles: ["button{margin:4px}input{width:48px;height:32px;text-align:center;border-color:transparent;outline-color:#1b84e0}.mdc-button{min-width:32px;min-height:32px;width:32px;height:32px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0;font-size:24px;height:24px;width:24px}.mat-mdc-option{padding-left:6px;padding-right:6px;min-height:30px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i3$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4$3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13339
13278
  }
13340
13279
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FontSizeComponent, decorators: [{
13341
13280
  type: Component,
13342
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-font-size', template: "<button\n mat-button\n [disabled]=\"!fontSize || isDisabled\"\n (click)=\"onDecrementFontSize()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-remove\"></mat-icon>\n</button>\n<input\n type=\"text\"\n [formControl]=\"fontSizeControl\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"onSetFontSize()\"\n (blur)=\"resetFontSize()\" />\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n panelWidth=\"60\"\n disableRipple=\"false\"\n hideSingleSelectionIndicator=\"true\">\n <mat-option\n *ngFor=\"let fontSize of fontSizes\"\n [value]=\"fontSize\"\n (click)=\"onSelectFontSize(fontSize)\">\n {{ fontSize }}\n </mat-option>\n</mat-autocomplete>\n<button\n mat-button\n [disabled]=\"!fontSize || isDisabled\"\n (click)=\"onIncrementFontSize()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add\"></mat-icon>\n</button>\n", styles: [":host{justify-content:center;align-items:center;display:flex}button{margin:4px}input{width:30px;height:25px;text-align:center;border-color:transparent;outline-color:#1b84e0}.mdc-button{min-width:28px;min-height:28px;width:28px;height:28px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0;font-size:24px;height:24px;width:24px}.mat-mdc-option{padding-left:6px;padding-right:6px;min-height:30px}\n"] }]
13281
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-font-size', template: "<button\n mat-button\n [disabled]=\"!fontSize || isDisabled\"\n (click)=\"onDecrementFontSize()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-remove\"></mat-icon>\n</button>\n<input\n type=\"text\"\n [formControl]=\"fontSizeControl\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"onSetFontSize()\"\n (blur)=\"resetFontSize()\" />\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n panelWidth=\"60\"\n disableRipple=\"false\"\n hideSingleSelectionIndicator=\"true\">\n <mat-option\n *ngFor=\"let fontSize of fontSizes\"\n [value]=\"fontSize\"\n (click)=\"onSelectFontSize(fontSize)\">\n {{ fontSize }}\n </mat-option>\n</mat-autocomplete>\n<button\n mat-button\n [disabled]=\"!fontSize || isDisabled\"\n (click)=\"onIncrementFontSize()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add\"></mat-icon>\n</button>\n", styles: ["button{margin:4px}input{width:48px;height:32px;text-align:center;border-color:transparent;outline-color:#1b84e0}.mdc-button{min-width:32px;min-height:32px;width:32px;height:32px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0;font-size:24px;height:24px;width:24px}.mat-mdc-option{padding-left:6px;padding-right:6px;min-height:30px}\n"] }]
13343
13282
  }], propDecorators: { isDisabled: [{
13344
13283
  type: Input
13345
13284
  }], fontSize: [{
@@ -13359,11 +13298,11 @@ class ColorPickerComponent {
13359
13298
  this.colorChange.emit(color);
13360
13299
  }
13361
13300
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13362
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ColorPickerComponent, selector: "app-color-picker", inputs: { color: "color", icon: "icon", isDisabled: "isDisabled", palette: "palette" }, outputs: { colorChange: "colorChange" }, ngImport: i0, template: "<button\n mat-button\n ngx-colors-trigger\n overlayClassName=\"color-picker-overlay\"\n [disabled]=\"isDisabled\"\n [(ngModel)]=\"color\"\n [palette]=\"palette\"\n [hideTextInput]=\"true\"\n [attachTo]=\"icon\"\n (input)=\"onChangeColor(color)\">\n <div\n class=\"color-text\"\n [ngStyle]=\"{ 'border-color': color ? color : 'transparent' }\">\n <mat-icon\n fontSet=\"nc-icon\"\n [fontIcon]=\"icon\"></mat-icon>\n </div>\n</button>\n", styles: ["button{margin:0 3px}.color-text{display:inline-flex;height:22px}.mdc-button{min-width:24px;height:28px;width:28px;padding:0}.mdc-button mat-icon{height:24px;width:24px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5$1.NgxColorsTriggerDirective, selector: "[ngx-colors-trigger]", inputs: ["colorsAnimation", "palette", "format", "position", "hideTextInput", "hideColorPicker", "attachTo", "overlayClassName", "colorPickerControls", "acceptLabel", "cancelLabel"], outputs: ["change", "input", "slider", "close", "open"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13301
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ColorPickerComponent, selector: "app-color-picker", inputs: { color: "color", icon: "icon", isDisabled: "isDisabled", palette: "palette" }, outputs: { colorChange: "colorChange" }, ngImport: i0, template: "<button\n mat-button\n ngx-colors-trigger\n overlayClassName=\"color-picker-overlay\"\n [disabled]=\"isDisabled\"\n [(ngModel)]=\"color\"\n [palette]=\"palette\"\n [hideTextInput]=\"true\"\n [attachTo]=\"icon\"\n (input)=\"onChangeColor(color)\">\n <div\n class=\"color-text\"\n [ngStyle]=\"{ 'border-color': color ? color : 'transparent' }\">\n <mat-icon\n fontSet=\"nc-icon\"\n [fontIcon]=\"icon\"></mat-icon>\n </div>\n</button>\n", styles: ["button{margin:0 3px}.color-text{display:inline-flex;height:22px}.mdc-button{min-width:32px;height:32px;width:32px;padding:0}.mdc-button mat-icon{height:24px;width:24px}.mdc-button::ng-deep .mdc-button__label{display:flex}\n"], dependencies: [{ kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5$1.NgxColorsTriggerDirective, selector: "[ngx-colors-trigger]", inputs: ["colorsAnimation", "palette", "format", "position", "hideTextInput", "hideColorPicker", "attachTo", "overlayClassName", "colorPickerControls", "acceptLabel", "cancelLabel"], outputs: ["change", "input", "slider", "close", "open"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13363
13302
  }
13364
13303
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ColorPickerComponent, decorators: [{
13365
13304
  type: Component,
13366
- args: [{ selector: 'app-color-picker', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n mat-button\n ngx-colors-trigger\n overlayClassName=\"color-picker-overlay\"\n [disabled]=\"isDisabled\"\n [(ngModel)]=\"color\"\n [palette]=\"palette\"\n [hideTextInput]=\"true\"\n [attachTo]=\"icon\"\n (input)=\"onChangeColor(color)\">\n <div\n class=\"color-text\"\n [ngStyle]=\"{ 'border-color': color ? color : 'transparent' }\">\n <mat-icon\n fontSet=\"nc-icon\"\n [fontIcon]=\"icon\"></mat-icon>\n </div>\n</button>\n", styles: ["button{margin:0 3px}.color-text{display:inline-flex;height:22px}.mdc-button{min-width:24px;height:28px;width:28px;padding:0}.mdc-button mat-icon{height:24px;width:24px}\n"] }]
13305
+ args: [{ selector: 'app-color-picker', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n mat-button\n ngx-colors-trigger\n overlayClassName=\"color-picker-overlay\"\n [disabled]=\"isDisabled\"\n [(ngModel)]=\"color\"\n [palette]=\"palette\"\n [hideTextInput]=\"true\"\n [attachTo]=\"icon\"\n (input)=\"onChangeColor(color)\">\n <div\n class=\"color-text\"\n [ngStyle]=\"{ 'border-color': color ? color : 'transparent' }\">\n <mat-icon\n fontSet=\"nc-icon\"\n [fontIcon]=\"icon\"></mat-icon>\n </div>\n</button>\n", styles: ["button{margin:0 3px}.color-text{display:inline-flex;height:22px}.mdc-button{min-width:32px;height:32px;width:32px;padding:0}.mdc-button mat-icon{height:24px;width:24px}.mdc-button::ng-deep .mdc-button__label{display:flex}\n"] }]
13367
13306
  }], propDecorators: { color: [{
13368
13307
  type: Input
13369
13308
  }], icon: [{
@@ -13421,11 +13360,11 @@ class FontStyleComponent {
13421
13360
  this.selectHighlightColor.emit(color);
13422
13361
  }
13423
13362
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FontStyleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13424
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: FontStyleComponent, selector: "app-font-style", inputs: { isDisabled: "isDisabled", bold: "bold", italic: "italic", underline: "underline", fontColor: "fontColor", highlightColor: "highlightColor" }, outputs: { toggleBold: "toggleBold", toggleItalic: "toggleItalic", toggleUnderline: "toggleUnderline", selectFontColor: "selectFontColor", selectHighlightColor: "selectHighlightColor" }, ngImport: i0, template: "<mat-button-toggle-group multiple>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"bold\"\n (click)=\"onToggleBold()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n </mat-button-toggle>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"italic\"\n (click)=\"onToggleItalic()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-italic\"></mat-icon>\n </mat-button-toggle>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"underline\"\n (click)=\"onToggleUnderline()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-underlined\"></mat-icon>\n </mat-button-toggle>\n</mat-button-toggle-group>\n<app-color-picker\n id=\"icon-format-colortext\"\n class=\"text-color\"\n [color]=\"fontColor\"\n [isDisabled]=\"isDisabled\"\n icon=\"icon-format-colortext\"\n [palette]=\"textColorPalette\"\n (colorChange)=\"onSelectFontColor($event)\"></app-color-picker>\n<app-color-picker\n id=\"icon-link-highlighter\"\n class=\"highlight-color\"\n [color]=\"highlightColor\"\n [isDisabled]=\"isDisabled\"\n icon=\"icon-link-highlighter\"\n [palette]=\"highlightColorPalette\"\n (colorChange)=\"onSelectHighlightColor($event)\"></app-color-picker>\n", styles: ["mat-button-toggle,button{margin:0 4px}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:0}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:0}:host{align-self:center}:host ::ng-deep #format-color-highlight .circle.button:first-child,:host ::ng-deep #format-color-highlight .circle.wrapper.color:first-child{flex:100%;width:100%;background:no-repeat left/20px url(https://cdn3.iconfinder.com/data/icons/google-material-design-icons/48/ic_format_color_reset_48px-512.png);border-radius:unset}:host ::ng-deep #format-color-highlight .circle.button:first-child .circle.color.circle-border,:host ::ng-deep #format-color-highlight .circle.wrapper.color:first-child .circle.color.circle-border{width:100%;border:unset}:host ::ng-deep #format-color-highlight .circle.button:first-child .circle.color.circle-border .selected,:host ::ng-deep #format-color-highlight .circle.wrapper.color:first-child .circle.color.circle-border .selected{display:none}\n"], dependencies: [{ kind: "directive", type: i1$3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1$3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ColorPickerComponent, selector: "app-color-picker", inputs: ["color", "icon", "isDisabled", "palette"], outputs: ["colorChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13363
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: FontStyleComponent, selector: "app-font-style", inputs: { isDisabled: "isDisabled", bold: "bold", italic: "italic", underline: "underline", fontColor: "fontColor", highlightColor: "highlightColor" }, outputs: { toggleBold: "toggleBold", toggleItalic: "toggleItalic", toggleUnderline: "toggleUnderline", selectFontColor: "selectFontColor", selectHighlightColor: "selectHighlightColor" }, ngImport: i0, template: "<mat-button-toggle-group multiple>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"bold\"\n (click)=\"onToggleBold()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n </mat-button-toggle>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"italic\"\n (click)=\"onToggleItalic()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-italic\"></mat-icon>\n </mat-button-toggle>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"underline\"\n (click)=\"onToggleUnderline()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-underlined\"></mat-icon>\n </mat-button-toggle>\n</mat-button-toggle-group>\n<app-color-picker\n id=\"icon-format-colortext\"\n class=\"text-color\"\n [color]=\"fontColor\"\n [isDisabled]=\"isDisabled\"\n icon=\"icon-format-colortext\"\n [palette]=\"textColorPalette\"\n (colorChange)=\"onSelectFontColor($event)\"></app-color-picker>\n<app-color-picker\n id=\"icon-link-highlighter\"\n class=\"highlight-color\"\n [color]=\"highlightColor\"\n [isDisabled]=\"isDisabled\"\n icon=\"icon-link-highlighter\"\n [palette]=\"highlightColorPalette\"\n (colorChange)=\"onSelectHighlightColor($event)\"></app-color-picker>\n", styles: ["mat-button-toggle,button{margin:0 4px}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:0}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:0}:host{display:flex;align-items:center}:host ::ng-deep #format-color-highlight .circle.button:first-child,:host ::ng-deep #format-color-highlight .circle.wrapper.color:first-child{flex:100%;width:100%;background:no-repeat left/20px url(https://cdn3.iconfinder.com/data/icons/google-material-design-icons/48/ic_format_color_reset_48px-512.png);border-radius:unset}:host ::ng-deep #format-color-highlight .circle.button:first-child .circle.color.circle-border,:host ::ng-deep #format-color-highlight .circle.wrapper.color:first-child .circle.color.circle-border{width:100%;border:unset}:host ::ng-deep #format-color-highlight .circle.button:first-child .circle.color.circle-border .selected,:host ::ng-deep #format-color-highlight .circle.wrapper.color:first-child .circle.color.circle-border .selected{display:none}\n"], dependencies: [{ kind: "directive", type: i1$3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1$3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ColorPickerComponent, selector: "app-color-picker", inputs: ["color", "icon", "isDisabled", "palette"], outputs: ["colorChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13425
13364
  }
13426
13365
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FontStyleComponent, decorators: [{
13427
13366
  type: Component,
13428
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-font-style', template: "<mat-button-toggle-group multiple>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"bold\"\n (click)=\"onToggleBold()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n </mat-button-toggle>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"italic\"\n (click)=\"onToggleItalic()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-italic\"></mat-icon>\n </mat-button-toggle>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"underline\"\n (click)=\"onToggleUnderline()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-underlined\"></mat-icon>\n </mat-button-toggle>\n</mat-button-toggle-group>\n<app-color-picker\n id=\"icon-format-colortext\"\n class=\"text-color\"\n [color]=\"fontColor\"\n [isDisabled]=\"isDisabled\"\n icon=\"icon-format-colortext\"\n [palette]=\"textColorPalette\"\n (colorChange)=\"onSelectFontColor($event)\"></app-color-picker>\n<app-color-picker\n id=\"icon-link-highlighter\"\n class=\"highlight-color\"\n [color]=\"highlightColor\"\n [isDisabled]=\"isDisabled\"\n icon=\"icon-link-highlighter\"\n [palette]=\"highlightColorPalette\"\n (colorChange)=\"onSelectHighlightColor($event)\"></app-color-picker>\n", styles: ["mat-button-toggle,button{margin:0 4px}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:0}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:0}:host{align-self:center}:host ::ng-deep #format-color-highlight .circle.button:first-child,:host ::ng-deep #format-color-highlight .circle.wrapper.color:first-child{flex:100%;width:100%;background:no-repeat left/20px url(https://cdn3.iconfinder.com/data/icons/google-material-design-icons/48/ic_format_color_reset_48px-512.png);border-radius:unset}:host ::ng-deep #format-color-highlight .circle.button:first-child .circle.color.circle-border,:host ::ng-deep #format-color-highlight .circle.wrapper.color:first-child .circle.color.circle-border{width:100%;border:unset}:host ::ng-deep #format-color-highlight .circle.button:first-child .circle.color.circle-border .selected,:host ::ng-deep #format-color-highlight .circle.wrapper.color:first-child .circle.color.circle-border .selected{display:none}\n"] }]
13367
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-font-style', template: "<mat-button-toggle-group multiple>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"bold\"\n (click)=\"onToggleBold()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n </mat-button-toggle>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"italic\"\n (click)=\"onToggleItalic()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-italic\"></mat-icon>\n </mat-button-toggle>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"underline\"\n (click)=\"onToggleUnderline()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-underlined\"></mat-icon>\n </mat-button-toggle>\n</mat-button-toggle-group>\n<app-color-picker\n id=\"icon-format-colortext\"\n class=\"text-color\"\n [color]=\"fontColor\"\n [isDisabled]=\"isDisabled\"\n icon=\"icon-format-colortext\"\n [palette]=\"textColorPalette\"\n (colorChange)=\"onSelectFontColor($event)\"></app-color-picker>\n<app-color-picker\n id=\"icon-link-highlighter\"\n class=\"highlight-color\"\n [color]=\"highlightColor\"\n [isDisabled]=\"isDisabled\"\n icon=\"icon-link-highlighter\"\n [palette]=\"highlightColorPalette\"\n (colorChange)=\"onSelectHighlightColor($event)\"></app-color-picker>\n", styles: ["mat-button-toggle,button{margin:0 4px}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:0}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:0}:host{display:flex;align-items:center}:host ::ng-deep #format-color-highlight .circle.button:first-child,:host ::ng-deep #format-color-highlight .circle.wrapper.color:first-child{flex:100%;width:100%;background:no-repeat left/20px url(https://cdn3.iconfinder.com/data/icons/google-material-design-icons/48/ic_format_color_reset_48px-512.png);border-radius:unset}:host ::ng-deep #format-color-highlight .circle.button:first-child .circle.color.circle-border,:host ::ng-deep #format-color-highlight .circle.wrapper.color:first-child .circle.color.circle-border{width:100%;border:unset}:host ::ng-deep #format-color-highlight .circle.button:first-child .circle.color.circle-border .selected,:host ::ng-deep #format-color-highlight .circle.wrapper.color:first-child .circle.color.circle-border .selected{display:none}\n"] }]
13429
13368
  }], propDecorators: { isDisabled: [{
13430
13369
  type: Input
13431
13370
  }], bold: [{
@@ -13501,11 +13440,11 @@ class NumberingComponent {
13501
13440
  this.selectNumberingTemplate.emit(numberingTemplateType);
13502
13441
  }
13503
13442
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NumberingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13504
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: NumberingComponent, selector: "app-numbering", inputs: { isDisabled: "isDisabled", selectedNumberingType: "selectedNumberingType", selectedNumberingTemplate: "selectedNumberingTemplate" }, outputs: { selectNumberingTemplate: "selectNumberingTemplate", removeNumberings: "removeNumberings" }, ngImport: i0, template: "<mat-button-toggle-group\n name=\"format\"\n aria-label=\"format\"\n [disabled]=\"isDisabled\">\n <mat-button-toggle\n (click)=\"onToggleBulletedNumbering()\"\n [value]=\"numberingType.Bullet\"\n [checked]=\"selectedNumberingType === numberingType.Bullet\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n </mat-button-toggle>\n <button\n mat-button\n [matMenuTriggerFor]=\"listBulletedMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n [disabled]=\"isDisabled\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </button>\n <mat-menu\n #listBulletedMenu=\"matMenu\"\n yPosition=\"below\">\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList1)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList1\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList2)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList2\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList3)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList4)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList4\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList5)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList5\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList6)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList6\"></mat-icon>\n </div>\n </mat-menu>\n <mat-button-toggle\n (click)=\"onToggleNumberedNumbering()\"\n [value]=\"numberingType.Number\"\n [checked]=\"selectedNumberingType === numberingType.Number\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-numbered\"></mat-icon>\n </mat-button-toggle>\n <button\n mat-button\n [matMenuTriggerFor]=\"listNumberedMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n [disabled]=\"isDisabled\"\n style=\"display: none\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </button>\n <mat-menu\n #listNumberedMenu=\"matMenu\"\n yPosition=\"below\">\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList1)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList1\"></mat-icon>\n <mat-icon\n svgIcon=\"number-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList2)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList2\"></mat-icon>\n <mat-icon\n svgIcon=\"number-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList3)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList4)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList4\"></mat-icon>\n <mat-icon\n svgIcon=\"number-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList5)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList5\"></mat-icon>\n <mat-icon\n svgIcon=\"number-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList6)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList6\"></mat-icon>\n </div>\n </mat-menu>\n</mat-button-toggle-group>\n", styles: [":host{display:flex;align-items:center}mat-button-toggle-group,button{margin:0 3px}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:0}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:0}.mdc-button{min-width:28px;min-height:28px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0}.mat-button-toggle-group{align-items:center}.mat-button-toggle-group .mdc-button{min-width:20px;height:28px;padding:0}.list-marker,.list-number{margin:0 5px}.list-marker mat-icon,.list-number mat-icon{width:70px;height:80px;margin:0 5px}.list-marker mat-icon:hover,.list-number mat-icon:hover{border:none!important}.list-icon .selected,.list-icon .selected:hover{border:2px solid #1b84e0}\n"], dependencies: [{ kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1$3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1$3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i4$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13443
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: NumberingComponent, selector: "app-numbering", inputs: { isDisabled: "isDisabled", selectedNumberingType: "selectedNumberingType", selectedNumberingTemplate: "selectedNumberingTemplate" }, outputs: { selectNumberingTemplate: "selectNumberingTemplate", removeNumberings: "removeNumberings" }, ngImport: i0, template: "<mat-button-toggle-group\n name=\"format\"\n aria-label=\"format\"\n [disabled]=\"isDisabled\">\n <mat-button-toggle\n (click)=\"onToggleBulletedNumbering()\"\n [value]=\"numberingType.Bullet\"\n [checked]=\"selectedNumberingType === numberingType.Bullet\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n </mat-button-toggle>\n <button\n mat-button\n [matMenuTriggerFor]=\"listBulletedMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n [disabled]=\"isDisabled\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </button>\n <mat-menu\n #listBulletedMenu=\"matMenu\"\n class=\"dropdown-numbering-overlay noder-modal\"\n yPosition=\"below\">\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList1)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList1\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList2)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList2\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList3)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList4)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList4\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList5)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList5\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList6)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList6\"></mat-icon>\n </div>\n </mat-menu>\n <mat-button-toggle\n (click)=\"onToggleNumberedNumbering()\"\n [value]=\"numberingType.Number\"\n [checked]=\"selectedNumberingType === numberingType.Number\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-numbered\"></mat-icon>\n </mat-button-toggle>\n <button\n mat-button\n [matMenuTriggerFor]=\"listNumberedMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n [disabled]=\"isDisabled\"\n style=\"display: none\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </button>\n <mat-menu\n #listNumberedMenu=\"matMenu\"\n class=\"dropdown-numbering-overlay noder-modal\"\n yPosition=\"below\">\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList1)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList1\"></mat-icon>\n <mat-icon\n svgIcon=\"number-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList2)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList2\"></mat-icon>\n <mat-icon\n svgIcon=\"number-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList3)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList4)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList4\"></mat-icon>\n <mat-icon\n svgIcon=\"number-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList5)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList5\"></mat-icon>\n <mat-icon\n svgIcon=\"number-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList6)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList6\"></mat-icon>\n </div>\n </mat-menu>\n</mat-button-toggle-group>\n", styles: [":host{display:flex;align-items:center}mat-button-toggle-group,button{margin:0 3px}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:0}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:0}.mdc-button{min-width:32px;min-height:32px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0}.mat-button-toggle-group{align-items:center}.mat-button-toggle-group .mdc-button{min-width:20px;height:32px;padding:0}.list-marker,.list-number{margin:0 5px}.list-marker mat-icon,.list-number mat-icon{width:70px;height:80px;margin:0 5px}.list-marker mat-icon:hover,.list-number mat-icon:hover{border:none!important}.list-icon .selected,.list-icon .selected:hover{border-width:2px;border-style:solid}\n"], dependencies: [{ kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1$3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1$3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i4$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13505
13444
  }
13506
13445
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NumberingComponent, decorators: [{
13507
13446
  type: Component,
13508
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-numbering', template: "<mat-button-toggle-group\n name=\"format\"\n aria-label=\"format\"\n [disabled]=\"isDisabled\">\n <mat-button-toggle\n (click)=\"onToggleBulletedNumbering()\"\n [value]=\"numberingType.Bullet\"\n [checked]=\"selectedNumberingType === numberingType.Bullet\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n </mat-button-toggle>\n <button\n mat-button\n [matMenuTriggerFor]=\"listBulletedMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n [disabled]=\"isDisabled\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </button>\n <mat-menu\n #listBulletedMenu=\"matMenu\"\n yPosition=\"below\">\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList1)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList1\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList2)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList2\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList3)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList4)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList4\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList5)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList5\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList6)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList6\"></mat-icon>\n </div>\n </mat-menu>\n <mat-button-toggle\n (click)=\"onToggleNumberedNumbering()\"\n [value]=\"numberingType.Number\"\n [checked]=\"selectedNumberingType === numberingType.Number\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-numbered\"></mat-icon>\n </mat-button-toggle>\n <button\n mat-button\n [matMenuTriggerFor]=\"listNumberedMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n [disabled]=\"isDisabled\"\n style=\"display: none\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </button>\n <mat-menu\n #listNumberedMenu=\"matMenu\"\n yPosition=\"below\">\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList1)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList1\"></mat-icon>\n <mat-icon\n svgIcon=\"number-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList2)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList2\"></mat-icon>\n <mat-icon\n svgIcon=\"number-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList3)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList4)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList4\"></mat-icon>\n <mat-icon\n svgIcon=\"number-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList5)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList5\"></mat-icon>\n <mat-icon\n svgIcon=\"number-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList6)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList6\"></mat-icon>\n </div>\n </mat-menu>\n</mat-button-toggle-group>\n", styles: [":host{display:flex;align-items:center}mat-button-toggle-group,button{margin:0 3px}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:0}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:0}.mdc-button{min-width:28px;min-height:28px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0}.mat-button-toggle-group{align-items:center}.mat-button-toggle-group .mdc-button{min-width:20px;height:28px;padding:0}.list-marker,.list-number{margin:0 5px}.list-marker mat-icon,.list-number mat-icon{width:70px;height:80px;margin:0 5px}.list-marker mat-icon:hover,.list-number mat-icon:hover{border:none!important}.list-icon .selected,.list-icon .selected:hover{border:2px solid #1b84e0}\n"] }]
13447
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-numbering', template: "<mat-button-toggle-group\n name=\"format\"\n aria-label=\"format\"\n [disabled]=\"isDisabled\">\n <mat-button-toggle\n (click)=\"onToggleBulletedNumbering()\"\n [value]=\"numberingType.Bullet\"\n [checked]=\"selectedNumberingType === numberingType.Bullet\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n </mat-button-toggle>\n <button\n mat-button\n [matMenuTriggerFor]=\"listBulletedMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n [disabled]=\"isDisabled\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </button>\n <mat-menu\n #listBulletedMenu=\"matMenu\"\n class=\"dropdown-numbering-overlay noder-modal\"\n yPosition=\"below\">\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList1)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList1\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList2)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList2\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList3)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList4)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList4\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList5)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList5\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList6)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList6\"></mat-icon>\n </div>\n </mat-menu>\n <mat-button-toggle\n (click)=\"onToggleNumberedNumbering()\"\n [value]=\"numberingType.Number\"\n [checked]=\"selectedNumberingType === numberingType.Number\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-numbered\"></mat-icon>\n </mat-button-toggle>\n <button\n mat-button\n [matMenuTriggerFor]=\"listNumberedMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n [disabled]=\"isDisabled\"\n style=\"display: none\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </button>\n <mat-menu\n #listNumberedMenu=\"matMenu\"\n class=\"dropdown-numbering-overlay noder-modal\"\n yPosition=\"below\">\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList1)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList1\"></mat-icon>\n <mat-icon\n svgIcon=\"number-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList2)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList2\"></mat-icon>\n <mat-icon\n svgIcon=\"number-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList3)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList4)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList4\"></mat-icon>\n <mat-icon\n svgIcon=\"number-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList5)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList5\"></mat-icon>\n <mat-icon\n svgIcon=\"number-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList6)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList6\"></mat-icon>\n </div>\n </mat-menu>\n</mat-button-toggle-group>\n", styles: [":host{display:flex;align-items:center}mat-button-toggle-group,button{margin:0 3px}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:0}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:0}.mdc-button{min-width:32px;min-height:32px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0}.mat-button-toggle-group{align-items:center}.mat-button-toggle-group .mdc-button{min-width:20px;height:32px;padding:0}.list-marker,.list-number{margin:0 5px}.list-marker mat-icon,.list-number mat-icon{width:70px;height:80px;margin:0 5px}.list-marker mat-icon:hover,.list-number mat-icon:hover{border:none!important}.list-icon .selected,.list-icon .selected:hover{border-width:2px;border-style:solid}\n"] }]
13509
13448
  }], propDecorators: { isDisabled: [{
13510
13449
  type: Input
13511
13450
  }], selectedNumberingType: [{
@@ -13523,11 +13462,11 @@ class PrintComponent {
13523
13462
  this.print = new EventEmitter();
13524
13463
  }
13525
13464
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: PrintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13526
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: PrintComponent, selector: "app-print", outputs: { print: "print" }, ngImport: i0, template: "<button\n mat-button\n (click)=\"print.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-print\"></mat-icon>\n</button>\n", styles: [":host{align-self:center}.mdc-button{min-width:28px;min-height:28px;height:28px;padding:0;margin:0 4px}.mdc-button mat-icon{font-size:24px;height:24px;width:24px;margin:0}\n"], dependencies: [{ kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13465
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: PrintComponent, selector: "app-print", outputs: { print: "print" }, ngImport: i0, template: "<button\n mat-button\n (click)=\"print.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-print\"></mat-icon>\n</button>\n", styles: [":host{display:flex;align-items:center}.mdc-button{min-width:28px;min-height:28px;height:28px;padding:0;margin:0 4px}.mdc-button mat-icon{font-size:24px;height:24px;width:24px;margin:0}\n"], dependencies: [{ kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13527
13466
  }
13528
13467
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: PrintComponent, decorators: [{
13529
13468
  type: Component,
13530
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-print', template: "<button\n mat-button\n (click)=\"print.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-print\"></mat-icon>\n</button>\n", styles: [":host{align-self:center}.mdc-button{min-width:28px;min-height:28px;height:28px;padding:0;margin:0 4px}.mdc-button mat-icon{font-size:24px;height:24px;width:24px;margin:0}\n"] }]
13469
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-print', template: "<button\n mat-button\n (click)=\"print.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-print\"></mat-icon>\n</button>\n", styles: [":host{display:flex;align-items:center}.mdc-button{min-width:28px;min-height:28px;height:28px;padding:0;margin:0 4px}.mdc-button mat-icon{font-size:24px;height:24px;width:24px;margin:0}\n"] }]
13531
13470
  }], propDecorators: { print: [{
13532
13471
  type: Output
13533
13472
  }] } });
@@ -13540,11 +13479,11 @@ class UndoRedoComponent {
13540
13479
  this.redo = new EventEmitter();
13541
13480
  }
13542
13481
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UndoRedoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13543
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: UndoRedoComponent, selector: "app-undo-redo", inputs: { canUndo: "canUndo", canRedo: "canRedo" }, outputs: { undo: "undo", redo: "redo" }, ngImport: i0, template: "<button\n mat-button\n [disabled]=\"!canUndo\"\n (click)=\"undo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n</button>\n<button\n mat-button\n [disabled]=\"!canRedo\"\n (click)=\"redo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n</button>\n", styles: [":host{align-self:center}.mdc-button{min-width:28px;min-height:28px;height:28px;padding:0;margin:0 4px}.mdc-button mat-icon{font-size:24px;height:24px;width:24px;margin:0}\n"], dependencies: [{ kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13482
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: UndoRedoComponent, selector: "app-undo-redo", inputs: { canUndo: "canUndo", canRedo: "canRedo" }, outputs: { undo: "undo", redo: "redo" }, ngImport: i0, template: "<button\n mat-button\n [disabled]=\"!canUndo\"\n (click)=\"undo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n</button>\n<button\n mat-button\n [disabled]=\"!canRedo\"\n (click)=\"redo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n</button>\n", styles: [":host{display:flex;align-items:center}.mdc-button{min-width:28px;min-height:28px;height:28px;padding:0;margin:0 4px}.mdc-button mat-icon{font-size:24px;height:24px;width:24px;margin:0}\n"], dependencies: [{ kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13544
13483
  }
13545
13484
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UndoRedoComponent, decorators: [{
13546
13485
  type: Component,
13547
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-undo-redo', template: "<button\n mat-button\n [disabled]=\"!canUndo\"\n (click)=\"undo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n</button>\n<button\n mat-button\n [disabled]=\"!canRedo\"\n (click)=\"redo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n</button>\n", styles: [":host{align-self:center}.mdc-button{min-width:28px;min-height:28px;height:28px;padding:0;margin:0 4px}.mdc-button mat-icon{font-size:24px;height:24px;width:24px;margin:0}\n"] }]
13486
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-undo-redo', template: "<button\n mat-button\n [disabled]=\"!canUndo\"\n (click)=\"undo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n</button>\n<button\n mat-button\n [disabled]=\"!canRedo\"\n (click)=\"redo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n</button>\n", styles: [":host{display:flex;align-items:center}.mdc-button{min-width:28px;min-height:28px;height:28px;padding:0;margin:0 4px}.mdc-button mat-icon{font-size:24px;height:24px;width:24px;margin:0}\n"] }]
13548
13487
  }], propDecorators: { canUndo: [{
13549
13488
  type: Input
13550
13489
  }], canRedo: [{
@@ -13555,7 +13494,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
13555
13494
  type: Output
13556
13495
  }] } });
13557
13496
 
13558
- class EditorToolbarComponent {
13497
+ class ToolbarActionsComponent {
13498
+ set historyInfo(value) {
13499
+ this.canUndo = value.step !== -1;
13500
+ this.canRedo = value.step < value.lastStep;
13501
+ }
13559
13502
  set styles(value) {
13560
13503
  this._styles = value;
13561
13504
  this.numberingType = ToolbarStylesHelper.getNumberingType(value.isBulletMarker);
@@ -13564,19 +13507,18 @@ class EditorToolbarComponent {
13564
13507
  get styles() {
13565
13508
  return this._styles;
13566
13509
  }
13567
- set historyInfo(value) {
13568
- this.canUndo = value.step !== -1;
13569
- this.canRedo = value.step < value.lastStep;
13570
- }
13571
- constructor(customIconService) {
13510
+ constructor(customIconService, injector) {
13572
13511
  this.customIconService = customIconService;
13573
- this.changeTextStyle = new EventEmitter();
13512
+ this.injector = injector;
13513
+ this.print = new EventEmitter();
13514
+ this.redo = new EventEmitter();
13515
+ this.undo = new EventEmitter();
13574
13516
  this.changeParagraphStyle = new EventEmitter();
13517
+ this.changeTextStyle = new EventEmitter();
13575
13518
  this.setNumberingTemplateType = new EventEmitter();
13576
13519
  this.removeNumberings = new EventEmitter();
13577
- this.redo = new EventEmitter();
13578
- this.undo = new EventEmitter();
13579
- this.print = new EventEmitter();
13520
+ this.createElement = new EventEmitter();
13521
+ this.elements = this.injector.get(EXTERNAL_ELEMENT_SERVICE).elements;
13580
13522
  this.customIconService.register();
13581
13523
  }
13582
13524
  onApplyFontFamily(font) {
@@ -13607,8 +13549,10 @@ class EditorToolbarComponent {
13607
13549
  const templateLevels = NumberingTemplates.find(x => x.templateType === templateType).levels;
13608
13550
  this.setNumberingTemplateType.emit(templateLevels);
13609
13551
  }
13610
- onRemoveNumberings() {
13611
- this.removeNumberings.emit();
13552
+ async onCreateElement(model) {
13553
+ const data = await model.factoryMethod();
13554
+ const element = new ElementDataModel(model.type, data.width, data.height, data.guid);
13555
+ this.createElement.emit(element);
13612
13556
  }
13613
13557
  checkFontLoadedAndApplyStyle(style) {
13614
13558
  const newStyles = { ...this.styles, ...style };
@@ -13626,31 +13570,129 @@ class EditorToolbarComponent {
13626
13570
  // continue regardless of error
13627
13571
  });
13628
13572
  }
13629
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorToolbarComponent, deps: [{ token: CustomIconService }], target: i0.ɵɵFactoryTarget.Component }); }
13630
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: EditorToolbarComponent, selector: "app-editor-toolbar", inputs: { isViewOnly: "isViewOnly", styles: "styles", historyInfo: "historyInfo" }, outputs: { changeTextStyle: "changeTextStyle", changeParagraphStyle: "changeParagraphStyle", setNumberingTemplateType: "setNumberingTemplateType", removeNumberings: "removeNumberings", redo: "redo", undo: "undo", print: "print" }, ngImport: i0, template: "<ng-container *ngIf=\"styles\">\n <app-undo-redo\n [canUndo]=\"canUndo\"\n [canRedo]=\"canRedo\"\n (undo)=\"undo.emit()\"\n (redo)=\"redo.emit()\"></app-undo-redo>\n <app-print (print)=\"print.emit()\"></app-print>\n <div class=\"separator\"></div>\n <app-font\n [isDisabled]=\"isViewOnly\"\n [styles]=\"styles\"\n (selectFont)=\"onApplyFontFamily($event)\"></app-font>\n <div class=\"separator\"></div>\n <app-font-size\n [isDisabled]=\"isViewOnly\"\n [fontSize]=\"styles.fontSize\"\n (selectFontSize)=\"onApplyFontSize($event)\"></app-font-size>\n <div class=\"separator\"></div>\n <app-font-style\n [isDisabled]=\"isViewOnly\"\n [bold]=\"styles.bold\"\n [italic]=\"styles.italic\"\n [underline]=\"styles.underline\"\n [fontColor]=\"styles.fontColor\"\n [highlightColor]=\"styles.highlightColor\"\n (selectFontColor)=\"onApplyFontColor($event)\"\n (toggleBold)=\"onApplyBold($event)\"\n (toggleItalic)=\"onApplyItalic($event)\"\n (toggleUnderline)=\"onApplyUnderline($event)\"\n (selectHighlightColor)=\"onApplyHighlightColor($event)\"></app-font-style>\n <div class=\"separator\"></div>\n <app-format\n [isDisabled]=\"isViewOnly\"\n [alignment]=\"styles.alignment\"\n (selectAlignment)=\"onApplyAlignment($event)\"></app-format>\n <div class=\"separator\"></div>\n <app-numbering\n [isDisabled]=\"isViewOnly\"\n [selectedNumberingType]=\"numberingType\"\n [selectedNumberingTemplate]=\"numberingTemplateType\"\n (selectNumberingTemplate)=\"onSetNumberingTemplateType($event)\"\n (removeNumberings)=\"onRemoveNumberings()\"></app-numbering>\n</ng-container>\n", styles: [":host ::ng-deep{display:flex;height:40px;justify-content:center;border-bottom:1px solid}:host ::ng-deep mat-button-toggle,:host ::ng-deep .mat-button-toggle-button{height:28px;width:28px;border-radius:4px}:host ::ng-deep mat-button-toggle mat-icon,:host ::ng-deep .mat-button-toggle-button mat-icon{font-size:24px;height:24px;width:24px;border-radius:4px}:host ::ng-deep mat-button-toggle .mat-button-toggle-label-content,:host ::ng-deep .mat-button-toggle-button .mat-button-toggle-label-content{padding:0 2px}.separator{border-left:1px solid;opacity:.1;height:100%;margin:0 8px}.mdc-button{width:28px;height:28px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0}.do-action{padding-right:1px;justify-content:center;display:flex}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FontComponent, selector: "app-font", inputs: ["isDisabled", "styles"], outputs: ["selectFont"] }, { kind: "component", type: FontSizeComponent, selector: "app-font-size", inputs: ["isDisabled", "fontSize"], outputs: ["selectFontSize"] }, { kind: "component", type: FontStyleComponent, selector: "app-font-style", inputs: ["isDisabled", "bold", "italic", "underline", "fontColor", "highlightColor"], outputs: ["toggleBold", "toggleItalic", "toggleUnderline", "selectFontColor", "selectHighlightColor"] }, { kind: "component", type: FormatComponent, selector: "app-format", inputs: ["isDisabled", "alignment"], outputs: ["selectAlignment"] }, { kind: "component", type: NumberingComponent, selector: "app-numbering", inputs: ["isDisabled", "selectedNumberingType", "selectedNumberingTemplate"], outputs: ["selectNumberingTemplate", "removeNumberings"] }, { kind: "component", type: PrintComponent, selector: "app-print", outputs: ["print"] }, { kind: "component", type: UndoRedoComponent, selector: "app-undo-redo", inputs: ["canUndo", "canRedo"], outputs: ["undo", "redo"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13573
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ToolbarActionsComponent, deps: [{ token: CustomIconService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
13574
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ToolbarActionsComponent, selector: "app-toolbar-actions", inputs: { isViewOnly: "isViewOnly", historyInfo: "historyInfo", styles: "styles" }, outputs: { print: "print", redo: "redo", undo: "undo", changeParagraphStyle: "changeParagraphStyle", changeTextStyle: "changeTextStyle", setNumberingTemplateType: "setNumberingTemplateType", removeNumberings: "removeNumberings", createElement: "createElement" }, ngImport: i0, template: "<app-undo-redo\n [canUndo]=\"canUndo\"\n [canRedo]=\"canRedo\"\n (undo)=\"undo.emit()\"\n (redo)=\"redo.emit()\" />\n<app-print (print)=\"print.emit()\" />\n<div class=\"separator\"></div>\n<app-font\n [isDisabled]=\"isViewOnly\"\n [styles]=\"styles\"\n (selectFont)=\"onApplyFontFamily($event)\" />\n<div class=\"separator\"></div>\n<app-font-size\n [isDisabled]=\"isViewOnly\"\n [fontSize]=\"styles.fontSize\"\n (selectFontSize)=\"onApplyFontSize($event)\" />\n<div class=\"separator\"></div>\n<app-font-style\n [isDisabled]=\"isViewOnly\"\n [bold]=\"styles.bold\"\n [italic]=\"styles.italic\"\n [underline]=\"styles.underline\"\n [fontColor]=\"styles.fontColor\"\n [highlightColor]=\"styles.highlightColor\"\n (selectFontColor)=\"onApplyFontColor($event)\"\n (toggleBold)=\"onApplyBold($event)\"\n (toggleItalic)=\"onApplyItalic($event)\"\n (toggleUnderline)=\"onApplyUnderline($event)\"\n (selectHighlightColor)=\"onApplyHighlightColor($event)\" />\n<div class=\"separator\"></div>\n<div\n *ngIf=\"elements.length\"\n class=\"custom-elements\">\n <button\n *ngFor=\"let element of elements\"\n mat-button\n [disabled]=\"isViewOnly\"\n (click)=\"onCreateElement(element)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n </button>\n <div class=\"separator\"></div>\n</div>\n<app-format\n [isDisabled]=\"isViewOnly\"\n [alignment]=\"styles.alignment\"\n (selectAlignment)=\"onApplyAlignment($event)\" />\n<div class=\"separator\"></div>\n<app-numbering\n [isDisabled]=\"isViewOnly\"\n [selectedNumberingType]=\"numberingType\"\n [selectedNumberingTemplate]=\"numberingTemplateType\"\n (selectNumberingTemplate)=\"onSetNumberingTemplateType($event)\"\n (removeNumberings)=\"removeNumberings.emit()\" />\n", styles: [":host::ng-deep mat-button-toggle,:host::ng-deep .mat-button-toggle-button{height:32px;width:32px;border-radius:4px}:host::ng-deep mat-button-toggle mat-icon,:host::ng-deep .mat-button-toggle-button mat-icon{font-size:24px;height:24px;width:24px;border-radius:4px}:host::ng-deep mat-button-toggle .mat-button-toggle-label-content,:host::ng-deep .mat-button-toggle-button .mat-button-toggle-label-content{padding:0 2px}.separator{border-left:1px solid;opacity:.1;height:100%;margin:0 8px}.mdc-button{width:28px;height:28px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0}.do-action{padding-right:1px;justify-content:center;display:flex}.custom-elements{display:flex;align-items:center;height:100%}.custom-elements .mdc-button{min-width:32px;min-height:32px;width:32px;height:32px;padding:0}.custom-elements .mdc-button>.mat-icon{margin-right:0;font-size:24px;height:24px;width:24px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: FontComponent, selector: "app-font", inputs: ["isDisabled", "styles"], outputs: ["selectFont"] }, { kind: "component", type: FontSizeComponent, selector: "app-font-size", inputs: ["isDisabled", "fontSize"], outputs: ["selectFontSize"] }, { kind: "component", type: FontStyleComponent, selector: "app-font-style", inputs: ["isDisabled", "bold", "italic", "underline", "fontColor", "highlightColor"], outputs: ["toggleBold", "toggleItalic", "toggleUnderline", "selectFontColor", "selectHighlightColor"] }, { kind: "component", type: FormatComponent, selector: "app-format", inputs: ["isDisabled", "alignment"], outputs: ["selectAlignment"] }, { kind: "component", type: NumberingComponent, selector: "app-numbering", inputs: ["isDisabled", "selectedNumberingType", "selectedNumberingTemplate"], outputs: ["selectNumberingTemplate", "removeNumberings"] }, { kind: "component", type: PrintComponent, selector: "app-print", outputs: ["print"] }, { kind: "component", type: UndoRedoComponent, selector: "app-undo-redo", inputs: ["canUndo", "canRedo"], outputs: ["undo", "redo"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13631
13575
  }
13632
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorToolbarComponent, decorators: [{
13576
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ToolbarActionsComponent, decorators: [{
13633
13577
  type: Component,
13634
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-editor-toolbar', template: "<ng-container *ngIf=\"styles\">\n <app-undo-redo\n [canUndo]=\"canUndo\"\n [canRedo]=\"canRedo\"\n (undo)=\"undo.emit()\"\n (redo)=\"redo.emit()\"></app-undo-redo>\n <app-print (print)=\"print.emit()\"></app-print>\n <div class=\"separator\"></div>\n <app-font\n [isDisabled]=\"isViewOnly\"\n [styles]=\"styles\"\n (selectFont)=\"onApplyFontFamily($event)\"></app-font>\n <div class=\"separator\"></div>\n <app-font-size\n [isDisabled]=\"isViewOnly\"\n [fontSize]=\"styles.fontSize\"\n (selectFontSize)=\"onApplyFontSize($event)\"></app-font-size>\n <div class=\"separator\"></div>\n <app-font-style\n [isDisabled]=\"isViewOnly\"\n [bold]=\"styles.bold\"\n [italic]=\"styles.italic\"\n [underline]=\"styles.underline\"\n [fontColor]=\"styles.fontColor\"\n [highlightColor]=\"styles.highlightColor\"\n (selectFontColor)=\"onApplyFontColor($event)\"\n (toggleBold)=\"onApplyBold($event)\"\n (toggleItalic)=\"onApplyItalic($event)\"\n (toggleUnderline)=\"onApplyUnderline($event)\"\n (selectHighlightColor)=\"onApplyHighlightColor($event)\"></app-font-style>\n <div class=\"separator\"></div>\n <app-format\n [isDisabled]=\"isViewOnly\"\n [alignment]=\"styles.alignment\"\n (selectAlignment)=\"onApplyAlignment($event)\"></app-format>\n <div class=\"separator\"></div>\n <app-numbering\n [isDisabled]=\"isViewOnly\"\n [selectedNumberingType]=\"numberingType\"\n [selectedNumberingTemplate]=\"numberingTemplateType\"\n (selectNumberingTemplate)=\"onSetNumberingTemplateType($event)\"\n (removeNumberings)=\"onRemoveNumberings()\"></app-numbering>\n</ng-container>\n", styles: [":host ::ng-deep{display:flex;height:40px;justify-content:center;border-bottom:1px solid}:host ::ng-deep mat-button-toggle,:host ::ng-deep .mat-button-toggle-button{height:28px;width:28px;border-radius:4px}:host ::ng-deep mat-button-toggle mat-icon,:host ::ng-deep .mat-button-toggle-button mat-icon{font-size:24px;height:24px;width:24px;border-radius:4px}:host ::ng-deep mat-button-toggle .mat-button-toggle-label-content,:host ::ng-deep .mat-button-toggle-button .mat-button-toggle-label-content{padding:0 2px}.separator{border-left:1px solid;opacity:.1;height:100%;margin:0 8px}.mdc-button{width:28px;height:28px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0}.do-action{padding-right:1px;justify-content:center;display:flex}\n"] }]
13635
- }], ctorParameters: () => [{ type: CustomIconService }], propDecorators: { isViewOnly: [{
13636
- type: Input
13637
- }], styles: [{
13578
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-toolbar-actions', template: "<app-undo-redo\n [canUndo]=\"canUndo\"\n [canRedo]=\"canRedo\"\n (undo)=\"undo.emit()\"\n (redo)=\"redo.emit()\" />\n<app-print (print)=\"print.emit()\" />\n<div class=\"separator\"></div>\n<app-font\n [isDisabled]=\"isViewOnly\"\n [styles]=\"styles\"\n (selectFont)=\"onApplyFontFamily($event)\" />\n<div class=\"separator\"></div>\n<app-font-size\n [isDisabled]=\"isViewOnly\"\n [fontSize]=\"styles.fontSize\"\n (selectFontSize)=\"onApplyFontSize($event)\" />\n<div class=\"separator\"></div>\n<app-font-style\n [isDisabled]=\"isViewOnly\"\n [bold]=\"styles.bold\"\n [italic]=\"styles.italic\"\n [underline]=\"styles.underline\"\n [fontColor]=\"styles.fontColor\"\n [highlightColor]=\"styles.highlightColor\"\n (selectFontColor)=\"onApplyFontColor($event)\"\n (toggleBold)=\"onApplyBold($event)\"\n (toggleItalic)=\"onApplyItalic($event)\"\n (toggleUnderline)=\"onApplyUnderline($event)\"\n (selectHighlightColor)=\"onApplyHighlightColor($event)\" />\n<div class=\"separator\"></div>\n<div\n *ngIf=\"elements.length\"\n class=\"custom-elements\">\n <button\n *ngFor=\"let element of elements\"\n mat-button\n [disabled]=\"isViewOnly\"\n (click)=\"onCreateElement(element)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n </button>\n <div class=\"separator\"></div>\n</div>\n<app-format\n [isDisabled]=\"isViewOnly\"\n [alignment]=\"styles.alignment\"\n (selectAlignment)=\"onApplyAlignment($event)\" />\n<div class=\"separator\"></div>\n<app-numbering\n [isDisabled]=\"isViewOnly\"\n [selectedNumberingType]=\"numberingType\"\n [selectedNumberingTemplate]=\"numberingTemplateType\"\n (selectNumberingTemplate)=\"onSetNumberingTemplateType($event)\"\n (removeNumberings)=\"removeNumberings.emit()\" />\n", styles: [":host::ng-deep mat-button-toggle,:host::ng-deep .mat-button-toggle-button{height:32px;width:32px;border-radius:4px}:host::ng-deep mat-button-toggle mat-icon,:host::ng-deep .mat-button-toggle-button mat-icon{font-size:24px;height:24px;width:24px;border-radius:4px}:host::ng-deep mat-button-toggle .mat-button-toggle-label-content,:host::ng-deep .mat-button-toggle-button .mat-button-toggle-label-content{padding:0 2px}.separator{border-left:1px solid;opacity:.1;height:100%;margin:0 8px}.mdc-button{width:28px;height:28px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0}.do-action{padding-right:1px;justify-content:center;display:flex}.custom-elements{display:flex;align-items:center;height:100%}.custom-elements .mdc-button{min-width:32px;min-height:32px;width:32px;height:32px;padding:0}.custom-elements .mdc-button>.mat-icon{margin-right:0;font-size:24px;height:24px;width:24px}\n"] }]
13579
+ }], ctorParameters: () => [{ type: CustomIconService }, { type: i0.Injector }], propDecorators: { isViewOnly: [{
13638
13580
  type: Input
13639
13581
  }], historyInfo: [{
13640
13582
  type: Input
13641
- }], changeTextStyle: [{
13583
+ }], styles: [{
13584
+ type: Input
13585
+ }], print: [{
13586
+ type: Output
13587
+ }], redo: [{
13588
+ type: Output
13589
+ }], undo: [{
13642
13590
  type: Output
13643
13591
  }], changeParagraphStyle: [{
13644
13592
  type: Output
13593
+ }], changeTextStyle: [{
13594
+ type: Output
13645
13595
  }], setNumberingTemplateType: [{
13646
13596
  type: Output
13647
13597
  }], removeNumberings: [{
13648
13598
  type: Output
13599
+ }], createElement: [{
13600
+ type: Output
13601
+ }] } });
13602
+
13603
+ class EditorToolbarComponent {
13604
+ constructor() {
13605
+ this.showActions = true;
13606
+ this.openFileFromDisk = new EventEmitter();
13607
+ this.addCustomElement = new EventEmitter();
13608
+ this.saveAs = new EventEmitter();
13609
+ this.print = new EventEmitter();
13610
+ this.insertPageBreak = new EventEmitter();
13611
+ this.createDocument = new EventEmitter();
13612
+ this.insertImage = new EventEmitter();
13613
+ this.rename = new EventEmitter();
13614
+ this.delete = new EventEmitter();
13615
+ this.openEditMenu = new EventEmitter();
13616
+ this.redo = new EventEmitter();
13617
+ this.undo = new EventEmitter();
13618
+ this.cutSelected = new EventEmitter();
13619
+ this.copySelected = new EventEmitter();
13620
+ this.pasteClipboardData = new EventEmitter();
13621
+ this.selectAll = new EventEmitter();
13622
+ this.removeSelected = new EventEmitter();
13623
+ this.insertLink = new EventEmitter();
13624
+ this.createElement = new EventEmitter();
13625
+ this.changeParagraphStyle = new EventEmitter();
13626
+ this.changeTextStyle = new EventEmitter();
13627
+ this.setNumberingTemplateType = new EventEmitter();
13628
+ this.removeNumberings = new EventEmitter();
13629
+ this.insertTable = new EventEmitter();
13630
+ }
13631
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13632
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: EditorToolbarComponent, selector: "app-editor-toolbar", inputs: { showActions: "showActions", isViewOnly: "isViewOnly", hasSelection: "hasSelection", clipboardData: "clipboardData", historyInfo: "historyInfo", styles: "styles" }, outputs: { openFileFromDisk: "openFileFromDisk", addCustomElement: "addCustomElement", saveAs: "saveAs", print: "print", insertPageBreak: "insertPageBreak", createDocument: "createDocument", insertImage: "insertImage", rename: "rename", delete: "delete", openEditMenu: "openEditMenu", redo: "redo", undo: "undo", cutSelected: "cutSelected", copySelected: "copySelected", pasteClipboardData: "pasteClipboardData", selectAll: "selectAll", removeSelected: "removeSelected", insertLink: "insertLink", createElement: "createElement", changeParagraphStyle: "changeParagraphStyle", changeTextStyle: "changeTextStyle", setNumberingTemplateType: "setNumberingTemplateType", removeNumberings: "removeNumberings", insertTable: "insertTable" }, ngImport: i0, template: "<app-menu-dropdowns\n [isViewOnly]=\"isViewOnly\"\n [hasSelection]=\"hasSelection\"\n [clipboardData]=\"clipboardData\"\n [historyInfo]=\"historyInfo\"\n [styles]=\"styles\"\n (openFileFromDisk)=\"openFileFromDisk.emit($event)\"\n (addCustomElement)=\"addCustomElement.emit($event)\"\n (saveAs)=\"saveAs.emit()\"\n (print)=\"print.emit()\"\n (insertPageBreak)=\"insertPageBreak.emit()\"\n (createDocument)=\"createDocument.emit()\"\n (insertImage)=\"insertImage.emit($event)\"\n (rename)=\"rename.emit()\"\n (delete)=\"delete.emit()\"\n (openEditMenu)=\"openEditMenu.emit()\"\n (redo)=\"redo.emit()\"\n (undo)=\"undo.emit()\"\n (cutSelected)=\"cutSelected.emit()\"\n (copySelected)=\"copySelected.emit()\"\n (pasteClipboardData)=\"pasteClipboardData.emit()\"\n (selectAll)=\"selectAll.emit()\"\n (removeSelected)=\"removeSelected.emit()\"\n (insertLink)=\"insertLink.emit()\"\n (createElement)=\"createElement.emit($event)\"\n (changeParagraphStyle)=\"changeParagraphStyle.emit($event)\"\n (changeTextStyle)=\"changeTextStyle.emit($event)\"\n (setNumberingTemplateType)=\"setNumberingTemplateType.emit($event)\"\n (removeNumberings)=\"removeNumberings.emit()\"\n (insertTable)=\"insertTable.emit($event)\" />\n<app-toolbar-actions\n *ngIf=\"styles && showActions\"\n [isViewOnly]=\"isViewOnly\"\n [historyInfo]=\"historyInfo\"\n [styles]=\"styles\"\n (print)=\"print.emit()\"\n (redo)=\"redo.emit()\"\n (undo)=\"undo.emit()\"\n (changeParagraphStyle)=\"changeParagraphStyle.emit($event)\"\n (changeTextStyle)=\"changeTextStyle.emit($event)\"\n (setNumberingTemplateType)=\"setNumberingTemplateType.emit($event)\"\n (removeNumberings)=\"removeNumberings.emit()\"\n (createElement)=\"createElement.emit($event)\" />\n", styles: [":host ::ng-deep{display:flex;position:relative;width:100%;height:32px}app-toolbar-actions{display:flex;position:absolute;align-items:center;justify-content:center;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MenuDropdownsComponent, selector: "app-menu-dropdowns", inputs: ["isViewOnly", "hasSelection", "clipboardData", "historyInfo", "styles"], outputs: ["openFileFromDisk", "addCustomElement", "saveAs", "print", "insertPageBreak", "createDocument", "insertImage", "rename", "delete", "openEditMenu", "redo", "undo", "cutSelected", "copySelected", "pasteClipboardData", "selectAll", "removeSelected", "insertLink", "createElement", "changeParagraphStyle", "changeTextStyle", "setNumberingTemplateType", "removeNumberings", "insertTable"] }, { kind: "component", type: ToolbarActionsComponent, selector: "app-toolbar-actions", inputs: ["isViewOnly", "historyInfo", "styles"], outputs: ["print", "redo", "undo", "changeParagraphStyle", "changeTextStyle", "setNumberingTemplateType", "removeNumberings", "createElement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13633
+ }
13634
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorToolbarComponent, decorators: [{
13635
+ type: Component,
13636
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-editor-toolbar', template: "<app-menu-dropdowns\n [isViewOnly]=\"isViewOnly\"\n [hasSelection]=\"hasSelection\"\n [clipboardData]=\"clipboardData\"\n [historyInfo]=\"historyInfo\"\n [styles]=\"styles\"\n (openFileFromDisk)=\"openFileFromDisk.emit($event)\"\n (addCustomElement)=\"addCustomElement.emit($event)\"\n (saveAs)=\"saveAs.emit()\"\n (print)=\"print.emit()\"\n (insertPageBreak)=\"insertPageBreak.emit()\"\n (createDocument)=\"createDocument.emit()\"\n (insertImage)=\"insertImage.emit($event)\"\n (rename)=\"rename.emit()\"\n (delete)=\"delete.emit()\"\n (openEditMenu)=\"openEditMenu.emit()\"\n (redo)=\"redo.emit()\"\n (undo)=\"undo.emit()\"\n (cutSelected)=\"cutSelected.emit()\"\n (copySelected)=\"copySelected.emit()\"\n (pasteClipboardData)=\"pasteClipboardData.emit()\"\n (selectAll)=\"selectAll.emit()\"\n (removeSelected)=\"removeSelected.emit()\"\n (insertLink)=\"insertLink.emit()\"\n (createElement)=\"createElement.emit($event)\"\n (changeParagraphStyle)=\"changeParagraphStyle.emit($event)\"\n (changeTextStyle)=\"changeTextStyle.emit($event)\"\n (setNumberingTemplateType)=\"setNumberingTemplateType.emit($event)\"\n (removeNumberings)=\"removeNumberings.emit()\"\n (insertTable)=\"insertTable.emit($event)\" />\n<app-toolbar-actions\n *ngIf=\"styles && showActions\"\n [isViewOnly]=\"isViewOnly\"\n [historyInfo]=\"historyInfo\"\n [styles]=\"styles\"\n (print)=\"print.emit()\"\n (redo)=\"redo.emit()\"\n (undo)=\"undo.emit()\"\n (changeParagraphStyle)=\"changeParagraphStyle.emit($event)\"\n (changeTextStyle)=\"changeTextStyle.emit($event)\"\n (setNumberingTemplateType)=\"setNumberingTemplateType.emit($event)\"\n (removeNumberings)=\"removeNumberings.emit()\"\n (createElement)=\"createElement.emit($event)\" />\n", styles: [":host ::ng-deep{display:flex;position:relative;width:100%;height:32px}app-toolbar-actions{display:flex;position:absolute;align-items:center;justify-content:center;width:100%;height:100%}\n"] }]
13637
+ }], propDecorators: { showActions: [{
13638
+ type: Input
13639
+ }], isViewOnly: [{
13640
+ type: Input
13641
+ }], hasSelection: [{
13642
+ type: Input
13643
+ }], clipboardData: [{
13644
+ type: Input
13645
+ }], historyInfo: [{
13646
+ type: Input
13647
+ }], styles: [{
13648
+ type: Input
13649
+ }], openFileFromDisk: [{
13650
+ type: Output
13651
+ }], addCustomElement: [{
13652
+ type: Output
13653
+ }], saveAs: [{
13654
+ type: Output
13655
+ }], print: [{
13656
+ type: Output
13657
+ }], insertPageBreak: [{
13658
+ type: Output
13659
+ }], createDocument: [{
13660
+ type: Output
13661
+ }], insertImage: [{
13662
+ type: Output
13663
+ }], rename: [{
13664
+ type: Output
13665
+ }], delete: [{
13666
+ type: Output
13667
+ }], openEditMenu: [{
13668
+ type: Output
13649
13669
  }], redo: [{
13650
13670
  type: Output
13651
13671
  }], undo: [{
13652
13672
  type: Output
13653
- }], print: [{
13673
+ }], cutSelected: [{
13674
+ type: Output
13675
+ }], copySelected: [{
13676
+ type: Output
13677
+ }], pasteClipboardData: [{
13678
+ type: Output
13679
+ }], selectAll: [{
13680
+ type: Output
13681
+ }], removeSelected: [{
13682
+ type: Output
13683
+ }], insertLink: [{
13684
+ type: Output
13685
+ }], createElement: [{
13686
+ type: Output
13687
+ }], changeParagraphStyle: [{
13688
+ type: Output
13689
+ }], changeTextStyle: [{
13690
+ type: Output
13691
+ }], setNumberingTemplateType: [{
13692
+ type: Output
13693
+ }], removeNumberings: [{
13694
+ type: Output
13695
+ }], insertTable: [{
13654
13696
  type: Output
13655
13697
  }] } });
13656
13698
 
@@ -13726,7 +13768,7 @@ class ZoomComponent {
13726
13768
  trigger.panelOpen ? trigger.closePanel() : trigger.openPanel();
13727
13769
  }
13728
13770
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ZoomComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13729
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ZoomComponent, selector: "app-zoom", viewQueries: [{ propertyName: "zoom", first: true, predicate: ["zoom"], descendants: true }], ngImport: i0, template: "<input\n [matAutocomplete]=\"auto\"\n [formControl]=\"myControl\"\n #trigger=\"matAutocompleteTrigger\"\n #zoom\n (focusout)=\"onSetPreviousValue()\"\n (keydown)=\"onKeyDown($event, trigger)\" />\n<button\n mat-button\n (click)=\"openPanel($event, trigger)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n</button>\n<mat-autocomplete\n class=\"zoom-autocomplite\"\n #auto=\"matAutocomplete\"\n [panelWidth]=\"80\">\n <mat-option\n *ngFor=\"let zoomPercentage of zoomPercentages\"\n (click)=\"onSelectZoom(zoomPercentage)\">\n {{ zoomPercentage }}%\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{display:flex;align-items:center;width:90px}.zoom-menu{display:flex;justify-content:space-between;align-items:center;min-width:100px}span{padding-left:10%}.mdc-button{min-width:20px;height:25px;padding:0;margin-right:10px}mat-icon{width:20px;margin-right:5%}input{padding-left:10px;font-size:14px;width:60px;border-color:transparent;outline:none}::ng-deep .mdc-menu-surface.mat-mdc-autocomplete-panel{max-height:100%!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i3$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4$3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13771
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ZoomComponent, selector: "app-zoom", viewQueries: [{ propertyName: "zoom", first: true, predicate: ["zoom"], descendants: true }], ngImport: i0, template: "<input\n [matAutocomplete]=\"auto\"\n [formControl]=\"myControl\"\n #trigger=\"matAutocompleteTrigger\"\n #zoom\n (focusout)=\"onSetPreviousValue()\"\n (keydown)=\"onKeyDown($event, trigger)\" />\n<button\n mat-button\n (click)=\"openPanel($event, trigger)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n</button>\n<mat-autocomplete\n class=\"zoom-autocomplite\"\n #auto=\"matAutocomplete\"\n [panelWidth]=\"80\">\n <mat-option\n *ngFor=\"let zoomPercentage of zoomPercentages\"\n (click)=\"onSelectZoom(zoomPercentage)\">\n {{ zoomPercentage }}%\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{display:flex;align-items:center;width:90px}.zoom-menu{display:flex;justify-content:space-between;align-items:center;min-width:100px}span{padding-left:10%}.mdc-button{min-width:20px;height:25px;padding:0;margin-right:10px}mat-icon{width:20px;margin-right:5%}input{padding-left:10px;font-size:14px;width:60px;border-color:transparent;outline:none}::ng-deep .mdc-menu-surface.mat-mdc-autocomplete-panel{max-height:100%!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i3$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4$3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13730
13772
  }
13731
13773
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ZoomComponent, decorators: [{
13732
13774
  type: Component,
@@ -13750,11 +13792,14 @@ class EditorToolbarModule {
13750
13792
  FormatComponent,
13751
13793
  HeadingComponent,
13752
13794
  HeadingComponent,
13795
+ MenuDropdownsComponent,
13753
13796
  NumberingComponent,
13754
13797
  PrintComponent,
13798
+ ToolbarActionsComponent,
13755
13799
  UndoRedoComponent,
13756
13800
  ZoomComponent], imports: [CommonModule,
13757
13801
  FormsModule,
13802
+ InsertTableComponent,
13758
13803
  MatAutocompleteModule,
13759
13804
  MatButtonModule,
13760
13805
  MatButtonToggleModule,
@@ -13767,6 +13812,7 @@ class EditorToolbarModule {
13767
13812
  ReactiveFormsModule], exports: [EditorToolbarComponent] }); }
13768
13813
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorToolbarModule, providers: [CustomIconService], imports: [CommonModule,
13769
13814
  FormsModule,
13815
+ InsertTableComponent,
13770
13816
  MatAutocompleteModule,
13771
13817
  MatButtonModule,
13772
13818
  MatButtonToggleModule,
@@ -13794,14 +13840,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
13794
13840
  FormatComponent,
13795
13841
  HeadingComponent,
13796
13842
  HeadingComponent,
13843
+ MenuDropdownsComponent,
13797
13844
  NumberingComponent,
13798
13845
  PrintComponent,
13846
+ ToolbarActionsComponent,
13799
13847
  UndoRedoComponent,
13800
13848
  ZoomComponent
13801
13849
  ],
13802
13850
  imports: [
13803
13851
  CommonModule,
13804
13852
  FormsModule,
13853
+ InsertTableComponent,
13805
13854
  MatAutocompleteModule,
13806
13855
  MatButtonModule,
13807
13856
  MatButtonToggleModule,
@@ -13904,20 +13953,24 @@ class ConfirmDialogComponent {
13904
13953
  constructor(data, ref) {
13905
13954
  this.data = data;
13906
13955
  this.ref = ref;
13956
+ this.modal = true;
13907
13957
  }
13908
13958
  onClose(status) {
13909
13959
  this.ref.close(status);
13910
13960
  }
13911
13961
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ConfirmDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$4.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
13912
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ConfirmDialogComponent, isStandalone: true, selector: "app-confirm-dialog", ngImport: i0, template: "<p class=\"title\">{{ data.title ? data.title : 'Confirmation' }}</p>\n<div class=\"content\">\n <p>{{ data.message }}</p>\n</div>\n<div class=\"actions\">\n <button\n id=\"confirm-dialog-cancel-btn\"\n mat-button\n (click)=\"onClose(false)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n {{ data.cancel ? data.cancel : 'Cancel' }}\n </button>\n <button\n id=\"confirm-dialog-confirm-btn\"\n mat-raised-button\n class=\"delete-btn\"\n color=\"primary\"\n (click)=\"onClose(true)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-done-thin\"></mat-icon>\n {{ data.confirm ? data.confirm : 'Delete' }}\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-width:400px;max-width:440px;min-height:208px}.title{font-size:18px;font-weight:700;text-transform:capitalize;padding:24px 24px 12px;margin:0}.content{display:flex;flex:1;font-size:16px;line-height:20px;padding:20px 24px 16px}.content p{margin:0;overflow:hidden;text-overflow:ellipsis}.actions{display:flex;justify-content:center;margin-bottom:24px;gap:8px}.actions button{height:40px;width:120px}.actions button mat-icon{font-size:24px;height:24px;width:24px}.actions button .mat-button-toggle-label-content{padding:0 2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
13962
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ConfirmDialogComponent, isStandalone: true, selector: "app-confirm-dialog", host: { properties: { "class.noder-modal": "this.modal" } }, ngImport: i0, template: "<p class=\"title\">{{ data.title ? data.title : 'Confirmation' }}</p>\n<div class=\"content\">\n <p>{{ data.message }}</p>\n</div>\n<div class=\"actions\">\n <button\n id=\"confirm-dialog-cancel-btn\"\n mat-button\n (click)=\"onClose(false)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n {{ data.cancel ? data.cancel : 'Cancel' }}\n </button>\n <button\n id=\"confirm-dialog-confirm-btn\"\n mat-raised-button\n class=\"delete-btn\"\n color=\"primary\"\n (click)=\"onClose(true)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-done-thin\"></mat-icon>\n {{ data.confirm ? data.confirm : 'Delete' }}\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-width:400px;max-width:440px;min-height:208px}.title{font-size:18px;font-weight:700;text-transform:capitalize;padding:24px 24px 12px;margin:0;border-bottom-width:1px;border-bottom-style:solid}.content{display:flex;flex:1;font-size:16px;line-height:20px;padding:20px 24px 16px}.content p{margin:0;overflow:hidden;text-overflow:ellipsis}.actions{display:flex;justify-content:center;margin-bottom:24px;gap:8px}.actions button{height:40px;width:120px;text-transform:uppercase}.actions button mat-icon{font-size:24px;height:24px;width:24px}.actions button .mat-button-toggle-label-content{padding:0 2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
13913
13963
  }
13914
13964
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
13915
13965
  type: Component,
13916
- args: [{ standalone: true, imports: [CommonModule, MatDialogModule, MatButtonModule, MatIconModule], selector: 'app-confirm-dialog', template: "<p class=\"title\">{{ data.title ? data.title : 'Confirmation' }}</p>\n<div class=\"content\">\n <p>{{ data.message }}</p>\n</div>\n<div class=\"actions\">\n <button\n id=\"confirm-dialog-cancel-btn\"\n mat-button\n (click)=\"onClose(false)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n {{ data.cancel ? data.cancel : 'Cancel' }}\n </button>\n <button\n id=\"confirm-dialog-confirm-btn\"\n mat-raised-button\n class=\"delete-btn\"\n color=\"primary\"\n (click)=\"onClose(true)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-done-thin\"></mat-icon>\n {{ data.confirm ? data.confirm : 'Delete' }}\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-width:400px;max-width:440px;min-height:208px}.title{font-size:18px;font-weight:700;text-transform:capitalize;padding:24px 24px 12px;margin:0}.content{display:flex;flex:1;font-size:16px;line-height:20px;padding:20px 24px 16px}.content p{margin:0;overflow:hidden;text-overflow:ellipsis}.actions{display:flex;justify-content:center;margin-bottom:24px;gap:8px}.actions button{height:40px;width:120px}.actions button mat-icon{font-size:24px;height:24px;width:24px}.actions button .mat-button-toggle-label-content{padding:0 2px}\n"] }]
13966
+ args: [{ standalone: true, imports: [CommonModule, MatDialogModule, MatButtonModule, MatIconModule], selector: 'app-confirm-dialog', template: "<p class=\"title\">{{ data.title ? data.title : 'Confirmation' }}</p>\n<div class=\"content\">\n <p>{{ data.message }}</p>\n</div>\n<div class=\"actions\">\n <button\n id=\"confirm-dialog-cancel-btn\"\n mat-button\n (click)=\"onClose(false)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n {{ data.cancel ? data.cancel : 'Cancel' }}\n </button>\n <button\n id=\"confirm-dialog-confirm-btn\"\n mat-raised-button\n class=\"delete-btn\"\n color=\"primary\"\n (click)=\"onClose(true)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-done-thin\"></mat-icon>\n {{ data.confirm ? data.confirm : 'Delete' }}\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-width:400px;max-width:440px;min-height:208px}.title{font-size:18px;font-weight:700;text-transform:capitalize;padding:24px 24px 12px;margin:0;border-bottom-width:1px;border-bottom-style:solid}.content{display:flex;flex:1;font-size:16px;line-height:20px;padding:20px 24px 16px}.content p{margin:0;overflow:hidden;text-overflow:ellipsis}.actions{display:flex;justify-content:center;margin-bottom:24px;gap:8px}.actions button{height:40px;width:120px;text-transform:uppercase}.actions button mat-icon{font-size:24px;height:24px;width:24px}.actions button .mat-button-toggle-label-content{padding:0 2px}\n"] }]
13917
13967
  }], ctorParameters: () => [{ type: undefined, decorators: [{
13918
13968
  type: Inject,
13919
13969
  args: [MAT_DIALOG_DATA]
13920
- }] }, { type: i1$4.MatDialogRef }] });
13970
+ }] }, { type: i1$4.MatDialogRef }], propDecorators: { modal: [{
13971
+ type: HostBinding,
13972
+ args: ['class.noder-modal']
13973
+ }] } });
13921
13974
 
13922
13975
  const URL_PATTERN = /^(https?:\/\/)?(www\.)?[-a-zA-Z0-9áéíóúÁÉÍÓÚüÜñÑ@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9áéíóúÁÉÍÓÚüÜñÑ@:%_+.~#?&/=]*)$/;
13923
13976
  class ValidationHelper {
@@ -13938,6 +13991,7 @@ class AddLinkDialogComponent {
13938
13991
  this.dialogRef = dialogRef;
13939
13992
  this.data = data;
13940
13993
  this.fb = fb;
13994
+ this.modal = true;
13941
13995
  dialogRef.disableClose = true;
13942
13996
  this.form = this.fb.group({
13943
13997
  text: [data.text, Validators.required],
@@ -13956,8 +14010,8 @@ class AddLinkDialogComponent {
13956
14010
  }
13957
14011
  this.onApply();
13958
14012
  }
13959
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: AddLinkDialogComponent, deps: [{ token: i1$4.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2$3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
13960
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: AddLinkDialogComponent, isStandalone: true, selector: "app-add-link-dialog", ngImport: i0, template: "<div mat-dialog-title>{{ data.title }}</div>\n<div\n mat-dialog-content\n [formGroup]=\"form\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ data.textPlaceholder }}</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.text\"\n (keydown.enter)=\"onEnter()\"\n required />\n <mat-error>The {{ data.textPlaceholder }} is required.</mat-error>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ data.linkPlaceholder }}</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.link\"\n (keydown.enter)=\"onEnter()\"\n required />\n <mat-error>The {{ data.linkPlaceholder }} is required.</mat-error>\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n Cancel\n </button>\n <button\n mat-raised-button\n color=\"primary\"\n class=\"apply-btn\"\n [disabled]=\"form.invalid\"\n (click)=\"onApply()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-done-thin\"></mat-icon>\n Apply\n </button>\n</div>\n", styles: [":host{height:300px;width:430px;display:block;overflow:hidden}:host ::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: 12px;height:48px}:host ::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:12px}.mat-mdc-dialog-title{font-weight:600;padding-top:5px}mat-form-field{width:100%}.mat-mdc-dialog-content{padding-top:10px;padding-bottom:0}.mat-mdc-dialog-actions{display:flex;justify-content:center;align-items:center;padding-top:5px;height:25%}.mat-mdc-dialog-actions button{width:30%;height:100%;letter-spacing:1px;border-radius:8px}.mat-mdc-dialog-actions button .apply-btn{font-weight:400}.mat-mdc-dialog-actions button .mat-icon{font-size:24px;height:24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14013
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: AddLinkDialogComponent, deps: [{ token: i1$4.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
14014
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: AddLinkDialogComponent, isStandalone: true, selector: "app-add-link-dialog", host: { properties: { "class.noder-modal": "this.modal" } }, ngImport: i0, template: "<div mat-dialog-title>{{ data.title }}</div>\n<div\n mat-dialog-content\n [formGroup]=\"form\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ data.textPlaceholder }}</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.text\"\n (keydown.enter)=\"onEnter()\"\n required />\n <mat-error>The {{ data.textPlaceholder }} is required.</mat-error>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ data.linkPlaceholder }}</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.link\"\n (keydown.enter)=\"onEnter()\"\n required />\n <mat-error>The {{ data.linkPlaceholder }} is required.</mat-error>\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n Cancel\n </button>\n <button\n mat-raised-button\n color=\"primary\"\n class=\"apply-btn\"\n [disabled]=\"form.invalid\"\n (click)=\"onApply()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-done-thin\"></mat-icon>\n Apply\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:300px;width:430px;overflow:hidden}:host ::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: 12px;height:48px}:host ::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:12px}.mat-mdc-dialog-title{font-weight:600;padding-top:5px}mat-form-field{width:100%}.mat-mdc-dialog-content{padding-top:10px;padding-bottom:0}.mat-mdc-dialog-actions{display:flex;justify-content:center;padding-top:5px;height:40px;margin-bottom:30px}.mat-mdc-dialog-actions button{width:30%;height:100%;letter-spacing:1px;border-radius:8px;text-transform:uppercase}.mat-mdc-dialog-actions button .apply-btn{font-weight:400}.mat-mdc-dialog-actions button .mat-icon{font-size:24px;height:24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13961
14015
  }
13962
14016
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: AddLinkDialogComponent, decorators: [{
13963
14017
  type: Component,
@@ -13970,11 +14024,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
13970
14024
  MatInputModule,
13971
14025
  ReactiveFormsModule,
13972
14026
  TranslateModule
13973
- ], selector: 'app-add-link-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div mat-dialog-title>{{ data.title }}</div>\n<div\n mat-dialog-content\n [formGroup]=\"form\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ data.textPlaceholder }}</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.text\"\n (keydown.enter)=\"onEnter()\"\n required />\n <mat-error>The {{ data.textPlaceholder }} is required.</mat-error>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ data.linkPlaceholder }}</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.link\"\n (keydown.enter)=\"onEnter()\"\n required />\n <mat-error>The {{ data.linkPlaceholder }} is required.</mat-error>\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n Cancel\n </button>\n <button\n mat-raised-button\n color=\"primary\"\n class=\"apply-btn\"\n [disabled]=\"form.invalid\"\n (click)=\"onApply()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-done-thin\"></mat-icon>\n Apply\n </button>\n</div>\n", styles: [":host{height:300px;width:430px;display:block;overflow:hidden}:host ::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: 12px;height:48px}:host ::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:12px}.mat-mdc-dialog-title{font-weight:600;padding-top:5px}mat-form-field{width:100%}.mat-mdc-dialog-content{padding-top:10px;padding-bottom:0}.mat-mdc-dialog-actions{display:flex;justify-content:center;align-items:center;padding-top:5px;height:25%}.mat-mdc-dialog-actions button{width:30%;height:100%;letter-spacing:1px;border-radius:8px}.mat-mdc-dialog-actions button .apply-btn{font-weight:400}.mat-mdc-dialog-actions button .mat-icon{font-size:24px;height:24px}\n"] }]
14027
+ ], selector: 'app-add-link-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div mat-dialog-title>{{ data.title }}</div>\n<div\n mat-dialog-content\n [formGroup]=\"form\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ data.textPlaceholder }}</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.text\"\n (keydown.enter)=\"onEnter()\"\n required />\n <mat-error>The {{ data.textPlaceholder }} is required.</mat-error>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ data.linkPlaceholder }}</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.link\"\n (keydown.enter)=\"onEnter()\"\n required />\n <mat-error>The {{ data.linkPlaceholder }} is required.</mat-error>\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n Cancel\n </button>\n <button\n mat-raised-button\n color=\"primary\"\n class=\"apply-btn\"\n [disabled]=\"form.invalid\"\n (click)=\"onApply()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-done-thin\"></mat-icon>\n Apply\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:300px;width:430px;overflow:hidden}:host ::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: 12px;height:48px}:host ::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:12px}.mat-mdc-dialog-title{font-weight:600;padding-top:5px}mat-form-field{width:100%}.mat-mdc-dialog-content{padding-top:10px;padding-bottom:0}.mat-mdc-dialog-actions{display:flex;justify-content:center;padding-top:5px;height:40px;margin-bottom:30px}.mat-mdc-dialog-actions button{width:30%;height:100%;letter-spacing:1px;border-radius:8px;text-transform:uppercase}.mat-mdc-dialog-actions button .apply-btn{font-weight:400}.mat-mdc-dialog-actions button .mat-icon{font-size:24px;height:24px}\n"] }]
13974
14028
  }], ctorParameters: () => [{ type: i1$4.MatDialogRef }, { type: AddLinkDialogOptions, decorators: [{
13975
14029
  type: Inject,
13976
14030
  args: [MAT_DIALOG_DATA]
13977
- }] }, { type: i2$3.FormBuilder }] });
14031
+ }] }, { type: i2$2.FormBuilder }], propDecorators: { modal: [{
14032
+ type: HostBinding,
14033
+ args: ['class.noder-modal']
14034
+ }] } });
13978
14035
 
13979
14036
  class DocumentNameModel {
13980
14037
  constructor(fields) {
@@ -14037,5 +14094,5 @@ class OperationModel {
14037
14094
  * Generated bundle index. Do not edit.
14038
14095
  */
14039
14096
 
14040
- export { AddLinkDialogComponent, AddLinkDialogOptions, Alignment, BaseNoderComponent, BreakTypes, CommandModel, CommandType, CommandsService, ConfirmDialogComponent, DEFAULT_BACKGROUND_COLOR, DEFAULT_EDGE_MAX_HEIGHT_MULTIPLIER, DEFAULT_FILE_NAME, DEFAULT_FONT_COLOR, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_HEADINGS, DEFAULT_HEADING_STYLE_ID, DEFAULT_PARAGRAPH_STYLE, DEFAULT_TAB_WIDTH, DEFAULT_TEXT_STYLE, DefaultPageSize, DocumentInfo, DocumentModel, DocumentNameModel, DocxModel, DomHelper, EditorComponent, EditorHeaderComponent, EditorModule, EditorSearchDialogComponent, EditorService, EditorToolbarComponent, EditorToolbarModule, ElementDataModel, ElementModel, ExternalElementModel, ExternalElementService, FileSourceModel, FormatStyleHelper, HYPERLINK_FONT_COLOR, HYPERLINK_HEADING_STYLE_ID, ImageApiService, ImageDataModel, LastDocumentRevisionModel, Mode, NEW_LINE_MARKUP, NoderExternalComponent, NumberingLevelModel, OpenDocx, OperationModel, OperationsHistoryInfoModel, PageType, PaginatorSizes, ParagraphStyleModel, RevisionHelper, RevisionModel, SetDocx, TextStyleModel };
14097
+ export { AddLinkDialogComponent, AddLinkDialogOptions, Alignment, BaseNoderComponent, BreakTypes, CommandModel, CommandType, CommandsService, ConfirmDialogComponent, DEFAULT_BACKGROUND_COLOR, DEFAULT_EDGE_MAX_HEIGHT_MULTIPLIER, DEFAULT_FILE_NAME, DEFAULT_FONT_COLOR, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_HEADINGS, DEFAULT_HEADING_STYLE_ID, DEFAULT_PARAGRAPH_STYLE, DEFAULT_TAB_WIDTH, DEFAULT_TEXT_STYLE, DefaultPageSize, DocumentInfo, DocumentModel, DocumentNameModel, DocxModel, DomHelper, EditorComponent, EditorModule, EditorSearchDialogComponent, EditorService, EditorTitleComponent, EditorToolbarComponent, EditorToolbarModule, ElementDataModel, ElementModel, ExternalElementModel, ExternalElementService, FileSourceModel, FormatStyleHelper, HYPERLINK_FONT_COLOR, HYPERLINK_HEADING_STYLE_ID, ImageApiService, ImageDataModel, LastDocumentRevisionModel, Mode, NEW_LINE_MARKUP, NoderExternalComponent, NumberingLevelModel, OpenDocx, OperationModel, OperationsHistoryInfoModel, PageType, PaginatorSizes, ParagraphStyleModel, RevisionHelper, RevisionModel, SetDocx, TextStyleModel };
14041
14098
  //# sourceMappingURL=talrace-ngx-noder.mjs.map