@usels/core 0.0.1

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 (341) hide show
  1. package/README.md +21 -0
  2. package/dist/browser/useEventListener/index.d.mts +56 -0
  3. package/dist/browser/useEventListener/index.d.ts +56 -0
  4. package/dist/browser/useEventListener/index.js +112 -0
  5. package/dist/browser/useEventListener/index.js.map +1 -0
  6. package/dist/browser/useEventListener/index.mjs +88 -0
  7. package/dist/browser/useEventListener/index.mjs.map +1 -0
  8. package/dist/browser/useMediaQuery/demo.d.mts +5 -0
  9. package/dist/browser/useMediaQuery/demo.d.ts +5 -0
  10. package/dist/browser/useMediaQuery/demo.js +83 -0
  11. package/dist/browser/useMediaQuery/demo.js.map +1 -0
  12. package/dist/browser/useMediaQuery/demo.mjs +63 -0
  13. package/dist/browser/useMediaQuery/demo.mjs.map +1 -0
  14. package/dist/browser/useMediaQuery/index.d.mts +11 -0
  15. package/dist/browser/useMediaQuery/index.d.ts +11 -0
  16. package/dist/browser/useMediaQuery/index.js +89 -0
  17. package/dist/browser/useMediaQuery/index.js.map +1 -0
  18. package/dist/browser/useMediaQuery/index.mjs +64 -0
  19. package/dist/browser/useMediaQuery/index.mjs.map +1 -0
  20. package/dist/components/Auto/index.d.mts +33 -0
  21. package/dist/components/Auto/index.d.ts +33 -0
  22. package/dist/components/Auto/index.js +66 -0
  23. package/dist/components/Auto/index.js.map +1 -0
  24. package/dist/components/Auto/index.mjs +34 -0
  25. package/dist/components/Auto/index.mjs.map +1 -0
  26. package/dist/elements/useDocumentVisibility/demo.d.mts +5 -0
  27. package/dist/elements/useDocumentVisibility/demo.d.ts +5 -0
  28. package/dist/elements/useDocumentVisibility/demo.js +130 -0
  29. package/dist/elements/useDocumentVisibility/demo.js.map +1 -0
  30. package/dist/elements/useDocumentVisibility/demo.mjs +114 -0
  31. package/dist/elements/useDocumentVisibility/demo.mjs.map +1 -0
  32. package/dist/elements/useDocumentVisibility/index.d.mts +5 -0
  33. package/dist/elements/useDocumentVisibility/index.d.ts +5 -0
  34. package/dist/elements/useDocumentVisibility/index.js +45 -0
  35. package/dist/elements/useDocumentVisibility/index.js.map +1 -0
  36. package/dist/elements/useDocumentVisibility/index.mjs +21 -0
  37. package/dist/elements/useDocumentVisibility/index.mjs.map +1 -0
  38. package/dist/elements/useElementBounding/demo.d.mts +5 -0
  39. package/dist/elements/useElementBounding/demo.d.ts +5 -0
  40. package/dist/elements/useElementBounding/demo.js +87 -0
  41. package/dist/elements/useElementBounding/demo.js.map +1 -0
  42. package/dist/elements/useElementBounding/demo.mjs +67 -0
  43. package/dist/elements/useElementBounding/demo.mjs.map +1 -0
  44. package/dist/elements/useElementBounding/index.d.mts +46 -0
  45. package/dist/elements/useElementBounding/index.d.ts +46 -0
  46. package/dist/elements/useElementBounding/index.js +122 -0
  47. package/dist/elements/useElementBounding/index.js.map +1 -0
  48. package/dist/elements/useElementBounding/index.mjs +98 -0
  49. package/dist/elements/useElementBounding/index.mjs.map +1 -0
  50. package/dist/elements/useElementSize/demo.d.mts +5 -0
  51. package/dist/elements/useElementSize/demo.d.ts +5 -0
  52. package/dist/elements/useElementSize/demo.js +83 -0
  53. package/dist/elements/useElementSize/demo.js.map +1 -0
  54. package/dist/elements/useElementSize/demo.mjs +63 -0
  55. package/dist/elements/useElementSize/demo.mjs.map +1 -0
  56. package/dist/elements/useElementSize/index.d.mts +34 -0
  57. package/dist/elements/useElementSize/index.d.ts +34 -0
  58. package/dist/elements/useElementSize/index.js +85 -0
  59. package/dist/elements/useElementSize/index.js.map +1 -0
  60. package/dist/elements/useElementSize/index.mjs +61 -0
  61. package/dist/elements/useElementSize/index.mjs.map +1 -0
  62. package/dist/elements/useElementVisibility/demo.d.mts +5 -0
  63. package/dist/elements/useElementVisibility/demo.d.ts +5 -0
  64. package/dist/elements/useElementVisibility/demo.js +110 -0
  65. package/dist/elements/useElementVisibility/demo.js.map +1 -0
  66. package/dist/elements/useElementVisibility/demo.mjs +90 -0
  67. package/dist/elements/useElementVisibility/demo.mjs.map +1 -0
  68. package/dist/elements/useElementVisibility/index.d.mts +43 -0
  69. package/dist/elements/useElementVisibility/index.d.ts +43 -0
  70. package/dist/elements/useElementVisibility/index.js +58 -0
  71. package/dist/elements/useElementVisibility/index.js.map +1 -0
  72. package/dist/elements/useElementVisibility/index.mjs +34 -0
  73. package/dist/elements/useElementVisibility/index.mjs.map +1 -0
  74. package/dist/elements/useIntersectionObserver/demo.d.mts +5 -0
  75. package/dist/elements/useIntersectionObserver/demo.d.ts +5 -0
  76. package/dist/elements/useIntersectionObserver/demo.js +173 -0
  77. package/dist/elements/useIntersectionObserver/demo.js.map +1 -0
  78. package/dist/elements/useIntersectionObserver/demo.mjs +153 -0
  79. package/dist/elements/useIntersectionObserver/demo.mjs.map +1 -0
  80. package/dist/elements/useIntersectionObserver/index.d.mts +47 -0
  81. package/dist/elements/useIntersectionObserver/index.d.ts +47 -0
  82. package/dist/elements/useIntersectionObserver/index.js +111 -0
  83. package/dist/elements/useIntersectionObserver/index.js.map +1 -0
  84. package/dist/elements/useIntersectionObserver/index.mjs +87 -0
  85. package/dist/elements/useIntersectionObserver/index.mjs.map +1 -0
  86. package/dist/elements/useMouseInElement/demo.d.mts +5 -0
  87. package/dist/elements/useMouseInElement/demo.d.ts +5 -0
  88. package/dist/elements/useMouseInElement/demo.js +104 -0
  89. package/dist/elements/useMouseInElement/demo.js.map +1 -0
  90. package/dist/elements/useMouseInElement/demo.mjs +84 -0
  91. package/dist/elements/useMouseInElement/demo.mjs.map +1 -0
  92. package/dist/elements/useMouseInElement/index.d.mts +56 -0
  93. package/dist/elements/useMouseInElement/index.d.ts +56 -0
  94. package/dist/elements/useMouseInElement/index.js +148 -0
  95. package/dist/elements/useMouseInElement/index.js.map +1 -0
  96. package/dist/elements/useMouseInElement/index.mjs +124 -0
  97. package/dist/elements/useMouseInElement/index.mjs.map +1 -0
  98. package/dist/elements/useMutationObserver/demo.d.mts +5 -0
  99. package/dist/elements/useMutationObserver/demo.d.ts +5 -0
  100. package/dist/elements/useMutationObserver/demo.js +240 -0
  101. package/dist/elements/useMutationObserver/demo.js.map +1 -0
  102. package/dist/elements/useMutationObserver/demo.mjs +220 -0
  103. package/dist/elements/useMutationObserver/demo.mjs.map +1 -0
  104. package/dist/elements/useMutationObserver/index.d.mts +15 -0
  105. package/dist/elements/useMutationObserver/index.d.ts +15 -0
  106. package/dist/elements/useMutationObserver/index.js +69 -0
  107. package/dist/elements/useMutationObserver/index.js.map +1 -0
  108. package/dist/elements/useMutationObserver/index.mjs +45 -0
  109. package/dist/elements/useMutationObserver/index.mjs.map +1 -0
  110. package/dist/elements/useParentElement/demo.d.mts +5 -0
  111. package/dist/elements/useParentElement/demo.d.ts +5 -0
  112. package/dist/elements/useParentElement/demo.js +132 -0
  113. package/dist/elements/useParentElement/demo.js.map +1 -0
  114. package/dist/elements/useParentElement/demo.mjs +112 -0
  115. package/dist/elements/useParentElement/demo.mjs.map +1 -0
  116. package/dist/elements/useParentElement/index.d.mts +7 -0
  117. package/dist/elements/useParentElement/index.d.ts +7 -0
  118. package/dist/elements/useParentElement/index.js +47 -0
  119. package/dist/elements/useParentElement/index.js.map +1 -0
  120. package/dist/elements/useParentElement/index.mjs +23 -0
  121. package/dist/elements/useParentElement/index.mjs.map +1 -0
  122. package/dist/elements/useRef$/index.js +89 -0
  123. package/dist/elements/useRef$/index.js.map +1 -0
  124. package/dist/elements/useRef$/index.mjs +62 -0
  125. package/dist/elements/useRef$/index.mjs.map +1 -0
  126. package/dist/elements/useRef_/index.d.mts +60 -0
  127. package/dist/elements/useRef_/index.d.ts +60 -0
  128. package/dist/elements/useResizeObserver/demo.d.mts +5 -0
  129. package/dist/elements/useResizeObserver/demo.d.ts +5 -0
  130. package/dist/elements/useResizeObserver/demo.js +90 -0
  131. package/dist/elements/useResizeObserver/demo.js.map +1 -0
  132. package/dist/elements/useResizeObserver/demo.mjs +70 -0
  133. package/dist/elements/useResizeObserver/demo.mjs.map +1 -0
  134. package/dist/elements/useResizeObserver/index.d.mts +36 -0
  135. package/dist/elements/useResizeObserver/index.d.ts +36 -0
  136. package/dist/elements/useResizeObserver/index.js +74 -0
  137. package/dist/elements/useResizeObserver/index.js.map +1 -0
  138. package/dist/elements/useResizeObserver/index.mjs +49 -0
  139. package/dist/elements/useResizeObserver/index.mjs.map +1 -0
  140. package/dist/elements/useWindowFocus/demo.d.mts +5 -0
  141. package/dist/elements/useWindowFocus/demo.d.ts +5 -0
  142. package/dist/elements/useWindowFocus/demo.js +104 -0
  143. package/dist/elements/useWindowFocus/demo.js.map +1 -0
  144. package/dist/elements/useWindowFocus/demo.mjs +84 -0
  145. package/dist/elements/useWindowFocus/demo.mjs.map +1 -0
  146. package/dist/elements/useWindowFocus/index.d.mts +5 -0
  147. package/dist/elements/useWindowFocus/index.d.ts +5 -0
  148. package/dist/elements/useWindowFocus/index.js +42 -0
  149. package/dist/elements/useWindowFocus/index.js.map +1 -0
  150. package/dist/elements/useWindowFocus/index.mjs +18 -0
  151. package/dist/elements/useWindowFocus/index.mjs.map +1 -0
  152. package/dist/elements/useWindowSize/demo.d.mts +5 -0
  153. package/dist/elements/useWindowSize/demo.d.ts +5 -0
  154. package/dist/elements/useWindowSize/demo.js +79 -0
  155. package/dist/elements/useWindowSize/demo.js.map +1 -0
  156. package/dist/elements/useWindowSize/demo.mjs +59 -0
  157. package/dist/elements/useWindowSize/demo.mjs.map +1 -0
  158. package/dist/elements/useWindowSize/index.d.mts +17 -0
  159. package/dist/elements/useWindowSize/index.d.ts +17 -0
  160. package/dist/elements/useWindowSize/index.js +96 -0
  161. package/dist/elements/useWindowSize/index.js.map +1 -0
  162. package/dist/elements/useWindowSize/index.mjs +76 -0
  163. package/dist/elements/useWindowSize/index.mjs.map +1 -0
  164. package/dist/function/get/index.d.mts +45 -0
  165. package/dist/function/get/index.d.ts +45 -0
  166. package/dist/function/get/index.js +39 -0
  167. package/dist/function/get/index.js.map +1 -0
  168. package/dist/function/get/index.mjs +15 -0
  169. package/dist/function/get/index.mjs.map +1 -0
  170. package/dist/function/peek/index.d.mts +46 -0
  171. package/dist/function/peek/index.d.ts +46 -0
  172. package/dist/function/peek/index.js +39 -0
  173. package/dist/function/peek/index.js.map +1 -0
  174. package/dist/function/peek/index.mjs +15 -0
  175. package/dist/function/peek/index.mjs.map +1 -0
  176. package/dist/function/useMayObservableOptions/index.d.mts +59 -0
  177. package/dist/function/useMayObservableOptions/index.d.ts +59 -0
  178. package/dist/function/useMayObservableOptions/index.js +109 -0
  179. package/dist/function/useMayObservableOptions/index.js.map +1 -0
  180. package/dist/function/useMayObservableOptions/index.mjs +88 -0
  181. package/dist/function/useMayObservableOptions/index.mjs.map +1 -0
  182. package/dist/function/useSupported/index.d.mts +6 -0
  183. package/dist/function/useSupported/index.d.ts +6 -0
  184. package/dist/function/useSupported/index.js +37 -0
  185. package/dist/function/useSupported/index.js.map +1 -0
  186. package/dist/function/useSupported/index.mjs +13 -0
  187. package/dist/function/useSupported/index.mjs.map +1 -0
  188. package/dist/function/useWhenMounted/index.d.mts +6 -0
  189. package/dist/function/useWhenMounted/index.d.ts +6 -0
  190. package/dist/function/useWhenMounted/index.js +37 -0
  191. package/dist/function/useWhenMounted/index.js.map +1 -0
  192. package/dist/function/useWhenMounted/index.mjs +13 -0
  193. package/dist/function/useWhenMounted/index.mjs.map +1 -0
  194. package/dist/index.d.mts +24 -0
  195. package/dist/index.d.ts +24 -0
  196. package/dist/index.js +63 -0
  197. package/dist/index.js.map +1 -0
  198. package/dist/index.mjs +22 -0
  199. package/dist/index.mjs.map +1 -0
  200. package/dist/sensors/useScroll/demo.d.mts +5 -0
  201. package/dist/sensors/useScroll/demo.d.ts +5 -0
  202. package/dist/sensors/useScroll/demo.js +122 -0
  203. package/dist/sensors/useScroll/demo.js.map +1 -0
  204. package/dist/sensors/useScroll/demo.mjs +102 -0
  205. package/dist/sensors/useScroll/demo.mjs.map +1 -0
  206. package/dist/sensors/useScroll/index.d.mts +42 -0
  207. package/dist/sensors/useScroll/index.d.ts +42 -0
  208. package/dist/sensors/useScroll/index.js +149 -0
  209. package/dist/sensors/useScroll/index.js.map +1 -0
  210. package/dist/sensors/useScroll/index.mjs +125 -0
  211. package/dist/sensors/useScroll/index.mjs.map +1 -0
  212. package/dist/sensors/useWindowScroll/demo.d.mts +5 -0
  213. package/dist/sensors/useWindowScroll/demo.d.ts +5 -0
  214. package/dist/sensors/useWindowScroll/demo.js +85 -0
  215. package/dist/sensors/useWindowScroll/demo.js.map +1 -0
  216. package/dist/sensors/useWindowScroll/demo.mjs +65 -0
  217. package/dist/sensors/useWindowScroll/demo.mjs.map +1 -0
  218. package/dist/sensors/useWindowScroll/index.d.mts +9 -0
  219. package/dist/sensors/useWindowScroll/index.d.ts +9 -0
  220. package/dist/sensors/useWindowScroll/index.js +36 -0
  221. package/dist/sensors/useWindowScroll/index.js.map +1 -0
  222. package/dist/sensors/useWindowScroll/index.mjs +12 -0
  223. package/dist/sensors/useWindowScroll/index.mjs.map +1 -0
  224. package/dist/shared/configurable.d.mts +21 -0
  225. package/dist/shared/configurable.d.ts +21 -0
  226. package/dist/shared/configurable.js +39 -0
  227. package/dist/shared/configurable.js.map +1 -0
  228. package/dist/shared/configurable.mjs +12 -0
  229. package/dist/shared/configurable.mjs.map +1 -0
  230. package/dist/shared/index.d.mts +4 -0
  231. package/dist/shared/index.d.ts +4 -0
  232. package/dist/shared/index.js +31 -0
  233. package/dist/shared/index.js.map +1 -0
  234. package/dist/shared/index.mjs +7 -0
  235. package/dist/shared/index.mjs.map +1 -0
  236. package/dist/shared/normalizeTargets/index.d.mts +21 -0
  237. package/dist/shared/normalizeTargets/index.d.ts +21 -0
  238. package/dist/shared/normalizeTargets/index.js +36 -0
  239. package/dist/shared/normalizeTargets/index.js.map +1 -0
  240. package/dist/shared/normalizeTargets/index.mjs +12 -0
  241. package/dist/shared/normalizeTargets/index.mjs.map +1 -0
  242. package/dist/shared/utils.d.mts +15 -0
  243. package/dist/shared/utils.d.ts +15 -0
  244. package/dist/shared/utils.js +87 -0
  245. package/dist/shared/utils.js.map +1 -0
  246. package/dist/shared/utils.mjs +52 -0
  247. package/dist/shared/utils.mjs.map +1 -0
  248. package/dist/types.d.mts +52 -0
  249. package/dist/types.d.ts +52 -0
  250. package/dist/types.js +17 -0
  251. package/dist/types.js.map +1 -0
  252. package/dist/types.mjs +1 -0
  253. package/dist/types.mjs.map +1 -0
  254. package/package.json +54 -0
  255. package/src/browser/useEventListener/index.md +109 -0
  256. package/src/browser/useEventListener/index.spec.ts +611 -0
  257. package/src/browser/useEventListener/index.ts +242 -0
  258. package/src/browser/useMediaQuery/demo.tsx +63 -0
  259. package/src/browser/useMediaQuery/index.md +43 -0
  260. package/src/browser/useMediaQuery/index.spec.ts +267 -0
  261. package/src/browser/useMediaQuery/index.ts +96 -0
  262. package/src/components/Auto/index.tsx +65 -0
  263. package/src/elements/useDocumentVisibility/demo.tsx +111 -0
  264. package/src/elements/useDocumentVisibility/index.md +54 -0
  265. package/src/elements/useDocumentVisibility/index.spec.ts +114 -0
  266. package/src/elements/useDocumentVisibility/index.ts +26 -0
  267. package/src/elements/useElementBounding/demo.tsx +68 -0
  268. package/src/elements/useElementBounding/index.md +64 -0
  269. package/src/elements/useElementBounding/index.ts +159 -0
  270. package/src/elements/useElementSize/demo.tsx +53 -0
  271. package/src/elements/useElementSize/index.md +65 -0
  272. package/src/elements/useElementSize/index.spec.ts +295 -0
  273. package/src/elements/useElementSize/index.ts +100 -0
  274. package/src/elements/useElementVisibility/deep-observable-pattern.spec.ts +453 -0
  275. package/src/elements/useElementVisibility/demo.tsx +97 -0
  276. package/src/elements/useElementVisibility/index.md +98 -0
  277. package/src/elements/useElementVisibility/index.spec.ts +227 -0
  278. package/src/elements/useElementVisibility/index.ts +78 -0
  279. package/src/elements/useIntersectionObserver/demo.tsx +180 -0
  280. package/src/elements/useIntersectionObserver/index.md +99 -0
  281. package/src/elements/useIntersectionObserver/index.spec.ts +482 -0
  282. package/src/elements/useIntersectionObserver/index.ts +149 -0
  283. package/src/elements/useMouseInElement/demo.tsx +88 -0
  284. package/src/elements/useMouseInElement/index.md +76 -0
  285. package/src/elements/useMouseInElement/index.spec.ts +398 -0
  286. package/src/elements/useMouseInElement/index.ts +209 -0
  287. package/src/elements/useMutationObserver/demo.tsx +270 -0
  288. package/src/elements/useMutationObserver/index.md +99 -0
  289. package/src/elements/useMutationObserver/index.spec.ts +421 -0
  290. package/src/elements/useMutationObserver/index.ts +66 -0
  291. package/src/elements/useParentElement/demo.tsx +120 -0
  292. package/src/elements/useParentElement/index.md +67 -0
  293. package/src/elements/useParentElement/index.spec.ts +208 -0
  294. package/src/elements/useParentElement/index.ts +35 -0
  295. package/src/elements/useRef$/index.md +62 -0
  296. package/src/elements/useRef$/index.spec.ts +205 -0
  297. package/src/elements/useRef$/index.ts +137 -0
  298. package/src/elements/useRef$/useImperativeHandle.spec.ts +339 -0
  299. package/src/elements/useResizeObserver/demo.tsx +62 -0
  300. package/src/elements/useResizeObserver/index.md +51 -0
  301. package/src/elements/useResizeObserver/index.spec.ts +312 -0
  302. package/src/elements/useResizeObserver/index.ts +106 -0
  303. package/src/elements/useWindowFocus/demo.tsx +79 -0
  304. package/src/elements/useWindowFocus/index.md +38 -0
  305. package/src/elements/useWindowFocus/index.spec.ts +103 -0
  306. package/src/elements/useWindowFocus/index.ts +21 -0
  307. package/src/elements/useWindowSize/demo.tsx +51 -0
  308. package/src/elements/useWindowSize/index.md +55 -0
  309. package/src/elements/useWindowSize/index.spec.ts +310 -0
  310. package/src/elements/useWindowSize/index.ts +107 -0
  311. package/src/function/get/index.md +25 -0
  312. package/src/function/get/index.spec.ts +87 -0
  313. package/src/function/get/index.ts +70 -0
  314. package/src/function/peek/index.spec.ts +97 -0
  315. package/src/function/peek/index.ts +69 -0
  316. package/src/function/useMayObservableOptions/index.spec.ts +521 -0
  317. package/src/function/useMayObservableOptions/index.ts +173 -0
  318. package/src/function/useSupported/index.md +43 -0
  319. package/src/function/useSupported/index.spec.ts +116 -0
  320. package/src/function/useSupported/index.ts +14 -0
  321. package/src/function/useWhenMounted/index.md +25 -0
  322. package/src/function/useWhenMounted/index.spec.ts +120 -0
  323. package/src/function/useWhenMounted/index.ts +16 -0
  324. package/src/index.ts +25 -0
  325. package/src/sensors/useScroll/demo.tsx +103 -0
  326. package/src/sensors/useScroll/index.md +117 -0
  327. package/src/sensors/useScroll/index.spec.ts +678 -0
  328. package/src/sensors/useScroll/index.ts +201 -0
  329. package/src/sensors/useWindowScroll/demo.tsx +78 -0
  330. package/src/sensors/useWindowScroll/index.md +98 -0
  331. package/src/sensors/useWindowScroll/index.spec.ts +69 -0
  332. package/src/sensors/useWindowScroll/index.ts +11 -0
  333. package/src/shared/configurable.ts +35 -0
  334. package/src/shared/index.ts +4 -0
  335. package/src/shared/normalizeTargets/index.spec.ts +76 -0
  336. package/src/shared/normalizeTargets/index.ts +27 -0
  337. package/src/shared/utils.ts +67 -0
  338. package/src/types.ts +56 -0
  339. package/tsconfig.json +9 -0
  340. package/tsup.config.ts +10 -0
  341. package/vitest.config.ts +22 -0
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var useMediaQuery_exports = {};
21
+ __export(useMediaQuery_exports, {
22
+ evaluateSSRQuery: () => evaluateSSRQuery,
23
+ useMediaQuery: () => useMediaQuery
24
+ });
25
+ module.exports = __toCommonJS(useMediaQuery_exports);
26
+ var import_state = require("@legendapp/state");
27
+ var import_react = require("@legendapp/state/react");
28
+ var import_get = require("../../function/get");
29
+ var import_useSupported = require("../../function/useSupported");
30
+ var import_useWhenMounted = require("../../function/useWhenMounted");
31
+ var import_useEventListener = require("../useEventListener");
32
+ function pxValue(value) {
33
+ const num = parseFloat(value);
34
+ const unit = value.trim().replace(/^-?\d+(?:\.\d+)?/, "").trim();
35
+ if (unit === "px" || unit === "") return num;
36
+ if (unit === "em" || unit === "rem") return num * 16;
37
+ return num;
38
+ }
39
+ function evaluateSSRQuery(query, ssrWidth) {
40
+ const queryStrings = query.split(",");
41
+ return queryStrings.some((queryString) => {
42
+ const not = queryString.includes("not all");
43
+ const minWidth = queryString.match(
44
+ /\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/
45
+ );
46
+ const maxWidth = queryString.match(
47
+ /\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/
48
+ );
49
+ let res = Boolean(minWidth || maxWidth);
50
+ if (minWidth && res) res = ssrWidth >= pxValue(minWidth[1]);
51
+ if (maxWidth && res) res = ssrWidth <= pxValue(maxWidth[1]);
52
+ return not ? !res : res;
53
+ });
54
+ }
55
+ // @__NO_SIDE_EFFECTS__
56
+ function useMediaQuery(query, options = {}) {
57
+ const { ssrWidth } = options;
58
+ const isSupported = (0, import_useSupported.useSupported)(
59
+ () => "matchMedia" in window && typeof window.matchMedia === "function"
60
+ );
61
+ const matches$ = (0, import_react.useObservable)(
62
+ () => typeof ssrWidth === "number" ? evaluateSSRQuery((0, import_get.get)(query), ssrWidth) : false
63
+ );
64
+ const mql$ = (0, import_useWhenMounted.useWhenMounted)(
65
+ () => isSupported.get() ? import_state.ObservableHint.opaque(window.matchMedia((0, import_get.get)(query))) : null
66
+ );
67
+ (0, import_react.useObserve)(() => {
68
+ const mql = mql$.get();
69
+ if (!mql) {
70
+ return;
71
+ }
72
+ matches$.set(mql.matches.valueOf());
73
+ });
74
+ (0, import_useEventListener.useEventListener)(
75
+ mql$,
76
+ "change",
77
+ (e) => {
78
+ matches$.set(e.matches);
79
+ },
80
+ { passive: true }
81
+ );
82
+ return matches$;
83
+ }
84
+ // Annotate the CommonJS export names for ESM import in node:
85
+ 0 && (module.exports = {
86
+ evaluateSSRQuery,
87
+ useMediaQuery
88
+ });
89
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/browser/useMediaQuery/index.ts"],"sourcesContent":["\"use client\";\nimport { ObservableHint, type Observable } from \"@legendapp/state\";\nimport { useObservable, useObserve } from \"@legendapp/state/react\";\nimport { get } from \"../../function/get\";\nimport { useSupported } from \"../../function/useSupported\";\nimport type { MaybeObservable } from \"../../types\";\nimport { useWhenMounted } from \"../../function/useWhenMounted\";\nimport { useEventListener } from \"../useEventListener\";\n\n// ---------------------------------------------------------------------------\n// Local helpers\n// ---------------------------------------------------------------------------\n\nfunction pxValue(value: string): number {\n const num = parseFloat(value);\n const unit = value\n .trim()\n .replace(/^-?\\d+(?:\\.\\d+)?/, \"\")\n .trim();\n if (unit === \"px\" || unit === \"\") return num;\n if (unit === \"em\" || unit === \"rem\") return num * 16;\n return num;\n}\n\nexport function evaluateSSRQuery(query: string, ssrWidth: number): boolean {\n const queryStrings = query.split(\",\");\n return queryStrings.some((queryString) => {\n const not = queryString.includes(\"not all\");\n const minWidth = queryString.match(\n /\\(\\s*min-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/,\n );\n const maxWidth = queryString.match(\n /\\(\\s*max-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/,\n );\n let res = Boolean(minWidth || maxWidth);\n if (minWidth && res) res = ssrWidth >= pxValue(minWidth[1]);\n if (maxWidth && res) res = ssrWidth <= pxValue(maxWidth[1]);\n return not ? !res : res;\n });\n}\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface UseMediaQueryOptions {\n ssrWidth?: number;\n}\n\nexport type UseMediaQueryReturn = Observable<boolean>;\n\n// ---------------------------------------------------------------------------\n// Hook\n// ---------------------------------------------------------------------------\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function useMediaQuery(\n query: MaybeObservable<string>,\n options: UseMediaQueryOptions = {},\n): UseMediaQueryReturn {\n const { ssrWidth } = options;\n\n const isSupported = useSupported(\n () => \"matchMedia\" in window && typeof window.matchMedia === \"function\",\n );\n\n const matches$ = useObservable(() =>\n typeof ssrWidth === \"number\"\n ? evaluateSSRQuery(get(query), ssrWidth)\n : false,\n );\n\n const mql$ = useWhenMounted(() =>\n isSupported.get()\n ? ObservableHint.opaque(window.matchMedia(get(query)))\n : null,\n );\n useObserve(() => {\n const mql = mql$.get();\n if (!mql) {\n return;\n }\n matches$.set(mql.matches.valueOf());\n });\n\n useEventListener(\n mql$,\n \"change\",\n (e: Event) => {\n matches$.set((e as MediaQueryListEvent).matches);\n },\n { passive: true },\n );\n\n return matches$;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAgD;AAChD,mBAA0C;AAC1C,iBAAoB;AACpB,0BAA6B;AAE7B,4BAA+B;AAC/B,8BAAiC;AAMjC,SAAS,QAAQ,OAAuB;AACtC,QAAM,MAAM,WAAW,KAAK;AAC5B,QAAM,OAAO,MACV,KAAK,EACL,QAAQ,oBAAoB,EAAE,EAC9B,KAAK;AACR,MAAI,SAAS,QAAQ,SAAS,GAAI,QAAO;AACzC,MAAI,SAAS,QAAQ,SAAS,MAAO,QAAO,MAAM;AAClD,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAe,UAA2B;AACzE,QAAM,eAAe,MAAM,MAAM,GAAG;AACpC,SAAO,aAAa,KAAK,CAAC,gBAAgB;AACxC,UAAM,MAAM,YAAY,SAAS,SAAS;AAC1C,UAAM,WAAW,YAAY;AAAA,MAC3B;AAAA,IACF;AACA,UAAM,WAAW,YAAY;AAAA,MAC3B;AAAA,IACF;AACA,QAAI,MAAM,QAAQ,YAAY,QAAQ;AACtC,QAAI,YAAY,IAAK,OAAM,YAAY,QAAQ,SAAS,CAAC,CAAC;AAC1D,QAAI,YAAY,IAAK,OAAM,YAAY,QAAQ,SAAS,CAAC,CAAC;AAC1D,WAAO,MAAM,CAAC,MAAM;AAAA,EACtB,CAAC;AACH;AAAA;AAiBO,SAAS,cACd,OACA,UAAgC,CAAC,GACZ;AACrB,QAAM,EAAE,SAAS,IAAI;AAErB,QAAM,kBAAc;AAAA,IAClB,MAAM,gBAAgB,UAAU,OAAO,OAAO,eAAe;AAAA,EAC/D;AAEA,QAAM,eAAW;AAAA,IAAc,MAC7B,OAAO,aAAa,WAChB,qBAAiB,gBAAI,KAAK,GAAG,QAAQ,IACrC;AAAA,EACN;AAEA,QAAM,WAAO;AAAA,IAAe,MAC1B,YAAY,IAAI,IACZ,4BAAe,OAAO,OAAO,eAAW,gBAAI,KAAK,CAAC,CAAC,IACnD;AAAA,EACN;AACA,+BAAW,MAAM;AACf,UAAM,MAAM,KAAK,IAAI;AACrB,QAAI,CAAC,KAAK;AACR;AAAA,IACF;AACA,aAAS,IAAI,IAAI,QAAQ,QAAQ,CAAC;AAAA,EACpC,CAAC;AAED;AAAA,IACE;AAAA,IACA;AAAA,IACA,CAAC,MAAa;AACZ,eAAS,IAAK,EAA0B,OAAO;AAAA,IACjD;AAAA,IACA,EAAE,SAAS,KAAK;AAAA,EAClB;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,64 @@
1
+ "use client";
2
+ import { ObservableHint } from "@legendapp/state";
3
+ import { useObservable, useObserve } from "@legendapp/state/react";
4
+ import { get } from "../../function/get";
5
+ import { useSupported } from "../../function/useSupported";
6
+ import { useWhenMounted } from "../../function/useWhenMounted";
7
+ import { useEventListener } from "../useEventListener";
8
+ function pxValue(value) {
9
+ const num = parseFloat(value);
10
+ const unit = value.trim().replace(/^-?\d+(?:\.\d+)?/, "").trim();
11
+ if (unit === "px" || unit === "") return num;
12
+ if (unit === "em" || unit === "rem") return num * 16;
13
+ return num;
14
+ }
15
+ function evaluateSSRQuery(query, ssrWidth) {
16
+ const queryStrings = query.split(",");
17
+ return queryStrings.some((queryString) => {
18
+ const not = queryString.includes("not all");
19
+ const minWidth = queryString.match(
20
+ /\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/
21
+ );
22
+ const maxWidth = queryString.match(
23
+ /\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/
24
+ );
25
+ let res = Boolean(minWidth || maxWidth);
26
+ if (minWidth && res) res = ssrWidth >= pxValue(minWidth[1]);
27
+ if (maxWidth && res) res = ssrWidth <= pxValue(maxWidth[1]);
28
+ return not ? !res : res;
29
+ });
30
+ }
31
+ // @__NO_SIDE_EFFECTS__
32
+ function useMediaQuery(query, options = {}) {
33
+ const { ssrWidth } = options;
34
+ const isSupported = useSupported(
35
+ () => "matchMedia" in window && typeof window.matchMedia === "function"
36
+ );
37
+ const matches$ = useObservable(
38
+ () => typeof ssrWidth === "number" ? evaluateSSRQuery(get(query), ssrWidth) : false
39
+ );
40
+ const mql$ = useWhenMounted(
41
+ () => isSupported.get() ? ObservableHint.opaque(window.matchMedia(get(query))) : null
42
+ );
43
+ useObserve(() => {
44
+ const mql = mql$.get();
45
+ if (!mql) {
46
+ return;
47
+ }
48
+ matches$.set(mql.matches.valueOf());
49
+ });
50
+ useEventListener(
51
+ mql$,
52
+ "change",
53
+ (e) => {
54
+ matches$.set(e.matches);
55
+ },
56
+ { passive: true }
57
+ );
58
+ return matches$;
59
+ }
60
+ export {
61
+ evaluateSSRQuery,
62
+ useMediaQuery
63
+ };
64
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/browser/useMediaQuery/index.ts"],"sourcesContent":["\"use client\";\nimport { ObservableHint, type Observable } from \"@legendapp/state\";\nimport { useObservable, useObserve } from \"@legendapp/state/react\";\nimport { get } from \"../../function/get\";\nimport { useSupported } from \"../../function/useSupported\";\nimport type { MaybeObservable } from \"../../types\";\nimport { useWhenMounted } from \"../../function/useWhenMounted\";\nimport { useEventListener } from \"../useEventListener\";\n\n// ---------------------------------------------------------------------------\n// Local helpers\n// ---------------------------------------------------------------------------\n\nfunction pxValue(value: string): number {\n const num = parseFloat(value);\n const unit = value\n .trim()\n .replace(/^-?\\d+(?:\\.\\d+)?/, \"\")\n .trim();\n if (unit === \"px\" || unit === \"\") return num;\n if (unit === \"em\" || unit === \"rem\") return num * 16;\n return num;\n}\n\nexport function evaluateSSRQuery(query: string, ssrWidth: number): boolean {\n const queryStrings = query.split(\",\");\n return queryStrings.some((queryString) => {\n const not = queryString.includes(\"not all\");\n const minWidth = queryString.match(\n /\\(\\s*min-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/,\n );\n const maxWidth = queryString.match(\n /\\(\\s*max-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/,\n );\n let res = Boolean(minWidth || maxWidth);\n if (minWidth && res) res = ssrWidth >= pxValue(minWidth[1]);\n if (maxWidth && res) res = ssrWidth <= pxValue(maxWidth[1]);\n return not ? !res : res;\n });\n}\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface UseMediaQueryOptions {\n ssrWidth?: number;\n}\n\nexport type UseMediaQueryReturn = Observable<boolean>;\n\n// ---------------------------------------------------------------------------\n// Hook\n// ---------------------------------------------------------------------------\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function useMediaQuery(\n query: MaybeObservable<string>,\n options: UseMediaQueryOptions = {},\n): UseMediaQueryReturn {\n const { ssrWidth } = options;\n\n const isSupported = useSupported(\n () => \"matchMedia\" in window && typeof window.matchMedia === \"function\",\n );\n\n const matches$ = useObservable(() =>\n typeof ssrWidth === \"number\"\n ? evaluateSSRQuery(get(query), ssrWidth)\n : false,\n );\n\n const mql$ = useWhenMounted(() =>\n isSupported.get()\n ? ObservableHint.opaque(window.matchMedia(get(query)))\n : null,\n );\n useObserve(() => {\n const mql = mql$.get();\n if (!mql) {\n return;\n }\n matches$.set(mql.matches.valueOf());\n });\n\n useEventListener(\n mql$,\n \"change\",\n (e: Event) => {\n matches$.set((e as MediaQueryListEvent).matches);\n },\n { passive: true },\n );\n\n return matches$;\n}\n"],"mappings":";AACA,SAAS,sBAAuC;AAChD,SAAS,eAAe,kBAAkB;AAC1C,SAAS,WAAW;AACpB,SAAS,oBAAoB;AAE7B,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AAMjC,SAAS,QAAQ,OAAuB;AACtC,QAAM,MAAM,WAAW,KAAK;AAC5B,QAAM,OAAO,MACV,KAAK,EACL,QAAQ,oBAAoB,EAAE,EAC9B,KAAK;AACR,MAAI,SAAS,QAAQ,SAAS,GAAI,QAAO;AACzC,MAAI,SAAS,QAAQ,SAAS,MAAO,QAAO,MAAM;AAClD,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAe,UAA2B;AACzE,QAAM,eAAe,MAAM,MAAM,GAAG;AACpC,SAAO,aAAa,KAAK,CAAC,gBAAgB;AACxC,UAAM,MAAM,YAAY,SAAS,SAAS;AAC1C,UAAM,WAAW,YAAY;AAAA,MAC3B;AAAA,IACF;AACA,UAAM,WAAW,YAAY;AAAA,MAC3B;AAAA,IACF;AACA,QAAI,MAAM,QAAQ,YAAY,QAAQ;AACtC,QAAI,YAAY,IAAK,OAAM,YAAY,QAAQ,SAAS,CAAC,CAAC;AAC1D,QAAI,YAAY,IAAK,OAAM,YAAY,QAAQ,SAAS,CAAC,CAAC;AAC1D,WAAO,MAAM,CAAC,MAAM;AAAA,EACtB,CAAC;AACH;AAAA;AAiBO,SAAS,cACd,OACA,UAAgC,CAAC,GACZ;AACrB,QAAM,EAAE,SAAS,IAAI;AAErB,QAAM,cAAc;AAAA,IAClB,MAAM,gBAAgB,UAAU,OAAO,OAAO,eAAe;AAAA,EAC/D;AAEA,QAAM,WAAW;AAAA,IAAc,MAC7B,OAAO,aAAa,WAChB,iBAAiB,IAAI,KAAK,GAAG,QAAQ,IACrC;AAAA,EACN;AAEA,QAAM,OAAO;AAAA,IAAe,MAC1B,YAAY,IAAI,IACZ,eAAe,OAAO,OAAO,WAAW,IAAI,KAAK,CAAC,CAAC,IACnD;AAAA,EACN;AACA,aAAW,MAAM;AACf,UAAM,MAAM,KAAK,IAAI;AACrB,QAAI,CAAC,KAAK;AACR;AAAA,IACF;AACA,aAAS,IAAI,IAAI,QAAQ,QAAQ,CAAC;AAAA,EACpC,CAAC;AAED;AAAA,IACE;AAAA,IACA;AAAA,IACA,CAAC,MAAa;AACZ,eAAS,IAAK,EAA0B,OAAO;AAAA,IACjD;AAAA,IACA,EAAE,SAAS,KAAK;AAAA,EAClB;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,33 @@
1
+ import { ReactNode, FC, ReactElement } from 'react';
2
+ import { Selector } from '@legendapp/state';
3
+
4
+ type AutoPropsIf<T> = {
5
+ if: Selector<T>;
6
+ ifReady?: never;
7
+ withState?: boolean;
8
+ children: () => ReactNode;
9
+ else?: ReactNode | (() => ReactNode);
10
+ wrap?: FC<{
11
+ children: ReactNode;
12
+ }>;
13
+ };
14
+ type AutoPropsIfReady<T> = {
15
+ if?: never;
16
+ ifReady: Selector<T>;
17
+ withState?: boolean;
18
+ children: () => ReactNode;
19
+ else?: ReactNode | (() => ReactNode);
20
+ wrap?: FC<{
21
+ children: ReactNode;
22
+ }>;
23
+ };
24
+ type AutoPropsReactive = {
25
+ if?: never;
26
+ ifReady?: never;
27
+ withState?: boolean;
28
+ children: () => ReactNode;
29
+ };
30
+ type AutoProps<T = unknown> = AutoPropsIf<T> | AutoPropsIfReady<T> | AutoPropsReactive;
31
+ declare function Auto<T>({ if: ifProp, ifReady, withState, children, ...rest }: AutoProps<T>): ReactElement | null;
32
+
33
+ export { Auto, type AutoProps };
@@ -0,0 +1,33 @@
1
+ import { ReactNode, FC, ReactElement } from 'react';
2
+ import { Selector } from '@legendapp/state';
3
+
4
+ type AutoPropsIf<T> = {
5
+ if: Selector<T>;
6
+ ifReady?: never;
7
+ withState?: boolean;
8
+ children: () => ReactNode;
9
+ else?: ReactNode | (() => ReactNode);
10
+ wrap?: FC<{
11
+ children: ReactNode;
12
+ }>;
13
+ };
14
+ type AutoPropsIfReady<T> = {
15
+ if?: never;
16
+ ifReady: Selector<T>;
17
+ withState?: boolean;
18
+ children: () => ReactNode;
19
+ else?: ReactNode | (() => ReactNode);
20
+ wrap?: FC<{
21
+ children: ReactNode;
22
+ }>;
23
+ };
24
+ type AutoPropsReactive = {
25
+ if?: never;
26
+ ifReady?: never;
27
+ withState?: boolean;
28
+ children: () => ReactNode;
29
+ };
30
+ type AutoProps<T = unknown> = AutoPropsIf<T> | AutoPropsIfReady<T> | AutoPropsReactive;
31
+ declare function Auto<T>({ if: ifProp, ifReady, withState, children, ...rest }: AutoProps<T>): ReactElement | null;
32
+
33
+ export { Auto, type AutoProps };
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var Auto_exports = {};
31
+ __export(Auto_exports, {
32
+ Auto: () => Auto
33
+ });
34
+ module.exports = __toCommonJS(Auto_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_react2 = require("@legendapp/state/react");
37
+ function Auto({
38
+ if: ifProp,
39
+ ifReady,
40
+ withState,
41
+ children,
42
+ ...rest
43
+ }) {
44
+ if (ifProp !== void 0) {
45
+ const { else: elseProp, wrap } = rest;
46
+ return (0, import_react.createElement)(import_react2.Show, {
47
+ if: ifProp,
48
+ else: elseProp,
49
+ wrap,
50
+ children
51
+ });
52
+ }
53
+ if (ifReady !== void 0) {
54
+ const { else: elseProp, wrap } = rest;
55
+ return (0, import_react.createElement)(import_react2.Show, { ifReady, else: elseProp, wrap, children });
56
+ }
57
+ return (0, import_react.createElement)(
58
+ withState ? import_react2.Computed : import_react.default.memo(import_react2.Computed, () => true),
59
+ { children }
60
+ );
61
+ }
62
+ // Annotate the CommonJS export names for ESM import in node:
63
+ 0 && (module.exports = {
64
+ Auto
65
+ });
66
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/Auto/index.tsx"],"sourcesContent":["\"use client\";\nimport React, {\n createElement,\n type FC,\n type ReactNode,\n type ReactElement,\n} from \"react\";\nimport { Computed, Show } from \"@legendapp/state/react\";\nimport type { Selector } from \"@legendapp/state\";\n\ntype AutoPropsIf<T> = {\n if: Selector<T>;\n ifReady?: never;\n withState?: boolean; // Show is already reactive to parent state; withState is accepted but has no effect\n children: () => ReactNode;\n else?: ReactNode | (() => ReactNode);\n wrap?: FC<{ children: ReactNode }>;\n};\n\ntype AutoPropsIfReady<T> = {\n if?: never;\n ifReady: Selector<T>;\n withState?: boolean; // Same as above\n children: () => ReactNode;\n else?: ReactNode | (() => ReactNode);\n wrap?: FC<{ children: ReactNode }>;\n};\n\ntype AutoPropsReactive = {\n if?: never;\n ifReady?: never;\n withState?: boolean;\n children: () => ReactNode;\n};\n\nexport type AutoProps<T = unknown> =\n | AutoPropsIf<T>\n | AutoPropsIfReady<T>\n | AutoPropsReactive;\n\nexport function Auto<T>({\n if: ifProp,\n ifReady,\n withState,\n children,\n ...rest\n}: AutoProps<T>): ReactElement | null {\n if (ifProp !== undefined) {\n const { else: elseProp, wrap } = rest as AutoPropsIf<T>;\n return createElement(Show<T>, {\n if: ifProp,\n else: elseProp,\n wrap,\n children,\n });\n }\n if (ifReady !== undefined) {\n const { else: elseProp, wrap } = rest as AutoPropsIfReady<T>;\n return createElement(Show<T>, { ifReady, else: elseProp, wrap, children });\n }\n return createElement(\n withState ? Computed : React.memo(Computed, () => true),\n { children },\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAKO;AACP,IAAAA,gBAA+B;AAiCxB,SAAS,KAAQ;AAAA,EACtB,IAAI;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsC;AACpC,MAAI,WAAW,QAAW;AACxB,UAAM,EAAE,MAAM,UAAU,KAAK,IAAI;AACjC,eAAO,4BAAc,oBAAS;AAAA,MAC5B,IAAI;AAAA,MACJ,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,YAAY,QAAW;AACzB,UAAM,EAAE,MAAM,UAAU,KAAK,IAAI;AACjC,eAAO,4BAAc,oBAAS,EAAE,SAAS,MAAM,UAAU,MAAM,SAAS,CAAC;AAAA,EAC3E;AACA,aAAO;AAAA,IACL,YAAY,yBAAW,aAAAC,QAAM,KAAK,wBAAU,MAAM,IAAI;AAAA,IACtD,EAAE,SAAS;AAAA,EACb;AACF;","names":["import_react","React"]}
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ import React, {
3
+ createElement
4
+ } from "react";
5
+ import { Computed, Show } from "@legendapp/state/react";
6
+ function Auto({
7
+ if: ifProp,
8
+ ifReady,
9
+ withState,
10
+ children,
11
+ ...rest
12
+ }) {
13
+ if (ifProp !== void 0) {
14
+ const { else: elseProp, wrap } = rest;
15
+ return createElement(Show, {
16
+ if: ifProp,
17
+ else: elseProp,
18
+ wrap,
19
+ children
20
+ });
21
+ }
22
+ if (ifReady !== void 0) {
23
+ const { else: elseProp, wrap } = rest;
24
+ return createElement(Show, { ifReady, else: elseProp, wrap, children });
25
+ }
26
+ return createElement(
27
+ withState ? Computed : React.memo(Computed, () => true),
28
+ { children }
29
+ );
30
+ }
31
+ export {
32
+ Auto
33
+ };
34
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/Auto/index.tsx"],"sourcesContent":["\"use client\";\nimport React, {\n createElement,\n type FC,\n type ReactNode,\n type ReactElement,\n} from \"react\";\nimport { Computed, Show } from \"@legendapp/state/react\";\nimport type { Selector } from \"@legendapp/state\";\n\ntype AutoPropsIf<T> = {\n if: Selector<T>;\n ifReady?: never;\n withState?: boolean; // Show is already reactive to parent state; withState is accepted but has no effect\n children: () => ReactNode;\n else?: ReactNode | (() => ReactNode);\n wrap?: FC<{ children: ReactNode }>;\n};\n\ntype AutoPropsIfReady<T> = {\n if?: never;\n ifReady: Selector<T>;\n withState?: boolean; // Same as above\n children: () => ReactNode;\n else?: ReactNode | (() => ReactNode);\n wrap?: FC<{ children: ReactNode }>;\n};\n\ntype AutoPropsReactive = {\n if?: never;\n ifReady?: never;\n withState?: boolean;\n children: () => ReactNode;\n};\n\nexport type AutoProps<T = unknown> =\n | AutoPropsIf<T>\n | AutoPropsIfReady<T>\n | AutoPropsReactive;\n\nexport function Auto<T>({\n if: ifProp,\n ifReady,\n withState,\n children,\n ...rest\n}: AutoProps<T>): ReactElement | null {\n if (ifProp !== undefined) {\n const { else: elseProp, wrap } = rest as AutoPropsIf<T>;\n return createElement(Show<T>, {\n if: ifProp,\n else: elseProp,\n wrap,\n children,\n });\n }\n if (ifReady !== undefined) {\n const { else: elseProp, wrap } = rest as AutoPropsIfReady<T>;\n return createElement(Show<T>, { ifReady, else: elseProp, wrap, children });\n }\n return createElement(\n withState ? Computed : React.memo(Computed, () => true),\n { children },\n );\n}\n"],"mappings":";AACA,OAAO;AAAA,EACL;AAAA,OAIK;AACP,SAAS,UAAU,YAAY;AAiCxB,SAAS,KAAQ;AAAA,EACtB,IAAI;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsC;AACpC,MAAI,WAAW,QAAW;AACxB,UAAM,EAAE,MAAM,UAAU,KAAK,IAAI;AACjC,WAAO,cAAc,MAAS;AAAA,MAC5B,IAAI;AAAA,MACJ,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,YAAY,QAAW;AACzB,UAAM,EAAE,MAAM,UAAU,KAAK,IAAI;AACjC,WAAO,cAAc,MAAS,EAAE,SAAS,MAAM,UAAU,MAAM,SAAS,CAAC;AAAA,EAC3E;AACA,SAAO;AAAA,IACL,YAAY,WAAW,MAAM,KAAK,UAAU,MAAM,IAAI;AAAA,IACtD,EAAE,SAAS;AAAA,EACb;AACF;","names":[]}
@@ -0,0 +1,5 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function UseDocumentVisibilityDemo(): react_jsx_runtime.JSX.Element;
4
+
5
+ export { UseDocumentVisibilityDemo as default };
@@ -0,0 +1,5 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function UseDocumentVisibilityDemo(): react_jsx_runtime.JSX.Element;
4
+
5
+ export { UseDocumentVisibilityDemo as default };
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var demo_exports = {};
20
+ __export(demo_exports, {
21
+ default: () => UseDocumentVisibilityDemo
22
+ });
23
+ module.exports = __toCommonJS(demo_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_react = require("react");
26
+ var import__ = require(".");
27
+ var import_react2 = require("@legendapp/state/react");
28
+ const dot = {
29
+ display: "inline-block",
30
+ width: "8px",
31
+ height: "8px",
32
+ borderRadius: "50%",
33
+ marginRight: "6px",
34
+ verticalAlign: "middle"
35
+ };
36
+ function StateRow({
37
+ label,
38
+ value
39
+ }) {
40
+ const visible = value === "visible";
41
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
42
+ "div",
43
+ {
44
+ style: {
45
+ display: "flex",
46
+ alignItems: "center",
47
+ padding: "10px 14px",
48
+ borderRadius: "6px",
49
+ border: `1px solid ${visible ? "var(--sl-color-green, #22c55e)" : "var(--sl-color-orange, #f97316)"}`,
50
+ background: visible ? "var(--sl-color-green-low, #f0fdf4)" : "var(--sl-color-orange-low, #fff7ed)",
51
+ transition: "border-color 0.3s, background 0.3s",
52
+ gap: "10px"
53
+ },
54
+ children: [
55
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
56
+ "span",
57
+ {
58
+ style: {
59
+ ...dot,
60
+ background: visible ? "var(--sl-color-green, #22c55e)" : "var(--sl-color-orange, #f97316)"
61
+ }
62
+ }
63
+ ),
64
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: { color: "var(--sl-color-gray-2, #64748b)", minWidth: "80px" }, children: label }),
65
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
66
+ "strong",
67
+ {
68
+ style: {
69
+ color: visible ? "var(--sl-color-green, #22c55e)" : "var(--sl-color-orange, #f97316)"
70
+ },
71
+ children: [
72
+ '"',
73
+ value,
74
+ '"'
75
+ ]
76
+ }
77
+ )
78
+ ]
79
+ }
80
+ );
81
+ }
82
+ function UseDocumentVisibilityDemo() {
83
+ const visibility$ = (0, import__.useDocumentVisibility)();
84
+ const delayed$ = (0, import_react2.useObservable)("visible");
85
+ const timerRef = (0, import_react.useRef)(null);
86
+ (0, import_react2.useObserveEffect)(() => {
87
+ const state = visibility$.get();
88
+ if (timerRef.current !== null) clearTimeout(timerRef.current);
89
+ if (state === "hidden") {
90
+ delayed$.set("hidden");
91
+ } else {
92
+ timerRef.current = setTimeout(() => {
93
+ delayed$.set("visible");
94
+ }, 2e3);
95
+ }
96
+ });
97
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
98
+ "div",
99
+ {
100
+ style: {
101
+ display: "flex",
102
+ flexDirection: "column",
103
+ gap: "8px",
104
+ fontFamily: "monospace",
105
+ fontSize: "13px"
106
+ },
107
+ children: [
108
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react2.Computed, { children: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StateRow, { label: "Instant", value: visibility$.get() }) }),
109
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react2.Computed, { children: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StateRow, { label: "2s delay", value: delayed$.get() }) }),
110
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
111
+ "p",
112
+ {
113
+ style: {
114
+ margin: 0,
115
+ fontSize: "11px",
116
+ color: "var(--sl-color-gray-3, #94a3b8)"
117
+ },
118
+ children: [
119
+ "Switch to another tab and come back \u2014 the 2s delay row stays",
120
+ " ",
121
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { children: '"hidden"' }),
122
+ " long enough to confirm the transition."
123
+ ]
124
+ }
125
+ )
126
+ ]
127
+ }
128
+ );
129
+ }
130
+ //# sourceMappingURL=demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/elements/useDocumentVisibility/demo.tsx"],"sourcesContent":["import { useRef } from \"react\";\nimport { useDocumentVisibility } from \".\";\nimport {\n Computed,\n useObservable,\n useObserveEffect,\n} from \"@legendapp/state/react\";\n\nconst dot: React.CSSProperties = {\n display: \"inline-block\",\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n marginRight: \"6px\",\n verticalAlign: \"middle\",\n};\n\nfunction StateRow({\n label,\n value,\n}: {\n label: string;\n value: DocumentVisibilityState;\n}) {\n const visible = value === \"visible\";\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"10px 14px\",\n borderRadius: \"6px\",\n border: `1px solid ${visible ? \"var(--sl-color-green, #22c55e)\" : \"var(--sl-color-orange, #f97316)\"}`,\n background: visible\n ? \"var(--sl-color-green-low, #f0fdf4)\"\n : \"var(--sl-color-orange-low, #fff7ed)\",\n transition: \"border-color 0.3s, background 0.3s\",\n gap: \"10px\",\n }}\n >\n <span\n style={{\n ...dot,\n background: visible\n ? \"var(--sl-color-green, #22c55e)\"\n : \"var(--sl-color-orange, #f97316)\",\n }}\n />\n <span style={{ color: \"var(--sl-color-gray-2, #64748b)\", minWidth: \"80px\" }}>\n {label}\n </span>\n <strong\n style={{\n color: visible\n ? \"var(--sl-color-green, #22c55e)\"\n : \"var(--sl-color-orange, #f97316)\",\n }}\n >\n &quot;{value}&quot;\n </strong>\n </div>\n );\n}\n\nexport default function UseDocumentVisibilityDemo() {\n const visibility$ = useDocumentVisibility();\n // Delayed display: stays on 'hidden' for 2s after returning to visible\n const delayed$ = useObservable<DocumentVisibilityState>(\"visible\");\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useObserveEffect(() => {\n const state = visibility$.get();\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n if (state === \"hidden\") {\n delayed$.set(\"hidden\");\n } else {\n timerRef.current = setTimeout(() => {\n delayed$.set(\"visible\");\n }, 2000);\n }\n });\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n fontFamily: \"monospace\",\n fontSize: \"13px\",\n }}\n >\n <Computed>\n {() => <StateRow label=\"Instant\" value={visibility$.get()} />}\n </Computed>\n <Computed>\n {() => <StateRow label=\"2s delay\" value={delayed$.get()} />}\n </Computed>\n <p\n style={{\n margin: 0,\n fontSize: \"11px\",\n color: \"var(--sl-color-gray-3, #94a3b8)\",\n }}\n >\n Switch to another tab and come back — the 2s delay row stays{\" \"}\n <strong>&quot;hidden&quot;</strong> long enough to confirm the transition.\n </p>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAwCM;AAxCN,mBAAuB;AACvB,eAAsC;AACtC,IAAAA,gBAIO;AAEP,MAAM,MAA2B;AAAA,EAC/B,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,aAAa;AAAA,EACb,eAAe;AACjB;AAEA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AACF,GAGG;AACD,QAAM,UAAU,UAAU;AAC1B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,cAAc;AAAA,QACd,QAAQ,aAAa,UAAU,mCAAmC,iCAAiC;AAAA,QACnG,YAAY,UACR,uCACA;AAAA,QACJ,YAAY;AAAA,QACZ,KAAK;AAAA,MACP;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,GAAG;AAAA,cACH,YAAY,UACR,mCACA;AAAA,YACN;AAAA;AAAA,QACF;AAAA,QACA,4CAAC,UAAK,OAAO,EAAE,OAAO,mCAAmC,UAAU,OAAO,GACvE,iBACH;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,OAAO,UACH,mCACA;AAAA,YACN;AAAA,YACD;AAAA;AAAA,cACQ;AAAA,cAAM;AAAA;AAAA;AAAA,QACf;AAAA;AAAA;AAAA,EACF;AAEJ;AAEe,SAAR,4BAA6C;AAClD,QAAM,kBAAc,gCAAsB;AAE1C,QAAM,eAAW,6BAAuC,SAAS;AACjE,QAAM,eAAW,qBAA6C,IAAI;AAElE,sCAAiB,MAAM;AACrB,UAAM,QAAQ,YAAY,IAAI;AAC9B,QAAI,SAAS,YAAY,KAAM,cAAa,SAAS,OAAO;AAC5D,QAAI,UAAU,UAAU;AACtB,eAAS,IAAI,QAAQ;AAAA,IACvB,OAAO;AACL,eAAS,UAAU,WAAW,MAAM;AAClC,iBAAS,IAAI,SAAS;AAAA,MACxB,GAAG,GAAI;AAAA,IACT;AAAA,EACF,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,YAAY;AAAA,QACZ,UAAU;AAAA,MACZ;AAAA,MAEA;AAAA,oDAAC,0BACE,gBAAM,4CAAC,YAAS,OAAM,WAAU,OAAO,YAAY,IAAI,GAAG,GAC7D;AAAA,QACA,4CAAC,0BACE,gBAAM,4CAAC,YAAS,OAAM,YAAW,OAAO,SAAS,IAAI,GAAG,GAC3D;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,OAAO;AAAA,YACT;AAAA,YACD;AAAA;AAAA,cAC8D;AAAA,cAC7D,4CAAC,YAAO,sBAAkB;AAAA,cAAS;AAAA;AAAA;AAAA,QACrC;AAAA;AAAA;AAAA,EACF;AAEJ;","names":["import_react"]}
@@ -0,0 +1,114 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useRef } from "react";
3
+ import { useDocumentVisibility } from ".";
4
+ import {
5
+ Computed,
6
+ useObservable,
7
+ useObserveEffect
8
+ } from "@legendapp/state/react";
9
+ const dot = {
10
+ display: "inline-block",
11
+ width: "8px",
12
+ height: "8px",
13
+ borderRadius: "50%",
14
+ marginRight: "6px",
15
+ verticalAlign: "middle"
16
+ };
17
+ function StateRow({
18
+ label,
19
+ value
20
+ }) {
21
+ const visible = value === "visible";
22
+ return /* @__PURE__ */ jsxs(
23
+ "div",
24
+ {
25
+ style: {
26
+ display: "flex",
27
+ alignItems: "center",
28
+ padding: "10px 14px",
29
+ borderRadius: "6px",
30
+ border: `1px solid ${visible ? "var(--sl-color-green, #22c55e)" : "var(--sl-color-orange, #f97316)"}`,
31
+ background: visible ? "var(--sl-color-green-low, #f0fdf4)" : "var(--sl-color-orange-low, #fff7ed)",
32
+ transition: "border-color 0.3s, background 0.3s",
33
+ gap: "10px"
34
+ },
35
+ children: [
36
+ /* @__PURE__ */ jsx(
37
+ "span",
38
+ {
39
+ style: {
40
+ ...dot,
41
+ background: visible ? "var(--sl-color-green, #22c55e)" : "var(--sl-color-orange, #f97316)"
42
+ }
43
+ }
44
+ ),
45
+ /* @__PURE__ */ jsx("span", { style: { color: "var(--sl-color-gray-2, #64748b)", minWidth: "80px" }, children: label }),
46
+ /* @__PURE__ */ jsxs(
47
+ "strong",
48
+ {
49
+ style: {
50
+ color: visible ? "var(--sl-color-green, #22c55e)" : "var(--sl-color-orange, #f97316)"
51
+ },
52
+ children: [
53
+ '"',
54
+ value,
55
+ '"'
56
+ ]
57
+ }
58
+ )
59
+ ]
60
+ }
61
+ );
62
+ }
63
+ function UseDocumentVisibilityDemo() {
64
+ const visibility$ = useDocumentVisibility();
65
+ const delayed$ = useObservable("visible");
66
+ const timerRef = useRef(null);
67
+ useObserveEffect(() => {
68
+ const state = visibility$.get();
69
+ if (timerRef.current !== null) clearTimeout(timerRef.current);
70
+ if (state === "hidden") {
71
+ delayed$.set("hidden");
72
+ } else {
73
+ timerRef.current = setTimeout(() => {
74
+ delayed$.set("visible");
75
+ }, 2e3);
76
+ }
77
+ });
78
+ return /* @__PURE__ */ jsxs(
79
+ "div",
80
+ {
81
+ style: {
82
+ display: "flex",
83
+ flexDirection: "column",
84
+ gap: "8px",
85
+ fontFamily: "monospace",
86
+ fontSize: "13px"
87
+ },
88
+ children: [
89
+ /* @__PURE__ */ jsx(Computed, { children: () => /* @__PURE__ */ jsx(StateRow, { label: "Instant", value: visibility$.get() }) }),
90
+ /* @__PURE__ */ jsx(Computed, { children: () => /* @__PURE__ */ jsx(StateRow, { label: "2s delay", value: delayed$.get() }) }),
91
+ /* @__PURE__ */ jsxs(
92
+ "p",
93
+ {
94
+ style: {
95
+ margin: 0,
96
+ fontSize: "11px",
97
+ color: "var(--sl-color-gray-3, #94a3b8)"
98
+ },
99
+ children: [
100
+ "Switch to another tab and come back \u2014 the 2s delay row stays",
101
+ " ",
102
+ /* @__PURE__ */ jsx("strong", { children: '"hidden"' }),
103
+ " long enough to confirm the transition."
104
+ ]
105
+ }
106
+ )
107
+ ]
108
+ }
109
+ );
110
+ }
111
+ export {
112
+ UseDocumentVisibilityDemo as default
113
+ };
114
+ //# sourceMappingURL=demo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/elements/useDocumentVisibility/demo.tsx"],"sourcesContent":["import { useRef } from \"react\";\nimport { useDocumentVisibility } from \".\";\nimport {\n Computed,\n useObservable,\n useObserveEffect,\n} from \"@legendapp/state/react\";\n\nconst dot: React.CSSProperties = {\n display: \"inline-block\",\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n marginRight: \"6px\",\n verticalAlign: \"middle\",\n};\n\nfunction StateRow({\n label,\n value,\n}: {\n label: string;\n value: DocumentVisibilityState;\n}) {\n const visible = value === \"visible\";\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"10px 14px\",\n borderRadius: \"6px\",\n border: `1px solid ${visible ? \"var(--sl-color-green, #22c55e)\" : \"var(--sl-color-orange, #f97316)\"}`,\n background: visible\n ? \"var(--sl-color-green-low, #f0fdf4)\"\n : \"var(--sl-color-orange-low, #fff7ed)\",\n transition: \"border-color 0.3s, background 0.3s\",\n gap: \"10px\",\n }}\n >\n <span\n style={{\n ...dot,\n background: visible\n ? \"var(--sl-color-green, #22c55e)\"\n : \"var(--sl-color-orange, #f97316)\",\n }}\n />\n <span style={{ color: \"var(--sl-color-gray-2, #64748b)\", minWidth: \"80px\" }}>\n {label}\n </span>\n <strong\n style={{\n color: visible\n ? \"var(--sl-color-green, #22c55e)\"\n : \"var(--sl-color-orange, #f97316)\",\n }}\n >\n &quot;{value}&quot;\n </strong>\n </div>\n );\n}\n\nexport default function UseDocumentVisibilityDemo() {\n const visibility$ = useDocumentVisibility();\n // Delayed display: stays on 'hidden' for 2s after returning to visible\n const delayed$ = useObservable<DocumentVisibilityState>(\"visible\");\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useObserveEffect(() => {\n const state = visibility$.get();\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n if (state === \"hidden\") {\n delayed$.set(\"hidden\");\n } else {\n timerRef.current = setTimeout(() => {\n delayed$.set(\"visible\");\n }, 2000);\n }\n });\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n fontFamily: \"monospace\",\n fontSize: \"13px\",\n }}\n >\n <Computed>\n {() => <StateRow label=\"Instant\" value={visibility$.get()} />}\n </Computed>\n <Computed>\n {() => <StateRow label=\"2s delay\" value={delayed$.get()} />}\n </Computed>\n <p\n style={{\n margin: 0,\n fontSize: \"11px\",\n color: \"var(--sl-color-gray-3, #94a3b8)\",\n }}\n >\n Switch to another tab and come back — the 2s delay row stays{\" \"}\n <strong>&quot;hidden&quot;</strong> long enough to confirm the transition.\n </p>\n </div>\n );\n}\n"],"mappings":"AAwCM,cAWA,YAXA;AAxCN,SAAS,cAAc;AACvB,SAAS,6BAA6B;AACtC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,MAAM,MAA2B;AAAA,EAC/B,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,aAAa;AAAA,EACb,eAAe;AACjB;AAEA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AACF,GAGG;AACD,QAAM,UAAU,UAAU;AAC1B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,cAAc;AAAA,QACd,QAAQ,aAAa,UAAU,mCAAmC,iCAAiC;AAAA,QACnG,YAAY,UACR,uCACA;AAAA,QACJ,YAAY;AAAA,QACZ,KAAK;AAAA,MACP;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,GAAG;AAAA,cACH,YAAY,UACR,mCACA;AAAA,YACN;AAAA;AAAA,QACF;AAAA,QACA,oBAAC,UAAK,OAAO,EAAE,OAAO,mCAAmC,UAAU,OAAO,GACvE,iBACH;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,OAAO,UACH,mCACA;AAAA,YACN;AAAA,YACD;AAAA;AAAA,cACQ;AAAA,cAAM;AAAA;AAAA;AAAA,QACf;AAAA;AAAA;AAAA,EACF;AAEJ;AAEe,SAAR,4BAA6C;AAClD,QAAM,cAAc,sBAAsB;AAE1C,QAAM,WAAW,cAAuC,SAAS;AACjE,QAAM,WAAW,OAA6C,IAAI;AAElE,mBAAiB,MAAM;AACrB,UAAM,QAAQ,YAAY,IAAI;AAC9B,QAAI,SAAS,YAAY,KAAM,cAAa,SAAS,OAAO;AAC5D,QAAI,UAAU,UAAU;AACtB,eAAS,IAAI,QAAQ;AAAA,IACvB,OAAO;AACL,eAAS,UAAU,WAAW,MAAM;AAClC,iBAAS,IAAI,SAAS;AAAA,MACxB,GAAG,GAAI;AAAA,IACT;AAAA,EACF,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,YAAY;AAAA,QACZ,UAAU;AAAA,MACZ;AAAA,MAEA;AAAA,4BAAC,YACE,gBAAM,oBAAC,YAAS,OAAM,WAAU,OAAO,YAAY,IAAI,GAAG,GAC7D;AAAA,QACA,oBAAC,YACE,gBAAM,oBAAC,YAAS,OAAM,YAAW,OAAO,SAAS,IAAI,GAAG,GAC3D;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,OAAO;AAAA,YACT;AAAA,YACD;AAAA;AAAA,cAC8D;AAAA,cAC7D,oBAAC,YAAO,sBAAkB;AAAA,cAAS;AAAA;AAAA;AAAA,QACrC;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -0,0 +1,5 @@
1
+ import { Observable } from '@legendapp/state';
2
+
3
+ declare function useDocumentVisibility(): Observable<DocumentVisibilityState>;
4
+
5
+ export { useDocumentVisibility };
@@ -0,0 +1,5 @@
1
+ import { Observable } from '@legendapp/state';
2
+
3
+ declare function useDocumentVisibility(): Observable<DocumentVisibilityState>;
4
+
5
+ export { useDocumentVisibility };