@talrace/ngx-noder 0.0.27 → 0.0.29

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 (33) hide show
  1. package/assets/drag-and-drop-cursor.png +0 -0
  2. package/assets/i18n/noder.en.json +26 -0
  3. package/assets/i18n/noder.es.json +26 -0
  4. package/assets/i18n/noder.ru.json +26 -0
  5. package/fesm2022/talrace-ngx-noder.mjs +483 -122
  6. package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
  7. package/lib/apart-components/editor-toolbar/components/buttons/color-picker/color-picker.component.d.ts +2 -1
  8. package/lib/apart-components/editor-toolbar/editor-toolbar.module.d.ts +5 -4
  9. package/lib/editor/components/external-element/models/external-element.model.d.ts +2 -1
  10. package/lib/editor/content/helpers/format.helper.d.ts +1 -0
  11. package/lib/editor/content/helpers/indexed-element.helper.d.ts +1 -0
  12. package/lib/editor/content/helpers/link.helper.d.ts +1 -0
  13. package/lib/editor/display/layers/cursor.layer.d.ts +1 -0
  14. package/lib/editor/display/render-changes.interface.d.ts +1 -0
  15. package/lib/editor/display/render-changes.model.d.ts +1 -0
  16. package/lib/editor/display/renderer.d.ts +5 -0
  17. package/lib/editor/display/virtual.renderer.d.ts +4 -0
  18. package/lib/editor/execution/edit.session.d.ts +5 -0
  19. package/lib/editor/execution/editor.d.ts +15 -2
  20. package/lib/editor/gadgets/drag-and-drop/drag-and-drop.d.ts +21 -0
  21. package/lib/editor/gadgets/history/operation-history.d.ts +3 -0
  22. package/lib/editor/gadgets/history/operation.type.d.ts +2 -1
  23. package/lib/editor/operations/enums/command-type.enum.d.ts +2 -1
  24. package/lib/editor/operations/helpers/contents-operations.helper.d.ts +5 -0
  25. package/lib/editor/operations/operations-helper.helper.d.ts +4 -1
  26. package/lib/editor/operations/save-commands.helper.d.ts +2 -0
  27. package/lib/editor/operations/target-operations.helper.d.ts +3 -1
  28. package/lib/models/generated/command.model.d.ts +2 -0
  29. package/lib/models/generated/link.model.d.ts +2 -0
  30. package/lib/models/generated/move-range.model.d.ts +9 -0
  31. package/lib/models/generated/text-style.model.d.ts +1 -0
  32. package/package.json +1 -1
  33. package/src/scss/base-editor.scss +15 -2
