@talrace/ngx-noder 0.0.8 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/esm2022/lib/apart-components/add-link-dialog/add-link-dialog.component.mjs +21 -9
  2. package/esm2022/lib/apart-components/editor-toolbar/components/base-toolbar.component.mjs +8 -2
  3. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font/font.component.mjs +2 -2
  4. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-size/font-size.component.mjs +3 -3
  5. package/esm2022/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.mjs +2 -2
  6. package/esm2022/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.mjs +1 -8
  7. package/esm2022/lib/editor/components/edges/edge.component.mjs +2 -2
  8. package/esm2022/lib/editor/components/edges/edges.mjs +21 -2
  9. package/esm2022/lib/editor/components/image/input-handler/image-input.handler.mjs +18 -1
  10. package/esm2022/lib/editor/components/shared/services/custom-content.service.mjs +22 -56
  11. package/esm2022/lib/editor/components/table/components/table-cell.component.mjs +6 -6
  12. package/esm2022/lib/editor/components/table/components/table.component.mjs +13 -4
  13. package/esm2022/lib/editor/components/table/models/cell-data.model.mjs +3 -4
  14. package/esm2022/lib/editor/components/table/selection/table-selection.mjs +15 -5
  15. package/esm2022/lib/editor/content/constants/editor.const.mjs +9 -1
  16. package/esm2022/lib/editor/content/display-data/display-data.mjs +839 -0
  17. package/esm2022/lib/editor/content/display-data/general-properties.model.mjs +1 -1
  18. package/esm2022/lib/editor/content/display-data/models/paragraph-info.model.mjs +8 -0
  19. package/esm2022/lib/editor/content/display-data/paragraph.mjs +5 -1
  20. package/esm2022/lib/editor/content/display-data/text-line-info.mjs +2 -1
  21. package/esm2022/lib/editor/content/display-data/toolbar-styles.interface.mjs +1 -1
  22. package/esm2022/lib/editor/content/helpers/content-style.helper.mjs +12 -30
  23. package/esm2022/lib/editor/content/helpers/display-token.helper.mjs +62 -0
  24. package/esm2022/lib/editor/content/helpers/link.helper.mjs +6 -0
  25. package/esm2022/lib/editor/display/layers/cursor.layer.mjs +9 -8
  26. package/esm2022/lib/editor/display/layers/pages.layer.mjs +5 -5
  27. package/esm2022/lib/editor/display/layers/print.text.layer.mjs +2 -2
  28. package/esm2022/lib/editor/display/layers/selection.layer.mjs +15 -9
  29. package/esm2022/lib/editor/display/layers/text.layer.mjs +29 -32
  30. package/esm2022/lib/editor/display/print/print.renderer.mjs +8 -8
  31. package/esm2022/lib/editor/display/renderer.mjs +10 -10
  32. package/esm2022/lib/editor/display/rendering.helper.mjs +2 -4
  33. package/esm2022/lib/editor/display/virtual.renderer.mjs +5 -5
  34. package/esm2022/lib/editor/execution/edit.session.mjs +211 -754
  35. package/esm2022/lib/editor/execution/editor.mjs +119 -77
  36. package/esm2022/lib/editor/execution/helpers/format-style.helper.mjs +41 -32
  37. package/esm2022/lib/editor/execution/helpers/image.helpet.mjs +12 -0
  38. package/esm2022/lib/editor/execution/helpers/paragraph.helper.mjs +11 -3
  39. package/esm2022/lib/editor/execution/regulator.service.mjs +28 -20
  40. package/esm2022/lib/editor/gadgets/numbering/numbering-paragraph-style.model.mjs +13 -0
  41. package/esm2022/lib/editor/gadgets/numbering/numbering.helper.mjs +77 -10
  42. package/esm2022/lib/editor/gadgets/search/search.mjs +6 -6
  43. package/esm2022/lib/editor/interaction/editor.service.mjs +27 -6
  44. package/esm2022/lib/editor/interaction/input.handler.mjs +8 -5
  45. package/esm2022/lib/editor/interaction/mouse.handler.mjs +2 -1
  46. package/esm2022/lib/editor/operations/helpers/format-operations.helper.mjs +32 -2
  47. package/esm2022/lib/editor/operations/helpers/link-operations.helper.mjs +67 -14
  48. package/esm2022/lib/editor/operations/operations-helper.helper.mjs +27 -20
  49. package/esm2022/lib/editor/operations/save-commands.helper.mjs +2 -2
  50. package/esm2022/lib/editor/positioning/content.helper.mjs +15 -15
  51. package/esm2022/lib/editor/positioning/line-width.helper.mjs +5 -5
  52. package/esm2022/lib/editor/positioning/position.helper.mjs +34 -32
  53. package/esm2022/lib/editor/positioning/selection.mjs +42 -32
  54. package/esm2022/lib/editor/revision.helper.mjs +4 -3
  55. package/esm2022/lib/models/generated/link.model.mjs +1 -1
  56. package/esm2022/public-api.mjs +2 -1
  57. package/fesm2022/talrace-ngx-noder.mjs +3863 -3558
  58. package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
  59. package/lib/apart-components/add-link-dialog/add-link-dialog.component.d.ts +0 -1
  60. package/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.d.ts +0 -2
  61. package/lib/editor/components/image/input-handler/image-input.handler.d.ts +3 -0
  62. package/lib/editor/components/shared/services/custom-content.service.d.ts +3 -5
  63. package/lib/editor/components/table/components/table-cell.component.d.ts +1 -1
  64. package/lib/editor/components/table/components/table.component.d.ts +1 -0
  65. package/lib/editor/components/table/models/cell-data.model.d.ts +1 -1
  66. package/lib/editor/components/table/selection/table-selection.d.ts +2 -0
  67. package/lib/editor/content/constants/editor.const.d.ts +2 -0
  68. package/lib/editor/content/display-data/display-data.d.ts +103 -0
  69. package/lib/editor/content/display-data/general-properties.model.d.ts +5 -0
  70. package/lib/editor/content/display-data/models/paragraph-info.model.d.ts +9 -0
  71. package/lib/editor/content/display-data/paragraph.d.ts +1 -0
  72. package/lib/editor/content/display-data/text-line-info.d.ts +1 -0
  73. package/lib/editor/content/display-data/toolbar-styles.interface.d.ts +1 -1
  74. package/lib/editor/content/helpers/content-style.helper.d.ts +1 -2
  75. package/lib/editor/content/helpers/display-token.helper.d.ts +6 -0
  76. package/lib/editor/content/helpers/link.helper.d.ts +4 -0
  77. package/lib/editor/display/layers/text.layer.d.ts +2 -3
  78. package/lib/editor/display/print/print.renderer.d.ts +0 -2
  79. package/lib/editor/execution/edit.session.d.ts +12 -59
  80. package/lib/editor/execution/editor.d.ts +9 -6
  81. package/lib/editor/execution/helpers/format-style.helper.d.ts +2 -2
  82. package/lib/editor/execution/helpers/image.helpet.d.ts +4 -0
  83. package/lib/editor/execution/regulator.service.d.ts +1 -1
  84. package/lib/editor/gadgets/numbering/numbering-paragraph-style.model.d.ts +6 -0
  85. package/lib/editor/gadgets/numbering/numbering.helper.d.ts +10 -3
  86. package/lib/editor/interaction/editor.service.d.ts +12 -3
  87. package/lib/editor/operations/helpers/link-operations.helper.d.ts +6 -3
  88. package/lib/editor/positioning/content.helper.d.ts +6 -5
  89. package/lib/editor/positioning/position.helper.d.ts +3 -3
  90. package/lib/editor/positioning/selection.d.ts +3 -0
  91. package/lib/models/generated/link.model.d.ts +3 -1
  92. package/package.json +8 -8
  93. package/public-api.d.ts +1 -0
  94. package/src/_ngx-noder.theme.scss +31 -2
  95. package/src/styles.scss +0 -1
  96. package/esm2022/lib/editor/content/display-data/document.mjs +0 -134
  97. package/esm2022/lib/editor/content/display-data/pages.wrap.mjs +0 -226
  98. package/esm2022/lib/editor/execution/helpers/delta.helper.mjs +0 -18
  99. package/lib/editor/content/display-data/document.d.ts +0 -56
  100. package/lib/editor/content/display-data/pages.wrap.d.ts +0 -42
  101. package/lib/editor/execution/helpers/delta.helper.d.ts +0 -6
  102. package/src/scss/_fonts.scss +0 -3
