@x15ventures/x15-ui-library 3.18.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
@@ -4,12 +4,20 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.timeStampToShortReadableDate = exports.isValidDate = exports.getLastDateOfMonth = exports.default = exports.daysSince = exports.dateToShortReadableMonth = exports.dateToShortReadableDateTime = exports.dateToShortReadableDate = exports.dateToShortIsoString = exports.dateToReadableTime = void 0;
7
+ const parseDate = value => {
8
+ const parsedDate = new Date(value instanceof Date ? value.getTime() : value);
9
+ return Number.isNaN(parsedDate.getTime()) ? null : parsedDate;
10
+ };
11
+ const logInvalidDate = () => {
12
+ console.error('Invalid date format');
13
+ return null;
14
+ };
15
+
7
16
  // Returns format 2022-09-06 for the 6th of September 2022
8
17
  const dateToShortIsoString = date => {
9
- const newDate = new Date(date);
10
- if (Number.isNaN(newDate.getDate())) {
11
- console.error('Invalid date format');
12
- return null;
18
+ const newDate = parseDate(date);
19
+ if (!newDate) {
20
+ return logInvalidDate();
13
21
  }
14
22
  newDate.setTime(newDate.getTime() - newDate.getTimezoneOffset() * 60000);
15
23
  return newDate.toISOString().substring(0, 10);
@@ -21,19 +29,23 @@ const isValidDate = (dateString, minDate) => {
21
29
  if (!dateString) {
22
30
  return false;
23
31
  }
24
- const newDate = new Date(dateString);
25
- const isValidMinDate = !minDate || newDate.getTime() >= new Date(minDate).getTime();
26
- const isValidDate = newDate.toString() !== 'Invalid Date' && !Number.isNaN(newDate.getDate()) && isValidMinDate;
27
- return isValidDate;
32
+ const newDate = parseDate(dateString);
33
+ if (!newDate) {
34
+ return false;
35
+ }
36
+ if (!minDate) {
37
+ return true;
38
+ }
39
+ const minimumDate = parseDate(minDate);
40
+ return minimumDate !== null && newDate.getTime() >= minimumDate.getTime();
28
41
  };
29
42
 
30
43
  // Returns format 06 Sep 2022
31
44
  exports.isValidDate = isValidDate;
32
45
  const dateToShortReadableDate = (date, locale = 'en-AU') => {
33
- const newDate = new Date(date);
34
- if (Number.isNaN(newDate.getDate())) {
35
- console.error('Invalid date format');
36
- return null;
46
+ const newDate = parseDate(date);
47
+ if (!newDate) {
48
+ return logInvalidDate();
37
49
  }
38
50
  return newDate.toLocaleDateString(locale, {
39
51
  day: '2-digit',
@@ -45,28 +57,27 @@ const dateToShortReadableDate = (date, locale = 'en-AU') => {
45
57
  // Returns format Sep
46
58
  exports.dateToShortReadableDate = dateToShortReadableDate;
47
59
  const dateToShortReadableMonth = date => {
48
- const newDate = new Date(date);
49
- newDate.setDate(5); // Set to 5 to avoid timezone issues. If set to 1, for some timezones when it is converted to UTC it jumps to the day before which is the previous month
50
- if (Number.isNaN(newDate.getDate())) {
51
- console.error('Invalid date format');
52
- return null;
60
+ const newDate = parseDate(date);
61
+ if (!newDate) {
62
+ return logInvalidDate();
53
63
  }
64
+ newDate.setDate(5); // Set to 5 to avoid timezone issues. If set to 1, for some timezones when it is converted to UTC it jumps to the day before which is the previous month
65
+
54
66
  return newDate.toUTCString().substring(8, 11);
55
67
  };
56
68
  exports.dateToShortReadableMonth = dateToShortReadableMonth;
57
69
  const timeStampToShortReadableDate = (timestamp, locale = 'en-AU') => {
58
- const newDate = new Date(timestamp);
59
- if (!Number.isNaN(newDate.getDate())) {
70
+ const newDate = parseDate(timestamp);
71
+ if (newDate) {
60
72
  return dateToShortReadableDate(newDate, locale);
61
73
  }
62
74
  return timestamp;
63
75
  };
64
76
  exports.timeStampToShortReadableDate = timeStampToShortReadableDate;
65
77
  const dateToReadableTime = (date, locale = 'en-AU') => {
66
- const newDate = new Date(date);
67
- if (Number.isNaN(newDate.getDate())) {
68
- console.error('Invalid date format');
69
- return null;
78
+ const newDate = parseDate(date);
79
+ if (!newDate) {
80
+ return logInvalidDate();
70
81
  }
71
82
  const readableTime = newDate.toLocaleTimeString(locale, {
72
83
  hour: '2-digit',
@@ -1 +1 @@
1
- {"version":3,"file":"dateHelpers.js","names":["dateToShortIsoString","date","newDate","Date","Number","isNaN","getDate","console","error","setTime","getTime","getTimezoneOffset","toISOString","substring","exports","isValidDate","dateString","minDate","isValidMinDate","toString","dateToShortReadableDate","locale","toLocaleDateString","day","month","year","dateToShortReadableMonth","setDate","toUTCString","timeStampToShortReadableDate","timestamp","dateToReadableTime","readableTime","toLocaleTimeString","hour","minute","hour12","replace","dateToShortReadableDateTime","readableDate","getLastDateOfMonth","getFullYear","getMonth","daysSince","currentDate","diffInMs","Math","abs","diffInDays","_default","default"],"sources":["../../../src/helpers/dateHelpers.ts"],"sourcesContent":[" \n\n// Returns format 2022-09-06 for the 6th of September 2022\nexport const dateToShortIsoString = (date: Date | string): string | null => {\n const newDate = new Date(date);\n if (Number.isNaN(newDate.getDate())) {\n console.error('Invalid date format');\n return null;\n }\n\n newDate.setTime(newDate.getTime() - newDate.getTimezoneOffset() * 60000);\n return newDate.toISOString().substring(0, 10);\n};\n\n// https://stackoverflow.com/questions/7445328/check-if-a-string-is-a-date-value\nexport const isValidDate = (dateString: string | number | null | undefined, minDate?: string): boolean => {\n if (!dateString) {\n return false;\n }\n\n const newDate = new Date(dateString);\n const isValidMinDate = !minDate || newDate.getTime() >= new Date(minDate).getTime();\n\n const isValidDate = newDate.toString() !== 'Invalid Date'\n && !Number.isNaN(newDate.getDate())\n && isValidMinDate;\n\n return isValidDate;\n};\n\n// Returns format 06 Sep 2022\nexport const dateToShortReadableDate = (date: Date | string | number, locale: string = 'en-AU'): string | null => {\n const newDate = new Date(date);\n if (Number.isNaN(newDate.getDate())) {\n console.error('Invalid date format');\n return null;\n }\n\n return newDate.toLocaleDateString(locale, {\n day: '2-digit',\n month: 'short',\n year: 'numeric'\n });\n};\n\n// Returns format Sep\nexport const dateToShortReadableMonth = (date: Date | string | number): string | null => {\n const newDate = new Date(date);\n newDate.setDate(5); // Set to 5 to avoid timezone issues. If set to 1, for some timezones when it is converted to UTC it jumps to the day before which is the previous month\n if (Number.isNaN(newDate.getDate())) {\n console.error('Invalid date format');\n return null;\n }\n\n return newDate.toUTCString().substring(8, 11);\n};\n\nexport const timeStampToShortReadableDate = (timestamp: string | number, locale: string = 'en-AU'): string | number | null | undefined => {\n const newDate = new Date(timestamp);\n if (!Number.isNaN(newDate.getDate())) {\n return dateToShortReadableDate(newDate, locale);\n }\n return timestamp;\n};\n\nexport const dateToReadableTime = (date: Date | string | number, locale: string = 'en-AU'): string | null => {\n const newDate = new Date(date);\n if (Number.isNaN(newDate.getDate())) {\n console.error('Invalid date format');\n return null;\n }\n\n const readableTime = newDate.toLocaleTimeString(locale, {\n hour: '2-digit',\n minute: '2-digit',\n hour12: true\n }).replace(/^0|\\s+/g, '');\n\n return readableTime;\n};\n\nexport const dateToShortReadableDateTime = (date: Date | string | number, locale: string = 'en-AU'): string | null => {\n const readableDate = dateToShortReadableDate(date, locale);\n const readableTime = dateToReadableTime(date, locale);\n return `${ readableDate } ${ readableTime }`;\n};\n\nexport const getLastDateOfMonth = (date: Date) => new Date(date.getFullYear(), date.getMonth() + 1, 0);\n\nexport const daysSince = (date: Date) => {\n const currentDate: Date = new Date();\n const diffInMs = Math.abs(currentDate.getTime() - date.getTime());\n\n const diffInDays = diffInMs / (1000 * 60 * 60 * 24);\n\n return diffInDays;\n};\n\nexport default {\n dateToShortIsoString,\n isValidDate,\n dateToShortReadableDate,\n dateToShortReadableMonth,\n timeStampToShortReadableDate,\n dateToReadableTime,\n dateToShortReadableDateTime,\n getLastDateOfMonth,\n daysSince\n};"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"dateHelpers.js","names":["parseDate","value","parsedDate","Date","getTime","Number","isNaN","logInvalidDate","console","error","dateToShortIsoString","date","newDate","setTime","getTimezoneOffset","toISOString","substring","exports","isValidDate","dateString","minDate","minimumDate","dateToShortReadableDate","locale","toLocaleDateString","day","month","year","dateToShortReadableMonth","setDate","toUTCString","timeStampToShortReadableDate","timestamp","dateToReadableTime","readableTime","toLocaleTimeString","hour","minute","hour12","replace","dateToShortReadableDateTime","readableDate","getLastDateOfMonth","getFullYear","getMonth","daysSince","currentDate","diffInMs","Math","abs","diffInDays","_default","default"],"sources":["../../../src/helpers/dateHelpers.ts"],"sourcesContent":[" \n\nconst parseDate = (value: Date | string | number): Date | null => {\n const parsedDate = new Date(value instanceof Date ? value.getTime() : value);\n return Number.isNaN(parsedDate.getTime()) ? null : parsedDate;\n};\n\nconst logInvalidDate = (): null => {\n console.error('Invalid date format');\n return null;\n};\n\n// Returns format 2022-09-06 for the 6th of September 2022\nexport const dateToShortIsoString = (date: Date | string): string | null => {\n const newDate = parseDate(date);\n if (!newDate) {\n return logInvalidDate();\n }\n\n newDate.setTime(newDate.getTime() - newDate.getTimezoneOffset() * 60000);\n return newDate.toISOString().substring(0, 10);\n};\n\n// https://stackoverflow.com/questions/7445328/check-if-a-string-is-a-date-value\nexport const isValidDate = (dateString: string | number | null | undefined, minDate?: string): boolean => {\n if (!dateString) {\n return false;\n }\n\n const newDate = parseDate(dateString);\n if (!newDate) {\n return false;\n }\n if (!minDate) {\n return true;\n }\n\n const minimumDate = parseDate(minDate);\n return minimumDate !== null && newDate.getTime() >= minimumDate.getTime();\n};\n\n// Returns format 06 Sep 2022\nexport const dateToShortReadableDate = (date: Date | string | number, locale: string = 'en-AU'): string | null => {\n const newDate = parseDate(date);\n if (!newDate) {\n return logInvalidDate();\n }\n\n return newDate.toLocaleDateString(locale, {\n day: '2-digit',\n month: 'short',\n year: 'numeric'\n });\n};\n\n// Returns format Sep\nexport const dateToShortReadableMonth = (date: Date | string | number): string | null => {\n const newDate = parseDate(date);\n if (!newDate) {\n return logInvalidDate();\n }\n newDate.setDate(5); // Set to 5 to avoid timezone issues. If set to 1, for some timezones when it is converted to UTC it jumps to the day before which is the previous month\n\n return newDate.toUTCString().substring(8, 11);\n};\n\nexport const timeStampToShortReadableDate = (timestamp: string | number, locale: string = 'en-AU'): string | number | null | undefined => {\n const newDate = parseDate(timestamp);\n if (newDate) {\n return dateToShortReadableDate(newDate, locale);\n }\n return timestamp;\n};\n\nexport const dateToReadableTime = (date: Date | string | number, locale: string = 'en-AU'): string | null => {\n const newDate = parseDate(date);\n if (!newDate) {\n return logInvalidDate();\n }\n\n const readableTime = newDate.toLocaleTimeString(locale, {\n hour: '2-digit',\n minute: '2-digit',\n hour12: true\n }).replace(/^0|\\s+/g, '');\n\n return readableTime;\n};\n\nexport const dateToShortReadableDateTime = (date: Date | string | number, locale: string = 'en-AU'): string | null => {\n const readableDate = dateToShortReadableDate(date, locale);\n const readableTime = dateToReadableTime(date, locale);\n return `${ readableDate } ${ readableTime }`;\n};\n\nexport const getLastDateOfMonth = (date: Date) => new Date(date.getFullYear(), date.getMonth() + 1, 0);\n\nexport const daysSince = (date: Date) => {\n const currentDate: Date = new Date();\n const diffInMs = Math.abs(currentDate.getTime() - date.getTime());\n\n const diffInDays = diffInMs / (1000 * 60 * 60 * 24);\n\n return diffInDays;\n};\n\nexport default {\n dateToShortIsoString,\n isValidDate,\n dateToShortReadableDate,\n dateToShortReadableMonth,\n timeStampToShortReadableDate,\n dateToReadableTime,\n dateToShortReadableDateTime,\n getLastDateOfMonth,\n daysSince\n};"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.readFileAsText = exports.readFileAsArrayBuffer = exports.getUrlExtension = exports.getFileExtension = void 0;
7
+ /*
8
+ Returns the lower-case extension of a file name or path. `?` and `#` are ordinary characters in
9
+ file names, so `payload#.exe` is an `exe`. Trailing dots and spaces are ignored, as Windows drops
10
+ them when saving, so `payload.exe.` is an `exe` too. Names without an extension (including
11
+ dot-files such as `.env`) return an empty string. For URLs use getUrlExtension.
12
+ */
13
+ const getFileExtension = fileName => {
14
+ const name = (fileName.split(/[/\\]/).pop() ?? '').replace(/[.\s]+$/, '');
15
+ const dotIndex = name.lastIndexOf('.');
16
+ return dotIndex > 0 ? name.slice(dotIndex + 1).toLowerCase() : '';
17
+ };
18
+
19
+ // Any fixed origin works: it only lets relative URLs parse, and only the pathname is inspected.
20
+ exports.getFileExtension = getFileExtension;
21
+ const URL_PARSE_BASE = 'http://localhost/';
22
+
23
+ /*
24
+ Returns the lower-case extension of a URL's path, ignoring the host, query string and fragment, so
25
+ `https://files.example.md` has no extension. Relative URLs are supported.
26
+ */
27
+ const getUrlExtension = url => {
28
+ let pathname;
29
+ try {
30
+ pathname = new URL(url, URL_PARSE_BASE).pathname;
31
+ } catch {
32
+ pathname = url.split(/[?#]/)[0];
33
+ }
34
+ try {
35
+ pathname = decodeURIComponent(pathname);
36
+ } catch {
37
+ // Malformed percent-encoding is left as-is.
38
+ }
39
+ return getFileExtension(pathname);
40
+ };
41
+
42
+ // FileReader rather than Blob.text()/arrayBuffer(), which older browsers and jsdom lack.
43
+ exports.getUrlExtension = getUrlExtension;
44
+ const readFile = (file, asText) => new Promise((resolve, reject) => {
45
+ const reader = new FileReader();
46
+ reader.onload = () => resolve(reader.result);
47
+ reader.onerror = () => reject(reader.error ?? new Error('The file could not be read.'));
48
+ if (asText) {
49
+ reader.readAsText(file);
50
+ } else {
51
+ reader.readAsArrayBuffer(file);
52
+ }
53
+ });
54
+ const readFileAsText = file => readFile(file, true);
55
+ exports.readFileAsText = readFileAsText;
56
+ const readFileAsArrayBuffer = file => readFile(file, false);
57
+ exports.readFileAsArrayBuffer = readFileAsArrayBuffer;
58
+ //# sourceMappingURL=fileHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileHelpers.js","names":["getFileExtension","fileName","name","split","pop","replace","dotIndex","lastIndexOf","slice","toLowerCase","exports","URL_PARSE_BASE","getUrlExtension","url","pathname","URL","decodeURIComponent","readFile","file","asText","Promise","resolve","reject","reader","FileReader","onload","result","onerror","error","Error","readAsText","readAsArrayBuffer","readFileAsText","readFileAsArrayBuffer"],"sources":["../../../src/helpers/fileHelpers.ts"],"sourcesContent":["/*\n Returns the lower-case extension of a file name or path. `?` and `#` are ordinary characters in\n file names, so `payload#.exe` is an `exe`. Trailing dots and spaces are ignored, as Windows drops\n them when saving, so `payload.exe.` is an `exe` too. Names without an extension (including\n dot-files such as `.env`) return an empty string. For URLs use getUrlExtension.\n */\nexport const getFileExtension = (fileName: string): string => {\n const name = (fileName.split(/[/\\\\]/).pop() ?? '').replace(/[.\\s]+$/, '');\n const dotIndex = name.lastIndexOf('.');\n return dotIndex > 0 ? name.slice(dotIndex + 1).toLowerCase() : '';\n};\n\n// Any fixed origin works: it only lets relative URLs parse, and only the pathname is inspected.\nconst URL_PARSE_BASE = 'http://localhost/';\n\n/*\n Returns the lower-case extension of a URL's path, ignoring the host, query string and fragment, so\n `https://files.example.md` has no extension. Relative URLs are supported.\n */\nexport const getUrlExtension = (url: string): string => {\n let pathname: string;\n try {\n pathname = new URL(url, URL_PARSE_BASE).pathname;\n } catch {\n pathname = url.split(/[?#]/)[0];\n }\n try {\n pathname = decodeURIComponent(pathname);\n } catch {\n // Malformed percent-encoding is left as-is.\n }\n return getFileExtension(pathname);\n};\n\n// FileReader rather than Blob.text()/arrayBuffer(), which older browsers and jsdom lack.\nconst readFile = <T extends string | ArrayBuffer>(file: Blob, asText: boolean): Promise<T> => new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result as T);\n reader.onerror = () => reject(reader.error ?? new Error('The file could not be read.'));\n if (asText) {\n reader.readAsText(file);\n } else {\n reader.readAsArrayBuffer(file);\n }\n});\n\nexport const readFileAsText = (file: Blob): Promise<string> => readFile<string>(file, true);\n\nexport const readFileAsArrayBuffer = (file: Blob): Promise<ArrayBuffer> => readFile<ArrayBuffer>(file, false);\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,gBAAgB,GAAIC,QAAgB,IAAa;EAC5D,MAAMC,IAAI,GAAG,CAACD,QAAQ,CAACE,KAAK,CAAC,OAAO,CAAC,CAACC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAEC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;EACzE,MAAMC,QAAQ,GAAGJ,IAAI,CAACK,WAAW,CAAC,GAAG,CAAC;EACtC,OAAOD,QAAQ,GAAG,CAAC,GAAGJ,IAAI,CAACM,KAAK,CAACF,QAAQ,GAAG,CAAC,CAAC,CAACG,WAAW,CAAC,CAAC,GAAG,EAAE;AACnE,CAAC;;AAED;AAAAC,OAAA,CAAAV,gBAAA,GAAAA,gBAAA;AACA,MAAMW,cAAc,GAAG,mBAAmB;;AAE1C;AACA;AACA;AACA;AACO,MAAMC,eAAe,GAAIC,GAAW,IAAa;EACtD,IAAIC,QAAgB;EACpB,IAAI;IACFA,QAAQ,GAAG,IAAIC,GAAG,CAACF,GAAG,EAAEF,cAAc,CAAC,CAACG,QAAQ;EAClD,CAAC,CAAC,MAAM;IACNA,QAAQ,GAAGD,GAAG,CAACV,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACjC;EACA,IAAI;IACFW,QAAQ,GAAGE,kBAAkB,CAACF,QAAQ,CAAC;EACzC,CAAC,CAAC,MAAM;IACN;EAAA;EAEF,OAAOd,gBAAgB,CAACc,QAAQ,CAAC;AACnC,CAAC;;AAED;AAAAJ,OAAA,CAAAE,eAAA,GAAAA,eAAA;AACA,MAAMK,QAAQ,GAAGA,CAAiCC,IAAU,EAAEC,MAAe,KAAiB,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;EAC7H,MAAMC,MAAM,GAAG,IAAIC,UAAU,CAAC,CAAC;EAC/BD,MAAM,CAACE,MAAM,GAAG,MAAMJ,OAAO,CAACE,MAAM,CAACG,MAAW,CAAC;EACjDH,MAAM,CAACI,OAAO,GAAG,MAAML,MAAM,CAACC,MAAM,CAACK,KAAK,IAAI,IAAIC,KAAK,CAAC,6BAA6B,CAAC,CAAC;EACvF,IAAIV,MAAM,EAAE;IACVI,MAAM,CAACO,UAAU,CAACZ,IAAI,CAAC;EACzB,CAAC,MAAM;IACLK,MAAM,CAACQ,iBAAiB,CAACb,IAAI,CAAC;EAChC;AACF,CAAC,CAAC;AAEK,MAAMc,cAAc,GAAId,IAAU,IAAsBD,QAAQ,CAASC,IAAI,EAAE,IAAI,CAAC;AAACR,OAAA,CAAAsB,cAAA,GAAAA,cAAA;AAErF,MAAMC,qBAAqB,GAAIf,IAAU,IAA2BD,QAAQ,CAAcC,IAAI,EAAE,KAAK,CAAC;AAACR,OAAA,CAAAuB,qBAAA,GAAAA,qBAAA","ignoreList":[]}
@@ -213,6 +213,12 @@ Object.defineProperty(exports, "getCharacterCount", {
213
213
  return _stringHelpers.getCharacterCount;
214
214
  }
215
215
  });
216
+ Object.defineProperty(exports, "getFileExtension", {
217
+ enumerable: true,
218
+ get: function () {
219
+ return _fileHelpers.getFileExtension;
220
+ }
221
+ });
216
222
  Object.defineProperty(exports, "getInitialsOrAcronym", {
217
223
  enumerable: true,
218
224
  get: function () {
@@ -261,6 +267,12 @@ Object.defineProperty(exports, "getNumberAbbreviation", {
261
267
  return _formatters.getNumberAbbreviation;
262
268
  }
263
269
  });
270
+ Object.defineProperty(exports, "getPreferredScrollBehavior", {
271
+ enumerable: true,
272
+ get: function () {
273
+ return _interactionsHelper.getPreferredScrollBehavior;
274
+ }
275
+ });
264
276
  Object.defineProperty(exports, "getRandomBetweenExclusive", {
265
277
  enumerable: true,
266
278
  get: function () {
@@ -291,6 +303,18 @@ Object.defineProperty(exports, "getRoundedMedian", {
291
303
  return _arrayHelpers.getRoundedMedian;
292
304
  }
293
305
  });
306
+ Object.defineProperty(exports, "getScrollSettings", {
307
+ enumerable: true,
308
+ get: function () {
309
+ return _interactionsHelper.getScrollSettings;
310
+ }
311
+ });
312
+ Object.defineProperty(exports, "getUrlExtension", {
313
+ enumerable: true,
314
+ get: function () {
315
+ return _fileHelpers.getUrlExtension;
316
+ }
317
+ });
294
318
  Object.defineProperty(exports, "hashCode", {
295
319
  enumerable: true,
296
320
  get: function () {
@@ -411,6 +435,24 @@ Object.defineProperty(exports, "pluralizeIfNeeded", {
411
435
  return _stringHelpers.pluralizeIfNeeded;
412
436
  }
413
437
  });
438
+ Object.defineProperty(exports, "prefersReducedMotion", {
439
+ enumerable: true,
440
+ get: function () {
441
+ return _interactionsHelper.prefersReducedMotion;
442
+ }
443
+ });
444
+ Object.defineProperty(exports, "readFileAsArrayBuffer", {
445
+ enumerable: true,
446
+ get: function () {
447
+ return _fileHelpers.readFileAsArrayBuffer;
448
+ }
449
+ });
450
+ Object.defineProperty(exports, "readFileAsText", {
451
+ enumerable: true,
452
+ get: function () {
453
+ return _fileHelpers.readFileAsText;
454
+ }
455
+ });
414
456
  Object.defineProperty(exports, "renderIcon", {
415
457
  enumerable: true,
416
458
  get: function () {
@@ -470,6 +512,8 @@ var _arrayHelpers = require("./arrayHelpers");
470
512
  var _dataHelpers = require("./dataHelpers");
471
513
  var _dateHelpers = require("./dateHelpers");
472
514
  var _formatters = require("./formatters");
515
+ var _fileHelpers = require("./fileHelpers");
516
+ var _interactionsHelper = require("./interactionsHelper");
473
517
  var _numberHelpers = require("./numberHelpers");
474
518
  var _stringHelpers = require("./stringHelpers");
475
519
  var _objectHelpers = require("./objectHelpers");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_ageHelpers","require","_arrayHelpers","_dataHelpers","_dateHelpers","_formatters","_numberHelpers","_stringHelpers","_objectHelpers","_iconHelpers"],"sources":["../../../src/helpers/index.ts"],"sourcesContent":["export {\n getMinAge,\n getMaxAge,\n getMinAndMaxAges,\n validateBirthdate,\n isDateEntryComplete,\n getAgeInWeeks,\n getAgeInYears\n} from './ageHelpers';\n\nexport {\n binaryFindInArray,\n addAndSortArray,\n moveItemInArrayMutate,\n moveItemInArrayCopy,\n getRandomItemFromArray,\n getItemIndexWithinArray,\n getRoundedMedian,\n getMostOccurringBoolean,\n cssClassesArrayToString\n} from './arrayHelpers';\n\nexport {\n transformPlacesData,\n extractNamePieces\n} from './dataHelpers';\nexport type { NamePieces } from './dataHelpers';\n\nexport {\n dateToShortIsoString,\n isValidDate,\n dateToShortReadableDate,\n dateToShortReadableMonth,\n timeStampToShortReadableDate,\n dateToReadableTime,\n dateToShortReadableDateTime,\n getLastDateOfMonth,\n daysSince\n} from './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 './formatters';\n\nexport {\n getRandomNumberBelow,\n getRandomBetweenInclusive,\n getRandomBetweenExclusive,\n hashCode,\n roundToDecimal,\n formatNumberToMinDigits,\n formatDigitalTime\n} from './numberHelpers';\n\nexport {\n richTextParser,\n capitalize,\n capitalizeFirstLetter,\n lowerCaseFirstLetter,\n getCharacterCount,\n clampToGraphemeMax,\n useAnInsteadOfA,\n splitCamelCase,\n pluralize,\n pluralizeIfNeeded,\n getInitialsOrAcronym\n} from './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 './objectHelpers';\nexport type {\n DeepMergeObjectsArgs,\n MakeInheritanceObjectArgs,\n UpdateNestedPropertyArgs\n} from './objectHelpers';\n\nexport {\n renderIcon,\n isSvgIconDefinition,\n isIconProps,\n isEmptyIconSource\n} from './iconHelpers';\nexport type {\n IconSource,\n RenderIconOptions,\n SvgIconDefinition,\n SvgIconSize\n} from './iconHelpers';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAUA,IAAAC,aAAA,GAAAD,OAAA;AAYA,IAAAE,YAAA,GAAAF,OAAA;AAMA,IAAAG,YAAA,GAAAH,OAAA;AAYA,IAAAI,WAAA,GAAAJ,OAAA;AAgBA,IAAAK,cAAA,GAAAL,OAAA;AAUA,IAAAM,cAAA,GAAAN,OAAA;AAcA,IAAAO,cAAA,GAAAP,OAAA;AAuBA,IAAAQ,YAAA,GAAAR,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_ageHelpers","require","_arrayHelpers","_dataHelpers","_dateHelpers","_formatters","_fileHelpers","_interactionsHelper","_numberHelpers","_stringHelpers","_objectHelpers","_iconHelpers"],"sources":["../../../src/helpers/index.ts"],"sourcesContent":["export {\n getMinAge,\n getMaxAge,\n getMinAndMaxAges,\n validateBirthdate,\n isDateEntryComplete,\n getAgeInWeeks,\n getAgeInYears\n} from './ageHelpers';\n\nexport {\n binaryFindInArray,\n addAndSortArray,\n moveItemInArrayMutate,\n moveItemInArrayCopy,\n getRandomItemFromArray,\n getItemIndexWithinArray,\n getRoundedMedian,\n getMostOccurringBoolean,\n cssClassesArrayToString\n} from './arrayHelpers';\n\nexport {\n transformPlacesData,\n extractNamePieces\n} from './dataHelpers';\nexport type { NamePieces } from './dataHelpers';\n\nexport {\n dateToShortIsoString,\n isValidDate,\n dateToShortReadableDate,\n dateToShortReadableMonth,\n timeStampToShortReadableDate,\n dateToReadableTime,\n dateToShortReadableDateTime,\n getLastDateOfMonth,\n daysSince\n} from './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 './formatters';\n\nexport {\n getFileExtension,\n getUrlExtension,\n readFileAsText,\n readFileAsArrayBuffer\n} from './fileHelpers';\n\nexport {\n prefersReducedMotion,\n getPreferredScrollBehavior,\n getScrollSettings\n} from './interactionsHelper';\nexport type { ScrollSettings } from './interactionsHelper';\n\nexport {\n getRandomNumberBelow,\n getRandomBetweenInclusive,\n getRandomBetweenExclusive,\n hashCode,\n roundToDecimal,\n formatNumberToMinDigits,\n formatDigitalTime\n} from './numberHelpers';\n\nexport {\n richTextParser,\n capitalize,\n capitalizeFirstLetter,\n lowerCaseFirstLetter,\n getCharacterCount,\n clampToGraphemeMax,\n useAnInsteadOfA,\n splitCamelCase,\n pluralize,\n pluralizeIfNeeded,\n getInitialsOrAcronym\n} from './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 './objectHelpers';\nexport type {\n DeepMergeObjectsArgs,\n MakeInheritanceObjectArgs,\n UpdateNestedPropertyArgs\n} from './objectHelpers';\n\nexport {\n renderIcon,\n isSvgIconDefinition,\n isIconProps,\n isEmptyIconSource\n} from './iconHelpers';\nexport type {\n IconSource,\n RenderIconOptions,\n SvgIconDefinition,\n SvgIconSize\n} from './iconHelpers';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAUA,IAAAC,aAAA,GAAAD,OAAA;AAYA,IAAAE,YAAA,GAAAF,OAAA;AAMA,IAAAG,YAAA,GAAAH,OAAA;AAYA,IAAAI,WAAA,GAAAJ,OAAA;AAgBA,IAAAK,YAAA,GAAAL,OAAA;AAOA,IAAAM,mBAAA,GAAAN,OAAA;AAOA,IAAAO,cAAA,GAAAP,OAAA;AAUA,IAAAQ,cAAA,GAAAR,OAAA;AAcA,IAAAS,cAAA,GAAAT,OAAA;AAuBA,IAAAU,YAAA,GAAAV,OAAA","ignoreList":[]}
@@ -3,7 +3,14 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getScrollSettings = void 0;
6
+ exports.prefersReducedMotion = exports.getScrollSettings = exports.getPreferredScrollBehavior = void 0;
7
+ // True when the user has asked the operating system to minimise non-essential motion.
8
+ const prefersReducedMotion = () => typeof window !== 'undefined' && window.matchMedia?.('(prefers-reduced-motion: reduce)').matches === true;
9
+
10
+ // Scroll behaviour for scrollIntoView / scrollTo that respects the reduced-motion preference.
11
+ exports.prefersReducedMotion = prefersReducedMotion;
12
+ const getPreferredScrollBehavior = () => prefersReducedMotion() ? 'auto' : 'smooth';
13
+ exports.getPreferredScrollBehavior = getPreferredScrollBehavior;
7
14
  const getScrollSettings = event => {
8
15
  const domNode = event.target;
9
16
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"interactionsHelper.js","names":["getScrollSettings","event","domNode","target","scrollHeight","clientHeight","scrollLeft","scrollTop","scrollWidth","clientWidth","hasVerticalScroller","hasHorizontalScroller","scrollerAtBottom","scrollerAtTop","scrollerAtLeft","scrollerAtRight","exports"],"sources":["../../../src/helpers/interactionsHelper.ts"],"sourcesContent":["export interface ScrollSettings {\n scrollHeight: number;\n clientHeight: number;\n scrollLeft: number;\n scrollTop: number;\n scrollWidth: number;\n clientWidth: number;\n hasVerticalScroller: boolean;\n hasHorizontalScroller: boolean;\n scrollerAtBottom: boolean;\n scrollerAtTop: boolean;\n scrollerAtLeft: boolean;\n scrollerAtRight: boolean;\n event: Event;\n}\n\nexport const getScrollSettings = (event: Event): ScrollSettings => {\n const domNode = event.target as HTMLElement;\n\n const {\n scrollHeight,\n clientHeight,\n scrollLeft,\n scrollTop,\n scrollWidth,\n clientWidth\n } = domNode;\n\n const hasVerticalScroller = scrollHeight > clientHeight;\n const hasHorizontalScroller = scrollWidth > clientWidth;\n\n const scrollerAtBottom = scrollTop + clientHeight + 100 >= scrollHeight;\n const scrollerAtTop = scrollTop <= 0;\n const scrollerAtLeft = scrollLeft <= 0;\n const scrollerAtRight = scrollLeft + clientWidth + 100 >= scrollWidth;\n\n return {\n scrollHeight,\n scrollLeft,\n clientHeight,\n clientWidth,\n hasVerticalScroller,\n hasHorizontalScroller,\n scrollTop,\n scrollWidth,\n scrollerAtBottom,\n scrollerAtTop,\n scrollerAtLeft,\n scrollerAtRight,\n event\n } as ScrollSettings;\n};\n"],"mappings":";;;;;;AAgBO,MAAMA,iBAAiB,GAAIC,KAAY,IAAqB;EACjE,MAAMC,OAAO,GAAGD,KAAK,CAACE,MAAqB;EAE3C,MAAM;IACJC,YAAY;IACZC,YAAY;IACZC,UAAU;IACVC,SAAS;IACTC,WAAW;IACXC;EACF,CAAC,GAAGP,OAAO;EAEX,MAAMQ,mBAAmB,GAAGN,YAAY,GAAGC,YAAY;EACvD,MAAMM,qBAAqB,GAAGH,WAAW,GAAGC,WAAW;EAEvD,MAAMG,gBAAgB,GAAGL,SAAS,GAAGF,YAAY,GAAG,GAAG,IAAID,YAAY;EACvE,MAAMS,aAAa,GAAGN,SAAS,IAAI,CAAC;EACpC,MAAMO,cAAc,GAAGR,UAAU,IAAI,CAAC;EACtC,MAAMS,eAAe,GAAGT,UAAU,GAAGG,WAAW,GAAG,GAAG,IAAID,WAAW;EAErE,OAAO;IACLJ,YAAY;IACZE,UAAU;IACVD,YAAY;IACZI,WAAW;IACXC,mBAAmB;IACnBC,qBAAqB;IACrBJ,SAAS;IACTC,WAAW;IACXI,gBAAgB;IAChBC,aAAa;IACbC,cAAc;IACdC,eAAe;IACfd;EACF,CAAC;AACH,CAAC;AAACe,OAAA,CAAAhB,iBAAA,GAAAA,iBAAA","ignoreList":[]}
1
+ {"version":3,"file":"interactionsHelper.js","names":["prefersReducedMotion","window","matchMedia","matches","exports","getPreferredScrollBehavior","getScrollSettings","event","domNode","target","scrollHeight","clientHeight","scrollLeft","scrollTop","scrollWidth","clientWidth","hasVerticalScroller","hasHorizontalScroller","scrollerAtBottom","scrollerAtTop","scrollerAtLeft","scrollerAtRight"],"sources":["../../../src/helpers/interactionsHelper.ts"],"sourcesContent":["// True when the user has asked the operating system to minimise non-essential motion.\nexport const prefersReducedMotion = (): boolean =>\n typeof window !== 'undefined' && window.matchMedia?.('(prefers-reduced-motion: reduce)').matches === true;\n\n// Scroll behaviour for scrollIntoView / scrollTo that respects the reduced-motion preference.\nexport const getPreferredScrollBehavior = (): ScrollBehavior => (prefersReducedMotion() ? 'auto' : 'smooth');\n\nexport interface ScrollSettings {\n scrollHeight: number;\n clientHeight: number;\n scrollLeft: number;\n scrollTop: number;\n scrollWidth: number;\n clientWidth: number;\n hasVerticalScroller: boolean;\n hasHorizontalScroller: boolean;\n scrollerAtBottom: boolean;\n scrollerAtTop: boolean;\n scrollerAtLeft: boolean;\n scrollerAtRight: boolean;\n event: Event;\n}\n\nexport const getScrollSettings = (event: Event): ScrollSettings => {\n const domNode = event.target as HTMLElement;\n\n const {\n scrollHeight,\n clientHeight,\n scrollLeft,\n scrollTop,\n scrollWidth,\n clientWidth\n } = domNode;\n\n const hasVerticalScroller = scrollHeight > clientHeight;\n const hasHorizontalScroller = scrollWidth > clientWidth;\n\n const scrollerAtBottom = scrollTop + clientHeight + 100 >= scrollHeight;\n const scrollerAtTop = scrollTop <= 0;\n const scrollerAtLeft = scrollLeft <= 0;\n const scrollerAtRight = scrollLeft + clientWidth + 100 >= scrollWidth;\n\n return {\n scrollHeight,\n scrollLeft,\n clientHeight,\n clientWidth,\n hasVerticalScroller,\n hasHorizontalScroller,\n scrollTop,\n scrollWidth,\n scrollerAtBottom,\n scrollerAtTop,\n scrollerAtLeft,\n scrollerAtRight,\n event\n } as ScrollSettings;\n};\n"],"mappings":";;;;;;AAAA;AACO,MAAMA,oBAAoB,GAAGA,CAAA,KAClC,OAAOC,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACC,UAAU,GAAG,kCAAkC,CAAC,CAACC,OAAO,KAAK,IAAI;;AAE3G;AAAAC,OAAA,CAAAJ,oBAAA,GAAAA,oBAAA;AACO,MAAMK,0BAA0B,GAAGA,CAAA,KAAuBL,oBAAoB,CAAC,CAAC,GAAG,MAAM,GAAG,QAAS;AAACI,OAAA,CAAAC,0BAAA,GAAAA,0BAAA;AAkBtG,MAAMC,iBAAiB,GAAIC,KAAY,IAAqB;EACjE,MAAMC,OAAO,GAAGD,KAAK,CAACE,MAAqB;EAE3C,MAAM;IACJC,YAAY;IACZC,YAAY;IACZC,UAAU;IACVC,SAAS;IACTC,WAAW;IACXC;EACF,CAAC,GAAGP,OAAO;EAEX,MAAMQ,mBAAmB,GAAGN,YAAY,GAAGC,YAAY;EACvD,MAAMM,qBAAqB,GAAGH,WAAW,GAAGC,WAAW;EAEvD,MAAMG,gBAAgB,GAAGL,SAAS,GAAGF,YAAY,GAAG,GAAG,IAAID,YAAY;EACvE,MAAMS,aAAa,GAAGN,SAAS,IAAI,CAAC;EACpC,MAAMO,cAAc,GAAGR,UAAU,IAAI,CAAC;EACtC,MAAMS,eAAe,GAAGT,UAAU,GAAGG,WAAW,GAAG,GAAG,IAAID,WAAW;EAErE,OAAO;IACLJ,YAAY;IACZE,UAAU;IACVD,YAAY;IACZI,WAAW;IACXC,mBAAmB;IACnBC,qBAAqB;IACrBJ,SAAS;IACTC,WAAW;IACXI,gBAAgB;IAChBC,aAAa;IACbC,cAAc;IACdC,eAAe;IACfd;EACF,CAAC;AACH,CAAC;AAACH,OAAA,CAAAE,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -140,25 +140,39 @@ const makeInheritanceObject = ({
140
140
  return `{${inheritanceObjectPieces.join(', ')}}`;
141
141
  };
142
142
  exports.makeInheritanceObject = makeInheritanceObject;
143
+ // Path segments that would reach an object's prototype rather than its own data.
144
+ const PROTOTYPE_PATH_SEGMENTS = new Set(['__proto__', 'prototype', 'constructor']);
145
+
146
+ /*
147
+ Sets a value at a dot-separated path, creating any missing intermediate objects. Paths often come
148
+ from form field names or JSON keys, so segments that would reach a prototype are rejected:
149
+ otherwise "__proto__.isAdmin" would set isAdmin on every object in the application.
150
+ */
143
151
  const updateNestedProperty = ({
144
152
  jsonObject,
145
153
  propertyPath,
146
154
  newValue
147
155
  }) => {
148
156
  const pathPieces = propertyPath.split('.');
149
- const numPieces = pathPieces.length;
150
- if (numPieces === 1) {
151
- jsonObject[propertyPath] = newValue;
152
- return jsonObject;
157
+ if (pathPieces.some(piece => PROTOTYPE_PATH_SEGMENTS.has(piece))) {
158
+ throw new TypeError(`Refusing to update a prototype through the path "${propertyPath}".`);
153
159
  }
154
160
  let currentBranch = jsonObject;
155
- pathPieces.forEach((piece, index) => {
156
- if (index === numPieces - 1) {
157
- currentBranch[piece] = newValue;
158
- } else if (currentBranch[piece]) {
159
- currentBranch = currentBranch[piece];
161
+ pathPieces.slice(0, -1).forEach(piece => {
162
+ const descriptor = Object.getOwnPropertyDescriptor(currentBranch, piece);
163
+ let nextBranch = descriptor?.value;
164
+ if (!descriptor || typeof nextBranch !== 'object' || nextBranch === null) {
165
+ nextBranch = {};
166
+ Object.defineProperty(currentBranch, piece, {
167
+ value: nextBranch,
168
+ writable: true,
169
+ enumerable: true,
170
+ configurable: true
171
+ });
160
172
  }
173
+ currentBranch = nextBranch;
161
174
  });
175
+ currentBranch[pathPieces[pathPieces.length - 1]] = newValue;
162
176
  return jsonObject;
163
177
  };
164
178
  exports.updateNestedProperty = updateNestedProperty;
@@ -1 +1 @@
1
- {"version":3,"file":"objectHelpers.js","names":["_react","_interopRequireDefault","require","_stringHelpers","objectsAreTheSame","obj1","obj2","JsonStringifySorted","obj","keys","JSON","stringify","key","value","Object","sort","exports","isAnObject","Array","isArray","createCompareValueOverride","compareValue","isReactElement","val","React","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","splitCamelCase","getBranchFromPath","path","deepRemoveProps","propsToRemove","item","newObj","_default","default"],"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":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAD,OAAA;AAEO,MAAME,iBAAiB,GAAGA,CAACC,IAAY,EAAEC,IAAY,KAAc;EACxE,MAAMC,mBAAmB,GAAIC,GAAW,IAAa;IACnD,MAAMC,IAA6B,GAAG,CAAC,CAAC;IACxCC,IAAI,CAACC,SAAS,CAACH,GAAG,EAAE,CAACI,GAAG,EAAEC,KAAK,KAAK;MAClCJ,IAAI,CAACG,GAAG,CAAC,GAAG,IAAI;MAChB,OAAOC,KAAK;IACd,CAAC,CAAC;IACF,OAAOH,IAAI,CAACC,SAAS,CAACH,GAAG,EAAEM,MAAM,CAACL,IAAI,CAACA,IAAI,CAAC,CAACM,IAAI,CAAC,CAAC,CAAC;EACtD,CAAC;EACD,OAAOR,mBAAmB,CAACF,IAAI,CAAC,KAAKE,mBAAmB,CAACD,IAAI,CAAC;AAChE,CAAC;AAACU,OAAA,CAAAZ,iBAAA,GAAAA,iBAAA;AAEK,MAAMa,UAAU,GAAIJ,KAAc,IAAcA,KAAK,KAAK,IAAI,IAAI,OAAOA,KAAK,KAAK,WAAW,IAAI,CAACK,KAAK,CAACC,OAAO,CAACN,KAAK,CAAC,IAAI,OAAOA,KAAK,KAAK,QAAQ;AAACG,OAAA,CAAAC,UAAA,GAAAA,UAAA;AAErJ,MAAMG,0BAA0B,GAAGA,CAACR,GAAW,EAAES,YAAiB,KAAa,GAAIT,GAAG,IAAMF,IAAI,CAACC,SAAS,CAACU,YAAY,CAAC,EAAG;AAACL,OAAA,CAAAI,0BAAA,GAAAA,0BAAA;AAO5H,MAAME,cAAc,GAAIC,GAAY,IACzC,CAAC,CAACA,GAAG,iBAAIC,cAAK,CAACC,cAAc,CAACF,GAAG,CAAC;AAACP,OAAA,CAAAM,cAAA,GAAAA,cAAA;AAG9B,MAAMI,kBAAkB,GAAIb,KAAc,IAC/CA,KAAK,KAAK,IAAI,IACX,OAAOA,KAAK,KAAK,QAAQ,IACzB,CAACK,KAAK,CAACC,OAAO,CAACN,KAAK,CAAC,IACrB,eAACW,cAAK,CAACC,cAAc,CAACZ,KAAK,CAC/B;AAACG,OAAA,CAAAU,kBAAA,GAAAA,kBAAA;AAEK,MAAMC,aAAa,GAAIJ,GAAY,IAAqC;EAC7E,IAAIA,GAAG,KAAK,IAAI,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE,OAAO,KAAK;EACzD,IAAID,cAAc,CAACC,GAAG,CAAC,EAAE,OAAO,KAAK;EACrC,IAAIL,KAAK,CAACC,OAAO,CAACI,GAAG,CAAC,EAAE,OAAO,KAAK;EACpC,IAAIA,GAAG,YAAYK,IAAI,IAAIL,GAAG,YAAYM,MAAM,EAAE,OAAO,KAAK;EAC9D,MAAMC,KAAK,GAAGhB,MAAM,CAACiB,cAAc,CAACR,GAAG,CAAC;EACxC,OAAOO,KAAK,KAAKhB,MAAM,CAACkB,SAAS,IAAIF,KAAK,KAAK,IAAI;AACrD,CAAC;AAACd,OAAA,CAAAW,aAAA,GAAAA,aAAA;AAEK,SAASM,gBAAgBA,CAC9B;EAAEC,UAAU;EAAEC;AAAqC,CAAC,EAC7C;EACP,MAAMC,SAAS,GAAGA,CAAC,GAAGC,OAAiB,KACrCA,OAAO,CAACC,MAAM,CAAsB,CAACC,GAAG,EAAE/B,GAAG,KAAK;IAChDM,MAAM,CAACL,IAAI,CAACD,GAAG,CAAC,CAACgC,OAAO,CAAE5B,GAAG,IAAK;MAChC,MAAM6B,IAAI,GAAGF,GAAG,CAAC3B,GAAG,CAAC;MACrB,MAAM8B,IAAI,GAAIlC,GAAG,CAASI,GAAG,CAAC;;MAE9B;MACA,IAAIU,cAAc,CAACmB,IAAI,CAAC,IAAInB,cAAc,CAACoB,IAAI,CAAC,EAAE;QAChDH,GAAG,CAAC3B,GAAG,CAAC,GAAG8B,IAAI;QACf;MACF;;MAEA;MACA,IAAIxB,KAAK,CAACC,OAAO,CAACsB,IAAI,CAAC,IAAIvB,KAAK,CAACC,OAAO,CAACuB,IAAI,CAAC,EAAE;QAC9CH,GAAG,CAAC3B,GAAG,CAAC,GAAG,CAAC,GAAG6B,IAAI,EAAE,GAAGC,IAAI,CAAC;QAC7B;MACF;;MAEA;MACA,IAAIf,aAAa,CAACc,IAAI,CAAC,IAAId,aAAa,CAACe,IAAI,CAAC,EAAE;QAC9CH,GAAG,CAAC3B,GAAG,CAAC,GAAGwB,SAAS,CAACK,IAAI,EAAEC,IAAI,CAAC;QAChC;MACF;;MAEA;MACAH,GAAG,CAAC3B,GAAG,CAAC,GAAG8B,IAAI;IACjB,CAAC,CAAC;IACF,OAAOH,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EAER,OAAOH,SAAS,CAACF,UAAU,IAAI,CAAC,CAAC,EAAEC,cAAc,IAAI,CAAC,CAAC,CAAC;AAC1D;AAEO,MAAMQ,oBAAoB,GAAGA,CAAC;EAAET,UAAU;EAAEC;AAAqC,CAAC,KAAa;EACpG,MAAMS,aAAa,GAAGA,CAAC,GAAGP,OAAiB,KAAaA,OAAO,CAACC,MAAM,CAAC,CAACG,IAAS,EAAEjC,GAAQ,KAAK;IAC9FM,MAAM,CAACL,IAAI,CAACD,GAAG,CAAC,CAACgC,OAAO,CAAE5B,GAAG,IAAK;MAChC,MAAMiC,IAAI,GAAGJ,IAAI,CAAC7B,GAAG,CAAC;MACtB,MAAMkC,IAAI,GAAGtC,GAAG,CAACI,GAAG,CAAC;MAErB,IAAIM,KAAK,CAACC,OAAO,CAAC0B,IAAI,CAAC,IAAI3B,KAAK,CAACC,OAAO,CAAC2B,IAAI,CAAC,EAAE;QAC9CL,IAAI,CAAC7B,GAAG,CAAC,GAAGkC,IAAI;MAClB,CAAC,MAAM,IAAI7B,UAAU,CAAC4B,IAAI,CAAC,IAAI5B,UAAU,CAAC6B,IAAI,CAAC,EAAE;QAC/CL,IAAI,CAAC7B,GAAG,CAAC,GAAGgC,aAAa,CAACC,IAAI,EAAEC,IAAI,CAAC;MACvC,CAAC,MAAM,IAAID,IAAI,IAAI,CAACC,IAAI,EAAE;QACxBL,IAAI,CAAC7B,GAAG,CAAC,GAAGiC,IAAI;MAClB,CAAC,MAAM;QACLJ,IAAI,CAAC7B,GAAG,CAAC,GAAGkC,IAAI;MAClB;IACF,CAAC,CAAC;IACF,OAAOL,IAAI;EACb,CAAC,EAAE,CAAC,CAAC,CAAC;EAEN,OAAOG,aAAa,CAACV,UAAU,EAAEC,cAAc,CAAC;AAClD,CAAC;AAACnB,OAAA,CAAA2B,oBAAA,GAAAA,oBAAA;AAWK,MAAMI,qBAAqB,GAAGA,CACnC;EACEC,IAAI;EACJC,SAAS,GAAG,KAAK;EACjBC,cAAc;EACdC,OAAO;EACPC,QAAQ,GAAG,EAAE;EACbC,iBAAiB,GAAG;AACK,CAAC,KACjB;EACX,MAAMC,cAAc,GAAGA,CAAA,KAAc;IACnC,IAAIF,QAAQ,CAACG,MAAM,GAAG,CAAC,EAAE;MACvB,OAAO,MAAOL,cAAc,IAAME,QAAQ,CAACI,IAAI,CAAC,GAAG,CAAC,EAAG;IACzD;IACA,OAAO,MAAON,cAAc,EAAG;EACjC,CAAC;EAED,MAAMO,gBAAgB,GAAGA,CAAA,KAAe;IACtC,IAAIR,SAAS,EAAE,OAAO,KAAK;IAC3B,IAAIG,QAAQ,CAACG,MAAM,GAAG,CAAC,IAAIF,iBAAiB,CAACE,MAAM,GAAG,CAAC,EAAE;MACvD,OAAOF,iBAAiB,CAACK,OAAO,CAACN,QAAQ,CAACA,QAAQ,CAACG,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxE;IACA,OAAO,IAAI;EACb,CAAC;EAED,MAAMI,uBAAiC,GAAG,EAAE;EAC5C,IAAIF,gBAAgB,CAAC,CAAC,EAAE;IACtBE,uBAAuB,CAACC,IAAI,CAACN,cAAc,CAAC,CAAC,CAAC;EAChD;EAEAxC,MAAM,CAAC+C,OAAO,CAACV,OAAO,CAAC,CAACX,OAAO,CAAC,CAAC,CAAC5B,GAAG,EAAES,YAAY,CAAC,KAAK;IACvD,IAAI,EAAET,GAAG,IAAIoC,IAAI,CAAC,EAAE;MAClBW,uBAAuB,CAACC,IAAI,CAACxC,0BAA0B,CAACR,GAAG,EAAES,YAAY,CAAC,CAAC;IAC7E,CAAC,MAAM,IAAI,OAAO2B,IAAI,CAACpC,GAAG,CAAC,KAAK,WAAW,IAAI,CAACR,iBAAiB,CAAC4C,IAAI,CAACpC,GAAG,CAAC,EAAES,YAAY,CAAC,EAAE;MAC1F,IAAIJ,UAAU,CAACI,YAAY,CAAC,EAAE;QAC5BsC,uBAAuB,CAACC,IAAI,CAC1B,GAAIhD,GAAG,IACLmC,qBAAqB,CAAC;UACpBC,IAAI,EAAEA,IAAI,CAACpC,GAAG,CAAC;UACfsC,cAAc;UACdC,OAAO,EAAE9B,YAAY;UACrB+B,QAAQ,EAAE,CAAC,GAAGA,QAAQ,EAAExC,GAAG,CAAC;UAC5ByC;QACF,CAAC,CAAC,EAEN,CAAC;MACH,CAAC,MAAM;QACLM,uBAAuB,CAACC,IAAI,CAACxC,0BAA0B,CAACR,GAAG,EAAES,YAAY,CAAC,CAAC;MAC7E;IACF;EACF,CAAC,CAAC;EAEF,OAAO,IAAKsC,uBAAuB,CAACH,IAAI,CAAC,IAAI,CAAC,GAAI;AACpD,CAAC;AAACxC,OAAA,CAAA+B,qBAAA,GAAAA,qBAAA;AAQK,MAAMe,oBAAoB,GAAGA,CAAC;EAAEC,UAAU;EAAEC,YAAY;EAAEC;AAAmC,CAAC,KAAa;EAChH,MAAMC,UAAU,GAAGF,YAAY,CAACG,KAAK,CAAC,GAAG,CAAC;EAC1C,MAAMC,SAAS,GAAGF,UAAU,CAACX,MAAM;EAEnC,IAAIa,SAAS,KAAK,CAAC,EAAE;IACnBL,UAAU,CAACC,YAAY,CAAC,GAAGC,QAAQ;IACnC,OAAOF,UAAU;EACnB;EAEA,IAAIM,aAAa,GAAGN,UAAU;EAE9BG,UAAU,CAAC1B,OAAO,CAAC,CAAC8B,KAAK,EAAEC,KAAK,KAAK;IACnC,IAAIA,KAAK,KAAKH,SAAS,GAAG,CAAC,EAAE;MAC3BC,aAAa,CAACC,KAAK,CAAC,GAAGL,QAAQ;IACjC,CAAC,MAAM,IAAII,aAAa,CAACC,KAAK,CAAC,EAAE;MAC/BD,aAAa,GAAGA,aAAa,CAACC,KAAK,CAAC;IACtC;EACF,CAAC,CAAC;EAEF,OAAOP,UAAU;AACnB,CAAC;AAAC/C,OAAA,CAAA8C,oBAAA,GAAAA,oBAAA;AAEK,MAAMU,YAAY,GAAGA,CAACT,UAAsB,EAAEU,MAGpD,KAAyB;EACxB,MAAMC,MAAkB,GAAG,CAAC,CAAC;;EAE7B;EACA,MAAMC,cAAc,GAAGjE,IAAI,CAACC,SAAS,CAACoD,UAAU,CAAC;EACjD,MAAM;IACJa,MAAM;IACNC;EACF,CAAC,GAAGJ,MAAM;EAEV,MAAMK,gBAAgB,GAAGD,aAAa,GAAGF,cAAc,GAAGA,cAAc,CAACI,WAAW,CAAC,CAAC;EACtF,MAAMC,UAAU,GAAGH,aAAa,IAAI,OAAOD,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAGA,MAAM,CAACG,WAAW,CAAC,CAAC;EAE9F,MAAME,kBAAkB,GAAIC,IAAwB,IAAK;IACvD,MAAMtE,GAAG,GAAGE,MAAM,CAACL,IAAI,CAACmE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM/D,KAAK,GAAGC,MAAM,CAACqE,MAAM,CAACP,MAAM,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAMQ,QAAQ,GAAGP,aAAa,GAAGjE,GAAG,GAAGA,GAAG,CAACyE,QAAQ,CAAC,CAAC,CAACN,WAAW,CAAC,CAAC;IAEnE,MAAMO,UAAU,GAAGT,aAAa,GAAGhE,KAAK,GAAGA,KAAK,CAACwE,QAAQ,CAAC,CAAC,CAACN,WAAW,CAAC,CAAC;IAEzE,MAAMQ,YAAY,GAAG,OAAOL,IAAI,KAAK,QAAQ,GAAGA,IAAI,GAAGxE,IAAI,CAACC,SAAS,CAACuE,IAAI,CAAC;IAE3E,OAAOK,YAAY,CAACC,QAAQ,CAACJ,QAAQ,CAAC,IAAIG,YAAY,CAACC,QAAQ,CAACF,UAAU,CAAC;EAC7E,CAAC;;EAED;EACA,IAAI,OAAOV,MAAM,KAAK,QAAQ,EAAE;IAAE;IAChC,IAAI,CAACK,kBAAkB,CAACH,gBAAgB,CAAC,EAAE;MACzC,OAAO,KAAK;IACd;EACF,CAAC,MAAM,IAAI,CAACA,gBAAgB,CAACU,QAAQ,CAACR,UAAU,CAACK,QAAQ,CAAC,CAAC,CAAC,EAAE;IAC5D,OAAO,KAAK;EACd;;EAEA;EACAvE,MAAM,CAAC+C,OAAO,CAACE,UAAU,CAAC,CAACvB,OAAO,CAAC,CAAC,CAAC5B,GAAG,EAAEC,KAAK,CAAC,KAAK;IACnD;;IAEA,MAAMuE,QAAQ,GAAGP,aAAa,GAAGjE,GAAG,GAAGA,GAAG,CAACmE,WAAW,CAAC,CAAC;IACxD,MAAMO,UAAU,GAAGT,aAAa,GAAGhE,KAAK,GAAGA,KAAK,EAAEwE,QAAQ,CAAC,CAAC,CAACN,WAAW,CAAC,CAAC;IAE1E,IAAI,OAAOlE,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE;MAC/C;MACA,MAAM4E,SAAS,GAAGjB,YAAY,CAAC3D,KAAK,EAAgB4D,MAAM,CAAC;MAC3D,IAAIgB,SAAS,IAAI3E,MAAM,CAACL,IAAI,CAACgF,SAAS,CAAC,CAAClC,MAAM,GAAG,CAAC,EAAE;QAClDmB,MAAM,CAAC9D,GAAG,CAAC,GAAG6E,SAAS;MACzB;IACF,CAAC,MAAM,IAAI,OAAOb,MAAM,KAAK,QAAQ,EAAE;MACrC,IAAIK,kBAAkB,CAAC;QAAErE,GAAG;QAAEC;MAAM,CAAC,CAAC,EAAE;QACtC6D,MAAM,CAAC9D,GAAG,CAAC,GAAGC,KAAK;MACrB;IACF,CAAC,MAAM,IAAIuE,QAAQ,CAACI,QAAQ,CAACR,UAAU,CAACK,QAAQ,CAAC,CAAC,CAAC,IAAIC,UAAU,EAAED,QAAQ,CAAC,CAAC,CAACG,QAAQ,CAACR,UAAU,CAACK,QAAQ,CAAC,CAAC,CAAC,EAAE;MAC7GX,MAAM,CAAC9D,GAAG,CAAC,GAAGC,KAAK;IACrB;EACF,CAAC,CAAC;EAEF,OAAOC,MAAM,CAACL,IAAI,CAACiE,MAAM,CAAC,CAACnB,MAAM,GAAG,CAAC,GAAGmB,MAAM,GAAG,KAAK;AACxD,CAAC;AAAC1D,OAAA,CAAAwD,YAAA,GAAAA,YAAA;AAEK,MAAMkB,oBAAoB,GAAI3B,UAAsB,IAAK;EAC9D,IAAI4B,UAAoB,GAAG,EAAE;;EAE7B;EACA7E,MAAM,CAAC+C,OAAO,CAACE,UAAU,CAAC,CAACvB,OAAO,CAAC,CAAC,CAAC5B,GAAG,EAAEC,KAAK,CAAC,KAAK;IACnD8E,UAAU,CAAC/B,IAAI,CAAChD,GAAG,CAAC;IACpB,IAAI,OAAOC,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE;MAC/C,MAAM4E,SAAS,GAAGC,oBAAoB,CAAC7E,KAAmB,CAAC;MAC3D8E,UAAU,GAAG,CAAC,GAAGA,UAAU,EAAE,GAAGF,SAAS,CAAC;IAC5C;EACF,CAAC,CAAC;EAEF,OAAO,CAAC,GAAG,IAAIG,GAAG,CAACD,UAAU,CAAC,CAAC;AACjC,CAAC;AAAC3E,OAAA,CAAA0E,oBAAA,GAAAA,oBAAA;AAEK,MAAMG,4BAA4B,GAAI9B,UAAsB,IAAK;EACtE,MAAM+B,eAAe,GAAGJ,oBAAoB,CAAC3B,UAAU,CAAC;EACxD,OAAO+B,eAAe,CAACC,GAAG,CAAEC,SAAS,IAAK,IAAAC,6BAAc,EAACD,SAAS,CAAC,CAAC;AACtE,CAAC;AAAChF,OAAA,CAAA6E,4BAAA,GAAAA,4BAAA;AAEK,MAAMK,iBAAiB,GAAGA,CAAC1F,GAAQ,EAAE2F,IAAc,KAAUA,IAAI,CAAC7D,MAAM,CAAC,CAAC+B,aAAa,EAAEzD,GAAG,KAAKyD,aAAa,GAAGzD,GAAG,CAAC,EAAEJ,GAAG,CAAC;AAACQ,OAAA,CAAAkF,iBAAA,GAAAA,iBAAA;AAE5H,MAAME,eAAe,GAAGA,CAAC5F,GAAQ,EAAE6F,aAAuB,KAAU;EACzE,IAAInF,KAAK,CAACC,OAAO,CAACX,GAAG,CAAC,EAAE;IACtB,OAAOA,GAAG,CAACuF,GAAG,CAAEO,IAAI,IAAKF,eAAe,CAACE,IAAI,EAAED,aAAa,CAAC,CAAC;EAChE,CAAC,MAAM,IAAIpF,UAAU,CAACT,GAAG,CAAC,IAAIA,GAAG,KAAK,IAAI,EAAE;IAC1C,MAAM+F,MAAW,GAAG,CAAC,CAAC;IACtBzF,MAAM,CAAC+C,OAAO,CAACrD,GAAG,CAAC,CAACgC,OAAO,CAAC,CAAC,CAAC5B,GAAG,EAAEC,KAAK,CAAC,KAAK;MAC5C,IAAI,CAACwF,aAAa,CAACb,QAAQ,CAAC5E,GAAG,CAAC,EAAE;QAChC2F,MAAM,CAAC3F,GAAG,CAAC,GAAGwF,eAAe,CAACvF,KAAK,EAAEwF,aAAa,CAAC;MACrD;IACF,CAAC,CAAC;IACF,OAAOE,MAAM;EACf;EACA,OAAO/F,GAAG;AACZ,CAAC;AAACQ,OAAA,CAAAoF,eAAA,GAAAA,eAAA;AAAA,IAAAI,QAAA,GAAAxF,OAAA,CAAAyF,OAAA,GAEa;EACbrG,iBAAiB;EACjBa,UAAU;EACVG,0BAA0B;EAC1BE,cAAc;EACdI,kBAAkB;EAClBC,aAAa;EACbM,gBAAgB;EAChBU,oBAAoB;EACpBI,qBAAqB;EACrBe,oBAAoB;EACpBU,YAAY;EACZkB,oBAAoB;EACpBG,4BAA4B;EAC5BK,iBAAiB;EACjBE;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"objectHelpers.js","names":["_react","_interopRequireDefault","require","_stringHelpers","objectsAreTheSame","obj1","obj2","JsonStringifySorted","obj","keys","JSON","stringify","key","value","Object","sort","exports","isAnObject","Array","isArray","createCompareValueOverride","compareValue","isReactElement","val","React","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","splitCamelCase","getBranchFromPath","path","deepRemoveProps","propsToRemove","item","newObj","_default","default"],"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":[]}
@@ -5,14 +5,70 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.useAnInsteadOfA = exports.splitCamelCase = exports.richTextParser = exports.pluralizeIfNeeded = exports.pluralize = exports.lowerCaseFirstLetter = exports.getInitialsOrAcronym = exports.getCharacterCount = exports.clampToGraphemeMax = exports.capitalizeFirstLetter = exports.capitalize = void 0;
8
- var _htmlReactParser = _interopRequireDefault(require("html-react-parser"));
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _htmlReactParser = _interopRequireWildcard(require("html-react-parser"));
10
+ var _urlHelpers = require("./urlHelpers");
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ /*
13
+ Rich text is often stored content (a CMS or database field), so it is filtered against an
14
+ allowlist while it is parsed. Filtering happens in the parser's own tree, which works identically in
15
+ the browser and during server rendering (DOM-based sanitisers such as DOMPurify do nothing on the
16
+ server, where there is no DOM).
17
+ */
18
+ 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']);
19
+
20
+ // Removed together with their content; any other unknown element is unwrapped and its text kept.
21
+ 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']);
22
+
23
+ // `style` (CSS injection) and `id` (DOM clobbering of page globals) are deliberately absent.
24
+ const ALLOWED_ATTRIBUTES = {
25
+ '*': ['class', 'title', 'lang', 'dir'],
26
+ a: ['href', 'target', 'rel'],
27
+ img: ['src', 'alt', 'width', 'height'],
28
+ ol: ['start', 'type'],
29
+ td: ['colspan', 'rowspan'],
30
+ th: ['colspan', 'rowspan', 'scope'],
31
+ time: ['datetime']
32
+ };
33
+ const URL_ATTRIBUTES = new Set(['href', 'src']);
34
+ const sanitiseAttributes = element => {
35
+ const allowed = new Set([...ALLOWED_ATTRIBUTES['*'], ...(ALLOWED_ATTRIBUTES[element.name] ?? [])]);
36
+ Object.keys(element.attribs).forEach(name => {
37
+ const attribute = name.toLowerCase();
38
+ const isSafeUrl = !URL_ATTRIBUTES.has(attribute) || (0, _urlHelpers.getSafeLinkHref)(element.attribs[name]) !== undefined;
39
+ if (!allowed.has(attribute) || !isSafeUrl) {
40
+ delete element.attribs[name];
41
+ }
42
+ });
43
+ if (element.name === 'a' && element.attribs.target !== undefined) {
44
+ if (element.attribs.target === '_blank') {
45
+ // A page opened in a new tab must not be able to navigate this one.
46
+ element.attribs.rel = 'noopener noreferrer';
47
+ } else if (element.attribs.target !== '_self') {
48
+ delete element.attribs.target;
49
+ }
50
+ }
51
+ };
52
+ const richTextOptions = {
53
+ replace: domNode => {
54
+ if (!(domNode instanceof _htmlReactParser.Element)) {
55
+ return undefined;
56
+ }
57
+ const tagName = domNode.name.toLowerCase();
58
+ if (REMOVED_TAGS.has(tagName)) {
59
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment);
60
+ }
61
+ if (!ALLOWED_TAGS.has(tagName)) {
62
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (0, _htmlReactParser.domToReact)(domNode.children, richTextOptions));
63
+ }
64
+ sanitiseAttributes(domNode);
65
+ return undefined;
66
+ }
67
+ };
9
68
  const richTextParser = (richText, supportEscapedCharacters) => {
10
69
  // Adjusts text to replace line breaks with <br/> tags
11
70
  const adjustedText = richText.split('\r\n').join('<br/>');
12
- if (supportEscapedCharacters) {
13
- return (0, _htmlReactParser.default)(adjustedText);
14
- }
15
- return (0, _htmlReactParser.default)(richText);
71
+ return (0, _htmlReactParser.default)(supportEscapedCharacters ? adjustedText : richText, richTextOptions);
16
72
  };
17
73
 
18
74
  /**