yummies 5.7.1 → 5.8.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 (391) hide show
  1. package/async.js +26 -59
  2. package/async.js.map +1 -0
  3. package/common.d.ts +1 -1
  4. package/common.d.ts.map +1 -1
  5. package/common.js +5 -13
  6. package/common.js.map +1 -0
  7. package/complex/global-config.d.ts +1 -1
  8. package/complex/global-config.d.ts.map +1 -1
  9. package/complex/index.d.ts +3 -3
  10. package/complex/index.d.ts.map +1 -1
  11. package/complex/modules-factory.d.ts +1 -1
  12. package/complex/modules-factory.d.ts.map +1 -1
  13. package/complex.js +66 -0
  14. package/complex.js.map +1 -0
  15. package/cookie.d.ts +1 -1
  16. package/cookie.d.ts.map +1 -1
  17. package/cookie.js +4 -8
  18. package/cookie.js.map +1 -0
  19. package/css.d.ts +1 -1
  20. package/css.js +2780 -49
  21. package/css.js.map +1 -0
  22. package/data.js +32 -50
  23. package/data.js.map +1 -0
  24. package/date-time.d.ts +2 -3
  25. package/date-time.d.ts.map +1 -1
  26. package/date-time.js +588 -154
  27. package/date-time.js.map +1 -0
  28. package/device.js +23 -20
  29. package/device.js.map +1 -0
  30. package/encodings.js +269 -265
  31. package/encodings.js.map +1 -0
  32. package/errors.d.ts +1 -1
  33. package/errors.d.ts.map +1 -1
  34. package/errors.js +8 -29
  35. package/errors.js.map +1 -0
  36. package/file.js +19 -23
  37. package/file.js.map +1 -0
  38. package/format/_exports.d.ts +4 -4
  39. package/format/_exports.d.ts.map +1 -1
  40. package/format/index.d.ts +1 -1
  41. package/format/index.d.ts.map +1 -1
  42. package/format/number.d.ts +1 -1
  43. package/format/number.d.ts.map +1 -1
  44. package/format/percent.d.ts +2 -2
  45. package/format/percent.d.ts.map +1 -1
  46. package/format.js +27 -0
  47. package/format.js.map +1 -0
  48. package/html.d.ts +2 -2
  49. package/html.d.ts.map +1 -1
  50. package/html.js +636 -169
  51. package/html.js.map +1 -0
  52. package/id.js +25 -70
  53. package/id.js.map +1 -0
  54. package/imports.js +22 -37
  55. package/imports.js.map +1 -0
  56. package/math.d.ts +1 -1
  57. package/math.d.ts.map +1 -1
  58. package/math.js +10 -14
  59. package/math.js.map +1 -0
  60. package/media.js +54 -96
  61. package/media.js.map +1 -0
  62. package/mobx/apply-observable.d.ts +1 -1
  63. package/mobx/apply-observable.d.ts.map +1 -1
  64. package/mobx/create-enhanced-atom.d.ts +2 -2
  65. package/mobx/create-enhanced-atom.d.ts.map +1 -1
  66. package/mobx/deep-observable-struct.d.ts +1 -1
  67. package/mobx/deep-observable-struct.d.ts.map +1 -1
  68. package/mobx/get-mobx-administration.d.ts +2 -2
  69. package/mobx/get-mobx-administration.d.ts.map +1 -1
  70. package/mobx/index.d.ts +5 -5
  71. package/mobx/index.d.ts.map +1 -1
  72. package/mobx.js +89 -0
  73. package/mobx.js.map +1 -0
  74. package/ms.js +12 -17
  75. package/ms.js.map +1 -0
  76. package/number.js +9 -12
  77. package/number.js.map +1 -0
  78. package/package.json +93 -92
  79. package/parser/_exports.d.ts +3 -3
  80. package/parser/_exports.d.ts.map +1 -1
  81. package/parser/index.d.ts +1 -1
  82. package/parser/index.d.ts.map +1 -1
  83. package/parser/number.d.ts +1 -1
  84. package/parser/number.d.ts.map +1 -1
  85. package/parser/percent.d.ts +2 -2
  86. package/parser/percent.d.ts.map +1 -1
  87. package/parser/string.d.ts +1 -1
  88. package/parser/string.d.ts.map +1 -1
  89. package/parser.js +15 -0
  90. package/parser.js.map +1 -0
  91. package/price.js +13 -16
  92. package/price.js.map +1 -0
  93. package/random.js +11 -13
  94. package/random.js.map +1 -0
  95. package/react/hooks/index.d.ts +21 -21
  96. package/react/hooks/index.d.ts.map +1 -1
  97. package/react/hooks/use-click-outside.d.ts +1 -1
  98. package/react/hooks/use-define-ref.d.ts +1 -1
  99. package/react/hooks/use-element-ref.d.ts +1 -1
  100. package/react/hooks/use-event.d.ts +1 -1
  101. package/react/hooks/use-event.d.ts.map +1 -1
  102. package/react/hooks/use-initial-height.d.ts +1 -1
  103. package/react/hooks/use-last-value-ref.d.ts +1 -1
  104. package/react/hooks/use-resize-observer.d.ts +1 -1
  105. package/react/hooks/use-sync-ref.d.ts +1 -1
  106. package/react/hooks/use-toggle.d.ts +1 -1
  107. package/react/hooks/use-value.d.ts +1 -1
  108. package/react/index.d.ts +1 -1
  109. package/react/index.d.ts.map +1 -1
  110. package/react.js +152 -0
  111. package/react.js.map +1 -0
  112. package/sound.js +7 -11
  113. package/sound.js.map +1 -0
  114. package/text.js +20 -46
  115. package/text.js.map +1 -0
  116. package/type-guard/_exports.d.ts +1 -1
  117. package/type-guard/_exports.d.ts.map +1 -1
  118. package/type-guard/index.d.ts +1 -1
  119. package/type-guard/index.d.ts.map +1 -1
  120. package/type-guard.js +5 -0
  121. package/type-guard.js.map +1 -0
  122. package/utility-types.d.ts.map +1 -0
  123. package/utility-types.js +2 -0
  124. package/utility-types.js.map +1 -0
  125. package/utils/types.js +2 -1
  126. package/utils/types.js.map +1 -0
  127. package/vibrate.js +6 -7
  128. package/vibrate.js.map +1 -0
  129. package/~index-C3wKHvHr.js +80 -0
  130. package/~index-C3wKHvHr.js.map +1 -0
  131. package/~number-EWff2XI6.js +25 -0
  132. package/~number-EWff2XI6.js.map +1 -0
  133. package/~number-baxVnzrJ.js +32 -0
  134. package/~number-baxVnzrJ.js.map +1 -0
  135. package/async.cjs +0 -70
  136. package/async.d.cts +0 -28
  137. package/async.d.cts.map +0 -1
  138. package/common.cjs +0 -18
  139. package/common.d.cts +0 -15
  140. package/common.d.cts.map +0 -1
  141. package/complex/counter.cjs +0 -21
  142. package/complex/counter.d.cts +0 -15
  143. package/complex/counter.d.cts.map +0 -1
  144. package/complex/counter.js +0 -17
  145. package/complex/global-config.cjs +0 -46
  146. package/complex/global-config.d.cts +0 -11
  147. package/complex/global-config.d.cts.map +0 -1
  148. package/complex/global-config.js +0 -41
  149. package/complex/index.cjs +0 -19
  150. package/complex/index.d.cts +0 -4
  151. package/complex/index.d.cts.map +0 -1
  152. package/complex/index.js +0 -3
  153. package/complex/modules-factory.cjs +0 -50
  154. package/complex/modules-factory.d.cts +0 -49
  155. package/complex/modules-factory.d.cts.map +0 -1
  156. package/complex/modules-factory.js +0 -46
  157. package/cookie.cjs +0 -13
  158. package/cookie.d.cts +0 -3
  159. package/cookie.d.cts.map +0 -1
  160. package/css.cjs +0 -64
  161. package/css.d.cts +0 -42
  162. package/css.d.cts.map +0 -1
  163. package/data.cjs +0 -58
  164. package/data.d.cts +0 -4
  165. package/data.d.cts.map +0 -1
  166. package/date-time.cjs +0 -171
  167. package/date-time.d.cts +0 -28
  168. package/date-time.d.cts.map +0 -1
  169. package/device.cjs +0 -28
  170. package/device.d.cts +0 -8
  171. package/device.d.cts.map +0 -1
  172. package/encodings.cjs +0 -270
  173. package/encodings.d.cts +0 -2
  174. package/encodings.d.cts.map +0 -1
  175. package/errors.cjs +0 -34
  176. package/errors.d.cts +0 -19
  177. package/errors.d.cts.map +0 -1
  178. package/file.cjs +0 -29
  179. package/file.d.cts +0 -3
  180. package/file.d.cts.map +0 -1
  181. package/format/_exports.cjs +0 -20
  182. package/format/_exports.d.cts +0 -5
  183. package/format/_exports.d.cts.map +0 -1
  184. package/format/_exports.js +0 -4
  185. package/format/constants.cjs +0 -6
  186. package/format/constants.d.cts +0 -4
  187. package/format/constants.d.cts.map +0 -1
  188. package/format/constants.js +0 -3
  189. package/format/index.cjs +0 -40
  190. package/format/index.d.cts +0 -3
  191. package/format/index.d.cts.map +0 -1
  192. package/format/index.js +0 -4
  193. package/format/number.cjs +0 -48
  194. package/format/number.d.cts +0 -36
  195. package/format/number.d.cts.map +0 -1
  196. package/format/number.js +0 -44
  197. package/format/percent.cjs +0 -27
  198. package/format/percent.d.cts +0 -15
  199. package/format/percent.d.cts.map +0 -1
  200. package/format/percent.js +0 -23
  201. package/format/skip-spaces.cjs +0 -8
  202. package/format/skip-spaces.d.cts +0 -5
  203. package/format/skip-spaces.d.cts.map +0 -1
  204. package/format/skip-spaces.js +0 -4
  205. package/html.cjs +0 -202
  206. package/html.d.cts +0 -44
  207. package/html.d.cts.map +0 -1
  208. package/id.cjs +0 -76
  209. package/id.d.cts +0 -63
  210. package/id.d.cts.map +0 -1
  211. package/imports.cjs +0 -45
  212. package/imports.d.cts +0 -15
  213. package/imports.d.cts.map +0 -1
  214. package/math.cjs +0 -23
  215. package/math.d.cts +0 -13
  216. package/math.d.cts.map +0 -1
  217. package/media.cjs +0 -115
  218. package/media.d.cts +0 -20
  219. package/media.d.cts.map +0 -1
  220. package/mobx/apply-observable.cjs +0 -16
  221. package/mobx/apply-observable.d.cts +0 -4
  222. package/mobx/apply-observable.d.cts.map +0 -1
  223. package/mobx/apply-observable.js +0 -12
  224. package/mobx/create-enhanced-atom.cjs +0 -16
  225. package/mobx/create-enhanced-atom.d.cts +0 -11
  226. package/mobx/create-enhanced-atom.d.cts.map +0 -1
  227. package/mobx/create-enhanced-atom.js +0 -12
  228. package/mobx/deep-observable-struct.cjs +0 -61
  229. package/mobx/deep-observable-struct.d.cts +0 -7
  230. package/mobx/deep-observable-struct.d.cts.map +0 -1
  231. package/mobx/deep-observable-struct.js +0 -57
  232. package/mobx/get-mobx-administration.cjs +0 -6
  233. package/mobx/get-mobx-administration.d.cts +0 -6
  234. package/mobx/get-mobx-administration.d.cts.map +0 -1
  235. package/mobx/get-mobx-administration.js +0 -2
  236. package/mobx/index.cjs +0 -21
  237. package/mobx/index.d.cts +0 -6
  238. package/mobx/index.d.cts.map +0 -1
  239. package/mobx/index.js +0 -5
  240. package/mobx/lazy-observe.cjs +0 -66
  241. package/mobx/lazy-observe.d.cts +0 -14
  242. package/mobx/lazy-observe.d.cts.map +0 -1
  243. package/mobx/lazy-observe.js +0 -62
  244. package/ms.cjs +0 -22
  245. package/ms.d.cts +0 -19
  246. package/ms.d.cts.map +0 -1
  247. package/number.cjs +0 -16
  248. package/number.d.cts +0 -8
  249. package/number.d.cts.map +0 -1
  250. package/parser/_exports.cjs +0 -19
  251. package/parser/_exports.d.cts +0 -4
  252. package/parser/_exports.d.cts.map +0 -1
  253. package/parser/_exports.js +0 -3
  254. package/parser/index.cjs +0 -40
  255. package/parser/index.d.cts +0 -3
  256. package/parser/index.d.cts.map +0 -1
  257. package/parser/index.js +0 -4
  258. package/parser/number.cjs +0 -48
  259. package/parser/number.d.cts +0 -21
  260. package/parser/number.d.cts.map +0 -1
  261. package/parser/number.js +0 -44
  262. package/parser/percent.cjs +0 -8
  263. package/parser/percent.d.cts +0 -4
  264. package/parser/percent.d.cts.map +0 -1
  265. package/parser/percent.js +0 -4
  266. package/parser/string.cjs +0 -18
  267. package/parser/string.d.cts +0 -7
  268. package/parser/string.d.cts.map +0 -1
  269. package/parser/string.js +0 -14
  270. package/price.cjs +0 -21
  271. package/price.d.cts +0 -6
  272. package/price.d.cts.map +0 -1
  273. package/random.cjs +0 -25
  274. package/random.d.cts +0 -9
  275. package/random.d.cts.map +0 -1
  276. package/react/hooks/index.cjs +0 -37
  277. package/react/hooks/index.d.cts +0 -22
  278. package/react/hooks/index.d.cts.map +0 -1
  279. package/react/hooks/index.js +0 -21
  280. package/react/hooks/use-abort-controller.cjs +0 -15
  281. package/react/hooks/use-abort-controller.d.cts +0 -2
  282. package/react/hooks/use-abort-controller.d.cts.map +0 -1
  283. package/react/hooks/use-abort-controller.js +0 -11
  284. package/react/hooks/use-abort-signal.cjs +0 -8
  285. package/react/hooks/use-abort-signal.d.cts +0 -2
  286. package/react/hooks/use-abort-signal.d.cts.map +0 -1
  287. package/react/hooks/use-abort-signal.js +0 -4
  288. package/react/hooks/use-click-outside.cjs +0 -17
  289. package/react/hooks/use-click-outside.d.cts +0 -9
  290. package/react/hooks/use-click-outside.d.cts.map +0 -1
  291. package/react/hooks/use-click-outside.js +0 -13
  292. package/react/hooks/use-constant.cjs +0 -19
  293. package/react/hooks/use-constant.d.cts +0 -9
  294. package/react/hooks/use-constant.d.cts.map +0 -1
  295. package/react/hooks/use-constant.js +0 -15
  296. package/react/hooks/use-define-ref.cjs +0 -19
  297. package/react/hooks/use-define-ref.d.cts +0 -10
  298. package/react/hooks/use-define-ref.d.cts.map +0 -1
  299. package/react/hooks/use-define-ref.js +0 -15
  300. package/react/hooks/use-element-ref.cjs +0 -12
  301. package/react/hooks/use-element-ref.d.cts +0 -2
  302. package/react/hooks/use-element-ref.d.cts.map +0 -1
  303. package/react/hooks/use-element-ref.js +0 -8
  304. package/react/hooks/use-event-listener.cjs +0 -17
  305. package/react/hooks/use-event-listener.d.cts +0 -8
  306. package/react/hooks/use-event-listener.d.cts.map +0 -1
  307. package/react/hooks/use-event-listener.js +0 -13
  308. package/react/hooks/use-event.cjs +0 -23
  309. package/react/hooks/use-event.d.cts +0 -3
  310. package/react/hooks/use-event.d.cts.map +0 -1
  311. package/react/hooks/use-event.js +0 -19
  312. package/react/hooks/use-flag.cjs +0 -19
  313. package/react/hooks/use-flag.d.cts +0 -8
  314. package/react/hooks/use-flag.d.cts.map +0 -1
  315. package/react/hooks/use-flag.js +0 -15
  316. package/react/hooks/use-force-update.cjs +0 -11
  317. package/react/hooks/use-force-update.d.cts +0 -2
  318. package/react/hooks/use-force-update.d.cts.map +0 -1
  319. package/react/hooks/use-force-update.js +0 -7
  320. package/react/hooks/use-initial-height.cjs +0 -15
  321. package/react/hooks/use-initial-height.d.cts +0 -5
  322. package/react/hooks/use-initial-height.d.cts.map +0 -1
  323. package/react/hooks/use-initial-height.js +0 -11
  324. package/react/hooks/use-instance.cjs +0 -31
  325. package/react/hooks/use-instance.d.cts +0 -27
  326. package/react/hooks/use-instance.d.cts.map +0 -1
  327. package/react/hooks/use-instance.js +0 -27
  328. package/react/hooks/use-intersection-observer.cjs +0 -14
  329. package/react/hooks/use-intersection-observer.d.cts +0 -2
  330. package/react/hooks/use-intersection-observer.d.cts.map +0 -1
  331. package/react/hooks/use-intersection-observer.js +0 -10
  332. package/react/hooks/use-last-defined-value.cjs +0 -12
  333. package/react/hooks/use-last-defined-value.d.cts +0 -2
  334. package/react/hooks/use-last-defined-value.d.cts.map +0 -1
  335. package/react/hooks/use-last-defined-value.js +0 -8
  336. package/react/hooks/use-last-value-ref.cjs +0 -12
  337. package/react/hooks/use-last-value-ref.d.cts +0 -2
  338. package/react/hooks/use-last-value-ref.d.cts.map +0 -1
  339. package/react/hooks/use-last-value-ref.js +0 -8
  340. package/react/hooks/use-life-cycle.cjs +0 -14
  341. package/react/hooks/use-life-cycle.d.cts +0 -5
  342. package/react/hooks/use-life-cycle.d.cts.map +0 -1
  343. package/react/hooks/use-life-cycle.js +0 -10
  344. package/react/hooks/use-resize-observer.cjs +0 -15
  345. package/react/hooks/use-resize-observer.d.cts +0 -2
  346. package/react/hooks/use-resize-observer.d.cts.map +0 -1
  347. package/react/hooks/use-resize-observer.js +0 -11
  348. package/react/hooks/use-sync-ref.cjs +0 -10
  349. package/react/hooks/use-sync-ref.d.cts +0 -2
  350. package/react/hooks/use-sync-ref.d.cts.map +0 -1
  351. package/react/hooks/use-sync-ref.js +0 -6
  352. package/react/hooks/use-toggle.cjs +0 -10
  353. package/react/hooks/use-toggle.d.cts +0 -2
  354. package/react/hooks/use-toggle.d.cts.map +0 -1
  355. package/react/hooks/use-toggle.js +0 -6
  356. package/react/hooks/use-value.cjs +0 -12
  357. package/react/hooks/use-value.d.cts +0 -5
  358. package/react/hooks/use-value.d.cts.map +0 -1
  359. package/react/hooks/use-value.js +0 -8
  360. package/react/hooks/use-visibility-state.cjs +0 -18
  361. package/react/hooks/use-visibility-state.d.cts +0 -2
  362. package/react/hooks/use-visibility-state.d.cts.map +0 -1
  363. package/react/hooks/use-visibility-state.js +0 -14
  364. package/react/index.cjs +0 -17
  365. package/react/index.d.cts +0 -2
  366. package/react/index.d.cts.map +0 -1
  367. package/react/index.js +0 -1
  368. package/sound.cjs +0 -16
  369. package/sound.d.cts +0 -7
  370. package/sound.d.cts.map +0 -1
  371. package/storage.cjs +0 -48
  372. package/storage.d.cts +0 -39
  373. package/storage.d.cts.map +0 -1
  374. package/storage.js +0 -43
  375. package/text.cjs +0 -53
  376. package/text.d.cts +0 -15
  377. package/text.d.cts.map +0 -1
  378. package/type-guard/_exports.cjs +0 -129
  379. package/type-guard/_exports.d.cts +0 -86
  380. package/type-guard/_exports.d.cts.map +0 -1
  381. package/type-guard/_exports.js +0 -125
  382. package/type-guard/index.cjs +0 -40
  383. package/type-guard/index.d.cts +0 -3
  384. package/type-guard/index.d.cts.map +0 -1
  385. package/type-guard/index.js +0 -4
  386. package/utils/types.cjs +0 -2
  387. package/utils/types.d.cts +0 -395
  388. package/utils/types.d.cts.map +0 -1
  389. package/vibrate.cjs +0 -12
  390. package/vibrate.d.cts +0 -5
  391. package/vibrate.d.cts.map +0 -1
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.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.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"}
@@ -1,3 +1,3 @@
1
- import * as typeGuard from "./_exports.js";
1
+ import * as typeGuard from './_exports.js';
2
2
  export { typeGuard };
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/type-guard/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,sBAAsB;AAE3C,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/type-guard/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,CAAC"}
package/type-guard.js ADDED
@@ -0,0 +1,5 @@
1
+ import { _ as e } from "./~index-C3wKHvHr.js";
2
+ export {
3
+ e as typeGuard
4
+ };
5
+ //# sourceMappingURL=type-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guard.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-types.d.ts","sourceRoot":"","sources":["../src/utility-types.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=utility-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/utils/types.js CHANGED
@@ -1 +1,2 @@
1
- export {};
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/vibrate.js CHANGED
@@ -1,8 +1,7 @@
1
- /**
2
- * Вибрации по шаблону
3
- */
4
- export const vibrate = (pattern) => {
5
- if ('vibrate' in navigator) {
6
- navigator.vibrate(pattern);
7
- }
1
+ const i = (a) => {
2
+ "vibrate" in navigator && navigator.vibrate(a);
8
3
  };
4
+ export {
5
+ i as vibrate
6
+ };
7
+ //# sourceMappingURL=vibrate.js.map
package/vibrate.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vibrate.js","sources":["../src/vibrate.ts"],"sourcesContent":["/**\n * Вибрации по шаблону\n */\nexport const vibrate = (pattern: number | number[]) => {\n if ('vibrate' in navigator) {\n navigator.vibrate(pattern);\n }\n};\n"],"names":["vibrate","pattern"],"mappings":"AAGO,MAAMA,IAAU,CAACC,MAA+B;AACrD,EAAI,aAAa,aACf,UAAU,QAAQA,CAAO;AAE7B;"}
@@ -0,0 +1,80 @@
1
+ function i(e) {
2
+ if (e === void 0)
3
+ return "undefined";
4
+ if (e === null)
5
+ return "null";
6
+ if (e && (e.nodeType === 1 || e.nodeType === 9))
7
+ return "element";
8
+ const t = Object.prototype.toString.call(e);
9
+ if (t === "[object Number]") {
10
+ if (Number.isNaN(e))
11
+ return "nan";
12
+ if (!Number.isFinite(e))
13
+ return "infinite";
14
+ }
15
+ return t;
16
+ }
17
+ const n = (e) => (t) => i(t) === e, o = (e) => e != null, s = n(
18
+ "null"
19
+ /* Null */
20
+ ), c = n(
21
+ "undefined"
22
+ /* Undefined */
23
+ ), r = n(
24
+ "[object Object]"
25
+ /* Object */
26
+ ), b = n(
27
+ "[object Array]"
28
+ /* Array */
29
+ ), u = n(
30
+ "[object String]"
31
+ /* String */
32
+ ), l = n(
33
+ "[object Number]"
34
+ /* Number */
35
+ ), f = n(
36
+ "[object Boolean]"
37
+ /* Boolean */
38
+ ), d = n(
39
+ "[object Function]"
40
+ /* Function */
41
+ ), j = n(
42
+ "[object RegExp]"
43
+ /* RegExp */
44
+ ), a = n(
45
+ "element"
46
+ /* Element */
47
+ ), p = n(
48
+ "nan"
49
+ /* NaN */
50
+ ), m = n(
51
+ "infinite"
52
+ /* Infinite */
53
+ ), y = n(
54
+ "[object Symbol]"
55
+ /* Symbol */
56
+ ), N = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
57
+ __proto__: null,
58
+ isArray: b,
59
+ isBoolean: f,
60
+ isDefined: o,
61
+ isElement: a,
62
+ isFunction: d,
63
+ isInfinite: m,
64
+ isNaN: p,
65
+ isNull: s,
66
+ isNumber: l,
67
+ isObject: r,
68
+ isRegExp: j,
69
+ isString: u,
70
+ isSymbol: y,
71
+ isUndefined: c
72
+ }, Symbol.toStringTag, { value: "Module" }));
73
+ export {
74
+ N as _,
75
+ l as a,
76
+ r as b,
77
+ c,
78
+ u as i
79
+ };
80
+ //# sourceMappingURL=~index-C3wKHvHr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"~index-C3wKHvHr.js","sources":["../src/type-guard/_exports.ts"],"sourcesContent":["import type { AnyFunction, AnyObject } from 'yummies/utils/types';\n\nenum Type {\n Null = 'null',\n Undefined = 'undefined',\n NaN = 'nan',\n Object = '[object Object]',\n Array = '[object Array]',\n String = '[object String]',\n Number = '[object Number]',\n Boolean = '[object Boolean]',\n Function = '[object Function]',\n RegExp = '[object RegExp]',\n Symbol = '[object Symbol]',\n Infinite = 'infinite',\n Element = 'element',\n}\n\nfunction getType(value: unknown): Type {\n if (value === undefined) {\n return Type.Undefined;\n }\n if (value === null) {\n return Type.Null;\n }\n\n // handle DOM elements\n // @ts-expect-error\n if (value && (value.nodeType === 1 || value.nodeType === 9)) {\n return Type.Element;\n }\n\n const stringifiedValue = Object.prototype.toString.call(value);\n\n // handle NaN and Infinity\n if (stringifiedValue === Type.Number) {\n if (Number.isNaN(value as number)) {\n return Type.NaN;\n }\n if (!Number.isFinite(value as number)) {\n return Type.Infinite;\n }\n }\n\n return stringifiedValue as Type;\n}\n\nconst createTypeGuard =\n <T>(type: Type) =>\n (value: unknown): value is T =>\n getType(value) === type;\n\n/**\n * Check if a value is not null or undefined\n * @param value the value to check\n * @returns boolean\n */\nexport const isDefined = <T>(value: T | undefined | null): value is T =>\n value != null;\n\n/**\n * Check if a value is null\n * @param value the value to check\n * @returns boolean\n */\nexport const isNull = createTypeGuard<null>(Type.Null);\n\n/**\n * Check if a value is undefined\n * @param value the value to check\n * @returns boolean\n */\nexport const isUndefined = createTypeGuard<undefined>(Type.Undefined);\n\n/**\n * Check if a value is an object\n * @param value the value to check\n * @returns boolean\n */\nexport const isObject = createTypeGuard<AnyObject>(Type.Object);\n\n/**\n * Check if a value is an array\n * @param value the value to check\n * @returns boolean\n */\nexport const isArray = createTypeGuard<unknown[]>(Type.Array);\n\n/**\n * Check if a value is a string\n * @param value the value to check\n * @returns boolean\n */\nexport const isString = createTypeGuard<string>(Type.String);\n\n/**\n * Check if a value is a number\n * @param value the value to check\n * @returns boolean\n */\nexport const isNumber = createTypeGuard<number>(Type.Number);\n\n/**\n * Check if a value is a boolean\n * @param value the value to check\n * @returns boolean\n */\nexport const isBoolean = createTypeGuard<boolean>(Type.Boolean);\n\n/**\n * Check if a value is a function\n * @param value the value to check\n * @returns boolean\n */\nexport const isFunction = createTypeGuard<AnyFunction>(Type.Function);\n\n/**\n * Check if a value is a regular expression\n * @param value the value to check\n * @returns boolean\n */\nexport const isRegExp = createTypeGuard<RegExp>(Type.RegExp);\n\n/**\n * Check if a value is a DOM element\n * @param value the value to check\n * @returns boolean\n */\nexport const isElement = createTypeGuard<HTMLElement>(Type.Element);\n\n/**\n * Check if a value is NaN\n * @param value the value to check\n * @returns boolean\n */\nexport const isNaN = createTypeGuard<number>(Type.NaN) as (\n value: unknown,\n) => boolean;\n\n/**\n * Check if a value is infinity\n * @param value the value to check\n * @returns boolean\n */\nexport const isInfinite = createTypeGuard<number>(Type.Infinite) as (\n value: unknown,\n) => boolean;\n\n/**\n * Check if a value is a symbol\n * @param value the value to check\n * @returns boolean\n */\nexport const isSymbol = createTypeGuard<symbol>(Type.Symbol);\n"],"names":["getType","value","stringifiedValue","createTypeGuard","type","isDefined","isNull","isUndefined","isObject","isArray","isString","isNumber","isBoolean","isFunction","isRegExp","isElement","isNaN","isInfinite","isSymbol"],"mappings":"AAkBA,SAASA,EAAQC,GAAsB;AACrC,MAAIA,MAAU;AACZ,WAAO;AAET,MAAIA,MAAU;AACZ,WAAO;AAKT,MAAIA,MAAUA,EAAM,aAAa,KAAKA,EAAM,aAAa;AACvD,WAAO;AAGT,QAAMC,IAAmB,OAAO,UAAU,SAAS,KAAKD,CAAK;AAG7D,MAAIC,MAAqB,mBAAa;AACpC,QAAI,OAAO,MAAMD,CAAe;AAC9B,aAAO;AAET,QAAI,CAAC,OAAO,SAASA,CAAe;AAClC,aAAO;AAAA,EAEX;AAEA,SAAOC;AACT;AAEA,MAAMC,IACJ,CAAIC,MACJ,CAACH,MACCD,EAAQC,CAAK,MAAMG,GAOVC,IAAY,CAAIJ,MAC3BA,KAAS,MAOEK,IAASH;AAAA,EAAsB;AAAA;AAAA,GAO/BI,IAAcJ;AAAA,EAA2B;AAAA;AAAA,GAOzCK,IAAWL;AAAA,EAA2B;AAAA;AAAA,GAOtCM,IAAUN;AAAA,EAA2B;AAAA;AAAA,GAOrCO,IAAWP;AAAA,EAAwB;AAAA;AAAA,GAOnCQ,IAAWR;AAAA,EAAwB;AAAA;AAAA,GAOnCS,IAAYT;AAAA,EAAyB;AAAA;AAAA,GAOrCU,IAAaV;AAAA,EAA6B;AAAA;AAAA,GAO1CW,IAAWX;AAAA,EAAwB;AAAA;AAAA,GAOnCY,IAAYZ;AAAA,EAA6B;AAAA;AAAA,GAOzCa,IAAQb;AAAA,EAAwB;AAAA;AAAA,GAShCc,IAAad;AAAA,EAAwB;AAAA;AAAA,GASrCe,IAAWf;AAAA,EAAwB;AAAA;AAAA;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,25 @@
1
+ import { format as n } from "yummies/format";
2
+ import { typeGuard as r } from "yummies/type-guard";
3
+ const a = (l, f) => {
4
+ const t = {
5
+ ...a.defaultSettings,
6
+ ...f
7
+ }, i = t?.fallback ?? 0;
8
+ let e;
9
+ if (r.isNumber(l))
10
+ e = l;
11
+ else if (r.isString(l)) {
12
+ const s = n.skipSpaces(l).replace(",", ".");
13
+ s === "" ? e = i : e = Number(s);
14
+ } else
15
+ e = i;
16
+ return r.isNumber(e) ? (t?.clamped != null && (e = Math.max(
17
+ t.clamped[0] ?? -1 / 0,
18
+ Math.min(e, t.clamped[1] ?? 1 / 0)
19
+ )), t?.ceil != null && (e = Math.ceil(e)), t?.floor != null && (e = Math.floor(e)), t?.digits != null && (e = +e.toFixed(t.digits)), e) : i;
20
+ };
21
+ a.defaultSettings = {};
22
+ export {
23
+ a as n
24
+ };
25
+ //# sourceMappingURL=~number-EWff2XI6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"~number-EWff2XI6.js","sources":["../src/parser/number.ts"],"sourcesContent":["import { format } from 'yummies/format';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/utils/types';\n\nexport interface NumberParserSettings<TFallback = number> {\n digits?: number;\n fallback?: TFallback;\n /**\n * Round to upper boundary\n * 5.1 -> 6\n */\n ceil?: boolean;\n /**\n * Round to bottom boundary\n * 5.9 -> 5\n */\n floor?: boolean;\n clamped?: [min?: Maybe<number>, max?: Maybe<number>];\n}\n\nexport const number = <TFallback = number>(\n input: Maybe<unknown>,\n userSettings?: Maybe<NumberParserSettings<TFallback>>,\n): number | TFallback => {\n const settings = {\n ...number.defaultSettings,\n ...userSettings,\n };\n\n const fallback = settings?.fallback ?? 0;\n\n let result: number;\n\n if (typeGuard.isNumber(input)) {\n result = input;\n } else if (typeGuard.isString(input)) {\n const formattedInput = format.skipSpaces(input).replace(',', '.');\n if (formattedInput === '') {\n result = fallback as any;\n } else {\n result = Number(formattedInput);\n }\n } else {\n result = fallback as any;\n }\n\n if (typeGuard.isNumber(result)) {\n if (settings?.clamped != null) {\n result = Math.max(\n settings.clamped[0] ?? -Infinity,\n Math.min(result, settings.clamped[1] ?? Infinity),\n );\n }\n\n if (settings?.ceil != null) {\n result = Math.ceil(result);\n }\n\n if (settings?.floor != null) {\n result = Math.floor(result);\n }\n\n if (settings?.digits != null) {\n result = +result.toFixed(settings.digits);\n }\n\n return result;\n } else {\n return fallback;\n }\n};\n\nnumber.defaultSettings = {} as NumberParserSettings;\n"],"names":["number","input","userSettings","settings","fallback","result","typeGuard","formattedInput","format"],"mappings":";;AAoBO,MAAMA,IAAS,CACpBC,GACAC,MACuB;AACvB,QAAMC,IAAW;AAAA,IACf,GAAGH,EAAO;AAAA,IACV,GAAGE;AAAA,EAAA,GAGCE,IAAWD,GAAU,YAAY;AAEvC,MAAIE;AAEJ,MAAIC,EAAU,SAASL,CAAK;AAC1B,IAAAI,IAASJ;AAAA,WACAK,EAAU,SAASL,CAAK,GAAG;AACpC,UAAMM,IAAiBC,EAAO,WAAWP,CAAK,EAAE,QAAQ,KAAK,GAAG;AAChE,IAAIM,MAAmB,KACrBF,IAASD,IAETC,IAAS,OAAOE,CAAc;AAAA,EAElC;AACE,IAAAF,IAASD;AAGX,SAAIE,EAAU,SAASD,CAAM,KACvBF,GAAU,WAAW,SACvBE,IAAS,KAAK;AAAA,IACZF,EAAS,QAAQ,CAAC,KAAK;AAAA,IACvB,KAAK,IAAIE,GAAQF,EAAS,QAAQ,CAAC,KAAK,KAAQ;AAAA,EAAA,IAIhDA,GAAU,QAAQ,SACpBE,IAAS,KAAK,KAAKA,CAAM,IAGvBF,GAAU,SAAS,SACrBE,IAAS,KAAK,MAAMA,CAAM,IAGxBF,GAAU,UAAU,SACtBE,IAAS,CAACA,EAAO,QAAQF,EAAS,MAAM,IAGnCE,KAEAD;AAEX;AAEAJ,EAAO,kBAAkB,CAAA;"}
@@ -0,0 +1,32 @@
1
+ import { parser as F } from "yummies/parser";
2
+ import { typeGuard as d } from "yummies/type-guard";
3
+ const N = "–", P = "-", b = "∞", f = (o, m) => {
4
+ const t = {
5
+ ...f.defaultSettings,
6
+ ...m
7
+ }, n = t.digits ?? 0, g = t?.cutZeros ?? !1, a = t.delimiter ?? " ", p = t.postfix ?? "", u = t.emptyText ?? N, x = t.digitsOnlyForFloat ?? !0;
8
+ let e;
9
+ if (d.isString(o) ? e = F.number(e, { fallback: void 0 }) : e = o, d.isNumber(e)) {
10
+ let s = `${e}`;
11
+ n !== !1 && (s = e.toFixed(n)), g && (s = `${+s}`);
12
+ const [$, r] = s.split(".", 2);
13
+ let i = $, l = "";
14
+ r && (!x || !/^0+$/.test(r)) && (l = `.${r}`);
15
+ const c = /(\d+)(\d{3})/;
16
+ for (; c.test(i) && a; )
17
+ i = i.replace(
18
+ c,
19
+ `$1${a}$2`
20
+ );
21
+ return i + l + p;
22
+ }
23
+ return u;
24
+ };
25
+ f.defaultSettings = {};
26
+ export {
27
+ P as H,
28
+ b as I,
29
+ N,
30
+ f as n
31
+ };
32
+ //# sourceMappingURL=~number-baxVnzrJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"~number-baxVnzrJ.js","sources":["../src/format/constants.ts","../src/format/number.ts"],"sourcesContent":["export const NO_VALUE = '–'; // en-dash\n\nexport const HYPHEN = '-';\n\nexport const INFINITY = '∞';\n","import { parser } from 'yummies/parser';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/utils/types';\nimport { NO_VALUE } from './constants.js';\n\nexport interface NumberFormatSettings {\n delimiter?: string;\n /**\n * digitsOnlyForFloat - Show digits after decimal point only if they are not zeros after converting to number.\n * Example: \"0.00\" -> \"0\", \"0.10\" -> \"0.1\", but \"0.003\" -> \"0.003\"\n *\n * @default true\n */\n digitsOnlyForFloat?: boolean;\n /**\n * Text which will be returned if the value is undefined, null, NaN, Infinity or empty string.\n * Example: \"–\" will be returned if the value is undefined and emptyText is \"–\".\n */\n emptyText?: string;\n /**\n * Text to append to the end of the formatted number.\n * Example: if value is 1000 and postfix is \"₽\", result will be \"1 000₽\".\n */\n postfix?: string;\n /**\n * Fixed number of digits after the decimal point (number.toFixed() method)\n * If set to false, the truncation is ignored!\n */\n digits?: number | false;\n /**\n * Remove trailing zeros from the end of the number\n * Example: 0.010000000000000000000000000000000000000000000 -> 0.01\n */\n cutZeros?: boolean;\n}\n\nexport const number = (\n rawValue: Maybe<string | number>,\n userSettings?: Maybe<NumberFormatSettings>,\n): string => {\n const settings = {\n ...number.defaultSettings,\n ...userSettings,\n };\n\n const digits = settings.digits ?? 0;\n const cutZeros = settings?.cutZeros ?? false;\n const delimiter = settings.delimiter ?? ' ';\n const postfix = settings.postfix ?? '';\n const emptyText = settings.emptyText ?? NO_VALUE;\n const digitsOnlyForFloat = settings.digitsOnlyForFloat ?? true;\n\n let value: Maybe<number>;\n\n if (typeGuard.isString(rawValue)) {\n value = parser.number(value, { fallback: undefined });\n } else {\n value = rawValue;\n }\n\n if (typeGuard.isNumber(value)) {\n let raw: string = `${value}`;\n\n if (digits !== false) {\n raw = value.toFixed(digits);\n }\n if (cutZeros) {\n raw = `${+raw}`;\n }\n\n const [integerPart, decimalPart] = raw.split('.', 2);\n\n let formattedIntegerPart = integerPart;\n let formattedDecimalPart = '';\n\n if (decimalPart && (!digitsOnlyForFloat || !/^0+$/.test(decimalPart))) {\n formattedDecimalPart = `.${decimalPart}`;\n }\n\n const rgx = /(\\d+)(\\d{3})/;\n\n while (rgx.test(formattedIntegerPart) && delimiter) {\n formattedIntegerPart = formattedIntegerPart.replace(\n rgx,\n `$1${delimiter}$2`,\n );\n }\n\n return formattedIntegerPart + formattedDecimalPart + postfix;\n }\n\n return emptyText;\n};\n\nnumber.defaultSettings = {} as NumberFormatSettings;\n"],"names":["NO_VALUE","HYPHEN","INFINITY","number","rawValue","userSettings","settings","digits","cutZeros","delimiter","postfix","emptyText","digitsOnlyForFloat","value","typeGuard","parser","raw","integerPart","decimalPart","formattedIntegerPart","formattedDecimalPart","rgx"],"mappings":";;AAAO,MAAMA,IAAW,KAEXC,IAAS,KAETC,IAAW,KCgCXC,IAAS,CACpBC,GACAC,MACW;AACX,QAAMC,IAAW;AAAA,IACf,GAAGH,EAAO;AAAA,IACV,GAAGE;AAAA,EAAA,GAGCE,IAASD,EAAS,UAAU,GAC5BE,IAAWF,GAAU,YAAY,IACjCG,IAAYH,EAAS,aAAa,KAClCI,IAAUJ,EAAS,WAAW,IAC9BK,IAAYL,EAAS,aAAaN,GAClCY,IAAqBN,EAAS,sBAAsB;AAE1D,MAAIO;AAQJ,MANIC,EAAU,SAASV,CAAQ,IAC7BS,IAAQE,EAAO,OAAOF,GAAO,EAAE,UAAU,QAAW,IAEpDA,IAAQT,GAGNU,EAAU,SAASD,CAAK,GAAG;AAC7B,QAAIG,IAAc,GAAGH,CAAK;AAE1B,IAAIN,MAAW,OACbS,IAAMH,EAAM,QAAQN,CAAM,IAExBC,MACFQ,IAAM,GAAG,CAACA,CAAG;AAGf,UAAM,CAACC,GAAaC,CAAW,IAAIF,EAAI,MAAM,KAAK,CAAC;AAEnD,QAAIG,IAAuBF,GACvBG,IAAuB;AAE3B,IAAIF,MAAgB,CAACN,KAAsB,CAAC,OAAO,KAAKM,CAAW,OACjEE,IAAuB,IAAIF,CAAW;AAGxC,UAAMG,IAAM;AAEZ,WAAOA,EAAI,KAAKF,CAAoB,KAAKV;AACvC,MAAAU,IAAuBA,EAAqB;AAAA,QAC1CE;AAAA,QACA,KAAKZ,CAAS;AAAA,MAAA;AAIlB,WAAOU,IAAuBC,IAAuBV;AAAA,EACvD;AAEA,SAAOC;AACT;AAEAR,EAAO,kBAAkB,CAAA;"}
package/async.cjs DELETED
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.endlessRAF = exports.waitAsync = exports.sleep = void 0;
4
- exports.setAbortableTimeout = setAbortableTimeout;
5
- exports.setAbortableInterval = setAbortableInterval;
6
- /**
7
- * Создает промис, который будет ждать указанное количество ms, чтобы выполниться
8
- *
9
- * @param ms значение в миллисекундах
10
- * @returns Promise
11
- */
12
- const sleep = (time = 0) => new Promise((resolve) => setTimeout(resolve, time));
13
- exports.sleep = sleep;
14
- /**
15
- * Создает промис, который будет ждать указанное количество ms, чтобы выполниться
16
- *
17
- * @deprecated используй {sleep}
18
- * @param ms значение в миллисекундах
19
- * @returns Promise
20
- */
21
- const waitAsync = async (ms = 1000) => new Promise((resolve) => setTimeout(resolve, ms));
22
- exports.waitAsync = waitAsync;
23
- /**
24
- * Создает вызов requestAnimationFrame, посылая туда фукнцию {quitFn}, если она возвращает true,
25
- * тогда повторно не будет создан вызов requestAnimationFrame, иначе будут создаваться повторно
26
- * вызовы requestAnimationFrame до тем пор, пока эта функция не вернёт true
27
- *
28
- * @param quitFn - сама фукнция которая исполнится в requestAnimationFrame
29
- * @param asMicrotask - дополнительно оборачивает RAF в queueMicrotask
30
- * @returns void
31
- */
32
- const endlessRAF = (quitFunction, asMicrotask) => {
33
- if (quitFunction())
34
- return;
35
- const raf = () => requestAnimationFrame(() => (0, exports.endlessRAF)(quitFunction, asMicrotask));
36
- if (asMicrotask) {
37
- queueMicrotask(raf);
38
- }
39
- else {
40
- raf();
41
- }
42
- };
43
- exports.endlessRAF = endlessRAF;
44
- function setAbortableTimeout(callback, delayInMs, signal) {
45
- let internalTimer = null;
46
- const handleAbort = () => {
47
- if (internalTimer == null) {
48
- return;
49
- }
50
- clearTimeout(internalTimer);
51
- internalTimer = null;
52
- };
53
- signal?.addEventListener('abort', handleAbort, { once: true });
54
- internalTimer = setTimeout(() => {
55
- signal?.removeEventListener('abort', handleAbort);
56
- callback();
57
- }, delayInMs);
58
- }
59
- function setAbortableInterval(callback, delayInMs, signal) {
60
- let timer = null;
61
- const handleAbort = () => {
62
- if (timer == null) {
63
- return;
64
- }
65
- clearInterval(timer);
66
- timer = null;
67
- };
68
- signal?.addEventListener('abort', handleAbort, { once: true });
69
- timer = setInterval(callback, delayInMs);
70
- }
package/async.d.cts DELETED
@@ -1,28 +0,0 @@
1
- /**
2
- * Создает промис, который будет ждать указанное количество ms, чтобы выполниться
3
- *
4
- * @param ms значение в миллисекундах
5
- * @returns Promise
6
- */
7
- export declare const sleep: (time?: number) => Promise<unknown>;
8
- /**
9
- * Создает промис, который будет ждать указанное количество ms, чтобы выполниться
10
- *
11
- * @deprecated используй {sleep}
12
- * @param ms значение в миллисекундах
13
- * @returns Promise
14
- */
15
- export declare const waitAsync: (ms?: number) => Promise<unknown>;
16
- /**
17
- * Создает вызов requestAnimationFrame, посылая туда фукнцию {quitFn}, если она возвращает true,
18
- * тогда повторно не будет создан вызов requestAnimationFrame, иначе будут создаваться повторно
19
- * вызовы requestAnimationFrame до тем пор, пока эта функция не вернёт true
20
- *
21
- * @param quitFn - сама фукнция которая исполнится в requestAnimationFrame
22
- * @param asMicrotask - дополнительно оборачивает RAF в queueMicrotask
23
- * @returns void
24
- */
25
- export declare const endlessRAF: (quitFunction: () => boolean | void, asMicrotask?: boolean) => void;
26
- export declare function setAbortableTimeout(callback: VoidFunction, delayInMs?: number, signal?: AbortSignal): void;
27
- export declare function setAbortableInterval(callback: VoidFunction, delayInMs?: number, signal?: AbortSignal): void;
28
- //# sourceMappingURL=async.d.ts.map