@manuscripts/track-changes-plugin 1.7.2 → 1.7.3-LEAN-2832-v4

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 (118) hide show
  1. package/dist/cjs/ChangeSet.js +154 -0
  2. package/dist/cjs/actions.js +23 -0
  3. package/dist/cjs/change-steps/diffChangeSteps.js +63 -0
  4. package/dist/cjs/change-steps/matchInserted.js +70 -0
  5. package/dist/cjs/change-steps/processChangeSteps.js +142 -0
  6. package/dist/cjs/changes/applyChanges.js +85 -0
  7. package/dist/cjs/changes/findChanges.js +72 -0
  8. package/dist/cjs/changes/fixInconsistentChanges.js +21 -0
  9. package/dist/cjs/changes/updateChangeAttrs.js +65 -0
  10. package/dist/cjs/commands.js +47 -0
  11. package/dist/cjs/compute/nodeHelpers.js +73 -0
  12. package/dist/cjs/compute/setFragmentAsInserted.js +53 -0
  13. package/dist/cjs/compute/splitSliceIntoMergedParts.js +55 -0
  14. package/dist/cjs/index.js +41 -0
  15. package/dist/cjs/mutate/deleteAndMergeSplitNodes.js +99 -0
  16. package/dist/cjs/mutate/deleteNode.js +41 -0
  17. package/dist/cjs/mutate/deleteText.js +29 -0
  18. package/dist/cjs/mutate/mergeNode.js +21 -0
  19. package/dist/cjs/mutate/mergeTrackedMarks.js +25 -0
  20. package/dist/cjs/plugin.js +125 -0
  21. package/dist/cjs/steps/trackReplaceAroundStep.js +72 -0
  22. package/dist/cjs/steps/trackReplaceStep.js +81 -0
  23. package/dist/cjs/steps/trackTransaction.js +88 -0
  24. package/dist/cjs/types/change.js +15 -0
  25. package/dist/cjs/types/pm.js +2 -0
  26. package/dist/cjs/types/step.js +2 -0
  27. package/dist/cjs/types/track.js +9 -0
  28. package/dist/cjs/utils/logger.js +43 -0
  29. package/dist/cjs/utils/track-utils.js +28 -0
  30. package/dist/cjs/utils/uuidv4.js +10 -0
  31. package/dist/es/ChangeSet.js +150 -0
  32. package/dist/es/actions.js +17 -0
  33. package/dist/es/change-steps/diffChangeSteps.js +59 -0
  34. package/dist/es/change-steps/matchInserted.js +66 -0
  35. package/dist/es/change-steps/processChangeSteps.js +115 -0
  36. package/dist/es/changes/applyChanges.js +81 -0
  37. package/dist/es/changes/findChanges.js +68 -0
  38. package/dist/es/changes/fixInconsistentChanges.js +17 -0
  39. package/dist/es/changes/updateChangeAttrs.js +60 -0
  40. package/dist/es/commands.js +39 -0
  41. package/dist/es/compute/nodeHelpers.js +63 -0
  42. package/dist/es/compute/setFragmentAsInserted.js +49 -0
  43. package/dist/es/compute/splitSliceIntoMergedParts.js +51 -0
  44. package/dist/es/index.js +7 -0
  45. package/dist/es/mutate/deleteAndMergeSplitNodes.js +72 -0
  46. package/dist/es/mutate/deleteNode.js +36 -0
  47. package/dist/es/mutate/deleteText.js +25 -0
  48. package/dist/es/mutate/mergeNode.js +17 -0
  49. package/dist/es/mutate/mergeTrackedMarks.js +21 -0
  50. package/dist/es/plugin.js +121 -0
  51. package/dist/es/steps/trackReplaceAroundStep.js +45 -0
  52. package/dist/es/steps/trackReplaceStep.js +54 -0
  53. package/dist/es/steps/trackTransaction.js +84 -0
  54. package/dist/es/types/change.js +12 -0
  55. package/dist/es/types/pm.js +1 -0
  56. package/dist/es/types/step.js +1 -0
  57. package/dist/es/types/track.js +6 -0
  58. package/dist/es/utils/logger.js +36 -0
  59. package/dist/es/utils/track-utils.js +22 -0
  60. package/dist/es/utils/uuidv4.js +6 -0
  61. package/dist/types/ChangeSet.d.ts +28 -0
  62. package/dist/{actions.d.ts → types/actions.d.ts} +27 -60
  63. package/dist/{change-steps → types/change-steps}/diffChangeSteps.d.ts +2 -2
  64. package/dist/types/change-steps/matchInserted.d.ts +3 -0
  65. package/dist/types/change-steps/processChangeSteps.d.ts +6 -0
  66. package/dist/types/changes/applyChanges.d.ts +5 -0
  67. package/dist/types/changes/findChanges.d.ts +3 -0
  68. package/dist/types/changes/fixInconsistentChanges.d.ts +4 -0
  69. package/dist/types/changes/updateChangeAttrs.d.ts +6 -0
  70. package/dist/types/commands.d.ts +8 -0
  71. package/dist/{compute → types/compute}/nodeHelpers.d.ts +13 -28
  72. package/dist/types/compute/setFragmentAsInserted.d.ts +3 -0
  73. package/dist/types/compute/splitSliceIntoMergedParts.d.ts +13 -0
  74. package/dist/types/index.d.ts +7 -0
  75. package/dist/types/mutate/deleteAndMergeSplitNodes.d.ts +13 -0
  76. package/dist/types/mutate/deleteNode.d.ts +5 -0
  77. package/dist/types/mutate/deleteText.d.ts +4 -0
  78. package/dist/types/mutate/mergeNode.d.ts +3 -0
  79. package/dist/types/mutate/mergeTrackedMarks.d.ts +3 -0
  80. package/dist/types/plugin.d.ts +4 -0
  81. package/dist/{steps → types/steps}/trackReplaceAroundStep.d.ts +5 -5
  82. package/dist/types/steps/trackReplaceStep.d.ts +6 -0
  83. package/dist/types/steps/trackTransaction.d.ts +2 -0
  84. package/dist/types/types/change.d.ts +62 -0
  85. package/dist/types/types/pm.d.ts +12 -0
  86. package/dist/types/{step.d.ts → types/step.d.ts} +38 -53
  87. package/dist/types/types/track.d.ts +30 -0
  88. package/dist/types/utils/logger.d.ts +8 -0
  89. package/dist/{utils → types/utils}/track-utils.d.ts +4 -4
  90. package/dist/types/utils/uuidv4.d.ts +1 -0
  91. package/package.json +41 -40
  92. package/LICENSE +0 -201
  93. package/dist/ChangeSet.d.ts +0 -71
  94. package/dist/change-steps/matchInserted.d.ts +0 -13
  95. package/dist/change-steps/processChangeSteps.d.ts +0 -21
  96. package/dist/changes/applyChanges.d.ts +0 -28
  97. package/dist/changes/findChanges.d.ts +0 -27
  98. package/dist/changes/fixInconsistentChanges.d.ts +0 -29
  99. package/dist/changes/updateChangeAttrs.d.ts +0 -21
  100. package/dist/commands.d.ts +0 -47
  101. package/dist/compute/setFragmentAsInserted.d.ts +0 -18
  102. package/dist/compute/splitSliceIntoMergedParts.d.ts +0 -41
  103. package/dist/index.cjs +0 -2026
  104. package/dist/index.d.ts +0 -22
  105. package/dist/index.js +0 -2013
  106. package/dist/mutate/deleteAndMergeSplitNodes.d.ts +0 -53
  107. package/dist/mutate/deleteNode.d.ts +0 -36
  108. package/dist/mutate/deleteText.d.ts +0 -33
  109. package/dist/mutate/mergeNode.d.ts +0 -25
  110. package/dist/mutate/mergeTrackedMarks.d.ts +0 -29
  111. package/dist/plugin.d.ts +0 -25
  112. package/dist/steps/trackReplaceStep.d.ts +0 -21
  113. package/dist/steps/trackTransaction.d.ts +0 -17
  114. package/dist/types/change.d.ts +0 -76
  115. package/dist/types/pm.d.ts +0 -27
  116. package/dist/types/track.d.ts +0 -45
  117. package/dist/utils/logger.d.ts +0 -27
  118. package/dist/utils/uuidv4.d.ts +0 -16
