@vuu-ui/vuu-utils 3.0.0 → 3.1.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/package.json +16 -12
  2. package/src/Clock.js +43 -0
  3. package/src/PageVisibilityObserver.js +42 -0
  4. package/src/ScaledDecimal.js +32 -0
  5. package/src/ShellContext.js +5 -0
  6. package/src/ThemeProvider.js +56 -0
  7. package/src/array-utils.js +61 -0
  8. package/src/box-utils.js +51 -0
  9. package/src/broadcast-channel.js +0 -0
  10. package/src/column-utils.js +787 -0
  11. package/src/common-types.js +11 -0
  12. package/src/component-registry.js +83 -0
  13. package/src/context-definitions/DataContext.js +15 -0
  14. package/src/context-definitions/DataProvider.js +13 -0
  15. package/src/context-definitions/DataSourceProvider.js +18 -0
  16. package/src/context-definitions/WorkspaceContext.js +14 -0
  17. package/src/cookie-utils.js +15 -0
  18. package/src/css-utils.js +5 -0
  19. package/src/data-utils.js +66 -0
  20. package/src/datasource/BaseDataSource.js +233 -0
  21. package/src/datasource/datasource-action-utils.js +6 -0
  22. package/src/datasource/datasource-filter-utils.js +27 -0
  23. package/src/datasource/datasource-utils.js +148 -0
  24. package/src/date/date-utils.js +80 -0
  25. package/src/date/dateTimePattern.js +17 -0
  26. package/src/date/formatter.js +101 -0
  27. package/src/date/index.js +4 -0
  28. package/src/date/types.js +27 -0
  29. package/src/debug-utils.js +25 -0
  30. package/src/edit-utils.js +2 -0
  31. package/{esm/packages/vuu-utils/src → src}/errors.js +0 -2
  32. package/src/event-emitter.js +78 -0
  33. package/src/feature-utils.js +86 -0
  34. package/src/filters/filter-utils.js +136 -0
  35. package/src/filters/filterAsQuery.js +70 -0
  36. package/src/filters/index.js +2 -0
  37. package/src/form-utils.js +71 -0
  38. package/src/formatting-utils.js +58 -0
  39. package/src/getUniqueId.js +2 -0
  40. package/src/group-utils.js +16 -0
  41. package/src/html-utils.js +108 -0
  42. package/src/index.js +74 -0
  43. package/src/input-utils.js +3 -0
  44. package/src/invariant.js +9 -0
  45. package/src/itemToString.js +9 -0
  46. package/src/json-types.js +0 -0
  47. package/src/json-utils.js +108 -0
  48. package/{esm/packages/vuu-utils/src → src}/keyboard-utils.js +1 -3
  49. package/src/keyset.js +57 -0
  50. package/src/layout-types.js +0 -0
  51. package/src/list-utils.js +5 -0
  52. package/src/local-storage-utils.js +23 -0
  53. package/src/logging-utils.js +52 -0
  54. package/src/module-utils.js +2 -0
  55. package/src/nanoid/index.js +13 -0
  56. package/src/perf-utils.js +28 -0
  57. package/src/promise-utils.js +26 -0
  58. package/src/protocol-message-utils.js +71 -0
  59. package/src/range-utils.js +125 -0
  60. package/src/react-utils.js +64 -0
  61. package/src/round-decimal.js +83 -0
  62. package/src/row-utils.js +43 -0
  63. package/src/selection-utils.js +50 -0
  64. package/src/shell-layout-types.js +9 -0
  65. package/src/sort-utils.js +75 -0
  66. package/src/table-schema-utils.js +16 -0
  67. package/src/text-utils.js +15 -0
  68. package/src/theme-utils.js +21 -0
  69. package/src/tree-types.js +0 -0
  70. package/src/tree-utils.js +96 -0
  71. package/src/ts-utils.js +6 -0
  72. package/src/typeahead-utils.js +4 -0
  73. package/src/url-utils.js +12 -0
  74. package/src/useId.js +6 -0
  75. package/src/useLayoutEffectSkipFirst.js +9 -0
  76. package/src/useResizeObserver.js +122 -0
  77. package/src/useStateRef.js +21 -0
  78. package/src/user-types.js +0 -0
  79. package/cjs/node_modules/@dnd-kit/abstract/index.js +0 -1488
  80. package/cjs/node_modules/@dnd-kit/abstract/index.js.map +0 -1
  81. package/cjs/node_modules/@dnd-kit/abstract/modifiers.js +0 -85
  82. package/cjs/node_modules/@dnd-kit/abstract/modifiers.js.map +0 -1
  83. package/cjs/node_modules/@dnd-kit/collision/dist/index.js +0 -91
  84. package/cjs/node_modules/@dnd-kit/collision/dist/index.js.map +0 -1
  85. package/cjs/node_modules/@dnd-kit/dom/index.js +0 -1991
  86. package/cjs/node_modules/@dnd-kit/dom/index.js.map +0 -1
  87. package/cjs/node_modules/@dnd-kit/dom/sortable.js +0 -828
  88. package/cjs/node_modules/@dnd-kit/dom/sortable.js.map +0 -1
  89. package/cjs/node_modules/@dnd-kit/dom/utilities.js +0 -1389
  90. package/cjs/node_modules/@dnd-kit/dom/utilities.js.map +0 -1
  91. package/cjs/node_modules/@dnd-kit/geometry/dist/index.js +0 -310
  92. package/cjs/node_modules/@dnd-kit/geometry/dist/index.js.map +0 -1
  93. package/cjs/node_modules/@dnd-kit/react/hooks.js +0 -134
  94. package/cjs/node_modules/@dnd-kit/react/hooks.js.map +0 -1
  95. package/cjs/node_modules/@dnd-kit/react/index.js +0 -398
  96. package/cjs/node_modules/@dnd-kit/react/index.js.map +0 -1
  97. package/cjs/node_modules/@dnd-kit/react/sortable.js +0 -177
  98. package/cjs/node_modules/@dnd-kit/react/sortable.js.map +0 -1
  99. package/cjs/node_modules/@dnd-kit/react/utilities.js +0 -19
  100. package/cjs/node_modules/@dnd-kit/react/utilities.js.map +0 -1
  101. package/cjs/node_modules/@dnd-kit/state/dist/index.js +0 -280
  102. package/cjs/node_modules/@dnd-kit/state/dist/index.js.map +0 -1
  103. package/cjs/node_modules/@preact/signals-core/dist/signals-core.js +0 -11
  104. package/cjs/node_modules/@preact/signals-core/dist/signals-core.js.map +0 -1
  105. package/cjs/packages/vuu-utils/src/Clock.js +0 -62
  106. package/cjs/packages/vuu-utils/src/Clock.js.map +0 -1
  107. package/cjs/packages/vuu-utils/src/PageVisibilityObserver.js +0 -80
  108. package/cjs/packages/vuu-utils/src/PageVisibilityObserver.js.map +0 -1
  109. package/cjs/packages/vuu-utils/src/ScaledDecimal.js +0 -43
  110. package/cjs/packages/vuu-utils/src/ScaledDecimal.js.map +0 -1
  111. package/cjs/packages/vuu-utils/src/ShellContext.js +0 -13
  112. package/cjs/packages/vuu-utils/src/ShellContext.js.map +0 -1
  113. package/cjs/packages/vuu-utils/src/ThemeProvider.js +0 -85
  114. package/cjs/packages/vuu-utils/src/ThemeProvider.js.map +0 -1
  115. package/cjs/packages/vuu-utils/src/array-utils.js +0 -102
  116. package/cjs/packages/vuu-utils/src/array-utils.js.map +0 -1
  117. package/cjs/packages/vuu-utils/src/box-utils.js +0 -53
  118. package/cjs/packages/vuu-utils/src/box-utils.js.map +0 -1
  119. package/cjs/packages/vuu-utils/src/column-utils.js +0 -1056
  120. package/cjs/packages/vuu-utils/src/column-utils.js.map +0 -1
  121. package/cjs/packages/vuu-utils/src/common-types.js +0 -15
  122. package/cjs/packages/vuu-utils/src/common-types.js.map +0 -1
  123. package/cjs/packages/vuu-utils/src/component-registry.js +0 -144
  124. package/cjs/packages/vuu-utils/src/component-registry.js.map +0 -1
  125. package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js +0 -21
  126. package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js.map +0 -1
  127. package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js +0 -19
  128. package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js.map +0 -1
  129. package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +0 -33
  130. package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +0 -1
  131. package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +0 -20
  132. package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +0 -1
  133. package/cjs/packages/vuu-utils/src/cookie-utils.js +0 -22
  134. package/cjs/packages/vuu-utils/src/cookie-utils.js.map +0 -1
  135. package/cjs/packages/vuu-utils/src/css-utils.js +0 -9
  136. package/cjs/packages/vuu-utils/src/css-utils.js.map +0 -1
  137. package/cjs/packages/vuu-utils/src/data-utils.js +0 -110
  138. package/cjs/packages/vuu-utils/src/data-utils.js.map +0 -1
  139. package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js +0 -317
  140. package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js.map +0 -1
  141. package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js +0 -14
  142. package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +0 -1
  143. package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js +0 -40
  144. package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +0 -1
  145. package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js +0 -218
  146. package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js.map +0 -1
  147. package/cjs/packages/vuu-utils/src/date/date-utils.js +0 -131
  148. package/cjs/packages/vuu-utils/src/date/date-utils.js.map +0 -1
  149. package/cjs/packages/vuu-utils/src/date/dateTimePattern.js +0 -26
  150. package/cjs/packages/vuu-utils/src/date/dateTimePattern.js.map +0 -1
  151. package/cjs/packages/vuu-utils/src/date/formatter.js +0 -82
  152. package/cjs/packages/vuu-utils/src/date/formatter.js.map +0 -1
  153. package/cjs/packages/vuu-utils/src/date/types.js +0 -32
  154. package/cjs/packages/vuu-utils/src/date/types.js.map +0 -1
  155. package/cjs/packages/vuu-utils/src/debug-utils.js +0 -34
  156. package/cjs/packages/vuu-utils/src/debug-utils.js.map +0 -1
  157. package/cjs/packages/vuu-utils/src/edit-utils.js +0 -6
  158. package/cjs/packages/vuu-utils/src/edit-utils.js.map +0 -1
  159. package/cjs/packages/vuu-utils/src/errors.js +0 -7
  160. package/cjs/packages/vuu-utils/src/errors.js.map +0 -1
  161. package/cjs/packages/vuu-utils/src/event-emitter.js +0 -113
  162. package/cjs/packages/vuu-utils/src/event-emitter.js.map +0 -1
  163. package/cjs/packages/vuu-utils/src/feature-utils.js +0 -139
  164. package/cjs/packages/vuu-utils/src/feature-utils.js.map +0 -1
  165. package/cjs/packages/vuu-utils/src/filters/filter-utils.js +0 -182
  166. package/cjs/packages/vuu-utils/src/filters/filter-utils.js.map +0 -1
  167. package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js +0 -69
  168. package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js.map +0 -1
  169. package/cjs/packages/vuu-utils/src/form-utils.js +0 -123
  170. package/cjs/packages/vuu-utils/src/form-utils.js.map +0 -1
  171. package/cjs/packages/vuu-utils/src/formatting-utils.js +0 -114
  172. package/cjs/packages/vuu-utils/src/formatting-utils.js.map +0 -1
  173. package/cjs/packages/vuu-utils/src/getUniqueId.js +0 -6
  174. package/cjs/packages/vuu-utils/src/getUniqueId.js.map +0 -1
  175. package/cjs/packages/vuu-utils/src/group-utils.js +0 -27
  176. package/cjs/packages/vuu-utils/src/group-utils.js.map +0 -1
  177. package/cjs/packages/vuu-utils/src/html-utils.js +0 -162
  178. package/cjs/packages/vuu-utils/src/html-utils.js.map +0 -1
  179. package/cjs/packages/vuu-utils/src/index.js +0 -478
  180. package/cjs/packages/vuu-utils/src/index.js.map +0 -1
  181. package/cjs/packages/vuu-utils/src/input-utils.js +0 -10
  182. package/cjs/packages/vuu-utils/src/input-utils.js.map +0 -1
  183. package/cjs/packages/vuu-utils/src/invariant.js +0 -13
  184. package/cjs/packages/vuu-utils/src/invariant.js.map +0 -1
  185. package/cjs/packages/vuu-utils/src/itemToString.js +0 -23
  186. package/cjs/packages/vuu-utils/src/itemToString.js.map +0 -1
  187. package/cjs/packages/vuu-utils/src/json-utils.js +0 -105
  188. package/cjs/packages/vuu-utils/src/json-utils.js.map +0 -1
  189. package/cjs/packages/vuu-utils/src/keyboard-utils.js +0 -30
  190. package/cjs/packages/vuu-utils/src/keyboard-utils.js.map +0 -1
  191. package/cjs/packages/vuu-utils/src/keyset.js +0 -72
  192. package/cjs/packages/vuu-utils/src/keyset.js.map +0 -1
  193. package/cjs/packages/vuu-utils/src/list-utils.js +0 -11
  194. package/cjs/packages/vuu-utils/src/list-utils.js.map +0 -1
  195. package/cjs/packages/vuu-utils/src/local-storage-utils.js +0 -35
  196. package/cjs/packages/vuu-utils/src/local-storage-utils.js.map +0 -1
  197. package/cjs/packages/vuu-utils/src/logging-utils.js +0 -65
  198. package/cjs/packages/vuu-utils/src/logging-utils.js.map +0 -1
  199. package/cjs/packages/vuu-utils/src/module-utils.js +0 -6
  200. package/cjs/packages/vuu-utils/src/module-utils.js.map +0 -1
  201. package/cjs/packages/vuu-utils/src/nanoid/index.js +0 -22
  202. package/cjs/packages/vuu-utils/src/nanoid/index.js.map +0 -1
  203. package/cjs/packages/vuu-utils/src/perf-utils.js +0 -35
  204. package/cjs/packages/vuu-utils/src/perf-utils.js.map +0 -1
  205. package/cjs/packages/vuu-utils/src/promise-utils.js +0 -42
  206. package/cjs/packages/vuu-utils/src/promise-utils.js.map +0 -1
  207. package/cjs/packages/vuu-utils/src/protocol-message-utils.js +0 -110
  208. package/cjs/packages/vuu-utils/src/protocol-message-utils.js.map +0 -1
  209. package/cjs/packages/vuu-utils/src/range-utils.js +0 -140
  210. package/cjs/packages/vuu-utils/src/range-utils.js.map +0 -1
  211. package/cjs/packages/vuu-utils/src/react-utils.js +0 -72
  212. package/cjs/packages/vuu-utils/src/react-utils.js.map +0 -1
  213. package/cjs/packages/vuu-utils/src/round-decimal.js +0 -131
  214. package/cjs/packages/vuu-utils/src/round-decimal.js.map +0 -1
  215. package/cjs/packages/vuu-utils/src/row-utils.js +0 -59
  216. package/cjs/packages/vuu-utils/src/row-utils.js.map +0 -1
  217. package/cjs/packages/vuu-utils/src/selection-utils.js +0 -65
  218. package/cjs/packages/vuu-utils/src/selection-utils.js.map +0 -1
  219. package/cjs/packages/vuu-utils/src/shell-layout-types.js +0 -13
  220. package/cjs/packages/vuu-utils/src/shell-layout-types.js.map +0 -1
  221. package/cjs/packages/vuu-utils/src/sort-utils.js +0 -78
  222. package/cjs/packages/vuu-utils/src/sort-utils.js.map +0 -1
  223. package/cjs/packages/vuu-utils/src/table-schema-utils.js +0 -23
  224. package/cjs/packages/vuu-utils/src/table-schema-utils.js.map +0 -1
  225. package/cjs/packages/vuu-utils/src/text-utils.js +0 -26
  226. package/cjs/packages/vuu-utils/src/text-utils.js.map +0 -1
  227. package/cjs/packages/vuu-utils/src/theme-utils.js +0 -36
  228. package/cjs/packages/vuu-utils/src/theme-utils.js.map +0 -1
  229. package/cjs/packages/vuu-utils/src/tree-utils.js +0 -114
  230. package/cjs/packages/vuu-utils/src/tree-utils.js.map +0 -1
  231. package/cjs/packages/vuu-utils/src/ts-utils.js +0 -12
  232. package/cjs/packages/vuu-utils/src/ts-utils.js.map +0 -1
  233. package/cjs/packages/vuu-utils/src/typeahead-utils.js +0 -6
  234. package/cjs/packages/vuu-utils/src/typeahead-utils.js.map +0 -1
  235. package/cjs/packages/vuu-utils/src/url-utils.js +0 -21
  236. package/cjs/packages/vuu-utils/src/url-utils.js.map +0 -1
  237. package/cjs/packages/vuu-utils/src/useId.js +0 -9
  238. package/cjs/packages/vuu-utils/src/useId.js.map +0 -1
  239. package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +0 -17
  240. package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +0 -1
  241. package/cjs/packages/vuu-utils/src/useResizeObserver.js +0 -134
  242. package/cjs/packages/vuu-utils/src/useResizeObserver.js.map +0 -1
  243. package/cjs/packages/vuu-utils/src/useStateRef.js +0 -23
  244. package/cjs/packages/vuu-utils/src/useStateRef.js.map +0 -1
  245. package/esm/node_modules/@dnd-kit/abstract/index.js +0 -1472
  246. package/esm/node_modules/@dnd-kit/abstract/index.js.map +0 -1
  247. package/esm/node_modules/@dnd-kit/abstract/modifiers.js +0 -82
  248. package/esm/node_modules/@dnd-kit/abstract/modifiers.js.map +0 -1
  249. package/esm/node_modules/@dnd-kit/collision/dist/index.js +0 -86
  250. package/esm/node_modules/@dnd-kit/collision/dist/index.js.map +0 -1
  251. package/esm/node_modules/@dnd-kit/dom/index.js +0 -1977
  252. package/esm/node_modules/@dnd-kit/dom/index.js.map +0 -1
  253. package/esm/node_modules/@dnd-kit/dom/sortable.js +0 -822
  254. package/esm/node_modules/@dnd-kit/dom/sortable.js.map +0 -1
  255. package/esm/node_modules/@dnd-kit/dom/utilities.js +0 -1344
  256. package/esm/node_modules/@dnd-kit/dom/utilities.js.map +0 -1
  257. package/esm/node_modules/@dnd-kit/geometry/dist/index.js +0 -303
  258. package/esm/node_modules/@dnd-kit/geometry/dist/index.js.map +0 -1
  259. package/esm/node_modules/@dnd-kit/react/hooks.js +0 -126
  260. package/esm/node_modules/@dnd-kit/react/hooks.js.map +0 -1
  261. package/esm/node_modules/@dnd-kit/react/index.js +0 -392
  262. package/esm/node_modules/@dnd-kit/react/index.js.map +0 -1
  263. package/esm/node_modules/@dnd-kit/react/sortable.js +0 -175
  264. package/esm/node_modules/@dnd-kit/react/sortable.js.map +0 -1
  265. package/esm/node_modules/@dnd-kit/react/utilities.js +0 -17
  266. package/esm/node_modules/@dnd-kit/react/utilities.js.map +0 -1
  267. package/esm/node_modules/@dnd-kit/state/dist/index.js +0 -266
  268. package/esm/node_modules/@dnd-kit/state/dist/index.js.map +0 -1
  269. package/esm/node_modules/@preact/signals-core/dist/signals-core.js +0 -4
  270. package/esm/node_modules/@preact/signals-core/dist/signals-core.js.map +0 -1
  271. package/esm/packages/vuu-utils/src/Clock.js +0 -60
  272. package/esm/packages/vuu-utils/src/Clock.js.map +0 -1
  273. package/esm/packages/vuu-utils/src/PageVisibilityObserver.js +0 -78
  274. package/esm/packages/vuu-utils/src/PageVisibilityObserver.js.map +0 -1
  275. package/esm/packages/vuu-utils/src/ScaledDecimal.js +0 -37
  276. package/esm/packages/vuu-utils/src/ScaledDecimal.js.map +0 -1
  277. package/esm/packages/vuu-utils/src/ShellContext.js +0 -10
  278. package/esm/packages/vuu-utils/src/ShellContext.js.map +0 -1
  279. package/esm/packages/vuu-utils/src/ThemeProvider.js +0 -78
  280. package/esm/packages/vuu-utils/src/ThemeProvider.js.map +0 -1
  281. package/esm/packages/vuu-utils/src/array-utils.js +0 -93
  282. package/esm/packages/vuu-utils/src/array-utils.js.map +0 -1
  283. package/esm/packages/vuu-utils/src/box-utils.js +0 -47
  284. package/esm/packages/vuu-utils/src/box-utils.js.map +0 -1
  285. package/esm/packages/vuu-utils/src/column-utils.js +0 -968
  286. package/esm/packages/vuu-utils/src/column-utils.js.map +0 -1
  287. package/esm/packages/vuu-utils/src/common-types.js +0 -13
  288. package/esm/packages/vuu-utils/src/common-types.js.map +0 -1
  289. package/esm/packages/vuu-utils/src/component-registry.js +0 -128
  290. package/esm/packages/vuu-utils/src/component-registry.js.map +0 -1
  291. package/esm/packages/vuu-utils/src/context-definitions/DataContext.js +0 -18
  292. package/esm/packages/vuu-utils/src/context-definitions/DataContext.js.map +0 -1
  293. package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js +0 -16
  294. package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js.map +0 -1
  295. package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +0 -29
  296. package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +0 -1
  297. package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +0 -17
  298. package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +0 -1
  299. package/esm/packages/vuu-utils/src/cookie-utils.js +0 -19
  300. package/esm/packages/vuu-utils/src/cookie-utils.js.map +0 -1
  301. package/esm/packages/vuu-utils/src/css-utils.js +0 -7
  302. package/esm/packages/vuu-utils/src/css-utils.js.map +0 -1
  303. package/esm/packages/vuu-utils/src/data-utils.js +0 -95
  304. package/esm/packages/vuu-utils/src/data-utils.js.map +0 -1
  305. package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js +0 -314
  306. package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js.map +0 -1
  307. package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js +0 -8
  308. package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +0 -1
  309. package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js +0 -38
  310. package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +0 -1
  311. package/esm/packages/vuu-utils/src/datasource/datasource-utils.js +0 -193
  312. package/esm/packages/vuu-utils/src/datasource/datasource-utils.js.map +0 -1
  313. package/esm/packages/vuu-utils/src/date/date-utils.js +0 -121
  314. package/esm/packages/vuu-utils/src/date/date-utils.js.map +0 -1
  315. package/esm/packages/vuu-utils/src/date/dateTimePattern.js +0 -22
  316. package/esm/packages/vuu-utils/src/date/dateTimePattern.js.map +0 -1
  317. package/esm/packages/vuu-utils/src/date/formatter.js +0 -79
  318. package/esm/packages/vuu-utils/src/date/formatter.js.map +0 -1
  319. package/esm/packages/vuu-utils/src/date/types.js +0 -26
  320. package/esm/packages/vuu-utils/src/date/types.js.map +0 -1
  321. package/esm/packages/vuu-utils/src/debug-utils.js +0 -32
  322. package/esm/packages/vuu-utils/src/debug-utils.js.map +0 -1
  323. package/esm/packages/vuu-utils/src/edit-utils.js +0 -4
  324. package/esm/packages/vuu-utils/src/edit-utils.js.map +0 -1
  325. package/esm/packages/vuu-utils/src/errors.js.map +0 -1
  326. package/esm/packages/vuu-utils/src/event-emitter.js +0 -111
  327. package/esm/packages/vuu-utils/src/event-emitter.js.map +0 -1
  328. package/esm/packages/vuu-utils/src/feature-utils.js +0 -125
  329. package/esm/packages/vuu-utils/src/feature-utils.js.map +0 -1
  330. package/esm/packages/vuu-utils/src/filters/filter-utils.js +0 -159
  331. package/esm/packages/vuu-utils/src/filters/filter-utils.js.map +0 -1
  332. package/esm/packages/vuu-utils/src/filters/filterAsQuery.js +0 -65
  333. package/esm/packages/vuu-utils/src/filters/filterAsQuery.js.map +0 -1
  334. package/esm/packages/vuu-utils/src/form-utils.js +0 -116
  335. package/esm/packages/vuu-utils/src/form-utils.js.map +0 -1
  336. package/esm/packages/vuu-utils/src/formatting-utils.js +0 -109
  337. package/esm/packages/vuu-utils/src/formatting-utils.js.map +0 -1
  338. package/esm/packages/vuu-utils/src/getUniqueId.js +0 -4
  339. package/esm/packages/vuu-utils/src/getUniqueId.js.map +0 -1
  340. package/esm/packages/vuu-utils/src/group-utils.js +0 -23
  341. package/esm/packages/vuu-utils/src/group-utils.js.map +0 -1
  342. package/esm/packages/vuu-utils/src/html-utils.js +0 -145
  343. package/esm/packages/vuu-utils/src/html-utils.js.map +0 -1
  344. package/esm/packages/vuu-utils/src/index.js +0 -74
  345. package/esm/packages/vuu-utils/src/index.js.map +0 -1
  346. package/esm/packages/vuu-utils/src/input-utils.js +0 -7
  347. package/esm/packages/vuu-utils/src/input-utils.js.map +0 -1
  348. package/esm/packages/vuu-utils/src/invariant.js +0 -11
  349. package/esm/packages/vuu-utils/src/invariant.js.map +0 -1
  350. package/esm/packages/vuu-utils/src/itemToString.js +0 -21
  351. package/esm/packages/vuu-utils/src/itemToString.js.map +0 -1
  352. package/esm/packages/vuu-utils/src/json-utils.js +0 -103
  353. package/esm/packages/vuu-utils/src/json-utils.js.map +0 -1
  354. package/esm/packages/vuu-utils/src/keyboard-utils.js.map +0 -1
  355. package/esm/packages/vuu-utils/src/keyset.js +0 -70
  356. package/esm/packages/vuu-utils/src/keyset.js.map +0 -1
  357. package/esm/packages/vuu-utils/src/list-utils.js +0 -9
  358. package/esm/packages/vuu-utils/src/list-utils.js.map +0 -1
  359. package/esm/packages/vuu-utils/src/local-storage-utils.js +0 -30
  360. package/esm/packages/vuu-utils/src/local-storage-utils.js.map +0 -1
  361. package/esm/packages/vuu-utils/src/logging-utils.js +0 -61
  362. package/esm/packages/vuu-utils/src/logging-utils.js.map +0 -1
  363. package/esm/packages/vuu-utils/src/module-utils.js +0 -4
  364. package/esm/packages/vuu-utils/src/module-utils.js.map +0 -1
  365. package/esm/packages/vuu-utils/src/nanoid/index.js +0 -20
  366. package/esm/packages/vuu-utils/src/nanoid/index.js.map +0 -1
  367. package/esm/packages/vuu-utils/src/perf-utils.js +0 -32
  368. package/esm/packages/vuu-utils/src/perf-utils.js.map +0 -1
  369. package/esm/packages/vuu-utils/src/promise-utils.js +0 -40
  370. package/esm/packages/vuu-utils/src/promise-utils.js.map +0 -1
  371. package/esm/packages/vuu-utils/src/protocol-message-utils.js +0 -78
  372. package/esm/packages/vuu-utils/src/protocol-message-utils.js.map +0 -1
  373. package/esm/packages/vuu-utils/src/range-utils.js +0 -132
  374. package/esm/packages/vuu-utils/src/range-utils.js.map +0 -1
  375. package/esm/packages/vuu-utils/src/react-utils.js +0 -66
  376. package/esm/packages/vuu-utils/src/react-utils.js.map +0 -1
  377. package/esm/packages/vuu-utils/src/round-decimal.js +0 -127
  378. package/esm/packages/vuu-utils/src/round-decimal.js.map +0 -1
  379. package/esm/packages/vuu-utils/src/row-utils.js +0 -54
  380. package/esm/packages/vuu-utils/src/row-utils.js.map +0 -1
  381. package/esm/packages/vuu-utils/src/selection-utils.js +0 -61
  382. package/esm/packages/vuu-utils/src/selection-utils.js.map +0 -1
  383. package/esm/packages/vuu-utils/src/shell-layout-types.js +0 -11
  384. package/esm/packages/vuu-utils/src/shell-layout-types.js.map +0 -1
  385. package/esm/packages/vuu-utils/src/sort-utils.js +0 -73
  386. package/esm/packages/vuu-utils/src/sort-utils.js.map +0 -1
  387. package/esm/packages/vuu-utils/src/table-schema-utils.js +0 -20
  388. package/esm/packages/vuu-utils/src/table-schema-utils.js.map +0 -1
  389. package/esm/packages/vuu-utils/src/text-utils.js +0 -20
  390. package/esm/packages/vuu-utils/src/text-utils.js.map +0 -1
  391. package/esm/packages/vuu-utils/src/theme-utils.js +0 -34
  392. package/esm/packages/vuu-utils/src/theme-utils.js.map +0 -1
  393. package/esm/packages/vuu-utils/src/tree-utils.js +0 -108
  394. package/esm/packages/vuu-utils/src/tree-utils.js.map +0 -1
  395. package/esm/packages/vuu-utils/src/ts-utils.js +0 -8
  396. package/esm/packages/vuu-utils/src/ts-utils.js.map +0 -1
  397. package/esm/packages/vuu-utils/src/typeahead-utils.js +0 -4
  398. package/esm/packages/vuu-utils/src/typeahead-utils.js.map +0 -1
  399. package/esm/packages/vuu-utils/src/url-utils.js +0 -18
  400. package/esm/packages/vuu-utils/src/url-utils.js.map +0 -1
  401. package/esm/packages/vuu-utils/src/useId.js +0 -7
  402. package/esm/packages/vuu-utils/src/useId.js.map +0 -1
  403. package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +0 -15
  404. package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +0 -1
  405. package/esm/packages/vuu-utils/src/useResizeObserver.js +0 -130
  406. package/esm/packages/vuu-utils/src/useResizeObserver.js.map +0 -1
  407. package/esm/packages/vuu-utils/src/useStateRef.js +0 -21
  408. package/esm/packages/vuu-utils/src/useStateRef.js.map +0 -1
