@dxos/react-ui 0.8.4-main.d05673bc65 → 0.8.4-main.e00bdcdb52

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 (288) hide show
  1. package/dist/lib/browser/{chunk-2FKSMWNY.mjs → chunk-BDBC6H6V.mjs} +79 -5
  2. package/dist/lib/browser/chunk-BDBC6H6V.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +921 -736
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +30 -18
  7. package/dist/lib/browser/testing/index.mjs.map +3 -3
  8. package/dist/lib/browser/translations.mjs +18 -0
  9. package/dist/lib/browser/translations.mjs.map +7 -0
  10. package/dist/lib/node-esm/{chunk-ZNBLTSHI.mjs → chunk-3JSJK2ZY.mjs} +79 -5
  11. package/dist/lib/node-esm/chunk-3JSJK2ZY.mjs.map +7 -0
  12. package/dist/lib/node-esm/index.mjs +921 -736
  13. package/dist/lib/node-esm/index.mjs.map +4 -4
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/testing/index.mjs +30 -18
  16. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  17. package/dist/lib/node-esm/translations.mjs +20 -0
  18. package/dist/lib/node-esm/translations.mjs.map +7 -0
  19. package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
  20. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  21. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  22. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  23. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  24. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/Button/Button.d.ts +2 -2
  26. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  27. package/dist/types/src/components/Button/Button.stories.d.ts +1 -1
  28. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -1
  29. package/dist/types/src/components/Button/IconButton.d.ts +1 -0
  30. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  31. package/dist/types/src/components/Button/IconButton.stories.d.ts +3 -0
  32. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
  33. package/dist/types/src/components/Button/Toggle.d.ts +2 -2
  34. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -1
  35. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -1
  36. package/dist/types/src/components/Button/ToggleGroup.d.ts +6 -6
  37. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -1
  38. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +2 -2
  39. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -1
  40. package/dist/types/src/components/Card/Card.d.ts +70 -50
  41. package/dist/types/src/components/Card/Card.d.ts.map +1 -1
  42. package/dist/types/src/components/Card/Card.stories.d.ts +2 -2
  43. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -1
  44. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  45. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  46. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  47. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  48. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  49. package/dist/types/src/components/Dialog/AlertDialog.d.ts +42 -31
  50. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
  51. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
  52. package/dist/types/src/components/Dialog/Dialog.d.ts +47 -30
  53. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  54. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +3 -2
  55. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  56. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  57. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -1
  58. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +14 -3
  60. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -1
  61. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -1
  62. package/dist/types/src/components/Focus/Focus.d.ts +36 -0
  63. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  64. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  65. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  66. package/dist/types/src/components/Focus/index.d.ts +2 -0
  67. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  68. package/dist/types/src/components/Icon/Icon.d.ts +3 -0
  69. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  70. package/dist/types/src/components/Icon/Icon.stories.d.ts +11 -3
  71. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
  72. package/dist/types/src/components/Image/Image.d.ts +2 -1
  73. package/dist/types/src/components/Image/Image.d.ts.map +1 -1
  74. package/dist/types/src/components/Image/Image.stories.d.ts +3 -2
  75. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -1
  76. package/dist/types/src/components/Input/Input.d.ts +14 -17
  77. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  78. package/dist/types/src/components/Input/Input.stories.d.ts +3 -3
  79. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  80. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  81. package/dist/types/src/components/List/List.d.ts +5 -3
  82. package/dist/types/src/components/List/List.d.ts.map +1 -1
  83. package/dist/types/src/components/List/List.stories.d.ts +3 -1
  84. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  85. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -1
  86. package/dist/types/src/components/List/Tree.d.ts +2 -2
  87. package/dist/types/src/components/List/Tree.d.ts.map +1 -1
  88. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -1
  89. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -1
  90. package/dist/types/src/components/List/Treegrid.d.ts +5 -9
  91. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
  92. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -1
  93. package/dist/types/src/components/Main/Main.d.ts +7 -3
  94. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  95. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  96. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  97. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
  98. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
  99. package/dist/types/src/components/Menu/DropdownMenu.d.ts +58 -49
  100. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
  101. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +14 -1
  102. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
  103. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  104. package/dist/types/src/components/Message/Message.stories.d.ts +2 -2
  105. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/Popover/Popover.d.ts +38 -22
  107. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  108. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  109. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +12 -9
  110. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  111. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +18 -5
  112. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  113. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +42 -13
  114. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  115. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +5 -6
  116. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
  117. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  118. package/dist/types/src/components/Select/Select.stories.d.ts +2 -2
  119. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  120. package/dist/types/src/components/Separator/Separator.d.ts +3 -3
  121. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  122. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -1
  123. package/dist/types/src/components/Splitter/Splitter.d.ts +19 -17
  124. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
  125. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -1
  126. package/dist/types/src/components/Status/Status.d.ts +3 -4
  127. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  128. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +1 -1
  131. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  132. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +1 -1
  133. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +54 -55
  135. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  136. package/dist/types/src/components/ThemeProvider/index.d.ts +1 -1
  137. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  138. package/dist/types/src/components/Toast/Toast.d.ts +16 -16
  139. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  140. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  141. package/dist/types/src/components/Toolbar/Toolbar.d.ts +11 -19
  142. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  143. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  144. package/dist/types/src/components/Tooltip/Tooltip.d.ts +10 -10
  145. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  146. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -2
  147. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  148. package/dist/types/src/components/index.d.ts +1 -0
  149. package/dist/types/src/components/index.d.ts.map +1 -1
  150. package/dist/types/src/exemplars/generics.stories.d.ts +6 -5
  151. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -1
  152. package/dist/types/src/exemplars/slot.stories.d.ts +1 -0
  153. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -1
  154. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -1
  155. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -1
  156. package/dist/types/src/hooks/index.d.ts +1 -0
  157. package/dist/types/src/hooks/index.d.ts.map +1 -1
  158. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  159. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  160. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  161. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  162. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  163. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  164. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  165. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  166. package/dist/types/src/playground/Custom.stories.d.ts +1 -1
  167. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  168. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  169. package/dist/types/src/primitives/Column/Column.d.ts +21 -14
  170. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -1
  171. package/dist/types/src/primitives/Column/Column.stories.d.ts +19 -0
  172. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -1
  173. package/dist/types/src/primitives/Container/Container.d.ts +4 -5
  174. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -1
  175. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -1
  176. package/dist/types/src/primitives/Flex/Flex.d.ts +5 -7
  177. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
  178. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -1
  179. package/dist/types/src/primitives/Grid/Grid.d.ts +3 -8
  180. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -1
  181. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -1
  182. package/dist/types/src/primitives/Panel/Panel.d.ts +24 -15
  183. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -1
  184. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -1
  185. package/dist/types/src/testing/Loading.d.ts.map +1 -1
  186. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  187. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  188. package/dist/types/src/testing/decorators/withTheme.d.ts +1 -1
  189. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  190. package/dist/types/src/translations.d.ts +3 -3
  191. package/dist/types/src/translations.d.ts.map +1 -1
  192. package/dist/types/src/util/usePx.d.ts.map +1 -1
  193. package/dist/types/tsconfig.tsbuildinfo +1 -1
  194. package/package.json +28 -25
  195. package/src/components/Avatars/Avatar.stories.tsx +2 -3
  196. package/src/components/Avatars/Avatar.tsx +1 -2
  197. package/src/components/Avatars/AvatarGroup.stories.tsx +0 -1
  198. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -2
  199. package/src/components/Button/Button.stories.tsx +0 -1
  200. package/src/components/Button/Button.tsx +5 -13
  201. package/src/components/Button/IconButton.stories.tsx +6 -4
  202. package/src/components/Button/IconButton.tsx +3 -4
  203. package/src/components/Button/Toggle.stories.tsx +0 -1
  204. package/src/components/Button/Toggle.tsx +4 -4
  205. package/src/components/Button/ToggleGroup.stories.tsx +0 -1
  206. package/src/components/Button/ToggleGroup.tsx +12 -16
  207. package/src/components/Card/Card.stories.tsx +12 -12
  208. package/src/components/Card/Card.tsx +266 -108
  209. package/src/components/Clipboard/CopyButton.tsx +3 -4
  210. package/src/components/Dialog/AlertDialog.stories.tsx +5 -6
  211. package/src/components/Dialog/AlertDialog.tsx +67 -126
  212. package/src/components/Dialog/Dialog.stories.tsx +64 -9
  213. package/src/components/Dialog/Dialog.tsx +84 -88
  214. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +3 -8
  215. package/src/components/ErrorFallback/ErrorStack.tsx +36 -2
  216. package/src/components/Focus/AUDIT.md +43 -0
  217. package/src/components/Focus/Focus.stories.tsx +230 -0
  218. package/src/components/Focus/Focus.tsx +201 -0
  219. package/src/components/Focus/index.ts +5 -0
  220. package/src/components/Icon/Icon.stories.tsx +43 -13
  221. package/src/components/Icon/Icon.tsx +5 -1
  222. package/src/components/Image/Image.stories.tsx +3 -3
  223. package/src/components/Image/Image.tsx +31 -8
  224. package/src/components/Input/Input.stories.tsx +3 -4
  225. package/src/components/Input/Input.tsx +7 -7
  226. package/src/components/Link/Link.stories.tsx +0 -1
  227. package/src/components/List/List.stories.tsx +0 -1
  228. package/src/components/List/List.tsx +6 -5
  229. package/src/components/List/Tree.stories.tsx +1 -2
  230. package/src/components/List/Tree.tsx +0 -1
  231. package/src/components/List/Treegrid.stories.tsx +26 -27
  232. package/src/components/List/Treegrid.tsx +14 -14
  233. package/src/components/Main/Main.stories.tsx +0 -1
  234. package/src/components/Main/Main.tsx +1 -2
  235. package/src/components/Menu/ContextMenu.stories.tsx +0 -1
  236. package/src/components/Menu/DropdownMenu.stories.tsx +0 -1
  237. package/src/components/Menu/DropdownMenu.tsx +48 -42
  238. package/src/components/Message/Message.stories.tsx +6 -7
  239. package/src/components/Message/Message.tsx +1 -5
  240. package/src/components/Popover/Popover.stories.tsx +4 -5
  241. package/src/components/Popover/Popover.tsx +42 -42
  242. package/src/components/ScrollArea/ScrollArea.stories.tsx +93 -30
  243. package/src/components/ScrollArea/ScrollArea.tsx +39 -23
  244. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +20 -18
  245. package/src/components/ScrollContainer/ScrollContainer.tsx +200 -91
  246. package/src/components/Select/Select.stories.tsx +5 -6
  247. package/src/components/Separator/Separator.tsx +4 -7
  248. package/src/components/Skeleton/Skeleton.stories.tsx +0 -1
  249. package/src/components/Splitter/Splitter.stories.tsx +29 -29
  250. package/src/components/Splitter/Splitter.tsx +35 -34
  251. package/src/components/Status/Status.stories.tsx +0 -1
  252. package/src/components/Status/Status.tsx +8 -5
  253. package/src/components/Tag/Tag.stories.tsx +0 -1
  254. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +0 -1
  255. package/src/components/ThemeProvider/ThemeProvider.tsx +5 -4
  256. package/src/components/ThemeProvider/index.ts +1 -1
  257. package/src/components/Toast/Toast.stories.tsx +0 -1
  258. package/src/components/Toast/Toast.tsx +16 -31
  259. package/src/components/Toolbar/Toolbar.stories.tsx +0 -1
  260. package/src/components/Toolbar/Toolbar.tsx +21 -35
  261. package/src/components/Tooltip/Tooltip.stories.tsx +6 -7
  262. package/src/components/Tooltip/Tooltip.tsx +15 -16
  263. package/src/components/index.ts +1 -0
  264. package/src/exemplars/generics.stories.tsx +7 -15
  265. package/src/exemplars/slot.stories.tsx +67 -57
  266. package/src/exemplars/tabster.stories.tsx +1 -1
  267. package/src/exemplars/virtualizer.stories.tsx +4 -4
  268. package/src/hooks/index.ts +1 -0
  269. package/src/hooks/useDensityContext.ts +2 -2
  270. package/src/playground/Custom.stories.tsx +6 -9
  271. package/src/primitives/Column/AUDIT.md +148 -0
  272. package/src/primitives/Column/Column.stories.tsx +122 -19
  273. package/src/primitives/Column/Column.tsx +73 -42
  274. package/src/primitives/Container/Container.stories.tsx +0 -1
  275. package/src/primitives/Container/Container.tsx +5 -8
  276. package/src/primitives/Flex/Flex.stories.tsx +0 -1
  277. package/src/primitives/Flex/Flex.tsx +10 -12
  278. package/src/primitives/Grid/Grid.stories.tsx +0 -1
  279. package/src/primitives/Grid/Grid.tsx +4 -9
  280. package/src/primitives/Panel/Panel.stories.tsx +9 -8
  281. package/src/primitives/Panel/Panel.tsx +64 -63
  282. package/src/testing/Loading.tsx +25 -4
  283. package/src/testing/decorators/withLayout.tsx +6 -6
  284. package/src/testing/decorators/withTheme.tsx +10 -7
  285. package/src/translations.ts +3 -3
  286. package/src/util/usePx.ts +1 -0
  287. package/dist/lib/browser/chunk-2FKSMWNY.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-ZNBLTSHI.mjs.map +0 -7
