@beyondwork/docx-react-component 1.0.1 → 1.0.2

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 (172) hide show
  1. package/README.md +44 -104
  2. package/package.json +76 -46
  3. package/src/README.md +85 -0
  4. package/src/api/README.md +22 -0
  5. package/src/api/public-types.ts +525 -0
  6. package/src/compare/diff-engine.ts +530 -0
  7. package/src/compare/export-redlines.ts +162 -0
  8. package/src/compare/snapshot.ts +37 -0
  9. package/src/component-inventory.md +99 -0
  10. package/src/core/README.md +10 -0
  11. package/src/core/commands/README.md +3 -0
  12. package/src/core/commands/formatting-commands.ts +161 -0
  13. package/src/core/commands/image-commands.ts +144 -0
  14. package/src/core/commands/index.ts +1013 -0
  15. package/src/core/commands/list-commands.ts +370 -0
  16. package/src/core/commands/review-commands.ts +108 -0
  17. package/src/core/commands/text-commands.ts +119 -0
  18. package/src/core/schema/README.md +3 -0
  19. package/src/core/schema/text-schema.ts +512 -0
  20. package/src/core/selection/README.md +3 -0
  21. package/src/core/selection/mapping.ts +238 -0
  22. package/src/core/selection/review-anchors.ts +94 -0
  23. package/src/core/state/README.md +3 -0
  24. package/src/core/state/editor-state.ts +580 -0
  25. package/src/core/state/text-transaction.ts +276 -0
  26. package/src/formats/xlsx/io/parse-shared-strings.ts +41 -0
  27. package/src/formats/xlsx/io/parse-sheet.ts +289 -0
  28. package/src/formats/xlsx/io/parse-styles.ts +57 -0
  29. package/src/formats/xlsx/io/parse-workbook.ts +75 -0
  30. package/src/formats/xlsx/io/xlsx-session.ts +306 -0
  31. package/src/formats/xlsx/model/cell.ts +189 -0
  32. package/src/formats/xlsx/model/sheet.ts +244 -0
  33. package/src/formats/xlsx/model/styles.ts +118 -0
  34. package/src/formats/xlsx/model/workbook.ts +449 -0
  35. package/src/index.ts +45 -0
  36. package/src/io/README.md +10 -0
  37. package/src/io/docx-session.ts +1763 -0
  38. package/src/io/export/README.md +3 -0
  39. package/src/io/export/export-session.ts +165 -0
  40. package/src/io/export/minimal-docx.ts +115 -0
  41. package/src/io/export/reattach-preserved-parts.ts +54 -0
  42. package/src/io/export/serialize-comments.ts +876 -0
  43. package/src/io/export/serialize-footnotes.ts +217 -0
  44. package/src/io/export/serialize-headers-footers.ts +200 -0
  45. package/src/io/export/serialize-main-document.ts +982 -0
  46. package/src/io/export/serialize-numbering.ts +97 -0
  47. package/src/io/export/serialize-revisions.ts +389 -0
  48. package/src/io/export/serialize-runtime-revisions.ts +265 -0
  49. package/src/io/export/serialize-tables.ts +147 -0
  50. package/src/io/export/split-review-boundaries.ts +194 -0
  51. package/src/io/normalize/README.md +3 -0
  52. package/src/io/normalize/normalize-text.ts +437 -0
  53. package/src/io/ooxml/README.md +3 -0
  54. package/src/io/ooxml/parse-comments.ts +779 -0
  55. package/src/io/ooxml/parse-complex-content.ts +287 -0
  56. package/src/io/ooxml/parse-fields.ts +438 -0
  57. package/src/io/ooxml/parse-footnotes.ts +403 -0
  58. package/src/io/ooxml/parse-headers-footers.ts +483 -0
  59. package/src/io/ooxml/parse-inline-media.ts +431 -0
  60. package/src/io/ooxml/parse-main-document.ts +1846 -0
  61. package/src/io/ooxml/parse-numbering.ts +425 -0
  62. package/src/io/ooxml/parse-revisions.ts +658 -0
  63. package/src/io/ooxml/parse-shapes.ts +271 -0
  64. package/src/io/ooxml/parse-tables.ts +568 -0
  65. package/src/io/ooxml/parse-theme.ts +314 -0
  66. package/src/io/ooxml/part-manifest.ts +136 -0
  67. package/src/io/ooxml/revision-boundaries.ts +351 -0
  68. package/src/io/opc/README.md +3 -0
  69. package/src/io/opc/corrupt-package.ts +166 -0
  70. package/src/io/opc/docx-package.ts +74 -0
  71. package/src/io/opc/package-reader.ts +320 -0
  72. package/src/io/opc/package-writer.ts +273 -0
  73. package/src/legal/bookmarks.ts +196 -0
  74. package/src/legal/cross-references.ts +356 -0
  75. package/src/legal/defined-terms.ts +203 -0
  76. package/src/model/README.md +3 -0
  77. package/src/model/canonical-document.ts +1911 -0
  78. package/src/model/cds-1.0.0.ts +196 -0
  79. package/src/model/snapshot.ts +393 -0
  80. package/src/preservation/README.md +3 -0
  81. package/src/preservation/markup-compatibility.ts +48 -0
  82. package/src/preservation/opaque-fragment-store.ts +89 -0
  83. package/src/preservation/opaque-region.ts +233 -0
  84. package/src/preservation/package-preservation.ts +120 -0
  85. package/src/preservation/preserved-part-manifest.ts +56 -0
  86. package/src/preservation/relationship-retention.ts +57 -0
  87. package/src/preservation/store.ts +185 -0
  88. package/src/review/README.md +16 -0
  89. package/src/review/store/README.md +3 -0
  90. package/src/review/store/comment-anchors.ts +70 -0
  91. package/src/review/store/comment-remapping.ts +154 -0
  92. package/src/review/store/comment-store.ts +331 -0
  93. package/src/review/store/comment-thread.ts +109 -0
  94. package/src/review/store/revision-actions.ts +394 -0
  95. package/src/review/store/revision-store.ts +303 -0
  96. package/src/review/store/revision-types.ts +168 -0
  97. package/src/review/store/runtime-comment-store.ts +43 -0
  98. package/src/runtime/README.md +3 -0
  99. package/src/runtime/ai-action-policy.ts +764 -0
  100. package/src/runtime/document-runtime.ts +967 -0
  101. package/src/runtime/read-only-diagnostics-runtime.ts +232 -0
  102. package/src/runtime/review-runtime.ts +44 -0
  103. package/src/runtime/revision-runtime.ts +107 -0
  104. package/src/runtime/session-capabilities.ts +138 -0
  105. package/src/runtime/surface-projection.ts +570 -0
  106. package/src/runtime/table-commands.ts +87 -0
  107. package/src/runtime/table-schema.ts +140 -0
  108. package/src/runtime/virtualized-rendering.ts +258 -0
  109. package/src/ui/README.md +30 -0
  110. package/src/ui/WordReviewEditor.tsx +1504 -0
  111. package/src/ui/comments/README.md +3 -0
  112. package/src/ui/compatibility/README.md +3 -0
  113. package/src/ui/editor-surface/README.md +3 -0
  114. package/src/ui/headless/comment-decoration-model.ts +124 -0
  115. package/src/ui/headless/revision-decoration-model.ts +128 -0
  116. package/src/ui/headless/selection-helpers.ts +34 -0
  117. package/src/ui/headless/use-editor-keyboard.ts +98 -0
  118. package/src/ui/review/README.md +3 -0
  119. package/src/ui/shared/revision-filters.ts +31 -0
  120. package/src/ui/status/README.md +3 -0
  121. package/src/ui/theme/README.md +3 -0
  122. package/src/ui/toolbar/README.md +3 -0
  123. package/src/ui-tailwind/chrome/tw-alert-banner.tsx +48 -0
  124. package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +44 -0
  125. package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +58 -0
  126. package/src/ui-tailwind/chrome/use-before-unload.ts +20 -0
  127. package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +139 -0
  128. package/src/ui-tailwind/editor-surface/pm-decorations.ts +98 -0
  129. package/src/ui-tailwind/editor-surface/pm-position-map.ts +123 -0
  130. package/src/ui-tailwind/editor-surface/pm-schema.ts +452 -0
  131. package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +327 -0
  132. package/src/ui-tailwind/editor-surface/search-plugin.ts +157 -0
  133. package/src/ui-tailwind/editor-surface/tw-caret.tsx +12 -0
  134. package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +150 -0
  135. package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +118 -0
  136. package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +52 -0
  137. package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +151 -0
  138. package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +215 -0
  139. package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +111 -0
  140. package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +122 -0
  141. package/src/ui-tailwind/index.ts +61 -0
  142. package/src/ui-tailwind/review/tw-comment-sidebar.tsx +276 -0
  143. package/src/ui-tailwind/review/tw-health-panel.tsx +120 -0
  144. package/src/ui-tailwind/review/tw-review-rail.tsx +120 -0
  145. package/src/ui-tailwind/review/tw-revision-sidebar.tsx +164 -0
  146. package/src/ui-tailwind/status/tw-status-bar.tsx +58 -0
  147. package/src/ui-tailwind/theme/editor-theme.css +190 -0
  148. package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +48 -0
  149. package/src/ui-tailwind/toolbar/tw-toolbar.tsx +231 -0
  150. package/src/ui-tailwind/tw-review-workspace.tsx +140 -0
  151. package/src/validation/README.md +3 -0
  152. package/src/validation/compatibility-engine.ts +317 -0
  153. package/src/validation/compatibility-report.ts +160 -0
  154. package/src/validation/diagnostics.ts +203 -0
  155. package/src/validation/import-diagnostics.ts +128 -0
  156. package/src/validation/low-priority-word-surfaces.ts +373 -0
  157. package/dist/chunk-32W6IVQE.js +0 -7725
  158. package/dist/chunk-32W6IVQE.js.map +0 -1
  159. package/dist/index.cjs +0 -23722
  160. package/dist/index.cjs.map +0 -1
  161. package/dist/index.d.cts +0 -7
  162. package/dist/index.d.ts +0 -7
  163. package/dist/index.js +0 -16011
  164. package/dist/index.js.map +0 -1
  165. package/dist/public-types-DqCURAz8.d.cts +0 -1152
  166. package/dist/public-types-DqCURAz8.d.ts +0 -1152
  167. package/dist/tailwind.cjs +0 -8295
  168. package/dist/tailwind.cjs.map +0 -1
  169. package/dist/tailwind.d.cts +0 -323
  170. package/dist/tailwind.d.ts +0 -323
  171. package/dist/tailwind.js +0 -553
  172. package/dist/tailwind.js.map +0 -1
