@vuu-ui/vuu-utils 0.13.9 → 0.13.11

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 (317) 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 +76 -0
  26. package/cjs/packages/vuu-utils/src/DataWindow.js.map +1 -0
  27. package/cjs/packages/vuu-utils/src/ShellContext.js +13 -0
  28. package/cjs/packages/vuu-utils/src/ShellContext.js.map +1 -0
  29. package/cjs/packages/vuu-utils/src/ThemeProvider.js +85 -0
  30. package/cjs/packages/vuu-utils/src/ThemeProvider.js.map +1 -0
  31. package/cjs/packages/vuu-utils/src/array-utils.js +87 -0
  32. package/cjs/packages/vuu-utils/src/array-utils.js.map +1 -0
  33. package/cjs/packages/vuu-utils/src/box-utils.js +53 -0
  34. package/cjs/packages/vuu-utils/src/box-utils.js.map +1 -0
  35. package/cjs/packages/vuu-utils/src/column-utils.js +891 -0
  36. package/cjs/packages/vuu-utils/src/column-utils.js.map +1 -0
  37. package/cjs/packages/vuu-utils/src/common-types.js +15 -0
  38. package/cjs/packages/vuu-utils/src/common-types.js.map +1 -0
  39. package/cjs/packages/vuu-utils/src/component-registry.js +140 -0
  40. package/cjs/packages/vuu-utils/src/component-registry.js.map +1 -0
  41. package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js +20 -0
  42. package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -0
  43. package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js +24 -0
  44. package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -0
  45. package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +33 -0
  46. package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -0
  47. package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +20 -0
  48. package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -0
  49. package/cjs/packages/vuu-utils/src/cookie-utils.js +10 -0
  50. package/cjs/packages/vuu-utils/src/cookie-utils.js.map +1 -0
  51. package/cjs/packages/vuu-utils/src/css-utils.js +9 -0
  52. package/cjs/packages/vuu-utils/src/css-utils.js.map +1 -0
  53. package/cjs/packages/vuu-utils/src/data-utils.js +81 -0
  54. package/cjs/packages/vuu-utils/src/data-utils.js.map +1 -0
  55. package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js +248 -0
  56. package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -0
  57. package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js +14 -0
  58. package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +1 -0
  59. package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js +23 -0
  60. package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -0
  61. package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js +207 -0
  62. package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js.map +1 -0
  63. package/cjs/packages/vuu-utils/src/date/date-utils.js +10 -0
  64. package/cjs/packages/vuu-utils/src/date/date-utils.js.map +1 -0
  65. package/cjs/packages/vuu-utils/src/date/dateTimePattern.js +25 -0
  66. package/cjs/packages/vuu-utils/src/date/dateTimePattern.js.map +1 -0
  67. package/cjs/packages/vuu-utils/src/date/formatter.js +66 -0
  68. package/cjs/packages/vuu-utils/src/date/formatter.js.map +1 -0
  69. package/cjs/packages/vuu-utils/src/date/types.js +27 -0
  70. package/cjs/packages/vuu-utils/src/date/types.js.map +1 -0
  71. package/cjs/packages/vuu-utils/src/debug-utils.js +34 -0
  72. package/cjs/packages/vuu-utils/src/debug-utils.js.map +1 -0
  73. package/cjs/packages/vuu-utils/src/event-emitter.js +113 -0
  74. package/cjs/packages/vuu-utils/src/event-emitter.js.map +1 -0
  75. package/cjs/packages/vuu-utils/src/feature-utils.js +139 -0
  76. package/cjs/packages/vuu-utils/src/feature-utils.js.map +1 -0
  77. package/cjs/packages/vuu-utils/src/filters/filter-utils.js +136 -0
  78. package/cjs/packages/vuu-utils/src/filters/filter-utils.js.map +1 -0
  79. package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js +76 -0
  80. package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -0
  81. package/cjs/packages/vuu-utils/src/form-utils.js +48 -0
  82. package/cjs/packages/vuu-utils/src/form-utils.js.map +1 -0
  83. package/cjs/packages/vuu-utils/src/formatting-utils.js +68 -0
  84. package/cjs/packages/vuu-utils/src/formatting-utils.js.map +1 -0
  85. package/cjs/packages/vuu-utils/src/getUniqueId.js +6 -0
  86. package/cjs/packages/vuu-utils/src/getUniqueId.js.map +1 -0
  87. package/cjs/packages/vuu-utils/src/group-utils.js +27 -0
  88. package/cjs/packages/vuu-utils/src/group-utils.js.map +1 -0
  89. package/cjs/packages/vuu-utils/src/html-utils.js +162 -0
  90. package/cjs/packages/vuu-utils/src/html-utils.js.map +1 -0
  91. package/cjs/packages/vuu-utils/src/index.js +414 -0
  92. package/cjs/packages/vuu-utils/src/index.js.map +1 -0
  93. package/cjs/packages/vuu-utils/src/input-utils.js +10 -0
  94. package/cjs/packages/vuu-utils/src/input-utils.js.map +1 -0
  95. package/cjs/packages/vuu-utils/src/invariant.js +13 -0
  96. package/cjs/packages/vuu-utils/src/invariant.js.map +1 -0
  97. package/cjs/packages/vuu-utils/src/itemToString.js +23 -0
  98. package/cjs/packages/vuu-utils/src/itemToString.js.map +1 -0
  99. package/cjs/packages/vuu-utils/src/json-utils.js +103 -0
  100. package/cjs/packages/vuu-utils/src/json-utils.js.map +1 -0
  101. package/cjs/packages/vuu-utils/src/keyboard-utils.js +30 -0
  102. package/cjs/packages/vuu-utils/src/keyboard-utils.js.map +1 -0
  103. package/cjs/packages/vuu-utils/src/keyset.js +72 -0
  104. package/cjs/packages/vuu-utils/src/keyset.js.map +1 -0
  105. package/cjs/packages/vuu-utils/src/list-utils.js +11 -0
  106. package/cjs/packages/vuu-utils/src/list-utils.js.map +1 -0
  107. package/cjs/packages/vuu-utils/src/local-storage-utils.js +20 -0
  108. package/cjs/packages/vuu-utils/src/local-storage-utils.js.map +1 -0
  109. package/cjs/packages/vuu-utils/src/logging-utils.js +65 -0
  110. package/cjs/packages/vuu-utils/src/logging-utils.js.map +1 -0
  111. package/cjs/packages/vuu-utils/src/menu-utils.js +10 -0
  112. package/cjs/packages/vuu-utils/src/menu-utils.js.map +1 -0
  113. package/cjs/packages/vuu-utils/src/module-utils.js +6 -0
  114. package/cjs/packages/vuu-utils/src/module-utils.js.map +1 -0
  115. package/cjs/packages/vuu-utils/src/moving-window.js +103 -0
  116. package/cjs/packages/vuu-utils/src/moving-window.js.map +1 -0
  117. package/cjs/packages/vuu-utils/src/nanoid/index.js +22 -0
  118. package/cjs/packages/vuu-utils/src/nanoid/index.js.map +1 -0
  119. package/cjs/packages/vuu-utils/src/perf-utils.js +35 -0
  120. package/cjs/packages/vuu-utils/src/perf-utils.js.map +1 -0
  121. package/cjs/packages/vuu-utils/src/promise-utils.js +42 -0
  122. package/cjs/packages/vuu-utils/src/promise-utils.js.map +1 -0
  123. package/cjs/packages/vuu-utils/src/protocol-message-utils.js +86 -0
  124. package/cjs/packages/vuu-utils/src/protocol-message-utils.js.map +1 -0
  125. package/cjs/packages/vuu-utils/src/range-utils.js +152 -0
  126. package/cjs/packages/vuu-utils/src/range-utils.js.map +1 -0
  127. package/cjs/packages/vuu-utils/src/react-utils.js +36 -0
  128. package/cjs/packages/vuu-utils/src/react-utils.js.map +1 -0
  129. package/cjs/packages/vuu-utils/src/round-decimal.js +86 -0
  130. package/cjs/packages/vuu-utils/src/round-decimal.js.map +1 -0
  131. package/cjs/packages/vuu-utils/src/row-utils.js +44 -0
  132. package/cjs/packages/vuu-utils/src/row-utils.js.map +1 -0
  133. package/cjs/packages/vuu-utils/src/selection-utils.js +246 -0
  134. package/cjs/packages/vuu-utils/src/selection-utils.js.map +1 -0
  135. package/cjs/packages/vuu-utils/src/shell-layout-types.js +13 -0
  136. package/cjs/packages/vuu-utils/src/shell-layout-types.js.map +1 -0
  137. package/cjs/packages/vuu-utils/src/sort-utils.js +78 -0
  138. package/cjs/packages/vuu-utils/src/sort-utils.js.map +1 -0
  139. package/cjs/packages/vuu-utils/src/table-schema-utils.js +13 -0
  140. package/cjs/packages/vuu-utils/src/table-schema-utils.js.map +1 -0
  141. package/cjs/packages/vuu-utils/src/text-utils.js +21 -0
  142. package/cjs/packages/vuu-utils/src/text-utils.js.map +1 -0
  143. package/cjs/packages/vuu-utils/src/tree-utils.js +106 -0
  144. package/cjs/packages/vuu-utils/src/tree-utils.js.map +1 -0
  145. package/cjs/packages/vuu-utils/src/ts-utils.js +12 -0
  146. package/cjs/packages/vuu-utils/src/ts-utils.js.map +1 -0
  147. package/cjs/packages/vuu-utils/src/typeahead-utils.js +6 -0
  148. package/cjs/packages/vuu-utils/src/typeahead-utils.js.map +1 -0
  149. package/cjs/packages/vuu-utils/src/url-utils.js +21 -0
  150. package/cjs/packages/vuu-utils/src/url-utils.js.map +1 -0
  151. package/cjs/packages/vuu-utils/src/useId.js +9 -0
  152. package/cjs/packages/vuu-utils/src/useId.js.map +1 -0
  153. package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +17 -0
  154. package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -0
  155. package/cjs/packages/vuu-utils/src/useStateRef.js +23 -0
  156. package/cjs/packages/vuu-utils/src/useStateRef.js.map +1 -0
  157. package/esm/node_modules/@dnd-kit/abstract/index.js +612 -0
  158. package/esm/node_modules/@dnd-kit/abstract/index.js.map +1 -0
  159. package/esm/node_modules/@dnd-kit/abstract/modifiers.js +82 -0
  160. package/esm/node_modules/@dnd-kit/abstract/modifiers.js.map +1 -0
  161. package/esm/node_modules/@dnd-kit/collision/dist/index.js +86 -0
  162. package/esm/node_modules/@dnd-kit/collision/dist/index.js.map +1 -0
  163. package/esm/node_modules/@dnd-kit/dom/index.js +1642 -0
  164. package/esm/node_modules/@dnd-kit/dom/index.js.map +1 -0
  165. package/esm/node_modules/@dnd-kit/dom/sortable.js +827 -0
  166. package/esm/node_modules/@dnd-kit/dom/sortable.js.map +1 -0
  167. package/esm/node_modules/@dnd-kit/dom/utilities.js +1344 -0
  168. package/esm/node_modules/@dnd-kit/dom/utilities.js.map +1 -0
  169. package/esm/node_modules/@dnd-kit/geometry/dist/index.js +303 -0
  170. package/esm/node_modules/@dnd-kit/geometry/dist/index.js.map +1 -0
  171. package/esm/node_modules/@dnd-kit/react/hooks.js +80 -0
  172. package/esm/node_modules/@dnd-kit/react/hooks.js.map +1 -0
  173. package/esm/node_modules/@dnd-kit/react/sortable.js +175 -0
  174. package/esm/node_modules/@dnd-kit/react/sortable.js.map +1 -0
  175. package/esm/node_modules/@dnd-kit/react/utilities.js +17 -0
  176. package/esm/node_modules/@dnd-kit/react/utilities.js.map +1 -0
  177. package/esm/node_modules/@dnd-kit/state/dist/index.js +259 -0
  178. package/esm/node_modules/@dnd-kit/state/dist/index.js.map +1 -0
  179. package/esm/node_modules/@preact/signals-core/dist/signals-core.js +4 -0
  180. package/esm/node_modules/@preact/signals-core/dist/signals-core.js.map +1 -0
  181. package/esm/packages/vuu-utils/src/DataWindow.js +74 -0
  182. package/esm/packages/vuu-utils/src/DataWindow.js.map +1 -0
  183. package/esm/packages/vuu-utils/src/ShellContext.js +10 -0
  184. package/esm/packages/vuu-utils/src/ShellContext.js.map +1 -0
  185. package/esm/packages/vuu-utils/src/ThemeProvider.js +78 -0
  186. package/esm/packages/vuu-utils/src/ThemeProvider.js.map +1 -0
  187. package/esm/packages/vuu-utils/src/array-utils.js +79 -0
  188. package/esm/packages/vuu-utils/src/array-utils.js.map +1 -0
  189. package/esm/packages/vuu-utils/src/box-utils.js +47 -0
  190. package/esm/packages/vuu-utils/src/box-utils.js.map +1 -0
  191. package/esm/packages/vuu-utils/src/column-utils.js +815 -0
  192. package/esm/packages/vuu-utils/src/column-utils.js.map +1 -0
  193. package/esm/packages/vuu-utils/src/common-types.js +13 -0
  194. package/esm/packages/vuu-utils/src/common-types.js.map +1 -0
  195. package/esm/packages/vuu-utils/src/component-registry.js +124 -0
  196. package/esm/packages/vuu-utils/src/component-registry.js.map +1 -0
  197. package/esm/packages/vuu-utils/src/context-definitions/DataContext.js +18 -0
  198. package/esm/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -0
  199. package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js +20 -0
  200. package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -0
  201. package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +29 -0
  202. package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -0
  203. package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +17 -0
  204. package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -0
  205. package/esm/packages/vuu-utils/src/cookie-utils.js +8 -0
  206. package/esm/packages/vuu-utils/src/cookie-utils.js.map +1 -0
  207. package/esm/packages/vuu-utils/src/css-utils.js +7 -0
  208. package/esm/packages/vuu-utils/src/css-utils.js.map +1 -0
  209. package/esm/packages/vuu-utils/src/data-utils.js +68 -0
  210. package/esm/packages/vuu-utils/src/data-utils.js.map +1 -0
  211. package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js +246 -0
  212. package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -0
  213. package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js +8 -0
  214. package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +1 -0
  215. package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js +21 -0
  216. package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -0
  217. package/esm/packages/vuu-utils/src/datasource/datasource-utils.js +184 -0
  218. package/esm/packages/vuu-utils/src/datasource/datasource-utils.js.map +1 -0
  219. package/esm/packages/vuu-utils/src/date/date-utils.js +8 -0
  220. package/esm/packages/vuu-utils/src/date/date-utils.js.map +1 -0
  221. package/esm/packages/vuu-utils/src/date/dateTimePattern.js +21 -0
  222. package/esm/packages/vuu-utils/src/date/dateTimePattern.js.map +1 -0
  223. package/esm/packages/vuu-utils/src/date/formatter.js +63 -0
  224. package/esm/packages/vuu-utils/src/date/formatter.js.map +1 -0
  225. package/esm/packages/vuu-utils/src/date/types.js +21 -0
  226. package/esm/packages/vuu-utils/src/date/types.js.map +1 -0
  227. package/esm/packages/vuu-utils/src/debug-utils.js +32 -0
  228. package/esm/packages/vuu-utils/src/debug-utils.js.map +1 -0
  229. package/esm/packages/vuu-utils/src/event-emitter.js +111 -0
  230. package/esm/packages/vuu-utils/src/event-emitter.js.map +1 -0
  231. package/esm/packages/vuu-utils/src/feature-utils.js +125 -0
  232. package/esm/packages/vuu-utils/src/feature-utils.js.map +1 -0
  233. package/esm/packages/vuu-utils/src/filters/filter-utils.js +120 -0
  234. package/esm/packages/vuu-utils/src/filters/filter-utils.js.map +1 -0
  235. package/esm/packages/vuu-utils/src/filters/filterAsQuery.js +72 -0
  236. package/esm/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -0
  237. package/esm/packages/vuu-utils/src/form-utils.js +44 -0
  238. package/esm/packages/vuu-utils/src/form-utils.js.map +1 -0
  239. package/esm/packages/vuu-utils/src/formatting-utils.js +63 -0
  240. package/esm/packages/vuu-utils/src/formatting-utils.js.map +1 -0
  241. package/esm/packages/vuu-utils/src/getUniqueId.js +4 -0
  242. package/esm/packages/vuu-utils/src/getUniqueId.js.map +1 -0
  243. package/esm/packages/vuu-utils/src/group-utils.js +23 -0
  244. package/esm/packages/vuu-utils/src/group-utils.js.map +1 -0
  245. package/esm/packages/vuu-utils/src/html-utils.js +145 -0
  246. package/esm/packages/vuu-utils/src/html-utils.js.map +1 -0
  247. package/esm/packages/vuu-utils/src/index.js +70 -0
  248. package/esm/packages/vuu-utils/src/index.js.map +1 -0
  249. package/esm/packages/vuu-utils/src/input-utils.js +7 -0
  250. package/esm/packages/vuu-utils/src/input-utils.js.map +1 -0
  251. package/esm/packages/vuu-utils/src/invariant.js +11 -0
  252. package/esm/packages/vuu-utils/src/invariant.js.map +1 -0
  253. package/esm/packages/vuu-utils/src/itemToString.js +21 -0
  254. package/esm/packages/vuu-utils/src/itemToString.js.map +1 -0
  255. package/esm/packages/vuu-utils/src/json-utils.js +101 -0
  256. package/esm/packages/vuu-utils/src/json-utils.js.map +1 -0
  257. package/esm/packages/vuu-utils/src/keyboard-utils.js +16 -0
  258. package/esm/packages/vuu-utils/src/keyboard-utils.js.map +1 -0
  259. package/esm/packages/vuu-utils/src/keyset.js +70 -0
  260. package/esm/packages/vuu-utils/src/keyset.js.map +1 -0
  261. package/esm/packages/vuu-utils/src/list-utils.js +9 -0
  262. package/esm/packages/vuu-utils/src/list-utils.js.map +1 -0
  263. package/esm/packages/vuu-utils/src/local-storage-utils.js +16 -0
  264. package/esm/packages/vuu-utils/src/local-storage-utils.js.map +1 -0
  265. package/esm/packages/vuu-utils/src/logging-utils.js +61 -0
  266. package/esm/packages/vuu-utils/src/logging-utils.js.map +1 -0
  267. package/esm/packages/vuu-utils/src/menu-utils.js +6 -0
  268. package/esm/packages/vuu-utils/src/menu-utils.js.map +1 -0
  269. package/esm/packages/vuu-utils/src/module-utils.js +4 -0
  270. package/esm/packages/vuu-utils/src/module-utils.js.map +1 -0
  271. package/esm/packages/vuu-utils/src/moving-window.js +101 -0
  272. package/esm/packages/vuu-utils/src/moving-window.js.map +1 -0
  273. package/esm/packages/vuu-utils/src/nanoid/index.js +20 -0
  274. package/esm/packages/vuu-utils/src/nanoid/index.js.map +1 -0
  275. package/esm/packages/vuu-utils/src/perf-utils.js +32 -0
  276. package/esm/packages/vuu-utils/src/perf-utils.js.map +1 -0
  277. package/esm/packages/vuu-utils/src/promise-utils.js +40 -0
  278. package/esm/packages/vuu-utils/src/promise-utils.js.map +1 -0
  279. package/esm/packages/vuu-utils/src/protocol-message-utils.js +71 -0
  280. package/esm/packages/vuu-utils/src/protocol-message-utils.js.map +1 -0
  281. package/esm/packages/vuu-utils/src/range-utils.js +145 -0
  282. package/esm/packages/vuu-utils/src/range-utils.js.map +1 -0
  283. package/esm/packages/vuu-utils/src/react-utils.js +32 -0
  284. package/esm/packages/vuu-utils/src/react-utils.js.map +1 -0
  285. package/esm/packages/vuu-utils/src/round-decimal.js +84 -0
  286. package/esm/packages/vuu-utils/src/round-decimal.js.map +1 -0
  287. package/esm/packages/vuu-utils/src/row-utils.js +40 -0
  288. package/esm/packages/vuu-utils/src/row-utils.js.map +1 -0
  289. package/esm/packages/vuu-utils/src/selection-utils.js +236 -0
  290. package/esm/packages/vuu-utils/src/selection-utils.js.map +1 -0
  291. package/esm/packages/vuu-utils/src/shell-layout-types.js +11 -0
  292. package/esm/packages/vuu-utils/src/shell-layout-types.js.map +1 -0
  293. package/esm/packages/vuu-utils/src/sort-utils.js +73 -0
  294. package/esm/packages/vuu-utils/src/sort-utils.js.map +1 -0
  295. package/esm/packages/vuu-utils/src/table-schema-utils.js +11 -0
  296. package/esm/packages/vuu-utils/src/table-schema-utils.js.map +1 -0
  297. package/esm/packages/vuu-utils/src/text-utils.js +18 -0
  298. package/esm/packages/vuu-utils/src/text-utils.js.map +1 -0
  299. package/esm/packages/vuu-utils/src/tree-utils.js +100 -0
  300. package/esm/packages/vuu-utils/src/tree-utils.js.map +1 -0
  301. package/esm/packages/vuu-utils/src/ts-utils.js +8 -0
  302. package/esm/packages/vuu-utils/src/ts-utils.js.map +1 -0
  303. package/esm/packages/vuu-utils/src/typeahead-utils.js +4 -0
  304. package/esm/packages/vuu-utils/src/typeahead-utils.js.map +1 -0
  305. package/esm/packages/vuu-utils/src/url-utils.js +18 -0
  306. package/esm/packages/vuu-utils/src/url-utils.js.map +1 -0
  307. package/esm/packages/vuu-utils/src/useId.js +7 -0
  308. package/esm/packages/vuu-utils/src/useId.js.map +1 -0
  309. package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +15 -0
  310. package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -0
  311. package/esm/packages/vuu-utils/src/useStateRef.js +21 -0
  312. package/esm/packages/vuu-utils/src/useStateRef.js.map +1 -0
  313. package/package.json +11 -8
  314. package/cjs/index.js +0 -9622
  315. package/cjs/index.js.map +0 -1
  316. package/esm/index.js +0 -9283
  317. package/esm/index.js.map +0 -1
