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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/cjs/node_modules/@dnd-kit/abstract/index.js +1488 -0
  2. package/cjs/node_modules/@dnd-kit/abstract/index.js.map +1 -0
  3. package/cjs/node_modules/@dnd-kit/abstract/modifiers.js +85 -0
  4. package/cjs/node_modules/@dnd-kit/abstract/modifiers.js.map +1 -0
  5. package/cjs/node_modules/@dnd-kit/collision/dist/index.js +91 -0
  6. package/cjs/node_modules/@dnd-kit/collision/dist/index.js.map +1 -0
  7. package/cjs/node_modules/@dnd-kit/dom/index.js +1991 -0
  8. package/cjs/node_modules/@dnd-kit/dom/index.js.map +1 -0
  9. package/cjs/node_modules/@dnd-kit/dom/sortable.js +828 -0
  10. package/cjs/node_modules/@dnd-kit/dom/sortable.js.map +1 -0
  11. package/cjs/node_modules/@dnd-kit/dom/utilities.js +1389 -0
  12. package/cjs/node_modules/@dnd-kit/dom/utilities.js.map +1 -0
  13. package/cjs/node_modules/@dnd-kit/geometry/dist/index.js +310 -0
  14. package/cjs/node_modules/@dnd-kit/geometry/dist/index.js.map +1 -0
  15. package/cjs/node_modules/@dnd-kit/react/hooks.js +134 -0
  16. package/cjs/node_modules/@dnd-kit/react/hooks.js.map +1 -0
  17. package/cjs/node_modules/@dnd-kit/react/index.js +398 -0
  18. package/cjs/node_modules/@dnd-kit/react/index.js.map +1 -0
  19. package/cjs/node_modules/@dnd-kit/react/sortable.js +177 -0
  20. package/cjs/node_modules/@dnd-kit/react/sortable.js.map +1 -0
  21. package/cjs/node_modules/@dnd-kit/react/utilities.js +19 -0
  22. package/cjs/node_modules/@dnd-kit/react/utilities.js.map +1 -0
  23. package/cjs/node_modules/@dnd-kit/state/dist/index.js +280 -0
  24. package/cjs/node_modules/@dnd-kit/state/dist/index.js.map +1 -0
  25. package/cjs/node_modules/@preact/signals-core/dist/signals-core.js +11 -0
  26. package/cjs/node_modules/@preact/signals-core/dist/signals-core.js.map +1 -0
  27. package/cjs/packages/vuu-utils/src/Clock.js +62 -0
  28. package/cjs/packages/vuu-utils/src/Clock.js.map +1 -0
  29. package/cjs/packages/vuu-utils/src/PageVisibilityObserver.js +80 -0
  30. package/cjs/packages/vuu-utils/src/PageVisibilityObserver.js.map +1 -0
  31. package/cjs/packages/vuu-utils/src/ScaledDecimal.js +43 -0
  32. package/cjs/packages/vuu-utils/src/ScaledDecimal.js.map +1 -0
  33. package/cjs/packages/vuu-utils/src/ShellContext.js +13 -0
  34. package/cjs/packages/vuu-utils/src/ShellContext.js.map +1 -0
  35. package/cjs/packages/vuu-utils/src/ThemeProvider.js +85 -0
  36. package/cjs/packages/vuu-utils/src/ThemeProvider.js.map +1 -0
  37. package/cjs/packages/vuu-utils/src/array-utils.js +87 -0
  38. package/cjs/packages/vuu-utils/src/array-utils.js.map +1 -0
  39. package/cjs/packages/vuu-utils/src/box-utils.js +53 -0
  40. package/cjs/packages/vuu-utils/src/box-utils.js.map +1 -0
  41. package/cjs/packages/vuu-utils/src/column-utils.js +1066 -0
  42. package/cjs/packages/vuu-utils/src/column-utils.js.map +1 -0
  43. package/cjs/packages/vuu-utils/src/common-types.js +15 -0
  44. package/cjs/packages/vuu-utils/src/common-types.js.map +1 -0
  45. package/cjs/packages/vuu-utils/src/component-registry.js +144 -0
  46. package/cjs/packages/vuu-utils/src/component-registry.js.map +1 -0
  47. package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js +21 -0
  48. package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -0
  49. package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js +19 -0
  50. package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -0
  51. package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +33 -0
  52. package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -0
  53. package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +20 -0
  54. package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -0
  55. package/cjs/packages/vuu-utils/src/cookie-utils.js +22 -0
  56. package/cjs/packages/vuu-utils/src/cookie-utils.js.map +1 -0
  57. package/cjs/packages/vuu-utils/src/css-utils.js +9 -0
  58. package/cjs/packages/vuu-utils/src/css-utils.js.map +1 -0
  59. package/cjs/packages/vuu-utils/src/data-editing/DataEditingProvider.js +28 -0
  60. package/cjs/packages/vuu-utils/src/data-editing/DataEditingProvider.js.map +1 -0
  61. package/cjs/packages/vuu-utils/src/data-editing/EditButtons.js +64 -0
  62. package/cjs/packages/vuu-utils/src/data-editing/EditButtons.js.map +1 -0
  63. package/cjs/packages/vuu-utils/src/data-editing/EditSession.js +312 -0
  64. package/cjs/packages/vuu-utils/src/data-editing/EditSession.js.map +1 -0
  65. package/cjs/packages/vuu-utils/src/data-editing/edit-utils.js +51 -0
  66. package/cjs/packages/vuu-utils/src/data-editing/edit-utils.js.map +1 -0
  67. package/cjs/packages/vuu-utils/src/data-editing/useEditableTable.js +107 -0
  68. package/cjs/packages/vuu-utils/src/data-editing/useEditableTable.js.map +1 -0
  69. package/cjs/packages/vuu-utils/src/data-utils.js +110 -0
  70. package/cjs/packages/vuu-utils/src/data-utils.js.map +1 -0
  71. package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js +317 -0
  72. package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -0
  73. package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js +14 -0
  74. package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +1 -0
  75. package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js +40 -0
  76. package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -0
  77. package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js +218 -0
  78. package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js.map +1 -0
  79. package/cjs/packages/vuu-utils/src/date/date-utils.js +131 -0
  80. package/cjs/packages/vuu-utils/src/date/date-utils.js.map +1 -0
  81. package/cjs/packages/vuu-utils/src/date/dateTimePattern.js +26 -0
  82. package/cjs/packages/vuu-utils/src/date/dateTimePattern.js.map +1 -0
  83. package/cjs/packages/vuu-utils/src/date/formatter.js +82 -0
  84. package/cjs/packages/vuu-utils/src/date/formatter.js.map +1 -0
  85. package/cjs/packages/vuu-utils/src/date/types.js +32 -0
  86. package/cjs/packages/vuu-utils/src/date/types.js.map +1 -0
  87. package/cjs/packages/vuu-utils/src/debug-utils.js +34 -0
  88. package/cjs/packages/vuu-utils/src/debug-utils.js.map +1 -0
  89. package/cjs/packages/vuu-utils/src/event-emitter.js +113 -0
  90. package/cjs/packages/vuu-utils/src/event-emitter.js.map +1 -0
  91. package/cjs/packages/vuu-utils/src/feature-utils.js +139 -0
  92. package/cjs/packages/vuu-utils/src/feature-utils.js.map +1 -0
  93. package/cjs/packages/vuu-utils/src/filters/filter-utils.js +182 -0
  94. package/cjs/packages/vuu-utils/src/filters/filter-utils.js.map +1 -0
  95. package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js +69 -0
  96. package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -0
  97. package/cjs/packages/vuu-utils/src/form-utils.js +123 -0
  98. package/cjs/packages/vuu-utils/src/form-utils.js.map +1 -0
  99. package/cjs/packages/vuu-utils/src/formatting-utils.js +114 -0
  100. package/cjs/packages/vuu-utils/src/formatting-utils.js.map +1 -0
  101. package/cjs/packages/vuu-utils/src/getUniqueId.js +6 -0
  102. package/cjs/packages/vuu-utils/src/getUniqueId.js.map +1 -0
  103. package/cjs/packages/vuu-utils/src/group-utils.js +27 -0
  104. package/cjs/packages/vuu-utils/src/group-utils.js.map +1 -0
  105. package/cjs/packages/vuu-utils/src/html-utils.js +162 -0
  106. package/cjs/packages/vuu-utils/src/html-utils.js.map +1 -0
  107. package/cjs/packages/vuu-utils/src/index.js +481 -0
  108. package/cjs/packages/vuu-utils/src/index.js.map +1 -0
  109. package/cjs/packages/vuu-utils/src/input-utils.js +10 -0
  110. package/cjs/packages/vuu-utils/src/input-utils.js.map +1 -0
  111. package/cjs/packages/vuu-utils/src/invariant.js +13 -0
  112. package/cjs/packages/vuu-utils/src/invariant.js.map +1 -0
  113. package/cjs/packages/vuu-utils/src/itemToString.js +23 -0
  114. package/cjs/packages/vuu-utils/src/itemToString.js.map +1 -0
  115. package/cjs/packages/vuu-utils/src/json-utils.js +105 -0
  116. package/cjs/packages/vuu-utils/src/json-utils.js.map +1 -0
  117. package/cjs/packages/vuu-utils/src/keyboard-utils.js +30 -0
  118. package/cjs/packages/vuu-utils/src/keyboard-utils.js.map +1 -0
  119. package/cjs/packages/vuu-utils/src/keyset.js +72 -0
  120. package/cjs/packages/vuu-utils/src/keyset.js.map +1 -0
  121. package/cjs/packages/vuu-utils/src/list-utils.js +11 -0
  122. package/cjs/packages/vuu-utils/src/list-utils.js.map +1 -0
  123. package/cjs/packages/vuu-utils/src/local-storage-utils.js +35 -0
  124. package/cjs/packages/vuu-utils/src/local-storage-utils.js.map +1 -0
  125. package/cjs/packages/vuu-utils/src/logging-utils.js +65 -0
  126. package/cjs/packages/vuu-utils/src/logging-utils.js.map +1 -0
  127. package/cjs/packages/vuu-utils/src/module-utils.js +6 -0
  128. package/cjs/packages/vuu-utils/src/module-utils.js.map +1 -0
  129. package/cjs/packages/vuu-utils/src/nanoid/index.js +22 -0
  130. package/cjs/packages/vuu-utils/src/nanoid/index.js.map +1 -0
  131. package/cjs/packages/vuu-utils/src/perf-utils.js +35 -0
  132. package/cjs/packages/vuu-utils/src/perf-utils.js.map +1 -0
  133. package/cjs/packages/vuu-utils/src/promise-utils.js +42 -0
  134. package/cjs/packages/vuu-utils/src/promise-utils.js.map +1 -0
  135. package/cjs/packages/vuu-utils/src/protocol-message-utils.js +108 -0
  136. package/cjs/packages/vuu-utils/src/protocol-message-utils.js.map +1 -0
  137. package/cjs/packages/vuu-utils/src/range-utils.js +115 -0
  138. package/cjs/packages/vuu-utils/src/range-utils.js.map +1 -0
  139. package/cjs/packages/vuu-utils/src/react-utils.js +72 -0
  140. package/cjs/packages/vuu-utils/src/react-utils.js.map +1 -0
  141. package/cjs/packages/vuu-utils/src/round-decimal.js +131 -0
  142. package/cjs/packages/vuu-utils/src/round-decimal.js.map +1 -0
  143. package/cjs/packages/vuu-utils/src/row-utils.js +59 -0
  144. package/cjs/packages/vuu-utils/src/row-utils.js.map +1 -0
  145. package/cjs/packages/vuu-utils/src/selection-utils.js +34 -0
  146. package/cjs/packages/vuu-utils/src/selection-utils.js.map +1 -0
  147. package/cjs/packages/vuu-utils/src/shell-layout-types.js +13 -0
  148. package/cjs/packages/vuu-utils/src/shell-layout-types.js.map +1 -0
  149. package/cjs/packages/vuu-utils/src/sort-utils.js +78 -0
  150. package/cjs/packages/vuu-utils/src/sort-utils.js.map +1 -0
  151. package/cjs/packages/vuu-utils/src/table-schema-utils.js +13 -0
  152. package/cjs/packages/vuu-utils/src/table-schema-utils.js.map +1 -0
  153. package/cjs/packages/vuu-utils/src/text-utils.js +21 -0
  154. package/cjs/packages/vuu-utils/src/text-utils.js.map +1 -0
  155. package/cjs/packages/vuu-utils/src/theme-utils.js +36 -0
  156. package/cjs/packages/vuu-utils/src/theme-utils.js.map +1 -0
  157. package/cjs/packages/vuu-utils/src/tree-utils.js +114 -0
  158. package/cjs/packages/vuu-utils/src/tree-utils.js.map +1 -0
  159. package/cjs/packages/vuu-utils/src/ts-utils.js +12 -0
  160. package/cjs/packages/vuu-utils/src/ts-utils.js.map +1 -0
  161. package/cjs/packages/vuu-utils/src/typeahead-utils.js +6 -0
  162. package/cjs/packages/vuu-utils/src/typeahead-utils.js.map +1 -0
  163. package/cjs/packages/vuu-utils/src/url-utils.js +21 -0
  164. package/cjs/packages/vuu-utils/src/url-utils.js.map +1 -0
  165. package/cjs/packages/vuu-utils/src/useId.js +9 -0
  166. package/cjs/packages/vuu-utils/src/useId.js.map +1 -0
  167. package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +17 -0
  168. package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -0
  169. package/cjs/packages/vuu-utils/src/useResizeObserver.js +134 -0
  170. package/cjs/packages/vuu-utils/src/useResizeObserver.js.map +1 -0
  171. package/cjs/packages/vuu-utils/src/useStateRef.js +23 -0
  172. package/cjs/packages/vuu-utils/src/useStateRef.js.map +1 -0
  173. package/esm/node_modules/@dnd-kit/abstract/index.js +1472 -0
  174. package/esm/node_modules/@dnd-kit/abstract/index.js.map +1 -0
  175. package/esm/node_modules/@dnd-kit/abstract/modifiers.js +82 -0
  176. package/esm/node_modules/@dnd-kit/abstract/modifiers.js.map +1 -0
  177. package/esm/node_modules/@dnd-kit/collision/dist/index.js +86 -0
  178. package/esm/node_modules/@dnd-kit/collision/dist/index.js.map +1 -0
  179. package/esm/node_modules/@dnd-kit/dom/index.js +1977 -0
  180. package/esm/node_modules/@dnd-kit/dom/index.js.map +1 -0
  181. package/esm/node_modules/@dnd-kit/dom/sortable.js +822 -0
  182. package/esm/node_modules/@dnd-kit/dom/sortable.js.map +1 -0
  183. package/esm/node_modules/@dnd-kit/dom/utilities.js +1344 -0
  184. package/esm/node_modules/@dnd-kit/dom/utilities.js.map +1 -0
  185. package/esm/node_modules/@dnd-kit/geometry/dist/index.js +303 -0
  186. package/esm/node_modules/@dnd-kit/geometry/dist/index.js.map +1 -0
  187. package/esm/node_modules/@dnd-kit/react/hooks.js +126 -0
  188. package/esm/node_modules/@dnd-kit/react/hooks.js.map +1 -0
  189. package/esm/node_modules/@dnd-kit/react/index.js +392 -0
  190. package/esm/node_modules/@dnd-kit/react/index.js.map +1 -0
  191. package/esm/node_modules/@dnd-kit/react/sortable.js +175 -0
  192. package/esm/node_modules/@dnd-kit/react/sortable.js.map +1 -0
  193. package/esm/node_modules/@dnd-kit/react/utilities.js +17 -0
  194. package/esm/node_modules/@dnd-kit/react/utilities.js.map +1 -0
  195. package/esm/node_modules/@dnd-kit/state/dist/index.js +266 -0
  196. package/esm/node_modules/@dnd-kit/state/dist/index.js.map +1 -0
  197. package/esm/node_modules/@preact/signals-core/dist/signals-core.js +4 -0
  198. package/esm/node_modules/@preact/signals-core/dist/signals-core.js.map +1 -0
  199. package/esm/packages/vuu-utils/src/Clock.js +60 -0
  200. package/esm/packages/vuu-utils/src/Clock.js.map +1 -0
  201. package/esm/packages/vuu-utils/src/PageVisibilityObserver.js +78 -0
  202. package/esm/packages/vuu-utils/src/PageVisibilityObserver.js.map +1 -0
  203. package/esm/packages/vuu-utils/src/ScaledDecimal.js +37 -0
  204. package/esm/packages/vuu-utils/src/ScaledDecimal.js.map +1 -0
  205. package/esm/packages/vuu-utils/src/ShellContext.js +10 -0
  206. package/esm/packages/vuu-utils/src/ShellContext.js.map +1 -0
  207. package/esm/packages/vuu-utils/src/ThemeProvider.js +78 -0
  208. package/esm/packages/vuu-utils/src/ThemeProvider.js.map +1 -0
  209. package/esm/packages/vuu-utils/src/array-utils.js +79 -0
  210. package/esm/packages/vuu-utils/src/array-utils.js.map +1 -0
  211. package/esm/packages/vuu-utils/src/box-utils.js +47 -0
  212. package/esm/packages/vuu-utils/src/box-utils.js.map +1 -0
  213. package/esm/packages/vuu-utils/src/column-utils.js +978 -0
  214. package/esm/packages/vuu-utils/src/column-utils.js.map +1 -0
  215. package/esm/packages/vuu-utils/src/common-types.js +13 -0
  216. package/esm/packages/vuu-utils/src/common-types.js.map +1 -0
  217. package/esm/packages/vuu-utils/src/component-registry.js +128 -0
  218. package/esm/packages/vuu-utils/src/component-registry.js.map +1 -0
  219. package/esm/packages/vuu-utils/src/context-definitions/DataContext.js +18 -0
  220. package/esm/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -0
  221. package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js +16 -0
  222. package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -0
  223. package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +29 -0
  224. package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -0
  225. package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +17 -0
  226. package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -0
  227. package/esm/packages/vuu-utils/src/cookie-utils.js +19 -0
  228. package/esm/packages/vuu-utils/src/cookie-utils.js.map +1 -0
  229. package/esm/packages/vuu-utils/src/css-utils.js +7 -0
  230. package/esm/packages/vuu-utils/src/css-utils.js.map +1 -0
  231. package/esm/packages/vuu-utils/src/data-editing/DataEditingProvider.js +25 -0
  232. package/esm/packages/vuu-utils/src/data-editing/DataEditingProvider.js.map +1 -0
  233. package/esm/packages/vuu-utils/src/data-editing/EditButtons.js +62 -0
  234. package/esm/packages/vuu-utils/src/data-editing/EditButtons.js.map +1 -0
  235. package/esm/packages/vuu-utils/src/data-editing/EditSession.js +309 -0
  236. package/esm/packages/vuu-utils/src/data-editing/EditSession.js.map +1 -0
  237. package/esm/packages/vuu-utils/src/data-editing/edit-utils.js +46 -0
  238. package/esm/packages/vuu-utils/src/data-editing/edit-utils.js.map +1 -0
  239. package/esm/packages/vuu-utils/src/data-editing/useEditableTable.js +105 -0
  240. package/esm/packages/vuu-utils/src/data-editing/useEditableTable.js.map +1 -0
  241. package/esm/packages/vuu-utils/src/data-utils.js +95 -0
  242. package/esm/packages/vuu-utils/src/data-utils.js.map +1 -0
  243. package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js +314 -0
  244. package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -0
  245. package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js +8 -0
  246. package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +1 -0
  247. package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js +38 -0
  248. package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -0
  249. package/esm/packages/vuu-utils/src/datasource/datasource-utils.js +193 -0
  250. package/esm/packages/vuu-utils/src/datasource/datasource-utils.js.map +1 -0
  251. package/esm/packages/vuu-utils/src/date/date-utils.js +121 -0
  252. package/esm/packages/vuu-utils/src/date/date-utils.js.map +1 -0
  253. package/esm/packages/vuu-utils/src/date/dateTimePattern.js +22 -0
  254. package/esm/packages/vuu-utils/src/date/dateTimePattern.js.map +1 -0
  255. package/esm/packages/vuu-utils/src/date/formatter.js +79 -0
  256. package/esm/packages/vuu-utils/src/date/formatter.js.map +1 -0
  257. package/esm/packages/vuu-utils/src/date/types.js +26 -0
  258. package/esm/packages/vuu-utils/src/date/types.js.map +1 -0
  259. package/esm/packages/vuu-utils/src/debug-utils.js +32 -0
  260. package/esm/packages/vuu-utils/src/debug-utils.js.map +1 -0
  261. package/esm/packages/vuu-utils/src/event-emitter.js +111 -0
  262. package/esm/packages/vuu-utils/src/event-emitter.js.map +1 -0
  263. package/esm/packages/vuu-utils/src/feature-utils.js +125 -0
  264. package/esm/packages/vuu-utils/src/feature-utils.js.map +1 -0
  265. package/esm/packages/vuu-utils/src/filters/filter-utils.js +159 -0
  266. package/esm/packages/vuu-utils/src/filters/filter-utils.js.map +1 -0
  267. package/esm/packages/vuu-utils/src/filters/filterAsQuery.js +65 -0
  268. package/esm/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -0
  269. package/esm/packages/vuu-utils/src/form-utils.js +116 -0
  270. package/esm/packages/vuu-utils/src/form-utils.js.map +1 -0
  271. package/esm/packages/vuu-utils/src/formatting-utils.js +109 -0
  272. package/esm/packages/vuu-utils/src/formatting-utils.js.map +1 -0
  273. package/esm/packages/vuu-utils/src/getUniqueId.js +4 -0
  274. package/esm/packages/vuu-utils/src/getUniqueId.js.map +1 -0
  275. package/esm/packages/vuu-utils/src/group-utils.js +23 -0
  276. package/esm/packages/vuu-utils/src/group-utils.js.map +1 -0
  277. package/esm/packages/vuu-utils/src/html-utils.js +145 -0
  278. package/esm/packages/vuu-utils/src/html-utils.js.map +1 -0
  279. package/esm/packages/vuu-utils/src/index.js +77 -0
  280. package/esm/packages/vuu-utils/src/index.js.map +1 -0
  281. package/esm/packages/vuu-utils/src/input-utils.js +7 -0
  282. package/esm/packages/vuu-utils/src/input-utils.js.map +1 -0
  283. package/esm/packages/vuu-utils/src/invariant.js +11 -0
  284. package/esm/packages/vuu-utils/src/invariant.js.map +1 -0
  285. package/esm/packages/vuu-utils/src/itemToString.js +21 -0
  286. package/esm/packages/vuu-utils/src/itemToString.js.map +1 -0
  287. package/esm/packages/vuu-utils/src/json-utils.js +103 -0
  288. package/esm/packages/vuu-utils/src/json-utils.js.map +1 -0
  289. package/esm/packages/vuu-utils/src/keyboard-utils.js +16 -0
  290. package/esm/packages/vuu-utils/src/keyboard-utils.js.map +1 -0
  291. package/esm/packages/vuu-utils/src/keyset.js +70 -0
  292. package/esm/packages/vuu-utils/src/keyset.js.map +1 -0
  293. package/esm/packages/vuu-utils/src/list-utils.js +9 -0
  294. package/esm/packages/vuu-utils/src/list-utils.js.map +1 -0
  295. package/esm/packages/vuu-utils/src/local-storage-utils.js +30 -0
  296. package/esm/packages/vuu-utils/src/local-storage-utils.js.map +1 -0
  297. package/esm/packages/vuu-utils/src/logging-utils.js +61 -0
  298. package/esm/packages/vuu-utils/src/logging-utils.js.map +1 -0
  299. package/esm/packages/vuu-utils/src/module-utils.js +4 -0
  300. package/esm/packages/vuu-utils/src/module-utils.js.map +1 -0
  301. package/esm/packages/vuu-utils/src/nanoid/index.js +20 -0
  302. package/esm/packages/vuu-utils/src/nanoid/index.js.map +1 -0
  303. package/esm/packages/vuu-utils/src/perf-utils.js +32 -0
  304. package/esm/packages/vuu-utils/src/perf-utils.js.map +1 -0
  305. package/esm/packages/vuu-utils/src/promise-utils.js +40 -0
  306. package/esm/packages/vuu-utils/src/promise-utils.js.map +1 -0
  307. package/esm/packages/vuu-utils/src/protocol-message-utils.js +77 -0
  308. package/esm/packages/vuu-utils/src/protocol-message-utils.js.map +1 -0
  309. package/esm/packages/vuu-utils/src/range-utils.js +108 -0
  310. package/esm/packages/vuu-utils/src/range-utils.js.map +1 -0
  311. package/esm/packages/vuu-utils/src/react-utils.js +66 -0
  312. package/esm/packages/vuu-utils/src/react-utils.js.map +1 -0
  313. package/esm/packages/vuu-utils/src/round-decimal.js +127 -0
  314. package/esm/packages/vuu-utils/src/round-decimal.js.map +1 -0
  315. package/esm/packages/vuu-utils/src/row-utils.js +54 -0
  316. package/esm/packages/vuu-utils/src/row-utils.js.map +1 -0
  317. package/esm/packages/vuu-utils/src/selection-utils.js +31 -0
  318. package/esm/packages/vuu-utils/src/selection-utils.js.map +1 -0
  319. package/esm/packages/vuu-utils/src/shell-layout-types.js +11 -0
  320. package/esm/packages/vuu-utils/src/shell-layout-types.js.map +1 -0
  321. package/esm/packages/vuu-utils/src/sort-utils.js +73 -0
  322. package/esm/packages/vuu-utils/src/sort-utils.js.map +1 -0
  323. package/esm/packages/vuu-utils/src/table-schema-utils.js +11 -0
  324. package/esm/packages/vuu-utils/src/table-schema-utils.js.map +1 -0
  325. package/esm/packages/vuu-utils/src/text-utils.js +18 -0
  326. package/esm/packages/vuu-utils/src/text-utils.js.map +1 -0
  327. package/esm/packages/vuu-utils/src/theme-utils.js +34 -0
  328. package/esm/packages/vuu-utils/src/theme-utils.js.map +1 -0
  329. package/esm/packages/vuu-utils/src/tree-utils.js +108 -0
  330. package/esm/packages/vuu-utils/src/tree-utils.js.map +1 -0
  331. package/esm/packages/vuu-utils/src/ts-utils.js +8 -0
  332. package/esm/packages/vuu-utils/src/ts-utils.js.map +1 -0
  333. package/esm/packages/vuu-utils/src/typeahead-utils.js +4 -0
  334. package/esm/packages/vuu-utils/src/typeahead-utils.js.map +1 -0
  335. package/esm/packages/vuu-utils/src/url-utils.js +18 -0
  336. package/esm/packages/vuu-utils/src/url-utils.js.map +1 -0
  337. package/esm/packages/vuu-utils/src/useId.js +7 -0
  338. package/esm/packages/vuu-utils/src/useId.js.map +1 -0
  339. package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +15 -0
  340. package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -0
  341. package/esm/packages/vuu-utils/src/useResizeObserver.js +130 -0
  342. package/esm/packages/vuu-utils/src/useResizeObserver.js.map +1 -0
  343. package/esm/packages/vuu-utils/src/useStateRef.js +21 -0
  344. package/esm/packages/vuu-utils/src/useStateRef.js.map +1 -0
  345. package/package.json +12 -10
  346. package/types/ThemeProvider.d.ts +4 -4
  347. package/types/column-utils.d.ts +5 -4
  348. package/types/data-editing/EditButtons.d.ts +8 -2
  349. package/types/data-editing/EditSession.d.ts +13 -4
  350. package/types/data-editing/edit-utils.d.ts +3 -1
  351. package/types/data-editing/useEditableTable.d.ts +10 -4
  352. package/types/data-utils.d.ts +2 -1
  353. package/types/date/date-utils.d.ts +8 -8
  354. package/types/feature-utils.d.ts +1 -1
  355. package/types/filters/filter-utils.d.ts +15 -15
  356. package/types/formatting-utils.d.ts +1 -1
  357. package/types/index.d.ts +1 -1
  358. package/types/protocol-message-utils.d.ts +3 -1
