@hanzo/ui 8.27.10 → 8.27.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 (303) hide show
  1. package/dist/backends/gui/comparison.cjs +17 -21
  2. package/dist/backends/gui/comparison.d.ts +4 -5
  3. package/dist/backends/gui/comparison.d.ts.map +1 -1
  4. package/dist/backends/gui/comparison.js +18 -22
  5. package/dist/backends/gui/comparison.js.map +1 -1
  6. package/dist/backends/gui/crypto-screener.cjs +21 -31
  7. package/dist/backends/gui/crypto-screener.d.ts +20 -24
  8. package/dist/backends/gui/crypto-screener.d.ts.map +1 -1
  9. package/dist/backends/gui/crypto-screener.js +21 -31
  10. package/dist/backends/gui/crypto-screener.js.map +1 -1
  11. package/dist/backends/gui/cursor.cjs +15 -18
  12. package/dist/backends/gui/cursor.d.ts +4 -3
  13. package/dist/backends/gui/cursor.d.ts.map +1 -1
  14. package/dist/backends/gui/cursor.js +15 -18
  15. package/dist/backends/gui/cursor.js.map +1 -1
  16. package/dist/backends/gui/data-table.cjs +144 -184
  17. package/dist/backends/gui/data-table.d.ts +64 -44
  18. package/dist/backends/gui/data-table.d.ts.map +1 -1
  19. package/dist/backends/gui/data-table.js +146 -152
  20. package/dist/backends/gui/data-table.js.map +1 -1
  21. package/dist/backends/gui/dock.cjs +1 -1
  22. package/dist/backends/gui/dock.d.ts.map +1 -1
  23. package/dist/backends/gui/dock.js +1 -1
  24. package/dist/backends/gui/dock.js.map +1 -1
  25. package/dist/backends/gui/editor.cjs +35 -31
  26. package/dist/backends/gui/editor.d.ts +11 -11
  27. package/dist/backends/gui/editor.d.ts.map +1 -1
  28. package/dist/backends/gui/editor.js +35 -31
  29. package/dist/backends/gui/editor.js.map +1 -1
  30. package/dist/backends/gui/field.cjs +132 -0
  31. package/dist/backends/gui/field.d.ts +74 -0
  32. package/dist/backends/gui/field.d.ts.map +1 -0
  33. package/dist/backends/gui/field.js +121 -0
  34. package/dist/backends/gui/field.js.map +1 -0
  35. package/dist/backends/gui/gantt.cjs +17 -19
  36. package/dist/backends/gui/gantt.d.ts +4 -5
  37. package/dist/backends/gui/gantt.d.ts.map +1 -1
  38. package/dist/backends/gui/gantt.js +18 -21
  39. package/dist/backends/gui/gantt.js.map +1 -1
  40. package/dist/backends/gui/glimpse.cjs +88 -0
  41. package/dist/backends/gui/glimpse.d.ts +57 -0
  42. package/dist/backends/gui/glimpse.d.ts.map +1 -0
  43. package/dist/backends/gui/glimpse.js +81 -0
  44. package/dist/backends/gui/glimpse.js.map +1 -0
  45. package/dist/backends/gui/grid-pattern.cjs +119 -0
  46. package/dist/backends/gui/grid-pattern.d.ts +96 -0
  47. package/dist/backends/gui/grid-pattern.d.ts.map +1 -0
  48. package/dist/backends/gui/grid-pattern.js +84 -0
  49. package/dist/backends/gui/grid-pattern.js.map +1 -0
  50. package/dist/backends/gui/image-crop.cjs +35 -0
  51. package/dist/backends/gui/image-crop.d.ts +20 -0
  52. package/dist/backends/gui/image-crop.d.ts.map +1 -0
  53. package/dist/backends/gui/image-crop.js +33 -0
  54. package/dist/backends/gui/image-crop.js.map +1 -0
  55. package/dist/backends/gui/image-zoom.cjs +58 -0
  56. package/dist/backends/gui/image-zoom.d.ts +16 -0
  57. package/dist/backends/gui/image-zoom.d.ts.map +1 -0
  58. package/dist/backends/gui/image-zoom.js +56 -0
  59. package/dist/backends/gui/image-zoom.js.map +1 -0
  60. package/dist/backends/gui/index.cjs +159 -1
  61. package/dist/backends/gui/index.d.ts +49 -0
  62. package/dist/backends/gui/index.d.ts.map +1 -1
  63. package/dist/backends/gui/index.js +49 -0
  64. package/dist/backends/gui/index.js.map +1 -1
  65. package/dist/backends/gui/interactive-grid-pattern.cjs +61 -0
  66. package/dist/backends/gui/interactive-grid-pattern.d.ts +28 -0
  67. package/dist/backends/gui/interactive-grid-pattern.d.ts.map +1 -0
  68. package/dist/backends/gui/interactive-grid-pattern.js +26 -0
  69. package/dist/backends/gui/interactive-grid-pattern.js.map +1 -0
  70. package/dist/backends/gui/iphone-15-pro.cjs +83 -0
  71. package/dist/backends/gui/iphone-15-pro.d.ts +16 -0
  72. package/dist/backends/gui/iphone-15-pro.d.ts.map +1 -0
  73. package/dist/backends/gui/iphone-15-pro.js +81 -0
  74. package/dist/backends/gui/iphone-15-pro.js.map +1 -0
  75. package/dist/backends/gui/item.cjs +154 -0
  76. package/dist/backends/gui/item.d.ts +72 -0
  77. package/dist/backends/gui/item.d.ts.map +1 -0
  78. package/dist/backends/gui/item.js +143 -0
  79. package/dist/backends/gui/item.js.map +1 -0
  80. package/dist/backends/gui/kanban.cjs +247 -0
  81. package/dist/backends/gui/kanban.d.ts +37 -0
  82. package/dist/backends/gui/kanban.d.ts.map +1 -0
  83. package/dist/backends/gui/kanban.js +212 -0
  84. package/dist/backends/gui/kanban.js.map +1 -0
  85. package/dist/backends/gui/kbd.cjs +45 -0
  86. package/dist/backends/gui/kbd.d.ts +8 -0
  87. package/dist/backends/gui/kbd.d.ts.map +1 -0
  88. package/dist/backends/gui/kbd.js +42 -0
  89. package/dist/backends/gui/kbd.js.map +1 -0
  90. package/dist/backends/gui/limelight-nav.cjs +201 -0
  91. package/dist/backends/gui/limelight-nav.d.ts +20 -0
  92. package/dist/backends/gui/limelight-nav.d.ts.map +1 -0
  93. package/dist/backends/gui/limelight-nav.js +166 -0
  94. package/dist/backends/gui/limelight-nav.js.map +1 -0
  95. package/dist/backends/gui/list.cjs +26 -0
  96. package/dist/backends/gui/list.d.ts +15 -0
  97. package/dist/backends/gui/list.d.ts.map +1 -0
  98. package/dist/backends/gui/list.js +23 -0
  99. package/dist/backends/gui/list.js.map +1 -0
  100. package/dist/backends/gui/macos-dock.cjs +84 -0
  101. package/dist/backends/gui/macos-dock.d.ts +30 -0
  102. package/dist/backends/gui/macos-dock.d.ts.map +1 -0
  103. package/dist/backends/gui/macos-dock.js +82 -0
  104. package/dist/backends/gui/macos-dock.js.map +1 -0
  105. package/dist/backends/gui/magnetic.cjs +40 -0
  106. package/dist/backends/gui/magnetic.d.ts +12 -0
  107. package/dist/backends/gui/magnetic.d.ts.map +1 -0
  108. package/dist/backends/gui/magnetic.js +38 -0
  109. package/dist/backends/gui/magnetic.js.map +1 -0
  110. package/dist/backends/gui/marquee.cjs +110 -0
  111. package/dist/backends/gui/marquee.d.ts +44 -0
  112. package/dist/backends/gui/marquee.d.ts.map +1 -0
  113. package/dist/backends/gui/marquee.js +75 -0
  114. package/dist/backends/gui/marquee.js.map +1 -0
  115. package/dist/backends/gui/menu-dock.cjs +64 -0
  116. package/dist/backends/gui/menu-dock.d.ts +21 -0
  117. package/dist/backends/gui/menu-dock.d.ts.map +1 -0
  118. package/dist/backends/gui/menu-dock.js +62 -0
  119. package/dist/backends/gui/menu-dock.js.map +1 -0
  120. package/dist/backends/gui/menubar.cjs +227 -0
  121. package/dist/backends/gui/menubar.d.ts +106 -0
  122. package/dist/backends/gui/menubar.d.ts.map +1 -0
  123. package/dist/backends/gui/menubar.js +177 -0
  124. package/dist/backends/gui/menubar.js.map +1 -0
  125. package/dist/backends/gui/message-dock.cjs +111 -0
  126. package/dist/backends/gui/message-dock.d.ts +22 -0
  127. package/dist/backends/gui/message-dock.d.ts.map +1 -0
  128. package/dist/backends/gui/message-dock.js +110 -0
  129. package/dist/backends/gui/message-dock.js.map +1 -0
  130. package/dist/backends/gui/mini-calendar.cjs +25 -0
  131. package/dist/backends/gui/mini-calendar.d.ts +22 -0
  132. package/dist/backends/gui/mini-calendar.d.ts.map +1 -0
  133. package/dist/backends/gui/mini-calendar.js +24 -0
  134. package/dist/backends/gui/mini-calendar.js.map +1 -0
  135. package/dist/backends/gui/minimal-tiptap.cjs +56 -0
  136. package/dist/backends/gui/minimal-tiptap.d.ts +20 -0
  137. package/dist/backends/gui/minimal-tiptap.d.ts.map +1 -0
  138. package/dist/backends/gui/minimal-tiptap.js +21 -0
  139. package/dist/backends/gui/minimal-tiptap.js.map +1 -0
  140. package/dist/backends/gui/motion-highlight.cjs +83 -0
  141. package/dist/backends/gui/motion-highlight.d.ts +27 -0
  142. package/dist/backends/gui/motion-highlight.d.ts.map +1 -0
  143. package/dist/backends/gui/motion-highlight.js +48 -0
  144. package/dist/backends/gui/motion-highlight.js.map +1 -0
  145. package/dist/backends/gui/navigation-bar.cjs +47 -0
  146. package/dist/backends/gui/navigation-bar.d.ts +48 -0
  147. package/dist/backends/gui/navigation-bar.d.ts.map +1 -0
  148. package/dist/backends/gui/navigation-bar.js +45 -0
  149. package/dist/backends/gui/navigation-bar.js.map +1 -0
  150. package/dist/backends/gui/news-timeline.cjs +47 -0
  151. package/dist/backends/gui/news-timeline.d.ts +39 -0
  152. package/dist/backends/gui/news-timeline.d.ts.map +1 -0
  153. package/dist/backends/gui/news-timeline.js +45 -0
  154. package/dist/backends/gui/news-timeline.js.map +1 -0
  155. package/dist/backends/gui/order-entry.cjs +53 -0
  156. package/dist/backends/gui/order-entry.d.ts +21 -0
  157. package/dist/backends/gui/order-entry.d.ts.map +1 -0
  158. package/dist/backends/gui/order-entry.js +52 -0
  159. package/dist/backends/gui/order-entry.js.map +1 -0
  160. package/dist/backends/gui/orders-history.cjs +102 -0
  161. package/dist/backends/gui/orders-history.d.ts +24 -0
  162. package/dist/backends/gui/orders-history.d.ts.map +1 -0
  163. package/dist/backends/gui/orders-history.js +67 -0
  164. package/dist/backends/gui/orders-history.js.map +1 -0
  165. package/dist/backends/gui/pagination.cjs +51 -0
  166. package/dist/backends/gui/pagination.d.ts +52 -0
  167. package/dist/backends/gui/pagination.d.ts.map +1 -0
  168. package/dist/backends/gui/pagination.js +42 -0
  169. package/dist/backends/gui/pagination.js.map +1 -0
  170. package/dist/backends/gui/particles-background.cjs +135 -0
  171. package/dist/backends/gui/particles-background.d.ts +24 -0
  172. package/dist/backends/gui/particles-background.d.ts.map +1 -0
  173. package/dist/backends/gui/particles-background.js +133 -0
  174. package/dist/backends/gui/particles-background.js.map +1 -0
  175. package/dist/backends/gui/particles.cjs +145 -0
  176. package/dist/backends/gui/particles.d.ts +25 -0
  177. package/dist/backends/gui/particles.d.ts.map +1 -0
  178. package/dist/backends/gui/particles.js +143 -0
  179. package/dist/backends/gui/particles.js.map +1 -0
  180. package/dist/backends/gui/pill.cjs +82 -0
  181. package/dist/backends/gui/pill.d.ts +12 -0
  182. package/dist/backends/gui/pill.d.ts.map +1 -0
  183. package/dist/backends/gui/pill.js +78 -0
  184. package/dist/backends/gui/pill.js.map +1 -0
  185. package/dist/backends/gui/pin-list.cjs +82 -0
  186. package/dist/backends/gui/pin-list.d.ts +42 -0
  187. package/dist/backends/gui/pin-list.d.ts.map +1 -0
  188. package/dist/backends/gui/pin-list.js +80 -0
  189. package/dist/backends/gui/pin-list.js.map +1 -0
  190. package/dist/backends/gui/pixel-image.cjs +63 -0
  191. package/dist/backends/gui/pixel-image.d.ts +21 -0
  192. package/dist/backends/gui/pixel-image.d.ts.map +1 -0
  193. package/dist/backends/gui/pixel-image.js +61 -0
  194. package/dist/backends/gui/pixel-image.js.map +1 -0
  195. package/dist/backends/gui/positions-list.cjs +60 -0
  196. package/dist/backends/gui/positions-list.d.ts +14 -0
  197. package/dist/backends/gui/positions-list.d.ts.map +1 -0
  198. package/dist/backends/gui/positions-list.js +58 -0
  199. package/dist/backends/gui/positions-list.js.map +1 -0
  200. package/dist/backends/gui/qr-code.cjs +438 -0
  201. package/dist/backends/gui/qr-code.d.ts +42 -0
  202. package/dist/backends/gui/qr-code.d.ts.map +1 -0
  203. package/dist/backends/gui/qr-code.js +402 -0
  204. package/dist/backends/gui/qr-code.js.map +1 -0
  205. package/dist/backends/gui/relative-time.cjs +167 -0
  206. package/dist/backends/gui/relative-time.d.ts +10 -0
  207. package/dist/backends/gui/relative-time.d.ts.map +1 -0
  208. package/dist/backends/gui/relative-time.js +132 -0
  209. package/dist/backends/gui/relative-time.js.map +1 -0
  210. package/dist/backends/gui/safari.cjs +65 -0
  211. package/dist/backends/gui/safari.d.ts +23 -0
  212. package/dist/backends/gui/safari.d.ts.map +1 -0
  213. package/dist/backends/gui/safari.js +63 -0
  214. package/dist/backends/gui/safari.js.map +1 -0
  215. package/dist/backends/gui/snippet.cjs +144 -0
  216. package/dist/backends/gui/snippet.d.ts +38 -0
  217. package/dist/backends/gui/snippet.d.ts.map +1 -0
  218. package/dist/backends/gui/snippet.js +141 -0
  219. package/dist/backends/gui/snippet.js.map +1 -0
  220. package/dist/backends/gui/stars-scrolling-wheel.cjs +106 -0
  221. package/dist/backends/gui/stars-scrolling-wheel.d.ts +24 -0
  222. package/dist/backends/gui/stars-scrolling-wheel.d.ts.map +1 -0
  223. package/dist/backends/gui/stars-scrolling-wheel.js +104 -0
  224. package/dist/backends/gui/stars-scrolling-wheel.js.map +1 -0
  225. package/dist/backends/gui/status.cjs +79 -0
  226. package/dist/backends/gui/status.d.ts +15 -0
  227. package/dist/backends/gui/status.d.ts.map +1 -0
  228. package/dist/backends/gui/status.js +77 -0
  229. package/dist/backends/gui/status.js.map +1 -0
  230. package/dist/backends/gui/stock-market.cjs +21 -0
  231. package/dist/backends/gui/stock-market.d.ts +17 -0
  232. package/dist/backends/gui/stock-market.d.ts.map +1 -0
  233. package/dist/backends/gui/stock-market.js +19 -0
  234. package/dist/backends/gui/stock-market.js.map +1 -0
  235. package/dist/backends/gui/stock-screener.cjs +55 -0
  236. package/dist/backends/gui/stock-screener.d.ts +41 -0
  237. package/dist/backends/gui/stock-screener.d.ts.map +1 -0
  238. package/dist/backends/gui/stock-screener.js +53 -0
  239. package/dist/backends/gui/stock-screener.js.map +1 -0
  240. package/dist/backends/gui/symbol-info.cjs +46 -0
  241. package/dist/backends/gui/symbol-info.d.ts +36 -0
  242. package/dist/backends/gui/symbol-info.d.ts.map +1 -0
  243. package/dist/backends/gui/symbol-info.js +44 -0
  244. package/dist/backends/gui/symbol-info.js.map +1 -0
  245. package/dist/backends/gui/table.cjs +104 -0
  246. package/dist/backends/gui/table.d.ts +57 -0
  247. package/dist/backends/gui/table.d.ts.map +1 -0
  248. package/dist/backends/gui/table.js +95 -0
  249. package/dist/backends/gui/table.js.map +1 -0
  250. package/dist/backends/gui/tags.cjs +22 -0
  251. package/dist/backends/gui/tags.d.ts +22 -0
  252. package/dist/backends/gui/tags.d.ts.map +1 -0
  253. package/dist/backends/gui/tags.js +20 -0
  254. package/dist/backends/gui/tags.js.map +1 -0
  255. package/dist/backends/gui/technical-analysis.cjs +58 -0
  256. package/dist/backends/gui/technical-analysis.d.ts +41 -0
  257. package/dist/backends/gui/technical-analysis.d.ts.map +1 -0
  258. package/dist/backends/gui/technical-analysis.js +56 -0
  259. package/dist/backends/gui/technical-analysis.js.map +1 -0
  260. package/dist/backends/gui/terminal.cjs +266 -0
  261. package/dist/backends/gui/terminal.d.ts +38 -0
  262. package/dist/backends/gui/terminal.d.ts.map +1 -0
  263. package/dist/backends/gui/terminal.js +231 -0
  264. package/dist/backends/gui/terminal.js.map +1 -0
  265. package/dist/backends/gui/ticker.cjs +79 -0
  266. package/dist/backends/gui/ticker.d.ts +19 -0
  267. package/dist/backends/gui/ticker.d.ts.map +1 -0
  268. package/dist/backends/gui/ticker.js +44 -0
  269. package/dist/backends/gui/ticker.js.map +1 -0
  270. package/dist/backends/gui/timeline.cjs +154 -0
  271. package/dist/backends/gui/timeline.d.ts +42 -0
  272. package/dist/backends/gui/timeline.d.ts.map +1 -0
  273. package/dist/backends/gui/timeline.js +118 -0
  274. package/dist/backends/gui/timeline.js.map +1 -0
  275. package/dist/backends/gui/toggle.cjs +96 -0
  276. package/dist/backends/gui/toggle.d.ts +29 -0
  277. package/dist/backends/gui/toggle.d.ts.map +1 -0
  278. package/dist/backends/gui/toggle.js +95 -0
  279. package/dist/backends/gui/toggle.js.map +1 -0
  280. package/dist/backends/gui/video-player.cjs +383 -0
  281. package/dist/backends/gui/video-player.d.ts +54 -0
  282. package/dist/backends/gui/video-player.d.ts.map +1 -0
  283. package/dist/backends/gui/video-player.js +348 -0
  284. package/dist/backends/gui/video-player.js.map +1 -0
  285. package/dist/chat/Composer.cjs +10 -10
  286. package/dist/chat/Composer.d.ts +16 -17
  287. package/dist/chat/Composer.d.ts.map +1 -1
  288. package/dist/chat/Composer.js +11 -11
  289. package/dist/chat/Composer.js.map +1 -1
  290. package/dist/gallery.cjs +180 -1
  291. package/dist/gallery.d.ts.map +1 -1
  292. package/dist/gallery.html +391 -3
  293. package/dist/gallery.js +181 -2
  294. package/dist/gallery.js.map +1 -1
  295. package/dist/index.cjs +110 -1
  296. package/dist/index.d.ts +1 -1
  297. package/dist/index.d.ts.map +1 -1
  298. package/dist/index.js +1 -1
  299. package/dist/index.js.map +1 -1
  300. package/dist/index.node.cjs +110 -1
  301. package/dist/index.node.js +1 -1
  302. package/dist/styles.css +356 -0
  303. package/package.json +1 -1