@@ -1,7 +1,9 @@
1
1
  import {
2
+ ErrorStack,
2
3
  ThemeProvider,
3
- Tooltip
4
- } from "../chunk-2FKSMWNY.mjs";
4
+ Tooltip,
5
+ parseCaptureOwnerStack
6
+ } from "../chunk-BDBC6H6V.mjs";
5
7
 
6
8
  // src/testing/decorators/withLayout.tsx
7
9
  import React, { memo } from "react";
@@ -15,7 +17,7 @@ var withLayout = (props = {}) => (Story) => {
15
17
  const { layout = "default", classNames, scroll } = props;
16
18
  const Container2 = layouts[layout] ?? layouts.fullscreen;
17
19
  return /* @__PURE__ */ React.createElement(Container2, {
18
- classNames: mx(classNames, scroll ? "overflow-y-auto" : "overflow-hidden")
20
+ classNames: mx(scroll ? "overflow-y-auto" : "overflow-hidden", classNames)
19
21
  }, /* @__PURE__ */ React.createElement(MemoizedStory, null));
20
22
  }
21
23
  };
@@ -26,21 +28,21 @@ var layouts = {
26
28
  }, children),
27
29
  fullscreen: ({ classNames, children }) => /* @__PURE__ */ React.createElement("div", {
28
30
  role: "none",
29
- className: mx("fixed inset-0 flex overflow-hidden bg-base-surface", classNames)
31
+ className: mx("fixed inset-0 flex overflow-hidden bg-black", classNames)
30
32
  }, children),
31
33
  centered: ({ classNames, children }) => /* @__PURE__ */ React.createElement("div", {
32
34
  role: "none",
33
- className: mx("fixed inset-0 grid overflow-hidden place-items-center bg-base-surface")
35
+ className: mx("fixed inset-0 grid overflow-hidden place-items-center bg-black")
34
36
  }, /* @__PURE__ */ React.createElement("div", {
35
37
  role: "none",
36
- className: mx("flex flex-col w-[40rem] bg-group-surface", classNames)
38
+ className: mx("flex flex-col bg-base-surface", classNames)
37
39
  }, children)),
38
40
  column: ({ classNames, children }) => /* @__PURE__ */ React.createElement("div", {
39
41
  role: "none",
40
- className: "fixed inset-0 flex overflow-hidden justify-center bg-base-surface"
42
+ className: "fixed inset-0 flex overflow-hidden justify-center bg-black"
41
43
  }, /* @__PURE__ */ React.createElement("div", {
42
44
  role: "none",
43
- className: mx("flex flex-col w-[40rem] bg-group-surface", classNames)
45
+ className: mx("flex flex-col w-[40rem] bg-base-surface", classNames)
44
46
  }, children))
45
47
  };
46
48
 
@@ -85,35 +87,45 @@ var withLayoutVariants = ({ elevations = [
85
87
  };
86
88
 
87
89
  // src/testing/decorators/withTheme.tsx
88
- import React3, { memo as memo2 } from "react";
90
+ import React3 from "react";
89
91
  import { defaultTx } from "@dxos/ui-theme";
90
- var withTheme = ({ tx = defaultTx, ...props } = {}) => (Story, context) => {
92
+ var withTheme = ({ tx = defaultTx, noCache, platform } = {}) => (Story, context) => {
91
93
  const { globals: { theme }, parameters: { translations } } = context;
92
- const MemoizedStory = /* @__PURE__ */ memo2(Story);
93
94
  return /* @__PURE__ */ React3.createElement(ThemeProvider, {
94
- ...props,
95
95
  tx,
96
96
  themeMode: theme,
97
97
  resourceExtensions: translations,
98
- noCache: true
99
- }, /* @__PURE__ */ React3.createElement(Tooltip.Provider, null, /* @__PURE__ */ React3.createElement(MemoizedStory, null)));
98
+ noCache,
99
+ platform
100
+ }, /* @__PURE__ */ React3.createElement(Tooltip.Provider, null, /* @__PURE__ */ React3.createElement(Story, null)));
100
101
  };
101
102
 
102
103
  // src/testing/Loading.tsx
104
+ import React4, { captureOwnerStack, useEffect, useState } from "react";
103
105
  import { mx as mx3 } from "@dxos/ui-theme";
104
106
  import { safeStringify } from "@dxos/util";
105
- import React4, { useEffect, useState } from "react";
106
107
  var Loading = ({ data }) => {
107
108
  const [visible, setVisible] = useState(false);
109
+ const ownerFrames = parseCaptureOwnerStack(captureOwnerStack());
108
110
  useEffect(() => {
109
111
  const t = setTimeout(() => setVisible(true), 500);
110
112
  return () => clearTimeout(t);
111
113
  }, []);
112
114
  return /* @__PURE__ */ React4.createElement("div", {
113
- className: mx3("flex flex-col opacity-0 transition delay-1000 duration-1000", visible && "opacity-100")
115
+ className: "w-full p-2"
116
+ }, /* @__PURE__ */ React4.createElement("div", {
117
+ className: mx3("flex flex-col w-full p-2 border-2 border-teal-500 rounded-md", "opacity-0 transition delay-1000 duration-1000", visible && "opacity-100")
114
118
  }, /* @__PURE__ */ React4.createElement("h2", {
115
- className: "uppercase"
116
- }, "Loading"), /* @__PURE__ */ React4.createElement("pre", null, safeStringify(data, void 0, 2)));
119
+ className: "uppercase capitalize text-xs"
120
+ }, "Loading State"), /* @__PURE__ */ React4.createElement("pre", {
121
+ className: "text-sm text-description"
122
+ }, safeStringify(data, void 0, 2)), /* @__PURE__ */ React4.createElement("h3", {
123
+ className: "uppercase capitalize text-xs mt-2"
124
+ }, "Owner stack"), ownerFrames && ownerFrames.length > 0 ? /* @__PURE__ */ React4.createElement(ErrorStack, {
125
+ frames: ownerFrames
126
+ }) : /* @__PURE__ */ React4.createElement("p", {
127
+ className: "text-xs text-subdued"
128
+ }, "No owner stack (production build or unsupported context).")));
117
129
  };
