@talrace/ngx-noder 19.0.32 → 19.0.34

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 (54) 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 +1040 -277
  5. package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
  6. package/lib/apart-components/editor-toolbar/components/base-toolbar.component.d.ts +2 -0
  7. package/lib/editor/components/comment-popup/comment-popup.component.d.ts +11 -0
  8. package/lib/editor/display/layers/comment-highlight.layer.d.ts +15 -0
  9. package/lib/editor/display/layers/comment.layer.d.ts +13 -0
  10. package/lib/editor/display/layers/highlight.layer.d.ts +3 -3
  11. package/lib/editor/display/render-changes.interface.d.ts +1 -0
  12. package/lib/editor/display/render-changes.model.d.ts +1 -0
  13. package/lib/editor/display/renderer.d.ts +7 -1
  14. package/lib/editor/display/virtual.renderer.d.ts +7 -1
  15. package/lib/editor/editor.module.d.ts +23 -18
  16. package/lib/editor/execution/edit.session.d.ts +8 -1
  17. package/lib/editor/execution/editor.d.ts +22 -1
  18. package/lib/editor/execution/regulator.service.d.ts +8 -1
  19. package/lib/editor/gadgets/comment/base-comment.component.d.ts +19 -0
  20. package/lib/editor/gadgets/comment/comment-render.service.d.ts +27 -0
  21. package/lib/editor/gadgets/comment/models/remove-comment-dom.model.d.ts +5 -0
  22. package/lib/editor/gadgets/comment/models/remove-comments-dom.model.d.ts +4 -0
  23. package/lib/editor/gadgets/comment/models/render-comment.model.d.ts +10 -0
  24. package/lib/editor/gadgets/comment/models/render-comments.model.d.ts +6 -0
  25. package/lib/editor/gadgets/history/operation-history.d.ts +3 -0
  26. package/lib/editor/gadgets/history/operation.type.d.ts +3 -1
  27. package/lib/editor/gadgets/scrollbar.d.ts +1 -1
  28. package/lib/editor/interaction/editor.service.d.ts +32 -2
  29. package/lib/editor/interaction/mouse.handler.d.ts +2 -1
  30. package/lib/editor/operations/enums/command-type.enum.d.ts +3 -1
  31. package/lib/editor/operations/helpers/range-element-operations.helper.d.ts +9 -0
  32. package/lib/editor/operations/operations-helper.helper.d.ts +5 -2
  33. package/lib/editor/operations/save-commands.helper.d.ts +4 -0
  34. package/lib/editor/positioning/content.helper.d.ts +2 -0
  35. package/lib/editor/positioning/range.interface.d.ts +4 -0
  36. package/lib/models/generated/attach-comment.model.d.ts +5 -0
  37. package/lib/models/generated/cell.model.d.ts +2 -0
  38. package/lib/models/generated/command.model.d.ts +4 -0
  39. package/lib/models/generated/comment.model.d.ts +6 -0
  40. package/lib/models/generated/docx.model.d.ts +2 -0
  41. package/lib/models/generated/edge.model.d.ts +2 -0
  42. package/lib/models/generated/remove-comment.model.d.ts +4 -0
  43. package/lib/models/generated/restore.model.d.ts +2 -0
  44. package/package.json +1 -1
  45. package/public-api.d.ts +1 -0
  46. package/src/_ngx-noder.theme.scss +3 -1
  47. package/src/assets/fonts/nc-iconfont.eot +0 -0
  48. package/src/assets/fonts/nc-iconfont.scss +12 -0
  49. package/src/assets/fonts/nc-iconfont.svg +5 -1
  50. package/src/assets/fonts/nc-iconfont.ttf +0 -0
  51. package/src/assets/fonts/nc-iconfont.woff +0 -0
  52. package/src/lib/apart-components/editor-toolbar/components/toolbar-actions/_toolbar-actions.theme.scss +12 -0
  53. package/src/lib/editor/components/comment-popup/_theme.scss +9 -0
  54. package/src/scss/base-editor.scss +40 -0