@@ -5,8 +5,9 @@ export declare class ColorPickerComponent {
5
5
  icon: string;
6
6
  isDisabled: boolean;
7
7
  palette: string[];
8
+ tooltip: string;
8
9
  colorChange: EventEmitter<string>;
9
10
  onChangeColor(color: string): void;
10
11
  static ɵfac: i0.ɵɵFactoryDeclaration<ColorPickerComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<ColorPickerComponent, "app-nod-color-picker", never, { "color": { "alias": "color"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; "palette": { "alias": "palette"; "required": false; }; }, { "colorChange": "colorChange"; }, never, never, true, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<ColorPickerComponent, "app-nod-color-picker", never, { "color": { "alias": "color"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; "palette": { "alias": "palette"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; }, { "colorChange": "colorChange"; }, never, never, true, never>;
12
13
  }
@@ -22,11 +22,12 @@ import * as i20 from "@angular/material/button-toggle";
22
22
  import * as i21 from "@angular/material/expansion";
23
23
  import * as i22 from "@angular/material/icon";
24
24
  import * as i23 from "@angular/material/menu";
25
- import * as i24 from "@angular/forms";
26
- import * as i25 from "../text-format-mobile/text-format-mobile.component";
27
- import * as i26 from "@ngx-translate/core";
25
+ import * as i24 from "@angular/material/tooltip";
26
+ import * as i25 from "@angular/forms";
27
+ import * as i26 from "../text-format-mobile/text-format-mobile.component";
28
+ import * as i27 from "@ngx-translate/core";
28
29
  export declare class EditorToolbarModule {
29
30
  static ɵfac: i0.ɵɵFactoryDeclaration<EditorToolbarModule, never>;
30
- static ɵmod: i0.ɵɵNgModuleDeclaration<EditorToolbarModule, [typeof i1.EditorMobileToolbarComponent, typeof i2.EditorToolbarComponent, typeof i3.FontStyleComponent, typeof i4.FormatComponent, typeof i5.MenuDropdownsComponent, typeof i6.MenuDropdownsMobileComponent, typeof i7.NumberingComponent, typeof i8.PrintComponent, typeof i9.ToolbarActionsComponent, typeof i10.UndoRedoComponent, typeof i11.ZoomComponent], [typeof i12.ColorPickerComponent, typeof i13.CommonModule, typeof i14.FontComponent, typeof i15.FontSizeComponent, typeof i16.InsertTableComponent, typeof i17.InsertTableMobileComponent, typeof i18.MatAutocompleteModule, typeof i19.MatButtonModule, typeof i20.MatButtonToggleModule, typeof i21.MatExpansionModule, typeof i22.MatIconModule, typeof i23.MatMenuModule, typeof i24.ReactiveFormsModule, typeof i25.TextFormatMobileComponent, typeof i26.TranslateModule], [typeof i1.EditorMobileToolbarComponent, typeof i2.EditorToolbarComponent, typeof i5.MenuDropdownsComponent, typeof i6.MenuDropdownsMobileComponent, typeof i9.ToolbarActionsComponent]>;
31
+ static ɵmod: i0.ɵɵNgModuleDeclaration<EditorToolbarModule, [typeof i1.EditorMobileToolbarComponent, typeof i2.EditorToolbarComponent, typeof i3.FontStyleComponent, typeof i4.FormatComponent, typeof i5.MenuDropdownsComponent, typeof i6.MenuDropdownsMobileComponent, typeof i7.NumberingComponent, typeof i8.PrintComponent, typeof i9.ToolbarActionsComponent, typeof i10.UndoRedoComponent, typeof i11.ZoomComponent], [typeof i12.ColorPickerComponent, typeof i13.CommonModule, typeof i14.FontComponent, typeof i15.FontSizeComponent, typeof i16.InsertTableComponent, typeof i17.InsertTableMobileComponent, typeof i18.MatAutocompleteModule, typeof i19.MatButtonModule, typeof i20.MatButtonToggleModule, typeof i21.MatExpansionModule, typeof i22.MatIconModule, typeof i23.MatMenuModule, typeof i24.MatTooltipModule, typeof i25.ReactiveFormsModule, typeof i26.TextFormatMobileComponent, typeof i27.TranslateModule], [typeof i1.EditorMobileToolbarComponent, typeof i2.EditorToolbarComponent, typeof i5.MenuDropdownsComponent, typeof i6.MenuDropdownsMobileComponent, typeof i9.ToolbarActionsComponent]>;
31
32
  static ɵinj: i0.ɵɵInjectorDeclaration<EditorToolbarModule>;
32
33
  }
@@ -6,12 +6,13 @@ export declare class ExternalElementModel {
6
6
  icon: string;
7
7
  type: number;
8
8
  componentType: Type<BaseNoderComponent>;
9
+ tooltip: string;
9
10
  factoryMethod: () => Promise<{
10
11
  id: number;
11
12
  guid: string;
12
13
  type: number;
13
14
  }>;
14
- constructor(nameTranslate: string, nameId: string, icon: string, type: number, componentType: Type<BaseNoderComponent>, factoryMethod: () => Promise<{
15
+ constructor(nameTranslate: string, nameId: string, icon: string, type: number, componentType: Type<BaseNoderComponent>, tooltip: string, factoryMethod: () => Promise<{
15
16
  id: number;
16
17
  guid: string;
17
18
  type: number;
@@ -1,4 +1,5 @@
1
1
  import { FormatModel } from '../../../models/generated/format.model';
2
2
  export declare class FormatHelper {
3
3
  static sliceSection(formats: FormatModel[], startIndex: number, endIndex: number): FormatModel[];
4
+ static shiftIndexes(formats: FormatModel[], offset: number): void;
4
5
  }
@@ -1,4 +1,5 @@
1
1
  import { InsertIndexInterface } from '../../../editor/positioning/insert-index.interface';
2
2
  export declare class IndexedElementHelper {
3
3
  static sliceSection<T extends InsertIndexInterface>(elements: T[], startIndex: number, endIndex: number): T[];
4
+ static shiftIndexes<T extends InsertIndexInterface>(elements: T[], offset: number): void;
4
5
  }
@@ -2,6 +2,7 @@ import { FormatModel } from './../../../models/generated/format.model';
2
2
  import { LinkModel } from '../../../models/generated/link.model';
3
3
  export declare class LinkHelper {
4
4
  static sliceSection(links: LinkModel[], start: number, end: number): LinkModel[];
5
+ static shiftIndexes(links: LinkModel[], offset: number): void;
5
6
  static sliceFormats(links: LinkModel[], startIndex: number, endIndex: number): FormatModel[];
6
7
  private static getPartialLink;
7
8
  }
@@ -12,6 +12,7 @@ export declare class CursorLayer {
12
12
  constructor(parentElement: HTMLElement, session: EditSession);
13
13
  hideCursor(): void;
14
14
  showCursor(): void;
15
+ showStaticCursor(): void;
15
16
  detectVisibility(): void;
16
17
  update(config: ILayerConfig): void;
17
18
  getPixelPosition(position?: CursorParagraph): CursorPosition;
@@ -7,4 +7,5 @@ export interface IRenderChanges {
7
7
  scroll?: boolean;
8
8
  size?: boolean;
9
9
  text?: boolean;
10
+ dragAndDrop?: boolean;
10
11
  }
@@ -8,6 +8,7 @@ export declare class RenderChangesModel implements IRenderChanges {
8
8
  scroll: boolean;
9
9
  size: boolean;
10
10
  text: boolean;
11
+ dragAndDrop: boolean;
11
12
  get any(): boolean;
12
13
  constructor(fields?: Partial<RenderChangesModel>);
13
14
  apply(changes: IRenderChanges): void;
@@ -15,6 +15,7 @@ export declare class Renderer extends EventEmitting {
15
15
  cursorLayer: CursorLayer;
16
16
  textLayer: TextLayer;
17
17
  selectionLayer: SelectionLayer;
18
+ dragAndDropSelectionLayer: SelectionLayer;
18
19
  loop: RenderLoop;
19
20
  textarea: HTMLElement;
20
21
  layerConfig: ILayerConfig;
@@ -31,6 +32,8 @@ export declare class Renderer extends EventEmitting {
31
32
  updateLines(firstRow: number, lastRow: number): void;
32
33
  moveTextAreaToCursor(): void;
33
34
  updateSelection(range: Range): void;
35
+ updateDragAndDropSelection(range: Range | null): void;
36
+ clearDragAndDropSelection(): void;
34
37
  /**
35
38
  * Triggers a full update of the text, for all the rows.
36
39
  **/
@@ -45,12 +48,14 @@ export declare class Renderer extends EventEmitting {
45
48
  */
46
49
  screenToTextCoordinatesUsingBoundary(x: number, y: number, rect?: DOMRect): CursorParagraph;
47
50
  showCursor(): void;
51
+ showStaticCursor(): void;
48
52
  hideCursor(): void;
49
53
  destroy(): void;
50
54
  renderFull(): void;
51
55
  renderText(): void;
52
56
  renderCursor(): void;
53
57
  renderSelection(): void;
58
+ renderDragAndDropSelection(): void;
54
59
  private computeLayerConfig;
55
60
  private pagesCountChangedHandler;
56
61
  private createContentContainer;
@@ -46,6 +46,8 @@ export declare class VirtualRenderer {
46
46
  updateCachedSize(force: boolean, width: number, height: number): RenderChangesModel;
47
47
  moveTextAreaToCursor(): void;
48
48
  updateSelection(range: Range): void;
49
+ updateDragAndDropSelection(range: Range): void;
50
+ clearDragAndDropSelection(): void;
49
51
  /**
50
52
  * Triggers a full update of the text, for all the rows.
51
53
  **/
@@ -61,6 +63,7 @@ export declare class VirtualRenderer {
61
63
  screenToTextCoordinatesUsingBoundary(x: number, y: number, rect?: DOMRect): CursorParagraph;
62
64
  showCursor(): void;
63
65
  hideCursor(): void;
66
+ showStaticCursor(): void;
64
67
  destroy(): void;
65
68
  private computeLayerConfig;
66
69
  private createScroller;
@@ -70,4 +73,5 @@ export declare class VirtualRenderer {
70
73
  private renderText;
71
74
  private renderCursor;
72
75
  private renderSelection;
76
+ private renderDragAndDropSelection;
73
77
  }
@@ -23,6 +23,7 @@ import { InsertTableModel } from '../../models/generated/insert-table.model';
23
23
  import { InsertTabModel } from '../../models/generated/insert-tab.model';
24
24
  import { LinkDataModel } from '../../models/generated/link-data.model';
25
25
  import { LinkModel } from '../../models/generated/link.model';
26
+ import { MoveRangeModel } from '../../models/generated/move-range.model';
26
27
  import { NumberingLevelModel } from '../../models/generated/numbering-level.model';
27
28
  import { NumberingModel } from '../../models/generated/numbering.model';
28
29
  import { PageType } from '../components/edges/page-type.enum';
@@ -108,6 +109,10 @@ export declare class EditSession {
108
109
  insertLink(position: CursorParagraph, linkData: LinkDataModel): CursorParagraph;
109
110
  insertTable(position: CursorParagraph, tableModel: InsertTableModel): CursorParagraph;
110
111
  insertParagraph(position: CursorParagraph, paragraphModel: InsertParagraphModel): CursorParagraph;
112
+ removeMoveRange(moveModel: MoveRangeModel): RestoreModel;
113
+ restoreMoveRange(restoreModel: RestoreModel, moveModel: MoveRangeModel, _sourceSessionId: number): Range;
114
+ isPositionInRange(position: CursorParagraph, range: Range): boolean;
115
+ createRestoreFromSlice(paragraphStart: number, indexInStart: number, paragraphEnd: number, indexInEnd: number): RestoreModel;
111
116
  addComponent<T extends BaseNoderComponent>(customElements: ComponentRef<T>[], model: CustomContent, componentType: Type<T>): void;
112
117
  applyToolbarStyles(): void;
113
118
  getStyleForCursor(index: number): TextStyleModel[];
@@ -7,6 +7,7 @@ import { CommandsService } from '../operations/commands.service';
7
7
  import { CreateEdgesModel } from '../../models/generated/create-edges.model';
8
8
  import { DocumentHandler } from '../interaction/document.handler';
9
9
  import { DocxModel } from '../../models/generated/docx.model';
10
+ import { DragAndDrop } from '../gadgets/drag-and-drop/drag-and-drop';
10
11
  import { EdgeType } from '../components/edges/edge-type.enum';
11
12
  import { EditorService } from '../interaction/editor.service';
12
13
  import { EditSession } from './edit.session';
@@ -24,6 +25,7 @@ import { InsertTabModel } from '../../models/generated/insert-tab.model';
24
25
  import { LinkDataModel } from '../../models/generated/link-data.model';
25
26
  import { LinkModel } from '../../models/generated/link.model';
26
27
  import { MouseHandler } from '../interaction/mouse.handler';
28
+ import { MoveRangeModel } from '../../models/generated/move-range.model';
27
29
  import { NumberingLevelModel } from '../../models/generated/numbering-level.model';
28
30
  import { Operation } from '../gadgets/history/operation.type';
29
31
  import { OperationHistory } from '../gadgets/history/operation-history';
@@ -38,6 +40,7 @@ import { RestoreModel } from '../../models/generated/restore.model';
38
40
  import { SearchOptions } from '../gadgets/search/search';
39
41
  import { SearchIteration } from '../gadgets/search/search-iteration.interface';
40
42
  import { Selection } from '../positioning/selection';
43
+ import { SessionModel } from '../execution/targeting/session.model';
41
44
  import { TargetModel } from '../../models/generated/target.model';
42
45
  import { TextStyleModel } from '../../models/generated/text-style.model';
43
46
  import { VirtualRenderer } from '../display/virtual.renderer';
@@ -67,6 +70,7 @@ export declare class Editor {
67
70
  mouseHandler: MouseHandler;
68
71
  inputHandler: InputHandler;
69
72
  documentHandler: DocumentHandler;
73
+ dragAndDrop: DragAndDrop;
70
74
  subscriptions: Subscription[];
71
75
  private search;
72
76
  private textInput;
@@ -132,8 +136,8 @@ export declare class Editor {
132
136
  saveAddNumberingToHistory(templateLevels: NumberingLevelModel[], startIndex: number, endIndex: number): void;
133
137
  saveRemoveNumberingToHistory(startIndex: number, endIndex: number): void;
134
138
  private saveApplyImageStyleToHistory;
139
+ saveMoveRangeToHistory(redoModel: MoveRangeModel, sourceSession: SessionModel, sourceRange: Range): void;
135
140
  private saveReplaceToHistory;
136
- private createRestoreFromSlice;
137
141
  createCustomElement(data: ElementDataModel): void;
138
142
  removeSelected(): void;
139
143
  removeParagraphAndSetParagraphToNumbering(): void;
@@ -150,17 +154,23 @@ export declare class Editor {
150
154
  onFocus(): void;
151
155
  onMouseClick(event: MouseEvent): void;
152
156
  onLeftClick(event: MouseEvent): void;
157
+ onSelectionLeftClick(event: MouseEvent): void;
158
+ onShortLeftClick(event: MouseEvent, isSelectionClick?: boolean): void;
153
159
  onDoubleClick(event: MouseEvent): void;
154
160
  onTripleClick(event: MouseEvent): void;
155
161
  onQuadClick(event: MouseEvent): void;
156
162
  onMouseWheel(event: WheelEvent): void;
163
+ onDragStart(): void;
164
+ onDragMove(event: MouseEvent): void;
165
+ onDragDrop(sourceSession: SessionModel, sourceRange: Range): void;
166
+ moveRange(model: MoveRangeModel): void;
157
167
  getLinkModel(event: MouseEvent): LinkModel;
158
168
  setCurrentSession(element: HTMLElement): HTMLElement | null;
159
169
  getCustomElement(element: HTMLElement): HTMLElement | null;
160
170
  isInsideEdge(element: HTMLElement | null): boolean;
161
171
  getParentEdge(element: HTMLElement | null): HTMLElement | null;
162
172
  /**
163
- * Returns the string of text currently highlighted.
173
+ * Returns the string of text range.
164
174
  */
165
175
  getSelectedText(): string;
166
176
  initMainSession(): void;
@@ -182,6 +192,7 @@ export declare class Editor {
182
192
  provideTextStyle(component: BaseNoderComponent): void;
183
193
  getClickedEdgeType(mousePosition: number): EdgeType | null;
184
194
  receiveTextStyleSubscription(): Subscription;
195
+ viewOnlyModeSubscription(): Subscription;
185
196
  searchOptionSubscription(): Subscription;
186
197
  replaceSubscription(): Subscription;
187
198
  setTextStylesSubscription(): Subscription;
@@ -211,6 +222,8 @@ export declare class Editor {
211
222
  undoSubscription(): Subscription;
212
223
  redoSubscription(): Subscription;
213
224
  removeLeftSubscription(): Subscription;
225
+ private dragMoveSubscription;
226
+ private dragDropSubscription;
214
227
  private printSubscription;
215
228
  private cutSelectedSubscription;
216
229
  private copySelectedSubscription;
@@ -0,0 +1,21 @@
1
+ import { Subject } from 'rxjs';
2
+ import { Range } from '../../positioning/range';
3
+ import { SessionModel } from '../../execution/targeting/session.model';
4
+ export declare class DragAndDrop {
5
+ private editorContainer;
6
+ onMove$: Subject<MouseEvent>;
7
+ onDrop$: Subject<{
8
+ sourceSession: SessionModel;
9
+ sourceRange: Range;
10
+ }>;
11
+ private isDragging;
12
+ private mouseMove$;
13
+ private mouseUp$;
14
+ private sourceSession;
15
+ private sourceRange;
16
+ constructor(editorContainer: HTMLElement);
17
+ onStart(session: SessionModel, range: Range): void;
18
+ destroyListeners(): void;
19
+ private onEnd;
20
+ private initListeners;
21
+ }
@@ -9,12 +9,14 @@ import { InsertLinkModel } from '../../../models/generated/insert-link.model';
9
9
  import { InsertParagraphModel } from '../../../models/generated/insert-paragraph.model';
10
10
  import { InsertTableModel } from '../../../models/generated/insert-table.model';
11
11
  import { InsertTabModel } from '../../../models/generated/insert-tab.model';
12
+ import { MoveRangeModel } from '../../../models/generated/move-range.model';
12
13
  import { NumberingLevelModel } from '../../../models/generated/numbering-level.model';
13
14
  import { NumberingModel } from '../../../models/generated/numbering.model';
14
15
  import { Operation } from './operation.type';
15
16
  import { PageType } from '../../components/edges/page-type.enum';
16
17
  import { ParagraphModel } from '../../../models/generated/paragraph.model';
17
18
  import { ParagraphStyleModel } from '../../../models/generated/paragraph-style.model';
19
+ import { Range } from '../../positioning/range';
18
20
  import { RegulatorService } from '../../execution/regulator.service';
19
21
  import { RemoveParagraphAndAddNumberingModel } from '../../../models/generated/remove-paragraph-and-add-numbering.model';
20
22
  import { ReplaceModel } from '../../../models/generated/replace.model';
@@ -51,6 +53,7 @@ export declare class OperationHistory {
51
53
  pushApplyImageStyle(previous: ImageModel, current: ImageModel): void;
52
54
  pushAddNumbering(startIndex: number, endIndex: number, levels: NumberingLevelModel[], paragraphs: ParagraphModel[], numberings: NumberingModel[]): void;
53
55
  pushRemoveNumberings(startIndex: number, endIndex: number, numberings: NumberingModel[], paragraphs: ParagraphModel[]): void;
56
+ pushMoveRange(restore: MoveRangeModel, replace: MoveRangeModel, selection: Range): void;
54
57
  pushReplace(restore: RestoreModel, replace: ReplaceModel): void;
55
58
  pushRemoveParagraphAndSetParagraphToNumbering(restore: RestoreParagraphAndAddNumberingModel, remove: RemoveParagraphAndAddNumberingModel): void;
56
59
  pushCreateEdges(pageType: PageType): void;
@@ -13,6 +13,7 @@ import { InsertTableModel } from '../../../models/generated/insert-table.model';
13
13
  import { InsertTableRowsModel } from '../../../models/generated/insert-table-rows.model';
14
14
  import { InsertTabModel } from '../../../models/generated/insert-tab.model';
15
15
  import { InsertTextModel } from '../../../models/generated/insert-text.model';
16
+ import { MoveRangeModel } from '../../../models/generated/move-range.model';
16
17
  import { RemoveEdgesModel } from '../../../models/generated/remove-edges.model';
17
18
  import { RemoveNumberingsModel } from '../../../models/generated/remove-numberings.model';
18
19
  import { RemoveParagraphAndAddNumberingModel } from '../../../models/generated/remove-paragraph-and-add-numbering.model';
@@ -26,4 +27,4 @@ import { RestoreParagraphAndAddNumberingModel } from '../../../models/generated/
26
27
  import { RestoreParagraphStylesModel } from '../../../models/generated/restore-paragraph-styles.model';
27
28
  import { RestoreTableModel } from '../../../models/generated/restore-table.model';
28
29
  import { RestoreTextStylesModel } from '../../../models/generated/restore-text-styles.model';
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;
30
+ 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 | MoveRangeModel | CreateEdgesModel | RemoveEdgesModel | RemoveParagraphAndAddNumberingModel | RestoreParagraphAndAddNumberingModel;
@@ -29,5 +29,6 @@ export declare enum CommandType {
29
29
  CreateEdges = 27,
30
30
  RemoveEdges = 28,
31
31
  RemoveParagraphAndAddNumbering = 29,
32
- RestoreParagraphAndAddNumbering = 30
32
+ RestoreParagraphAndAddNumbering = 30,
33
+ MoveRange = 31
33
34
  }
@@ -0,0 +1,5 @@
1
+ import { ContentsInterface } from '../../../editor/content/contents.interface';
2
+ import { RestoreModel } from '../../../models/generated/restore.model';
3
+ export declare class ContentsOperationsHelper {
4
+ static GetRestoreFromSlice(contents: ContentsInterface, startIndex: number, count: number): RestoreModel;
5
+ }
@@ -9,6 +9,7 @@ import { ImageDataModel } from '../../models/generated/image-data.model';
9
9
  import { InsertElementModel } from '../../models/generated/insert-element.model';
10
10
  import { InsertParagraphModel } from '../../models/generated/insert-paragraph.model';
11
11
  import { InsertTableModel } from '../../models/generated/insert-table.model';
12
+ import { MoveRangeModel } from '../../models/generated/move-range.model';
12
13
  import { NumberingLevelModel } from '../../models/generated/numbering-level.model';
13
14
  import { NumberingModel } from '../../models/generated/numbering.model';
14
15
  import { PageType } from '../components/edges/page-type.enum';
@@ -22,7 +23,9 @@ import { TableModel } from '../../models/generated/table.model';
22
23
  import { TextStyleModel } from '../../models/generated/text-style.model';
23
24
  export declare class OperationsHelper {
24
25
  static applyOperations(document: DocxModel, commands: CommandModel[]): void;
25
- static getTargetContents(document: DocxModel, command: CommandModel): ContentsInterface;
26
+ static moveRange(document: DocxModel, model: MoveRangeModel): void;
27
+ static removeMoveRange(sourceContents: ContentsInterface, model: MoveRangeModel): RestoreModel;
28
+ static restoreMoveRange(targetContents: ContentsInterface, model: MoveRangeModel, restoreContents: RestoreModel): number;
26
29
  static getContentWidth(document: DocxModel, contents: ContentsInterface): number;
27
30
  static insertText(document: ContentsInterface, text: string, index: number): void;
28
31
  static insertParagraph(document: ContentsInterface, index: number, model: InsertParagraphModel, contentWidth: number): string;
@@ -8,6 +8,7 @@ import { InsertLinkModel } from '../../models/generated/insert-link.model';
8
8
  import { InsertParagraphModel } from '../../models/generated/insert-paragraph.model';
9
9
  import { InsertTableModel } from '../../models/generated/insert-table.model';
10
10
  import { InsertTabModel } from '../../models/generated/insert-tab.model';
11
+ import { MoveRangeModel } from '../../models/generated/move-range.model';
11
12
  import { NumberingLevelModel } from '../../models/generated/numbering-level.model';
12
13
  import { ParagraphModel } from '../../models/generated/paragraph.model';
13
14
  import { ParagraphStyleModel } from '../../models/generated/paragraph-style.model';
@@ -46,6 +47,7 @@ export declare class SaveCommandsHelper {
46
47
  static getRestoreParagraphStylesCommand(paragraphs: ParagraphModel[], targets: TargetModel[]): CommandModel;
47
48
  static getRestoreCommand(restoreModel: RestoreModel, targets: TargetModel[]): CommandModel;
48
49
  static getRestoreTableCommand(restoreTable: RestoreTableModel, targets: TargetModel[]): CommandModel;
50
+ static getMoveRangeCommand(model: MoveRangeModel, targets: TargetModel[]): CommandModel;
49
51
  static getReplaceCommand(model: ReplaceModel, targets: TargetModel[]): CommandModel;
50
52
  static getRemoveParagraphAndAddNumberingCommand(model: RemoveParagraphAndAddNumberingModel, targets: TargetModel[]): CommandModel;
51
53
  static getRestoreParagraphAndAddNumberingCommand(model: RestoreParagraphAndAddNumberingModel, targets: TargetModel[]): CommandModel;
@@ -2,5 +2,7 @@ import { ContentsInterface } from '../content/contents.interface';
2
2
  import { DocxModel } from '../../models/generated/docx.model';
3
3
  import { TargetModel } from '../../models/generated/target.model';
4
4
  export declare class TargetOperationsHelper {
5
- static getContents(contents: ContentsInterface, target: TargetModel, document: DocxModel): ContentsInterface;
5
+ static getContents(document: DocxModel, targets: TargetModel[]): ContentsInterface;
6
+ static isSame(first: TargetModel[], second: TargetModel[]): boolean;
7
+ static getTargetContents(contents: ContentsInterface, target: TargetModel, document: DocxModel): ContentsInterface;
6
8
  }
@@ -15,6 +15,7 @@ import { InsertTableModel } from './insert-table.model';
15
15
  import { InsertTableRowsModel } from './insert-table-rows.model';
16
16
  import { InsertTabModel } from './insert-tab.model';
17
17
  import { InsertTextModel } from './insert-text.model';
18
+ import { MoveRangeModel } from './move-range.model';
18
19
  import { RemoveEdgesModel } from './remove-edges.model';
19
20
  import { RemoveNumberingsModel } from './remove-numberings.model';
20
21
  import { RemoveParagraphAndAddNumberingModel } from './remove-paragraph-and-add-numbering.model';
@@ -49,6 +50,7 @@ export declare class CommandModel {
49
50
  insertTableColumns: InsertTableColumnsModel;
50
51
  insertTableRows: InsertTableRowsModel;
51
52
  insertText: InsertTextModel;
53
+ moveRange: MoveRangeModel;
52
54
  removeEdges: RemoveEdgesModel;
53
55
  removeNumberings: RemoveNumberingsModel;
54
56
  removeParagraphAndAddNumbering: RemoveParagraphAndAddNumberingModel;
@@ -1,5 +1,7 @@
1
1
  import { FormatModel } from './format.model';
2
2
  export declare class LinkModel {
3
+ anchor: string;
4
+ bookmarkIndex: number;
3
5
  endIndex: number;
4
6
  formats: FormatModel[];
5
7
  link: string;
@@ -0,0 +1,9 @@
1
+ import { TargetModel } from './target.model';
2
+ export declare class MoveRangeModel {
3
+ sourceCount: number;
4
+ sourceStartIndex: number;
5
+ sourceTargets: TargetModel[];
6
+ targetIndex: number;
7
+ targetTargets: TargetModel[];
8
+ constructor(fields?: Partial<MoveRangeModel>);
9
+ }
@@ -2,6 +2,7 @@ export declare class TextStyleModel {
2
2
  bold: boolean;
3
3
  fontColor: string;
4
4
  fontFamily: string;
5
+ fontFamilyNames: any;
5
6
  fontSize: number;
6
7
  headingStyleId: string;
7
8
  highlightColor: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talrace/ngx-noder",
3
- "version": "0.0.27",
3
+ "version": "0.0.29",
4
4
  "license": "MIT",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^19.0.5",
@@ -51,6 +51,10 @@ div.ngx-colors-overlay.noder-color-picker-overlay .opened .colors {
51
51
  text-align: left;
52
52
  width: 100%;
53
53
  height: 100%;
54
+
55
+ &.drag-and-drop-progress {
56
+ cursor: url('../../assets/drag-and-drop-cursor.png') 0 0, move;
57
+ }
54
58
  }
55
59
 
56
60
  .noder-scroller {
@@ -59,9 +63,13 @@ div.ngx-colors-overlay.noder-color-picker-overlay .opened .colors {
59
63
  top: 0;
60
64
  bottom: 0;
61
65
  user-select: none;
66
+ }
67
+
68
+ .edit-container:not(.drag-and-drop-progress) .noder-scroller {
62
69
  cursor: text;
63
70
  }
64
71
 
72
+
65
73
  .noder-scrollbar {
66
74
  overflow: hidden scroll;
67
75
  contain: strict;
@@ -266,8 +274,13 @@ div.ngx-colors-overlay.noder-color-picker-overlay .opened .colors {
266
274
  z-index: 5;
267
275
  }
268
276
 
269
- .noder-selection-layer.text-selection .noder-selection {
270
- background-color: rgb(94, 168, 247, 0.4);
277
+ .noder-selection-layer {
278
+ &.drag-and-drop-selection,
279
+ &.text-selection {
280
+ .noder-selection {
281
+ background-color: rgb(94, 168, 247, 0.4);
282
+ }
283
+ }
271
284
  }
272
285
 
273
286
  .noder-selection-layer.notes-highlight .noder-selection {