@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
@@ -1 +1 @@
1
- {"version":3,"file":"objectHelpers.js","names":["React","splitCamelCase","objectsAreTheSame","obj1","obj2","JsonStringifySorted","obj","keys","JSON","stringify","key","value","Object","sort","isAnObject","Array","isArray","createCompareValueOverride","compareValue","isReactElement","val","isValidElement","isNonElementObject","isPlainObject","Date","RegExp","proto","getPrototypeOf","prototype","deepMergeObjects","baseObject","overrideObject","mergeDeep","objects","reduce","acc","forEach","prev","next","overrideMergeObjects","mergeOverride","pVal","oVal","makeInheritanceObject","base","valueOnly","baseObjectName","compare","propPath","excludePropSpread","createSpreader","length","join","requiresSpreader","indexOf","inheritanceObjectPieces","push","entries","updateNestedProperty","jsonObject","propertyPath","newValue","pathPieces","split","numPieces","currentBranch","piece","index","filterObject","filter","result","branchAsString","search","caseSensitive","branchTestString","toLowerCase","searchTerm","isKeyAndValueMatch","test","values","keyCheck","toString","valueCheck","testAsString","includes","subResult","getArrayOfObjectKeys","objectKeys","Set","getArrayOfReadableObjectKeys","objectKeysArray","map","objectKey","getBranchFromPath","path","deepRemoveProps","propsToRemove","item","newObj"],"sources":["../../../src/helpers/objectHelpers.ts"],"sourcesContent":["import React from 'react';\nimport { JSONObject, JSONValue } from '../interfaces/generic.interface';\nimport { splitCamelCase } from './stringHelpers';\n\nexport const objectsAreTheSame = (obj1: object, obj2: object): boolean => {\n const JsonStringifySorted = (obj: object): string => {\n const keys: { [key: string]: null } = {};\n JSON.stringify(obj, (key, value) => {\n keys[key] = null;\n return value;\n });\n return JSON.stringify(obj, Object.keys(keys).sort());\n };\n return JsonStringifySorted(obj1) === JsonStringifySorted(obj2);\n};\n\nexport const isAnObject = (value: unknown): boolean => value !== null && typeof value !== 'undefined' && !Array.isArray(value) && typeof value === 'object';\n\nexport const createCompareValueOverride = (key: string, compareValue: any): string => `${ key }:${ JSON.stringify(compareValue) }`;\n\nexport interface DeepMergeObjectsArgs {\n baseObject: Record<string, any>;\n overrideObject: Record<string, any>;\n}\n\nexport const isReactElement = (val: unknown): val is React.ReactElement =>\n !!val && React.isValidElement(val);\n\n\nexport const isNonElementObject = (value: unknown): value is Record<string, unknown> => (\n value !== null\n && typeof value === 'object'\n && !Array.isArray(value)\n && !React.isValidElement(value)\n);\n\nexport const isPlainObject = (val: unknown): val is Record<string, unknown> => {\n if (val === null || typeof val !== 'object') return false;\n if (isReactElement(val)) return false;\n if (Array.isArray(val)) return false;\n if (val instanceof Date || val instanceof RegExp) return false;\n const proto = Object.getPrototypeOf(val);\n return proto === Object.prototype || proto === null;\n};\n\nexport function deepMergeObjects<T extends object, U extends object>(\n { baseObject, overrideObject }: DeepMergeObjectsArgs\n): T & U {\n const mergeDeep = (...objects: object[]): any =>\n objects.reduce<Record<string, any>>((acc, obj) => {\n Object.keys(obj).forEach((key) => {\n const prev = acc[key];\n const next = (obj as any)[key];\n\n // If either side is a React element, treat as opaque: override wins.\n if (isReactElement(prev) || isReactElement(next)) {\n acc[key] = next;\n return;\n }\n\n // Arrays: concat\n if (Array.isArray(prev) && Array.isArray(next)) {\n acc[key] = [...prev, ...next];\n return;\n }\n\n // Plain objects: recurse\n if (isPlainObject(prev) && isPlainObject(next)) {\n acc[key] = mergeDeep(prev, next);\n return;\n }\n\n // Everything else (including ReactNode primitives, functions, Dates, etc.): override\n acc[key] = next;\n });\n return acc;\n }, {});\n\n return mergeDeep(baseObject ?? {}, overrideObject ?? {}) as T & U;\n}\n\nexport const overrideMergeObjects = ({ baseObject, overrideObject }: DeepMergeObjectsArgs): object => {\n const mergeOverride = (...objects: object[]): object => objects.reduce((prev: any, obj: any) => {\n Object.keys(obj).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = oVal;\n } else if (isAnObject(pVal) && isAnObject(oVal)) {\n prev[key] = mergeOverride(pVal, oVal);\n } else if (pVal && !oVal) {\n prev[key] = pVal;\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n\n return mergeOverride(baseObject, overrideObject);\n};\n\nexport interface MakeInheritanceObjectArgs {\n base: { [key: string] : any };\n valueOnly?: boolean;\n baseObjectName: string;\n compare: object;\n propPath?: string[];\n excludePropSpread?: string[];\n}\n\nexport const makeInheritanceObject = (\n {\n base,\n valueOnly = false,\n baseObjectName,\n compare,\n propPath = [],\n excludePropSpread = []\n }: MakeInheritanceObjectArgs\n): string => {\n const createSpreader = (): string => {\n if (propPath.length > 0) {\n return `...${ baseObjectName }.${ propPath.join('.') }`;\n }\n return `...${ baseObjectName }`;\n };\n\n const requiresSpreader = (): boolean => {\n if (valueOnly) return false;\n if (propPath.length > 0 && excludePropSpread.length > 0) {\n return excludePropSpread.indexOf(propPath[propPath.length - 1]) === -1;\n }\n return true;\n };\n\n const inheritanceObjectPieces: string[] = [];\n if (requiresSpreader()) {\n inheritanceObjectPieces.push(createSpreader());\n }\n\n Object.entries(compare).forEach(([key, compareValue]) => {\n if (!(key in base)) {\n inheritanceObjectPieces.push(createCompareValueOverride(key, compareValue));\n } else if (typeof base[key] !== 'undefined' && !objectsAreTheSame(base[key], compareValue)) {\n if (isAnObject(compareValue)) {\n inheritanceObjectPieces.push(\n `${ key }:${\n makeInheritanceObject({\n base: base[key],\n baseObjectName,\n compare: compareValue,\n propPath: [...propPath, key],\n excludePropSpread\n })\n }`\n );\n } else {\n inheritanceObjectPieces.push(createCompareValueOverride(key, compareValue));\n }\n }\n });\n\n return `{${ inheritanceObjectPieces.join(', ') }}`;\n};\n\nexport interface UpdateNestedPropertyArgs {\n jsonObject: Record<string, any>;\n propertyPath: string;\n newValue: any;\n}\n\nexport const updateNestedProperty = ({ jsonObject, propertyPath, newValue }: UpdateNestedPropertyArgs): object => {\n const pathPieces = propertyPath.split('.');\n const numPieces = pathPieces.length;\n\n if (numPieces === 1) {\n jsonObject[propertyPath] = newValue;\n return jsonObject;\n }\n\n let currentBranch = jsonObject;\n\n pathPieces.forEach((piece, index) => {\n if (index === numPieces - 1) {\n currentBranch[piece] = newValue;\n } else if (currentBranch[piece]) {\n currentBranch = currentBranch[piece];\n }\n });\n\n return jsonObject;\n};\n\nexport const filterObject = (jsonObject: JSONObject, filter: {\n search: string | number | { [key: string]: string | number | boolean };\n caseSensitive?: boolean;\n}): JSONObject | false => {\n const result: JSONObject = {};\n\n // TODO: Handle key/value filter\n const branchAsString = JSON.stringify(jsonObject);\n const {\n search,\n caseSensitive\n } = filter;\n\n const branchTestString = caseSensitive ? branchAsString : branchAsString.toLowerCase();\n const searchTerm = caseSensitive || typeof search !== 'string' ? search : search.toLowerCase();\n\n const isKeyAndValueMatch = (test: JSONValue | string) => {\n const key = Object.keys(search)[0];\n const value = Object.values(search)[0];\n\n const keyCheck = caseSensitive ? key : key.toString().toLowerCase();\n\n const valueCheck = caseSensitive ? value : value.toString().toLowerCase();\n\n const testAsString = typeof test === 'string' ? test : JSON.stringify(test);\n\n return testAsString.includes(keyCheck) && testAsString.includes(valueCheck);\n };\n\n // Do some fast checks and fail immediately if no match\n if (typeof search === 'object') { // Key value search\n if (!isKeyAndValueMatch(branchTestString)) {\n return false;\n }\n } else if (!branchTestString.includes(searchTerm.toString())) {\n return false;\n }\n\n // Loop over the branch recursively finding the matches and forming up the object.\n Object.entries(jsonObject).forEach(([key, value]) => {\n // Check if the key or value contains the search term\n\n const keyCheck = caseSensitive ? key : key.toLowerCase();\n const valueCheck = caseSensitive ? value : value?.toString().toLowerCase();\n\n if (typeof value === 'object' && value !== null) {\n // Recursively search if the value is an object or array\n const subResult = filterObject(value as JSONObject, filter);\n if (subResult && Object.keys(subResult).length > 0) {\n result[key] = subResult;\n }\n } else if (typeof search === 'object') {\n if (isKeyAndValueMatch({ key, value })) {\n result[key] = value;\n }\n } else if (keyCheck.includes(searchTerm.toString()) || valueCheck?.toString().includes(searchTerm.toString())) {\n result[key] = value;\n }\n });\n\n return Object.keys(result).length > 0 ? result : false;\n};\n\nexport const getArrayOfObjectKeys = (jsonObject: JSONObject) => {\n let objectKeys: string[] = [];\n\n // Loop over the branch recursively finding the matches and forming up the object.\n Object.entries(jsonObject).forEach(([key, value]) => {\n objectKeys.push(key);\n if (typeof value === 'object' && value !== null) {\n const subResult = getArrayOfObjectKeys(value as JSONObject);\n objectKeys = [...objectKeys, ...subResult];\n }\n });\n\n return [...new Set(objectKeys)];\n};\n\nexport const getArrayOfReadableObjectKeys = (jsonObject: JSONObject) => {\n const objectKeysArray = getArrayOfObjectKeys(jsonObject);\n return objectKeysArray.map((objectKey) => splitCamelCase(objectKey));\n};\n\nexport const getBranchFromPath = (obj: any, path: string[]): any => path.reduce((currentBranch, key) => currentBranch?.[key], obj);\n\nexport const deepRemoveProps = (obj: any, propsToRemove: string[]): any => {\n if (Array.isArray(obj)) {\n return obj.map((item) => deepRemoveProps(item, propsToRemove));\n } else if (isAnObject(obj) && obj !== null) {\n const newObj: any = {};\n Object.entries(obj).forEach(([key, value]) => {\n if (!propsToRemove.includes(key)) {\n newObj[key] = deepRemoveProps(value, propsToRemove);\n }\n });\n return newObj;\n }\n return obj;\n};\n\nexport default {\n objectsAreTheSame,\n isAnObject,\n createCompareValueOverride,\n isReactElement,\n isNonElementObject,\n isPlainObject,\n deepMergeObjects,\n overrideMergeObjects,\n makeInheritanceObject,\n updateNestedProperty,\n filterObject,\n getArrayOfObjectKeys,\n getArrayOfReadableObjectKeys,\n getBranchFromPath,\n deepRemoveProps\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"objectHelpers.js","names":["React","splitCamelCase","objectsAreTheSame","obj1","obj2","JsonStringifySorted","obj","keys","JSON","stringify","key","value","Object","sort","isAnObject","Array","isArray","createCompareValueOverride","compareValue","isReactElement","val","isValidElement","isNonElementObject","isPlainObject","Date","RegExp","proto","getPrototypeOf","prototype","deepMergeObjects","baseObject","overrideObject","mergeDeep","objects","reduce","acc","forEach","prev","next","overrideMergeObjects","mergeOverride","pVal","oVal","makeInheritanceObject","base","valueOnly","baseObjectName","compare","propPath","excludePropSpread","createSpreader","length","join","requiresSpreader","indexOf","inheritanceObjectPieces","push","entries","PROTOTYPE_PATH_SEGMENTS","Set","updateNestedProperty","jsonObject","propertyPath","newValue","pathPieces","split","some","piece","has","TypeError","currentBranch","slice","descriptor","getOwnPropertyDescriptor","nextBranch","defineProperty","writable","enumerable","configurable","filterObject","filter","result","branchAsString","search","caseSensitive","branchTestString","toLowerCase","searchTerm","isKeyAndValueMatch","test","values","keyCheck","toString","valueCheck","testAsString","includes","subResult","getArrayOfObjectKeys","objectKeys","getArrayOfReadableObjectKeys","objectKeysArray","map","objectKey","getBranchFromPath","path","deepRemoveProps","propsToRemove","item","newObj"],"sources":["../../../src/helpers/objectHelpers.ts"],"sourcesContent":["import React from 'react';\nimport { JSONObject, JSONValue } from '../interfaces/generic.interface';\nimport { splitCamelCase } from './stringHelpers';\n\nexport const objectsAreTheSame = (obj1: object, obj2: object): boolean => {\n const JsonStringifySorted = (obj: object): string => {\n const keys: { [key: string]: null } = {};\n JSON.stringify(obj, (key, value) => {\n keys[key] = null;\n return value;\n });\n return JSON.stringify(obj, Object.keys(keys).sort());\n };\n return JsonStringifySorted(obj1) === JsonStringifySorted(obj2);\n};\n\nexport const isAnObject = (value: unknown): boolean => value !== null && typeof value !== 'undefined' && !Array.isArray(value) && typeof value === 'object';\n\nexport const createCompareValueOverride = (key: string, compareValue: any): string => `${ key }:${ JSON.stringify(compareValue) }`;\n\nexport interface DeepMergeObjectsArgs {\n baseObject: Record<string, any>;\n overrideObject: Record<string, any>;\n}\n\nexport const isReactElement = (val: unknown): val is React.ReactElement =>\n !!val && React.isValidElement(val);\n\n\nexport const isNonElementObject = (value: unknown): value is Record<string, unknown> => (\n value !== null\n && typeof value === 'object'\n && !Array.isArray(value)\n && !React.isValidElement(value)\n);\n\nexport const isPlainObject = (val: unknown): val is Record<string, unknown> => {\n if (val === null || typeof val !== 'object') return false;\n if (isReactElement(val)) return false;\n if (Array.isArray(val)) return false;\n if (val instanceof Date || val instanceof RegExp) return false;\n const proto = Object.getPrototypeOf(val);\n return proto === Object.prototype || proto === null;\n};\n\nexport function deepMergeObjects<T extends object, U extends object>(\n { baseObject, overrideObject }: DeepMergeObjectsArgs\n): T & U {\n const mergeDeep = (...objects: object[]): any =>\n objects.reduce<Record<string, any>>((acc, obj) => {\n Object.keys(obj).forEach((key) => {\n const prev = acc[key];\n const next = (obj as any)[key];\n\n // If either side is a React element, treat as opaque: override wins.\n if (isReactElement(prev) || isReactElement(next)) {\n acc[key] = next;\n return;\n }\n\n // Arrays: concat\n if (Array.isArray(prev) && Array.isArray(next)) {\n acc[key] = [...prev, ...next];\n return;\n }\n\n // Plain objects: recurse\n if (isPlainObject(prev) && isPlainObject(next)) {\n acc[key] = mergeDeep(prev, next);\n return;\n }\n\n // Everything else (including ReactNode primitives, functions, Dates, etc.): override\n acc[key] = next;\n });\n return acc;\n }, {});\n\n return mergeDeep(baseObject ?? {}, overrideObject ?? {}) as T & U;\n}\n\nexport const overrideMergeObjects = ({ baseObject, overrideObject }: DeepMergeObjectsArgs): object => {\n const mergeOverride = (...objects: object[]): object => objects.reduce((prev: any, obj: any) => {\n Object.keys(obj).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = oVal;\n } else if (isAnObject(pVal) && isAnObject(oVal)) {\n prev[key] = mergeOverride(pVal, oVal);\n } else if (pVal && !oVal) {\n prev[key] = pVal;\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n\n return mergeOverride(baseObject, overrideObject);\n};\n\nexport interface MakeInheritanceObjectArgs {\n base: { [key: string] : any };\n valueOnly?: boolean;\n baseObjectName: string;\n compare: object;\n propPath?: string[];\n excludePropSpread?: string[];\n}\n\nexport const makeInheritanceObject = (\n {\n base,\n valueOnly = false,\n baseObjectName,\n compare,\n propPath = [],\n excludePropSpread = []\n }: MakeInheritanceObjectArgs\n): string => {\n const createSpreader = (): string => {\n if (propPath.length > 0) {\n return `...${ baseObjectName }.${ propPath.join('.') }`;\n }\n return `...${ baseObjectName }`;\n };\n\n const requiresSpreader = (): boolean => {\n if (valueOnly) return false;\n if (propPath.length > 0 && excludePropSpread.length > 0) {\n return excludePropSpread.indexOf(propPath[propPath.length - 1]) === -1;\n }\n return true;\n };\n\n const inheritanceObjectPieces: string[] = [];\n if (requiresSpreader()) {\n inheritanceObjectPieces.push(createSpreader());\n }\n\n Object.entries(compare).forEach(([key, compareValue]) => {\n if (!(key in base)) {\n inheritanceObjectPieces.push(createCompareValueOverride(key, compareValue));\n } else if (typeof base[key] !== 'undefined' && !objectsAreTheSame(base[key], compareValue)) {\n if (isAnObject(compareValue)) {\n inheritanceObjectPieces.push(\n `${ key }:${\n makeInheritanceObject({\n base: base[key],\n baseObjectName,\n compare: compareValue,\n propPath: [...propPath, key],\n excludePropSpread\n })\n }`\n );\n } else {\n inheritanceObjectPieces.push(createCompareValueOverride(key, compareValue));\n }\n }\n });\n\n return `{${ inheritanceObjectPieces.join(', ') }}`;\n};\n\nexport interface UpdateNestedPropertyArgs {\n jsonObject: Record<string, any>;\n propertyPath: string;\n newValue: any;\n}\n\n// Path segments that would reach an object's prototype rather than its own data.\nconst PROTOTYPE_PATH_SEGMENTS = new Set(['__proto__', 'prototype', 'constructor']);\n\n/*\n Sets a value at a dot-separated path, creating any missing intermediate objects. Paths often come\n from form field names or JSON keys, so segments that would reach a prototype are rejected:\n otherwise \"__proto__.isAdmin\" would set isAdmin on every object in the application.\n */\nexport const updateNestedProperty = ({ jsonObject, propertyPath, newValue }: UpdateNestedPropertyArgs): object => {\n const pathPieces = propertyPath.split('.');\n if (pathPieces.some((piece) => PROTOTYPE_PATH_SEGMENTS.has(piece))) {\n throw new TypeError(`Refusing to update a prototype through the path \"${ propertyPath }\".`);\n }\n\n let currentBranch = jsonObject;\n pathPieces.slice(0, -1).forEach((piece) => {\n const descriptor = Object.getOwnPropertyDescriptor(currentBranch, piece);\n let nextBranch = descriptor?.value;\n if (!descriptor || typeof nextBranch !== 'object' || nextBranch === null) {\n nextBranch = {};\n Object.defineProperty(currentBranch, piece, {\n value: nextBranch,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n currentBranch = nextBranch;\n });\n currentBranch[pathPieces[pathPieces.length - 1]] = newValue;\n\n return jsonObject;\n};\n\nexport const filterObject = (jsonObject: JSONObject, filter: {\n search: string | number | { [key: string]: string | number | boolean };\n caseSensitive?: boolean;\n}): JSONObject | false => {\n const result: JSONObject = {};\n\n // TODO: Handle key/value filter\n const branchAsString = JSON.stringify(jsonObject);\n const {\n search,\n caseSensitive\n } = filter;\n\n const branchTestString = caseSensitive ? branchAsString : branchAsString.toLowerCase();\n const searchTerm = caseSensitive || typeof search !== 'string' ? search : search.toLowerCase();\n\n const isKeyAndValueMatch = (test: JSONValue | string) => {\n const key = Object.keys(search)[0];\n const value = Object.values(search)[0];\n\n const keyCheck = caseSensitive ? key : key.toString().toLowerCase();\n\n const valueCheck = caseSensitive ? value : value.toString().toLowerCase();\n\n const testAsString = typeof test === 'string' ? test : JSON.stringify(test);\n\n return testAsString.includes(keyCheck) && testAsString.includes(valueCheck);\n };\n\n // Do some fast checks and fail immediately if no match\n if (typeof search === 'object') { // Key value search\n if (!isKeyAndValueMatch(branchTestString)) {\n return false;\n }\n } else if (!branchTestString.includes(searchTerm.toString())) {\n return false;\n }\n\n // Loop over the branch recursively finding the matches and forming up the object.\n Object.entries(jsonObject).forEach(([key, value]) => {\n // Check if the key or value contains the search term\n\n const keyCheck = caseSensitive ? key : key.toLowerCase();\n const valueCheck = caseSensitive ? value : value?.toString().toLowerCase();\n\n if (typeof value === 'object' && value !== null) {\n // Recursively search if the value is an object or array\n const subResult = filterObject(value as JSONObject, filter);\n if (subResult && Object.keys(subResult).length > 0) {\n result[key] = subResult;\n }\n } else if (typeof search === 'object') {\n if (isKeyAndValueMatch({ key, value })) {\n result[key] = value;\n }\n } else if (keyCheck.includes(searchTerm.toString()) || valueCheck?.toString().includes(searchTerm.toString())) {\n result[key] = value;\n }\n });\n\n return Object.keys(result).length > 0 ? result : false;\n};\n\nexport const getArrayOfObjectKeys = (jsonObject: JSONObject) => {\n let objectKeys: string[] = [];\n\n // Loop over the branch recursively finding the matches and forming up the object.\n Object.entries(jsonObject).forEach(([key, value]) => {\n objectKeys.push(key);\n if (typeof value === 'object' && value !== null) {\n const subResult = getArrayOfObjectKeys(value as JSONObject);\n objectKeys = [...objectKeys, ...subResult];\n }\n });\n\n return [...new Set(objectKeys)];\n};\n\nexport const getArrayOfReadableObjectKeys = (jsonObject: JSONObject) => {\n const objectKeysArray = getArrayOfObjectKeys(jsonObject);\n return objectKeysArray.map((objectKey) => splitCamelCase(objectKey));\n};\n\nexport const getBranchFromPath = (obj: any, path: string[]): any => path.reduce((currentBranch, key) => currentBranch?.[key], obj);\n\nexport const deepRemoveProps = (obj: any, propsToRemove: string[]): any => {\n if (Array.isArray(obj)) {\n return obj.map((item) => deepRemoveProps(item, propsToRemove));\n } else if (isAnObject(obj) && obj !== null) {\n const newObj: any = {};\n Object.entries(obj).forEach(([key, value]) => {\n if (!propsToRemove.includes(key)) {\n newObj[key] = deepRemoveProps(value, propsToRemove);\n }\n });\n return newObj;\n }\n return obj;\n};\n\nexport default {\n objectsAreTheSame,\n isAnObject,\n createCompareValueOverride,\n isReactElement,\n isNonElementObject,\n isPlainObject,\n deepMergeObjects,\n overrideMergeObjects,\n makeInheritanceObject,\n updateNestedProperty,\n filterObject,\n getArrayOfObjectKeys,\n getArrayOfReadableObjectKeys,\n getBranchFromPath,\n deepRemoveProps\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,11 +1,67 @@
1
- import parse from 'html-react-parser';
1
+ import React from 'react';
2
+ import parse, { domToReact, Element } from 'html-react-parser';
3
+ import { getSafeLinkHref } from './urlHelpers';
4
+
5
+ /*
6
+ Rich text is often stored content (a CMS or database field), so it is filtered against an
7
+ allowlist while it is parsed. Filtering happens in the parser's own tree, which works identically in
8
+ the browser and during server rendering (DOM-based sanitisers such as DOMPurify do nothing on the
9
+ server, where there is no DOM).
10
+ */
11
+ const ALLOWED_TAGS = new Set(['a', 'abbr', 'b', 'blockquote', 'br', 'caption', 'cite', 'code', 'dd', 'del', 'div', 'dl', 'dt', 'em', 'figcaption', 'figure', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'ins', 'kbd', 'li', 'mark', 'ol', 'p', 'pre', 'q', 's', 'small', 'span', 'strong', 'sub', 'sup', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'time', 'tr', 'u', 'ul']);
12
+
13
+ // Removed together with their content; any other unknown element is unwrapped and its text kept.
14
+ const REMOVED_TAGS = new Set(['applet', 'base', 'button', 'embed', 'form', 'frame', 'frameset', 'head', 'iframe', 'input', 'link', 'math', 'meta', 'noscript', 'object', 'option', 'script', 'select', 'style', 'svg', 'template', 'textarea', 'title']);
15
+
16
+ // `style` (CSS injection) and `id` (DOM clobbering of page globals) are deliberately absent.
17
+ const ALLOWED_ATTRIBUTES = {
18
+ '*': ['class', 'title', 'lang', 'dir'],
19
+ a: ['href', 'target', 'rel'],
20
+ img: ['src', 'alt', 'width', 'height'],
21
+ ol: ['start', 'type'],
22
+ td: ['colspan', 'rowspan'],
23
+ th: ['colspan', 'rowspan', 'scope'],
24
+ time: ['datetime']
25
+ };
26
+ const URL_ATTRIBUTES = new Set(['href', 'src']);
27
+ const sanitiseAttributes = element => {
28
+ const allowed = new Set([...ALLOWED_ATTRIBUTES['*'], ...(ALLOWED_ATTRIBUTES[element.name] ?? [])]);
29
+ Object.keys(element.attribs).forEach(name => {
30
+ const attribute = name.toLowerCase();
31
+ const isSafeUrl = !URL_ATTRIBUTES.has(attribute) || getSafeLinkHref(element.attribs[name]) !== undefined;
32
+ if (!allowed.has(attribute) || !isSafeUrl) {
33
+ delete element.attribs[name];
34
+ }
35
+ });
36
+ if (element.name === 'a' && element.attribs.target !== undefined) {
37
+ if (element.attribs.target === '_blank') {
38
+ // A page opened in a new tab must not be able to navigate this one.
39
+ element.attribs.rel = 'noopener noreferrer';
40
+ } else if (element.attribs.target !== '_self') {
41
+ delete element.attribs.target;
42
+ }
43
+ }
44
+ };
45
+ const richTextOptions = {
46
+ replace: domNode => {
47
+ if (!(domNode instanceof Element)) {
48
+ return undefined;
49
+ }
50
+ const tagName = domNode.name.toLowerCase();
51
+ if (REMOVED_TAGS.has(tagName)) {
52
+ return /*#__PURE__*/React.createElement(React.Fragment);
53
+ }
54
+ if (!ALLOWED_TAGS.has(tagName)) {
55
+ return /*#__PURE__*/React.createElement(React.Fragment, null, domToReact(domNode.children, richTextOptions));
56
+ }
57
+ sanitiseAttributes(domNode);
58
+ return undefined;
59
+ }
60
+ };
2
61
  export const richTextParser = (richText, supportEscapedCharacters) => {
3
62
  // Adjusts text to replace line breaks with <br/> tags
4
63
  const adjustedText = richText.split('\r\n').join('<br/>');
5
- if (supportEscapedCharacters) {
6
- return parse(adjustedText);
7
- }
8
- return parse(richText);
64
+ return parse(supportEscapedCharacters ? adjustedText : richText, richTextOptions);
9
65
  };
10
66
 
11
67
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"stringHelpers.js","names":["parse","richTextParser","richText","supportEscapedCharacters","adjustedText","split","join","capitalize","pString","substring","toUpperCase","toLowerCase","capitalizeFirstLetter","lowerCaseFirstLetter","getGraphemeSegments","Intl","segmenter","Segmenter","undefined","granularity","Array","from","segment","getCharacterCount","length","clampToGraphemeMax","maxAllowed","graphemeSegments","slice","useAnInsteadOfA","word","lettersRequiringAn","firstLetter","includes","splitCamelCase","replace","pluralize","endsWith","pluralizeIfNeeded","count","getInitialsOrAcronym","map","piece"],"sources":["../../../src/helpers/stringHelpers.ts"],"sourcesContent":["import React from 'react';\nimport parse from 'html-react-parser';\n\nexport const richTextParser = (richText: string, supportEscapedCharacters: boolean): string | React.JSX.Element | React.JSX.Element[] => {\n // Adjusts text to replace line breaks with <br/> tags\n const adjustedText = richText.split('\\r\\n').join('<br/>');\n if (supportEscapedCharacters) {\n return parse(adjustedText);\n }\n return parse(richText);\n};\n\n/**\n * Takes a string and returns it with the first character capitalized and the remaining characters as lowercase.\n *\n * @param {string} pString - A string of text.\n * @returns {string} The capitalized string or the unchanged pString if anything other than a string is sent to it.\n */\nexport const capitalize = (pString: string): string => `${ pString.substring(0, 1).toUpperCase() }${ pString.substring(1).toLowerCase() }`;\n\n/**\n * Capitalizes the first letter of the given string.\n *\n * @param {string} pString - A string of text.\n * @returns {string} The string with the first letter capitalized, or the unchanged pString if it's not a string.\n */\nexport const capitalizeFirstLetter = (pString: string): string => `${ pString.substring(0, 1).toUpperCase() }${ pString.substring(1) }`;\n\n/**\n * Converts the first letter of the given string to lowercase.\n *\n * @param {string} pString - A string of text.\n * @returns {string} The string with the first letter converted to lowercase, or the unchanged pString if it's not a string.\n */\nexport const lowerCaseFirstLetter = (pString: string): string => `${ pString.substring(0, 1).toLowerCase() }${ pString.substring(1) }`;\n\n/**\n * Splits a string into grapheme clusters so text metrics and clamping can share\n * the same segmentation logic without forcing callers to pass pre-segmented data.\n *\n * @param {string} pString - The string to segment.\n * @returns {string[]} The grapheme units in order, falling back to code points when Intl.Segmenter is unavailable.\n */\nconst getGraphemeSegments = (pString: string): string[] => {\n if (typeof Intl !== 'undefined' && 'Segmenter' in Intl) {\n const segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });\n\n return Array.from(segmenter.segment(pString), ({ segment }) => segment);\n }\n\n return Array.from(pString);\n};\n\n/**\n * Counts user-perceived characters (grapheme clusters) so emojis and composed\n * characters such as accented letters count as one.\n *\n * @param {string} pString - A string of text.\n * @returns {number} The number of grapheme clusters, falling back to code points where Intl.Segmenter is unavailable.\n */\nexport const getCharacterCount = (pString: string): number => getGraphemeSegments(pString).length;\n\n/**\n * Truncates a string to a maximum number of grapheme clusters without splitting\n * an emoji or composed character in half.\n *\n * @param {string} pString - A string of text.\n * @param {number} maxAllowed - The maximum number of user-perceived characters to keep.\n * @returns {string} The truncated string, or the unchanged pString if it is already within the limit.\n */\nexport const clampToGraphemeMax = (pString: string, maxAllowed: number): string => {\n const graphemeSegments = getGraphemeSegments(pString);\n\n if (graphemeSegments.length <= maxAllowed) {\n return pString;\n }\n\n return graphemeSegments.slice(0, maxAllowed).join('');\n};\n\n/**\n * Determines if \"an\" should be used instead of \"a\" before the given word.\n *\n * @param {string} word - The word to check.\n * @returns {boolean} True if \"an\" should be used, false otherwise.\n */\nexport const useAnInsteadOfA = (word: string): boolean => {\n const lettersRequiringAn = ['a', 'e', 'i', 'o', 'u', 'h'];\n const firstLetter = word.substring(0, 1).toLowerCase();\n return lettersRequiringAn.includes(firstLetter);\n};\n\nexport const splitCamelCase = (pString: string): string => pString\n// Single regex to handle all cases: lowercase followed by uppercase/number, or number followed by letter\n .replace(/([a-z])([A-Z0-9])|([0-9])([a-zA-Z])/g, '$1$3 $2$4')\n// Insert a space between capital letters and lowercase letters where missing\n .replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')\n// Convert the entire string to lowercase for consistency\n .toLowerCase();\n\nexport const pluralize = (pString: string): string => {\n if (pString.endsWith('y')) {\n // If the word ends with 'y', replace 'y' with 'ies'\n return `${ pString.slice(0, -1) }ies`;\n } if (pString.endsWith('s') || pString.endsWith('x') || pString.endsWith('z') || pString.endsWith('ch') || pString.endsWith('sh')) {\n // If the word ends with s, x, z, ch, or sh, add 'es'\n return `${ pString }es`;\n }\n // For other cases, just add 's'\n return `${ pString }s`;\n};\n\nexport const pluralizeIfNeeded = (pString: string, count: number): string => {\n if (count && count > 1) {\n return pluralize(pString);\n }\n return pString;\n};\n\nexport const getInitialsOrAcronym = (pString: string): string => {\n return pString.split(' ').map((piece) => capitalize(piece.substring(0, 1))).join('');\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"stringHelpers.js","names":["React","parse","domToReact","Element","getSafeLinkHref","ALLOWED_TAGS","Set","REMOVED_TAGS","ALLOWED_ATTRIBUTES","a","img","ol","td","th","time","URL_ATTRIBUTES","sanitiseAttributes","element","allowed","name","Object","keys","attribs","forEach","attribute","toLowerCase","isSafeUrl","has","undefined","target","rel","richTextOptions","replace","domNode","tagName","createElement","Fragment","children","richTextParser","richText","supportEscapedCharacters","adjustedText","split","join","capitalize","pString","substring","toUpperCase","capitalizeFirstLetter","lowerCaseFirstLetter","getGraphemeSegments","Intl","segmenter","Segmenter","granularity","Array","from","segment","getCharacterCount","length","clampToGraphemeMax","maxAllowed","graphemeSegments","slice","useAnInsteadOfA","word","lettersRequiringAn","firstLetter","includes","splitCamelCase","pluralize","endsWith","pluralizeIfNeeded","count","getInitialsOrAcronym","map","piece"],"sources":["../../../src/helpers/stringHelpers.ts"],"sourcesContent":["import React from 'react';\nimport parse, { DOMNode, domToReact, Element, HTMLReactParserOptions } from 'html-react-parser';\n\nimport { getSafeLinkHref } from './urlHelpers';\n\n/*\n Rich text is often stored content (a CMS or database field), so it is filtered against an\n allowlist while it is parsed. Filtering happens in the parser's own tree, which works identically in\n the browser and during server rendering (DOM-based sanitisers such as DOMPurify do nothing on the\n server, where there is no DOM).\n */\nconst ALLOWED_TAGS = new Set([\n 'a', 'abbr', 'b', 'blockquote', 'br', 'caption', 'cite', 'code', 'dd', 'del', 'div', 'dl', 'dt', 'em',\n 'figcaption', 'figure', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'ins', 'kbd', 'li', 'mark',\n 'ol', 'p', 'pre', 'q', 's', 'small', 'span', 'strong', 'sub', 'sup', 'table', 'tbody', 'td', 'tfoot',\n 'th', 'thead', 'time', 'tr', 'u', 'ul'\n]);\n\n// Removed together with their content; any other unknown element is unwrapped and its text kept.\nconst REMOVED_TAGS = new Set([\n 'applet', 'base', 'button', 'embed', 'form', 'frame', 'frameset', 'head', 'iframe', 'input', 'link',\n 'math', 'meta', 'noscript', 'object', 'option', 'script', 'select', 'style', 'svg', 'template',\n 'textarea', 'title'\n]);\n\n// `style` (CSS injection) and `id` (DOM clobbering of page globals) are deliberately absent.\nconst ALLOWED_ATTRIBUTES: Record<string, string[]> = {\n '*': ['class', 'title', 'lang', 'dir'],\n a: ['href', 'target', 'rel'],\n img: ['src', 'alt', 'width', 'height'],\n ol: ['start', 'type'],\n td: ['colspan', 'rowspan'],\n th: ['colspan', 'rowspan', 'scope'],\n time: ['datetime']\n};\n\nconst URL_ATTRIBUTES = new Set(['href', 'src']);\n\nconst sanitiseAttributes = (element: Element): void => {\n const allowed = new Set([...ALLOWED_ATTRIBUTES['*'], ...(ALLOWED_ATTRIBUTES[element.name] ?? [])]);\n Object.keys(element.attribs).forEach((name) => {\n const attribute = name.toLowerCase();\n const isSafeUrl = !URL_ATTRIBUTES.has(attribute) || getSafeLinkHref(element.attribs[name]) !== undefined;\n if (!allowed.has(attribute) || !isSafeUrl) {\n delete element.attribs[name];\n }\n });\n if (element.name === 'a' && element.attribs.target !== undefined) {\n if (element.attribs.target === '_blank') {\n // A page opened in a new tab must not be able to navigate this one.\n element.attribs.rel = 'noopener noreferrer';\n } else if (element.attribs.target !== '_self') {\n delete element.attribs.target;\n }\n }\n};\n\nconst richTextOptions: HTMLReactParserOptions = {\n replace: (domNode: DOMNode) => {\n if (!(domNode instanceof Element)) {\n return undefined;\n }\n const tagName = domNode.name.toLowerCase();\n if (REMOVED_TAGS.has(tagName)) {\n return React.createElement(React.Fragment);\n }\n if (!ALLOWED_TAGS.has(tagName)) {\n return React.createElement(React.Fragment, null, domToReact(domNode.children as DOMNode[], richTextOptions));\n }\n sanitiseAttributes(domNode);\n return undefined;\n }\n};\n\nexport const richTextParser = (richText: string, supportEscapedCharacters: boolean): string | React.JSX.Element | React.JSX.Element[] => {\n // Adjusts text to replace line breaks with <br/> tags\n const adjustedText = richText.split('\\r\\n').join('<br/>');\n return parse(supportEscapedCharacters ? adjustedText : richText, richTextOptions);\n};\n\n/**\n * Takes a string and returns it with the first character capitalized and the remaining characters as lowercase.\n *\n * @param {string} pString - A string of text.\n * @returns {string} The capitalized string or the unchanged pString if anything other than a string is sent to it.\n */\nexport const capitalize = (pString: string): string => `${ pString.substring(0, 1).toUpperCase() }${ pString.substring(1).toLowerCase() }`;\n\n/**\n * Capitalizes the first letter of the given string.\n *\n * @param {string} pString - A string of text.\n * @returns {string} The string with the first letter capitalized, or the unchanged pString if it's not a string.\n */\nexport const capitalizeFirstLetter = (pString: string): string => `${ pString.substring(0, 1).toUpperCase() }${ pString.substring(1) }`;\n\n/**\n * Converts the first letter of the given string to lowercase.\n *\n * @param {string} pString - A string of text.\n * @returns {string} The string with the first letter converted to lowercase, or the unchanged pString if it's not a string.\n */\nexport const lowerCaseFirstLetter = (pString: string): string => `${ pString.substring(0, 1).toLowerCase() }${ pString.substring(1) }`;\n\n/**\n * Splits a string into grapheme clusters so text metrics and clamping can share\n * the same segmentation logic without forcing callers to pass pre-segmented data.\n *\n * @param {string} pString - The string to segment.\n * @returns {string[]} The grapheme units in order, falling back to code points when Intl.Segmenter is unavailable.\n */\nconst getGraphemeSegments = (pString: string): string[] => {\n if (typeof Intl !== 'undefined' && 'Segmenter' in Intl) {\n const segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });\n\n return Array.from(segmenter.segment(pString), ({ segment }) => segment);\n }\n\n return Array.from(pString);\n};\n\n/**\n * Counts user-perceived characters (grapheme clusters) so emojis and composed\n * characters such as accented letters count as one.\n *\n * @param {string} pString - A string of text.\n * @returns {number} The number of grapheme clusters, falling back to code points where Intl.Segmenter is unavailable.\n */\nexport const getCharacterCount = (pString: string): number => getGraphemeSegments(pString).length;\n\n/**\n * Truncates a string to a maximum number of grapheme clusters without splitting\n * an emoji or composed character in half.\n *\n * @param {string} pString - A string of text.\n * @param {number} maxAllowed - The maximum number of user-perceived characters to keep.\n * @returns {string} The truncated string, or the unchanged pString if it is already within the limit.\n */\nexport const clampToGraphemeMax = (pString: string, maxAllowed: number): string => {\n const graphemeSegments = getGraphemeSegments(pString);\n\n if (graphemeSegments.length <= maxAllowed) {\n return pString;\n }\n\n return graphemeSegments.slice(0, maxAllowed).join('');\n};\n\n/**\n * Determines if \"an\" should be used instead of \"a\" before the given word.\n *\n * @param {string} word - The word to check.\n * @returns {boolean} True if \"an\" should be used, false otherwise.\n */\nexport const useAnInsteadOfA = (word: string): boolean => {\n const lettersRequiringAn = ['a', 'e', 'i', 'o', 'u', 'h'];\n const firstLetter = word.substring(0, 1).toLowerCase();\n return lettersRequiringAn.includes(firstLetter);\n};\n\nexport const splitCamelCase = (pString: string): string => pString\n// Single regex to handle all cases: lowercase followed by uppercase/number, or number followed by letter\n .replace(/([a-z])([A-Z0-9])|([0-9])([a-zA-Z])/g, '$1$3 $2$4')\n// Insert a space between capital letters and lowercase letters where missing\n .replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')\n// Convert the entire string to lowercase for consistency\n .toLowerCase();\n\nexport const pluralize = (pString: string): string => {\n if (pString.endsWith('y')) {\n // If the word ends with 'y', replace 'y' with 'ies'\n return `${ pString.slice(0, -1) }ies`;\n } if (pString.endsWith('s') || pString.endsWith('x') || pString.endsWith('z') || pString.endsWith('ch') || pString.endsWith('sh')) {\n // If the word ends with s, x, z, ch, or sh, add 'es'\n return `${ pString }es`;\n }\n // For other cases, just add 's'\n return `${ pString }s`;\n};\n\nexport const pluralizeIfNeeded = (pString: string, count: number): string => {\n if (count && count > 1) {\n return pluralize(pString);\n }\n return pString;\n};\n\nexport const getInitialsOrAcronym = (pString: string): string => {\n return pString.split(' ').map((piece) => capitalize(piece.substring(0, 1))).join('');\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,40 @@
1
+ const SAFE_LINK_PROTOCOLS = new Set(['http:', 'https:', 'mailto:', 'tel:']);
2
+ const URL_BASE = 'https://x15.invalid';
3
+ export const getSafeLinkHref = href => {
4
+ if (typeof href !== 'string' || !href.trim()) {
5
+ return undefined;
6
+ }
7
+ try {
8
+ const parsedUrl = new URL(href, URL_BASE);
9
+ return SAFE_LINK_PROTOCOLS.has(parsedUrl.protocol) ? href : undefined;
10
+ } catch {
11
+ return undefined;
12
+ }
13
+ };
14
+ const SAFE_IMAGE_PROTOCOLS = new Set(['http:', 'https:', 'blob:']);
15
+ const RASTER_IMAGE_DATA_URL = /^data:image\/(?:png|jpeg|gif|webp|avif);base64,[a-z\d+/=\s]*$/i;
16
+
17
+ /*
18
+ Returns a CSS `url("...")` for an image URL, or undefined if the URL is not an http(s), blob,
19
+ relative or raster data URL. The value is quoted with its quotes, backslashes and line breaks
20
+ percent-encoded, so it cannot close the string and add declarations to an inline style, which
21
+ React does not escape when rendering on the server.
22
+ */
23
+ export const toCssImageUrl = url => {
24
+ if (typeof url !== 'string' || !url.trim()) {
25
+ return undefined;
26
+ }
27
+ const trimmed = url.trim();
28
+ if (!RASTER_IMAGE_DATA_URL.test(trimmed)) {
29
+ try {
30
+ if (!SAFE_IMAGE_PROTOCOLS.has(new URL(trimmed, URL_BASE).protocol)) {
31
+ return undefined;
32
+ }
33
+ } catch {
34
+ return undefined;
35
+ }
36
+ }
37
+ const encoded = trimmed.replace(/["'\\\n\r\f]/g, character => `%${character.charCodeAt(0).toString(16).toUpperCase().padStart(2, '0')}`);
38
+ return `url("${encoded}")`;
39
+ };
40
+ //# sourceMappingURL=urlHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urlHelpers.js","names":["SAFE_LINK_PROTOCOLS","Set","URL_BASE","getSafeLinkHref","href","trim","undefined","parsedUrl","URL","has","protocol","SAFE_IMAGE_PROTOCOLS","RASTER_IMAGE_DATA_URL","toCssImageUrl","url","trimmed","test","encoded","replace","character","charCodeAt","toString","toUpperCase","padStart"],"sources":["../../../src/helpers/urlHelpers.ts"],"sourcesContent":["const SAFE_LINK_PROTOCOLS = new Set(['http:', 'https:', 'mailto:', 'tel:']);\nconst URL_BASE = 'https://x15.invalid';\n\nexport const getSafeLinkHref = (href: string): string | undefined => {\n if (typeof href !== 'string' || !href.trim()) {\n return undefined;\n }\n\n try {\n const parsedUrl = new URL(href, URL_BASE);\n return SAFE_LINK_PROTOCOLS.has(parsedUrl.protocol) ? href : undefined;\n } catch {\n return undefined;\n }\n};\n\nconst SAFE_IMAGE_PROTOCOLS = new Set(['http:', 'https:', 'blob:']);\nconst RASTER_IMAGE_DATA_URL = /^data:image\\/(?:png|jpeg|gif|webp|avif);base64,[a-z\\d+/=\\s]*$/i;\n\n/*\n Returns a CSS `url(\"...\")` for an image URL, or undefined if the URL is not an http(s), blob,\n relative or raster data URL. The value is quoted with its quotes, backslashes and line breaks\n percent-encoded, so it cannot close the string and add declarations to an inline style, which\n React does not escape when rendering on the server.\n */\nexport const toCssImageUrl = (url: string | undefined): string | undefined => {\n if (typeof url !== 'string' || !url.trim()) {\n return undefined;\n }\n const trimmed = url.trim();\n if (!RASTER_IMAGE_DATA_URL.test(trimmed)) {\n try {\n if (!SAFE_IMAGE_PROTOCOLS.has(new URL(trimmed, URL_BASE).protocol)) {\n return undefined;\n }\n } catch {\n return undefined;\n }\n }\n const encoded = trimmed.replace(/[\"'\\\\\\n\\r\\f]/g, (character) => `%${ character.charCodeAt(0).toString(16).toUpperCase().padStart(2, '0') }`);\n return `url(\"${ encoded }\")`;\n};\n"],"mappings":"AAAA,MAAMA,mBAAmB,GAAG,IAAIC,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3E,MAAMC,QAAQ,GAAG,qBAAqB;AAEtC,OAAO,MAAMC,eAAe,GAAIC,IAAY,IAAyB;EACnE,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAI,CAACA,IAAI,CAACC,IAAI,CAAC,CAAC,EAAE;IAC5C,OAAOC,SAAS;EAClB;EAEA,IAAI;IACF,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAACJ,IAAI,EAAEF,QAAQ,CAAC;IACzC,OAAOF,mBAAmB,CAACS,GAAG,CAACF,SAAS,CAACG,QAAQ,CAAC,GAAGN,IAAI,GAAGE,SAAS;EACvE,CAAC,CAAC,MAAM;IACN,OAAOA,SAAS;EAClB;AACF,CAAC;AAED,MAAMK,oBAAoB,GAAG,IAAIV,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClE,MAAMW,qBAAqB,GAAG,gEAAgE;;AAE9F;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAIC,GAAuB,IAAyB;EAC5E,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAI,CAACA,GAAG,CAACT,IAAI,CAAC,CAAC,EAAE;IAC1C,OAAOC,SAAS;EAClB;EACA,MAAMS,OAAO,GAAGD,GAAG,CAACT,IAAI,CAAC,CAAC;EAC1B,IAAI,CAACO,qBAAqB,CAACI,IAAI,CAACD,OAAO,CAAC,EAAE;IACxC,IAAI;MACF,IAAI,CAACJ,oBAAoB,CAACF,GAAG,CAAC,IAAID,GAAG,CAACO,OAAO,EAAEb,QAAQ,CAAC,CAACQ,QAAQ,CAAC,EAAE;QAClE,OAAOJ,SAAS;MAClB;IACF,CAAC,CAAC,MAAM;MACN,OAAOA,SAAS;IAClB;EACF;EACA,MAAMW,OAAO,GAAGF,OAAO,CAACG,OAAO,CAAC,eAAe,EAAGC,SAAS,IAAK,IAAKA,SAAS,CAACC,UAAU,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAG,CAAC;EAC5I,OAAO,QAASN,OAAO,IAAK;AAC9B,CAAC","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -3,7 +3,7 @@ import './icons/style.css';
3
3
 
4
4
  // Components
5
5
  export { Accordion, Chip, Pill, Badge, Dialog, HeaderBar, Icon, NotificationIcon, VentureLogo, CreditSavvyLogo, HomeInLogo, KitLogo, DoshiiLogo, TruyuLogo, SidePanel, Skeleton, Spinner, StatusIconButton, StatusLight, StatusLightsBar, CircularProgressIndicator, Tabs, Tooltip, EllipsisTooltip, RevealMore, CopyText, Paginator, PageBanner, Banner, Alert, SimpleButton, Button, FormField, InputCheckbox, CheckboxInput, CheckboxSwitch, StyledRadioGroup, StyledRadioInput, StyledRadioLabel, HookFormWrapper, TextInput, EmailInput, FileInput, SearchInput, NumberInput, PhoneInput, UrlInput, PasswordInput, PasswordInputSignup, SelectDropdown, Select, Combobox, Textarea, InputDate, DateInput, Card, ReportFooter, MainHeader, ThemeLoader, DevToolbar, ThemeSwitch, LoremIpsum, GlobalDashboard, Menu, PopupMenu, SearchPanelMenu, Link, TemplateForm, TemplateLoading, TemplateDashboard, TemplatePage } from './components';
6
- export { ProcessLauncher } from './widgets';
6
+ export { ProcessLauncher, DocumentViewer, DocumentEditor, DocumentComparer, DocumentComments, AnnotationLayer, defaultDocumentViewerLabels, defaultDocumentEditorLabels, defaultDocumentComparerLabels, defaultDocumentCommentsLabels, defaultDocumentAnnotationLabels, createTextQuoteAnchor, createTextQuoteResolver, resolveTextQuoteAnchor, fetchDocumentAsArrayBuffer, fetchDocumentAsText, getDocumentExtension, getDocumentFileName, getDocumentKind, resolveDocumentResource, useDocumentContent } from './widgets';
7
7
  // Hooks
8
8
  export { useOnClickOutside, usePopupKeys, useOnEdgeProximityDetect, useFirstCapital, useTabbableInputGroup, useDialogOverlay, useEllipsisBookends, useFocusTrap, useInertAttribute, useOnInteractiveHostFocus } from './hooks';
9
9
 
@@ -16,6 +16,8 @@ export { binaryFindInArray, addAndSortArray, moveItemInArrayMutate, moveItemInAr
16
16
  export { transformPlacesData, extractNamePieces } from './helpers/dataHelpers';
17
17
  export { dateToShortIsoString, isValidDate, dateToShortReadableDate, dateToShortReadableMonth, timeStampToShortReadableDate, dateToReadableTime, dateToShortReadableDateTime, getLastDateOfMonth, daysSince } from './helpers/dateHelpers';
18
18
  export { USER_CURRENCY, intlCurrencyFormatter, intlNumberFormatter, formatNumberForLocale, formatAsCurrencyForLocale, getNumberAbbreviation, formatRoundedNumberWithAbbreviation, formatNumberWithAbbreviation, formatNumberForChartAxis, formatAsSimpleCurrencyForChartAxis, formatAsInternationalCurrencyForChartAxis, formatAsCurrencyWithAbbreviation, formatFileSize } from './helpers/formatters';
19
+ export { getFileExtension, getUrlExtension, readFileAsText, readFileAsArrayBuffer } from './helpers/fileHelpers';
20
+ export { prefersReducedMotion, getPreferredScrollBehavior, getScrollSettings } from './helpers/interactionsHelper';
19
21
  export { getRandomNumberBelow, getRandomBetweenInclusive, getRandomBetweenExclusive, hashCode, roundToDecimal, formatNumberToMinDigits, formatDigitalTime } from './helpers/numberHelpers';
20
22
  export { richTextParser, capitalize, capitalizeFirstLetter, lowerCaseFirstLetter, useAnInsteadOfA, splitCamelCase, pluralize, pluralizeIfNeeded, getInitialsOrAcronym } from './helpers/stringHelpers';
21
23
  export { objectsAreTheSame, isAnObject, createCompareValueOverride, isReactElement, isNonElementObject, isPlainObject, deepMergeObjects, overrideMergeObjects, makeInheritanceObject, updateNestedProperty, filterObject, getArrayOfObjectKeys, getArrayOfReadableObjectKeys, getBranchFromPath, deepRemoveProps } from './helpers/objectHelpers';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Accordion","Chip","Pill","Badge","Dialog","HeaderBar","Icon","NotificationIcon","VentureLogo","CreditSavvyLogo","HomeInLogo","KitLogo","DoshiiLogo","TruyuLogo","SidePanel","Skeleton","Spinner","StatusIconButton","StatusLight","StatusLightsBar","CircularProgressIndicator","Tabs","Tooltip","EllipsisTooltip","RevealMore","CopyText","Paginator","PageBanner","Banner","Alert","SimpleButton","Button","FormField","InputCheckbox","CheckboxInput","CheckboxSwitch","StyledRadioGroup","StyledRadioInput","StyledRadioLabel","HookFormWrapper","TextInput","EmailInput","FileInput","SearchInput","NumberInput","PhoneInput","UrlInput","PasswordInput","PasswordInputSignup","SelectDropdown","Select","Combobox","Textarea","InputDate","DateInput","Card","ReportFooter","MainHeader","ThemeLoader","DevToolbar","ThemeSwitch","LoremIpsum","GlobalDashboard","Menu","PopupMenu","SearchPanelMenu","Link","TemplateForm","TemplateLoading","TemplateDashboard","TemplatePage","ProcessLauncher","useOnClickOutside","usePopupKeys","useOnEdgeProximityDetect","useFirstCapital","useTabbableInputGroup","useDialogOverlay","useEllipsisBookends","useFocusTrap","useInertAttribute","useOnInteractiveHostFocus","getMinAge","getMaxAge","getMinAndMaxAges","validateBirthdate","isDateEntryComplete","getAgeInWeeks","getAgeInYears","binaryFindInArray","addAndSortArray","moveItemInArrayMutate","moveItemInArrayCopy","getRandomItemFromArray","getItemIndexWithinArray","getRoundedMedian","getMostOccurringBoolean","cssClassesArrayToString","transformPlacesData","extractNamePieces","dateToShortIsoString","isValidDate","dateToShortReadableDate","dateToShortReadableMonth","timeStampToShortReadableDate","dateToReadableTime","dateToShortReadableDateTime","getLastDateOfMonth","daysSince","USER_CURRENCY","intlCurrencyFormatter","intlNumberFormatter","formatNumberForLocale","formatAsCurrencyForLocale","getNumberAbbreviation","formatRoundedNumberWithAbbreviation","formatNumberWithAbbreviation","formatNumberForChartAxis","formatAsSimpleCurrencyForChartAxis","formatAsInternationalCurrencyForChartAxis","formatAsCurrencyWithAbbreviation","formatFileSize","getRandomNumberBelow","getRandomBetweenInclusive","getRandomBetweenExclusive","hashCode","roundToDecimal","formatNumberToMinDigits","formatDigitalTime","richTextParser","capitalize","capitalizeFirstLetter","lowerCaseFirstLetter","useAnInsteadOfA","splitCamelCase","pluralize","pluralizeIfNeeded","getInitialsOrAcronym","objectsAreTheSame","isAnObject","createCompareValueOverride","isReactElement","isNonElementObject","isPlainObject","deepMergeObjects","overrideMergeObjects","makeInheritanceObject","updateNestedProperty","filterObject","getArrayOfObjectKeys","getArrayOfReadableObjectKeys","getBranchFromPath","deepRemoveProps","renderIcon","isSvgIconDefinition","isIconProps","isEmptyIconSource","UserMock","MenuMock","xGraphTopMenuMock","xGraphMainMenuMock","DashboardMenuMock","UserMenuMock","CBA_ORG_STRUCTURE","CBA_LOGO","VENTURES","DEFAULT_PASSWORD_REGEX","DEFAULT_EMAIL_REGEX","DEFAULT_PHONE_REGEX","DEFAULT_NUMBER_REGEX","DEFAULT_URL_REGEX","DATA_CLASSIFICATIONS","BLACKLISTED_FILE_TYPES","DEFAULT_UPLOAD_FILE_TYPES","DEFAULT_UPLOAD_FILE_EXTENSIONS","LIBRARY_CDN_BASE_URL","LIBRARY_CDN_BASE_URL_PROD","LIBRARY_CDN_BUCKET_NAME","LIBRARY_CDN_BUCKET_FOLDER","LIBRARY_CDN_DEV_BASE_URL","LIBRARY_CDN_PROD_BASE_URL","LIBRARY_VERSION","UserContextProvider","AppContextProvider"],"sources":["../../src/index.ts"],"sourcesContent":["import './styles/index.scss';\nimport './icons/style.scss';\n\n// Components\nexport {\n Accordion,\n Chip,\n Pill,\n Badge,\n Dialog,\n HeaderBar,\n Icon,\n NotificationIcon,\n VentureLogo,\n CreditSavvyLogo,\n HomeInLogo,\n KitLogo,\n DoshiiLogo,\n TruyuLogo,\n SidePanel,\n Skeleton,\n Spinner,\n StatusIconButton,\n StatusLight,\n StatusLightsBar,\n CircularProgressIndicator,\n Tabs,\n Tooltip,\n EllipsisTooltip,\n RevealMore,\n CopyText,\n Paginator,\n PageBanner,\n Banner,\n Alert,\n SimpleButton,\n Button,\n FormField,\n InputCheckbox,\n CheckboxInput,\n CheckboxSwitch,\n StyledRadioGroup,\n StyledRadioInput,\n StyledRadioLabel,\n HookFormWrapper,\n TextInput,\n EmailInput,\n FileInput,\n SearchInput,\n NumberInput,\n PhoneInput,\n UrlInput,\n PasswordInput,\n PasswordInputSignup,\n SelectDropdown,\n Select,\n Combobox,\n Textarea,\n InputDate,\n DateInput,\n Card,\n ReportFooter,\n MainHeader,\n ThemeLoader,\n DevToolbar,\n ThemeSwitch,\n LoremIpsum,\n GlobalDashboard,\n Menu,\n PopupMenu,\n SearchPanelMenu,\n Link,\n TemplateForm,\n TemplateLoading,\n TemplateDashboard,\n TemplatePage\n} from './components';\n\nexport { ProcessLauncher } from './widgets';\n\nexport type {\n ProcessLauncherProps,\n ProcessDefinition,\n ProcessLaunchButtonProps,\n ProcessProgressIndicatorProps,\n ProcessStatus,\n ProcessProgressUpdateMode,\n ProcessPushableStatus,\n ProcessProgressUpdate,\n ProcessProgressSubscriptionHandlers,\n ProcessProgressUnsubscribe,\n ProcessProgressSubscription,\n ProcessLauncherFetchProgressProps,\n ProcessLauncherSubscribeProgressProps,\n ProcessLauncherProgressProps\n} from './widgets';\n\nexport type {\n PageBannerProps,\n FormComponentProps,\n DropdownSelectProps,\n PasswordInputProps,\n StyledRadioGroupProps,\n CheckboxSwitchProps,\n CheckboxSwitchSize,\n CheckboxSwitchVariant,\n CheckboxSwitchShape,\n CheckboxSwitchStateDisplay,\n CheckboxSwitchGlowTheme,\n CheckboxSwitchButtonStyle,\n CheckboxSwitchStateProps,\n SkeletonProps,\n ThemeStructure,\n MenuItemPropTypes,\n MenuButtonPropTypes,\n MenuItemIconStates,\n TemplateFormProps,\n TemplateLoadingProps,\n TemplateDashboardProps,\n TemplatePageProps,\n CircularProgressIndicatorProps\n} from './components';\n\n// Hooks\nexport {\n useOnClickOutside,\n usePopupKeys,\n useOnEdgeProximityDetect,\n useFirstCapital,\n useTabbableInputGroup,\n useDialogOverlay,\n useEllipsisBookends,\n useFocusTrap,\n useInertAttribute,\n useOnInteractiveHostFocus\n} from './hooks';\n\n// Interfaces (types only - safe to keep export *)\nexport * from './interfaces';\n\n// Helpers\nexport {\n getMinAge,\n getMaxAge,\n getMinAndMaxAges,\n validateBirthdate,\n isDateEntryComplete,\n getAgeInWeeks,\n getAgeInYears\n} from './helpers/ageHelpers';\n\nexport {\n binaryFindInArray,\n addAndSortArray,\n moveItemInArrayMutate,\n moveItemInArrayCopy,\n getRandomItemFromArray,\n getItemIndexWithinArray,\n getRoundedMedian,\n getMostOccurringBoolean,\n cssClassesArrayToString\n} from './helpers/arrayHelpers';\n\nexport {\n transformPlacesData,\n extractNamePieces\n} from './helpers/dataHelpers';\nexport type { NamePieces } from './helpers/dataHelpers';\n\nexport {\n dateToShortIsoString,\n isValidDate,\n dateToShortReadableDate,\n dateToShortReadableMonth,\n timeStampToShortReadableDate,\n dateToReadableTime,\n dateToShortReadableDateTime,\n getLastDateOfMonth,\n daysSince\n} from './helpers/dateHelpers';\n\nexport {\n USER_CURRENCY,\n intlCurrencyFormatter,\n intlNumberFormatter,\n formatNumberForLocale,\n formatAsCurrencyForLocale,\n getNumberAbbreviation,\n formatRoundedNumberWithAbbreviation,\n formatNumberWithAbbreviation,\n formatNumberForChartAxis,\n formatAsSimpleCurrencyForChartAxis,\n formatAsInternationalCurrencyForChartAxis,\n formatAsCurrencyWithAbbreviation,\n formatFileSize\n} from './helpers/formatters';\n\nexport {\n getRandomNumberBelow,\n getRandomBetweenInclusive,\n getRandomBetweenExclusive,\n hashCode,\n roundToDecimal,\n formatNumberToMinDigits,\n formatDigitalTime\n} from './helpers/numberHelpers';\n\nexport {\n richTextParser,\n capitalize,\n capitalizeFirstLetter,\n lowerCaseFirstLetter,\n useAnInsteadOfA,\n splitCamelCase,\n pluralize,\n pluralizeIfNeeded,\n getInitialsOrAcronym\n} from './helpers/stringHelpers';\n\nexport {\n objectsAreTheSame,\n isAnObject,\n createCompareValueOverride,\n isReactElement,\n isNonElementObject,\n isPlainObject,\n deepMergeObjects,\n overrideMergeObjects,\n makeInheritanceObject,\n updateNestedProperty,\n filterObject,\n getArrayOfObjectKeys,\n getArrayOfReadableObjectKeys,\n getBranchFromPath,\n deepRemoveProps\n} from './helpers/objectHelpers';\nexport type {\n DeepMergeObjectsArgs,\n MakeInheritanceObjectArgs,\n UpdateNestedPropertyArgs\n} from './helpers/objectHelpers';\n\nexport {\n renderIcon,\n isSvgIconDefinition,\n isIconProps,\n isEmptyIconSource\n} from './helpers/iconHelpers';\nexport type {\n IconSource,\n RenderIconOptions,\n SvgIconDefinition,\n SvgIconSize\n} from './helpers/iconHelpers';\n\n// Mocks\nexport {\n UserMock,\n MenuMock,\n xGraphTopMenuMock,\n xGraphMainMenuMock,\n DashboardMenuMock,\n UserMenuMock\n} from './mocks';\n\n// Constants\nexport {\n CBA_ORG_STRUCTURE,\n CBA_LOGO,\n VENTURES,\n DEFAULT_PASSWORD_REGEX,\n DEFAULT_EMAIL_REGEX,\n DEFAULT_PHONE_REGEX,\n DEFAULT_NUMBER_REGEX,\n DEFAULT_URL_REGEX,\n DATA_CLASSIFICATIONS,\n BLACKLISTED_FILE_TYPES,\n DEFAULT_UPLOAD_FILE_TYPES,\n DEFAULT_UPLOAD_FILE_EXTENSIONS,\n LIBRARY_CDN_BASE_URL,\n LIBRARY_CDN_BASE_URL_PROD,\n LIBRARY_CDN_BUCKET_NAME,\n LIBRARY_CDN_BUCKET_FOLDER,\n LIBRARY_CDN_DEV_BASE_URL,\n LIBRARY_CDN_PROD_BASE_URL,\n LIBRARY_VERSION\n} from './constants';\n\nexport type {\n USER,\n GlobalUserRole,\n ScopedUserRole,\n UserAuthType,\n VentureSite,\n VentureSites,\n VentureDefinition,\n VentureDefinitions\n} from './constants';\n\n// Context Providers\nexport { UserContextProvider, AppContextProvider } from './contextProviders';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Accordion","Chip","Pill","Badge","Dialog","HeaderBar","Icon","NotificationIcon","VentureLogo","CreditSavvyLogo","HomeInLogo","KitLogo","DoshiiLogo","TruyuLogo","SidePanel","Skeleton","Spinner","StatusIconButton","StatusLight","StatusLightsBar","CircularProgressIndicator","Tabs","Tooltip","EllipsisTooltip","RevealMore","CopyText","Paginator","PageBanner","Banner","Alert","SimpleButton","Button","FormField","InputCheckbox","CheckboxInput","CheckboxSwitch","StyledRadioGroup","StyledRadioInput","StyledRadioLabel","HookFormWrapper","TextInput","EmailInput","FileInput","SearchInput","NumberInput","PhoneInput","UrlInput","PasswordInput","PasswordInputSignup","SelectDropdown","Select","Combobox","Textarea","InputDate","DateInput","Card","ReportFooter","MainHeader","ThemeLoader","DevToolbar","ThemeSwitch","LoremIpsum","GlobalDashboard","Menu","PopupMenu","SearchPanelMenu","Link","TemplateForm","TemplateLoading","TemplateDashboard","TemplatePage","ProcessLauncher","DocumentViewer","DocumentEditor","DocumentComparer","DocumentComments","AnnotationLayer","defaultDocumentViewerLabels","defaultDocumentEditorLabels","defaultDocumentComparerLabels","defaultDocumentCommentsLabels","defaultDocumentAnnotationLabels","createTextQuoteAnchor","createTextQuoteResolver","resolveTextQuoteAnchor","fetchDocumentAsArrayBuffer","fetchDocumentAsText","getDocumentExtension","getDocumentFileName","getDocumentKind","resolveDocumentResource","useDocumentContent","useOnClickOutside","usePopupKeys","useOnEdgeProximityDetect","useFirstCapital","useTabbableInputGroup","useDialogOverlay","useEllipsisBookends","useFocusTrap","useInertAttribute","useOnInteractiveHostFocus","getMinAge","getMaxAge","getMinAndMaxAges","validateBirthdate","isDateEntryComplete","getAgeInWeeks","getAgeInYears","binaryFindInArray","addAndSortArray","moveItemInArrayMutate","moveItemInArrayCopy","getRandomItemFromArray","getItemIndexWithinArray","getRoundedMedian","getMostOccurringBoolean","cssClassesArrayToString","transformPlacesData","extractNamePieces","dateToShortIsoString","isValidDate","dateToShortReadableDate","dateToShortReadableMonth","timeStampToShortReadableDate","dateToReadableTime","dateToShortReadableDateTime","getLastDateOfMonth","daysSince","USER_CURRENCY","intlCurrencyFormatter","intlNumberFormatter","formatNumberForLocale","formatAsCurrencyForLocale","getNumberAbbreviation","formatRoundedNumberWithAbbreviation","formatNumberWithAbbreviation","formatNumberForChartAxis","formatAsSimpleCurrencyForChartAxis","formatAsInternationalCurrencyForChartAxis","formatAsCurrencyWithAbbreviation","formatFileSize","getFileExtension","getUrlExtension","readFileAsText","readFileAsArrayBuffer","prefersReducedMotion","getPreferredScrollBehavior","getScrollSettings","getRandomNumberBelow","getRandomBetweenInclusive","getRandomBetweenExclusive","hashCode","roundToDecimal","formatNumberToMinDigits","formatDigitalTime","richTextParser","capitalize","capitalizeFirstLetter","lowerCaseFirstLetter","useAnInsteadOfA","splitCamelCase","pluralize","pluralizeIfNeeded","getInitialsOrAcronym","objectsAreTheSame","isAnObject","createCompareValueOverride","isReactElement","isNonElementObject","isPlainObject","deepMergeObjects","overrideMergeObjects","makeInheritanceObject","updateNestedProperty","filterObject","getArrayOfObjectKeys","getArrayOfReadableObjectKeys","getBranchFromPath","deepRemoveProps","renderIcon","isSvgIconDefinition","isIconProps","isEmptyIconSource","UserMock","MenuMock","xGraphTopMenuMock","xGraphMainMenuMock","DashboardMenuMock","UserMenuMock","CBA_ORG_STRUCTURE","CBA_LOGO","VENTURES","DEFAULT_PASSWORD_REGEX","DEFAULT_EMAIL_REGEX","DEFAULT_PHONE_REGEX","DEFAULT_NUMBER_REGEX","DEFAULT_URL_REGEX","DATA_CLASSIFICATIONS","BLACKLISTED_FILE_TYPES","DEFAULT_UPLOAD_FILE_TYPES","DEFAULT_UPLOAD_FILE_EXTENSIONS","LIBRARY_CDN_BASE_URL","LIBRARY_CDN_BASE_URL_PROD","LIBRARY_CDN_BUCKET_NAME","LIBRARY_CDN_BUCKET_FOLDER","LIBRARY_CDN_DEV_BASE_URL","LIBRARY_CDN_PROD_BASE_URL","LIBRARY_VERSION","UserContextProvider","AppContextProvider"],"sources":["../../src/index.ts"],"sourcesContent":["import './styles/index.scss';\nimport './icons/style.scss';\n\n// Components\nexport {\n Accordion,\n Chip,\n Pill,\n Badge,\n Dialog,\n HeaderBar,\n Icon,\n NotificationIcon,\n VentureLogo,\n CreditSavvyLogo,\n HomeInLogo,\n KitLogo,\n DoshiiLogo,\n TruyuLogo,\n SidePanel,\n Skeleton,\n Spinner,\n StatusIconButton,\n StatusLight,\n StatusLightsBar,\n CircularProgressIndicator,\n Tabs,\n Tooltip,\n EllipsisTooltip,\n RevealMore,\n CopyText,\n Paginator,\n PageBanner,\n Banner,\n Alert,\n SimpleButton,\n Button,\n FormField,\n InputCheckbox,\n CheckboxInput,\n CheckboxSwitch,\n StyledRadioGroup,\n StyledRadioInput,\n StyledRadioLabel,\n HookFormWrapper,\n TextInput,\n EmailInput,\n FileInput,\n SearchInput,\n NumberInput,\n PhoneInput,\n UrlInput,\n PasswordInput,\n PasswordInputSignup,\n SelectDropdown,\n Select,\n Combobox,\n Textarea,\n InputDate,\n DateInput,\n Card,\n ReportFooter,\n MainHeader,\n ThemeLoader,\n DevToolbar,\n ThemeSwitch,\n LoremIpsum,\n GlobalDashboard,\n Menu,\n PopupMenu,\n SearchPanelMenu,\n Link,\n TemplateForm,\n TemplateLoading,\n TemplateDashboard,\n TemplatePage\n} from './components';\n\nexport {\n ProcessLauncher,\n DocumentViewer,\n DocumentEditor,\n DocumentComparer,\n DocumentComments,\n AnnotationLayer,\n defaultDocumentViewerLabels,\n defaultDocumentEditorLabels,\n defaultDocumentComparerLabels,\n defaultDocumentCommentsLabels,\n defaultDocumentAnnotationLabels,\n createTextQuoteAnchor,\n createTextQuoteResolver,\n resolveTextQuoteAnchor,\n fetchDocumentAsArrayBuffer,\n fetchDocumentAsText,\n getDocumentExtension,\n getDocumentFileName,\n getDocumentKind,\n resolveDocumentResource,\n useDocumentContent\n} from './widgets';\n\nexport type {\n DocumentRenderer,\n DocumentRendererProps,\n DocumentRenderers,\n DocumentViewerCssClasses,\n DocumentViewerLabels,\n DocumentViewerProps,\n DocumentEditorCssClasses,\n DocumentEditorLabels,\n DocumentEditorProps,\n MarkdownEditorImageUploadHandler,\n MarkdownEditorListType,\n MarkdownEditorToolbarItem,\n MarkdownEditorViewMode,\n ComparisonDocument,\n DocumentComparerCssClasses,\n DocumentComparerLabels,\n DocumentComparerProps,\n DocumentComparerSaveUpdate,\n DocumentComparerView,\n DocumentDiffView,\n DocumentCommentsCssClasses,\n DocumentCommentsFilter,\n DocumentCommentsLabels,\n DocumentCommentsProps,\n NewDocumentComment,\n AnnotationLayerProps,\n DocumentAnchorStatus,\n DocumentAnnotationLabels,\n DocumentAnnotationsProps,\n DocumentComment,\n DocumentCommentAuthor,\n DocumentCommentReply,\n TextQuoteAnchor,\n DocumentContentState,\n DocumentKind,\n DocumentLoadStatus,\n DocumentSource,\n LoadedDocument,\n ResolveResourceUrl,\n ProcessLauncherProps,\n ProcessDefinition,\n ProcessLaunchButtonProps,\n ProcessProgressIndicatorProps,\n ProcessStatus,\n ProcessProgressUpdateMode,\n ProcessPushableStatus,\n ProcessProgressUpdate,\n ProcessProgressSubscriptionHandlers,\n ProcessProgressUnsubscribe,\n ProcessProgressSubscription,\n ProcessLauncherFetchProgressProps,\n ProcessLauncherSubscribeProgressProps,\n ProcessLauncherProgressProps\n} from './widgets';\n\nexport type {\n PageBannerProps,\n FormComponentProps,\n DropdownSelectProps,\n PasswordInputProps,\n StyledRadioGroupProps,\n CheckboxSwitchProps,\n CheckboxSwitchSize,\n CheckboxSwitchVariant,\n CheckboxSwitchShape,\n CheckboxSwitchStateDisplay,\n CheckboxSwitchGlowTheme,\n CheckboxSwitchButtonStyle,\n CheckboxSwitchStateProps,\n SkeletonProps,\n ThemeStructure,\n MenuItemPropTypes,\n MenuButtonPropTypes,\n MenuItemIconStates,\n TemplateFormProps,\n TemplateLoadingProps,\n TemplateDashboardProps,\n TemplatePageProps,\n CircularProgressIndicatorProps\n} from './components';\n\n// Hooks\nexport {\n useOnClickOutside,\n usePopupKeys,\n useOnEdgeProximityDetect,\n useFirstCapital,\n useTabbableInputGroup,\n useDialogOverlay,\n useEllipsisBookends,\n useFocusTrap,\n useInertAttribute,\n useOnInteractiveHostFocus\n} from './hooks';\n\n// Interfaces (types only - safe to keep export *)\nexport * from './interfaces';\n\n// Helpers\nexport {\n getMinAge,\n getMaxAge,\n getMinAndMaxAges,\n validateBirthdate,\n isDateEntryComplete,\n getAgeInWeeks,\n getAgeInYears\n} from './helpers/ageHelpers';\n\nexport {\n binaryFindInArray,\n addAndSortArray,\n moveItemInArrayMutate,\n moveItemInArrayCopy,\n getRandomItemFromArray,\n getItemIndexWithinArray,\n getRoundedMedian,\n getMostOccurringBoolean,\n cssClassesArrayToString\n} from './helpers/arrayHelpers';\n\nexport {\n transformPlacesData,\n extractNamePieces\n} from './helpers/dataHelpers';\nexport type { NamePieces } from './helpers/dataHelpers';\n\nexport {\n dateToShortIsoString,\n isValidDate,\n dateToShortReadableDate,\n dateToShortReadableMonth,\n timeStampToShortReadableDate,\n dateToReadableTime,\n dateToShortReadableDateTime,\n getLastDateOfMonth,\n daysSince\n} from './helpers/dateHelpers';\n\nexport {\n USER_CURRENCY,\n intlCurrencyFormatter,\n intlNumberFormatter,\n formatNumberForLocale,\n formatAsCurrencyForLocale,\n getNumberAbbreviation,\n formatRoundedNumberWithAbbreviation,\n formatNumberWithAbbreviation,\n formatNumberForChartAxis,\n formatAsSimpleCurrencyForChartAxis,\n formatAsInternationalCurrencyForChartAxis,\n formatAsCurrencyWithAbbreviation,\n formatFileSize\n} from './helpers/formatters';\n\nexport {\n getFileExtension,\n getUrlExtension,\n readFileAsText,\n readFileAsArrayBuffer\n} from './helpers/fileHelpers';\n\nexport {\n prefersReducedMotion,\n getPreferredScrollBehavior,\n getScrollSettings\n} from './helpers/interactionsHelper';\nexport type { ScrollSettings } from './helpers/interactionsHelper';\n\nexport {\n getRandomNumberBelow,\n getRandomBetweenInclusive,\n getRandomBetweenExclusive,\n hashCode,\n roundToDecimal,\n formatNumberToMinDigits,\n formatDigitalTime\n} from './helpers/numberHelpers';\n\nexport {\n richTextParser,\n capitalize,\n capitalizeFirstLetter,\n lowerCaseFirstLetter,\n useAnInsteadOfA,\n splitCamelCase,\n pluralize,\n pluralizeIfNeeded,\n getInitialsOrAcronym\n} from './helpers/stringHelpers';\n\nexport {\n objectsAreTheSame,\n isAnObject,\n createCompareValueOverride,\n isReactElement,\n isNonElementObject,\n isPlainObject,\n deepMergeObjects,\n overrideMergeObjects,\n makeInheritanceObject,\n updateNestedProperty,\n filterObject,\n getArrayOfObjectKeys,\n getArrayOfReadableObjectKeys,\n getBranchFromPath,\n deepRemoveProps\n} from './helpers/objectHelpers';\nexport type {\n DeepMergeObjectsArgs,\n MakeInheritanceObjectArgs,\n UpdateNestedPropertyArgs\n} from './helpers/objectHelpers';\n\nexport {\n renderIcon,\n isSvgIconDefinition,\n isIconProps,\n isEmptyIconSource\n} from './helpers/iconHelpers';\nexport type {\n IconSource,\n RenderIconOptions,\n SvgIconDefinition,\n SvgIconSize\n} from './helpers/iconHelpers';\n\n// Mocks\nexport {\n UserMock,\n MenuMock,\n xGraphTopMenuMock,\n xGraphMainMenuMock,\n DashboardMenuMock,\n UserMenuMock\n} from './mocks';\n\n// Constants\nexport {\n CBA_ORG_STRUCTURE,\n CBA_LOGO,\n VENTURES,\n DEFAULT_PASSWORD_REGEX,\n DEFAULT_EMAIL_REGEX,\n DEFAULT_PHONE_REGEX,\n DEFAULT_NUMBER_REGEX,\n DEFAULT_URL_REGEX,\n DATA_CLASSIFICATIONS,\n BLACKLISTED_FILE_TYPES,\n DEFAULT_UPLOAD_FILE_TYPES,\n DEFAULT_UPLOAD_FILE_EXTENSIONS,\n LIBRARY_CDN_BASE_URL,\n LIBRARY_CDN_BASE_URL_PROD,\n LIBRARY_CDN_BUCKET_NAME,\n LIBRARY_CDN_BUCKET_FOLDER,\n LIBRARY_CDN_DEV_BASE_URL,\n LIBRARY_CDN_PROD_BASE_URL,\n LIBRARY_VERSION\n} from './constants';\n\nexport type {\n USER,\n GlobalUserRole,\n ScopedUserRole,\n UserAuthType,\n VentureSite,\n VentureSites,\n VentureDefinition,\n VentureDefinitions\n} from './constants';\n\n// Context Providers\nexport { UserContextProvider, AppContextProvider } from './contextProviders';\n"],"mappings":"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","ignoreList":[]}