@@ -0,0 +1,28 @@
1
+ import { IncompleteChange, NodeAttrChange, NodeChange, TextChange, TrackedAttrs, TrackedChange } from './types/change';
2
+ export declare class ChangeSet {
3
+ #private;
4
+ constructor(changes?: (TrackedChange | IncompleteChange)[]);
5
+ get changes(): TrackedChange[];
6
+ get invalidChanges(): (TrackedChange | IncompleteChange)[];
7
+ get changeTree(): TrackedChange[];
8
+ get pending(): TrackedChange[];
9
+ get accepted(): TrackedChange[];
10
+ get rejected(): TrackedChange[];
11
+ get textChanges(): TrackedChange[];
12
+ get nodeChanges(): TrackedChange[];
13
+ get nodeAttrChanges(): TrackedChange[];
14
+ get bothNodeChanges(): TrackedChange[];
15
+ get isEmpty(): boolean;
16
+ get hasInconsistentData(): boolean;
17
+ get hasDuplicateIds(): boolean;
18
+ get hasIncompleteAttrs(): boolean;
19
+ get(id: string): TrackedChange | IncompleteChange | undefined;
20
+ getIn(ids: string[]): (TrackedChange | IncompleteChange)[];
21
+ getNotIn(ids: string[]): (TrackedChange | IncompleteChange)[];
22
+ static flattenTreeToIds(changes: TrackedChange[]): string[];
23
+ static shouldDeleteChange(change: TrackedChange): boolean;
24
+ static isValidDataTracked(dataTracked?: Partial<TrackedAttrs>): boolean;
25
+ static isTextChange(change: TrackedChange): change is TextChange;
26
+ static isNodeChange(change: TrackedChange): change is NodeChange;
27
+ static isNodeAttrChange(change: TrackedChange): change is NodeAttrChange;
28
+ }
@@ -1,60 +1,27 @@
1
- /*!
2
- * © 2021 Atypon Systems LLC
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Transaction } from 'prosemirror-state';
17
- import { CHANGE_STATUS } from './types/change';
18
- import { TrackChangesStatus } from './types/track';
19
- export declare enum TrackChangesAction {
20
- skipTrack = "track-changes-skip-tracking",
21
- setUserID = "track-changes-set-user-id",
22
- setPluginStatus = "track-changes-set-track-status",
23
- setChangeStatuses = "track-changes-set-change-statuses",
24
- refreshChanges = "track-changes-refresh-changes",
25
- applyAndRemoveChanges = "track-changes-apply-remove-changes",
26
- updateMetaNode = "track-changes-update-meta-node"
27
- }
28
- export declare type TrackChangesActionParams = {
29
- [TrackChangesAction.skipTrack]: boolean;
30
- [TrackChangesAction.setUserID]: string;
31
- [TrackChangesAction.setPluginStatus]: TrackChangesStatus;
32
- [TrackChangesAction.setChangeStatuses]: {
33
- status: CHANGE_STATUS;
34
- ids: string[];
35
- };
36
- [TrackChangesAction.refreshChanges]: boolean;
37
- [TrackChangesAction.applyAndRemoveChanges]: boolean;
38
- [TrackChangesAction.updateMetaNode]: boolean;
39
- };
40
- /**
41
- * Gets the value of a meta field, action payload, of a defined track-changes action.
42
- * @param tr
43
- * @param action
44
- */
45
- export declare function getAction<K extends keyof TrackChangesActionParams>(tr: Transaction, action: K): TrackChangesActionParams[K] | undefined;
46
- /**
47
- * Use this function to set meta keys to transactions that are consumed by the track-changes-plugin.
48
- * For example, you can skip tracking of a transaction with setAction(tr, TrackChangesAction.skipTrack, true)
49
- * @param tr
50
- * @param action
51
- * @param payload
52
- */
53
- export declare function setAction<K extends keyof TrackChangesActionParams>(tr: Transaction, action: K, payload: TrackChangesActionParams[K]): Transaction;
54
- /**
55
- * Skip tracking for a transaction, use this with caution to avoid race-conditions or just to otherwise
56
- * omitting applying of track attributes or marks.
57
- * @param tr
58
- * @returns
59
- */
60
- export declare const skipTracking: (tr: Transaction) => Transaction;
1
+ import { Transaction } from 'prosemirror-state';
2
+ import { CHANGE_STATUS } from './types/change';
3
+ import { TrackChangesStatus } from './types/track';
4
+ export declare enum TrackChangesAction {
5
+ skipTrack = "track-changes-skip-tracking",
6
+ setUserID = "track-changes-set-user-id",
7
+ setPluginStatus = "track-changes-set-track-status",
8
+ setChangeStatuses = "track-changes-set-change-statuses",
9
+ refreshChanges = "track-changes-refresh-changes",
10
+ applyAndRemoveChanges = "track-changes-apply-remove-changes",
11
+ updateMetaNode = "track-changes-update-meta-node"
12
+ }
13
+ export type TrackChangesActionParams = {
14
+ [TrackChangesAction.skipTrack]: boolean;
15
+ [TrackChangesAction.setUserID]: string;
16
+ [TrackChangesAction.setPluginStatus]: TrackChangesStatus;
17
+ [TrackChangesAction.setChangeStatuses]: {
18
+ status: CHANGE_STATUS;
19
+ ids: string[];
20
+ };
21
+ [TrackChangesAction.refreshChanges]: boolean;
22
+ [TrackChangesAction.applyAndRemoveChanges]: boolean;
23
+ [TrackChangesAction.updateMetaNode]: boolean;
24
+ };
25
+ export declare function getAction<K extends keyof TrackChangesActionParams>(tr: Transaction, action: K): TrackChangesActionParams[K] | undefined;
26
+ export declare function setAction<K extends keyof TrackChangesActionParams>(tr: Transaction, action: K, payload: TrackChangesActionParams[K]): Transaction;
27
+ export declare const skipTracking: (tr: Transaction) => Transaction;
@@ -1,2 +1,2 @@
1
- import { ChangeStep, InsertSliceStep } from '../types/step';
2
- export declare function diffChangeSteps(deleted: ChangeStep[], inserted: InsertSliceStep[]): ChangeStep[];
1
+ import { ChangeStep, InsertSliceStep } from '../types/step';
2
+ export declare function diffChangeSteps(deleted: ChangeStep[], inserted: InsertSliceStep[]): ChangeStep[];
@@ -0,0 +1,3 @@
1
+ import { ExposedFragment } from '../types/pm';
2
+ import { ChangeStep } from '../types/step';
3
+ export declare function matchInserted(matchedDeleted: number, deleted: ChangeStep[], inserted: ExposedFragment): [number, ChangeStep[]];
@@ -0,0 +1,6 @@
1
+ import { Schema } from 'prosemirror-model';
2
+ import type { Transaction } from 'prosemirror-state';
3
+ import { Mapping } from 'prosemirror-transform';
4
+ import { ChangeStep } from '../types/step';
5
+ import { NewEmptyAttrs } from '../types/track';
6
+ export declare function processChangeSteps(changes: ChangeStep[], startPos: number, newTr: Transaction, emptyAttrs: NewEmptyAttrs, schema: Schema): [Mapping, number];
@@ -0,0 +1,5 @@
1
+ import { Schema } from 'prosemirror-model';
2
+ import { Transaction } from 'prosemirror-state';
3
+ import { Mapping } from 'prosemirror-transform';
4
+ import { TrackedChange } from '../types/change';
5
+ export declare function applyAcceptedRejectedChanges(tr: Transaction, schema: Schema, changes: TrackedChange[], deleteMap?: Mapping): Mapping;
@@ -0,0 +1,3 @@
1
+ import { EditorState } from 'prosemirror-state';
2
+ import { ChangeSet } from '../ChangeSet';
3
+ export declare function findChanges(state: EditorState): ChangeSet;
@@ -0,0 +1,4 @@
1
+ import { Schema } from 'prosemirror-model';
2
+ import { Transaction } from 'prosemirror-state';
3
+ import { ChangeSet } from '../ChangeSet';
4
+ export declare function fixInconsistentChanges(changeSet: ChangeSet, currentUserID: string, newTr: Transaction, schema: Schema): boolean;
@@ -0,0 +1,6 @@
1
+ import { Schema } from 'prosemirror-model';
2
+ import { Transaction } from 'prosemirror-state';
3
+ import { Mapping } from 'prosemirror-transform';
4
+ import { IncompleteChange, TrackedAttrs, TrackedChange } from '../types/change';
5
+ export declare function updateChangeAttrs(tr: Transaction, change: IncompleteChange, trackedAttrs: Partial<TrackedAttrs>, schema: Schema): Transaction;
6
+ export declare function updateChangeChildrenAttributes(changes: TrackedChange[], tr: Transaction, mapping: Mapping): void;
@@ -0,0 +1,8 @@
1
+ import { Command } from 'prosemirror-state';
2
+ import { CHANGE_STATUS } from './types/change';
3
+ import { TrackChangesStatus } from './types/track';
4
+ export declare const setTrackingStatus: (status?: TrackChangesStatus) => Command;
5
+ export declare const setChangeStatuses: (status: CHANGE_STATUS, ids: string[]) => Command;
6
+ export declare const setUserID: (userID: string) => Command;
7
+ export declare const applyAndRemoveChanges: () => Command;
8
+ export declare const refreshChanges: () => Command;
@@ -1,28 +1,13 @@
1
- /*!
2
- * © 2021 Atypon Systems LLC
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Node as PMNode, Schema } from 'prosemirror-model';
17
- import { CHANGE_OPERATION, TrackedAttrs } from '../types/change';
18
- export declare function addTrackIdIfDoesntExist(attrs: Partial<TrackedAttrs>): Partial<TrackedAttrs>;
19
- export declare function getTextNodeTrackedMarkData(node: PMNode | undefined | null, schema: Schema): (Omit<Partial<TrackedAttrs>, "operation"> & {
20
- operation: CHANGE_OPERATION;
21
- }) | undefined;
22
- export declare function getBlockInlineTrackedData(node: PMNode): Partial<TrackedAttrs>[] | undefined;
23
- export declare function getNodeTrackedData(node: PMNode | undefined | null, schema: Schema): Partial<TrackedAttrs>[] | undefined;
24
- export declare function equalMarks(n1: PMNode, n2: PMNode): boolean;
25
- export declare function shouldMergeTrackedAttributes(left?: Partial<TrackedAttrs>, right?: Partial<TrackedAttrs>): boolean;
26
- export declare function getMergeableMarkTrackedAttrs(node: PMNode | undefined | null, attrs: Partial<TrackedAttrs>, schema: Schema): (Omit<Partial<TrackedAttrs>, "operation"> & {
27
- operation: CHANGE_OPERATION;
28
- }) | null;
1
+ import { Node as PMNode, Schema } from 'prosemirror-model';
2
+ import { CHANGE_OPERATION, TrackedAttrs } from '../types/change';
3
+ export declare function addTrackIdIfDoesntExist(attrs: Partial<TrackedAttrs>): Partial<TrackedAttrs>;
4
+ export declare function getTextNodeTrackedMarkData(node: PMNode | undefined | null, schema: Schema): (Omit<Partial<TrackedAttrs>, "operation"> & {
5
+ operation: CHANGE_OPERATION;
6
+ }) | undefined;
7
+ export declare function getBlockInlineTrackedData(node: PMNode): Partial<TrackedAttrs>[] | undefined;
8
+ export declare function getNodeTrackedData(node: PMNode | undefined | null, schema: Schema): Partial<TrackedAttrs>[] | undefined;
9
+ export declare function equalMarks(n1: PMNode, n2: PMNode): boolean;
10
+ export declare function shouldMergeTrackedAttributes(left?: Partial<TrackedAttrs>, right?: Partial<TrackedAttrs>): boolean;
11
+ export declare function getMergeableMarkTrackedAttrs(node: PMNode | undefined | null, attrs: Partial<TrackedAttrs>, schema: Schema): (Omit<Partial<TrackedAttrs>, "operation"> & {
12
+ operation: CHANGE_OPERATION;
13
+ }) | null;
@@ -0,0 +1,3 @@
1
+ import { Fragment, Schema } from 'prosemirror-model';
2
+ import { NewInsertAttrs } from '../types/track';
3
+ export declare function setFragmentAsInserted(inserted: Fragment, insertAttrs: NewInsertAttrs, schema: Schema): Fragment;
@@ -0,0 +1,13 @@
1
+ import { Node as PMNode } from 'prosemirror-model';
2
+ import { ExposedFragment, ExposedSlice } from '../types/pm';
3
+ export declare function splitSliceIntoMergedParts(insertSlice: ExposedSlice, mergeEqualSides?: boolean): {
4
+ updatedSliceNodes: PMNode[];
5
+ firstMergedNode: {
6
+ mergedNodeContent: ExposedFragment;
7
+ unmergedContent: ExposedFragment | undefined;
8
+ } | undefined;
9
+ lastMergedNode: {
10
+ mergedNodeContent: ExposedFragment;
11
+ unmergedContent: ExposedFragment | undefined;
12
+ } | undefined;
13
+ };
@@ -0,0 +1,7 @@
1
+ export { trackChangesPluginKey, trackChangesPlugin } from './plugin';
2
+ export { skipTracking } from './actions';
3
+ export * as trackCommands from './commands';
4
+ export { enableDebug } from './utils/logger';
5
+ export { ChangeSet } from './ChangeSet';
6
+ export * from './types/change';
7
+ export * from './types/track';
@@ -0,0 +1,13 @@
1
+ import { Fragment, Node as PMNode, Schema } from 'prosemirror-model';
2
+ import type { Transaction } from 'prosemirror-state';
3
+ import { ExposedSlice } from '../types/pm';
4
+ import { ChangeStep } from '../types/step';
5
+ import { NewEmptyAttrs } from '../types/track';
6
+ export declare function deleteAndMergeSplitNodes(from: number, to: number, gap: {
7
+ start: number;
8
+ end: number;
9
+ } | undefined, startDoc: PMNode, newTr: Transaction, schema: Schema, trackAttrs: NewEmptyAttrs, insertSlice: ExposedSlice): {
10
+ sliceWasSplit: boolean;
11
+ newSliceContent: Fragment;
12
+ steps: ChangeStep[];
13
+ };
@@ -0,0 +1,5 @@
1
+ import { Node as PMNode } from 'prosemirror-model';
2
+ import { Transaction } from 'prosemirror-state';
3
+ import { NewDeleteAttrs } from '../types/track';
4
+ export declare function deleteNode(node: PMNode, pos: number, tr: Transaction): Transaction;
5
+ export declare function deleteOrSetNodeDeleted(node: PMNode, pos: number, newTr: Transaction, deleteAttrs: NewDeleteAttrs): Transaction | undefined;
@@ -0,0 +1,4 @@
1
+ import { Node as PMNode, Schema } from 'prosemirror-model';
2
+ import type { Transaction } from 'prosemirror-state';
3
+ import { NewDeleteAttrs } from '../types/track';
4
+ export declare function deleteTextIfInserted(node: PMNode, pos: number, newTr: Transaction, schema: Schema, deleteAttrs: NewDeleteAttrs, from?: number, to?: number): number;
@@ -0,0 +1,3 @@
1
+ import { Node as PMNode } from 'prosemirror-model';
2
+ import { Transaction } from 'prosemirror-state';
3
+ export declare function mergeNode(node: PMNode, pos: number, tr: Transaction): Transaction | undefined;
@@ -0,0 +1,3 @@
1
+ import { Node as PMNode, Schema } from 'prosemirror-model';
2
+ import type { Transaction } from 'prosemirror-state';
3
+ export declare function mergeTrackedMarks(pos: number, doc: PMNode, newTr: Transaction, schema: Schema): void;
@@ -0,0 +1,4 @@
1
+ import { Plugin, PluginKey } from 'prosemirror-state';
2
+ import { TrackChangesOptions, TrackChangesState } from './types/track';
3
+ export declare const trackChangesPluginKey: PluginKey<TrackChangesState>;
4
+ export declare const trackChangesPlugin: (opts?: TrackChangesOptions) => Plugin<TrackChangesState>;
@@ -1,5 +1,5 @@
1
- import type { EditorState, Transaction } from 'prosemirror-state';
2
- import { ReplaceAroundStep } from 'prosemirror-transform';
3
- import { NewEmptyAttrs } from '../types/track';
4
- import { ChangeStep } from '../types/step';
5
- export declare function trackReplaceAroundStep(step: ReplaceAroundStep, oldState: EditorState, tr: Transaction, newTr: Transaction, attrs: NewEmptyAttrs): ChangeStep[];
1
+ import type { EditorState, Transaction } from 'prosemirror-state';
2
+ import { ReplaceAroundStep } from 'prosemirror-transform';
3
+ import { ChangeStep } from '../types/step';
4
+ import { NewEmptyAttrs } from '../types/track';
5
+ export declare function trackReplaceAroundStep(step: ReplaceAroundStep, oldState: EditorState, tr: Transaction, newTr: Transaction, attrs: NewEmptyAttrs): ChangeStep[];
@@ -0,0 +1,6 @@
1
+ import { Node as PMNode } from 'prosemirror-model';
2
+ import type { EditorState, Transaction } from 'prosemirror-state';
3
+ import { ReplaceStep, StepResult } from 'prosemirror-transform';
4
+ import { ChangeStep } from '../types/step';
5
+ import { NewEmptyAttrs } from '../types/track';
6
+ export declare function trackReplaceStep(step: ReplaceStep, oldState: EditorState, newTr: Transaction, attrs: NewEmptyAttrs, stepResult: StepResult, currentStepDoc: PMNode): [ChangeStep[], number];
@@ -0,0 +1,2 @@
1
+ import type { EditorState, Transaction } from 'prosemirror-state';
2
+ export declare function trackTransaction(tr: Transaction, oldState: EditorState, newTr: Transaction, authorID: string): Transaction;
@@ -0,0 +1,62 @@
1
+ export declare enum CHANGE_OPERATION {
2
+ insert = "insert",
3
+ delete = "delete",
4
+ set_node_attributes = "set_attrs"
5
+ }
6
+ export declare enum CHANGE_STATUS {
7
+ accepted = "accepted",
8
+ rejected = "rejected",
9
+ pending = "pending"
10
+ }
11
+ type InsertDeleteAttrs = {
12
+ id: string;
13
+ authorID: string;
14
+ reviewedByID: string | null;
15
+ operation: CHANGE_OPERATION.insert | CHANGE_OPERATION.delete;
16
+ status: CHANGE_STATUS;
17
+ statusUpdateAt: number;
18
+ createdAt: number;
19
+ updatedAt: number;
20
+ };
21
+ export type UpdateAttrs = Omit<InsertDeleteAttrs, 'operation'> & {
22
+ operation: CHANGE_OPERATION.set_node_attributes;
23
+ oldAttrs: Record<string, any>;
24
+ };
25
+ export type TrackedAttrs = InsertDeleteAttrs | UpdateAttrs;
26
+ type Change = {
27
+ id: string;
28
+ from: number;
29
+ to: number;
30
+ dataTracked: TrackedAttrs;
31
+ };
32
+ export type TextChange = Change & {
33
+ type: 'text-change';
34
+ text: string;
35
+ };
36
+ export type NodeChange = Change & {
37
+ type: 'node-change';
38
+ nodeType: string;
39
+ children: TrackedChange[];
40
+ };
41
+ export type NodeAttrChange = Change & {
42
+ type: 'node-attr-change';
43
+ nodeType: string;
44
+ oldAttrs: Record<string, any>;
45
+ newAttrs: Record<string, any>;
46
+ };
47
+ export type WrapChange = Change & {
48
+ type: 'wrap-change';
49
+ wrapperNode: string;
50
+ };
51
+ export type MarkChange = Change & {
52
+ type: 'mark-change';
53
+ };
54
+ export type TrackedChange = TextChange | NodeChange | NodeAttrChange | WrapChange | MarkChange;
55
+ export type PartialChange<T extends TrackedChange> = Omit<T, 'dataTracked'> & {
56
+ dataTracked: Partial<TrackedAttrs>;
57
+ };
58
+ export type IncompleteChange = Omit<TrackedChange, 'dataTracked'> & {
59
+ dataTracked: Partial<TrackedAttrs>;
60
+ };
61
+ export type ChangeType = TrackedChange['type'];
62
+ export {};
@@ -0,0 +1,12 @@
1
+ import { Fragment, Node as PMNode, Slice } from 'prosemirror-model';
2
+ import { ReplaceStep } from 'prosemirror-transform';
3
+ export type ExposedReplaceStep = ReplaceStep & {
4
+ slice: ExposedSlice;
5
+ };
6
+ export type ExposedSlice = Slice & {
7
+ content: ExposedFragment;
8
+ insertAt(pos: number, fragment: Fragment | ExposedFragment): ExposedSlice;
9
+ };
10
+ export type ExposedFragment = Fragment & {
11
+ content: PMNode[];
12
+ };
@@ -1,53 +1,38 @@
1
- /*!
2
- * © 2021 Atypon Systems LLC
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Node as PMNode } from 'prosemirror-model';
17
- import { ExposedFragment, ExposedSlice } from './pm';
18
- export interface DeleteNodeStep {
19
- pos: number;
20
- nodeEnd: number;
21
- type: 'delete-node';
22
- node: PMNode;
23
- }
24
- export interface DeleteTextStep {
25
- pos: number;
26
- from: number;
27
- to: number;
28
- type: 'delete-text';
29
- node: PMNode;
30
- }
31
- export interface MergeFragmentStep {
32
- pos: number;
33
- mergePos: number;
34
- from: number;
35
- to: number;
36
- type: 'merge-fragment';
37
- node: PMNode;
38
- fragment: ExposedFragment;
39
- }
40
- export interface InsertSliceStep {
41
- from: number;
42
- to: number;
43
- sliceWasSplit: boolean;
44
- type: 'insert-slice';
45
- slice: ExposedSlice;
46
- }
47
- export interface UpdateNodeAttrsStep {
48
- pos: number;
49
- type: 'update-node-attrs';
50
- node: PMNode;
51
- newAttrs: Record<string, any>;
52
- }
53
- export declare type ChangeStep = DeleteNodeStep | DeleteTextStep | MergeFragmentStep | InsertSliceStep | UpdateNodeAttrsStep;
1
+ import { Node as PMNode } from 'prosemirror-model';
2
+ import { ExposedFragment, ExposedSlice } from './pm';
3
+ export interface DeleteNodeStep {
4
+ pos: number;
5
+ nodeEnd: number;
6
+ type: 'delete-node';
7
+ node: PMNode;
8
+ }
9
+ export interface DeleteTextStep {
10
+ pos: number;
11
+ from: number;
12
+ to: number;
13
+ type: 'delete-text';
14
+ node: PMNode;
15
+ }
16
+ export interface MergeFragmentStep {
17
+ pos: number;
18
+ mergePos: number;
19
+ from: number;
20
+ to: number;
21
+ type: 'merge-fragment';
22
+ node: PMNode;
23
+ fragment: ExposedFragment;
24
+ }
25
+ export interface InsertSliceStep {
26
+ from: number;
27
+ to: number;
28
+ sliceWasSplit: boolean;
29
+ type: 'insert-slice';
30
+ slice: ExposedSlice;
31
+ }
32
+ export interface UpdateNodeAttrsStep {
33
+ pos: number;
34
+ type: 'update-node-attrs';
35
+ node: PMNode;
36
+ newAttrs: Record<string, any>;
37
+ }
38
+ export type ChangeStep = DeleteNodeStep | DeleteTextStep | MergeFragmentStep | InsertSliceStep | UpdateNodeAttrsStep;
@@ -0,0 +1,30 @@
1
+ import type { PluginKey } from 'prosemirror-state';
2
+ import { ChangeSet } from '../ChangeSet';
3
+ import { CHANGE_OPERATION, TrackedAttrs } from './change';
4
+ export interface TrackChangesOptions {
5
+ debug?: boolean;
6
+ userID: string;
7
+ skipTrsWithMetas?: (PluginKey | string)[];
8
+ }
9
+ export interface TrackChangesState {
10
+ status: TrackChangesStatus;
11
+ userID: string;
12
+ changeSet: ChangeSet;
13
+ }
14
+ export type NewEmptyAttrs = Omit<TrackedAttrs, 'id' | 'operation'>;
15
+ export type NewInsertAttrs = Omit<TrackedAttrs, 'id' | 'operation'> & {
16
+ operation: CHANGE_OPERATION.insert;
17
+ };
18
+ export type NewDeleteAttrs = Omit<TrackedAttrs, 'id' | 'operation'> & {
19
+ operation: CHANGE_OPERATION.delete;
20
+ };
21
+ export type NewUpdateAttrs = Omit<TrackedAttrs, 'id' | 'operation'> & {
22
+ operation: CHANGE_OPERATION.set_node_attributes;
23
+ oldAttrs: Record<string, any>;
24
+ };
25
+ export type NewTrackedAttrs = NewInsertAttrs | NewDeleteAttrs | NewUpdateAttrs;
26
+ export declare enum TrackChangesStatus {
27
+ enabled = "enabled",
28
+ viewSnapshots = "view-snapshots",
29
+ disabled = "disabled"
30
+ }
@@ -0,0 +1,8 @@
1
+ import debug from 'debug';
2
+ export declare const logger: debug.Debugger;
3
+ export declare const log: {
4
+ info(str: string, obj?: any): void;
5
+ warn(str: string, obj?: any): void;
6
+ error(str: string, obj?: any): void;
7
+ };
8
+ export declare const enableDebug: (enabled: boolean) => void;
@@ -1,4 +1,4 @@
1
- import { NewDeleteAttrs, NewEmptyAttrs, NewInsertAttrs, NewUpdateAttrs } from '../types/track';
2
- export declare function createNewInsertAttrs(attrs: NewEmptyAttrs): NewInsertAttrs;
3
- export declare function createNewDeleteAttrs(attrs: NewEmptyAttrs): NewDeleteAttrs;
4
- export declare function createNewUpdateAttrs(attrs: NewEmptyAttrs, oldAttrs: Record<string, any>): NewUpdateAttrs;
1
+ import { NewDeleteAttrs, NewEmptyAttrs, NewInsertAttrs, NewUpdateAttrs } from '../types/track';
2
+ export declare function createNewInsertAttrs(attrs: NewEmptyAttrs): NewInsertAttrs;
3
+ export declare function createNewDeleteAttrs(attrs: NewEmptyAttrs): NewDeleteAttrs;
4
+ export declare function createNewUpdateAttrs(attrs: NewEmptyAttrs, oldAttrs: Record<string, any>): NewUpdateAttrs;
@@ -0,0 +1 @@
1
+ export declare function uuidv4(): string;