@@ -1,226 +0,0 @@
1
- import { EdgeType } from '../../components/edges/edge-type.enum';
2
- import { EventEmitting } from '../../core/event-emitting';
3
- import { NumberingHelper } from '../../gadgets/numbering/numbering.helper';
4
- import { PageHelper } from '../../execution/helpers/page.helper';
5
- import { PageType } from '../../components/edges/page-type.enum';
6
- import { PageVerticalDataModel } from '../page-vertical-data.model';
7
- import { Paragraph } from './paragraph';
8
- import { ParagraphHelper } from '../../execution/helpers/paragraph.helper';
9
- export class PagesWrap extends EventEmitting {
10
- get defaultVerticalData() {
11
- return this.pagesVerticalData.find(x => x.pageType === PageType.Default);
12
- }
13
- constructor(pagesSpace, documentMargin, pageWidth, pageHeight = 0, customComponents) {
14
- super();
15
- this.pagesSpace = pagesSpace;
16
- this.documentMargin = documentMargin;
17
- this.pageWidth = pageWidth;
18
- this.pageHeight = pageHeight;
19
- this.customComponents = customComponents;
20
- this.allPagesHeight = 0;
21
- this.minHeight = 0;
22
- this.paragraphs = [];
23
- this.tabTokens = [];
24
- this.minHeight = this.pageHeight + 2 * this.pagesSpace;
25
- this.contentWidth = this.pageWidth - this.documentMargin.left - this.documentMargin.right;
26
- this.initPagesVerticalData();
27
- this.processTextLinesProperties = !this.pageHeight
28
- ? ParagraphHelper.processTextLinesPropertiesForSinglePage
29
- : ParagraphHelper.processTextLinesProperties;
30
- }
31
- getParagraphTop(index) {
32
- return this.paragraphs[index] ? this.paragraphs[index].distanceFromTop : 0;
33
- }
34
- getParagraphTopForPrint(index) {
35
- if (!this.paragraphs[index]) {
36
- return 0;
37
- }
38
- const paragraph = this.paragraphs[index];
39
- const pageNumber = paragraph.pageNumbers[0];
40
- let pageBreakHeight = 0;
41
- paragraph.textLinesInfo.forEach(linesInfo => {
42
- if (linesInfo.isAfterPageBreak) {
43
- pageBreakHeight = linesInfo.height;
44
- }
45
- });
46
- return paragraph.distanceFromTop - pageNumber * this.pagesSpace - pageBreakHeight;
47
- }
48
- getParagraphHeight(index) {
49
- return this.paragraphs[index] ? this.paragraphs[index].height : 0;
50
- }
51
- remove(index, length) {
52
- this.paragraphs.splice(index, length);
53
- }
54
- reset(paragraphsLength) {
55
- this.paragraphs.length = paragraphsLength;
56
- }
57
- set(row, lineInfos, numberings, docParagraphs) {
58
- if (!this.paragraphs[row]) {
59
- const numberingData = NumberingHelper.createDataModel(numberings, docParagraphs, row);
60
- this.paragraphs[row] = new Paragraph(numberingData, lineInfos[0].offsetBefore, this.processTextLinesProperties);
61
- }
62
- this.paragraphs[row].width = this.contentWidth;
63
- this.paragraphs[row].setTextLinesInfo(lineInfos);
64
- }
65
- getVisibleRange(offsetTop, scrollerHeight) {
66
- let start = this.paragraphs.findIndex(x => offsetTop <= x.distanceFromTop + x.height);
67
- if (start < 0) {
68
- start = 0;
69
- }
70
- let startLineInfo = null;
71
- const startParagraph = this.paragraphs[start];
72
- if (startParagraph) {
73
- const startParagraphOffsetTop = offsetTop - startParagraph.distanceFromTop;
74
- startLineInfo = ParagraphHelper.getVisibleLineInfo(startParagraph?.textLinesInfo, startParagraphOffsetTop, 1);
75
- }
76
- if (!startLineInfo) {
77
- return {
78
- startParagraph: 0,
79
- startLine: 0,
80
- startScreenLine: 0,
81
- startScreenFullLine: 0,
82
- endParagraph: 0,
83
- endLine: 0,
84
- endScreenLine: 0,
85
- endScreenFullLine: 0,
86
- pages: [1]
87
- };
88
- }
89
- let end = this.paragraphs.findIndex(x => offsetTop + scrollerHeight <= x.distanceFromTop + x.height);
90
- if (end < 0) {
91
- end = this.paragraphs.length - 1;
92
- }
93
- let endLineInfo = null;
94
- const endParagraph = this.paragraphs[end];
95
- if (endParagraph) {
96
- const endParagraphOffsetTop = offsetTop + scrollerHeight - endParagraph.distanceFromTop;
97
- endLineInfo = ParagraphHelper.getVisibleLineInfo(endParagraph?.textLinesInfo, endParagraphOffsetTop, -1);
98
- }
99
- const visiblePages = this.getVisiblePages(offsetTop, scrollerHeight);
100
- return {
101
- startParagraph: start,
102
- startLine: startLineInfo.index,
103
- startScreenLine: startLineInfo.screenIndex,
104
- startScreenFullLine: startLineInfo.visibleScreenIndex,
105
- endParagraph: end,
106
- endLine: endLineInfo.index,
107
- endScreenLine: endLineInfo.screenIndex,
108
- endScreenFullLine: endLineInfo.visibleScreenIndex,
109
- pages: visiblePages
110
- };
111
- }
112
- processParagraphsProperties(startParagraphIndex, wrapParagraphIndex) {
113
- this.setParagraphIndexes(wrapParagraphIndex);
114
- const pagesInfo = { pagesVerticalData: this.pagesVerticalData, pagesSpace: this.pagesSpace };
115
- let currentPage = startParagraphIndex === 0 ? 1 : this.paragraphs[startParagraphIndex - 1].lastPageNumber;
116
- let pageVerticalData = PageHelper.getVerticalData(currentPage, this.pagesVerticalData);
117
- for (let i = startParagraphIndex; i < this.paragraphs.length; i++) {
118
- const prevParagraphInfo = this.getPreviousParagraphInfo(i);
119
- const paragraph = this.paragraphs[i];
120
- paragraph.processParagraphProperties(prevParagraphInfo, pagesInfo, this.customComponents.tables);
121
- if (paragraph.firstPageNumber !== currentPage) {
122
- currentPage = paragraph.firstPageNumber;
123
- pageVerticalData = PageHelper.getVerticalData(paragraph.firstPageNumber, this.pagesVerticalData);
124
- }
125
- paragraph.distanceFromTop =
126
- (paragraph.firstPageNumber - 1) * this.pageHeight +
127
- this.pagesSpace * paragraph.firstPageNumber +
128
- pageVerticalData.marginTop +
129
- paragraph.pagePreviousContentHeight;
130
- }
131
- let pageHeight = this.pageHeight;
132
- if (!pageHeight) {
133
- pageHeight = this.getAllParagraphsHeight() + this.documentMargin.top + this.documentMargin.bottom;
134
- this.minHeight = pageHeight + 2 * this.pagesSpace;
135
- this.defaultVerticalData.contentHeight = pageHeight;
136
- }
137
- const lastPageNumber = this.paragraphs[this.paragraphs.length - 1].lastPageNumber;
138
- this.allPagesHeight = lastPageNumber * (pageHeight + this.pagesSpace) + this.pagesSpace;
139
- this.emit('pagesCountChanged', { pagesCount: lastPageNumber, pageHeight: pageHeight + 2 * this.pagesSpace });
140
- }
141
- getAllParagraphsHeight() {
142
- return this.paragraphs.reduce((sum, x) => sum + x.height, 0);
143
- }
144
- destroy() {
145
- this.removeAllListeners('pagesCountChanged');
146
- }
147
- updatePageVerticalData(edgeType, page, wrapParagraphIndex) {
148
- const pageVerticalData = PageHelper.getVerticalData(page, this.pagesVerticalData);
149
- const componentHeight = this.customComponents.edges.getComponentHeight(page, edgeType);
150
- if (edgeType === EdgeType.Header) {
151
- pageVerticalData.marginTop = componentHeight > this.documentMargin.top ? componentHeight : this.documentMargin.top;
152
- }
153
- else {
154
- pageVerticalData.marginBottom = componentHeight > this.documentMargin.bottom ? componentHeight : this.documentMargin.bottom;
155
- }
156
- const newContentHeight = this.pageHeight - pageVerticalData.marginTop - pageVerticalData.marginBottom;
157
- if (newContentHeight === pageVerticalData.contentHeight) {
158
- return;
159
- }
160
- pageVerticalData.contentHeight = newContentHeight;
161
- this.processParagraphsProperties(0, wrapParagraphIndex);
162
- }
163
- getPreviousParagraphInfo(row) {
164
- if (!row || !this.paragraphs.length) {
165
- return { lastPage: 1, paragraphHeight: 0, paragraphLastLine: -1 };
166
- }
167
- const prevParagraph = this.paragraphs[row - 1];
168
- return prevParagraph.getParagraphData();
169
- }
170
- getVisiblePages(offsetTop, containerHeight) {
171
- const visiblePages = [];
172
- let firstVisiblePage = offsetTop / (this.pageHeight + this.pagesSpace);
173
- if (firstVisiblePage % 1 === 0) {
174
- firstVisiblePage++;
175
- }
176
- let visiblePagesCount = containerHeight / (this.pageHeight + this.pagesSpace);
177
- const partialPageOnScreenPercent = Math.trunc(((visiblePagesCount % 1) + (firstVisiblePage % 1)) * 100);
178
- const pageSpaceHeightPercent = Math.trunc((this.pagesSpace / containerHeight) * 100);
179
- if (partialPageOnScreenPercent - pageSpaceHeightPercent > 100) {
180
- visiblePagesCount++;
181
- }
182
- visiblePagesCount = Math.ceil(visiblePagesCount);
183
- firstVisiblePage = Math.ceil(firstVisiblePage);
184
- const documentPagesCount = this.paragraphs[this.paragraphs.length - 1].lastPageNumber;
185
- if (firstVisiblePage + visiblePagesCount - 1 > documentPagesCount) {
186
- visiblePagesCount = documentPagesCount - firstVisiblePage + 1;
187
- }
188
- for (let i = 0; i < visiblePagesCount; i++) {
189
- visiblePages.push(firstVisiblePage + i);
190
- }
191
- return visiblePages;
192
- }
193
- initPagesVerticalData() {
194
- if (!this.customComponents.edges ||
195
- (!this.customComponents.edges.headersComponents.length && !this.customComponents.edges.footersComponents.length)) {
196
- this.pagesVerticalData = [
197
- new PageVerticalDataModel({
198
- marginTop: this.documentMargin.top,
199
- marginBottom: this.documentMargin.bottom,
200
- contentHeight: this.pageHeight - this.documentMargin.top - this.documentMargin.bottom,
201
- pageType: PageType.Default
202
- })
203
- ];
204
- return;
205
- }
206
- const pageTypes = this.customComponents.edges.getUniquePageTypes();
207
- this.pagesVerticalData = pageTypes.map(pageType => {
208
- const headerHeight = this.customComponents.edges.getComponentHeightByPageType(pageType, EdgeType.Header);
209
- const footerHeight = this.customComponents.edges.getComponentHeightByPageType(pageType, EdgeType.Footer);
210
- const marginTop = Math.max(headerHeight, this.documentMargin.top);
211
- const marginBottom = Math.max(footerHeight, this.documentMargin.bottom);
212
- return new PageVerticalDataModel({
213
- marginTop,
214
- marginBottom,
215
- contentHeight: this.pageHeight - marginTop - marginBottom,
216
- pageType
217
- });
218
- });
219
- }
220
- setParagraphIndexes(wrapParagraphIndex) {
221
- for (let i = 0; i < this.paragraphs.length; i++) {
222
- this.paragraphs[i].startInsertIndex = wrapParagraphIndex[i];
223
- }
224
- }
225
- }
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXMud3JhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9jb250ZW50L2Rpc3BsYXktZGF0YS9wYWdlcy53cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFJM0UsTUFBTSxPQUFPLFNBQVUsU0FBUSxhQUFhO0lBYXhDLElBQUksbUJBQW1CO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFTRCxZQUNXLFVBQWtCLEVBQ2xCLGNBQTJCLEVBQzNCLFNBQWlCLEVBQ2pCLGFBQWEsQ0FBQyxFQUNkLGdCQUFtQztRQUUxQyxLQUFLLEVBQUUsQ0FBQztRQU5ELGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWE7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixlQUFVLEdBQVYsVUFBVSxDQUFJO1FBQ2QscUJBQWdCLEdBQWhC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QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekcsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pHLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUV4RSxPQUFPLElBQUkscUJBQXFCLENBQUM7Z0JBQzdCLFNBQVM7Z0JBQ1QsWUFBWTtnQkFDWixhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLEdBQUcsWUFBWTtnQkFDekQsUUFBUTthQUNYLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLG1CQUFtQixDQUFDLGtCQUE0QjtRQUNwRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEaXNwbGF5VG9rZW4gfSBmcm9tICcuL2Rpc3BsYXktdG9rZW4ubW9kZWwnO1xuaW1wb3J0IHsgRWRnZVR5cGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2VkZ2VzL2VkZ2UtdHlwZS5lbnVtJztcbmltcG9ydCB7IEV2ZW50RW1pdHRpbmcgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50LWVtaXR0aW5nJztcbmltcG9ydCB7IElDdXN0b21Db21wb25lbnRzIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9zaGFyZWQvY3VzdG9tLWNvbXBvbmVudHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IExpbmVJbmZvTW9kZWwgfSBmcm9tICcuL2xpbmUtaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBOb2RlclRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy90YWJsZS9jb21wb25lbnRzL3RhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXJnaW5Nb2RlbCB9IGZyb20gJy4uL21hcmdpbi5tb2RlbCc7XG5pbXBvcnQgeyBOdW1iZXJpbmdIZWxwZXIgfSBmcm9tICcuLi8uLi9nYWRnZXRzL251bWJlcmluZy9udW1iZXJpbmcuaGVscGVyJztcbmltcG9ydCB7IE51bWJlcmluZ01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9udW1iZXJpbmcubW9kZWwnO1xuaW1wb3J0IHsgUGFnZUhlbHBlciB9IGZyb20gJy4uLy4uL2V4ZWN1dGlvbi9oZWxwZXJzL3BhZ2UuaGVscGVyJztcbmltcG9ydCB7IFBhZ2VUeXBlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9lZGdlcy9wYWdlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQYWdlVmVydGljYWxEYXRhTW9kZWwgfSBmcm9tICcuLi9wYWdlLXZlcnRpY2FsLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgUGFyYWdyYXBoIH0gZnJvbSAnLi9wYXJhZ3JhcGgnO1xuaW1wb3J0IHsgUGFyYWdyYXBoSGVscGVyIH0gZnJvbSAnLi4vLi4vZXhlY3V0aW9uL2hlbHBlcnMvcGFyYWdyYXBoLmhlbHBlcic7XG5pbXBvcnQgeyBQYXJhZ3JhcGhNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLm1vZGVsJztcbmltcG9ydCB7IFZpc2libGVSYW5nZSB9IGZyb20gJy4uLy4uL2Rpc3BsYXkvdmlzaWJsZS1yYW5nZS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY2xhc3MgUGFnZXNXcmFwIGV4dGVuZHMgRXZlbnRFbWl0dGluZyB7XG4gICAgY29udGVudFdpZHRoOiBudW1iZXI7XG5cbiAgICBhbGxQYWdlc0hlaWdodCA9IDA7XG5cbiAgICBtaW5IZWlnaHQgPSAwO1xuXG4gICAgcGFyYWdyYXBoczogUGFyYWdyYXBoW10gPSBbXTtcblxuICAgIHRhYlRva2VuczogRGlzcGxheVRva2VuW10gPSBbXTtcblxuICAgIHBhZ2VzVmVydGljYWxEYXRhOiBQYWdlVmVydGljYWxEYXRhTW9kZWxbXTtcblxuICAgIGdldCBkZWZhdWx0VmVydGljYWxEYXRhKCk6IFBhZ2VWZXJ0aWNhbERhdGFNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2VzVmVydGljYWxEYXRhLmZpbmQoeCA9PiB4LnBhZ2VUeXBlID09PSBQYWdlVHlwZS5EZWZhdWx0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NUZXh0TGluZXNQcm9wZXJ0aWVzOiAoXG4gICAgICAgIGN1cnJlbnRQYXJhZ3JhcGg6IFBhcmFncmFwaCxcbiAgICAgICAgcHJldlBhcmFncmFwaEluZm86IHsgbGFzdFBhZ2U6IG51bWJlcjsgcGFyYWdyYXBoSGVpZ2h0OiBudW1iZXI7IHBhcmFncmFwaExhc3RMaW5lOiBudW1iZXIgfSxcbiAgICAgICAgcGFnZXNJbmZvOiB7IHBhZ2VzVmVydGljYWxEYXRhOiBQYWdlVmVydGljYWxEYXRhTW9kZWxbXTsgcGFnZXNTcGFjZTogbnVtYmVyIH0sXG4gICAgICAgIHRhYmxlczogQ29tcG9uZW50UmVmPE5vZGVyVGFibGVDb21wb25lbnQ+W11cbiAgICApID0+IHZvaWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHBhZ2VzU3BhY2U6IG51bWJlcixcbiAgICAgICAgcHVibGljIGRvY3VtZW50TWFyZ2luOiBNYXJnaW5Nb2RlbCxcbiAgICAgICAgcHVibGljIHBhZ2VXaWR0aDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcGFnZUhlaWdodCA9IDAsXG4gICAgICAgIHB1YmxpYyBjdXN0b21Db21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50c1xuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1pbkhlaWdodCA9IHRoaXMucGFnZUhlaWdodCArIDIgKiB0aGlzLnBhZ2VzU3BhY2U7XG4gICAgICAgIHRoaXMuY29udGVudFdpZHRoID0gdGhpcy5wYWdlV2lkdGggLSB0aGlzLmRvY3VtZW50TWFyZ2luLmxlZnQgLSB0aGlzLmRvY3VtZW50TWFyZ2luLnJpZ2h0O1xuICAgICAgICB0aGlzLmluaXRQYWdlc1ZlcnRpY2FsRGF0YSgpO1xuXG4gICAgICAgIHRoaXMucHJvY2Vzc1RleHRMaW5lc1Byb3BlcnRpZXMgPSAhdGhpcy5wYWdlSGVpZ2h0XG4gICAgICAgICAgICA/IFBhcmFncmFwaEhlbHBlci5wcm9jZXNzVGV4dExpbmVzUHJvcGVydGllc0ZvclNpbmdsZVBhZ2VcbiAgICAgICAgICAgIDogUGFyYWdyYXBoSGVscGVyLnByb2Nlc3NUZXh0TGluZXNQcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIGdldFBhcmFncmFwaFRvcChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyYWdyYXBoc1tpbmRleF0gPyB0aGlzLnBhcmFncmFwaHNbaW5kZXhdLmRpc3RhbmNlRnJvbVRvcCA6IDA7XG4gICAgfVxuXG4gICAgZ2V0UGFyYWdyYXBoVG9wRm9yUHJpbnQoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmICghdGhpcy5wYXJhZ3JhcGhzW2luZGV4XSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYWdyYXBoID0gdGhpcy5wYXJhZ3JhcGhzW2luZGV4XTtcbiAgICAgICAgY29uc3QgcGFnZU51bWJlciA9IHBhcmFncmFwaC5wYWdlTnVtYmVyc1swXTtcbiAgICAgICAgbGV0IHBhZ2VCcmVha0hlaWdodCA9IDA7XG4gICAgICAgIHBhcmFncmFwaC50ZXh0TGluZXNJbmZvLmZvckVhY2gobGluZXNJbmZvID0+IHtcbiAgICAgICAgICAgIGlmIChsaW5lc0luZm8uaXNBZnRlclBhZ2VCcmVhaykge1xuICAgICAgICAgICAgICAgIHBhZ2VCcmVha0hlaWdodCA9IGxpbmVzSW5mby5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGFyYWdyYXBoLmRpc3RhbmNlRnJvbVRvcCAtIHBhZ2VOdW1iZXIgKiB0aGlzLnBhZ2VzU3BhY2UgLSBwYWdlQnJlYWtIZWlnaHQ7XG4gICAgfVxuXG4gICAgZ2V0UGFyYWdyYXBoSGVpZ2h0KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJhZ3JhcGhzW2luZGV4XSA/IHRoaXMucGFyYWdyYXBoc1tpbmRleF0uaGVpZ2h0IDogMDtcbiAgICB9XG5cbiAgICByZW1vdmUoaW5kZXg6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYXJhZ3JhcGhzLnNwbGljZShpbmRleCwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXNldChwYXJhZ3JhcGhzTGVuZ3RoOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYXJhZ3JhcGhzLmxlbmd0aCA9IHBhcmFncmFwaHNMZW5ndGg7XG4gICAgfVxuXG4gICAgc2V0KHJvdzogbnVtYmVyLCBsaW5lSW5mb3M6IExpbmVJbmZvTW9kZWxbXSwgbnVtYmVyaW5nczogTnVtYmVyaW5nTW9kZWxbXSwgZG9jUGFyYWdyYXBoczogUGFyYWdyYXBoTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucGFyYWdyYXBoc1tyb3ddKSB7XG4gICAgICAgICAgICBjb25zdCBudW1iZXJpbmdEYXRhID0gTnVtYmVyaW5nSGVscGVyLmNyZWF0ZURhdGFNb2RlbChudW1iZXJpbmdzLCBkb2NQYXJhZ3JhcGhzLCByb3cpO1xuICAgICAgICAgICAgdGhpcy5wYXJhZ3JhcGhzW3Jvd10gPSBuZXcgUGFyYWdyYXBoKG51bWJlcmluZ0RhdGEsIGxpbmVJbmZvc1swXS5vZmZzZXRCZWZvcmUsIHRoaXMucHJvY2Vzc1RleHRMaW5lc1Byb3BlcnRpZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wYXJhZ3JhcGhzW3Jvd10ud2lkdGggPSB0aGlzLmNvbnRlbnRXaWR0aDtcbiAgICAgICAgdGhpcy5wYXJhZ3JhcGhzW3Jvd10uc2V0VGV4dExpbmVzSW5mbyhsaW5lSW5mb3MpO1xuICAgIH1cblxuICAgIGdldFZpc2libGVSYW5nZShvZmZzZXRUb3A6IG51bWJlciwgc2Nyb2xsZXJIZWlnaHQ6IG51bWJlcik6IFZpc2libGVSYW5nZSB7XG4gICAgICAgIGxldCBzdGFydCA9IHRoaXMucGFyYWdyYXBocy5maW5kSW5kZXgoeCA9PiBvZmZzZXRUb3AgPD0geC5kaXN0YW5jZUZyb21Ub3AgKyB4LmhlaWdodCk7XG4gICAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdGFydExpbmVJbmZvID0gbnVsbDtcbiAgICAgICAgY29uc3Qgc3RhcnRQYXJhZ3JhcGggPSB0aGlzLnBhcmFncmFwaHNbc3RhcnRdO1xuICAgICAgICBpZiAoc3RhcnRQYXJhZ3JhcGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0UGFyYWdyYXBoT2Zmc2V0VG9wID0gb2Zmc2V0VG9wIC0gc3RhcnRQYXJhZ3JhcGguZGlzdGFuY2VGcm9tVG9wO1xuICAgICAgICAgICAgc3RhcnRMaW5lSW5mbyA9IFBhcmFncmFwaEhlbHBlci5nZXRWaXNpYmxlTGluZUluZm8oc3RhcnRQYXJhZ3JhcGg/LnRleHRMaW5lc0luZm8sIHN0YXJ0UGFyYWdyYXBoT2Zmc2V0VG9wLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc3RhcnRMaW5lSW5mbykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzdGFydFBhcmFncmFwaDogMCxcbiAgICAgICAgICAgICAgICBzdGFydExpbmU6IDAsXG4gICAgICAgICAgICAgICAgc3RhcnRTY3JlZW5MaW5lOiAwLFxuICAgICAgICAgICAgICAgIHN0YXJ0U2NyZWVuRnVsbExpbmU6IDAsXG4gICAgICAgICAgICAgICAgZW5kUGFyYWdyYXBoOiAwLFxuICAgICAgICAgICAgICAgIGVuZExpbmU6IDAsXG4gICAgICAgICAgICAgICAgZW5kU2NyZWVuTGluZTogMCxcbiAgICAgICAgICAgICAgICBlbmRTY3JlZW5GdWxsTGluZTogMCxcbiAgICAgICAgICAgICAgICBwYWdlczogWzFdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVuZCA9IHRoaXMucGFyYWdyYXBocy5maW5kSW5kZXgoeCA9PiBvZmZzZXRUb3AgKyBzY3JvbGxlckhlaWdodCA8PSB4LmRpc3RhbmNlRnJvbVRvcCArIHguaGVpZ2h0KTtcbiAgICAgICAgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgICAgIGVuZCA9IHRoaXMucGFyYWdyYXBocy5sZW5ndGggLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVuZExpbmVJbmZvID0gbnVsbDtcbiAgICAgICAgY29uc3QgZW5kUGFyYWdyYXBoID0gdGhpcy5wYXJhZ3JhcGhzW2VuZF07XG4gICAgICAgIGlmIChlbmRQYXJhZ3JhcGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuZFBhcmFncmFwaE9mZnNldFRvcCA9IG9mZnNldFRvcCArIHNjcm9sbGVySGVpZ2h0IC0gZW5kUGFyYWdyYXBoLmRpc3RhbmNlRnJvbVRvcDtcbiAgICAgICAgICAgIGVuZExpbmVJbmZvID0gUGFyYWdyYXBoSGVscGVyLmdldFZpc2libGVMaW5lSW5mbyhlbmRQYXJhZ3JhcGg/LnRleHRMaW5lc0luZm8sIGVuZFBhcmFncmFwaE9mZnNldFRvcCwgLTEpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZVBhZ2VzID0gdGhpcy5nZXRWaXNpYmxlUGFnZXMob2Zmc2V0VG9wLCBzY3JvbGxlckhlaWdodCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXJ0UGFyYWdyYXBoOiBzdGFydCxcbiAgICAgICAgICAgIHN0YXJ0TGluZTogc3RhcnRMaW5lSW5mby5pbmRleCxcbiAgICAgICAgICAgIHN0YXJ0U2NyZWVuTGluZTogc3RhcnRMaW5lSW5mby5zY3JlZW5JbmRleCxcbiAgICAgICAgICAgIHN0YXJ0U2NyZWVuRnVsbExpbmU6IHN0YXJ0TGluZUluZm8udmlzaWJsZVNjcmVlbkluZGV4LFxuICAgICAgICAgICAgZW5kUGFyYWdyYXBoOiBlbmQsXG4gICAgICAgICAgICBlbmRMaW5lOiBlbmRMaW5lSW5mby5pbmRleCxcbiAgICAgICAgICAgIGVuZFNjcmVlbkxpbmU6IGVuZExpbmVJbmZvLnNjcmVlbkluZGV4LFxuICAgICAgICAgICAgZW5kU2NyZWVuRnVsbExpbmU6IGVuZExpbmVJbmZvLnZpc2libGVTY3JlZW5JbmRleCxcbiAgICAgICAgICAgIHBhZ2VzOiB2aXNpYmxlUGFnZXNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9jZXNzUGFyYWdyYXBoc1Byb3BlcnRpZXMoc3RhcnRQYXJhZ3JhcGhJbmRleDogbnVtYmVyLCB3cmFwUGFyYWdyYXBoSW5kZXg6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0UGFyYWdyYXBoSW5kZXhlcyh3cmFwUGFyYWdyYXBoSW5kZXgpO1xuICAgICAgICBjb25zdCBwYWdlc0luZm8gPSB7IHBhZ2VzVmVydGljYWxEYXRhOiB0aGlzLnBhZ2VzVmVydGljYWxEYXRhLCBwYWdlc1NwYWNlOiB0aGlzLnBhZ2VzU3BhY2UgfTtcbiAgICAgICAgbGV0IGN1cnJlbnRQYWdlID0gc3RhcnRQYXJhZ3JhcGhJbmRleCA9PT0gMCA/IDEgOiB0aGlzLnBhcmFncmFwaHNbc3RhcnRQYXJhZ3JhcGhJbmRleCAtIDFdLmxhc3RQYWdlTnVtYmVyO1xuICAgICAgICBsZXQgcGFnZVZlcnRpY2FsRGF0YSA9IFBhZ2VIZWxwZXIuZ2V0VmVydGljYWxEYXRhKGN1cnJlbnRQYWdlLCB0aGlzLnBhZ2VzVmVydGljYWxEYXRhKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0UGFyYWdyYXBoSW5kZXg7IGkgPCB0aGlzLnBhcmFncmFwaHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZQYXJhZ3JhcGhJbmZvID0gdGhpcy5nZXRQcmV2aW91c1BhcmFncmFwaEluZm8oaSk7XG4gICAgICAgICAgICBjb25zdCBwYXJhZ3JhcGggPSB0aGlzLnBhcmFncmFwaHNbaV07XG4gICAgICAgICAgICBwYXJhZ3JhcGgucHJvY2Vzc1BhcmFncmFwaFByb3BlcnRpZXMocHJldlBhcmFncmFwaEluZm8sIHBhZ2VzSW5mbywgdGhpcy5jdXN0b21Db21wb25lbnRzLnRhYmxlcyk7XG4gICAgICAgICAgICBpZiAocGFyYWdyYXBoLmZpcnN0UGFnZU51bWJlciAhPT0gY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFnZSA9IHBhcmFncmFwaC5maXJzdFBhZ2VOdW1iZXI7XG4gICAgICAgICAgICAgICAgcGFnZVZlcnRpY2FsRGF0YSA9IFBhZ2VIZWxwZXIuZ2V0VmVydGljYWxEYXRhKHBhcmFncmFwaC5maXJzdFBhZ2VOdW1iZXIsIHRoaXMucGFnZXNWZXJ0aWNhbERhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXJhZ3JhcGguZGlzdGFuY2VGcm9tVG9wID1cbiAgICAgICAgICAgICAgICAocGFyYWdyYXBoLmZpcnN0UGFnZU51bWJlciAtIDEpICogdGhpcy5wYWdlSGVpZ2h0ICtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VzU3BhY2UgKiBwYXJhZ3JhcGguZmlyc3RQYWdlTnVtYmVyICtcbiAgICAgICAgICAgICAgICBwYWdlVmVydGljYWxEYXRhLm1hcmdpblRvcCArXG4gICAgICAgICAgICAgICAgcGFyYWdyYXBoLnBhZ2VQcmV2aW91c0NvbnRlbnRIZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFnZUhlaWdodCA9IHRoaXMucGFnZUhlaWdodDtcbiAgICAgICAgaWYgKCFwYWdlSGVpZ2h0KSB7XG4gICAgICAgICAgICBwYWdlSGVpZ2h0ID0gdGhpcy5nZXRBbGxQYXJhZ3JhcGhzSGVpZ2h0KCkgKyB0aGlzLmRvY3VtZW50TWFyZ2luLnRvcCArIHRoaXMuZG9jdW1lbnRNYXJnaW4uYm90dG9tO1xuICAgICAgICAgICAgdGhpcy5taW5IZWlnaHQgPSBwYWdlSGVpZ2h0ICsgMiAqIHRoaXMucGFnZXNTcGFjZTtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdFZlcnRpY2FsRGF0YS5jb250ZW50SGVpZ2h0ID0gcGFnZUhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhc3RQYWdlTnVtYmVyID0gdGhpcy5wYXJhZ3JhcGhzW3RoaXMucGFyYWdyYXBocy5sZW5ndGggLSAxXS5sYXN0UGFnZU51bWJlcjtcbiAgICAgICAgdGhpcy5hbGxQYWdlc0hlaWdodCA9IGxhc3RQYWdlTnVtYmVyICogKHBhZ2VIZWlnaHQgKyB0aGlzLnBhZ2VzU3BhY2UpICsgdGhpcy5wYWdlc1NwYWNlO1xuICAgICAgICB0aGlzLmVtaXQoJ3BhZ2VzQ291bnRDaGFuZ2VkJywgeyBwYWdlc0NvdW50OiBsYXN0UGFnZU51bWJlciwgcGFnZUhlaWdodDogcGFnZUhlaWdodCArIDIgKiB0aGlzLnBhZ2VzU3BhY2UgfSk7XG4gICAgfVxuXG4gICAgZ2V0QWxsUGFyYWdyYXBoc0hlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJhZ3JhcGhzLnJlZHVjZSgoc3VtLCB4KSA9PiBzdW0gKyB4LmhlaWdodCwgMCk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3BhZ2VzQ291bnRDaGFuZ2VkJyk7XG4gICAgfVxuXG4gICAgdXBkYXRlUGFnZVZlcnRpY2FsRGF0YShlZGdlVHlwZTogRWRnZVR5cGUsIHBhZ2U6IG51bWJlciwgd3JhcFBhcmFncmFwaEluZGV4OiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYWdlVmVydGljYWxEYXRhID0gUGFnZUhlbHBlci5nZXRWZXJ0aWNhbERhdGEocGFnZSwgdGhpcy5wYWdlc1ZlcnRpY2FsRGF0YSk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudEhlaWdodCA9IHRoaXMuY3VzdG9tQ29tcG9uZW50cy5lZGdlcy5nZXRDb21wb25lbnRIZWlnaHQocGFnZSwgZWRnZVR5cGUpO1xuICAgICAgICBpZiAoZWRnZVR5cGUgPT09IEVkZ2VUeXBlLkhlYWRlcikge1xuICAgICAgICAgICAgcGFnZVZlcnRpY2FsRGF0YS5tYXJnaW5Ub3AgPSBjb21wb25lbnRIZWlnaHQgPiB0aGlzLmRvY3VtZW50TWFyZ2luLnRvcCA/IGNvbXBvbmVudEhlaWdodCA6IHRoaXMuZG9jdW1lbnRNYXJnaW4udG9wO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFnZVZlcnRpY2FsRGF0YS5tYXJnaW5Cb3R0b20gPSBjb21wb25lbnRIZWlnaHQgPiB0aGlzLmRvY3VtZW50TWFyZ2luLmJvdHRvbSA/IGNvbXBvbmVudEhlaWdodCA6IHRoaXMuZG9jdW1lbnRNYXJnaW4uYm90dG9tO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3Q29udGVudEhlaWdodCA9IHRoaXMucGFnZUhlaWdodCAtIHBhZ2VWZXJ0aWNhbERhdGEubWFyZ2luVG9wIC0gcGFnZVZlcnRpY2FsRGF0YS5tYXJnaW5Cb3R0b207XG4gICAgICAgIGlmIChuZXdDb250ZW50SGVpZ2h0ID09PSBwYWdlVmVydGljYWxEYXRhLmNvbnRlbnRIZWlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhZ2VWZXJ0aWNhbERhdGEuY29udGVudEhlaWdodCA9IG5ld0NvbnRlbnRIZWlnaHQ7XG4gICAgICAgIHRoaXMucHJvY2Vzc1BhcmFncmFwaHNQcm9wZXJ0aWVzKDAsIHdyYXBQYXJhZ3JhcGhJbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQcmV2aW91c1BhcmFncmFwaEluZm8ocm93OiBudW1iZXIpOiB7IGxhc3RQYWdlOiBudW1iZXI7IHBhcmFncmFwaEhlaWdodDogbnVtYmVyOyBwYXJhZ3JhcGhMYXN0TGluZTogbnVtYmVyIH0ge1xuICAgICAgICBpZiAoIXJvdyB8fCAhdGhpcy5wYXJhZ3JhcGhzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgbGFzdFBhZ2U6IDEsIHBhcmFncmFwaEhlaWdodDogMCwgcGFyYWdyYXBoTGFzdExpbmU6IC0xIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2UGFyYWdyYXBoID0gdGhpcy5wYXJhZ3JhcGhzW3JvdyAtIDFdO1xuICAgICAgICByZXR1cm4gcHJldlBhcmFncmFwaC5nZXRQYXJhZ3JhcGhEYXRhKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWaXNpYmxlUGFnZXMob2Zmc2V0VG9wOiBudW1iZXIsIGNvbnRhaW5lckhlaWdodDogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgICAgICBjb25zdCB2aXNpYmxlUGFnZXM6IG51bWJlcltdID0gW107XG5cbiAgICAgICAgbGV0IGZpcnN0VmlzaWJsZVBhZ2UgPSBvZmZzZXRUb3AgLyAodGhpcy5wYWdlSGVpZ2h0ICsgdGhpcy5wYWdlc1NwYWNlKTtcbiAgICAgICAgaWYgKGZpcnN0VmlzaWJsZVBhZ2UgJSAxID09PSAwKSB7XG4gICAgICAgICAgICBmaXJzdFZpc2libGVQYWdlKys7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmlzaWJsZVBhZ2VzQ291bnQgPSBjb250YWluZXJIZWlnaHQgLyAodGhpcy5wYWdlSGVpZ2h0ICsgdGhpcy5wYWdlc1NwYWNlKTtcbiAgICAgICAgY29uc3QgcGFydGlhbFBhZ2VPblNjcmVlblBlcmNlbnQgPSBNYXRoLnRydW5jKCgodmlzaWJsZVBhZ2VzQ291bnQgJSAxKSArIChmaXJzdFZpc2libGVQYWdlICUgMSkpICogMTAwKTtcbiAgICAgICAgY29uc3QgcGFnZVNwYWNlSGVpZ2h0UGVyY2VudCA9IE1hdGgudHJ1bmMoKHRoaXMucGFnZXNTcGFjZSAvIGNvbnRhaW5lckhlaWdodCkgKiAxMDApO1xuICAgICAgICBpZiAocGFydGlhbFBhZ2VPblNjcmVlblBlcmNlbnQgLSBwYWdlU3BhY2VIZWlnaHRQZXJjZW50ID4gMTAwKSB7XG4gICAgICAgICAgICB2aXNpYmxlUGFnZXNDb3VudCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgdmlzaWJsZVBhZ2VzQ291bnQgPSBNYXRoLmNlaWwodmlzaWJsZVBhZ2VzQ291bnQpO1xuICAgICAgICBmaXJzdFZpc2libGVQYWdlID0gTWF0aC5jZWlsKGZpcnN0VmlzaWJsZVBhZ2UpO1xuICAgICAgICBjb25zdCBkb2N1bWVudFBhZ2VzQ291bnQgPSB0aGlzLnBhcmFncmFwaHNbdGhpcy5wYXJhZ3JhcGhzLmxlbmd0aCAtIDFdLmxhc3RQYWdlTnVtYmVyO1xuICAgICAgICBpZiAoZmlyc3RWaXNpYmxlUGFnZSArIHZpc2libGVQYWdlc0NvdW50IC0gMSA+IGRvY3VtZW50UGFnZXNDb3VudCkge1xuICAgICAgICAgICAgdmlzaWJsZVBhZ2VzQ291bnQgPSBkb2N1bWVudFBhZ2VzQ291bnQgLSBmaXJzdFZpc2libGVQYWdlICsgMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmlzaWJsZVBhZ2VzQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgdmlzaWJsZVBhZ2VzLnB1c2goZmlyc3RWaXNpYmxlUGFnZSArIGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZpc2libGVQYWdlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRQYWdlc1ZlcnRpY2FsRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMuY3VzdG9tQ29tcG9uZW50cy5lZGdlcyB8fFxuICAgICAgICAgICAgKCF0aGlzLmN1c3RvbUNvbXBvbmVudHMuZWRnZXMuaGVhZGVyc0NvbXBvbmVudHMubGVuZ3RoICYmICF0aGlzLmN1c3RvbUNvbXBvbmVudHMuZWRnZXMuZm9vdGVyc0NvbXBvbmVudHMubGVuZ3RoKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucGFnZXNWZXJ0aWNhbERhdGEgPSBbXG4gICAgICAgICAgICAgICAgbmV3IFBhZ2VWZXJ0aWNhbERhdGFNb2RlbCh7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogdGhpcy5kb2N1bWVudE1hcmdpbi50b3AsXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogdGhpcy5kb2N1bWVudE1hcmdpbi5ib3R0b20sXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRIZWlnaHQ6IHRoaXMucGFnZUhlaWdodCAtIHRoaXMuZG9jdW1lbnRNYXJnaW4udG9wIC0gdGhpcy5kb2N1bWVudE1hcmdpbi5ib3R0b20sXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VUeXBlOiBQYWdlVHlwZS5EZWZhdWx0XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYWdlVHlwZXMgPSB0aGlzLmN1c3RvbUNvbXBvbmVudHMuZWRnZXMuZ2V0VW5pcXVlUGFnZVR5cGVzKCk7XG4gICAgICAgIHRoaXMucGFnZXNWZXJ0aWNhbERhdGEgPSBwYWdlVHlwZXMubWFwKHBhZ2VUeXBlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlckhlaWdodCA9IHRoaXMuY3VzdG9tQ29tcG9uZW50cy5lZGdlcy5nZXRDb21wb25lbnRIZWlnaHRCeVBhZ2VUeXBlKHBhZ2VUeXBlLCBFZGdlVHlwZS5IZWFkZXIpO1xuICAgICAgICAgICAgY29uc3QgZm9vdGVySGVpZ2h0ID0gdGhpcy5jdXN0b21Db21wb25lbnRzLmVkZ2VzLmdldENvbXBvbmVudEhlaWdodEJ5UGFnZVR5cGUocGFnZVR5cGUsIEVkZ2VUeXBlLkZvb3Rlcik7XG4gICAgICAgICAgICBjb25zdCBtYXJnaW5Ub3AgPSBNYXRoLm1heChoZWFkZXJIZWlnaHQsIHRoaXMuZG9jdW1lbnRNYXJnaW4udG9wKTtcbiAgICAgICAgICAgIGNvbnN0IG1hcmdpbkJvdHRvbSA9IE1hdGgubWF4KGZvb3RlckhlaWdodCwgdGhpcy5kb2N1bWVudE1hcmdpbi5ib3R0b20pO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFBhZ2VWZXJ0aWNhbERhdGFNb2RlbCh7XG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgICAgICBjb250ZW50SGVpZ2h0OiB0aGlzLnBhZ2VIZWlnaHQgLSBtYXJnaW5Ub3AgLSBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgICAgcGFnZVR5cGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFBhcmFncmFwaEluZGV4ZXMod3JhcFBhcmFncmFwaEluZGV4OiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGFyYWdyYXBocy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5wYXJhZ3JhcGhzW2ldLnN0YXJ0SW5zZXJ0SW5kZXggPSB3cmFwUGFyYWdyYXBoSW5kZXhbaV07XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,18 +0,0 @@
1
- import { CursorParagraph } from '../../positioning/cursor-paragraph';
2
- export class DeltaHelper {
3
- static remove(paragraphs, start, end) {
4
- const paragraph = paragraphs[start.row].slice(0, start.column) + paragraphs[end.row].slice(end.column);
5
- paragraphs.splice(start.row, end.row - start.row + 1, paragraph);
6
- }
7
- static insertTextAndReturnEndCursorPosition(paragraphs, text, position) {
8
- const left = paragraphs[position.row].slice(0, position.column);
9
- const right = paragraphs[position.row].slice(position.column);
10
- const insertParagraphs = this.splitByParagraphs(`${left}${text}${right}`);
11
- paragraphs.splice(position.row, 1, ...insertParagraphs);
12
- return new CursorParagraph(position.row + insertParagraphs.length - 1, insertParagraphs[insertParagraphs.length - 1].length - right.length);
13
- }
14
- static splitByParagraphs(text) {
15
- return text.split(/\r\n|\r|\n/);
16
- }
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsdGEuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL2V4ZWN1dGlvbi9oZWxwZXJzL2RlbHRhLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFckUsTUFBTSxPQUFPLFdBQVc7SUFDcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFvQixFQUFFLEtBQXNCLEVBQUUsR0FBb0I7UUFDNUUsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxVQUFvQixFQUFFLElBQVksRUFBRSxRQUF5QjtRQUNyRyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5RCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRSxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztRQUN4RCxPQUFPLElBQUksZUFBZSxDQUN0QixRQUFRLENBQUMsR0FBRyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDdEUsQ0FBQztJQUNOLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBWTtRQUNqQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3Vyc29yUGFyYWdyYXBoIH0gZnJvbSAnLi4vLi4vcG9zaXRpb25pbmcvY3Vyc29yLXBhcmFncmFwaCc7XG5cbmV4cG9ydCBjbGFzcyBEZWx0YUhlbHBlciB7XG4gICAgc3RhdGljIHJlbW92ZShwYXJhZ3JhcGhzOiBzdHJpbmdbXSwgc3RhcnQ6IEN1cnNvclBhcmFncmFwaCwgZW5kOiBDdXJzb3JQYXJhZ3JhcGgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyYWdyYXBoID0gcGFyYWdyYXBoc1tzdGFydC5yb3ddLnNsaWNlKDAsIHN0YXJ0LmNvbHVtbikgKyBwYXJhZ3JhcGhzW2VuZC5yb3ddLnNsaWNlKGVuZC5jb2x1bW4pO1xuICAgICAgICBwYXJhZ3JhcGhzLnNwbGljZShzdGFydC5yb3csIGVuZC5yb3cgLSBzdGFydC5yb3cgKyAxLCBwYXJhZ3JhcGgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBpbnNlcnRUZXh0QW5kUmV0dXJuRW5kQ3Vyc29yUG9zaXRpb24ocGFyYWdyYXBoczogc3RyaW5nW10sIHRleHQ6IHN0cmluZywgcG9zaXRpb246IEN1cnNvclBhcmFncmFwaCk6IEN1cnNvclBhcmFncmFwaCB7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBwYXJhZ3JhcGhzW3Bvc2l0aW9uLnJvd10uc2xpY2UoMCwgcG9zaXRpb24uY29sdW1uKTtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBwYXJhZ3JhcGhzW3Bvc2l0aW9uLnJvd10uc2xpY2UocG9zaXRpb24uY29sdW1uKTtcbiAgICAgICAgY29uc3QgaW5zZXJ0UGFyYWdyYXBocyA9IHRoaXMuc3BsaXRCeVBhcmFncmFwaHMoYCR7bGVmdH0ke3RleHR9JHtyaWdodH1gKTtcbiAgICAgICAgcGFyYWdyYXBocy5zcGxpY2UocG9zaXRpb24ucm93LCAxLCAuLi5pbnNlcnRQYXJhZ3JhcGhzKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDdXJzb3JQYXJhZ3JhcGgoXG4gICAgICAgICAgICBwb3NpdGlvbi5yb3cgKyBpbnNlcnRQYXJhZ3JhcGhzLmxlbmd0aCAtIDEsXG4gICAgICAgICAgICBpbnNlcnRQYXJhZ3JhcGhzW2luc2VydFBhcmFncmFwaHMubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gcmlnaHQubGVuZ3RoXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc3RhdGljIHNwbGl0QnlQYXJhZ3JhcGhzKHRleHQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRleHQuc3BsaXQoL1xcclxcbnxcXHJ8XFxuLyk7XG4gICAgfVxufVxuIl19
@@ -1,56 +0,0 @@
1
- import { BreakTypes } from '../../gadgets/page-break/break-types.enum';
2
- import { ContentsInterface } from '../contents.interface';
3
- import { CursorParagraph } from '../../positioning/cursor-paragraph';
4
- import { MarginModel } from '../margin.model';
5
- import { Range } from '../../positioning/range';
6
- export declare class Document {
7
- private model;
8
- pageMargin: MarginModel;
9
- pagesSpace: number;
10
- pageWidth: number;
11
- pageHeight?: number;
12
- lines: string[];
13
- /**
14
- * Returns all the lines in the document as a single string, joined by the new line character.
15
- **/
16
- get text(): string;
17
- get length(): number;
18
- constructor(model: ContentsInterface, pageMargin: MarginModel, pagesSpace: number, pageWidth: number, pageHeight?: number);
19
- insertText(position: CursorParagraph, text: string): CursorParagraph;
20
- /**
21
- * Removes the `range` from the document.
22
- **/
23
- removeRange(range: Range): void;
24
- getLine(lines: string[], index: number): string;
25
- getAllLines(): string[];
26
- getLinesCount(): number;
27
- getLines(firstRow: number, lastRow: number): string[];
28
- /**
29
- * Returns all the text within `range` as an array of lines.
30
- **/
31
- getLinesForRange(range: Range): string[];
32
- /**
33
- * Returns all the text within `range` as a single string.
34
- **/
35
- getTextRange(range: Range): string;
36
- /**
37
- * Converts the position in a document to the character's index.
38
- */
39
- positionToIndex(position: CursorParagraph, startRow?: number): number;
40
- /**
41
- * Converts an index position in a document to the position.
42
- * See 'positionToIndex' for more information.
43
- */
44
- indexToPosition(positionIndex: number, startRow: number): CursorParagraph;
45
- indexesToRange(startIndex: number, endIndex: number): Range;
46
- isNewLineSymbol(index: number): boolean;
47
- /**
48
- * Converts the selection range in a document to the selected paragraphs indexes (start and end of paragraphs).
49
- * start/end refers to the "absolute position" of a character in the document.
50
- */
51
- getSelectedParagraphsByRange(range: Range): {
52
- start: number;
53
- end: number;
54
- };
55
- getPositionAfterBreak(position: CursorParagraph, breakType: BreakTypes): CursorParagraph;
56
- }
@@ -1,42 +0,0 @@
1
- import { DisplayToken } from './display-token.model';
2
- import { EdgeType } from '../../components/edges/edge-type.enum';
3
- import { EventEmitting } from '../../core/event-emitting';
4
- import { ICustomComponents } from '../../components/shared/custom-components.interface';
5
- import { LineInfoModel } from './line-info.model';
6
- import { MarginModel } from '../margin.model';
7
- import { NumberingModel } from '../../../models/generated/numbering.model';
8
- import { PageVerticalDataModel } from '../page-vertical-data.model';
9
- import { Paragraph } from './paragraph';
10
- import { ParagraphModel } from '../../../models/generated/paragraph.model';
11
- import { VisibleRange } from '../../display/visible-range.interface';
12
- export declare class PagesWrap extends EventEmitting {
13
- pagesSpace: number;
14
- documentMargin: MarginModel;
15
- pageWidth: number;
16
- pageHeight: number;
17
- customComponents: ICustomComponents;
18
- contentWidth: number;
19
- allPagesHeight: number;
20
- minHeight: number;
21
- paragraphs: Paragraph[];
22
- tabTokens: DisplayToken[];
23
- pagesVerticalData: PageVerticalDataModel[];
24
- get defaultVerticalData(): PageVerticalDataModel;
25
- private processTextLinesProperties;
26
- constructor(pagesSpace: number, documentMargin: MarginModel, pageWidth: number, pageHeight: number, customComponents: ICustomComponents);
27
- getParagraphTop(index: number): number;
28
- getParagraphTopForPrint(index: number): number;
29
- getParagraphHeight(index: number): number;
30
- remove(index: number, length: number): void;
31
- reset(paragraphsLength: number): void;
32
- set(row: number, lineInfos: LineInfoModel[], numberings: NumberingModel[], docParagraphs: ParagraphModel[]): void;
33
- getVisibleRange(offsetTop: number, scrollerHeight: number): VisibleRange;
34
- processParagraphsProperties(startParagraphIndex: number, wrapParagraphIndex: number[]): void;
35
- getAllParagraphsHeight(): number;
36
- destroy(): void;
37
- updatePageVerticalData(edgeType: EdgeType, page: number, wrapParagraphIndex: number[]): void;
38
- private getPreviousParagraphInfo;
39
- private getVisiblePages;
40
- private initPagesVerticalData;
41
- private setParagraphIndexes;
42
- }
@@ -1,6 +0,0 @@
1
- import { CursorParagraph } from '../../positioning/cursor-paragraph';
2
- export declare class DeltaHelper {
3
- static remove(paragraphs: string[], start: CursorParagraph, end: CursorParagraph): void;
4
- static insertTextAndReturnEndCursorPosition(paragraphs: string[], text: string, position: CursorParagraph): CursorParagraph;
5
- static splitByParagraphs(text: string): string[];
6
- }
@@ -1,3 +0,0 @@
1
- $roboto-font-path: '~roboto-fontface/fonts' !default;
2
-
3
- @import '../../../../node_modules/roboto-fontface/css/roboto/sass/roboto-fontface';