@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,79 @@
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: () => UseWindowSizeDemo
22
+ });
23
+ module.exports = __toCommonJS(demo_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import__ = require(".");
26
+ var import_react = require("@legendapp/state/react");
27
+ const row = {
28
+ display: "flex",
29
+ alignItems: "center",
30
+ padding: "8px 14px",
31
+ borderRadius: "6px",
32
+ border: "1px solid var(--sl-color-gray-5, #e2e8f0)",
33
+ background: "var(--sl-color-gray-6, #f1f5f9)",
34
+ // borderRadius: "6px",
35
+ gap: "24px",
36
+ color: "white"
37
+ };
38
+ function UseWindowSizeDemo() {
39
+ const { width: width$, height: height$ } = (0, import__.useWindowSize)();
40
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
41
+ "div",
42
+ {
43
+ style: {
44
+ display: "flex",
45
+ flexDirection: "column",
46
+ gap: "8px",
47
+ fontFamily: "monospace",
48
+ fontSize: "14px",
49
+ background: "var(--sl-color-gray-6, #f1f5f9)"
50
+ },
51
+ children: [
52
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Computed, { children: () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: row, children: [
53
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
54
+ "width: ",
55
+ width$.get(),
56
+ "px"
57
+ ] }),
58
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
59
+ "height: ",
60
+ height$.get(),
61
+ "px"
62
+ ] })
63
+ ] }) }),
64
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
65
+ "p",
66
+ {
67
+ style: {
68
+ margin: 5,
69
+ fontSize: "11px",
70
+ color: "var(--sl-color-gray-3, #94a3b8)"
71
+ },
72
+ children: "Resize the browser window to see the values update."
73
+ }
74
+ )
75
+ ]
76
+ }
77
+ );
78
+ }
79
+ //# sourceMappingURL=demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/elements/useWindowSize/demo.tsx"],"sourcesContent":["import { useWindowSize } from \".\";\nimport { Computed } from \"@legendapp/state/react\";\n\nconst row: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n padding: \"8px 14px\",\n borderRadius: \"6px\",\n border: \"1px solid var(--sl-color-gray-5, #e2e8f0)\",\n\n background: \"var(--sl-color-gray-6, #f1f5f9)\",\n // borderRadius: \"6px\",\n gap: \"24px\",\n color: \"white\",\n};\n\nexport default function UseWindowSizeDemo() {\n const { width: width$, height: height$ } = useWindowSize();\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n fontFamily: \"monospace\",\n fontSize: \"14px\",\n background: \"var(--sl-color-gray-6, #f1f5f9)\",\n }}\n >\n <Computed>\n {() => (\n <div style={row}>\n <span>width: {width$.get()}px</span>\n <span>height: {height$.get()}px</span>\n </div>\n )}\n </Computed>\n\n <p\n style={{\n margin: 5,\n fontSize: \"11px\",\n color: \"var(--sl-color-gray-3, #94a3b8)\",\n }}\n >\n Resize the browser window to see the values update.\n </p>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA8BM;AA9BN,eAA8B;AAC9B,mBAAyB;AAEzB,MAAM,MAA2B;AAAA,EAC/B,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,cAAc;AAAA,EACd,QAAQ;AAAA,EAER,YAAY;AAAA;AAAA,EAEZ,KAAK;AAAA,EACL,OAAO;AACT;AAEe,SAAR,oBAAqC;AAC1C,QAAM,EAAE,OAAO,QAAQ,QAAQ,QAAQ,QAAI,wBAAc;AAEzD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,MACd;AAAA,MAEA;AAAA,oDAAC,yBACE,gBACC,6CAAC,SAAI,OAAO,KACV;AAAA,uDAAC,UAAK;AAAA;AAAA,YAAQ,OAAO,IAAI;AAAA,YAAE;AAAA,aAAE;AAAA,UAC7B,6CAAC,UAAK;AAAA;AAAA,YAAS,QAAQ,IAAI;AAAA,YAAE;AAAA,aAAE;AAAA,WACjC,GAEJ;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,OAAO;AAAA,YACT;AAAA,YACD;AAAA;AAAA,QAED;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -0,0 +1,59 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useWindowSize } from ".";
3
+ import { Computed } from "@legendapp/state/react";
4
+ const row = {
5
+ display: "flex",
6
+ alignItems: "center",
7
+ padding: "8px 14px",
8
+ borderRadius: "6px",
9
+ border: "1px solid var(--sl-color-gray-5, #e2e8f0)",
10
+ background: "var(--sl-color-gray-6, #f1f5f9)",
11
+ // borderRadius: "6px",
12
+ gap: "24px",
13
+ color: "white"
14
+ };
15
+ function UseWindowSizeDemo() {
16
+ const { width: width$, height: height$ } = useWindowSize();
17
+ return /* @__PURE__ */ jsxs(
18
+ "div",
19
+ {
20
+ style: {
21
+ display: "flex",
22
+ flexDirection: "column",
23
+ gap: "8px",
24
+ fontFamily: "monospace",
25
+ fontSize: "14px",
26
+ background: "var(--sl-color-gray-6, #f1f5f9)"
27
+ },
28
+ children: [
29
+ /* @__PURE__ */ jsx(Computed, { children: () => /* @__PURE__ */ jsxs("div", { style: row, children: [
30
+ /* @__PURE__ */ jsxs("span", { children: [
31
+ "width: ",
32
+ width$.get(),
33
+ "px"
34
+ ] }),
35
+ /* @__PURE__ */ jsxs("span", { children: [
36
+ "height: ",
37
+ height$.get(),
38
+ "px"
39
+ ] })
40
+ ] }) }),
41
+ /* @__PURE__ */ jsx(
42
+ "p",
43
+ {
44
+ style: {
45
+ margin: 5,
46
+ fontSize: "11px",
47
+ color: "var(--sl-color-gray-3, #94a3b8)"
48
+ },
49
+ children: "Resize the browser window to see the values update."
50
+ }
51
+ )
52
+ ]
53
+ }
54
+ );
55
+ }
56
+ export {
57
+ UseWindowSizeDemo as default
58
+ };
59
+ //# sourceMappingURL=demo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/elements/useWindowSize/demo.tsx"],"sourcesContent":["import { useWindowSize } from \".\";\nimport { Computed } from \"@legendapp/state/react\";\n\nconst row: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n padding: \"8px 14px\",\n borderRadius: \"6px\",\n border: \"1px solid var(--sl-color-gray-5, #e2e8f0)\",\n\n background: \"var(--sl-color-gray-6, #f1f5f9)\",\n // borderRadius: \"6px\",\n gap: \"24px\",\n color: \"white\",\n};\n\nexport default function UseWindowSizeDemo() {\n const { width: width$, height: height$ } = useWindowSize();\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n fontFamily: \"monospace\",\n fontSize: \"14px\",\n background: \"var(--sl-color-gray-6, #f1f5f9)\",\n }}\n >\n <Computed>\n {() => (\n <div style={row}>\n <span>width: {width$.get()}px</span>\n <span>height: {height$.get()}px</span>\n </div>\n )}\n </Computed>\n\n <p\n style={{\n margin: 5,\n fontSize: \"11px\",\n color: \"var(--sl-color-gray-3, #94a3b8)\",\n }}\n >\n Resize the browser window to see the values update.\n </p>\n </div>\n );\n}\n"],"mappings":"AA8BM,cAGM,YAHN;AA9BN,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB;AAEzB,MAAM,MAA2B;AAAA,EAC/B,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,cAAc;AAAA,EACd,QAAQ;AAAA,EAER,YAAY;AAAA;AAAA,EAEZ,KAAK;AAAA,EACL,OAAO;AACT;AAEe,SAAR,oBAAqC;AAC1C,QAAM,EAAE,OAAO,QAAQ,QAAQ,QAAQ,IAAI,cAAc;AAEzD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,MACd;AAAA,MAEA;AAAA,4BAAC,YACE,gBACC,qBAAC,SAAI,OAAO,KACV;AAAA,+BAAC,UAAK;AAAA;AAAA,YAAQ,OAAO,IAAI;AAAA,YAAE;AAAA,aAAE;AAAA,UAC7B,qBAAC,UAAK;AAAA;AAAA,YAAS,QAAQ,IAAI;AAAA,YAAE;AAAA,aAAE;AAAA,WACjC,GAEJ;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,OAAO;AAAA,YACT;AAAA,YACD;AAAA;AAAA,QAED;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -0,0 +1,17 @@
1
+ import { Observable } from '@legendapp/state';
2
+ import { DeepMaybeObservable } from '../../types.mjs';
3
+
4
+ interface UseWindowSizeOptions {
5
+ initialWidth?: number;
6
+ initialHeight?: number;
7
+ listenOrientation?: boolean;
8
+ includeScrollbar?: boolean;
9
+ type?: "inner" | "outer" | "visual";
10
+ }
11
+ type UseWindowSizeReturn = Observable<{
12
+ width: number;
13
+ height: number;
14
+ }>;
15
+ declare function useWindowSize(options?: DeepMaybeObservable<UseWindowSizeOptions>): UseWindowSizeReturn;
16
+
17
+ export { type UseWindowSizeOptions, type UseWindowSizeReturn, useWindowSize };
@@ -0,0 +1,17 @@
1
+ import { Observable } from '@legendapp/state';
2
+ import { DeepMaybeObservable } from '../../types.js';
3
+
4
+ interface UseWindowSizeOptions {
5
+ initialWidth?: number;
6
+ initialHeight?: number;
7
+ listenOrientation?: boolean;
8
+ includeScrollbar?: boolean;
9
+ type?: "inner" | "outer" | "visual";
10
+ }
11
+ type UseWindowSizeReturn = Observable<{
12
+ width: number;
13
+ height: number;
14
+ }>;
15
+ declare function useWindowSize(options?: DeepMaybeObservable<UseWindowSizeOptions>): UseWindowSizeReturn;
16
+
17
+ export { type UseWindowSizeOptions, type UseWindowSizeReturn, useWindowSize };
@@ -0,0 +1,96 @@
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 useWindowSize_exports = {};
21
+ __export(useWindowSize_exports, {
22
+ useWindowSize: () => useWindowSize
23
+ });
24
+ module.exports = __toCommonJS(useWindowSize_exports);
25
+ var import_react = require("@legendapp/state/react");
26
+ var import_useEventListener = require("../../browser/useEventListener");
27
+ var import_useMediaQuery = require("../../browser/useMediaQuery");
28
+ var import_useMayObservableOptions = require("../../function/useMayObservableOptions");
29
+ var import_useWhenMounted = require("../../function/useWhenMounted");
30
+ // @__NO_SIDE_EFFECTS__
31
+ function useWindowSize(options) {
32
+ const opts$ = (0, import_useMayObservableOptions.useMayObservableOptions)(options, {
33
+ initialWidth: "peek",
34
+ initialHeight: "peek"
35
+ });
36
+ const size$ = (0, import_react.useObservable)({
37
+ width: opts$.initialWidth.peek() ?? 0,
38
+ height: opts$.initialHeight.peek() ?? 0
39
+ });
40
+ const update = () => {
41
+ if (typeof window === "undefined") return;
42
+ const type = opts$.type.peek() ?? "inner";
43
+ const includeScrollbar = opts$.includeScrollbar.peek() !== false;
44
+ let width;
45
+ let height;
46
+ if (type === "outer") {
47
+ width = window.outerWidth;
48
+ height = window.outerHeight;
49
+ } else if (type === "visual") {
50
+ const vp = window.visualViewport;
51
+ if (vp) {
52
+ width = vp.width * vp.scale;
53
+ height = vp.height * vp.scale;
54
+ } else {
55
+ width = window.innerWidth;
56
+ height = window.innerHeight;
57
+ }
58
+ } else {
59
+ if (includeScrollbar) {
60
+ width = window.innerWidth;
61
+ height = window.innerHeight;
62
+ } else {
63
+ width = document.documentElement.clientWidth;
64
+ height = document.documentElement.clientHeight;
65
+ }
66
+ }
67
+ size$.assign({ width, height });
68
+ };
69
+ (0, import_react.useMount)(update);
70
+ (0, import_useEventListener.useEventListener)("resize", update, { passive: true });
71
+ const vp$ = (0, import_useWhenMounted.useWhenMounted)(
72
+ () => opts$.type.peek() === "visual" ? window.visualViewport : null
73
+ );
74
+ (0, import_useEventListener.useEventListener)(vp$, "resize", update);
75
+ (0, import_react.useObserveEffect)((e) => {
76
+ opts$.type.get();
77
+ opts$.includeScrollbar.get();
78
+ if (e.num > 0) update();
79
+ });
80
+ const matches$ = (0, import_useMediaQuery.useMediaQuery)("(orientation: portrait)");
81
+ (0, import_react.useObserveEffect)(
82
+ matches$,
83
+ () => {
84
+ if (opts$.listenOrientation.get() !== false) {
85
+ update();
86
+ }
87
+ },
88
+ { immediate: false }
89
+ );
90
+ return size$;
91
+ }
92
+ // Annotate the CommonJS export names for ESM import in node:
93
+ 0 && (module.exports = {
94
+ useWindowSize
95
+ });
96
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/elements/useWindowSize/index.ts"],"sourcesContent":["\"use client\";\nimport type { Observable } from \"@legendapp/state\";\nimport {\n useObservable,\n useMount,\n useObserveEffect,\n} from \"@legendapp/state/react\";\nimport { useEventListener } from \"../../browser/useEventListener\";\nimport { useMediaQuery } from \"../../browser/useMediaQuery\";\nimport { useMayObservableOptions } from \"../../function/useMayObservableOptions\";\nimport { useWhenMounted } from \"../../function/useWhenMounted\";\nimport type { DeepMaybeObservable } from \"../../types\";\n\nexport interface UseWindowSizeOptions {\n initialWidth?: number;\n initialHeight?: number;\n listenOrientation?: boolean;\n includeScrollbar?: boolean;\n type?: \"inner\" | \"outer\" | \"visual\";\n}\n\nexport type UseWindowSizeReturn = Observable<{\n width: number;\n height: number;\n}>;\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function useWindowSize(\n options?: DeepMaybeObservable<UseWindowSizeOptions>,\n): UseWindowSizeReturn {\n // Standard Pattern: normalize DeepMaybeObservable<Options> into a stable computed Observable.\n const opts$ = useMayObservableOptions<UseWindowSizeOptions>(options, {\n initialWidth: \"peek\",\n initialHeight: \"peek\",\n });\n\n const size$ = useObservable({\n width: opts$.initialWidth.peek() ?? 0,\n height: opts$.initialHeight.peek() ?? 0,\n });\n\n const update = () => {\n if (typeof window === \"undefined\") return;\n\n const type = opts$.type.peek() ?? \"inner\";\n const includeScrollbar = opts$.includeScrollbar.peek() !== false;\n\n let width: number;\n let height: number;\n\n if (type === \"outer\") {\n width = window.outerWidth;\n height = window.outerHeight;\n } else if (type === \"visual\") {\n const vp = window.visualViewport;\n if (vp) {\n width = vp.width * vp.scale;\n height = vp.height * vp.scale;\n } else {\n width = window.innerWidth;\n height = window.innerHeight;\n }\n } else {\n if (includeScrollbar) {\n width = window.innerWidth;\n height = window.innerHeight;\n } else {\n width = document.documentElement.clientWidth;\n height = document.documentElement.clientHeight;\n }\n }\n\n size$.assign({ width, height });\n };\n\n useMount(update);\n\n useEventListener(\"resize\", update, { passive: true });\n\n const vp$ = useWhenMounted(() =>\n opts$.type.peek() === \"visual\" ? window.visualViewport : null,\n );\n\n useEventListener(vp$, \"resize\", update);\n\n // type 또는 includeScrollbar가 변경되면 즉시 재측정\n // 단일 함수 형태: opts$.type.get()/opts$.includeScrollbar.get()으로 dep 등록,\n // update()는 .peek()만 사용하므로 추가 dep을 등록하지 않음.\n useObserveEffect((e) => {\n opts$.type.get();\n opts$.includeScrollbar.get();\n if (e.num > 0) update();\n });\n\n const matches$ = useMediaQuery(\"(orientation: portrait)\");\n useObserveEffect(\n matches$,\n () => {\n if (opts$.listenOrientation.get() !== false) {\n update();\n }\n },\n { immediate: false },\n );\n\n return size$;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAIO;AACP,8BAAiC;AACjC,2BAA8B;AAC9B,qCAAwC;AACxC,4BAA+B;AAAA;AAiBxB,SAAS,cACd,SACqB;AAErB,QAAM,YAAQ,wDAA8C,SAAS;AAAA,IACnE,cAAc;AAAA,IACd,eAAe;AAAA,EACjB,CAAC;AAED,QAAM,YAAQ,4BAAc;AAAA,IAC1B,OAAO,MAAM,aAAa,KAAK,KAAK;AAAA,IACpC,QAAQ,MAAM,cAAc,KAAK,KAAK;AAAA,EACxC,CAAC;AAED,QAAM,SAAS,MAAM;AACnB,QAAI,OAAO,WAAW,YAAa;AAEnC,UAAM,OAAO,MAAM,KAAK,KAAK,KAAK;AAClC,UAAM,mBAAmB,MAAM,iBAAiB,KAAK,MAAM;AAE3D,QAAI;AACJ,QAAI;AAEJ,QAAI,SAAS,SAAS;AACpB,cAAQ,OAAO;AACf,eAAS,OAAO;AAAA,IAClB,WAAW,SAAS,UAAU;AAC5B,YAAM,KAAK,OAAO;AAClB,UAAI,IAAI;AACN,gBAAQ,GAAG,QAAQ,GAAG;AACtB,iBAAS,GAAG,SAAS,GAAG;AAAA,MAC1B,OAAO;AACL,gBAAQ,OAAO;AACf,iBAAS,OAAO;AAAA,MAClB;AAAA,IACF,OAAO;AACL,UAAI,kBAAkB;AACpB,gBAAQ,OAAO;AACf,iBAAS,OAAO;AAAA,MAClB,OAAO;AACL,gBAAQ,SAAS,gBAAgB;AACjC,iBAAS,SAAS,gBAAgB;AAAA,MACpC;AAAA,IACF;AAEA,UAAM,OAAO,EAAE,OAAO,OAAO,CAAC;AAAA,EAChC;AAEA,6BAAS,MAAM;AAEf,gDAAiB,UAAU,QAAQ,EAAE,SAAS,KAAK,CAAC;AAEpD,QAAM,UAAM;AAAA,IAAe,MACzB,MAAM,KAAK,KAAK,MAAM,WAAW,OAAO,iBAAiB;AAAA,EAC3D;AAEA,gDAAiB,KAAK,UAAU,MAAM;AAKtC,qCAAiB,CAAC,MAAM;AACtB,UAAM,KAAK,IAAI;AACf,UAAM,iBAAiB,IAAI;AAC3B,QAAI,EAAE,MAAM,EAAG,QAAO;AAAA,EACxB,CAAC;AAED,QAAM,eAAW,oCAAc,yBAAyB;AACxD;AAAA,IACE;AAAA,IACA,MAAM;AACJ,UAAI,MAAM,kBAAkB,IAAI,MAAM,OAAO;AAC3C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,EAAE,WAAW,MAAM;AAAA,EACrB;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,76 @@
1
+ "use client";
2
+ import {
3
+ useObservable,
4
+ useMount,
5
+ useObserveEffect
6
+ } from "@legendapp/state/react";
7
+ import { useEventListener } from "../../browser/useEventListener";
8
+ import { useMediaQuery } from "../../browser/useMediaQuery";
9
+ import { useMayObservableOptions } from "../../function/useMayObservableOptions";
10
+ import { useWhenMounted } from "../../function/useWhenMounted";
11
+ // @__NO_SIDE_EFFECTS__
12
+ function useWindowSize(options) {
13
+ const opts$ = useMayObservableOptions(options, {
14
+ initialWidth: "peek",
15
+ initialHeight: "peek"
16
+ });
17
+ const size$ = useObservable({
18
+ width: opts$.initialWidth.peek() ?? 0,
19
+ height: opts$.initialHeight.peek() ?? 0
20
+ });
21
+ const update = () => {
22
+ if (typeof window === "undefined") return;
23
+ const type = opts$.type.peek() ?? "inner";
24
+ const includeScrollbar = opts$.includeScrollbar.peek() !== false;
25
+ let width;
26
+ let height;
27
+ if (type === "outer") {
28
+ width = window.outerWidth;
29
+ height = window.outerHeight;
30
+ } else if (type === "visual") {
31
+ const vp = window.visualViewport;
32
+ if (vp) {
33
+ width = vp.width * vp.scale;
34
+ height = vp.height * vp.scale;
35
+ } else {
36
+ width = window.innerWidth;
37
+ height = window.innerHeight;
38
+ }
39
+ } else {
40
+ if (includeScrollbar) {
41
+ width = window.innerWidth;
42
+ height = window.innerHeight;
43
+ } else {
44
+ width = document.documentElement.clientWidth;
45
+ height = document.documentElement.clientHeight;
46
+ }
47
+ }
48
+ size$.assign({ width, height });
49
+ };
50
+ useMount(update);
51
+ useEventListener("resize", update, { passive: true });
52
+ const vp$ = useWhenMounted(
53
+ () => opts$.type.peek() === "visual" ? window.visualViewport : null
54
+ );
55
+ useEventListener(vp$, "resize", update);
56
+ useObserveEffect((e) => {
57
+ opts$.type.get();
58
+ opts$.includeScrollbar.get();
59
+ if (e.num > 0) update();
60
+ });
61
+ const matches$ = useMediaQuery("(orientation: portrait)");
62
+ useObserveEffect(
63
+ matches$,
64
+ () => {
65
+ if (opts$.listenOrientation.get() !== false) {
66
+ update();
67
+ }
68
+ },
69
+ { immediate: false }
70
+ );
71
+ return size$;
72
+ }
73
+ export {
74
+ useWindowSize
75
+ };
76
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/elements/useWindowSize/index.ts"],"sourcesContent":["\"use client\";\nimport type { Observable } from \"@legendapp/state\";\nimport {\n useObservable,\n useMount,\n useObserveEffect,\n} from \"@legendapp/state/react\";\nimport { useEventListener } from \"../../browser/useEventListener\";\nimport { useMediaQuery } from \"../../browser/useMediaQuery\";\nimport { useMayObservableOptions } from \"../../function/useMayObservableOptions\";\nimport { useWhenMounted } from \"../../function/useWhenMounted\";\nimport type { DeepMaybeObservable } from \"../../types\";\n\nexport interface UseWindowSizeOptions {\n initialWidth?: number;\n initialHeight?: number;\n listenOrientation?: boolean;\n includeScrollbar?: boolean;\n type?: \"inner\" | \"outer\" | \"visual\";\n}\n\nexport type UseWindowSizeReturn = Observable<{\n width: number;\n height: number;\n}>;\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function useWindowSize(\n options?: DeepMaybeObservable<UseWindowSizeOptions>,\n): UseWindowSizeReturn {\n // Standard Pattern: normalize DeepMaybeObservable<Options> into a stable computed Observable.\n const opts$ = useMayObservableOptions<UseWindowSizeOptions>(options, {\n initialWidth: \"peek\",\n initialHeight: \"peek\",\n });\n\n const size$ = useObservable({\n width: opts$.initialWidth.peek() ?? 0,\n height: opts$.initialHeight.peek() ?? 0,\n });\n\n const update = () => {\n if (typeof window === \"undefined\") return;\n\n const type = opts$.type.peek() ?? \"inner\";\n const includeScrollbar = opts$.includeScrollbar.peek() !== false;\n\n let width: number;\n let height: number;\n\n if (type === \"outer\") {\n width = window.outerWidth;\n height = window.outerHeight;\n } else if (type === \"visual\") {\n const vp = window.visualViewport;\n if (vp) {\n width = vp.width * vp.scale;\n height = vp.height * vp.scale;\n } else {\n width = window.innerWidth;\n height = window.innerHeight;\n }\n } else {\n if (includeScrollbar) {\n width = window.innerWidth;\n height = window.innerHeight;\n } else {\n width = document.documentElement.clientWidth;\n height = document.documentElement.clientHeight;\n }\n }\n\n size$.assign({ width, height });\n };\n\n useMount(update);\n\n useEventListener(\"resize\", update, { passive: true });\n\n const vp$ = useWhenMounted(() =>\n opts$.type.peek() === \"visual\" ? window.visualViewport : null,\n );\n\n useEventListener(vp$, \"resize\", update);\n\n // type 또는 includeScrollbar가 변경되면 즉시 재측정\n // 단일 함수 형태: opts$.type.get()/opts$.includeScrollbar.get()으로 dep 등록,\n // update()는 .peek()만 사용하므로 추가 dep을 등록하지 않음.\n useObserveEffect((e) => {\n opts$.type.get();\n opts$.includeScrollbar.get();\n if (e.num > 0) update();\n });\n\n const matches$ = useMediaQuery(\"(orientation: portrait)\");\n useObserveEffect(\n matches$,\n () => {\n if (opts$.listenOrientation.get() !== false) {\n update();\n }\n },\n { immediate: false },\n );\n\n return size$;\n}\n"],"mappings":";AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAC9B,SAAS,+BAA+B;AACxC,SAAS,sBAAsB;AAAA;AAiBxB,SAAS,cACd,SACqB;AAErB,QAAM,QAAQ,wBAA8C,SAAS;AAAA,IACnE,cAAc;AAAA,IACd,eAAe;AAAA,EACjB,CAAC;AAED,QAAM,QAAQ,cAAc;AAAA,IAC1B,OAAO,MAAM,aAAa,KAAK,KAAK;AAAA,IACpC,QAAQ,MAAM,cAAc,KAAK,KAAK;AAAA,EACxC,CAAC;AAED,QAAM,SAAS,MAAM;AACnB,QAAI,OAAO,WAAW,YAAa;AAEnC,UAAM,OAAO,MAAM,KAAK,KAAK,KAAK;AAClC,UAAM,mBAAmB,MAAM,iBAAiB,KAAK,MAAM;AAE3D,QAAI;AACJ,QAAI;AAEJ,QAAI,SAAS,SAAS;AACpB,cAAQ,OAAO;AACf,eAAS,OAAO;AAAA,IAClB,WAAW,SAAS,UAAU;AAC5B,YAAM,KAAK,OAAO;AAClB,UAAI,IAAI;AACN,gBAAQ,GAAG,QAAQ,GAAG;AACtB,iBAAS,GAAG,SAAS,GAAG;AAAA,MAC1B,OAAO;AACL,gBAAQ,OAAO;AACf,iBAAS,OAAO;AAAA,MAClB;AAAA,IACF,OAAO;AACL,UAAI,kBAAkB;AACpB,gBAAQ,OAAO;AACf,iBAAS,OAAO;AAAA,MAClB,OAAO;AACL,gBAAQ,SAAS,gBAAgB;AACjC,iBAAS,SAAS,gBAAgB;AAAA,MACpC;AAAA,IACF;AAEA,UAAM,OAAO,EAAE,OAAO,OAAO,CAAC;AAAA,EAChC;AAEA,WAAS,MAAM;AAEf,mBAAiB,UAAU,QAAQ,EAAE,SAAS,KAAK,CAAC;AAEpD,QAAM,MAAM;AAAA,IAAe,MACzB,MAAM,KAAK,KAAK,MAAM,WAAW,OAAO,iBAAiB;AAAA,EAC3D;AAEA,mBAAiB,KAAK,UAAU,MAAM;AAKtC,mBAAiB,CAAC,MAAM;AACtB,UAAM,KAAK,IAAI;AACf,UAAM,iBAAiB,IAAI;AAC3B,QAAI,EAAE,MAAM,EAAG,QAAO;AAAA,EACxB,CAAC;AAED,QAAM,WAAW,cAAc,yBAAyB;AACxD;AAAA,IACE;AAAA,IACA,MAAM;AACJ,UAAI,MAAM,kBAAkB,IAAI,MAAM,OAAO;AAC3C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,EAAE,WAAW,MAAM;AAAA,EACrB;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,45 @@
1
+ import { MaybeObservable } from '../../types.mjs';
2
+ import '@legendapp/state';
3
+
4
+ /**
5
+ * Extracts the value from a MaybeObservable
6
+ * If the value is an Observable, calls .get() to extract it
7
+ * Otherwise returns the value as-is
8
+ *
9
+ * @param maybeObservable - A value that might be an Observable
10
+ * @returns The extracted value
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { observable } from '@legendapp/state'
15
+ * import { get } from '@usels/core'
16
+ *
17
+ * const value = get('hello') // 'hello'
18
+ * const obsValue = get(observable(42)) // 42
19
+ * ```
20
+ */
21
+ declare function get<T>(maybeObservable: MaybeObservable<T>): T;
22
+ declare function get<T>(maybeObservable: MaybeObservable<T> | undefined): T | undefined;
23
+ /**
24
+ * Extracts a property value from a MaybeObservable object
25
+ *
26
+ * @param maybeObservable - A value that might be an Observable
27
+ * @param key - The property key to extract
28
+ * @returns The property value, or undefined if not found
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * import { observable } from '@legendapp/state'
33
+ * import { get } from '@usels/core'
34
+ *
35
+ * const obj = { name: 'John' }
36
+ * const obs$ = observable({ name: 'Jane' })
37
+ *
38
+ * get(obj, 'name') // 'John'
39
+ * get(obs$, 'name') // 'Jane'
40
+ * get(obs$, 'age') // undefined
41
+ * ```
42
+ */
43
+ declare function get<T, K extends keyof T>(maybeObservable: MaybeObservable<T>, key: K): T[K] | undefined;
44
+
45
+ export { get };
@@ -0,0 +1,45 @@
1
+ import { MaybeObservable } from '../../types.js';
2
+ import '@legendapp/state';
3
+
4
+ /**
5
+ * Extracts the value from a MaybeObservable
6
+ * If the value is an Observable, calls .get() to extract it
7
+ * Otherwise returns the value as-is
8
+ *
9
+ * @param maybeObservable - A value that might be an Observable
10
+ * @returns The extracted value
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { observable } from '@legendapp/state'
15
+ * import { get } from '@usels/core'
16
+ *
17
+ * const value = get('hello') // 'hello'
18
+ * const obsValue = get(observable(42)) // 42
19
+ * ```
20
+ */
21
+ declare function get<T>(maybeObservable: MaybeObservable<T>): T;
22
+ declare function get<T>(maybeObservable: MaybeObservable<T> | undefined): T | undefined;
23
+ /**
24
+ * Extracts a property value from a MaybeObservable object
25
+ *
26
+ * @param maybeObservable - A value that might be an Observable
27
+ * @param key - The property key to extract
28
+ * @returns The property value, or undefined if not found
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * import { observable } from '@legendapp/state'
33
+ * import { get } from '@usels/core'
34
+ *
35
+ * const obj = { name: 'John' }
36
+ * const obs$ = observable({ name: 'Jane' })
37
+ *
38
+ * get(obj, 'name') // 'John'
39
+ * get(obs$, 'name') // 'Jane'
40
+ * get(obs$, 'age') // undefined
41
+ * ```
42
+ */
43
+ declare function get<T, K extends keyof T>(maybeObservable: MaybeObservable<T>, key: K): T[K] | undefined;
44
+
45
+ export { get };
@@ -0,0 +1,39 @@
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 get_exports = {};
20
+ __export(get_exports, {
21
+ get: () => get
22
+ });
23
+ module.exports = __toCommonJS(get_exports);
24
+ var import_state = require("@legendapp/state");
25
+ function get(maybeObservable, key) {
26
+ const value = (0, import_state.isObservable)(maybeObservable) ? maybeObservable.get() : maybeObservable;
27
+ if (key === void 0) {
28
+ return value;
29
+ }
30
+ if (value !== null && value !== void 0 && typeof value === "object") {
31
+ return value[key];
32
+ }
33
+ return void 0;
34
+ }
35
+ // Annotate the CommonJS export names for ESM import in node:
36
+ 0 && (module.exports = {
37
+ get
38
+ });
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/function/get/index.ts"],"sourcesContent":["import { isObservable } from \"@legendapp/state\";\nimport { MaybeObservable } from \"../../types\";\n\n/**\n * Extracts the value from a MaybeObservable\n * If the value is an Observable, calls .get() to extract it\n * Otherwise returns the value as-is\n *\n * @param maybeObservable - A value that might be an Observable\n * @returns The extracted value\n *\n * @example\n * ```ts\n * import { observable } from '@legendapp/state'\n * import { get } from '@usels/core'\n *\n * const value = get('hello') // 'hello'\n * const obsValue = get(observable(42)) // 42\n * ```\n */\nexport function get<T>(maybeObservable: MaybeObservable<T>): T;\nexport function get<T>(maybeObservable: MaybeObservable<T> | undefined): T | undefined;\n\n/**\n * Extracts a property value from a MaybeObservable object\n *\n * @param maybeObservable - A value that might be an Observable\n * @param key - The property key to extract\n * @returns The property value, or undefined if not found\n *\n * @example\n * ```ts\n * import { observable } from '@legendapp/state'\n * import { get } from '@usels/core'\n *\n * const obj = { name: 'John' }\n * const obs$ = observable({ name: 'Jane' })\n *\n * get(obj, 'name') // 'John'\n * get(obs$, 'name') // 'Jane'\n * get(obs$, 'age') // undefined\n * ```\n */\nexport function get<T, K extends keyof T>(\n maybeObservable: MaybeObservable<T>,\n key: K,\n): T[K] | undefined;\n\n// Implementation\nexport function get<T>(\n maybeObservable: MaybeObservable<T>,\n key?: keyof T,\n): any {\n // Extract the base value\n const value = isObservable(maybeObservable)\n ? maybeObservable.get()\n : maybeObservable;\n\n // If no key provided, return the value (single-arg overload)\n if (key === undefined) {\n return value;\n }\n\n // If key provided, extract property (two-arg overload)\n if (value !== null && value !== undefined && typeof value === \"object\") {\n return (value as any)[key];\n }\n\n return undefined;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA6B;AAiDtB,SAAS,IACd,iBACA,KACK;AAEL,QAAM,YAAQ,2BAAa,eAAe,IACtC,gBAAgB,IAAI,IACpB;AAGJ,MAAI,QAAQ,QAAW;AACrB,WAAO;AAAA,EACT;AAGA,MAAI,UAAU,QAAQ,UAAU,UAAa,OAAO,UAAU,UAAU;AACtE,WAAQ,MAAc,GAAG;AAAA,EAC3B;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,15 @@
1
+ import { isObservable } from "@legendapp/state";
2
+ function get(maybeObservable, key) {
3
+ const value = isObservable(maybeObservable) ? maybeObservable.get() : maybeObservable;
4
+ if (key === void 0) {
5
+ return value;
6
+ }
7
+ if (value !== null && value !== void 0 && typeof value === "object") {
8
+ return value[key];
9
+ }
10
+ return void 0;
11
+ }
12
+ export {
13
+ get
14
+ };
15
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/function/get/index.ts"],"sourcesContent":["import { isObservable } from \"@legendapp/state\";\nimport { MaybeObservable } from \"../../types\";\n\n/**\n * Extracts the value from a MaybeObservable\n * If the value is an Observable, calls .get() to extract it\n * Otherwise returns the value as-is\n *\n * @param maybeObservable - A value that might be an Observable\n * @returns The extracted value\n *\n * @example\n * ```ts\n * import { observable } from '@legendapp/state'\n * import { get } from '@usels/core'\n *\n * const value = get('hello') // 'hello'\n * const obsValue = get(observable(42)) // 42\n * ```\n */\nexport function get<T>(maybeObservable: MaybeObservable<T>): T;\nexport function get<T>(maybeObservable: MaybeObservable<T> | undefined): T | undefined;\n\n/**\n * Extracts a property value from a MaybeObservable object\n *\n * @param maybeObservable - A value that might be an Observable\n * @param key - The property key to extract\n * @returns The property value, or undefined if not found\n *\n * @example\n * ```ts\n * import { observable } from '@legendapp/state'\n * import { get } from '@usels/core'\n *\n * const obj = { name: 'John' }\n * const obs$ = observable({ name: 'Jane' })\n *\n * get(obj, 'name') // 'John'\n * get(obs$, 'name') // 'Jane'\n * get(obs$, 'age') // undefined\n * ```\n */\nexport function get<T, K extends keyof T>(\n maybeObservable: MaybeObservable<T>,\n key: K,\n): T[K] | undefined;\n\n// Implementation\nexport function get<T>(\n maybeObservable: MaybeObservable<T>,\n key?: keyof T,\n): any {\n // Extract the base value\n const value = isObservable(maybeObservable)\n ? maybeObservable.get()\n : maybeObservable;\n\n // If no key provided, return the value (single-arg overload)\n if (key === undefined) {\n return value;\n }\n\n // If key provided, extract property (two-arg overload)\n if (value !== null && value !== undefined && typeof value === \"object\") {\n return (value as any)[key];\n }\n\n return undefined;\n}\n"],"mappings":"AAAA,SAAS,oBAAoB;AAiDtB,SAAS,IACd,iBACA,KACK;AAEL,QAAM,QAAQ,aAAa,eAAe,IACtC,gBAAgB,IAAI,IACpB;AAGJ,MAAI,QAAQ,QAAW;AACrB,WAAO;AAAA,EACT;AAGA,MAAI,UAAU,QAAQ,UAAU,UAAa,OAAO,UAAU,UAAU;AACtE,WAAQ,MAAc,GAAG;AAAA,EAC3B;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,46 @@
1
+ import { MaybeObservable } from '../../types.mjs';
2
+ import '@legendapp/state';
3
+
4
+ /**
5
+ * Extracts the value from a MaybeObservable **without** registering a tracking dependency.
6
+ * If the value is an Observable, calls `.peek()` to extract it non-reactively.
7
+ * Otherwise returns the value as-is.
8
+ *
9
+ * Use this for mount-time-only options that should not trigger re-runs when changed.
10
+ * Prefer `get()` inside reactive contexts (`useObserve`, `useObservable`) when reactivity is needed.
11
+ *
12
+ * @param maybeObservable - A value that might be an Observable
13
+ * @returns The extracted value (no tracking dependency registered)
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { observable } from '@legendapp/state'
18
+ * import { peek } from '@usels/core'
19
+ *
20
+ * const value = peek('hello') // 'hello'
21
+ * const obsValue = peek(observable(42)) // 42 — no dep registered
22
+ * ```
23
+ */
24
+ declare function peek<T>(maybeObservable: MaybeObservable<T>): T;
25
+ declare function peek<T>(maybeObservable: MaybeObservable<T> | undefined): T | undefined;
26
+ /**
27
+ * Extracts a property value from a MaybeObservable object **without** registering a tracking dependency.
28
+ *
29
+ * @param maybeObservable - A value that might be an Observable
30
+ * @param key - The property key to extract
31
+ * @returns The property value, or undefined if not found
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { observable } from '@legendapp/state'
36
+ * import { peek } from '@usels/core'
37
+ *
38
+ * const obs$ = observable({ initialValue: true, rootMargin: '0px' })
39
+ *
40
+ * peek(obs$, 'initialValue') // true — no dep registered (mount-time-only read)
41
+ * peek(obs$, 'rootMargin') // '0px' — no dep registered
42
+ * ```
43
+ */
44
+ declare function peek<T, K extends keyof T>(maybeObservable: MaybeObservable<T>, key: K): T[K] | undefined;
45
+
46
+ export { peek };
@@ -0,0 +1,46 @@
1
+ import { MaybeObservable } from '../../types.js';
2
+ import '@legendapp/state';
3
+
4
+ /**
5
+ * Extracts the value from a MaybeObservable **without** registering a tracking dependency.
6
+ * If the value is an Observable, calls `.peek()` to extract it non-reactively.
7
+ * Otherwise returns the value as-is.
8
+ *
9
+ * Use this for mount-time-only options that should not trigger re-runs when changed.
10
+ * Prefer `get()` inside reactive contexts (`useObserve`, `useObservable`) when reactivity is needed.
11
+ *
12
+ * @param maybeObservable - A value that might be an Observable
13
+ * @returns The extracted value (no tracking dependency registered)
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { observable } from '@legendapp/state'
18
+ * import { peek } from '@usels/core'
19
+ *
20
+ * const value = peek('hello') // 'hello'
21
+ * const obsValue = peek(observable(42)) // 42 — no dep registered
22
+ * ```
23
+ */
24
+ declare function peek<T>(maybeObservable: MaybeObservable<T>): T;
25
+ declare function peek<T>(maybeObservable: MaybeObservable<T> | undefined): T | undefined;
26
+ /**
27
+ * Extracts a property value from a MaybeObservable object **without** registering a tracking dependency.
28
+ *
29
+ * @param maybeObservable - A value that might be an Observable
30
+ * @param key - The property key to extract
31
+ * @returns The property value, or undefined if not found
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { observable } from '@legendapp/state'
36
+ * import { peek } from '@usels/core'
37
+ *
38
+ * const obs$ = observable({ initialValue: true, rootMargin: '0px' })
39
+ *
40
+ * peek(obs$, 'initialValue') // true — no dep registered (mount-time-only read)
41
+ * peek(obs$, 'rootMargin') // '0px' — no dep registered
42
+ * ```
43
+ */
44
+ declare function peek<T, K extends keyof T>(maybeObservable: MaybeObservable<T>, key: K): T[K] | undefined;
45
+
46
+ export { peek };