@@ -41,10 +41,12 @@ export declare abstract class BaseToolbarComponent extends DestroyComponent {
41
41
  numberingType: NumberingType | null;
42
42
  numberingTemplateType: NumberingTemplateType | null;
43
43
  elements: ExternalElementModel[];
44
+ commentsVisibile: boolean;
44
45
  constructor(customIconService: CustomIconService, injector: Injector, cdr: ChangeDetectorRef, editorService: EditorService);
45
46
  onApplyBold(): void;
46
47
  onApplyUnderline(): void;
47
48
  onApplyItalic(): void;
49
+ onSwitchCommentsVisibility(): void;
48
50
  onCreateElement(model: ExternalElementModel): Promise<void>;
49
51
  protected checkFontLoadedAndApplyStyle(style: TextStyleModel): void;
50
52
  private historyInfoSubscription;
@@ -0,0 +1,11 @@
1
+ import { EditorService } from '../../../editor/interaction/editor.service';
2
+ import { OverlayService } from '../shared/services/overlay.service';
3
+ import * as i0 from "@angular/core";
4
+ export declare class CommentPopupComponent {
5
+ private editorService;
6
+ private overlayService;
7
+ constructor(editorService: EditorService, overlayService: OverlayService);
8
+ addComment(): void;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<CommentPopupComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<CommentPopupComponent, "app-nod-comment-popup", never, {}, {}, never, never, false, never>;
11
+ }
@@ -0,0 +1,15 @@
1
+ import { CommentRenderService } from '../../gadgets/comment/comment-render.service';
2
+ import { EditSession } from '../../execution/edit.session';
3
+ import { HighlightLayer } from './highlight.layer';
4
+ import { ILayerConfig } from './layer.config';
5
+ export declare class CommentHighlightLayer extends HighlightLayer {
6
+ private readonly commentService;
7
+ enabled: boolean;
8
+ private readonly className;
9
+ private readonly selectedCommentClassName;
10
+ private selectedCommentId;
11
+ constructor(parentEl: HTMLElement, cssClass: string, session: EditSession, commentService: CommentRenderService);
12
+ update(config: ILayerConfig): void;
13
+ setSelectedComment(id: number | null): void;
14
+ private requestCommentRender;
15
+ }
@@ -0,0 +1,13 @@
1
+ import { CommentRenderService } from '../../gadgets/comment/comment-render.service';
2
+ export declare class CommentLayer {
3
+ private readonly commentPadding;
4
+ private readonly rendersBySession;
5
+ private element;
6
+ private commentSubscription;
7
+ constructor(parentEl: HTMLElement, commentService: CommentRenderService);
8
+ destroy(): void;
9
+ scrollComments(offsetY: number): void;
10
+ renderComments(): void;
11
+ private applyChanges;
12
+ private drawCommentComponent;
13
+ }
@@ -8,10 +8,10 @@ export declare abstract class HighlightLayer {
8
8
  selectionIndex: number;
9
9
  config: ILayerConfig;
10
10
  constructor(parentEl: HTMLElement, cssClass: string, session: EditSession);
11
- renderHighlight(cssPosition: string, cssClass: string): void;
11
+ renderHighlight(cssPosition: string, cssClass: string): HTMLElement;
12
12
  getTop(row: number): number;
13
- drawMultiLineMarker(range: Range, cssClass: string): void;
14
- drawSingleLineMarker(range: Range, cssClass: string): void;
13
+ drawMultiLineMarker(range: Range, cssClass: string): HTMLElement[];
14
+ drawSingleLineMarker(range: Range, cssClass: string): HTMLElement;
15
15
  drawCustomElementHighlight(elementInfo: CustomElementInfo, cssClass: string, screenParentRange: Range): void;
16
16
  private getRangeInfo;
17
17
  private getMarkerStyle;
@@ -10,5 +10,6 @@ export interface IRenderChanges {
10
10
  dragAndDrop?: boolean;
11
11
  search?: boolean;
12
12
  grammar?: boolean;
13
+ comments?: boolean;
13
14
  visibilityChanged?: boolean;
14
15
  }
@@ -7,6 +7,7 @@ export declare class RenderChangesModel implements IRenderChanges {
7
7
  selection: boolean;
8
8
  search: boolean;
9
9
  grammar: boolean;
10
+ comments: boolean;
10
11
  scroll: boolean;
11
12
  size: boolean;
12
13
  text: boolean;
@@ -1,4 +1,6 @@
1
1
  import { Subject } from 'rxjs';
2
+ import { CommentHighlightLayer } from './layers/comment-highlight.layer';
3
+ import { CommentRenderService } from '../gadgets/comment/comment-render.service';
2
4
  import { CursorLayer } from './layers/cursor.layer';
3
5
  import { CursorParagraph } from '../positioning/cursor-paragraph';
4
6
  import { CustomElementInfo } from './custom-element-info.model';
@@ -24,6 +26,7 @@ export declare class Renderer extends EventEmitting {
24
26
  dragAndDropSelectionLayer: SelectionLayer;
25
27
  searchHighlightLayer: SearchHighlightLayer;
26
28
  grammarHighlightLayer: GrammarHighlightLayer;
29
+ commentsLayer: CommentHighlightLayer;
27
30
  loop: RenderLoop;
28
31
  textarea: HTMLElement;
29
32
  layerConfig: ILayerConfig;
@@ -37,7 +40,7 @@ export declare class Renderer extends EventEmitting {
37
40
  height: number;
38
41
  width: number;
39
42
  };
40
- constructor(parentContainer: HTMLElement, session: EditSession);
43
+ constructor(parentContainer: HTMLElement, commentsService: CommentRenderService, session: EditSession);
41
44
  renderChanges(changes: RenderChangesModel, force?: boolean): void;
42
45
  /**
43
46
  * Triggers a partial update of the text, from the range given by the two parameters.
@@ -78,6 +81,9 @@ export declare class Renderer extends EventEmitting {
78
81
  renderSelection(): void;
79
82
  renderSearchHighlights(): void;
80
83
  renderGrammarHighlights(): void;
84
+ renderComments(): void;
85
+ setSelectedComment(comment: number | null): void;
86
+ setCommentsVisibility(value: boolean): void;
81
87
  renderDragAndDropSelection(): void;
82
88
  private computeLayerConfig;
83
89
  private pagesCountChangedHandler;
@@ -1,3 +1,5 @@
1
+ import { CommentLayer } from './layers/comment.layer';
2
+ import { CommentRenderService } from '../gadgets/comment/comment-render.service';
1
3
  import { CursorLayer } from './layers/cursor.layer';
2
4
  import { CursorParagraph } from '../positioning/cursor-paragraph';
3
5
  import { CustomElementInfo } from './custom-element-info.model';
@@ -24,6 +26,7 @@ export declare class VirtualRenderer {
24
26
  scroller: HTMLElement;
25
27
  pagesLayer: PagesLayer;
26
28
  edgesLayer: EdgesLayer;
29
+ commentLayer: CommentLayer;
27
30
  canScroll: boolean;
28
31
  renderer: Renderer;
29
32
  changes: RenderChangesModel;
@@ -38,7 +41,7 @@ export declare class VirtualRenderer {
38
41
  private paragraphsScrolledIntoViewSubject;
39
42
  private paragraphsScrolledIntoViewSubscription;
40
43
  get ParagraphsAppeared$(): import("rxjs").Observable<import("../content/display-data/models/paragraph-info.model").ParagraphInfoModel[]>;
41
- constructor(parentContainer: HTMLElement, mainSession: EditSession, scrollBar: ScrollBar);
44
+ constructor(parentContainer: HTMLElement, mainSession: EditSession, commentService: CommentRenderService, scrollBar: ScrollBar);
42
45
  renderChanges(changes: RenderChangesModel, force?: boolean): void;
43
46
  /**
44
47
  * Triggers a resize of the editor
@@ -49,6 +52,8 @@ export declare class VirtualRenderer {
49
52
  **/
50
53
  updateLines(firstRow: number, lastRow: number): void;
51
54
  updateCachedSize(force: boolean, width: number, height: number): RenderChangesModel;
55
+ setSelectedComment(commentId: number | null): void;
56
+ setCommentsVisibility(value: boolean): void;
52
57
  moveTextAreaToCursor(): void;
53
58
  updateSelection(range: Range): void;
54
59
  updateSearchHighlights(ranges: Range[]): void;
@@ -89,5 +94,6 @@ export declare class VirtualRenderer {
89
94
  private renderSearchHighlights;
90
95
  private renderGrammarHighlights;
91
96
  private renderDragAndDropSelection;
97
+ private renderComments;
92
98
  private paragraphsScrolledIntoView;
93
99
  }
@@ -1,28 +1,32 @@
1
1
  import { ComponentType } from '@angular/cdk/portal';
2
2
  import { ModuleWithProviders, Type } from '@angular/core';
3
+ import { BaseCommentComponent } from './gadgets/comment/base-comment.component';
3
4
  import { ImageApiService } from './components/image/image-api.service';
4
5
  import { ExternalElementInterface } from '../editor/components/external-element/external-element.service';
5
6
  import { ExternalSidenavModel } from './components/external-element/models/external-sidenav.model';
6
7
  import { InsertOverlayComponentInterface } from './gadgets/insert-overlays/insert-overlay-component.interface';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "./components/editor.component";
9
- import * as i2 from "./components/edges/edge.component";
10
- import * as i3 from "./components/image/components/image.component";
11
- import * as i4 from "./components/tab/tab.component";
12
- import * as i5 from "./components/table/components/table-cell.component";
13
- import * as i6 from "./components/table/components/table.component";
14
- import * as i7 from "./components/image/resizer/resizer.component";
15
- import * as i8 from "./components/table/overlay-menu/overlay-menu.component";
16
- import * as i9 from "@angular/common";
17
- import * as i10 from "../apart-components/editor-ruler/editor-ruler.component";
18
- import * as i11 from "../apart-components/editor-search-bar/editor-search-bar.component";
19
- import * as i12 from "@angular/material/button";
20
- import * as i13 from "@angular/material/dialog";
21
- import * as i14 from "@angular/material/icon";
22
- import * as i15 from "@angular/material/sidenav";
23
- import * as i16 from "@angular/material/tooltip";
24
- import * as i17 from "@angular/forms";
25
- import * as i18 from "@ngx-translate/core";
10
+ import * as i2 from "./components/comment-popup/comment-popup.component";
11
+ import * as i3 from "./components/edges/edge.component";
12
+ import * as i4 from "./components/image/components/image.component";
13
+ import * as i5 from "./components/tab/tab.component";
14
+ import * as i6 from "./components/table/components/table-cell.component";
15
+ import * as i7 from "./components/table/components/table.component";
16
+ import * as i8 from "./components/image/resizer/resizer.component";
17
+ import * as i9 from "./components/table/overlay-menu/overlay-menu.component";
18
+ import * as i10 from "@angular/common";
19
+ import * as i11 from "../apart-components/editor-ruler/editor-ruler.component";
20
+ import * as i12 from "../apart-components/editor-search-bar/editor-search-bar.component";
21
+ import * as i13 from "@angular/cdk/text-field";
22
+ import * as i14 from "@angular/material/button";
23
+ import * as i15 from "@angular/material/dialog";
24
+ import * as i16 from "@angular/material/icon";
25
+ import * as i17 from "@angular/material/menu";
26
+ import * as i18 from "@angular/material/sidenav";
27
+ import * as i19 from "@angular/material/tooltip";
28
+ import * as i20 from "@angular/forms";
29
+ import * as i21 from "@ngx-translate/core";
26
30
  export interface INoderOptions {
27
31
  sidenav?: Partial<ExternalSidenavModel>;
28
32
  imageApiService?: Type<ImageApiService>;
@@ -31,10 +35,11 @@ export interface INoderOptions {
31
35
  component: ComponentType<InsertOverlayComponentInterface>;
32
36
  }[];
33
37
  elementService: Type<ExternalElementInterface>;
38
+ commentComponent?: Type<BaseCommentComponent>;
34
39
  }
35
40
  export declare class EditorModule {
36
41
  static forRoot(options?: INoderOptions): ModuleWithProviders<EditorModule>;
37
42
  static ɵfac: i0.ɵɵFactoryDeclaration<EditorModule, never>;
38
- static ɵmod: i0.ɵɵNgModuleDeclaration<EditorModule, [typeof i1.EditorComponent, typeof i2.NoderEdgeComponent, typeof i3.NoderImageComponent, typeof i4.NoderTabComponent, typeof i5.NoderTableCellComponent, typeof i6.NoderTableComponent, typeof i7.ResizerComponent, typeof i8.TableOverlayMenuComponent], [typeof i9.CommonModule, typeof i10.EditorRulerComponent, typeof i11.EditorSearchBarComponent, typeof i12.MatButtonModule, typeof i13.MatDialogModule, typeof i14.MatIconModule, typeof i15.MatSidenavModule, typeof i16.MatTooltipModule, typeof i17.ReactiveFormsModule, typeof i18.TranslateModule], [typeof i1.EditorComponent]>;
43
+ static ɵmod: i0.ɵɵNgModuleDeclaration<EditorModule, [typeof i1.EditorComponent, typeof i2.CommentPopupComponent, typeof i3.NoderEdgeComponent, typeof i4.NoderImageComponent, typeof i5.NoderTabComponent, typeof i6.NoderTableCellComponent, typeof i7.NoderTableComponent, typeof i8.ResizerComponent, typeof i9.TableOverlayMenuComponent], [typeof i10.CommonModule, typeof i11.EditorRulerComponent, typeof i12.EditorSearchBarComponent, typeof i13.TextFieldModule, typeof i14.MatButtonModule, typeof i15.MatDialogModule, typeof i16.MatIconModule, typeof i17.MatMenuModule, typeof i18.MatSidenavModule, typeof i19.MatTooltipModule, typeof i20.ReactiveFormsModule, typeof i21.TranslateModule], [typeof i1.EditorComponent]>;
39
44
  static ɵinj: i0.ɵɵInjectorDeclaration<EditorModule>;
40
45
  }
@@ -3,6 +3,8 @@ import { ApplyImageStyleModel } from '../../models/generated/apply-image-style.m
3
3
  import { ApplyTableCellsStylesModel } from '../../models/generated/apply-table-cells-styles.model';
4
4
  import { BaseNoderComponent } from '../components/shared/abstract/base.component';
5
5
  import { BreakTypes } from '../gadgets/page-break/break-types.enum';
6
+ import { CommentModel } from '../../models/generated/comment.model';
7
+ import { CommentRenderService } from '../gadgets/comment/comment-render.service';
6
8
  import { ContentType } from '../content/contents.interface';
7
9
  import { CursorParagraph } from '../positioning/cursor-paragraph';
8
10
  import { CustomContent } from '../components/shared/custom-content';
@@ -44,6 +46,7 @@ export declare class EditSession {
44
46
  displayData: DisplayData;
45
47
  sessionId: number;
46
48
  customContentService: CustomContentService;
49
+ commentRenderService: CommentRenderService;
47
50
  model: ContentType;
48
51
  selection: Selection;
49
52
  generalProperties: GeneralPropertiesModel;
@@ -52,12 +55,13 @@ export declare class EditSession {
52
55
  type: 'cell' | 'edge' | 'main' | 'cellWithinEdge';
53
56
  private scrollBar?;
54
57
  edgeType?: EdgeType;
58
+ pageType?: PageType;
55
59
  tokenRe: RegExp;
56
60
  nonTokenRe: RegExp;
57
61
  get scrollTop(): number;
58
62
  get scrollBarHeight(): number;
59
63
  get paragraphInfoChanges$(): import("rxjs").Observable<import("../content/display-data/models/paragraph-info-added.model").ParagraphInfoAdded | import("../content/display-data/models/paragraph-info-content-changed.model").ParagraphInfoContentChanged | import("../content/display-data/models/paragraph-info-content-inserted.model").ParagraphInfoContentInserted | import("../content/display-data/models/paragraphs-infos-removed.model").ParagraphInfosRemoved>;
60
- constructor(displayData: DisplayData, sessionId: number, customContentService: CustomContentService, model: ContentType, selection: Selection, generalProperties: GeneralPropertiesModel, editorService: EditorService, customComponents: ICustomComponents, type: 'cell' | 'edge' | 'main' | 'cellWithinEdge', scrollBar?: ScrollBar, edgeType?: EdgeType);
64
+ constructor(displayData: DisplayData, sessionId: number, customContentService: CustomContentService, commentRenderService: CommentRenderService, model: ContentType, selection: Selection, generalProperties: GeneralPropertiesModel, editorService: EditorService, customComponents: ICustomComponents, type: 'cell' | 'edge' | 'main' | 'cellWithinEdge', scrollBar?: ScrollBar, edgeType?: EdgeType, pageType?: PageType);
61
65
  destroy(): void;
62
66
  getRowLength(row: number): number;
63
67
  getRowCacheIndex(cacheArray: number[], value: number): number;
@@ -102,6 +106,9 @@ export declare class EditSession {
102
106
  removeWithParagraph(model: RemoveWithParagraphModel): void;
103
107
  restoreWithParagraph(model: RestoreWithParagraphModel): void;
104
108
  insertText(position: CursorParagraph, text: string, cursorStyle?: TextStyleModel): CursorParagraph;
109
+ addComment(comment: CommentModel): void;
110
+ removeComment(commentId: number): CommentModel;
111
+ getCommentAtCursor(): CommentModel | null;
105
112
  insertElement(position: CursorParagraph, element: ElementDataModel): CursorParagraph;
106
113
  insertBreak(position: CursorParagraph, breakType: BreakTypes): CursorParagraph;
107
114
  insertTab(position: CursorParagraph): CursorParagraph;
@@ -5,6 +5,7 @@ import { ApplyTableCellsStylesModel } from '../../models/generated/apply-table-c
5
5
  import { BaseNoderComponent } from '../components/shared/abstract/base.component';
6
6
  import { BreakTypes } from '../gadgets/page-break/break-types.enum';
7
7
  import { CommandsService } from '../operations/commands.service';
8
+ import { CommentModel } from '../../models/generated/comment.model';
8
9
  import { CreateEdgesModel } from '../../models/generated/create-edges.model';
9
10
  import { DocumentHandler } from '../interaction/document.handler';
10
11
  import { DocxModel } from '../../models/generated/docx.model';
@@ -85,12 +86,18 @@ export declare class Editor {
85
86
  documentHandler: DocumentHandler;
86
87
  dragAndDrop: DragAndDrop;
87
88
  subscriptions: Subscription[];
89
+ commentCreateRequests: {
90
+ sessionId: number;
91
+ reqId: number;
92
+ comment: CommentModel;
93
+ }[];
88
94
  private readonly search;
89
95
  private readonly emojiRegex;
90
96
  private replaceTerm;
91
97
  private textInput;
92
98
  private clipboardData;
93
99
  private isRerenderSubscriptionOpen;
100
+ private commentsVisible;
94
101
  constructor(model: DocxModel, container: ElementRef<HTMLElement>, editorService: EditorService, overlayService: OverlayService, regulatorService: RegulatorService, commandsService: CommandsService, clipboard: Clipboard, externalElementTagNames: string[], insertOverlays: InsertOverlays, customPageWidth?: number);
95
102
  destroy(): void;
96
103
  selectPageDown(): void;
@@ -138,6 +145,8 @@ export declare class Editor {
138
145
  undo(): void;
139
146
  redo(): void;
140
147
  applyOperation(operation: Operation): void;
148
+ saveAttachCommentToHistory(commentModel: CommentModel): void;
149
+ saveRemoveCommentToHistory(comment: CommentModel, target: TargetModel): void;
141
150
  saveRemoveToHistory(range: Range): void;
142
151
  saveRemoveWithParagraphToHistory(model: RemoveWithParagraphModel, reversed: RestoreWithParagraphModel): void;
143
152
  saveInsertTextToHistory(paragraph: number, indexInParagraph: number, text: string): void;
@@ -165,12 +174,16 @@ export declare class Editor {
165
174
  replaceByCustomElement(textKey: string, model: ElementDataModel): void;
166
175
  removeSelected(): void;
167
176
  removeWithParagraph(): void;
168
- removeCustomElementsData(): void;
177
+ removeExternalData(): void;
169
178
  removeOrLowerNestingNumbering(paragraph: ParagraphInfoModel): void;
170
179
  onInput(): void;
171
180
  onCut(event: ClipboardEvent): void;
172
181
  onCopy(event: ClipboardEvent): void;
173
182
  onPaste(event: ClipboardEvent): void;
183
+ onCreateComment(): void;
184
+ onCommentCreated(reqId: number, commentId: number): void;
185
+ onCommentRemoved(id: number): void;
186
+ onSetCommentsVisibility(value: boolean): void;
174
187
  private initResizeListener;
175
188
  private destroyResizeListener;
176
189
  private rerenderMarker;
@@ -215,6 +228,7 @@ export declare class Editor {
215
228
  removeTableColumns(insertIndex: number, startIndex: number, endIndex: number, sessionId: number): void;
216
229
  resizeTableColumns(resizeTableColumns: ResizeTableColumnsModel, sessionId: number): void;
217
230
  onMousePressedMove(event: MouseEvent): void;
231
+ onMousePressEnd(event: MouseEvent | null): void;
218
232
  provideTextStyle(component: BaseNoderComponent): void;
219
233
  getEdgeTypeByPosition(mousePosition: number): EdgeType | null;
220
234
  applyLeftMarginPageFormat(value: number): void;
@@ -283,8 +297,15 @@ export declare class Editor {
283
297
  private clipboardDataSubscription;
284
298
  private commandCreatedForEdges;
285
299
  private updateEdgeSubscription;
300
+ private commentCreationSubscriptions;
301
+ private rerenderCommentsSubscription;
302
+ private selectCommentSubscription;
303
+ private removeCommentSubscription;
304
+ private setComentsVisibilitySubscription;
286
305
  private recreateMainSession;
287
306
  private changeColumnsWidth;
288
307
  private changeCellsWidth;
289
308
  private setCursorAtSearchResult;
309
+ private setCommentPopup;
310
+ private updateSelectedComment;
290
311
  }
@@ -1,4 +1,5 @@
1
1
  import { ElementRef } from '@angular/core';
2
+ import { CommentRenderService } from '../gadgets/comment/comment-render.service';
2
3
  import { ComponentService } from '../components/shared/services/component.service';
3
4
  import { CustomContentService } from '../components/shared/services/custom-content.service';
4
5
  import { DocxModel } from '../../models/generated/docx.model';
@@ -20,13 +21,14 @@ export declare class RegulatorService {
20
21
  private editorService;
21
22
  private componentService;
22
23
  private grammarService;
24
+ private commentRenderService;
23
25
  mainSession: SessionModel;
24
26
  sessions: SessionModel[];
25
27
  currentSession: SessionModel;
26
28
  selection: Selection;
27
29
  sessionIdIncrement: number;
28
30
  readonly grammarChecker: GrammarChecker;
29
- constructor(customContentService: CustomContentService, editorService: EditorService, componentService: ComponentService, grammarService: GrammarService);
31
+ constructor(customContentService: CustomContentService, editorService: EditorService, componentService: ComponentService, grammarService: GrammarService, commentRenderService: CommentRenderService);
30
32
  addMainSession(model: DocxModel, scalingRatio: number, container: ElementRef<HTMLElement>): void;
31
33
  addCellSession(table: TableModel, margins: MarginModel, component: NoderTableCellComponent, properties: GeneralPropertiesModel): SessionModel;
32
34
  addEdgeSession(component: NoderEdgeComponent): SessionModel;
@@ -44,6 +46,11 @@ export declare class RegulatorService {
44
46
  getCurrentSessionTargets(): TargetModel[];
45
47
  getTargets(session: SessionModel): TargetModel[];
46
48
  getTargetedSession(targets: TargetModel[]): EditSession;
49
+ getCommentTarget(commentId: number): {
50
+ session: SessionModel;
51
+ target: TargetModel;
52
+ } | null;
53
+ setCommentsVisibility(value: boolean): void;
47
54
  isWithinEdge(sessionId: number): boolean;
48
55
  arrangeEdgeChange(sessionId: number): void;
49
56
  forceUpdateDataForEdges(): void;
@@ -0,0 +1,19 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { EditorService } from '../../interaction/editor.service';
3
+ export declare abstract class BaseCommentComponent {
4
+ private elementRef;
5
+ protected editorService: EditorService;
6
+ id: number;
7
+ selected: boolean;
8
+ height: number;
9
+ editing: boolean;
10
+ isNew: boolean;
11
+ private resizeObserver;
12
+ constructor(elementRef: ElementRef, editorService: EditorService);
13
+ setSelected(value: boolean): void;
14
+ setEditing(value: boolean): void;
15
+ abstract focusTextArea(): void;
16
+ markAsNew(): void;
17
+ initialize(): void;
18
+ destroy(): void;
19
+ }
@@ -0,0 +1,27 @@
1
+ import { Type } from '@angular/core';
2
+ import { BaseCommentComponent } from './base-comment.component';
3
+ import { RemoveCommentFromDom } from './models/remove-comment-dom.model';
4
+ import { RemoveCommentsFromDom } from './models/remove-comments-dom.model';
5
+ import { RenderComments } from './models/render-comments.model';
6
+ import * as i0 from "@angular/core";
7
+ export declare class CommentRenderService {
8
+ private componentType;
9
+ private readonly componentInstances;
10
+ private applicationRef;
11
+ private injector;
12
+ private readonly commentRenderRequests;
13
+ get commentRenderRequests$(): import("rxjs").Observable<RemoveCommentFromDom | RemoveCommentsFromDom | RenderComments>;
14
+ constructor(componentType: Type<BaseCommentComponent>);
15
+ requestCommentsRender(sessionId: number, renderRequests: {
16
+ commentId: number;
17
+ top: number;
18
+ left: number;
19
+ }[]): void;
20
+ createNewComment(id: number): void;
21
+ removeCommentFromRender(sessionId: number, id: number): void;
22
+ removeCommentsFromRender(sessionId: number): void;
23
+ setCommentSelected(id: number, selected?: boolean): void;
24
+ private createComponentRef;
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<CommentRenderService, never>;
26
+ static ɵprov: i0.ɵɵInjectableDeclaration<CommentRenderService>;
27
+ }
@@ -0,0 +1,5 @@
1
+ export declare class RemoveCommentFromDom {
2
+ sessionId: number;
3
+ id: number;
4
+ constructor(sessionId: number, id: number);
5
+ }
@@ -0,0 +1,4 @@
1
+ export declare class RemoveCommentsFromDom {
2
+ sessionId: number;
3
+ constructor(sessionId: number);
4
+ }
@@ -0,0 +1,10 @@
1
+ import { ComponentRef } from '@angular/core';
2
+ import { BaseCommentComponent } from '../base-comment.component';
3
+ export declare class RenderComment {
4
+ commentId: number;
5
+ sessionId: number;
6
+ commentRef: ComponentRef<BaseCommentComponent>;
7
+ highlightTop: number;
8
+ highlightLeft: number;
9
+ constructor(comment: ComponentRef<BaseCommentComponent>, sessionId: number, top: number, left: number);
10
+ }
@@ -0,0 +1,6 @@
1
+ import { RenderComment } from './render-comment.model';
2
+ export declare class RenderComments {
3
+ sessionId: number;
4
+ renderRequests: RenderComment[];
5
+ constructor(sessionId: number, renderRequests: RenderComment[]);
6
+ }
@@ -1,5 +1,6 @@
1
1
  import { ApplyDocumentPageFormatModel } from '../../../models/generated/apply-document-page-format.model';
2
2
  import { ApplyTableCellsStylesModel } from '../../../models/generated/apply-table-cells-styles.model';
3
+ import { CommentModel } from '../../../models/generated/comment.model';
3
4
  import { CursorParagraph } from '../../../editor/positioning/cursor-paragraph';
4
5
  import { EditorService } from '../../../editor/interaction/editor.service';
5
6
  import { FormatModel } from '../../../models/generated/format.model';
@@ -38,6 +39,8 @@ export declare class OperationHistory {
38
39
  private readonly storage;
39
40
  private step;
40
41
  constructor(editorService: EditorService, regulatorService: RegulatorService);
42
+ pushAttachComment(comment: CommentModel): void;
43
+ pushRemoveComment(comment: CommentModel): void;
41
44
  pushInsertText(insertIndex: number, text: string): void;
42
45
  pushInsertElement(model: InsertElementModel): void;
43
46
  pushInsertBreak(model: InsertBreakModel, count: number): void;
@@ -5,6 +5,7 @@ import { ApplyPageFormatModel } from '../../../models/generated/apply-page-forma
5
5
  import { ApplyParagraphsModel } from '../../../models/generated/apply-paragraphs.model';
6
6
  import { ApplyTableCellsStylesModel } from '../../../models/generated/apply-table-cells-styles.model';
7
7
  import { ApplyTextStyleModel } from '../../../models/generated/apply-text-style.model';
8
+ import { AttachCommentModel } from '../../../models/generated/attach-comment.model';
8
9
  import { CreateEdgesModel } from '../../../models/generated/create-edges.model';
9
10
  import { DeleteModel } from '../../../models/generated/delete.model';
10
11
  import { InsertBreakModel } from '../../../models/generated/insert-break.model';
@@ -18,6 +19,7 @@ import { InsertTableRowsModel } from '../../../models/generated/insert-table-row
18
19
  import { InsertTabModel } from '../../../models/generated/insert-tab.model';
19
20
  import { InsertTextModel } from '../../../models/generated/insert-text.model';
20
21
  import { MoveRangeModel } from '../../../models/generated/move-range.model';
22
+ import { RemoveCommentModel } from '../../../models/generated/remove-comment.model';
21
23
  import { RemoveEdgesModel } from '../../../models/generated/remove-edges.model';
22
24
  import { RemoveInsertedPageFormatModel } from '../../../models/generated/remove-inserted-page-format.model';
23
25
  import { RemoveNumberingsModel } from '../../../models/generated/remove-numberings.model';
@@ -33,4 +35,4 @@ import { RestorePageFormatsModel } from '../../../models/generated/restore-page-
33
35
  import { RestoreParagraphStylesModel } from '../../../models/generated/restore-paragraph-styles.model';
34
36
  import { RestoreTextStylesModel } from '../../../models/generated/restore-text-styles.model';
35
37
  import { RestoreWithParagraphModel } from '../../../models/generated/restore-with-paragraph.model';
36
- export type Operation = InsertTextModel | DeleteModel | InsertStyledTextModel | RestoreModel | ApplyTextStyleModel | RestoreTextStylesModel | RestoreParagraphStylesModel | InsertElementModel | InsertBreakModel | ApplyImageStyleModel | AddNumberingModel | RestoreNumberingsModel | InsertTabModel | InsertTableColumnsModel | InsertTableRowsModel | RemoveTableColumnsModel | RemoveTableRowsModel | ResizeTableColumnsModel | InsertTableModel | InsertImageModel | RemoveNumberingsModel | ReplaceModel | MoveRangeModel | CreateEdgesModel | RemoveEdgesModel | RemoveWithParagraphModel | RestoreWithParagraphModel | ApplyDocumentPageFormatModel | InsertPageFormatModel | ApplyPageFormatModel | RemoveInsertedPageFormatModel | RestorePageFormatsModel | ApplyParagraphsModel | ReplaceByRestoreModel | ApplyTableCellsStylesModel;
38
+ export type Operation = InsertTextModel | DeleteModel | InsertStyledTextModel | RestoreModel | ApplyTextStyleModel | RestoreTextStylesModel | RestoreParagraphStylesModel | InsertElementModel | InsertBreakModel | ApplyImageStyleModel | AddNumberingModel | RestoreNumberingsModel | InsertTabModel | InsertTableColumnsModel | InsertTableRowsModel | RemoveTableColumnsModel | RemoveTableRowsModel | ResizeTableColumnsModel | InsertTableModel | InsertImageModel | RemoveNumberingsModel | ReplaceModel | MoveRangeModel | CreateEdgesModel | RemoveEdgesModel | RemoveWithParagraphModel | RestoreWithParagraphModel | ApplyDocumentPageFormatModel | InsertPageFormatModel | ApplyPageFormatModel | RemoveInsertedPageFormatModel | RestorePageFormatsModel | ApplyParagraphsModel | ReplaceByRestoreModel | ApplyTableCellsStylesModel | AttachCommentModel | RemoveCommentModel;
@@ -6,7 +6,7 @@ import { Observable } from 'rxjs';
6
6
  export declare class ScrollBar {
7
7
  private parent;
8
8
  readonly MAX_SCROLL_H = 32768;
9
- get scrolled$(): Observable<void>;
9
+ get scrolled$(): Observable<number>;
10
10
  private _scrolled$;
11
11
  element: HTMLElement;
12
12
  inner: HTMLElement;
@@ -1,6 +1,7 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { Type } from '@angular/core';
3
3
  import { BaseNoderComponent } from '../components/shared/abstract/base.component';
4
+ import { Borders } from '../components/shared/enums/borders.enum';
4
5
  import { BreakTypes } from '../gadgets/page-break/break-types.enum';
5
6
  import { EdgeType } from '../components/edges/edge-type.enum';
6
7
  import { ElementDataModel } from '../components/external-element/models/element-data.model';
@@ -10,6 +11,7 @@ import { GrammarError } from '../../models/generated/grammar-error';
10
11
  import { ImageDataModel } from '../../models/generated/image-data.model';
11
12
  import { ImageModel } from '../../models/generated/image.model';
12
13
  import { IToolbarStyles } from '../content/display-data/toolbar-styles.interface';
14
+ import { LineStyles } from '../components/shared/enums/line-styles.enum';
13
15
  import { NumberingLevelModel } from '../../models/generated/numbering-level.model';
14
16
  import { NumberingModel } from '../../models/generated/numbering.model';
15
17
  import { OperationsHistoryInfoModel } from '../../editor/gadgets/history/operations-history-info.model';
@@ -19,8 +21,6 @@ import { ParagraphStyleModel } from '../../models/generated/paragraph-style.mode
19
21
  import { ResizeTableColumnsModel } from '../../models/generated/resize-table-columns.model';
20
22
  import { TabSettingModel } from '../../models/generated/tab-setting.model';
21
23
  import { TextStyleModel } from '../../models/generated/text-style.model';
22
- import { LineStyles } from '../components/shared/enums/line-styles.enum';
23
- import { Borders } from '../components/shared/enums/borders.enum';
24
24
  import * as i0 from "@angular/core";
25
25
  export declare class EditorService {
26
26
  set styles(value: IToolbarStyles);
@@ -124,6 +124,8 @@ export declare class EditorService {
124
124
  private readonly _imageLoaded$;
125
125
  get changedEdge$(): Observable<number>;
126
126
  private readonly _changedEdge$;
127
+ get addCommentAtSelection$(): Observable<void>;
128
+ private readonly _addCommentAtSelection$;
127
129
  get insertTableRows$(): Observable<{
128
130
  insertIndex: number;
129
131
  rowsCount: number;
@@ -208,6 +210,10 @@ export declare class EditorService {
208
210
  private _removeCustomElementsData$;
209
211
  get restoreCustomElementsData$(): Observable<ElementModel[]>;
210
212
  private _restoreCustomElementsData$;
213
+ get removeCommentData$(): Observable<number[]>;
214
+ private _removeCommentData$;
215
+ get restoreCommentData$(): Observable<number[]>;
216
+ private _restoreCommentData$;
211
217
  get currentPage(): number;
212
218
  get currentPage$(): Observable<number>;
213
219
  private readonly _currentPage$;
@@ -240,6 +246,21 @@ export declare class EditorService {
240
246
  numberingModel: NumberingModel | null;
241
247
  }>;
242
248
  private readonly _paragraphStyle$;
249
+ get commentSizeChanged$(): Observable<void>;
250
+ private readonly _commentSizeChanged$;
251
+ get createComment$(): Observable<number>;
252
+ private readonly _createComment$;
253
+ get commentCreated$(): Observable<{
254
+ commentId: number;
255
+ reqId: number;
256
+ }>;
257
+ private readonly _commentCreated$;
258
+ get removeComment$(): Observable<number>;
259
+ private readonly _removeComment$;
260
+ get setCommentSelected$(): Observable<number>;
261
+ private readonly _setCommentSelected$;
262
+ get setCommentsVisibility$(): Observable<boolean>;
263
+ private readonly _setCommentsVisibility$;
243
264
  tabSettings(value: TabSettingModel[]): void;
244
265
  applyFirstLinePosition(value: number): void;
245
266
  applyLeftIndentParagraph(value: number): void;
@@ -306,6 +327,8 @@ export declare class EditorService {
306
327
  removeLeft(): void;
307
328
  removeCustomElementsData(elements: ElementModel[]): void;
308
329
  restoreCustomElementsData(elements: ElementModel[]): void;
330
+ removeCommentData(commentIds: number[]): void;
331
+ restoreCommentData(commentIds: number[]): void;
309
332
  setNewSearchTerm(term: string): void;
310
333
  setNewReplaceTerm(term: string): void;
311
334
  setDialogSearchTerm(term: string): void;
@@ -318,6 +341,13 @@ export declare class EditorService {
318
341
  showGrammarError(error: GrammarError): void;
319
342
  applyGrammarSuggestion(error: GrammarError, suggestionIndex: number, paragraphIndex: number): void;
320
343
  ignoreGrammarSuggestion(error: GrammarError): void;
344
+ addCommentAtSelection(): void;
345
+ commentSizeChanged(): void;
346
+ createComment(reqId: number): void;
347
+ commentCreated(commentId: number, reqId: number): void;
348
+ removeComment(id: number): void;
349
+ setCommentSelected(id: number): void;
350
+ setCommentsVisibility(value: boolean): void;
321
351
  static ɵfac: i0.ɵɵFactoryDeclaration<EditorService, never>;
322
352
  static ɵprov: i0.ɵɵInjectableDeclaration<EditorService>;
323
353
  }
@@ -1,6 +1,7 @@
1
1
  import { Subscription } from 'rxjs';
2
2
  import { Editor } from '../execution/editor';
3
3
  export declare class MouseHandler {
4
+ private readonly clickableElements;
4
5
  private clicks;
5
6
  documentMouseMove$: Subscription;
6
7
  documentMouseUp$: Subscription;
@@ -9,6 +10,6 @@ export declare class MouseHandler {
9
10
  constructor(container: Node, editor: Editor);
10
11
  destroy(): void;
11
12
  startMousePress(editor: Editor): void;
12
- endMousePress(): void;
13
+ endMousePress(editor: Editor | null, event: MouseEvent | null): void;
13
14
  private onMultiMouseDown;
14
15
  }
@@ -36,5 +36,7 @@ export declare enum CommandType {
36
36
  RemoveInsertedPageFormat = 34,
37
37
  RestorePageFormats = 35,
38
38
  ApplyParagraphs = 36,
39
- ApplyTableCellsStyles = 37
39
+ ApplyTableCellsStyles = 37,
40
+ AttachComment = 38,
41
+ RemoveComment = 39
40
42
  }