@vuu-ui/vuu-utils 0.13.5 → 0.13.7

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 (446) hide show
  1. package/cjs/node_modules/@dnd-kit/abstract/index.js +625 -0
  2. package/cjs/node_modules/@dnd-kit/abstract/index.js.map +1 -0
  3. package/cjs/node_modules/@dnd-kit/abstract/modifiers.js +85 -0
  4. package/cjs/node_modules/@dnd-kit/abstract/modifiers.js.map +1 -0
  5. package/cjs/node_modules/@dnd-kit/collision/dist/index.js +91 -0
  6. package/cjs/node_modules/@dnd-kit/collision/dist/index.js.map +1 -0
  7. package/cjs/node_modules/@dnd-kit/dom/index.js +1649 -0
  8. package/cjs/node_modules/@dnd-kit/dom/index.js.map +1 -0
  9. package/cjs/node_modules/@dnd-kit/dom/sortable.js +833 -0
  10. package/cjs/node_modules/@dnd-kit/dom/sortable.js.map +1 -0
  11. package/cjs/node_modules/@dnd-kit/dom/utilities.js +1389 -0
  12. package/cjs/node_modules/@dnd-kit/dom/utilities.js.map +1 -0
  13. package/cjs/node_modules/@dnd-kit/geometry/dist/index.js +310 -0
  14. package/cjs/node_modules/@dnd-kit/geometry/dist/index.js.map +1 -0
  15. package/cjs/node_modules/@dnd-kit/react/hooks.js +86 -0
  16. package/cjs/node_modules/@dnd-kit/react/hooks.js.map +1 -0
  17. package/cjs/node_modules/@dnd-kit/react/sortable.js +177 -0
  18. package/cjs/node_modules/@dnd-kit/react/sortable.js.map +1 -0
  19. package/cjs/node_modules/@dnd-kit/react/utilities.js +19 -0
  20. package/cjs/node_modules/@dnd-kit/react/utilities.js.map +1 -0
  21. package/cjs/node_modules/@dnd-kit/state/dist/index.js +272 -0
  22. package/cjs/node_modules/@dnd-kit/state/dist/index.js.map +1 -0
  23. package/cjs/node_modules/@preact/signals-core/dist/signals-core.js +11 -0
  24. package/cjs/node_modules/@preact/signals-core/dist/signals-core.js.map +1 -0
  25. package/cjs/packages/vuu-utils/src/DataWindow.js.map +1 -0
  26. package/cjs/packages/vuu-utils/src/ShellContext.js.map +1 -0
  27. package/cjs/packages/vuu-utils/src/ThemeProvider.js.map +1 -0
  28. package/cjs/packages/vuu-utils/src/array-utils.js.map +1 -0
  29. package/cjs/packages/vuu-utils/src/box-utils.js.map +1 -0
  30. package/cjs/packages/vuu-utils/src/column-utils.js.map +1 -0
  31. package/cjs/packages/vuu-utils/src/common-types.js.map +1 -0
  32. package/cjs/packages/vuu-utils/src/component-registry.js.map +1 -0
  33. package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -0
  34. package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -0
  35. package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -0
  36. package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -0
  37. package/cjs/packages/vuu-utils/src/cookie-utils.js.map +1 -0
  38. package/cjs/packages/vuu-utils/src/css-utils.js.map +1 -0
  39. package/cjs/packages/vuu-utils/src/data-utils.js.map +1 -0
  40. package/cjs/{datasource → packages/vuu-utils/src/datasource}/BaseDataSource.js +4 -0
  41. package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -0
  42. package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +1 -0
  43. package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -0
  44. package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js.map +1 -0
  45. package/cjs/packages/vuu-utils/src/date/date-utils.js.map +1 -0
  46. package/cjs/packages/vuu-utils/src/date/dateTimePattern.js.map +1 -0
  47. package/cjs/packages/vuu-utils/src/date/formatter.js.map +1 -0
  48. package/cjs/packages/vuu-utils/src/date/types.js.map +1 -0
  49. package/cjs/packages/vuu-utils/src/debug-utils.js.map +1 -0
  50. package/cjs/packages/vuu-utils/src/event-emitter.js.map +1 -0
  51. package/cjs/packages/vuu-utils/src/feature-utils.js.map +1 -0
  52. package/cjs/packages/vuu-utils/src/filters/filter-utils.js.map +1 -0
  53. package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -0
  54. package/cjs/packages/vuu-utils/src/form-utils.js.map +1 -0
  55. package/cjs/packages/vuu-utils/src/formatting-utils.js.map +1 -0
  56. package/cjs/packages/vuu-utils/src/getUniqueId.js.map +1 -0
  57. package/cjs/packages/vuu-utils/src/group-utils.js.map +1 -0
  58. package/cjs/packages/vuu-utils/src/html-utils.js.map +1 -0
  59. package/cjs/{index.js → packages/vuu-utils/src/index.js} +18 -2
  60. package/cjs/{index.js.map → packages/vuu-utils/src/index.js.map} +1 -1
  61. package/cjs/packages/vuu-utils/src/input-utils.js.map +1 -0
  62. package/cjs/packages/vuu-utils/src/invariant.js.map +1 -0
  63. package/cjs/packages/vuu-utils/src/itemToString.js.map +1 -0
  64. package/cjs/packages/vuu-utils/src/json-utils.js.map +1 -0
  65. package/cjs/packages/vuu-utils/src/keyboard-utils.js.map +1 -0
  66. package/cjs/packages/vuu-utils/src/keyset.js.map +1 -0
  67. package/cjs/packages/vuu-utils/src/list-utils.js.map +1 -0
  68. package/cjs/packages/vuu-utils/src/local-storage-utils.js.map +1 -0
  69. package/cjs/packages/vuu-utils/src/logging-utils.js.map +1 -0
  70. package/cjs/packages/vuu-utils/src/menu-utils.js.map +1 -0
  71. package/cjs/packages/vuu-utils/src/module-utils.js.map +1 -0
  72. package/cjs/{moving-window.js → packages/vuu-utils/src/moving-window.js} +0 -2
  73. package/cjs/packages/vuu-utils/src/moving-window.js.map +1 -0
  74. package/cjs/packages/vuu-utils/src/nanoid/index.js.map +1 -0
  75. package/cjs/packages/vuu-utils/src/perf-utils.js.map +1 -0
  76. package/cjs/packages/vuu-utils/src/promise-utils.js.map +1 -0
  77. package/cjs/packages/vuu-utils/src/protocol-message-utils.js.map +1 -0
  78. package/cjs/{range-utils.js → packages/vuu-utils/src/range-utils.js} +0 -3
  79. package/cjs/packages/vuu-utils/src/range-utils.js.map +1 -0
  80. package/cjs/packages/vuu-utils/src/react-utils.js.map +1 -0
  81. package/cjs/packages/vuu-utils/src/round-decimal.js.map +1 -0
  82. package/cjs/packages/vuu-utils/src/row-utils.js.map +1 -0
  83. package/cjs/packages/vuu-utils/src/selection-utils.js.map +1 -0
  84. package/cjs/packages/vuu-utils/src/shell-layout-types.js.map +1 -0
  85. package/cjs/packages/vuu-utils/src/sort-utils.js.map +1 -0
  86. package/cjs/packages/vuu-utils/src/table-schema-utils.js.map +1 -0
  87. package/cjs/packages/vuu-utils/src/text-utils.js.map +1 -0
  88. package/cjs/packages/vuu-utils/src/tree-utils.js.map +1 -0
  89. package/cjs/packages/vuu-utils/src/ts-utils.js.map +1 -0
  90. package/cjs/packages/vuu-utils/src/typeahead-utils.js.map +1 -0
  91. package/cjs/packages/vuu-utils/src/url-utils.js.map +1 -0
  92. package/cjs/packages/vuu-utils/src/useId.js.map +1 -0
  93. package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -0
  94. package/cjs/packages/vuu-utils/src/useStateRef.js.map +1 -0
  95. package/esm/node_modules/@dnd-kit/abstract/index.js +612 -0
  96. package/esm/node_modules/@dnd-kit/abstract/index.js.map +1 -0
  97. package/esm/node_modules/@dnd-kit/abstract/modifiers.js +82 -0
  98. package/esm/node_modules/@dnd-kit/abstract/modifiers.js.map +1 -0
  99. package/esm/node_modules/@dnd-kit/collision/dist/index.js +86 -0
  100. package/esm/node_modules/@dnd-kit/collision/dist/index.js.map +1 -0
  101. package/esm/node_modules/@dnd-kit/dom/index.js +1642 -0
  102. package/esm/node_modules/@dnd-kit/dom/index.js.map +1 -0
  103. package/esm/node_modules/@dnd-kit/dom/sortable.js +827 -0
  104. package/esm/node_modules/@dnd-kit/dom/sortable.js.map +1 -0
  105. package/esm/node_modules/@dnd-kit/dom/utilities.js +1344 -0
  106. package/esm/node_modules/@dnd-kit/dom/utilities.js.map +1 -0
  107. package/esm/node_modules/@dnd-kit/geometry/dist/index.js +303 -0
  108. package/esm/node_modules/@dnd-kit/geometry/dist/index.js.map +1 -0
  109. package/esm/node_modules/@dnd-kit/react/hooks.js +80 -0
  110. package/esm/node_modules/@dnd-kit/react/hooks.js.map +1 -0
  111. package/esm/node_modules/@dnd-kit/react/sortable.js +175 -0
  112. package/esm/node_modules/@dnd-kit/react/sortable.js.map +1 -0
  113. package/esm/node_modules/@dnd-kit/react/utilities.js +17 -0
  114. package/esm/node_modules/@dnd-kit/react/utilities.js.map +1 -0
  115. package/esm/node_modules/@dnd-kit/state/dist/index.js +259 -0
  116. package/esm/node_modules/@dnd-kit/state/dist/index.js.map +1 -0
  117. package/esm/node_modules/@preact/signals-core/dist/signals-core.js +4 -0
  118. package/esm/node_modules/@preact/signals-core/dist/signals-core.js.map +1 -0
  119. package/esm/packages/vuu-utils/src/DataWindow.js.map +1 -0
  120. package/esm/packages/vuu-utils/src/ShellContext.js.map +1 -0
  121. package/esm/packages/vuu-utils/src/ThemeProvider.js.map +1 -0
  122. package/esm/packages/vuu-utils/src/array-utils.js.map +1 -0
  123. package/esm/packages/vuu-utils/src/box-utils.js.map +1 -0
  124. package/esm/packages/vuu-utils/src/column-utils.js.map +1 -0
  125. package/esm/packages/vuu-utils/src/common-types.js.map +1 -0
  126. package/esm/packages/vuu-utils/src/component-registry.js.map +1 -0
  127. package/esm/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -0
  128. package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -0
  129. package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -0
  130. package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -0
  131. package/esm/packages/vuu-utils/src/cookie-utils.js.map +1 -0
  132. package/esm/packages/vuu-utils/src/css-utils.js.map +1 -0
  133. package/esm/packages/vuu-utils/src/data-utils.js.map +1 -0
  134. package/esm/{datasource → packages/vuu-utils/src/datasource}/BaseDataSource.js +4 -0
  135. package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -0
  136. package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +1 -0
  137. package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -0
  138. package/esm/packages/vuu-utils/src/datasource/datasource-utils.js.map +1 -0
  139. package/esm/packages/vuu-utils/src/date/date-utils.js.map +1 -0
  140. package/esm/packages/vuu-utils/src/date/dateTimePattern.js.map +1 -0
  141. package/esm/packages/vuu-utils/src/date/formatter.js.map +1 -0
  142. package/esm/packages/vuu-utils/src/date/types.js.map +1 -0
  143. package/esm/packages/vuu-utils/src/debug-utils.js.map +1 -0
  144. package/esm/packages/vuu-utils/src/event-emitter.js.map +1 -0
  145. package/esm/packages/vuu-utils/src/feature-utils.js.map +1 -0
  146. package/esm/packages/vuu-utils/src/filters/filter-utils.js.map +1 -0
  147. package/esm/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -0
  148. package/esm/packages/vuu-utils/src/form-utils.js.map +1 -0
  149. package/esm/packages/vuu-utils/src/formatting-utils.js.map +1 -0
  150. package/esm/packages/vuu-utils/src/getUniqueId.js.map +1 -0
  151. package/esm/packages/vuu-utils/src/group-utils.js.map +1 -0
  152. package/esm/packages/vuu-utils/src/html-utils.js.map +1 -0
  153. package/esm/{index.js → packages/vuu-utils/src/index.js} +4 -0
  154. package/esm/{index.js.map → packages/vuu-utils/src/index.js.map} +1 -1
  155. package/esm/packages/vuu-utils/src/input-utils.js.map +1 -0
  156. package/esm/packages/vuu-utils/src/invariant.js.map +1 -0
  157. package/esm/packages/vuu-utils/src/itemToString.js.map +1 -0
  158. package/esm/packages/vuu-utils/src/json-utils.js.map +1 -0
  159. package/esm/packages/vuu-utils/src/keyboard-utils.js.map +1 -0
  160. package/esm/packages/vuu-utils/src/keyset.js.map +1 -0
  161. package/esm/packages/vuu-utils/src/list-utils.js.map +1 -0
  162. package/esm/packages/vuu-utils/src/local-storage-utils.js.map +1 -0
  163. package/esm/packages/vuu-utils/src/logging-utils.js.map +1 -0
  164. package/esm/packages/vuu-utils/src/menu-utils.js.map +1 -0
  165. package/esm/packages/vuu-utils/src/module-utils.js.map +1 -0
  166. package/esm/{moving-window.js → packages/vuu-utils/src/moving-window.js} +0 -2
  167. package/esm/packages/vuu-utils/src/moving-window.js.map +1 -0
  168. package/esm/packages/vuu-utils/src/nanoid/index.js.map +1 -0
  169. package/esm/packages/vuu-utils/src/perf-utils.js.map +1 -0
  170. package/esm/packages/vuu-utils/src/promise-utils.js.map +1 -0
  171. package/esm/packages/vuu-utils/src/protocol-message-utils.js.map +1 -0
  172. package/esm/{range-utils.js → packages/vuu-utils/src/range-utils.js} +0 -3
  173. package/esm/packages/vuu-utils/src/range-utils.js.map +1 -0
  174. package/esm/packages/vuu-utils/src/react-utils.js.map +1 -0
  175. package/esm/packages/vuu-utils/src/round-decimal.js.map +1 -0
  176. package/esm/packages/vuu-utils/src/row-utils.js.map +1 -0
  177. package/esm/packages/vuu-utils/src/selection-utils.js.map +1 -0
  178. package/esm/packages/vuu-utils/src/shell-layout-types.js.map +1 -0
  179. package/esm/packages/vuu-utils/src/sort-utils.js.map +1 -0
  180. package/esm/packages/vuu-utils/src/table-schema-utils.js.map +1 -0
  181. package/esm/packages/vuu-utils/src/text-utils.js.map +1 -0
  182. package/esm/packages/vuu-utils/src/tree-utils.js.map +1 -0
  183. package/esm/packages/vuu-utils/src/ts-utils.js.map +1 -0
  184. package/esm/packages/vuu-utils/src/typeahead-utils.js.map +1 -0
  185. package/esm/packages/vuu-utils/src/url-utils.js.map +1 -0
  186. package/esm/packages/vuu-utils/src/useId.js.map +1 -0
  187. package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -0
  188. package/esm/packages/vuu-utils/src/useStateRef.js.map +1 -0
  189. package/package.json +9 -6
  190. package/types/component-registry.d.ts +2 -2
  191. package/types/filters/filter-utils.d.ts +2 -2
  192. package/types/index.d.ts +5 -0
  193. package/cjs/DataWindow.js.map +0 -1
  194. package/cjs/ShellContext.js.map +0 -1
  195. package/cjs/ThemeProvider.js.map +0 -1
  196. package/cjs/array-utils.js.map +0 -1
  197. package/cjs/box-utils.js.map +0 -1
  198. package/cjs/column-utils.js.map +0 -1
  199. package/cjs/common-types.js.map +0 -1
  200. package/cjs/component-registry.js.map +0 -1
  201. package/cjs/context-definitions/DataContext.js.map +0 -1
  202. package/cjs/context-definitions/DataProvider.js.map +0 -1
  203. package/cjs/context-definitions/DataSourceProvider.js.map +0 -1
  204. package/cjs/context-definitions/WorkspaceContext.js.map +0 -1
  205. package/cjs/cookie-utils.js.map +0 -1
  206. package/cjs/css-utils.js.map +0 -1
  207. package/cjs/data-utils.js.map +0 -1
  208. package/cjs/datasource/BaseDataSource.js.map +0 -1
  209. package/cjs/datasource/datasource-action-utils.js.map +0 -1
  210. package/cjs/datasource/datasource-filter-utils.js.map +0 -1
  211. package/cjs/datasource/datasource-utils.js.map +0 -1
  212. package/cjs/date/date-utils.js.map +0 -1
  213. package/cjs/date/dateTimePattern.js.map +0 -1
  214. package/cjs/date/formatter.js.map +0 -1
  215. package/cjs/date/types.js.map +0 -1
  216. package/cjs/debug-utils.js.map +0 -1
  217. package/cjs/event-emitter.js.map +0 -1
  218. package/cjs/feature-utils.js.map +0 -1
  219. package/cjs/filters/filter-utils.js.map +0 -1
  220. package/cjs/filters/filterAsQuery.js.map +0 -1
  221. package/cjs/form-utils.js.map +0 -1
  222. package/cjs/formatting-utils.js.map +0 -1
  223. package/cjs/getUniqueId.js.map +0 -1
  224. package/cjs/group-utils.js.map +0 -1
  225. package/cjs/html-utils.js.map +0 -1
  226. package/cjs/input-utils.js.map +0 -1
  227. package/cjs/invariant.js.map +0 -1
  228. package/cjs/itemToString.js.map +0 -1
  229. package/cjs/json-utils.js.map +0 -1
  230. package/cjs/keyboard-utils.js.map +0 -1
  231. package/cjs/keyset.js.map +0 -1
  232. package/cjs/list-utils.js.map +0 -1
  233. package/cjs/local-storage-utils.js.map +0 -1
  234. package/cjs/logging-utils.js.map +0 -1
  235. package/cjs/menu-utils.js.map +0 -1
  236. package/cjs/module-utils.js.map +0 -1
  237. package/cjs/moving-window.js.map +0 -1
  238. package/cjs/nanoid/index.js.map +0 -1
  239. package/cjs/perf-utils.js.map +0 -1
  240. package/cjs/promise-utils.js.map +0 -1
  241. package/cjs/protocol-message-utils.js.map +0 -1
  242. package/cjs/range-utils.js.map +0 -1
  243. package/cjs/react-utils.js.map +0 -1
  244. package/cjs/round-decimal.js.map +0 -1
  245. package/cjs/row-utils.js.map +0 -1
  246. package/cjs/selection-utils.js.map +0 -1
  247. package/cjs/shell-layout-types.js.map +0 -1
  248. package/cjs/sort-utils.js.map +0 -1
  249. package/cjs/table-schema-utils.js.map +0 -1
  250. package/cjs/text-utils.js.map +0 -1
  251. package/cjs/tree-utils.js.map +0 -1
  252. package/cjs/ts-utils.js.map +0 -1
  253. package/cjs/typeahead-utils.js.map +0 -1
  254. package/cjs/url-utils.js.map +0 -1
  255. package/cjs/useId.js.map +0 -1
  256. package/cjs/useLayoutEffectSkipFirst.js.map +0 -1
  257. package/cjs/useStateRef.js.map +0 -1
  258. package/esm/DataWindow.js.map +0 -1
  259. package/esm/ShellContext.js.map +0 -1
  260. package/esm/ThemeProvider.js.map +0 -1
  261. package/esm/array-utils.js.map +0 -1
  262. package/esm/box-utils.js.map +0 -1
  263. package/esm/column-utils.js.map +0 -1
  264. package/esm/common-types.js.map +0 -1
  265. package/esm/component-registry.js.map +0 -1
  266. package/esm/context-definitions/DataContext.js.map +0 -1
  267. package/esm/context-definitions/DataProvider.js.map +0 -1
  268. package/esm/context-definitions/DataSourceProvider.js.map +0 -1
  269. package/esm/context-definitions/WorkspaceContext.js.map +0 -1
  270. package/esm/cookie-utils.js.map +0 -1
  271. package/esm/css-utils.js.map +0 -1
  272. package/esm/data-utils.js.map +0 -1
  273. package/esm/datasource/BaseDataSource.js.map +0 -1
  274. package/esm/datasource/datasource-action-utils.js.map +0 -1
  275. package/esm/datasource/datasource-filter-utils.js.map +0 -1
  276. package/esm/datasource/datasource-utils.js.map +0 -1
  277. package/esm/date/date-utils.js.map +0 -1
  278. package/esm/date/dateTimePattern.js.map +0 -1
  279. package/esm/date/formatter.js.map +0 -1
  280. package/esm/date/types.js.map +0 -1
  281. package/esm/debug-utils.js.map +0 -1
  282. package/esm/event-emitter.js.map +0 -1
  283. package/esm/feature-utils.js.map +0 -1
  284. package/esm/filters/filter-utils.js.map +0 -1
  285. package/esm/filters/filterAsQuery.js.map +0 -1
  286. package/esm/form-utils.js.map +0 -1
  287. package/esm/formatting-utils.js.map +0 -1
  288. package/esm/getUniqueId.js.map +0 -1
  289. package/esm/group-utils.js.map +0 -1
  290. package/esm/html-utils.js.map +0 -1
  291. package/esm/input-utils.js.map +0 -1
  292. package/esm/invariant.js.map +0 -1
  293. package/esm/itemToString.js.map +0 -1
  294. package/esm/json-utils.js.map +0 -1
  295. package/esm/keyboard-utils.js.map +0 -1
  296. package/esm/keyset.js.map +0 -1
  297. package/esm/list-utils.js.map +0 -1
  298. package/esm/local-storage-utils.js.map +0 -1
  299. package/esm/logging-utils.js.map +0 -1
  300. package/esm/menu-utils.js.map +0 -1
  301. package/esm/module-utils.js.map +0 -1
  302. package/esm/moving-window.js.map +0 -1
  303. package/esm/nanoid/index.js.map +0 -1
  304. package/esm/perf-utils.js.map +0 -1
  305. package/esm/promise-utils.js.map +0 -1
  306. package/esm/protocol-message-utils.js.map +0 -1
  307. package/esm/range-utils.js.map +0 -1
  308. package/esm/react-utils.js.map +0 -1
  309. package/esm/round-decimal.js.map +0 -1
  310. package/esm/row-utils.js.map +0 -1
  311. package/esm/selection-utils.js.map +0 -1
  312. package/esm/shell-layout-types.js.map +0 -1
  313. package/esm/sort-utils.js.map +0 -1
  314. package/esm/table-schema-utils.js.map +0 -1
  315. package/esm/text-utils.js.map +0 -1
  316. package/esm/tree-utils.js.map +0 -1
  317. package/esm/ts-utils.js.map +0 -1
  318. package/esm/typeahead-utils.js.map +0 -1
  319. package/esm/url-utils.js.map +0 -1
  320. package/esm/useId.js.map +0 -1
  321. package/esm/useLayoutEffectSkipFirst.js.map +0 -1
  322. package/esm/useStateRef.js.map +0 -1
  323. /package/cjs/{DataWindow.js → packages/vuu-utils/src/DataWindow.js} +0 -0
  324. /package/cjs/{ShellContext.js → packages/vuu-utils/src/ShellContext.js} +0 -0
  325. /package/cjs/{ThemeProvider.js → packages/vuu-utils/src/ThemeProvider.js} +0 -0
  326. /package/cjs/{array-utils.js → packages/vuu-utils/src/array-utils.js} +0 -0
  327. /package/cjs/{box-utils.js → packages/vuu-utils/src/box-utils.js} +0 -0
  328. /package/cjs/{column-utils.js → packages/vuu-utils/src/column-utils.js} +0 -0
  329. /package/cjs/{common-types.js → packages/vuu-utils/src/common-types.js} +0 -0
  330. /package/cjs/{component-registry.js → packages/vuu-utils/src/component-registry.js} +0 -0
  331. /package/cjs/{context-definitions → packages/vuu-utils/src/context-definitions}/DataContext.js +0 -0
  332. /package/cjs/{context-definitions → packages/vuu-utils/src/context-definitions}/DataProvider.js +0 -0
  333. /package/cjs/{context-definitions → packages/vuu-utils/src/context-definitions}/DataSourceProvider.js +0 -0
  334. /package/cjs/{context-definitions → packages/vuu-utils/src/context-definitions}/WorkspaceContext.js +0 -0
  335. /package/cjs/{cookie-utils.js → packages/vuu-utils/src/cookie-utils.js} +0 -0
  336. /package/cjs/{css-utils.js → packages/vuu-utils/src/css-utils.js} +0 -0
  337. /package/cjs/{data-utils.js → packages/vuu-utils/src/data-utils.js} +0 -0
  338. /package/cjs/{datasource → packages/vuu-utils/src/datasource}/datasource-action-utils.js +0 -0
  339. /package/cjs/{datasource → packages/vuu-utils/src/datasource}/datasource-filter-utils.js +0 -0
  340. /package/cjs/{datasource → packages/vuu-utils/src/datasource}/datasource-utils.js +0 -0
  341. /package/cjs/{date → packages/vuu-utils/src/date}/date-utils.js +0 -0
  342. /package/cjs/{date → packages/vuu-utils/src/date}/dateTimePattern.js +0 -0
  343. /package/cjs/{date → packages/vuu-utils/src/date}/formatter.js +0 -0
  344. /package/cjs/{date → packages/vuu-utils/src/date}/types.js +0 -0
  345. /package/cjs/{debug-utils.js → packages/vuu-utils/src/debug-utils.js} +0 -0
  346. /package/cjs/{event-emitter.js → packages/vuu-utils/src/event-emitter.js} +0 -0
  347. /package/cjs/{feature-utils.js → packages/vuu-utils/src/feature-utils.js} +0 -0
  348. /package/cjs/{filters → packages/vuu-utils/src/filters}/filter-utils.js +0 -0
  349. /package/cjs/{filters → packages/vuu-utils/src/filters}/filterAsQuery.js +0 -0
  350. /package/cjs/{form-utils.js → packages/vuu-utils/src/form-utils.js} +0 -0
  351. /package/cjs/{formatting-utils.js → packages/vuu-utils/src/formatting-utils.js} +0 -0
  352. /package/cjs/{getUniqueId.js → packages/vuu-utils/src/getUniqueId.js} +0 -0
  353. /package/cjs/{group-utils.js → packages/vuu-utils/src/group-utils.js} +0 -0
  354. /package/cjs/{html-utils.js → packages/vuu-utils/src/html-utils.js} +0 -0
  355. /package/cjs/{input-utils.js → packages/vuu-utils/src/input-utils.js} +0 -0
  356. /package/cjs/{invariant.js → packages/vuu-utils/src/invariant.js} +0 -0
  357. /package/cjs/{itemToString.js → packages/vuu-utils/src/itemToString.js} +0 -0
  358. /package/cjs/{json-utils.js → packages/vuu-utils/src/json-utils.js} +0 -0
  359. /package/cjs/{keyboard-utils.js → packages/vuu-utils/src/keyboard-utils.js} +0 -0
  360. /package/cjs/{keyset.js → packages/vuu-utils/src/keyset.js} +0 -0
  361. /package/cjs/{list-utils.js → packages/vuu-utils/src/list-utils.js} +0 -0
  362. /package/cjs/{local-storage-utils.js → packages/vuu-utils/src/local-storage-utils.js} +0 -0
  363. /package/cjs/{logging-utils.js → packages/vuu-utils/src/logging-utils.js} +0 -0
  364. /package/cjs/{menu-utils.js → packages/vuu-utils/src/menu-utils.js} +0 -0
  365. /package/cjs/{module-utils.js → packages/vuu-utils/src/module-utils.js} +0 -0
  366. /package/cjs/{nanoid → packages/vuu-utils/src/nanoid}/index.js +0 -0
  367. /package/cjs/{perf-utils.js → packages/vuu-utils/src/perf-utils.js} +0 -0
  368. /package/cjs/{promise-utils.js → packages/vuu-utils/src/promise-utils.js} +0 -0
  369. /package/cjs/{protocol-message-utils.js → packages/vuu-utils/src/protocol-message-utils.js} +0 -0
  370. /package/cjs/{react-utils.js → packages/vuu-utils/src/react-utils.js} +0 -0
  371. /package/cjs/{round-decimal.js → packages/vuu-utils/src/round-decimal.js} +0 -0
  372. /package/cjs/{row-utils.js → packages/vuu-utils/src/row-utils.js} +0 -0
  373. /package/cjs/{selection-utils.js → packages/vuu-utils/src/selection-utils.js} +0 -0
  374. /package/cjs/{shell-layout-types.js → packages/vuu-utils/src/shell-layout-types.js} +0 -0
  375. /package/cjs/{sort-utils.js → packages/vuu-utils/src/sort-utils.js} +0 -0
  376. /package/cjs/{table-schema-utils.js → packages/vuu-utils/src/table-schema-utils.js} +0 -0
  377. /package/cjs/{text-utils.js → packages/vuu-utils/src/text-utils.js} +0 -0
  378. /package/cjs/{tree-utils.js → packages/vuu-utils/src/tree-utils.js} +0 -0
  379. /package/cjs/{ts-utils.js → packages/vuu-utils/src/ts-utils.js} +0 -0
  380. /package/cjs/{typeahead-utils.js → packages/vuu-utils/src/typeahead-utils.js} +0 -0
  381. /package/cjs/{url-utils.js → packages/vuu-utils/src/url-utils.js} +0 -0
  382. /package/cjs/{useId.js → packages/vuu-utils/src/useId.js} +0 -0
  383. /package/cjs/{useLayoutEffectSkipFirst.js → packages/vuu-utils/src/useLayoutEffectSkipFirst.js} +0 -0
  384. /package/cjs/{useStateRef.js → packages/vuu-utils/src/useStateRef.js} +0 -0
  385. /package/esm/{DataWindow.js → packages/vuu-utils/src/DataWindow.js} +0 -0
  386. /package/esm/{ShellContext.js → packages/vuu-utils/src/ShellContext.js} +0 -0
  387. /package/esm/{ThemeProvider.js → packages/vuu-utils/src/ThemeProvider.js} +0 -0
  388. /package/esm/{array-utils.js → packages/vuu-utils/src/array-utils.js} +0 -0
  389. /package/esm/{box-utils.js → packages/vuu-utils/src/box-utils.js} +0 -0
  390. /package/esm/{column-utils.js → packages/vuu-utils/src/column-utils.js} +0 -0
  391. /package/esm/{common-types.js → packages/vuu-utils/src/common-types.js} +0 -0
  392. /package/esm/{component-registry.js → packages/vuu-utils/src/component-registry.js} +0 -0
  393. /package/esm/{context-definitions → packages/vuu-utils/src/context-definitions}/DataContext.js +0 -0
  394. /package/esm/{context-definitions → packages/vuu-utils/src/context-definitions}/DataProvider.js +0 -0
  395. /package/esm/{context-definitions → packages/vuu-utils/src/context-definitions}/DataSourceProvider.js +0 -0
  396. /package/esm/{context-definitions → packages/vuu-utils/src/context-definitions}/WorkspaceContext.js +0 -0
  397. /package/esm/{cookie-utils.js → packages/vuu-utils/src/cookie-utils.js} +0 -0
  398. /package/esm/{css-utils.js → packages/vuu-utils/src/css-utils.js} +0 -0
  399. /package/esm/{data-utils.js → packages/vuu-utils/src/data-utils.js} +0 -0
  400. /package/esm/{datasource → packages/vuu-utils/src/datasource}/datasource-action-utils.js +0 -0
  401. /package/esm/{datasource → packages/vuu-utils/src/datasource}/datasource-filter-utils.js +0 -0
  402. /package/esm/{datasource → packages/vuu-utils/src/datasource}/datasource-utils.js +0 -0
  403. /package/esm/{date → packages/vuu-utils/src/date}/date-utils.js +0 -0
  404. /package/esm/{date → packages/vuu-utils/src/date}/dateTimePattern.js +0 -0
  405. /package/esm/{date → packages/vuu-utils/src/date}/formatter.js +0 -0
  406. /package/esm/{date → packages/vuu-utils/src/date}/types.js +0 -0
  407. /package/esm/{debug-utils.js → packages/vuu-utils/src/debug-utils.js} +0 -0
  408. /package/esm/{event-emitter.js → packages/vuu-utils/src/event-emitter.js} +0 -0
  409. /package/esm/{feature-utils.js → packages/vuu-utils/src/feature-utils.js} +0 -0
  410. /package/esm/{filters → packages/vuu-utils/src/filters}/filter-utils.js +0 -0
  411. /package/esm/{filters → packages/vuu-utils/src/filters}/filterAsQuery.js +0 -0
  412. /package/esm/{form-utils.js → packages/vuu-utils/src/form-utils.js} +0 -0
  413. /package/esm/{formatting-utils.js → packages/vuu-utils/src/formatting-utils.js} +0 -0
  414. /package/esm/{getUniqueId.js → packages/vuu-utils/src/getUniqueId.js} +0 -0
  415. /package/esm/{group-utils.js → packages/vuu-utils/src/group-utils.js} +0 -0
  416. /package/esm/{html-utils.js → packages/vuu-utils/src/html-utils.js} +0 -0
  417. /package/esm/{input-utils.js → packages/vuu-utils/src/input-utils.js} +0 -0
  418. /package/esm/{invariant.js → packages/vuu-utils/src/invariant.js} +0 -0
  419. /package/esm/{itemToString.js → packages/vuu-utils/src/itemToString.js} +0 -0
  420. /package/esm/{json-utils.js → packages/vuu-utils/src/json-utils.js} +0 -0
  421. /package/esm/{keyboard-utils.js → packages/vuu-utils/src/keyboard-utils.js} +0 -0
  422. /package/esm/{keyset.js → packages/vuu-utils/src/keyset.js} +0 -0
  423. /package/esm/{list-utils.js → packages/vuu-utils/src/list-utils.js} +0 -0
  424. /package/esm/{local-storage-utils.js → packages/vuu-utils/src/local-storage-utils.js} +0 -0
  425. /package/esm/{logging-utils.js → packages/vuu-utils/src/logging-utils.js} +0 -0
  426. /package/esm/{menu-utils.js → packages/vuu-utils/src/menu-utils.js} +0 -0
  427. /package/esm/{module-utils.js → packages/vuu-utils/src/module-utils.js} +0 -0
  428. /package/esm/{nanoid → packages/vuu-utils/src/nanoid}/index.js +0 -0
  429. /package/esm/{perf-utils.js → packages/vuu-utils/src/perf-utils.js} +0 -0
  430. /package/esm/{promise-utils.js → packages/vuu-utils/src/promise-utils.js} +0 -0
  431. /package/esm/{protocol-message-utils.js → packages/vuu-utils/src/protocol-message-utils.js} +0 -0
  432. /package/esm/{react-utils.js → packages/vuu-utils/src/react-utils.js} +0 -0
  433. /package/esm/{round-decimal.js → packages/vuu-utils/src/round-decimal.js} +0 -0
  434. /package/esm/{row-utils.js → packages/vuu-utils/src/row-utils.js} +0 -0
  435. /package/esm/{selection-utils.js → packages/vuu-utils/src/selection-utils.js} +0 -0
  436. /package/esm/{shell-layout-types.js → packages/vuu-utils/src/shell-layout-types.js} +0 -0
  437. /package/esm/{sort-utils.js → packages/vuu-utils/src/sort-utils.js} +0 -0
  438. /package/esm/{table-schema-utils.js → packages/vuu-utils/src/table-schema-utils.js} +0 -0
  439. /package/esm/{text-utils.js → packages/vuu-utils/src/text-utils.js} +0 -0
  440. /package/esm/{tree-utils.js → packages/vuu-utils/src/tree-utils.js} +0 -0
  441. /package/esm/{ts-utils.js → packages/vuu-utils/src/ts-utils.js} +0 -0
  442. /package/esm/{typeahead-utils.js → packages/vuu-utils/src/typeahead-utils.js} +0 -0
  443. /package/esm/{url-utils.js → packages/vuu-utils/src/url-utils.js} +0 -0
  444. /package/esm/{useId.js → packages/vuu-utils/src/useId.js} +0 -0
  445. /package/esm/{useLayoutEffectSkipFirst.js → packages/vuu-utils/src/useLayoutEffectSkipFirst.js} +0 -0
  446. /package/esm/{useStateRef.js → packages/vuu-utils/src/useStateRef.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-utils.js","sources":["../../../../../src/filters/filter-utils.ts"],"sourcesContent":["import type { DataSourceFilter } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n Filter,\n FilterClauseOp,\n FilterWithPartialClause,\n MultiClauseFilter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { VuuFilter, VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { getTypedValue } from \"../form-utils\";\n\nconst singleValueFilterOps = new Set<SingleValueFilterClauseOp>([\n \"=\",\n \"!=\",\n \">\",\n \">=\",\n \"<\",\n \"<=\",\n \"contains\",\n \"starts\",\n \"ends\",\n]);\n\nexport const isValidFilterClauseOp = (op?: string): op is FilterClauseOp =>\n op === \"in\" || singleValueFilterOps.has(op as SingleValueFilterClauseOp);\n\nexport const isNamedFilter = (f?: Filter) =>\n f !== undefined && f.name !== undefined;\n\n// ... with type constraints\nexport const isSingleValueFilter = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause =>\n f !== undefined &&\n singleValueFilterOps.has(f.op as SingleValueFilterClauseOp);\n\nexport const isFilterClause = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause | MultiValueFilterClause =>\n f !== undefined && (isSingleValueFilter(f) || isMultiValueFilter(f));\n\nexport const isMultiValueFilter = (\n f?: Partial<Filter>,\n): f is MultiValueFilterClause => f !== undefined && f.op === \"in\";\n\nexport const isInFilter = (f: Partial<Filter>): f is MultiValueFilterClause =>\n f.op === \"in\";\nexport const isAndFilter = (f: Partial<Filter>): f is AndFilter =>\n f.op === \"and\";\nexport const isOrFilter = (f: Partial<Filter>): f is OrFilter => f.op === \"or\";\n\nexport const isCompleteFilter = (filter: Partial<Filter>): filter is Filter =>\n isSingleValueFilter(filter) &&\n filter.column !== undefined &&\n filter.op !== undefined &&\n filter.value !== undefined;\n\nexport function isMultiClauseFilter(\n f?: Partial<Filter> | FilterWithPartialClause,\n): f is MultiClauseFilter {\n return f !== undefined && (f.op === \"and\" || f.op === \"or\");\n}\n\nexport const applyFilterToColumns = (\n columns: RuntimeColumnDescriptor[],\n { filterStruct }: DataSourceFilter,\n) =>\n columns.map((column) => {\n // TODO this gives us a dependency on vuu-filters\n const filter = extractFilterForColumn(filterStruct, column.name);\n if (filter !== undefined) {\n return {\n ...column,\n filter,\n };\n } else if (column.filter) {\n return {\n ...column,\n filter: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const isFilteredColumn = (column: RuntimeColumnDescriptor) =>\n column.filter !== undefined;\n\nexport const stripFilterFromColumns = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => {\n const { filter, ...rest } = col;\n return filter ? rest : col;\n });\n\nexport const extractFilterForColumn = (\n filter: Filter | undefined,\n columnName: string,\n) => {\n if (isMultiClauseFilter(filter)) {\n return collectFiltersForColumn(filter, columnName);\n }\n if (isFilterClause(filter)) {\n return filter.column === columnName ? filter : undefined;\n }\n return undefined;\n};\n\nconst collectFiltersForColumn = (\n filter: MultiClauseFilter,\n columnName: string,\n) => {\n const { filters, op } = filter;\n const results: Filter[] = [];\n filters.forEach((filter) => {\n const ffc = extractFilterForColumn(filter, columnName);\n if (ffc) {\n results.push(ffc);\n }\n });\n if (results.length === 0) {\n return undefined;\n } else if (results.length === 1) {\n return results[0];\n }\n return {\n op,\n filters: results,\n };\n};\n\nexport type FilterEvents = {\n filter: (vuuFilter: VuuFilter) => void;\n};\n\nconst createFilterClause = (column: string, value: VuuRowDataItemType) =>\n typeof value === \"string\"\n ? `${column} contains \"${value}\"`\n : `${column} = ${value}`;\n\nexport class FilterAggregator extends EventEmitter<FilterEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, VuuRowDataItemType>();\n\n addFilter(column: ColumnDescriptor, value: string | number) {\n this.#columns.set(column.name, column);\n const { serverDataType = \"string\" } = column;\n const typedValue = getTypedValue(value.toString(), serverDataType, true);\n\n this.#filters.set(column.name, typedValue);\n // this.emit(\"filter\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n return true;\n } else {\n return false;\n }\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n return {\n filter: Array.from(this.#filters.entries())\n .map((args) => createFilterClause(...args))\n .join(\" and \"),\n };\n }\n }\n}\n"],"names":["filter"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterAsQuery.js","sources":["../../../../../src/filters/filterAsQuery.ts"],"sourcesContent":["import {\n ColumnDescriptorsByName,\n Filter,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport type { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { isDateTimeDataValue } from \"../column-utils\";\nimport { isMultiClauseFilter, isMultiValueFilter } from \"./filter-utils\";\n\nconst filterValue = (value: string | number | boolean) =>\n typeof value === \"string\" ? `\"${value}\"` : value;\n\nconst quotedStrings = (value: string | number | boolean) =>\n typeof value === \"string\" ? `\"${value}\"` : value;\n\nconst removeOuterMostParentheses = (s: string) => s.replace(/^\\((.*)\\)$/, \"$1\");\n\nexport const filterAsQuery = (\n f: Filter,\n opts?: { columnsByName?: ColumnDescriptorsByName },\n): string => {\n return removeOuterMostParentheses(filterAsQueryCore(f, opts));\n};\n\nconst filterAsQueryCore = (\n f: Filter,\n opts?: { columnsByName?: ColumnDescriptorsByName },\n): string => {\n if (isMultiClauseFilter(f)) {\n const multiClauseFilter = f.filters\n .map((filter) => filterAsQueryCore(filter, opts))\n .join(` ${f.op} `);\n return `(${multiClauseFilter})`;\n } else if (isMultiValueFilter(f)) {\n return `${f.column} ${f.op} [${f.values.map(quotedStrings).join(\",\")}]`;\n } else {\n return singleValueFilterAsQuery(f, opts);\n }\n};\n\nfunction singleValueFilterAsQuery(\n f: SingleValueFilterClause,\n opts?: { columnsByName?: ColumnDescriptorsByName },\n): string {\n const column = opts?.columnsByName?.[f.column];\n if (column && isDateTimeDataValue(column)) {\n return dateFilterAsQuery(f as SingleValueFilterClause<number>);\n } else {\n return defaultSingleValueFilterAsQuery(f);\n }\n}\n\nconst ONE_DAY_IN_MILIS = 1000 * 60 * 60 * 24;\nexport function dateFilterAsQuery(f: SingleValueFilterClause<number>): string {\n switch (f.op) {\n case \"=\": {\n const filters: Array<Filter> = [\n { op: \">=\", column: f.column, value: f.value },\n {\n op: \"<\",\n column: f.column,\n value: f.value + ONE_DAY_IN_MILIS,\n },\n ];\n return filterAsQueryCore({ op: \"and\", filters });\n }\n case \"!=\": {\n const filters: Array<Filter> = [\n { op: \"<\", column: f.column, value: f.value },\n {\n op: \">=\",\n column: f.column,\n value: f.value + ONE_DAY_IN_MILIS,\n },\n ];\n return filterAsQueryCore({ op: \"or\", filters });\n }\n default:\n return defaultSingleValueFilterAsQuery(f);\n }\n}\n\nconst defaultSingleValueFilterAsQuery = (f: SingleValueFilterClause) =>\n `${f.column} ${f.op} ${filterValue(f.value)}`;\n\nexport const removeColumnFromFilter = (\n column: RuntimeColumnDescriptor,\n filter: Filter,\n): [Filter | undefined, string] => {\n if (isMultiClauseFilter(filter)) {\n const [clause1, clause2] = filter.filters;\n if (clause1.column === column.name) {\n return [clause2, filterAsQuery(clause2)];\n }\n if (clause2.column === column.name) {\n return [clause1, filterAsQuery(clause1)];\n }\n }\n return [undefined, \"\"];\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-utils.js","sources":["../../../../src/form-utils.ts"],"sourcesContent":["import {\n VuuColumnDataType,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { KeyboardEvent, SyntheticEvent } from \"react\";\nimport { queryClosest } from \"./html-utils\";\nimport { stringIsValidDecimal, stringIsValidInt } from \"./data-utils\";\n\n/**\n * Use with the following convention:\n *\n * <FormField data-field=\"my-field-name\">\n */\nexport const getFieldName = (target: EventTarget | HTMLElement): string => {\n const saltFormField = queryClosest(target, \"[data-field]\") as HTMLElement;\n const fieldName = saltFormField?.dataset.field;\n if (fieldName) {\n return fieldName;\n } else {\n throw Error(\"named form field not found\");\n }\n};\n\nexport type InputSource = \"typeahead-suggestion\" | \"text-input\";\n\nexport const isNumber = (\n type: string,\n value: VuuRowDataItemType,\n): value is number => type === \"number\";\n\nexport type CommitHandler<\n E extends HTMLElement = HTMLInputElement,\n T extends VuuRowDataItemType = VuuRowDataItemType,\n> = (\n evt: SyntheticEvent<E> | KeyboardEvent<E>,\n value: T,\n source?: InputSource,\n) => void;\n\n/**\n * Convert a string value to the type appropriate for the associated\n * column or form field. Can be used when processing a string value\n * from an input used for user editing.\n *\n * @param value\n * @param type\n * @param throwIfInvalid\n */\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | \"number\",\n throwIfInvalid?: false,\n): VuuRowDataItemType | undefined;\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | \"number\",\n throwIfInvalid: true,\n): VuuRowDataItemType;\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | \"number\",\n throwIfInvalid = false,\n): VuuRowDataItemType | undefined {\n switch (type) {\n case \"int\":\n case \"long\": {\n if (stringIsValidInt(value)) {\n return parseInt(value, 10);\n } else if (throwIfInvalid) {\n throw Error(`value ${value} is not a valid ${type}`);\n } else {\n return undefined;\n }\n }\n\n case \"double\":\n case \"number\": {\n if (stringIsValidDecimal(value)) {\n return parseFloat(value);\n } else if (throwIfInvalid) {\n throw Error(`value ${value} is not a valid ${type}`);\n } else {\n return undefined;\n }\n }\n\n case \"boolean\":\n return value === \"true\" ? true : false;\n default:\n return value;\n }\n}\n"],"names":[],"mappings":";;;AAaa,MAAA,YAAA,GAAe,CAAC,MAA8C,KAAA;AACzE,EAAM,MAAA,aAAA,GAAgB,YAAa,CAAA,MAAA,EAAQ,cAAc,CAAA;AACzD,EAAM,MAAA,SAAA,GAAY,eAAe,OAAQ,CAAA,KAAA;AACzC,EAAA,IAAI,SAAW,EAAA;AACb,IAAO,OAAA,SAAA;AAAA,GACF,MAAA;AACL,IAAA,MAAM,MAAM,4BAA4B,CAAA;AAAA;AAE5C;AAIO,MAAM,QAAW,GAAA,CACtB,IACA,EAAA,KAAA,KACoB,IAAS,KAAA;AA8BxB,SAAS,aACd,CAAA,KAAA,EACA,IACA,EAAA,cAAA,GAAiB,KACe,EAAA;AAChC,EAAA,QAAQ,IAAM;AAAA,IACZ,KAAK,KAAA;AAAA,IACL,KAAK,MAAQ,EAAA;AACX,MAAI,IAAA,gBAAA,CAAiB,KAAK,CAAG,EAAA;AAC3B,QAAO,OAAA,QAAA,CAAS,OAAO,EAAE,CAAA;AAAA,iBAChB,cAAgB,EAAA;AACzB,QAAA,MAAM,KAAM,CAAA,CAAA,MAAA,EAAS,KAAK,CAAA,gBAAA,EAAmB,IAAI,CAAE,CAAA,CAAA;AAAA,OAC9C,MAAA;AACL,QAAO,OAAA,KAAA,CAAA;AAAA;AACT;AACF,IAEA,KAAK,QAAA;AAAA,IACL,KAAK,QAAU,EAAA;AACb,MAAI,IAAA,oBAAA,CAAqB,KAAK,CAAG,EAAA;AAC/B,QAAA,OAAO,WAAW,KAAK,CAAA;AAAA,iBACd,cAAgB,EAAA;AACzB,QAAA,MAAM,KAAM,CAAA,CAAA,MAAA,EAAS,KAAK,CAAA,gBAAA,EAAmB,IAAI,CAAE,CAAA,CAAA;AAAA,OAC9C,MAAA;AACL,QAAO,OAAA,KAAA,CAAA;AAAA;AACT;AACF,IAEA,KAAK,SAAA;AACH,MAAO,OAAA,KAAA,KAAU,SAAS,IAAO,GAAA,KAAA;AAAA,IACnC;AACE,MAAO,OAAA,KAAA;AAAA;AAEb;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting-utils.js","sources":["../../../../src/formatting-utils.ts"],"sourcesContent":["import { DateTimeDataValueDescriptor } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n ColumnTypeFormatting,\n ColumnTypeValueMap,\n ValueFormatter,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n isDateTimeDataValue,\n isMappedValueTypeRenderer,\n isTypeDescriptor,\n} from \"./column-utils\";\nimport { dateTimePattern, formatDate } from \"./date\";\nimport { roundDecimal } from \"./round-decimal\";\n\nexport type ValueFormatters = {\n [key: string]: ValueFormatter;\n};\n\nconst DEFAULT_NUMERIC_FORMAT: ColumnTypeFormatting = {};\n\nexport const defaultValueFormatter = (value: unknown) =>\n value == null ? \"\" : typeof value === \"string\" ? value : value.toString();\n\nconst dateFormatter = (column: DateTimeDataValueDescriptor) => {\n const pattern = dateTimePattern(column.type);\n const formatter = formatDate(pattern);\n\n return (value: unknown) => {\n if (typeof value === \"number\" && value !== 0) {\n return formatter(new Date(value));\n } else {\n return \"\";\n }\n };\n};\n\nexport const numericFormatter = ({\n align = \"right\",\n type,\n}: Partial<ColumnDescriptor>) => {\n if (type === undefined || typeof type === \"string\") {\n return defaultValueFormatter;\n } else {\n const {\n alignOnDecimals = false,\n decimals,\n zeroPad = false,\n } = type.formatting ?? DEFAULT_NUMERIC_FORMAT;\n return (value: unknown) => {\n if (\n typeof value === \"string\" &&\n (value.startsWith(\"Σ\") || value.startsWith(\"[\"))\n ) {\n return value;\n }\n const number =\n typeof value === \"number\"\n ? value\n : typeof value === \"string\"\n ? parseFloat(value)\n : undefined;\n return roundDecimal(number, align, decimals, zeroPad, alignOnDecimals);\n };\n }\n};\n\nconst mapFormatter = (map: ColumnTypeValueMap) => {\n return (value: unknown) => {\n return map[value as string] ?? \"\";\n };\n};\n\nexport const getValueFormatter = (\n column: ColumnDescriptor,\n serverDataType = column.serverDataType,\n): ValueFormatter => {\n if (isDateTimeDataValue(column)) {\n return dateFormatter(column);\n }\n\n const { type } = column;\n if (isTypeDescriptor(type) && isMappedValueTypeRenderer(type?.renderer)) {\n return mapFormatter(type.renderer.map);\n } else if (serverDataType === \"string\" || serverDataType === \"char\") {\n return (value: unknown) => value as string;\n } else if (serverDataType === \"double\") {\n return numericFormatter(column);\n }\n return defaultValueFormatter;\n};\n\n/**\n * Lowercases a string and returns as Lowercase typescript type\n *\n * @param str the input string\n * @returns str converted to Lowercase\n */\nexport const lowerCase = (str: string) =>\n str.toLowerCase() as Lowercase<string>;\n"],"names":[],"mappings":";;;;;;AAmBA,MAAM,yBAA+C,EAAC;AAEzC,MAAA,qBAAA,GAAwB,CAAC,KAAA,KACpC,KAAS,IAAA,IAAA,GAAO,EAAK,GAAA,OAAO,KAAU,KAAA,QAAA,GAAW,KAAQ,GAAA,KAAA,CAAM,QAAS;AAE1E,MAAM,aAAA,GAAgB,CAAC,MAAwC,KAAA;AAC7D,EAAM,MAAA,OAAA,GAAU,eAAgB,CAAA,MAAA,CAAO,IAAI,CAAA;AAC3C,EAAM,MAAA,SAAA,GAAY,WAAW,OAAO,CAAA;AAEpC,EAAA,OAAO,CAAC,KAAmB,KAAA;AACzB,IAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,KAAA,KAAU,CAAG,EAAA;AAC5C,MAAA,OAAO,SAAU,CAAA,IAAI,IAAK,CAAA,KAAK,CAAC,CAAA;AAAA,KAC3B,MAAA;AACL,MAAO,OAAA,EAAA;AAAA;AACT,GACF;AACF,CAAA;AAEO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,KAAQ,GAAA,OAAA;AAAA,EACR;AACF,CAAiC,KAAA;AAC/B,EAAA,IAAI,IAAS,KAAA,KAAA,CAAA,IAAa,OAAO,IAAA,KAAS,QAAU,EAAA;AAClD,IAAO,OAAA,qBAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA;AAAA,MACJ,eAAkB,GAAA,KAAA;AAAA,MAClB,QAAA;AAAA,MACA,OAAU,GAAA;AAAA,KACZ,GAAI,KAAK,UAAc,IAAA,sBAAA;AACvB,IAAA,OAAO,CAAC,KAAmB,KAAA;AACzB,MACE,IAAA,OAAO,KAAU,KAAA,QAAA,KAChB,KAAM,CAAA,UAAA,CAAW,QAAG,CAAK,IAAA,KAAA,CAAM,UAAW,CAAA,GAAG,CAC9C,CAAA,EAAA;AACA,QAAO,OAAA,KAAA;AAAA;AAET,MAAM,MAAA,MAAA,GACJ,OAAO,KAAA,KAAU,QACb,GAAA,KAAA,GACA,OAAO,KAAU,KAAA,QAAA,GACf,UAAW,CAAA,KAAK,CAChB,GAAA,KAAA,CAAA;AACR,MAAA,OAAO,YAAa,CAAA,MAAA,EAAQ,KAAO,EAAA,QAAA,EAAU,SAAS,eAAe,CAAA;AAAA,KACvE;AAAA;AAEJ;AAEA,MAAM,YAAA,GAAe,CAAC,GAA4B,KAAA;AAChD,EAAA,OAAO,CAAC,KAAmB,KAAA;AACzB,IAAO,OAAA,GAAA,CAAI,KAAe,CAAK,IAAA,EAAA;AAAA,GACjC;AACF,CAAA;AAEO,MAAM,iBAAoB,GAAA,CAC/B,MACA,EAAA,cAAA,GAAiB,OAAO,cACL,KAAA;AACnB,EAAI,IAAA,mBAAA,CAAoB,MAAM,CAAG,EAAA;AAC/B,IAAA,OAAO,cAAc,MAAM,CAAA;AAAA;AAG7B,EAAM,MAAA,EAAE,MAAS,GAAA,MAAA;AACjB,EAAA,IAAI,iBAAiB,IAAI,CAAA,IAAK,yBAA0B,CAAA,IAAA,EAAM,QAAQ,CAAG,EAAA;AACvE,IAAO,OAAA,YAAA,CAAa,IAAK,CAAA,QAAA,CAAS,GAAG,CAAA;AAAA,GAC5B,MAAA,IAAA,cAAA,KAAmB,QAAY,IAAA,cAAA,KAAmB,MAAQ,EAAA;AACnE,IAAA,OAAO,CAAC,KAAmB,KAAA,KAAA;AAAA,GAC7B,MAAA,IAAW,mBAAmB,QAAU,EAAA;AACtC,IAAA,OAAO,iBAAiB,MAAM,CAAA;AAAA;AAEhC,EAAO,OAAA,qBAAA;AACT;AAQO,MAAM,SAAY,GAAA,CAAC,GACxB,KAAA,GAAA,CAAI,WAAY;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUniqueId.js","sources":["../../../../src/getUniqueId.ts"],"sourcesContent":["export const getUniqueId = () => `hw-${Math.round(Math.random() * 1e5)}`;\n"],"names":[],"mappings":"AAAa,MAAA,WAAA,GAAc,MAAM,CAAM,GAAA,EAAA,IAAA,CAAK,MAAM,IAAK,CAAA,MAAA,EAAW,GAAA,GAAG,CAAC,CAAA;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-utils.js","sources":["../../../../src/group-utils.ts"],"sourcesContent":["import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { VuuGroupBy } from \"@vuu-ui/vuu-protocol-types\";\n\nexport function addGroupColumn(groupBy: VuuGroupBy, column: ColumnDescriptor) {\n if (groupBy.length > 0) {\n return groupBy.concat(column.name);\n } else {\n return [column.name];\n }\n}\n\nexport const removeGroupColumn = (\n groupBy: VuuGroupBy,\n column: ColumnDescriptor,\n) => groupBy.filter((colName) => colName !== column.name);\n\nexport type ColumnGroupStatus =\n | \"no-groupby\"\n | \"single-groupby-other-column\"\n | \"single-groupby\"\n | \"multi-groupby-other-columns\"\n | \"multi-groupby-includes-column\";\n\n/**\n * Given a VuuGroupby definition and a column, determine whether the given column\n * is included in the grouping and if so, in what position/direction.\n */\nexport const getGroupStatus = (\n columnName: string,\n groupBy?: VuuGroupBy,\n): ColumnGroupStatus => {\n if (groupBy === undefined || groupBy.length === 0) {\n return \"no-groupby\";\n } else {\n const indexPos = groupBy.indexOf(columnName);\n if (indexPos === -1) {\n return groupBy.length === 1\n ? \"single-groupby-other-column\"\n : \"multi-groupby-other-columns\";\n } else {\n return groupBy.length === 1\n ? \"single-groupby\"\n : \"single-groupby-other-column\";\n }\n }\n};\n"],"names":[],"mappings":"AAGgB,SAAA,cAAA,CAAe,SAAqB,MAA0B,EAAA;AAC5E,EAAI,IAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACtB,IAAO,OAAA,OAAA,CAAQ,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA;AAAA,GAC5B,MAAA;AACL,IAAO,OAAA,CAAC,OAAO,IAAI,CAAA;AAAA;AAEvB;AAEa,MAAA,iBAAA,GAAoB,CAC/B,OAAA,EACA,MACG,KAAA,OAAA,CAAQ,OAAO,CAAC,OAAA,KAAY,OAAY,KAAA,MAAA,CAAO,IAAI;AAa3C,MAAA,cAAA,GAAiB,CAC5B,UAAA,EACA,OACsB,KAAA;AACtB,EAAA,IAAI,OAAY,KAAA,KAAA,CAAA,IAAa,OAAQ,CAAA,MAAA,KAAW,CAAG,EAAA;AACjD,IAAO,OAAA,YAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,QAAA,GAAW,OAAQ,CAAA,OAAA,CAAQ,UAAU,CAAA;AAC3C,IAAA,IAAI,aAAa,CAAI,CAAA,EAAA;AACnB,MAAO,OAAA,OAAA,CAAQ,MAAW,KAAA,CAAA,GACtB,6BACA,GAAA,6BAAA;AAAA,KACC,MAAA;AACL,MAAO,OAAA,OAAA,CAAQ,MAAW,KAAA,CAAA,GACtB,gBACA,GAAA,6BAAA;AAAA;AACN;AAEJ;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-utils.js","sources":["../../../../src/html-utils.ts"],"sourcesContent":["export const createEl = (\n elementType: \"div\" | \"p\" | \"span\",\n className?: string,\n textContent?: string,\n): HTMLElement => {\n const el = document.createElement(elementType);\n if (className) {\n el.className = className;\n }\n if (textContent) {\n el.textContent = textContent;\n }\n return el;\n};\n\nexport const getFocusableElement = (\n el: HTMLElement | null,\n tabIndex?: number,\n) => {\n if (el) {\n if (el.hasAttribute(\"tabindex\")) {\n const rootTabIndex = parseInt(el.getAttribute(\"tabindex\") as string);\n if (\n !isNaN(rootTabIndex) &&\n (tabIndex === undefined || rootTabIndex === tabIndex)\n ) {\n return el;\n }\n }\n const focusableEl =\n typeof tabIndex === \"number\"\n ? (el.querySelector(`[tabindex=\"${tabIndex}\"]`) as HTMLElement)\n : (el.querySelector(\"[tabindex]\") as HTMLElement);\n if (focusableEl) {\n return focusableEl as HTMLElement;\n }\n }\n};\n\nexport const getElementDataIndex = (el: HTMLElement | null) => {\n if (el) {\n const index = parseInt(el.dataset.index || \"\");\n if (!isNaN(index)) {\n return index;\n }\n }\n return -1;\n};\n\nexport function queryClosest<T extends HTMLElement = HTMLElement>(\n el: HTMLElement | EventTarget | null,\n cssQueryString: string,\n throwIfNotFound?: false,\n): T | null;\nexport function queryClosest<T extends HTMLElement = HTMLElement>(\n el: HTMLElement | EventTarget | null,\n cssQueryString: string,\n throwIfNotFound: true,\n): T;\nexport function queryClosest<T extends HTMLElement = HTMLElement>(\n el: HTMLElement | EventTarget | null,\n cssQueryString: string,\n throwIfNotFound?: boolean,\n) {\n if (el) {\n const result = (el as HTMLElement).closest(cssQueryString) as T;\n if (result) {\n return result;\n }\n }\n if (throwIfNotFound) {\n throw Error(`no element found to match '${cssQueryString}'`);\n } else {\n return null;\n }\n}\n\nexport const getClosest = (el: HTMLElement, dataProperty: string) =>\n queryClosest(el, `[data-${dataProperty}]`);\n\nexport const getClosestIndexItem = (el: HTMLElement) => getClosest(el, \"index\");\n\nexport function getElementByDataIndex(\n c: HTMLElement | null | undefined,\n i: number | string,\n throwIfNotFound: true,\n): HTMLElement;\nexport function getElementByDataIndex(\n c: HTMLElement | null | undefined,\n i: number | string,\n throwIfNotFound?: false,\n): HTMLElement | undefined;\nexport function getElementByDataIndex(\n container: HTMLElement | null | undefined,\n index: number | string,\n throwIfNotFound = false,\n) {\n if (container == null && throwIfNotFound) {\n throw Error(\"html-utils getElementByDataIndex, container is null\");\n }\n const element = container?.querySelector(\n `[data-index=\"${index}\"]`,\n ) as HTMLElement;\n if (element) {\n return element;\n } else if (throwIfNotFound) {\n throw Error(\n \"html-utils getElementByDataIndex, Item not found with data-index='${index}'\",\n );\n } else {\n return undefined;\n }\n}\n\nexport const focusFirstFocusableElement = (\n el: HTMLElement | null,\n tabIndex?: number,\n) => {\n // TODO test el for focusable\n requestAnimationFrame(() => {\n const focusableElement = getFocusableElement(el, tabIndex);\n if (focusableElement) {\n focusableElement.focus();\n }\n });\n};\n\nexport const isSelectableElement = (el?: HTMLElement | null) => {\n const item = el?.closest(\"[data-index]\") as HTMLElement;\n if (\n !item ||\n item.ariaDisabled ||\n item.dataset.selectable === \"false\" ||\n item.querySelector('[data-selectable=\"false\"],[aria-disabled=\"true\"]')\n ) {\n return false;\n } else {\n return true;\n }\n};\n\nexport const isInputElement = (\n el: HTMLElement | EventTarget | null,\n): el is HTMLInputElement => {\n if (el === null) {\n return false;\n } else {\n return (el as HTMLElement).tagName === \"INPUT\";\n }\n};\n\nexport const isDateInput = (\n el: HTMLElement | EventTarget | null,\n): el is HTMLInputElement =>\n isInputElement(el) && el.classList.contains(\"saltDateInput-input\");\n\nexport const hasOpenOptionList = (el: HTMLElement | EventTarget | null) => {\n if (el !== null) {\n return (el as HTMLElement).ariaExpanded === \"true\";\n }\n};\n\nlet size: number;\n\nexport function getScrollbarSize() {\n if (size === undefined) {\n let outer: HTMLElement | null = document.createElement(\"div\");\n outer.className = \"scrollable-content\";\n outer.style.width = \"50px\";\n outer.style.height = \"50px\";\n outer.style.overflowY = \"scroll\";\n outer.style.position = \"absolute\";\n outer.style.top = \"-200px\";\n outer.style.left = \"-200px\";\n const inner = document.createElement(\"div\");\n inner.style.height = \"100px\";\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n document.body.appendChild(outer);\n const outerWidth = outer.offsetWidth;\n const innerWidth = inner.offsetWidth;\n document.body.removeChild(outer);\n size = outerWidth - innerWidth;\n outer = null;\n }\n\n return size;\n}\n\nexport type MouseEventTypes = \"dblclick\" | \"click\";\nexport type KeyboardEventTypes = \"keydown\" | \"keypress\" | \"keyup\";\n\nexport const dispatchMouseEvent = (el: HTMLElement, type: MouseEventTypes) => {\n const evt = new MouseEvent(type, {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n el.dispatchEvent(evt);\n};\nexport const dispatchKeyboardEvent = (\n el: HTMLElement,\n type: KeyboardEventTypes,\n key: string,\n) => {\n const evt = new KeyboardEvent(type, {\n key,\n view: window,\n bubbles: true,\n cancelable: true,\n });\n el.dispatchEvent(evt);\n};\n\nexport type VuuDomEventType = \"vuu-commit\" | \"vuu-dropped\";\n\nexport const dispatchCustomEvent = (el: HTMLElement, type: VuuDomEventType) => {\n const evt = new Event(type, {\n bubbles: true,\n cancelable: true,\n });\n el.dispatchEvent(evt);\n};\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ export { useSortable } from '../../../node_modules/@dnd-kit/react/sortable.js';
2
+ export { DragDropProvider, DragOverlay } from '@dnd-kit/react';
3
+ export { KeyboardSensor, PointerSensor } from '../../../node_modules/@dnd-kit/dom/index.js';
4
+ export { RestrictToHorizontalAxis } from '../../../node_modules/@dnd-kit/abstract/modifiers.js';
1
5
  export { getAddedItems, getMissingItems, itemsChanged, itemsOrOrderChanged, moveItem, moveItemDeprecated, partition } from './array-utils.js';
2
6
  export { boxContainsPoint, getCenteredBox, getPositionWithinBox, isGridLayoutSplitDirection, pointPositionWithinRect } from './box-utils.js';
3
7
  export { AggregationType, addColumnToSubscribedColumns, applyDefaultColumnConfig, applyGroupByToColumns, applyRuntimeColumnWidthsToConfig, applySortToColumns, applyWidthToColumns, buildColumnMap, checkConfirmationPending, dataAndColumnUnchanged, dataColumnAndKeyUnchanged, dataSourceRowToDataRowDto, existingSort, extractGroupColumn, findColumn, flattenColumnGroup, fromServerDataType, getCalculatedColumnDetails, getColumnLabel, getColumnName, getColumnStyle, getColumnsInViewport, getDefaultAlignment, getDefaultColumnType, getGroupIcon, getGroupValue, getRuntimeColumnWidth, getTableHeadings, getTypeFormattingFromColumn, hasCustomRenderer, hasHeadings, hasValidationRules, isCalculatedColumn, isColumnTypeRenderer, isDataLoading, isDateTimeDataValue, isGroupColumn, isJsonAttribute, isJsonColumn, isJsonGroup, isLookupRenderer, isMappedValueTypeRenderer, isNotHidden, isNumericColumn, isPinned, isResizing, isStringColumn, isTextColumn, isTypeDescriptor, isValidColumnAlignment, isValidPinLocation, isValueListRenderer, isVuuColumnDataType, mapSortCriteria, measurePinnedColumns, metadataKeys, moveColumnTo, projectUpdates, removeSort, reorderColumnItems, replaceColumn, setAggregations, setCalculatedColumnExpression, setCalculatedColumnName, setCalculatedColumnType, sortPinnedColumns, subscribedOnly, toColumnDescriptor, toColumnName, toDataSourceColumns, updateColumn, updateColumnFormatting, updateColumnRenderProps, updateColumnType, visibleColumnAtIndex } from './column-utils.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-utils.js","sources":["../../../../src/input-utils.ts"],"sourcesContent":["export const isCharacterKey = (key: string) => key.length === 1;\n\nexport const isQuoteKey = (evt: KeyboardEvent) => {\n return evt.key === '\"' || evt.key === \"'\";\n};\n"],"names":[],"mappings":"AAAO,MAAM,cAAiB,GAAA,CAAC,GAAgB,KAAA,GAAA,CAAI,MAAW,KAAA;AAEjD,MAAA,UAAA,GAAa,CAAC,GAAuB,KAAA;AAChD,EAAA,OAAO,GAAI,CAAA,GAAA,KAAQ,GAAO,IAAA,GAAA,CAAI,GAAQ,KAAA,GAAA;AACxC;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invariant.js","sources":["../../../../src/invariant.ts"],"sourcesContent":["export function invariant(condition: boolean, message: string) {\n if (!condition) {\n const error = new Error(message);\n error.name = \"Invariant Violation\";\n // TODO what is framesToPop?\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n"],"names":[],"mappings":"AAAgB,SAAA,SAAA,CAAU,WAAoB,OAAiB,EAAA;AAC7D,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAM,MAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,OAAO,CAAA;AAC/B,IAAA,KAAA,CAAM,IAAO,GAAA,qBAAA;AAIb,IAAA,KAAA,CAAM,WAAc,GAAA,CAAA;AACpB,IAAM,MAAA,KAAA;AAAA;AAEV;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itemToString.js","sources":["../../../../src/itemToString.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ItemToStringFunction = (item: any) => string;\n\nconst isPlainObject = (obj: unknown) =>\n Object.prototype.toString.call(obj) === \"[object Object]\";\n\nexport function itemToString(item: unknown): string {\n if (typeof item === \"string\") {\n return item;\n } else if (!isPlainObject(item)) {\n return String(item);\n }\n\n if (Object.prototype.hasOwnProperty.call(item, \"label\")) {\n return String((item as { label?: string }).label);\n }\n\n console.warn(\n [\n \"itemToString: you've likely forgotten to set the label prop on the item object.\",\n \"You can also provide your own `itemToString` implementation.\",\n ].join(\"\\n\")\n );\n\n return \"\";\n}\n"],"names":[],"mappings":"AAGA,MAAM,aAAA,GAAgB,CAAC,GACrB,KAAA,MAAA,CAAO,UAAU,QAAS,CAAA,IAAA,CAAK,GAAG,CAAM,KAAA,iBAAA;AAEnC,SAAS,aAAa,IAAuB,EAAA;AAClD,EAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,IAAO,OAAA,IAAA;AAAA,GACE,MAAA,IAAA,CAAC,aAAc,CAAA,IAAI,CAAG,EAAA;AAC/B,IAAA,OAAO,OAAO,IAAI,CAAA;AAAA;AAGpB,EAAA,IAAI,OAAO,SAAU,CAAA,cAAA,CAAe,IAAK,CAAA,IAAA,EAAM,OAAO,CAAG,EAAA;AACvD,IAAO,OAAA,MAAA,CAAQ,KAA4B,KAAK,CAAA;AAAA;AAGlD,EAAQ,OAAA,CAAA,IAAA;AAAA,IACN;AAAA,MACE,iFAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI;AAAA,GACb;AAEA,EAAO,OAAA,EAAA;AACT;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-utils.js","sources":["../../../../src/json-utils.ts"],"sourcesContent":["import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n DataValueTypeDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { metadataKeys } from \"./column-utils\";\n\nconst { COUNT } = metadataKeys;\n\nexport type JsonData =\n | {\n [key: string]: unknown;\n }\n | JsonData[];\n\ntype Index = { value: number };\n\ntype CellValue = {\n attribute: string;\n attributeValue: JsonData | VuuRowDataItemType | null;\n isLeaf: boolean;\n};\n\nconst isJsonData = (value: unknown): value is JsonData =>\n typeof value === \"object\" && value !== null;\n\nconst vuuRowDataItemTypes = [\"boolean\", \"number\", \"string\"];\nconst isVuuRowDataItem = (value: unknown): value is VuuRowDataItemType =>\n vuuRowDataItemTypes.includes(typeof value);\n\nconst getCellValue = (\n attribute: string,\n attributeValue: unknown,\n): CellValue => {\n if (Array.isArray(attributeValue)) {\n return {\n attribute: `${attribute}[`,\n attributeValue: \"\",\n isLeaf: false,\n };\n } else if (isJsonData(attributeValue)) {\n return {\n attribute: `${attribute}{`,\n attributeValue: \"\",\n isLeaf: false,\n };\n } else if (attributeValue === undefined) {\n return {\n attribute,\n attributeValue: \"undefined\",\n isLeaf: true,\n };\n } else if (isVuuRowDataItem(attributeValue)) {\n return {\n attribute,\n attributeValue,\n isLeaf: true,\n };\n } else {\n throw Error(`unsupported type ${typeof attributeValue} in JSON`);\n }\n};\n\nconst jsonColumnType: DataValueTypeDescriptor = {\n name: \"json\",\n renderer: {\n name: \"json\",\n },\n};\n\nexport const jsonToDataSourceRows = (\n json: JsonData,\n): [ColumnDescriptor[], DataSourceRow[]] => {\n const cols: ColumnDescriptor[] = [];\n\n cols.push(\n {\n className: \"vuuJsonCell\",\n name: \"Level 1\",\n type: jsonColumnType,\n },\n {\n className: \"vuuJsonCell\",\n name: \"Level 2\",\n type: jsonColumnType,\n },\n );\n\n const rows: DataSourceRow[] = [];\n\n addChildValues(rows, json, cols);\n return [cols, rows];\n};\n\nconst addChildValues = (\n rows: DataSourceRow[],\n json: JsonData,\n cols: ColumnDescriptor[],\n index: Index = { value: 0 },\n keyBase = \"$root\",\n depth = 0,\n): [number, number] => {\n let leafCount = 0;\n let rowCount = 0;\n if (depth === cols.length - 1) {\n cols.push({\n className: \"vuuJsonCell\",\n name: `Level ${cols.length + 1}`,\n hidden: true,\n type: jsonColumnType,\n });\n }\n const columnEntries = Object.entries(json);\n for (let i = 0; i < columnEntries.length; i++, index.value += 1) {\n const [key, value] = columnEntries[i];\n const { attribute, attributeValue, isLeaf } = getCellValue(key, value);\n const blanks = Array(depth).fill(\"\");\n const fullKey = `${keyBase}|${key}`;\n // prettier-ignore\n const row = [index.value, index.value, isLeaf,false,depth,0,fullKey,0, ...blanks, attribute, attributeValue ] as DataSourceRow\n rows.push(row);\n rowCount += 1;\n\n if (isJsonData(value)) {\n const [nestedLeafCount, nestedRowCount] = addChildValues(\n rows,\n value,\n cols,\n { value: index.value + 1 },\n fullKey,\n depth + 1,\n );\n row[COUNT] = nestedLeafCount;\n leafCount += nestedLeafCount;\n rowCount += nestedRowCount;\n index.value += nestedRowCount;\n } else {\n leafCount += 1;\n }\n }\n\n return [leafCount, rowCount];\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard-utils.js","sources":["../../../../src/keyboard-utils.ts"],"sourcesContent":["export const ArrowUp = \"ArrowUp\";\nexport const ArrowDown = \"ArrowDown\";\nexport const ArrowLeft = \"ArrowLeft\";\nexport const ArrowRight = \"ArrowRight\";\nexport const Enter = \"Enter\";\nexport const Escape = \"Escape\";\nexport const Home = \"Home\";\nexport const End = \"End\";\nexport const PageUp = \"PageUp\";\nexport const PageDown = \"PageDown\";\nexport const Space = \" \";\nexport const Tab = \"Tab\";\n\nexport type ArrowKey = \"ArrowUp\" | \"ArrowDown\" | \"ArrowLeft\" | \"ArrowRight\";\nexport type PageKey = \"Home\" | \"End\" | \"PageUp\" | \"PageDown\";\n\nexport const isArrowKey = (key: string): key is ArrowKey =>\n key === \"ArrowUp\" ||\n key === \"ArrowDown\" ||\n key === \"ArrowLeft\" ||\n key === \"ArrowRight\";\n"],"names":[],"mappings":"AAAO,MAAM,OAAU,GAAA;AAChB,MAAM,SAAY,GAAA;AAClB,MAAM,SAAY,GAAA;AAClB,MAAM,UAAa,GAAA;AACnB,MAAM,KAAQ,GAAA;AACd,MAAM,MAAS,GAAA;AACf,MAAM,IAAO,GAAA;AACb,MAAM,GAAM,GAAA;AACZ,MAAM,MAAS,GAAA;AACf,MAAM,QAAW,GAAA;AACjB,MAAM,KAAQ,GAAA;AACd,MAAM,GAAM,GAAA;AAKN,MAAA,UAAA,GAAa,CAAC,GACzB,KAAA,GAAA,KAAQ,aACR,GAAQ,KAAA,WAAA,IACR,GAAQ,KAAA,WAAA,IACR,GAAQ,KAAA;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyset.js","sources":["../../../../src/keyset.ts"],"sourcesContent":["import { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\n\nconst EMPTY: number[] = [];\nexport class KeySet {\n private keys = new Map<number, number>();\n private nextKeyValue = 0;\n private range: VuuRange;\n\n constructor(range: VuuRange) {\n this.range = range;\n this.init(range);\n }\n\n public next(free: number[] = EMPTY): number {\n if (free.length > 0) {\n return free.shift() as number;\n } else {\n return this.nextKeyValue++;\n }\n }\n\n private init({ from, to }: VuuRange) {\n this.keys.clear();\n this.nextKeyValue = 0;\n\n for (let rowIndex = from; rowIndex < to; rowIndex++) {\n const nextKeyValue = this.next();\n this.keys.set(rowIndex, nextKeyValue);\n }\n\n return true;\n }\n\n public reset(range: VuuRange) {\n const { from, to } = range;\n\n const newSize = to - from;\n const currentSize = this.range.to - this.range.from;\n this.range = range;\n\n if (currentSize > newSize) {\n // We re-initialize the range when the range size reduces, even though this will\n // potentially re-render all items.\n return this.init(range);\n }\n\n const freeKeys: number[] = [];\n\n this.keys.forEach((keyValue, rowIndex) => {\n if (rowIndex < from || rowIndex >= to) {\n freeKeys.push(keyValue);\n this.keys.delete(rowIndex);\n }\n });\n\n for (let rowIndex = from; rowIndex < to; rowIndex++) {\n if (!this.keys.has(rowIndex)) {\n const nextKeyValue = this.next(freeKeys);\n this.keys.set(rowIndex, nextKeyValue);\n }\n }\n\n return false;\n }\n\n public keyFor(rowIndex: number): number {\n const key = this.keys.get(rowIndex);\n if (key === undefined) {\n console.log(`key not found\n keys: ${this.toDebugString()}\n `);\n throw Error(`KeySet, no key found for rowIndex ${rowIndex}`);\n }\n return key;\n }\n\n public toDebugString() {\n return `${this.keys.size} keys\n${Array.from(this.keys.entries())\n .sort(([key1], [key2]) => key1 - key2)\n .map<string>(([k, v]) => `${k}=>${v}`)\n .join(\",\")}]\\n`;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-utils.js","sources":["../../../../src/list-utils.ts"],"sourcesContent":["import type { ListOption } from \"@vuu-ui/vuu-table-types\";\n\nexport const getSelectedOption = (\n values: ListOption[],\n selectedValue: string | number | undefined,\n) => {\n if (selectedValue === undefined) {\n return undefined;\n }\n return values.find((option) => option.value === selectedValue);\n};\n"],"names":[],"mappings":"AAEa,MAAA,iBAAA,GAAoB,CAC/B,MAAA,EACA,aACG,KAAA;AACH,EAAA,IAAI,kBAAkB,KAAW,CAAA,EAAA;AAC/B,IAAO,OAAA,KAAA,CAAA;AAAA;AAET,EAAA,OAAO,OAAO,IAAK,CAAA,CAAC,MAAW,KAAA,MAAA,CAAO,UAAU,aAAa,CAAA;AAC/D;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-storage-utils.js","sources":["../../../../src/local-storage-utils.ts"],"sourcesContent":["export const getLocalEntity = <T>(url: string): T | undefined => {\n const data = localStorage.getItem(url);\n return data ? JSON.parse(data) : undefined;\n};\n\nexport const getAllLocalEntity = <T>(url: string): T[] =>\n Object.entries(localStorage)\n .filter(([key]) => key.includes(url))\n .map(([, value]) => JSON.parse(value) as T);\n\nexport const saveLocalEntity = <T>(url: string, data: T): T | undefined => {\n try {\n localStorage.setItem(url, JSON.stringify(data));\n return data;\n } catch {\n return undefined;\n }\n};\n"],"names":[],"mappings":"AAAa,MAAA,cAAA,GAAiB,CAAI,GAA+B,KAAA;AAC/D,EAAM,MAAA,IAAA,GAAO,YAAa,CAAA,OAAA,CAAQ,GAAG,CAAA;AACrC,EAAA,OAAO,IAAO,GAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAI,GAAA,KAAA,CAAA;AACnC;AAEa,MAAA,iBAAA,GAAoB,CAAI,GAAA,KACnC,MAAO,CAAA,OAAA,CAAQ,YAAY,CAAA,CACxB,MAAO,CAAA,CAAC,CAAC,GAAG,CAAM,KAAA,GAAA,CAAI,SAAS,GAAG,CAAC,CACnC,CAAA,GAAA,CAAI,CAAC,GAAG,KAAK,CAAM,KAAA,IAAA,CAAK,KAAM,CAAA,KAAK,CAAM;AAEjC,MAAA,eAAA,GAAkB,CAAI,GAAA,EAAa,IAA2B,KAAA;AACzE,EAAI,IAAA;AACF,IAAA,YAAA,CAAa,OAAQ,CAAA,GAAA,EAAK,IAAK,CAAA,SAAA,CAAU,IAAI,CAAC,CAAA;AAC9C,IAAO,OAAA,IAAA;AAAA,GACD,CAAA,MAAA;AACN,IAAO,OAAA,KAAA,CAAA;AAAA;AAEX;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging-utils.js","sources":["../../../../src/logging-utils.ts"],"sourcesContent":["import { getCookieValue } from \"./cookie-utils\";\n\ndeclare global {\n const loggingSettings: loggingSettings;\n}\n\nexport interface LogFn {\n (message?: unknown, ...optionalParams: unknown[]): void;\n}\nexport interface AssertLogFn {\n (condition: boolean, message?: unknown, errorMessaage?: unknown): void;\n}\n\nexport interface TableLogFn {\n (properties?: object): void;\n}\n\ntype loggingSettings = {\n loggingLevel: LogLevel;\n};\n\nexport interface Logger {\n warn: LogFn;\n error: LogFn;\n debug: LogFn;\n info: LogFn;\n}\n\nexport type LogLevel = keyof Logger;\n\nconst logLevels = [\"error\", \"warn\", \"info\", \"debug\"];\nconst isValidLogLevel = (value: unknown): value is LogLevel =>\n typeof value === \"string\" && logLevels.includes(value);\n\nconst DEFAULT_LOG_LEVEL: LogLevel = \"error\";\n\nexport type BuildEnv = \"production\" | \"development\";\n\nconst NO_OP = () => undefined;\n\nconst DEFAULT_DEBUG_LEVEL: LogLevel =\n process.env.NODE_ENV === \"production\" ? \"error\" : \"info\";\n\nconst { loggingLevel = DEFAULT_DEBUG_LEVEL } = getLoggingSettings();\n// typeof loggingSettings !== \"undefined\" ? loggingSettings : {};\n// const { loggingLevel = DEFAULT_DEBUG_LEVEL } =\n// typeof loggingSettings !== \"undefined\" ? loggingSettings : {};\n\nexport const logger = (category: string) => {\n const debugEnabled = loggingLevel === \"debug\";\n const infoEnabled = debugEnabled || loggingLevel === \"info\";\n const warnEnabled = infoEnabled || loggingLevel === \"warn\";\n const errorEnabled = warnEnabled || loggingLevel === \"error\";\n\n const info = infoEnabled\n ? (message: string) => console.info(`[${category}] ${message}`)\n : NO_OP;\n const warn = warnEnabled\n ? (message: string) => console.warn(`[${category}] ${message}`)\n : NO_OP;\n const debug = debugEnabled\n ? (message: string) => console.debug(`[${category}] ${message}`)\n : NO_OP;\n const error = errorEnabled\n ? (message: string) => console.error(`[${category}] ${message}`)\n : NO_OP;\n\n if (process.env.NODE_ENV === \"production\") {\n return {\n errorEnabled,\n error,\n };\n } else {\n return {\n debugEnabled,\n infoEnabled,\n warnEnabled,\n errorEnabled,\n info,\n warn,\n debug,\n error,\n };\n }\n};\n\nfunction getLoggingSettings() {\n if (typeof loggingSettings !== \"undefined\") {\n return loggingSettings;\n } else {\n return {\n loggingLevel: getLoggingLevelFromCookie(),\n };\n }\n}\n\nfunction getLoggingLevelFromCookie(): LogLevel {\n const value = getCookieValue(\"vuu-logging-level\");\n if (isValidLogLevel(value)) {\n return value;\n } else {\n return DEFAULT_LOG_LEVEL;\n }\n}\n\nexport const getLoggingConfigForWorker = () => {\n return `const loggingSettings = { loggingLevel: \"${getLoggingLevelFromCookie()}\"};`;\n};\n\nexport const logUnhandledMessage = (\n message: never,\n context = \"[logUnhandledStruct]\",\n) => {\n console.log(`${context} ${JSON.stringify(message)}`);\n};\n"],"names":[],"mappings":";;AA8BA,MAAM,SAAY,GAAA,CAAC,OAAS,EAAA,MAAA,EAAQ,QAAQ,OAAO,CAAA;AACnD,MAAM,eAAA,GAAkB,CAAC,KACvB,KAAA,OAAO,UAAU,QAAY,IAAA,SAAA,CAAU,SAAS,KAAK,CAAA;AAEvD,MAAM,iBAA8B,GAAA,OAAA;AAIpC,MAAM,QAAQ,MAAM,KAAA,CAAA;AAEpB,MAAM,mBACJ,GAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,eAAe,OAAU,GAAA,MAAA;AAEpD,MAAM,EAAE,YAAA,GAAe,mBAAoB,EAAA,GAAI,kBAAmB,EAAA;AAKrD,MAAA,MAAA,GAAS,CAAC,QAAqB,KAAA;AAC1C,EAAA,MAAM,eAAe,YAAiB,KAAA,OAAA;AACtC,EAAM,MAAA,WAAA,GAAc,gBAAgB,YAAiB,KAAA,MAAA;AACrD,EAAM,MAAA,WAAA,GAAc,eAAe,YAAiB,KAAA,MAAA;AACpD,EAAM,MAAA,YAAA,GAAe,eAAe,YAAiB,KAAA,OAAA;AAErD,EAAM,MAAA,IAAA,GAAO,WACT,GAAA,CAAC,OAAoB,KAAA,OAAA,CAAQ,IAAK,CAAA,CAAA,CAAA,EAAI,QAAQ,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAC5D,GAAA,KAAA;AACJ,EAAM,MAAA,IAAA,GAAO,WACT,GAAA,CAAC,OAAoB,KAAA,OAAA,CAAQ,IAAK,CAAA,CAAA,CAAA,EAAI,QAAQ,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAC5D,GAAA,KAAA;AACJ,EAAM,MAAA,KAAA,GAAQ,YACV,GAAA,CAAC,OAAoB,KAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,CAAA,EAAI,QAAQ,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAC7D,GAAA,KAAA;AACJ,EAAM,MAAA,KAAA,GAAQ,YACV,GAAA,CAAC,OAAoB,KAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,CAAA,EAAI,QAAQ,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAC7D,GAAA,KAAA;AAEJ,EAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,IAAO,OAAA;AAAA,MACL,YAAA;AAAA,MACA;AAAA,KACF;AAAA,GACK,MAAA;AACL,IAAO,OAAA;AAAA,MACL,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACF;AAAA;AAEJ;AAEA,SAAS,kBAAqB,GAAA;AAC5B,EAAI,IAAA,OAAO,oBAAoB,WAAa,EAAA;AAC1C,IAAO,OAAA,eAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA;AAAA,MACL,cAAc,yBAA0B;AAAA,KAC1C;AAAA;AAEJ;AAEA,SAAS,yBAAsC,GAAA;AAC7C,EAAM,MAAA,KAAA,GAAQ,eAAe,mBAAmB,CAAA;AAChD,EAAI,IAAA,eAAA,CAAgB,KAAK,CAAG,EAAA;AAC1B,IAAO,OAAA,KAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,iBAAA;AAAA;AAEX;AAEO,MAAM,4BAA4B,MAAM;AAC7C,EAAO,OAAA,CAAA,yCAAA,EAA4C,2BAA2B,CAAA,GAAA,CAAA;AAChF;AAEO,MAAM,mBAAsB,GAAA,CACjC,OACA,EAAA,OAAA,GAAU,sBACP,KAAA;AACH,EAAQ,OAAA,CAAA,GAAA,CAAI,GAAG,OAAO,CAAA,EAAA,EAAK,KAAK,SAAU,CAAA,OAAO,CAAC,CAAE,CAAA,CAAA;AACtD;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-utils.js","sources":["../../../../src/menu-utils.ts"],"sourcesContent":["import {\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n ShowNotificationAction,\n VuuRpcResponse,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport {\n ContextMenuGroupItemDescriptor,\n ContextMenuItemDescriptor,\n} from \"@vuu-ui/vuu-context-menu\";\n\nexport const isGroupMenuItemDescriptor = (\n menuItem?: ContextMenuItemDescriptor,\n): menuItem is ContextMenuGroupItemDescriptor =>\n menuItem !== undefined && \"children\" in menuItem;\n\nexport const isOpenBulkEditResponse = (\n rpcResponse: Partial<VuuRpcResponse>,\n): rpcResponse is MenuRpcResponse<OpenDialogActionWithSchema> =>\n (rpcResponse as MenuRpcResponse).rpcName === \"VP_BULK_EDIT_BEGIN_RPC\";\n\nexport const hasShowNotificationAction = (\n res: Partial<VuuRpcResponse>,\n): res is MenuRpcResponse<ShowNotificationAction> =>\n (res as MenuRpcResponse).action?.type === \"SHOW_NOTIFICATION_ACTION\";\n"],"names":[],"mappings":"AAaO,MAAM,yBAA4B,GAAA,CACvC,QAEA,KAAA,QAAA,KAAa,UAAa,UAAc,IAAA;AAEnC,MAAM,sBAAyB,GAAA,CACpC,WAEC,KAAA,WAAA,CAAgC,OAAY,KAAA;AAExC,MAAM,yBAA4B,GAAA,CACvC,GAEC,KAAA,GAAA,CAAwB,QAAQ,IAAS,KAAA;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-utils.js","sources":["../../../../src/module-utils.ts"],"sourcesContent":["import { ReactElement } from \"react\";\n\nexport type ReactComponent = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props?: any): ReactElement;\n};\n\nexport const isModule = (entity: Module | ReactComponent): entity is Module =>\n entity !== undefined && typeof entity !== \"function\";\n\nexport interface Module<T = ReactComponent> {\n [key: string]: Module<T> | T;\n}\n"],"names":[],"mappings":"AAOO,MAAM,WAAW,CAAC,MAAA,KACvB,MAAW,KAAA,KAAA,CAAA,IAAa,OAAO,MAAW,KAAA;;;;"}
@@ -25,7 +25,6 @@ class MovingWindow {
25
25
  }
26
26
  this.rowCount = rowCount;
27
27
  });
28
- console.log(`[MovingWindow] new (${from}:${to})`);
29
28
  __privateSet(this, _range, new WindowRange(from, to));
30
29
  this.data = new Array(Math.max(0, to - from));
31
30
  this.rowCount = 0;
@@ -51,7 +50,6 @@ class MovingWindow {
51
50
  return __privateGet(this, _range).isWithin(index);
52
51
  }
53
52
  setRange({ from, to }) {
54
- console.log(`[MovingWindow] setRange (${from}:${to})`);
55
53
  if (from !== __privateGet(this, _range).from || to !== __privateGet(this, _range).to) {
56
54
  const [overlapFrom, overlapTo] = __privateGet(this, _range).overlap(from, to);
57
55
  const newData = new Array(Math.max(0, to - from));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moving-window.js","sources":["../../../../src/moving-window.ts"],"sourcesContent":["import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport { metadataKeys } from \"./column-utils\";\nimport { WindowRange } from \"./range-utils\";\nimport { isRowSelectedLast } from \"./selection-utils\";\n\nconst { SELECTED } = metadataKeys;\n\nexport class MovingWindow {\n public data: DataSourceRow[];\n public rowCount = 0;\n #range: WindowRange;\n\n constructor({ from, to }: VuuRange) {\n this.#range = new WindowRange(from, to);\n //internal data is always 0 based, we add range.from to determine an offset\n this.data = new Array(Math.max(0, to - from));\n this.rowCount = 0;\n }\n\n setRowCount = (rowCount: number) => {\n if (rowCount < this.data.length) {\n this.data.length = rowCount;\n }\n\n this.rowCount = rowCount;\n };\n\n add(data: DataSourceRow) {\n const [index] = data;\n if (this.isWithinRange(index)) {\n const internalIndex = index - this.#range.from;\n this.data[internalIndex] = data;\n\n // Hack until we can deal with this more elegantly. When we have a block\n // select operation, first row is selected (and updated via server), then\n // remaining rows are selected when we select the block-end row. We get an\n // update for all rows except first. Because we're extending the select status\n // on the client, we have to adjust the first row selected (its still selected\n // but is no longer the 'last selected row in block')\n // Maybe answer is to apply ALL the selection status code here, not in Viewport\n if (data[SELECTED]) {\n const previousRow = this.data[internalIndex - 1];\n if (isRowSelectedLast(previousRow)) {\n this.data[internalIndex - 1] = previousRow.slice() as DataSourceRow;\n this.data[internalIndex - 1][SELECTED] -= 4;\n }\n }\n }\n }\n\n getAtIndex(index: number) {\n return this.#range.isWithin(index) &&\n this.data[index - this.#range.from] != null\n ? this.data[index - this.#range.from]\n : undefined;\n }\n\n isWithinRange(index: number) {\n return this.#range.isWithin(index);\n }\n\n setRange({ from, to }: VuuRange) {\n if (from !== this.#range.from || to !== this.#range.to) {\n const [overlapFrom, overlapTo] = this.#range.overlap(from, to);\n const newData = new Array(Math.max(0, to - from));\n for (let i = overlapFrom; i < overlapTo; i++) {\n const data = this.getAtIndex(i);\n if (data) {\n const index = i - from;\n newData[index] = data;\n }\n }\n this.data = newData;\n this.#range.from = from;\n this.#range.to = to;\n }\n }\n\n getSelectedRows() {\n return this.data.filter((row) => row[SELECTED] !== 0);\n }\n\n get range() {\n return this.#range;\n }\n\n slice(): DataSourceRow[] {\n const data: DataSourceRow[] = [];\n const { from } = this.range;\n for (let i = 0; i < this.data.length; i++) {\n if (this.data[i]) {\n data.push(this.data[i]);\n } else {\n data.push([from + i, from + i, true, false, 1, 0, \"\", 0]);\n }\n }\n return data;\n }\n\n // TODO make this more performant, see implementation in\n // array-backed-moving-window - use same implementation\n get hasAllRowsWithinRange(): boolean {\n const { from, to } = this.#range;\n\n for (let i = from; i < to; i++) {\n if (this.getAtIndex(i) === undefined) {\n return false;\n }\n }\n return true;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/nanoid/index.ts"],"sourcesContent":["// This is the index.browser.js file from nanoid\n// couldn't get original code to work as npm import without crypro warnings -\n// seemed to be picking up node version, not browser version\n\nexport const uuid = (size = 21): string => {\n let id = '';\n const bytes = crypto.getRandomValues(new Uint8Array(size));\n\n // A compact alternative for `for (var i = 0; i < step; i++)`.\n while (size--) {\n // It is incorrect to use bytes exceeding the alphabet size.\n // The following mask reduces the random byte in the 0-255 value\n // range to the 0-63 value range. Therefore, adding hacks, such\n // as empty string fallback or magic numbers, is unneccessary because\n // the bitmask trims bytes down to the alphabet size.\n const byte = bytes[size] & 63;\n if (byte < 36) {\n // `0-9a-z`\n id += byte.toString(36);\n } else if (byte < 62) {\n // `A-Z`\n id += (byte - 26).toString(36).toUpperCase();\n } else if (byte < 63) {\n id += '_';\n } else {\n id += '-';\n }\n }\n return id;\n};\n"],"names":[],"mappings":"AAIa,MAAA,IAAA,GAAO,CAAC,IAAA,GAAO,EAAe,KAAA;AACzC,EAAA,IAAI,EAAK,GAAA,EAAA;AACT,EAAA,MAAM,QAAQ,MAAO,CAAA,eAAA,CAAgB,IAAI,UAAA,CAAW,IAAI,CAAC,CAAA;AAGzD,EAAA,OAAO,IAAQ,EAAA,EAAA;AAMb,IAAM,MAAA,IAAA,GAAO,KAAM,CAAA,IAAI,CAAI,GAAA,EAAA;AAC3B,IAAA,IAAI,OAAO,EAAI,EAAA;AAEb,MAAM,EAAA,IAAA,IAAA,CAAK,SAAS,EAAE,CAAA;AAAA,KACxB,MAAA,IAAW,OAAO,EAAI,EAAA;AAEpB,MAAA,EAAA,IAAA,CAAO,IAAO,GAAA,EAAA,EAAI,QAAS,CAAA,EAAE,EAAE,WAAY,EAAA;AAAA,KAC7C,MAAA,IAAW,OAAO,EAAI,EAAA;AACpB,MAAM,EAAA,IAAA,GAAA;AAAA,KACD,MAAA;AACL,MAAM,EAAA,IAAA,GAAA;AAAA;AACR;AAEF,EAAO,OAAA,EAAA;AACT;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf-utils.js","sources":["../../../../src/perf-utils.ts"],"sourcesContent":["type VoidFunction = (...args: any) => void;\nexport type PerfFunction<T extends VoidFunction> = (\n ...args: Parameters<T>\n) => void;\n\nexport function debounce<T extends VoidFunction>(\n callback: T,\n timeInterval: number\n): PerfFunction<T> {\n let timeout: number | undefined;\n return (...args: unknown[]) => {\n clearTimeout(timeout);\n timeout = window.setTimeout(() => callback(...args), timeInterval);\n };\n}\n\nexport function throttle<T extends VoidFunction>(\n callback: T,\n limit: number\n): PerfFunction<T> {\n let wait = false;\n let lastArgs: unknown[] | undefined = undefined;\n\n function checkLastArgs() {\n if (lastArgs == undefined) {\n wait = false;\n } else {\n callback(...lastArgs);\n lastArgs = undefined;\n setTimeout(checkLastArgs, limit);\n }\n }\n\n return (...args: unknown[]) => {\n if (wait) {\n lastArgs = args;\n } else {\n callback(...args);\n wait = true;\n setTimeout(checkLastArgs, limit);\n }\n };\n}\n"],"names":[],"mappings":"AAKgB,SAAA,QAAA,CACd,UACA,YACiB,EAAA;AACjB,EAAI,IAAA,OAAA;AACJ,EAAA,OAAO,IAAI,IAAoB,KAAA;AAC7B,IAAA,YAAA,CAAa,OAAO,CAAA;AACpB,IAAA,OAAA,GAAU,OAAO,UAAW,CAAA,MAAM,SAAS,GAAG,IAAI,GAAG,YAAY,CAAA;AAAA,GACnE;AACF;AAEgB,SAAA,QAAA,CACd,UACA,KACiB,EAAA;AACjB,EAAA,IAAI,IAAO,GAAA,KAAA;AACX,EAAA,IAAI,QAAkC,GAAA,KAAA,CAAA;AAEtC,EAAA,SAAS,aAAgB,GAAA;AACvB,IAAA,IAAI,YAAY,KAAW,CAAA,EAAA;AACzB,MAAO,IAAA,GAAA,KAAA;AAAA,KACF,MAAA;AACL,MAAA,QAAA,CAAS,GAAG,QAAQ,CAAA;AACpB,MAAW,QAAA,GAAA,KAAA,CAAA;AACX,MAAA,UAAA,CAAW,eAAe,KAAK,CAAA;AAAA;AACjC;AAGF,EAAA,OAAO,IAAI,IAAoB,KAAA;AAC7B,IAAA,IAAI,IAAM,EAAA;AACR,MAAW,QAAA,GAAA,IAAA;AAAA,KACN,MAAA;AACL,MAAA,QAAA,CAAS,GAAG,IAAI,CAAA;AAChB,MAAO,IAAA,GAAA,IAAA;AACP,MAAA,UAAA,CAAW,eAAe,KAAK,CAAA;AAAA;AACjC,GACF;AACF;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise-utils.js","sources":["../../../../src/promise-utils.ts"],"sourcesContent":["export class DeferredPromise<T = unknown> {\n #promise: Promise<T>;\n #resolve: (value: T) => void = () => console.log(\"resolve was not set\");\n #reject: (err: unknown) => void = () => console.log(\"reject was not set\");\n #resolved = false;\n\n constructor() {\n this.#promise = new Promise<T>((resolve, reject) => {\n this.#resolve = resolve;\n this.#reject = reject;\n });\n }\n\n get promise() {\n return this.#promise;\n }\n\n get isResolved() {\n return this.#resolved;\n }\n\n resolve(value: T) {\n this.#resolved = true;\n return this.#resolve(value);\n }\n\n get reject() {\n return this.#reject;\n }\n}\n"],"names":[],"mappings":";;;;;;;AAAA,IAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA;AAAO,MAAM,eAA6B,CAAA;AAAA,EAMxC,WAAc,GAAA;AALd,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AACA,IAA+B,YAAA,CAAA,IAAA,EAAA,QAAA,EAAA,MAAM,OAAQ,CAAA,GAAA,CAAI,qBAAqB,CAAA,CAAA;AACtE,IAAkC,YAAA,CAAA,IAAA,EAAA,OAAA,EAAA,MAAM,OAAQ,CAAA,GAAA,CAAI,oBAAoB,CAAA,CAAA;AACxE,IAAY,YAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA;AAGV,IAAA,YAAA,CAAA,IAAA,EAAK,QAAW,EAAA,IAAI,OAAW,CAAA,CAAC,SAAS,MAAW,KAAA;AAClD,MAAA,YAAA,CAAA,IAAA,EAAK,QAAW,EAAA,OAAA,CAAA;AAChB,MAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,MAAA,CAAA;AAAA,KAChB,CAAA,CAAA;AAAA;AACH,EAEA,IAAI,OAAU,GAAA;AACZ,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA;AAAA;AACd,EAEA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA;AACd,EAEA,QAAQ,KAAU,EAAA;AAChB,IAAA,YAAA,CAAA,IAAA,EAAK,SAAY,EAAA,IAAA,CAAA;AACjB,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,UAAL,IAAc,CAAA,IAAA,EAAA,KAAA,CAAA;AAAA;AACvB,EAEA,IAAI,MAAS,GAAA;AACX,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA;AAAA;AAEhB;AA5BE,QAAA,GAAA,IAAA,OAAA,EAAA;AACA,QAAA,GAAA,IAAA,OAAA,EAAA;AACA,OAAA,GAAA,IAAA,OAAA,EAAA;AACA,SAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-message-utils.js","sources":["../../../../src/protocol-message-utils.ts"],"sourcesContent":["import type {\n MenuRpcAction,\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n RpcResponse,\n TableSchema,\n VuuUiMessageInRequestResponse,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuRpcMenuRequest,\n OpenDialogAction,\n VuuRpcEditCellRequest,\n VuuRowDataItemType,\n VuuRpcRequest,\n VuuRpcEditAddRowRequest,\n VuuDataRowDto,\n VuuRpcEditDeleteRowRequest,\n VuuRpcViewportRequest,\n VuuRpcResponse,\n VuuRpcMenuSuccess,\n VuuTable,\n VuuRpcViewportResponse,\n} from \"@vuu-ui/vuu-protocol-types\";\n\nconst MENU_RPC_TYPES = [\n \"VIEW_PORT_MENUS_SELECT_RPC\",\n \"VIEW_PORT_MENU_TABLE_RPC\",\n \"VIEW_PORT_MENU_ROW_RPC\",\n \"VIEW_PORT_MENU_CELL_RPC\",\n \"VP_EDIT_CELL_RPC\",\n \"VP_EDIT_ROW_RPC\",\n \"VP_EDIT_ADD_ROW_RPC\",\n \"VP_EDIT_DELETE_CELL_RPC\",\n \"VP_EDIT_DELETE_ROW_RPC\",\n \"VP_EDIT_SUBMIT_FORM_RPC\",\n];\n\nexport const isVuuMenuRpcRequest = (\n message: VuuRpcRequest | Omit<VuuRpcRequest, \"vpId\">,\n): message is VuuRpcMenuRequest => MENU_RPC_TYPES.includes(message[\"type\"]);\n\nexport const isRequestResponse = (\n message: object,\n): message is VuuUiMessageInRequestResponse => \"requestId\" in message;\n\nexport const isOpenSessionTableDialogMessage = (\n rpcResponse: RpcResponse,\n): rpcResponse is MenuRpcResponse<OpenDialogActionWithSchema> =>\n rpcResponse.type === \"VIEW_PORT_MENU_RESP\" &&\n isOpenDialogAction(rpcResponse.action) &&\n \"tableSchema\" in rpcResponse.action;\n\nexport const isOpenDialogAction = (\n action?: MenuRpcAction,\n): action is OpenDialogAction =>\n action !== undefined && action.type === \"OPEN_DIALOG_ACTION\";\n\nexport function isViewportRpcRequest(\n request: VuuRpcRequest,\n): request is VuuRpcViewportRequest;\nexport function isViewportRpcRequest(\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is Omit<VuuRpcViewportRequest, \"vpId\">;\nexport function isViewportRpcRequest(\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is VuuRpcViewportRequest | Omit<VuuRpcViewportRequest, \"vpId\"> {\n return request.type === \"VIEW_PORT_RPC_CALL\";\n}\n\nexport function isEditCellRequest(\n request: VuuRpcRequest,\n): request is VuuRpcEditCellRequest;\nexport function isEditCellRequest(\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is Omit<VuuRpcEditCellRequest, \"vpId\">;\nexport function isEditCellRequest(\n request: VuuRpcRequest | Omit<VuuRpcRequest, \"vpId\">,\n): request is VuuRpcEditCellRequest | Omit<VuuRpcEditCellRequest, \"vpId\"> {\n return request.type === \"VP_EDIT_CELL_RPC\";\n}\n\nexport function vuuEditCellRequest(\n rowKey: string,\n field: string,\n value: VuuRowDataItemType,\n vpId: string,\n): VuuRpcEditCellRequest;\nexport function vuuEditCellRequest(\n rowKey: string,\n field: string,\n value: VuuRowDataItemType,\n): Omit<VuuRpcEditCellRequest, \"vpId\">;\nexport function vuuEditCellRequest(\n rowKey: string,\n field: string,\n value: VuuRowDataItemType,\n vpId?: string,\n): VuuRpcEditCellRequest | Omit<VuuRpcEditCellRequest, \"vpId\"> {\n return {\n rowKey,\n field,\n value,\n type: \"VP_EDIT_CELL_RPC\",\n vpId,\n };\n}\n\nexport function viewportRpcRequest(\n rpcName: string,\n vpId: string,\n): VuuRpcViewportRequest;\nexport function viewportRpcRequest(\n rpcName: string,\n): Omit<VuuRpcViewportRequest, \"vpId\">;\nexport function viewportRpcRequest(\n rpcName: string,\n vpId?: string,\n): VuuRpcViewportRequest | Omit<VuuRpcViewportRequest, \"vpId\"> {\n return {\n namedParams: {},\n params: [],\n rpcName,\n type: \"VIEW_PORT_RPC_CALL\",\n vpId,\n };\n}\n\nexport function vuuAddRowRequest(\n rowKey: string,\n data: VuuDataRowDto,\n vpId: string,\n): VuuRpcEditAddRowRequest;\nexport function vuuAddRowRequest(\n rowKey: string,\n data: VuuDataRowDto,\n): Omit<VuuRpcEditAddRowRequest, \"vpId\">;\nexport function vuuAddRowRequest(\n rowKey: string,\n data: VuuDataRowDto,\n vpId?: string,\n): VuuRpcEditAddRowRequest | Omit<VuuRpcEditAddRowRequest, \"vpId\"> {\n return {\n rowKey,\n data,\n type: \"VP_EDIT_ADD_ROW_RPC\",\n vpId,\n };\n}\n\nexport function vuuDeleteRowRequest(\n rowKey: string,\n vpId: string,\n): VuuRpcEditDeleteRowRequest;\nexport function vuuDeleteRowRequest(\n rowKey: string,\n): Omit<VuuRpcEditDeleteRowRequest, \"vpId\">;\nexport function vuuDeleteRowRequest(\n rowKey: string,\n vpId?: string,\n): VuuRpcEditDeleteRowRequest | Omit<VuuRpcEditDeleteRowRequest, \"vpId\"> {\n return {\n rowKey,\n type: \"VP_EDIT_DELETE_ROW_RPC\",\n vpId,\n };\n}\n\n// export type WithTableSchema<\n// T extends VuuRpcMenuSuccess | VuuRpcViewportResponse = VuuRpcMenuSuccess,\n// > = T & {\n// action: T extends VuuRpcMenuSuccess\n// ? VuuRpcMenuSuccess[\"action\"] & { tableSchema: TableSchema }\n// : VuuRpcViewportResponse[\"action\"] & { tableSchema: TableSchema };\n// };\n\nexport const isSessionTable = (table?: unknown) => {\n if (\n table !== null &&\n typeof table === \"object\" &&\n \"table\" in table &&\n \"module\" in table\n ) {\n return (table as VuuTable).table.startsWith(\"session\");\n }\n return false;\n};\n\nexport function isActionMessage(\n rpcResponse: VuuRpcResponse,\n): rpcResponse is VuuRpcViewportResponse | VuuRpcMenuSuccess;\nexport function isActionMessage(\n rpcResponse: Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is\n | Omit<VuuRpcViewportResponse, \"vpId\">\n | Omit<VuuRpcMenuSuccess, \"vpId\">;\nexport function isActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n) {\n return (\n rpcResponse.type === \"VIEW_PORT_MENU_RESP\" ||\n rpcResponse.type === \"VIEW_PORT_RPC_REPONSE\"\n );\n}\n\nexport function isSessionTableActionMessage(\n rpcResponse: VuuRpcResponse,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n>;\nexport function isSessionTableActionMessage(\n rpcResponse: Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is Omit<\n VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n >,\n \"vpId\"\n>;\nexport function isSessionTableActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n> {\n return (\n isActionMessage(rpcResponse) &&\n isOpenDialogAction(rpcResponse.action) &&\n isSessionTable(rpcResponse.action.table) &&\n rpcResponse.action?.renderComponent === \"inline-form\"\n );\n}\n\nexport const isRpcSuccess = (\n response: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n): response is VuuRpcViewportResponse =>\n isActionMessage(response) && response.action.type === \"VP_RPC_SUCCESS\";\n"],"names":[],"mappings":"AAwBA,MAAM,cAAiB,GAAA;AAAA,EACrB,4BAAA;AAAA,EACA,0BAAA;AAAA,EACA,wBAAA;AAAA,EACA,yBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA;AACF,CAAA;AAEO,MAAM,sBAAsB,CACjC,OAAA,KACiC,eAAe,QAAS,CAAA,OAAA,CAAQ,MAAM,CAAC;AAE7D,MAAA,iBAAA,GAAoB,CAC/B,OAAA,KAC6C,WAAe,IAAA;AAEjD,MAAA,+BAAA,GAAkC,CAC7C,WAAA,KAEA,WAAY,CAAA,IAAA,KAAS,qBACrB,IAAA,kBAAA,CAAmB,WAAY,CAAA,MAAM,CACrC,IAAA,aAAA,IAAiB,WAAY,CAAA;AAExB,MAAM,qBAAqB,CAChC,MAAA,KAEA,MAAW,KAAA,KAAA,CAAA,IAAa,OAAO,IAAS,KAAA;AAQnC,SAAS,qBACd,OACwE,EAAA;AACxE,EAAA,OAAO,QAAQ,IAAS,KAAA,oBAAA;AAC1B;AAQO,SAAS,kBACd,OACwE,EAAA;AACxE,EAAA,OAAO,QAAQ,IAAS,KAAA,kBAAA;AAC1B;AAaO,SAAS,kBACd,CAAA,MAAA,EACA,KACA,EAAA,KAAA,EACA,IAC6D,EAAA;AAC7D,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAM,EAAA,kBAAA;AAAA,IACN;AAAA,GACF;AACF;AASgB,SAAA,kBAAA,CACd,SACA,IAC6D,EAAA;AAC7D,EAAO,OAAA;AAAA,IACL,aAAa,EAAC;AAAA,IACd,QAAQ,EAAC;AAAA,IACT,OAAA;AAAA,IACA,IAAM,EAAA,oBAAA;AAAA,IACN;AAAA,GACF;AACF;AAWgB,SAAA,gBAAA,CACd,MACA,EAAA,IAAA,EACA,IACiE,EAAA;AACjE,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAM,EAAA,qBAAA;AAAA,IACN;AAAA,GACF;AACF;AASgB,SAAA,mBAAA,CACd,QACA,IACuE,EAAA;AACvE,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,IAAM,EAAA,wBAAA;AAAA,IACN;AAAA,GACF;AACF;AAUa,MAAA,cAAA,GAAiB,CAAC,KAAoB,KAAA;AACjD,EACE,IAAA,KAAA,KAAU,QACV,OAAO,KAAA,KAAU,YACjB,OAAW,IAAA,KAAA,IACX,YAAY,KACZ,EAAA;AACA,IAAQ,OAAA,KAAA,CAAmB,KAAM,CAAA,UAAA,CAAW,SAAS,CAAA;AAAA;AAEvD,EAAO,OAAA,KAAA;AACT;AAUO,SAAS,gBACd,WACA,EAAA;AACA,EAAA,OACE,WAAY,CAAA,IAAA,KAAS,qBACrB,IAAA,WAAA,CAAY,IAAS,KAAA,uBAAA;AAEzB;AAmBO,SAAS,4BACd,WAKA,EAAA;AACA,EAAA,OACE,eAAgB,CAAA,WAAW,CAC3B,IAAA,kBAAA,CAAmB,YAAY,MAAM,CAAA,IACrC,cAAe,CAAA,WAAA,CAAY,MAAO,CAAA,KAAK,CACvC,IAAA,WAAA,CAAY,QAAQ,eAAoB,KAAA,aAAA;AAE5C;AAEa,MAAA,YAAA,GAAe,CAC1B,QAEA,KAAA,eAAA,CAAgB,QAAQ,CAAK,IAAA,QAAA,CAAS,OAAO,IAAS,KAAA;;;;"}
@@ -26,9 +26,6 @@ const _RangeImpl = class _RangeImpl {
26
26
  __privateSet(this, _baseTo, to);
27
27
  this.renderBufferSize = rangeOptions.renderBufferSize ?? defaultRangeOptions.renderBufferSize;
28
28
  this.rowCount = rangeOptions.rowCount ?? defaultRangeOptions.rowCount;
29
- console.log(
30
- `[Range] new (${__privateGet(this, _baseFrom)}:${__privateGet(this, _baseTo)}) renderBuffer: ${this.renderBufferSize}, rowCount: ${this.rowCount}`
31
- );
32
29
  }
33
30
  get firstRowInViewport() {
34
31
  return __privateGet(this, _baseFrom) + 1;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range-utils.js","sources":["../../../../src/range-utils.ts"],"sourcesContent":["import { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\n\ninterface FromToRange {\n from: number;\n to: number;\n}\n\nexport interface Range extends VuuRange {\n equals: (vuuRange: VuuRange) => boolean;\n firstRowInViewport: number;\n lastRowInViewport: number;\n renderBufferSize?: number;\n reset: Range;\n rowCount?: number;\n}\n\nexport interface RangeOptions {\n renderBufferSize?: number;\n rowCount?: number;\n}\n\nconst defaultRangeOptions = {\n renderBufferSize: 0,\n rowCount: -1,\n};\nclass RangeImpl implements Range {\n #baseFrom: number;\n #renderBufferSize = 0;\n #rowCount = -1;\n #baseTo: number;\n\n // We have to keep these as simple public properties (not getters) so they survive structuredClone\n public from = 0;\n public to = 0;\n\n constructor(\n /** Index position of first visible row in viewport */\n from: number,\n /** Index position of last visible row in viewport + 1 */\n to: number,\n rangeOptions: RangeOptions = defaultRangeOptions,\n ) {\n this.#baseFrom = from;\n this.#baseTo = to;\n this.renderBufferSize =\n rangeOptions.renderBufferSize ?? defaultRangeOptions.renderBufferSize;\n this.rowCount = rangeOptions.rowCount ?? defaultRangeOptions.rowCount;\n }\n\n get firstRowInViewport() {\n return this.#baseFrom + 1;\n }\n\n get lastRowInViewport() {\n if (this.#rowCount > 0) {\n return Math.min(this.#baseTo, this.#rowCount);\n } else {\n return this.#baseTo;\n }\n }\n\n get renderBufferSize() {\n return this.#renderBufferSize;\n }\n\n set renderBufferSize(value: number) {\n this.#renderBufferSize = value;\n this.from = Math.max(0, this.#baseFrom - value);\n if (this.#rowCount > 0) {\n this.to = Math.max(this.#baseTo + this.#renderBufferSize, this.#rowCount);\n } else {\n this.to = this.#baseTo + this.#renderBufferSize;\n }\n }\n\n get rowCount() {\n return this.#rowCount;\n }\n\n set rowCount(value: number) {\n this.#rowCount = value;\n if (value > 0) {\n this.to = Math.min(this.#baseTo + this.#renderBufferSize, value);\n } else {\n this.to = this.#baseTo + this.#renderBufferSize;\n }\n }\n\n get reset() {\n return new RangeImpl(0, this.#baseTo - this.#baseFrom, {\n rowCount: this.#rowCount,\n renderBufferSize: this.#renderBufferSize,\n });\n }\n\n equals(range: VuuRange) {\n return range.from === this.#baseFrom && range.to === this.#baseTo;\n }\n\n toJson() {\n return {\n from: this.from,\n to: this.to,\n baseFrom: this.#baseFrom,\n baseTo: this.#baseTo,\n renderBufferSize: this.#renderBufferSize,\n rowCount: this.#rowCount,\n };\n }\n}\n\nexport const Range = (\n from: number,\n to: number,\n rangeOptions?: RangeOptions,\n): Range => new RangeImpl(from, to, rangeOptions);\n\nexport const NULL_RANGE = Range(0, 0);\n\nexport function getFullRange(\n { from, to }: VuuRange,\n bufferSize = 0,\n totalRowCount: number = Number.MAX_SAFE_INTEGER,\n): FromToRange {\n if (from === 0 && to === 0) {\n return { from, to };\n } else if (bufferSize === 0) {\n if (totalRowCount < from) {\n return { from: 0, to: 0 };\n } else {\n return { from, to: Math.min(to, totalRowCount) };\n }\n } else if (from === 0) {\n return { from, to: Math.min(to + bufferSize, totalRowCount) };\n } else {\n const shortfallBefore = from - bufferSize < 0;\n const shortfallAfter = totalRowCount - (to + bufferSize) < 0;\n if (shortfallBefore && shortfallAfter) {\n return { from: 0, to: totalRowCount };\n } else if (shortfallBefore) {\n return { from: 0, to: to + bufferSize };\n } else if (shortfallAfter) {\n return {\n from: Math.max(0, from - bufferSize),\n to: totalRowCount,\n };\n } else {\n return { from: from - bufferSize, to: to + bufferSize };\n }\n }\n}\n\nexport const withinRange = (value: number, { from, to }: VuuRange) =>\n value >= from && value < to;\n\n// export const rangeOverlap = (\n// { from: from1, to: to1 }: VuuRange,\n// { from: from2, to: to2 }: VuuRange\n// ): VuuRange => {\n// return from2 >= to1 || to2 < from1\n// ? { from: 0, to: 0 }\n// : { from: Math.max(from2, from1), to: Math.min(to2, to1) };\n// };\n\nexport const rangeNewItems = (\n { from: from1, to: to1 }: VuuRange,\n newRange: VuuRange,\n): VuuRange => {\n const { from: from2, to: to2 } = newRange;\n const noOverlap = from2 >= to1 || to2 <= from1;\n const newFullySubsumesOld = from2 < from1 && to2 > to1;\n return noOverlap || newFullySubsumesOld\n ? newRange\n : to2 > to1\n ? { from: to1, to: to2 }\n : { from: from2, to: from1 };\n};\n\nexport class WindowRange {\n public from: number;\n public to: number;\n\n constructor(from: number, to: number) {\n this.from = from;\n this.to = to;\n }\n\n public isWithin(index: number) {\n return withinRange(index, this);\n }\n\n //find the overlap of this range and a new one\n public overlap(from: number, to: number): [number, number] {\n return from >= this.to || to < this.from\n ? [0, 0]\n : [Math.max(from, this.from), Math.min(to, this.to)];\n }\n\n public copy(): WindowRange {\n return new WindowRange(this.from, this.to);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-utils.js","sources":["../../../../src/react-utils.ts"],"sourcesContent":["import {\n Children,\n isValidElement,\n ReactElement,\n ReactNode,\n SetStateAction,\n useEffect,\n useRef,\n} from \"react\";\n\nconst EMPTY_ARRAY: ReactElement[] = [];\n\nexport const asReactElements = (children: ReactNode): ReactElement[] => {\n const isArray = Array.isArray(children);\n const count = isArray ? children.length : Children.count(children);\n if (isArray && children.every(isValidElement)) {\n return children;\n } else if (count === 1 && !isArray && isValidElement(children)) {\n return [children];\n } else if (count > 1) {\n return children as ReactElement[];\n } else {\n return EMPTY_ARRAY;\n }\n};\n\nexport const useIsMounted = (id = \"\") => {\n const isMountedRef = useRef(false);\n useEffect(() => {\n console.log(`is MOUNTED ${id}`);\n isMountedRef.current = true;\n return () => {\n console.log(`is UNMOUNTED ${id}`);\n isMountedRef.current = false;\n };\n }, [id]);\n\n return isMountedRef;\n};\n\nexport const isSimpleStateValue = <T>(arg: SetStateAction<T>): arg is T =>\n typeof arg !== \"function\";\n"],"names":[],"mappings":";;AAUA,MAAM,cAA8B,EAAC;AAExB,MAAA,eAAA,GAAkB,CAAC,QAAwC,KAAA;AACtE,EAAM,MAAA,OAAA,GAAU,KAAM,CAAA,OAAA,CAAQ,QAAQ,CAAA;AACtC,EAAA,MAAM,QAAQ,OAAU,GAAA,QAAA,CAAS,MAAS,GAAA,QAAA,CAAS,MAAM,QAAQ,CAAA;AACjE,EAAA,IAAI,OAAW,IAAA,QAAA,CAAS,KAAM,CAAA,cAAc,CAAG,EAAA;AAC7C,IAAO,OAAA,QAAA;AAAA,aACE,KAAU,KAAA,CAAA,IAAK,CAAC,OAAW,IAAA,cAAA,CAAe,QAAQ,CAAG,EAAA;AAC9D,IAAA,OAAO,CAAC,QAAQ,CAAA;AAAA,GAClB,MAAA,IAAW,QAAQ,CAAG,EAAA;AACpB,IAAO,OAAA,QAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,WAAA;AAAA;AAEX;AAEa,MAAA,YAAA,GAAe,CAAC,EAAA,GAAK,EAAO,KAAA;AACvC,EAAM,MAAA,YAAA,GAAe,OAAO,KAAK,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAQ,OAAA,CAAA,GAAA,CAAI,CAAc,WAAA,EAAA,EAAE,CAAE,CAAA,CAAA;AAC9B,IAAA,YAAA,CAAa,OAAU,GAAA,IAAA;AACvB,IAAA,OAAO,MAAM;AACX,MAAQ,OAAA,CAAA,GAAA,CAAI,CAAgB,aAAA,EAAA,EAAE,CAAE,CAAA,CAAA;AAChC,MAAA,YAAA,CAAa,OAAU,GAAA,KAAA;AAAA,KACzB;AAAA,GACF,EAAG,CAAC,EAAE,CAAC,CAAA;AAEP,EAAO,OAAA,YAAA;AACT;AAEO,MAAM,kBAAqB,GAAA,CAAI,GACpC,KAAA,OAAO,GAAQ,KAAA;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"round-decimal.js","sources":["../../../../src/round-decimal.ts"],"sourcesContent":["const PUNCTUATION_STR = String.fromCharCode(8200);\nconst DIGIT_STR = String.fromCharCode(8199);\nconst DECIMALS_AUTO = -1;\n\ntype PadMap = {\n DIGIT: string;\n TWO_DIGITS: string;\n THREE_DIGITS: string;\n FULL_PADDING: [null, string, string, string, string];\n};\n\nconst Space: PadMap = {\n DIGIT: DIGIT_STR,\n TWO_DIGITS: DIGIT_STR + DIGIT_STR,\n THREE_DIGITS: DIGIT_STR + DIGIT_STR + DIGIT_STR,\n FULL_PADDING: [\n null,\n PUNCTUATION_STR + DIGIT_STR,\n PUNCTUATION_STR + DIGIT_STR + DIGIT_STR,\n PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR,\n PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR,\n ],\n};\n\nconst Zero: PadMap = {\n DIGIT: \"0\",\n TWO_DIGITS: \"00\",\n THREE_DIGITS: \"000\",\n FULL_PADDING: [null, \"0\", \"00\", \"000\", \"0000\"],\n};\n\nfunction padLeft(value: string, maxLength = 6) {\n return (LEADING_FILL + value).slice(-maxLength);\n}\n\nconst LEADING_FILL =\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR;\n\nconst Align = {\n Right: \"right\",\n Center: \"center\",\n Left: \"left\",\n};\n\nfunction pad(n: string, dp: number, Pad: PadMap): string {\n let len = n.length;\n const diff = dp - len;\n\n if (diff > 0) {\n if (diff === 1) {\n n = n + Pad.DIGIT;\n } else if (diff === 2) {\n n = n + Pad.TWO_DIGITS;\n } else if (diff === 3) {\n n = n + Pad.THREE_DIGITS;\n }\n } else {\n if (diff < 0) {\n n = n.slice(0, dp);\n len = dp;\n }\n\n if (Pad === Space && n.charAt(len - 1) === \"0\") {\n n = n.replace(/0+$/, \"\");\n return pad(n, dp, Pad);\n }\n }\n return n;\n}\n\nexport function roundDecimal(\n value?: number,\n align = Align.Right,\n decimals = 4,\n zeroPad?: boolean,\n alignOnDecimals?: boolean\n) {\n if (value === undefined || typeof value !== \"number\" || isNaN(value)) {\n return \"\";\n }\n let integral, fraction, Pad;\n\n const [part1, part2 = \"\"] = value.toString().split(\".\");\n const actualDecimals = part2.length;\n\n integral = parseFloat(part1).toLocaleString();\n\n if (align === Align.Left && alignOnDecimals) {\n integral = padLeft(integral);\n }\n\n if (decimals === DECIMALS_AUTO || actualDecimals === decimals) {\n fraction = part2;\n } else if (actualDecimals > decimals) {\n fraction = parseFloat(\"0.\" + part2)\n .toFixed(decimals)\n .slice(2);\n } else {\n /* eslint-disable no-cond-assign */\n if (\n (Pad = zeroPad\n ? Zero\n : alignOnDecimals && align !== Align.Left\n ? Space\n : null)\n ) {\n if (actualDecimals === 0) {\n fraction = Pad.FULL_PADDING[decimals];\n } else {\n fraction = pad(part2, decimals, Pad);\n }\n } else {\n fraction = part2;\n }\n }\n\n return integral + (fraction ? \".\" + fraction : \"\");\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-utils.js","sources":["../../../../src/row-utils.ts"],"sourcesContent":["//TODO this all probably belongs in vuu-table\nimport type {\n DataSourceRow,\n DataSourceRowObject,\n} from \"@vuu-ui/vuu-data-types\";\nimport type { MutableRefObject } from \"react\";\nimport { ColumnMap, metadataKeys } from \"./column-utils\";\nimport { isRowSelected } from \"./selection-utils\";\n\nconst { IS_LEAF, KEY, IDX } = metadataKeys;\n\nexport type RowOffsetFunc = (\n row: DataSourceRow,\n pctScrollTop?: number,\n) => number;\nexport type RowAtPositionFunc = (position: number) => number;\n\n/**\n * RowOffset function, RowAtPosition function, isVirtualScroll\n */\nexport type RowPositioning = [RowOffsetFunc, RowAtPositionFunc, boolean];\n\nexport const actualRowPositioning = (rowHeight: number): RowPositioning => [\n (row) => row[IDX] * rowHeight,\n (position) => Math.floor(position / rowHeight),\n false,\n];\n\n/**\n * return functions for determining a) the pixel offset to apply to a row, given the\n * row index and b) the index of the row at a given scroll offset. This implementation\n * is used when we are forced to 'virtualise' scrolling - because the number of rows\n * is high enough that we cannot create a large enough HTML content container.\n *\n * @param rowHeight\n * @param virtualisedExtent\n * @param pctScrollTop\n * @returns\n */\nexport const virtualRowPositioning = (\n rowHeight: number,\n virtualisedExtent: number,\n pctScrollTop: MutableRefObject<number>,\n): RowPositioning => [\n (row, offset = 0) => {\n const rowOffset = pctScrollTop.current * virtualisedExtent;\n return (row[IDX] - offset) * rowHeight - rowOffset;\n },\n /*\n Return index position of closest row \n */\n (position) => {\n const rowOffset = pctScrollTop.current * virtualisedExtent;\n return Math.round((position + rowOffset) / rowHeight);\n },\n true,\n];\n\nexport type RowToObjectMapper = (\n row: DataSourceRow,\n columnMap: ColumnMap,\n) => DataSourceRowObject;\n\nexport const asDataSourceRowObject: RowToObjectMapper = (\n row,\n columnMap,\n): DataSourceRowObject => {\n const { [IS_LEAF]: isLeaf, [KEY]: key, [IDX]: index } = row;\n\n const rowObject: DataSourceRowObject = {\n key,\n index,\n isGroupRow: !isLeaf,\n isSelected: isRowSelected(row),\n data: {},\n };\n\n for (const [colName, colIdx] of Object.entries(columnMap)) {\n rowObject.data[colName] = row[colIdx];\n }\n\n return rowObject;\n};\n"],"names":[],"mappings":";;;AASA,MAAM,EAAE,OAAA,EAAS,GAAK,EAAA,GAAA,EAAQ,GAAA,YAAA;AAajB,MAAA,oBAAA,GAAuB,CAAC,SAAsC,KAAA;AAAA,EACzE,CAAC,GAAA,KAAQ,GAAI,CAAA,GAAG,CAAI,GAAA,SAAA;AAAA,EACpB,CAAC,QAAA,KAAa,IAAK,CAAA,KAAA,CAAM,WAAW,SAAS,CAAA;AAAA,EAC7C;AACF;AAaO,MAAM,qBAAwB,GAAA,CACnC,SACA,EAAA,iBAAA,EACA,YACmB,KAAA;AAAA,EACnB,CAAC,GAAK,EAAA,MAAA,GAAS,CAAM,KAAA;AACnB,IAAM,MAAA,SAAA,GAAY,aAAa,OAAU,GAAA,iBAAA;AACzC,IAAA,OAAA,CAAQ,GAAI,CAAA,GAAG,CAAI,GAAA,MAAA,IAAU,SAAY,GAAA,SAAA;AAAA,GAC3C;AAAA;AAAA;AAAA;AAAA,EAIA,CAAC,QAAa,KAAA;AACZ,IAAM,MAAA,SAAA,GAAY,aAAa,OAAU,GAAA,iBAAA;AACzC,IAAA,OAAO,IAAK,CAAA,KAAA,CAAA,CAAO,QAAW,GAAA,SAAA,IAAa,SAAS,CAAA;AAAA,GACtD;AAAA,EACA;AACF;AAOa,MAAA,qBAAA,GAA2C,CACtD,GAAA,EACA,SACwB,KAAA;AACxB,EAAA,MAAM,EAAE,CAAC,OAAO,GAAG,MAAQ,EAAA,CAAC,GAAG,GAAG,GAAK,EAAA,CAAC,GAAG,GAAG,OAAU,GAAA,GAAA;AAExD,EAAA,MAAM,SAAiC,GAAA;AAAA,IACrC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAY,CAAC,MAAA;AAAA,IACb,UAAA,EAAY,cAAc,GAAG,CAAA;AAAA,IAC7B,MAAM;AAAC,GACT;AAEA,EAAA,KAAA,MAAW,CAAC,OAAS,EAAA,MAAM,KAAK,MAAO,CAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACzD,IAAA,SAAA,CAAU,IAAK,CAAA,OAAO,CAAI,GAAA,GAAA,CAAI,MAAM,CAAA;AAAA;AAGtC,EAAO,OAAA,SAAA;AACT;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection-utils.js","sources":["../../../../src/selection-utils.ts"],"sourcesContent":["import {\n DataSourceRow,\n RangeTuple,\n Selection,\n SelectionItem,\n} from \"@vuu-ui/vuu-data-types\";\nimport { TableSelectionModel } from \"@vuu-ui/vuu-table-types\";\nimport { metadataKeys } from \"./column-utils\";\n\nconst NO_SELECTION: number[] = [];\n\nconst { SELECTED } = metadataKeys;\n\nexport const RowSelected = {\n False: 0,\n True: 1,\n First: 2,\n Last: 4,\n};\n\nexport const isRowSelected = (row: DataSourceRow): boolean =>\n (row[SELECTED] & RowSelected.True) === RowSelected.True;\n\nexport const isRowSelectedLast = (row?: DataSourceRow): boolean =>\n row !== undefined && (row[SELECTED] & RowSelected.Last) === RowSelected.Last;\n\nconst inAscendingOrder = (item1: SelectionItem, item2: SelectionItem) => {\n const n1: number = typeof item1 === \"number\" ? item1 : item1[0];\n const n2: number = typeof item2 === \"number\" ? item2 : item2[0];\n return n1 - n2;\n};\n\nexport const deselectItem = (\n selectionModel: TableSelectionModel,\n selected: Selection,\n itemIndex: number,\n rangeSelect: boolean,\n keepExistingSelection = false,\n): Selection => {\n const singleSelect = selectionModel === \"single\";\n const multiSelect =\n selectionModel === \"extended\" || selectionModel === \"checkbox\";\n const actsLikeSingleSelect =\n singleSelect || (multiSelect && !keepExistingSelection && !rangeSelect);\n\n if (actsLikeSingleSelect || (!rangeSelect && !keepExistingSelection)) {\n return NO_SELECTION;\n } else if (!rangeSelect && keepExistingSelection) {\n return removeSelectedItem(selected, itemIndex);\n }\n return NO_SELECTION;\n};\n\nconst newSelectedFillsGapOrExtends = (\n selection: Selection,\n itemIndex: number,\n): boolean => {\n for (let i = 0; i < selection.length; i++) {\n const item = selection[i];\n if (typeof item === \"number\") {\n if (item === itemIndex - 1) {\n return true;\n } else if (item > itemIndex) {\n return false;\n }\n } else if (item[0] === itemIndex + 1 || item[1] === itemIndex - 1) {\n return true;\n } else if (item[0] > itemIndex) {\n return false;\n }\n }\n return false;\n};\n\nconst fillGapOrExtendSelection = (\n selection: Selection,\n itemIndex: number,\n): Selection => {\n for (let i = 0; i < selection.length; i++) {\n const item = selection[i];\n if (typeof item === \"number\") {\n if (item === itemIndex - 1) {\n const nextSelectionItem = selection[i + 1];\n if (nextSelectionItem === itemIndex + 1) {\n const newRange: SelectionItem = [item, nextSelectionItem];\n return selection\n .slice(0, i)\n .concat([newRange])\n .concat(selection.slice(i + 2));\n } else {\n const newRange: SelectionItem = [item, itemIndex];\n return selection\n .slice(0, i)\n .concat([newRange])\n .concat(selection.slice(i + 1));\n }\n } else if (item > itemIndex) {\n break;\n }\n } else if (item[0] === itemIndex + 1) {\n const newRange: SelectionItem = [itemIndex, item[1]];\n return selection\n .slice(0, i)\n .concat([newRange])\n .concat(selection.slice(i + 1));\n } else if (item[1] === itemIndex - 1) {\n // check to see whether another contiguous range follows\n const nextItem = selection[i + 1];\n if (Array.isArray(nextItem) && nextItem[0] === itemIndex + 1) {\n const newRange: SelectionItem = [item[0], nextItem[1]];\n return selection\n .slice(0, i)\n .concat([newRange])\n .concat(selection.slice(i + 2));\n } else if (typeof nextItem === \"number\" && nextItem === itemIndex + 1) {\n const newRange: SelectionItem = [item[0], nextItem];\n return selection\n .slice(0, i)\n .concat([newRange])\n .concat(selection.slice(i + 2));\n } else {\n const newRange: SelectionItem = [item[0], itemIndex];\n return selection\n .slice(0, i)\n .concat([newRange])\n .concat(selection.slice(i + 1));\n }\n }\n }\n\n return selection;\n};\n\nexport const selectItem = (\n selectionModel: TableSelectionModel,\n selected: Selection,\n itemIndex: number,\n rangeSelect: boolean,\n keepExistingSelection = false,\n activeItemIndex = -1,\n): Selection => {\n const singleSelect = selectionModel === \"single\";\n const multiSelect =\n selectionModel === \"extended\" || selectionModel === \"checkbox\";\n const actsLikeSingleSelect =\n singleSelect ||\n (multiSelect && !keepExistingSelection && !rangeSelect) ||\n (rangeSelect && activeItemIndex === -1);\n\n if (selectionModel === \"none\") {\n return NO_SELECTION;\n } else if (actsLikeSingleSelect) {\n return [itemIndex];\n } else if (rangeSelect) {\n if (selected.length === 0) {\n return [itemIndex];\n } else {\n const range: RangeTuple =\n itemIndex > activeItemIndex\n ? [activeItemIndex, itemIndex]\n : [itemIndex, activeItemIndex];\n return insertRange(selected, range);\n }\n } else if (!rangeSelect) {\n // what if we now have a range because we just filled agap between 2\n if (newSelectedFillsGapOrExtends(selected, itemIndex)) {\n return fillGapOrExtendSelection(selected, itemIndex);\n } else {\n return selected?.concat(itemIndex).sort(inAscendingOrder);\n }\n } else if (multiSelect) {\n // const [from, to] = idx > active ? [active, idx] : [idx, active];\n // newSelected = selected?.slice();\n // for (let i = from; i <= to; i++) {\n // if (!selected?.includes(i)) {\n // newSelected.push(i);\n // }\n // }\n }\n return NO_SELECTION;\n};\n\nfunction removeSelectedItem(selected: Selection, itemIndex: number) {\n if (selected.includes(itemIndex)) {\n return selected.filter((selectedItem) => selectedItem !== itemIndex);\n } else {\n const newSelected: Selection = [];\n for (const selectedItem of selected) {\n if (Array.isArray(selectedItem)) {\n if (rangeIncludes(selectedItem, itemIndex)) {\n newSelected.push(...splitRange(selectedItem, itemIndex));\n } else {\n newSelected.push(selectedItem);\n }\n } else {\n newSelected.push(selectedItem);\n }\n }\n return newSelected;\n }\n}\n\nfunction insertRange(selected: Selection, range: RangeTuple): Selection {\n const [from, to] = range;\n return selected.reduce<Selection>((newSelected, selectedItem) => {\n if (typeof selectedItem === \"number\") {\n if (selectedItem < from || selectedItem > to) {\n newSelected.push(selectedItem);\n } else if (!includedInRange(newSelected.at(-1), selectedItem)) {\n newSelected.push(range);\n }\n } else if (overlappingRange(selectedItem, range)) {\n newSelected.push(mergeRanges(selectedItem, range));\n } else {\n if (range[1] < selectedItem[0]) {\n newSelected.push(range);\n }\n newSelected.push(selectedItem);\n }\n\n return newSelected;\n }, []);\n}\n\nconst overlappingRange = (r1: RangeTuple, r2: RangeTuple) =>\n (r1[1] >= r2[0] && r1[1] <= r2[1]) || (r1[0] >= r2[0] && r1[0] <= r2[1]);\nconst mergeRanges = (r1: RangeTuple, r2: RangeTuple): RangeTuple => [\n Math.min(r1[0], r2[0]),\n Math.max(r1[1], r2[1]),\n];\n\nconst includedInRange = (\n selectedItem: SelectionItem | undefined,\n index: number,\n) => {\n if (typeof selectedItem === \"undefined\" || typeof selectedItem === \"number\") {\n return false;\n } else return rangeIncludes(selectedItem, index);\n};\n\nconst rangeIncludes = (range: RangeTuple, index: number) =>\n index >= range[0] && index <= range[1];\n\nconst SINGLE_SELECTED_ROW =\n RowSelected.True + RowSelected.First + RowSelected.Last;\nconst FIRST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.First;\nconst LAST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.Last;\n\n/**\n * Determine the value for selected. We use a bitmap to represent a number of selection states\n * a row might exhibit. selected/not-selected is the fundamental value. We also identify first\n * row of a selected block, last row of a selected block;\n */\nexport const getSelectionStatus = (\n selected: Selection,\n itemIndex: number,\n): number => {\n for (const item of selected) {\n if (typeof item === \"number\") {\n if (item === itemIndex) {\n return SINGLE_SELECTED_ROW;\n }\n } else if (rangeIncludes(item, itemIndex)) {\n if (itemIndex === item[0]) {\n return FIRST_SELECTED_ROW_OF_BLOCK;\n } else if (itemIndex === item[1]) {\n return LAST_SELECTED_ROW_OF_BLOCK;\n } else {\n return RowSelected.True;\n }\n }\n }\n return RowSelected.False;\n};\n\nexport const isSelected = (selected: Selection, itemIndex: number) => {\n for (const item of selected) {\n if (typeof item === \"number\") {\n if (item === itemIndex) {\n return true;\n } else if (item > itemIndex) {\n return false;\n }\n } else if (rangeIncludes(item, itemIndex)) {\n return true;\n } else if (item[0] > itemIndex) {\n return false;\n }\n }\n\n return false;\n};\n/**\n * Vuu server expects a full list if indexes of selected rows. Client represents selection in a more\n * efficient structure. This converts client structure to full server format.\n */\nexport const expandSelection = (selected: Selection): number[] => {\n if (selected.every((selectedItem) => typeof selectedItem === \"number\")) {\n return selected as number[];\n }\n const expandedSelected = [];\n for (const selectedItem of selected) {\n if (typeof selectedItem === \"number\") {\n expandedSelected.push(selectedItem);\n } else {\n for (let i = selectedItem[0]; i <= selectedItem[1]; i++) {\n expandedSelected.push(i);\n }\n }\n }\n return expandedSelected;\n};\n\nfunction splitRange([from, to]: RangeTuple, itemIndex: number): Selection {\n if (itemIndex === from) {\n return [[from + 1, to]];\n } else if (itemIndex === to) {\n return [[from, to - 1]];\n } else if (to - from === 2) {\n return [from, to];\n } else if (itemIndex === to - 1) {\n return [[from, to - 2], to];\n } else {\n return [\n [from, itemIndex - 1],\n [itemIndex + 1, to],\n ];\n }\n}\n\nexport type SelectionDiff = {\n added: SelectionItem[];\n removed: SelectionItem[];\n};\n\nexport const selectionCount = (selected: Selection = NO_SELECTION) => {\n let count = selected.length;\n for (const selectionItem of selected) {\n if (Array.isArray(selectionItem)) {\n const [from, to] = selectionItem;\n count += to - (from + 1);\n }\n }\n return count;\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-layout-types.js","sources":["../../../../src/shell-layout-types.ts"],"sourcesContent":["/**\n * The Vuu Shell creates the outermost application layout. This includes some\n * 'special' identifiers that can be targetted by layout commands to effect or\n * react to layout changes.\n */\nexport const VuuShellLocation = {\n ContextPanel: \"context-panel\",\n MultiWorkspaceContainer: \"vuu-multi-workspace-container\",\n SidePanel: \"vuu-side-panel\",\n SideToolbar: \"vuu-side-toolbar\",\n Workspace: \"vuu-workspace\",\n WorkspaceContainer: \"vuu-workspace-container\",\n} as const;\n\nexport type VuuShellLocation =\n (typeof VuuShellLocation)[keyof typeof VuuShellLocation];\n"],"names":[],"mappings":"AAKO,MAAM,gBAAmB,GAAA;AAAA,EAC9B,YAAc,EAAA,eAAA;AAAA,EACd,uBAAyB,EAAA,+BAAA;AAAA,EACzB,SAAW,EAAA,gBAAA;AAAA,EACX,WAAa,EAAA,kBAAA;AAAA,EACb,SAAW,EAAA,eAAA;AAAA,EACX,kBAAoB,EAAA;AACtB;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-utils.js","sources":["../../../../src/sort-utils.ts"],"sourcesContent":["import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { VuuSort, VuuSortCol, VuuSortType } from \"@vuu-ui/vuu-protocol-types\";\n\nconst cycleSortType = (sortType: VuuSortType) =>\n sortType === \"A\" ? \"D\" : sortType === \"D\" ? undefined : \"A\";\n\nconst NO_SORT: VuuSort = { sortDefs: [] };\n\n// Given an existing sort spec and a column we wish to sort by,\n// construct and return a new sort spec.\nexport const toggleOrApplySort = (\n { sortDefs }: VuuSort,\n { name: column }: ColumnDescriptor,\n extendSort = false,\n sortType?: VuuSortType,\n): VuuSort => {\n if (extendSort) {\n const existingDef = sortDefs.find((sortDef) => sortDef.column === column);\n if (existingDef) {\n return {\n sortDefs: sortDefs.map((sortDef) =>\n sortDef.column === column\n ? {\n column,\n sortType: sortDef.sortType === \"A\" ? \"D\" : \"A\",\n }\n : sortDef,\n ),\n };\n } else {\n return {\n sortDefs: sortDefs.concat({\n column,\n sortType: sortType ?? \"A\",\n }),\n };\n }\n }\n\n const newSortType =\n typeof sortType === \"string\"\n ? sortType\n : sortDefs.length === 1 && sortDefs[0].column === column\n ? cycleSortType(sortDefs[0].sortType)\n : \"A\";\n\n return newSortType\n ? {\n sortDefs: [{ column, sortType: newSortType }],\n }\n : NO_SORT;\n};\n\nexport const setSortColumn = (\n { sortDefs }: VuuSort,\n column: ColumnDescriptor,\n sortType?: \"A\" | \"D\",\n): VuuSort => {\n if (sortType === undefined) {\n const columnSort = sortDefs.find((item) => item.column === column.name);\n if (columnSort) {\n return {\n sortDefs: [\n {\n column: column.name,\n sortType: columnSort.sortType === \"A\" ? \"D\" : \"A\",\n },\n ],\n };\n }\n }\n return { sortDefs: [{ column: column.name, sortType: sortType ?? \"A\" }] };\n};\n\nexport const addSortColumn = (\n { sortDefs }: VuuSort,\n column: ColumnDescriptor,\n sortType: \"A\" | \"D\" = \"A\",\n): VuuSort => {\n const sortEntry: VuuSortCol = { column: column.name, sortType };\n if (sortDefs.length > 0) {\n return {\n sortDefs: sortDefs.concat(sortEntry),\n };\n } else {\n return { sortDefs: [sortEntry] };\n }\n};\n\nexport type ColumnSortStatus =\n | \"no-sort\"\n | \"sort-other-column\"\n | \"single-sort-asc\"\n | \"single-sort-desc\"\n | \"multi-sort-includes-column-asc\"\n | \"multi-sort-includes-column-desc\";\n\n/**\n * Given a VuuSort definition and a column, determine whether the given column\n * is included in the sort and if so, in what position/direction.\n */\nexport const getSortStatus = (\n columnName: string,\n vuuSort?: VuuSort,\n): ColumnSortStatus => {\n if (vuuSort === undefined || vuuSort.sortDefs.length === 0) {\n return \"no-sort\";\n } else {\n const sortDef = vuuSort.sortDefs.find((sd) => sd.column === columnName);\n if (sortDef) {\n if (vuuSort.sortDefs.length === 1) {\n return sortDef.sortType === \"A\"\n ? \"single-sort-asc\"\n : \"single-sort-desc\";\n } else {\n return sortDef.sortType === \"A\"\n ? \"multi-sort-includes-column-asc\"\n : \"multi-sort-includes-column-desc\";\n }\n } else {\n return \"sort-other-column\";\n }\n }\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-schema-utils.js","sources":["../../../../src/table-schema-utils.ts"],"sourcesContent":["import { TableSchemaTable } from \"@vuu-ui/vuu-data-types\";\nimport { VuuTable } from \"@vuu-ui/vuu-protocol-types\";\n\nexport const getVuuTable = (schemaTable: TableSchemaTable): VuuTable => {\n if (schemaTable.session) {\n const { module, session } = schemaTable;\n return { module, table: session };\n } else {\n return schemaTable;\n }\n};\n"],"names":[],"mappings":"AAGa,MAAA,WAAA,GAAc,CAAC,WAA4C,KAAA;AACtE,EAAA,IAAI,YAAY,OAAS,EAAA;AACvB,IAAM,MAAA,EAAE,MAAQ,EAAA,OAAA,EAAY,GAAA,WAAA;AAC5B,IAAO,OAAA,EAAE,MAAQ,EAAA,KAAA,EAAO,OAAQ,EAAA;AAAA,GAC3B,MAAA;AACL,IAAO,OAAA,WAAA;AAAA;AAEX;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-utils.js","sources":["../../../../src/text-utils.ts"],"sourcesContent":["export const lastWord = (text: string): string => {\n const trimmedText = text.trim();\n const pos = trimmedText.lastIndexOf(\" \");\n if (pos === -1) {\n return trimmedText;\n } else {\n return trimmedText.slice(pos + 1);\n }\n};\n\nconst capitalize = (text: string) =>\n text.length === 0 ? \"\" : text[0].toUpperCase() + text.slice(1);\n\nconst regexp_worfify = /(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])/;\nexport const wordify = (text: string) => {\n const [firstWord, ...rest] = text.split(regexp_worfify);\n return `${capitalize(firstWord)} ${rest.join(\" \")}`;\n};\n"],"names":[],"mappings":"AAAa,MAAA,QAAA,GAAW,CAAC,IAAyB,KAAA;AAChD,EAAM,MAAA,WAAA,GAAc,KAAK,IAAK,EAAA;AAC9B,EAAM,MAAA,GAAA,GAAM,WAAY,CAAA,WAAA,CAAY,GAAG,CAAA;AACvC,EAAA,IAAI,QAAQ,CAAI,CAAA,EAAA;AACd,IAAO,OAAA,WAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,WAAA,CAAY,KAAM,CAAA,GAAA,GAAM,CAAC,CAAA;AAAA;AAEpC;AAEA,MAAM,UAAa,GAAA,CAAC,IAClB,KAAA,IAAA,CAAK,WAAW,CAAI,GAAA,EAAA,GAAK,IAAK,CAAA,CAAC,CAAE,CAAA,WAAA,EAAgB,GAAA,IAAA,CAAK,MAAM,CAAC,CAAA;AAE/D,MAAM,cAAiB,GAAA,8CAAA;AACV,MAAA,OAAA,GAAU,CAAC,IAAiB,KAAA;AACvC,EAAA,MAAM,CAAC,SAAW,EAAA,GAAG,IAAI,CAAI,GAAA,IAAA,CAAK,MAAM,cAAc,CAAA;AACtD,EAAO,OAAA,CAAA,EAAG,WAAW,SAAS,CAAC,IAAI,IAAK,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AACnD;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-utils.js","sources":["../../../../src/tree-utils.ts"],"sourcesContent":["import { TreeSourceNode } from \"./tree-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { metadataKeys } from \"./column-utils\";\nimport { IconProvider } from \"@vuu-ui/vuu-data-local/src/tree-data-source/IconProvider\";\n\nconst { COUNT, DEPTH, IDX, KEY } = metadataKeys;\n\ntype Index = { value: number };\n\nexport const treeToDataSourceRows = (\n treeSourceNodes: TreeSourceNode[],\n iconProvider?: IconProvider,\n): [ColumnDescriptor[], DataSourceRow[]] => {\n const columns: ColumnDescriptor[] = [];\n\n columns.push(\n {\n hidden: true,\n name: \"nodeData\",\n type: \"json\",\n },\n {\n getIcon: iconProvider?.getIcon,\n name: \"Level 1\",\n type: \"string\",\n },\n {\n getIcon: iconProvider?.getIcon,\n name: \"Level 2\",\n type: \"string\",\n },\n );\n\n const rows: DataSourceRow[] = [];\n\n addChildValues(rows, treeSourceNodes, columns, iconProvider);\n return [columns, rows];\n};\n\nconst addChildValues = (\n rows: DataSourceRow[],\n treeSourceNodes: TreeSourceNode[],\n cols: ColumnDescriptor[],\n iconProvider: IconProvider | undefined,\n index: Index = { value: 0 },\n keyBase = \"$root\",\n depth = 1,\n): [number, number] => {\n let leafCount = 0;\n let rowCount = 0;\n if (depth === cols.length - 1) {\n cols.push({\n getIcon: iconProvider?.getIcon,\n name: `Level ${cols.length}`,\n type: \"string\",\n });\n }\n for (let i = 0; i < treeSourceNodes.length; i++, index.value += 1) {\n const { childNodes, icon, label, nodeData } = treeSourceNodes[i];\n const blanks = Array(depth - 1).fill(\"\");\n const fullKey = `${keyBase}|${label}`;\n // prettier-ignore\n const row = [index.value, index.value, false,false,depth,0,fullKey,0, nodeData, ...blanks, label ] as DataSourceRow;\n if (icon) {\n iconProvider?.setIcon(fullKey, icon);\n }\n rows.push(row);\n rowCount += 1;\n\n if (childNodes && childNodes.length > 0) {\n const [nestedLeafCount, nestedRowCount] = addChildValues(\n rows,\n childNodes,\n cols,\n iconProvider,\n { value: index.value + 1 },\n fullKey,\n depth + 1,\n );\n row[COUNT] = nestedLeafCount;\n leafCount += nestedLeafCount;\n rowCount += nestedRowCount;\n index.value += nestedRowCount;\n } else {\n leafCount += 1;\n }\n }\n\n return [leafCount, rowCount];\n};\n\nexport const lastPathSegment = (path: string, separator = \"/\") => {\n const root = path.endsWith(separator) ? path.slice(0, -1) : path;\n return root.slice(root.lastIndexOf(separator) + 1);\n};\n\nexport const dropLastPathSegment = (path: string, separator = \"/\") => {\n return path.slice(0, path.lastIndexOf(separator));\n};\n\nexport const getParentRow = (rows: DataSourceRow[], row: DataSourceRow) => {\n const { [IDX]: idx, [DEPTH]: depth } = row;\n for (let i = idx - 1; i >= 0; i--) {\n const nextRow = rows[i];\n if (nextRow[DEPTH] === depth - 1) {\n return nextRow;\n }\n }\n};\n\nconst rowsAreSiblings = (key1: string, key2: string) =>\n dropLastPathSegment(key1, \"|\") === dropLastPathSegment(key2, \"|\");\n\nexport const missingAncestor = (\n row: DataSourceRow,\n previousRow?: DataSourceRow,\n) => {\n if (previousRow) {\n const prevKey = previousRow[KEY];\n const key = row[KEY];\n\n if (key.startsWith(prevKey)) {\n return false;\n } else if (!rowsAreSiblings(prevKey, key)) {\n return true;\n }\n } else if (row[DEPTH] > 1) {\n return true;\n }\n\n return false;\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-utils.js","sources":["../../../../src/ts-utils.ts"],"sourcesContent":["import { JSXElementConstructor, ReactElement } from \"react\";\nimport { LayoutJSON } from \"./json-types\";\n\nexport function isNotNullOrUndefined<T>(\n value: T | undefined | null,\n): value is NonNullable<T> {\n return value !== undefined && value !== null;\n}\n\nexport const isObject = (o: unknown): o is object =>\n typeof o === \"object\" && o !== null;\n\nexport type OptionalProperty<T, K extends keyof T> = Omit<T, K> &\n Partial<Pick<T, K>>;\n\n/**\n * test whether a given react element implements a custom toJSON\n * serialisation (static) method.\n */\ntype JsonEnabledJSXElementConstructor<P> = JSXElementConstructor<P> & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n toJSON: (el: ReactElement) => LayoutJSON<any>;\n};\n\ninterface ReactElementWithJSON<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n P = any,\n T extends // eslint-disable-next-line @typescript-eslint/no-explicit-any\n JsonEnabledJSXElementConstructor<any> = JsonEnabledJSXElementConstructor<any>,\n> {\n type: T;\n props: P;\n key: string | null;\n}\nexport const elementImplementsJSONSerialization = (\n element: ReactElement,\n): element is ReactElementWithJSON =>\n typeof (element.type as JsonEnabledJSXElementConstructor<unknown>).toJSON ===\n \"function\";\n"],"names":[],"mappings":"AAGO,SAAS,qBACd,KACyB,EAAA;AACzB,EAAO,OAAA,KAAA,KAAU,UAAa,KAAU,KAAA,IAAA;AAC1C;AAEO,MAAM,WAAW,CAAC,CAAA,KACvB,OAAO,CAAA,KAAM,YAAY,CAAM,KAAA;AAwB1B,MAAM,qCAAqC,CAChD,OAAA,KAEA,OAAQ,OAAA,CAAQ,KAAmD,MACnE,KAAA;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeahead-utils.js","sources":["../../../../src/typeahead-utils.ts"],"sourcesContent":["export const NO_DATA_MATCH = [\"No matching data\"];\n"],"names":[],"mappings":"AAAa,MAAA,aAAA,GAAgB,CAAC,kBAAkB;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-utils.js","sources":["../../../../src/url-utils.ts"],"sourcesContent":["export const getUrlParameter = (paramName: string, defaultValue?: string) => {\n const url = new URL(document.location.href);\n const parameter = url.searchParams.get(paramName);\n if (parameter) {\n return parameter;\n }\n const hashParams = url.hash;\n const regex = new RegExp(`${paramName}=([a-zA-Z]*)`);\n const result = regex.exec(hashParams);\n if (result) {\n return result[1];\n }\n return defaultValue;\n};\n\nexport const hasUrlParameter = (paramName: string) =>\n new URL(document.location.href).searchParams.has(paramName);\n"],"names":[],"mappings":"AAAa,MAAA,eAAA,GAAkB,CAAC,SAAA,EAAmB,YAA0B,KAAA;AAC3E,EAAA,MAAM,GAAM,GAAA,IAAI,GAAI,CAAA,QAAA,CAAS,SAAS,IAAI,CAAA;AAC1C,EAAA,MAAM,SAAY,GAAA,GAAA,CAAI,YAAa,CAAA,GAAA,CAAI,SAAS,CAAA;AAChD,EAAA,IAAI,SAAW,EAAA;AACb,IAAO,OAAA,SAAA;AAAA;AAET,EAAA,MAAM,aAAa,GAAI,CAAA,IAAA;AACvB,EAAA,MAAM,KAAQ,GAAA,IAAI,MAAO,CAAA,CAAA,EAAG,SAAS,CAAc,YAAA,CAAA,CAAA;AACnD,EAAM,MAAA,MAAA,GAAS,KAAM,CAAA,IAAA,CAAK,UAAU,CAAA;AACpC,EAAA,IAAI,MAAQ,EAAA;AACV,IAAA,OAAO,OAAO,CAAC,CAAA;AAAA;AAEjB,EAAO,OAAA,YAAA;AACT;AAEa,MAAA,eAAA,GAAkB,CAAC,SAAA,KAC9B,IAAI,GAAA,CAAI,QAAS,CAAA,QAAA,CAAS,IAAI,CAAA,CAAE,YAAa,CAAA,GAAA,CAAI,SAAS;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useId.js","sources":["../../../../src/useId.ts"],"sourcesContent":["import { useMemo } from \"react\";\n\nlet vuuComponentIdCount = 0;\n\nexport const useId = (id?: string) =>\n useMemo(() => id ?? `vuu-${++vuuComponentIdCount}`, [id]);\n"],"names":[],"mappings":";;AAEA,IAAI,mBAAsB,GAAA,CAAA;AAEnB,MAAM,KAAQ,GAAA,CAAC,EACpB,KAAA,OAAA,CAAQ,MAAM,EAAA,IAAM,CAAO,IAAA,EAAA,EAAE,mBAAmB,CAAA,CAAA,EAAI,CAAC,EAAE,CAAC;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLayoutEffectSkipFirst.js","sources":["../../../../src/useLayoutEffectSkipFirst.ts"],"sourcesContent":["import { DependencyList, EffectCallback, useLayoutEffect, useRef } from \"react\";\n\nexport const useLayoutEffectSkipFirst = (\n func: EffectCallback,\n deps: DependencyList\n) => {\n const goodToGo = useRef(false);\n useLayoutEffect(() => {\n if (goodToGo.current) {\n func();\n } else {\n goodToGo.current = true;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n};\n"],"names":[],"mappings":";;AAEa,MAAA,wBAAA,GAA2B,CACtC,IAAA,EACA,IACG,KAAA;AACH,EAAM,MAAA,QAAA,GAAW,OAAO,KAAK,CAAA;AAC7B,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,SAAS,OAAS,EAAA;AACpB,MAAK,IAAA,EAAA;AAAA,KACA,MAAA;AACL,MAAA,QAAA,CAAS,OAAU,GAAA,IAAA;AAAA;AACrB,KAEC,IAAI,CAAA;AACT;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStateRef.js","sources":["../../../../src/useStateRef.ts"],"sourcesContent":["import {\n Dispatch,\n MutableRefObject,\n SetStateAction,\n useCallback,\n useRef,\n useState,\n} from \"react\";\n\n/**\n * Extension to useState that maintains a ref for the\n * current state value. Useful where use of the ref can\n * avoid referencing the state vale in a dependency array\n * eg on a native event handler.\n *\n * @param value the initial value to store\n */\n\nconst isSimpleStateValue = <T>(arg: SetStateAction<T>): arg is T =>\n typeof arg !== \"function\";\n\n// Keeps a ref value in sync with a state value\nexport const useStateRef = <T = string>(\n initialValue: T,\n): [MutableRefObject<T>, Dispatch<SetStateAction<T>>] => {\n const [value, _setValue] = useState<T>(initialValue);\n const ref = useRef<T>(value);\n\n const setValue = useCallback<Dispatch<SetStateAction<T>>>((arg) => {\n if (isSimpleStateValue(arg)) {\n ref.current = arg;\n _setValue(arg);\n } else {\n const { current: prev } = ref;\n ref.current = arg(prev);\n _setValue(ref.current);\n }\n }, []);\n return [ref, setValue];\n};\n"],"names":[],"mappings":";;AAkBA,MAAM,kBAAqB,GAAA,CAAI,GAC7B,KAAA,OAAO,GAAQ,KAAA,UAAA;AAGJ,MAAA,WAAA,GAAc,CACzB,YACuD,KAAA;AACvD,EAAA,MAAM,CAAC,KAAA,EAAO,SAAS,CAAA,GAAI,SAAY,YAAY,CAAA;AACnD,EAAM,MAAA,GAAA,GAAM,OAAU,KAAK,CAAA;AAE3B,EAAM,MAAA,QAAA,GAAW,WAAyC,CAAA,CAAC,GAAQ,KAAA;AACjE,IAAI,IAAA,kBAAA,CAAmB,GAAG,CAAG,EAAA;AAC3B,MAAA,GAAA,CAAI,OAAU,GAAA,GAAA;AACd,MAAA,SAAA,CAAU,GAAG,CAAA;AAAA,KACR,MAAA;AACL,MAAM,MAAA,EAAE,OAAS,EAAA,IAAA,EAAS,GAAA,GAAA;AAC1B,MAAI,GAAA,CAAA,OAAA,GAAU,IAAI,IAAI,CAAA;AACtB,MAAA,SAAA,CAAU,IAAI,OAAO,CAAA;AAAA;AACvB,GACF,EAAG,EAAE,CAAA;AACL,EAAO,OAAA,CAAC,KAAK,QAAQ,CAAA;AACvB;;;;"}
package/package.json CHANGED
@@ -1,17 +1,20 @@
1
1
  {
2
- "version": "0.13.5",
2
+ "version": "0.13.7",
3
3
  "author": "heswell",
4
4
  "license": "Apache-2.0",
5
5
  "types": "types/index.d.ts",
6
+ "dependencies": {
7
+ "@dnd-kit/react": "^0.1.19"
8
+ },
6
9
  "devDependencies": {
7
- "@vuu-ui/vuu-data-types": "0.13.5",
8
- "@vuu-ui/vuu-table-types": "0.13.5",
9
- "@vuu-ui/vuu-filter-types": "0.13.5",
10
- "@vuu-ui/vuu-protocol-types": "0.13.5"
10
+ "@vuu-ui/vuu-data-types": "0.13.7",
11
+ "@vuu-ui/vuu-table-types": "0.13.7",
12
+ "@vuu-ui/vuu-filter-types": "0.13.7",
13
+ "@vuu-ui/vuu-protocol-types": "0.13.7"
11
14
  },
12
15
  "peerDependencies": {
13
16
  "@internationalized/date": "^3.0.0",
14
- "@vuu-ui/vuu-filter-parser": "0.13.5",
17
+ "@vuu-ui/vuu-filter-parser": "0.13.7",
15
18
  "clsx": "^2.0.0",
16
19
  "react": "^19.1.0",
17
20
  "react-dom": "^19.1.0"
@@ -53,8 +53,8 @@ export declare const getRegisteredCellRenderers: (serverDataType?: VuuColumnData
53
53
  export declare const getLayoutComponent: (componentName: string) => FC<any>;
54
54
  export declare const getCellRendererOptions: (renderName: string) => CellRendererOptions | undefined;
55
55
  export declare function getCellRenderer(column: ColumnDescriptor): FC<TableCellRendererProps> | undefined;
56
- export declare function getColumnHeaderContentRenderer(column: ColumnDescriptor): FC<HeaderCellProps> | undefined;
57
- export declare function getColumnHeaderLabelRenderer(column: ColumnDescriptor): FC<HeaderCellProps> | undefined;
56
+ export declare function getColumnHeaderContentRenderer(column: ColumnDescriptor): FC<Omit<HeaderCellProps, "id" | "index">> | undefined;
57
+ export declare function getColumnHeaderLabelRenderer(column: ColumnDescriptor): FC<Omit<HeaderCellProps, "id" | "index">> | undefined;
58
58
  export declare const getRowClassNameGenerator: (generatorId: string) => RowClassGenerator | undefined;
59
59
  export declare function getConfigurationEditor(configEditor?: string): FC<ConfigurationEditorProps> | undefined;
60
60
  export declare function getCellConfigPanelRenderer(name: string): ConfigEditorComponent | undefined;
@@ -19,8 +19,8 @@ export declare const stripFilterFromColumns: (columns: RuntimeColumnDescriptor[]
19
19
  align?: "left" | "right";
20
20
  ariaColIndex: number;
21
21
  CellRenderer?: import("react").FunctionComponent<import("@vuu-ui/vuu-table-types").TableCellRendererProps>;
22
- HeaderCellLabelRenderer?: import("react").FunctionComponent<import("@vuu-ui/vuu-table-types").HeaderCellProps>;
23
- HeaderCellContentRenderer?: import("react").FunctionComponent<import("@vuu-ui/vuu-table-types").HeaderCellProps>;
22
+ HeaderCellLabelRenderer?: import("react").FunctionComponent<Omit<import("@vuu-ui/vuu-table-types").HeaderCellProps, "id" | "index">>;
23
+ HeaderCellContentRenderer?: import("react").FunctionComponent<Omit<import("@vuu-ui/vuu-table-types").HeaderCellProps, "id" | "index">>;
24
24
  canStretch?: boolean;
25
25
  className?: string;
26
26
  clientSideEditValidationCheck?: import("@vuu-ui/vuu-data-types").DataValueValidationChecker;