@talrace/ngx-noder 0.0.25 → 0.0.27

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 (34) hide show
  1. package/assets/i18n/noder.en.json +2 -1
  2. package/assets/i18n/noder.es.json +2 -1
  3. package/assets/i18n/noder.ru.json +2 -1
  4. package/fesm2022/talrace-ngx-noder.mjs +11298 -10955
  5. package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
  6. package/lib/apart-components/editor-toolbar/components/menu-dropdowns/menu-dropdowns.component.d.ts +2 -1
  7. package/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.d.ts +2 -1
  8. package/lib/apart-components/editor-toolbar/editor-toolbar/editor-toolbar.component.d.ts +2 -1
  9. package/lib/apart-components/editor-toolbar/shared/services/toolbar-core.service.d.ts +1 -0
  10. package/lib/editor/components/edges/edges.d.ts +4 -0
  11. package/lib/editor/components/external-element/models/element-data.model.d.ts +3 -2
  12. package/lib/editor/components/external-element/models/external-element.model.d.ts +2 -0
  13. package/lib/editor/content/display-data/display-data.d.ts +1 -0
  14. package/lib/editor/display/layers/edges.layer.d.ts +20 -0
  15. package/lib/editor/display/layers/text.layer.d.ts +0 -11
  16. package/lib/editor/display/print/print.renderer.d.ts +2 -0
  17. package/lib/editor/display/virtual.renderer.d.ts +3 -1
  18. package/lib/editor/execution/edit.session.d.ts +9 -1
  19. package/lib/editor/execution/editor.d.ts +10 -1
  20. package/lib/editor/gadgets/history/operation-history.d.ts +5 -0
  21. package/lib/editor/gadgets/history/operation.type.d.ts +5 -1
  22. package/lib/editor/gadgets/numbering/numbering.helper.d.ts +1 -1
  23. package/lib/editor/operations/enums/command-type.enum.d.ts +5 -1
  24. package/lib/editor/operations/helpers/edges-operations.helper.d.ts +6 -0
  25. package/lib/editor/operations/operations-helper.helper.d.ts +7 -1
  26. package/lib/editor/operations/save-commands.helper.d.ts +8 -0
  27. package/lib/editor/positioning/position.helper.d.ts +0 -2
  28. package/lib/models/generated/command.model.d.ts +8 -0
  29. package/lib/models/generated/create-edges.model.d.ts +4 -0
  30. package/lib/models/generated/remove-edges.model.d.ts +4 -0
  31. package/lib/models/generated/remove-paragraph-and-add-numbering.model.d.ts +10 -0
  32. package/lib/models/generated/restore-paragraph-and-add-numbering.model.d.ts +7 -0
  33. package/package.json +1 -1
  34. package/src/scss/base-editor.scss +14 -7
@@ -16,6 +16,7 @@ export declare class MenuDropdownsComponent extends BaseToolbarComponent {
16
16
  showFormat: boolean;
17
17
  openFileFromDisk: EventEmitter<void>;
18
18
  saveAs: EventEmitter<void>;
19
+ downloadPdf: EventEmitter<void>;
19
20
  insertPageBreak: EventEmitter<void>;
20
21
  createDocument: EventEmitter<void>;
21
22
  rename: EventEmitter<void>;
@@ -35,5 +36,5 @@ export declare class MenuDropdownsComponent extends BaseToolbarComponent {
35
36
  onSelectNumberingTemplate(numberingTemplateType: NumberingTemplateType): void;
36
37
  onTableInsertMenuClosed(): void;
37
38
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuDropdownsComponent, never>;
38
- static ɵcmp: i0.ɵɵComponentDeclaration<MenuDropdownsComponent, "app-nod-menu-dropdowns", never, { "showFile": { "alias": "showFile"; "required": false; }; "showEdit": { "alias": "showEdit"; "required": false; }; "showInsert": { "alias": "showInsert"; "required": false; }; "showLayout": { "alias": "showLayout"; "required": false; }; "showFormat": { "alias": "showFormat"; "required": false; }; }, { "openFileFromDisk": "openFileFromDisk"; "saveAs": "saveAs"; "insertPageBreak": "insertPageBreak"; "createDocument": "createDocument"; "rename": "rename"; "delete": "delete"; "openEditMenu": "openEditMenu"; "cutSelected": "cutSelected"; "copySelected": "copySelected"; "pasteClipboardData": "pasteClipboardData"; "selectAll": "selectAll"; "removeSelected": "removeSelected"; }, never, never, false, never>;
39
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuDropdownsComponent, "app-nod-menu-dropdowns", never, { "showFile": { "alias": "showFile"; "required": false; }; "showEdit": { "alias": "showEdit"; "required": false; }; "showInsert": { "alias": "showInsert"; "required": false; }; "showLayout": { "alias": "showLayout"; "required": false; }; "showFormat": { "alias": "showFormat"; "required": false; }; }, { "openFileFromDisk": "openFileFromDisk"; "saveAs": "saveAs"; "downloadPdf": "downloadPdf"; "insertPageBreak": "insertPageBreak"; "createDocument": "createDocument"; "rename": "rename"; "delete": "delete"; "openEditMenu": "openEditMenu"; "cutSelected": "cutSelected"; "copySelected": "copySelected"; "pasteClipboardData": "pasteClipboardData"; "selectAll": "selectAll"; "removeSelected": "removeSelected"; }, never, never, false, never>;
39
40
  }
@@ -12,6 +12,7 @@ export declare class EditorMobileToolbarComponent extends ToolbarActionsComponen
12
12
  openFileFromDisk: EventEmitter<void>;
13
13
  createDocument: EventEmitter<void>;
14
14
  saveAs: EventEmitter<void>;
15
+ downloadPdf: EventEmitter<void>;
15
16
  rename: EventEmitter<void>;
16
17
  delete: EventEmitter<void>;
17
18
  insertPageBreak: EventEmitter<void>;
@@ -24,5 +25,5 @@ export declare class EditorMobileToolbarComponent extends ToolbarActionsComponen
24
25
  onTextFormat(): void;
25
26
  private getActions;
26
27
  static ɵfac: i0.ɵɵFactoryDeclaration<EditorMobileToolbarComponent, never>;
27
- static ɵcmp: i0.ɵɵComponentDeclaration<EditorMobileToolbarComponent, "app-nod-editor-mobile-toolbar", never, {}, { "openFileFromDisk": "openFileFromDisk"; "createDocument": "createDocument"; "saveAs": "saveAs"; "rename": "rename"; "delete": "delete"; "insertPageBreak": "insertPageBreak"; "textFormat": "textFormat"; }, never, never, false, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<EditorMobileToolbarComponent, "app-nod-editor-mobile-toolbar", never, {}, { "openFileFromDisk": "openFileFromDisk"; "createDocument": "createDocument"; "saveAs": "saveAs"; "downloadPdf": "downloadPdf"; "rename": "rename"; "delete": "delete"; "insertPageBreak": "insertPageBreak"; "textFormat": "textFormat"; }, never, never, false, never>;
28
29
  }