118
130
  export {
119
131
  Loading,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/testing/decorators/withLayout.tsx", "../../../../src/testing/decorators/withLayoutVariants.tsx", "../../../../src/testing/decorators/withTheme.tsx", "../../../../src/testing/Loading.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React, { type FC, type PropsWithChildren, memo } from 'react';\n\nimport { type ClassNameValue, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/ui-theme';\n\nexport type ContainerProps = ThemedClassName<PropsWithChildren>;\n\nexport type ContainerType = 'default' | 'fullscreen' | 'centered' | 'column';\n\nexport type WithLayoutProps =\n | FC<ContainerProps>\n | {\n classNames?: ClassNameValue;\n layout?: ContainerType;\n scroll?: boolean;\n };\n\n/**\n * Adds layout container.\n */\nexport const withLayout =\n (props: WithLayoutProps = {}): Decorator =>\n (Story) => {\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n if (typeof props === 'function') {\n const Container = props;\n return (\n <Container>\n <MemoizedStory />\n </Container>\n );\n } else {\n const { layout = 'default', classNames, scroll } = props;\n const Container = layouts[layout] ?? layouts.fullscreen;\n return (\n <Container classNames={mx(classNames, scroll ? 'overflow-y-auto' : 'overflow-hidden')}>\n <MemoizedStory />\n </Container>\n );\n }\n };\n\nconst layouts: Record<ContainerType, FC<ContainerProps>> = {\n default: ({ classNames, children }: ContainerProps) => (\n <div role='none' className={mx('p-4', classNames)}>\n {children}\n </div>\n ),\n\n fullscreen: ({ classNames, children }: ContainerProps) => (\n <div role='none' className={mx('fixed inset-0 flex overflow-hidden bg-base-surface', classNames)}>\n {children}\n </div>\n ),\n\n centered: ({ classNames, children }: ContainerProps) => (\n <div role='none' className={mx('fixed inset-0 grid overflow-hidden place-items-center bg-base-surface')}>\n <div role='none' className={mx('flex flex-col w-[40rem] bg-group-surface', classNames)}>\n {children}\n </div>\n </div>\n ),\n\n column: ({ classNames, children }: ContainerProps) => (\n <div role='none' className='fixed inset-0 flex overflow-hidden justify-center bg-base-surface'>\n <div role='none' className={mx('flex flex-col w-[40rem] bg-group-surface', classNames)}>\n {children}\n </div>\n </div>\n ),\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React, { type ComponentType, type PropsWithChildren } from 'react';\n\nimport { mx, surfaceShadow } from '@dxos/ui-theme';\nimport { type Density, type Elevation } from '@dxos/ui-types';\n\ntype Config = {\n elevations?: { elevation: Elevation; surface?: string }[];\n densities?: Density[];\n};\n\nconst Container = ({ children, elevation, surface }: PropsWithChildren<{ elevation: Elevation; surface?: string }>) => (\n <div className={mx('p-4 rounded-sm', surface, surfaceShadow({ elevation }))}>{children}</div>\n);\n\nconst Panel = ({\n Story,\n elevations,\n densities,\n className,\n}: { Story: ComponentType } & Config & { className?: string }) => {\n return (\n <div className={mx('flex flex-col h-full p-8 gap-8', className)}>\n {elevations?.map(({ elevation, surface }) =>\n densities?.map((density) => (\n <Container key={`${elevation}--${density}`} surface={surface} elevation={elevation}>\n <Story />\n </Container>\n )),\n )}\n </div>\n );\n};\n\nexport const withLayoutVariants = ({\n elevations = [\n { elevation: 'dialog', surface: 'bg-modal-surface' },\n { elevation: 'positioned', surface: 'bg-card-surface' },\n { elevation: 'base', surface: 'bg-base-surface' },\n ],\n densities = ['coarse'],\n}: Config = {}): Decorator => {\n return (Story) => <Panel Story={Story} elevations={elevations} densities={densities} />;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React, { memo } from 'react';\n\nimport { defaultTx } from '@dxos/ui-theme';\nimport { type ThemeMode } from '@dxos/ui-types';\n\nimport { type ThemeContextValue, ThemeProvider, Tooltip } from '../../components';\n\n/**\n * Adds theme decorator.\n */\nexport const withTheme =\n ({ tx = defaultTx, ...props }: Partial<ThemeContextValue> = {}): Decorator =>\n (Story, context) => {\n const {\n globals: { theme },\n parameters: { translations },\n } = context;\n\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n\n return (\n <ThemeProvider {...props} tx={tx} themeMode={theme as ThemeMode} resourceExtensions={translations} noCache>\n <Tooltip.Provider>\n <MemoizedStory />\n </Tooltip.Provider>\n </ThemeProvider>\n );\n };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { mx } from '@dxos/ui-theme';\nimport { safeStringify } from '@dxos/util';\nimport React, { useEffect, useState } from 'react';\n\nexport type LoadingProps = { data?: any };\n\n/**\n * Storybook loading component.\n */\nexport const Loading = ({ data }: LoadingProps) => {\n const [visible, setVisible] = useState(false);\n useEffect(() => {\n const t = setTimeout(() => setVisible(true), 500);\n return () => clearTimeout(t);\n }, []);\n return (\n <div className={mx('flex flex-col opacity-0 transition delay-1000 duration-1000', visible && 'opacity-100')}>\n <h2 className='uppercase'>Loading</h2>\n <pre>{safeStringify(data, undefined, 2)}</pre>\n </div>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "memo", "mx", "withLayout", "props", "Story", "MemoizedStory", "memo", "Container", "layout", "classNames", "scroll", "layouts", "fullscreen", "mx", "default", "children", "div", "role", "className", "centered", "column", "React", "mx", "surfaceShadow", "Container", "children", "elevation", "surface", "React", "div", "className", "mx", "surfaceShadow", "Panel", "Story", "elevations", "densities", "map", "density", "key", "withLayoutVariants", "React", "memo", "defaultTx", "withTheme", "tx", "defaultTx", "props", "Story", "context", "globals", "theme", "parameters", "translations", "MemoizedStory", "memo", "React", "ThemeProvider", "themeMode", "resourceExtensions", "noCache", "Tooltip", "Provider", "mx", "safeStringify", "React", "useEffect", "useState", "Loading", "data", "visible", "setVisible", "useState", "useEffect", "t", "setTimeout", "clearTimeout", "React", "div", "className", "mx", "h2", "pre", "safeStringify", "undefined"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React, { type FC, type PropsWithChildren, memo } from 'react';\n\nimport { type ClassNameValue, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/ui-theme';\n\nexport type ContainerProps = ThemedClassName<PropsWithChildren>;\n\nexport type ContainerType = 'default' | 'fullscreen' | 'centered' | 'column';\n\nexport type WithLayoutProps =\n | FC<ContainerProps>\n | {\n classNames?: ClassNameValue;\n layout?: ContainerType;\n scroll?: boolean;\n };\n\n/**\n * Adds layout container.\n */\nexport const withLayout =\n (props: WithLayoutProps = {}): Decorator =>\n (Story) => {\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n if (typeof props === 'function') {\n const Container = props;\n return (\n <Container>\n <MemoizedStory />\n </Container>\n );\n } else {\n const { layout = 'default', classNames, scroll } = props;\n const Container = layouts[layout] ?? layouts.fullscreen;\n return (\n <Container classNames={mx(scroll ? 'overflow-y-auto' : 'overflow-hidden', classNames)}>\n <MemoizedStory />\n </Container>\n );\n }\n };\n\nconst layouts: Record<ContainerType, FC<ContainerProps>> = {\n default: ({ classNames, children }: ContainerProps) => (\n <div role='none' className={mx('p-4', classNames)}>\n {children}\n </div>\n ),\n\n fullscreen: ({ classNames, children }: ContainerProps) => (\n <div role='none' className={mx('fixed inset-0 flex overflow-hidden bg-black', classNames)}>\n {children}\n </div>\n ),\n\n centered: ({ classNames, children }: ContainerProps) => (\n <div role='none' className={mx('fixed inset-0 grid overflow-hidden place-items-center bg-black')}>\n <div role='none' className={mx('flex flex-col bg-base-surface', classNames)}>\n {children}\n </div>\n </div>\n ),\n\n column: ({ classNames, children }: ContainerProps) => (\n <div role='none' className='fixed inset-0 flex overflow-hidden justify-center bg-black'>\n <div role='none' className={mx('flex flex-col w-[40rem] bg-base-surface', classNames)}>\n {children}\n </div>\n </div>\n ),\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React, { type ComponentType, type PropsWithChildren } from 'react';\n\nimport { mx, surfaceShadow } from '@dxos/ui-theme';\nimport { type Density, type Elevation } from '@dxos/ui-types';\n\ntype Config = {\n elevations?: { elevation: Elevation; surface?: string }[];\n densities?: Density[];\n};\n\nconst Container = ({ children, elevation, surface }: PropsWithChildren<{ elevation: Elevation; surface?: string }>) => (\n <div className={mx('p-4 rounded-sm', surface, surfaceShadow({ elevation }))}>{children}</div>\n);\n\nconst Panel = ({\n Story,\n elevations,\n densities,\n className,\n}: { Story: ComponentType } & Config & { className?: string }) => {\n return (\n <div className={mx('flex flex-col h-full p-8 gap-8', className)}>\n {elevations?.map(({ elevation, surface }) =>\n densities?.map((density) => (\n <Container key={`${elevation}--${density}`} surface={surface} elevation={elevation}>\n <Story />\n </Container>\n )),\n )}\n </div>\n );\n};\n\nexport const withLayoutVariants = ({\n elevations = [\n { elevation: 'dialog', surface: 'bg-modal-surface' },\n { elevation: 'positioned', surface: 'bg-card-surface' },\n { elevation: 'base', surface: 'bg-base-surface' },\n ],\n densities = ['coarse'],\n}: Config = {}): Decorator => {\n return (Story) => <Panel Story={Story} elevations={elevations} densities={densities} />;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React from 'react';\n\nimport { defaultTx } from '@dxos/ui-theme';\nimport { type ThemeMode } from '@dxos/ui-types';\n\nimport { type ThemeContextValue, ThemeProvider, Tooltip } from '../../components';\n\n/**\n * Adds theme decorator.\n */\nexport const withTheme =\n ({ tx = defaultTx, noCache, platform }: Partial<ThemeContextValue> = {}): Decorator =>\n (Story, context) => {\n const {\n globals: { theme },\n parameters: { translations },\n } = context;\n\n return (\n <ThemeProvider\n tx={tx}\n themeMode={theme as ThemeMode}\n resourceExtensions={translations}\n noCache={noCache}\n platform={platform}\n >\n <Tooltip.Provider>\n <Story />\n </Tooltip.Provider>\n </ThemeProvider>\n );\n };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { captureOwnerStack, useEffect, useState } from 'react';\n\nimport { mx } from '@dxos/ui-theme';\nimport { safeStringify } from '@dxos/util';\n\nimport { ErrorStack, parseCaptureOwnerStack } from '../components';\n\nexport type LoadingProps = { data?: any };\n\n/**\n * Storybook loading component.\n */\nexport const Loading = ({ data }: LoadingProps) => {\n const [visible, setVisible] = useState(false);\n const ownerFrames = parseCaptureOwnerStack(captureOwnerStack());\n\n useEffect(() => {\n const t = setTimeout(() => setVisible(true), 500);\n return () => clearTimeout(t);\n }, []);\n\n return (\n <div className='w-full p-2'>\n <div\n className={mx(\n 'flex flex-col w-full p-2 border-2 border-teal-500 rounded-md',\n 'opacity-0 transition delay-1000 duration-1000',\n visible && 'opacity-100',\n )}\n >\n <h2 className='uppercase capitalize text-xs'>Loading State</h2>\n <pre className='text-sm text-description'>{safeStringify(data, undefined, 2)}</pre>\n\n <h3 className='uppercase capitalize text-xs mt-2'>Owner stack</h3>\n {ownerFrames && ownerFrames.length > 0 ? (\n <ErrorStack frames={ownerFrames} />\n ) : (\n <p className='text-xs text-subdued'>No owner stack (production build or unsupported context).</p>\n )}\n </div>\n </div>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "memo", "mx", "withLayout", "props", "Story", "MemoizedStory", "Container", "layout", "classNames", "scroll", "layouts", "fullscreen", "default", "children", "div", "role", "className", "centered", "column", "React", "mx", "surfaceShadow", "Container", "children", "elevation", "surface", "div", "className", "Panel", "Story", "elevations", "densities", "map", "density", "key", "withLayoutVariants", "React", "defaultTx", "withTheme", "tx", "defaultTx", "noCache", "platform", "Story", "context", "globals", "theme", "parameters", "translations", "React", "ThemeProvider", "themeMode", "resourceExtensions", "Tooltip", "Provider", "React", "captureOwnerStack", "useEffect", "useState", "mx", "safeStringify", "Loading", "data", "visible", "setVisible", "useState", "ownerFrames", "parseCaptureOwnerStack", "captureOwnerStack", "useEffect", "t", "setTimeout", "clearTimeout", "React", "div", "className", "mx", "h2", "pre", "safeStringify", "undefined", "h3", "length", "ErrorStack", "frames", "p"]
7
7
  }
@@ -0,0 +1,18 @@
1
+ // src/translations.ts
2
+ var translationKey = "@dxos/react-ui";
3
+ var translations = [
4
+ {
5
+ "en-US": {
6
+ [translationKey]: {
7
+ "toolbar-menu.label": "Action menu",
8
+ "toolbar-drag-handle.label": "Drag to rearrange",
9
+ "toolbar-close.label": "Close"
10
+ }
11
+ }
12
+ }
13
+ ];
14
+ export {
15
+ translationKey,
16
+ translations
17
+ };
18
+ //# sourceMappingURL=translations.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/translations.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nexport const translationKey = '@dxos/react-ui';\n\nexport const translations = [\n {\n 'en-US': {\n [translationKey]: {\n 'toolbar-menu.label': 'Action menu',\n 'toolbar-drag-handle.label': 'Drag to rearrange',\n 'toolbar-close.label': 'Close',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
+ "mappings": ";AAMO,IAAMA,iBAAiB;AAEvB,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACD,cAAAA,GAAiB;QAChB,sBAAsB;QACtB,6BAA6B;QAC7B,uBAAuB;MACzB;IACF;EACF;;",
6
+ "names": ["translationKey", "translations"]
7
+ }
@@ -126,7 +126,7 @@ var hasIosKeyboard = () => {
126
126
 
127
127
  // src/components/ThemeProvider/ThemeProvider.tsx
128
128
  var ThemeContext = /* @__PURE__ */ createContext4(void 0);
129
- var ThemeProvider = ({ children, fallback = null, resourceExtensions, appNs, tx = (_path, _styleProps, ..._options) => void 0, themeMode = "dark", rootDensity = "fine", ...rest }) => {
129
+ var ThemeProvider = ({ children, fallback = null, resourceExtensions, appNs, tx = (_path, _styleProps, ..._options) => void 0, themeMode = "dark", rootDensity = "fine", noCache, platform }) => {
130
130
  useEffect2(() => {
131
131
  if (document.defaultView) {
132
132
  const kb = createKeyborg(document.defaultView);
@@ -140,12 +140,14 @@ var ThemeProvider = ({ children, fallback = null, resourceExtensions, appNs, tx
140
140
  themeMode,
141
141
  hasIosKeyboard: hasIosKeyboard(),
142
142
  safeAreaPadding,
143
- ...rest
143
+ noCache,
144
+ platform
144
145
  }), [
145
146
  tx,
146
147
  themeMode,
147
148
  safeAreaPadding,
148
- rest
149
+ noCache,
150
+ platform
149
151
  ]);
150
152
  return /* @__PURE__ */ React4.createElement(ThemeContext.Provider, {
151
153
  value: contextValue
@@ -749,6 +751,76 @@ var Tooltip = {
749
751
  Trigger: TooltipTrigger
750
752
  };
751
753
 
754
+ // src/components/ErrorFallback/ErrorStack.tsx
755
+ import ErrorStackParser from "error-stack-parser";
756
+ import React6 from "react";
757
+ import { mx } from "@dxos/ui-theme";
758
+ var parseCaptureOwnerStack = (stack) => {
759
+ if (stack == null || stack.length === 0) {
760
+ return null;
761
+ }
762
+ const err = new Error();
763
+ err.stack = stack;
764
+ try {
765
+ return ErrorStackParser.parse(err);
766
+ } catch {
767
+ err.stack = `Error
768
+ ${stack}`;
769
+ try {
770
+ return ErrorStackParser.parse(err);
771
+ } catch {
772
+ return null;
773
+ }
774
+ }
775
+ };
776
+ var ErrorStack = ({ error, frames: framesProp }) => {
777
+ const frames = framesProp ?? (error ? ErrorStackParser.parse(error) : []);
778
+ if (frames.length === 0) {
779
+ return null;
780
+ }
781
+ return /* @__PURE__ */ React6.createElement("div", {
782
+ className: "font-mono text-sm"
783
+ }, frames.map((frame, i) => {
784
+ const isLast = i === frames.length - 1;
785
+ const local = frame.fileName ? parseLocalFrame(frame.fileName, frame.lineNumber, frame.columnNumber) : void 0;
786
+ const name = frame.functionName ?? "<anonymous>";
787
+ return /* @__PURE__ */ React6.createElement("div", {
788
+ key: i,
789
+ className: mx("grid grid-cols-[16px_1fr_auto_auto] items-stretch gap-x-2", local && "cursor-pointer hover:bg-hover-surface")
790
+ }, /* @__PURE__ */ React6.createElement("div", {
791
+ className: "relative"
792
+ }, /* @__PURE__ */ React6.createElement("div", {
793
+ className: mx("absolute left-1/2 -translate-x-1/2 w-px bg-neutral-500", isLast ? "top-0 h-1/2" : "inset-y-0")
794
+ }), /* @__PURE__ */ React6.createElement("div", {
795
+ className: "absolute top-1/2 -translate-y-1/2 left-1/2 right-0 h-px bg-neutral-500"
796
+ })), local ? /* @__PURE__ */ React6.createElement("a", {
797
+ href: local.href,
798
+ className: "truncate self-center"
799
+ }, name) : /* @__PURE__ */ React6.createElement("span", {
800
+ className: "text-subdued truncate self-center"
801
+ }, name), /* @__PURE__ */ React6.createElement("span", {
802
+ className: "text-xs text-subdued truncate self-center"
803
+ }, local?.fileName ?? ""), /* @__PURE__ */ React6.createElement("span", {
804
+ className: "text-xs text-subdued text-right self-center"
805
+ }, local ? `${frame.lineNumber}:${frame.columnNumber}` : ""));
806
+ }));
807
+ };
808
+ var parseLocalFrame = (fileUrl, line, col) => {
809
+ try {
810
+ const { pathname } = new URL(fileUrl);
811
+ if (!pathname.startsWith("/@fs/")) {
812
+ return void 0;
813
+ }
814
+ const localPath = pathname.slice(4);
815
+ return {
816
+ href: `vscode://file/${localPath}:${line ?? 1}:${col ?? 1}`,
817
+ fileName: pathname.split("/").pop() ?? localPath
818
+ };
819
+ } catch {
820
+ return void 0;
821
+ }
822
+ };
823
+
752
824
  // src/hooks/useElevationContext.ts
753
825
  var useElevationContext = (propsElevation) => {
754
826
  const { elevation } = useContext3(ElevationContext);
@@ -771,6 +843,8 @@ export {
771
843
  ThemeProvider,
772
844
  createTooltipScope,
773
845
  useTooltipContext,
774
- Tooltip
846
+ Tooltip,
847
+ parseCaptureOwnerStack,
848
+ ErrorStack
775
849
  };
776
- //# sourceMappingURL=chunk-ZNBLTSHI.mjs.map
850
+ //# sourceMappingURL=chunk-3JSJK2ZY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/DensityProvider/DensityProvider.tsx", "../../../src/components/ElevationProvider/ElevationProvider.tsx", "../../../src/hooks/useElevationContext.ts", "../../../src/components/ThemeProvider/ThemeProvider.tsx", "../../../src/hooks/useThemeContext.ts", "../../../src/hooks/useSafeArea.ts", "../../../src/components/ThemeProvider/TranslationsProvider.tsx", "../../../src/util/hasIosKeyboard.ts", "../../../src/components/Tooltip/Tooltip.tsx", "../../../src/components/ErrorFallback/ErrorStack.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type PropsWithChildren, createContext } from 'react';\n\nimport { type Density } from '@dxos/ui-types';\n\nexport interface DensityContextValue {\n density?: Density;\n}\n\nexport type DensityProviderProps = PropsWithChildren<{\n density?: Density;\n}>;\n\nexport const DensityContext = createContext<DensityContextValue>({ density: 'fine' });\n\nexport const DensityProvider = ({ density, children }: DensityProviderProps) => (\n <DensityContext.Provider value={{ density }}>{children}</DensityContext.Provider>\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type PropsWithChildren, createContext } from 'react';\n\nimport { type Elevation } from '@dxos/ui-types';\n\nexport interface ElevationContextValue {\n elevation?: Elevation;\n}\n\nexport type ElevationProviderProps = PropsWithChildren<{\n elevation?: Elevation;\n}>;\n\nexport const ElevationContext = createContext<ElevationContextValue>({ elevation: 'base' });\n\nexport const ElevationProvider = ({ elevation, children }: ElevationProviderProps) => (\n <ElevationContext.Provider value={{ elevation }}>{children}</ElevationContext.Provider>\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useContext } from 'react';\n\nimport { type Elevation } from '@dxos/ui-types';\n\nimport { ElevationContext } from '../components';\n\nexport const useElevationContext = (propsElevation?: Elevation) => {\n const { elevation } = useContext(ElevationContext);\n return propsElevation ?? elevation;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { createKeyborg } from 'keyborg';\nimport React, { type PropsWithChildren, createContext, useEffect, useMemo } from 'react';\n\nimport { type Density, type Elevation, type ThemeFunction, type ThemeMode } from '@dxos/ui-types';\n\nimport { type SafeAreaPadding, useSafeArea } from '../../hooks';\nimport { hasIosKeyboard } from '../../util';\nimport { DensityProvider } from '../DensityProvider';\nimport { ElevationProvider } from '../ElevationProvider';\nimport { TranslationsProvider, type TranslationsProviderProps } from './TranslationsProvider';\n\nexport type ThemeContextValue = {\n tx: ThemeFunction<any>;\n themeMode: ThemeMode;\n hasIosKeyboard: boolean;\n safeAreaPadding?: SafeAreaPadding;\n noCache?: boolean;\n platform?: 'mobile' | 'desktop';\n};\n\n/**\n * @internal\n */\nexport const ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\nexport type ThemeProviderProps = Omit<TranslationsProviderProps, 'children'> &\n Partial<Omit<ThemeContextValue, 'safeAreaPadding'>> &\n PropsWithChildren<{\n rootDensity?: Density;\n rootElevation?: Elevation;\n }>;\n\nexport const ThemeProvider = ({\n children,\n fallback = null,\n resourceExtensions,\n appNs,\n tx = (_path, _styleProps, ..._options) => undefined,\n themeMode = 'dark',\n rootDensity = 'fine',\n noCache,\n platform,\n}: ThemeProviderProps) => {\n useEffect(() => {\n if (document.defaultView) {\n const kb = createKeyborg(document.defaultView);\n kb.subscribe(handleInputModalityChange);\n return () => kb.unsubscribe(handleInputModalityChange);\n }\n }, []);\n\n const safeAreaPadding = useSafeArea();\n // Destructure all props explicitly so useMemo deps are stable primitives, not a new `rest` object every render.\n const contextValue = useMemo(\n () => ({ tx, themeMode, hasIosKeyboard: hasIosKeyboard(), safeAreaPadding, noCache, platform }),\n [tx, themeMode, safeAreaPadding, noCache, platform],\n );\n\n return (\n <ThemeContext.Provider value={contextValue}>\n <TranslationsProvider\n {...{\n fallback,\n resourceExtensions,\n appNs,\n }}\n >\n <ElevationProvider elevation='base'>\n <DensityProvider density={rootDensity}>{children}</DensityProvider>\n </ElevationProvider>\n </TranslationsProvider>\n </ThemeContext.Provider>\n );\n};\n\nconst handleInputModalityChange = (isUsingKeyboard: boolean) => {\n if (isUsingKeyboard) {\n document.body.setAttribute('data-w-keyboard', 'true');\n } else {\n document.body.removeAttribute('data-w-keyboard');\n }\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useContext } from 'react';\n\nimport { raise } from '@dxos/debug';\n\nimport { ThemeContext } from '../components';\n\nexport const useThemeContext = () => useContext(ThemeContext) ?? raise(new Error('Missing ThemeContext'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useState } from 'react';\n\nimport { useViewportResize } from '@dxos/react-hooks';\n\nexport type SafeAreaPadding = Record<'top' | 'right' | 'bottom' | 'left', number>;\n\nexport const initialSafeArea = { top: NaN, right: NaN, bottom: NaN, left: NaN };\n\nexport const useSafeArea = (): SafeAreaPadding => {\n const [padding, setPadding] = useState<SafeAreaPadding>(initialSafeArea);\n const handleResize = useCallback(() => {\n setPadding({\n top: parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--safe-area-top')),\n right: parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--safe-area-right')),\n bottom: parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--safe-area-bottom')),\n left: parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--safe-area-left')),\n });\n }, []);\n\n useViewportResize(handleResize);\n return padding;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Locale, enUS as dtLocaleEnUs } from 'date-fns/locale';\nimport i18Next, { type Resource } from 'i18next';\nimport React, { type ReactNode, Suspense, createContext, useContext, useEffect, useState } from 'react';\nimport { initReactI18next, useTranslation as useI18NextTranslation } from 'react-i18next';\n\nconst initialLng = 'en-US';\nconst initialNs = 'dxos-common';\nconst initialDtLocale = dtLocaleEnUs;\n\nexport const resources = {\n [initialLng]: {\n [initialNs]: {\n 'loading translations': 'Loading translations…',\n },\n },\n} as const satisfies Resource;\n\nvoid i18Next.use(initReactI18next).init({\n resources,\n lng: initialLng,\n defaultNS: initialNs,\n interpolation: {\n escapeValue: false,\n },\n});\n\nexport interface TranslationsProviderProps {\n children?: ReactNode;\n // TODO(wittjosiah): Rename to `placeholder` to match ClientProvider?\n // Placeholder => loading, fallback => error.\n fallback?: ReactNode;\n resourceExtensions?: Resource[];\n appNs?: string;\n dtLocale?: Locale;\n}\n\nexport const TranslationsContext = createContext({\n appNs: initialNs,\n dtLocale: initialDtLocale,\n});\n\nexport const useTranslation = (...args: Parameters<typeof useI18NextTranslation>) => {\n const result = useI18NextTranslation(...args);\n const { dtLocale } = useContext(TranslationsContext);\n return { ...result, dtLocale };\n};\n\nexport const TranslationsProvider = ({\n fallback,\n resourceExtensions,\n children,\n appNs,\n dtLocale,\n}: TranslationsProviderProps) => {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(false);\n if (resourceExtensions && resourceExtensions.length) {\n resourceExtensions.forEach((resource) => {\n Object.keys(resource).forEach((language) => {\n Object.keys(resource[language]).forEach((ns) => {\n i18Next.addResourceBundle(language, ns, resource[language][ns]);\n });\n });\n });\n }\n\n setLoaded(true);\n }, [resourceExtensions]);\n\n // TODO(thure): This is not ideal, but i18next was causing `Suspense` to not render the fallback even when the child was asking for namespaces yet to be added.\n // TODO(burdon): Fallbacks should only appear after a short delay, and if the displayed then be visible for 500mx to avoid startup flickering.\n return (\n <TranslationsContext.Provider value={{ appNs: appNs ?? initialNs, dtLocale: dtLocale ?? initialDtLocale }}>\n <Suspense fallback={fallback}>{loaded ? children : fallback}</Suspense>\n </TranslationsContext.Provider>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const hasIosKeyboard = () => {\n // TODO(thure): UA sniffing is never good, however I haven’t found a better way to query for whether the on-screen keyboard will appear on `focus` outside of a click handler.\n return !!navigator.userAgent.match(/iP(ad|od|hone).+Safari/);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// This is based upon `@radix-ui/react-tooltip` fetched 17 March 2025 at https://github.com/radix-ui/primitives at commit 6e75e11.\n// TODO(burdon): Replace with https://ui.shadcn.com/docs/components/radix/tooltip\n\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport type { Scope } from '@radix-ui/react-context';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\nimport { useId } from '@radix-ui/react-id';\nimport * as PopperPrimitive from '@radix-ui/react-popper';\nimport { type PopperAnchorProps, createPopperScope } from '@radix-ui/react-popper';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Slottable } from '@radix-ui/react-slot';\nimport { type TooltipProps } from '@radix-ui/react-tooltip';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport * as VisuallyHiddenPrimitive from '@radix-ui/react-visually-hidden';\nimport React, {\n type ComponentPropsWithoutRef,\n type ComponentRef,\n type FC,\n type ReactNode,\n type RefObject,\n type SyntheticEvent,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useElevationContext, useThemeContext } from '../../hooks';\n\ntype TooltipScopedProps<P = {}> = P & { __scopeTooltip?: Scope };\nconst [createTooltipContext, createTooltipScope] = createContextScope('Tooltip', [createPopperScope]);\nconst usePopperScope = createPopperScope();\n\n//\n// Tooltip\n//\n\nconst DEFAULT_DELAY_DURATION = 700;\nconst TOOLTIP_OPEN = 'tooltip.open';\nconst TOOLTIP_NAME = 'Tooltip';\n\ntype TooltipContextValue = {\n contentId: string;\n open: boolean;\n stateAttribute: 'closed' | 'delayed-open' | 'instant-open';\n trigger: TooltipTriggerElement | null;\n onTriggerChange(trigger: TooltipTriggerElement | null): void;\n onTriggerEnter(): void;\n onTriggerLeave(): void;\n onOpen(): void;\n onClose(): void;\n onPointerInTransitChange(inTransit: boolean): void;\n isPointerInTransitRef: RefObject<boolean>;\n disableHoverableContent: boolean;\n};\n\nconst [TooltipContextProvider, useTooltipContext] = createTooltipContext<TooltipContextValue>(TOOLTIP_NAME);\n\ntype TooltipProviderProps = {\n children?: ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /**\n * The duration from when the pointer enters the trigger until the tooltip gets opened. This will\n * override the prop with the same name passed to Provider.\n * @defaultValue 700\n */\n delayDuration?: number;\n /**\n * When `true`, trying to hover the content will result in the tooltip closing as the pointer leaves the trigger.\n * @defaultValue false\n */\n disableHoverableContent?: boolean;\n /**\n * How much time a user has to enter another trigger without incurring a delay again.\n * @defaultValue 300\n */\n skipDelayDuration?: number;\n};\n\nconst TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<TooltipProviderProps>) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disableHoverableContent = false,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n } = props;\n const isOpenDelayedRef = useRef(true);\n const isPointerInTransitRef = useRef(false);\n const skipDelayTimerRef = useRef(0);\n\n useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = useState<HTMLButtonElement | null>(null);\n const [content, setContent] = useState<string>('');\n const [side, setSide] = useState<TooltipSide | undefined>(undefined);\n const triggerRef = useRef<HTMLButtonElement | null>(trigger);\n const handleTriggerChange = useCallback((nextTrigger: HTMLButtonElement | null) => {\n setTrigger(nextTrigger);\n triggerRef.current = nextTrigger;\n setContent(nextTrigger?.getAttribute('data-tooltip-content') ?? '');\n setSide((nextTrigger?.getAttribute('data-tooltip-side') as TooltipSide | null) ?? undefined);\n }, []);\n const contentId = useId();\n const openTimerRef = useRef(0);\n const wasOpenDelayedRef = useRef(false);\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (open) {\n window.clearTimeout(skipDelayTimerRef.current);\n isOpenDelayedRef.current = false;\n // as `onChange` is called within a lifecycle method we\n // avoid dispatching via `dispatchDiscreteCustomEvent`.\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(() => (isOpenDelayedRef.current = true), skipDelayDuration);\n }\n onOpenChange?.(open);\n },\n [skipDelayDuration, onOpenChange],\n );\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: handleOpenChange,\n });\n const stateAttribute = useMemo(() => {\n return open ? (wasOpenDelayedRef.current ? 'delayed-open' : 'instant-open') : 'closed';\n }, [open]);\n\n const handleOpen = useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n\n const handleClose = useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n\n const handleDelayedOpen = useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n\n useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n\n const { tx } = useThemeContext();\n const elevation = useElevationContext();\n\n return (\n <PopperPrimitive.Root {...popperScope}>\n <TooltipContextProvider\n scope={__scopeTooltip}\n contentId={contentId}\n open={open}\n stateAttribute={stateAttribute}\n trigger={trigger}\n onTriggerChange={handleTriggerChange}\n onTriggerEnter={useCallback(() => {\n if (isOpenDelayedRef.current) {\n handleDelayedOpen();\n } else {\n handleOpen();\n }\n }, [isOpenDelayedRef, handleDelayedOpen, handleOpen])}\n onTriggerLeave={useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n // Clear the timer in case the pointer leaves the trigger before the tooltip is opened.\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent])}\n onOpen={handleOpen}\n onClose={handleClose}\n disableHoverableContent={disableHoverableContent}\n isPointerInTransitRef={isPointerInTransitRef}\n onPointerInTransitChange={useCallback((inTransit: boolean) => {\n isPointerInTransitRef.current = inTransit;\n }, [])}\n >\n <TooltipContent side={side} className={tx('tooltip.content', { elevation })}>\n {content}\n <TooltipArrow className={tx('tooltip.arrow')} />\n </TooltipContent>\n <TooltipVirtualTrigger virtualRef={triggerRef as RefObject<HTMLButtonElement>} />\n {children}\n </TooltipContextProvider>\n </PopperPrimitive.Root>\n );\n};\n\nTooltipProvider.displayName = TOOLTIP_NAME;\n\n//\n// TooltipVirtualTrigger\n//\n\nconst TooltipVirtualTrigger = ({\n virtualRef,\n __scopeTooltip,\n}: TooltipScopedProps<Pick<PopperAnchorProps, 'virtualRef'>>) => {\n const popperScope = usePopperScope(__scopeTooltip);\n return <PopperPrimitive.Anchor asChild {...popperScope} virtualRef={virtualRef} />;\n};\n\n//\n// TooltipTrigger\n//\n\nconst TRIGGER_NAME = 'TooltipTrigger';\n\ntype TooltipTriggerElement = ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;\ntype TooltipTriggerProps = PrimitiveButtonProps &\n Pick<TooltipProps, 'delayDuration'> & {\n content?: string;\n side?: TooltipSide;\n onInteract?: (event: SyntheticEvent) => void;\n };\n\nconst TooltipTrigger = forwardRef<TooltipTriggerElement, TooltipTriggerProps>(\n (props: TooltipScopedProps<TooltipTriggerProps>, forwardedRef) => {\n const {\n __scopeTooltip,\n onInteract,\n // TODO(thure): Pass `delayDuration` into the context.\n delayDuration: _delayDuration,\n side,\n content,\n ...triggerProps\n } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const ref = useRef<TooltipTriggerElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const isPointerDownRef = useRef(false);\n const hasPointerMoveOpenedRef = useRef(false);\n const handlePointerUp = useCallback(() => (isPointerDownRef.current = false), []);\n\n useEffect(() => {\n return () => document.removeEventListener('pointerup', handlePointerUp);\n }, [handlePointerUp]);\n\n return (\n <Primitive.button\n // We purposefully avoid adding `type=button` here because tooltip triggers are also\n // commonly anchors and the anchor `type` attribute signifies MIME type.\n aria-describedby={context.open ? context.contentId : undefined}\n data-state={context.stateAttribute}\n data-tooltip-content={content}\n data-tooltip-side={side}\n {...triggerProps}\n ref={composedRefs}\n onPointerMove={composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === 'touch') {\n return;\n }\n if (!hasPointerMoveOpenedRef.current && !context.isPointerInTransitRef.current) {\n onInteract?.(event);\n if (event.defaultPrevented) {\n return;\n }\n context.onTriggerChange(ref.current);\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n })}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n })}\n onPointerDown={composeEventHandlers(props.onPointerDown, () => {\n if (context.open) {\n context.onClose();\n }\n isPointerDownRef.current = true;\n document.addEventListener('pointerup', handlePointerUp, { once: true });\n })}\n onFocus={props.onFocus}\n onBlur={composeEventHandlers(props.onBlur, context.onClose)}\n onClick={composeEventHandlers(props.onClick, context.onClose)}\n />\n );\n },\n);\n\nTooltipTrigger.displayName = TRIGGER_NAME;\n\n//\n// TooltipPortal\n//\n\nconst PORTAL_NAME = 'TooltipPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createTooltipContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = ComponentPropsWithoutRef<typeof PortalPrimitive>;\ntype TooltipPortalProps = {\n children?: ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps['container'];\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n};\n\nconst TooltipPortal: FC<TooltipPortalProps> = (props: TooltipScopedProps<TooltipPortalProps>) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return (\n <PortalProvider scope={__scopeTooltip} forceMount={forceMount}>\n <Presence present={forceMount || context.open}>\n <PortalPrimitive asChild container={container}>\n {children}\n </PortalPrimitive>\n </Presence>\n </PortalProvider>\n );\n};\n\nTooltipPortal.displayName = PORTAL_NAME;\n\n//\n// TooltipContent\n//\n\nconst CONTENT_NAME = 'TooltipContent';\n\ntype TooltipContentElement = TooltipContentImplElement;\ntype TooltipContentProps = TooltipContentImplProps & {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n};\n\nconst TooltipContent = forwardRef<TooltipContentElement, TooltipContentProps>(\n (props: TooltipScopedProps<TooltipContentProps>, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = 'top', ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n\n return (\n <Presence present={forceMount || context.open}>\n {context.disableHoverableContent ? (\n <TooltipContentImpl side={side} {...contentProps} ref={forwardedRef} />\n ) : (\n <TooltipContentHoverable side={side} {...contentProps} ref={forwardedRef} />\n )}\n </Presence>\n );\n },\n);\n\ntype Point = { x: number; y: number };\ntype Polygon = Point[];\n\ntype TooltipContentHoverableElement = TooltipContentImplElement;\ntype TooltipContentHoverableProps = TooltipContentImplProps;\n\nconst TooltipContentHoverable = forwardRef<TooltipContentHoverableElement, TooltipContentHoverableProps>(\n (props: TooltipScopedProps<TooltipContentHoverableProps>, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = useRef<TooltipContentHoverableElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = useState<Polygon | null>(null);\n\n const { trigger, onClose } = context;\n const content = ref.current;\n\n const { onPointerInTransitChange } = context;\n\n const handleRemoveGraceArea = useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n\n const handleCreateGraceArea = useCallback(\n (event: PointerEvent, hoverTarget: HTMLElement) => {\n const currentTarget = event.currentTarget as HTMLElement;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange],\n );\n\n useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n\n useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event: PointerEvent) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event: PointerEvent) => handleCreateGraceArea(event, trigger);\n\n trigger.addEventListener('pointerleave', handleTriggerLeave);\n content.addEventListener('pointerleave', handleContentLeave);\n return () => {\n trigger.removeEventListener('pointerleave', handleTriggerLeave);\n content.removeEventListener('pointerleave', handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n\n useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event: PointerEvent) => {\n const target = event.target as HTMLElement;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener('pointermove', handleTrackPointerGrace);\n return () => document.removeEventListener('pointermove', handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n\n return <TooltipContentImpl {...props} ref={composedRefs} />;\n },\n);\n\nconst [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, {\n isInside: false,\n});\n\ntype TooltipContentImplElement = ComponentRef<typeof PopperPrimitive.Content>;\ntype DismissableLayerProps = ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype PopperContentProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;\ntype TooltipContentImplProps = Omit<PopperContentProps, 'onPlaced'> & {\n /**\n * A more descriptive label for accessibility purpose\n */\n 'aria-label'?: string;\n\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `Tooltip`.\n * Can be prevented.\n */\n onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];\n};\n\nconst TooltipContentImpl = forwardRef<TooltipContentImplElement, TooltipContentImplProps>(\n (props: TooltipScopedProps<TooltipContentImplProps>, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n 'aria-label': ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n\n // Close this tooltip if another one opens\n useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n\n // Close the tooltip if the trigger is scrolled\n useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event: Event) => {\n const target = event.target as HTMLElement;\n if (target?.contains(context.trigger)) {\n onClose();\n }\n };\n window.addEventListener('scroll', handleScroll, { capture: true });\n return () => window.removeEventListener('scroll', handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n\n return (\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={false}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={(event) => event.preventDefault()}\n onDismiss={onClose}\n >\n <PopperPrimitive.Content\n data-state={context.stateAttribute}\n {...popperScope}\n {...contentProps}\n ref={forwardedRef}\n style={{\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n '--radix-tooltip-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-tooltip-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-tooltip-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-tooltip-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-tooltip-trigger-height': 'var(--radix-popper-anchor-height)',\n },\n }}\n >\n <Slottable>{children}</Slottable>\n <VisuallyHiddenContentContextProvider scope={__scopeTooltip} isInside={true}>\n <VisuallyHiddenPrimitive.Root id={context.contentId} role='tooltip'>\n {ariaLabel || children}\n </VisuallyHiddenPrimitive.Root>\n </VisuallyHiddenContentContextProvider>\n </PopperPrimitive.Content>\n </DismissableLayer>\n );\n },\n);\n\nTooltipContent.displayName = CONTENT_NAME;\n\n//\n// TooltipArrow\n//\n\nconst ARROW_NAME = 'TooltipArrow';\n\ntype TooltipArrowElement = ComponentRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;\ntype TooltipArrowProps = PopperArrowProps;\n\nconst TooltipArrow = forwardRef<TooltipArrowElement, TooltipArrowProps>(\n (props: TooltipScopedProps<TooltipArrowProps>, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(ARROW_NAME, __scopeTooltip);\n // if the arrow is inside the `VisuallyHidden`, we don't want to render it all to\n // prevent issues in positioning the arrow due to the duplicate\n return visuallyHiddenContentContext.isInside ? null : (\n <PopperPrimitive.Arrow {...popperScope} {...arrowProps} ref={forwardedRef} />\n );\n },\n);\n\nTooltipArrow.displayName = ARROW_NAME;\n\ntype TooltipSide = NonNullable<TooltipContentProps['side']>;\n\nconst getExitSideFromRect = (point: Point, rect: DOMRect): TooltipSide => {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return 'left';\n case right:\n return 'right';\n case top:\n return 'top';\n case bottom:\n return 'bottom';\n default:\n throw new Error('unreachable');\n }\n};\n\nconst getPaddedExitPoints = (exitPoint: Point, exitSide: TooltipSide, padding = 5) => {\n const paddedExitPoints: Point[] = [];\n switch (exitSide) {\n case 'top':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding },\n );\n break;\n case 'bottom':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n );\n break;\n case 'left':\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding },\n );\n break;\n case 'right':\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n );\n break;\n }\n return paddedExitPoints;\n};\n\nconst getPointsFromRect = (rect: DOMRect) => {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n ];\n};\n\n// Determine if a point is inside of a polygon.\n// Based on https://github.com/substack/point-in-polygon\nconst isPointInPolygon = (point: Point, polygon: Polygon) => {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n\n // prettier-ignore\n const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n if (intersect) {\n inside = !inside;\n }\n }\n\n return inside;\n};\n\n// Returns a new array of points representing the convex hull of the given set of points.\n// https://www.nayuki.io/page/convex-hull-algorithm\nconst getHull = <P extends Point>(points: Readonly<Array<P>>): Array<P> => {\n const newPoints: Array<P> = points.slice();\n newPoints.sort((a: Point, b: Point) => {\n if (a.x < b.x) {\n return -1;\n } else if (a.x > b.x) {\n return +1;\n } else if (a.y < b.y) {\n return -1;\n } else if (a.y > b.y) {\n return +1;\n } else {\n return 0;\n }\n });\n return getHullPresorted(newPoints);\n};\n\n// Returns the convex hull, assuming that each points[i] <= points[i + 1]. Runs in O(n) time.\nconst getHullPresorted = <P extends Point>(points: Readonly<Array<P>>): Array<P> => {\n if (points.length <= 1) {\n return points.slice();\n }\n\n const upperHull: Array<P> = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) {\n upperHull.pop();\n } else {\n break;\n }\n }\n upperHull.push(p);\n }\n upperHull.pop();\n\n const lowerHull: Array<P> = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) {\n lowerHull.pop();\n } else {\n break;\n }\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n\n if (\n upperHull.length === 1 &&\n lowerHull.length === 1 &&\n upperHull[0].x === lowerHull[0].x &&\n upperHull[0].y === lowerHull[0].y\n ) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n};\n\n//\n// Tooltip\n//\n\nexport const Tooltip = {\n Provider: TooltipProvider,\n Trigger: TooltipTrigger,\n};\n\nexport { createTooltipScope, useTooltipContext };\n\nexport type { TooltipProviderProps, TooltipTriggerProps, TooltipScopedProps, TooltipSide };\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport ErrorStackParser from 'error-stack-parser';\nimport React from 'react';\n\nimport { mx } from '@dxos/ui-theme';\n\ntype LocalFrame = { href: string; fileName: string };\n\nexport type ParsedStackFrame = ReturnType<typeof ErrorStackParser.parse>[number];\n\nexport type ErrorStackProps = {\n /** When set, these frames are shown instead of parsing `error`. */\n frames?: ParsedStackFrame[];\n /** Used when `frames` is omitted. */\n error?: Error;\n};\n\n/**\n * Parses `captureOwnerStack()` output (React dev) into frames for {@link ErrorStack}.\n * Prefixes a synthetic Error line when needed so `error-stack-parser` can read V8-style stacks.\n */\nexport const parseCaptureOwnerStack = (stack: string | null): ParsedStackFrame[] | null => {\n if (stack == null || stack.length === 0) {\n return null;\n }\n const err = new Error();\n err.stack = stack;\n try {\n return ErrorStackParser.parse(err);\n } catch {\n err.stack = `Error\\n${stack}`;\n try {\n return ErrorStackParser.parse(err);\n } catch {\n return null;\n }\n }\n};\n\n/**\n * Renders a parsed error stack trace with tree connector symbols and clickable vscode:// links for local frames.\n */\nexport const ErrorStack = ({ error, frames: framesProp }: ErrorStackProps) => {\n const frames = framesProp ?? (error ? ErrorStackParser.parse(error) : []);\n if (frames.length === 0) {\n return null;\n }\n\n return (\n <div className='font-mono text-sm'>\n {frames.map((frame, i) => {\n const isLast = i === frames.length - 1;\n const local = frame.fileName\n ? parseLocalFrame(frame.fileName, frame.lineNumber, frame.columnNumber)\n : undefined;\n const name = frame.functionName ?? '<anonymous>';\n return (\n <div\n key={i}\n className={mx(\n 'grid grid-cols-[16px_1fr_auto_auto] items-stretch gap-x-2',\n local && 'cursor-pointer hover:bg-hover-surface',\n )}\n >\n {/* Tree connector: vertical line full-height + horizontal branch at midpoint */}\n <div className='relative'>\n <div\n className={mx(\n 'absolute left-1/2 -translate-x-1/2 w-px bg-neutral-500',\n isLast ? 'top-0 h-1/2' : 'inset-y-0',\n )}\n />\n <div className='absolute top-1/2 -translate-y-1/2 left-1/2 right-0 h-px bg-neutral-500' />\n </div>\n {local ? (\n <a href={local.href} className='truncate self-center'>\n {name}\n </a>\n ) : (\n <span className='text-subdued truncate self-center'>{name}</span>\n )}\n <span className='text-xs text-subdued truncate self-center'>{local?.fileName ?? ''}</span>\n <span className='text-xs text-subdued text-right self-center'>\n {local ? `${frame.lineNumber}:${frame.columnNumber}` : ''}\n </span>\n </div>\n );\n })}\n </div>\n );\n};\n\n/**\n * Parses a Vite `/@fs/` URL into a `vscode://` deep link and short filename.\n * Returns undefined if the URL cannot be resolved to a local file.\n */\nconst parseLocalFrame = (fileUrl: string, line?: number, col?: number): LocalFrame | undefined => {\n try {\n const { pathname } = new URL(fileUrl);\n if (!pathname.startsWith('/@fs/')) {\n return undefined;\n }\n const localPath = pathname.slice(4); // /@fs/Users/... → /Users/...\n return {\n href: `vscode://file/${localPath}:${line ?? 1}:${col ?? 1}`,\n fileName: pathname.split('/').pop() ?? localPath,\n };\n } catch {\n return undefined;\n }\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "createContext", "DensityContext", "density", "DensityProvider", "children", "Provider", "value", "React", "createContext", "ElevationContext", "elevation", "ElevationProvider", "children", "Provider", "value", "useContext", "createKeyborg", "React", "createContext", "useEffect", "useMemo", "useContext", "raise", "useThemeContext", "useContext", "ThemeContext", "raise", "Error", "useCallback", "useState", "useViewportResize", "initialSafeArea", "top", "NaN", "right", "bottom", "left", "useSafeArea", "padding", "setPadding", "handleResize", "parseFloat", "getComputedStyle", "document", "documentElement", "getPropertyValue", "enUS", "dtLocaleEnUs", "i18Next", "React", "Suspense", "createContext", "useContext", "useEffect", "useState", "initReactI18next", "useTranslation", "useI18NextTranslation", "initialLng", "initialNs", "initialDtLocale", "resources", "use", "init", "lng", "defaultNS", "interpolation", "escapeValue", "TranslationsContext", "appNs", "dtLocale", "args", "result", "TranslationsProvider", "fallback", "resourceExtensions", "children", "loaded", "setLoaded", "length", "forEach", "resource", "Object", "keys", "language", "ns", "addResourceBundle", "Provider", "value", "hasIosKeyboard", "navigator", "userAgent", "match", "ThemeContext", "createContext", "undefined", "ThemeProvider", "children", "fallback", "resourceExtensions", "appNs", "tx", "_path", "_styleProps", "_options", "themeMode", "rootDensity", "noCache", "platform", "useEffect", "document", "defaultView", "kb", "createKeyborg", "subscribe", "handleInputModalityChange", "unsubscribe", "safeAreaPadding", "useSafeArea", "contextValue", "useMemo", "hasIosKeyboard", "React", "Provider", "value", "TranslationsProvider", "ElevationProvider", "elevation", "DensityProvider", "density", "isUsingKeyboard", "body", "setAttribute", "removeAttribute", "composeEventHandlers", "useComposedRefs", "createContextScope", "DismissableLayer", "useId", "PopperPrimitive", "createPopperScope", "Portal", "PortalPrimitive", "Presence", "Primitive", "Slottable", "useControllableState", "VisuallyHiddenPrimitive", "React", "forwardRef", "useCallback", "useEffect", "useMemo", "useRef", "useState", "createTooltipContext", "createTooltipScope", "createContextScope", "createPopperScope", "usePopperScope", "DEFAULT_DELAY_DURATION", "TOOLTIP_OPEN", "TOOLTIP_NAME", "TooltipContextProvider", "useTooltipContext", "TooltipProvider", "props", "__scopeTooltip", "children", "open", "openProp", "defaultOpen", "onOpenChange", "disableHoverableContent", "delayDuration", "skipDelayDuration", "isOpenDelayedRef", "useRef", "isPointerInTransitRef", "skipDelayTimerRef", "useEffect", "skipDelayTimer", "current", "window", "clearTimeout", "popperScope", "trigger", "setTrigger", "useState", "content", "setContent", "side", "setSide", "undefined", "triggerRef", "handleTriggerChange", "useCallback", "nextTrigger", "getAttribute", "contentId", "useId", "openTimerRef", "wasOpenDelayedRef", "handleOpenChange", "document", "dispatchEvent", "CustomEvent", "setTimeout", "setOpen", "useControllableState", "prop", "defaultProp", "onChange", "stateAttribute", "useMemo", "handleOpen", "handleClose", "handleDelayedOpen", "tx", "useThemeContext", "elevation", "useElevationContext", "React", "Root", "scope", "onTriggerChange", "onTriggerEnter", "onTriggerLeave", "onOpen", "onClose", "onPointerInTransitChange", "inTransit", "TooltipContent", "className", "TooltipArrow", "TooltipVirtualTrigger", "virtualRef", "displayName", "Anchor", "asChild", "TRIGGER_NAME", "TooltipTrigger", "forwardRef", "forwardedRef", "onInteract", "_delayDuration", "triggerProps", "context", "ref", "composedRefs", "useComposedRefs", "isPointerDownRef", "hasPointerMoveOpenedRef", "handlePointerUp", "removeEventListener", "Primitive", "button", "aria-describedby", "data-state", "data-tooltip-content", "data-tooltip-side", "onPointerMove", "composeEventHandlers", "event", "pointerType", "defaultPrevented", "onPointerLeave", "onPointerDown", "addEventListener", "once", "onFocus", "onBlur", "onClick", "PORTAL_NAME", "PortalProvider", "usePortalContext", "forceMount", "TooltipPortal", "container", "Presence", "present", "PortalPrimitive", "CONTENT_NAME", "portalContext", "contentProps", "TooltipContentImpl", "TooltipContentHoverable", "pointerGraceArea", "setPointerGraceArea", "handleRemoveGraceArea", "handleCreateGraceArea", "hoverTarget", "currentTarget", "exitPoint", "x", "clientX", "y", "clientY", "exitSide", "getExitSideFromRect", "getBoundingClientRect", "paddedExitPoints", "getPaddedExitPoints", "hoverTargetPoints", "getPointsFromRect", "graceArea", "getHull", "handleTriggerLeave", "handleContentLeave", "handleTrackPointerGrace", "target", "pointerPosition", "hasEnteredTarget", "contains", "isPointerOutsideGraceArea", "isPointInPolygon", "VisuallyHiddenContentContextProvider", "useVisuallyHiddenContentContext", "isInside", "ariaLabel", "onEscapeKeyDown", "onPointerDownOutside", "handleScroll", "capture", "DismissableLayer", "disableOutsidePointerEvents", "onFocusOutside", "preventDefault", "onDismiss", "Content", "style", "Slottable", "id", "role", "ARROW_NAME", "arrowProps", "visuallyHiddenContentContext", "Arrow", "point", "rect", "top", "Math", "abs", "bottom", "right", "left", "min", "Error", "padding", "push", "polygon", "inside", "i", "j", "length", "xi", "yi", "xj", "yj", "intersect", "points", "newPoints", "slice", "sort", "a", "b", "getHullPresorted", "upperHull", "p", "q", "r", "pop", "lowerHull", "concat", "Tooltip", "Provider", "Trigger", "ErrorStackParser", "React", "mx", "parseCaptureOwnerStack", "stack", "length", "err", "Error", "parse", "ErrorStack", "error", "frames", "framesProp", "div", "className", "map", "frame", "i", "isLast", "local", "fileName", "parseLocalFrame", "lineNumber", "columnNumber", "undefined", "name", "functionName", "key", "a", "href", "span", "fileUrl", "line", "col", "pathname", "URL", "startsWith", "localPath", "slice", "split", "pop", "useElevationContext", "propsElevation", "elevation", "useContext", "ElevationContext"]
7
+ }