@@ -0,0 +1,168 @@
1
+ import {
2
+ createNodeAnchor,
3
+ createRangeAnchor,
4
+ mapAnchor,
5
+ normalizeRange,
6
+ type Assoc,
7
+ type BoundaryAssoc,
8
+ type DocRange,
9
+ type EditorAnchorProjection,
10
+ type TransactionMapping,
11
+ } from "../../core/selection/mapping.ts";
12
+
13
+ export type RevisionAnchor = EditorAnchorProjection;
14
+
15
+ export type SupportedRevisionKind = "insertion" | "deletion" | "property-change";
16
+ export type PreserveOnlyRevisionKind = "formatting" | "move";
17
+ export type RevisionKind = SupportedRevisionKind | PreserveOnlyRevisionKind;
18
+
19
+ export type RevisionStatus = "active" | "accepted" | "rejected" | "detached";
20
+ export type RevisionActionability = "actionable" | "preserve-only";
21
+ export type RevisionAnchorState = "active" | "detached";
22
+
23
+ export interface PropertyChangeData {
24
+ xmlTag: "pPrChange" | "sectPrChange" | "tblPrChange" | "rPrChange";
25
+ beforeXml: string;
26
+ }
27
+
28
+ export interface MoveData {
29
+ moveId: string;
30
+ direction: "from" | "to";
31
+ }
32
+
33
+ export interface RevisionMetadataEnvelope {
34
+ source: "runtime" | "import";
35
+ preserveOnlyReason?: string;
36
+ importedRevisionForm?:
37
+ | "run-insertion"
38
+ | "run-deletion"
39
+ | "paragraph-insertion"
40
+ | "paragraph-deletion";
41
+ originalRevisionType?: string;
42
+ ooxmlRevisionId?: string;
43
+ propertyChangeData?: PropertyChangeData;
44
+ moveData?: MoveData;
45
+ }
46
+
47
+ export type PropertyChangeRevision = RevisionRecord & {
48
+ kind: "property-change";
49
+ metadata: RevisionMetadataEnvelope & { propertyChangeData: PropertyChangeData };
50
+ };
51
+
52
+ export type MoveRevision = RevisionRecord & {
53
+ kind: "move";
54
+ metadata: RevisionMetadataEnvelope & { moveData: MoveData };
55
+ };
56
+
57
+ export interface RevisionRecord {
58
+ revisionId: string;
59
+ kind: RevisionKind;
60
+ anchor: RevisionAnchor;
61
+ authorId: string;
62
+ createdAt: string;
63
+ status: RevisionStatus;
64
+ warningIds: string[];
65
+ metadata: RevisionMetadataEnvelope;
66
+ }
67
+
68
+ export interface RevisionAnchorSummary {
69
+ anchor: RevisionAnchor;
70
+ state: RevisionAnchorState;
71
+ range: DocRange;
72
+ }
73
+
74
+ export function createRevisionRangeAnchor(
75
+ from: number,
76
+ to = from,
77
+ assoc?: BoundaryAssoc,
78
+ ): RevisionAnchor {
79
+ return createRangeAnchor(from, to, assoc);
80
+ }
81
+
82
+ export function createRevisionNodeAnchor(at: number, assoc?: Assoc): RevisionAnchor {
83
+ return createNodeAnchor(at, assoc);
84
+ }
85
+
86
+ export function remapRevisionAnchor(
87
+ anchor: RevisionAnchor,
88
+ mapping: TransactionMapping,
89
+ ): RevisionAnchor {
90
+ return mapAnchor(anchor, mapping);
91
+ }
92
+
93
+ export function isDetachedRevisionAnchor(anchor: RevisionAnchor): boolean {
94
+ return anchor.kind === "detached";
95
+ }
96
+
97
+ export function summarizeRevisionAnchor(anchor: RevisionAnchor): RevisionAnchorSummary {
98
+ if (anchor.kind === "range") {
99
+ return {
100
+ anchor,
101
+ state: "active",
102
+ range: normalizeRange(anchor.range),
103
+ };
104
+ }
105
+
106
+ if (anchor.kind === "node") {
107
+ return {
108
+ anchor,
109
+ state: "active",
110
+ range: {
111
+ from: anchor.at,
112
+ to: anchor.at,
113
+ },
114
+ };
115
+ }
116
+
117
+ return {
118
+ anchor,
119
+ state: "detached",
120
+ range: normalizeRange(anchor.lastKnownRange),
121
+ };
122
+ }
123
+
124
+ export function getRevisionActionability(
125
+ revision:
126
+ | RevisionKind
127
+ | Pick<RevisionRecord, "kind" | "metadata">,
128
+ ): RevisionActionability {
129
+ if (
130
+ typeof revision !== "string" &&
131
+ typeof revision.metadata.preserveOnlyReason === "string" &&
132
+ revision.metadata.preserveOnlyReason.length > 0
133
+ ) {
134
+ return "preserve-only";
135
+ }
136
+
137
+ const kind = typeof revision === "string" ? revision : revision.kind;
138
+ switch (kind) {
139
+ case "insertion":
140
+ case "deletion":
141
+ case "property-change":
142
+ return "actionable";
143
+ case "formatting":
144
+ case "move":
145
+ return "preserve-only";
146
+ }
147
+ }
148
+
149
+ export function isRevisionActionable(
150
+ record: Pick<RevisionRecord, "kind" | "metadata" | "status">,
151
+ ): boolean {
152
+ return getRevisionActionability(record) === "actionable" && record.status === "active";
153
+ }
154
+
155
+ export function describeRevisionKind(kind: RevisionKind): string {
156
+ switch (kind) {
157
+ case "insertion":
158
+ return "Insertion";
159
+ case "deletion":
160
+ return "Deletion";
161
+ case "formatting":
162
+ return "Formatting change";
163
+ case "move":
164
+ return "Move";
165
+ case "property-change":
166
+ return "Property change";
167
+ }
168
+ }
@@ -0,0 +1,43 @@
1
+ import {
2
+ normalizeCommentThreadRecord,
3
+ type CommentThreadRecord,
4
+ } from "../../core/state/editor-state.ts";
5
+ import {
6
+ createCommentStore,
7
+ type CommentStore,
8
+ type CommentThread,
9
+ } from "./comment-store.ts";
10
+
11
+ export function createCommentStoreFromRuntimeComments(
12
+ comments: Record<string, CommentThreadRecord>,
13
+ ): CommentStore {
14
+ const threads = Object.fromEntries(
15
+ Object.values(comments).map((comment) => [
16
+ comment.commentId,
17
+ toCommentThread(comment),
18
+ ]),
19
+ );
20
+
21
+ return createCommentStore(threads);
22
+ }
23
+
24
+ function toCommentThread(comment: CommentThreadRecord): CommentThread {
25
+ const normalized = normalizeCommentThreadRecord(comment);
26
+
27
+ return {
28
+ commentId: normalized.commentId,
29
+ anchor: normalized.anchor,
30
+ status:
31
+ normalized.anchor.kind === "detached"
32
+ ? "detached"
33
+ : normalized.status === "resolved"
34
+ ? "resolved"
35
+ : "open",
36
+ entries: normalized.entries ?? [],
37
+ createdBy: normalized.createdBy ?? normalized.authorId ?? "unknown",
38
+ createdAt: normalized.createdAt,
39
+ resolution: normalized.resolution,
40
+ warningIds: [...(normalized.warningIds ?? [])],
41
+ metadata: normalized.metadata,
42
+ };
43
+ }
@@ -0,0 +1,3 @@
1
+ # Runtime
2
+
3
+ The document controller and coordination between canonical state, review state, UI state, preservation, validation, and IO belong here.