@vuu-ui/vuu-utils 2.1.19-beta.2 → 2.1.19-beta.3

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 (438) hide show
  1. package/cjs/node_modules/@dnd-kit/abstract/index.js +1488 -0
  2. package/cjs/node_modules/@dnd-kit/abstract/index.js.map +1 -0
  3. package/cjs/node_modules/@dnd-kit/abstract/modifiers.js +85 -0
  4. package/cjs/node_modules/@dnd-kit/abstract/modifiers.js.map +1 -0
  5. package/cjs/node_modules/@dnd-kit/collision/dist/index.js +91 -0
  6. package/cjs/node_modules/@dnd-kit/collision/dist/index.js.map +1 -0
  7. package/cjs/node_modules/@dnd-kit/dom/index.js +1991 -0
  8. package/cjs/node_modules/@dnd-kit/dom/index.js.map +1 -0
  9. package/cjs/node_modules/@dnd-kit/dom/sortable.js +828 -0
  10. package/cjs/node_modules/@dnd-kit/dom/sortable.js.map +1 -0
  11. package/cjs/node_modules/@dnd-kit/dom/utilities.js +1389 -0
  12. package/cjs/node_modules/@dnd-kit/dom/utilities.js.map +1 -0
  13. package/cjs/node_modules/@dnd-kit/geometry/dist/index.js +310 -0
  14. package/cjs/node_modules/@dnd-kit/geometry/dist/index.js.map +1 -0
  15. package/cjs/node_modules/@dnd-kit/react/hooks.js +134 -0
  16. package/cjs/node_modules/@dnd-kit/react/hooks.js.map +1 -0
  17. package/cjs/node_modules/@dnd-kit/react/index.js +398 -0
  18. package/cjs/node_modules/@dnd-kit/react/index.js.map +1 -0
  19. package/cjs/node_modules/@dnd-kit/react/sortable.js +177 -0
  20. package/cjs/node_modules/@dnd-kit/react/sortable.js.map +1 -0
  21. package/cjs/node_modules/@dnd-kit/react/utilities.js +19 -0
  22. package/cjs/node_modules/@dnd-kit/react/utilities.js.map +1 -0
  23. package/cjs/node_modules/@dnd-kit/state/dist/index.js +280 -0
  24. package/cjs/node_modules/@dnd-kit/state/dist/index.js.map +1 -0
  25. package/cjs/node_modules/@preact/signals-core/dist/signals-core.js +11 -0
  26. package/cjs/node_modules/@preact/signals-core/dist/signals-core.js.map +1 -0
  27. package/cjs/packages/vuu-utils/src/Clock.js +62 -0
  28. package/cjs/packages/vuu-utils/src/Clock.js.map +1 -0
  29. package/cjs/packages/vuu-utils/src/PageVisibilityObserver.js +80 -0
  30. package/cjs/packages/vuu-utils/src/PageVisibilityObserver.js.map +1 -0
  31. package/cjs/packages/vuu-utils/src/ScaledDecimal.js +43 -0
  32. package/cjs/packages/vuu-utils/src/ScaledDecimal.js.map +1 -0
  33. package/cjs/packages/vuu-utils/src/ShellContext.js +13 -0
  34. package/cjs/packages/vuu-utils/src/ShellContext.js.map +1 -0
  35. package/cjs/packages/vuu-utils/src/ThemeProvider.js +85 -0
  36. package/cjs/packages/vuu-utils/src/ThemeProvider.js.map +1 -0
  37. package/cjs/packages/vuu-utils/src/array-utils.js +87 -0
  38. package/cjs/packages/vuu-utils/src/array-utils.js.map +1 -0
  39. package/cjs/packages/vuu-utils/src/box-utils.js +53 -0
  40. package/cjs/packages/vuu-utils/src/box-utils.js.map +1 -0
  41. package/cjs/packages/vuu-utils/src/column-utils.js +1066 -0
  42. package/cjs/packages/vuu-utils/src/column-utils.js.map +1 -0
  43. package/cjs/packages/vuu-utils/src/common-types.js +15 -0
  44. package/cjs/packages/vuu-utils/src/common-types.js.map +1 -0
  45. package/cjs/packages/vuu-utils/src/component-registry.js +144 -0
  46. package/cjs/packages/vuu-utils/src/component-registry.js.map +1 -0
  47. package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js +21 -0
  48. package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -0
  49. package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js +19 -0
  50. package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -0
  51. package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +33 -0
  52. package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -0
  53. package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +20 -0
  54. package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -0
  55. package/cjs/packages/vuu-utils/src/cookie-utils.js +22 -0
  56. package/cjs/packages/vuu-utils/src/cookie-utils.js.map +1 -0
  57. package/cjs/packages/vuu-utils/src/css-utils.js +9 -0
  58. package/cjs/packages/vuu-utils/src/css-utils.js.map +1 -0
  59. package/cjs/packages/vuu-utils/src/data-editing/DataEditingProvider.js +28 -0
  60. package/cjs/packages/vuu-utils/src/data-editing/DataEditingProvider.js.map +1 -0
  61. package/cjs/packages/vuu-utils/src/data-editing/EditButtons.js +64 -0
  62. package/cjs/packages/vuu-utils/src/data-editing/EditButtons.js.map +1 -0
  63. package/cjs/packages/vuu-utils/src/data-editing/EditSession.js +312 -0
  64. package/cjs/packages/vuu-utils/src/data-editing/EditSession.js.map +1 -0
  65. package/cjs/packages/vuu-utils/src/data-editing/edit-utils.js +51 -0
  66. package/cjs/packages/vuu-utils/src/data-editing/edit-utils.js.map +1 -0
  67. package/cjs/packages/vuu-utils/src/data-editing/useEditableTable.js +107 -0
  68. package/cjs/packages/vuu-utils/src/data-editing/useEditableTable.js.map +1 -0
  69. package/cjs/packages/vuu-utils/src/data-utils.js +110 -0
  70. package/cjs/packages/vuu-utils/src/data-utils.js.map +1 -0
  71. package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js +317 -0
  72. package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -0
  73. package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js +14 -0
  74. package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +1 -0
  75. package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js +40 -0
  76. package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -0
  77. package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js +218 -0
  78. package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js.map +1 -0
  79. package/cjs/packages/vuu-utils/src/date/date-utils.js +131 -0
  80. package/cjs/packages/vuu-utils/src/date/date-utils.js.map +1 -0
  81. package/cjs/packages/vuu-utils/src/date/dateTimePattern.js +26 -0
  82. package/cjs/packages/vuu-utils/src/date/dateTimePattern.js.map +1 -0
  83. package/cjs/packages/vuu-utils/src/date/formatter.js +82 -0
  84. package/cjs/packages/vuu-utils/src/date/formatter.js.map +1 -0
  85. package/cjs/packages/vuu-utils/src/date/types.js +32 -0
  86. package/cjs/packages/vuu-utils/src/date/types.js.map +1 -0
  87. package/cjs/packages/vuu-utils/src/debug-utils.js +34 -0
  88. package/cjs/packages/vuu-utils/src/debug-utils.js.map +1 -0
  89. package/cjs/packages/vuu-utils/src/event-emitter.js +113 -0
  90. package/cjs/packages/vuu-utils/src/event-emitter.js.map +1 -0
  91. package/cjs/packages/vuu-utils/src/feature-utils.js +139 -0
  92. package/cjs/packages/vuu-utils/src/feature-utils.js.map +1 -0
  93. package/cjs/packages/vuu-utils/src/filters/filter-utils.js +182 -0
  94. package/cjs/packages/vuu-utils/src/filters/filter-utils.js.map +1 -0
  95. package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js +69 -0
  96. package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -0
  97. package/cjs/packages/vuu-utils/src/form-utils.js +123 -0
  98. package/cjs/packages/vuu-utils/src/form-utils.js.map +1 -0
  99. package/cjs/packages/vuu-utils/src/formatting-utils.js +114 -0
  100. package/cjs/packages/vuu-utils/src/formatting-utils.js.map +1 -0
  101. package/cjs/packages/vuu-utils/src/getUniqueId.js +6 -0
  102. package/cjs/packages/vuu-utils/src/getUniqueId.js.map +1 -0
  103. package/cjs/packages/vuu-utils/src/group-utils.js +27 -0
  104. package/cjs/packages/vuu-utils/src/group-utils.js.map +1 -0
  105. package/cjs/packages/vuu-utils/src/html-utils.js +162 -0
  106. package/cjs/packages/vuu-utils/src/html-utils.js.map +1 -0
  107. package/cjs/packages/vuu-utils/src/index.js +481 -0
  108. package/cjs/packages/vuu-utils/src/index.js.map +1 -0
  109. package/cjs/packages/vuu-utils/src/input-utils.js +10 -0
  110. package/cjs/packages/vuu-utils/src/input-utils.js.map +1 -0
  111. package/cjs/packages/vuu-utils/src/invariant.js +13 -0
  112. package/cjs/packages/vuu-utils/src/invariant.js.map +1 -0
  113. package/cjs/packages/vuu-utils/src/itemToString.js +23 -0
  114. package/cjs/packages/vuu-utils/src/itemToString.js.map +1 -0
  115. package/cjs/packages/vuu-utils/src/json-utils.js +105 -0
  116. package/cjs/packages/vuu-utils/src/json-utils.js.map +1 -0
  117. package/cjs/packages/vuu-utils/src/keyboard-utils.js +30 -0
  118. package/cjs/packages/vuu-utils/src/keyboard-utils.js.map +1 -0
  119. package/cjs/packages/vuu-utils/src/keyset.js +72 -0
  120. package/cjs/packages/vuu-utils/src/keyset.js.map +1 -0
  121. package/cjs/packages/vuu-utils/src/list-utils.js +11 -0
  122. package/cjs/packages/vuu-utils/src/list-utils.js.map +1 -0
  123. package/cjs/packages/vuu-utils/src/local-storage-utils.js +35 -0
  124. package/cjs/packages/vuu-utils/src/local-storage-utils.js.map +1 -0
  125. package/cjs/packages/vuu-utils/src/logging-utils.js +65 -0
  126. package/cjs/packages/vuu-utils/src/logging-utils.js.map +1 -0
  127. package/cjs/packages/vuu-utils/src/module-utils.js +6 -0
  128. package/cjs/packages/vuu-utils/src/module-utils.js.map +1 -0
  129. package/cjs/packages/vuu-utils/src/nanoid/index.js +22 -0
  130. package/cjs/packages/vuu-utils/src/nanoid/index.js.map +1 -0
  131. package/cjs/packages/vuu-utils/src/perf-utils.js +35 -0
  132. package/cjs/packages/vuu-utils/src/perf-utils.js.map +1 -0
  133. package/cjs/packages/vuu-utils/src/promise-utils.js +42 -0
  134. package/cjs/packages/vuu-utils/src/promise-utils.js.map +1 -0
  135. package/cjs/packages/vuu-utils/src/protocol-message-utils.js +108 -0
  136. package/cjs/packages/vuu-utils/src/protocol-message-utils.js.map +1 -0
  137. package/cjs/packages/vuu-utils/src/range-utils.js +115 -0
  138. package/cjs/packages/vuu-utils/src/range-utils.js.map +1 -0
  139. package/cjs/packages/vuu-utils/src/react-utils.js +72 -0
  140. package/cjs/packages/vuu-utils/src/react-utils.js.map +1 -0
  141. package/cjs/packages/vuu-utils/src/round-decimal.js +131 -0
  142. package/cjs/packages/vuu-utils/src/round-decimal.js.map +1 -0
  143. package/cjs/packages/vuu-utils/src/row-utils.js +59 -0
  144. package/cjs/packages/vuu-utils/src/row-utils.js.map +1 -0
  145. package/cjs/packages/vuu-utils/src/selection-utils.js +34 -0
  146. package/cjs/packages/vuu-utils/src/selection-utils.js.map +1 -0
  147. package/cjs/packages/vuu-utils/src/shell-layout-types.js +13 -0
  148. package/cjs/packages/vuu-utils/src/shell-layout-types.js.map +1 -0
  149. package/cjs/packages/vuu-utils/src/sort-utils.js +78 -0
  150. package/cjs/packages/vuu-utils/src/sort-utils.js.map +1 -0
  151. package/cjs/packages/vuu-utils/src/table-schema-utils.js +13 -0
  152. package/cjs/packages/vuu-utils/src/table-schema-utils.js.map +1 -0
  153. package/cjs/packages/vuu-utils/src/text-utils.js +21 -0
  154. package/cjs/packages/vuu-utils/src/text-utils.js.map +1 -0
  155. package/cjs/packages/vuu-utils/src/theme-utils.js +36 -0
  156. package/cjs/packages/vuu-utils/src/theme-utils.js.map +1 -0
  157. package/cjs/packages/vuu-utils/src/tree-utils.js +114 -0
  158. package/cjs/packages/vuu-utils/src/tree-utils.js.map +1 -0
  159. package/cjs/packages/vuu-utils/src/ts-utils.js +12 -0
  160. package/cjs/packages/vuu-utils/src/ts-utils.js.map +1 -0
  161. package/cjs/packages/vuu-utils/src/typeahead-utils.js +6 -0
  162. package/cjs/packages/vuu-utils/src/typeahead-utils.js.map +1 -0
  163. package/cjs/packages/vuu-utils/src/url-utils.js +21 -0
  164. package/cjs/packages/vuu-utils/src/url-utils.js.map +1 -0
  165. package/cjs/packages/vuu-utils/src/useId.js +9 -0
  166. package/cjs/packages/vuu-utils/src/useId.js.map +1 -0
  167. package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +17 -0
  168. package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -0
  169. package/cjs/packages/vuu-utils/src/useResizeObserver.js +134 -0
  170. package/cjs/packages/vuu-utils/src/useResizeObserver.js.map +1 -0
  171. package/cjs/packages/vuu-utils/src/useStateRef.js +23 -0
  172. package/cjs/packages/vuu-utils/src/useStateRef.js.map +1 -0
  173. package/esm/node_modules/@dnd-kit/abstract/index.js +1472 -0
  174. package/esm/node_modules/@dnd-kit/abstract/index.js.map +1 -0
  175. package/esm/node_modules/@dnd-kit/abstract/modifiers.js +82 -0
  176. package/esm/node_modules/@dnd-kit/abstract/modifiers.js.map +1 -0
  177. package/esm/node_modules/@dnd-kit/collision/dist/index.js +86 -0
  178. package/esm/node_modules/@dnd-kit/collision/dist/index.js.map +1 -0
  179. package/esm/node_modules/@dnd-kit/dom/index.js +1977 -0
  180. package/esm/node_modules/@dnd-kit/dom/index.js.map +1 -0
  181. package/esm/node_modules/@dnd-kit/dom/sortable.js +822 -0
  182. package/esm/node_modules/@dnd-kit/dom/sortable.js.map +1 -0
  183. package/esm/node_modules/@dnd-kit/dom/utilities.js +1344 -0
  184. package/esm/node_modules/@dnd-kit/dom/utilities.js.map +1 -0
  185. package/esm/node_modules/@dnd-kit/geometry/dist/index.js +303 -0
  186. package/esm/node_modules/@dnd-kit/geometry/dist/index.js.map +1 -0
  187. package/esm/node_modules/@dnd-kit/react/hooks.js +126 -0
  188. package/esm/node_modules/@dnd-kit/react/hooks.js.map +1 -0
  189. package/esm/node_modules/@dnd-kit/react/index.js +392 -0
  190. package/esm/node_modules/@dnd-kit/react/index.js.map +1 -0
  191. package/esm/node_modules/@dnd-kit/react/sortable.js +175 -0
  192. package/esm/node_modules/@dnd-kit/react/sortable.js.map +1 -0
  193. package/esm/node_modules/@dnd-kit/react/utilities.js +17 -0
  194. package/esm/node_modules/@dnd-kit/react/utilities.js.map +1 -0
  195. package/esm/node_modules/@dnd-kit/state/dist/index.js +266 -0
  196. package/esm/node_modules/@dnd-kit/state/dist/index.js.map +1 -0
  197. package/esm/node_modules/@preact/signals-core/dist/signals-core.js +4 -0
  198. package/esm/node_modules/@preact/signals-core/dist/signals-core.js.map +1 -0
  199. package/esm/packages/vuu-utils/src/Clock.js +60 -0
  200. package/esm/packages/vuu-utils/src/Clock.js.map +1 -0
  201. package/esm/packages/vuu-utils/src/PageVisibilityObserver.js +78 -0
  202. package/esm/packages/vuu-utils/src/PageVisibilityObserver.js.map +1 -0
  203. package/esm/packages/vuu-utils/src/ScaledDecimal.js +37 -0
  204. package/esm/packages/vuu-utils/src/ScaledDecimal.js.map +1 -0
  205. package/esm/packages/vuu-utils/src/ShellContext.js +10 -0
  206. package/esm/packages/vuu-utils/src/ShellContext.js.map +1 -0
  207. package/esm/packages/vuu-utils/src/ThemeProvider.js +78 -0
  208. package/esm/packages/vuu-utils/src/ThemeProvider.js.map +1 -0
  209. package/esm/packages/vuu-utils/src/array-utils.js +79 -0
  210. package/esm/packages/vuu-utils/src/array-utils.js.map +1 -0
  211. package/esm/packages/vuu-utils/src/box-utils.js +47 -0
  212. package/esm/packages/vuu-utils/src/box-utils.js.map +1 -0
  213. package/esm/packages/vuu-utils/src/column-utils.js +978 -0
  214. package/esm/packages/vuu-utils/src/column-utils.js.map +1 -0
  215. package/esm/packages/vuu-utils/src/common-types.js +13 -0
  216. package/esm/packages/vuu-utils/src/common-types.js.map +1 -0
  217. package/esm/packages/vuu-utils/src/component-registry.js +128 -0
  218. package/esm/packages/vuu-utils/src/component-registry.js.map +1 -0
  219. package/esm/packages/vuu-utils/src/context-definitions/DataContext.js +18 -0
  220. package/esm/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -0
  221. package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js +16 -0
  222. package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -0
  223. package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +29 -0
  224. package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -0
  225. package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +17 -0
  226. package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -0
  227. package/esm/packages/vuu-utils/src/cookie-utils.js +19 -0
  228. package/esm/packages/vuu-utils/src/cookie-utils.js.map +1 -0
  229. package/esm/packages/vuu-utils/src/css-utils.js +7 -0
  230. package/esm/packages/vuu-utils/src/css-utils.js.map +1 -0
  231. package/esm/packages/vuu-utils/src/data-editing/DataEditingProvider.js +25 -0
  232. package/esm/packages/vuu-utils/src/data-editing/DataEditingProvider.js.map +1 -0
  233. package/esm/packages/vuu-utils/src/data-editing/EditButtons.js +62 -0
  234. package/esm/packages/vuu-utils/src/data-editing/EditButtons.js.map +1 -0
  235. package/esm/packages/vuu-utils/src/data-editing/EditSession.js +309 -0
  236. package/esm/packages/vuu-utils/src/data-editing/EditSession.js.map +1 -0
  237. package/esm/packages/vuu-utils/src/data-editing/edit-utils.js +46 -0
  238. package/esm/packages/vuu-utils/src/data-editing/edit-utils.js.map +1 -0
  239. package/esm/packages/vuu-utils/src/data-editing/useEditableTable.js +105 -0
  240. package/esm/packages/vuu-utils/src/data-editing/useEditableTable.js.map +1 -0
  241. package/esm/packages/vuu-utils/src/data-utils.js +95 -0
  242. package/esm/packages/vuu-utils/src/data-utils.js.map +1 -0
  243. package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js +314 -0
  244. package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -0
  245. package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js +8 -0
  246. package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +1 -0
  247. package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js +38 -0
  248. package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -0
  249. package/esm/packages/vuu-utils/src/datasource/datasource-utils.js +193 -0
  250. package/esm/packages/vuu-utils/src/datasource/datasource-utils.js.map +1 -0
  251. package/esm/packages/vuu-utils/src/date/date-utils.js +121 -0
  252. package/esm/packages/vuu-utils/src/date/date-utils.js.map +1 -0
  253. package/esm/packages/vuu-utils/src/date/dateTimePattern.js +22 -0
  254. package/esm/packages/vuu-utils/src/date/dateTimePattern.js.map +1 -0
  255. package/esm/packages/vuu-utils/src/date/formatter.js +79 -0
  256. package/esm/packages/vuu-utils/src/date/formatter.js.map +1 -0
  257. package/esm/packages/vuu-utils/src/date/types.js +26 -0
  258. package/esm/packages/vuu-utils/src/date/types.js.map +1 -0
  259. package/esm/packages/vuu-utils/src/debug-utils.js +32 -0
  260. package/esm/packages/vuu-utils/src/debug-utils.js.map +1 -0
  261. package/esm/packages/vuu-utils/src/event-emitter.js +111 -0
  262. package/esm/packages/vuu-utils/src/event-emitter.js.map +1 -0
  263. package/esm/packages/vuu-utils/src/feature-utils.js +125 -0
  264. package/esm/packages/vuu-utils/src/feature-utils.js.map +1 -0
  265. package/esm/packages/vuu-utils/src/filters/filter-utils.js +159 -0
  266. package/esm/packages/vuu-utils/src/filters/filter-utils.js.map +1 -0
  267. package/esm/packages/vuu-utils/src/filters/filterAsQuery.js +65 -0
  268. package/esm/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -0
  269. package/esm/packages/vuu-utils/src/form-utils.js +116 -0
  270. package/esm/packages/vuu-utils/src/form-utils.js.map +1 -0
  271. package/esm/packages/vuu-utils/src/formatting-utils.js +109 -0
  272. package/esm/packages/vuu-utils/src/formatting-utils.js.map +1 -0
  273. package/esm/packages/vuu-utils/src/getUniqueId.js +4 -0
  274. package/esm/packages/vuu-utils/src/getUniqueId.js.map +1 -0
  275. package/esm/packages/vuu-utils/src/group-utils.js +23 -0
  276. package/esm/packages/vuu-utils/src/group-utils.js.map +1 -0
  277. package/esm/packages/vuu-utils/src/html-utils.js +145 -0
  278. package/esm/packages/vuu-utils/src/html-utils.js.map +1 -0
  279. package/esm/packages/vuu-utils/src/index.js +77 -0
  280. package/esm/packages/vuu-utils/src/index.js.map +1 -0
  281. package/esm/packages/vuu-utils/src/input-utils.js +7 -0
  282. package/esm/packages/vuu-utils/src/input-utils.js.map +1 -0
  283. package/esm/packages/vuu-utils/src/invariant.js +11 -0
  284. package/esm/packages/vuu-utils/src/invariant.js.map +1 -0
  285. package/esm/packages/vuu-utils/src/itemToString.js +21 -0
  286. package/esm/packages/vuu-utils/src/itemToString.js.map +1 -0
  287. package/esm/packages/vuu-utils/src/json-utils.js +103 -0
  288. package/esm/packages/vuu-utils/src/json-utils.js.map +1 -0
  289. package/{src → esm/packages/vuu-utils/src}/keyboard-utils.js +3 -1
  290. package/esm/packages/vuu-utils/src/keyboard-utils.js.map +1 -0
  291. package/esm/packages/vuu-utils/src/keyset.js +70 -0
  292. package/esm/packages/vuu-utils/src/keyset.js.map +1 -0
  293. package/esm/packages/vuu-utils/src/list-utils.js +9 -0
  294. package/esm/packages/vuu-utils/src/list-utils.js.map +1 -0
  295. package/esm/packages/vuu-utils/src/local-storage-utils.js +30 -0
  296. package/esm/packages/vuu-utils/src/local-storage-utils.js.map +1 -0
  297. package/esm/packages/vuu-utils/src/logging-utils.js +61 -0
  298. package/esm/packages/vuu-utils/src/logging-utils.js.map +1 -0
  299. package/esm/packages/vuu-utils/src/module-utils.js +4 -0
  300. package/esm/packages/vuu-utils/src/module-utils.js.map +1 -0
  301. package/esm/packages/vuu-utils/src/nanoid/index.js +20 -0
  302. package/esm/packages/vuu-utils/src/nanoid/index.js.map +1 -0
  303. package/esm/packages/vuu-utils/src/perf-utils.js +32 -0
  304. package/esm/packages/vuu-utils/src/perf-utils.js.map +1 -0
  305. package/esm/packages/vuu-utils/src/promise-utils.js +40 -0
  306. package/esm/packages/vuu-utils/src/promise-utils.js.map +1 -0
  307. package/esm/packages/vuu-utils/src/protocol-message-utils.js +77 -0
  308. package/esm/packages/vuu-utils/src/protocol-message-utils.js.map +1 -0
  309. package/esm/packages/vuu-utils/src/range-utils.js +108 -0
  310. package/esm/packages/vuu-utils/src/range-utils.js.map +1 -0
  311. package/esm/packages/vuu-utils/src/react-utils.js +66 -0
  312. package/esm/packages/vuu-utils/src/react-utils.js.map +1 -0
  313. package/esm/packages/vuu-utils/src/round-decimal.js +127 -0
  314. package/esm/packages/vuu-utils/src/round-decimal.js.map +1 -0
  315. package/esm/packages/vuu-utils/src/row-utils.js +54 -0
  316. package/esm/packages/vuu-utils/src/row-utils.js.map +1 -0
  317. package/esm/packages/vuu-utils/src/selection-utils.js +31 -0
  318. package/esm/packages/vuu-utils/src/selection-utils.js.map +1 -0
  319. package/esm/packages/vuu-utils/src/shell-layout-types.js +11 -0
  320. package/esm/packages/vuu-utils/src/shell-layout-types.js.map +1 -0
  321. package/esm/packages/vuu-utils/src/sort-utils.js +73 -0
  322. package/esm/packages/vuu-utils/src/sort-utils.js.map +1 -0
  323. package/esm/packages/vuu-utils/src/table-schema-utils.js +11 -0
  324. package/esm/packages/vuu-utils/src/table-schema-utils.js.map +1 -0
  325. package/esm/packages/vuu-utils/src/text-utils.js +18 -0
  326. package/esm/packages/vuu-utils/src/text-utils.js.map +1 -0
  327. package/esm/packages/vuu-utils/src/theme-utils.js +34 -0
  328. package/esm/packages/vuu-utils/src/theme-utils.js.map +1 -0
  329. package/esm/packages/vuu-utils/src/tree-utils.js +108 -0
  330. package/esm/packages/vuu-utils/src/tree-utils.js.map +1 -0
  331. package/esm/packages/vuu-utils/src/ts-utils.js +8 -0
  332. package/esm/packages/vuu-utils/src/ts-utils.js.map +1 -0
  333. package/esm/packages/vuu-utils/src/typeahead-utils.js +4 -0
  334. package/esm/packages/vuu-utils/src/typeahead-utils.js.map +1 -0
  335. package/esm/packages/vuu-utils/src/url-utils.js +18 -0
  336. package/esm/packages/vuu-utils/src/url-utils.js.map +1 -0
  337. package/esm/packages/vuu-utils/src/useId.js +7 -0
  338. package/esm/packages/vuu-utils/src/useId.js.map +1 -0
  339. package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +15 -0
  340. package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -0
  341. package/esm/packages/vuu-utils/src/useResizeObserver.js +130 -0
  342. package/esm/packages/vuu-utils/src/useResizeObserver.js.map +1 -0
  343. package/esm/packages/vuu-utils/src/useStateRef.js +21 -0
  344. package/esm/packages/vuu-utils/src/useStateRef.js.map +1 -0
  345. package/package.json +14 -11
  346. package/types/ThemeProvider.d.ts +4 -4
  347. package/types/column-utils.d.ts +5 -4
  348. package/types/data-editing/EditButtons.d.ts +8 -2
  349. package/types/data-editing/EditSession.d.ts +13 -4
  350. package/types/data-editing/edit-utils.d.ts +3 -1
  351. package/types/data-editing/useEditableTable.d.ts +10 -4
  352. package/types/data-utils.d.ts +2 -1
  353. package/types/date/date-utils.d.ts +8 -8
  354. package/types/feature-utils.d.ts +1 -1
  355. package/types/filters/filter-utils.d.ts +15 -15
  356. package/types/formatting-utils.d.ts +1 -1
  357. package/types/index.d.ts +1 -1
  358. package/types/protocol-message-utils.d.ts +3 -1
  359. package/src/Clock.js +0 -43
  360. package/src/PageVisibilityObserver.js +0 -42
  361. package/src/ScaledDecimal.js +0 -32
  362. package/src/ShellContext.js +0 -5
  363. package/src/ThemeProvider.js +0 -56
  364. package/src/array-utils.js +0 -51
  365. package/src/box-utils.js +0 -51
  366. package/src/broadcast-channel.js +0 -0
  367. package/src/column-utils.js +0 -790
  368. package/src/common-types.js +0 -11
  369. package/src/component-registry.js +0 -83
  370. package/src/context-definitions/DataContext.js +0 -15
  371. package/src/context-definitions/DataProvider.js +0 -13
  372. package/src/context-definitions/DataSourceProvider.js +0 -18
  373. package/src/context-definitions/WorkspaceContext.js +0 -14
  374. package/src/cookie-utils.js +0 -15
  375. package/src/css-utils.js +0 -5
  376. package/src/data-editing/DataEditingProvider.js +0 -13
  377. package/src/data-editing/EditButtons.js +0 -32
  378. package/src/data-editing/EditModeProvider.js +0 -18
  379. package/src/data-editing/EditSession.js +0 -149
  380. package/src/data-editing/edit-utils.js +0 -37
  381. package/src/data-editing/useEditableTable.js +0 -76
  382. package/src/data-utils.js +0 -55
  383. package/src/datasource/BaseDataSource.js +0 -233
  384. package/src/datasource/datasource-action-utils.js +0 -6
  385. package/src/datasource/datasource-filter-utils.js +0 -27
  386. package/src/datasource/datasource-utils.js +0 -148
  387. package/src/date/date-utils.js +0 -80
  388. package/src/date/dateTimePattern.js +0 -17
  389. package/src/date/formatter.js +0 -101
  390. package/src/date/index.js +0 -4
  391. package/src/date/types.js +0 -27
  392. package/src/debug-utils.js +0 -25
  393. package/src/event-emitter.js +0 -78
  394. package/src/feature-utils.js +0 -86
  395. package/src/filters/filter-utils.js +0 -136
  396. package/src/filters/filterAsQuery.js +0 -70
  397. package/src/filters/index.js +0 -2
  398. package/src/form-utils.js +0 -69
  399. package/src/formatting-utils.js +0 -42
  400. package/src/getUniqueId.js +0 -2
  401. package/src/group-utils.js +0 -16
  402. package/src/html-utils.js +0 -108
  403. package/src/index.js +0 -77
  404. package/src/input-utils.js +0 -3
  405. package/src/invariant.js +0 -9
  406. package/src/itemToString.js +0 -9
  407. package/src/json-types.js +0 -0
  408. package/src/json-utils.js +0 -108
  409. package/src/keyset.js +0 -57
  410. package/src/layout-types.js +0 -0
  411. package/src/list-utils.js +0 -5
  412. package/src/local-storage-utils.js +0 -23
  413. package/src/logging-utils.js +0 -52
  414. package/src/module-utils.js +0 -2
  415. package/src/nanoid/index.js +0 -13
  416. package/src/perf-utils.js +0 -28
  417. package/src/promise-utils.js +0 -26
  418. package/src/protocol-message-utils.js +0 -68
  419. package/src/range-utils.js +0 -109
  420. package/src/react-utils.js +0 -64
  421. package/src/round-decimal.js +0 -83
  422. package/src/row-utils.js +0 -43
  423. package/src/selection-utils.js +0 -25
  424. package/src/shell-layout-types.js +0 -9
  425. package/src/sort-utils.js +0 -75
  426. package/src/table-schema-utils.js +0 -11
  427. package/src/text-utils.js +0 -13
  428. package/src/theme-utils.js +0 -21
  429. package/src/tree-types.js +0 -0
  430. package/src/tree-utils.js +0 -96
  431. package/src/ts-utils.js +0 -6
  432. package/src/typeahead-utils.js +0 -4
  433. package/src/url-utils.js +0 -12
  434. package/src/useId.js +0 -6
  435. package/src/useLayoutEffectSkipFirst.js +0 -9
  436. package/src/useResizeObserver.js +0 -122
  437. package/src/useStateRef.js +0 -21
  438. package/src/user-types.js +0 -0