@@ -0,0 +1,60 @@
1
+ var __typeError = (msg) => {
2
+ throw TypeError(msg);
3
+ };
4
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
8
+ var _millisSinceEpoch, _showCurrentTime;
9
+ class Clock {
10
+ constructor(props) {
11
+ __privateAdd(this, _millisSinceEpoch, 0);
12
+ __privateAdd(this, _showCurrentTime, false);
13
+ const today = /* @__PURE__ */ new Date();
14
+ const offset = today.getTimezoneOffset();
15
+ if (props) {
16
+ const dateProvided = typeof props.year === "number" && typeof props.month === "number" && typeof props.day === "number";
17
+ const year = props.year ?? today.getFullYear();
18
+ const month = props.month !== void 0 ? props.month - 1 : today.getMonth();
19
+ const day = props.day ?? today.getDay();
20
+ const hours = props.hours !== void 0 ? offset === 0 ? props.hours : (
21
+ // oversimplified, assumes BST
22
+ props.hours + 1
23
+ ) : dateProvided ? offset ? 1 : 0 : today.getUTCHours();
24
+ const minutes = props.minutes ?? (dateProvided ? 0 : today.getMinutes());
25
+ const seconds = props.seconds ?? (dateProvided ? 0 : today.getSeconds());
26
+ const ms = props.milliseconds ?? (dateProvided ? 0 : today.getMilliseconds());
27
+ const date = new Date(year, month, day, hours, minutes, seconds, ms);
28
+ __privateSet(this, _millisSinceEpoch, date.getTime());
29
+ } else {
30
+ __privateSet(this, _millisSinceEpoch, today.getTime());
31
+ }
32
+ }
33
+ goBack(value, units = "ms") {
34
+ const multiplier = units === "ms" ? 1 : units === "seconds" ? 1e3 : 6e4;
35
+ __privateSet(this, _millisSinceEpoch, __privateGet(this, _millisSinceEpoch) - value * multiplier);
36
+ return this;
37
+ }
38
+ advance(value, units = "ms") {
39
+ const multiplier = units === "ms" ? 1 : units === "seconds" ? 1e3 : 6e4;
40
+ __privateSet(this, _millisSinceEpoch, __privateGet(this, _millisSinceEpoch) + value * multiplier);
41
+ return this;
42
+ }
43
+ set showCurrentTime(value) {
44
+ __privateSet(this, _showCurrentTime, value);
45
+ }
46
+ toString() {
47
+ return new Date(this.now).toISOString();
48
+ }
49
+ get now() {
50
+ return __privateGet(this, _showCurrentTime) ? (/* @__PURE__ */ new Date()).getTime() : __privateGet(this, _millisSinceEpoch);
51
+ }
52
+ get date() {
53
+ return __privateGet(this, _showCurrentTime) ? /* @__PURE__ */ new Date() : new Date(__privateGet(this, _millisSinceEpoch));
54
+ }
55
+ }
56
+ _millisSinceEpoch = new WeakMap();
57
+ _showCurrentTime = new WeakMap();
58
+
59
+ export { Clock };
60
+ //# sourceMappingURL=Clock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Clock.js","sources":["../../../../../../packages/vuu-utils/src/Clock.ts"],"sourcesContent":["export interface ClockProps {\n year?: number;\n month?: number;\n day?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n milliseconds?: number;\n}\n\nexport type ClockTimeUnit = \"minutes\" | \"seconds\" | \"ms\";\nexport class Clock {\n #millisSinceEpoch = 0;\n #showCurrentTime = false;\n\n constructor(props?: ClockProps) {\n const today = new Date();\n const offset = today.getTimezoneOffset();\n if (props) {\n const dateProvided =\n typeof props.year === \"number\" &&\n typeof props.month === \"number\" &&\n typeof props.day === \"number\";\n\n const year = props.year ?? today.getFullYear();\n const month =\n props.month !== undefined ? props.month - 1 : today.getMonth();\n const day = props.day ?? today.getDay();\n\n const hours =\n props.hours !== undefined\n ? offset === 0\n ? props.hours\n : // oversimplified, assumes BST\n props.hours + 1\n : dateProvided\n ? offset\n ? 1 // assumed BST\n : 0\n : today.getUTCHours();\n const minutes = props.minutes ?? (dateProvided ? 0 : today.getMinutes());\n const seconds = props.seconds ?? (dateProvided ? 0 : today.getSeconds());\n const ms =\n props.milliseconds ?? (dateProvided ? 0 : today.getMilliseconds());\n const date = new Date(year, month, day, hours, minutes, seconds, ms);\n this.#millisSinceEpoch = date.getTime();\n } else {\n this.#millisSinceEpoch = today.getTime();\n }\n }\n\n goBack(value: number, units: ClockTimeUnit = \"ms\") {\n const multiplier = units === \"ms\" ? 1 : units === \"seconds\" ? 1000 : 60_000;\n this.#millisSinceEpoch -= value * multiplier;\n return this;\n }\n\n advance(value: number, units: ClockTimeUnit = \"ms\") {\n const multiplier = units === \"ms\" ? 1 : units === \"seconds\" ? 1000 : 60_000;\n this.#millisSinceEpoch += value * multiplier;\n return this;\n }\n\n set showCurrentTime(value: boolean) {\n this.#showCurrentTime = value;\n }\n\n toString() {\n return new Date(this.now).toISOString();\n }\n\n get now() {\n return this.#showCurrentTime\n ? new Date().getTime()\n : this.#millisSinceEpoch;\n }\n\n get date() {\n return this.#showCurrentTime\n ? new Date()\n : new Date(this.#millisSinceEpoch);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { EventEmitter } from './event-emitter.js';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __typeError = (msg) => {
5
+ throw TypeError(msg);
6
+ };
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
9
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
10
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
11
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
12
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
13
+ var _inactiveTimeoutMs, _inactivityTimer, _hidden;
14
+ const defaultProps = {};
15
+ class PageVisibilityObserver extends EventEmitter {
16
+ constructor({
17
+ inactiveTimeout = 0,
18
+ onHidden,
19
+ onInactiveTimeout,
20
+ onVisibilityChange,
21
+ onVisible
22
+ } = defaultProps) {
23
+ super();
24
+ __privateAdd(this, _inactiveTimeoutMs);
25
+ __privateAdd(this, _inactivityTimer);
26
+ __privateAdd(this, _hidden);
27
+ __publicField(this, "visibilityChangeHandler", () => {
28
+ this.hidden = document.hidden;
29
+ });
30
+ __privateSet(this, _hidden, document.hidden);
31
+ __privateSet(this, _inactiveTimeoutMs, inactiveTimeout * 1e3);
32
+ if (onInactiveTimeout) {
33
+ this.on("inactive-timeout", onInactiveTimeout);
34
+ }
35
+ if (onHidden) {
36
+ this.on("hidden", onHidden);
37
+ }
38
+ if (onVisible) {
39
+ this.on("visible", onVisible);
40
+ }
41
+ if (onVisibilityChange) {
42
+ this.on("visibilityChange", onVisibilityChange);
43
+ }
44
+ document.addEventListener("visibilitychange", this.visibilityChangeHandler);
45
+ }
46
+ clear() {
47
+ document.removeEventListener(
48
+ "visibilitychange",
49
+ this.visibilityChangeHandler
50
+ );
51
+ }
52
+ set hidden(hidden) {
53
+ if (hidden !== __privateGet(this, _hidden)) {
54
+ __privateSet(this, _hidden, hidden);
55
+ if (document.hidden) {
56
+ this.emit("hidden");
57
+ if (__privateGet(this, _inactiveTimeoutMs)) {
58
+ __privateSet(this, _inactivityTimer, setTimeout(() => {
59
+ this.emit("inactive-timeout");
60
+ }, __privateGet(this, _inactiveTimeoutMs)));
61
+ }
62
+ } else {
63
+ this.emit("visible");
64
+ if (__privateGet(this, _inactivityTimer)) {
65
+ clearTimeout(__privateGet(this, _inactivityTimer));
66
+ __privateSet(this, _inactivityTimer, void 0);
67
+ }
68
+ }
69
+ this.emit("visibilityChange", hidden);
70
+ }
71
+ }
72
+ }
73
+ _inactiveTimeoutMs = new WeakMap();
74
+ _inactivityTimer = new WeakMap();
75
+ _hidden = new WeakMap();
76
+
77
+ export { PageVisibilityObserver };
78
+ //# sourceMappingURL=PageVisibilityObserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageVisibilityObserver.js","sources":["../../../../../../packages/vuu-utils/src/PageVisibilityObserver.ts"],"sourcesContent":["import { EventEmitter } from \"./event-emitter\";\n\nexport type PageVisibilityEvents = {\n /**\n * emits when page has been hidden for this period of time\n */\n \"inactive-timeout\": () => void;\n /**\n * emits when page is hidden\n */\n hidden: () => void;\n /**\n * emits when page is made visible\n */\n visible: () => void;\n /**\n * emits when page visibility status changes\n */\n visibilityChange: (hidden: boolean) => void;\n};\n\nexport interface PageVisibilityObserverConstructorProps {\n /**\n * timeout period in seconds. Defaults to zero which will never timeout\n */\n inactiveTimeout?: number;\n onHidden?: () => void;\n onInactiveTimeout?: () => void;\n onVisible?: () => void;\n onVisibilityChange?: () => void;\n}\n\nconst defaultProps: PageVisibilityObserverConstructorProps = {};\n\nexport class PageVisibilityObserver extends EventEmitter<PageVisibilityEvents> {\n #inactiveTimeoutMs?: number;\n #inactivityTimer?: ReturnType<typeof setTimeout>;\n #hidden: boolean;\n\n visibilityChangeHandler = () => {\n this.hidden = document.hidden;\n };\n\n constructor({\n inactiveTimeout = 0,\n onHidden,\n onInactiveTimeout,\n onVisibilityChange,\n onVisible,\n } = defaultProps) {\n super();\n\n this.#hidden = document.hidden;\n this.#inactiveTimeoutMs = inactiveTimeout * 1000;\n\n if (onInactiveTimeout) {\n this.on(\"inactive-timeout\", onInactiveTimeout);\n }\n\n if (onHidden) {\n this.on(\"hidden\", onHidden);\n }\n if (onVisible) {\n this.on(\"visible\", onVisible);\n }\n if (onVisibilityChange) {\n this.on(\"visibilityChange\", onVisibilityChange);\n }\n\n document.addEventListener(\"visibilitychange\", this.visibilityChangeHandler);\n }\n\n clear() {\n document.removeEventListener(\n \"visibilitychange\",\n this.visibilityChangeHandler,\n );\n }\n\n private set hidden(hidden: boolean) {\n if (hidden !== this.#hidden) {\n this.#hidden = hidden;\n if (document.hidden) {\n this.emit(\"hidden\");\n if (this.#inactiveTimeoutMs) {\n this.#inactivityTimer = setTimeout(() => {\n this.emit(\"inactive-timeout\");\n }, this.#inactiveTimeoutMs);\n }\n } else {\n this.emit(\"visible\");\n if (this.#inactivityTimer) {\n clearTimeout(this.#inactivityTimer);\n this.#inactivityTimer = undefined;\n }\n }\n this.emit(\"visibilityChange\", hidden);\n }\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA,IAAA,kBAAA,EAAA,gBAAA,EAAA,OAAA;AAgCA,MAAM,eAAuD,EAAC;AAEvD,MAAM,+BAA+B,YAAmC,CAAA;AAAA,EAS7E,WAAY,CAAA;AAAA,IACV,eAAkB,GAAA,CAAA;AAAA,IAClB,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,kBAAA;AAAA,IACA;AAAA,MACE,YAAc,EAAA;AAChB,IAAM,KAAA,EAAA;AAfR,IAAA,YAAA,CAAA,IAAA,EAAA,kBAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AAEA,IAAA,aAAA,CAAA,IAAA,EAAA,yBAAA,EAA0B,MAAM;AAC9B,MAAA,IAAA,CAAK,SAAS,QAAS,CAAA,MAAA;AAAA,KACzB,CAAA;AAWE,IAAA,YAAA,CAAA,IAAA,EAAK,SAAU,QAAS,CAAA,MAAA,CAAA;AACxB,IAAA,YAAA,CAAA,IAAA,EAAK,oBAAqB,eAAkB,GAAA,GAAA,CAAA;AAE5C,IAAA,IAAI,iBAAmB,EAAA;AACrB,MAAK,IAAA,CAAA,EAAA,CAAG,oBAAoB,iBAAiB,CAAA;AAAA;AAG/C,IAAA,IAAI,QAAU,EAAA;AACZ,MAAK,IAAA,CAAA,EAAA,CAAG,UAAU,QAAQ,CAAA;AAAA;AAE5B,IAAA,IAAI,SAAW,EAAA;AACb,MAAK,IAAA,CAAA,EAAA,CAAG,WAAW,SAAS,CAAA;AAAA;AAE9B,IAAA,IAAI,kBAAoB,EAAA;AACtB,MAAK,IAAA,CAAA,EAAA,CAAG,oBAAoB,kBAAkB,CAAA;AAAA;AAGhD,IAAS,QAAA,CAAA,gBAAA,CAAiB,kBAAoB,EAAA,IAAA,CAAK,uBAAuB,CAAA;AAAA;AAC5E,EAEA,KAAQ,GAAA;AACN,IAAS,QAAA,CAAA,mBAAA;AAAA,MACP,kBAAA;AAAA,MACA,IAAK,CAAA;AAAA,KACP;AAAA;AACF,EAEA,IAAY,OAAO,MAAiB,EAAA;AAClC,IAAI,IAAA,MAAA,KAAW,mBAAK,OAAS,CAAA,EAAA;AAC3B,MAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,MAAA,CAAA;AACf,MAAA,IAAI,SAAS,MAAQ,EAAA;AACnB,QAAA,IAAA,CAAK,KAAK,QAAQ,CAAA;AAClB,QAAA,IAAI,mBAAK,kBAAoB,CAAA,EAAA;AAC3B,UAAK,YAAA,CAAA,IAAA,EAAA,gBAAA,EAAmB,WAAW,MAAM;AACvC,YAAA,IAAA,CAAK,KAAK,kBAAkB,CAAA;AAAA,WAC9B,EAAG,mBAAK,kBAAkB,CAAA,CAAA,CAAA;AAAA;AAC5B,OACK,MAAA;AACL,QAAA,IAAA,CAAK,KAAK,SAAS,CAAA;AACnB,QAAA,IAAI,mBAAK,gBAAkB,CAAA,EAAA;AACzB,UAAA,YAAA,CAAa,mBAAK,gBAAgB,CAAA,CAAA;AAClC,UAAA,YAAA,CAAA,IAAA,EAAK,gBAAmB,EAAA,KAAA,CAAA,CAAA;AAAA;AAC1B;AAEF,MAAK,IAAA,CAAA,IAAA,CAAK,oBAAoB,MAAM,CAAA;AAAA;AACtC;AAEJ;AAhEE,kBAAA,GAAA,IAAA,OAAA,EAAA;AACA,gBAAA,GAAA,IAAA,OAAA,EAAA;AACA,OAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
@@ -0,0 +1,37 @@
1
+ const scaledDecimals = (fraction, decimals) => {
2
+ if (fraction.length > decimals) {
3
+ return fraction.slice(0, decimals);
4
+ } else if (fraction.length === decimals) {
5
+ return fraction;
6
+ } else {
7
+ return fraction.padEnd(decimals, "0");
8
+ }
9
+ };
10
+ class ScaledDecimal {
11
+ constructor(value, decimals = 6) {
12
+ this.value = value;
13
+ this.decimals = decimals;
14
+ console.log(`create a scaled decimal ${value} (${decimals} decimals)`);
15
+ }
16
+ get asLong() {
17
+ if (this.value === "") {
18
+ return "";
19
+ } else {
20
+ const [integral, fraction = "0"] = this.value.split(".");
21
+ return `${integral}${scaledDecimals(fraction, this.decimals)}`;
22
+ }
23
+ }
24
+ toJSON() {
25
+ return this.value;
26
+ }
27
+ toString() {
28
+ return this.value;
29
+ }
30
+ }
31
+ const ScaledDecimal2 = (value) => new ScaledDecimal(value, 2);
32
+ const ScaledDecimal4 = (value) => new ScaledDecimal(value, 4);
33
+ const ScaledDecimal6 = (value) => new ScaledDecimal(value, 6);
34
+ const ScaledDecimal8 = (value) => new ScaledDecimal(value, 8);
35
+
36
+ export { ScaledDecimal, ScaledDecimal2, ScaledDecimal4, ScaledDecimal6, ScaledDecimal8 };
37
+ //# sourceMappingURL=ScaledDecimal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScaledDecimal.js","sources":["../../../../../../packages/vuu-utils/src/ScaledDecimal.ts"],"sourcesContent":["const scaledDecimals = (fraction: string, decimals: number) => {\n if (fraction.length > decimals) {\n return fraction.slice(0, decimals);\n } else if (fraction.length === decimals) {\n return fraction;\n } else {\n return fraction.padEnd(decimals, \"0\");\n }\n};\n\nexport class ScaledDecimal {\n constructor(\n protected readonly value: string,\n private readonly decimals = 6,\n ) {\n console.log(`create a scaled decimal ${value} (${decimals} decimals)`);\n }\n\n get asLong() {\n if (this.value === \"\") {\n return \"\";\n } else {\n const [integral, fraction = \"0\"] = this.value.split(\".\");\n return `${integral}${scaledDecimals(fraction, this.decimals)}`;\n }\n }\n\n toJSON() {\n return this.value;\n }\n\n toString() {\n return this.value;\n }\n}\n\nexport const ScaledDecimal2 = (value: string): ScaledDecimal =>\n new ScaledDecimal(value, 2);\nexport const ScaledDecimal4 = (value: string): ScaledDecimal =>\n new ScaledDecimal(value, 4);\nexport const ScaledDecimal6 = (value: string): ScaledDecimal =>\n new ScaledDecimal(value, 6);\nexport const ScaledDecimal8 = (value: string): ScaledDecimal =>\n new ScaledDecimal(value, 8);\n"],"names":[],"mappings":"AAAA,MAAM,cAAA,GAAiB,CAAC,QAAA,EAAkB,QAAqB,KAAA;AAC7D,EAAI,IAAA,QAAA,CAAS,SAAS,QAAU,EAAA;AAC9B,IAAO,OAAA,QAAA,CAAS,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAA;AAAA,GACnC,MAAA,IAAW,QAAS,CAAA,MAAA,KAAW,QAAU,EAAA;AACvC,IAAO,OAAA,QAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,QAAA,CAAS,MAAO,CAAA,QAAA,EAAU,GAAG,CAAA;AAAA;AAExC,CAAA;AAEO,MAAM,aAAc,CAAA;AAAA,EACzB,WAAA,CACqB,KACF,EAAA,QAAA,GAAW,CAC5B,EAAA;AAFmB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACF,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAEjB,IAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,wBAAA,EAA2B,KAAK,CAAA,EAAA,EAAK,QAAQ,CAAY,UAAA,CAAA,CAAA;AAAA;AACvE,EAEA,IAAI,MAAS,GAAA;AACX,IAAI,IAAA,IAAA,CAAK,UAAU,EAAI,EAAA;AACrB,MAAO,OAAA,EAAA;AAAA,KACF,MAAA;AACL,MAAM,MAAA,CAAC,UAAU,QAAW,GAAA,GAAG,IAAI,IAAK,CAAA,KAAA,CAAM,MAAM,GAAG,CAAA;AACvD,MAAA,OAAO,GAAG,QAAQ,CAAA,EAAG,eAAe,QAAU,EAAA,IAAA,CAAK,QAAQ,CAAC,CAAA,CAAA;AAAA;AAC9D;AACF,EAEA,MAAS,GAAA;AACP,IAAA,OAAO,IAAK,CAAA,KAAA;AAAA;AACd,EAEA,QAAW,GAAA;AACT,IAAA,OAAO,IAAK,CAAA,KAAA;AAAA;AAEhB;AAEO,MAAM,iBAAiB,CAAC,KAAA,KAC7B,IAAI,aAAA,CAAc,OAAO,CAAC;AACrB,MAAM,iBAAiB,CAAC,KAAA,KAC7B,IAAI,aAAA,CAAc,OAAO,CAAC;AACrB,MAAM,iBAAiB,CAAC,KAAA,KAC7B,IAAI,aAAA,CAAc,OAAO,CAAC;AACrB,MAAM,iBAAiB,CAAC,KAAA,KAC7B,IAAI,aAAA,CAAc,OAAO,CAAC;;;;"}
@@ -0,0 +1,10 @@
1
+ import { createContext, useContext } from 'react';
2
+
3
+ const defaultConfig = {};
4
+ const ShellContext = createContext(defaultConfig);
5
+ const useShellContext = () => {
6
+ return useContext(ShellContext);
7
+ };
8
+
9
+ export { ShellContext, useShellContext };
10
+ //# sourceMappingURL=ShellContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShellContext.js","sources":["../../../../../../packages/vuu-utils/src/ShellContext.ts"],"sourcesContent":["import type { RpcResponseHandler } from \"@vuu-ui/vuu-data-types\";\nimport type {\n DefaultColumnConfiguration,\n DefaultTableConfiguration,\n} from \"@vuu-ui/vuu-table-types\";\nimport { createContext, useContext } from \"react\";\nimport { LookupTableProvider } from \"./feature-utils\";\n\nexport interface ShellContextProps {\n getDefaultColumnConfig?: DefaultColumnConfiguration;\n getDefaultTableConfig?: DefaultTableConfiguration;\n getLookupValues?: LookupTableProvider;\n handleRpcResponse?: RpcResponseHandler;\n}\n\nconst defaultConfig = {};\n\nexport const ShellContext = createContext<ShellContextProps>(defaultConfig);\n\nexport const useShellContext = () => {\n return useContext(ShellContext);\n};\n"],"names":[],"mappings":";;AAeA,MAAM,gBAAgB,EAAC;AAEV,MAAA,YAAA,GAAe,cAAiC,aAAa;AAEnE,MAAM,kBAAkB,MAAM;AACnC,EAAA,OAAO,WAAW,YAAY,CAAA;AAChC;;;;"}
@@ -0,0 +1,78 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { createContext, useContext, isValidElement, cloneElement } from 'react';
3
+ import cx from 'clsx';
4
+
5
+ const DEFAULT_DENSITY = "medium";
6
+ const DEFAULT_THEME = "salt-theme";
7
+ const DEFAULT_THEME_MODE = "light";
8
+ const ThemeContext = createContext({
9
+ density: "high",
10
+ theme: "vuu",
11
+ themeMode: "light"
12
+ });
13
+ const DEFAULT_THEME_ATTRIBUTES = [
14
+ "vuu",
15
+ "salt-density-high",
16
+ "light"
17
+ ];
18
+ const useThemeAttributes = (themeAttributes) => {
19
+ const context = useContext(ThemeContext);
20
+ if (themeAttributes) {
21
+ return [
22
+ themeAttributes.themeClass,
23
+ themeAttributes.densityClass,
24
+ themeAttributes.dataMode
25
+ ];
26
+ } else if (context) {
27
+ return [
28
+ `${context.theme}-theme`,
29
+ `salt-density-${context.density}`,
30
+ context.themeMode
31
+ ];
32
+ }
33
+ return DEFAULT_THEME_ATTRIBUTES;
34
+ };
35
+ const createThemedChildren = (children, theme, themeMode, density) => {
36
+ if (isValidElement(children)) {
37
+ return cloneElement(children, {
38
+ className: cx(
39
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
40
+ children.props?.className,
41
+ `${theme}-theme`,
42
+ `salt-density-${density}`
43
+ ),
44
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
45
+ // @ts-expect-error
46
+ "data-mode": themeMode
47
+ });
48
+ } else {
49
+ console.warn(
50
+ `
51
+ ThemeProvider can only apply CSS classes for theming to a single nested child element of the ThemeProvider.
52
+ Wrap elements with a single container`
53
+ );
54
+ return children;
55
+ }
56
+ };
57
+ const ThemeProvider = ({
58
+ applyThemeClasses = false,
59
+ children,
60
+ theme: themeProp,
61
+ themeMode: themeModeProp,
62
+ density: densityProp
63
+ }) => {
64
+ const {
65
+ density: inheritedDensity,
66
+ themeMode: inheritedThemeMode,
67
+ theme: inheritedTheme
68
+ } = useContext(ThemeContext);
69
+ const density = densityProp ?? inheritedDensity ?? DEFAULT_DENSITY;
70
+ const themeMode = themeModeProp ?? inheritedThemeMode ?? DEFAULT_THEME_MODE;
71
+ const theme = themeProp ?? inheritedTheme ?? DEFAULT_THEME;
72
+ const themedChildren = applyThemeClasses ? createThemedChildren(children, theme, themeMode, density) : children;
73
+ return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: { themeMode, density, theme }, children: themedChildren });
74
+ };
75
+ ThemeProvider.displayName = "ThemeProvider";
76
+
77
+ export { DEFAULT_DENSITY, DEFAULT_THEME, DEFAULT_THEME_MODE, ThemeContext, ThemeProvider, useThemeAttributes };
78
+ //# sourceMappingURL=ThemeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider.js","sources":["../../../../../../packages/vuu-utils/src/ThemeProvider.tsx"],"sourcesContent":["import React, {\n createContext,\n HTMLAttributes,\n ReactNode,\n isValidElement,\n cloneElement,\n useContext,\n} from \"react\";\nimport cx from \"clsx\";\n\nexport const DEFAULT_DENSITY: Density = \"medium\";\nexport const DEFAULT_THEME = \"salt-theme\";\nexport const DEFAULT_THEME_MODE: ThemeMode = \"light\";\n\nexport type Density = \"high\" | \"medium\" | \"low\" | \"touch\";\nexport type ThemeMode = \"light\" | \"dark\";\nexport type TargetElement = \"root\" | \"scope\" | \"child\";\n\nexport interface ThemeContextProps {\n density: Density;\n theme: string;\n themeMode: ThemeMode;\n}\n\nexport const ThemeContext = createContext<ThemeContextProps>({\n density: \"high\",\n theme: \"vuu\",\n themeMode: \"light\",\n});\n\nexport type ThemeClasses = [string, string, ThemeMode];\n\nconst DEFAULT_THEME_ATTRIBUTES: ThemeClasses = [\n \"vuu\",\n \"salt-density-high\",\n \"light\" as ThemeMode,\n];\n\nexport type ThemeAttributes = {\n themeClass: string;\n densityClass: string;\n dataMode: ThemeMode;\n};\n\nexport const useThemeAttributes = (\n themeAttributes?: ThemeAttributes\n): [string, string, ThemeMode] => {\n const context = useContext(ThemeContext);\n if (themeAttributes) {\n return [\n themeAttributes.themeClass,\n themeAttributes.densityClass,\n themeAttributes.dataMode,\n ];\n } else if (context) {\n return [\n `${context.theme}-theme`,\n `salt-density-${context.density}`,\n context.themeMode,\n ];\n }\n return DEFAULT_THEME_ATTRIBUTES;\n};\n\nconst createThemedChildren = (\n children: ReactNode,\n theme: string,\n themeMode: ThemeMode,\n density: Density\n) => {\n if (isValidElement<HTMLAttributes<HTMLElement>>(children)) {\n return cloneElement(children, {\n className: cx(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n children.props?.className,\n `${theme}-theme`,\n `salt-density-${density}`\n ),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n \"data-mode\": themeMode,\n });\n } else {\n console.warn(\n `\\nThemeProvider can only apply CSS classes for theming to a single nested child element of the ThemeProvider.\n Wrap elements with a single container`\n );\n return children;\n }\n};\n\ninterface ThemeProviderProps {\n applyThemeClasses?: boolean;\n children: ReactNode;\n density?: Density;\n theme?: string;\n themeMode?: ThemeMode;\n}\n\nexport const ThemeProvider = ({\n applyThemeClasses = false,\n children,\n theme: themeProp,\n themeMode: themeModeProp,\n density: densityProp,\n}: ThemeProviderProps) => {\n const {\n density: inheritedDensity,\n themeMode: inheritedThemeMode,\n theme: inheritedTheme,\n } = useContext(ThemeContext);\n const density = densityProp ?? inheritedDensity ?? DEFAULT_DENSITY;\n const themeMode = themeModeProp ?? inheritedThemeMode ?? DEFAULT_THEME_MODE;\n const theme = themeProp ?? inheritedTheme ?? DEFAULT_THEME;\n const themedChildren = applyThemeClasses\n ? createThemedChildren(children, theme, themeMode, density)\n : children;\n\n return (\n <ThemeContext.Provider value={{ themeMode, density, theme }}>\n {themedChildren}\n </ThemeContext.Provider>\n );\n};\n\nThemeProvider.displayName = \"ThemeProvider\";\n"],"names":[],"mappings":";;;;AAUO,MAAM,eAA2B,GAAA;AACjC,MAAM,aAAgB,GAAA;AACtB,MAAM,kBAAgC,GAAA;AAYtC,MAAM,eAAe,aAAiC,CAAA;AAAA,EAC3D,OAAS,EAAA,MAAA;AAAA,EACT,KAAO,EAAA,KAAA;AAAA,EACP,SAAW,EAAA;AACb,CAAC;AAID,MAAM,wBAAyC,GAAA;AAAA,EAC7C,KAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF,CAAA;AAQa,MAAA,kBAAA,GAAqB,CAChC,eACgC,KAAA;AAChC,EAAM,MAAA,OAAA,GAAU,WAAW,YAAY,CAAA;AACvC,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAO,OAAA;AAAA,MACL,eAAgB,CAAA,UAAA;AAAA,MAChB,eAAgB,CAAA,YAAA;AAAA,MAChB,eAAgB,CAAA;AAAA,KAClB;AAAA,aACS,OAAS,EAAA;AAClB,IAAO,OAAA;AAAA,MACL,CAAA,EAAG,QAAQ,KAAK,CAAA,MAAA,CAAA;AAAA,MAChB,CAAA,aAAA,EAAgB,QAAQ,OAAO,CAAA,CAAA;AAAA,MAC/B,OAAQ,CAAA;AAAA,KACV;AAAA;AAEF,EAAO,OAAA,wBAAA;AACT;AAEA,MAAM,oBAAuB,GAAA,CAC3B,QACA,EAAA,KAAA,EACA,WACA,OACG,KAAA;AACH,EAAI,IAAA,cAAA,CAA4C,QAAQ,CAAG,EAAA;AACzD,IAAA,OAAO,aAAa,QAAU,EAAA;AAAA,MAC5B,SAAW,EAAA,EAAA;AAAA;AAAA,QAET,SAAS,KAAO,EAAA,SAAA;AAAA,QAChB,GAAG,KAAK,CAAA,MAAA,CAAA;AAAA,QACR,gBAAgB,OAAO,CAAA;AAAA,OACzB;AAAA;AAAA;AAAA,MAGA,WAAa,EAAA;AAAA,KACd,CAAA;AAAA,GACI,MAAA;AACL,IAAQ,OAAA,CAAA,IAAA;AAAA,MACN;AAAA;AAAA,iDAAA;AAAA,KAEF;AACA,IAAO,OAAA,QAAA;AAAA;AAEX,CAAA;AAUO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,iBAAoB,GAAA,KAAA;AAAA,EACpB,QAAA;AAAA,EACA,KAAO,EAAA,SAAA;AAAA,EACP,SAAW,EAAA,aAAA;AAAA,EACX,OAAS,EAAA;AACX,CAA0B,KAAA;AACxB,EAAM,MAAA;AAAA,IACJ,OAAS,EAAA,gBAAA;AAAA,IACT,SAAW,EAAA,kBAAA;AAAA,IACX,KAAO,EAAA;AAAA,GACT,GAAI,WAAW,YAAY,CAAA;AAC3B,EAAM,MAAA,OAAA,GAAU,eAAe,gBAAoB,IAAA,eAAA;AACnD,EAAM,MAAA,SAAA,GAAY,iBAAiB,kBAAsB,IAAA,kBAAA;AACzD,EAAM,MAAA,KAAA,GAAQ,aAAa,cAAkB,IAAA,aAAA;AAC7C,EAAA,MAAM,iBAAiB,iBACnB,GAAA,oBAAA,CAAqB,UAAU,KAAO,EAAA,SAAA,EAAW,OAAO,CACxD,GAAA,QAAA;AAEJ,EACE,uBAAA,GAAA,CAAC,YAAa,CAAA,QAAA,EAAb,EAAsB,KAAA,EAAO,EAAE,SAAW,EAAA,OAAA,EAAS,KAAM,EAAA,EACvD,QACH,EAAA,cAAA,EAAA,CAAA;AAEJ;AAEA,aAAA,CAAc,WAAc,GAAA,eAAA;;;;"}
@@ -0,0 +1,79 @@
1
+ function partition(array, test, pass = [], fail = []) {
2
+ for (let i = 0, len = array.length; i < len; i++) {
3
+ (test(array[i], i) ? pass : fail).push(array[i]);
4
+ }
5
+ return [pass, fail];
6
+ }
7
+ function itemsChanged(currentItems, newItems, identityProperty) {
8
+ if (currentItems.length !== newItems.length) {
9
+ return true;
10
+ }
11
+ if (identityProperty === void 0) {
12
+ return !currentItems.every((item) => newItems.includes(item));
13
+ } else {
14
+ return currentItems.some(
15
+ (currentItem) => newItems.findIndex(
16
+ (newItem) => newItem[identityProperty] === currentItem[identityProperty]
17
+ ) === -1
18
+ );
19
+ }
20
+ }
21
+ function itemsOrOrderChanged(currentItems, newItems, identityProperty) {
22
+ if (currentItems.length !== newItems.length) {
23
+ return true;
24
+ }
25
+ if (identityProperty === void 0) {
26
+ return currentItems.some((item, index) => newItems[index] !== item);
27
+ } else {
28
+ return currentItems.some(
29
+ (currentItem, index) => newItems[index][identityProperty] !== currentItem[identityProperty]
30
+ );
31
+ }
32
+ }
33
+ const moveItemDeprecated = (items, item, moveTo) => {
34
+ const fromIndex = items.indexOf(item);
35
+ if (fromIndex === moveTo) {
36
+ return items;
37
+ }
38
+ const newItems = items.slice();
39
+ if (fromIndex === -1) {
40
+ throw Error("moveItem, item to be moved not found");
41
+ }
42
+ newItems.splice(fromIndex, 1);
43
+ if (moveTo === -1) {
44
+ newItems.push(item);
45
+ } else {
46
+ const offset = moveTo > fromIndex ? 0 : 0;
47
+ newItems.splice(moveTo + offset, 0, item);
48
+ }
49
+ return newItems;
50
+ };
51
+ const moveItem = (items, fromIndex, toIndex) => {
52
+ if (fromIndex === toIndex) {
53
+ return items;
54
+ } else {
55
+ const newItems = items.slice();
56
+ const [item] = newItems.splice(fromIndex, 1);
57
+ if (toIndex === -1) {
58
+ return newItems.concat(item);
59
+ } else {
60
+ const offset = toIndex > fromIndex ? 0 : 0;
61
+ newItems.splice(toIndex + offset, 0, item);
62
+ return newItems;
63
+ }
64
+ }
65
+ };
66
+ const getAddedItems = (values, newValues) => {
67
+ const isNew = (v) => !values?.includes(v);
68
+ if (values === void 0) {
69
+ return newValues;
70
+ } else if (newValues.some(isNew)) {
71
+ return newValues.filter(isNew);
72
+ } else {
73
+ return [];
74
+ }
75
+ };
76
+ const getMissingItems = (sourceItems, items, identity) => items.filter((i) => sourceItems.findIndex((s) => identity(s) === i) === -1);
77
+
78
+ export { getAddedItems, getMissingItems, itemsChanged, itemsOrOrderChanged, moveItem, moveItemDeprecated, partition };
79
+ //# sourceMappingURL=array-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-utils.js","sources":["../../../../../../packages/vuu-utils/src/array-utils.ts"],"sourcesContent":["export type PartitionTest<T> = (value: T, index: number) => boolean;\n\nexport function partition<T>(\n array: T[],\n test: PartitionTest<T>,\n pass: T[] = [],\n fail: T[] = []\n): [T[], T[]] {\n for (let i = 0, len = array.length; i < len; i++) {\n (test(array[i], i) ? pass : fail).push(array[i]);\n }\n return [pass, fail];\n}\n\n// Note order of items can be different between arrays\n// If an identityProperty is not defined, item identity is used\nexport function itemsChanged<T = unknown>(\n currentItems: T[],\n newItems: T[],\n identityProperty?: string\n) {\n if (currentItems.length !== newItems.length) {\n return true;\n }\n if (identityProperty === undefined) {\n return !currentItems.every((item) => newItems.includes(item));\n } else {\n return currentItems.some(\n (currentItem) =>\n newItems.findIndex(\n (newItem) =>\n (newItem as { [key: string]: unknown })[identityProperty] ===\n (currentItem as { [key: string]: unknown })[identityProperty]\n ) === -1\n );\n }\n}\n\nexport function itemsOrOrderChanged<T = unknown>(\n currentItems: T[],\n newItems: T[],\n identityProperty?: string\n) {\n if (currentItems.length !== newItems.length) {\n return true;\n }\n if (identityProperty === undefined) {\n return currentItems.some((item, index) => newItems[index] !== item);\n } else {\n return currentItems.some(\n (currentItem, index) =>\n (newItems[index] as { [key: string]: unknown })[identityProperty] !==\n (currentItem as { [key: string]: unknown })[identityProperty]\n );\n }\n}\n\nexport const moveItemDeprecated = <T = unknown>(\n items: T[],\n item: T,\n moveTo: number\n): T[] => {\n const fromIndex = items.indexOf(item);\n if (fromIndex === moveTo) {\n return items;\n }\n const newItems = items.slice();\n if (fromIndex === -1) {\n throw Error(\"moveItem, item to be moved not found\");\n }\n newItems.splice(fromIndex, 1);\n if (moveTo === -1) {\n newItems.push(item);\n } else {\n const offset = moveTo > fromIndex ? 0 : 0;\n newItems.splice(moveTo + offset, 0, item);\n }\n return newItems;\n};\n\nexport const moveItem = <T = unknown>(\n items: T[],\n fromIndex: number,\n toIndex: number\n): T[] => {\n if (fromIndex === toIndex) {\n return items;\n } else {\n const newItems = items.slice();\n const [item] = newItems.splice(fromIndex, 1);\n if (toIndex === -1) {\n return newItems.concat(item);\n } else {\n const offset = toIndex > fromIndex ? 0 : 0;\n newItems.splice(toIndex + offset, 0, item);\n return newItems;\n }\n }\n};\n\nexport const getAddedItems = <T>(values: undefined | T[], newValues: T[]) => {\n const isNew = (v: T) => !values?.includes(v);\n if (values === undefined) {\n return newValues;\n } else if (newValues.some(isNew)) {\n return newValues.filter(isNew);\n } else {\n return [] as T[];\n }\n};\n\nexport const getMissingItems = <T, I>(\n sourceItems: T[],\n items: I[],\n identity: (s: T) => I\n) =>\n items.filter((i) => sourceItems.findIndex((s) => identity(s) === i) === -1);\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ function boxContainsPoint(rect, x, y) {
2
+ if (rect) {
3
+ return x >= rect.left && x < rect.right && y >= rect.top && y < rect.bottom;
4
+ }
5
+ }
6
+ function getCenteredBox({ right, left, top, bottom }, pctSize) {
7
+ const pctOffset = (1 - pctSize) / 2;
8
+ const w = (right - left) * pctOffset;
9
+ const h = (bottom - top) * pctOffset;
10
+ return { left: left + w, top: top + h, right: right - w, bottom: bottom - h };
11
+ }
12
+ function pointPositionWithinRect(x, y, rect, borderZone = 30) {
13
+ const width = rect.right - rect.left;
14
+ const height = rect.bottom - rect.top;
15
+ const posX = x - rect.left;
16
+ const posY = y - rect.top;
17
+ let closeToTheEdge = 0;
18
+ if (posX < borderZone) closeToTheEdge += 8;
19
+ if (posX > width - borderZone) closeToTheEdge += 2;
20
+ if (posY < borderZone) closeToTheEdge += 1;
21
+ if (posY > height - borderZone) closeToTheEdge += 4;
22
+ return { pctX: posX / width, pctY: posY / height, closeToTheEdge };
23
+ }
24
+ const isGridLayoutSplitDirection = (position) => position !== "centre" && position !== "header";
25
+ function getPositionWithinBox(x, y, rect, pctX, pctY) {
26
+ const centerBox = getCenteredBox(rect, 0.2);
27
+ if (boxContainsPoint(centerBox, x, y)) {
28
+ return "centre";
29
+ } else {
30
+ const quadrant = `${pctY < 0.5 ? "north" : "south"}${pctX < 0.5 ? "west" : "east"}`;
31
+ switch (quadrant) {
32
+ case "northwest":
33
+ return pctX > pctY ? "north" : "west";
34
+ case "northeast":
35
+ return 1 - pctX > pctY ? "north" : "east";
36
+ case "southeast":
37
+ return pctX > pctY ? "east" : "south";
38
+ case "southwest":
39
+ return 1 - pctX > pctY ? "west" : "south";
40
+ default:
41
+ throw Error("getPositionWithinBox failed top compute position");
42
+ }
43
+ }
44
+ }
45
+
46
+ export { boxContainsPoint, getCenteredBox, getPositionWithinBox, isGridLayoutSplitDirection, pointPositionWithinRect };
47
+ //# sourceMappingURL=box-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"box-utils.js","sources":["../../../../../../packages/vuu-utils/src/box-utils.ts"],"sourcesContent":["export interface rect {\n bottom: number;\n left: number;\n right: number;\n top: number;\n}\nexport type rectTuple = [number, number, number, number];\n\nexport type dimension = \"width\" | \"height\";\n\nexport function boxContainsPoint(rect: rect, x: number, y: number) {\n if (rect) {\n return x >= rect.left && x < rect.right && y >= rect.top && y < rect.bottom;\n }\n}\n\nexport type GridLayoutSplitDirection = \"north\" | \"south\" | \"east\" | \"west\";\n\nexport type GridLayoutDropPosition =\n | GridLayoutSplitDirection\n | \"header\"\n | \"centre\";\n\nexport function getCenteredBox(\n { right, left, top, bottom }: rect,\n pctSize: number,\n) {\n const pctOffset = (1 - pctSize) / 2;\n const w = (right - left) * pctOffset;\n const h = (bottom - top) * pctOffset;\n return { left: left + w, top: top + h, right: right - w, bottom: bottom - h };\n}\n\nexport function pointPositionWithinRect(\n x: number,\n y: number,\n rect: rect,\n borderZone = 30,\n) {\n const width = rect.right - rect.left;\n const height = rect.bottom - rect.top;\n const posX = x - rect.left;\n const posY = y - rect.top;\n let closeToTheEdge = 0;\n\n if (posX < borderZone) closeToTheEdge += 8;\n if (posX > width - borderZone) closeToTheEdge += 2;\n if (posY < borderZone) closeToTheEdge += 1;\n if (posY > height - borderZone) closeToTheEdge += 4;\n\n return { pctX: posX / width, pctY: posY / height, closeToTheEdge };\n}\n\nexport const isGridLayoutSplitDirection = (\n position: GridLayoutDropPosition,\n): position is GridLayoutSplitDirection =>\n position !== \"centre\" && position !== \"header\";\n\nexport function getPositionWithinBox(\n x: number,\n y: number,\n rect: rect,\n pctX: number,\n pctY: number,\n): GridLayoutDropPosition {\n const centerBox = getCenteredBox(rect, 0.2);\n if (boxContainsPoint(centerBox, x, y)) {\n return \"centre\";\n } else {\n const quadrant = `${pctY < 0.5 ? \"north\" : \"south\"}${\n pctX < 0.5 ? \"west\" : \"east\"\n }`;\n\n switch (quadrant) {\n case \"northwest\":\n return pctX > pctY ? \"north\" : \"west\";\n case \"northeast\":\n return 1 - pctX > pctY ? \"north\" : \"east\";\n case \"southeast\":\n return pctX > pctY ? \"east\" : \"south\";\n case \"southwest\":\n return 1 - pctX > pctY ? \"west\" : \"south\";\n default:\n throw Error(\"getPositionWithinBox failed top compute position\");\n }\n }\n}\n"],"names":[],"mappings":"AAUgB,SAAA,gBAAA,CAAiB,IAAY,EAAA,CAAA,EAAW,CAAW,EAAA;AACjE,EAAA,IAAI,IAAM,EAAA;AACR,IAAO,OAAA,CAAA,IAAK,IAAK,CAAA,IAAA,IAAQ,CAAI,GAAA,IAAA,CAAK,SAAS,CAAK,IAAA,IAAA,CAAK,GAAO,IAAA,CAAA,GAAI,IAAK,CAAA,MAAA;AAAA;AAEzE;AASO,SAAS,eACd,EAAE,KAAA,EAAO,MAAM,GAAK,EAAA,MAAA,IACpB,OACA,EAAA;AACA,EAAM,MAAA,SAAA,GAAA,CAAa,IAAI,OAAW,IAAA,CAAA;AAClC,EAAM,MAAA,CAAA,GAAA,CAAK,QAAQ,IAAQ,IAAA,SAAA;AAC3B,EAAM,MAAA,CAAA,GAAA,CAAK,SAAS,GAAO,IAAA,SAAA;AAC3B,EAAA,OAAO,EAAE,IAAA,EAAM,IAAO,GAAA,CAAA,EAAG,GAAK,EAAA,GAAA,GAAM,CAAG,EAAA,KAAA,EAAO,KAAQ,GAAA,CAAA,EAAG,MAAQ,EAAA,MAAA,GAAS,CAAE,EAAA;AAC9E;AAEO,SAAS,uBACd,CAAA,CAAA,EACA,CACA,EAAA,IAAA,EACA,aAAa,EACb,EAAA;AACA,EAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,KAAA,GAAQ,IAAK,CAAA,IAAA;AAChC,EAAM,MAAA,MAAA,GAAS,IAAK,CAAA,MAAA,GAAS,IAAK,CAAA,GAAA;AAClC,EAAM,MAAA,IAAA,GAAO,IAAI,IAAK,CAAA,IAAA;AACtB,EAAM,MAAA,IAAA,GAAO,IAAI,IAAK,CAAA,GAAA;AACtB,EAAA,IAAI,cAAiB,GAAA,CAAA;AAErB,EAAI,IAAA,IAAA,GAAO,YAA8B,cAAA,IAAA,CAAA;AACzC,EAAI,IAAA,IAAA,GAAO,KAAQ,GAAA,UAAA,EAA8B,cAAA,IAAA,CAAA;AACjD,EAAI,IAAA,IAAA,GAAO,YAA8B,cAAA,IAAA,CAAA;AACzC,EAAI,IAAA,IAAA,GAAO,MAAS,GAAA,UAAA,EAA8B,cAAA,IAAA,CAAA;AAElD,EAAA,OAAO,EAAE,IAAM,EAAA,IAAA,GAAO,OAAO,IAAM,EAAA,IAAA,GAAO,QAAQ,cAAe,EAAA;AACnE;AAEO,MAAM,0BAA6B,GAAA,CACxC,QAEA,KAAA,QAAA,KAAa,YAAY,QAAa,KAAA;AAEjC,SAAS,oBACd,CAAA,CAAA,EACA,CACA,EAAA,IAAA,EACA,MACA,IACwB,EAAA;AACxB,EAAM,MAAA,SAAA,GAAY,cAAe,CAAA,IAAA,EAAM,GAAG,CAAA;AAC1C,EAAA,IAAI,gBAAiB,CAAA,SAAA,EAAW,CAAG,EAAA,CAAC,CAAG,EAAA;AACrC,IAAO,OAAA,QAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,QAAA,GAAW,CAAG,EAAA,IAAA,GAAO,GAAM,GAAA,OAAA,GAAU,OAAO,CAChD,EAAA,IAAA,GAAO,GAAM,GAAA,MAAA,GAAS,MACxB,CAAA,CAAA;AAEA,IAAA,QAAQ,QAAU;AAAA,MAChB,KAAK,WAAA;AACH,QAAO,OAAA,IAAA,GAAO,OAAO,OAAU,GAAA,MAAA;AAAA,MACjC,KAAK,WAAA;AACH,QAAO,OAAA,CAAA,GAAI,IAAO,GAAA,IAAA,GAAO,OAAU,GAAA,MAAA;AAAA,MACrC,KAAK,WAAA;AACH,QAAO,OAAA,IAAA,GAAO,OAAO,MAAS,GAAA,OAAA;AAAA,MAChC,KAAK,WAAA;AACH,QAAO,OAAA,CAAA,GAAI,IAAO,GAAA,IAAA,GAAO,MAAS,GAAA,OAAA;AAAA,MACpC;AACE,QAAA,MAAM,MAAM,kDAAkD,CAAA;AAAA;AAClE;AAEJ;;;;"}