@@ -10,6 +10,7 @@ export declare class EditorToolbarComponent {
10
10
  openFileFromDisk: EventEmitter<void>;
11
11
  addCustomElement: EventEmitter<ElementDataModel>;
12
12
  saveAs: EventEmitter<any>;
13
+ downloadPdf: EventEmitter<any>;
13
14
  print: EventEmitter<void>;
14
15
  insertPageBreak: EventEmitter<any>;
15
16
  createDocument: EventEmitter<any>;
@@ -36,5 +37,5 @@ export declare class EditorToolbarComponent {
36
37
  }>;
37
38
  constructor(editorService: EditorService);
38
39
  static ɵfac: i0.ɵɵFactoryDeclaration<EditorToolbarComponent, never>;
39
- static ɵcmp: i0.ɵɵComponentDeclaration<EditorToolbarComponent, "app-nod-editor-toolbar", never, {}, { "openFileFromDisk": "openFileFromDisk"; "addCustomElement": "addCustomElement"; "saveAs": "saveAs"; "print": "print"; "insertPageBreak": "insertPageBreak"; "createDocument": "createDocument"; "insertImage": "insertImage"; "rename": "rename"; "delete": "delete"; "openEditMenu": "openEditMenu"; "redo": "redo"; "undo": "undo"; "cutSelected": "cutSelected"; "copySelected": "copySelected"; "pasteClipboardData": "pasteClipboardData"; "selectAll": "selectAll"; "removeSelected": "removeSelected"; "insertLink": "insertLink"; "createElement": "createElement"; "changeParagraphStyle": "changeParagraphStyle"; "changeTextStyle": "changeTextStyle"; "setNumberingTemplateType": "setNumberingTemplateType"; "removeNumberings": "removeNumberings"; "insertTable": "insertTable"; }, never, never, false, never>;
40
+ static ɵcmp: i0.ɵɵComponentDeclaration<EditorToolbarComponent, "app-nod-editor-toolbar", never, {}, { "openFileFromDisk": "openFileFromDisk"; "addCustomElement": "addCustomElement"; "saveAs": "saveAs"; "downloadPdf": "downloadPdf"; "print": "print"; "insertPageBreak": "insertPageBreak"; "createDocument": "createDocument"; "insertImage": "insertImage"; "rename": "rename"; "delete": "delete"; "openEditMenu": "openEditMenu"; "redo": "redo"; "undo": "undo"; "cutSelected": "cutSelected"; "copySelected": "copySelected"; "pasteClipboardData": "pasteClipboardData"; "selectAll": "selectAll"; "removeSelected": "removeSelected"; "insertLink": "insertLink"; "createElement": "createElement"; "changeParagraphStyle": "changeParagraphStyle"; "changeTextStyle": "changeTextStyle"; "setNumberingTemplateType": "setNumberingTemplateType"; "removeNumberings": "removeNumberings"; "insertTable": "insertTable"; }, never, never, false, never>;
40
41
  }