@@ -0,0 +1,402 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * QRCode — a QR Code (ISO/IEC 18004) rendered as inline SVG.
5
+ *
6
+ * The matrix is produced by a from-scratch encoder below: byte-mode data
7
+ * encoding, Reed-Solomon error correction, the standard function patterns
8
+ * (finders, timing, alignment, format and version info) and best-of-eight
9
+ * mask selection by penalty score. No canvas, no third-party QR library —
10
+ * gui has no vector primitive of its own, so the mark is a plain `<svg>`
11
+ * carrying a single `<path>` for every dark module, the same choice
12
+ * `GridPattern` makes.
13
+ */
14
+ import * as React from 'react';
15
+ import { XStack } from '@hanzo/gui';
16
+ import { slot } from './slot.js';
17
+ // ---- encoder ---------------------------------------------------------
18
+ const ECL_BITS = { M: 0, L: 1, H: 2, Q: 3 };
19
+ const ECC_CODEWORDS_PER_BLOCK = {
20
+ L: [0, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],
21
+ M: [0, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
22
+ Q: [0, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],
23
+ H: [0, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],
24
+ };
25
+ const NUM_ERROR_CORRECTION_BLOCKS = {
26
+ L: [0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25],
27
+ M: [0, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49],
28
+ Q: [0, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68],
29
+ H: [0, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81],
30
+ };
31
+ const rawDataModules = (ver) => {
32
+ let result = (16 * ver + 128) * ver + 64;
33
+ if (ver >= 2) {
34
+ const numAlign = Math.floor(ver / 7) + 2;
35
+ result -= (25 * numAlign - 10) * numAlign - 55;
36
+ if (ver >= 7)
37
+ result -= 36;
38
+ }
39
+ return result;
40
+ };
41
+ const dataCodewords = (ver, ecl) => Math.floor(rawDataModules(ver) / 8) - ECC_CODEWORDS_PER_BLOCK[ecl][ver] * NUM_ERROR_CORRECTION_BLOCKS[ecl][ver];
42
+ const alignmentPositions = (ver) => {
43
+ if (ver === 1)
44
+ return [];
45
+ const numAlign = Math.floor(ver / 7) + 2;
46
+ const size = ver * 4 + 17;
47
+ const step = ver === 32 ? 26 : Math.ceil((ver * 4 + 4) / (numAlign * 2 - 2)) * 2;
48
+ const result = [6];
49
+ for (let pos = size - 7; result.length < numAlign; pos -= step)
50
+ result.splice(1, 0, pos);
51
+ return result;
52
+ };
53
+ class BitBuffer {
54
+ bits = [];
55
+ push(val, len) {
56
+ for (let i = len - 1; i >= 0; i--)
57
+ this.bits.push((val >>> i) & 1);
58
+ }
59
+ get length() {
60
+ return this.bits.length;
61
+ }
62
+ }
63
+ const buildDataCodewords = (bytes, ver, ecl) => {
64
+ const capacityBytes = dataCodewords(ver, ecl);
65
+ const charCountBits = ver < 10 ? 8 : 16;
66
+ const bb = new BitBuffer();
67
+ bb.push(0b0100, 4);
68
+ bb.push(bytes.length, charCountBits);
69
+ for (const b of bytes)
70
+ bb.push(b, 8);
71
+ const capacityBits = capacityBytes * 8;
72
+ const term = Math.max(0, Math.min(4, capacityBits - bb.length));
73
+ if (term > 0)
74
+ bb.push(0, term);
75
+ while (bb.length % 8 !== 0)
76
+ bb.bits.push(0);
77
+ const codewords = [];
78
+ for (let i = 0; i < bb.length; i += 8) {
79
+ let byte = 0;
80
+ for (let j = 0; j < 8; j++)
81
+ byte = (byte << 1) | bb.bits[i + j];
82
+ codewords.push(byte);
83
+ }
84
+ const pad = [0xec, 0x11];
85
+ for (let p = 0; codewords.length < capacityBytes; p++)
86
+ codewords.push(pad[p % 2]);
87
+ return codewords;
88
+ };
89
+ const rsMultiply = (x, y) => {
90
+ let z = 0;
91
+ for (let i = 7; i >= 0; i--) {
92
+ z = (z << 1) ^ ((z >>> 7) * 0x11d);
93
+ z ^= ((y >>> i) & 1) * x;
94
+ }
95
+ return z & 0xff;
96
+ };
97
+ const rsDivisor = (degree) => {
98
+ const result = new Array(degree).fill(0);
99
+ result[degree - 1] = 1;
100
+ let root = 1;
101
+ for (let i = 0; i < degree; i++) {
102
+ for (let j = 0; j < result.length; j++) {
103
+ result[j] = rsMultiply(result[j], root);
104
+ if (j + 1 < result.length)
105
+ result[j] ^= result[j + 1];
106
+ }
107
+ root = rsMultiply(root, 0x02);
108
+ }
109
+ return result;
110
+ };
111
+ const rsRemainder = (data, divisor) => {
112
+ const result = new Array(divisor.length).fill(0);
113
+ for (const b of data) {
114
+ const factor = b ^ result.shift();
115
+ result.push(0);
116
+ divisor.forEach((coef, i) => {
117
+ result[i] ^= rsMultiply(coef, factor);
118
+ });
119
+ }
120
+ return result;
121
+ };
122
+ const addEccAndInterleave = (data, ver, ecl) => {
123
+ const numBlocks = NUM_ERROR_CORRECTION_BLOCKS[ecl][ver];
124
+ const blockEccLen = ECC_CODEWORDS_PER_BLOCK[ecl][ver];
125
+ const rawCodewords = Math.floor(rawDataModules(ver) / 8);
126
+ const numShortBlocks = numBlocks - (rawCodewords % numBlocks);
127
+ const shortBlockLen = Math.floor(rawCodewords / numBlocks);
128
+ const divisor = rsDivisor(blockEccLen);
129
+ let k = 0;
130
+ const blocks = [];
131
+ for (let i = 0; i < numBlocks; i++) {
132
+ const len = shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1);
133
+ const dat = data.slice(k, k + len);
134
+ k += len;
135
+ blocks.push(dat.concat(rsRemainder(dat, divisor.slice())));
136
+ }
137
+ const result = [];
138
+ const maxLen = Math.max(...blocks.map((b) => b.length));
139
+ for (let i = 0; i < maxLen; i++) {
140
+ for (let j = 0; j < blocks.length; j++) {
141
+ if ((i !== shortBlockLen - blockEccLen || j >= numShortBlocks) && i < blocks[j].length)
142
+ result.push(blocks[j][i]);
143
+ }
144
+ }
145
+ return result;
146
+ };
147
+ const drawFormat = (mat, size, ecl, mask) => {
148
+ const data = (ECL_BITS[ecl] << 3) | mask;
149
+ let rem = data;
150
+ for (let i = 0; i < 10; i++)
151
+ rem = (rem << 1) ^ ((rem >>> 9) * 0x537);
152
+ const bits = (data << 10) | rem;
153
+ const bitsXor = bits ^ 0x5412;
154
+ const get = (i) => ((bitsXor >>> i) & 1) === 1;
155
+ for (let i = 0; i <= 5; i++)
156
+ mat[i][8] = get(i);
157
+ mat[7][8] = get(6);
158
+ mat[8][8] = get(7);
159
+ mat[8][7] = get(8);
160
+ for (let i = 9; i < 15; i++)
161
+ mat[8][14 - i] = get(i);
162
+ for (let i = 0; i < 8; i++)
163
+ mat[8][size - 1 - i] = get(i);
164
+ for (let i = 8; i < 15; i++)
165
+ mat[size - 15 + i][8] = get(i);
166
+ mat[size - 8][8] = true;
167
+ };
168
+ const drawVersion = (mat, size, ver) => {
169
+ let rem = ver;
170
+ for (let i = 0; i < 12; i++)
171
+ rem = (rem << 1) ^ ((rem >>> 11) * 0x1f25);
172
+ const bits = (ver << 12) | rem;
173
+ const get = (i) => ((bits >>> i) & 1) === 1;
174
+ for (let i = 0; i < 18; i++) {
175
+ const bit = get(i);
176
+ const a = size - 11 + (i % 3);
177
+ const b = Math.floor(i / 3);
178
+ mat[b][a] = bit;
179
+ mat[a][b] = bit;
180
+ }
181
+ };
182
+ const MASKS = [
183
+ (x, y) => (x + y) % 2 === 0,
184
+ (x, y) => y % 2 === 0,
185
+ (x, y) => x % 3 === 0,
186
+ (x, y) => (x + y) % 3 === 0,
187
+ (x, y) => (Math.floor(y / 2) + Math.floor(x / 3)) % 2 === 0,
188
+ (x, y) => ((x * y) % 2) + ((x * y) % 3) === 0,
189
+ (x, y) => (((x * y) % 2) + ((x * y) % 3)) % 2 === 0,
190
+ (x, y) => (((x + y) % 2) + ((x * y) % 3)) % 2 === 0,
191
+ ];
192
+ const computePenalty = (mat, size) => {
193
+ let penalty = 0;
194
+ const scoreRun = (line) => {
195
+ let color = line[0];
196
+ let len = 1;
197
+ for (let i = 1; i < line.length; i++) {
198
+ if (line[i] === color)
199
+ len++;
200
+ else {
201
+ if (len >= 5)
202
+ penalty += len - 2;
203
+ color = line[i];
204
+ len = 1;
205
+ }
206
+ }
207
+ if (len >= 5)
208
+ penalty += len - 2;
209
+ };
210
+ for (let y = 0; y < size; y++)
211
+ scoreRun(mat[y]);
212
+ for (let x = 0; x < size; x++)
213
+ scoreRun(mat.map((r) => r[x]));
214
+ for (let y = 0; y < size - 1; y++)
215
+ for (let x = 0; x < size - 1; x++) {
216
+ const c = mat[y][x];
217
+ if (c === mat[y][x + 1] && c === mat[y + 1][x] && c === mat[y + 1][x + 1])
218
+ penalty += 3;
219
+ }
220
+ const patt1 = [true, false, true, true, true, false, true, false, false, false, false];
221
+ const patt2 = [false, false, false, false, true, false, true, true, true, false, true];
222
+ const matchAt = (line, i, pat) => {
223
+ for (let k = 0; k < pat.length; k++)
224
+ if (line[i + k] !== pat[k])
225
+ return false;
226
+ return true;
227
+ };
228
+ for (let y = 0; y < size; y++) {
229
+ const row = mat[y];
230
+ for (let x = 0; x + 11 <= size; x++)
231
+ if (matchAt(row, x, patt1) || matchAt(row, x, patt2))
232
+ penalty += 40;
233
+ }
234
+ for (let x = 0; x < size; x++) {
235
+ const col = mat.map((r) => r[x]);
236
+ for (let y = 0; y + 11 <= size; y++)
237
+ if (matchAt(col, y, patt1) || matchAt(col, y, patt2))
238
+ penalty += 40;
239
+ }
240
+ let dark = 0;
241
+ for (let y = 0; y < size; y++)
242
+ for (let x = 0; x < size; x++)
243
+ if (mat[y][x])
244
+ dark++;
245
+ penalty += Math.floor(Math.abs((dark * 100) / (size * size) - 50) / 5) * 10;
246
+ return penalty;
247
+ };
248
+ const buildMatrix = (ver, ecl, codewords) => {
249
+ const size = ver * 4 + 17;
250
+ const modules = Array.from({ length: size }, () => Array(size).fill(false));
251
+ const isFn = Array.from({ length: size }, () => Array(size).fill(false));
252
+ const set = (x, y, dark) => {
253
+ modules[y][x] = dark;
254
+ isFn[y][x] = true;
255
+ };
256
+ const drawFinder = (cx, cy) => {
257
+ for (let dy = -4; dy <= 4; dy++)
258
+ for (let dx = -4; dx <= 4; dx++) {
259
+ const x = cx + dx;
260
+ const y = cy + dy;
261
+ if (x >= 0 && x < size && y >= 0 && y < size) {
262
+ const dist = Math.max(Math.abs(dx), Math.abs(dy));
263
+ set(x, y, dist !== 2 && dist !== 4);
264
+ }
265
+ }
266
+ };
267
+ const drawAlignment = (cx, cy) => {
268
+ for (let dy = -2; dy <= 2; dy++)
269
+ for (let dx = -2; dx <= 2; dx++)
270
+ set(cx + dx, cy + dy, Math.max(Math.abs(dx), Math.abs(dy)) !== 1);
271
+ };
272
+ for (let i = 0; i < size; i++) {
273
+ if (!isFn[6][i])
274
+ set(i, 6, i % 2 === 0);
275
+ if (!isFn[i][6])
276
+ set(6, i, i % 2 === 0);
277
+ }
278
+ drawFinder(3, 3);
279
+ drawFinder(size - 4, 3);
280
+ drawFinder(3, size - 4);
281
+ const aligns = alignmentPositions(ver);
282
+ for (const ay of aligns)
283
+ for (const ax of aligns) {
284
+ const nearFinder = (ax < 8 && ay < 8) || (ax > size - 9 && ay < 8) || (ax < 8 && ay > size - 9);
285
+ if (!nearFinder)
286
+ drawAlignment(ax, ay);
287
+ }
288
+ set(8, size - 8, true);
289
+ for (let i = 0; i < 9; i++)
290
+ if (i !== 6) {
291
+ set(8, i, false);
292
+ set(i, 8, false);
293
+ }
294
+ for (let i = 0; i < 8; i++) {
295
+ set(size - 1 - i, 8, false);
296
+ set(8, size - 1 - i, false);
297
+ }
298
+ if (ver >= 7) {
299
+ for (let i = 0; i < 18; i++) {
300
+ const a = size - 11 + (i % 3);
301
+ const b = Math.floor(i / 3);
302
+ set(a, b, false);
303
+ set(b, a, false);
304
+ }
305
+ }
306
+ const bits = [];
307
+ for (const cw of codewords)
308
+ for (let i = 7; i >= 0; i--)
309
+ bits.push((cw >>> i) & 1);
310
+ let bitIndex = 0;
311
+ let upward = true;
312
+ for (let right = size - 1; right >= 1; right -= 2) {
313
+ if (right === 6)
314
+ right = 5;
315
+ for (let vert = 0; vert < size; vert++) {
316
+ const y = upward ? size - 1 - vert : vert;
317
+ for (let j = 0; j < 2; j++) {
318
+ const x = right - j;
319
+ if (!isFn[y][x]) {
320
+ modules[y][x] = bitIndex < bits.length ? bits[bitIndex] === 1 : false;
321
+ bitIndex++;
322
+ }
323
+ }
324
+ }
325
+ upward = !upward;
326
+ }
327
+ const applyMask = (m, on) => {
328
+ const fn = MASKS[m];
329
+ for (let y = 0; y < size; y++)
330
+ for (let x = 0; x < size; x++)
331
+ if (!isFn[y][x] && fn(x, y))
332
+ on[y][x] = !on[y][x];
333
+ };
334
+ let bestMask = 0;
335
+ let bestPenalty = Infinity;
336
+ for (let m = 0; m < 8; m++) {
337
+ const test = modules.map((row) => row.slice());
338
+ applyMask(m, test);
339
+ const p = computePenalty(test, size);
340
+ if (p < bestPenalty) {
341
+ bestPenalty = p;
342
+ bestMask = m;
343
+ }
344
+ }
345
+ applyMask(bestMask, modules);
346
+ drawFormat(modules, size, ecl, bestMask);
347
+ if (ver >= 7)
348
+ drawVersion(modules, size, ver);
349
+ return modules;
350
+ };
351
+ /** Encodes text into a QR module matrix (row-major, `true` = dark). */
352
+ export const encodeQr = (text, ecl = 'M') => {
353
+ let bytes = new TextEncoder().encode(text);
354
+ let ver = 40;
355
+ for (let v = 1; v <= 40; v++) {
356
+ const charCountBits = v < 10 ? 8 : 16;
357
+ if (4 + charCountBits + bytes.length * 8 <= dataCodewords(v, ecl) * 8) {
358
+ ver = v;
359
+ break;
360
+ }
361
+ }
362
+ const charCountBits = ver < 10 ? 8 : 16;
363
+ const maxBytes = Math.floor((dataCodewords(ver, ecl) * 8 - 4 - charCountBits) / 8);
364
+ if (bytes.length > maxBytes)
365
+ bytes = bytes.slice(0, Math.max(0, maxBytes));
366
+ const dataCw = buildDataCodewords(bytes, ver, ecl);
367
+ const allCw = addEccAndInterleave(dataCw, ver, ecl);
368
+ return buildMatrix(ver, ecl, allCw);
369
+ };
370
+ const matrixToPath = (matrix, margin, excavation) => {
371
+ let d = '';
372
+ for (let y = 0; y < matrix.length; y++) {
373
+ for (let x = 0; x < matrix.length; x++) {
374
+ if (!matrix[y][x])
375
+ continue;
376
+ if (excavation && x >= excavation.x && x < excavation.x + excavation.w && y >= excavation.y && y < excavation.y + excavation.h)
377
+ continue;
378
+ d += `M${x + margin} ${y + margin}h1v1h-1z`;
379
+ }
380
+ }
381
+ return d;
382
+ };
383
+ // ---- component --------------------------------------------------------
384
+ export const QRCode = React.forwardRef(({ className, value, size = 256, level = 'M', bgColor = '#FFFFFF', fgColor = '#000000', includeMargin = false, imageSettings, style, ...props }, ref) => {
385
+ const matrix = React.useMemo(() => encodeQr(value, level), [value, level]);
386
+ const margin = includeMargin ? 4 : 0;
387
+ const cells = matrix.length;
388
+ const total = cells + margin * 2;
389
+ const scale = total / size;
390
+ const excavation = imageSettings && imageSettings.excavate
391
+ ? {
392
+ x: Math.floor((imageSettings.x ?? (size - imageSettings.width) / 2) * scale),
393
+ y: Math.floor((imageSettings.y ?? (size - imageSettings.height) / 2) * scale),
394
+ w: Math.ceil(imageSettings.width * scale),
395
+ h: Math.ceil(imageSettings.height * scale),
396
+ }
397
+ : undefined;
398
+ const path = React.useMemo(() => matrixToPath(matrix, margin, excavation), [matrix, margin, excavation]);
399
+ return (_jsx(XStack, { ref: ref, ...slot('qr-code'), display: "inline-flex", items: "center", justify: "center", className: className, style: style, ...props, children: _jsxs("svg", { ...slot('qr-code-svg'), width: size, height: size, viewBox: `0 0 ${total} ${total}`, role: "img", "aria-label": value, children: [_jsx("rect", { width: total, height: total, fill: bgColor }), _jsx("path", { d: path, fill: fgColor }), imageSettings && (_jsx("image", { ...slot('qr-code-image'), href: imageSettings.src, x: (imageSettings.x ?? (size - imageSettings.width) / 2) * scale, y: (imageSettings.y ?? (size - imageSettings.height) / 2) * scale, width: imageSettings.width * scale, height: imageSettings.height * scale, preserveAspectRatio: "xMidYMid slice" }))] }) }));
400
+ });
401
+ QRCode.displayName = 'QRCode';
402
+ //# sourceMappingURL=qr-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-code.js","sourceRoot":"","sources":["../../../src/backends/gui/qr-code.tsx"],"names":[],"mappings":"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E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC/I,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACxJ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC3J,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,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"}
@@ -0,0 +1,167 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.RelativeTime = RelativeTime;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ /**
40
+ * RelativeTime — a `<time>` element that keeps saying how long ago (or from
41
+ * now) a moment was, ticking on an interval so a page left open does not go
42
+ * stale. `format` picks the wording: `auto` ("3 hours ago"), `short` ("3h"),
43
+ * or `long`, which hands the same distance to `Intl.RelativeTimeFormat` for
44
+ * locale-correct phrasing ("yesterday", "in 3 hours").
45
+ */
46
+ const gui_1 = require("@hanzo/gui");
47
+ const React = __importStar(require("react"));
48
+ const UNITS = [
49
+ ['year', 31536000],
50
+ ['month', 2592000],
51
+ ['week', 604800],
52
+ ['day', 86400],
53
+ ['hour', 3600],
54
+ ['minute', 60],
55
+ ['second', 1],
56
+ ];
57
+ const SHORT_SUFFIX = {
58
+ year: 'y',
59
+ month: 'mo',
60
+ week: 'w',
61
+ day: 'd',
62
+ hour: 'h',
63
+ minute: 'm',
64
+ second: 's',
65
+ };
66
+ const shortForm = (diffInSeconds) => {
67
+ const abs = Math.abs(diffInSeconds);
68
+ for (const [unit, secondsInUnit] of UNITS) {
69
+ if (abs >= secondsInUnit || unit === 'second') {
70
+ const value = Math.floor(abs / secondsInUnit);
71
+ const distance = `${value}${SHORT_SUFFIX[unit]}`;
72
+ return diffInSeconds < 0 ? `in ${distance}` : distance;
73
+ }
74
+ }
75
+ return '0s';
76
+ };
77
+ const autoForm = (diffInSeconds) => {
78
+ if (diffInSeconds < 0) {
79
+ const abs = -diffInSeconds;
80
+ if (abs < 60)
81
+ return 'in a moment';
82
+ if (abs < 120)
83
+ return 'in 1 minute';
84
+ if (abs < 3600)
85
+ return `in ${Math.floor(abs / 60)} minutes`;
86
+ if (abs < 7200)
87
+ return 'in 1 hour';
88
+ if (abs < 86400)
89
+ return `in ${Math.floor(abs / 3600)} hours`;
90
+ if (abs < 172800)
91
+ return 'tomorrow';
92
+ if (abs < 604800)
93
+ return `in ${Math.floor(abs / 86400)} days`;
94
+ if (abs < 1209600)
95
+ return 'in 1 week';
96
+ if (abs < 2592000)
97
+ return `in ${Math.floor(abs / 604800)} weeks`;
98
+ if (abs < 5184000)
99
+ return 'in 1 month';
100
+ if (abs < 31536000)
101
+ return `in ${Math.floor(abs / 2592000)} months`;
102
+ if (abs < 63072000)
103
+ return 'in 1 year';
104
+ return `in ${Math.floor(abs / 31536000)} years`;
105
+ }
106
+ if (diffInSeconds < 60)
107
+ return 'just now';
108
+ if (diffInSeconds < 120)
109
+ return '1 minute ago';
110
+ if (diffInSeconds < 3600)
111
+ return `${Math.floor(diffInSeconds / 60)} minutes ago`;
112
+ if (diffInSeconds < 7200)
113
+ return '1 hour ago';
114
+ if (diffInSeconds < 86400)
115
+ return `${Math.floor(diffInSeconds / 3600)} hours ago`;
116
+ if (diffInSeconds < 172800)
117
+ return '1 day ago';
118
+ if (diffInSeconds < 604800)
119
+ return `${Math.floor(diffInSeconds / 86400)} days ago`;
120
+ if (diffInSeconds < 1209600)
121
+ return '1 week ago';
122
+ if (diffInSeconds < 2592000)
123
+ return `${Math.floor(diffInSeconds / 604800)} weeks ago`;
124
+ if (diffInSeconds < 5184000)
125
+ return '1 month ago';
126
+ if (diffInSeconds < 31536000)
127
+ return `${Math.floor(diffInSeconds / 2592000)} months ago`;
128
+ if (diffInSeconds < 63072000)
129
+ return '1 year ago';
130
+ return `${Math.floor(diffInSeconds / 31536000)} years ago`;
131
+ };
132
+ const longFormatter = /* @__PURE__ */ (() => {
133
+ let cached;
134
+ return () => (cached ??= new Intl.RelativeTimeFormat(undefined, { numeric: 'auto', style: 'long' }));
135
+ })();
136
+ const longForm = (diffInSeconds) => {
137
+ for (const [unit, secondsInUnit] of UNITS) {
138
+ const abs = Math.abs(diffInSeconds);
139
+ if (abs >= secondsInUnit || unit === 'second') {
140
+ const value = Math.round(diffInSeconds / secondsInUnit) * -1;
141
+ return longFormatter().format(value, unit);
142
+ }
143
+ }
144
+ return longFormatter().format(0, 'second');
145
+ };
146
+ const relativeTime = (date, format) => {
147
+ const diffInSeconds = Math.floor((Date.now() - new Date(date).getTime()) / 1000);
148
+ if (format === 'short')
149
+ return shortForm(diffInSeconds);
150
+ if (format === 'long')
151
+ return longForm(diffInSeconds);
152
+ return autoForm(diffInSeconds);
153
+ };
154
+ const RelativeTimeText = (0, gui_1.styled)(gui_1.SizableText, {
155
+ name: 'RelativeTime',
156
+ render: 'time',
157
+ });
158
+ /** A self-updating `<time>` reading how long ago (or until) `date` is. */
159
+ function RelativeTime({ date, format = 'auto', updateInterval = 60000, ...props }) {
160
+ const [text, setText] = React.useState(() => relativeTime(date, format));
161
+ React.useEffect(() => {
162
+ setText(relativeTime(date, format));
163
+ const id = setInterval(() => setText(relativeTime(date, format)), updateInterval);
164
+ return () => clearInterval(id);
165
+ }, [date, format, updateInterval]);
166
+ return ((0, jsx_runtime_1.jsx)(RelativeTimeText, { "data-slot": "relative-time", "data-format": format, ...{ dateTime: new Date(date).toISOString(), ...props }, children: text }));
167
+ }
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ export type RelativeTimeFormat = 'auto' | 'short' | 'long';
3
+ export type RelativeTimeProps = Omit<React.ComponentProps<'time'>, 'dateTime' | 'children'> & {
4
+ date: Date | string;
5
+ format?: RelativeTimeFormat;
6
+ updateInterval?: number;
7
+ };
8
+ /** A self-updating `<time>` reading how long ago (or until) `date` is. */
9
+ export declare function RelativeTime({ date, format, updateInterval, ...props }: RelativeTimeProps): React.JSX.Element;
10
+ //# sourceMappingURL=relative-time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relative-time.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/relative-time.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA0F9B,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;AAO1D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;IAC5F,IAAI,EAAE,IAAI,GAAG,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,MAAe,EACf,cAAsB,EACtB,GAAG,KAAK,EACT,EAAE,iBAAiB,qBAkBnB"}