yummies 5.7.1 → 5.9.0

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 (434) hide show
  1. package/async.cjs +2 -70
  2. package/async.cjs.map +1 -0
  3. package/async.js +26 -59
  4. package/async.js.map +1 -0
  5. package/common.cjs +2 -18
  6. package/common.cjs.map +1 -0
  7. package/common.d.ts +1 -1
  8. package/common.d.ts.map +1 -1
  9. package/common.js +5 -13
  10. package/common.js.map +1 -0
  11. package/complex/global-config.d.ts +1 -1
  12. package/complex/global-config.d.ts.map +1 -1
  13. package/complex/index.d.ts +3 -3
  14. package/complex/index.d.ts.map +1 -1
  15. package/complex/modules-factory.d.ts +1 -1
  16. package/complex/modules-factory.d.ts.map +1 -1
  17. package/complex.cjs +2 -0
  18. package/complex.cjs.map +1 -0
  19. package/complex.js +66 -0
  20. package/complex.js.map +1 -0
  21. package/cookie.cjs +2 -13
  22. package/cookie.cjs.map +1 -0
  23. package/cookie.d.ts +1 -1
  24. package/cookie.d.ts.map +1 -1
  25. package/cookie.js +4 -8
  26. package/cookie.js.map +1 -0
  27. package/css.cjs +2 -64
  28. package/css.cjs.map +1 -0
  29. package/css.d.ts +1 -1
  30. package/css.js +24 -54
  31. package/css.js.map +1 -0
  32. package/data.cjs +2 -58
  33. package/data.cjs.map +1 -0
  34. package/data.js +32 -50
  35. package/data.js.map +1 -0
  36. package/date-time.cjs +2 -171
  37. package/date-time.cjs.map +1 -0
  38. package/date-time.d.ts +2 -3
  39. package/date-time.d.ts.map +1 -1
  40. package/date-time.js +311 -156
  41. package/date-time.js.map +1 -0
  42. package/device.cjs +2 -28
  43. package/device.cjs.map +1 -0
  44. package/device.js +23 -20
  45. package/device.js.map +1 -0
  46. package/encodings.cjs +2 -270
  47. package/encodings.cjs.map +1 -0
  48. package/encodings.js +269 -265
  49. package/encodings.js.map +1 -0
  50. package/errors.cjs +2 -34
  51. package/errors.cjs.map +1 -0
  52. package/errors.d.ts +1 -1
  53. package/errors.d.ts.map +1 -1
  54. package/errors.js +8 -29
  55. package/errors.js.map +1 -0
  56. package/file.cjs +2 -29
  57. package/file.cjs.map +1 -0
  58. package/file.js +19 -23
  59. package/file.js.map +1 -0
  60. package/format/_exports.d.ts +4 -4
  61. package/format/_exports.d.ts.map +1 -1
  62. package/format/index.d.ts +1 -1
  63. package/format/index.d.ts.map +1 -1
  64. package/format/number.d.ts +1 -1
  65. package/format/number.d.ts.map +1 -1
  66. package/format/percent.d.ts +2 -2
  67. package/format/percent.d.ts.map +1 -1
  68. package/format.cjs +2 -0
  69. package/format.cjs.map +1 -0
  70. package/format.js +27 -0
  71. package/format.js.map +1 -0
  72. package/html.cjs +2 -202
  73. package/html.cjs.map +1 -0
  74. package/html.d.ts +2 -2
  75. package/html.d.ts.map +1 -1
  76. package/html.js +120 -177
  77. package/html.js.map +1 -0
  78. package/id.cjs +3 -76
  79. package/id.cjs.map +1 -0
  80. package/id.js +15 -70
  81. package/id.js.map +1 -0
  82. package/imports.cjs +2 -45
  83. package/imports.cjs.map +1 -0
  84. package/imports.js +22 -37
  85. package/imports.js.map +1 -0
  86. package/math.cjs +2 -23
  87. package/math.cjs.map +1 -0
  88. package/math.d.ts +1 -1
  89. package/math.d.ts.map +1 -1
  90. package/math.js +10 -14
  91. package/math.js.map +1 -0
  92. package/media.cjs +2 -115
  93. package/media.cjs.map +1 -0
  94. package/media.js +54 -96
  95. package/media.js.map +1 -0
  96. package/mobx/apply-observable.d.ts +1 -1
  97. package/mobx/apply-observable.d.ts.map +1 -1
  98. package/mobx/create-enhanced-atom.d.ts +2 -2
  99. package/mobx/create-enhanced-atom.d.ts.map +1 -1
  100. package/mobx/deep-observable-struct.d.ts +1 -1
  101. package/mobx/deep-observable-struct.d.ts.map +1 -1
  102. package/mobx/get-mobx-administration.d.ts +2 -2
  103. package/mobx/get-mobx-administration.d.ts.map +1 -1
  104. package/mobx/index.d.ts +5 -5
  105. package/mobx/index.d.ts.map +1 -1
  106. package/mobx.cjs +2 -0
  107. package/mobx.cjs.map +1 -0
  108. package/mobx.js +89 -0
  109. package/mobx.js.map +1 -0
  110. package/ms.cjs +2 -22
  111. package/ms.cjs.map +1 -0
  112. package/ms.js +12 -17
  113. package/ms.js.map +1 -0
  114. package/number.cjs +2 -16
  115. package/number.cjs.map +1 -0
  116. package/number.js +9 -12
  117. package/number.js.map +1 -0
  118. package/package.json +101 -70
  119. package/parser/_exports.d.ts +3 -3
  120. package/parser/_exports.d.ts.map +1 -1
  121. package/parser/index.d.ts +1 -1
  122. package/parser/index.d.ts.map +1 -1
  123. package/parser/number.d.ts +1 -1
  124. package/parser/number.d.ts.map +1 -1
  125. package/parser/percent.d.ts +2 -2
  126. package/parser/percent.d.ts.map +1 -1
  127. package/parser/string.d.ts +1 -1
  128. package/parser/string.d.ts.map +1 -1
  129. package/parser.cjs +2 -0
  130. package/parser.cjs.map +1 -0
  131. package/parser.js +15 -0
  132. package/parser.js.map +1 -0
  133. package/price.cjs +2 -21
  134. package/price.cjs.map +1 -0
  135. package/price.js +13 -16
  136. package/price.js.map +1 -0
  137. package/random.cjs +2 -25
  138. package/random.cjs.map +1 -0
  139. package/random.js +11 -13
  140. package/random.js.map +1 -0
  141. package/react/hooks/index.d.ts +21 -21
  142. package/react/hooks/index.d.ts.map +1 -1
  143. package/react/hooks/use-click-outside.d.ts +1 -1
  144. package/react/hooks/use-define-ref.d.ts +1 -1
  145. package/react/hooks/use-element-ref.d.ts +1 -1
  146. package/react/hooks/use-event.d.ts +1 -1
  147. package/react/hooks/use-event.d.ts.map +1 -1
  148. package/react/hooks/use-initial-height.d.ts +1 -1
  149. package/react/hooks/use-last-value-ref.d.ts +1 -1
  150. package/react/hooks/use-resize-observer.d.ts +1 -1
  151. package/react/hooks/use-sync-ref.d.ts +1 -1
  152. package/react/hooks/use-toggle.d.ts +1 -1
  153. package/react/hooks/use-value.d.ts +1 -1
  154. package/react/index.d.ts +1 -1
  155. package/react/index.d.ts.map +1 -1
  156. package/react.cjs +2 -0
  157. package/react.cjs.map +1 -0
  158. package/react.js +152 -0
  159. package/react.js.map +1 -0
  160. package/sound.cjs +2 -16
  161. package/sound.cjs.map +1 -0
  162. package/sound.js +7 -11
  163. package/sound.js.map +1 -0
  164. package/text.cjs +2 -53
  165. package/text.cjs.map +1 -0
  166. package/text.js +20 -46
  167. package/text.js.map +1 -0
  168. package/type-guard/_exports.d.ts +1 -1
  169. package/type-guard/_exports.d.ts.map +1 -1
  170. package/type-guard/index.d.ts +1 -1
  171. package/type-guard/index.d.ts.map +1 -1
  172. package/type-guard.cjs +2 -0
  173. package/type-guard.cjs.map +1 -0
  174. package/type-guard.js +5 -0
  175. package/type-guard.js.map +1 -0
  176. package/utility-types.cjs +2 -0
  177. package/utility-types.cjs.map +1 -0
  178. package/utility-types.d.ts.map +1 -0
  179. package/utility-types.js +2 -0
  180. package/utility-types.js.map +1 -0
  181. package/utils/types.cjs +1 -1
  182. package/utils/types.cjs.map +1 -0
  183. package/utils/types.js +2 -1
  184. package/utils/types.js.map +1 -0
  185. package/vibrate.cjs +2 -12
  186. package/vibrate.cjs.map +1 -0
  187. package/vibrate.js +6 -7
  188. package/vibrate.js.map +1 -0
  189. package/~index-C3wKHvHr.js +80 -0
  190. package/~index-C3wKHvHr.js.map +1 -0
  191. package/~index-PKNbSTT-.js +2 -0
  192. package/~index-PKNbSTT-.js.map +1 -0
  193. package/~number-B1MpW9GU.js +2 -0
  194. package/~number-B1MpW9GU.js.map +1 -0
  195. package/~number-DX076ykA.js +2 -0
  196. package/~number-DX076ykA.js.map +1 -0
  197. package/~number-EWff2XI6.js +25 -0
  198. package/~number-EWff2XI6.js.map +1 -0
  199. package/~number-baxVnzrJ.js +32 -0
  200. package/~number-baxVnzrJ.js.map +1 -0
  201. package/async.d.cts +0 -28
  202. package/async.d.cts.map +0 -1
  203. package/common.d.cts +0 -15
  204. package/common.d.cts.map +0 -1
  205. package/complex/counter.cjs +0 -21
  206. package/complex/counter.d.cts +0 -15
  207. package/complex/counter.d.cts.map +0 -1
  208. package/complex/counter.js +0 -17
  209. package/complex/global-config.cjs +0 -46
  210. package/complex/global-config.d.cts +0 -11
  211. package/complex/global-config.d.cts.map +0 -1
  212. package/complex/global-config.js +0 -41
  213. package/complex/index.cjs +0 -19
  214. package/complex/index.d.cts +0 -4
  215. package/complex/index.d.cts.map +0 -1
  216. package/complex/index.js +0 -3
  217. package/complex/modules-factory.cjs +0 -50
  218. package/complex/modules-factory.d.cts +0 -49
  219. package/complex/modules-factory.d.cts.map +0 -1
  220. package/complex/modules-factory.js +0 -46
  221. package/cookie.d.cts +0 -3
  222. package/cookie.d.cts.map +0 -1
  223. package/css.d.cts +0 -42
  224. package/css.d.cts.map +0 -1
  225. package/data.d.cts +0 -4
  226. package/data.d.cts.map +0 -1
  227. package/date-time.d.cts +0 -28
  228. package/date-time.d.cts.map +0 -1
  229. package/device.d.cts +0 -8
  230. package/device.d.cts.map +0 -1
  231. package/encodings.d.cts +0 -2
  232. package/encodings.d.cts.map +0 -1
  233. package/errors.d.cts +0 -19
  234. package/errors.d.cts.map +0 -1
  235. package/file.d.cts +0 -3
  236. package/file.d.cts.map +0 -1
  237. package/format/_exports.cjs +0 -20
  238. package/format/_exports.d.cts +0 -5
  239. package/format/_exports.d.cts.map +0 -1
  240. package/format/_exports.js +0 -4
  241. package/format/constants.cjs +0 -6
  242. package/format/constants.d.cts +0 -4
  243. package/format/constants.d.cts.map +0 -1
  244. package/format/constants.js +0 -3
  245. package/format/index.cjs +0 -40
  246. package/format/index.d.cts +0 -3
  247. package/format/index.d.cts.map +0 -1
  248. package/format/index.js +0 -4
  249. package/format/number.cjs +0 -48
  250. package/format/number.d.cts +0 -36
  251. package/format/number.d.cts.map +0 -1
  252. package/format/number.js +0 -44
  253. package/format/percent.cjs +0 -27
  254. package/format/percent.d.cts +0 -15
  255. package/format/percent.d.cts.map +0 -1
  256. package/format/percent.js +0 -23
  257. package/format/skip-spaces.cjs +0 -8
  258. package/format/skip-spaces.d.cts +0 -5
  259. package/format/skip-spaces.d.cts.map +0 -1
  260. package/format/skip-spaces.js +0 -4
  261. package/html.d.cts +0 -44
  262. package/html.d.cts.map +0 -1
  263. package/id.d.cts +0 -63
  264. package/id.d.cts.map +0 -1
  265. package/imports.d.cts +0 -15
  266. package/imports.d.cts.map +0 -1
  267. package/math.d.cts +0 -13
  268. package/math.d.cts.map +0 -1
  269. package/media.d.cts +0 -20
  270. package/media.d.cts.map +0 -1
  271. package/mobx/apply-observable.cjs +0 -16
  272. package/mobx/apply-observable.d.cts +0 -4
  273. package/mobx/apply-observable.d.cts.map +0 -1
  274. package/mobx/apply-observable.js +0 -12
  275. package/mobx/create-enhanced-atom.cjs +0 -16
  276. package/mobx/create-enhanced-atom.d.cts +0 -11
  277. package/mobx/create-enhanced-atom.d.cts.map +0 -1
  278. package/mobx/create-enhanced-atom.js +0 -12
  279. package/mobx/deep-observable-struct.cjs +0 -61
  280. package/mobx/deep-observable-struct.d.cts +0 -7
  281. package/mobx/deep-observable-struct.d.cts.map +0 -1
  282. package/mobx/deep-observable-struct.js +0 -57
  283. package/mobx/get-mobx-administration.cjs +0 -6
  284. package/mobx/get-mobx-administration.d.cts +0 -6
  285. package/mobx/get-mobx-administration.d.cts.map +0 -1
  286. package/mobx/get-mobx-administration.js +0 -2
  287. package/mobx/index.cjs +0 -21
  288. package/mobx/index.d.cts +0 -6
  289. package/mobx/index.d.cts.map +0 -1
  290. package/mobx/index.js +0 -5
  291. package/mobx/lazy-observe.cjs +0 -66
  292. package/mobx/lazy-observe.d.cts +0 -14
  293. package/mobx/lazy-observe.d.cts.map +0 -1
  294. package/mobx/lazy-observe.js +0 -62
  295. package/ms.d.cts +0 -19
  296. package/ms.d.cts.map +0 -1
  297. package/number.d.cts +0 -8
  298. package/number.d.cts.map +0 -1
  299. package/parser/_exports.cjs +0 -19
  300. package/parser/_exports.d.cts +0 -4
  301. package/parser/_exports.d.cts.map +0 -1
  302. package/parser/_exports.js +0 -3
  303. package/parser/index.cjs +0 -40
  304. package/parser/index.d.cts +0 -3
  305. package/parser/index.d.cts.map +0 -1
  306. package/parser/index.js +0 -4
  307. package/parser/number.cjs +0 -48
  308. package/parser/number.d.cts +0 -21
  309. package/parser/number.d.cts.map +0 -1
  310. package/parser/number.js +0 -44
  311. package/parser/percent.cjs +0 -8
  312. package/parser/percent.d.cts +0 -4
  313. package/parser/percent.d.cts.map +0 -1
  314. package/parser/percent.js +0 -4
  315. package/parser/string.cjs +0 -18
  316. package/parser/string.d.cts +0 -7
  317. package/parser/string.d.cts.map +0 -1
  318. package/parser/string.js +0 -14
  319. package/price.d.cts +0 -6
  320. package/price.d.cts.map +0 -1
  321. package/random.d.cts +0 -9
  322. package/random.d.cts.map +0 -1
  323. package/react/hooks/index.cjs +0 -37
  324. package/react/hooks/index.d.cts +0 -22
  325. package/react/hooks/index.d.cts.map +0 -1
  326. package/react/hooks/index.js +0 -21
  327. package/react/hooks/use-abort-controller.cjs +0 -15
  328. package/react/hooks/use-abort-controller.d.cts +0 -2
  329. package/react/hooks/use-abort-controller.d.cts.map +0 -1
  330. package/react/hooks/use-abort-controller.js +0 -11
  331. package/react/hooks/use-abort-signal.cjs +0 -8
  332. package/react/hooks/use-abort-signal.d.cts +0 -2
  333. package/react/hooks/use-abort-signal.d.cts.map +0 -1
  334. package/react/hooks/use-abort-signal.js +0 -4
  335. package/react/hooks/use-click-outside.cjs +0 -17
  336. package/react/hooks/use-click-outside.d.cts +0 -9
  337. package/react/hooks/use-click-outside.d.cts.map +0 -1
  338. package/react/hooks/use-click-outside.js +0 -13
  339. package/react/hooks/use-constant.cjs +0 -19
  340. package/react/hooks/use-constant.d.cts +0 -9
  341. package/react/hooks/use-constant.d.cts.map +0 -1
  342. package/react/hooks/use-constant.js +0 -15
  343. package/react/hooks/use-define-ref.cjs +0 -19
  344. package/react/hooks/use-define-ref.d.cts +0 -10
  345. package/react/hooks/use-define-ref.d.cts.map +0 -1
  346. package/react/hooks/use-define-ref.js +0 -15
  347. package/react/hooks/use-element-ref.cjs +0 -12
  348. package/react/hooks/use-element-ref.d.cts +0 -2
  349. package/react/hooks/use-element-ref.d.cts.map +0 -1
  350. package/react/hooks/use-element-ref.js +0 -8
  351. package/react/hooks/use-event-listener.cjs +0 -17
  352. package/react/hooks/use-event-listener.d.cts +0 -8
  353. package/react/hooks/use-event-listener.d.cts.map +0 -1
  354. package/react/hooks/use-event-listener.js +0 -13
  355. package/react/hooks/use-event.cjs +0 -23
  356. package/react/hooks/use-event.d.cts +0 -3
  357. package/react/hooks/use-event.d.cts.map +0 -1
  358. package/react/hooks/use-event.js +0 -19
  359. package/react/hooks/use-flag.cjs +0 -19
  360. package/react/hooks/use-flag.d.cts +0 -8
  361. package/react/hooks/use-flag.d.cts.map +0 -1
  362. package/react/hooks/use-flag.js +0 -15
  363. package/react/hooks/use-force-update.cjs +0 -11
  364. package/react/hooks/use-force-update.d.cts +0 -2
  365. package/react/hooks/use-force-update.d.cts.map +0 -1
  366. package/react/hooks/use-force-update.js +0 -7
  367. package/react/hooks/use-initial-height.cjs +0 -15
  368. package/react/hooks/use-initial-height.d.cts +0 -5
  369. package/react/hooks/use-initial-height.d.cts.map +0 -1
  370. package/react/hooks/use-initial-height.js +0 -11
  371. package/react/hooks/use-instance.cjs +0 -31
  372. package/react/hooks/use-instance.d.cts +0 -27
  373. package/react/hooks/use-instance.d.cts.map +0 -1
  374. package/react/hooks/use-instance.js +0 -27
  375. package/react/hooks/use-intersection-observer.cjs +0 -14
  376. package/react/hooks/use-intersection-observer.d.cts +0 -2
  377. package/react/hooks/use-intersection-observer.d.cts.map +0 -1
  378. package/react/hooks/use-intersection-observer.js +0 -10
  379. package/react/hooks/use-last-defined-value.cjs +0 -12
  380. package/react/hooks/use-last-defined-value.d.cts +0 -2
  381. package/react/hooks/use-last-defined-value.d.cts.map +0 -1
  382. package/react/hooks/use-last-defined-value.js +0 -8
  383. package/react/hooks/use-last-value-ref.cjs +0 -12
  384. package/react/hooks/use-last-value-ref.d.cts +0 -2
  385. package/react/hooks/use-last-value-ref.d.cts.map +0 -1
  386. package/react/hooks/use-last-value-ref.js +0 -8
  387. package/react/hooks/use-life-cycle.cjs +0 -14
  388. package/react/hooks/use-life-cycle.d.cts +0 -5
  389. package/react/hooks/use-life-cycle.d.cts.map +0 -1
  390. package/react/hooks/use-life-cycle.js +0 -10
  391. package/react/hooks/use-resize-observer.cjs +0 -15
  392. package/react/hooks/use-resize-observer.d.cts +0 -2
  393. package/react/hooks/use-resize-observer.d.cts.map +0 -1
  394. package/react/hooks/use-resize-observer.js +0 -11
  395. package/react/hooks/use-sync-ref.cjs +0 -10
  396. package/react/hooks/use-sync-ref.d.cts +0 -2
  397. package/react/hooks/use-sync-ref.d.cts.map +0 -1
  398. package/react/hooks/use-sync-ref.js +0 -6
  399. package/react/hooks/use-toggle.cjs +0 -10
  400. package/react/hooks/use-toggle.d.cts +0 -2
  401. package/react/hooks/use-toggle.d.cts.map +0 -1
  402. package/react/hooks/use-toggle.js +0 -6
  403. package/react/hooks/use-value.cjs +0 -12
  404. package/react/hooks/use-value.d.cts +0 -5
  405. package/react/hooks/use-value.d.cts.map +0 -1
  406. package/react/hooks/use-value.js +0 -8
  407. package/react/hooks/use-visibility-state.cjs +0 -18
  408. package/react/hooks/use-visibility-state.d.cts +0 -2
  409. package/react/hooks/use-visibility-state.d.cts.map +0 -1
  410. package/react/hooks/use-visibility-state.js +0 -14
  411. package/react/index.cjs +0 -17
  412. package/react/index.d.cts +0 -2
  413. package/react/index.d.cts.map +0 -1
  414. package/react/index.js +0 -1
  415. package/sound.d.cts +0 -7
  416. package/sound.d.cts.map +0 -1
  417. package/storage.cjs +0 -48
  418. package/storage.d.cts +0 -39
  419. package/storage.d.cts.map +0 -1
  420. package/storage.js +0 -43
  421. package/text.d.cts +0 -15
  422. package/text.d.cts.map +0 -1
  423. package/type-guard/_exports.cjs +0 -129
  424. package/type-guard/_exports.d.cts +0 -86
  425. package/type-guard/_exports.d.cts.map +0 -1
  426. package/type-guard/_exports.js +0 -125
  427. package/type-guard/index.cjs +0 -40
  428. package/type-guard/index.d.cts +0 -3
  429. package/type-guard/index.d.cts.map +0 -1
  430. package/type-guard/index.js +0 -4
  431. package/utils/types.d.cts +0 -395
  432. package/utils/types.d.cts.map +0 -1
  433. package/vibrate.d.cts +0 -5
  434. package/vibrate.d.cts.map +0 -1