@@ -0,0 +1,1389 @@
1
+ 'use strict';
2
+
3
+ var index = require('../geometry/dist/index.js');
4
+
5
+ var __typeError = (msg) => {
6
+ throw TypeError(msg);
7
+ };
8
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
9
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
10
+ 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);
11
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
12
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
13
+
14
+ // src/utilities/type-guards/isKeyframeEffect.ts
15
+ function isKeyframeEffect(effect) {
16
+ if (!effect) return false;
17
+ if (effect instanceof KeyframeEffect) return true;
18
+ return "getKeyframes" in effect && typeof effect.getKeyframes === "function";
19
+ }
20
+
21
+ // src/utilities/animations/getFinalKeyframe.ts
22
+ function getFinalKeyframe(element, match) {
23
+ const animations2 = element.getAnimations();
24
+ if (animations2.length > 0) {
25
+ for (const animation of animations2) {
26
+ if (animation.playState !== "running") continue;
27
+ const { effect } = animation;
28
+ const keyframes = isKeyframeEffect(effect) ? effect.getKeyframes() : [];
29
+ const matchedKeyframes = keyframes.filter(match);
30
+ if (matchedKeyframes.length > 0) {
31
+ return [matchedKeyframes[matchedKeyframes.length - 1], animation];
32
+ }
33
+ }
34
+ }
35
+ return null;
36
+ }
37
+
38
+ // src/utilities/bounding-rectangle/getBoundingRectangle.ts
39
+ function getBoundingRectangle(element) {
40
+ const { width, height, top, left, bottom, right } = element.getBoundingClientRect();
41
+ return { width, height, top, left, bottom, right };
42
+ }
43
+
44
+ // src/utilities/execution-context/canUseDOM.ts
45
+ var canUseDOM = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined";
46
+
47
+ // src/utilities/type-guards/isWindow.ts
48
+ function isWindow(element) {
49
+ const elementString = Object.prototype.toString.call(element);
50
+ return elementString === "[object Window]" || // In Electron context the Window object serializes to [object global]
51
+ elementString === "[object global]";
52
+ }
53
+
54
+ // src/utilities/type-guards/isNode.ts
55
+ function isNode(node) {
56
+ return "nodeType" in node;
57
+ }
58
+
59
+ // src/utilities/execution-context/getWindow.ts
60
+ function getWindow(target) {
61
+ var _a, _b, _c;
62
+ if (!target) {
63
+ return window;
64
+ }
65
+ if (isWindow(target)) {
66
+ return target;
67
+ }
68
+ if (!isNode(target)) {
69
+ return window;
70
+ }
71
+ if ("defaultView" in target) {
72
+ return (_a = target.defaultView) != null ? _a : window;
73
+ }
74
+ return (_c = (_b = target.ownerDocument) == null ? void 0 : _b.defaultView) != null ? _c : window;
75
+ }
76
+
77
+ // src/utilities/type-guards/isDocument.ts
78
+ function isDocument(node) {
79
+ const { Document } = getWindow(node);
80
+ return node instanceof Document || "nodeType" in node && node.nodeType === Node.DOCUMENT_NODE;
81
+ }
82
+
83
+ // src/utilities/type-guards/isHTMLElement.ts
84
+ function isHTMLElement(node) {
85
+ if (!node || isWindow(node)) return false;
86
+ return node instanceof getWindow(node).HTMLElement || "namespaceURI" in node && typeof node.namespaceURI === "string" && node.namespaceURI.endsWith("html");
87
+ }
88
+
89
+ // src/utilities/type-guards/isSVGElement.ts
90
+ function isSVGElement(node) {
91
+ return node instanceof getWindow(node).SVGElement || "namespaceURI" in node && typeof node.namespaceURI === "string" && node.namespaceURI.endsWith("svg");
92
+ }
93
+
94
+ // src/utilities/execution-context/getDocument.ts
95
+ function getDocument(target) {
96
+ if (!target) {
97
+ return document;
98
+ }
99
+ if (isWindow(target)) {
100
+ return target.document;
101
+ }
102
+ if (!isNode(target)) {
103
+ return document;
104
+ }
105
+ if (isDocument(target)) {
106
+ return target;
107
+ }
108
+ if (isHTMLElement(target) || isSVGElement(target)) {
109
+ return target.ownerDocument;
110
+ }
111
+ return document;
112
+ }
113
+
114
+ // src/utilities/bounding-rectangle/getViewportBoundingRectangle.ts
115
+ function getViewportBoundingRectangle(element) {
116
+ const { documentElement } = getDocument(element);
117
+ const width = documentElement.clientWidth;
118
+ const height = documentElement.clientHeight;
119
+ return {
120
+ top: 0,
121
+ left: 0,
122
+ right: width,
123
+ bottom: height,
124
+ width,
125
+ height
126
+ };
127
+ }
128
+
129
+ // src/utilities/bounding-rectangle/isOverflowVisible.ts
130
+ function isOverflowVisible(element, style) {
131
+ if (isDetailsElement(element) && element.open === false) {
132
+ return false;
133
+ }
134
+ const { overflow, overflowX, overflowY } = getComputedStyle(element);
135
+ return overflow === "visible" && overflowX === "visible" && overflowY === "visible";
136
+ }
137
+ function isDetailsElement(element) {
138
+ return element.tagName === "DETAILS";
139
+ }
140
+
141
+ // src/utilities/bounding-rectangle/getVisibleBoundingRectangle.ts
142
+ function getVisibleBoundingRectangle(element, boundingClientRect = element.getBoundingClientRect(), margin = 0) {
143
+ var _a;
144
+ let rect = boundingClientRect;
145
+ const { ownerDocument } = element;
146
+ const ownerWindow = (_a = ownerDocument.defaultView) != null ? _a : window;
147
+ let ancestor = element.parentElement;
148
+ while (ancestor && ancestor !== ownerDocument.documentElement) {
149
+ if (!isOverflowVisible(ancestor)) {
150
+ const ancestorRect = ancestor.getBoundingClientRect();
151
+ const marginTop = margin * (ancestorRect.bottom - ancestorRect.top);
152
+ const marginRight = margin * (ancestorRect.right - ancestorRect.left);
153
+ const marginBottom = margin * (ancestorRect.bottom - ancestorRect.top);
154
+ const marginLeft = margin * (ancestorRect.right - ancestorRect.left);
155
+ rect = {
156
+ top: Math.max(rect.top, ancestorRect.top - marginTop),
157
+ right: Math.min(rect.right, ancestorRect.right + marginRight),
158
+ bottom: Math.min(rect.bottom, ancestorRect.bottom + marginBottom),
159
+ left: Math.max(rect.left, ancestorRect.left - marginLeft),
160
+ width: 0,
161
+ // Will be calculated next
162
+ height: 0
163
+ // Will be calculated next
164
+ };
165
+ rect.width = rect.right - rect.left;
166
+ rect.height = rect.bottom - rect.top;
167
+ }
168
+ ancestor = ancestor.parentElement;
169
+ }
170
+ const viewportWidth = ownerWindow.innerWidth;
171
+ const viewportHeight = ownerWindow.innerHeight;
172
+ const viewportMarginY = margin * viewportHeight;
173
+ const viewportMarginX = margin * viewportWidth;
174
+ rect = {
175
+ top: Math.max(rect.top, 0 - viewportMarginY),
176
+ right: Math.min(rect.right, viewportWidth + viewportMarginX),
177
+ bottom: Math.min(rect.bottom, viewportHeight + viewportMarginY),
178
+ left: Math.max(rect.left, 0 - viewportMarginX),
179
+ width: 0,
180
+ // Will be calculated next
181
+ height: 0
182
+ // Will be calculated next
183
+ };
184
+ rect.width = rect.right - rect.left;
185
+ rect.height = rect.bottom - rect.top;
186
+ if (rect.width < 0) {
187
+ rect.width = 0;
188
+ }
189
+ if (rect.height < 0) {
190
+ rect.height = 0;
191
+ }
192
+ return rect;
193
+ }
194
+
195
+ // src/utilities/execution-context/isSafari.ts
196
+ function isSafari() {
197
+ return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
198
+ }
199
+
200
+ // src/utilities/element/cloneElement.ts
201
+ function cloneElement(element) {
202
+ const selector = "input, textarea, select, canvas, [contenteditable]";
203
+ const clonedElement = element.cloneNode(true);
204
+ const fields = Array.from(element.querySelectorAll(selector));
205
+ const clonedFields = Array.from(clonedElement.querySelectorAll(selector));
206
+ clonedFields.forEach((field, index) => {
207
+ const originalField = fields[index];
208
+ if (isField(field) && isField(originalField)) {
209
+ if (field.type !== "file") {
210
+ field.value = originalField.value;
211
+ }
212
+ if (field.type === "radio" && field.name) {
213
+ field.name = `Cloned__${field.name}`;
214
+ }
215
+ }
216
+ if (isCanvasElement(field) && isCanvasElement(originalField) && originalField.width > 0 && originalField.height > 0) {
217
+ const destCtx = field.getContext("2d");
218
+ destCtx == null ? void 0 : destCtx.drawImage(originalField, 0, 0);
219
+ }
220
+ });
221
+ return clonedElement;
222
+ }
223
+ function isField(element) {
224
+ return "value" in element;
225
+ }
226
+ function isCanvasElement(element) {
227
+ return element.tagName === "CANVAS";
228
+ }
229
+
230
+ // src/utilities/element/getElementFromPoint.ts
231
+ function getElementFromPoint(document2, { x, y }) {
232
+ const element = document2.elementFromPoint(x, y);
233
+ if (isIFrameElement(element)) {
234
+ const { contentDocument } = element;
235
+ if (contentDocument) {
236
+ const { left, top } = element.getBoundingClientRect();
237
+ return getElementFromPoint(contentDocument, {
238
+ x: x - left,
239
+ y: y - top
240
+ });
241
+ }
242
+ }
243
+ return element;
244
+ }
245
+ function isIFrameElement(element) {
246
+ return (element == null ? void 0 : element.tagName) === "IFRAME";
247
+ }
248
+
249
+ // src/utilities/element/proxiedElements.ts
250
+ var ProxiedElements = /* @__PURE__ */ new WeakMap();
251
+
252
+ // src/utilities/event-listeners/Listeners.ts
253
+ var Listeners = class {
254
+ constructor() {
255
+ this.entries = /* @__PURE__ */ new Set();
256
+ this.clear = () => {
257
+ for (const entry of this.entries) {
258
+ const [target, { type, listener, options }] = entry;
259
+ target.removeEventListener(type, listener, options);
260
+ }
261
+ this.entries.clear();
262
+ };
263
+ }
264
+ bind(target, input) {
265
+ const listeners = Array.isArray(input) ? input : [input];
266
+ const entries = [];
267
+ for (const descriptor of listeners) {
268
+ const { type, listener, options } = descriptor;
269
+ const entry = [target, descriptor];
270
+ target.addEventListener(type, listener, options);
271
+ this.entries.add(entry);
272
+ entries.push(entry);
273
+ }
274
+ return function cleanup() {
275
+ for (const [target2, { type, listener, options }] of entries) {
276
+ target2.removeEventListener(type, listener, options);
277
+ }
278
+ };
279
+ }
280
+ };
281
+
282
+ // src/utilities/frame/getFrameElement.ts
283
+ function getFrameElement(el) {
284
+ const refWindow = el == null ? void 0 : el.ownerDocument.defaultView;
285
+ if (refWindow && refWindow.self !== refWindow.parent) {
286
+ return refWindow.frameElement;
287
+ }
288
+ }
289
+
290
+ // src/utilities/frame/getFrameElements.ts
291
+ function getFrameElements(el) {
292
+ const frames = /* @__PURE__ */ new Set();
293
+ let frame = getFrameElement(el);
294
+ while (frame) {
295
+ frames.add(frame);
296
+ frame = getFrameElement(frame);
297
+ }
298
+ return frames;
299
+ }
300
+
301
+ // src/utilities/scheduling/timeout.ts
302
+ function timeout(callback, duration) {
303
+ const id = setTimeout(callback, duration);
304
+ return () => clearTimeout(id);
305
+ }
306
+
307
+ // src/utilities/scheduling/throttle.ts
308
+ function throttle(func, limit) {
309
+ const time = () => performance.now();
310
+ let cancel;
311
+ let lastRan;
312
+ return function(...args) {
313
+ const context = this;
314
+ if (!lastRan) {
315
+ func.apply(context, args);
316
+ lastRan = time();
317
+ } else {
318
+ cancel == null ? void 0 : cancel();
319
+ cancel = timeout(
320
+ () => {
321
+ func.apply(context, args);
322
+ lastRan = time();
323
+ },
324
+ limit - (time() - lastRan)
325
+ );
326
+ }
327
+ };
328
+ }
329
+
330
+ // src/utilities/bounding-rectangle/isRectEqual.ts
331
+ function isRectEqual(a, b) {
332
+ if (a === b) return true;
333
+ if (!a || !b) return false;
334
+ return a.top == b.top && a.left == b.left && a.right == b.right && a.bottom == b.bottom;
335
+ }
336
+
337
+ // src/utilities/bounding-rectangle/isVisible.ts
338
+ function isVisible(element, boundingClientRect = element.getBoundingClientRect()) {
339
+ const { width, height } = getVisibleBoundingRectangle(
340
+ element,
341
+ boundingClientRect
342
+ );
343
+ return width > 0 && height > 0;
344
+ }
345
+
346
+ // src/utilities/observers/ResizeNotifier.ts
347
+ var Observer = canUseDOM ? ResizeObserver : class MockResizeObserver {
348
+ observe() {
349
+ }
350
+ unobserve() {
351
+ }
352
+ disconnect() {
353
+ }
354
+ };
355
+ var _initialized;
356
+ var ResizeNotifier = class extends Observer {
357
+ constructor(callback) {
358
+ super((entries) => {
359
+ if (!__privateGet(this, _initialized)) {
360
+ __privateSet(this, _initialized, true);
361
+ return;
362
+ }
363
+ callback(entries, this);
364
+ });
365
+ __privateAdd(this, _initialized, false);
366
+ }
367
+ };
368
+ _initialized = new WeakMap();
369
+
370
+ // src/utilities/observers/PositionObserver.ts
371
+ var threshold = Array.from({ length: 100 }, (_, index) => index / 100);
372
+ var THROTTLE_INTERVAL = 75;
373
+ var _visible, _previousBoundingClientRect, _resizeObserver, _positionObserver, _visibilityObserver, _debug, _disconnected, _observePosition, _PositionObserver_instances, notify_fn, updateDebug_fn;
374
+ var PositionObserver = class {
375
+ constructor(element, callback, options = {
376
+ debug: false,
377
+ skipInitial: false
378
+ }) {
379
+ this.element = element;
380
+ this.callback = callback;
381
+ __privateAdd(this, _PositionObserver_instances);
382
+ this.disconnect = () => {
383
+ var _a, _b, _c;
384
+ __privateSet(this, _disconnected, true);
385
+ (_a = __privateGet(this, _resizeObserver)) == null ? void 0 : _a.disconnect();
386
+ (_b = __privateGet(this, _positionObserver)) == null ? void 0 : _b.disconnect();
387
+ __privateGet(this, _visibilityObserver).disconnect();
388
+ (_c = __privateGet(this, _debug)) == null ? void 0 : _c.remove();
389
+ };
390
+ __privateAdd(this, _visible, true);
391
+ __privateAdd(this, _previousBoundingClientRect);
392
+ __privateAdd(this, _resizeObserver);
393
+ __privateAdd(this, _positionObserver);
394
+ __privateAdd(this, _visibilityObserver);
395
+ __privateAdd(this, _debug);
396
+ __privateAdd(this, _disconnected, false);
397
+ __privateAdd(this, _observePosition, throttle(() => {
398
+ var _a, _b, _c;
399
+ const { element } = this;
400
+ (_a = __privateGet(this, _positionObserver)) == null ? void 0 : _a.disconnect();
401
+ if (__privateGet(this, _disconnected) || !__privateGet(this, _visible) || !element.isConnected) {
402
+ return;
403
+ }
404
+ const root = (_b = element.ownerDocument) != null ? _b : document;
405
+ const { innerHeight, innerWidth } = (_c = root.defaultView) != null ? _c : window;
406
+ const clientRect = element.getBoundingClientRect();
407
+ const visibleRect = getVisibleBoundingRectangle(element, clientRect);
408
+ const { top, left, bottom, right } = visibleRect;
409
+ const insetTop = -Math.floor(top);
410
+ const insetLeft = -Math.floor(left);
411
+ const insetRight = -Math.floor(innerWidth - right);
412
+ const insetBottom = -Math.floor(innerHeight - bottom);
413
+ const rootMargin = `${insetTop}px ${insetRight}px ${insetBottom}px ${insetLeft}px`;
414
+ this.boundingClientRect = clientRect;
415
+ __privateSet(this, _positionObserver, new IntersectionObserver(
416
+ (entries) => {
417
+ const [entry] = entries;
418
+ const { intersectionRect } = entry;
419
+ const intersectionRatio = entry.intersectionRatio !== 1 ? entry.intersectionRatio : index.Rectangle.intersectionRatio(
420
+ intersectionRect,
421
+ getVisibleBoundingRectangle(element)
422
+ );
423
+ if (intersectionRatio !== 1) {
424
+ __privateGet(this, _observePosition).call(this);
425
+ }
426
+ },
427
+ {
428
+ threshold,
429
+ rootMargin,
430
+ root
431
+ }
432
+ ));
433
+ __privateGet(this, _positionObserver).observe(element);
434
+ __privateMethod(this, _PositionObserver_instances, notify_fn).call(this);
435
+ }, THROTTLE_INTERVAL));
436
+ this.boundingClientRect = element.getBoundingClientRect();
437
+ __privateSet(this, _visible, isVisible(element, this.boundingClientRect));
438
+ let initial = true;
439
+ this.callback = (boundingClientRect) => {
440
+ if (initial) {
441
+ initial = false;
442
+ if (options.skipInitial) return;
443
+ }
444
+ callback(boundingClientRect);
445
+ };
446
+ const root = element.ownerDocument;
447
+ if (options == null ? void 0 : options.debug) {
448
+ __privateSet(this, _debug, document.createElement("div"));
449
+ __privateGet(this, _debug).style.background = "rgba(0,0,0,0.15)";
450
+ __privateGet(this, _debug).style.position = "fixed";
451
+ __privateGet(this, _debug).style.pointerEvents = "none";
452
+ root.body.appendChild(__privateGet(this, _debug));
453
+ }
454
+ __privateSet(this, _visibilityObserver, new IntersectionObserver(
455
+ (entries) => {
456
+ var _a, _b;
457
+ const entry = entries[entries.length - 1];
458
+ const { boundingClientRect, isIntersecting: visible } = entry;
459
+ const { width, height } = boundingClientRect;
460
+ const previousVisible = __privateGet(this, _visible);
461
+ __privateSet(this, _visible, visible);
462
+ if (!width && !height) return;
463
+ if (previousVisible && !visible) {
464
+ (_a = __privateGet(this, _positionObserver)) == null ? void 0 : _a.disconnect();
465
+ this.callback(null);
466
+ (_b = __privateGet(this, _resizeObserver)) == null ? void 0 : _b.disconnect();
467
+ __privateSet(this, _resizeObserver, void 0);
468
+ if (__privateGet(this, _debug)) __privateGet(this, _debug).style.visibility = "hidden";
469
+ } else {
470
+ __privateGet(this, _observePosition).call(this);
471
+ }
472
+ if (visible && !__privateGet(this, _resizeObserver)) {
473
+ __privateSet(this, _resizeObserver, new ResizeNotifier(__privateGet(this, _observePosition)));
474
+ __privateGet(this, _resizeObserver).observe(element);
475
+ }
476
+ },
477
+ {
478
+ threshold,
479
+ root
480
+ }
481
+ ));
482
+ if (__privateGet(this, _visible) && !options.skipInitial) {
483
+ this.callback(this.boundingClientRect);
484
+ }
485
+ __privateGet(this, _visibilityObserver).observe(element);
486
+ }
487
+ };
488
+ _visible = new WeakMap();
489
+ _previousBoundingClientRect = new WeakMap();
490
+ _resizeObserver = new WeakMap();
491
+ _positionObserver = new WeakMap();
492
+ _visibilityObserver = new WeakMap();
493
+ _debug = new WeakMap();
494
+ _disconnected = new WeakMap();
495
+ _observePosition = new WeakMap();
496
+ _PositionObserver_instances = new WeakSet();
497
+ notify_fn = function() {
498
+ if (__privateGet(this, _disconnected)) return;
499
+ __privateMethod(this, _PositionObserver_instances, updateDebug_fn).call(this);
500
+ if (isRectEqual(this.boundingClientRect, __privateGet(this, _previousBoundingClientRect)))
501
+ return;
502
+ this.callback(this.boundingClientRect);
503
+ __privateSet(this, _previousBoundingClientRect, this.boundingClientRect);
504
+ };
505
+ updateDebug_fn = function() {
506
+ if (__privateGet(this, _debug)) {
507
+ const { top, left, width, height } = getVisibleBoundingRectangle(
508
+ this.element
509
+ );
510
+ __privateGet(this, _debug).style.overflow = "hidden";
511
+ __privateGet(this, _debug).style.visibility = "visible";
512
+ __privateGet(this, _debug).style.top = `${Math.floor(top)}px`;
513
+ __privateGet(this, _debug).style.left = `${Math.floor(left)}px`;
514
+ __privateGet(this, _debug).style.width = `${Math.floor(width)}px`;
515
+ __privateGet(this, _debug).style.height = `${Math.floor(height)}px`;
516
+ }
517
+ };
518
+
519
+ // src/utilities/observers/FrameObserver.ts
520
+ var framePositionObservers = /* @__PURE__ */ new WeakMap();
521
+ var scrollListeners = /* @__PURE__ */ new WeakMap();
522
+ function addFrameListener(frame, callback) {
523
+ let cached = framePositionObservers.get(frame);
524
+ if (!cached) {
525
+ const observer = new PositionObserver(
526
+ frame,
527
+ (boundingClientRect) => {
528
+ const cached2 = framePositionObservers.get(frame);
529
+ if (!cached2) return;
530
+ cached2.callbacks.forEach((callback2) => callback2(boundingClientRect));
531
+ },
532
+ { skipInitial: true }
533
+ );
534
+ cached = { disconnect: observer.disconnect, callbacks: /* @__PURE__ */ new Set() };
535
+ }
536
+ cached.callbacks.add(callback);
537
+ framePositionObservers.set(frame, cached);
538
+ return () => {
539
+ cached.callbacks.delete(callback);
540
+ if (cached.callbacks.size === 0) {
541
+ framePositionObservers.delete(frame);
542
+ cached.disconnect();
543
+ }
544
+ };
545
+ }
546
+ function observeParentFrames(frames, callback) {
547
+ const cleanup = /* @__PURE__ */ new Set();
548
+ for (const frame of frames) {
549
+ const remove = addFrameListener(frame, callback);
550
+ cleanup.add(remove);
551
+ }
552
+ return () => cleanup.forEach((remove) => remove());
553
+ }
554
+ function addScrollListener(element, callback) {
555
+ var _a;
556
+ const doc = element.ownerDocument;
557
+ if (!scrollListeners.has(doc)) {
558
+ const controller = new AbortController();
559
+ const listeners2 = /* @__PURE__ */ new Set();
560
+ document.addEventListener(
561
+ "scroll",
562
+ (event) => listeners2.forEach((listener) => listener(event)),
563
+ {
564
+ capture: true,
565
+ passive: true,
566
+ signal: controller.signal
567
+ }
568
+ );
569
+ scrollListeners.set(doc, { disconnect: () => controller.abort(), listeners: listeners2 });
570
+ }
571
+ const { listeners, disconnect } = (_a = scrollListeners.get(doc)) != null ? _a : {};
572
+ if (!listeners || !disconnect) return () => {
573
+ };
574
+ listeners.add(callback);
575
+ return () => {
576
+ listeners.delete(callback);
577
+ if (listeners.size === 0) {
578
+ disconnect();
579
+ scrollListeners.delete(doc);
580
+ }
581
+ };
582
+ }
583
+ var _elementObserver, _disconnected2, _frames, _handleScroll;
584
+ var FrameObserver = class {
585
+ constructor(element, callback, options) {
586
+ this.callback = callback;
587
+ __privateAdd(this, _elementObserver);
588
+ __privateAdd(this, _disconnected2, false);
589
+ __privateAdd(this, _frames);
590
+ __privateAdd(this, _handleScroll, throttle((event) => {
591
+ if (__privateGet(this, _disconnected2)) return;
592
+ if (!event.target) return;
593
+ if ("contains" in event.target && typeof event.target.contains === "function") {
594
+ for (const frame of __privateGet(this, _frames)) {
595
+ if (event.target.contains(frame)) {
596
+ this.callback(__privateGet(this, _elementObserver).boundingClientRect);
597
+ break;
598
+ }
599
+ }
600
+ }
601
+ }, THROTTLE_INTERVAL));
602
+ const frames = getFrameElements(element);
603
+ const unobserveParentFrames = observeParentFrames(frames, callback);
604
+ const removeScrollListener = addScrollListener(element, __privateGet(this, _handleScroll));
605
+ __privateSet(this, _frames, frames);
606
+ __privateSet(this, _elementObserver, new PositionObserver(element, callback, options));
607
+ this.disconnect = () => {
608
+ if (__privateGet(this, _disconnected2)) return;
609
+ __privateSet(this, _disconnected2, true);
610
+ unobserveParentFrames();
611
+ removeScrollListener();
612
+ __privateGet(this, _elementObserver).disconnect();
613
+ };
614
+ }
615
+ };
616
+ _elementObserver = new WeakMap();
617
+ _disconnected2 = new WeakMap();
618
+ _frames = new WeakMap();
619
+ _handleScroll = new WeakMap();
620
+
621
+ // src/utilities/popover/supportsPopover.ts
622
+ function supportsPopover(element) {
623
+ return "showPopover" in element && "hidePopover" in element && typeof element.showPopover === "function" && typeof element.hidePopover === "function";
624
+ }
625
+
626
+ // src/utilities/popover/showPopover.ts
627
+ function showPopover(element) {
628
+ try {
629
+ if (supportsPopover(element) && element.isConnected && element.hasAttribute("popover") && // This selector can throw an error in browsers that don't support it
630
+ !element.matches(":popover-open")) {
631
+ element.showPopover();
632
+ }
633
+ } catch (error) {
634
+ }
635
+ }
636
+
637
+ // src/utilities/scroll/documentScrollingElement.ts
638
+ function isDocumentScrollingElement(element) {
639
+ if (!canUseDOM || !element) {
640
+ return false;
641
+ }
642
+ return element === getDocument(element).scrollingElement;
643
+ }
644
+
645
+ // src/utilities/scroll/getScrollPosition.ts
646
+ function getScrollPosition(scrollableElement) {
647
+ const window2 = getWindow(scrollableElement);
648
+ const rect = isDocumentScrollingElement(scrollableElement) ? getViewportBoundingRectangle(scrollableElement) : getBoundingRectangle(scrollableElement);
649
+ const dimensions = isDocumentScrollingElement(scrollableElement) ? {
650
+ height: window2.innerHeight,
651
+ width: window2.innerWidth
652
+ } : {
653
+ height: scrollableElement.clientHeight,
654
+ width: scrollableElement.clientWidth
655
+ };
656
+ const position = {
657
+ current: {
658
+ x: scrollableElement.scrollLeft,
659
+ y: scrollableElement.scrollTop
660
+ },
661
+ max: {
662
+ x: scrollableElement.scrollWidth - dimensions.width,
663
+ y: scrollableElement.scrollHeight - dimensions.height
664
+ }
665
+ };
666
+ const isTop = position.current.y <= 0;
667
+ const isLeft = position.current.x <= 0;
668
+ const isBottom = position.current.y >= position.max.y;
669
+ const isRight = position.current.x >= position.max.x;
670
+ return {
671
+ rect,
672
+ position,
673
+ isTop,
674
+ isLeft,
675
+ isBottom,
676
+ isRight
677
+ };
678
+ }
679
+
680
+ // src/utilities/scroll/canScroll.ts
681
+ function canScroll(scrollableElement, by) {
682
+ const { isTop, isBottom, isLeft, isRight, position } = getScrollPosition(scrollableElement);
683
+ const { x, y } = by != null ? by : { x: 0, y: 0 };
684
+ const top = !isTop && position.current.y + y > 0;
685
+ const bottom = !isBottom && position.current.y + y < position.max.y;
686
+ const left = !isLeft && position.current.x + x > 0;
687
+ const right = !isRight && position.current.x + x < position.max.x;
688
+ return {
689
+ top,
690
+ bottom,
691
+ left,
692
+ right,
693
+ x: left || right,
694
+ y: top || bottom
695
+ };
696
+ }
697
+
698
+ // src/utilities/scheduling/scheduler.ts
699
+ var Scheduler = class {
700
+ constructor(scheduler4) {
701
+ this.scheduler = scheduler4;
702
+ this.pending = false;
703
+ this.tasks = /* @__PURE__ */ new Set();
704
+ this.resolvers = /* @__PURE__ */ new Set();
705
+ this.flush = () => {
706
+ const { tasks, resolvers } = this;
707
+ this.pending = false;
708
+ this.tasks = /* @__PURE__ */ new Set();
709
+ this.resolvers = /* @__PURE__ */ new Set();
710
+ for (const task of tasks) {
711
+ task();
712
+ }
713
+ for (const resolve of resolvers) {
714
+ resolve();
715
+ }
716
+ };
717
+ }
718
+ schedule(task) {
719
+ this.tasks.add(task);
720
+ if (!this.pending) {
721
+ this.pending = true;
722
+ this.scheduler(this.flush);
723
+ }
724
+ return new Promise((resolve) => this.resolvers.add(resolve));
725
+ }
726
+ };
727
+ var scheduler = new Scheduler((callback) => {
728
+ if (typeof requestAnimationFrame === "function") {
729
+ requestAnimationFrame(callback);
730
+ } else {
731
+ callback();
732
+ }
733
+ });
734
+
735
+ // src/utilities/styles/getComputedStyles.ts
736
+ var scheduler2 = new Scheduler((callback) => setTimeout(callback, 50));
737
+ var cachedStyles = /* @__PURE__ */ new Map();
738
+ var clear = cachedStyles.clear.bind(cachedStyles);
739
+ function getComputedStyles(element, cached = false) {
740
+ if (!cached) return computeStyles(element);
741
+ let styles = cachedStyles.get(element);
742
+ if (styles) return styles;
743
+ styles = computeStyles(element);
744
+ cachedStyles.set(element, styles);
745
+ scheduler2.schedule(clear);
746
+ return styles;
747
+ }
748
+ function computeStyles(element) {
749
+ return getWindow(element).getComputedStyle(element);
750
+ }
751
+
752
+ // src/utilities/scroll/isFixed.ts
753
+ function isFixed(node, computedStyle = getComputedStyles(node, true)) {
754
+ return computedStyle.position === "fixed" /*|| computedStyle.position === "sticky"*/;
755
+ }
756
+
757
+ // src/utilities/scroll/isScrollable.ts
758
+ function isScrollable(element, computedStyle = getComputedStyles(element, true)) {
759
+ const overflowRegex = /(auto|scroll|overlay)/;
760
+ const properties = ["overflow", "overflowX", "overflowY"];
761
+ return properties.some((property) => {
762
+ const value = computedStyle[property];
763
+ return typeof value === "string" ? overflowRegex.test(value) : false;
764
+ });
765
+ }
766
+
767
+ // src/utilities/scroll/getScrollableAncestors.ts
768
+ var defaultOptions = {
769
+ excludeElement: true
770
+ };
771
+ function getScrollableAncestors(element, options = defaultOptions) {
772
+ const { limit, excludeElement } = options;
773
+ const scrollParents = /* @__PURE__ */ new Set();
774
+ function findScrollableAncestors(node) {
775
+ if (limit != null && scrollParents.size >= limit) {
776
+ return scrollParents;
777
+ }
778
+ if (!node) {
779
+ return scrollParents;
780
+ }
781
+ if (isDocument(node) && node.scrollingElement != null && !scrollParents.has(node.scrollingElement)) {
782
+ scrollParents.add(node.scrollingElement);
783
+ return scrollParents;
784
+ }
785
+ if (!isHTMLElement(node)) {
786
+ if (isSVGElement(node)) {
787
+ return findScrollableAncestors(node.parentElement);
788
+ }
789
+ return scrollParents;
790
+ }
791
+ if (scrollParents.has(node)) {
792
+ return scrollParents;
793
+ }
794
+ const computedStyle = getComputedStyles(node, true);
795
+ if (excludeElement && node === element) ; else if (isScrollable(node, computedStyle)) {
796
+ scrollParents.add(node);
797
+ }
798
+ if (isFixed(node, computedStyle)) {
799
+ const { scrollingElement } = node.ownerDocument;
800
+ if (scrollingElement) scrollParents.add(scrollingElement);
801
+ return scrollParents;
802
+ }
803
+ return findScrollableAncestors(node.parentNode);
804
+ }
805
+ if (!element) {
806
+ return scrollParents;
807
+ }
808
+ return findScrollableAncestors(element);
809
+ }
810
+ function getFirstScrollableAncestor(node) {
811
+ const [firstScrollableAncestor] = getScrollableAncestors(node, { limit: 1 });
812
+ return firstScrollableAncestor != null ? firstScrollableAncestor : null;
813
+ }
814
+
815
+ // src/utilities/frame/getFrameTransform.ts
816
+ function getFrameTransform(el, boundary = window.frameElement) {
817
+ const transform = {
818
+ x: 0,
819
+ y: 0,
820
+ scaleX: 1,
821
+ scaleY: 1
822
+ };
823
+ if (!el) return transform;
824
+ let frame = getFrameElement(el);
825
+ while (frame) {
826
+ if (frame === boundary) {
827
+ return transform;
828
+ }
829
+ const rect = getBoundingRectangle(frame);
830
+ const { x: scaleX, y: scaleY } = getScale(frame, rect);
831
+ transform.x = transform.x + rect.left;
832
+ transform.y = transform.y + rect.top;
833
+ transform.scaleX = transform.scaleX * scaleX;
834
+ transform.scaleY = transform.scaleY * scaleY;
835
+ frame = getFrameElement(frame);
836
+ }
837
+ return transform;
838
+ }
839
+ function getScale(element, boundingRectangle = getBoundingRectangle(element)) {
840
+ const width = Math.round(boundingRectangle.width);
841
+ const height = Math.round(boundingRectangle.height);
842
+ if (isHTMLElement(element)) {
843
+ return {
844
+ x: width / element.offsetWidth,
845
+ y: height / element.offsetHeight
846
+ };
847
+ }
848
+ const styles = getComputedStyles(element, true);
849
+ return {
850
+ x: (parseFloat(styles.width) || width) / width,
851
+ y: (parseFloat(styles.height) || height) / height
852
+ };
853
+ }
854
+
855
+ // src/utilities/transform/parseScale.ts
856
+ function parseScale(scale) {
857
+ if (scale === "none") {
858
+ return null;
859
+ }
860
+ const values = scale.split(" ");
861
+ const x = parseFloat(values[0]);
862
+ const y = parseFloat(values[1]);
863
+ if (isNaN(x) && isNaN(y)) {
864
+ return null;
865
+ }
866
+ return {
867
+ x: isNaN(x) ? y : x,
868
+ y: isNaN(y) ? x : y
869
+ };
870
+ }
871
+
872
+ // src/utilities/transform/parseTranslate.ts
873
+ function parseTranslate(translate) {
874
+ if (translate === "none") {
875
+ return null;
876
+ }
877
+ const [x, y, z = "0"] = translate.split(" ");
878
+ const output = { x: parseFloat(x), y: parseFloat(y), z: parseInt(z, 10) };
879
+ if (isNaN(output.x) && isNaN(output.y)) {
880
+ return null;
881
+ }
882
+ return {
883
+ x: isNaN(output.x) ? 0 : output.x,
884
+ y: isNaN(output.y) ? 0 : output.y,
885
+ z: isNaN(output.z) ? 0 : output.z
886
+ };
887
+ }
888
+
889
+ // src/utilities/transform/parseTransform.ts
890
+ function parseTransform(computedStyles) {
891
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
892
+ const { scale, transform, translate } = computedStyles;
893
+ const parsedScale = parseScale(scale);
894
+ const parsedTranslate = parseTranslate(translate);
895
+ const parsedMatrix = parseTransformMatrix(transform);
896
+ if (!parsedMatrix && !parsedScale && !parsedTranslate) {
897
+ return null;
898
+ }
899
+ const normalizedScale = {
900
+ x: (_a = parsedScale == null ? void 0 : parsedScale.x) != null ? _a : 1,
901
+ y: (_b = parsedScale == null ? void 0 : parsedScale.y) != null ? _b : 1
902
+ };
903
+ const normalizedTranslate = {
904
+ x: (_c = parsedTranslate == null ? void 0 : parsedTranslate.x) != null ? _c : 0,
905
+ y: (_d = parsedTranslate == null ? void 0 : parsedTranslate.y) != null ? _d : 0
906
+ };
907
+ const normalizedMatrix = {
908
+ x: (_e = parsedMatrix == null ? void 0 : parsedMatrix.x) != null ? _e : 0,
909
+ y: (_f = parsedMatrix == null ? void 0 : parsedMatrix.y) != null ? _f : 0,
910
+ scaleX: (_g = parsedMatrix == null ? void 0 : parsedMatrix.scaleX) != null ? _g : 1,
911
+ scaleY: (_h = parsedMatrix == null ? void 0 : parsedMatrix.scaleY) != null ? _h : 1
912
+ };
913
+ return {
914
+ x: normalizedTranslate.x + normalizedMatrix.x,
915
+ y: normalizedTranslate.y + normalizedMatrix.y,
916
+ z: (_i = parsedTranslate == null ? void 0 : parsedTranslate.z) != null ? _i : 0,
917
+ scaleX: normalizedScale.x * normalizedMatrix.scaleX,
918
+ scaleY: normalizedScale.y * normalizedMatrix.scaleY
919
+ };
920
+ }
921
+ function parseTransformMatrix(transform) {
922
+ if (transform.startsWith("matrix3d(")) {
923
+ const transformArray = transform.slice(9, -1).split(/, /);
924
+ return {
925
+ x: +transformArray[12],
926
+ y: +transformArray[13],
927
+ scaleX: +transformArray[0],
928
+ scaleY: +transformArray[5]
929
+ };
930
+ } else if (transform.startsWith("matrix(")) {
931
+ const transformArray = transform.slice(7, -1).split(/, /);
932
+ return {
933
+ x: +transformArray[4],
934
+ y: +transformArray[5],
935
+ scaleX: +transformArray[0],
936
+ scaleY: +transformArray[3]
937
+ };
938
+ }
939
+ return null;
940
+ }
941
+
942
+ // src/utilities/scroll/detectScrollIntent.ts
943
+ var ScrollDirection = /* @__PURE__ */ ((ScrollDirection2) => {
944
+ ScrollDirection2[ScrollDirection2["Idle"] = 0] = "Idle";
945
+ ScrollDirection2[ScrollDirection2["Forward"] = 1] = "Forward";
946
+ ScrollDirection2[ScrollDirection2["Reverse"] = -1] = "Reverse";
947
+ return ScrollDirection2;
948
+ })(ScrollDirection || {});
949
+ var defaultThreshold = {
950
+ x: 0.2,
951
+ y: 0.2
952
+ };
953
+ var defaultTolerance = {
954
+ x: 10,
955
+ y: 10
956
+ };
957
+ function detectScrollIntent(scrollableElement, coordinates, intent, acceleration = 25, thresholdPercentage = defaultThreshold, tolerance = defaultTolerance) {
958
+ const { x, y } = coordinates;
959
+ const { rect, isTop, isBottom, isLeft, isRight } = getScrollPosition(scrollableElement);
960
+ const frameTransform = getFrameTransform(scrollableElement);
961
+ const computedStyles = getComputedStyles(scrollableElement, true);
962
+ const parsedTransform = parseTransform(computedStyles);
963
+ const isXAxisInverted = parsedTransform !== null ? (parsedTransform == null ? void 0 : parsedTransform.scaleX) < 0 : false;
964
+ const isYAxisInverted = parsedTransform !== null ? (parsedTransform == null ? void 0 : parsedTransform.scaleY) < 0 : false;
965
+ const scrollContainerRect = new index.Rectangle(
966
+ rect.left * frameTransform.scaleX + frameTransform.x,
967
+ rect.top * frameTransform.scaleY + frameTransform.y,
968
+ rect.width * frameTransform.scaleX,
969
+ rect.height * frameTransform.scaleY
970
+ );
971
+ const direction = {
972
+ x: 0 /* Idle */,
973
+ y: 0 /* Idle */
974
+ };
975
+ const speed = {
976
+ x: 0,
977
+ y: 0
978
+ };
979
+ const threshold2 = {
980
+ height: scrollContainerRect.height * thresholdPercentage.y,
981
+ width: scrollContainerRect.width * thresholdPercentage.x
982
+ };
983
+ if ((!isTop || isYAxisInverted && !isBottom) && y <= scrollContainerRect.top + threshold2.height && (intent == null ? void 0 : intent.y) !== 1 /* Forward */ && x >= scrollContainerRect.left - tolerance.x && x <= scrollContainerRect.right + tolerance.x) {
984
+ direction.y = isYAxisInverted ? 1 /* Forward */ : -1 /* Reverse */;
985
+ speed.y = acceleration * Math.abs(
986
+ (scrollContainerRect.top + threshold2.height - y) / threshold2.height
987
+ );
988
+ } else if ((!isBottom || isYAxisInverted && !isTop) && y >= scrollContainerRect.bottom - threshold2.height && (intent == null ? void 0 : intent.y) !== -1 /* Reverse */ && x >= scrollContainerRect.left - tolerance.x && x <= scrollContainerRect.right + tolerance.x) {
989
+ direction.y = isYAxisInverted ? -1 /* Reverse */ : 1 /* Forward */;
990
+ speed.y = acceleration * Math.abs(
991
+ (scrollContainerRect.bottom - threshold2.height - y) / threshold2.height
992
+ );
993
+ }
994
+ if ((!isRight || isXAxisInverted && !isLeft) && x >= scrollContainerRect.right - threshold2.width && (intent == null ? void 0 : intent.x) !== -1 /* Reverse */ && y >= scrollContainerRect.top - tolerance.y && y <= scrollContainerRect.bottom + tolerance.y) {
995
+ direction.x = isXAxisInverted ? -1 /* Reverse */ : 1 /* Forward */;
996
+ speed.x = acceleration * Math.abs(
997
+ (scrollContainerRect.right - threshold2.width - x) / threshold2.width
998
+ );
999
+ } else if ((!isLeft || isXAxisInverted && !isRight) && x <= scrollContainerRect.left + threshold2.width && (intent == null ? void 0 : intent.x) !== 1 /* Forward */ && y >= scrollContainerRect.top - tolerance.y && y <= scrollContainerRect.bottom + tolerance.y) {
1000
+ direction.x = isXAxisInverted ? 1 /* Forward */ : -1 /* Reverse */;
1001
+ speed.x = acceleration * Math.abs(
1002
+ (scrollContainerRect.left + threshold2.width - x) / threshold2.width
1003
+ );
1004
+ }
1005
+ return {
1006
+ direction,
1007
+ speed
1008
+ };
1009
+ }
1010
+
1011
+ // src/utilities/scroll/scrollIntoViewIfNeeded.ts
1012
+ function supportsScrollIntoViewIfNeeded(element) {
1013
+ return "scrollIntoViewIfNeeded" in element && typeof element.scrollIntoViewIfNeeded === "function";
1014
+ }
1015
+ function scrollIntoViewIfNeeded(el, centerIfNeeded = false) {
1016
+ if (supportsScrollIntoViewIfNeeded(el)) {
1017
+ el.scrollIntoViewIfNeeded(centerIfNeeded);
1018
+ return;
1019
+ }
1020
+ if (!isHTMLElement(el)) {
1021
+ return el.scrollIntoView();
1022
+ }
1023
+ var parent = getFirstScrollableAncestor(el);
1024
+ if (!isHTMLElement(parent)) {
1025
+ return;
1026
+ }
1027
+ const parentComputedStyle = getComputedStyles(parent, true), parentBorderTopWidth = parseInt(
1028
+ parentComputedStyle.getPropertyValue("border-top-width")
1029
+ ), parentBorderLeftWidth = parseInt(
1030
+ parentComputedStyle.getPropertyValue("border-left-width")
1031
+ ), overTop = el.offsetTop - parent.offsetTop < parent.scrollTop, overBottom = el.offsetTop - parent.offsetTop + el.clientHeight - parentBorderTopWidth > parent.scrollTop + parent.clientHeight, overLeft = el.offsetLeft - parent.offsetLeft < parent.scrollLeft, overRight = el.offsetLeft - parent.offsetLeft + el.clientWidth - parentBorderLeftWidth > parent.scrollLeft + parent.clientWidth, alignWithTop = overTop && !overBottom;
1032
+ if ((overTop || overBottom) && centerIfNeeded) {
1033
+ parent.scrollTop = el.offsetTop - parent.offsetTop - parent.clientHeight / 2 - parentBorderTopWidth + el.clientHeight / 2;
1034
+ }
1035
+ if ((overLeft || overRight) && centerIfNeeded) {
1036
+ parent.scrollLeft = el.offsetLeft - parent.offsetLeft - parent.clientWidth / 2 - parentBorderLeftWidth + el.clientWidth / 2;
1037
+ }
1038
+ if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {
1039
+ el.scrollIntoView(alignWithTop);
1040
+ }
1041
+ }
1042
+
1043
+ // src/utilities/transform/applyTransform.ts
1044
+ function applyTransform(rect, parsedTransform, transformOrigin) {
1045
+ const { scaleX, scaleY, x: translateX, y: translateY } = parsedTransform;
1046
+ const x = rect.left + translateX + (1 - scaleX) * parseFloat(transformOrigin);
1047
+ const y = rect.top + translateY + (1 - scaleY) * parseFloat(transformOrigin.slice(transformOrigin.indexOf(" ") + 1));
1048
+ const w = scaleX ? rect.width * scaleX : rect.width;
1049
+ const h = scaleY ? rect.height * scaleY : rect.height;
1050
+ return {
1051
+ width: w,
1052
+ height: h,
1053
+ top: y,
1054
+ right: x + w,
1055
+ bottom: y + h,
1056
+ left: x
1057
+ };
1058
+ }
1059
+
1060
+ // src/utilities/transform/inverseTransform.ts
1061
+ function inverseTransform(rect, parsedTransform, transformOrigin) {
1062
+ const { scaleX, scaleY, x: translateX, y: translateY } = parsedTransform;
1063
+ const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);
1064
+ const y = rect.top - translateY - (1 - scaleY) * parseFloat(transformOrigin.slice(transformOrigin.indexOf(" ") + 1));
1065
+ const w = scaleX ? rect.width / scaleX : rect.width;
1066
+ const h = scaleY ? rect.height / scaleY : rect.height;
1067
+ return {
1068
+ width: w,
1069
+ height: h,
1070
+ top: y,
1071
+ right: x + w,
1072
+ bottom: y + h,
1073
+ left: x
1074
+ };
1075
+ }
1076
+
1077
+ // src/utilities/transform/animateTransform.ts
1078
+ function animateTransform({ element, keyframes, options }) {
1079
+ return element.animate(keyframes, options).finished;
1080
+ }
1081
+
1082
+ // src/utilities/transform/computeTranslate.ts
1083
+ function computeTranslate(element, translate = getComputedStyles(element).translate, projected = true) {
1084
+ if (projected) {
1085
+ const keyframe = getFinalKeyframe(
1086
+ element,
1087
+ (keyframe2) => "translate" in keyframe2
1088
+ );
1089
+ if (keyframe) {
1090
+ const { translate: translate2 = "" } = keyframe[0];
1091
+ if (typeof translate2 === "string") {
1092
+ const finalTranslate = parseTranslate(translate2);
1093
+ if (finalTranslate) {
1094
+ return finalTranslate;
1095
+ }
1096
+ }
1097
+ }
1098
+ }
1099
+ if (translate) {
1100
+ const finalTranslate = parseTranslate(translate);
1101
+ if (finalTranslate) {
1102
+ return finalTranslate;
1103
+ }
1104
+ }
1105
+ return { x: 0, y: 0, z: 0 };
1106
+ }
1107
+
1108
+ // src/utilities/animations/forceFinishAnimations.ts
1109
+ var scheduler3 = new Scheduler((callback) => setTimeout(callback, 0));
1110
+ var animations = /* @__PURE__ */ new Map();
1111
+ var clear2 = animations.clear.bind(animations);
1112
+ function getDocumentAnimations(element) {
1113
+ const document2 = element.ownerDocument;
1114
+ let documentAnimations = animations.get(document2);
1115
+ if (documentAnimations) return documentAnimations;
1116
+ documentAnimations = document2.getAnimations();
1117
+ animations.set(document2, documentAnimations);
1118
+ scheduler3.schedule(clear2);
1119
+ const elementAnimations = documentAnimations.filter(
1120
+ (animation) => isKeyframeEffect(animation.effect) && animation.effect.target === element
1121
+ );
1122
+ animations.set(element, elementAnimations);
1123
+ return documentAnimations;
1124
+ }
1125
+ function forceFinishAnimations(element, options) {
1126
+ const animations2 = getDocumentAnimations(element).filter((animation) => {
1127
+ var _a, _b;
1128
+ if (isKeyframeEffect(animation.effect)) {
1129
+ const { target } = animation.effect;
1130
+ const isValidTarget = (_b = target && ((_a = options.isValidTarget) == null ? void 0 : _a.call(options, target))) != null ? _b : true;
1131
+ if (isValidTarget) {
1132
+ return animation.effect.getKeyframes().some((keyframe) => {
1133
+ for (const property of options.properties) {
1134
+ if (keyframe[property]) return true;
1135
+ }
1136
+ });
1137
+ }
1138
+ }
1139
+ }).map((animation) => {
1140
+ const { effect, currentTime } = animation;
1141
+ const duration = effect == null ? void 0 : effect.getComputedTiming().duration;
1142
+ if (animation.pending || animation.playState === "finished") return;
1143
+ if (typeof duration == "number" && typeof currentTime == "number" && currentTime < duration) {
1144
+ animation.currentTime = duration;
1145
+ return () => {
1146
+ animation.currentTime = currentTime;
1147
+ };
1148
+ }
1149
+ });
1150
+ if (animations2.length > 0) {
1151
+ return () => animations2.forEach((reset) => reset == null ? void 0 : reset());
1152
+ }
1153
+ }
1154
+
1155
+ // src/utilities/shapes/DOMRectangle.ts
1156
+ var DOMRectangle = class extends index.Rectangle {
1157
+ constructor(element, options = {}) {
1158
+ var _a, _b, _c, _d;
1159
+ const {
1160
+ frameTransform = getFrameTransform(element),
1161
+ ignoreTransforms,
1162
+ getBoundingClientRect = getBoundingRectangle
1163
+ } = options;
1164
+ const resetAnimations = forceFinishAnimations(element, {
1165
+ properties: ["transform", "translate", "scale", "width", "height"],
1166
+ isValidTarget: (target) => (target !== element || isSafari()) && target.contains(element)
1167
+ });
1168
+ const boundingRectangle = getBoundingClientRect(element);
1169
+ let { top, left, width, height } = boundingRectangle;
1170
+ let updated;
1171
+ const computedStyles = getComputedStyles(element);
1172
+ const parsedTransform = parseTransform(computedStyles);
1173
+ const scale = {
1174
+ x: (_a = parsedTransform == null ? void 0 : parsedTransform.scaleX) != null ? _a : 1,
1175
+ y: (_b = parsedTransform == null ? void 0 : parsedTransform.scaleY) != null ? _b : 1
1176
+ };
1177
+ const projectedTransform = getProjectedTransform(element, computedStyles);
1178
+ resetAnimations == null ? void 0 : resetAnimations();
1179
+ if (parsedTransform) {
1180
+ updated = inverseTransform(
1181
+ boundingRectangle,
1182
+ parsedTransform,
1183
+ computedStyles.transformOrigin
1184
+ );
1185
+ if (ignoreTransforms || projectedTransform) {
1186
+ top = updated.top;
1187
+ left = updated.left;
1188
+ width = updated.width;
1189
+ height = updated.height;
1190
+ }
1191
+ }
1192
+ const intrinsic = {
1193
+ width: (_c = updated == null ? void 0 : updated.width) != null ? _c : width,
1194
+ height: (_d = updated == null ? void 0 : updated.height) != null ? _d : height
1195
+ };
1196
+ if (projectedTransform && !ignoreTransforms && updated) {
1197
+ const projected = applyTransform(
1198
+ updated,
1199
+ projectedTransform,
1200
+ computedStyles.transformOrigin
1201
+ );
1202
+ top = projected.top;
1203
+ left = projected.left;
1204
+ width = projected.width;
1205
+ height = projected.height;
1206
+ scale.x = projectedTransform.scaleX;
1207
+ scale.y = projectedTransform.scaleY;
1208
+ }
1209
+ if (frameTransform) {
1210
+ if (!ignoreTransforms) {
1211
+ left *= frameTransform.scaleX;
1212
+ width *= frameTransform.scaleX;
1213
+ top *= frameTransform.scaleY;
1214
+ height *= frameTransform.scaleY;
1215
+ }
1216
+ left += frameTransform.x;
1217
+ top += frameTransform.y;
1218
+ }
1219
+ super(left, top, width, height);
1220
+ this.scale = scale;
1221
+ this.intrinsicWidth = intrinsic.width;
1222
+ this.intrinsicHeight = intrinsic.height;
1223
+ }
1224
+ };
1225
+ function getProjectedTransform(element, computedStyles) {
1226
+ var _a;
1227
+ const animations2 = element.getAnimations();
1228
+ let projectedTransform = null;
1229
+ if (!animations2.length) return null;
1230
+ for (const animation of animations2) {
1231
+ if (animation.playState !== "running") continue;
1232
+ const keyframes = isKeyframeEffect(animation.effect) ? animation.effect.getKeyframes() : [];
1233
+ const keyframe = keyframes[keyframes.length - 1];
1234
+ if (!keyframe) continue;
1235
+ const { transform, translate, scale } = keyframe;
1236
+ if (transform || translate || scale) {
1237
+ const parsedTransform = parseTransform({
1238
+ transform: typeof transform === "string" && transform ? transform : computedStyles.transform,
1239
+ translate: typeof translate === "string" && translate ? translate : computedStyles.translate,
1240
+ scale: typeof scale === "string" && scale ? scale : computedStyles.scale
1241
+ });
1242
+ if (parsedTransform) {
1243
+ projectedTransform = projectedTransform ? {
1244
+ x: projectedTransform.x + parsedTransform.x,
1245
+ y: projectedTransform.y + parsedTransform.y,
1246
+ z: (_a = projectedTransform.z) != null ? _a : parsedTransform.z,
1247
+ scaleX: projectedTransform.scaleX * parsedTransform.scaleX,
1248
+ scaleY: projectedTransform.scaleY * parsedTransform.scaleY
1249
+ } : parsedTransform;
1250
+ }
1251
+ }
1252
+ }
1253
+ return projectedTransform;
1254
+ }
1255
+
1256
+ // src/utilities/type-guards/supportsStyle.ts
1257
+ function supportsStyle(element) {
1258
+ return "style" in element && typeof element.style === "object" && element.style !== null && "setProperty" in element.style && "removeProperty" in element.style && typeof element.style.setProperty === "function" && typeof element.style.removeProperty === "function";
1259
+ }
1260
+
1261
+ // src/utilities/styles/Styles.ts
1262
+ var Styles = class {
1263
+ constructor(element) {
1264
+ this.element = element;
1265
+ this.initial = /* @__PURE__ */ new Map();
1266
+ }
1267
+ set(properties, prefix = "") {
1268
+ const { element } = this;
1269
+ if (!supportsStyle(element)) {
1270
+ return;
1271
+ }
1272
+ for (const [key, value] of Object.entries(properties)) {
1273
+ const property = `${prefix}${key}`;
1274
+ if (!this.initial.has(property)) {
1275
+ this.initial.set(property, element.style.getPropertyValue(property));
1276
+ }
1277
+ element.style.setProperty(
1278
+ property,
1279
+ typeof value === "string" ? value : `${value}px`
1280
+ );
1281
+ }
1282
+ }
1283
+ remove(properties, prefix = "") {
1284
+ const { element } = this;
1285
+ if (!supportsStyle(element)) {
1286
+ return;
1287
+ }
1288
+ for (const key of properties) {
1289
+ const property = `${prefix}${key}`;
1290
+ element.style.removeProperty(property);
1291
+ }
1292
+ }
1293
+ reset() {
1294
+ const { element } = this;
1295
+ if (!supportsStyle(element)) {
1296
+ return;
1297
+ }
1298
+ for (const [key, value] of this.initial) {
1299
+ element.style.setProperty(key, value);
1300
+ }
1301
+ if (element.getAttribute("style") === "") {
1302
+ element.removeAttribute("style");
1303
+ }
1304
+ }
1305
+ };
1306
+
1307
+ // src/utilities/type-guards/isElement.ts
1308
+ function isElement(target) {
1309
+ if (!target) return false;
1310
+ return target instanceof getWindow(target).Element || isNode(target) && target.nodeType === Node.ELEMENT_NODE;
1311
+ }
1312
+
1313
+ // src/utilities/type-guards/isKeyboardEvent.ts
1314
+ function isKeyboardEvent(event) {
1315
+ if (!event) return false;
1316
+ const { KeyboardEvent } = getWindow(event.target);
1317
+ return event instanceof KeyboardEvent;
1318
+ }
1319
+
1320
+ // src/utilities/type-guards/isPointerEvent.ts
1321
+ function isPointerEvent(event) {
1322
+ if (!event) return false;
1323
+ const { PointerEvent } = getWindow(event.target);
1324
+ return event instanceof PointerEvent;
1325
+ }
1326
+
1327
+ // src/utilities/type-guards/isTextInput.ts
1328
+ function isTextInput(target) {
1329
+ if (!isElement(target)) return false;
1330
+ const { tagName } = target;
1331
+ return tagName === "INPUT" || tagName === "TEXTAREA" || isContentEditable(target);
1332
+ }
1333
+ function isContentEditable(element) {
1334
+ return element.hasAttribute("contenteditable") && element.getAttribute("contenteditable") !== "false";
1335
+ }
1336
+
1337
+ // src/utilities/misc/generateUniqueId.ts
1338
+ var ids = {};
1339
+ function generateUniqueId(prefix) {
1340
+ const id = ids[prefix] == null ? 0 : ids[prefix] + 1;
1341
+ ids[prefix] = id;
1342
+ return `${prefix}-${id}`;
1343
+ }
1344
+
1345
+ exports.DOMRectangle = DOMRectangle;
1346
+ exports.Listeners = Listeners;
1347
+ exports.PositionObserver = FrameObserver;
1348
+ exports.ProxiedElements = ProxiedElements;
1349
+ exports.ResizeNotifier = ResizeNotifier;
1350
+ exports.Scheduler = Scheduler;
1351
+ exports.ScrollDirection = ScrollDirection;
1352
+ exports.Styles = Styles;
1353
+ exports.animateTransform = animateTransform;
1354
+ exports.canScroll = canScroll;
1355
+ exports.canUseDOM = canUseDOM;
1356
+ exports.cloneElement = cloneElement;
1357
+ exports.computeTranslate = computeTranslate;
1358
+ exports.detectScrollIntent = detectScrollIntent;
1359
+ exports.generateUniqueId = generateUniqueId;
1360
+ exports.getBoundingRectangle = getBoundingRectangle;
1361
+ exports.getComputedStyles = getComputedStyles;
1362
+ exports.getDocument = getDocument;
1363
+ exports.getElementFromPoint = getElementFromPoint;
1364
+ exports.getFinalKeyframe = getFinalKeyframe;
1365
+ exports.getFirstScrollableAncestor = getFirstScrollableAncestor;
1366
+ exports.getFrameElement = getFrameElement;
1367
+ exports.getFrameTransform = getFrameTransform;
1368
+ exports.getScrollableAncestors = getScrollableAncestors;
1369
+ exports.getViewportBoundingRectangle = getViewportBoundingRectangle;
1370
+ exports.getVisibleBoundingRectangle = getVisibleBoundingRectangle;
1371
+ exports.getWindow = getWindow;
1372
+ exports.inverseTransform = inverseTransform;
1373
+ exports.isDocumentScrollingElement = isDocumentScrollingElement;
1374
+ exports.isElement = isElement;
1375
+ exports.isHTMLElement = isHTMLElement;
1376
+ exports.isKeyboardEvent = isKeyboardEvent;
1377
+ exports.isKeyframeEffect = isKeyframeEffect;
1378
+ exports.isPointerEvent = isPointerEvent;
1379
+ exports.isSafari = isSafari;
1380
+ exports.isTextInput = isTextInput;
1381
+ exports.parseTransform = parseTransform;
1382
+ exports.parseTranslate = parseTranslate;
1383
+ exports.scheduler = scheduler;
1384
+ exports.scrollIntoViewIfNeeded = scrollIntoViewIfNeeded;
1385
+ exports.showPopover = showPopover;
1386
+ exports.supportsPopover = supportsPopover;
1387
+ exports.supportsStyle = supportsStyle;
1388
+ exports.timeout = timeout;
1389
+ //# sourceMappingURL=utilities.js.map