@x15ventures/x15-ui-library 3.19.0 → 3.20.0

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 (484) hide show
  1. package/THIRD_PARTY_LICENSES.md +11182 -0
  2. package/dist/cjs/autoGenerated/libraryThemes.js +12 -12
  3. package/dist/cjs/autoGenerated/libraryThemes.js.map +1 -1
  4. package/dist/cjs/autoGenerated/libraryThemes.json +12 -12
  5. package/dist/cjs/components/design/banners/pageBanner/PageBanner.js +27 -12
  6. package/dist/cjs/components/design/banners/pageBanner/PageBanner.js.map +1 -1
  7. package/dist/cjs/components/design/card/cardHeader/CardHeaderItem.js +22 -15
  8. package/dist/cjs/components/design/card/cardHeader/CardHeaderItem.js.map +1 -1
  9. package/dist/cjs/components/design/dialog/dialog.css +4 -0
  10. package/dist/cjs/components/design/logos/LogoLink.js +2 -1
  11. package/dist/cjs/components/design/logos/LogoLink.js.map +1 -1
  12. package/dist/cjs/components/design/logos/VentureLogo.js +2 -1
  13. package/dist/cjs/components/design/logos/VentureLogo.js.map +1 -1
  14. package/dist/cjs/components/design/revealMore/RevealMoreBelow.js +2 -2
  15. package/dist/cjs/components/design/revealMore/RevealMoreBelow.js.map +1 -1
  16. package/dist/cjs/components/design/skeleton/Skeleton.js +15 -5
  17. package/dist/cjs/components/design/skeleton/Skeleton.js.map +1 -1
  18. package/dist/cjs/components/design/themeLoader/ThemeLoader.js +1 -1
  19. package/dist/cjs/components/design/themeLoader/ThemeLoader.js.map +1 -1
  20. package/dist/cjs/components/form/buttons/SimpleButton.js +3 -1
  21. package/dist/cjs/components/form/buttons/SimpleButton.js.map +1 -1
  22. package/dist/cjs/components/form/buttons/button.interface.js.map +1 -1
  23. package/dist/cjs/components/form/buttons/userPicButton/UserPicButton.js +5 -3
  24. package/dist/cjs/components/form/buttons/userPicButton/UserPicButton.js.map +1 -1
  25. package/dist/cjs/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js +64 -19
  26. package/dist/cjs/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js.map +1 -1
  27. package/dist/cjs/components/navigation/link/Link.js +2 -1
  28. package/dist/cjs/components/navigation/link/Link.js.map +1 -1
  29. package/dist/cjs/components/testing/devToolbar/DevToolbar.js +5 -3
  30. package/dist/cjs/components/testing/devToolbar/DevToolbar.js.map +1 -1
  31. package/dist/cjs/constants/fileUploadTypes.js +9 -4
  32. package/dist/cjs/constants/fileUploadTypes.js.map +1 -1
  33. package/dist/cjs/helpers/dateHelpers.js +34 -23
  34. package/dist/cjs/helpers/dateHelpers.js.map +1 -1
  35. package/dist/cjs/helpers/fileHelpers.js +58 -0
  36. package/dist/cjs/helpers/fileHelpers.js.map +1 -0
  37. package/dist/cjs/helpers/index.js +44 -0
  38. package/dist/cjs/helpers/index.js.map +1 -1
  39. package/dist/cjs/helpers/interactionsHelper.js +8 -1
  40. package/dist/cjs/helpers/interactionsHelper.js.map +1 -1
  41. package/dist/cjs/helpers/objectHelpers.js +23 -9
  42. package/dist/cjs/helpers/objectHelpers.js.map +1 -1
  43. package/dist/cjs/helpers/stringHelpers.js +61 -5
  44. package/dist/cjs/helpers/stringHelpers.js.map +1 -1
  45. package/dist/cjs/helpers/urlHelpers.js +48 -0
  46. package/dist/cjs/helpers/urlHelpers.js.map +1 -0
  47. package/dist/cjs/index.js +191 -0
  48. package/dist/cjs/index.js.map +1 -1
  49. package/dist/cjs/package.json +3 -305
  50. package/dist/cjs/styles/index.css +18 -0
  51. package/dist/cjs/styles/variables/cssVars/_designVariables.css +18 -0
  52. package/dist/cjs/widgets/documentComments/DocumentComments.js +305 -0
  53. package/dist/cjs/widgets/documentComments/DocumentComments.js.map +1 -0
  54. package/dist/cjs/widgets/documentComments/_documentCommentsVariables.css +0 -0
  55. package/dist/cjs/widgets/documentComments/documentComments.css +107 -0
  56. package/dist/cjs/widgets/documentComments/documentComments.interfaces.js +6 -0
  57. package/dist/cjs/widgets/documentComments/documentComments.interfaces.js.map +1 -0
  58. package/dist/cjs/widgets/documentComments/index.js +19 -0
  59. package/dist/cjs/widgets/documentComments/index.js.map +1 -0
  60. package/dist/cjs/widgets/documentComparer/DocumentComparer.js +309 -0
  61. package/dist/cjs/widgets/documentComparer/DocumentComparer.js.map +1 -0
  62. package/dist/cjs/widgets/documentComparer/_documentComparerVariables.css +0 -0
  63. package/dist/cjs/widgets/documentComparer/documentComparer.css +117 -0
  64. package/dist/cjs/widgets/documentComparer/documentComparer.interfaces.js +6 -0
  65. package/dist/cjs/widgets/documentComparer/documentComparer.interfaces.js.map +1 -0
  66. package/dist/cjs/widgets/documentComparer/index.js +19 -0
  67. package/dist/cjs/widgets/documentComparer/index.js.map +1 -0
  68. package/dist/cjs/widgets/documentEditor/DocumentEditor.js +142 -0
  69. package/dist/cjs/widgets/documentEditor/DocumentEditor.js.map +1 -0
  70. package/dist/cjs/widgets/documentEditor/_documentEditorVariables.css +0 -0
  71. package/dist/cjs/widgets/documentEditor/documentEditor.css +33 -0
  72. package/dist/cjs/widgets/documentEditor/documentEditor.interfaces.js +6 -0
  73. package/dist/cjs/widgets/documentEditor/documentEditor.interfaces.js.map +1 -0
  74. package/dist/cjs/widgets/documentEditor/index.js +19 -0
  75. package/dist/cjs/widgets/documentEditor/index.js.map +1 -0
  76. package/dist/cjs/widgets/documentViewer/DocumentViewer.js +206 -0
  77. package/dist/cjs/widgets/documentViewer/DocumentViewer.js.map +1 -0
  78. package/dist/cjs/widgets/documentViewer/_documentViewerVariables.css +0 -0
  79. package/dist/cjs/widgets/documentViewer/documentViewer.css +82 -0
  80. package/dist/cjs/widgets/documentViewer/documentViewer.interfaces.js +6 -0
  81. package/dist/cjs/widgets/documentViewer/documentViewer.interfaces.js.map +1 -0
  82. package/dist/cjs/widgets/documentViewer/index.js +19 -0
  83. package/dist/cjs/widgets/documentViewer/index.js.map +1 -0
  84. package/dist/cjs/widgets/index.js +126 -0
  85. package/dist/cjs/widgets/index.js.map +1 -1
  86. package/dist/cjs/widgets/shared/documents/ToggleGroup.js +32 -0
  87. package/dist/cjs/widgets/shared/documents/ToggleGroup.js.map +1 -0
  88. package/dist/cjs/widgets/shared/documents/_documentVariables.css +0 -0
  89. package/dist/cjs/widgets/shared/documents/annotations/AnnotationLayer.js +279 -0
  90. package/dist/cjs/widgets/shared/documents/annotations/AnnotationLayer.js.map +1 -0
  91. package/dist/cjs/widgets/shared/documents/annotations/_annotationLayerVariables.css +0 -0
  92. package/dist/cjs/widgets/shared/documents/annotations/annotationLayer.css +65 -0
  93. package/dist/cjs/widgets/shared/documents/annotations/annotations.interfaces.js +21 -0
  94. package/dist/cjs/widgets/shared/documents/annotations/annotations.interfaces.js.map +1 -0
  95. package/dist/cjs/widgets/shared/documents/annotations/highlightRegistry.js +67 -0
  96. package/dist/cjs/widgets/shared/documents/annotations/highlightRegistry.js.map +1 -0
  97. package/dist/cjs/widgets/shared/documents/annotations/index.js +39 -0
  98. package/dist/cjs/widgets/shared/documents/annotations/index.js.map +1 -0
  99. package/dist/cjs/widgets/shared/documents/annotations/textIndex.js +112 -0
  100. package/dist/cjs/widgets/shared/documents/annotations/textIndex.js.map +1 -0
  101. package/dist/cjs/widgets/shared/documents/annotations/textQuoteAnchor.js +160 -0
  102. package/dist/cjs/widgets/shared/documents/annotations/textQuoteAnchor.js.map +1 -0
  103. package/dist/cjs/widgets/shared/documents/documentHelpers.js +186 -0
  104. package/dist/cjs/widgets/shared/documents/documentHelpers.js.map +1 -0
  105. package/dist/cjs/widgets/shared/documents/documents.interfaces.js +6 -0
  106. package/dist/cjs/widgets/shared/documents/documents.interfaces.js.map +1 -0
  107. package/dist/cjs/widgets/shared/documents/engines/documentDiff/DocumentDiff.js +73 -0
  108. package/dist/cjs/widgets/shared/documents/engines/documentDiff/DocumentDiff.js.map +1 -0
  109. package/dist/cjs/widgets/shared/documents/engines/documentDiff/_documentDiffVariables.css +0 -0
  110. package/dist/cjs/widgets/shared/documents/engines/documentDiff/buildDocumentDiff.js +114 -0
  111. package/dist/cjs/widgets/shared/documents/engines/documentDiff/buildDocumentDiff.js.map +1 -0
  112. package/dist/cjs/widgets/shared/documents/engines/documentDiff/documentDiff.css +69 -0
  113. package/dist/cjs/widgets/shared/documents/engines/documentDiff/documentDiff.interfaces.js +6 -0
  114. package/dist/cjs/widgets/shared/documents/engines/documentDiff/documentDiff.interfaces.js.map +1 -0
  115. package/dist/cjs/widgets/shared/documents/engines/lazyEngines.js +19 -0
  116. package/dist/cjs/widgets/shared/documents/engines/lazyEngines.js.map +1 -0
  117. package/dist/cjs/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.js +200 -0
  118. package/dist/cjs/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.js.map +1 -0
  119. package/dist/cjs/widgets/shared/documents/engines/markdownEditor/_markdownEditorEngineVariables.css +0 -0
  120. package/dist/cjs/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.css +50 -0
  121. package/dist/cjs/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.js +6 -0
  122. package/dist/cjs/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.js.map +1 -0
  123. package/dist/cjs/widgets/shared/documents/engines/markdownEditor/markdownTextIndex.js +179 -0
  124. package/dist/cjs/widgets/shared/documents/engines/markdownEditor/markdownTextIndex.js.map +1 -0
  125. package/dist/cjs/widgets/shared/documents/engines/markdownEditor/sanitizeForMdx.js +278 -0
  126. package/dist/cjs/widgets/shared/documents/engines/markdownEditor/sanitizeForMdx.js.map +1 -0
  127. package/dist/cjs/widgets/shared/documents/engines/markdownEditor/sourceAnnotations.js +208 -0
  128. package/dist/cjs/widgets/shared/documents/engines/markdownEditor/sourceAnnotations.js.map +1 -0
  129. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/MarkdownRenderer.js +85 -0
  130. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/MarkdownRenderer.js.map +1 -0
  131. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/_markdownRendererVariables.css +0 -0
  132. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/markdownRenderer.css +78 -0
  133. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/index.js +64 -0
  134. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/index.js.map +1 -0
  135. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/markdownNode.interfaces.js +6 -0
  136. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/markdownNode.interfaces.js.map +1 -0
  137. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/rehypeTableCleanup.js +71 -0
  138. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/rehypeTableCleanup.js.map +1 -0
  139. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/remarkPlugins.js +192 -0
  140. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/remarkPlugins.js.map +1 -0
  141. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/remarkSafeTables.js +86 -0
  142. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/remarkSafeTables.js.map +1 -0
  143. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/tableHelpers.js +38 -0
  144. package/dist/cjs/widgets/shared/documents/engines/markdownRenderer/plugins/tableHelpers.js.map +1 -0
  145. package/dist/cjs/widgets/shared/documents/engines/wordRenderer/WordRenderer.js +49 -0
  146. package/dist/cjs/widgets/shared/documents/engines/wordRenderer/WordRenderer.js.map +1 -0
  147. package/dist/cjs/widgets/shared/documents/engines/wordRenderer/renderWordDocument.js +214 -0
  148. package/dist/cjs/widgets/shared/documents/engines/wordRenderer/renderWordDocument.js.map +1 -0
  149. package/dist/cjs/widgets/shared/documents/engines/wordRenderer/wordPreviewNumbering.js +112 -0
  150. package/dist/cjs/widgets/shared/documents/engines/wordRenderer/wordPreviewNumbering.js.map +1 -0
  151. package/dist/cjs/widgets/shared/documents/engines/wordRenderer/wordXml.js +68 -0
  152. package/dist/cjs/widgets/shared/documents/engines/wordRenderer/wordXml.js.map +1 -0
  153. package/dist/cjs/widgets/shared/documents/index.js +50 -0
  154. package/dist/cjs/widgets/shared/documents/index.js.map +1 -0
  155. package/dist/cjs/widgets/shared/documents/toggleGroup.css +8 -0
  156. package/dist/cjs/widgets/shared/documents/useDocumentContent.js +222 -0
  157. package/dist/cjs/widgets/shared/documents/useDocumentContent.js.map +1 -0
  158. package/dist/components/design/banners/pageBanner/PageBanner.d.ts.map +1 -1
  159. package/dist/components/design/card/cardHeader/CardHeaderItem.d.ts.map +1 -1
  160. package/dist/components/design/logos/LogoLink.d.ts.map +1 -1
  161. package/dist/components/design/logos/VentureLogo.d.ts.map +1 -1
  162. package/dist/components/design/skeleton/Skeleton.d.ts +1 -1
  163. package/dist/components/design/skeleton/Skeleton.d.ts.map +1 -1
  164. package/dist/components/design/themeLoader/ThemeLoader.d.ts.map +1 -1
  165. package/dist/components/form/buttons/SimpleButton.d.ts.map +1 -1
  166. package/dist/components/form/buttons/button.interface.d.ts +1 -0
  167. package/dist/components/form/buttons/button.interface.d.ts.map +1 -1
  168. package/dist/components/form/buttons/userPicButton/UserPicButton.d.ts.map +1 -1
  169. package/dist/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.d.ts.map +1 -1
  170. package/dist/components/navigation/link/Link.d.ts.map +1 -1
  171. package/dist/components/testing/devToolbar/DevToolbar.d.ts.map +1 -1
  172. package/dist/constants/fileUploadTypes.d.ts.map +1 -1
  173. package/dist/esm/autoGenerated/libraryThemes.js +12 -12
  174. package/dist/esm/autoGenerated/libraryThemes.js.map +1 -1
  175. package/dist/esm/autoGenerated/libraryThemes.json +12 -12
  176. package/dist/esm/components/design/banners/pageBanner/PageBanner.js +27 -12
  177. package/dist/esm/components/design/banners/pageBanner/PageBanner.js.map +1 -1
  178. package/dist/esm/components/design/card/cardHeader/CardHeaderItem.js +22 -15
  179. package/dist/esm/components/design/card/cardHeader/CardHeaderItem.js.map +1 -1
  180. package/dist/esm/components/design/dialog/dialog.css +4 -0
  181. package/dist/esm/components/design/logos/LogoLink.js +2 -1
  182. package/dist/esm/components/design/logos/LogoLink.js.map +1 -1
  183. package/dist/esm/components/design/logos/VentureLogo.js +2 -1
  184. package/dist/esm/components/design/logos/VentureLogo.js.map +1 -1
  185. package/dist/esm/components/design/revealMore/RevealMoreBelow.js +1 -1
  186. package/dist/esm/components/design/revealMore/RevealMoreBelow.js.map +1 -1
  187. package/dist/esm/components/design/skeleton/Skeleton.js +15 -5
  188. package/dist/esm/components/design/skeleton/Skeleton.js.map +1 -1
  189. package/dist/esm/components/design/themeLoader/ThemeLoader.js +1 -1
  190. package/dist/esm/components/design/themeLoader/ThemeLoader.js.map +1 -1
  191. package/dist/esm/components/form/buttons/SimpleButton.js +3 -1
  192. package/dist/esm/components/form/buttons/SimpleButton.js.map +1 -1
  193. package/dist/esm/components/form/buttons/button.interface.js.map +1 -1
  194. package/dist/esm/components/form/buttons/userPicButton/UserPicButton.js +5 -3
  195. package/dist/esm/components/form/buttons/userPicButton/UserPicButton.js.map +1 -1
  196. package/dist/esm/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js +65 -19
  197. package/dist/esm/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js.map +1 -1
  198. package/dist/esm/components/navigation/link/Link.js +2 -1
  199. package/dist/esm/components/navigation/link/Link.js.map +1 -1
  200. package/dist/esm/components/testing/devToolbar/DevToolbar.js +5 -3
  201. package/dist/esm/components/testing/devToolbar/DevToolbar.js.map +1 -1
  202. package/dist/esm/constants/fileUploadTypes.js +9 -4
  203. package/dist/esm/constants/fileUploadTypes.js.map +1 -1
  204. package/dist/esm/helpers/dateHelpers.js +34 -23
  205. package/dist/esm/helpers/dateHelpers.js.map +1 -1
  206. package/dist/esm/helpers/fileHelpers.js +48 -0
  207. package/dist/esm/helpers/fileHelpers.js.map +1 -0
  208. package/dist/esm/helpers/index.js +2 -0
  209. package/dist/esm/helpers/index.js.map +1 -1
  210. package/dist/esm/helpers/interactionsHelper.js +5 -0
  211. package/dist/esm/helpers/interactionsHelper.js.map +1 -1
  212. package/dist/esm/helpers/objectHelpers.js +23 -9
  213. package/dist/esm/helpers/objectHelpers.js.map +1 -1
  214. package/dist/esm/helpers/stringHelpers.js +61 -5
  215. package/dist/esm/helpers/stringHelpers.js.map +1 -1
  216. package/dist/esm/helpers/urlHelpers.js +40 -0
  217. package/dist/esm/helpers/urlHelpers.js.map +1 -0
  218. package/dist/esm/index.js +3 -1
  219. package/dist/esm/index.js.map +1 -1
  220. package/dist/esm/package.json +2 -304
  221. package/dist/esm/styles/index.css +18 -0
  222. package/dist/esm/styles/variables/cssVars/_designVariables.css +18 -0
  223. package/dist/esm/widgets/documentComments/DocumentComments.js +298 -0
  224. package/dist/esm/widgets/documentComments/DocumentComments.js.map +1 -0
  225. package/dist/esm/widgets/documentComments/_documentCommentsVariables.css +0 -0
  226. package/dist/esm/widgets/documentComments/documentComments.css +107 -0
  227. package/dist/esm/widgets/documentComments/documentComments.interfaces.js +2 -0
  228. package/dist/esm/widgets/documentComments/documentComments.interfaces.js.map +1 -0
  229. package/dist/esm/widgets/documentComments/index.js +2 -0
  230. package/dist/esm/widgets/documentComments/index.js.map +1 -0
  231. package/dist/esm/widgets/documentComparer/DocumentComparer.js +301 -0
  232. package/dist/esm/widgets/documentComparer/DocumentComparer.js.map +1 -0
  233. package/dist/esm/widgets/documentComparer/_documentComparerVariables.css +0 -0
  234. package/dist/esm/widgets/documentComparer/documentComparer.css +117 -0
  235. package/dist/esm/widgets/documentComparer/documentComparer.interfaces.js +2 -0
  236. package/dist/esm/widgets/documentComparer/documentComparer.interfaces.js.map +1 -0
  237. package/dist/esm/widgets/documentComparer/index.js +2 -0
  238. package/dist/esm/widgets/documentComparer/index.js.map +1 -0
  239. package/dist/esm/widgets/documentEditor/DocumentEditor.js +135 -0
  240. package/dist/esm/widgets/documentEditor/DocumentEditor.js.map +1 -0
  241. package/dist/esm/widgets/documentEditor/_documentEditorVariables.css +0 -0
  242. package/dist/esm/widgets/documentEditor/documentEditor.css +33 -0
  243. package/dist/esm/widgets/documentEditor/documentEditor.interfaces.js +2 -0
  244. package/dist/esm/widgets/documentEditor/documentEditor.interfaces.js.map +1 -0
  245. package/dist/esm/widgets/documentEditor/index.js +2 -0
  246. package/dist/esm/widgets/documentEditor/index.js.map +1 -0
  247. package/dist/esm/widgets/documentViewer/DocumentViewer.js +198 -0
  248. package/dist/esm/widgets/documentViewer/DocumentViewer.js.map +1 -0
  249. package/dist/esm/widgets/documentViewer/_documentViewerVariables.css +0 -0
  250. package/dist/esm/widgets/documentViewer/documentViewer.css +82 -0
  251. package/dist/esm/widgets/documentViewer/documentViewer.interfaces.js +2 -0
  252. package/dist/esm/widgets/documentViewer/documentViewer.interfaces.js.map +1 -0
  253. package/dist/esm/widgets/documentViewer/index.js +2 -0
  254. package/dist/esm/widgets/documentViewer/index.js.map +1 -0
  255. package/dist/esm/widgets/index.js +6 -0
  256. package/dist/esm/widgets/index.js.map +1 -1
  257. package/dist/esm/widgets/shared/documents/ToggleGroup.js +24 -0
  258. package/dist/esm/widgets/shared/documents/ToggleGroup.js.map +1 -0
  259. package/dist/esm/widgets/shared/documents/_documentVariables.css +0 -0
  260. package/dist/esm/widgets/shared/documents/annotations/AnnotationLayer.js +273 -0
  261. package/dist/esm/widgets/shared/documents/annotations/AnnotationLayer.js.map +1 -0
  262. package/dist/esm/widgets/shared/documents/annotations/_annotationLayerVariables.css +0 -0
  263. package/dist/esm/widgets/shared/documents/annotations/annotationLayer.css +65 -0
  264. package/dist/esm/widgets/shared/documents/annotations/annotations.interfaces.js +14 -0
  265. package/dist/esm/widgets/shared/documents/annotations/annotations.interfaces.js.map +1 -0
  266. package/dist/esm/widgets/shared/documents/annotations/highlightRegistry.js +58 -0
  267. package/dist/esm/widgets/shared/documents/annotations/highlightRegistry.js.map +1 -0
  268. package/dist/esm/widgets/shared/documents/annotations/index.js +4 -0
  269. package/dist/esm/widgets/shared/documents/annotations/index.js.map +1 -0
  270. package/dist/esm/widgets/shared/documents/annotations/textIndex.js +103 -0
  271. package/dist/esm/widgets/shared/documents/annotations/textIndex.js.map +1 -0
  272. package/dist/esm/widgets/shared/documents/annotations/textQuoteAnchor.js +150 -0
  273. package/dist/esm/widgets/shared/documents/annotations/textQuoteAnchor.js.map +1 -0
  274. package/dist/esm/widgets/shared/documents/documentHelpers.js +168 -0
  275. package/dist/esm/widgets/shared/documents/documentHelpers.js.map +1 -0
  276. package/dist/esm/widgets/shared/documents/documents.interfaces.js +2 -0
  277. package/dist/esm/widgets/shared/documents/documents.interfaces.js.map +1 -0
  278. package/dist/esm/widgets/shared/documents/engines/documentDiff/DocumentDiff.js +65 -0
  279. package/dist/esm/widgets/shared/documents/engines/documentDiff/DocumentDiff.js.map +1 -0
  280. package/dist/esm/widgets/shared/documents/engines/documentDiff/_documentDiffVariables.css +0 -0
  281. package/dist/esm/widgets/shared/documents/engines/documentDiff/buildDocumentDiff.js +102 -0
  282. package/dist/esm/widgets/shared/documents/engines/documentDiff/buildDocumentDiff.js.map +1 -0
  283. package/dist/esm/widgets/shared/documents/engines/documentDiff/documentDiff.css +69 -0
  284. package/dist/esm/widgets/shared/documents/engines/documentDiff/documentDiff.interfaces.js +2 -0
  285. package/dist/esm/widgets/shared/documents/engines/documentDiff/documentDiff.interfaces.js.map +1 -0
  286. package/dist/esm/widgets/shared/documents/engines/lazyEngines.js +13 -0
  287. package/dist/esm/widgets/shared/documents/engines/lazyEngines.js.map +1 -0
  288. package/dist/esm/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.js +191 -0
  289. package/dist/esm/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.js.map +1 -0
  290. package/dist/esm/widgets/shared/documents/engines/markdownEditor/_markdownEditorEngineVariables.css +0 -0
  291. package/dist/esm/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.css +50 -0
  292. package/dist/esm/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.js +2 -0
  293. package/dist/esm/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.js.map +1 -0
  294. package/dist/esm/widgets/shared/documents/engines/markdownEditor/markdownTextIndex.js +170 -0
  295. package/dist/esm/widgets/shared/documents/engines/markdownEditor/markdownTextIndex.js.map +1 -0
  296. package/dist/esm/widgets/shared/documents/engines/markdownEditor/sanitizeForMdx.js +270 -0
  297. package/dist/esm/widgets/shared/documents/engines/markdownEditor/sanitizeForMdx.js.map +1 -0
  298. package/dist/esm/widgets/shared/documents/engines/markdownEditor/sourceAnnotations.js +198 -0
  299. package/dist/esm/widgets/shared/documents/engines/markdownEditor/sourceAnnotations.js.map +1 -0
  300. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/MarkdownRenderer.js +76 -0
  301. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/MarkdownRenderer.js.map +1 -0
  302. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/_markdownRendererVariables.css +0 -0
  303. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/markdownRenderer.css +78 -0
  304. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/index.js +5 -0
  305. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/index.js.map +1 -0
  306. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/markdownNode.interfaces.js +2 -0
  307. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/markdownNode.interfaces.js.map +1 -0
  308. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/rehypeTableCleanup.js +64 -0
  309. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/rehypeTableCleanup.js.map +1 -0
  310. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/remarkPlugins.js +182 -0
  311. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/remarkPlugins.js.map +1 -0
  312. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/remarkSafeTables.js +78 -0
  313. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/remarkSafeTables.js.map +1 -0
  314. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/tableHelpers.js +30 -0
  315. package/dist/esm/widgets/shared/documents/engines/markdownRenderer/plugins/tableHelpers.js.map +1 -0
  316. package/dist/esm/widgets/shared/documents/engines/wordRenderer/WordRenderer.js +41 -0
  317. package/dist/esm/widgets/shared/documents/engines/wordRenderer/WordRenderer.js.map +1 -0
  318. package/dist/esm/widgets/shared/documents/engines/wordRenderer/renderWordDocument.js +207 -0
  319. package/dist/esm/widgets/shared/documents/engines/wordRenderer/renderWordDocument.js.map +1 -0
  320. package/dist/esm/widgets/shared/documents/engines/wordRenderer/wordPreviewNumbering.js +105 -0
  321. package/dist/esm/widgets/shared/documents/engines/wordRenderer/wordPreviewNumbering.js.map +1 -0
  322. package/dist/esm/widgets/shared/documents/engines/wordRenderer/wordXml.js +57 -0
  323. package/dist/esm/widgets/shared/documents/engines/wordRenderer/wordXml.js.map +1 -0
  324. package/dist/esm/widgets/shared/documents/index.js +3 -0
  325. package/dist/esm/widgets/shared/documents/index.js.map +1 -0
  326. package/dist/esm/widgets/shared/documents/toggleGroup.css +8 -0
  327. package/dist/esm/widgets/shared/documents/useDocumentContent.js +215 -0
  328. package/dist/esm/widgets/shared/documents/useDocumentContent.js.map +1 -0
  329. package/dist/helpers/dateHelpers.d.ts.map +1 -1
  330. package/dist/helpers/fileHelpers.d.ts +5 -0
  331. package/dist/helpers/fileHelpers.d.ts.map +1 -0
  332. package/dist/helpers/index.d.ts +3 -0
  333. package/dist/helpers/index.d.ts.map +1 -1
  334. package/dist/helpers/interactionsHelper.d.ts +2 -0
  335. package/dist/helpers/interactionsHelper.d.ts.map +1 -1
  336. package/dist/helpers/objectHelpers.d.ts.map +1 -1
  337. package/dist/helpers/stringHelpers.d.ts.map +1 -1
  338. package/dist/helpers/urlHelpers.d.ts +3 -0
  339. package/dist/helpers/urlHelpers.d.ts.map +1 -0
  340. package/dist/index.d.ts +5 -2
  341. package/dist/index.d.ts.map +1 -1
  342. package/dist/package.json +42 -28
  343. package/dist/widgets/documentComments/DocumentComments.d.ts +7 -0
  344. package/dist/widgets/documentComments/DocumentComments.d.ts.map +1 -0
  345. package/dist/widgets/documentComments/documentComments.interfaces.d.ts +57 -0
  346. package/dist/widgets/documentComments/documentComments.interfaces.d.ts.map +1 -0
  347. package/dist/widgets/documentComments/index.d.ts +3 -0
  348. package/dist/widgets/documentComments/index.d.ts.map +1 -0
  349. package/dist/widgets/documentComparer/DocumentComparer.d.ts +7 -0
  350. package/dist/widgets/documentComparer/DocumentComparer.d.ts.map +1 -0
  351. package/dist/widgets/documentComparer/documentComparer.interfaces.d.ts +78 -0
  352. package/dist/widgets/documentComparer/documentComparer.interfaces.d.ts.map +1 -0
  353. package/dist/widgets/documentComparer/index.d.ts +3 -0
  354. package/dist/widgets/documentComparer/index.d.ts.map +1 -0
  355. package/dist/widgets/documentEditor/DocumentEditor.d.ts +7 -0
  356. package/dist/widgets/documentEditor/DocumentEditor.d.ts.map +1 -0
  357. package/dist/widgets/documentEditor/documentEditor.interfaces.d.ts +40 -0
  358. package/dist/widgets/documentEditor/documentEditor.interfaces.d.ts.map +1 -0
  359. package/dist/widgets/documentEditor/index.d.ts +3 -0
  360. package/dist/widgets/documentEditor/index.d.ts.map +1 -0
  361. package/dist/widgets/documentViewer/DocumentViewer.d.ts +7 -0
  362. package/dist/widgets/documentViewer/DocumentViewer.d.ts.map +1 -0
  363. package/dist/widgets/documentViewer/documentViewer.interfaces.d.ts +47 -0
  364. package/dist/widgets/documentViewer/documentViewer.interfaces.d.ts.map +1 -0
  365. package/dist/widgets/documentViewer/index.d.ts +3 -0
  366. package/dist/widgets/documentViewer/index.d.ts.map +1 -0
  367. package/dist/widgets/index.d.ts +12 -0
  368. package/dist/widgets/index.d.ts.map +1 -1
  369. package/dist/widgets/shared/documents/ToggleGroup.d.ts +15 -0
  370. package/dist/widgets/shared/documents/ToggleGroup.d.ts.map +1 -0
  371. package/dist/widgets/shared/documents/annotations/AnnotationLayer.d.ts +27 -0
  372. package/dist/widgets/shared/documents/annotations/AnnotationLayer.d.ts.map +1 -0
  373. package/dist/widgets/shared/documents/annotations/annotations.interfaces.d.ts +43 -0
  374. package/dist/widgets/shared/documents/annotations/annotations.interfaces.d.ts.map +1 -0
  375. package/dist/widgets/shared/documents/annotations/highlightRegistry.d.ts +12 -0
  376. package/dist/widgets/shared/documents/annotations/highlightRegistry.d.ts.map +1 -0
  377. package/dist/widgets/shared/documents/annotations/index.d.ts +6 -0
  378. package/dist/widgets/shared/documents/annotations/index.d.ts.map +1 -0
  379. package/dist/widgets/shared/documents/annotations/textIndex.d.ts +16 -0
  380. package/dist/widgets/shared/documents/annotations/textIndex.d.ts.map +1 -0
  381. package/dist/widgets/shared/documents/annotations/textQuoteAnchor.d.ts +15 -0
  382. package/dist/widgets/shared/documents/annotations/textQuoteAnchor.d.ts.map +1 -0
  383. package/dist/widgets/shared/documents/documentHelpers.d.ts +14 -0
  384. package/dist/widgets/shared/documents/documentHelpers.d.ts.map +1 -0
  385. package/dist/widgets/shared/documents/documents.interfaces.d.ts +20 -0
  386. package/dist/widgets/shared/documents/documents.interfaces.d.ts.map +1 -0
  387. package/dist/widgets/shared/documents/engines/documentDiff/DocumentDiff.d.ts +6 -0
  388. package/dist/widgets/shared/documents/engines/documentDiff/DocumentDiff.d.ts.map +1 -0
  389. package/dist/widgets/shared/documents/engines/documentDiff/buildDocumentDiff.d.ts +25 -0
  390. package/dist/widgets/shared/documents/engines/documentDiff/buildDocumentDiff.d.ts.map +1 -0
  391. package/dist/widgets/shared/documents/engines/documentDiff/documentDiff.interfaces.d.ts +17 -0
  392. package/dist/widgets/shared/documents/engines/documentDiff/documentDiff.interfaces.d.ts.map +1 -0
  393. package/dist/widgets/shared/documents/engines/lazyEngines.d.ts +5 -0
  394. package/dist/widgets/shared/documents/engines/lazyEngines.d.ts.map +1 -0
  395. package/dist/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.d.ts +8 -0
  396. package/dist/widgets/shared/documents/engines/markdownEditor/MarkdownEditorEngine.d.ts.map +1 -0
  397. package/dist/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.d.ts +23 -0
  398. package/dist/widgets/shared/documents/engines/markdownEditor/markdownEditorEngine.interfaces.d.ts.map +1 -0
  399. package/dist/widgets/shared/documents/engines/markdownEditor/markdownTextIndex.d.ts +12 -0
  400. package/dist/widgets/shared/documents/engines/markdownEditor/markdownTextIndex.d.ts.map +1 -0
  401. package/dist/widgets/shared/documents/engines/markdownEditor/sanitizeForMdx.d.ts +8 -0
  402. package/dist/widgets/shared/documents/engines/markdownEditor/sanitizeForMdx.d.ts.map +1 -0
  403. package/dist/widgets/shared/documents/engines/markdownEditor/sourceAnnotations.d.ts +32 -0
  404. package/dist/widgets/shared/documents/engines/markdownEditor/sourceAnnotations.d.ts.map +1 -0
  405. package/dist/widgets/shared/documents/engines/markdownRenderer/MarkdownRenderer.d.ts +12 -0
  406. package/dist/widgets/shared/documents/engines/markdownRenderer/MarkdownRenderer.d.ts.map +1 -0
  407. package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/index.d.ts +7 -0
  408. package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/index.d.ts.map +1 -0
  409. package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/markdownNode.interfaces.d.ts +16 -0
  410. package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/markdownNode.interfaces.d.ts.map +1 -0
  411. package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/rehypeTableCleanup.d.ts +3 -0
  412. package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/rehypeTableCleanup.d.ts.map +1 -0
  413. package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/remarkPlugins.d.ts +6 -0
  414. package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/remarkPlugins.d.ts.map +1 -0
  415. package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/remarkSafeTables.d.ts +3 -0
  416. package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/remarkSafeTables.d.ts.map +1 -0
  417. package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/tableHelpers.d.ts +8 -0
  418. package/dist/widgets/shared/documents/engines/markdownRenderer/plugins/tableHelpers.d.ts.map +1 -0
  419. package/dist/widgets/shared/documents/engines/wordRenderer/WordRenderer.d.ts +11 -0
  420. package/dist/widgets/shared/documents/engines/wordRenderer/WordRenderer.d.ts.map +1 -0
  421. package/dist/widgets/shared/documents/engines/wordRenderer/renderWordDocument.d.ts +7 -0
  422. package/dist/widgets/shared/documents/engines/wordRenderer/renderWordDocument.d.ts.map +1 -0
  423. package/dist/widgets/shared/documents/engines/wordRenderer/wordPreviewNumbering.d.ts +3 -0
  424. package/dist/widgets/shared/documents/engines/wordRenderer/wordPreviewNumbering.d.ts.map +1 -0
  425. package/dist/widgets/shared/documents/engines/wordRenderer/wordXml.d.ts +21 -0
  426. package/dist/widgets/shared/documents/engines/wordRenderer/wordXml.d.ts.map +1 -0
  427. package/dist/widgets/shared/documents/index.d.ts +5 -0
  428. package/dist/widgets/shared/documents/index.d.ts.map +1 -0
  429. package/dist/widgets/shared/documents/useDocumentContent.d.ts +11 -0
  430. package/dist/widgets/shared/documents/useDocumentContent.d.ts.map +1 -0
  431. package/package.json +42 -28
  432. package/readme.md +49 -2
  433. package/dist/components/design/dialog/Dialog.test.d.ts +0 -5
  434. package/dist/components/design/dialog/Dialog.test.d.ts.map +0 -1
  435. package/dist/components/design/progressIndicators/circularProgressIndicator/CircularProgressIndicator.test.d.ts +0 -5
  436. package/dist/components/design/progressIndicators/circularProgressIndicator/CircularProgressIndicator.test.d.ts.map +0 -1
  437. package/dist/components/design/tooltip/Tooltip.test.d.ts +0 -2
  438. package/dist/components/design/tooltip/Tooltip.test.d.ts.map +0 -1
  439. package/dist/components/form/buttons/SimpleButton.test.d.ts +0 -5
  440. package/dist/components/form/buttons/SimpleButton.test.d.ts.map +0 -1
  441. package/dist/components/form/formFields/formFieldWrapper/FormField.test.d.ts +0 -5
  442. package/dist/components/form/formFields/formFieldWrapper/FormField.test.d.ts.map +0 -1
  443. package/dist/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.test.d.ts +0 -5
  444. package/dist/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.test.d.ts.map +0 -1
  445. package/dist/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/CheckboxSwitch.test.d.ts +0 -5
  446. package/dist/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/CheckboxSwitch.test.d.ts.map +0 -1
  447. package/dist/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.test.d.ts +0 -5
  448. package/dist/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.test.d.ts.map +0 -1
  449. package/dist/components/form/formFields/subComponents/inputs/file/fileAttachmentList/FileAttachmentsList.test.d.ts +0 -5
  450. package/dist/components/form/formFields/subComponents/inputs/file/fileAttachmentList/FileAttachmentsList.test.d.ts.map +0 -1
  451. package/dist/components/form/formFields/subComponents/inputs/text/InputText.test.d.ts +0 -5
  452. package/dist/components/form/formFields/subComponents/inputs/text/InputText.test.d.ts.map +0 -1
  453. package/dist/components/form/formFields/subComponents/nestedFormContext.test.d.ts +0 -5
  454. package/dist/components/form/formFields/subComponents/nestedFormContext.test.d.ts.map +0 -1
  455. package/dist/components/form/formFields/subComponents/select/Select.test.d.ts +0 -5
  456. package/dist/components/form/formFields/subComponents/select/Select.test.d.ts.map +0 -1
  457. package/dist/components/form/formFields/subComponents/textarea/Textarea.test.d.ts +0 -5
  458. package/dist/components/form/formFields/subComponents/textarea/Textarea.test.d.ts.map +0 -1
  459. package/dist/components/form/hookFormWrapper/HookFormWrapper.test.d.ts +0 -5
  460. package/dist/components/form/hookFormWrapper/HookFormWrapper.test.d.ts.map +0 -1
  461. package/dist/components/form/validation/ValidationMessages.test.d.ts +0 -5
  462. package/dist/components/form/validation/ValidationMessages.test.d.ts.map +0 -1
  463. package/dist/components/navigation/bubbleNavigator/bubbleNavigatorUtilities.test.d.ts +0 -2
  464. package/dist/components/navigation/bubbleNavigator/bubbleNavigatorUtilities.test.d.ts.map +0 -1
  465. package/dist/components/navigation/menu/menuItemContent/MenuItemIcon.test.d.ts +0 -5
  466. package/dist/components/navigation/menu/menuItemContent/MenuItemIcon.test.d.ts.map +0 -1
  467. package/dist/helpers/ageHelpers.test.d.ts +0 -2
  468. package/dist/helpers/ageHelpers.test.d.ts.map +0 -1
  469. package/dist/helpers/dateHelpers.test.d.ts +0 -2
  470. package/dist/helpers/dateHelpers.test.d.ts.map +0 -1
  471. package/dist/helpers/formatters.test.d.ts +0 -5
  472. package/dist/helpers/formatters.test.d.ts.map +0 -1
  473. package/dist/helpers/iconHelpers.test.d.ts +0 -5
  474. package/dist/helpers/iconHelpers.test.d.ts.map +0 -1
  475. package/dist/helpers/numberHelpers.test.d.ts +0 -5
  476. package/dist/helpers/numberHelpers.test.d.ts.map +0 -1
  477. package/dist/helpers/objectHelpers.test.d.ts +0 -2
  478. package/dist/helpers/objectHelpers.test.d.ts.map +0 -1
  479. package/dist/helpers/stringHelpers.test.d.ts +0 -2
  480. package/dist/helpers/stringHelpers.test.d.ts.map +0 -1
  481. package/dist/hooks/InteractiveHostFocus.test.d.ts +0 -5
  482. package/dist/hooks/InteractiveHostFocus.test.d.ts.map +0 -1
  483. package/dist/widgets/processLauncher/ProcessLauncher.test.d.ts +0 -5
  484. package/dist/widgets/processLauncher/ProcessLauncher.test.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentComments.js","names":["React","useEffect","useMemo","useRef","useState","useForm","HeaderBar","SimpleButton","Textarea","dateToShortReadableDate","getPreferredScrollBehavior","ToggleGroup","defaultDocumentCommentsLabels","heading","filter","open","count","resolved","newPinnedComment","newGeneralComment","post","cancel","reply","replyTo","authorName","sendReply","resolve","reopen","showInDocument","detached","generalComment","noOpenComments","noResolvedComments","quoteLabel","CommentHeader","createdAt","formatDate","createElement","className","dateTime","DocumentComments","id","comments","headingLevel","selectedCommentId","pendingAnchor","detachedCommentIds","canComment","canCommentRequested","canReply","canReplyRequested","canResolve","canResolveRequested","allowGeneralComments","initialFilter","onAddComment","onReply","onToggleResolved","onSelectComment","onCancelPending","headerActions","labels","customLabels","customCssClasses","Boolean","formMethods","defaultValues","newComment","setFilter","replyingToId","setReplyingToId","isSubmitting","setIsSubmitting","cardRefs","Map","String","watch","openComments","comment","resolvedComments","displayedComments","showNewCommentForm","commentsRef","current","selected","find","get","scrollIntoView","block","behavior","submit","action","field","setValue","handlePost","content","trim","posted","anchor","handleCancelPending","handleReply","commentId","openReply","renderThread","isSelected","isDetached","includes","cardClasses","card","join","key","ref","element","set","delete","undefined","author","name","exact","replies","length","map","replyItem","formContext","label","text","cssClass","onClickHandler","disabled","ariaPressed","wrapper","legend","value","onChange","options","form","list"],"sources":["../../../../src/widgets/documentComments/DocumentComments.tsx"],"sourcesContent":["'use client';\n\nimport React, { FC, useEffect, useMemo, useRef, useState } from 'react';\nimport { FieldValues, useForm } from 'react-hook-form';\n\nimport { HeaderBar, SimpleButton, Textarea } from '../../components';\nimport { dateToShortReadableDate } from '../../helpers/dateHelpers';\nimport { getPreferredScrollBehavior } from '../../helpers/interactionsHelper';\nimport { DocumentComment } from '../shared/documents/annotations/annotations.interfaces';\nimport { ToggleGroup } from '../shared/documents/ToggleGroup';\nimport {\n DocumentCommentsFilter,\n DocumentCommentsLabels,\n DocumentCommentsProps\n} from './documentComments.interfaces';\n\nimport './documentComments.scss';\n\nexport const defaultDocumentCommentsLabels: DocumentCommentsLabels = {\n heading: 'Comments',\n filter: 'Show comments',\n open: (count) => `Open (${ count })`,\n resolved: (count) => `Resolved (${ count })`,\n newPinnedComment: 'Comment on the selected text',\n newGeneralComment: 'Comment on the document',\n post: 'Post comment',\n cancel: 'Cancel',\n reply: 'Reply',\n replyTo: (authorName) => `Reply to ${ authorName }`,\n sendReply: 'Send reply',\n resolve: 'Resolve',\n reopen: 'Reopen',\n showInDocument: 'Show in document',\n detached: 'The text this comment was on has changed or been removed.',\n generalComment: 'General comment',\n noOpenComments: 'There are no open comments.',\n noResolvedComments: 'There are no resolved comments.',\n quoteLabel: 'Commented text'\n};\n\ntype FormValues = { newComment: string; reply: string };\n\ntype CommentHeaderProps = {\n authorName: string;\n createdAt: string;\n formatDate: NonNullable<DocumentCommentsProps['formatDate']>;\n};\n\nconst CommentHeader: FC<CommentHeaderProps> = ({ authorName, createdAt, formatDate }) => (\n <div className=\"documentComments__cardHeader\">\n <span className=\"documentComments__author\">{ authorName }</span>\n <time className=\"documentComments__date\" dateTime={ createdAt }>{ formatDate(createdAt) ?? createdAt }</time>\n </div>\n);\n\n/*\n DocumentComments lists a document's comment threads and lets people add comments (on selected\n text or the whole document), reply, and resolve or reopen them. The host application owns the\n comment data and persistence; this widget renders it and reports actions through callbacks.\n */\nexport const DocumentComments: FC<DocumentCommentsProps> = (\n {\n id,\n comments,\n headingLevel = 3,\n selectedCommentId,\n pendingAnchor = null,\n detachedCommentIds = [],\n canComment: canCommentRequested = true,\n canReply: canReplyRequested = canCommentRequested,\n canResolve: canResolveRequested = canCommentRequested,\n allowGeneralComments = true,\n initialFilter = 'open',\n formatDate = dateToShortReadableDate,\n onAddComment,\n onReply,\n onToggleResolved,\n onSelectComment,\n onCancelPending,\n headerActions,\n labels: customLabels,\n customCssClasses = {}\n }\n) => {\n const labels = useMemo(() => ({ ...defaultDocumentCommentsLabels, ...customLabels }), [customLabels]);\n // An action is only offered when the host can act on it; otherwise a submitted draft would be lost.\n const canComment = canCommentRequested && Boolean(onAddComment);\n const canReply = canReplyRequested && Boolean(onReply);\n const canResolve = canResolveRequested && Boolean(onToggleResolved);\n // Untyped because the library's form fields accept a generic form context.\n const formMethods = useForm<FieldValues>({ defaultValues: { newComment: '', reply: '' } satisfies FormValues });\n const [filter, setFilter] = useState<DocumentCommentsFilter>(initialFilter);\n const [replyingToId, setReplyingToId] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const cardRefs = useRef(new Map<string, HTMLLIElement>());\n\n const newComment = String(formMethods.watch('newComment') ?? '');\n const reply = String(formMethods.watch('reply') ?? '');\n const openComments = comments.filter((comment) => !comment.resolved);\n const resolvedComments = comments.filter((comment) => comment.resolved);\n const displayedComments = filter === 'open' ? openComments : resolvedComments;\n const showNewCommentForm = canComment && filter === 'open' && (pendingAnchor !== null || allowGeneralComments);\n\n // A new selection is commented on in the open list, so switch to it.\n useEffect(() => {\n if (pendingAnchor) {\n setFilter('open');\n }\n }, [pendingAnchor]);\n\n // Read through a ref so only a change of selection scrolls the list, not new comments or replies.\n const commentsRef = useRef(comments);\n commentsRef.current = comments;\n\n // Bring the selected thread into view, e.g. after its bubble is chosen in the document.\n useEffect(() => {\n const selected = commentsRef.current.find((comment) => comment.id === selectedCommentId);\n if (!selected) {\n return;\n }\n setFilter(selected.resolved ? 'resolved' : 'open');\n cardRefs.current.get(selected.id)?.scrollIntoView?.({ block: 'nearest', behavior: getPreferredScrollBehavior() });\n }, [selectedCommentId]);\n\n const submit = async (action: () => void | Promise<void>, field: keyof FormValues) => {\n setIsSubmitting(true);\n try {\n await action();\n formMethods.setValue(field, '');\n return true;\n } catch {\n // The host's callback reports the failure; the draft is kept so it can be retried.\n return false;\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handlePost = async () => {\n const content = newComment.trim();\n if (!content || !onAddComment) {\n return;\n }\n const posted = await submit(() => onAddComment({ content, ...(pendingAnchor ? { anchor: pendingAnchor } : {}) }), 'newComment');\n if (posted && pendingAnchor) {\n onCancelPending?.();\n }\n };\n\n const handleCancelPending = () => {\n formMethods.setValue('newComment', '');\n onCancelPending?.();\n };\n\n const handleReply = async (commentId: string) => {\n const content = reply.trim();\n if (content && onReply && await submit(() => onReply(commentId, content), 'reply')) {\n setReplyingToId(null);\n }\n };\n\n const openReply = (commentId: string) => {\n formMethods.setValue('reply', '');\n setReplyingToId(commentId);\n };\n\n const renderThread = (comment: DocumentComment) => {\n const isSelected = comment.id === selectedCommentId;\n const isDetached = Boolean(comment.anchor) && detachedCommentIds.includes(comment.id);\n const cardClasses = [\n 'documentComments__card',\n isSelected ? 'documentComments__card--selected' : '',\n comment.resolved ? 'documentComments__card--resolved' : '',\n isDetached ? 'documentComments__card--detached' : '',\n customCssClasses.card || ''\n ].filter(Boolean).join(' ');\n\n return (\n <li\n key={ comment.id }\n ref={ (element) => {\n if (element) {\n cardRefs.current.set(comment.id, element);\n } else {\n cardRefs.current.delete(comment.id);\n }\n } }\n className={ cardClasses }\n aria-current={ isSelected ? 'true' : undefined }\n >\n <CommentHeader authorName={ comment.author.name } createdAt={ comment.createdAt } formatDate={ formatDate } />\n\n { comment.anchor ? (\n <blockquote className=\"documentComments__quote\" aria-label={ labels.quoteLabel }>{ comment.anchor.exact }</blockquote>\n ) : (\n <p className=\"documentComments__general\">{ labels.generalComment }</p>\n ) }\n { isDetached && <p className=\"documentComments__detached\">{ labels.detached }</p> }\n\n <p className=\"documentComments__content\">{ comment.content }</p>\n\n { comment.replies?.length ? (\n <ul className=\"documentComments__replies\">\n { comment.replies.map((replyItem) => (\n <li key={ replyItem.id } className=\"documentComments__reply\">\n <CommentHeader authorName={ replyItem.author.name } createdAt={ replyItem.createdAt } formatDate={ formatDate } />\n <p className=\"documentComments__content\">{ replyItem.content }</p>\n </li>\n )) }\n </ul>\n ) : null }\n\n { replyingToId === comment.id ? (\n <div className=\"documentComments__replyForm\">\n <Textarea\n formContext={ formMethods }\n label={ { text: labels.replyTo(comment.author.name) } }\n field={ { id: `${ id }_reply_${ comment.id }`, name: 'reply' } }\n />\n <div className=\"documentComments__actions\">\n <SimpleButton\n id={ `${ id }_cancelReply_${ comment.id }` }\n label={ labels.cancel }\n cssClass=\"button secondary outline compact\"\n onClickHandler={ () => setReplyingToId(null) }\n />\n <SimpleButton\n id={ `${ id }_sendReply_${ comment.id }` }\n label={ labels.sendReply }\n cssClass=\"button primary compact\"\n disabled={ !reply.trim() || isSubmitting }\n onClickHandler={ () => handleReply(comment.id) }\n />\n </div>\n </div>\n ) : (\n <div className=\"documentComments__actions\">\n { comment.anchor && !isDetached && onSelectComment && (\n <SimpleButton\n id={ `${ id }_show_${ comment.id }` }\n label={ labels.showInDocument }\n cssClass=\"button secondary text-only compact\"\n ariaPressed={ isSelected }\n onClickHandler={ () => onSelectComment?.(comment.id) }\n />\n ) }\n { canReply && !comment.resolved && (\n <SimpleButton\n id={ `${ id }_reply_${ comment.id }` }\n label={ labels.reply }\n cssClass=\"button secondary outline compact\"\n onClickHandler={ () => openReply(comment.id) }\n />\n ) }\n { canResolve && (\n <SimpleButton\n id={ `${ id }_resolve_${ comment.id }` }\n label={ comment.resolved ? labels.reopen : labels.resolve }\n cssClass=\"button secondary outline compact\"\n onClickHandler={ () => onToggleResolved?.(comment.id, !comment.resolved) }\n />\n ) }\n </div>\n ) }\n </li>\n );\n };\n\n return (\n <section id={ id } className={ `documentComments ${ customCssClasses.wrapper || '' }`.trim() } aria-label={ labels.heading }>\n <HeaderBar text={ labels.heading } headingLevel={ headingLevel }>\n { headerActions }\n </HeaderBar>\n\n <ToggleGroup\n id={ `${ id }_filter` }\n legend={ labels.filter }\n value={ filter }\n onChange={ setFilter }\n options={ [\n { value: 'open', label: labels.open(openComments.length) },\n { value: 'resolved', label: labels.resolved(resolvedComments.length) }\n ] }\n />\n\n { showNewCommentForm && (\n <div className={ `documentComments__form ${ customCssClasses.form || '' }`.trim() }>\n { pendingAnchor && (\n <blockquote className=\"documentComments__quote\" aria-label={ labels.quoteLabel }>{ pendingAnchor.exact }</blockquote>\n ) }\n <Textarea\n formContext={ formMethods }\n label={ { text: pendingAnchor ? labels.newPinnedComment : labels.newGeneralComment } }\n field={ { id: `${ id }_newComment`, name: 'newComment' } }\n />\n <div className=\"documentComments__actions\">\n { pendingAnchor && (\n <SimpleButton\n id={ `${ id }_cancelPending` }\n label={ labels.cancel }\n cssClass=\"button secondary outline compact\"\n onClickHandler={ handleCancelPending }\n />\n ) }\n <SimpleButton\n id={ `${ id }_post` }\n label={ labels.post }\n cssClass=\"button primary compact\"\n disabled={ !newComment.trim() || isSubmitting }\n onClickHandler={ handlePost }\n />\n </div>\n </div>\n ) }\n\n { displayedComments.length ? (\n <ul className={ `documentComments__list ${ customCssClasses.list || '' }`.trim() }>\n { displayedComments.map(renderThread) }\n </ul>\n ) : (\n <p className=\"documentComments__empty\">{ filter === 'open' ? labels.noOpenComments : labels.noResolvedComments }</p>\n ) }\n </section>\n );\n};\n\nexport default DocumentComments;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,107 @@
1
+ .documentComments {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--documentCommentsGap, var(--documentGap, 10px));
5
+ min-width: 0;
6
+ font-size: var(--documentCommentsFontSize, 0.875rem);
7
+ }
8
+ .documentComments .headerBar {
9
+ margin-bottom: 0;
10
+ }
11
+
12
+ .documentComments__form,
13
+ .documentComments__replyForm {
14
+ display: flex;
15
+ flex-direction: column;
16
+ gap: var(--documentCommentsGap, var(--documentGap, 10px));
17
+ }
18
+
19
+ .documentComments__list,
20
+ .documentComments__replies {
21
+ display: flex;
22
+ flex-direction: column;
23
+ gap: var(--documentCommentsGap, var(--documentGap, 10px));
24
+ margin: 0;
25
+ padding: 0;
26
+ list-style: none;
27
+ }
28
+
29
+ .documentComments__card {
30
+ display: flex;
31
+ flex-direction: column;
32
+ gap: var(--documentCommentsGap, var(--documentGap, 10px));
33
+ padding: var(--documentCommentsCardPadding, 15px);
34
+ border: var(--documentCommentsCardBorder, var(--documentBorder));
35
+ border-radius: var(--documentCommentsCardBorderRadius, var(--documentBorderRadius, 5px));
36
+ background: var(--documentCommentsCardBg, var(--documentBg, #fff));
37
+ }
38
+
39
+ .documentComments__card--selected {
40
+ border-color: var(--documentCommentsSelectedBorderColor, var(--primaryButtonBg, currentColor));
41
+ box-shadow: 0 0 0 var(--documentCommentsSelectedBorderWidth, 2px) var(--documentCommentsSelectedBorderColor, var(--primaryButtonBg, currentColor));
42
+ }
43
+
44
+ .documentComments__card--resolved {
45
+ opacity: var(--documentCommentsResolvedOpacity, 0.75);
46
+ }
47
+
48
+ .documentComments__cardHeader {
49
+ display: flex;
50
+ flex-wrap: wrap;
51
+ justify-content: space-between;
52
+ gap: 5px;
53
+ }
54
+
55
+ .documentComments__author {
56
+ font-weight: 600;
57
+ }
58
+
59
+ .documentComments__date,
60
+ .documentComments__general,
61
+ .documentComments__empty {
62
+ color: var(--documentCommentsMutedColor, var(--documentMutedFgColor));
63
+ }
64
+
65
+ .documentComments__quote {
66
+ margin: 0;
67
+ padding: 5px 10px;
68
+ border-left: var(--documentCommentsQuoteBorder, 3px solid var(--statusWarnColor, #fc0));
69
+ background: var(--documentCommentsQuoteBg, var(--documentSubtleBg));
70
+ font-style: italic;
71
+ overflow-wrap: anywhere;
72
+ white-space: pre-line;
73
+ }
74
+
75
+ .documentComments__general,
76
+ .documentComments__content,
77
+ .documentComments__empty {
78
+ margin: 0;
79
+ }
80
+
81
+ .documentComments__content {
82
+ overflow-wrap: anywhere;
83
+ white-space: pre-line;
84
+ }
85
+
86
+ .documentComments__detached {
87
+ margin: 0;
88
+ color: var(--documentCommentsDetachedColor, var(--documentErrorColor, #f00));
89
+ }
90
+
91
+ .documentComments__replies {
92
+ padding-left: var(--documentCommentsReplyIndent, 15px);
93
+ border-left: var(--documentCommentsCardBorder, var(--documentBorder));
94
+ }
95
+
96
+ .documentComments__reply {
97
+ display: flex;
98
+ flex-direction: column;
99
+ gap: 5px;
100
+ }
101
+
102
+ .documentComments__actions {
103
+ display: flex;
104
+ flex-wrap: wrap;
105
+ justify-content: flex-end;
106
+ gap: 5px;
107
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=documentComments.interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentComments.interfaces.js","names":[],"sources":["../../../../src/widgets/documentComments/documentComments.interfaces.ts"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport { DocumentComment, TextQuoteAnchor } from '../shared/documents/annotations/annotations.interfaces';\n\nexport type DocumentCommentsFilter = 'open' | 'resolved';\n\nexport type NewDocumentComment = {\n content: string;\n // Absent for a general comment about the whole document.\n anchor?: TextQuoteAnchor;\n};\n\nexport type DocumentCommentsLabels = {\n heading: string;\n filter: string;\n /* eslint-disable-next-line no-unused-vars */\n open: (count: number) => string;\n /* eslint-disable-next-line no-unused-vars */\n resolved: (count: number) => string;\n newPinnedComment: string;\n newGeneralComment: string;\n post: string;\n cancel: string;\n reply: string;\n /* eslint-disable-next-line no-unused-vars */\n replyTo: (authorName: string) => string;\n sendReply: string;\n resolve: string;\n reopen: string;\n showInDocument: string;\n detached: string;\n generalComment: string;\n noOpenComments: string;\n noResolvedComments: string;\n quoteLabel: string;\n};\n\nexport type DocumentCommentsCssClasses = {\n wrapper?: string;\n form?: string;\n list?: string;\n card?: string;\n};\n\nexport type DocumentCommentsProps = {\n id: string;\n comments: DocumentComment[];\n headingLevel?: 2 | 3 | 4 | 5;\n selectedCommentId?: string;\n // Text the reader has just selected to comment on; shows a pinned new-comment form.\n pendingAnchor?: TextQuoteAnchor | null;\n // Pinned comments whose quoted text can no longer be found, e.g. from DocumentViewer's onAnchorStatusChange.\n detachedCommentIds?: string[];\n canComment?: boolean;\n canReply?: boolean;\n canResolve?: boolean;\n // Allow comments about the whole document as well as on selected text.\n allowGeneralComments?: boolean;\n initialFilter?: DocumentCommentsFilter;\n // Defaults to the library's dateToShortReadableDate; return null to show the value as given.\n /* eslint-disable-next-line no-unused-vars */\n formatDate?: (value: string) => string | null;\n // Return a promise to keep the form disabled until it settles; the draft is kept if it rejects.\n /* eslint-disable-next-line no-unused-vars */\n onAddComment?: (comment: NewDocumentComment) => void | Promise<void>;\n /* eslint-disable-next-line no-unused-vars */\n onReply?: (commentId: string, content: string) => void | Promise<void>;\n /* eslint-disable-next-line no-unused-vars */\n onToggleResolved?: (commentId: string, resolved: boolean) => void;\n /* eslint-disable-next-line no-unused-vars */\n onSelectComment?: (commentId: string) => void;\n onCancelPending?: () => void;\n // Rendered in the panel header, e.g. a close button.\n headerActions?: ReactNode;\n labels?: Partial<DocumentCommentsLabels>;\n customCssClasses?: DocumentCommentsCssClasses;\n};\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export { DocumentComments, defaultDocumentCommentsLabels } from './DocumentComments';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["DocumentComments","defaultDocumentCommentsLabels"],"sources":["../../../../src/widgets/documentComments/index.ts"],"sourcesContent":["export { DocumentComments, defaultDocumentCommentsLabels } from './DocumentComments';\n\nexport type {\n DocumentCommentsCssClasses,\n DocumentCommentsFilter,\n DocumentCommentsLabels,\n DocumentCommentsProps,\n NewDocumentComment\n} from './documentComments.interfaces';\n"],"mappings":"AAAA,SAASA,gBAAgB,EAAEC,6BAA6B,QAAQ,oBAAoB","ignoreList":[]}
@@ -0,0 +1,301 @@
1
+ 'use client';
2
+
3
+ import _extends from "@babel/runtime/helpers/extends";
4
+ import React, { Suspense, useEffect, useMemo, useState } from 'react';
5
+ import { HeaderBar, PageBanner, SimpleButton } from '../../components';
6
+ import { LoadingMessage } from '../../components/design/loadingMessage/LoadingMessage';
7
+ import { DocumentEditor } from '../documentEditor/DocumentEditor';
8
+ import { DocumentViewer } from '../documentViewer/DocumentViewer';
9
+ import { AnnotationLayer } from '../shared/documents/annotations/AnnotationLayer';
10
+ import { dateToShortReadableDate } from '../../helpers/dateHelpers';
11
+ import { resolveDocumentResourceWithFallback } from '../shared/documents/documentHelpers';
12
+ import { LazyDocumentDiff, LazyMarkdownRenderer } from '../shared/documents/engines/lazyEngines';
13
+ import { ToggleGroup } from '../shared/documents/ToggleGroup';
14
+ import { useDocumentContent } from '../shared/documents/useDocumentContent';
15
+ import './documentComparer.css';
16
+ export const defaultDocumentComparerLabels = {
17
+ originalHeading: 'Original',
18
+ revisedHeading: 'Revised',
19
+ viewSelector: 'Comparison view',
20
+ sideBySide: 'Side by side',
21
+ differences: 'Differences',
22
+ diffSelector: 'Difference format',
23
+ formatted: 'Formatted',
24
+ source: 'Markdown source',
25
+ edit: 'Edit',
26
+ save: 'Save changes',
27
+ cancel: 'Cancel',
28
+ version: 'Version',
29
+ lastModified: 'Last modified',
30
+ notRecorded: 'Not recorded',
31
+ loadingHeading: 'Loading',
32
+ loadingMessage: 'Loading document',
33
+ loadError: 'The revised document could not be loaded.',
34
+ noSourcePreview: 'No preview of the original document is available.',
35
+ added: 'Added',
36
+ removed: 'Removed',
37
+ noChanges: 'There are no differences between the documents.',
38
+ diffSummary: (added, removed) => `${added} added, ${removed} removed`,
39
+ pageImageAlt: (page, total, title) => `Page ${page} of ${total} of ${title}`
40
+ };
41
+
42
+ /*
43
+ DocumentComparer shows an original document beside a revised markdown version, or the
44
+ differences between the revised version and a baseline, and optionally lets the revised version
45
+ be edited. Review and lifecycle workflow belongs to the host application, which supplies it
46
+ through the action slots.
47
+ */
48
+ export const DocumentComparer = ({
49
+ id,
50
+ title,
51
+ headingLevel = 2,
52
+ originalDocument,
53
+ revisedDocument,
54
+ baselineMarkdown,
55
+ initialView = 'sideBySide',
56
+ initialDiffView = 'rendered',
57
+ revisedPosition = 'start',
58
+ enableEditing = false,
59
+ onChange,
60
+ onSave,
61
+ editorProps = {},
62
+ originalRenderers,
63
+ resolveResourceUrl,
64
+ trustedPdfOrigins,
65
+ formatDate = dateToShortReadableDate,
66
+ headerActions,
67
+ originalPanelActions,
68
+ revisedPanelActions,
69
+ footerActions,
70
+ annotations,
71
+ labels: customLabels,
72
+ customCssClasses = {}
73
+ }) => {
74
+ const labels = useMemo(() => ({
75
+ ...defaultDocumentComparerLabels,
76
+ ...customLabels
77
+ }), [customLabels]);
78
+ const revisedContent = useDocumentContent(revisedDocument, 'markdown');
79
+ const loadedMarkdown = revisedContent.loaded?.content;
80
+ const [savedMarkdown, setSavedMarkdown] = useState(undefined);
81
+ const [draftMarkdown, setDraftMarkdown] = useState(undefined);
82
+ const [isEditing, setIsEditing] = useState(false);
83
+ const [isSaving, setIsSaving] = useState(false);
84
+ const [view, setView] = useState(initialView);
85
+ const [diffView, setDiffView] = useState(initialDiffView);
86
+
87
+ // A newly loaded revised document replaces any local edits made to the previous one.
88
+ useEffect(() => {
89
+ setSavedMarkdown(loadedMarkdown);
90
+ setDraftMarkdown(loadedMarkdown);
91
+ setIsEditing(false);
92
+ }, [loadedMarkdown]);
93
+ const currentMarkdown = (isEditing ? draftMarkdown : savedMarkdown) ?? '';
94
+ const baseline = baselineMarkdown ?? loadedMarkdown ?? '';
95
+ const isDirty = draftMarkdown !== savedMarkdown;
96
+ const panelHeadingLevel = Math.min(headingLevel + 1, 6);
97
+ const resolveRevisedResource = resource => resolveDocumentResourceWithFallback(resource, revisedDocument.url, resolveResourceUrl);
98
+ const handleDraftChange = markdown => {
99
+ setDraftMarkdown(markdown);
100
+ onChange?.(markdown);
101
+ };
102
+ const handleCancel = () => {
103
+ setDraftMarkdown(savedMarkdown);
104
+ setIsEditing(false);
105
+ };
106
+ const handleSave = async () => {
107
+ const markdown = draftMarkdown ?? '';
108
+ setIsSaving(true);
109
+ try {
110
+ await onSave?.({
111
+ markdown,
112
+ baselineMarkdown: baseline
113
+ });
114
+ setSavedMarkdown(markdown);
115
+ setIsEditing(false);
116
+ } catch {
117
+ // The host's onSave reports the failure; staying in edit mode keeps the draft so it can be retried.
118
+ } finally {
119
+ setIsSaving(false);
120
+ }
121
+ };
122
+ const loadingIndicator = /*#__PURE__*/React.createElement(LoadingMessage, {
123
+ heading: labels.loadingHeading,
124
+ loadingMessage: labels.loadingMessage,
125
+ isInline: true
126
+ });
127
+ const renderMetadata = document => /*#__PURE__*/React.createElement("dl", {
128
+ className: "documentComparer__metadata"
129
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("dt", null, labels.version), /*#__PURE__*/React.createElement("dd", null, document.version || labels.notRecorded)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("dt", null, labels.lastModified), /*#__PURE__*/React.createElement("dd", null, document.lastModified ? formatDate(document.lastModified) ?? document.lastModified : labels.notRecorded)));
130
+ const renderPanel = (panel, document, heading, body, actions) => {
131
+ const cssClass = panel === 'original' ? customCssClasses.originalPanel : customCssClasses.revisedPanel;
132
+ return /*#__PURE__*/React.createElement("article", {
133
+ className: `documentComparer__panel documentComparer__panel--${panel} ${cssClass || ''}`.trim(),
134
+ "aria-label": heading
135
+ }, /*#__PURE__*/React.createElement("div", {
136
+ className: "documentComparer__panelHeader"
137
+ }, /*#__PURE__*/React.createElement(HeaderBar, {
138
+ text: heading,
139
+ headingLevel: panelHeadingLevel
140
+ }), /*#__PURE__*/React.createElement("p", {
141
+ className: "documentComparer__documentTitle"
142
+ }, document.title), renderMetadata(document)), /*#__PURE__*/React.createElement("div", {
143
+ className: "documentComparer__panelBody"
144
+ }, body), actions && /*#__PURE__*/React.createElement("div", {
145
+ className: "documentComparer__panelActions"
146
+ }, actions));
147
+ };
148
+ const renderOriginalBody = () => {
149
+ const {
150
+ pageImages = []
151
+ } = originalDocument;
152
+ if (pageImages.length) {
153
+ return /*#__PURE__*/React.createElement("div", {
154
+ className: "documentComparer__pages"
155
+ }, pageImages.map((pageUrl, pageIndex) => /*#__PURE__*/React.createElement("img", {
156
+ key: pageUrl,
157
+ src: pageUrl,
158
+ alt: labels.pageImageAlt(pageIndex + 1, pageImages.length, originalDocument.title),
159
+ loading: "lazy"
160
+ })));
161
+ }
162
+ if (!originalDocument.file && !originalDocument.url && originalDocument.text === undefined) {
163
+ return /*#__PURE__*/React.createElement("p", {
164
+ className: "documentComparer__message"
165
+ }, labels.noSourcePreview);
166
+ }
167
+ return /*#__PURE__*/React.createElement(DocumentViewer, {
168
+ id: `${id}_originalViewer`,
169
+ document: originalDocument,
170
+ showHeader: false,
171
+ showMetadata: false,
172
+ contentHeadingOffset: panelHeadingLevel,
173
+ renderers: originalRenderers,
174
+ resolveResourceUrl: resolveResourceUrl,
175
+ trustedPdfOrigins: trustedPdfOrigins,
176
+ customCssClasses: {
177
+ wrapper: 'documentComparer__viewer'
178
+ }
179
+ });
180
+ };
181
+ const renderRevisedBody = () => {
182
+ if (revisedContent.status === 'error') {
183
+ return /*#__PURE__*/React.createElement(PageBanner, {
184
+ id: `${id}_revisedError`,
185
+ type: "error",
186
+ icon: "warning",
187
+ displayMode: "inline",
188
+ animation: "none",
189
+ disableClose: true
190
+ }, /*#__PURE__*/React.createElement("span", {
191
+ role: "alert"
192
+ }, labels.loadError));
193
+ }
194
+ if (revisedContent.status !== 'ready') {
195
+ return loadingIndicator;
196
+ }
197
+ if (isEditing) {
198
+ return /*#__PURE__*/React.createElement(DocumentEditor, _extends({
199
+ id: `${id}_editor`,
200
+ label: `${labels.edit}: ${revisedDocument.title}`,
201
+ hideLabel: true,
202
+ markdown: currentMarkdown,
203
+ baselineMarkdown: baseline,
204
+ onChange: handleDraftChange,
205
+ resolveResourceUrl: resolveRevisedResource,
206
+ annotations: annotations
207
+ }, editorProps));
208
+ }
209
+ const renderer = /*#__PURE__*/React.createElement(Suspense, {
210
+ fallback: loadingIndicator
211
+ }, /*#__PURE__*/React.createElement(LazyMarkdownRenderer, {
212
+ markdown: currentMarkdown,
213
+ headingOffset: panelHeadingLevel,
214
+ resolveResourceUrl: resolveRevisedResource
215
+ }));
216
+ return annotations ? /*#__PURE__*/React.createElement(AnnotationLayer, _extends({}, annotations, {
217
+ id: `${id}_annotations`
218
+ }), renderer) : renderer;
219
+ };
220
+ const editingActions = enableEditing && revisedContent.status === 'ready' && (isEditing ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SimpleButton, {
221
+ id: `${id}_cancel`,
222
+ label: labels.cancel,
223
+ cssClass: "button secondary outline compact",
224
+ onClickHandler: handleCancel
225
+ }), /*#__PURE__*/React.createElement(SimpleButton, {
226
+ id: `${id}_save`,
227
+ label: labels.save,
228
+ cssClass: "button primary compact",
229
+ disabled: !isDirty || isSaving,
230
+ onClickHandler: handleSave
231
+ })) : /*#__PURE__*/React.createElement(SimpleButton, {
232
+ id: `${id}_edit`,
233
+ label: labels.edit,
234
+ cssClass: "button secondary compact",
235
+ onClickHandler: () => setIsEditing(true)
236
+ }));
237
+ const revisedActions = (editingActions || revisedPanelActions) && /*#__PURE__*/React.createElement(React.Fragment, null, revisedPanelActions, editingActions);
238
+ const panels = [/*#__PURE__*/React.createElement(React.Fragment, {
239
+ key: "revised"
240
+ }, renderPanel('revised', revisedDocument, labels.revisedHeading, renderRevisedBody(), revisedActions)), /*#__PURE__*/React.createElement(React.Fragment, {
241
+ key: "original"
242
+ }, renderPanel('original', originalDocument, labels.originalHeading, renderOriginalBody(), originalPanelActions))];
243
+ return /*#__PURE__*/React.createElement("section", {
244
+ id: id,
245
+ className: `documentComparer ${customCssClasses.wrapper || ''}`.trim(),
246
+ "aria-label": title
247
+ }, /*#__PURE__*/React.createElement("div", {
248
+ className: `documentComparer__header ${customCssClasses.header || ''}`.trim()
249
+ }, /*#__PURE__*/React.createElement(HeaderBar, {
250
+ text: title,
251
+ headingLevel: headingLevel
252
+ }, headerActions), /*#__PURE__*/React.createElement("div", {
253
+ className: "documentComparer__controls"
254
+ }, /*#__PURE__*/React.createElement(ToggleGroup, {
255
+ id: `${id}_view`,
256
+ legend: labels.viewSelector,
257
+ value: view,
258
+ onChange: setView,
259
+ options: [{
260
+ value: 'sideBySide',
261
+ label: labels.sideBySide
262
+ }, {
263
+ value: 'differences',
264
+ label: labels.differences
265
+ }]
266
+ }), view === 'differences' && /*#__PURE__*/React.createElement(ToggleGroup, {
267
+ id: `${id}_diffView`,
268
+ legend: labels.diffSelector,
269
+ value: diffView,
270
+ onChange: setDiffView,
271
+ options: [{
272
+ value: 'rendered',
273
+ label: labels.formatted
274
+ }, {
275
+ value: 'source',
276
+ label: labels.source
277
+ }]
278
+ }))), view === 'sideBySide' && /*#__PURE__*/React.createElement("div", {
279
+ className: `documentComparer__columns ${customCssClasses.columns || ''}`.trim()
280
+ }, revisedPosition === 'start' ? panels : [...panels].reverse()), view === 'differences' && /*#__PURE__*/React.createElement("div", {
281
+ className: `documentComparer__differences ${customCssClasses.differences || ''}`.trim()
282
+ }, revisedContent.status === 'ready' ? /*#__PURE__*/React.createElement(Suspense, {
283
+ fallback: loadingIndicator
284
+ }, /*#__PURE__*/React.createElement(LazyDocumentDiff, {
285
+ baseline: baseline,
286
+ revised: currentMarkdown,
287
+ view: diffView,
288
+ headingOffset: headingLevel,
289
+ resolveResourceUrl: resolveRevisedResource,
290
+ labels: {
291
+ added: labels.added,
292
+ removed: labels.removed,
293
+ noChanges: labels.noChanges,
294
+ summary: labels.diffSummary
295
+ }
296
+ })) : renderRevisedBody()), footerActions && /*#__PURE__*/React.createElement("div", {
297
+ className: `documentComparer__footer ${customCssClasses.footer || ''}`.trim()
298
+ }, footerActions));
299
+ };
300
+ export default DocumentComparer;
301
+ //# sourceMappingURL=DocumentComparer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentComparer.js","names":["_extends","React","Suspense","useEffect","useMemo","useState","HeaderBar","PageBanner","SimpleButton","LoadingMessage","DocumentEditor","DocumentViewer","AnnotationLayer","dateToShortReadableDate","resolveDocumentResourceWithFallback","LazyDocumentDiff","LazyMarkdownRenderer","ToggleGroup","useDocumentContent","defaultDocumentComparerLabels","originalHeading","revisedHeading","viewSelector","sideBySide","differences","diffSelector","formatted","source","edit","save","cancel","version","lastModified","notRecorded","loadingHeading","loadingMessage","loadError","noSourcePreview","added","removed","noChanges","diffSummary","pageImageAlt","page","total","title","DocumentComparer","id","headingLevel","originalDocument","revisedDocument","baselineMarkdown","initialView","initialDiffView","revisedPosition","enableEditing","onChange","onSave","editorProps","originalRenderers","resolveResourceUrl","trustedPdfOrigins","formatDate","headerActions","originalPanelActions","revisedPanelActions","footerActions","annotations","labels","customLabels","customCssClasses","revisedContent","loadedMarkdown","loaded","content","savedMarkdown","setSavedMarkdown","undefined","draftMarkdown","setDraftMarkdown","isEditing","setIsEditing","isSaving","setIsSaving","view","setView","diffView","setDiffView","currentMarkdown","baseline","isDirty","panelHeadingLevel","Math","min","resolveRevisedResource","resource","url","handleDraftChange","markdown","handleCancel","handleSave","loadingIndicator","createElement","heading","isInline","renderMetadata","document","className","renderPanel","panel","body","actions","cssClass","originalPanel","revisedPanel","trim","text","renderOriginalBody","pageImages","length","map","pageUrl","pageIndex","key","src","alt","loading","file","showHeader","showMetadata","contentHeadingOffset","renderers","wrapper","renderRevisedBody","status","type","icon","displayMode","animation","disableClose","role","label","hideLabel","renderer","fallback","headingOffset","editingActions","Fragment","onClickHandler","disabled","revisedActions","panels","header","legend","value","options","columns","reverse","revised","summary","footer"],"sources":["../../../../src/widgets/documentComparer/DocumentComparer.tsx"],"sourcesContent":["'use client';\n\nimport React, { FC, ReactNode, Suspense, useEffect, useMemo, useState } from 'react';\n\nimport { HeaderBar, PageBanner, SimpleButton } from '../../components';\nimport { LoadingMessage } from '../../components/design/loadingMessage/LoadingMessage';\nimport { DocumentEditor } from '../documentEditor/DocumentEditor';\nimport { DocumentViewer } from '../documentViewer/DocumentViewer';\nimport { AnnotationLayer } from '../shared/documents/annotations/AnnotationLayer';\nimport { dateToShortReadableDate } from '../../helpers/dateHelpers';\nimport { resolveDocumentResourceWithFallback } from '../shared/documents/documentHelpers';\nimport { LazyDocumentDiff, LazyMarkdownRenderer } from '../shared/documents/engines/lazyEngines';\nimport { ToggleGroup } from '../shared/documents/ToggleGroup';\nimport { useDocumentContent } from '../shared/documents/useDocumentContent';\nimport {\n ComparisonDocument,\n DocumentComparerLabels,\n DocumentComparerProps,\n DocumentComparerView,\n DocumentDiffView\n} from './documentComparer.interfaces';\n\nimport './documentComparer.scss';\n\n\nexport const defaultDocumentComparerLabels: DocumentComparerLabels = {\n originalHeading: 'Original',\n revisedHeading: 'Revised',\n viewSelector: 'Comparison view',\n sideBySide: 'Side by side',\n differences: 'Differences',\n diffSelector: 'Difference format',\n formatted: 'Formatted',\n source: 'Markdown source',\n edit: 'Edit',\n save: 'Save changes',\n cancel: 'Cancel',\n version: 'Version',\n lastModified: 'Last modified',\n notRecorded: 'Not recorded',\n loadingHeading: 'Loading',\n loadingMessage: 'Loading document',\n loadError: 'The revised document could not be loaded.',\n noSourcePreview: 'No preview of the original document is available.',\n added: 'Added',\n removed: 'Removed',\n noChanges: 'There are no differences between the documents.',\n diffSummary: (added, removed) => `${ added } added, ${ removed } removed`,\n pageImageAlt: (page, total, title) => `Page ${ page } of ${ total } of ${ title }`\n};\n\n/*\n DocumentComparer shows an original document beside a revised markdown version, or the\n differences between the revised version and a baseline, and optionally lets the revised version\n be edited. Review and lifecycle workflow belongs to the host application, which supplies it\n through the action slots.\n */\nexport const DocumentComparer: FC<DocumentComparerProps> = (\n {\n id,\n title,\n headingLevel = 2,\n originalDocument,\n revisedDocument,\n baselineMarkdown,\n initialView = 'sideBySide',\n initialDiffView = 'rendered',\n revisedPosition = 'start',\n enableEditing = false,\n onChange,\n onSave,\n editorProps = {},\n originalRenderers,\n resolveResourceUrl,\n trustedPdfOrigins,\n formatDate = dateToShortReadableDate,\n headerActions,\n originalPanelActions,\n revisedPanelActions,\n footerActions,\n annotations,\n labels: customLabels,\n customCssClasses = {}\n }\n) => {\n const labels = useMemo(() => ({ ...defaultDocumentComparerLabels, ...customLabels }), [customLabels]);\n const revisedContent = useDocumentContent(revisedDocument, 'markdown');\n const loadedMarkdown = revisedContent.loaded?.content;\n\n const [savedMarkdown, setSavedMarkdown] = useState<string | undefined>(undefined);\n const [draftMarkdown, setDraftMarkdown] = useState<string | undefined>(undefined);\n const [isEditing, setIsEditing] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [view, setView] = useState<DocumentComparerView>(initialView);\n const [diffView, setDiffView] = useState<DocumentDiffView>(initialDiffView);\n\n // A newly loaded revised document replaces any local edits made to the previous one.\n useEffect(() => {\n setSavedMarkdown(loadedMarkdown);\n setDraftMarkdown(loadedMarkdown);\n setIsEditing(false);\n }, [loadedMarkdown]);\n\n const currentMarkdown = (isEditing ? draftMarkdown : savedMarkdown) ?? '';\n const baseline = baselineMarkdown ?? loadedMarkdown ?? '';\n const isDirty = draftMarkdown !== savedMarkdown;\n const panelHeadingLevel = Math.min(headingLevel + 1, 6) as 2 | 3 | 4 | 5;\n\n const resolveRevisedResource = (resource: string) =>\n resolveDocumentResourceWithFallback(resource, revisedDocument.url, resolveResourceUrl);\n\n const handleDraftChange = (markdown: string) => {\n setDraftMarkdown(markdown);\n onChange?.(markdown);\n };\n\n const handleCancel = () => {\n setDraftMarkdown(savedMarkdown);\n setIsEditing(false);\n };\n\n const handleSave = async () => {\n const markdown = draftMarkdown ?? '';\n setIsSaving(true);\n try {\n await onSave?.({ markdown, baselineMarkdown: baseline });\n setSavedMarkdown(markdown);\n setIsEditing(false);\n } catch {\n // The host's onSave reports the failure; staying in edit mode keeps the draft so it can be retried.\n } finally {\n setIsSaving(false);\n }\n };\n\n const loadingIndicator = <LoadingMessage heading={ labels.loadingHeading } loadingMessage={ labels.loadingMessage } isInline />;\n\n const renderMetadata = (document: ComparisonDocument) => (\n <dl className=\"documentComparer__metadata\">\n <div>\n <dt>{ labels.version }</dt>\n <dd>{ document.version || labels.notRecorded }</dd>\n </div>\n <div>\n <dt>{ labels.lastModified }</dt>\n <dd>{ document.lastModified ? formatDate(document.lastModified) ?? document.lastModified : labels.notRecorded }</dd>\n </div>\n </dl>\n );\n\n const renderPanel = (\n panel: 'original' | 'revised',\n document: ComparisonDocument,\n heading: string,\n body: ReactNode,\n actions: ReactNode\n ) => {\n const cssClass = panel === 'original' ? customCssClasses.originalPanel : customCssClasses.revisedPanel;\n return (\n <article className={ `documentComparer__panel documentComparer__panel--${ panel } ${ cssClass || '' }`.trim() } aria-label={ heading }>\n <div className=\"documentComparer__panelHeader\">\n <HeaderBar text={ heading } headingLevel={ panelHeadingLevel } />\n <p className=\"documentComparer__documentTitle\">{ document.title }</p>\n { renderMetadata(document) }\n </div>\n <div className=\"documentComparer__panelBody\">{ body }</div>\n { actions && <div className=\"documentComparer__panelActions\">{ actions }</div> }\n </article>\n );\n };\n\n const renderOriginalBody = (): ReactNode => {\n const { pageImages = [] } = originalDocument;\n if (pageImages.length) {\n return (\n <div className=\"documentComparer__pages\">\n { pageImages.map((pageUrl, pageIndex) => (\n <img\n key={ pageUrl }\n src={ pageUrl }\n alt={ labels.pageImageAlt(pageIndex + 1, pageImages.length, originalDocument.title) }\n loading=\"lazy\"\n />\n )) }\n </div>\n );\n }\n if (!originalDocument.file && !originalDocument.url && originalDocument.text === undefined) {\n return <p className=\"documentComparer__message\">{ labels.noSourcePreview }</p>;\n }\n return (\n <DocumentViewer\n id={ `${ id }_originalViewer` }\n document={ originalDocument }\n showHeader={ false }\n showMetadata={ false }\n contentHeadingOffset={ panelHeadingLevel }\n renderers={ originalRenderers }\n resolveResourceUrl={ resolveResourceUrl }\n trustedPdfOrigins={ trustedPdfOrigins }\n customCssClasses={ { wrapper: 'documentComparer__viewer' } }\n />\n );\n };\n\n const renderRevisedBody = (): ReactNode => {\n if (revisedContent.status === 'error') {\n return (\n <PageBanner id={ `${ id }_revisedError` } type=\"error\" icon=\"warning\" displayMode=\"inline\" animation=\"none\" disableClose>\n <span role=\"alert\">{ labels.loadError }</span>\n </PageBanner>\n );\n }\n if (revisedContent.status !== 'ready') {\n return loadingIndicator;\n }\n if (isEditing) {\n return (\n <DocumentEditor\n id={ `${ id }_editor` }\n label={ `${ labels.edit }: ${ revisedDocument.title }` }\n hideLabel\n markdown={ currentMarkdown }\n baselineMarkdown={ baseline }\n onChange={ handleDraftChange }\n resolveResourceUrl={ resolveRevisedResource }\n annotations={ annotations }\n { ...editorProps }\n />\n );\n }\n const renderer = (\n <Suspense fallback={ loadingIndicator }>\n <LazyMarkdownRenderer\n markdown={ currentMarkdown }\n headingOffset={ panelHeadingLevel }\n resolveResourceUrl={ resolveRevisedResource }\n />\n </Suspense>\n );\n return annotations\n ? <AnnotationLayer { ...annotations } id={ `${ id }_annotations` }>{ renderer }</AnnotationLayer>\n : renderer;\n };\n\n const editingActions = enableEditing && revisedContent.status === 'ready' && (\n isEditing ? (\n <>\n <SimpleButton id={ `${ id }_cancel` } label={ labels.cancel } cssClass=\"button secondary outline compact\" onClickHandler={ handleCancel } />\n <SimpleButton\n id={ `${ id }_save` }\n label={ labels.save }\n cssClass=\"button primary compact\"\n disabled={ !isDirty || isSaving }\n onClickHandler={ handleSave }\n />\n </>\n ) : (\n <SimpleButton id={ `${ id }_edit` } label={ labels.edit } cssClass=\"button secondary compact\" onClickHandler={ () => setIsEditing(true) } />\n )\n );\n\n const revisedActions = (editingActions || revisedPanelActions) && (\n <>\n { revisedPanelActions }\n { editingActions }\n </>\n );\n\n const panels = [\n <React.Fragment key=\"revised\">\n { renderPanel('revised', revisedDocument, labels.revisedHeading, renderRevisedBody(), revisedActions) }\n </React.Fragment>,\n <React.Fragment key=\"original\">\n { renderPanel('original', originalDocument, labels.originalHeading, renderOriginalBody(), originalPanelActions) }\n </React.Fragment>\n ];\n\n return (\n <section id={ id } className={ `documentComparer ${ customCssClasses.wrapper || '' }`.trim() } aria-label={ title }>\n <div className={ `documentComparer__header ${ customCssClasses.header || '' }`.trim() }>\n <HeaderBar text={ title } headingLevel={ headingLevel }>\n { headerActions }\n </HeaderBar>\n <div className=\"documentComparer__controls\">\n <ToggleGroup\n id={ `${ id }_view` }\n legend={ labels.viewSelector }\n value={ view }\n onChange={ setView }\n options={ [{ value: 'sideBySide', label: labels.sideBySide }, { value: 'differences', label: labels.differences }] }\n />\n { view === 'differences' && (\n <ToggleGroup\n id={ `${ id }_diffView` }\n legend={ labels.diffSelector }\n value={ diffView }\n onChange={ setDiffView }\n options={ [{ value: 'rendered', label: labels.formatted }, { value: 'source', label: labels.source }] }\n />\n ) }\n </div>\n </div>\n\n { view === 'sideBySide' && (\n <div className={ `documentComparer__columns ${ customCssClasses.columns || '' }`.trim() }>\n { revisedPosition === 'start' ? panels : [...panels].reverse() }\n </div>\n ) }\n\n { view === 'differences' && (\n <div className={ `documentComparer__differences ${ customCssClasses.differences || '' }`.trim() }>\n { revisedContent.status === 'ready' ? (\n <Suspense fallback={ loadingIndicator }>\n <LazyDocumentDiff\n baseline={ baseline }\n revised={ currentMarkdown }\n view={ diffView }\n headingOffset={ headingLevel }\n resolveResourceUrl={ resolveRevisedResource }\n labels={ {\n added: labels.added,\n removed: labels.removed,\n noChanges: labels.noChanges,\n summary: labels.diffSummary\n } }\n />\n </Suspense>\n ) : renderRevisedBody() }\n </div>\n ) }\n\n { footerActions && <div className={ `documentComparer__footer ${ customCssClasses.footer || '' }`.trim() }>{ footerActions }</div> }\n </section>\n );\n};\n\nexport default DocumentComparer;\n"],"mappings":"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","ignoreList":[]}