@@ -0,0 +1,80 @@
1
+ import { CalendarDate } from "@internationalized/date";
2
+ function toCalendarDate(d) {
3
+ return new CalendarDate(d.getFullYear(), d.getMonth() + 1, d.getDate());
4
+ }
5
+ const zeroTime = "00:00:00";
6
+ const zeroTimeUnit = "00";
7
+ function incrementTimeUnitValue(unit, value) {
8
+ const num = parseInt(value);
9
+ if ("hours" === unit && num < 23) return `${num + 1}`.padStart(2, "0").slice(-2);
10
+ if ("hours" === unit && 23 === num) return "00";
11
+ if (num < 59) return `${num + 1}`.padStart(2, "0").slice(-2);
12
+ if (59 === num) return "00";
13
+ return value;
14
+ }
15
+ function decrementTimeUnitValue(unit, value) {
16
+ const num = parseInt(value);
17
+ if ("hours" === unit && num > 0) return `${num - 1}`.padStart(2, "0").slice(-2);
18
+ if ("hours" === unit && 0 === num) return "23";
19
+ if (num > 0) return `${num - 1}`.padStart(2, "0").slice(-2);
20
+ if (0 === num) return "59";
21
+ return value;
22
+ }
23
+ function updateTimeString(timeString, unit, value) {
24
+ const newTimeString = "hours" === unit ? value.concat(timeString.slice(2)) : "minutes" === unit ? timeString.slice(0, 3).concat(value).concat(timeString.slice(5)) : timeString.slice(0, 6).concat(value);
25
+ if (isValidTimeString(newTimeString)) return newTimeString;
26
+ throw Error(`[date-utils] udateTimeSting invalid result ${newTimeString}`);
27
+ }
28
+ const validTimePattern = /(?:[0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]/;
29
+ const isValidTimeString = (value)=>"string" == typeof value && validTimePattern.test(value);
30
+ function asTimeString(value, allowUndefined = false) {
31
+ if (void 0 === value) if (allowUndefined) return value;
32
+ else throw Error("[date-utils] asTimeString, value cannot be undefined");
33
+ if (isValidTimeString(value)) return value;
34
+ if ("number" == typeof value) return Time.millisToTimeString(value);
35
+ if ("string" == typeof value) {
36
+ const valueAsInt = parseInt(value);
37
+ if (!isNaN(valueAsInt)) return Time.millisToTimeString(valueAsInt);
38
+ } else throw Error(`[date-utils] asTimeString, value ${value} is not valid TimeString`);
39
+ }
40
+ const padZero = (val)=>`${val}`.padStart(2, "0");
41
+ class TimeImpl {
42
+ #hours;
43
+ #minutes;
44
+ #seconds;
45
+ constructor(timeString){
46
+ const [hours, minutes, seconds] = timeString.split(":");
47
+ this.#hours = parseInt(hours);
48
+ this.#minutes = parseInt(minutes);
49
+ this.#seconds = parseInt(seconds);
50
+ }
51
+ get hours() {
52
+ return this.#hours;
53
+ }
54
+ get minutes() {
55
+ return this.#minutes;
56
+ }
57
+ get seconds() {
58
+ return this.#seconds;
59
+ }
60
+ asDate(date) {
61
+ const dt = void 0 === date ? new Date() : "string" == typeof date ? new Date(date) : date;
62
+ dt.setHours(this.#hours);
63
+ dt.setMinutes(this.#minutes);
64
+ dt.setSeconds(this.seconds);
65
+ dt.setMilliseconds(0);
66
+ return dt;
67
+ }
68
+ toString() {
69
+ return Time.toString(this.#hours, this.#minutes, this.#seconds);
70
+ }
71
+ }
72
+ const Time = (timeString)=>new TimeImpl(timeString);
73
+ Time.millisToTimeString = (timestamp)=>new Date(timestamp).toTimeString().slice(0, 8);
74
+ Time.toString = (hours, minutes, seconds)=>`${padZero(hours)}:${padZero(minutes)}:${padZero(seconds)}`;
75
+ Time.isDateInMillis = (dtInMillis)=>{
76
+ const n = "number" == typeof dtInMillis ? dtInMillis : Number(dtInMillis);
77
+ if (!Number.isFinite(n) || !Number.isInteger(n)) return false;
78
+ return new Date(n).getTime() === n;
79
+ };
80
+ export { Time, asTimeString, decrementTimeUnitValue, incrementTimeUnitValue, isValidTimeString, toCalendarDate, updateTimeString, zeroTime, zeroTimeUnit };
@@ -0,0 +1,17 @@
1
+ import { isTypeDescriptor } from "../column-utils.js";
2
+ import { isDateTimePattern } from "./types.js";
3
+ const defaultPatternsByType = {
4
+ time: "hh:mm:ss",
5
+ date: "dd.mm.yyyy"
6
+ };
7
+ const fallbackDateTimePattern = {
8
+ date: defaultPatternsByType["date"],
9
+ time: defaultPatternsByType["time"]
10
+ };
11
+ function dateTimePattern(type) {
12
+ if (isTypeDescriptor(type)) {
13
+ if (type.formatting && isDateTimePattern(type.formatting.pattern)) return type.formatting.pattern;
14
+ }
15
+ return fallbackDateTimePattern;
16
+ }
17
+ export { dateTimePattern, defaultPatternsByType, fallbackDateTimePattern };
@@ -0,0 +1,101 @@
1
+ import { DateFormatter } from "@internationalized/date";
2
+ const baseTimeFormatOptions = {
3
+ hour: "2-digit",
4
+ minute: "2-digit",
5
+ second: "2-digit"
6
+ };
7
+ const formatConfigByTimePatterns = {
8
+ "hh:mm:ss": {
9
+ locale: "en-GB",
10
+ options: {
11
+ ...baseTimeFormatOptions,
12
+ hour12: false
13
+ }
14
+ },
15
+ "hh:mm:ss a": {
16
+ locale: "en-GB",
17
+ options: {
18
+ ...baseTimeFormatOptions,
19
+ hour12: true
20
+ }
21
+ },
22
+ "hh:mm:ss.ms": {
23
+ locale: "en-GB",
24
+ options: {
25
+ ...baseTimeFormatOptions,
26
+ hour12: false,
27
+ fractionalSecondDigits: 3
28
+ }
29
+ }
30
+ };
31
+ const baseDateFormatOptions = {
32
+ day: "2-digit",
33
+ month: "2-digit",
34
+ year: "numeric"
35
+ };
36
+ const formatConfigByDatePatterns = {
37
+ "dd.mm.yyyy": {
38
+ locale: "de-De",
39
+ options: {
40
+ ...baseDateFormatOptions
41
+ }
42
+ },
43
+ "dd/mm/yyyy": {
44
+ locale: "en-GB",
45
+ options: {
46
+ ...baseDateFormatOptions
47
+ }
48
+ },
49
+ "dd MMM yyyy": {
50
+ locale: "en-GB",
51
+ options: {
52
+ ...baseDateFormatOptions,
53
+ month: "short"
54
+ }
55
+ },
56
+ "dd MMMM yyyy": {
57
+ locale: "en-GB",
58
+ options: {
59
+ ...baseDateFormatOptions,
60
+ month: "long"
61
+ }
62
+ },
63
+ "mm/dd/yyyy": {
64
+ locale: "en-US",
65
+ options: {
66
+ ...baseDateFormatOptions
67
+ }
68
+ },
69
+ "MMM dd, yyyy": {
70
+ locale: "en-US",
71
+ options: {
72
+ ...baseDateFormatOptions,
73
+ month: "short"
74
+ }
75
+ },
76
+ "MMMM dd, yyyy": {
77
+ locale: "en-US",
78
+ options: {
79
+ ...baseDateFormatOptions,
80
+ month: "long"
81
+ }
82
+ }
83
+ };
84
+ const dateFormatterISO = {
85
+ format: (date)=>new Date(date - 60000 * date.getTimezoneOffset()).toISOString().replace(/T.*/, "")
86
+ };
87
+ function getDateFormatter({ locale, options }) {
88
+ return new DateFormatter(locale, options);
89
+ }
90
+ function getDateAndTimeFormatters({ date, time }) {
91
+ const out = [];
92
+ if ("yyyy-mm-dd" === date) out.push(dateFormatterISO);
93
+ else if (date) out.push(getDateFormatter(formatConfigByDatePatterns[date]));
94
+ if (time) out.push(getDateFormatter(formatConfigByTimePatterns[time]));
95
+ return out;
96
+ }
97
+ function formatDate(pattern) {
98
+ const formatters = getDateAndTimeFormatters(pattern);
99
+ return (d)=>formatters.map((f)=>f.format(d)).join(" ");
100
+ }
101
+ export { formatDate, getDateFormatter };
@@ -0,0 +1,4 @@
1
+ export * from "./formatter.js";
2
+ export { Time, asTimeString, decrementTimeUnitValue, incrementTimeUnitValue, isValidTimeString, toCalendarDate, updateTimeString, zeroTime, zeroTimeUnit } from "./date-utils.js";
3
+ export { dateTimePattern, defaultPatternsByType, fallbackDateTimePattern } from "./dateTimePattern.js";
4
+ export { dateTimeLabelByType, isDatePattern, isTimePattern, supportedDateTimePatterns } from "./types.js";
@@ -0,0 +1,27 @@
1
+ const supportedDatePatterns = [
2
+ "yyyy-mm-dd",
3
+ "dd.mm.yyyy",
4
+ "dd/mm/yyyy",
5
+ "dd MMM yyyy",
6
+ "dd MMMM yyyy",
7
+ "mm/dd/yyyy",
8
+ "MMM dd, yyyy",
9
+ "MMMM dd, yyyy"
10
+ ];
11
+ const supportedTimePatterns = [
12
+ "hh:mm:ss",
13
+ "hh:mm:ss a",
14
+ "hh:mm:ss.ms"
15
+ ];
16
+ const supportedDateTimePatterns = {
17
+ date: supportedDatePatterns,
18
+ time: supportedTimePatterns
19
+ };
20
+ const dateTimeLabelByType = {
21
+ date: "Date",
22
+ time: "Time"
23
+ };
24
+ const isDatePattern = (pattern)=>supportedDatePatterns.includes(pattern);
25
+ const isTimePattern = (pattern)=>supportedTimePatterns.includes(pattern);
26
+ const isDateTimePattern = (pattern)=>isDatePattern(pattern?.date) || isTimePattern(pattern?.time);
27
+ export { dateTimeLabelByType, isDatePattern, isDateTimePattern, isTimePattern, supportedDateTimePatterns };
@@ -0,0 +1,25 @@
1
+ import { logger } from "./logging-utils.js";
2
+ const { debug: debug, debugEnabled: debugEnabled } = logger("range-monitor");
3
+ class RangeMonitor {
4
+ source;
5
+ range = {
6
+ from: 0,
7
+ to: 0
8
+ };
9
+ timestamp = 0;
10
+ constructor(source){
11
+ this.source = source;
12
+ }
13
+ isSet() {
14
+ return 0 !== this.timestamp;
15
+ }
16
+ set({ from, to }) {
17
+ const { timestamp } = this;
18
+ this.range.from = from;
19
+ this.range.to = to;
20
+ this.timestamp = performance.now();
21
+ if (!timestamp) return 0;
22
+ debugEnabled && debug(`<${this.source}> [${from}-${to}], ${(this.timestamp - timestamp).toFixed(0)} ms elapsed`);
23
+ }
24
+ }
25
+ export { RangeMonitor };
@@ -0,0 +1,2 @@
1
+ const isInlineEditingSession = (editSessionMode)=>editSessionMode.startsWith("inline");
2
+ export { isInlineEditingSession };
@@ -1,5 +1,3 @@
1
1
  class StaleUpdateError extends Error {
2
2
  }
3
-
4
3
  export { StaleUpdateError };
5
- //# sourceMappingURL=errors.js.map
@@ -0,0 +1,78 @@
1
+ function isArrayOfListeners(listeners) {
2
+ return Array.isArray(listeners);
3
+ }
4
+ function isOnlyListener(listeners) {
5
+ return !Array.isArray(listeners);
6
+ }
7
+ class EventEmitter {
8
+ #events = new Map();
9
+ addListener(event, listener) {
10
+ const listeners = this.#events.get(event);
11
+ if (listeners) {
12
+ if (isArrayOfListeners(listeners)) listeners.push(listener);
13
+ else if (isOnlyListener(listeners)) this.#events.set(event, [
14
+ listeners,
15
+ listener
16
+ ]);
17
+ } else this.#events.set(event, listener);
18
+ }
19
+ removeListener(event, listener) {
20
+ if (!this.#events.has(event)) return;
21
+ const listenerOrListeners = this.#events.get(event);
22
+ let position = -1;
23
+ if (listenerOrListeners === listener) this.#events.delete(event);
24
+ else if (Array.isArray(listenerOrListeners)) {
25
+ for(let i = listenerOrListeners.length; i-- > 0;)if (listenerOrListeners[i] === listener) {
26
+ position = i;
27
+ break;
28
+ }
29
+ if (position < 0) return;
30
+ if (1 === listenerOrListeners.length) {
31
+ listenerOrListeners.length = 0;
32
+ this.#events.delete(event);
33
+ } else listenerOrListeners.splice(position, 1);
34
+ }
35
+ }
36
+ removeAllListeners(event) {
37
+ if (event && this.#events.has(event)) this.#events.delete(event);
38
+ else if (void 0 === event) this.#events.clear();
39
+ }
40
+ emit(event, ...args) {
41
+ if (this.#events) {
42
+ const handler = this.#events.get(event);
43
+ if (handler) this.invokeHandler(handler, args);
44
+ }
45
+ }
46
+ once(event, listener) {
47
+ const handler = (...args)=>{
48
+ this.removeListener(event, handler);
49
+ listener(...args);
50
+ };
51
+ this.on(event, handler);
52
+ }
53
+ on(event, listener) {
54
+ this.addListener(event, listener);
55
+ }
56
+ hasListener(event, listener) {
57
+ const listeners = this.#events.get(event);
58
+ if (Array.isArray(listeners)) return listeners.includes(listener);
59
+ return listeners === listener;
60
+ }
61
+ invokeHandler(handler, args) {
62
+ if (isArrayOfListeners(handler)) handler.slice().forEach((listener)=>this.invokeHandler(listener, args));
63
+ else switch(args.length){
64
+ case 0:
65
+ handler();
66
+ break;
67
+ case 1:
68
+ handler(args[0]);
69
+ break;
70
+ case 2:
71
+ handler(args[0], args[1]);
72
+ break;
73
+ default:
74
+ handler.call(null, ...args);
75
+ }
76
+ }
77
+ }
78
+ export { EventEmitter };
@@ -0,0 +1,86 @@
1
+ import { partition } from "./array-utils.js";
2
+ import { wordify } from "./text-utils.js";
3
+ import react from "react";
4
+ import { getLayoutComponent } from "./component-registry.js";
5
+ const env = process.env.NODE_ENV;
6
+ const isStaticFeature = (feature)=>null !== feature && "object" == typeof feature && "type" in feature;
7
+ const isStaticFeatures = (features)=>Array.isArray(features) && features.every(isStaticFeature);
8
+ function featureFromJson({ type }) {
9
+ const componentType = type.match(/^[a-z]/) ? type : getLayoutComponent(type);
10
+ if (void 0 === componentType) throw Error(`layoutUtils unable to create feature component from JSON, unknown type ${type}`);
11
+ return react.createElement(componentType);
12
+ }
13
+ const isCustomFeature = (feature)=>"vuu-features" === feature.leftNavLocation;
14
+ const isWildcardSchema = (vuuTables)=>"*" === vuuTables;
15
+ const isVuuTables = (vuuTables)=>Array.isArray(vuuTables);
16
+ const hasFilterTableFeatureProps = (props)=>"object" == typeof props.ComponentProps && null !== props.ComponentProps && "tableSchema" in props.ComponentProps;
17
+ const isSameTable = (t1, t2)=>{
18
+ t1.module === t2.module && (t1.table, t2.table);
19
+ };
20
+ const byModule = (schema1, schema2)=>{
21
+ const m1 = schema1.table.module.toLowerCase();
22
+ const m2 = schema2.table.module.toLowerCase();
23
+ if (m1 < m2) return -1;
24
+ if (m1 > m2) return 1;
25
+ if (schema1.table.table < schema2.table.table) return -1;
26
+ if (schema1.table.table > schema2.table.table) return 1;
27
+ return 0;
28
+ };
29
+ const getFilterTableFeatures = (schemas, getFeaturePath)=>schemas.sort(byModule).map((schema)=>({
30
+ ...getFeaturePath({
31
+ env: env,
32
+ fileName: "FilterTable"
33
+ }),
34
+ ComponentProps: {
35
+ tableSchema: schema
36
+ },
37
+ ViewProps: {
38
+ allowRename: true
39
+ },
40
+ title: `${schema.table.module} ${schema.table.table}`
41
+ }));
42
+ const assertComponentRegistered = (componentName, component)=>{
43
+ if ("function" != typeof component) console.warn(`${componentName} module not loaded, will be unabale to deserialize from layout JSON`);
44
+ };
45
+ const assertComponentsRegistered = (componentList)=>{
46
+ for (const { componentName, component } of componentList)assertComponentRegistered(componentName, component);
47
+ };
48
+ const getCustomAndTableFeatures = (dynamicFeatures, tableSchemas)=>{
49
+ const [customFeatureConfig, tableFeaturesConfig] = partition(dynamicFeatures, isCustomFeature);
50
+ const customFeatures = [];
51
+ const tableFeatures = [];
52
+ for (const { featureProps = {}, viewProps, ...feature } of tableFeaturesConfig){
53
+ const { vuuTables } = featureProps;
54
+ if (isWildcardSchema(vuuTables)) {
55
+ if (tableSchemas) for (const tableSchema of tableSchemas)tableFeatures.push({
56
+ ...feature,
57
+ ComponentProps: {
58
+ tableSchema
59
+ },
60
+ title: `${tableSchema.table.module} ${wordify(tableSchema.table.table)}`,
61
+ ViewProps: {
62
+ ...viewProps,
63
+ allowRename: true
64
+ }
65
+ });
66
+ }
67
+ }
68
+ for (const { featureProps = {}, viewProps, ...feature } of customFeatureConfig){
69
+ const { vuuTables } = featureProps;
70
+ if (isVuuTables(vuuTables)) {
71
+ if (tableSchemas) customFeatures.push({
72
+ ...feature,
73
+ ComponentProps: vuuTables.reduce((map, vuuTable)=>{
74
+ map[`${vuuTable.table}Schema`] = tableSchemas.find((tableSchema)=>isSameTable(vuuTable, tableSchema.table));
75
+ return map;
76
+ }, {}),
77
+ ViewProps: viewProps
78
+ });
79
+ } else customFeatures.push(feature);
80
+ }
81
+ return {
82
+ dynamicFeatures: customFeatures,
83
+ tableFeatures: tableFeatures
84
+ };
85
+ };
86
+ export { assertComponentRegistered, assertComponentsRegistered, byModule, env, featureFromJson, getCustomAndTableFeatures, getFilterTableFeatures, hasFilterTableFeatureProps, isCustomFeature, isSameTable, isStaticFeatures, isVuuTables, isWildcardSchema };
@@ -0,0 +1,136 @@
1
+ import { ScaledDecimal } from "../ScaledDecimal.js";
2
+ const singleValueFilterOps = new Set([
3
+ "=",
4
+ "!=",
5
+ ">",
6
+ ">=",
7
+ "<",
8
+ "<=",
9
+ "contains",
10
+ "starts",
11
+ "ends"
12
+ ]);
13
+ const isBetweenOperator = (op)=>"between" === op || "between-inclusive" === op;
14
+ const isValidFilterClauseOp = (op)=>"in" === op || singleValueFilterOps.has(op);
15
+ const isNamedFilter = (f)=>void 0 !== f && void 0 !== f.name;
16
+ const isSingleValueFilter = (f)=>void 0 !== f && singleValueFilterOps.has(f.op);
17
+ const isScaledDecimalFilterClause = (f)=>f.value instanceof ScaledDecimal;
18
+ const isSerializableFilter = (f)=>isSingleValueFilter(f) && "asQuery" in f && "function" == typeof f["asQuery"];
19
+ const isFilter = (f)=>"object" == typeof f && null !== f && (isFilterClause(f) || isMultiClauseFilter(f));
20
+ const isFilterClause = (f)=>void 0 !== f && (isSingleValueFilter(f) || isMultiValueFilter(f));
21
+ const isMultiValueFilter = (f)=>void 0 !== f && "in" === f.op;
22
+ const isInFilter = (f)=>"in" === f.op;
23
+ const isAndFilter = (f)=>f?.op === "and";
24
+ const isBetweenFilter = (f)=>isAndFilter(f) && 2 === f.filters.length && f.filters[0].column === f.filters[1].column && (">" === f.filters[0].op && "<" === f.filters[1].op || ">=" === f.filters[0].op && "<=" === f.filters[1].op);
25
+ const isOrFilter = (f)=>f?.op === "or";
26
+ const isCompleteFilter = (filter)=>isSingleValueFilter(filter) && void 0 !== filter.column && void 0 !== filter.op && void 0 !== filter.value;
27
+ function isMultiClauseFilter(f) {
28
+ return void 0 !== f && ("and" === f.op || "or" === f.op);
29
+ }
30
+ const isExtendedFilter = (f)=>"object" == typeof f.extendedOptions;
31
+ const applyFilterToColumns = (columns, { filterStruct })=>columns.map((column)=>{
32
+ const filter = extractFilterForColumn(filterStruct, column.name);
33
+ if (void 0 !== filter) return {
34
+ ...column,
35
+ filter
36
+ };
37
+ if (column.filter) return {
38
+ ...column,
39
+ filter: void 0
40
+ };
41
+ return column;
42
+ });
43
+ const isFilteredColumn = (column)=>void 0 !== column.filter;
44
+ const stripFilterFromColumns = (columns)=>columns.map((col)=>{
45
+ const { filter, ...rest } = col;
46
+ return filter ? rest : col;
47
+ });
48
+ const extractFilterForColumn = (filter, columnName)=>{
49
+ if (isMultiClauseFilter(filter)) return collectFiltersForColumn(filter, columnName);
50
+ if (isFilterClause(filter)) return filter.column === columnName ? filter : void 0;
51
+ };
52
+ const collectFiltersForColumn = (filter, columnName)=>{
53
+ const { filters, op } = filter;
54
+ const results = [];
55
+ filters.forEach((filter)=>{
56
+ const ffc = extractFilterForColumn(filter, columnName);
57
+ if (ffc) results.push(ffc);
58
+ });
59
+ if (0 === results.length) return;
60
+ if (1 === results.length) return results[0];
61
+ return {
62
+ op,
63
+ filters: results
64
+ };
65
+ };
66
+ const stringifyBoolean = (value)=>"boolean" == typeof value ? "${filter.value}" : value;
67
+ const getColumnValueFromFilter = (column, operator, filter)=>{
68
+ if (isSingleValueFilter(filter)) {
69
+ if (filter.column === column.name) {
70
+ if (!operator.startsWith("between")) return stringifyBoolean(filter.value);
71
+ else if ("=" === filter.op) return [
72
+ `${filter.value}`,
73
+ ""
74
+ ];
75
+ else if ("<" === filter.op) return [
76
+ "",
77
+ `${filter.value}`
78
+ ];
79
+ }
80
+ } else if (isBetweenFilter(filter)) {
81
+ if (filter.filters[0].column === column.name) {
82
+ const [{ value: v1 }, { value: v2 }] = filter.filters;
83
+ return [
84
+ `${v1}`,
85
+ `${v2}`
86
+ ];
87
+ }
88
+ } else if (isAndFilter(filter)) {
89
+ const filterForColumn = filter.filters.find((f)=>isBetweenFilter(f) ? f.filters[0].column === column.name : f.column === column.name);
90
+ if (isSingleValueFilter(filterForColumn)) return stringifyBoolean(filterForColumn.value);
91
+ if (operator.startsWith("between") && isBetweenFilter(filterForColumn)) {
92
+ const [{ value: v1 }, { value: v2 }] = filterForColumn.filters;
93
+ return [
94
+ `${v1}`,
95
+ `${v2}`
96
+ ];
97
+ }
98
+ }
99
+ if (!operator.startsWith("between")) return "";
100
+ if ("time" === column.type) return [
101
+ "00:00:00",
102
+ "23:59:59"
103
+ ];
104
+ return [
105
+ "",
106
+ ""
107
+ ];
108
+ };
109
+ const betweenFiltersAreEqual = (f1, f2)=>{
110
+ const [from1, to1] = f1.filters;
111
+ const [from2, to2] = f2.filters;
112
+ return filtersAreEqual(from1, from2) && filtersAreEqual(to1, to2);
113
+ };
114
+ const singleValueFilterClausesAreEqual = (f1, f2)=>f1.column === f2.column && f1.op === f2.op && f1.value === f2.value;
115
+ const findEqualFilter = (filters)=>(filter)=>{
116
+ if (isBetweenFilter(filter)) {
117
+ const target = filters.find((f)=>isBetweenFilter(f) && betweenFiltersAreEqual(f, filter));
118
+ return void 0 !== target;
119
+ }
120
+ {
121
+ const target = filters.find((f)=>f.column === filter.column);
122
+ if (target) return target.op === filter.op && target.value === filter.value;
123
+ }
124
+ return false;
125
+ };
126
+ const filtersAreEqual = (f1, f2)=>{
127
+ if (null == f1 && null == f2) return true;
128
+ if (null == f1 || null == f2) ;
129
+ else if (isSingleValueFilter(f1) && isSingleValueFilter(f2)) return singleValueFilterClausesAreEqual(f1, f2);
130
+ else if (isBetweenFilter(f1) && isBetweenFilter(f2)) return betweenFiltersAreEqual(f1, f2);
131
+ else if (isAndFilter(f1) && isAndFilter(f2)) {
132
+ if (f1.filters.length === f2.filters.length) return f1.filters.every(findEqualFilter(f2.filters));
133
+ }
134
+ return false;
135
+ };
136
+ export { applyFilterToColumns, extractFilterForColumn, filtersAreEqual, getColumnValueFromFilter, isAndFilter, isBetweenFilter, isBetweenOperator, isCompleteFilter, isExtendedFilter, isFilter, isFilterClause, isFilteredColumn, isInFilter, isMultiClauseFilter, isMultiValueFilter, isNamedFilter, isOrFilter, isScaledDecimalFilterClause, isSerializableFilter, isSingleValueFilter, isValidFilterClauseOp, stripFilterFromColumns };
@@ -0,0 +1,70 @@
1
+ import { isDateTimeDataValue } from "../column-utils.js";
2
+ import { isMultiClauseFilter, isMultiValueFilter, isSerializableFilter } from "./filter-utils.js";
3
+ import { ScaledDecimal } from "../ScaledDecimal.js";
4
+ const filterValue = (value)=>"string" == typeof value ? `"${value}"` : value instanceof ScaledDecimal || "bigint" == typeof value ? value.toString() : value;
5
+ const quotedStrings = (value)=>"string" == typeof value ? `"${value}"` : value;
6
+ const removeOuterMostParentheses = (s)=>s.replace(/^\((.*)\)$/, "$1");
7
+ const filterAsQuery = (f, opts)=>removeOuterMostParentheses(filterAsQueryCore(f, opts));
8
+ const filterAsQueryCore = (f, opts)=>{
9
+ if (isMultiClauseFilter(f)) {
10
+ const multiClauseFilter = f.filters.map((filter)=>filterAsQueryCore(filter, opts)).join(` ${f.op} `);
11
+ return `(${multiClauseFilter})`;
12
+ }
13
+ if (isMultiValueFilter(f)) return `${f.column} ${f.op} [${f.values.map(quotedStrings).join(",")}]`;
14
+ return singleValueFilterAsQuery(f, opts);
15
+ };
16
+ function singleValueFilterAsQuery(f, opts) {
17
+ if (isSerializableFilter(f)) return f.asQuery();
18
+ {
19
+ const column = opts?.columnsByName?.[f.column];
20
+ if (column && isDateTimeDataValue(column)) return dateFilterAsQuery(f);
21
+ return defaultSingleValueFilterAsQuery(f);
22
+ }
23
+ }
24
+ const ONE_DAY_IN_MILLIS = 86400000;
25
+ function dateFilterAsQuery(f) {
26
+ switch(f.op){
27
+ case "=":
28
+ {
29
+ const filters = [
30
+ {
31
+ op: ">=",
32
+ column: f.column,
33
+ value: f.value
34
+ },
35
+ {
36
+ op: "<",
37
+ column: f.column,
38
+ value: f.value + ONE_DAY_IN_MILLIS
39
+ }
40
+ ];
41
+ return filterAsQueryCore({
42
+ op: "and",
43
+ filters
44
+ });
45
+ }
46
+ case "!=":
47
+ {
48
+ const filters = [
49
+ {
50
+ op: "<",
51
+ column: f.column,
52
+ value: f.value
53
+ },
54
+ {
55
+ op: ">=",
56
+ column: f.column,
57
+ value: f.value + ONE_DAY_IN_MILLIS
58
+ }
59
+ ];
60
+ return filterAsQueryCore({
61
+ op: "or",
62
+ filters
63
+ });
64
+ }
65
+ default:
66
+ return defaultSingleValueFilterAsQuery(f);
67
+ }
68
+ }
69
+ const defaultSingleValueFilterAsQuery = (f)=>`${f.column} ${f.op} ${filterValue(f.value)}`;
70
+ export { ONE_DAY_IN_MILLIS, dateFilterAsQuery, filterAsQuery };
@@ -0,0 +1,2 @@
1
+ export * from "./filter-utils.js";
2
+ export * from "./filterAsQuery.js";