@@ -7,6 +7,7 @@ export interface IActions {
7
7
  new: () => void;
8
8
  openFrom: () => void;
9
9
  saveAs: () => void;
10
+ downloadPdf: () => void;
10
11
  rename: () => void;
11
12
  print: () => void;
12
13
  delete: () => void;
@@ -8,12 +8,16 @@ import { NoderEdgeComponent } from './edge.component';
8
8
  import { PageType } from './page-type.enum';
9
9
  export declare class Edges {
10
10
  private componentService;
11
+ private margins;
12
+ private pageWidth;
11
13
  private parentSessionId;
12
14
  private generalProperties;
13
15
  headersComponents: ComponentRef<NoderEdgeComponent>[];
14
16
  footersComponents: ComponentRef<NoderEdgeComponent>[];
15
17
  isEdit: boolean;
16
18
  constructor(componentService: ComponentService, headers: EdgeModel[], footers: EdgeModel[], margins: MarginModel, pageWidth: number, parentSessionId: number, generalProperties: GeneralPropertiesModel);
19
+ createEdges(headerModel: EdgeModel, footerModel: EdgeModel): void;
20
+ removeEdges(pageType: PageType): void;
17
21
  getTypeBySessionId(sessionId: number): {
18
22
  type: EdgeType;
19
23
  pageType: PageType;
@@ -1,5 +1,6 @@
1
1
  export declare class ElementDataModel {
2
- type: number;
2
+ id: number;
3
3
  guid: string;
4
- constructor(type: number, guid: string);
4
+ type: number;
5
+ constructor(id: number, guid: string, type: number);
5
6
  }
@@ -7,10 +7,12 @@ export declare class ExternalElementModel {
7
7
  type: number;
8
8
  componentType: Type<BaseNoderComponent>;
9
9
  factoryMethod: () => Promise<{
10
+ id: number;
10
11
  guid: string;
11
12
  type: number;
12
13
  }>;
13
14
  constructor(nameTranslate: string, nameId: string, icon: string, type: number, componentType: Type<BaseNoderComponent>, factoryMethod: () => Promise<{
15
+ id: number;
14
16
  guid: string;
15
17
  type: number;
16
18
  }>);
@@ -81,6 +81,7 @@ export declare class DisplayData extends EventEmitting {
81
81
  private getOrGenerateComponent;
82
82
  private processCharSizes;
83
83
  getLineTokens(model: ContentsInterface, line: string, startIndex: number): DisplayToken[];
84
+ private findSameNumberingIndex;
84
85
  private getEmptyDisplayTokens;
85
86
  private getEmptyLineTokens;
86
87
  private getLineInfoByBreakModifier;
@@ -0,0 +1,20 @@
1
+ import { EdgeElementModel } from '../../components/edges/edge-element.model';
2
+ import { EdgeType } from '../../components/edges/edge-type.enum';
3
+ import { EditSession } from '../../execution/edit.session';
4
+ import { ILayerConfig } from './layer.config';
5
+ import { PageType } from '../../components/edges/page-type.enum';
6
+ export declare class EdgesLayer {
7
+ private parentElement;
8
+ protected session: EditSession;
9
+ element: HTMLElement;
10
+ config: ILayerConfig;
11
+ elements: EdgeElementModel[];
12
+ constructor(parentElement: HTMLElement, session: EditSession);
13
+ updateSingle(type: EdgeType, pageType: PageType): void;
14
+ update(config: ILayerConfig): void;
15
+ scrollEdges(config: ILayerConfig): void;
16
+ protected getEdgeTop(topOffset: number, page: number): number;
17
+ private renderPageHeaderComponent;
18
+ private renderPageFooterComponent;
19
+ private renderEdgeComponent;
20
+ }
@@ -1,9 +1,6 @@
1
- import { EdgeElementModel } from '../../components/edges/edge-element.model';
2
- import { EdgeType } from '../../components/edges/edge-type.enum';
3
1
  import { EditSession } from '../../execution/edit.session';
4
2
  import { ILayerConfig } from './layer.config';
5
3
  import { Lines } from '../../content/display-data/lines';
6
- import { PageType } from '../../components/edges/page-type.enum';
7
4
  import { RenderingHelper } from '../rendering.helper';
8
5
  export declare class TextLayer {
9
6
  private parentElement;
@@ -12,19 +9,11 @@ export declare class TextLayer {
12
9
  element: HTMLElement;
13
10
  lines: Lines;
14
11
  config: ILayerConfig;
15
- edgeElements: EdgeElementModel[];
16
12
  constructor(parentElement: HTMLElement, session: EditSession, renderingHelper?: typeof RenderingHelper);
17
13
  destroy(): void;
18
- updateEdge(type: EdgeType, pageType: PageType): void;
19
- updateEdges(config: ILayerConfig): void;
20
- scrollEdges(config: ILayerConfig): void;
21
14
  updateLines(config: ILayerConfig): void;
22
15
  scrollLines(config: ILayerConfig): void;
23
16
  protected getParagraphTop(row: number): number;
24
- private getEdgeTop;
25
- private renderPageHeaderComponent;
26
- private renderPageFooterComponent;
27
- private renderEdgeComponent;
28
17
  private renderTextParagraph;
29
18
  private renderTextLines;
30
19
  private pagesCountChangedHandler;
@@ -1,3 +1,4 @@
1
+ import { EdgesLayer } from '../layers/edges.layer';
1
2
  import { EditSession } from '../../execution/edit.session';
2
3
  import { PagesLayer } from '../layers/pages.layer';
3
4
  import { PrintTextLayer } from '../layers/print.text.layer';
@@ -6,6 +7,7 @@ export declare class PrintRenderer {
6
7
  content: HTMLElement;
7
8
  textLayer: PrintTextLayer;
8
9
  pagesLayer: PagesLayer;
10
+ edgesLayer: EdgesLayer;
9
11
  documentHtml: string;
10
12
  headHtml: string;
11
13
  pagesCount: number;
@@ -1,12 +1,13 @@
1
1
  import { CursorLayer } from './layers/cursor.layer';
2
2
  import { CursorParagraph } from '../positioning/cursor-paragraph';
3
+ import { EdgesLayer } from './layers/edges.layer';
3
4
  import { EditSession } from '../execution/edit.session';
4
5
  import { ILayerConfig } from './layers/layer.config';
5
6
  import { PagesLayer } from './layers/pages.layer';
6
7
  import { Range } from '../positioning/range';
7
8
  import { RenderChangesModel } from './render-changes.model';
8
- import { Renderer } from './renderer';
9
9
  import { RenderLoop } from './renderloop';
10
+ import { Renderer } from './renderer';
10
11
  import { ScrollBar } from '../gadgets/scrollbar';
11
12
  export declare class VirtualRenderer {
12
13
  scrollBar: ScrollBar;
@@ -20,6 +21,7 @@ export declare class VirtualRenderer {
20
21
  container: HTMLElement;
21
22
  scroller: HTMLElement;
22
23
  pagesLayer: PagesLayer;
24
+ edgesLayer: EdgesLayer;
23
25
  canScroll: boolean;
24
26
  renderer: Renderer;
25
27
  changes: RenderChangesModel;
@@ -25,12 +25,15 @@ import { LinkDataModel } from '../../models/generated/link-data.model';
25
25
  import { LinkModel } from '../../models/generated/link.model';
26
26
  import { NumberingLevelModel } from '../../models/generated/numbering-level.model';
27
27
  import { NumberingModel } from '../../models/generated/numbering.model';
28
+ import { PageType } from '../components/edges/page-type.enum';
28
29
  import { ParagraphModel } from '../../models/generated/paragraph.model';
29
30
  import { ParagraphStyleModel } from '../../models/generated/paragraph-style.model';
30
31
  import { Range } from '../positioning/range';
32
+ import { RemoveParagraphAndAddNumberingModel } from '../../models/generated/remove-paragraph-and-add-numbering.model';
31
33
  import { ReplaceModel } from '../../models/generated/replace.model';
32
34
  import { ResizeTableColumnsModel } from '../../models/generated/resize-table-columns.model';
33
35
  import { RestoreModel } from '../../models/generated/restore.model';
36
+ import { RestoreParagraphAndAddNumberingModel } from '../../models/generated/restore-paragraph-and-add-numbering.model';
34
37
  import { ScrollBar } from '../gadgets/scrollbar';
35
38
  import { Selection } from '../positioning/selection';
36
39
  import { TableModel } from '../../models/generated/table.model';
@@ -82,7 +85,7 @@ export declare class EditSession {
82
85
  applyTextStyle(startIndex: number, endIndex: number, textStyle: TextStyleModel): void;
83
86
  applyParagraphStyle(startIndex: number, endIndex: number, paragraphStyle: ParagraphStyleModel): void;
84
87
  rerender(insertIndex: number): void;
85
- addNumbering(levels: NumberingLevelModel[], startIndex: number, endIndex: number): void;
88
+ addNumbering(levels: NumberingLevelModel[], startIndex: number, endIndex: number, numberingId: number | null): void;
86
89
  removeNumberings(startIndex: number, endIndex: number): void;
87
90
  restoreNumberings(paragraphs: ParagraphModel[], numberings: NumberingModel[]): void;
88
91
  applyImageStyle(applyImage: ApplyImageStyleModel): void;
@@ -95,6 +98,8 @@ export declare class EditSession {
95
98
  */
96
99
  remove(range: Range): void;
97
100
  replace(model: ReplaceModel): CursorParagraph;
101
+ removeParagraphAndAddNumbering(model: RemoveParagraphAndAddNumberingModel): void;
102
+ restoreParagraphAndAddNumbering(model: RestoreParagraphAndAddNumberingModel): void;
98
103
  insertText(position: CursorParagraph, text: string, cursorStyle?: TextStyleModel): CursorParagraph;
99
104
  insertElement(position: CursorParagraph, element: ElementDataModel): CursorParagraph;
100
105
  insertBreak(position: CursorParagraph, breakType: BreakTypes): CursorParagraph;
@@ -116,4 +121,7 @@ export declare class EditSession {
116
121
  removeTableColumns(insertIndex: number, startIndex: number, endIndex: number): void;
117
122
  resizeTableColumns(resizeTableColumns: ResizeTableColumnsModel): void;
118
123
  restoreTable(insertIndex: number, table: TableModel): void;
124
+ paragraphIsNumbering(row: number): boolean;
125
+ createEdges(pageType: PageType): void;
126
+ removeEmptyEdges(pageType: PageType): void;
119
127
  }
@@ -4,8 +4,10 @@ import { Subscription } from 'rxjs';
4
4
  import { BaseNoderComponent } from '../components/shared/abstract/base.component';
5
5
  import { BreakTypes } from '../gadgets/page-break/break-types.enum';
6
6
  import { CommandsService } from '../operations/commands.service';
7
+ import { CreateEdgesModel } from '../../models/generated/create-edges.model';
7
8
  import { DocumentHandler } from '../interaction/document.handler';
8
9
  import { DocxModel } from '../../models/generated/docx.model';
10
+ import { EdgeType } from '../components/edges/edge-type.enum';
9
11
  import { EditorService } from '../interaction/editor.service';
10
12
  import { EditSession } from './edit.session';
11
13
  import { ElementDataModel } from '../components/external-element/models/element-data.model';
@@ -25,12 +27,14 @@ import { MouseHandler } from '../interaction/mouse.handler';
25
27
  import { NumberingLevelModel } from '../../models/generated/numbering-level.model';
26
28
  import { Operation } from '../gadgets/history/operation.type';
27
29
  import { OperationHistory } from '../gadgets/history/operation-history';
30
+ import { PageType } from '../components/edges/page-type.enum';
28
31
  import { ParagraphStyleModel } from '../../models/generated/paragraph-style.model';
29
32
  import { Range } from '../positioning/range';
30
33
  import { RegulatorService } from './regulator.service';
31
34
  import { Renderer } from '../display/renderer';
32
35
  import { ReplaceModel } from '../../models/generated/replace.model';
33
36
  import { ResizeTableColumnsModel } from '../../models/generated/resize-table-columns.model';
37
+ import { RestoreModel } from '../../models/generated/restore.model';
34
38
  import { SearchOptions } from '../gadgets/search/search';
35
39
  import { SearchIteration } from '../gadgets/search/search-iteration.interface';
36
40
  import { Selection } from '../positioning/selection';
@@ -78,6 +82,7 @@ export declare class Editor {
78
82
  insertText(text: string, textStyle: TextStyleModel): void;
79
83
  removeLeft(): void;
80
84
  removeRight(): void;
85
+ createEdges(edgeType: EdgeType, pageType: PageType): void;
81
86
  insertBreak(breakType: BreakTypes): void;
82
87
  insertTab(): void;
83
88
  insertImage(imageData: ImageDataModel): void;
@@ -111,10 +116,12 @@ export declare class Editor {
111
116
  redo(): void;
112
117
  applyOperation(operation: Operation): void;
113
118
  saveRemoveToHistory(range: Range): void;
119
+ saveRemoveParagraphAndAddNumberingToHistory(restore: RestoreModel, templateLevels: NumberingLevelModel[], startIndex: number, numberingId: number): void;
114
120
  saveInsertTextToHistory(paragraph: number, indexInParagraph: number, text: string): void;
115
121
  saveInsertParagraphToHistory(content: string, model: InsertParagraphModel): void;
116
122
  saveInsertStyledTextToHistory(paragraph: number, indexInParagraph: number, text: string, style: TextStyleModel): void;
117
123
  saveInsertElementToHistory(model: InsertElementModel): void;
124
+ saveCreateEdgesToHistory(model: CreateEdgesModel): void;
118
125
  saveInsertBreakToHistory(model: InsertBreakModel): void;
119
126
  saveInsertTabToHistory(model: InsertTabModel): void;
120
127
  saveInsertImageToHistory(model: InsertImageModel): void;
@@ -129,6 +136,7 @@ export declare class Editor {
129
136
  private createRestoreFromSlice;
130
137
  createCustomElement(data: ElementDataModel): void;
131
138
  removeSelected(): void;
139
+ removeParagraphAndSetParagraphToNumbering(): void;
132
140
  removeCustomElementsData(): void;
133
141
  onInput(): void;
134
142
  onCut(event: ClipboardEvent): void;
@@ -172,6 +180,7 @@ export declare class Editor {
172
180
  resizeTableColumns(resizeTableColumns: ResizeTableColumnsModel, sessionId: number): void;
173
181
  onMousePressedMove(event: MouseEvent): void;
174
182
  provideTextStyle(component: BaseNoderComponent): void;
183
+ getClickedEdgeType(mousePosition: number): EdgeType | null;
175
184
  receiveTextStyleSubscription(): Subscription;
176
185
  searchOptionSubscription(): Subscription;
177
186
  replaceSubscription(): Subscription;
@@ -211,5 +220,5 @@ export declare class Editor {
211
220
  private selectAllSubscription;
212
221
  private removeSelectedSubscription;
213
222
  private clipboardDataSubscription;
214
- updateEdgeSubscription(): Subscription;
223
+ private updateEdgeSubscription;
215
224
  }
@@ -12,12 +12,15 @@ import { InsertTabModel } from '../../../models/generated/insert-tab.model';
12
12
  import { NumberingLevelModel } from '../../../models/generated/numbering-level.model';
13
13
  import { NumberingModel } from '../../../models/generated/numbering.model';
14
14
  import { Operation } from './operation.type';
15
+ import { PageType } from '../../components/edges/page-type.enum';
15
16
  import { ParagraphModel } from '../../../models/generated/paragraph.model';
16
17
  import { ParagraphStyleModel } from '../../../models/generated/paragraph-style.model';
17
18
  import { RegulatorService } from '../../execution/regulator.service';
19
+ import { RemoveParagraphAndAddNumberingModel } from '../../../models/generated/remove-paragraph-and-add-numbering.model';
18
20
  import { ReplaceModel } from '../../../models/generated/replace.model';
19
21
  import { ResizeTableColumnsModel } from '../../../models/generated/resize-table-columns.model';
20
22
  import { RestoreModel } from '../../../models/generated/restore.model';
23
+ import { RestoreParagraphAndAddNumberingModel } from '../../../models/generated/restore-paragraph-and-add-numbering.model';
21
24
  import { TableModel } from '../../../models/generated/table.model';
22
25
  import { TargetModel } from '../../../models/generated/target.model';
23
26
  import { TextStyleModel } from '../../../models/generated/text-style.model';
@@ -49,6 +52,8 @@ export declare class OperationHistory {
49
52
  pushAddNumbering(startIndex: number, endIndex: number, levels: NumberingLevelModel[], paragraphs: ParagraphModel[], numberings: NumberingModel[]): void;
50
53
  pushRemoveNumberings(startIndex: number, endIndex: number, numberings: NumberingModel[], paragraphs: ParagraphModel[]): void;
51
54
  pushReplace(restore: RestoreModel, replace: ReplaceModel): void;
55
+ pushRemoveParagraphAndSetParagraphToNumbering(restore: RestoreParagraphAndAddNumberingModel, remove: RemoveParagraphAndAddNumberingModel): void;
56
+ pushCreateEdges(pageType: PageType): void;
52
57
  popUndoOperation(): {
53
58
  operation: Operation | null;
54
59
  targets: TargetModel[];
@@ -1,6 +1,7 @@
1
1
  import { AddNumberingModel } from '../../../models/generated/add-numbering.model';
2
2
  import { ApplyImageStyleModel } from '../../../models/generated/apply-image-style.model';
3
3
  import { ApplyTextStyleModel } from '../../../models/generated/apply-text-style.model';
4
+ import { CreateEdgesModel } from '../../../models/generated/create-edges.model';
4
5
  import { DeleteModel } from '../../../models/generated/delete.model';
5
6
  import { InsertBreakModel } from '../../../models/generated/insert-break.model';
6
7
  import { InsertElementModel } from '../../../models/generated/insert-element.model';
@@ -12,14 +13,17 @@ import { InsertTableModel } from '../../../models/generated/insert-table.model';
12
13
  import { InsertTableRowsModel } from '../../../models/generated/insert-table-rows.model';
13
14
  import { InsertTabModel } from '../../../models/generated/insert-tab.model';
14
15
  import { InsertTextModel } from '../../../models/generated/insert-text.model';
16
+ import { RemoveEdgesModel } from '../../../models/generated/remove-edges.model';
15
17
  import { RemoveNumberingsModel } from '../../../models/generated/remove-numberings.model';
18
+ import { RemoveParagraphAndAddNumberingModel } from '../../../models/generated/remove-paragraph-and-add-numbering.model';
16
19
  import { RemoveTableColumnsModel } from '../../../models/generated/remove-table-columns.model';
17
20
  import { RemoveTableRowsModel } from '../../../models/generated/remove-table-rows.model';
18
21
  import { ReplaceModel } from '../../../models/generated/replace.model';
19
22
  import { ResizeTableColumnsModel } from '../../../models/generated/resize-table-columns.model';
20
23
  import { RestoreModel } from '../../../models/generated/restore.model';
21
24
  import { RestoreNumberingsModel } from '../../../models/generated/restore-numberings.model';
25
+ import { RestoreParagraphAndAddNumberingModel } from '../../../models/generated/restore-paragraph-and-add-numbering.model';
22
26
  import { RestoreParagraphStylesModel } from '../../../models/generated/restore-paragraph-styles.model';
23
27
  import { RestoreTableModel } from '../../../models/generated/restore-table.model';
24
28
  import { RestoreTextStylesModel } from '../../../models/generated/restore-text-styles.model';
25
- export type Operation = InsertTextModel | DeleteModel | InsertStyledTextModel | RestoreModel | ApplyTextStyleModel | RestoreTextStylesModel | RestoreParagraphStylesModel | InsertElementModel | InsertBreakModel | ApplyImageStyleModel | AddNumberingModel | RestoreNumberingsModel | InsertParagraphModel | InsertTabModel | InsertTableColumnsModel | InsertTableRowsModel | RemoveTableColumnsModel | RemoveTableRowsModel | ResizeTableColumnsModel | RestoreTableModel | InsertTableModel | InsertImageModel | RemoveNumberingsModel | ReplaceModel;
29
+ export type Operation = InsertTextModel | DeleteModel | InsertStyledTextModel | RestoreModel | ApplyTextStyleModel | RestoreTextStylesModel | RestoreParagraphStylesModel | InsertElementModel | InsertBreakModel | ApplyImageStyleModel | AddNumberingModel | RestoreNumberingsModel | InsertParagraphModel | InsertTabModel | InsertTableColumnsModel | InsertTableRowsModel | RemoveTableColumnsModel | RemoveTableRowsModel | ResizeTableColumnsModel | RestoreTableModel | InsertTableModel | InsertImageModel | RemoveNumberingsModel | ReplaceModel | CreateEdgesModel | RemoveEdgesModel | RemoveParagraphAndAddNumberingModel | RestoreParagraphAndAddNumberingModel;
@@ -10,7 +10,7 @@ import { TextStyleModel } from '../../../models/generated/text-style.model';
10
10
  export declare class NumberingHelper {
11
11
  static getStyles(paragraphStyle: ParagraphStyleModel, numberings: NumberingModel[]): NumberingParagraphStyleModel;
12
12
  static find(numberings: NumberingModel[], id: number, level: number): NumberingLevelModel;
13
- static calculateNumberingInfo(numberingId: number, level: number, marker: string, numberingInfo: NumberingInfo, numberings: NumberingModel[]): void;
13
+ static calculateNumberingInfo(numberingId: number | null, level: number | null, marker: string, numberingInfo: NumberingInfo, numberings: NumberingModel[]): void;
14
14
  private static calculateMarkerIndexes;
15
15
  static getMarker(levelModel: NumberingLevelModel, numberingId: number, paragraphs: ParagraphModel[], paragraphIndex: number, numberingInfo: NumberingInfo): string;
16
16
  static createDataModel(numberings: NumberingModel[], paragraphs: ParagraphModel[], paragraphIndex: number, numberingInfo: NumberingInfo): NumberingDataModel;
@@ -25,5 +25,9 @@ export declare enum CommandType {
25
25
  RestoreNumberings = 23,
26
26
  Replace = 24,
27
27
  InsertLink = 25,
28
- InsertParagraph = 26
28
+ InsertParagraph = 26,
29
+ CreateEdges = 27,
30
+ RemoveEdges = 28,
31
+ RemoveParagraphAndAddNumbering = 29,
32
+ RestoreParagraphAndAddNumbering = 30
29
33
  }
@@ -0,0 +1,6 @@
1
+ import { EdgeModel } from '../../../models/generated/edge.model';
2
+ import { PageType } from '../../components/edges/page-type.enum';
3
+ export declare class EdgesOperationsHelper {
4
+ static createByType(edges: EdgeModel[], pageType: PageType): void;
5
+ static removeByType(edges: EdgeModel[], pageType: PageType): void;
6
+ }
@@ -3,6 +3,7 @@ import { BreakTypes } from '../gadgets/page-break/break-types.enum';
3
3
  import { CommandModel } from '../../models/generated/command.model';
4
4
  import { ContentsInterface } from '../content/contents.interface';
5
5
  import { DocxModel } from '../../models/generated/docx.model';
6
+ import { EdgeModel } from '../../models/generated/edge.model';
6
7
  import { FormatModel } from '../../models/generated/format.model';
7
8
  import { ImageDataModel } from '../../models/generated/image-data.model';
8
9
  import { InsertElementModel } from '../../models/generated/insert-element.model';
@@ -10,8 +11,10 @@ import { InsertParagraphModel } from '../../models/generated/insert-paragraph.mo
10
11
  import { InsertTableModel } from '../../models/generated/insert-table.model';
11
12
  import { NumberingLevelModel } from '../../models/generated/numbering-level.model';
12
13
  import { NumberingModel } from '../../models/generated/numbering.model';
14
+ import { PageType } from '../components/edges/page-type.enum';
13
15
  import { ParagraphModel } from '../../models/generated/paragraph.model';
14
16
  import { ParagraphStyleModel } from '../../models/generated/paragraph-style.model';
17
+ import { RemoveParagraphAndAddNumberingModel } from '../../models/generated/remove-paragraph-and-add-numbering.model';
15
18
  import { ReplaceModel } from '../../models/generated/replace.model';
16
19
  import { ResizeTableColumnsModel } from '../../models/generated/resize-table-columns.model';
17
20
  import { RestoreModel } from '../../models/generated/restore.model';
@@ -27,8 +30,9 @@ export declare class OperationsHelper {
27
30
  static insertBreak(document: ContentsInterface, text: string, index: number, breakType: BreakTypes): void;
28
31
  static insertTab(document: ContentsInterface, index: number): void;
29
32
  static insertLink(document: ContentsInterface, text: string, link: string, index: number): void;
30
- static addNumbering(target: ContentsInterface, numberings: NumberingModel[], startIndex: number, endIndex: number, levels: NumberingLevelModel[]): void;
33
+ static addNumbering(target: ContentsInterface, numberings: NumberingModel[], startIndex: number, endIndex: number, levels: NumberingLevelModel[], numberingId?: number | null): void;
31
34
  static removeNumberings(target: ContentsInterface, numberings: NumberingModel[], startIndex: number, endIndex: number): void;
35
+ static removeParagraphAndAddNumbering(target: ContentsInterface, numberings: NumberingModel[], model: RemoveParagraphAndAddNumberingModel): void;
32
36
  static restoreNumberings(target: ContentsInterface, numberings: NumberingModel[], paragraphsToRestore: ParagraphModel[], numberingsToRestore: NumberingModel[]): void;
33
37
  static insertImage(document: ContentsInterface, index: number, imageData: ImageDataModel): void;
34
38
  static insertTable(document: ContentsInterface, index: number, tableModel: InsertTableModel, contentWidth: number): void;
@@ -49,4 +53,6 @@ export declare class OperationsHelper {
49
53
  static removeTableColumns(document: ContentsInterface, insertIndex: number, startIndex: number, endIndex: number, contentWidth: number): void;
50
54
  static restoreTable(document: ContentsInterface, insertIndex: number, oldTable: TableModel): void;
51
55
  static resizeTableColumns(document: ContentsInterface, resizeTableColumns: ResizeTableColumnsModel): void;
56
+ static createEdges(headers: EdgeModel[], footers: EdgeModel[], pageType: PageType): void;
57
+ static removeEdges(headers: EdgeModel[], footers: EdgeModel[], pageType: PageType): void;
52
58
  }
@@ -1,4 +1,5 @@
1
1
  import { CommandModel } from '../../models/generated/command.model';
2
+ import { CreateEdgesModel } from '../../models/generated/create-edges.model';
2
3
  import { FormatModel } from '../../models/generated/format.model';
3
4
  import { InsertBreakModel } from '../../models/generated/insert-break.model';
4
5
  import { InsertElementModel } from '../../models/generated/insert-element.model';
@@ -10,10 +11,13 @@ import { InsertTabModel } from '../../models/generated/insert-tab.model';
10
11
  import { NumberingLevelModel } from '../../models/generated/numbering-level.model';
11
12
  import { ParagraphModel } from '../../models/generated/paragraph.model';
12
13
  import { ParagraphStyleModel } from '../../models/generated/paragraph-style.model';
14
+ import { RemoveEdgesModel } from '../../models/generated/remove-edges.model';
15
+ import { RemoveParagraphAndAddNumberingModel } from '../../models/generated/remove-paragraph-and-add-numbering.model';
13
16
  import { ReplaceModel } from '../../models/generated/replace.model';
14
17
  import { ResizeTableColumnsModel } from '../../models/generated/resize-table-columns.model';
15
18
  import { RestoreModel } from '../../models/generated/restore.model';
16
19
  import { RestoreNumberingsModel } from '../../models/generated/restore-numberings.model';
20
+ import { RestoreParagraphAndAddNumberingModel } from '../../models/generated/restore-paragraph-and-add-numbering.model';
17
21
  import { RestoreTableModel } from '../../models/generated/restore-table.model';
18
22
  import { TargetModel } from '../../models/generated/target.model';
19
23
  import { TextStyleModel } from '../../models/generated/text-style.model';
@@ -43,5 +47,9 @@ export declare class SaveCommandsHelper {
43
47
  static getRestoreCommand(restoreModel: RestoreModel, targets: TargetModel[]): CommandModel;
44
48
  static getRestoreTableCommand(restoreTable: RestoreTableModel, targets: TargetModel[]): CommandModel;
45
49
  static getReplaceCommand(model: ReplaceModel, targets: TargetModel[]): CommandModel;
50
+ static getRemoveParagraphAndAddNumberingCommand(model: RemoveParagraphAndAddNumberingModel, targets: TargetModel[]): CommandModel;
51
+ static getRestoreParagraphAndAddNumberingCommand(model: RestoreParagraphAndAddNumberingModel, targets: TargetModel[]): CommandModel;
46
52
  static getResizeTableColumnsCommand(resizeTableColumns: ResizeTableColumnsModel, targets: TargetModel[]): CommandModel;
53
+ static getCreateEdgesCommand(createEdges: CreateEdgesModel, targets: TargetModel[]): CommandModel;
54
+ static getRemoveEdgesCommand(removeEdges: RemoveEdgesModel, targets: TargetModel[]): CommandModel;
47
55
  }
@@ -3,7 +3,6 @@ import { CursorPosition } from './cursor-position.interface';
3
3
  import { EditSession } from '../execution/edit.session';
4
4
  import { ParagraphInfo } from '../content/display-data/paragraph-info.interface';
5
5
  import { ParagraphInfoModel } from '../content/display-data/models/paragraph-info.model';
6
- import { VirtualRenderer } from '../display/virtual.renderer';
7
6
  export declare class PositionHelper {
8
7
  /**
9
8
  * Returns an object containing the `pageX` and `pageY` coordinates of the document position.
@@ -45,5 +44,4 @@ export declare class PositionHelper {
45
44
  lineIndex: number;
46
45
  };
47
46
  static getApproximatePosition(session: EditSession, documentLine: number, positionWidth: number): number;
48
- static pixelToPage(clientY: number, mainSession: EditSession, mainRenderer: VirtualRenderer): number;
49
47
  }
@@ -2,6 +2,7 @@ import { AddNumberingModel } from './add-numbering.model';
2
2
  import { ApplyImageStyleModel } from './apply-image-style.model';
3
3
  import { ApplyParagraphStyleModel } from './apply-paragraph-style.model';
4
4
  import { ApplyTextStyleModel } from './apply-text-style.model';
5
+ import { CreateEdgesModel } from './create-edges.model';
5
6
  import { DeleteModel } from './delete.model';
6
7
  import { InsertBreakModel } from './insert-break.model';
7
8
  import { InsertElementModel } from './insert-element.model';
@@ -14,7 +15,9 @@ import { InsertTableModel } from './insert-table.model';
14
15
  import { InsertTableRowsModel } from './insert-table-rows.model';
15
16
  import { InsertTabModel } from './insert-tab.model';
16
17
  import { InsertTextModel } from './insert-text.model';
18
+ import { RemoveEdgesModel } from './remove-edges.model';
17
19
  import { RemoveNumberingsModel } from './remove-numberings.model';
20
+ import { RemoveParagraphAndAddNumberingModel } from './remove-paragraph-and-add-numbering.model';
18
21
  import { RemoveTableColumnsModel } from './remove-table-columns.model';
19
22
  import { RemoveTableRowsModel } from './remove-table-rows.model';
20
23
  import { ReplaceByTextModel } from './replace-by-text.model';
@@ -22,6 +25,7 @@ import { ReplaceModel } from './replace.model';
22
25
  import { ResizeTableColumnsModel } from './resize-table-columns.model';
23
26
  import { RestoreModel } from './restore.model';
24
27
  import { RestoreNumberingsModel } from './restore-numberings.model';
28
+ import { RestoreParagraphAndAddNumberingModel } from './restore-paragraph-and-add-numbering.model';
25
29
  import { RestoreParagraphStylesModel } from './restore-paragraph-styles.model';
26
30
  import { RestoreTableModel } from './restore-table.model';
27
31
  import { RestoreTextStylesModel } from './restore-text-styles.model';
@@ -32,6 +36,7 @@ export declare class CommandModel {
32
36
  applyParagraphStyle: ApplyParagraphStyleModel;
33
37
  applyTextStyle: ApplyTextStyleModel;
34
38
  commandType: any;
39
+ createEdges: CreateEdgesModel;
35
40
  delete: DeleteModel;
36
41
  insertBreak: InsertBreakModel;
37
42
  insertElement: InsertElementModel;
@@ -44,7 +49,9 @@ export declare class CommandModel {
44
49
  insertTableColumns: InsertTableColumnsModel;
45
50
  insertTableRows: InsertTableRowsModel;
46
51
  insertText: InsertTextModel;
52
+ removeEdges: RemoveEdgesModel;
47
53
  removeNumberings: RemoveNumberingsModel;
54
+ removeParagraphAndAddNumbering: RemoveParagraphAndAddNumberingModel;
48
55
  removeTableColumns: RemoveTableColumnsModel;
49
56
  removeTableRows: RemoveTableRowsModel;
50
57
  replace: ReplaceModel;
@@ -52,6 +59,7 @@ export declare class CommandModel {
52
59
  resizeTableColumns: ResizeTableColumnsModel;
53
60
  restore: RestoreModel;
54
61
  restoreNumberings: RestoreNumberingsModel;
62
+ restoreParagraphAndAddNumbering: RestoreParagraphAndAddNumberingModel;
55
63
  restoreParagraphStyles: RestoreParagraphStylesModel;
56
64
  restoreTable: RestoreTableModel;
57
65
  restoreTextStyles: RestoreTextStylesModel;
@@ -0,0 +1,4 @@
1
+ export declare class CreateEdgesModel {
2
+ pageType: any;
3
+ constructor(fields?: Partial<CreateEdgesModel>);
4
+ }
@@ -0,0 +1,4 @@
1
+ export declare class RemoveEdgesModel {
2
+ pageType: any;
3
+ constructor(fields?: Partial<RemoveEdgesModel>);
4
+ }
@@ -0,0 +1,10 @@
1
+ import { DeleteModel } from './delete.model';
2
+ import { NumberingLevelModel } from './numbering-level.model';
3
+ export declare class RemoveParagraphAndAddNumberingModel {
4
+ delete: DeleteModel;
5
+ endIndex: number;
6
+ levels: NumberingLevelModel[];
7
+ numberingId: number;
8
+ startIndex: number;
9
+ constructor(fields?: Partial<RemoveParagraphAndAddNumberingModel>);
10
+ }
@@ -0,0 +1,7 @@
1
+ import { RestoreModel } from './restore.model';
2
+ export declare class RestoreParagraphAndAddNumberingModel {
3
+ endIndex: number;
4
+ restore: RestoreModel;
5
+ startIndex: number;
6
+ constructor(fields?: Partial<RestoreParagraphAndAddNumberingModel>);
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talrace/ngx-noder",
3
- "version": "0.0.25",
3
+ "version": "0.0.27",
4
4
  "license": "MIT",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^19.0.5",
@@ -120,6 +120,17 @@ div.ngx-colors-overlay.noder-color-picker-overlay .opened .colors {
120
120
  pointer-events: auto;
121
121
  }
122
122
 
123
+ .noder-edges-layer {
124
+ font: inherit !important;
125
+ contain: style size layout;
126
+ pointer-events: none;
127
+ }
128
+
129
+ .noder-edge-group {
130
+ z-index: 2;
131
+ pointer-events: auto;
132
+ }
133
+
123
134
  .noder-line {
124
135
  display: flex;
125
136
  align-items: baseline;
@@ -163,13 +174,9 @@ div.ngx-colors-overlay.noder-color-picker-overlay .opened .colors {
163
174
  }
164
175
  }
165
176
 
166
- .noder-edge-group {
167
- z-index: 1;
168
- }
169
-
170
177
  .noder-text-layer > .noder-line,
171
178
  .noder-text-layer > .noder-line-group,
172
- .noder-text-layer > .noder-edge-group {
179
+ .noder-edges-layer > .noder-edge-group {
173
180
  contain: style size layout;
174
181
  position: absolute;
175
182
  top: 0;
@@ -286,8 +293,8 @@ div.ngx-colors-overlay.noder-color-picker-overlay .opened .colors {
286
293
 
287
294
  .page-label {
288
295
  position: absolute;
289
- top: 40px;
290
- right: 96px;
296
+ top: 25px;
297
+ right: 56px;
291
298
  font-family: 'Courier New', Courier, monospace;
292
299
  font-size: 16px;
293
300
  line-height: 1;