@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,11 @@
1
+ const MEASURES = {
2
+ horizontal: {
3
+ positionProp: "left",
4
+ sizeProp: "width"
5
+ },
6
+ vertical: {
7
+ positionProp: "top",
8
+ sizeProp: "height"
9
+ }
10
+ };
11
+ export { MEASURES };
@@ -0,0 +1,83 @@
1
+ import { hasCustomRenderer, isColumnTypeRenderer, isTypeDescriptor } from "./column-utils.js";
2
+ const containersSet = new Set();
3
+ const viewsSet = new Set();
4
+ const layoutComponentsMap = new Map();
5
+ const cellRenderersMap = new Map();
6
+ const columnHeaderRenderersMap = new Map();
7
+ const configEditorsMap = new Map();
8
+ const cellConfigPanelsMap = new Map();
9
+ const editRuleValidatorsMap = new Map();
10
+ const optionsMap = new Map();
11
+ const rowClassGeneratorsMap = new Map();
12
+ const isTypeCompatible = (rendererType, serverDataType)=>{
13
+ if (void 0 === rendererType || "private" === rendererType) return true;
14
+ if (!Array.isArray(rendererType)) return rendererType === serverDataType;
15
+ if ("json" === serverDataType) return false;
16
+ return rendererType.includes(serverDataType);
17
+ };
18
+ const isContainer = (componentType)=>containersSet.has(componentType);
19
+ const isView = (componentType)=>viewsSet.has(componentType);
20
+ const isLayoutComponent = (componentType)=>isContainer(componentType) || isView(componentType);
21
+ const isCellRenderer = (type, component)=>void 0 !== component && "cell-renderer" === type;
22
+ const isColumnHeaderContentRenderer = (type, component)=>"column-header-content-renderer" === type;
23
+ const isColumnHeaderLabelRenderer = (type, component)=>"column-header-label-renderer" === type;
24
+ const isCellConfigPanel = (type, component)=>"cell-config-panel" === type;
25
+ const isEditRuleValidator = (type, component)=>"data-edit-validator" === type;
26
+ const isRowClassGenerator = (type, component)=>"row-class-generator" === type;
27
+ function registerComponent(componentName, component, componentType, options) {
28
+ if ("container" === componentType || "view" === componentType || "component" === componentType) {
29
+ layoutComponentsMap.set(componentName, component);
30
+ if ("container" === componentType) containersSet.add(componentName);
31
+ else if ("view" === componentType) viewsSet.add(componentName);
32
+ } else if (isCellRenderer(componentType, component)) cellRenderersMap.set(componentName, component);
33
+ else if (isColumnHeaderContentRenderer(componentType, component)) columnHeaderRenderersMap.set(componentName, component);
34
+ else if (isColumnHeaderLabelRenderer(componentType, component)) columnHeaderRenderersMap.set(componentName, component);
35
+ else if (isCellConfigPanel(componentType, component)) cellConfigPanelsMap.set(componentName, component);
36
+ else if (isEditRuleValidator(componentType, component)) editRuleValidatorsMap.set(componentName, component);
37
+ else if (isRowClassGenerator(componentType, component)) rowClassGeneratorsMap.set(componentName, component);
38
+ if (options) optionsMap.set(componentName, options);
39
+ }
40
+ const registerConfigurationEditor = (componentName, configurationEditor)=>{
41
+ configEditorsMap.set(componentName, configurationEditor);
42
+ };
43
+ const getRegisteredCellRenderers = (cellRendererDataType)=>{
44
+ const rendererNames = Array.from(cellRenderersMap.keys());
45
+ const allRenderers = rendererNames.map((name)=>({
46
+ name,
47
+ ...optionsMap.get(name)
48
+ })).filter(({ userCanAssign })=>false !== userCanAssign);
49
+ if (cellRendererDataType) return allRenderers.filter((renderer)=>isTypeCompatible(renderer.serverDataType, cellRendererDataType));
50
+ return allRenderers;
51
+ };
52
+ const getLayoutComponent = (componentName)=>{
53
+ const layoutComponent = layoutComponentsMap.get(componentName);
54
+ if (layoutComponent) return layoutComponent;
55
+ throw Error(`layout component ${componentName} not found in ComponentRegistry`);
56
+ };
57
+ const getCellRendererOptions = (renderName)=>optionsMap.get(renderName);
58
+ function getCellRenderer(column) {
59
+ return dataCellRenderer(column);
60
+ }
61
+ function getColumnHeaderContentRenderer(column) {
62
+ if (column.colHeaderContentRenderer) return columnHeaderRenderersMap.get(column.colHeaderContentRenderer);
63
+ }
64
+ function getColumnHeaderLabelRenderer(column) {
65
+ if (column.colHeaderLabelRenderer) return columnHeaderRenderersMap.get(column.colHeaderLabelRenderer);
66
+ }
67
+ const getRowClassNameGenerator = (generatorId)=>rowClassGeneratorsMap.get(generatorId);
68
+ function getConfigurationEditor(configEditor = "") {
69
+ return configEditorsMap.get(configEditor);
70
+ }
71
+ function getCellConfigPanelRenderer(name) {
72
+ return cellConfigPanelsMap.get(name);
73
+ }
74
+ function getEditRuleValidator(name) {
75
+ return editRuleValidatorsMap.get(name);
76
+ }
77
+ function dataCellRenderer(column) {
78
+ if ("boolean" === column.serverDataType && !hasCustomRenderer(column.type)) return cellRenderersMap.get("checkbox-cell");
79
+ if (column.editable && !hasCustomRenderer(column.type)) return cellRenderersMap.get("input-cell");
80
+ if (isTypeDescriptor(column.type) && isColumnTypeRenderer(column.type.renderer)) return cellRenderersMap.get(column.type.renderer?.name);
81
+ if ("boolean" === column.serverDataType) return cellRenderersMap.get("checkbox-cell");
82
+ }
83
+ export { getCellConfigPanelRenderer, getCellRenderer, getCellRendererOptions, getColumnHeaderContentRenderer, getColumnHeaderLabelRenderer, getConfigurationEditor, getEditRuleValidator, getLayoutComponent, getRegisteredCellRenderers, getRowClassNameGenerator, isContainer, isLayoutComponent, isView, registerComponent, registerConfigurationEditor };
@@ -0,0 +1,15 @@
1
+ import { createContext } from "react";
2
+ const getServerAPI = ()=>{
3
+ throw Error("no DataProvider has been installed");
4
+ };
5
+ class NullDataSourceConstructor {
6
+ constructor(_){
7
+ throw Error("no DataProvider has been installed");
8
+ }
9
+ }
10
+ const DataContext = /*#__PURE__*/ createContext({
11
+ isLocalData: false,
12
+ getServerAPI: getServerAPI,
13
+ VuuDataSource: NullDataSourceConstructor
14
+ });
15
+ export { DataContext, NullDataSourceConstructor };
@@ -0,0 +1,13 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useContext } from "react";
3
+ import { DataContext } from "./DataContext.js";
4
+ const DataProvider = ({ children, getServerAPI, isLocalData = true, VuuDataSource })=>/*#__PURE__*/ jsx(DataContext.Provider, {
5
+ value: {
6
+ isLocalData,
7
+ VuuDataSource,
8
+ getServerAPI
9
+ },
10
+ children: children
11
+ });
12
+ const useData = ()=>useContext(DataContext);
13
+ export { DataProvider, useData };
@@ -0,0 +1,18 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext } from "react";
3
+ const DataSourceContext = /*#__PURE__*/ createContext({
4
+ dataSource: void 0
5
+ });
6
+ const DataSourceProvider = ({ children, dataSource })=>/*#__PURE__*/ jsx(DataSourceContext.Provider, {
7
+ value: {
8
+ dataSource
9
+ },
10
+ children: children
11
+ });
12
+ function useDataSource(throwIfNoDataSource = false) {
13
+ const { dataSource } = useContext(DataSourceContext);
14
+ if (dataSource) return dataSource;
15
+ if (throwIfNoDataSource) throw Error("[DataSOurceProvider] useDataSource,no DataSourceProvider has been declared ");
16
+ console.warn("[DataSourceProvider] useDataSource: no DataSourceProvider has been declared");
17
+ }
18
+ export { DataSourceContext, DataSourceProvider, useDataSource };
@@ -0,0 +1,14 @@
1
+ import react, { useContext } from "react";
2
+ const WorkspaceContext = /*#__PURE__*/ react.createContext({
3
+ getApplicationSettings: ()=>void 0,
4
+ layoutMetadata: [],
5
+ saveLayout: ()=>void 0,
6
+ saveApplicationLayout: ()=>void 0,
7
+ saveApplicationSettings: ()=>void 0,
8
+ loadLayoutById: ()=>void 0
9
+ });
10
+ const usePlaceholderJSON = ()=>{
11
+ const { layoutPlaceholderJSON } = useContext(WorkspaceContext);
12
+ return layoutPlaceholderJSON;
13
+ };
14
+ export { WorkspaceContext, usePlaceholderJSON };
@@ -0,0 +1,15 @@
1
+ const getCookieValue = (name)=>{
2
+ if (globalThis.document?.cookie !== void 0) return globalThis.document.cookie.split("; ").find((row)=>row.startsWith(`${name}=`))?.split("=")[1];
3
+ };
4
+ function setCookieValue(name, value, days) {
5
+ let expires = "";
6
+ if ("number" == typeof days) {
7
+ const date = new Date();
8
+ date.setTime(date.getTime() + 24 * days * 3600000);
9
+ expires = "; expires=" + date.toUTCString();
10
+ }
11
+ const encodedName = encodeURIComponent(name);
12
+ const encodedValue = encodeURIComponent(value);
13
+ document.cookie = `${encodedName}=${encodedValue}${expires};`;
14
+ }
15
+ export { getCookieValue, setCookieValue };
@@ -0,0 +1,5 @@
1
+ const importCSS = async (path)=>{
2
+ const container = new CSSStyleSheet();
3
+ return fetch(path).then((x)=>x.text()).then((x)=>container.replace(x));
4
+ };
5
+ export { importCSS };
@@ -0,0 +1,66 @@
1
+ const UP1 = "up1";
2
+ const UP2 = "up2";
3
+ const DOWN1 = "down1";
4
+ const DOWN2 = "down2";
5
+ const decimalPattern = /^-?[0-9]*\.[0-9]*$/;
6
+ const JAVA_LONG_MIN = BigInt("-9223372036854775808");
7
+ const JAVA_LONG_MAX = BigInt("9223372036854775807");
8
+ const stringIsValidInt = (val)=>parseInt(val, 10).toString() === val;
9
+ const stringIsValidLong = (val)=>{
10
+ if ("" === val) return false;
11
+ try {
12
+ const n = BigInt(val);
13
+ return n <= JAVA_LONG_MAX && n >= JAVA_LONG_MIN;
14
+ } catch (e) {
15
+ return false;
16
+ }
17
+ };
18
+ const stringIsValidDecimal = (val)=>stringIsValidInt(val) || decimalPattern.test(val);
19
+ const stringIsValidNumber = (val)=>stringIsValidInt(val) || stringIsValidDecimal(val);
20
+ const numericTypeOfStringValue = (val)=>stringIsValidInt(val) ? "int" : stringIsValidDecimal(val) ? "double" : "NaN";
21
+ const isValidNumber = (n)=>"number" == typeof n && isFinite(n);
22
+ const EMPTY = {};
23
+ const shallowEquals = (o1 = EMPTY, o2 = EMPTY)=>{
24
+ const props1 = Object.keys(o1);
25
+ const props2 = Object.keys(o2);
26
+ return props1.length === props2.length && props1.every((key)=>o1[key] === o2[key]);
27
+ };
28
+ function getMovingValueDirection(newValue, direction, prevValue, decimalPlaces) {
29
+ if (void 0 === newValue) return "";
30
+ if (!isFinite(newValue) || void 0 === prevValue || void 0 === direction) return "";
31
+ {
32
+ let diff = newValue - prevValue;
33
+ if (diff) {
34
+ if ("number" == typeof decimalPlaces) diff = newValue.toFixed(decimalPlaces) - prevValue.toFixed(decimalPlaces);
35
+ }
36
+ if (!diff) return "";
37
+ if ("" === direction) if (diff < 0) return DOWN1;
38
+ else return UP1;
39
+ if (diff > 0) if (direction === DOWN1 || direction === DOWN2 || direction === UP2) return UP1;
40
+ else return UP2;
41
+ else if (direction === UP1 || direction === UP2 || direction === DOWN2) return DOWN1;
42
+ else return DOWN2;
43
+ }
44
+ }
45
+ function asInteger(value, defaultValue) {
46
+ if ("number" == typeof value) return Number.isInteger(value) ? value : value < 0 ? Math.ceil(value) : Math.floor(value);
47
+ {
48
+ const integerValue = parseInt(value ?? "");
49
+ if (!isNaN(integerValue)) return integerValue;
50
+ if ("number" == typeof defaultValue) return defaultValue;
51
+ throw Error(`parseIndex invalid value ${value}`);
52
+ }
53
+ }
54
+ const dataDescriptorTypeToVuuRowDataItemType = ({ serverDataType = "string" })=>{
55
+ switch(serverDataType){
56
+ case "double":
57
+ case "int":
58
+ case "long":
59
+ return "number";
60
+ case "boolean":
61
+ return "boolean";
62
+ default:
63
+ return "string";
64
+ }
65
+ };
66
+ export { DOWN1, DOWN2, UP1, UP2, asInteger, dataDescriptorTypeToVuuRowDataItemType, getMovingValueDirection, isValidNumber, numericTypeOfStringValue, shallowEquals, stringIsValidDecimal, stringIsValidInt, stringIsValidLong, stringIsValidNumber };
@@ -0,0 +1,233 @@
1
+ import { parseFilter } from "@vuu-ui/vuu-filter-parser";
2
+ import { EventEmitter } from "../event-emitter.js";
3
+ import { uuid } from "../nanoid/index.js";
4
+ import { isConfigChanged, stripVisualLink, vanillaConfig, withConfigDefaults } from "./datasource-utils.js";
5
+ import { Range } from "../range-utils.js";
6
+ import { filterAsQuery } from "../filters/index.js";
7
+ const defaultSuspenseProps = {
8
+ escalateToDisable: true
9
+ };
10
+ class BaseDataSource extends EventEmitter {
11
+ viewport;
12
+ _clientCallback;
13
+ _configWithVisualLink = vanillaConfig;
14
+ _impendingConfigWithVisualLink = void 0;
15
+ _range = Range(0, 0);
16
+ _size = 0;
17
+ _title;
18
+ _defaultSuspenseProps;
19
+ #freezeTimestamp = void 0;
20
+ #pageCount = 0;
21
+ awaitingConfirmationOfConfigChanges = false;
22
+ constructor({ aggregations, baseFilterSpec, columns, filterSpec, groupBy, sort, suspenseProps = defaultSuspenseProps, title, viewport }){
23
+ super();
24
+ this._configWithVisualLink = {
25
+ ...this._configWithVisualLink,
26
+ aggregations: aggregations || this._configWithVisualLink.aggregations,
27
+ baseFilterSpec: baseFilterSpec || this._configWithVisualLink.baseFilterSpec,
28
+ columns: columns || this._configWithVisualLink.columns,
29
+ filterSpec: filterSpec || this._configWithVisualLink.filterSpec,
30
+ groupBy: groupBy || this._configWithVisualLink.groupBy,
31
+ sort: sort || this._configWithVisualLink.sort
32
+ };
33
+ this._defaultSuspenseProps = suspenseProps;
34
+ this._title = title;
35
+ this.viewport = viewport ?? "";
36
+ }
37
+ subscribe({ baseFilterSpec, columns, aggregations, range, sort, groupBy, filterSpec, viewport = this.viewport || (this.viewport = uuid()) }, callback) {
38
+ this._clientCallback = callback;
39
+ this.viewport = viewport;
40
+ if (aggregations || baseFilterSpec || columns || filterSpec || groupBy || sort) this._configWithVisualLink = {
41
+ ...this._configWithVisualLink,
42
+ aggregations: aggregations || this._configWithVisualLink.aggregations,
43
+ baseFilterSpec: baseFilterSpec || this._configWithVisualLink.baseFilterSpec,
44
+ columns: columns || this._configWithVisualLink.columns,
45
+ filterSpec: filterSpec || this._configWithVisualLink.filterSpec,
46
+ groupBy: groupBy || this._configWithVisualLink.groupBy,
47
+ sort: sort || this._configWithVisualLink.sort
48
+ };
49
+ if (range) {
50
+ this._range = range;
51
+ this.emit("range", range);
52
+ }
53
+ }
54
+ get aggregations() {
55
+ return this._configWithVisualLink.aggregations;
56
+ }
57
+ set aggregations(aggregations) {
58
+ this.config = {
59
+ ...this._configWithVisualLink,
60
+ aggregations
61
+ };
62
+ this.emit("config", this._configWithVisualLink, this.range);
63
+ }
64
+ get baseFilter() {
65
+ return this._configWithVisualLink.baseFilterSpec;
66
+ }
67
+ set baseFilter(baseFilter) {
68
+ this.config = {
69
+ ...this._configWithVisualLink,
70
+ baseFilterSpec: baseFilter
71
+ };
72
+ }
73
+ get columns() {
74
+ return this._configWithVisualLink.columns;
75
+ }
76
+ set columns(columns) {
77
+ this.config = {
78
+ ...this._configWithVisualLink,
79
+ columns
80
+ };
81
+ }
82
+ get filter() {
83
+ return this._configWithVisualLink.filterSpec;
84
+ }
85
+ set filter(filter) {
86
+ this.config = {
87
+ ...this._configWithVisualLink,
88
+ filterSpec: filter
89
+ };
90
+ }
91
+ setFilter(filter) {
92
+ const dataSourceFilter = {
93
+ filter: filterAsQuery(filter),
94
+ filterStruct: filter
95
+ };
96
+ this.filter = dataSourceFilter;
97
+ }
98
+ clearFilter() {
99
+ this.filter = {
100
+ filter: ""
101
+ };
102
+ }
103
+ get isAwaitingConfirmationOfConfigChange() {
104
+ return void 0 !== this._impendingConfigWithVisualLink;
105
+ }
106
+ confirmConfigChange() {
107
+ if (this._impendingConfigWithVisualLink) {
108
+ this._configWithVisualLink = this._impendingConfigWithVisualLink;
109
+ this._impendingConfigWithVisualLink = void 0;
110
+ this.emit("config", this._configWithVisualLink, this.range, true);
111
+ } else throw Error("[BaseDataSource], unexpected call to confirmConfigChange, no changes pending");
112
+ }
113
+ get config() {
114
+ return stripVisualLink(this._impendingConfigWithVisualLink ?? this._configWithVisualLink);
115
+ }
116
+ set config(config) {
117
+ const confirmed = this.awaitingConfirmationOfConfigChanges ? true : void 0;
118
+ this.awaitingConfirmationOfConfigChanges = false;
119
+ const configChanges = this.applyConfig(config);
120
+ if (configChanges) requestAnimationFrame(()=>{
121
+ this.emit("config", this._configWithVisualLink, this.range, confirmed, configChanges);
122
+ });
123
+ }
124
+ get impendingConfig() {
125
+ return this._impendingConfigWithVisualLink;
126
+ }
127
+ set impendingConfig(config) {
128
+ if (config) {
129
+ this.awaitingConfirmationOfConfigChanges = true;
130
+ const configChanges = this.applyConfig(config);
131
+ if (configChanges) this.emit("config", this.config, this.range, false, configChanges);
132
+ } else throw Error("[BaseDataSource] ''unsetting impendingConfig is not currently supported");
133
+ }
134
+ get pageCount() {
135
+ return this.#pageCount;
136
+ }
137
+ set pageCount(pageCount) {
138
+ if (pageCount !== this.#pageCount) {
139
+ this.#pageCount = pageCount;
140
+ this.emit("page-count", pageCount);
141
+ }
142
+ }
143
+ get range() {
144
+ return this._range;
145
+ }
146
+ set range(range) {
147
+ if (range.from !== this._range.from || range.to !== this._range.to) {
148
+ this._range = range;
149
+ this.pageCount = Math.ceil(this._size / (range.to - range.from));
150
+ this.rangeRequest(range.withBuffer);
151
+ requestAnimationFrame(()=>{
152
+ this.emit("range", range);
153
+ });
154
+ }
155
+ }
156
+ get size() {
157
+ return this._size;
158
+ }
159
+ set size(size) {
160
+ this._size = size;
161
+ if (0 !== this.range.to) {
162
+ const pageCount = Math.ceil(size / (this.range.to - this.range.from));
163
+ this.pageCount = pageCount;
164
+ }
165
+ }
166
+ get sort() {
167
+ return this._configWithVisualLink.sort;
168
+ }
169
+ set sort(sort) {
170
+ this.config = {
171
+ ...this._configWithVisualLink,
172
+ sort
173
+ };
174
+ this.emit("config", this._configWithVisualLink, this.range);
175
+ }
176
+ get title() {
177
+ return this._title ?? "";
178
+ }
179
+ set title(title) {
180
+ this._title = title;
181
+ this.emit("title-changed", this.viewport ?? "", title);
182
+ }
183
+ applyConfig(config, preserveExistingConfigAttributes = false) {
184
+ const { noChanges, ...otherChanges } = isConfigChanged(this._configWithVisualLink, config);
185
+ if (true !== noChanges) {
186
+ if (config) {
187
+ const newConfig = config?.filterSpec?.filter && config?.filterSpec.filterStruct === void 0 ? {
188
+ ...config,
189
+ filterSpec: {
190
+ filter: config.filterSpec.filter,
191
+ filterStruct: parseFilter(config.filterSpec.filter)
192
+ }
193
+ } : config;
194
+ if (preserveExistingConfigAttributes) if (this.awaitingConfirmationOfConfigChanges) this._impendingConfigWithVisualLink = {
195
+ ...this._configWithVisualLink,
196
+ ...config
197
+ };
198
+ else {
199
+ this._impendingConfigWithVisualLink = void 0;
200
+ this._configWithVisualLink = {
201
+ ...this._configWithVisualLink,
202
+ ...config
203
+ };
204
+ }
205
+ else if (this.awaitingConfirmationOfConfigChanges) this._impendingConfigWithVisualLink = withConfigDefaults(newConfig);
206
+ else {
207
+ this._impendingConfigWithVisualLink = void 0;
208
+ this._configWithVisualLink = withConfigDefaults(newConfig);
209
+ }
210
+ return otherChanges;
211
+ }
212
+ }
213
+ }
214
+ freeze() {
215
+ if (this.isFrozen) throw Error("[BaseDataSource] cannot freeze, dataSource is already frozen");
216
+ this.#freezeTimestamp = new Date().getTime();
217
+ this.emit("freeze", true, this.#freezeTimestamp);
218
+ }
219
+ unfreeze() {
220
+ if (this.isFrozen) {
221
+ const freezeTimestamp = this.#freezeTimestamp;
222
+ this.#freezeTimestamp = void 0;
223
+ this.emit("freeze", false, freezeTimestamp);
224
+ } else throw Error("[BaseDataSource] cannot freeze, dataSource is already frozen");
225
+ }
226
+ get freezeTimestamp() {
227
+ return this.#freezeTimestamp;
228
+ }
229
+ get isFrozen() {
230
+ return "number" == typeof this.#freezeTimestamp;
231
+ }
232
+ }
233
+ export { BaseDataSource, defaultSuspenseProps };
@@ -0,0 +1,6 @@
1
+ const isVisualLinksAction = (action)=>"vuu-links" === action.type;
2
+ const isVisualLinkCreatedAction = (action)=>"vuu-link-created" === action.type;
3
+ const isVisualLinkRemovedAction = (action)=>"vuu-link-removed" === action.type;
4
+ const isViewportMenusAction = (action)=>"vuu-menu" === action.type;
5
+ const isVuuFeatureAction = (action)=>isViewportMenusAction(action) || isVisualLinksAction(action);
6
+ export { isViewportMenusAction, isVisualLinkCreatedAction, isVisualLinkRemovedAction, isVisualLinksAction, isVuuFeatureAction };
@@ -0,0 +1,27 @@
1
+ import { parseFilter } from "@vuu-ui/vuu-filter-parser";
2
+ const combineFilters = ({ baseFilterSpec, filterSpec, ...config })=>{
3
+ if (void 0 === baseFilterSpec || "" === baseFilterSpec.filter) if (filterSpec.filterStruct || "" === filterSpec.filter) return {
4
+ ...config,
5
+ filterSpec
6
+ };
7
+ else return {
8
+ ...config,
9
+ filterSpec: {
10
+ filter: filterSpec.filter,
11
+ filterStruct: parseFilter(filterSpec.filter)
12
+ }
13
+ };
14
+ {
15
+ const baseFilterQuery = baseFilterSpec.filter;
16
+ const combinedFilter = filterSpec.filter.length > 0 && baseFilterQuery.length > 0 ? `${filterSpec.filter} and ${baseFilterQuery}` : filterSpec.filter || baseFilterQuery;
17
+ const newConfig = {
18
+ ...config,
19
+ filterSpec: {
20
+ filter: combinedFilter,
21
+ filterStruct: combinedFilter.length > 0 ? parseFilter(combinedFilter) : void 0
22
+ }
23
+ };
24
+ return newConfig;
25
+ }
26
+ };
27
+ export { combineFilters };
@@ -0,0 +1,148 @@
1
+ const NoFilter = {
2
+ filter: ""
3
+ };
4
+ const NoSort = {
5
+ sortDefs: []
6
+ };
7
+ const vanillaConfig = {
8
+ aggregations: [],
9
+ columns: [],
10
+ filterSpec: NoFilter,
11
+ groupBy: [],
12
+ sort: NoSort
13
+ };
14
+ const stripVisualLink = (configWithVisualLink)=>{
15
+ if (!configWithVisualLink.visualLink) return configWithVisualLink;
16
+ {
17
+ const { visualLink, ...config } = configWithVisualLink;
18
+ return config;
19
+ }
20
+ };
21
+ const equivalentAggregations = ({ aggregations: agg1 }, { aggregations: agg2 })=>void 0 === agg1 && agg2?.length === 0 || void 0 === agg2 && agg1?.length === 0;
22
+ const equivalentColumns = ({ columns: cols1 }, { columns: cols2 })=>void 0 === cols1 && cols2?.length === 0 || void 0 === cols2 && cols1?.length === 0;
23
+ const equivalentFilter = ({ filterSpec: f1 }, { filterSpec: f2 })=>void 0 === f1 && f2?.filter === "" || void 0 === f2 && f1?.filter === "";
24
+ const equivalentGroupBy = ({ groupBy: val1 }, { groupBy: val2 })=>void 0 === val1 && val2?.length === 0 || void 0 === val2 && val1?.length === 0;
25
+ const equivalentSort = ({ sort: s1 }, { sort: s2 })=>void 0 === s1 && s2?.sortDefs.length === 0 || void 0 === s2 && s1?.sortDefs.length === 0;
26
+ const exactlyTheSame = (a, b)=>{
27
+ if (a === b) return true;
28
+ if (void 0 === a && void 0 === b) return true;
29
+ return false;
30
+ };
31
+ const isAggregationsChanged = (config, newConfig)=>{
32
+ const { aggregations: agg1 } = config;
33
+ const { aggregations: agg2 } = newConfig;
34
+ if (exactlyTheSame(agg1, agg2) || equivalentAggregations(config, newConfig)) return false;
35
+ if (void 0 === agg1 || void 0 === agg2) return true;
36
+ if (agg1.length !== agg2.length) return true;
37
+ return agg1.some(({ column, aggType }, i)=>column !== agg2[i].column || aggType !== agg2[i].aggType);
38
+ };
39
+ const isColumnsChanged = (config, newConfig)=>{
40
+ const { columns: cols1 } = config;
41
+ const { columns: cols2 } = newConfig;
42
+ if (exactlyTheSame(cols1, cols2) || equivalentColumns(config, newConfig)) return false;
43
+ if (void 0 === cols1 || void 0 === cols2) return true;
44
+ if (cols1?.length !== cols2?.length) return true;
45
+ return cols1.some((column, i)=>column !== cols2?.[i]);
46
+ };
47
+ const isBaseFilterChanged = (c1, c2)=>{
48
+ if (equivalentFilter(c1, c2)) return false;
49
+ return c1.baseFilterSpec?.filter !== c2.baseFilterSpec?.filter;
50
+ };
51
+ const isFilterChanged = (c1, c2)=>{
52
+ if (equivalentFilter(c1, c2)) return false;
53
+ return c1.filterSpec?.filter !== c2.filterSpec?.filter;
54
+ };
55
+ const isGroupByChanged = (config, newConfig)=>{
56
+ const { groupBy: g1 } = config;
57
+ const { groupBy: g2 } = newConfig;
58
+ if (exactlyTheSame(g1, g2) || equivalentGroupBy(config, newConfig)) return false;
59
+ if (void 0 === g1 || void 0 === g2) return true;
60
+ if (g1?.length !== g2?.length) return true;
61
+ return g1.some((column, i)=>column !== g2?.[i]);
62
+ };
63
+ const isSortChanged = (config, newConfig)=>{
64
+ const { sort: s1 } = config;
65
+ const { sort: s2 } = newConfig;
66
+ if (exactlyTheSame(s1, s2) || equivalentSort(config, newConfig)) return false;
67
+ if (void 0 === s1 || void 0 === s2) return true;
68
+ if (s1?.sortDefs.length !== s2?.sortDefs.length) return true;
69
+ return s1.sortDefs.some(({ column, sortType }, i)=>column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType);
70
+ };
71
+ const isVisualLinkChanged = ({ visualLink: v1 }, { visualLink: v2 })=>{
72
+ if (exactlyTheSame(v1, v2)) return false;
73
+ if (void 0 === v1 || void 0 === v2) return true;
74
+ return v1.label !== v2.label || v2.parentVpId !== v2.parentVpId;
75
+ };
76
+ const NO_CONFIG_CHANGES = {
77
+ aggregationsChanged: false,
78
+ baseFilterChanged: false,
79
+ columnsChanged: false,
80
+ filterChanged: false,
81
+ groupByChanged: false,
82
+ noChanges: true,
83
+ sortChanged: false,
84
+ visualLinkChanged: false
85
+ };
86
+ const isConfigChanged = (config, newConfig)=>{
87
+ if (exactlyTheSame(config, newConfig)) return NO_CONFIG_CHANGES;
88
+ if (void 0 === config && void 0 == newConfig) return NO_CONFIG_CHANGES;
89
+ if (void 0 === config) return isConfigChanged({}, newConfig);
90
+ if (void 0 === newConfig) return isConfigChanged(config, {});
91
+ const aggregationsChanged = isAggregationsChanged(config, newConfig);
92
+ const baseFilterChanged = isBaseFilterChanged(config, newConfig);
93
+ const columnsChanged = isColumnsChanged(config, newConfig);
94
+ const filterChanged = isFilterChanged(config, newConfig);
95
+ const groupByChanged = isGroupByChanged(config, newConfig);
96
+ const sortChanged = isSortChanged(config, newConfig);
97
+ const visualLinkChanged = isVisualLinkChanged(config, newConfig);
98
+ const noChanges = !(aggregationsChanged || baseFilterChanged || columnsChanged || filterChanged || groupByChanged || sortChanged || visualLinkChanged);
99
+ return {
100
+ aggregationsChanged,
101
+ baseFilterChanged,
102
+ columnsChanged,
103
+ filterChanged,
104
+ groupByChanged,
105
+ noChanges,
106
+ sortChanged,
107
+ visualLinkChanged
108
+ };
109
+ };
110
+ const hasGroupBy = (config)=>void 0 !== config && void 0 !== config.groupBy && config.groupBy.length > 0;
111
+ const hasBaseFilter = (config)=>config?.baseFilterSpec !== void 0 && config.baseFilterSpec.filter.length > 0;
112
+ const hasFilter = (config)=>config?.filterSpec !== void 0 && config.filterSpec.filter.length > 0;
113
+ const hasSort = (config)=>config?.sort !== void 0 && Array.isArray(config.sort?.sortDefs) && config.sort.sortDefs.length > 0;
114
+ const isTypeaheadSuggestionProvider = (source)=>"function" == typeof source["getTypeaheadSuggestions"];
115
+ const isTableSchemaMessage = (message)=>"TABLE_META_RESP" === message.type;
116
+ const isConnectionQualityMetrics = (msg)=>"connection-metrics" === msg.type;
117
+ const messageHasResult = (msg)=>void 0 !== msg.result;
118
+ const isVisualLinkMessage = (msg)=>msg.type.endsWith("_VISUAL_LINK");
119
+ const isVisualLinksMessage = (msg)=>"vuu-links" === msg.type;
120
+ const isViewportMessage = (msg)=>"viewport" in msg;
121
+ const messageHasDataRows = (message)=>"viewport-update" === message.type && Array.isArray(message.rows);
122
+ const messageHasSize = (message)=>"viewport-update" === message.type && "number" == typeof message.size;
123
+ const withConfigDefaults = (config)=>{
124
+ if (config.aggregations && config.baseFilterSpec && config.columns && config.filterSpec && config.groupBy && config.sort) return config;
125
+ {
126
+ const { aggregations = [], baseFilterSpec: baseFilter = {
127
+ filter: ""
128
+ }, columns = [], filterSpec: filter = {
129
+ filter: ""
130
+ }, groupBy = [], sort = {
131
+ sortDefs: []
132
+ }, visualLink } = config;
133
+ return {
134
+ aggregations,
135
+ baseFilterSpec: baseFilter,
136
+ columns,
137
+ filterSpec: filter,
138
+ groupBy,
139
+ sort,
140
+ visualLink
141
+ };
142
+ }
143
+ };
144
+ const dataSourceRowToEntity = (row, columnMap)=>Object.entries(columnMap).reduce((entity, [name, index])=>({
145
+ ...entity,
146
+ [name]: row[index]
147
+ }), {});
148
+ export { NO_CONFIG_CHANGES, NoFilter, NoSort, dataSourceRowToEntity, hasBaseFilter, hasFilter, hasGroupBy, hasSort, isBaseFilterChanged, isConfigChanged, isConnectionQualityMetrics, isFilterChanged, isGroupByChanged, isTableSchemaMessage, isTypeaheadSuggestionProvider, isViewportMessage, isVisualLinkMessage, isVisualLinksMessage, messageHasDataRows, messageHasResult, messageHasSize, stripVisualLink, vanillaConfig, withConfigDefaults };