@talrace/ngx-noder 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/+shared/add-link-dialog/add-link-dialog.component.mjs +67 -0
- package/esm2022/lib/+shared/editor/core/edit.session.mjs +7 -10
- package/esm2022/lib/+shared/editor/core/editor.mjs +7 -5
- package/esm2022/lib/+shared/editor/core/helpers/paragraph.helper.mjs +53 -16
- package/esm2022/lib/+shared/editor/core/helpers/position.helper.mjs +4 -1
- package/esm2022/lib/+shared/editor/core/models/line-info.model.mjs +1 -1
- package/esm2022/lib/+shared/editor/core/paging/pages.wrap.mjs +19 -12
- package/esm2022/lib/+shared/editor/core/paging/paragraph.mjs +3 -3
- package/esm2022/lib/+shared/editor/core/paging/text-line-info.mjs +3 -3
- package/esm2022/lib/+shared/editor/custom-components/external-element/models/external-element.model.mjs +3 -2
- package/esm2022/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.mjs +4 -3
- package/esm2022/lib/+shared/editor/custom-components/table/cell-resizer/cell-resizer.mjs +4 -4
- package/esm2022/lib/+shared/editor/custom-components/table/components/table.component.mjs +116 -10
- package/esm2022/lib/+shared/editor/custom-components/table/selection/table-selection.mjs +7 -1
- package/esm2022/lib/+shared/editor/editor.component.mjs +6 -4
- package/esm2022/lib/+shared/editor/execution/regulator.service.mjs +3 -3
- package/esm2022/lib/+shared/editor/operations/helpers/table-operations.helper.mjs +6 -3
- package/esm2022/lib/+shared/helpers/revision.helper.mjs +91 -0
- package/esm2022/lib/+shared/helpers/validation.helper.mjs +7 -0
- package/esm2022/lib/models/generated/cell.model.mjs +1 -1
- package/esm2022/public-api.mjs +5 -2
- package/fesm2022/talrace-ngx-noder.mjs +384 -79
- package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
- package/lib/+shared/add-link-dialog/add-link-dialog.component.d.ts +26 -0
- package/lib/+shared/editor/core/editor.d.ts +2 -1
- package/lib/+shared/editor/core/helpers/paragraph.helper.d.ts +5 -2
- package/lib/+shared/editor/core/models/line-info.model.d.ts +1 -0
- package/lib/+shared/editor/core/paging/pages.wrap.d.ts +6 -5
- package/lib/+shared/editor/core/paging/paragraph.d.ts +5 -2
- package/lib/+shared/editor/core/paging/text-line-info.d.ts +2 -0
- package/lib/+shared/editor/custom-components/external-element/models/external-element.model.d.ts +2 -1
- package/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.d.ts +2 -1
- package/lib/+shared/editor/custom-components/table/cell-resizer/cell-resizer.d.ts +1 -0
- package/lib/+shared/editor/custom-components/table/components/table.component.d.ts +18 -1
- package/lib/+shared/editor/editor.component.d.ts +2 -1
- package/lib/+shared/editor/execution/regulator.service.d.ts +1 -1
- package/lib/+shared/helpers/revision.helper.d.ts +15 -0
- package/lib/+shared/helpers/validation.helper.d.ts +5 -0
- package/lib/models/generated/cell.model.d.ts +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -1
- package/src/lib/+shared/confirm-dialog/_theme.scss +30 -0
- package/src/lib/+shared/editor/_theme.scss +7 -0
- package/src/lib/+shared/editor-toolbar/_theme.scss +7 -0
- package/src/scss/_fonts.scss +3 -0
- package/src/scss/_mixins.scss +49 -0
- package/src/scss/_variables.scss +1 -0
|
@@ -22,17 +22,17 @@ import { MatTooltipModule } from '@angular/material/tooltip';
|
|
|
22
22
|
import * as i1$4 from '@angular/material/dialog';
|
|
23
23
|
import { MatDialogModule, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
24
24
|
import * as i2$3 from '@angular/forms';
|
|
25
|
-
import { ReactiveFormsModule, FormsModule, FormControl } from '@angular/forms';
|
|
26
|
-
import * as
|
|
25
|
+
import { ReactiveFormsModule, FormsModule, FormControl, Validators } from '@angular/forms';
|
|
26
|
+
import * as i4$1 from '@angular/material/form-field';
|
|
27
27
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
28
28
|
import * as i6 from '@angular/material/input';
|
|
29
29
|
import { MatInputModule } from '@angular/material/input';
|
|
30
|
-
import * as i4$
|
|
30
|
+
import * as i4$2 from '@angular/material/menu';
|
|
31
31
|
import { MatMenuModule } from '@angular/material/menu';
|
|
32
|
-
import * as i7$
|
|
32
|
+
import * as i7$1 from '@angular/material/select';
|
|
33
33
|
import { MatSelectModule } from '@angular/material/select';
|
|
34
34
|
import * as i2$2 from '@angular/platform-browser';
|
|
35
|
-
import * as i4$
|
|
35
|
+
import * as i4$3 from '@angular/material/core';
|
|
36
36
|
import * as i3$1 from '@angular/material/autocomplete';
|
|
37
37
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
38
38
|
import * as i1$3 from '@angular/material/button-toggle';
|
|
@@ -40,6 +40,7 @@ import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
|
40
40
|
import * as i5$1 from 'ngx-colors';
|
|
41
41
|
import { NgxColorsModule } from 'ngx-colors';
|
|
42
42
|
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
43
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
43
44
|
|
|
44
45
|
const DEFAULT_FILE_NAME = 'Untitled document';
|
|
45
46
|
|
|
@@ -302,8 +303,9 @@ class ElementDataModel {
|
|
|
302
303
|
}
|
|
303
304
|
|
|
304
305
|
class ExternalElementModel {
|
|
305
|
-
constructor(name, icon, type, componentType, factoryMethod) {
|
|
306
|
+
constructor(name, title, icon, type, componentType, factoryMethod) {
|
|
306
307
|
this.name = name;
|
|
308
|
+
this.title = title;
|
|
307
309
|
this.icon = icon;
|
|
308
310
|
this.type = type;
|
|
309
311
|
this.componentType = componentType;
|
|
@@ -1891,6 +1893,9 @@ class PositionHelper {
|
|
|
1891
1893
|
sizeMax = tokens[currentColumn];
|
|
1892
1894
|
}
|
|
1893
1895
|
}
|
|
1896
|
+
if (tokens[tokenIndex]?.isTable) {
|
|
1897
|
+
sizeMax.ascent = paragraphInfo.lineHeight;
|
|
1898
|
+
}
|
|
1894
1899
|
const paragraph = paragraphs[paragraphInfo.paragraphIndex];
|
|
1895
1900
|
const paragraphTop = paragraph.distanceFromTop || 0;
|
|
1896
1901
|
const linePaddingLeft = paragraph.textLinesInfo[paragraphInfo.lineIndex].paddingLeft;
|
|
@@ -2673,7 +2678,7 @@ class Lines {
|
|
|
2673
2678
|
}
|
|
2674
2679
|
|
|
2675
2680
|
class ParagraphHelper {
|
|
2676
|
-
static processTextLinesProperties(currentParagraph, prevParagraphInfo, pagesInfo) {
|
|
2681
|
+
static processTextLinesProperties(currentParagraph, prevParagraphInfo, pagesInfo, tables) {
|
|
2677
2682
|
let currentPageContentHeight = prevParagraphInfo.paragraphHeight;
|
|
2678
2683
|
let currentPage = prevParagraphInfo.lastPage;
|
|
2679
2684
|
let previousLine = null;
|
|
@@ -2682,17 +2687,50 @@ class ParagraphHelper {
|
|
|
2682
2687
|
textLineInfo.screenLine = ++prevParagraphInfo.paragraphLastLine;
|
|
2683
2688
|
textLineInfo.firstLinePageOffset = 0;
|
|
2684
2689
|
textLineInfo.endPageOffset = 0;
|
|
2685
|
-
|
|
2686
|
-
const
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
currentPage
|
|
2695
|
-
|
|
2690
|
+
textLineInfo.splitOffset = 0;
|
|
2691
|
+
const textLineHeight = textLineInfo.height + textLineInfo.offsetBefore;
|
|
2692
|
+
const leftSpaceOnPage = currentPageVerticalData.contentHeight - currentPageContentHeight;
|
|
2693
|
+
if (!textLineInfo.hasTable &&
|
|
2694
|
+
(prevParagraphInfo.paragraphLastLine === 0 || (textLineHeight <= leftSpaceOnPage && !textLineInfo.isAfterPageBreak))) {
|
|
2695
|
+
if (previousLine?.hasTable && previousLine.page != currentPage) {
|
|
2696
|
+
textLineInfo.splitOffset = currentPageContentHeight;
|
|
2697
|
+
}
|
|
2698
|
+
currentPageContentHeight += textLineHeight + textLineInfo.offsetAfter;
|
|
2699
|
+
textLineInfo.page = currentPage;
|
|
2700
|
+
previousLine = textLineInfo;
|
|
2701
|
+
continue;
|
|
2702
|
+
}
|
|
2703
|
+
const nextPageVerticalData = PageHelper.getVerticalData(currentPage + 1, pagesInfo.pagesVerticalData);
|
|
2704
|
+
const spaceBetweenPagesContent = pagesInfo.pagesSpace + currentPageVerticalData.marginBottom + nextPageVerticalData.marginTop;
|
|
2705
|
+
if (textLineInfo.hasTable) {
|
|
2706
|
+
const { splitsCount, leftHeight, tableHeight } = ParagraphHelper.processTableSplit(tables, currentParagraph.startInsertIndex, leftSpaceOnPage, spaceBetweenPagesContent, currentPageVerticalData.contentHeight);
|
|
2707
|
+
textLineInfo.height = tableHeight;
|
|
2708
|
+
textLineInfo.page = currentPage;
|
|
2709
|
+
currentPage += splitsCount;
|
|
2710
|
+
if (splitsCount) {
|
|
2711
|
+
if (textLineInfo.height === leftHeight) {
|
|
2712
|
+
textLineInfo.page++;
|
|
2713
|
+
const pageOffset = spaceBetweenPagesContent + leftSpaceOnPage;
|
|
2714
|
+
if (previousLine) {
|
|
2715
|
+
previousLine.endPageOffset = pageOffset;
|
|
2716
|
+
}
|
|
2717
|
+
else {
|
|
2718
|
+
currentParagraph.pagePreviousContentHeight = 0;
|
|
2719
|
+
textLineInfo.firstLinePageOffset = pageOffset;
|
|
2720
|
+
}
|
|
2721
|
+
}
|
|
2722
|
+
currentPageContentHeight = leftHeight + textLineInfo.offsetBefore + textLineInfo.offsetAfter;
|
|
2723
|
+
currentPageVerticalData = nextPageVerticalData;
|
|
2724
|
+
}
|
|
2725
|
+
else {
|
|
2726
|
+
currentPageContentHeight += textLineInfo.height + textLineInfo.offsetBefore + textLineInfo.offsetAfter;
|
|
2727
|
+
}
|
|
2728
|
+
}
|
|
2729
|
+
else if (prevParagraphInfo.paragraphLastLine !== 0 && (textLineHeight > leftSpaceOnPage || textLineInfo.isAfterPageBreak)) {
|
|
2730
|
+
const pageOffset = spaceBetweenPagesContent + leftSpaceOnPage;
|
|
2731
|
+
textLineInfo.page = ++currentPage;
|
|
2732
|
+
currentPageVerticalData = nextPageVerticalData;
|
|
2733
|
+
currentPageContentHeight = textLineHeight + textLineInfo.offsetAfter;
|
|
2696
2734
|
if (previousLine) {
|
|
2697
2735
|
previousLine.endPageOffset = pageOffset;
|
|
2698
2736
|
}
|
|
@@ -2701,8 +2739,6 @@ class ParagraphHelper {
|
|
|
2701
2739
|
textLineInfo.firstLinePageOffset = pageOffset;
|
|
2702
2740
|
}
|
|
2703
2741
|
}
|
|
2704
|
-
currentPageContentHeight = contentHeightWithLine + textLineInfo.offsetAfter;
|
|
2705
|
-
textLineInfo.page = currentPage;
|
|
2706
2742
|
previousLine = textLineInfo;
|
|
2707
2743
|
}
|
|
2708
2744
|
}
|
|
@@ -2748,7 +2784,9 @@ class ParagraphHelper {
|
|
|
2748
2784
|
return paragraphTextLinesInfo.reduce((prev, next) => prev + next.height + next.endPageOffset + next.offsetBefore + next.offsetAfter, 0);
|
|
2749
2785
|
}
|
|
2750
2786
|
static getPageLinesHeight(paragraphTextLinesInfo, page) {
|
|
2751
|
-
return paragraphTextLinesInfo
|
|
2787
|
+
return paragraphTextLinesInfo
|
|
2788
|
+
.filter(line => line.page === page)
|
|
2789
|
+
.reduce((prev, next) => prev + next.height + next.offsetAfter + next.splitOffset, 0);
|
|
2752
2790
|
}
|
|
2753
2791
|
static processOffsetLineWithNumberingMarker(textLineInfo, markerHeight, offsetBefore) {
|
|
2754
2792
|
if (!markerHeight || textLineInfo.height >= markerHeight) {
|
|
@@ -2801,6 +2839,10 @@ class ParagraphHelper {
|
|
|
2801
2839
|
}
|
|
2802
2840
|
return indents;
|
|
2803
2841
|
}
|
|
2842
|
+
static processTableSplit(tables, startInsertIndex, leftSpaceOnPage, spaceBetweenPagesContent, contentHeight) {
|
|
2843
|
+
const table = tables.find(x => x.instance.insertIndex >= startInsertIndex);
|
|
2844
|
+
return table.instance.processSplit(leftSpaceOnPage, spaceBetweenPagesContent, contentHeight);
|
|
2845
|
+
}
|
|
2804
2846
|
}
|
|
2805
2847
|
|
|
2806
2848
|
class TextLayer extends EventEmitting {
|
|
@@ -3972,7 +4014,7 @@ class Editor extends EventEmitting {
|
|
|
3972
4014
|
get targets() {
|
|
3973
4015
|
return this.regulatorService.getCurrentSessionTargets();
|
|
3974
4016
|
}
|
|
3975
|
-
constructor(model, container, editorService, regulatorService, commandsService, clipboard) {
|
|
4017
|
+
constructor(model, container, editorService, regulatorService, commandsService, clipboard, customPageWidth) {
|
|
3976
4018
|
super();
|
|
3977
4019
|
this.model = model;
|
|
3978
4020
|
this.container = container;
|
|
@@ -3980,6 +4022,7 @@ class Editor extends EventEmitting {
|
|
|
3980
4022
|
this.regulatorService = regulatorService;
|
|
3981
4023
|
this.commandsService = commandsService;
|
|
3982
4024
|
this.clipboard = clipboard;
|
|
4025
|
+
this.customPageWidth = customPageWidth;
|
|
3983
4026
|
this.MAX_COUNT = 999;
|
|
3984
4027
|
this.parentTagName = 'APP-EDITOR';
|
|
3985
4028
|
this.tableCellTagName = 'APP-NODER-TABLE-CELL';
|
|
@@ -4826,7 +4869,8 @@ class Editor extends EventEmitting {
|
|
|
4826
4869
|
return textInterval;
|
|
4827
4870
|
}
|
|
4828
4871
|
initMainSession() {
|
|
4829
|
-
this.
|
|
4872
|
+
const pageWidth = this.customPageWidth ?? this.model.pageWidth;
|
|
4873
|
+
this.container.nativeElement.style.maxWidth = `${pageWidth}px`;
|
|
4830
4874
|
const pageMargin = new MarginModel({
|
|
4831
4875
|
left: this.model.marginLeft,
|
|
4832
4876
|
right: this.model.marginRight,
|
|
@@ -4835,7 +4879,7 @@ class Editor extends EventEmitting {
|
|
|
4835
4879
|
header: this.model.marginHeader,
|
|
4836
4880
|
footer: this.model.marginFooter
|
|
4837
4881
|
});
|
|
4838
|
-
this.regulatorService.addMainSession(this.model, pageMargin, this.container);
|
|
4882
|
+
this.regulatorService.addMainSession(this.model, pageMargin, pageWidth, this.container);
|
|
4839
4883
|
this.mainSession.addEventListener('changeScrollTop', this.onScrollTopChange);
|
|
4840
4884
|
this.session.addEventListener('setStyles', this.setStyles);
|
|
4841
4885
|
this.mainRenderer.scrollTo(0);
|
|
@@ -5090,7 +5134,7 @@ class Editor extends EventEmitting {
|
|
|
5090
5134
|
}
|
|
5091
5135
|
changedEdgeHeightSubscription() {
|
|
5092
5136
|
return this.editorService.changedEdgeHeight$.subscribe(edgeType => {
|
|
5093
|
-
this.mainSession.pagesWrap.updatePageVerticalData(edgeType, this.regulatorService.edgeEditingPage);
|
|
5137
|
+
this.mainSession.pagesWrap.updatePageVerticalData(edgeType, this.regulatorService.edgeEditingPage, this.session.wrapParagraphIndex);
|
|
5094
5138
|
});
|
|
5095
5139
|
}
|
|
5096
5140
|
undoSubscription() {
|
|
@@ -6029,7 +6073,7 @@ class CellResizer {
|
|
|
6029
6073
|
this.spaceRight = this.table.columns[this.cellResizerParameters.columnIndex].width - this.minCellWidth;
|
|
6030
6074
|
this.startX =
|
|
6031
6075
|
this.tableEl.offsetLeft +
|
|
6032
|
-
this.tableEl.rows[this.
|
|
6076
|
+
this.tableEl.rows[this.splitRowIndex].cells[this.cellResizerParameters.cellIndex].getBoundingClientRect().left;
|
|
6033
6077
|
this.columnPositionChanged(this.startX - this.resizerBorderSize);
|
|
6034
6078
|
this.addHorizontalMouseSubscriptions();
|
|
6035
6079
|
}
|
|
@@ -6042,7 +6086,7 @@ class CellResizer {
|
|
|
6042
6086
|
if (this.table.columns.length > nextColumnIndex) {
|
|
6043
6087
|
this.spaceRight = this.table.columns[nextColumnIndex].width - this.minCellWidth;
|
|
6044
6088
|
}
|
|
6045
|
-
const cellRect = this.tableEl.rows[this.
|
|
6089
|
+
const cellRect = this.tableEl.rows[this.splitRowIndex].cells[this.cellResizerParameters.columnIndex].getBoundingClientRect();
|
|
6046
6090
|
this.startX = this.tableEl.offsetLeft + cellRect.left + cellRect.width - this.resizerBorderSize;
|
|
6047
6091
|
this.columnPositionChanged(this.startX);
|
|
6048
6092
|
this.addHorizontalMouseSubscriptions();
|
|
@@ -6090,7 +6134,7 @@ class CellResizer {
|
|
|
6090
6134
|
return;
|
|
6091
6135
|
}
|
|
6092
6136
|
this.resizerEl.setAttribute('style', `height:${this.resizerHeight}px; `);
|
|
6093
|
-
this.resizerEl.setAttribute('style', `height:${this.resizerHeight}px;left:${position - this.resizerEl.getBoundingClientRect().x}px`);
|
|
6137
|
+
this.resizerEl.setAttribute('style', `height:${this.resizerHeight}px;left:${position - this.resizerEl.getBoundingClientRect().x}px;top:${this.startY}px`);
|
|
6094
6138
|
}
|
|
6095
6139
|
}
|
|
6096
6140
|
|
|
@@ -6359,6 +6403,9 @@ class TableSelection {
|
|
|
6359
6403
|
return;
|
|
6360
6404
|
}
|
|
6361
6405
|
const selectionRange = this.getSelectionRangeForMenuOverlay(event.target);
|
|
6406
|
+
if (!selectionRange) {
|
|
6407
|
+
return;
|
|
6408
|
+
}
|
|
6362
6409
|
const targets = this.getTargetsForMenuOverlay(selectionRange);
|
|
6363
6410
|
const canRemoveRows = selectionRange.rowIndexes.endIndex - selectionRange.rowIndexes.startIndex + 1 < this.rowMatrix.length;
|
|
6364
6411
|
const canRemoveColumns = selectionRange.cellIndexes.endIndex - selectionRange.cellIndexes.startIndex + 1 < this.rowMatrix[0].cells.length;
|
|
@@ -6583,6 +6630,9 @@ class TableSelection {
|
|
|
6583
6630
|
}
|
|
6584
6631
|
getSelectionRangeForMenuOverlay(element) {
|
|
6585
6632
|
const selectedCell = this.getCellIndexes(element);
|
|
6633
|
+
if (!selectedCell) {
|
|
6634
|
+
return null;
|
|
6635
|
+
}
|
|
6586
6636
|
const isCellInSelection = this.selectionRange &&
|
|
6587
6637
|
this.selectionRange.rowIndexes.startIndex <= selectedCell.rowIndex &&
|
|
6588
6638
|
this.selectionRange.rowIndexes.endIndex >= selectedCell.rowIndex &&
|
|
@@ -6703,10 +6753,14 @@ class NoderTableComponent extends BaseNoderComponent {
|
|
|
6703
6753
|
this.el = el;
|
|
6704
6754
|
this.overlayService = overlayService;
|
|
6705
6755
|
this.rowMatrix = [];
|
|
6756
|
+
this.splits = [];
|
|
6706
6757
|
this.minRowHeight = 19;
|
|
6707
|
-
this.borderSize =
|
|
6758
|
+
this.borderSize = 1;
|
|
6708
6759
|
this.startResizing = (cellResizerParameters) => {
|
|
6709
|
-
|
|
6760
|
+
const splitRowIndex = this.getSplitRowIndex(cellResizerParameters.rowIndex);
|
|
6761
|
+
this.resizer.resizerHeight = this.getRowsHeightBetweenSplits(splitRowIndex);
|
|
6762
|
+
this.resizer.startY = this.getRowsHeightBefore(splitRowIndex);
|
|
6763
|
+
this.resizer.splitRowIndex = splitRowIndex;
|
|
6710
6764
|
this.resizer.tableInsertIndex = this.insertIndex;
|
|
6711
6765
|
this.resizer.onStartResizing(cellResizerParameters);
|
|
6712
6766
|
};
|
|
@@ -6716,7 +6770,8 @@ class NoderTableComponent extends BaseNoderComponent {
|
|
|
6716
6770
|
if (tableRow.hRule === HRule.Exact) {
|
|
6717
6771
|
return;
|
|
6718
6772
|
}
|
|
6719
|
-
const
|
|
6773
|
+
const rowIndexWithSplit = this.getIndexIncludingSplitRows(this.rowMatrix[rowIndex].row);
|
|
6774
|
+
const row = this.tableEl.rows[rowIndexWithSplit];
|
|
6720
6775
|
const currentHeight = row.offsetHeight;
|
|
6721
6776
|
const cellHeights = this.rowMatrix[rowIndex].cells.map(x => x.cellContentHeight);
|
|
6722
6777
|
const maxCellContentHeigh = Math.max(...cellHeights, height);
|
|
@@ -6757,6 +6812,14 @@ class NoderTableComponent extends BaseNoderComponent {
|
|
|
6757
6812
|
} while (i < cellSpanCount);
|
|
6758
6813
|
return width;
|
|
6759
6814
|
}
|
|
6815
|
+
getAdjustedWidth(tableRow, cellIndex, absoluteCellIndex) {
|
|
6816
|
+
const cellWidth = this.getCellWidth(tableRow, cellIndex, absoluteCellIndex);
|
|
6817
|
+
if (tableRow.cells[cellIndex].widthType === 'pct') {
|
|
6818
|
+
tableRow.cells[cellIndex].widthType = 'dxa';
|
|
6819
|
+
return (cellWidth * this._width) / 5000; // 5000 is equal to 100% in docx units of measurement
|
|
6820
|
+
}
|
|
6821
|
+
return cellWidth;
|
|
6822
|
+
}
|
|
6760
6823
|
createResizer() {
|
|
6761
6824
|
this.resizerEl = document.createElement('div');
|
|
6762
6825
|
this.resizerEl.className = 'resizer-border';
|
|
@@ -6780,6 +6843,7 @@ class NoderTableComponent extends BaseNoderComponent {
|
|
|
6780
6843
|
this.initialize();
|
|
6781
6844
|
}
|
|
6782
6845
|
insertRows(rowsCount, targetIndex) {
|
|
6846
|
+
this._width = this.getTableWidth();
|
|
6783
6847
|
let rowIndex = 0;
|
|
6784
6848
|
while (rowIndex < rowsCount) {
|
|
6785
6849
|
const targetRowIndex = targetIndex + rowIndex;
|
|
@@ -6827,7 +6891,7 @@ class NoderTableComponent extends BaseNoderComponent {
|
|
|
6827
6891
|
rowIndex,
|
|
6828
6892
|
cellIndex: modelCellIndex,
|
|
6829
6893
|
columnIndex: currentTargetIndex,
|
|
6830
|
-
width: this.
|
|
6894
|
+
width: this.getAdjustedWidth(this.table.rows[rowIndex], modelCellIndex, currentTargetIndex),
|
|
6831
6895
|
heightChanged: this.cellHeightChanged,
|
|
6832
6896
|
startResizing: this.startResizing,
|
|
6833
6897
|
properties: this.properties
|
|
@@ -6952,21 +7016,113 @@ class NoderTableComponent extends BaseNoderComponent {
|
|
|
6952
7016
|
}
|
|
6953
7017
|
this._height = rowsHeight + bordersHeight;
|
|
6954
7018
|
}
|
|
7019
|
+
processSplit(leftSpaceOnPage, spaceBetweenPagesContent, contentHeight) {
|
|
7020
|
+
this.removeSplits();
|
|
7021
|
+
if (leftSpaceOnPage >= this.height) {
|
|
7022
|
+
return { splitsCount: 0, tableHeight: this.height, leftHeight: 0 };
|
|
7023
|
+
}
|
|
7024
|
+
if (leftSpaceOnPage < this.rowMatrix[0].height) {
|
|
7025
|
+
return { splitsCount: 1, tableHeight: this.height, leftHeight: this.height };
|
|
7026
|
+
}
|
|
7027
|
+
return this.splitTable(leftSpaceOnPage, spaceBetweenPagesContent, contentHeight);
|
|
7028
|
+
}
|
|
7029
|
+
splitTable(leftSpaceOnPage, spaceBetweenPagesContent, contentHeight) {
|
|
7030
|
+
let leftHeight = 0, tableHeightWithSplits = this.height, rowIndex = 0;
|
|
7031
|
+
while (rowIndex < this.rowMatrix.length) {
|
|
7032
|
+
let { index, rowsHeight } = this.getRowIndexByHeight(rowIndex, leftSpaceOnPage);
|
|
7033
|
+
rowIndex = index;
|
|
7034
|
+
if (index === this.rowMatrix.length) {
|
|
7035
|
+
break;
|
|
7036
|
+
}
|
|
7037
|
+
leftHeight = this.rowMatrix
|
|
7038
|
+
.slice(index)
|
|
7039
|
+
.map(x => x.height)
|
|
7040
|
+
.reduce((partialSum, curr) => partialSum + curr + this.borderSize);
|
|
7041
|
+
const splitRowHeight = spaceBetweenPagesContent + leftSpaceOnPage - rowsHeight;
|
|
7042
|
+
this.createSplitRow(index + this.splits.length, splitRowHeight);
|
|
7043
|
+
this.splits.push(index + this.splits.length);
|
|
7044
|
+
tableHeightWithSplits += splitRowHeight;
|
|
7045
|
+
leftSpaceOnPage = contentHeight;
|
|
7046
|
+
}
|
|
7047
|
+
return {
|
|
7048
|
+
splitsCount: this.splits.length,
|
|
7049
|
+
tableHeight: tableHeightWithSplits,
|
|
7050
|
+
leftHeight
|
|
7051
|
+
};
|
|
7052
|
+
}
|
|
7053
|
+
getRowIndexByHeight(startIndex, height) {
|
|
7054
|
+
if (startIndex >= this.rowMatrix.length) {
|
|
7055
|
+
return { index: this.rowMatrix.length, rowsHeight: 0 };
|
|
7056
|
+
}
|
|
7057
|
+
let tableHeight = this.rowMatrix[startIndex].height + this.borderSize, i = startIndex;
|
|
7058
|
+
while (tableHeight < height) {
|
|
7059
|
+
tableHeight += this.rowMatrix[i + 1]?.height + this.borderSize;
|
|
7060
|
+
i++;
|
|
7061
|
+
}
|
|
7062
|
+
return { index: i, rowsHeight: tableHeight - this.rowMatrix[i]?.height };
|
|
7063
|
+
}
|
|
7064
|
+
createSplitRow(index, height) {
|
|
7065
|
+
this.tableEl.insertRow(index);
|
|
7066
|
+
this.tableEl.rows[index].style.height = `${height}px`;
|
|
7067
|
+
this.tableEl.rows[index].classList.add('split-row');
|
|
7068
|
+
}
|
|
7069
|
+
removeSplits() {
|
|
7070
|
+
this.splits = [];
|
|
7071
|
+
while (this.tableEl.querySelector('.split-row')) {
|
|
7072
|
+
const el = this.tableEl.querySelector('.split-row');
|
|
7073
|
+
el.remove();
|
|
7074
|
+
}
|
|
7075
|
+
}
|
|
6955
7076
|
calculateProperties() {
|
|
6956
7077
|
if (!this.tableEl) {
|
|
6957
7078
|
return;
|
|
6958
7079
|
}
|
|
6959
7080
|
this.setTableHeight();
|
|
6960
|
-
|
|
6961
|
-
|
|
6962
|
-
this.
|
|
7081
|
+
}
|
|
7082
|
+
getTableWidth() {
|
|
7083
|
+
return this.table.columns.reduce((prev, next) => prev + next.width + this.borderSize, 1);
|
|
7084
|
+
}
|
|
7085
|
+
getSplitRowIndex(rowIndex) {
|
|
7086
|
+
return this.getIndexIncludingSplitRows(this.rowMatrix[rowIndex].row);
|
|
7087
|
+
}
|
|
7088
|
+
getIndexIncludingSplitRows(row) {
|
|
7089
|
+
return Array.from(this.tableEl.rows).indexOf(row);
|
|
7090
|
+
}
|
|
7091
|
+
getRowsHeightBefore(rowIndex) {
|
|
7092
|
+
let index = 0;
|
|
7093
|
+
for (const element of this.splits) {
|
|
7094
|
+
if (rowIndex < element) {
|
|
7095
|
+
break;
|
|
7096
|
+
}
|
|
7097
|
+
index = element + 1;
|
|
7098
|
+
}
|
|
7099
|
+
return this.getRowsHeight(0, index);
|
|
7100
|
+
}
|
|
7101
|
+
getRowsHeightBetweenSplits(rowIndex) {
|
|
7102
|
+
let startIndex = 0;
|
|
7103
|
+
let endIndex = this.tableEl.rows.length;
|
|
7104
|
+
for (const element of this.splits) {
|
|
7105
|
+
if (rowIndex < element) {
|
|
7106
|
+
endIndex = element;
|
|
7107
|
+
break;
|
|
7108
|
+
}
|
|
7109
|
+
startIndex = element + 1;
|
|
7110
|
+
}
|
|
7111
|
+
return this.getRowsHeight(startIndex, endIndex);
|
|
7112
|
+
}
|
|
7113
|
+
getRowsHeight(start, end) {
|
|
7114
|
+
let sum = 0;
|
|
7115
|
+
for (let i = start; i < end; i++) {
|
|
7116
|
+
sum += this.tableEl.rows[i].offsetHeight;
|
|
7117
|
+
}
|
|
7118
|
+
return sum;
|
|
6963
7119
|
}
|
|
6964
7120
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NoderTableComponent, deps: [{ token: ComponentService }, { token: EditorService }, { token: i0.ElementRef }, { token: OverlayService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6965
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: NoderTableComponent, selector: "app-noder-table", usesInheritance: true, ngImport: i0, template: '', isInline: true, styles: [":host
|
|
7121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: NoderTableComponent, selector: "app-noder-table", usesInheritance: true, ngImport: i0, template: '', isInline: true, styles: [":host{position:relative}:host::ng-deep table{position:relative;border-collapse:collapse;background:transparent;empty-cells:show;border-spacing:0;overflow:visible;table-layout:fixed}:host::ng-deep td{position:relative;vertical-align:top;border:1px solid #000;margin:0;padding:0;height:inherit}:host::ng-deep .hidden-cell{display:none;cursor:not-allowed}:host::ng-deep .resizer-border{position:absolute;border:solid .5px blue;z-index:1}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6966
7122
|
}
|
|
6967
7123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NoderTableComponent, decorators: [{
|
|
6968
7124
|
type: Component,
|
|
6969
|
-
args: [{ selector: 'app-noder-table', template: '', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host
|
|
7125
|
+
args: [{ selector: 'app-noder-table', template: '', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{position:relative}:host::ng-deep table{position:relative;border-collapse:collapse;background:transparent;empty-cells:show;border-spacing:0;overflow:visible;table-layout:fixed}:host::ng-deep td{position:relative;vertical-align:top;border:1px solid #000;margin:0;padding:0;height:inherit}:host::ng-deep .hidden-cell{display:none;cursor:not-allowed}:host::ng-deep .resizer-border{position:absolute;border:solid .5px blue;z-index:1}\n"] }]
|
|
6970
7126
|
}], ctorParameters: () => [{ type: ComponentService }, { type: EditorService }, { type: i0.ElementRef }, { type: OverlayService }] });
|
|
6971
7127
|
|
|
6972
7128
|
class NumberingDataModel {
|
|
@@ -7441,7 +7597,9 @@ class TableOperationsHelper {
|
|
|
7441
7597
|
images: [],
|
|
7442
7598
|
paragraphs: [new ParagraphModel({ insertIndex: 0, paragraphStyle: DEFAULT_PARAGRAPH_STYLE })],
|
|
7443
7599
|
tables: [],
|
|
7444
|
-
tabs: []
|
|
7600
|
+
tabs: [],
|
|
7601
|
+
links: [],
|
|
7602
|
+
widthType: 'dxa'
|
|
7445
7603
|
});
|
|
7446
7604
|
cells.push(cell);
|
|
7447
7605
|
}
|
|
@@ -7554,7 +7712,8 @@ class TableOperationsHelper {
|
|
|
7554
7712
|
],
|
|
7555
7713
|
verticalMerge: this.getCellVerticalMerge(matrix[inheritIndex].cells[i].verticalMerge, targetIndex, inheritIndex),
|
|
7556
7714
|
tables: [],
|
|
7557
|
-
tabs: []
|
|
7715
|
+
tabs: [],
|
|
7716
|
+
links: []
|
|
7558
7717
|
});
|
|
7559
7718
|
newCells.push(newCell);
|
|
7560
7719
|
}
|
|
@@ -8198,8 +8357,8 @@ class TextLineInfo {
|
|
|
8198
8357
|
this.paddingLeft = 0;
|
|
8199
8358
|
this.offsetBefore = 0;
|
|
8200
8359
|
this.offsetAfter = 0;
|
|
8201
|
-
this.firstLinePageOffset = 0;
|
|
8202
|
-
this.endPageOffset = 0;
|
|
8360
|
+
this.firstLinePageOffset = 0; // for selection
|
|
8361
|
+
this.endPageOffset = 0; // for selection
|
|
8203
8362
|
this.screenLine = 0;
|
|
8204
8363
|
this.isAfterPageBreak = false;
|
|
8205
8364
|
this.isEndedByPageBreak = false;
|
|
@@ -8267,9 +8426,9 @@ class Paragraph {
|
|
|
8267
8426
|
: ParagraphHelper.getPageLinesHeight(this.textLinesInfo, this.lastPageNumber);
|
|
8268
8427
|
return { lastPage: this.lastPageNumber, paragraphHeight: pageContentHeight, paragraphLastLine: this.lastScreenLine };
|
|
8269
8428
|
}
|
|
8270
|
-
processParagraphProperties(prevParagraphInfo, pagesInfo) {
|
|
8429
|
+
processParagraphProperties(prevParagraphInfo, pagesInfo, tables) {
|
|
8271
8430
|
this.pagePreviousContentHeight = prevParagraphInfo.paragraphHeight;
|
|
8272
|
-
this.processTextLinesProperties(this, prevParagraphInfo, pagesInfo);
|
|
8431
|
+
this.processTextLinesProperties(this, prevParagraphInfo, pagesInfo, tables);
|
|
8273
8432
|
ParagraphHelper.processOffsetLineWithNumberingMarker(this.textLinesInfo[0], this.numberingData.height, this.offsetBefore);
|
|
8274
8433
|
this.pageNumbers = ParagraphHelper.getParagraphPages(this.textLinesInfo);
|
|
8275
8434
|
this.height = ParagraphHelper.getParagraphHeight(this.textLinesInfo);
|
|
@@ -8280,13 +8439,13 @@ class PagesWrap extends EventEmitting {
|
|
|
8280
8439
|
get defaultVerticalData() {
|
|
8281
8440
|
return this.pagesVerticalData.find(x => x.pageType === PageType.Default);
|
|
8282
8441
|
}
|
|
8283
|
-
constructor(pagesSpace, documentMargin, pageWidth, pageHeight = 0,
|
|
8442
|
+
constructor(pagesSpace, documentMargin, pageWidth, pageHeight = 0, customComponents) {
|
|
8284
8443
|
super();
|
|
8285
8444
|
this.pagesSpace = pagesSpace;
|
|
8286
8445
|
this.documentMargin = documentMargin;
|
|
8287
8446
|
this.pageWidth = pageWidth;
|
|
8288
8447
|
this.pageHeight = pageHeight;
|
|
8289
|
-
this.
|
|
8448
|
+
this.customComponents = customComponents;
|
|
8290
8449
|
this.allPagesHeight = 0;
|
|
8291
8450
|
this.minHeight = 0;
|
|
8292
8451
|
this.paragraphs = [];
|
|
@@ -8379,14 +8538,15 @@ class PagesWrap extends EventEmitting {
|
|
|
8379
8538
|
pages: visiblePages
|
|
8380
8539
|
};
|
|
8381
8540
|
}
|
|
8382
|
-
processParagraphsProperties(startParagraphIndex) {
|
|
8541
|
+
processParagraphsProperties(startParagraphIndex, wrapParagraphIndex) {
|
|
8542
|
+
this.setParagraphIndexes(wrapParagraphIndex);
|
|
8383
8543
|
const pagesInfo = { pagesVerticalData: this.pagesVerticalData, pagesSpace: this.pagesSpace };
|
|
8384
8544
|
let currentPage = startParagraphIndex === 0 ? 1 : this.paragraphs[startParagraphIndex - 1].lastPageNumber;
|
|
8385
8545
|
let pageVerticalData = PageHelper.getVerticalData(currentPage, this.pagesVerticalData);
|
|
8386
8546
|
for (let i = startParagraphIndex; i < this.paragraphs.length; i++) {
|
|
8387
8547
|
const prevParagraphInfo = this.getPreviousParagraphInfo(i);
|
|
8388
8548
|
const paragraph = this.paragraphs[i];
|
|
8389
|
-
paragraph.processParagraphProperties(prevParagraphInfo, pagesInfo);
|
|
8549
|
+
paragraph.processParagraphProperties(prevParagraphInfo, pagesInfo, this.customComponents.tables);
|
|
8390
8550
|
if (paragraph.firstPageNumber !== currentPage) {
|
|
8391
8551
|
currentPage = paragraph.firstPageNumber;
|
|
8392
8552
|
pageVerticalData = PageHelper.getVerticalData(paragraph.firstPageNumber, this.pagesVerticalData);
|
|
@@ -8413,9 +8573,9 @@ class PagesWrap extends EventEmitting {
|
|
|
8413
8573
|
destroy() {
|
|
8414
8574
|
this.removeAllListeners('pagesCountChanged');
|
|
8415
8575
|
}
|
|
8416
|
-
updatePageVerticalData(edgeType, page) {
|
|
8576
|
+
updatePageVerticalData(edgeType, page, wrapParagraphIndex) {
|
|
8417
8577
|
const pageVerticalData = PageHelper.getVerticalData(page, this.pagesVerticalData);
|
|
8418
|
-
const componentHeight = this.edges.getComponentHeight(page, edgeType);
|
|
8578
|
+
const componentHeight = this.customComponents.edges.getComponentHeight(page, edgeType);
|
|
8419
8579
|
if (edgeType === EdgeType.Header) {
|
|
8420
8580
|
pageVerticalData.marginTop = componentHeight > this.documentMargin.top ? componentHeight : this.documentMargin.top;
|
|
8421
8581
|
}
|
|
@@ -8427,7 +8587,7 @@ class PagesWrap extends EventEmitting {
|
|
|
8427
8587
|
return;
|
|
8428
8588
|
}
|
|
8429
8589
|
pageVerticalData.contentHeight = newContentHeight;
|
|
8430
|
-
this.processParagraphsProperties(0);
|
|
8590
|
+
this.processParagraphsProperties(0, wrapParagraphIndex);
|
|
8431
8591
|
}
|
|
8432
8592
|
getPreviousParagraphInfo(row) {
|
|
8433
8593
|
if (!row || !this.paragraphs.length) {
|
|
@@ -8460,7 +8620,8 @@ class PagesWrap extends EventEmitting {
|
|
|
8460
8620
|
return visiblePages;
|
|
8461
8621
|
}
|
|
8462
8622
|
initPagesVerticalData() {
|
|
8463
|
-
if (!this.edges ||
|
|
8623
|
+
if (!this.customComponents.edges ||
|
|
8624
|
+
(!this.customComponents.edges.headersComponents.length && !this.customComponents.edges.footersComponents.length)) {
|
|
8464
8625
|
this.pagesVerticalData = [
|
|
8465
8626
|
new PageVerticalDataModel({
|
|
8466
8627
|
marginTop: this.documentMargin.top,
|
|
@@ -8471,10 +8632,10 @@ class PagesWrap extends EventEmitting {
|
|
|
8471
8632
|
];
|
|
8472
8633
|
return;
|
|
8473
8634
|
}
|
|
8474
|
-
const pageTypes = this.edges.getUniquePageTypes();
|
|
8635
|
+
const pageTypes = this.customComponents.edges.getUniquePageTypes();
|
|
8475
8636
|
this.pagesVerticalData = pageTypes.map(pageType => {
|
|
8476
|
-
const headerHeight = this.edges.getComponentHeightByPageType(pageType, EdgeType.Header);
|
|
8477
|
-
const footerHeight = this.edges.getComponentHeightByPageType(pageType, EdgeType.Footer);
|
|
8637
|
+
const headerHeight = this.customComponents.edges.getComponentHeightByPageType(pageType, EdgeType.Header);
|
|
8638
|
+
const footerHeight = this.customComponents.edges.getComponentHeightByPageType(pageType, EdgeType.Footer);
|
|
8478
8639
|
const marginTop = Math.max(headerHeight, this.documentMargin.top);
|
|
8479
8640
|
const marginBottom = Math.max(footerHeight, this.documentMargin.bottom);
|
|
8480
8641
|
return new PageVerticalDataModel({
|
|
@@ -8485,6 +8646,11 @@ class PagesWrap extends EventEmitting {
|
|
|
8485
8646
|
});
|
|
8486
8647
|
});
|
|
8487
8648
|
}
|
|
8649
|
+
setParagraphIndexes(wrapParagraphIndex) {
|
|
8650
|
+
for (let i = 0; i < this.paragraphs.length; i++) {
|
|
8651
|
+
this.paragraphs[i].startInsertIndex = wrapParagraphIndex[i];
|
|
8652
|
+
}
|
|
8653
|
+
}
|
|
8488
8654
|
}
|
|
8489
8655
|
|
|
8490
8656
|
class ParagraphStyleHelper {
|
|
@@ -8621,8 +8787,7 @@ class EditSession extends EventEmitting {
|
|
|
8621
8787
|
backgroundColor: DEFAULT_BACKGROUND_COLOR,
|
|
8622
8788
|
highlightColor: DEFAULT_BACKGROUND_COLOR
|
|
8623
8789
|
};
|
|
8624
|
-
|
|
8625
|
-
this.customComponents = this.customContentService.generateComponents(this.model, this.sessionId, this.properties, maxWidth);
|
|
8790
|
+
this.customComponents = this.customContentService.generateComponents(this.model, this.sessionId, this.properties, this.document);
|
|
8626
8791
|
this.setDocument();
|
|
8627
8792
|
}
|
|
8628
8793
|
destroy() {
|
|
@@ -8697,7 +8862,7 @@ class EditSession extends EventEmitting {
|
|
|
8697
8862
|
this.pagesWrap.paragraphs.splice(count);
|
|
8698
8863
|
this.wrapData.splice(count);
|
|
8699
8864
|
this.updateWrapParagraphLine(firstParagraph);
|
|
8700
|
-
this.pagesWrap.processParagraphsProperties(firstParagraph);
|
|
8865
|
+
this.pagesWrap.processParagraphsProperties(firstParagraph, this.wrapParagraphIndex);
|
|
8701
8866
|
}
|
|
8702
8867
|
/**
|
|
8703
8868
|
* Given a string, returns an array of the display characters, including tabs and spaces.
|
|
@@ -9258,13 +9423,10 @@ class EditSession extends EventEmitting {
|
|
|
9258
9423
|
displayTokens[i].width = TabHelper.calculateTabWidth(sum, this.properties.defaultTabWidth);
|
|
9259
9424
|
}
|
|
9260
9425
|
sum += displayTokens[i].width;
|
|
9261
|
-
if (i > 0 && (sum >= maxRowWidth || displayTokens[i - 1].breaksLine)) {
|
|
9426
|
+
if ((i > 0 && (sum >= maxRowWidth || displayTokens[i - 1].breaksLine)) || displayTokens[i].isTable) {
|
|
9262
9427
|
return i;
|
|
9263
9428
|
}
|
|
9264
|
-
if (displayTokens[i].isLineBreak) {
|
|
9265
|
-
return i + 1;
|
|
9266
|
-
}
|
|
9267
|
-
if (i === displayTokens.length - 1 && displayTokens[i].isPageBreak) {
|
|
9429
|
+
if (displayTokens[i].isLineBreak || (i === displayTokens.length - 1 && displayTokens[i].isPageBreak)) {
|
|
9268
9430
|
return i + 1;
|
|
9269
9431
|
}
|
|
9270
9432
|
}
|
|
@@ -9338,7 +9500,7 @@ class EditSession extends EventEmitting {
|
|
|
9338
9500
|
}
|
|
9339
9501
|
setDocument() {
|
|
9340
9502
|
const pageMargin = this.document.pageMargin;
|
|
9341
|
-
this.pagesWrap = new PagesWrap(this.document.pagesSpace, pageMargin, this.document.pageWidth, this.document.pageHeight, this.customComponents
|
|
9503
|
+
this.pagesWrap = new PagesWrap(this.document.pagesSpace, pageMargin, this.document.pageWidth, this.document.pageHeight, this.customComponents);
|
|
9342
9504
|
}
|
|
9343
9505
|
clearCursorStyle() {
|
|
9344
9506
|
this._cursorStyle = null;
|
|
@@ -9483,6 +9645,7 @@ class EditSession extends EventEmitting {
|
|
|
9483
9645
|
info.offsetBefore = firstWrapToken.indentBefore;
|
|
9484
9646
|
info.offsetAfter = firstWrapToken.indentAfter;
|
|
9485
9647
|
info.lineSpacing = firstWrapToken.lineSpacing;
|
|
9648
|
+
info.hasTable = firstWrapToken.isTable;
|
|
9486
9649
|
}
|
|
9487
9650
|
let fontSize = 0;
|
|
9488
9651
|
let ascent = 0;
|
|
@@ -10777,7 +10940,8 @@ class CustomContentService {
|
|
|
10777
10940
|
this.injector = injector;
|
|
10778
10941
|
this.elements = this.injector.get(EXTERNAL_ELEMENT_SERVICE).elements;
|
|
10779
10942
|
}
|
|
10780
|
-
generateComponents(model, sessionId, properties,
|
|
10943
|
+
generateComponents(model, sessionId, properties, document) {
|
|
10944
|
+
const contentWidth = document.pageWidth - (document.pageMargin.left + document.pageMargin.right);
|
|
10781
10945
|
return {
|
|
10782
10946
|
images: this.componentService.generateComponents(NoderImageComponent, model?.images || [], x => {
|
|
10783
10947
|
return { image: x, sessionId };
|
|
@@ -10795,7 +10959,7 @@ class CustomContentService {
|
|
|
10795
10959
|
right: model.marginRight,
|
|
10796
10960
|
top: model.marginHeader,
|
|
10797
10961
|
bottom: model.marginFooter
|
|
10798
|
-
}),
|
|
10962
|
+
}), document.pageWidth, sessionId, properties)
|
|
10799
10963
|
: null
|
|
10800
10964
|
};
|
|
10801
10965
|
}
|
|
@@ -10886,9 +11050,9 @@ class RegulatorService {
|
|
|
10886
11050
|
this.sessionIdIncrement = 0;
|
|
10887
11051
|
this.edgeEditingPage = null;
|
|
10888
11052
|
}
|
|
10889
|
-
addMainSession(model, margins, container) {
|
|
11053
|
+
addMainSession(model, margins, pageWidth, container) {
|
|
10890
11054
|
const currentSessionId = ++this.sessionIdIncrement;
|
|
10891
|
-
const document = new Document(model, margins, DocumentInfo.pagesSpace,
|
|
11055
|
+
const document = new Document(model, margins, DocumentInfo.pagesSpace, pageWidth, model.pageHeight);
|
|
10892
11056
|
const renderer = new VirtualRenderer(container.nativeElement, this.editorService);
|
|
10893
11057
|
const session = new EditSession(document, currentSessionId, this.customContentService, model, this.selection, new GeneralPropertiesModel({
|
|
10894
11058
|
numberings: model.numberings,
|
|
@@ -11137,7 +11301,7 @@ class EditorComponent {
|
|
|
11137
11301
|
}
|
|
11138
11302
|
initEditor(content) {
|
|
11139
11303
|
this.ngOnDestroy();
|
|
11140
|
-
this.editor = new Editor(content, this.container, this.editorService, this.regulatorService, this.commandsService, this.clipboard);
|
|
11304
|
+
this.editor = new Editor(content, this.container, this.editorService, this.regulatorService, this.commandsService, this.clipboard, this.customPageWidth);
|
|
11141
11305
|
this.subscriptions.push(this.toggleSidenavSubscription());
|
|
11142
11306
|
}
|
|
11143
11307
|
createElement(model) {
|
|
@@ -11167,12 +11331,14 @@ class EditorComponent {
|
|
|
11167
11331
|
});
|
|
11168
11332
|
}
|
|
11169
11333
|
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 }); }
|
|
11170
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: EditorComponent, selector: "app-editor", inputs: { 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 }); }
|
|
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 }); }
|
|
11171
11335
|
}
|
|
11172
11336
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorComponent, decorators: [{
|
|
11173
11337
|
type: Component,
|
|
11174
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"] }]
|
|
11175
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: ComponentService }, { type: EditorService }, { type: i0.Injector }, { type: RegulatorService }, { type: CommandsService }, { type: i5.Clipboard }], propDecorators: {
|
|
11339
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: ComponentService }, { type: EditorService }, { type: i0.Injector }, { type: RegulatorService }, { type: CommandsService }, { type: i5.Clipboard }], propDecorators: { customPageWidth: [{
|
|
11340
|
+
type: Input
|
|
11341
|
+
}], content: [{
|
|
11176
11342
|
type: Input
|
|
11177
11343
|
}], container: [{
|
|
11178
11344
|
type: ViewChild,
|
|
@@ -12934,7 +13100,7 @@ class EditorHeaderComponent {
|
|
|
12934
13100
|
});
|
|
12935
13101
|
}
|
|
12936
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 }); }
|
|
12937
|
-
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: i7$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$1.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$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.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$2.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$2.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i4$2.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 }); }
|
|
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 }); }
|
|
12938
13104
|
}
|
|
12939
13105
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorHeaderComponent, decorators: [{
|
|
12940
13106
|
type: Component,
|
|
@@ -13065,7 +13231,7 @@ class EditorSearchDialogComponent extends ObserverComponent {
|
|
|
13065
13231
|
});
|
|
13066
13232
|
}
|
|
13067
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 }); }
|
|
13068
|
-
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:
|
|
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 }); }
|
|
13069
13235
|
}
|
|
13070
13236
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorSearchDialogComponent, decorators: [{
|
|
13071
13237
|
type: Component,
|
|
@@ -13097,7 +13263,7 @@ class FontComponent {
|
|
|
13097
13263
|
this.selectFont.emit(font);
|
|
13098
13264
|
}
|
|
13099
13265
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FontComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13100
|
-
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$
|
|
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 }); }
|
|
13101
13267
|
}
|
|
13102
13268
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FontComponent, decorators: [{
|
|
13103
13269
|
type: Component,
|
|
@@ -13169,7 +13335,7 @@ class FontSizeComponent {
|
|
|
13169
13335
|
}
|
|
13170
13336
|
}
|
|
13171
13337
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FontSizeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13172
|
-
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$
|
|
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 }); }
|
|
13173
13339
|
}
|
|
13174
13340
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FontSizeComponent, decorators: [{
|
|
13175
13341
|
type: Component,
|
|
@@ -13335,7 +13501,7 @@ class NumberingComponent {
|
|
|
13335
13501
|
this.selectNumberingTemplate.emit(numberingTemplateType);
|
|
13336
13502
|
}
|
|
13337
13503
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NumberingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13338
|
-
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$
|
|
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 }); }
|
|
13339
13505
|
}
|
|
13340
13506
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NumberingComponent, decorators: [{
|
|
13341
13507
|
type: Component,
|
|
@@ -13498,7 +13664,7 @@ class HeadingComponent {
|
|
|
13498
13664
|
console.log('select heading', heading);
|
|
13499
13665
|
}
|
|
13500
13666
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: HeadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13501
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: HeadingComponent, selector: "app-heading", ngImport: i0, template: "<button\n mat-button\n [matMenuTriggerFor]=\"headingMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n <div class=\"heading-menu\">\n <span>{{ selectedHeading }}</span>\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </div>\n</button>\n<mat-menu #headingMenu=\"matMenu\">\n <ng-container *ngFor=\"let heading of headings\">\n <button\n mat-menu-item\n (click)=\"onSelectHeading(heading)\">\n {{ heading }}\n </button>\n </ng-container>\n</mat-menu>\n", styles: [":host{display:flex;align-items:center}.heading-menu{display:flex;justify-content:space-between;align-items:center;min-width:150px}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$
|
|
13667
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: HeadingComponent, selector: "app-heading", ngImport: i0, template: "<button\n mat-button\n [matMenuTriggerFor]=\"headingMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n <div class=\"heading-menu\">\n <span>{{ selectedHeading }}</span>\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </div>\n</button>\n<mat-menu #headingMenu=\"matMenu\">\n <ng-container *ngFor=\"let heading of headings\">\n <button\n mat-menu-item\n (click)=\"onSelectHeading(heading)\">\n {{ heading }}\n </button>\n </ng-container>\n</mat-menu>\n", styles: [":host{display:flex;align-items:center}.heading-menu{display:flex;justify-content:space-between;align-items:center;min-width:150px}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 }); }
|
|
13502
13668
|
}
|
|
13503
13669
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: HeadingComponent, decorators: [{
|
|
13504
13670
|
type: Component,
|
|
@@ -13560,7 +13726,7 @@ class ZoomComponent {
|
|
|
13560
13726
|
trigger.panelOpen ? trigger.closePanel() : trigger.openPanel();
|
|
13561
13727
|
}
|
|
13562
13728
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ZoomComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13563
|
-
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$
|
|
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 }); }
|
|
13564
13730
|
}
|
|
13565
13731
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ZoomComponent, decorators: [{
|
|
13566
13732
|
type: Component,
|
|
@@ -13652,6 +13818,88 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
|
|
|
13652
13818
|
}]
|
|
13653
13819
|
}] });
|
|
13654
13820
|
|
|
13821
|
+
class RevisionHelper {
|
|
13822
|
+
static applyOperationsToRevision(revision, operations) {
|
|
13823
|
+
operations.sort((a, b) => a.createTime - b.createTime);
|
|
13824
|
+
const actions = operations.map(x => x.command);
|
|
13825
|
+
OperationsHelper.applyOperations(revision.content, actions);
|
|
13826
|
+
}
|
|
13827
|
+
static fillTablesDefaultStyles(tables) {
|
|
13828
|
+
for (const table of tables) {
|
|
13829
|
+
for (const row of table.rows) {
|
|
13830
|
+
for (const cell of row.cells) {
|
|
13831
|
+
this.fillDefaultStyles(cell);
|
|
13832
|
+
}
|
|
13833
|
+
}
|
|
13834
|
+
}
|
|
13835
|
+
}
|
|
13836
|
+
static fillEdgesDefaultStyles(headers, footers) {
|
|
13837
|
+
for (const header of headers) {
|
|
13838
|
+
this.fillDefaultStyles(header);
|
|
13839
|
+
}
|
|
13840
|
+
for (const footer of footers) {
|
|
13841
|
+
this.fillDefaultStyles(footer);
|
|
13842
|
+
}
|
|
13843
|
+
}
|
|
13844
|
+
static fillDefaultStyles(contents) {
|
|
13845
|
+
for (const format of contents.formats) {
|
|
13846
|
+
format.textStyle = FormatStyleHelper.combineTextStyles(format.textStyle, DEFAULT_TEXT_STYLE);
|
|
13847
|
+
}
|
|
13848
|
+
for (const paragraph of contents.paragraphs) {
|
|
13849
|
+
paragraph.paragraphStyle = this.fillParagraphStyleModel(paragraph.paragraphStyle);
|
|
13850
|
+
}
|
|
13851
|
+
}
|
|
13852
|
+
static fillParagraphStyleModel(paragraphStyle) {
|
|
13853
|
+
return new ParagraphStyleModel({
|
|
13854
|
+
alignment: paragraphStyle.alignment ?? DEFAULT_PARAGRAPH_STYLE.alignment,
|
|
13855
|
+
backgroundColor: paragraphStyle.backgroundColor ?? DEFAULT_PARAGRAPH_STYLE.backgroundColor,
|
|
13856
|
+
headingStyleId: paragraphStyle.headingStyleId,
|
|
13857
|
+
indentFirstLine: paragraphStyle.indentFirstLine ?? DEFAULT_PARAGRAPH_STYLE.indentFirstLine,
|
|
13858
|
+
indentHanging: paragraphStyle.indentHanging ?? DEFAULT_PARAGRAPH_STYLE.indentHanging,
|
|
13859
|
+
indentLeft: paragraphStyle.indentLeft ?? DEFAULT_PARAGRAPH_STYLE.indentLeft,
|
|
13860
|
+
indentRight: paragraphStyle.indentRight ?? DEFAULT_PARAGRAPH_STYLE.indentRight,
|
|
13861
|
+
lineSpacing: paragraphStyle.lineSpacing ?? DEFAULT_PARAGRAPH_STYLE.lineSpacing,
|
|
13862
|
+
spaceAfter: paragraphStyle.spaceAfter ?? DEFAULT_PARAGRAPH_STYLE.spaceAfter,
|
|
13863
|
+
spaceBefore: paragraphStyle.spaceBefore ?? DEFAULT_PARAGRAPH_STYLE.spaceBefore,
|
|
13864
|
+
contextualSpacing: paragraphStyle.contextualSpacing ?? DEFAULT_PARAGRAPH_STYLE.contextualSpacing,
|
|
13865
|
+
beforeAutospacing: paragraphStyle.beforeAutospacing ?? DEFAULT_PARAGRAPH_STYLE.beforeAutospacing,
|
|
13866
|
+
afterAutospacing: paragraphStyle.afterAutospacing ?? DEFAULT_PARAGRAPH_STYLE.afterAutospacing,
|
|
13867
|
+
numberingId: paragraphStyle.numberingId ?? DEFAULT_PARAGRAPH_STYLE.numberingId,
|
|
13868
|
+
numberingLevel: paragraphStyle.numberingLevel ?? DEFAULT_PARAGRAPH_STYLE.numberingLevel
|
|
13869
|
+
});
|
|
13870
|
+
}
|
|
13871
|
+
static getEmptyDocxModel() {
|
|
13872
|
+
const pageMargin = new MarginModel();
|
|
13873
|
+
return new DocxModel({
|
|
13874
|
+
content: '',
|
|
13875
|
+
contentLength: 0,
|
|
13876
|
+
headings: DEFAULT_HEADINGS,
|
|
13877
|
+
pageHeight: DocumentInfo.height,
|
|
13878
|
+
pageWidth: DocumentInfo.width,
|
|
13879
|
+
paragraphs: [
|
|
13880
|
+
new ParagraphModel({
|
|
13881
|
+
insertIndex: 0,
|
|
13882
|
+
paragraphStyle: DEFAULT_PARAGRAPH_STYLE
|
|
13883
|
+
})
|
|
13884
|
+
],
|
|
13885
|
+
breaks: [],
|
|
13886
|
+
elements: [],
|
|
13887
|
+
formats: [new FormatModel({ startIndex: 0, endIndex: 0, textStyle: DEFAULT_TEXT_STYLE })],
|
|
13888
|
+
images: [],
|
|
13889
|
+
links: [],
|
|
13890
|
+
marginBottom: pageMargin.bottom,
|
|
13891
|
+
marginFooter: pageMargin.footer,
|
|
13892
|
+
marginHeader: pageMargin.header,
|
|
13893
|
+
marginLeft: pageMargin.left,
|
|
13894
|
+
marginRight: pageMargin.right,
|
|
13895
|
+
marginTop: pageMargin.top,
|
|
13896
|
+
tables: [],
|
|
13897
|
+
numberings: [],
|
|
13898
|
+
tabs: []
|
|
13899
|
+
});
|
|
13900
|
+
}
|
|
13901
|
+
}
|
|
13902
|
+
|
|
13655
13903
|
class ConfirmDialogComponent {
|
|
13656
13904
|
constructor(data, ref) {
|
|
13657
13905
|
this.data = data;
|
|
@@ -13671,13 +13919,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
|
|
|
13671
13919
|
args: [MAT_DIALOG_DATA]
|
|
13672
13920
|
}] }, { type: i1$4.MatDialogRef }] });
|
|
13673
13921
|
|
|
13674
|
-
|
|
13922
|
+
const URL_PATTERN = /^(https?:\/\/)?(www\.)?[-a-zA-Z0-9áéíóúÁÉÍÓÚüÜñÑ@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9áéíóúÁÉÍÓÚüÜñÑ@:%_+.~#?&/=]*)$/;
|
|
13923
|
+
class ValidationHelper {
|
|
13924
|
+
static urlValidator(control) {
|
|
13925
|
+
return control.value && !URL_PATTERN.test(control.value) ? { invalidUrl: true } : null;
|
|
13926
|
+
}
|
|
13927
|
+
}
|
|
13928
|
+
|
|
13929
|
+
class AddLinkDialogOptions {
|
|
13675
13930
|
constructor(fields) {
|
|
13676
13931
|
if (fields) {
|
|
13677
13932
|
Object.assign(this, fields);
|
|
13678
13933
|
}
|
|
13679
13934
|
}
|
|
13680
13935
|
}
|
|
13936
|
+
class AddLinkDialogComponent {
|
|
13937
|
+
constructor(dialogRef, data, fb) {
|
|
13938
|
+
this.dialogRef = dialogRef;
|
|
13939
|
+
this.data = data;
|
|
13940
|
+
this.fb = fb;
|
|
13941
|
+
dialogRef.disableClose = true;
|
|
13942
|
+
this.form = this.fb.group({
|
|
13943
|
+
text: [data.text, Validators.required],
|
|
13944
|
+
link: [data.link, [Validators.required, ValidationHelper.urlValidator]]
|
|
13945
|
+
});
|
|
13946
|
+
}
|
|
13947
|
+
onClose() {
|
|
13948
|
+
this.dialogRef.close();
|
|
13949
|
+
}
|
|
13950
|
+
onApply() {
|
|
13951
|
+
this.dialogRef.close({ text: this.form.controls.text.value, link: this.form.controls.link.value });
|
|
13952
|
+
}
|
|
13953
|
+
onEnter() {
|
|
13954
|
+
if (this.form.invalid) {
|
|
13955
|
+
return;
|
|
13956
|
+
}
|
|
13957
|
+
this.onApply();
|
|
13958
|
+
}
|
|
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 }); }
|
|
13961
|
+
}
|
|
13962
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: AddLinkDialogComponent, decorators: [{
|
|
13963
|
+
type: Component,
|
|
13964
|
+
args: [{ standalone: true, imports: [
|
|
13965
|
+
CommonModule,
|
|
13966
|
+
MatButtonModule,
|
|
13967
|
+
MatDialogModule,
|
|
13968
|
+
MatFormFieldModule,
|
|
13969
|
+
MatIconModule,
|
|
13970
|
+
MatInputModule,
|
|
13971
|
+
ReactiveFormsModule,
|
|
13972
|
+
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"] }]
|
|
13974
|
+
}], ctorParameters: () => [{ type: i1$4.MatDialogRef }, { type: AddLinkDialogOptions, decorators: [{
|
|
13975
|
+
type: Inject,
|
|
13976
|
+
args: [MAT_DIALOG_DATA]
|
|
13977
|
+
}] }, { type: i2$3.FormBuilder }] });
|
|
13681
13978
|
|
|
13682
13979
|
class DocumentNameModel {
|
|
13683
13980
|
constructor(fields) {
|
|
@@ -13687,6 +13984,14 @@ class DocumentNameModel {
|
|
|
13687
13984
|
}
|
|
13688
13985
|
}
|
|
13689
13986
|
|
|
13987
|
+
class DocumentModel {
|
|
13988
|
+
constructor(fields) {
|
|
13989
|
+
if (fields) {
|
|
13990
|
+
Object.assign(this, fields);
|
|
13991
|
+
}
|
|
13992
|
+
}
|
|
13993
|
+
}
|
|
13994
|
+
|
|
13690
13995
|
class FileSourceModel {
|
|
13691
13996
|
constructor(fields) {
|
|
13692
13997
|
if (fields) {
|
|
@@ -13732,5 +14037,5 @@ class OperationModel {
|
|
|
13732
14037
|
* Generated bundle index. Do not edit.
|
|
13733
14038
|
*/
|
|
13734
14039
|
|
|
13735
|
-
export { Alignment, BaseNoderComponent, BreakTypes, CommandModel, CommandType, 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, RevisionModel, SetDocx, TextStyleModel };
|
|
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 };
|
|
13736
14041
|
//# sourceMappingURL=talrace-ngx-noder.mjs.map
|