package/random.js CHANGED
@@ -1,14 +1,12 @@
1
- export const getRandomFloat = (min = 0, max = 1) => (Math.random() * (max - min) + min);
2
- export const getRandomInt = (min = 0, max = 1) => min === max ? min : Math.round(getRandomFloat(min, max));
3
- export const getRandomChoice = (arr) => arr[getRandomInt(0, arr.length - 1)];
4
- export const getRandomSizeArray = (min = 0, max = 10) => Array.from({ length: getRandomInt(min, max) }).fill(null);
5
- export const getRandomBool = () => getRandomInt(0, 1) === 1;
6
- export const getMajorRandomBool = () => {
7
- return getRandomInt(0, 10) <= 6;
8
- };
9
- export const getMinorRandomBool = () => {
10
- return !getMajorRandomBool();
11
- };
12
- export const getFrequencyValue = (frequency) => {
13
- return Math.random() < frequency;
1
+ const e = (o = 0, t = 1) => Math.random() * (t - o) + o, n = (o = 0, t = 1) => o === t ? o : Math.round(e(o, t)), a = (o) => o[n(0, o.length - 1)], l = (o = 0, t = 10) => Array.from({ length: n(o, t) }).fill(null), c = () => n(0, 1) === 1, r = () => n(0, 10) <= 6, d = () => !r(), g = (o) => Math.random() < o;
2
+ export {
3
+ g as getFrequencyValue,
4
+ r as getMajorRandomBool,
5
+ d as getMinorRandomBool,
6
+ c as getRandomBool,
7
+ a as getRandomChoice,
8
+ e as getRandomFloat,
9
+ n as getRandomInt,
10
+ l as getRandomSizeArray
14
11
  };
12
+ //# sourceMappingURL=random.js.map
package/random.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.js","sources":["../src/random.ts"],"sourcesContent":["export const getRandomFloat = <T extends number = number>(\n min = 0,\n max = 1,\n): T => (Math.random() * (max - min) + min) as T;\n\nexport const getRandomInt = <T extends number = number>(min = 0, max = 1): T =>\n min === max ? (min as T) : (Math.round(getRandomFloat(min, max)) as T);\n\nexport const getRandomChoice = <T>(arr: T[]): T =>\n arr[getRandomInt(0, arr.length - 1)];\n\nexport const getRandomSizeArray = (min = 0, max = 10) =>\n Array.from({ length: getRandomInt(min, max) }).fill(null);\n\nexport const getRandomBool = () => getRandomInt(0, 1) === 1;\n\nexport const getMajorRandomBool = () => {\n return getRandomInt(0, 10) <= 6;\n};\n\nexport const getMinorRandomBool = () => {\n return !getMajorRandomBool();\n};\n\nexport const getFrequencyValue = (frequency: number) => {\n return Math.random() < frequency;\n};\n"],"names":["getRandomFloat","min","max","getRandomInt","getRandomChoice","arr","getRandomSizeArray","getRandomBool","getMajorRandomBool","getMinorRandomBool","getFrequencyValue","frequency"],"mappings":"AAAO,MAAMA,IAAiB,CAC5BC,IAAM,GACNC,IAAM,MACC,KAAK,OAAA,KAAYA,IAAMD,KAAOA,GAE1BE,IAAe,CAA4BF,IAAM,GAAGC,IAAM,MACrED,MAAQC,IAAOD,IAAa,KAAK,MAAMD,EAAeC,GAAKC,CAAG,CAAC,GAEpDE,IAAkB,CAAIC,MACjCA,EAAIF,EAAa,GAAGE,EAAI,SAAS,CAAC,CAAC,GAExBC,IAAqB,CAACL,IAAM,GAAGC,IAAM,OAChD,MAAM,KAAK,EAAE,QAAQC,EAAaF,GAAKC,CAAG,GAAG,EAAE,KAAK,IAAI,GAE7CK,IAAgB,MAAMJ,EAAa,GAAG,CAAC,MAAM,GAE7CK,IAAqB,MACzBL,EAAa,GAAG,EAAE,KAAK,GAGnBM,IAAqB,MACzB,CAACD,EAAA,GAGGE,IAAoB,CAACC,MACzB,KAAK,WAAWA;"}
@@ -1,22 +1,22 @@
1
- export * from "./use-abort-controller.js";
2
- export * from "./use-abort-signal.js";
3
- export * from "./use-click-outside.js";
4
- export * from "./use-constant.js";
5
- export * from "./use-define-ref.js";
6
- export * from "./use-element-ref.js";
7
- export * from "./use-event.js";
8
- export * from "./use-event-listener.js";
9
- export * from "./use-flag.js";
10
- export * from "./use-force-update.js";
11
- export * from "./use-initial-height.js";
12
- export * from "./use-instance.js";
13
- export * from "./use-intersection-observer.js";
14
- export * from "./use-last-defined-value.js";
15
- export * from "./use-last-value-ref.js";
16
- export * from "./use-life-cycle.js";
17
- export * from "./use-resize-observer.js";
18
- export * from "./use-sync-ref.js";
19
- export * from "./use-toggle.js";
20
- export * from "./use-value.js";
21
- export * from "./use-visibility-state.js";
1
+ export * from './use-abort-controller.js';
2
+ export * from './use-abort-signal.js';
3
+ export * from './use-click-outside.js';
4
+ export * from './use-constant.js';
5
+ export * from './use-define-ref.js';
6
+ export * from './use-element-ref.js';
7
+ export * from './use-event.js';
8
+ export * from './use-event-listener.js';
9
+ export * from './use-flag.js';
10
+ export * from './use-force-update.js';
11
+ export * from './use-initial-height.js';
12
+ export * from './use-instance.js';
13
+ export * from './use-intersection-observer.js';
14
+ export * from './use-last-defined-value.js';
15
+ export * from './use-last-value-ref.js';
16
+ export * from './use-life-cycle.js';
17
+ export * from './use-resize-observer.js';
18
+ export * from './use-sync-ref.js';
19
+ export * from './use-toggle.js';
20
+ export * from './use-value.js';
21
+ export * from './use-visibility-state.js';
22
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,sCAAsC;AACtC,uCAAuC;AACvC,kCAAkC;AAClC,oCAAoC;AACpC,qCAAqC;AACrC,+BAA+B;AAC/B,wCAAwC;AACxC,8BAA8B;AAC9B,sCAAsC;AACtC,wCAAwC;AACxC,kCAAkC;AAClC,+CAA+C;AAC/C,4CAA4C;AAC5C,wCAAwC;AACxC,oCAAoC;AACpC,yCAAyC;AACzC,kCAAkC;AAClC,gCAAgC;AAChC,+BAA+B;AAC/B,0CAA0C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { MutableRefObject } from 'react';
1
+ import { MutableRefObject } from 'react';
2
2
  type ClickOutsideInput = {
3
3
  contentRef: MutableRefObject<HTMLElement | null>;
4
4
  onClick: VoidFunction;
@@ -1,4 +1,4 @@
1
- import { type MutableRefObject } from 'react';
1
+ import { MutableRefObject } from 'react';
2
2
  /**
3
3
  * React hook for creating a value exactly once.
4
4
  * useMemo doesn't give this guarantee unfortunately -
@@ -1,2 +1,2 @@
1
- export declare const useElementRef: <T extends HTMLElement>(selector: () => T) => import("react").MutableRefObject<T | undefined>;
1
+ export declare const useElementRef: <T extends HTMLElement>(selector: () => T) => import('react').MutableRefObject<T | undefined>;
2
2
  //# sourceMappingURL=use-element-ref.d.ts.map
@@ -1,3 +1,3 @@
1
- import type { AnyFunction } from "../../utils/types.js";
1
+ import { AnyFunction } from '../../utils/types.ts';
2
2
  export declare const useEvent: <H extends AnyFunction>(handler: H) => H;
3
3
  //# sourceMappingURL=use-event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-event.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/use-event.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,6BAA6B;AAExD,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,WAAW,EAAE,SAAS,CAAC,KAAG,CAa5D,CAAC"}
1
+ {"version":3,"file":"use-event.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/use-event.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,WAAW,EAAE,SAAS,CAAC,KAAG,CAa5D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export declare const useInitialHeight: <T extends HTMLElement>() => {
2
- ref: import("react").MutableRefObject<T | null>;
2
+ ref: import('react').MutableRefObject<T | null>;
3
3
  initialHeight: number | undefined;
4
4
  };
5
5
  //# sourceMappingURL=use-initial-height.d.ts.map
@@ -1,2 +1,2 @@
1
- export declare const useLastValueRef: <T>(value: T | null | undefined) => import("react").MutableRefObject<T | null | undefined>;
1
+ export declare const useLastValueRef: <T>(value: T | null | undefined) => import('react').MutableRefObject<T | null | undefined>;
2
2
  //# sourceMappingURL=use-last-value-ref.d.ts.map
@@ -1,2 +1,2 @@
1
- export declare const useResizeObserver: (callback: ResizeObserverCallback) => import("react").MutableRefObject<ResizeObserver>;
1
+ export declare const useResizeObserver: (callback: ResizeObserverCallback) => import('react').MutableRefObject<ResizeObserver>;
2
2
  //# sourceMappingURL=use-resize-observer.d.ts.map
@@ -1,2 +1,2 @@
1
- export declare const useSyncRef: <T>(value: T) => import("react").MutableRefObject<T>;
1
+ export declare const useSyncRef: <T>(value: T) => import('react').MutableRefObject<T>;
2
2
  //# sourceMappingURL=use-sync-ref.d.ts.map
@@ -1,2 +1,2 @@
1
- export declare const useToggle: (initialState?: boolean) => readonly [boolean, () => void, import("react").Dispatch<import("react").SetStateAction<boolean>>];
1
+ export declare const useToggle: (initialState?: boolean) => readonly [boolean, () => void, import('react').Dispatch<import('react').SetStateAction<boolean>>];
2
2
  //# sourceMappingURL=use-toggle.d.ts.map
@@ -1,5 +1,5 @@
1
1
  export declare const useValue: <T>(defaults: T | (() => T)) => {
2
2
  value: T;
3
- set: import("react").Dispatch<import("react").SetStateAction<T>>;
3
+ set: import('react').Dispatch<import('react').SetStateAction<T>>;
4
4
  };
5
5
  //# sourceMappingURL=use-value.d.ts.map
package/react/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from "./hooks/index.js";
1
+ export * from './hooks/index.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,iCAAiC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
package/react.cjs ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),i=e=>{const t=n.useRef();return t.current||(t.current={value:e()}),t.current.value},f=()=>{const e=i(()=>new AbortController);return n.useEffect(()=>()=>{e.abort()},[]),e},b=()=>f().signal,l=e=>{const t=n.useRef(e);return t.current=e,t},d=({event:e,handler:t,options:s,deps:r=[],node:u=document})=>{const o=l(t);n.useEffect(()=>{const c=a=>o.current(a);return u.addEventListener(e,c,s),()=>u.removeEventListener(e,c,s)},r)},v=({contentRef:e,onClick:t,options:s})=>{d({event:"mousedown",handler:r=>{e.current&&!e.current.contains(r.target)&&t()},options:s})},g=e=>{const t=n.useRef(void 0);return t.current||(t.current=e()),t},E=e=>{const t=n.useRef();return n.useLayoutEffect(()=>{t.current=e()},[]),t},y=e=>{const t=n.useRef(e);return n.useLayoutEffect(()=>{t.current=e}),n.useCallback((...s)=>{const r=t.current;return r(...s)},[])},S=(e=!1)=>{const[t,s]=n.useState(e),r=n.useCallback(()=>s(a=>!a),[]),u=n.useCallback(()=>s(!0),[]),o=n.useCallback(()=>s(!1),[]),c=n.useRef({enabled:t,toggle:r,enable:u,disable:o});return c.current.enabled=t,c.current},C=()=>{const[,e]=n.useState(null);return n.useCallback(()=>{e({})},[])},L=()=>{const e=n.useRef(null),[t,s]=n.useState(void 0);return n.useEffect(()=>{e.current&&!t&&s(e.current.offsetHeight)},[t]),{ref:e,initialHeight:t}},R=e=>(t,s)=>{const r=b(),u=i(()=>t({...e,abortSignal:r,payload:s?.payload}));return n.useLayoutEffect(()=>{s?.onUpdate?.(s.payload)},[s?.payload]),u},O=R(),h=(e,t)=>{const[s]=n.useState(()=>new IntersectionObserver(e,t));return n.useEffect(()=>()=>{s.disconnect()},[]),s},m=e=>{const t=n.useRef(e);return e!=null&&(t.current=e),t.current},k=e=>{const t=n.useRef(e);return e!=null&&(t.current=e),t},I=e=>{const t=l(e);n.useEffect(()=>{const s=t.current();return s.mount?.(),s.unmount?.()},[])},V=e=>{const t=g(()=>new ResizeObserver(e));return n.useLayoutEffect(()=>()=>{t.current.disconnect()},[]),t},p=e=>{const[t,s]=n.useState(!!e),r=n.useCallback(()=>s(u=>!u),[]);return[t,r,s]},H=e=>{const[t,s]=n.useState(e);return{value:t,set:s}},A=()=>{const[e,t]=n.useState();return n.useEffect(()=>{const s=()=>{t(document.visibilityState)};return document.addEventListener("visibilitychange",s),()=>{document.removeEventListener("visibilitychange",s)}},[]),e};exports.createUseInstanceHook=R;exports.useAbortController=f;exports.useAbortSignal=b;exports.useClickOutside=v;exports.useConstant=i;exports.useDefineRef=g;exports.useElementRef=E;exports.useEvent=y;exports.useEventListener=d;exports.useFlag=S;exports.useForceUpdate=C;exports.useInitialHeight=L;exports.useInstance=O;exports.useIntersectionObserver=h;exports.useLastDefinedValue=m;exports.useLastValueRef=k;exports.useLifeCycle=I;exports.useResizeObserver=V;exports.useSyncRef=l;exports.useToggle=p;exports.useValue=H;exports.useVisibilityState=A;
2
+ //# sourceMappingURL=react.cjs.map
package/react.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.cjs","sources":["../src/react/hooks/use-constant.ts","../src/react/hooks/use-abort-controller.ts","../src/react/hooks/use-abort-signal.ts","../src/react/hooks/use-sync-ref.ts","../src/react/hooks/use-event-listener.ts","../src/react/hooks/use-click-outside.ts","../src/react/hooks/use-define-ref.ts","../src/react/hooks/use-element-ref.ts","../src/react/hooks/use-event.ts","../src/react/hooks/use-flag.ts","../src/react/hooks/use-force-update.ts","../src/react/hooks/use-initial-height.ts","../src/react/hooks/use-instance.ts","../src/react/hooks/use-intersection-observer.ts","../src/react/hooks/use-last-defined-value.ts","../src/react/hooks/use-last-value-ref.ts","../src/react/hooks/use-life-cycle.ts","../src/react/hooks/use-resize-observer.ts","../src/react/hooks/use-toggle.ts","../src/react/hooks/use-value.ts","../src/react/hooks/use-visibility-state.ts"],"sourcesContent":["import { useRef } from 'react';\n\n/**\n * React hook for creating a value exactly once.\n * useMemo doesn't give this guarantee unfortunately -\n * https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily\n * https://reactjs.org/docs/hooks-reference.html#usememo\n * @param defineValue Function which returns defined value.\n */\nexport const useConstant = <T>(defineValue: () => T): T => {\n const ref = useRef<{ value: T }>();\n\n if (!ref.current) {\n ref.current = { value: defineValue() };\n }\n\n return ref.current.value;\n};\n","import { useEffect } from 'react';\n\nimport { useConstant } from './use-constant.js';\n\nexport const useAbortController = () => {\n const controller = useConstant(() => new AbortController());\n\n useEffect(() => {\n return () => {\n controller.abort();\n };\n }, []);\n\n return controller;\n};\n","import { useAbortController } from './use-abort-controller.js';\n\nexport const useAbortSignal = () => {\n return useAbortController().signal;\n};\n","import { useRef } from 'react';\n\nexport const useSyncRef = <T>(value: T) => {\n const ref = useRef(value);\n ref.current = value;\n return ref;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { useEffect } from 'react';\nimport { useSyncRef } from './use-sync-ref.js';\n\nexport const useEventListener = <EventName extends keyof HTMLElementEventMap>({\n event,\n handler,\n options,\n deps = [],\n node = document,\n}: {\n event: EventName;\n handler: (e: HTMLElementEventMap[EventName]) => void;\n options?: boolean | AddEventListenerOptions;\n deps?: unknown[];\n node?: HTMLElement | Document | Window;\n}) => {\n const handlerRef = useSyncRef(handler);\n\n useEffect(() => {\n const handleEvent = (e: HTMLElementEventMap[EventName]) =>\n handlerRef.current(e);\n\n // @ts-expect-error\n node.addEventListener(event, handleEvent, options);\n // @ts-expect-error\n return () => node.removeEventListener(event, handleEvent, options);\n }, deps);\n};\n","import type { MutableRefObject } from 'react';\nimport { useEventListener } from './use-event-listener.js';\n\ntype ClickOutsideInput = {\n contentRef: MutableRefObject<HTMLElement | null>;\n onClick: VoidFunction;\n options?: AddEventListenerOptions;\n};\n\nexport const useClickOutside = ({\n contentRef,\n onClick,\n options,\n}: ClickOutsideInput) => {\n useEventListener({\n event: 'mousedown',\n handler: (event) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n onClick();\n }\n },\n options,\n });\n};\n","import { type MutableRefObject, useRef } from 'react';\n\n/**\n * React hook for creating a value exactly once.\n * useMemo doesn't give this guarantee unfortunately -\n * https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily\n * https://reactjs.org/docs/hooks-reference.html#usememo\n * @param defineFn Function which returns defined value.\n */\nexport const useDefineRef = <T>(defineFn: () => T): MutableRefObject<T> => {\n const ref = useRef<T>(void 0 as T);\n\n if (!ref.current) {\n ref.current = defineFn();\n }\n\n return ref;\n};\n","import { useLayoutEffect, useRef } from 'react';\n\nexport const useElementRef = <T extends HTMLElement>(selector: () => T) => {\n const ref = useRef<T>();\n\n useLayoutEffect(() => {\n ref.current = selector();\n }, []);\n\n return ref;\n};\n","/**\n * A Hook to define an event handler with an always-stable function identity.\n *\n * borrowed from @gaeron\n * https://github.com/reactjs/rfcs/blob/useevent/text/0000-useevent.md\n */\nimport { useCallback, useLayoutEffect, useRef } from 'react';\nimport type { AnyFunction } from 'yummies/utils/types';\n\nexport const useEvent = <H extends AnyFunction>(handler: H): H => {\n const handlerRef = useRef<H>(handler);\n\n // In a real implementation, this would run before layout effects\n useLayoutEffect(() => {\n handlerRef.current = handler;\n });\n\n return useCallback((...args: unknown[]) => {\n // In a real implementation, this would throw if called during render\n const fn = handlerRef.current as AnyFunction;\n return fn(...args);\n }, []) as unknown as H;\n};\n","import { useCallback, useRef, useState } from 'react';\n\nexport interface FlagHook {\n enabled: boolean;\n toggle: VoidFunction;\n enable: VoidFunction;\n disable: VoidFunction;\n}\n\nexport const useFlag = (defaultValue = false): FlagHook => {\n const [enabled, setEnabled] = useState(defaultValue);\n\n const toggle = useCallback(() => setEnabled((value) => !value), []);\n const enable = useCallback(() => setEnabled(true), []);\n const disable = useCallback(() => setEnabled(false), []);\n\n const flagObjRef = useRef<FlagHook>({\n enabled,\n toggle,\n enable,\n disable,\n });\n\n flagObjRef.current.enabled = enabled;\n\n return flagObjRef.current;\n};\n","import { useCallback, useState } from 'react';\n\nexport const useForceUpdate = () => {\n const [, setState] = useState<unknown>(null);\n\n return useCallback(() => {\n setState({});\n }, []);\n};\n","import { useEffect, useRef, useState } from 'react';\n\nexport const useInitialHeight = <T extends HTMLElement>() => {\n const ref = useRef<T | null>(null);\n const [initialHeight, setInitialHeight] = useState<number | undefined>(\n undefined,\n );\n\n useEffect(() => {\n if (ref.current && !initialHeight) {\n setInitialHeight(ref.current.offsetHeight);\n }\n }, [initialHeight]);\n\n return { ref, initialHeight };\n};\n","import { useLayoutEffect } from 'react';\nimport { useAbortSignal } from './use-abort-signal.js';\nimport { useConstant } from './use-constant.js';\n\nexport type InstanceCreateConfig<TPayload, TExtension = {}> = TExtension & {\n abortSignal: AbortSignal;\n payload: TPayload;\n};\n\nexport const createUseInstanceHook =\n <TExtension = {}>(extension?: TExtension) =>\n <TInstance, TPayload>(\n factory: (\n config: InstanceCreateConfig<NoInfer<TPayload>, TExtension>,\n ) => TInstance,\n config?: {\n payload?: TPayload;\n onUpdate?: (payload: TPayload) => void;\n },\n ) => {\n const abortSignal = useAbortSignal();\n\n const instance = useConstant(() =>\n factory({\n ...(extension as TExtension),\n abortSignal,\n payload: config?.payload as any,\n }),\n );\n\n useLayoutEffect(() => {\n config?.onUpdate?.(config.payload!);\n }, [config?.payload]);\n\n return instance;\n };\n\n/**\n * The `useInstance` hook is used to create and manage an instance of an object\n * that requires access to the root store and an abort signal.\n *\n * You can create YOUR OWN CUSTOM `useInstance` hook using `createUseInstanceHook` if you need\n * to provide some specific data\n *\n * @param factory - A factory function that takes a configuration and returns an instance.\n * @param config - An optional configuration containing additional input parameters and an update function.\n * @returns An instance created by the factory function.\n */\nexport const useInstance = createUseInstanceHook();\n","import { useEffect, useState } from 'react';\n\nexport const useIntersectionObserver = (\n callback: IntersectionObserverCallback,\n options?: IntersectionObserverInit,\n) => {\n const [intersectionObserver] = useState(\n () => new IntersectionObserver(callback, options),\n );\n\n useEffect(() => {\n return () => {\n intersectionObserver.disconnect();\n };\n }, []);\n\n return intersectionObserver;\n};\n","import { useRef } from 'react';\n\nexport const useLastDefinedValue = <T>(value: T) => {\n const ref = useRef(value);\n if (value != null) {\n ref.current = value;\n }\n return ref.current;\n};\n","import { useRef } from 'react';\n\nexport const useLastValueRef = <T>(value: T | null | undefined) => {\n const ref = useRef(value);\n\n if (value != null) {\n ref.current = value;\n }\n\n return ref;\n};\n","import { useEffect } from 'react';\nimport { useSyncRef } from './use-sync-ref.js';\n\nexport const useLifeCycle = (\n fn: () => {\n mount?: VoidFunction;\n unmount?: VoidFunction;\n },\n) => {\n const fnRef = useSyncRef(fn);\n\n useEffect(() => {\n const fnOperation = fnRef.current();\n fnOperation.mount?.();\n return fnOperation.unmount?.();\n }, []);\n};\n","import { useLayoutEffect } from 'react';\nimport { useDefineRef } from './use-define-ref.js';\n\nexport const useResizeObserver = (callback: ResizeObserverCallback) => {\n const resizeObserverRef = useDefineRef(() => new ResizeObserver(callback));\n\n useLayoutEffect(() => {\n return () => {\n resizeObserverRef.current.disconnect();\n };\n }, []);\n\n return resizeObserverRef;\n};\n","import { useCallback, useState } from 'react';\n\nexport const useToggle = (initialState?: boolean) => {\n const [toggled, setToggled] = useState(!!initialState);\n\n const toggle = useCallback(() => setToggled((toggled) => !toggled), []);\n\n return [toggled, toggle, setToggled] as const;\n};\n","import { useState } from 'react';\n\nexport const useValue = <T>(defaults: T | (() => T)) => {\n const [value, setValue] = useState<T>(defaults);\n\n return {\n value,\n set: setValue,\n };\n};\n","import { useEffect, useState } from 'react';\n\nexport const useVisibilityState = () => {\n const [state, setState] = useState<DocumentVisibilityState>();\n\n useEffect(() => {\n const handleVisibilityChange = () => {\n setState(document.visibilityState);\n };\n\n document.addEventListener('visibilitychange', handleVisibilityChange);\n\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n };\n }, []);\n\n return state;\n};\n"],"names":["useConstant","defineValue","ref","useRef","useAbortController","controller","useEffect","useAbortSignal","useSyncRef","value","useEventListener","event","handler","options","deps","node","handlerRef","handleEvent","e","useClickOutside","contentRef","onClick","useDefineRef","defineFn","useElementRef","selector","useLayoutEffect","useEvent","useCallback","args","fn","useFlag","defaultValue","enabled","setEnabled","useState","toggle","enable","disable","flagObjRef","useForceUpdate","setState","useInitialHeight","initialHeight","setInitialHeight","createUseInstanceHook","extension","factory","config","abortSignal","instance","useInstance","useIntersectionObserver","callback","intersectionObserver","useLastDefinedValue","useLastValueRef","useLifeCycle","fnRef","fnOperation","useResizeObserver","resizeObserverRef","useToggle","initialState","toggled","setToggled","useValue","defaults","setValue","useVisibilityState","state","handleVisibilityChange"],"mappings":"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"}
package/react.js ADDED
@@ -0,0 +1,152 @@
1
+ import { useRef as s, useEffect as i, useLayoutEffect as l, useCallback as u, useState as o } from "react";
2
+ const b = (e) => {
3
+ const t = s();
4
+ return t.current || (t.current = { value: e() }), t.current.value;
5
+ }, v = () => {
6
+ const e = b(() => new AbortController());
7
+ return i(() => () => {
8
+ e.abort();
9
+ }, []), e;
10
+ }, m = () => v().signal, g = (e) => {
11
+ const t = s(e);
12
+ return t.current = e, t;
13
+ }, y = ({
14
+ event: e,
15
+ handler: t,
16
+ options: n,
17
+ deps: r = [],
18
+ node: c = document
19
+ }) => {
20
+ const f = g(t);
21
+ i(() => {
22
+ const a = (d) => f.current(d);
23
+ return c.addEventListener(e, a, n), () => c.removeEventListener(e, a, n);
24
+ }, r);
25
+ }, L = ({
26
+ contentRef: e,
27
+ onClick: t,
28
+ options: n
29
+ }) => {
30
+ y({
31
+ event: "mousedown",
32
+ handler: (r) => {
33
+ e.current && !e.current.contains(r.target) && t();
34
+ },
35
+ options: n
36
+ });
37
+ }, h = (e) => {
38
+ const t = s(void 0);
39
+ return t.current || (t.current = e()), t;
40
+ }, O = (e) => {
41
+ const t = s();
42
+ return l(() => {
43
+ t.current = e();
44
+ }, []), t;
45
+ }, p = (e) => {
46
+ const t = s(e);
47
+ return l(() => {
48
+ t.current = e;
49
+ }), u((...n) => {
50
+ const r = t.current;
51
+ return r(...n);
52
+ }, []);
53
+ }, S = (e = !1) => {
54
+ const [t, n] = o(e), r = u(() => n((d) => !d), []), c = u(() => n(!0), []), f = u(() => n(!1), []), a = s({
55
+ enabled: t,
56
+ toggle: r,
57
+ enable: c,
58
+ disable: f
59
+ });
60
+ return a.current.enabled = t, a.current;
61
+ }, C = () => {
62
+ const [, e] = o(null);
63
+ return u(() => {
64
+ e({});
65
+ }, []);
66
+ }, I = () => {
67
+ const e = s(null), [t, n] = o(
68
+ void 0
69
+ );
70
+ return i(() => {
71
+ e.current && !t && n(e.current.offsetHeight);
72
+ }, [t]), { ref: e, initialHeight: t };
73
+ }, E = (e) => (t, n) => {
74
+ const r = m(), c = b(
75
+ () => t({
76
+ ...e,
77
+ abortSignal: r,
78
+ payload: n?.payload
79
+ })
80
+ );
81
+ return l(() => {
82
+ n?.onUpdate?.(n.payload);
83
+ }, [n?.payload]), c;
84
+ }, V = E(), H = (e, t) => {
85
+ const [n] = o(
86
+ () => new IntersectionObserver(e, t)
87
+ );
88
+ return i(() => () => {
89
+ n.disconnect();
90
+ }, []), n;
91
+ }, w = (e) => {
92
+ const t = s(e);
93
+ return e != null && (t.current = e), t.current;
94
+ }, k = (e) => {
95
+ const t = s(e);
96
+ return e != null && (t.current = e), t;
97
+ }, z = (e) => {
98
+ const t = g(e);
99
+ i(() => {
100
+ const n = t.current();
101
+ return n.mount?.(), n.unmount?.();
102
+ }, []);
103
+ }, A = (e) => {
104
+ const t = h(() => new ResizeObserver(e));
105
+ return l(() => () => {
106
+ t.current.disconnect();
107
+ }, []), t;
108
+ }, U = (e) => {
109
+ const [t, n] = o(!!e), r = u(() => n((c) => !c), []);
110
+ return [t, r, n];
111
+ }, D = (e) => {
112
+ const [t, n] = o(e);
113
+ return {
114
+ value: t,
115
+ set: n
116
+ };
117
+ }, F = () => {
118
+ const [e, t] = o();
119
+ return i(() => {
120
+ const n = () => {
121
+ t(document.visibilityState);
122
+ };
123
+ return document.addEventListener("visibilitychange", n), () => {
124
+ document.removeEventListener("visibilitychange", n);
125
+ };
126
+ }, []), e;
127
+ };
128
+ export {
129
+ E as createUseInstanceHook,
130
+ v as useAbortController,
131
+ m as useAbortSignal,
132
+ L as useClickOutside,
133
+ b as useConstant,
134
+ h as useDefineRef,
135
+ O as useElementRef,
136
+ p as useEvent,
137
+ y as useEventListener,
138
+ S as useFlag,
139
+ C as useForceUpdate,
140
+ I as useInitialHeight,
141
+ V as useInstance,
142
+ H as useIntersectionObserver,
143
+ w as useLastDefinedValue,
144
+ k as useLastValueRef,
145
+ z as useLifeCycle,
146
+ A as useResizeObserver,
147
+ g as useSyncRef,
148
+ U as useToggle,
149
+ D as useValue,
150
+ F as useVisibilityState
151
+ };
152
+ //# sourceMappingURL=react.js.map
package/react.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sources":["../src/react/hooks/use-constant.ts","../src/react/hooks/use-abort-controller.ts","../src/react/hooks/use-abort-signal.ts","../src/react/hooks/use-sync-ref.ts","../src/react/hooks/use-event-listener.ts","../src/react/hooks/use-click-outside.ts","../src/react/hooks/use-define-ref.ts","../src/react/hooks/use-element-ref.ts","../src/react/hooks/use-event.ts","../src/react/hooks/use-flag.ts","../src/react/hooks/use-force-update.ts","../src/react/hooks/use-initial-height.ts","../src/react/hooks/use-instance.ts","../src/react/hooks/use-intersection-observer.ts","../src/react/hooks/use-last-defined-value.ts","../src/react/hooks/use-last-value-ref.ts","../src/react/hooks/use-life-cycle.ts","../src/react/hooks/use-resize-observer.ts","../src/react/hooks/use-toggle.ts","../src/react/hooks/use-value.ts","../src/react/hooks/use-visibility-state.ts"],"sourcesContent":["import { useRef } from 'react';\n\n/**\n * React hook for creating a value exactly once.\n * useMemo doesn't give this guarantee unfortunately -\n * https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily\n * https://reactjs.org/docs/hooks-reference.html#usememo\n * @param defineValue Function which returns defined value.\n */\nexport const useConstant = <T>(defineValue: () => T): T => {\n const ref = useRef<{ value: T }>();\n\n if (!ref.current) {\n ref.current = { value: defineValue() };\n }\n\n return ref.current.value;\n};\n","import { useEffect } from 'react';\n\nimport { useConstant } from './use-constant.js';\n\nexport const useAbortController = () => {\n const controller = useConstant(() => new AbortController());\n\n useEffect(() => {\n return () => {\n controller.abort();\n };\n }, []);\n\n return controller;\n};\n","import { useAbortController } from './use-abort-controller.js';\n\nexport const useAbortSignal = () => {\n return useAbortController().signal;\n};\n","import { useRef } from 'react';\n\nexport const useSyncRef = <T>(value: T) => {\n const ref = useRef(value);\n ref.current = value;\n return ref;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { useEffect } from 'react';\nimport { useSyncRef } from './use-sync-ref.js';\n\nexport const useEventListener = <EventName extends keyof HTMLElementEventMap>({\n event,\n handler,\n options,\n deps = [],\n node = document,\n}: {\n event: EventName;\n handler: (e: HTMLElementEventMap[EventName]) => void;\n options?: boolean | AddEventListenerOptions;\n deps?: unknown[];\n node?: HTMLElement | Document | Window;\n}) => {\n const handlerRef = useSyncRef(handler);\n\n useEffect(() => {\n const handleEvent = (e: HTMLElementEventMap[EventName]) =>\n handlerRef.current(e);\n\n // @ts-expect-error\n node.addEventListener(event, handleEvent, options);\n // @ts-expect-error\n return () => node.removeEventListener(event, handleEvent, options);\n }, deps);\n};\n","import type { MutableRefObject } from 'react';\nimport { useEventListener } from './use-event-listener.js';\n\ntype ClickOutsideInput = {\n contentRef: MutableRefObject<HTMLElement | null>;\n onClick: VoidFunction;\n options?: AddEventListenerOptions;\n};\n\nexport const useClickOutside = ({\n contentRef,\n onClick,\n options,\n}: ClickOutsideInput) => {\n useEventListener({\n event: 'mousedown',\n handler: (event) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n onClick();\n }\n },\n options,\n });\n};\n","import { type MutableRefObject, useRef } from 'react';\n\n/**\n * React hook for creating a value exactly once.\n * useMemo doesn't give this guarantee unfortunately -\n * https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily\n * https://reactjs.org/docs/hooks-reference.html#usememo\n * @param defineFn Function which returns defined value.\n */\nexport const useDefineRef = <T>(defineFn: () => T): MutableRefObject<T> => {\n const ref = useRef<T>(void 0 as T);\n\n if (!ref.current) {\n ref.current = defineFn();\n }\n\n return ref;\n};\n","import { useLayoutEffect, useRef } from 'react';\n\nexport const useElementRef = <T extends HTMLElement>(selector: () => T) => {\n const ref = useRef<T>();\n\n useLayoutEffect(() => {\n ref.current = selector();\n }, []);\n\n return ref;\n};\n","/**\n * A Hook to define an event handler with an always-stable function identity.\n *\n * borrowed from @gaeron\n * https://github.com/reactjs/rfcs/blob/useevent/text/0000-useevent.md\n */\nimport { useCallback, useLayoutEffect, useRef } from 'react';\nimport type { AnyFunction } from 'yummies/utils/types';\n\nexport const useEvent = <H extends AnyFunction>(handler: H): H => {\n const handlerRef = useRef<H>(handler);\n\n // In a real implementation, this would run before layout effects\n useLayoutEffect(() => {\n handlerRef.current = handler;\n });\n\n return useCallback((...args: unknown[]) => {\n // In a real implementation, this would throw if called during render\n const fn = handlerRef.current as AnyFunction;\n return fn(...args);\n }, []) as unknown as H;\n};\n","import { useCallback, useRef, useState } from 'react';\n\nexport interface FlagHook {\n enabled: boolean;\n toggle: VoidFunction;\n enable: VoidFunction;\n disable: VoidFunction;\n}\n\nexport const useFlag = (defaultValue = false): FlagHook => {\n const [enabled, setEnabled] = useState(defaultValue);\n\n const toggle = useCallback(() => setEnabled((value) => !value), []);\n const enable = useCallback(() => setEnabled(true), []);\n const disable = useCallback(() => setEnabled(false), []);\n\n const flagObjRef = useRef<FlagHook>({\n enabled,\n toggle,\n enable,\n disable,\n });\n\n flagObjRef.current.enabled = enabled;\n\n return flagObjRef.current;\n};\n","import { useCallback, useState } from 'react';\n\nexport const useForceUpdate = () => {\n const [, setState] = useState<unknown>(null);\n\n return useCallback(() => {\n setState({});\n }, []);\n};\n","import { useEffect, useRef, useState } from 'react';\n\nexport const useInitialHeight = <T extends HTMLElement>() => {\n const ref = useRef<T | null>(null);\n const [initialHeight, setInitialHeight] = useState<number | undefined>(\n undefined,\n );\n\n useEffect(() => {\n if (ref.current && !initialHeight) {\n setInitialHeight(ref.current.offsetHeight);\n }\n }, [initialHeight]);\n\n return { ref, initialHeight };\n};\n","import { useLayoutEffect } from 'react';\nimport { useAbortSignal } from './use-abort-signal.js';\nimport { useConstant } from './use-constant.js';\n\nexport type InstanceCreateConfig<TPayload, TExtension = {}> = TExtension & {\n abortSignal: AbortSignal;\n payload: TPayload;\n};\n\nexport const createUseInstanceHook =\n <TExtension = {}>(extension?: TExtension) =>\n <TInstance, TPayload>(\n factory: (\n config: InstanceCreateConfig<NoInfer<TPayload>, TExtension>,\n ) => TInstance,\n config?: {\n payload?: TPayload;\n onUpdate?: (payload: TPayload) => void;\n },\n ) => {\n const abortSignal = useAbortSignal();\n\n const instance = useConstant(() =>\n factory({\n ...(extension as TExtension),\n abortSignal,\n payload: config?.payload as any,\n }),\n );\n\n useLayoutEffect(() => {\n config?.onUpdate?.(config.payload!);\n }, [config?.payload]);\n\n return instance;\n };\n\n/**\n * The `useInstance` hook is used to create and manage an instance of an object\n * that requires access to the root store and an abort signal.\n *\n * You can create YOUR OWN CUSTOM `useInstance` hook using `createUseInstanceHook` if you need\n * to provide some specific data\n *\n * @param factory - A factory function that takes a configuration and returns an instance.\n * @param config - An optional configuration containing additional input parameters and an update function.\n * @returns An instance created by the factory function.\n */\nexport const useInstance = createUseInstanceHook();\n","import { useEffect, useState } from 'react';\n\nexport const useIntersectionObserver = (\n callback: IntersectionObserverCallback,\n options?: IntersectionObserverInit,\n) => {\n const [intersectionObserver] = useState(\n () => new IntersectionObserver(callback, options),\n );\n\n useEffect(() => {\n return () => {\n intersectionObserver.disconnect();\n };\n }, []);\n\n return intersectionObserver;\n};\n","import { useRef } from 'react';\n\nexport const useLastDefinedValue = <T>(value: T) => {\n const ref = useRef(value);\n if (value != null) {\n ref.current = value;\n }\n return ref.current;\n};\n","import { useRef } from 'react';\n\nexport const useLastValueRef = <T>(value: T | null | undefined) => {\n const ref = useRef(value);\n\n if (value != null) {\n ref.current = value;\n }\n\n return ref;\n};\n","import { useEffect } from 'react';\nimport { useSyncRef } from './use-sync-ref.js';\n\nexport const useLifeCycle = (\n fn: () => {\n mount?: VoidFunction;\n unmount?: VoidFunction;\n },\n) => {\n const fnRef = useSyncRef(fn);\n\n useEffect(() => {\n const fnOperation = fnRef.current();\n fnOperation.mount?.();\n return fnOperation.unmount?.();\n }, []);\n};\n","import { useLayoutEffect } from 'react';\nimport { useDefineRef } from './use-define-ref.js';\n\nexport const useResizeObserver = (callback: ResizeObserverCallback) => {\n const resizeObserverRef = useDefineRef(() => new ResizeObserver(callback));\n\n useLayoutEffect(() => {\n return () => {\n resizeObserverRef.current.disconnect();\n };\n }, []);\n\n return resizeObserverRef;\n};\n","import { useCallback, useState } from 'react';\n\nexport const useToggle = (initialState?: boolean) => {\n const [toggled, setToggled] = useState(!!initialState);\n\n const toggle = useCallback(() => setToggled((toggled) => !toggled), []);\n\n return [toggled, toggle, setToggled] as const;\n};\n","import { useState } from 'react';\n\nexport const useValue = <T>(defaults: T | (() => T)) => {\n const [value, setValue] = useState<T>(defaults);\n\n return {\n value,\n set: setValue,\n };\n};\n","import { useEffect, useState } from 'react';\n\nexport const useVisibilityState = () => {\n const [state, setState] = useState<DocumentVisibilityState>();\n\n useEffect(() => {\n const handleVisibilityChange = () => {\n setState(document.visibilityState);\n };\n\n document.addEventListener('visibilitychange', handleVisibilityChange);\n\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n };\n }, []);\n\n return state;\n};\n"],"names":["useConstant","defineValue","ref","useRef","useAbortController","controller","useEffect","useAbortSignal","useSyncRef","value","useEventListener","event","handler","options","deps","node","handlerRef","handleEvent","e","useClickOutside","contentRef","onClick","useDefineRef","defineFn","useElementRef","selector","useLayoutEffect","useEvent","useCallback","args","fn","useFlag","defaultValue","enabled","setEnabled","useState","toggle","enable","disable","flagObjRef","useForceUpdate","setState","useInitialHeight","initialHeight","setInitialHeight","createUseInstanceHook","extension","factory","config","abortSignal","instance","useInstance","useIntersectionObserver","callback","intersectionObserver","useLastDefinedValue","useLastValueRef","useLifeCycle","fnRef","fnOperation","useResizeObserver","resizeObserverRef","useToggle","initialState","toggled","setToggled","useValue","defaults","setValue","useVisibilityState","state","handleVisibilityChange"],"mappings":"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"}
package/sound.cjs CHANGED
@@ -1,16 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.playSound = void 0;
4
- /**
5
- * Воспроизводит звук из файла
6
- */
7
- const playSound = async (file, { volume = 1 } = {}) => {
8
- let audio = new Audio(file);
9
- audio.volume = volume;
10
- audio.muted = !volume;
11
- await audio.play();
12
- audio.remove();
13
- // @ts-expect-error
14
- audio = null;
15
- };
16
- exports.playSound = playSound;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=async(t,{volume:o=1}={})=>{let e=new Audio(t);e.volume=o,e.muted=!o,await e.play(),e.remove(),e=null};exports.playSound=a;
2
+ //# sourceMappingURL=sound.cjs.map
package/sound.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sound.cjs","sources":["../src/sound.ts"],"sourcesContent":["/**\n * Воспроизводит звук из файла\n */\nexport const playSound = async (\n file: string,\n { volume = 1 }: { volume?: number } = {},\n) => {\n let audio = new Audio(file);\n audio.volume = volume;\n audio.muted = !volume;\n await audio.play();\n audio.remove();\n // @ts-expect-error\n audio = null;\n};\n"],"names":["playSound","file","volume","audio"],"mappings":"gFAGO,MAAMA,EAAY,MACvBC,EACA,CAAE,OAAAC,EAAS,CAAA,EAA2B,CAAA,IACnC,CACH,IAAIC,EAAQ,IAAI,MAAMF,CAAI,EAC1BE,EAAM,OAASD,EACfC,EAAM,MAAQ,CAACD,EACf,MAAMC,EAAM,KAAA,EACZA,EAAM,OAAA,EAENA,EAAQ,IACV"}
package/sound.js CHANGED
@@ -1,12 +1,8 @@
1
- /**
2
- * Воспроизводит звук из файла
3
- */
4
- export const playSound = async (file, { volume = 1 } = {}) => {
5
- let audio = new Audio(file);
6
- audio.volume = volume;
7
- audio.muted = !volume;
8
- await audio.play();
9
- audio.remove();
10
- // @ts-expect-error
11
- audio = null;
1
+ const l = async (o, { volume: e = 1 } = {}) => {
2
+ let a = new Audio(o);
3
+ a.volume = e, a.muted = !e, await a.play(), a.remove(), a = null;
12
4
  };
5
+ export {
6
+ l as playSound
7
+ };
8
+ //# sourceMappingURL=sound.js.map
package/sound.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sound.js","sources":["../src/sound.ts"],"sourcesContent":["/**\n * Воспроизводит звук из файла\n */\nexport const playSound = async (\n file: string,\n { volume = 1 }: { volume?: number } = {},\n) => {\n let audio = new Audio(file);\n audio.volume = volume;\n audio.muted = !volume;\n await audio.play();\n audio.remove();\n // @ts-expect-error\n audio = null;\n};\n"],"names":["playSound","file","volume","audio"],"mappings":"AAGO,MAAMA,IAAY,OACvBC,GACA,EAAE,QAAAC,IAAS,EAAA,IAA2B,CAAA,MACnC;AACH,MAAIC,IAAQ,IAAI,MAAMF,CAAI;AAC1B,EAAAE,EAAM,SAASD,GACfC,EAAM,QAAQ,CAACD,GACf,MAAMC,EAAM,KAAA,GACZA,EAAM,OAAA,GAENA,IAAQ;AACV;"}
package/text.cjs CHANGED
@@ -1,53 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.splitTextByLines = exports.declension = void 0;
4
- /**
5
- * Склонение слова в зависимости от количества
6
- * @example
7
- * declension(1, ['слово', 'слова', 'слов']) // 'слово'
8
- * @example
9
- * declension(2, ['слово', 'слова', 'слов']) // 'слова'
10
- * @example
11
- * declension(5, ['слово', 'слова', 'слов']) // 'слов'
12
- */
13
- const declension = (count, txt, cases = [2, 0, 1, 1, 1, 2]) => txt[count % 100 > 4 && count % 100 < 20 ? 2 : cases[Math.min(count % 10, 5)]];
14
- exports.declension = declension;
15
- /**
16
- * Разбиение текста на линии
17
- */
18
- const splitTextByLines = (text, lineLingth = 60) => {
19
- const words = text.split(/\s+/).filter((word) => word !== '');
20
- const lines = [];
21
- let currentLine = '';
22
- for (const word of words) {
23
- if (word.length > lineLingth) {
24
- if (currentLine !== '') {
25
- lines.push(currentLine);
26
- currentLine = '';
27
- }
28
- let start = 0;
29
- while (start < word.length) {
30
- const chunk = word.slice(start, start + lineLingth);
31
- lines.push(chunk);
32
- start += lineLingth;
33
- }
34
- continue;
35
- }
36
- // Проверка возможности добавления слова в текущую строку
37
- if (currentLine === '') {
38
- currentLine = word;
39
- }
40
- else if (currentLine.length + 1 + word.length <= lineLingth) {
41
- currentLine += ` ${word}`;
42
- }
43
- else {
44
- lines.push(currentLine);
45
- currentLine = word;
46
- }
47
- }
48
- if (currentLine !== '' || lines.length === 0) {
49
- lines.push(currentLine);
50
- }
51
- return lines;
52
- };
53
- exports.splitTextByLines = splitTextByLines;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=(l,t,o=[2,0,1,1,1,2])=>t[l%100>4&&l%100<20?2:o[Math.min(l%10,5)]],f=(l,t=60)=>{const o=l.split(/\s+/).filter(s=>s!==""),n=[];let e="";for(const s of o){if(s.length>t){e!==""&&(n.push(e),e="");let i=0;for(;i<s.length;){const r=s.slice(i,i+t);n.push(r),i+=t}continue}e===""?e=s:e.length+1+s.length<=t?e+=` ${s}`:(n.push(e),e=s)}return(e!==""||n.length===0)&&n.push(e),n};exports.declension=c;exports.splitTextByLines=f;
2
+ //# sourceMappingURL=text.cjs.map
package/text.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.cjs","sources":["../src/text.ts"],"sourcesContent":["/**\n * Склонение слова в зависимости от количества\n * @example\n * declension(1, ['слово', 'слова', 'слов']) // 'слово'\n * @example\n * declension(2, ['слово', 'слова', 'слов']) // 'слова'\n * @example\n * declension(5, ['слово', 'слова', 'слов']) // 'слов'\n */\nexport const declension = (\n count: number,\n txt: readonly [one: string, two: string, five: string],\n cases = [2, 0, 1, 1, 1, 2],\n) =>\n txt[count % 100 > 4 && count % 100 < 20 ? 2 : cases[Math.min(count % 10, 5)]];\n\n/**\n * Разбиение текста на линии\n */\nexport const splitTextByLines = (\n text: string,\n lineLingth: number = 60,\n): string[] => {\n const words = text.split(/\\s+/).filter((word) => word !== '');\n const lines = [];\n let currentLine = '';\n\n for (const word of words) {\n if (word.length > lineLingth) {\n if (currentLine !== '') {\n lines.push(currentLine);\n currentLine = '';\n }\n\n let start = 0;\n while (start < word.length) {\n const chunk = word.slice(start, start + lineLingth);\n lines.push(chunk);\n start += lineLingth;\n }\n continue;\n }\n\n // Проверка возможности добавления слова в текущую строку\n if (currentLine === '') {\n currentLine = word;\n } else if (currentLine.length + 1 + word.length <= lineLingth) {\n currentLine += ` ${word}`;\n } else {\n lines.push(currentLine);\n currentLine = word;\n }\n }\n\n if (currentLine !== '' || lines.length === 0) {\n lines.push(currentLine);\n }\n\n return lines;\n};\n"],"names":["declension","count","txt","cases","splitTextByLines","text","lineLingth","words","word","lines","currentLine","start","chunk"],"mappings":"gFASO,MAAMA,EAAa,CACxBC,EACAC,EACAC,EAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,IAEzBD,EAAID,EAAQ,IAAM,GAAKA,EAAQ,IAAM,GAAK,EAAIE,EAAM,KAAK,IAAIF,EAAQ,GAAI,CAAC,CAAC,CAAC,EAKjEG,EAAmB,CAC9BC,EACAC,EAAqB,KACR,CACb,MAAMC,EAAQF,EAAK,MAAM,KAAK,EAAE,OAAQG,GAASA,IAAS,EAAE,EACtDC,EAAQ,CAAA,EACd,IAAIC,EAAc,GAElB,UAAWF,KAAQD,EAAO,CACxB,GAAIC,EAAK,OAASF,EAAY,CACxBI,IAAgB,KAClBD,EAAM,KAAKC,CAAW,EACtBA,EAAc,IAGhB,IAAIC,EAAQ,EACZ,KAAOA,EAAQH,EAAK,QAAQ,CAC1B,MAAMI,EAAQJ,EAAK,MAAMG,EAAOA,EAAQL,CAAU,EAClDG,EAAM,KAAKG,CAAK,EAChBD,GAASL,CACX,CACA,QACF,CAGII,IAAgB,GAClBA,EAAcF,EACLE,EAAY,OAAS,EAAIF,EAAK,QAAUF,EACjDI,GAAe,IAAIF,CAAI,IAEvBC,EAAM,KAAKC,CAAW,EACtBA,EAAcF,EAElB,CAEA,OAAIE,IAAgB,IAAMD,EAAM,SAAW,IACzCA,EAAM,KAAKC,CAAW,EAGjBD,CACT"}
package/text.js CHANGED
@@ -1,48 +1,22 @@
1
- /**
2
- * Склонение слова в зависимости от количества
3
- * @example
4
- * declension(1, ['слово', 'слова', 'слов']) // 'слово'
5
- * @example
6
- * declension(2, ['слово', 'слова', 'слов']) // 'слова'
7
- * @example
8
- * declension(5, ['слово', 'слова', 'слов']) // 'слов'
9
- */
10
- export const declension = (count, txt, cases = [2, 0, 1, 1, 1, 2]) => txt[count % 100 > 4 && count % 100 < 20 ? 2 : cases[Math.min(count % 10, 5)]];
11
- /**
12
- * Разбиение текста на линии
13
- */
14
- export const splitTextByLines = (text, lineLingth = 60) => {
15
- const words = text.split(/\s+/).filter((word) => word !== '');
16
- const lines = [];
17
- let currentLine = '';
18
- for (const word of words) {
19
- if (word.length > lineLingth) {
20
- if (currentLine !== '') {
21
- lines.push(currentLine);
22
- currentLine = '';
23
- }
24
- let start = 0;
25
- while (start < word.length) {
26
- const chunk = word.slice(start, start + lineLingth);
27
- lines.push(chunk);
28
- start += lineLingth;
29
- }
30
- continue;
31
- }
32
- // Проверка возможности добавления слова в текущую строку
33
- if (currentLine === '') {
34
- currentLine = word;
35
- }
36
- else if (currentLine.length + 1 + word.length <= lineLingth) {
37
- currentLine += ` ${word}`;
38
- }
39
- else {
40
- lines.push(currentLine);
41
- currentLine = word;
42
- }
1
+ const c = (l, t, i = [2, 0, 1, 1, 1, 2]) => t[l % 100 > 4 && l % 100 < 20 ? 2 : i[Math.min(l % 10, 5)]], h = (l, t = 60) => {
2
+ const i = l.split(/\s+/).filter((s) => s !== ""), n = [];
3
+ let e = "";
4
+ for (const s of i) {
5
+ if (s.length > t) {
6
+ e !== "" && (n.push(e), e = "");
7
+ let o = 0;
8
+ for (; o < s.length; ) {
9
+ const r = s.slice(o, o + t);
10
+ n.push(r), o += t;
11
+ }
12
+ continue;
43
13
  }
44
- if (currentLine !== '' || lines.length === 0) {
45
- lines.push(currentLine);
46
- }
47
- return lines;
14
+ e === "" ? e = s : e.length + 1 + s.length <= t ? e += ` ${s}` : (n.push(e), e = s);
15
+ }
16
+ return (e !== "" || n.length === 0) && n.push(e), n;
17
+ };
18
+ export {
19
+ c as declension,
20
+ h as splitTextByLines
48
21
  };
22
+ //# sourceMappingURL=text.js.map
package/text.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sources":["../src/text.ts"],"sourcesContent":["/**\n * Склонение слова в зависимости от количества\n * @example\n * declension(1, ['слово', 'слова', 'слов']) // 'слово'\n * @example\n * declension(2, ['слово', 'слова', 'слов']) // 'слова'\n * @example\n * declension(5, ['слово', 'слова', 'слов']) // 'слов'\n */\nexport const declension = (\n count: number,\n txt: readonly [one: string, two: string, five: string],\n cases = [2, 0, 1, 1, 1, 2],\n) =>\n txt[count % 100 > 4 && count % 100 < 20 ? 2 : cases[Math.min(count % 10, 5)]];\n\n/**\n * Разбиение текста на линии\n */\nexport const splitTextByLines = (\n text: string,\n lineLingth: number = 60,\n): string[] => {\n const words = text.split(/\\s+/).filter((word) => word !== '');\n const lines = [];\n let currentLine = '';\n\n for (const word of words) {\n if (word.length > lineLingth) {\n if (currentLine !== '') {\n lines.push(currentLine);\n currentLine = '';\n }\n\n let start = 0;\n while (start < word.length) {\n const chunk = word.slice(start, start + lineLingth);\n lines.push(chunk);\n start += lineLingth;\n }\n continue;\n }\n\n // Проверка возможности добавления слова в текущую строку\n if (currentLine === '') {\n currentLine = word;\n } else if (currentLine.length + 1 + word.length <= lineLingth) {\n currentLine += ` ${word}`;\n } else {\n lines.push(currentLine);\n currentLine = word;\n }\n }\n\n if (currentLine !== '' || lines.length === 0) {\n lines.push(currentLine);\n }\n\n return lines;\n};\n"],"names":["declension","count","txt","cases","splitTextByLines","text","lineLingth","words","word","lines","currentLine","start","chunk"],"mappings":"AASO,MAAMA,IAAa,CACxBC,GACAC,GACAC,IAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAEzBD,EAAID,IAAQ,MAAM,KAAKA,IAAQ,MAAM,KAAK,IAAIE,EAAM,KAAK,IAAIF,IAAQ,IAAI,CAAC,CAAC,CAAC,GAKjEG,IAAmB,CAC9BC,GACAC,IAAqB,OACR;AACb,QAAMC,IAAQF,EAAK,MAAM,KAAK,EAAE,OAAO,CAACG,MAASA,MAAS,EAAE,GACtDC,IAAQ,CAAA;AACd,MAAIC,IAAc;AAElB,aAAWF,KAAQD,GAAO;AACxB,QAAIC,EAAK,SAASF,GAAY;AAC5B,MAAII,MAAgB,OAClBD,EAAM,KAAKC,CAAW,GACtBA,IAAc;AAGhB,UAAIC,IAAQ;AACZ,aAAOA,IAAQH,EAAK,UAAQ;AAC1B,cAAMI,IAAQJ,EAAK,MAAMG,GAAOA,IAAQL,CAAU;AAClD,QAAAG,EAAM,KAAKG,CAAK,GAChBD,KAASL;AAAA,MACX;AACA;AAAA,IACF;AAGA,IAAII,MAAgB,KAClBA,IAAcF,IACLE,EAAY,SAAS,IAAIF,EAAK,UAAUF,IACjDI,KAAe,IAAIF,CAAI,MAEvBC,EAAM,KAAKC,CAAW,GACtBA,IAAcF;AAAA,EAElB;AAEA,UAAIE,MAAgB,MAAMD,EAAM,WAAW,MACzCA,EAAM,KAAKC,CAAW,GAGjBD;AACT;"}
@@ -1,4 +1,4 @@
1
- import type { AnyFunction, AnyObject } from "../utils/types.js";
1
+ import { AnyFunction, AnyObject } from '../utils/types.ts';
2
2
  /**
3
3
  * Check if a value is not null or undefined
4
4
  * @param value the value to check
@@ -1 +1 @@
1
- {"version":3,"file":"_exports.d.ts","sourceRoot":"","sources":["../../src/type-guard/_exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,0BAA0B;AAoDhE;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,KAAG,KAAK,IAAI,CACrD,CAAC;AAEhB;;;;GAIG;AACH,eAAO,MAAM,MAAM,UAhBT,OAAO,KAAG,KAAK,QAgB6B,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,WAAW,UAvBd,OAAO,KAAG,KAAK,aAuB4C,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UA9BX,OAAO,KAAG,KAAK,aA8BsC,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,OAAO,UArCV,OAAO,KAAG,KAAK,aAqCoC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UA5CX,OAAO,KAAG,KAAK,UA4CmC,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UAnDX,OAAO,KAAG,KAAK,UAmDmC,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,SAAS,UA1DZ,OAAO,KAAG,KAAK,WA0DsC,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,UAAU,UAjEb,OAAO,KAAG,KAAK,eAiE4C,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UAxEX,OAAO,KAAG,KAAK,UAwEmC,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,SAAS,UA/EZ,OAAO,KAAG,KAAK,eA+E0C,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,KAAK,EAAwC,CACxD,KAAK,EAAE,OAAO,KACX,OAAO,CAAC;AAEb;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAA6C,CAClE,KAAK,EAAE,OAAO,KACX,OAAO,CAAC;AAEb;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UAxGX,OAAO,KAAG,KAAK,UAwGmC,CAAC"}
1
+ {"version":3,"file":"_exports.d.ts","sourceRoot":"","sources":["../../src/type-guard/_exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAoDlE;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,KAAG,KAAK,IAAI,CACrD,CAAC;AAEhB;;;;GAIG;AACH,eAAO,MAAM,MAAM,UAhBT,OAAO,KAAG,KAAK,QAgB6B,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,WAAW,UAvBd,OAAO,KAAG,KAAK,aAuB4C,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UA9BX,OAAO,KAAG,KAAK,aA8BsC,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,OAAO,UArCV,OAAO,KAAG,KAAK,aAqCoC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UA5CX,OAAO,KAAG,KAAK,UA4CmC,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UAnDX,OAAO,KAAG,KAAK,UAmDmC,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,SAAS,UA1DZ,OAAO,KAAG,KAAK,WA0DsC,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,UAAU,UAjEb,OAAO,KAAG,KAAK,eAiE4C,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UAxEX,OAAO,KAAG,KAAK,UAwEmC,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,SAAS,UA/EZ,OAAO,KAAG,KAAK,eA+E0C,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,KAAK,EAAwC,CACxD,KAAK,EAAE,OAAO,KACX,OAAO,CAAC;AAEb;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAA6C,CAClE,KAAK,EAAE,OAAO,KACX,OAAO,CAAC;AAEb;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UAxGX,OAAO,KAAG,KAAK,UAwGmC,CAAC"}