@@ -0,0 +1,123 @@
1
+ 'use strict';
2
+
3
+ var dataUtils = require('./data-utils.js');
4
+ var dateUtils = require('./date/date-utils.js');
5
+ require('./date/dateTimePattern.js');
6
+ require('@internationalized/date');
7
+ var htmlUtils = require('./html-utils.js');
8
+ var ScaledDecimal = require('./ScaledDecimal.js');
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
13
+ class DataValidationError extends Error {
14
+ constructor(message, expectedType, actualType) {
15
+ super(message);
16
+ __publicField(this, "actualType");
17
+ __publicField(this, "expectedType");
18
+ this.actualType = actualType;
19
+ this.expectedType = expectedType;
20
+ }
21
+ }
22
+ const getFieldName = (target) => {
23
+ const saltFormField = htmlUtils.queryClosest(target, "[data-field]");
24
+ const fieldName = saltFormField?.dataset.field;
25
+ if (fieldName) {
26
+ return fieldName;
27
+ } else {
28
+ throw Error("named form field not found");
29
+ }
30
+ };
31
+ const isNumber = (type, value) => type === "number";
32
+ const isValidRange = ([val1, val2]) => {
33
+ if (dateUtils.isValidTimeString(val1) && dateUtils.isValidTimeString(val2)) {
34
+ return val2 > val1;
35
+ }
36
+ return true;
37
+ };
38
+ function getTypedRange([value1, value2], dataType, options) {
39
+ return [
40
+ getTypedValue(value1, dataType, false, options),
41
+ getTypedValue(value2, dataType, false, options)
42
+ ];
43
+ }
44
+ const getActualType = (value) => {
45
+ if (typeof value === "boolean") {
46
+ return "boolean";
47
+ } else if (typeof value === "number") {
48
+ return "number";
49
+ } else if (typeof value === "string") {
50
+ return "string";
51
+ }
52
+ return "string";
53
+ };
54
+ function getTypedValue(value, type, throwIfInvalid = false, options) {
55
+ switch (type) {
56
+ case "int": {
57
+ if (dataUtils.stringIsValidInt(value)) {
58
+ return parseInt(value, 10);
59
+ } else if (throwIfInvalid) {
60
+ throw Error(`value ${value} is not a valid ${type}`);
61
+ } else {
62
+ return void 0;
63
+ }
64
+ }
65
+ case "long": {
66
+ if (dataUtils.stringIsValidLong(value)) {
67
+ return BigInt(value);
68
+ } else if (throwIfInvalid) {
69
+ throw Error(`value ${value} is not a valid ${type}`);
70
+ } else {
71
+ return void 0;
72
+ }
73
+ }
74
+ case "scaleddecimal2":
75
+ return ScaledDecimal.ScaledDecimal2(value);
76
+ case "scaleddecimal4":
77
+ return ScaledDecimal.ScaledDecimal4(value);
78
+ case "scaleddecimal6":
79
+ return ScaledDecimal.ScaledDecimal6(value);
80
+ case "scaleddecimal8":
81
+ return ScaledDecimal.ScaledDecimal8(value);
82
+ case "double":
83
+ case "number": {
84
+ if (dataUtils.stringIsValidDecimal(value)) {
85
+ return parseFloat(value);
86
+ } else if (throwIfInvalid) {
87
+ throw new DataValidationError(
88
+ `value ${value} is not a valid ${type}`,
89
+ "decimal",
90
+ getActualType(value)
91
+ );
92
+ } else {
93
+ return void 0;
94
+ }
95
+ }
96
+ case "boolean":
97
+ return value === "true" ? true : false;
98
+ case "time":
99
+ if (dateUtils.isValidTimeString(value)) {
100
+ if (options?.type === "TimeString") {
101
+ return value;
102
+ } else {
103
+ return +dateUtils.Time(value).asDate();
104
+ }
105
+ } else if (value.length > 0 && dateUtils.Time.isDateInMillis(value)) {
106
+ return Number(value);
107
+ } else if (throwIfInvalid) {
108
+ throw Error(`value ${value} is not a valid ${type}`);
109
+ } else {
110
+ return void 0;
111
+ }
112
+ default:
113
+ return value;
114
+ }
115
+ }
116
+
117
+ exports.DataValidationError = DataValidationError;
118
+ exports.getFieldName = getFieldName;
119
+ exports.getTypedRange = getTypedRange;
120
+ exports.getTypedValue = getTypedValue;
121
+ exports.isNumber = isNumber;
122
+ exports.isValidRange = isValidRange;
123
+ //# sourceMappingURL=form-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-utils.js","sources":["../../../../../../packages/vuu-utils/src/form-utils.ts"],"sourcesContent":["import { DataValueTypeSimple } from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuColumnDataType,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { KeyboardEvent, SyntheticEvent } from \"react\";\nimport {\n stringIsValidDecimal,\n stringIsValidInt,\n stringIsValidLong,\n} from \"./data-utils\";\nimport { isValidTimeString, Time } from \"./date\";\nimport { queryClosest } from \"./html-utils\";\nimport { ExtendedFilterOptions } from \"@vuu-ui/vuu-filter-types\";\nimport {\n type ScaledDecimal,\n ScaledDecimal2,\n ScaledDecimal4,\n ScaledDecimal6,\n ScaledDecimal8,\n} from \"./ScaledDecimal\";\n\nexport class DataValidationError extends Error {\n actualType: string;\n expectedType: string;\n constructor(message: string, expectedType: string, actualType: string) {\n super(message);\n this.actualType = actualType;\n this.expectedType = expectedType;\n }\n}\n\n/**\n * Use with the following convention:\n *\n * <FormField data-field=\"my-field-name\">\n */\nexport const getFieldName = (target: EventTarget | HTMLElement): string => {\n const saltFormField = queryClosest(target, \"[data-field]\") as HTMLElement;\n const fieldName = saltFormField?.dataset.field;\n if (fieldName) {\n return fieldName;\n } else {\n throw Error(\"named form field not found\");\n }\n};\n\nexport type InputSource = \"typeahead-suggestion\" | \"text-input\";\n\nexport const isNumber = (\n type: string,\n value: VuuRowDataItemType,\n): value is number => type === \"number\";\n\nexport type CommitHandler<\n E extends HTMLElement = HTMLInputElement,\n T = VuuRowDataItemType,\n> = (\n evt: SyntheticEvent<E> | KeyboardEvent<E>,\n value: T,\n source?: InputSource,\n) => void;\n\nexport const isValidRange = <T>([val1, val2]: [T, T]) => {\n if (isValidTimeString(val1) && isValidTimeString(val2)) {\n return val2 > val1;\n }\n return true;\n};\n\n/**\n * Convert a pair of string values to the type appropriate for the\n * associated column or form field. Can be used when processing a string value\n * from an input used for user editing.\n *\n */\nexport function getTypedRange(\n [value1, value2]: [string, string],\n dataType: VuuColumnDataType | DataValueTypeSimple,\n options?: ExtendedFilterOptions,\n) {\n return [\n getTypedValue(value1, dataType, false, options),\n getTypedValue(value2, dataType, false, options),\n ];\n}\n\nconst getActualType = (\n value: string | number | boolean,\n): \"string\" | \"number\" | \"boolean\" => {\n if (typeof value === \"boolean\") {\n return \"boolean\";\n } else if (typeof value === \"number\") {\n return \"number\";\n } else if (typeof value === \"string\") {\n return \"string\";\n }\n return \"string\";\n};\n\n/**\n * Convert a string value to the type appropriate for the associated\n * column or form field. Can be used when processing a string value\n * from an input used for user editing.\n *\n * @param value\n * @param type\n * @param throwIfInvalid\n */\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | DataValueTypeSimple,\n throwIfInvalid?: false,\n options?: ExtendedFilterOptions,\n): VuuRowDataItemType | undefined;\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | DataValueTypeSimple,\n throwIfInvalid: true,\n options?: ExtendedFilterOptions,\n): VuuRowDataItemType;\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | DataValueTypeSimple,\n throwIfInvalid = false,\n options?: ExtendedFilterOptions,\n): VuuRowDataItemType | ScaledDecimal | bigint | undefined {\n switch (type) {\n case \"int\": {\n if (stringIsValidInt(value)) {\n return parseInt(value, 10);\n } else if (throwIfInvalid) {\n throw Error(`value ${value} is not a valid ${type}`);\n } else {\n return undefined;\n }\n }\n\n case \"long\": {\n if (stringIsValidLong(value)) {\n return BigInt(value);\n } else if (throwIfInvalid) {\n throw Error(`value ${value} is not a valid ${type}`);\n } else {\n return undefined;\n }\n }\n\n case \"scaleddecimal2\":\n return ScaledDecimal2(value);\n case \"scaleddecimal4\":\n return ScaledDecimal4(value);\n case \"scaleddecimal6\":\n return ScaledDecimal6(value);\n case \"scaleddecimal8\":\n return ScaledDecimal8(value);\n case \"double\":\n case \"number\": {\n if (stringIsValidDecimal(value)) {\n return parseFloat(value);\n } else if (throwIfInvalid) {\n throw new DataValidationError(\n `value ${value} is not a valid ${type}`,\n \"decimal\",\n getActualType(value),\n );\n } else {\n return undefined;\n }\n }\n\n case \"boolean\":\n return value === \"true\" ? true : false;\n\n case \"time\":\n if (isValidTimeString(value)) {\n // We don't manipulate the values of 'extended' filters, the\n // ExtendedFilter impementation will do that.\n if (options?.type === \"TimeString\") {\n return value;\n } else {\n return +Time(value).asDate();\n }\n } else if (value.length > 0 && Time.isDateInMillis(value)) {\n //if value previously converted\n return Number(value);\n } else if (throwIfInvalid) {\n throw Error(`value ${value} is not a valid ${type}`);\n } else {\n return undefined;\n }\n default:\n return value;\n }\n}\n"],"names":["queryClosest","isValidTimeString","stringIsValidInt","stringIsValidLong","ScaledDecimal2","ScaledDecimal4","ScaledDecimal6","ScaledDecimal8","stringIsValidDecimal","Time"],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ 'use strict';
2
+
3
+ var columnUtils = require('./column-utils.js');
4
+ require('./date/date-utils.js');
5
+ var dateTimePattern = require('./date/dateTimePattern.js');
6
+ var formatter = require('./date/formatter.js');
7
+ var roundDecimal = require('./round-decimal.js');
8
+ var protocolMessageUtils = require('./protocol-message-utils.js');
9
+
10
+ const DEFAULT_NUMERIC_FORMAT = {};
11
+ const defaultValueFormatter = (value) => value == null ? "" : typeof value === "string" ? value : value.toString();
12
+ const dateFormatter = (column) => {
13
+ if (columnUtils.isNanoTimestampColumn(column)) {
14
+ const pattern = dateTimePattern.dateTimePattern(column.type);
15
+ const formatter$1 = formatter.formatDate(pattern);
16
+ return (value) => {
17
+ if (typeof value === "string" && value !== "") {
18
+ const bigIntValue = BigInt(value);
19
+ const dateTimeValue = Number(bigIntValue / 1000000n);
20
+ const nanoSeconds = (bigIntValue % 1000000n).toString().padStart(9, "0");
21
+ return `${formatter$1(new Date(dateTimeValue))}.${nanoSeconds}`;
22
+ } else {
23
+ return "";
24
+ }
25
+ };
26
+ } else {
27
+ const pattern = dateTimePattern.dateTimePattern(column.type);
28
+ const formatter$1 = formatter.formatDate(pattern);
29
+ return (value) => {
30
+ if (typeof value === "number" && value !== 0) {
31
+ return formatter$1(new Date(value));
32
+ } else {
33
+ return "";
34
+ }
35
+ };
36
+ }
37
+ };
38
+ const numericFormatter = ({
39
+ align = "right",
40
+ serverDataType,
41
+ type
42
+ }) => {
43
+ if (type === void 0 || typeof type === "string") {
44
+ return defaultValueFormatter;
45
+ } else {
46
+ const {
47
+ alignOnDecimals = false,
48
+ decimals,
49
+ roundingRule,
50
+ useLocaleString,
51
+ zeroPad = false
52
+ } = type.formatting ?? DEFAULT_NUMERIC_FORMAT;
53
+ return (value) => {
54
+ if (serverDataType?.startsWith("scaleddecimal")) {
55
+ if (typeof value === "string") {
56
+ return roundDecimal.roundScaledDecimal(
57
+ value,
58
+ align,
59
+ decimals,
60
+ zeroPad,
61
+ alignOnDecimals,
62
+ useLocaleString,
63
+ roundingRule
64
+ );
65
+ } else {
66
+ throw Error(
67
+ `[formatting-utils] numericFormatter, invalid data for ${serverDataType}: '${value}'`
68
+ );
69
+ }
70
+ }
71
+ if (typeof value === "string" && (value.startsWith("\u03A3") || value.startsWith("["))) {
72
+ return value;
73
+ }
74
+ const number = typeof value === "number" ? value : typeof value === "string" ? parseFloat(value) : void 0;
75
+ return roundDecimal.roundDecimal(
76
+ number,
77
+ align,
78
+ decimals,
79
+ zeroPad,
80
+ alignOnDecimals,
81
+ useLocaleString,
82
+ roundingRule
83
+ );
84
+ };
85
+ }
86
+ };
87
+ const mapFormatter = (map) => {
88
+ return (value) => {
89
+ return map[value] ?? "";
90
+ };
91
+ };
92
+ const NumericTypes = ["decimal", "number"];
93
+ const getValueFormatter = (column) => {
94
+ const { serverDataType = "string" } = column;
95
+ if (columnUtils.isDateTimeDataValue(column) || columnUtils.isTimeDataValue(column)) {
96
+ return dateFormatter(column);
97
+ }
98
+ const { type } = column;
99
+ if (columnUtils.isTypeDescriptor(type) && columnUtils.isMappedValueTypeRenderer(type?.renderer)) {
100
+ return mapFormatter(type.renderer.map);
101
+ } else if (protocolMessageUtils.isNumericType(serverDataType) || columnUtils.isTypeDescriptor(type) && NumericTypes.includes(type.name)) {
102
+ return numericFormatter(column);
103
+ } else if (serverDataType === "string" || serverDataType === "char") {
104
+ return (value) => value;
105
+ }
106
+ return defaultValueFormatter;
107
+ };
108
+ const lowerCase = (str) => str.toLowerCase();
109
+
110
+ exports.defaultValueFormatter = defaultValueFormatter;
111
+ exports.getValueFormatter = getValueFormatter;
112
+ exports.lowerCase = lowerCase;
113
+ exports.numericFormatter = numericFormatter;
114
+ //# sourceMappingURL=formatting-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting-utils.js","sources":["../../../../../../packages/vuu-utils/src/formatting-utils.ts"],"sourcesContent":["import { DataValueDescriptor } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n ColumnTypeFormatting,\n ColumnTypeValueMap,\n ValueFormatter,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n isDateTimeDataValue,\n isMappedValueTypeRenderer,\n isNanoTimestampColumn,\n isTimeDataValue,\n isTypeDescriptor,\n} from \"./column-utils\";\nimport { dateTimePattern, formatDate } from \"./date\";\nimport { roundDecimal, roundScaledDecimal } from \"./round-decimal\";\nimport { isNumericType } from \"./protocol-message-utils\";\n\nexport type ValueFormatters = {\n [key: string]: ValueFormatter;\n};\n\nconst DEFAULT_NUMERIC_FORMAT: ColumnTypeFormatting = {};\n\nexport const defaultValueFormatter = (value: unknown) =>\n value == null ? \"\" : typeof value === \"string\" ? value : value.toString();\n\nconst dateFormatter = (column: DataValueDescriptor) => {\n if (isNanoTimestampColumn(column)) {\n const pattern = dateTimePattern(column.type);\n const formatter = formatDate(pattern);\n\n return (value: unknown) => {\n if (typeof value === \"string\" && value !== \"\") {\n const bigIntValue = BigInt(value);\n const dateTimeValue = Number(bigIntValue / 1_000_000n);\n const nanoSeconds = (bigIntValue % 1_000_000n)\n .toString()\n .padStart(9, \"0\");\n // TODO This needs more work to allow configuration\n // of the subsecond value\n return `${formatter(new Date(dateTimeValue))}.${nanoSeconds}`;\n } else {\n return \"\";\n }\n };\n } else {\n const pattern = dateTimePattern(column.type);\n const formatter = formatDate(pattern);\n\n return (value: unknown) => {\n if (typeof value === \"number\" && value !== 0) {\n return formatter(new Date(value));\n } else {\n return \"\";\n }\n };\n }\n};\n\nexport const numericFormatter = ({\n align = \"right\",\n serverDataType,\n type,\n}: Partial<ColumnDescriptor>) => {\n if (type === undefined || typeof type === \"string\") {\n return defaultValueFormatter;\n } else {\n const {\n alignOnDecimals = false,\n decimals,\n roundingRule,\n useLocaleString,\n zeroPad = false,\n } = type.formatting ?? DEFAULT_NUMERIC_FORMAT;\n return (value: unknown) => {\n if (serverDataType?.startsWith(\"scaleddecimal\")) {\n if (typeof value === \"string\") {\n return roundScaledDecimal(\n value,\n align,\n decimals,\n zeroPad,\n alignOnDecimals,\n useLocaleString,\n roundingRule,\n );\n } else {\n throw Error(\n `[formatting-utils] numericFormatter, invalid data for ${serverDataType}: '${value}'`,\n );\n }\n }\n if (\n typeof value === \"string\" &&\n (value.startsWith(\"Σ\") || value.startsWith(\"[\"))\n ) {\n return value;\n }\n const number =\n typeof value === \"number\"\n ? value\n : typeof value === \"string\"\n ? parseFloat(value)\n : undefined;\n return roundDecimal(\n number,\n align,\n decimals,\n zeroPad,\n alignOnDecimals,\n useLocaleString,\n roundingRule,\n );\n };\n }\n};\n\nconst mapFormatter = (map: ColumnTypeValueMap) => {\n return (value: unknown) => {\n return map[value as string] ?? \"\";\n };\n};\n\nconst NumericTypes = [\"decimal\", \"number\"];\n\nexport const getValueFormatter = (column: ColumnDescriptor): ValueFormatter => {\n const { serverDataType = \"string\" } = column;\n if (isDateTimeDataValue(column) || isTimeDataValue(column)) {\n return dateFormatter(column);\n }\n\n const { type } = column;\n if (isTypeDescriptor(type) && isMappedValueTypeRenderer(type?.renderer)) {\n return mapFormatter(type.renderer.map);\n } else if (\n isNumericType(serverDataType) ||\n (isTypeDescriptor(type) && NumericTypes.includes(type.name))\n ) {\n return numericFormatter(column);\n } else if (serverDataType === \"string\" || serverDataType === \"char\") {\n return (value: unknown) => value as string;\n }\n return defaultValueFormatter;\n};\n\n/**\n * Lowercases a string and returns as Lowercase typescript type\n *\n * @param str the input string\n * @returns str converted to Lowercase\n */\nexport const lowerCase = (str: string) =>\n str.toLowerCase() as Lowercase<string>;\n"],"names":["isNanoTimestampColumn","dateTimePattern","formatter","formatDate","roundScaledDecimal","roundDecimal","isDateTimeDataValue","isTimeDataValue","isTypeDescriptor","isMappedValueTypeRenderer","isNumericType"],"mappings":";;;;;;;;;AAsBA,MAAM,yBAA+C,EAAC;AAEzC,MAAA,qBAAA,GAAwB,CAAC,KAAA,KACpC,KAAS,IAAA,IAAA,GAAO,EAAK,GAAA,OAAO,KAAU,KAAA,QAAA,GAAW,KAAQ,GAAA,KAAA,CAAM,QAAS;AAE1E,MAAM,aAAA,GAAgB,CAAC,MAAgC,KAAA;AACrD,EAAI,IAAAA,iCAAA,CAAsB,MAAM,CAAG,EAAA;AACjC,IAAM,MAAA,OAAA,GAAUC,+BAAgB,CAAA,MAAA,CAAO,IAAI,CAAA;AAC3C,IAAM,MAAAC,WAAA,GAAYC,qBAAW,OAAO,CAAA;AAEpC,IAAA,OAAO,CAAC,KAAmB,KAAA;AACzB,MAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,KAAA,KAAU,EAAI,EAAA;AAC7C,QAAM,MAAA,WAAA,GAAc,OAAO,KAAK,CAAA;AAChC,QAAM,MAAA,aAAA,GAAgB,MAAO,CAAA,WAAA,GAAc,QAAU,CAAA;AACrD,QAAA,MAAM,eAAe,WAAc,GAAA,QAAA,EAChC,UACA,CAAA,QAAA,CAAS,GAAG,GAAG,CAAA;AAGlB,QAAO,OAAA,CAAA,EAAGD,YAAU,IAAI,IAAA,CAAK,aAAa,CAAC,CAAC,IAAI,WAAW,CAAA,CAAA;AAAA,OACtD,MAAA;AACL,QAAO,OAAA,EAAA;AAAA;AACT,KACF;AAAA,GACK,MAAA;AACL,IAAM,MAAA,OAAA,GAAUD,+BAAgB,CAAA,MAAA,CAAO,IAAI,CAAA;AAC3C,IAAM,MAAAC,WAAA,GAAYC,qBAAW,OAAO,CAAA;AAEpC,IAAA,OAAO,CAAC,KAAmB,KAAA;AACzB,MAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,KAAA,KAAU,CAAG,EAAA;AAC5C,QAAA,OAAOD,WAAU,CAAA,IAAI,IAAK,CAAA,KAAK,CAAC,CAAA;AAAA,OAC3B,MAAA;AACL,QAAO,OAAA,EAAA;AAAA;AACT,KACF;AAAA;AAEJ,CAAA;AAEO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,KAAQ,GAAA,OAAA;AAAA,EACR,cAAA;AAAA,EACA;AACF,CAAiC,KAAA;AAC/B,EAAA,IAAI,IAAS,KAAA,KAAA,CAAA,IAAa,OAAO,IAAA,KAAS,QAAU,EAAA;AAClD,IAAO,OAAA,qBAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA;AAAA,MACJ,eAAkB,GAAA,KAAA;AAAA,MAClB,QAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,OAAU,GAAA;AAAA,KACZ,GAAI,KAAK,UAAc,IAAA,sBAAA;AACvB,IAAA,OAAO,CAAC,KAAmB,KAAA;AACzB,MAAI,IAAA,cAAA,EAAgB,UAAW,CAAA,eAAe,CAAG,EAAA;AAC/C,QAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,UAAO,OAAAE,+BAAA;AAAA,YACL,KAAA;AAAA,YACA,KAAA;AAAA,YACA,QAAA;AAAA,YACA,OAAA;AAAA,YACA,eAAA;AAAA,YACA,eAAA;AAAA,YACA;AAAA,WACF;AAAA,SACK,MAAA;AACL,UAAM,MAAA,KAAA;AAAA,YACJ,CAAA,sDAAA,EAAyD,cAAc,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA;AAAA,WACpF;AAAA;AACF;AAEF,MACE,IAAA,OAAO,KAAU,KAAA,QAAA,KAChB,KAAM,CAAA,UAAA,CAAW,QAAG,CAAK,IAAA,KAAA,CAAM,UAAW,CAAA,GAAG,CAC9C,CAAA,EAAA;AACA,QAAO,OAAA,KAAA;AAAA;AAET,MAAM,MAAA,MAAA,GACJ,OAAO,KAAA,KAAU,QACb,GAAA,KAAA,GACA,OAAO,KAAU,KAAA,QAAA,GACf,UAAW,CAAA,KAAK,CAChB,GAAA,KAAA,CAAA;AACR,MAAO,OAAAC,yBAAA;AAAA,QACL,MAAA;AAAA,QACA,KAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,eAAA;AAAA,QACA,eAAA;AAAA,QACA;AAAA,OACF;AAAA,KACF;AAAA;AAEJ;AAEA,MAAM,YAAA,GAAe,CAAC,GAA4B,KAAA;AAChD,EAAA,OAAO,CAAC,KAAmB,KAAA;AACzB,IAAO,OAAA,GAAA,CAAI,KAAe,CAAK,IAAA,EAAA;AAAA,GACjC;AACF,CAAA;AAEA,MAAM,YAAA,GAAe,CAAC,SAAA,EAAW,QAAQ,CAAA;AAE5B,MAAA,iBAAA,GAAoB,CAAC,MAA6C,KAAA;AAC7E,EAAM,MAAA,EAAE,cAAiB,GAAA,QAAA,EAAa,GAAA,MAAA;AACtC,EAAA,IAAIC,+BAAoB,CAAA,MAAM,CAAK,IAAAC,2BAAA,CAAgB,MAAM,CAAG,EAAA;AAC1D,IAAA,OAAO,cAAc,MAAM,CAAA;AAAA;AAG7B,EAAM,MAAA,EAAE,MAAS,GAAA,MAAA;AACjB,EAAA,IAAIC,6BAAiB,IAAI,CAAA,IAAKC,qCAA0B,CAAA,IAAA,EAAM,QAAQ,CAAG,EAAA;AACvE,IAAO,OAAA,YAAA,CAAa,IAAK,CAAA,QAAA,CAAS,GAAG,CAAA;AAAA,GACvC,MAAA,IACEC,kCAAc,CAAA,cAAc,CAC3B,IAAAF,4BAAA,CAAiB,IAAI,CAAA,IAAK,YAAa,CAAA,QAAA,CAAS,IAAK,CAAA,IAAI,CAC1D,EAAA;AACA,IAAA,OAAO,iBAAiB,MAAM,CAAA;AAAA,GACrB,MAAA,IAAA,cAAA,KAAmB,QAAY,IAAA,cAAA,KAAmB,MAAQ,EAAA;AACnE,IAAA,OAAO,CAAC,KAAmB,KAAA,KAAA;AAAA;AAE7B,EAAO,OAAA,qBAAA;AACT;AAQO,MAAM,SAAY,GAAA,CAAC,GACxB,KAAA,GAAA,CAAI,WAAY;;;;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ const getUniqueId = () => `hw-${Math.round(Math.random() * 1e5)}`;
4
+
5
+ exports.getUniqueId = getUniqueId;
6
+ //# sourceMappingURL=getUniqueId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUniqueId.js","sources":["../../../../../../packages/vuu-utils/src/getUniqueId.ts"],"sourcesContent":["export const getUniqueId = () => `hw-${Math.round(Math.random() * 1e5)}`;\n"],"names":[],"mappings":";;AAAa,MAAA,WAAA,GAAc,MAAM,CAAM,GAAA,EAAA,IAAA,CAAK,MAAM,IAAK,CAAA,MAAA,EAAW,GAAA,GAAG,CAAC,CAAA;;;;"}
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ function addGroupColumn(groupBy, column) {
4
+ if (groupBy.length > 0) {
5
+ return groupBy.concat(column.name);
6
+ } else {
7
+ return [column.name];
8
+ }
9
+ }
10
+ const removeGroupColumn = (groupBy, column) => groupBy.filter((colName) => colName !== column.name);
11
+ const getGroupStatus = (columnName, groupBy) => {
12
+ if (groupBy === void 0 || groupBy.length === 0) {
13
+ return "no-groupby";
14
+ } else {
15
+ const indexPos = groupBy.indexOf(columnName);
16
+ if (indexPos === -1) {
17
+ return groupBy.length === 1 ? "single-groupby-other-column" : "multi-groupby-other-columns";
18
+ } else {
19
+ return groupBy.length === 1 ? "single-groupby" : "single-groupby-other-column";
20
+ }
21
+ }
22
+ };
23
+
24
+ exports.addGroupColumn = addGroupColumn;
25
+ exports.getGroupStatus = getGroupStatus;
26
+ exports.removeGroupColumn = removeGroupColumn;
27
+ //# sourceMappingURL=group-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-utils.js","sources":["../../../../../../packages/vuu-utils/src/group-utils.ts"],"sourcesContent":["import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { VuuGroupBy } from \"@vuu-ui/vuu-protocol-types\";\n\nexport function addGroupColumn(groupBy: VuuGroupBy, column: ColumnDescriptor) {\n if (groupBy.length > 0) {\n return groupBy.concat(column.name);\n } else {\n return [column.name];\n }\n}\n\nexport const removeGroupColumn = (\n groupBy: VuuGroupBy,\n column: ColumnDescriptor,\n) => groupBy.filter((colName) => colName !== column.name);\n\nexport type ColumnGroupStatus =\n | \"no-groupby\"\n | \"single-groupby-other-column\"\n | \"single-groupby\"\n | \"multi-groupby-other-columns\"\n | \"multi-groupby-includes-column\";\n\n/**\n * Given a VuuGroupby definition and a column, determine whether the given column\n * is included in the grouping and if so, in what position/direction.\n */\nexport const getGroupStatus = (\n columnName: string,\n groupBy?: VuuGroupBy,\n): ColumnGroupStatus => {\n if (groupBy === undefined || groupBy.length === 0) {\n return \"no-groupby\";\n } else {\n const indexPos = groupBy.indexOf(columnName);\n if (indexPos === -1) {\n return groupBy.length === 1\n ? \"single-groupby-other-column\"\n : \"multi-groupby-other-columns\";\n } else {\n return groupBy.length === 1\n ? \"single-groupby\"\n : \"single-groupby-other-column\";\n }\n }\n};\n"],"names":[],"mappings":";;AAGgB,SAAA,cAAA,CAAe,SAAqB,MAA0B,EAAA;AAC5E,EAAI,IAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACtB,IAAO,OAAA,OAAA,CAAQ,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA;AAAA,GAC5B,MAAA;AACL,IAAO,OAAA,CAAC,OAAO,IAAI,CAAA;AAAA;AAEvB;AAEa,MAAA,iBAAA,GAAoB,CAC/B,OAAA,EACA,MACG,KAAA,OAAA,CAAQ,OAAO,CAAC,OAAA,KAAY,OAAY,KAAA,MAAA,CAAO,IAAI;AAa3C,MAAA,cAAA,GAAiB,CAC5B,UAAA,EACA,OACsB,KAAA;AACtB,EAAA,IAAI,OAAY,KAAA,KAAA,CAAA,IAAa,OAAQ,CAAA,MAAA,KAAW,CAAG,EAAA;AACjD,IAAO,OAAA,YAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,QAAA,GAAW,OAAQ,CAAA,OAAA,CAAQ,UAAU,CAAA;AAC3C,IAAA,IAAI,aAAa,CAAI,CAAA,EAAA;AACnB,MAAO,OAAA,OAAA,CAAQ,MAAW,KAAA,CAAA,GACtB,6BACA,GAAA,6BAAA;AAAA,KACC,MAAA;AACL,MAAO,OAAA,OAAA,CAAQ,MAAW,KAAA,CAAA,GACtB,gBACA,GAAA,6BAAA;AAAA;AACN;AAEJ;;;;;;"}
@@ -0,0 +1,162 @@
1
+ 'use strict';
2
+
3
+ const createEl = (elementType, className, textContent) => {
4
+ const el = document.createElement(elementType);
5
+ if (className) {
6
+ el.className = className;
7
+ }
8
+ if (textContent) {
9
+ el.textContent = textContent;
10
+ }
11
+ return el;
12
+ };
13
+ const getFocusableElement = (el, tabIndex) => {
14
+ if (el) {
15
+ if (el.hasAttribute("tabindex")) {
16
+ const rootTabIndex = parseInt(el.getAttribute("tabindex"));
17
+ if (!isNaN(rootTabIndex) && (tabIndex === void 0 || rootTabIndex === tabIndex)) {
18
+ return el;
19
+ }
20
+ }
21
+ const focusableEl = typeof tabIndex === "number" ? el.querySelector(`[tabindex="${tabIndex}"]`) : el.querySelector("[tabindex]");
22
+ if (focusableEl) {
23
+ return focusableEl;
24
+ }
25
+ }
26
+ };
27
+ const getElementDataIndex = (el) => {
28
+ if (el) {
29
+ const index = parseInt(el.dataset.index || "");
30
+ if (!isNaN(index)) {
31
+ return index;
32
+ }
33
+ }
34
+ return -1;
35
+ };
36
+ function queryClosest(el, cssQueryString, throwIfNotFound) {
37
+ if (el) {
38
+ const result = el.closest(cssQueryString);
39
+ if (result) {
40
+ return result;
41
+ }
42
+ }
43
+ if (throwIfNotFound) {
44
+ throw Error(`no element found to match '${cssQueryString}'`);
45
+ } else {
46
+ return null;
47
+ }
48
+ }
49
+ const getClosest = (el, dataProperty) => queryClosest(el, `[data-${dataProperty}]`);
50
+ const getClosestIndexItem = (el) => getClosest(el, "index");
51
+ function getElementByDataIndex(container, index, throwIfNotFound = false) {
52
+ if (container == null && throwIfNotFound) {
53
+ throw Error("html-utils getElementByDataIndex, container is null");
54
+ }
55
+ const element = container?.querySelector(
56
+ `[data-index="${index}"]`
57
+ );
58
+ if (element) {
59
+ return element;
60
+ } else if (throwIfNotFound) {
61
+ throw Error(
62
+ "html-utils getElementByDataIndex, Item not found with data-index='${index}'"
63
+ );
64
+ } else {
65
+ return void 0;
66
+ }
67
+ }
68
+ const focusFirstFocusableElement = (el, tabIndex) => {
69
+ requestAnimationFrame(() => {
70
+ const focusableElement = getFocusableElement(el, tabIndex);
71
+ if (focusableElement) {
72
+ focusableElement.focus();
73
+ }
74
+ });
75
+ };
76
+ const isSelectableElement = (el) => {
77
+ const item = el?.closest("[data-index]");
78
+ if (!item || item.ariaDisabled || item.dataset.selectable === "false" || item.querySelector('[data-selectable="false"],[aria-disabled="true"]')) {
79
+ return false;
80
+ } else {
81
+ return true;
82
+ }
83
+ };
84
+ const isInputElement = (el) => {
85
+ if (el === null) {
86
+ return false;
87
+ } else {
88
+ return el.tagName === "INPUT";
89
+ }
90
+ };
91
+ const isDateInput = (el) => isInputElement(el) && el.classList.contains("saltDateInput-input");
92
+ const hasOpenOptionList = (el) => {
93
+ if (el !== null) {
94
+ return el.ariaExpanded === "true";
95
+ }
96
+ };
97
+ let size;
98
+ function getScrollbarSize() {
99
+ if (size === void 0) {
100
+ let outer = document.createElement("div");
101
+ outer.className = "scrollable-content";
102
+ outer.style.width = "50px";
103
+ outer.style.height = "50px";
104
+ outer.style.overflowY = "scroll";
105
+ outer.style.position = "absolute";
106
+ outer.style.top = "-200px";
107
+ outer.style.left = "-200px";
108
+ const inner = document.createElement("div");
109
+ inner.style.height = "100px";
110
+ inner.style.width = "100%";
111
+ outer.appendChild(inner);
112
+ document.body.appendChild(outer);
113
+ const outerWidth = outer.offsetWidth;
114
+ const innerWidth = inner.offsetWidth;
115
+ document.body.removeChild(outer);
116
+ size = outerWidth - innerWidth;
117
+ outer = null;
118
+ }
119
+ return size;
120
+ }
121
+ const dispatchMouseEvent = (el, type) => {
122
+ const evt = new MouseEvent(type, {
123
+ view: window,
124
+ bubbles: true,
125
+ cancelable: true
126
+ });
127
+ el.dispatchEvent(evt);
128
+ };
129
+ const dispatchKeyboardEvent = (el, type, key) => {
130
+ const evt = new KeyboardEvent(type, {
131
+ key,
132
+ view: window,
133
+ bubbles: true,
134
+ cancelable: true
135
+ });
136
+ el.dispatchEvent(evt);
137
+ };
138
+ const dispatchCustomEvent = (el, type) => {
139
+ const evt = new Event(type, {
140
+ bubbles: true,
141
+ cancelable: true
142
+ });
143
+ el.dispatchEvent(evt);
144
+ };
145
+
146
+ exports.createEl = createEl;
147
+ exports.dispatchCustomEvent = dispatchCustomEvent;
148
+ exports.dispatchKeyboardEvent = dispatchKeyboardEvent;
149
+ exports.dispatchMouseEvent = dispatchMouseEvent;
150
+ exports.focusFirstFocusableElement = focusFirstFocusableElement;
151
+ exports.getClosest = getClosest;
152
+ exports.getClosestIndexItem = getClosestIndexItem;
153
+ exports.getElementByDataIndex = getElementByDataIndex;
154
+ exports.getElementDataIndex = getElementDataIndex;
155
+ exports.getFocusableElement = getFocusableElement;
156
+ exports.getScrollbarSize = getScrollbarSize;
157
+ exports.hasOpenOptionList = hasOpenOptionList;
158
+ exports.isDateInput = isDateInput;
159
+ exports.isInputElement = isInputElement;
160
+ exports.isSelectableElement = isSelectableElement;
161
+ exports.queryClosest = queryClosest;
162
+ //# sourceMappingURL=html-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-utils.js","sources":["../../../../../../packages/vuu-utils/src/html-utils.ts"],"sourcesContent":["export const createEl = (\n elementType: \"div\" | \"p\" | \"span\",\n className?: string,\n textContent?: string,\n): HTMLElement => {\n const el = document.createElement(elementType);\n if (className) {\n el.className = className;\n }\n if (textContent) {\n el.textContent = textContent;\n }\n return el;\n};\n\nexport const getFocusableElement = (\n el: HTMLElement | null,\n tabIndex?: number,\n) => {\n if (el) {\n if (el.hasAttribute(\"tabindex\")) {\n const rootTabIndex = parseInt(el.getAttribute(\"tabindex\") as string);\n if (\n !isNaN(rootTabIndex) &&\n (tabIndex === undefined || rootTabIndex === tabIndex)\n ) {\n return el;\n }\n }\n const focusableEl =\n typeof tabIndex === \"number\"\n ? (el.querySelector(`[tabindex=\"${tabIndex}\"]`) as HTMLElement)\n : (el.querySelector(\"[tabindex]\") as HTMLElement);\n if (focusableEl) {\n return focusableEl as HTMLElement;\n }\n }\n};\n\nexport const getElementDataIndex = (el: HTMLElement | null) => {\n if (el) {\n const index = parseInt(el.dataset.index || \"\");\n if (!isNaN(index)) {\n return index;\n }\n }\n return -1;\n};\n\nexport function queryClosest<T extends HTMLElement = HTMLElement>(\n el: HTMLElement | EventTarget | null,\n cssQueryString: string,\n throwIfNotFound?: false,\n): T | null;\nexport function queryClosest<T extends HTMLElement = HTMLElement>(\n el: HTMLElement | EventTarget | null,\n cssQueryString: string,\n throwIfNotFound: true,\n): T;\nexport function queryClosest<T extends HTMLElement = HTMLElement>(\n el: HTMLElement | EventTarget | null,\n cssQueryString: string,\n throwIfNotFound?: boolean,\n) {\n if (el) {\n const result = (el as HTMLElement).closest(cssQueryString) as T;\n if (result) {\n return result;\n }\n }\n if (throwIfNotFound) {\n throw Error(`no element found to match '${cssQueryString}'`);\n } else {\n return null;\n }\n}\n\nexport const getClosest = (el: HTMLElement, dataProperty: string) =>\n queryClosest(el, `[data-${dataProperty}]`);\n\nexport const getClosestIndexItem = (el: HTMLElement) => getClosest(el, \"index\");\n\nexport function getElementByDataIndex(\n c: HTMLElement | null | undefined,\n i: number | string,\n throwIfNotFound: true,\n): HTMLElement;\nexport function getElementByDataIndex(\n c: HTMLElement | null | undefined,\n i: number | string,\n throwIfNotFound?: false,\n): HTMLElement | undefined;\nexport function getElementByDataIndex(\n container: HTMLElement | null | undefined,\n index: number | string,\n throwIfNotFound = false,\n) {\n if (container == null && throwIfNotFound) {\n throw Error(\"html-utils getElementByDataIndex, container is null\");\n }\n const element = container?.querySelector(\n `[data-index=\"${index}\"]`,\n ) as HTMLElement;\n if (element) {\n return element;\n } else if (throwIfNotFound) {\n throw Error(\n \"html-utils getElementByDataIndex, Item not found with data-index='${index}'\",\n );\n } else {\n return undefined;\n }\n}\n\nexport const focusFirstFocusableElement = (\n el: HTMLElement | null,\n tabIndex?: number,\n) => {\n // TODO test el for focusable\n requestAnimationFrame(() => {\n const focusableElement = getFocusableElement(el, tabIndex);\n if (focusableElement) {\n focusableElement.focus();\n }\n });\n};\n\nexport const isSelectableElement = (el?: HTMLElement | null) => {\n const item = el?.closest(\"[data-index]\") as HTMLElement;\n if (\n !item ||\n item.ariaDisabled ||\n item.dataset.selectable === \"false\" ||\n item.querySelector('[data-selectable=\"false\"],[aria-disabled=\"true\"]')\n ) {\n return false;\n } else {\n return true;\n }\n};\n\nexport const isInputElement = (\n el: HTMLElement | EventTarget | null,\n): el is HTMLInputElement => {\n if (el === null) {\n return false;\n } else {\n return (el as HTMLElement).tagName === \"INPUT\";\n }\n};\n\nexport const isDateInput = (\n el: HTMLElement | EventTarget | null,\n): el is HTMLInputElement =>\n isInputElement(el) && el.classList.contains(\"saltDateInput-input\");\n\nexport const hasOpenOptionList = (el: HTMLElement | EventTarget | null) => {\n if (el !== null) {\n return (el as HTMLElement).ariaExpanded === \"true\";\n }\n};\n\nlet size: number;\n\nexport function getScrollbarSize() {\n if (size === undefined) {\n let outer: HTMLElement | null = document.createElement(\"div\");\n outer.className = \"scrollable-content\";\n outer.style.width = \"50px\";\n outer.style.height = \"50px\";\n outer.style.overflowY = \"scroll\";\n outer.style.position = \"absolute\";\n outer.style.top = \"-200px\";\n outer.style.left = \"-200px\";\n const inner = document.createElement(\"div\");\n inner.style.height = \"100px\";\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n document.body.appendChild(outer);\n const outerWidth = outer.offsetWidth;\n const innerWidth = inner.offsetWidth;\n document.body.removeChild(outer);\n size = outerWidth - innerWidth;\n outer = null;\n }\n\n return size;\n}\n\nexport type MouseEventTypes = \"dblclick\" | \"click\";\nexport type KeyboardEventTypes = \"keydown\" | \"keypress\" | \"keyup\";\n\nexport const dispatchMouseEvent = (el: HTMLElement, type: MouseEventTypes) => {\n const evt = new MouseEvent(type, {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n el.dispatchEvent(evt);\n};\nexport const dispatchKeyboardEvent = (\n el: HTMLElement,\n type: KeyboardEventTypes,\n key: string,\n) => {\n const evt = new KeyboardEvent(type, {\n key,\n view: window,\n bubbles: true,\n cancelable: true,\n });\n el.dispatchEvent(evt);\n};\n\nexport type VuuDomEventType =\n | \"vuu-commit\"\n | \"vuu-dropped\"\n | \"vuu-begin-edit\"\n | \"vuu-enter-edit-mode\"\n | \"vuu-exit-edit-mode\";\n\nexport const dispatchCustomEvent = (el: HTMLElement, type: VuuDomEventType) => {\n const evt = new Event(type, {\n bubbles: true,\n cancelable: true,\n });\n el.dispatchEvent(evt);\n};\n"],"names":[],"mappings":"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"}