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/math.cjs CHANGED
@@ -1,23 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.percentFrom = void 0;
4
- exports.degToRad = degToRad;
5
- exports.radToDeg = radToDeg;
6
- function degToRad(deg) {
7
- return deg * (Math.PI / 180);
8
- }
9
- function radToDeg(rad) {
10
- return rad * (180 / Math.PI);
11
- }
12
- /**
13
- * Получить процент от числа
14
- * @example
15
- * ```ts
16
- * percentFrom(500, 2000) // 25
17
- * percentFrom(1000, 2000) // 50
18
- * ```
19
- */
20
- const percentFrom = (value, from) => {
21
- return ((value ?? 0) / (from ?? 0)) * 100 || 0;
22
- };
23
- exports.percentFrom = percentFrom;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function t(e){return e*(Math.PI/180)}function o(e){return e*(180/Math.PI)}const n=(e,r)=>(e??0)/(r??0)*100||0;exports.degToRad=t;exports.percentFrom=n;exports.radToDeg=o;
2
+ //# sourceMappingURL=math.cjs.map
package/math.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.cjs","sources":["../src/math.ts"],"sourcesContent":["import type { Maybe } from 'yummies/utils/types';\n\nexport function degToRad(deg: number) {\n return deg * (Math.PI / 180);\n}\nexport function radToDeg(rad: number) {\n return rad * (180 / Math.PI);\n}\n\n/**\n * Получить процент от числа\n * @example\n * ```ts\n * percentFrom(500, 2000) // 25\n * percentFrom(1000, 2000) // 50\n * ```\n */\nexport const percentFrom = (value: Maybe<number>, from: Maybe<number>) => {\n return ((value ?? 0) / (from ?? 0)) * 100 || 0;\n};\n"],"names":["degToRad","deg","radToDeg","rad","percentFrom","value","from"],"mappings":"gFAEO,SAASA,EAASC,EAAa,CACpC,OAAOA,GAAO,KAAK,GAAK,IAC1B,CACO,SAASC,EAASC,EAAa,CACpC,OAAOA,GAAO,IAAM,KAAK,GAC3B,CAUO,MAAMC,EAAc,CAACC,EAAsBC,KACvCD,GAAS,IAAMC,GAAQ,GAAM,KAAO"}
package/math.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Maybe } from "./utils/types.js";
1
+ import { Maybe } from './utils/types.ts';
2
2
  export declare function degToRad(deg: number): number;
3
3
  export declare function radToDeg(rad: number): number;
4
4
  /**
package/math.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,yBAAyB;AAE9C,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,UAEnC;AACD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,UAEnC;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,WAEpE,CAAC"}
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,UAEnC;AACD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,UAEnC;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,WAEpE,CAAC"}
package/math.js CHANGED
@@ -1,17 +1,13 @@
1
- export function degToRad(deg) {
2
- return deg * (Math.PI / 180);
1
+ function n(r) {
2
+ return r * (Math.PI / 180);
3
3
  }
4
- export function radToDeg(rad) {
5
- return rad * (180 / Math.PI);
4
+ function e(r) {
5
+ return r * (180 / Math.PI);
6
6
  }
7
- /**
8
- * Получить процент от числа
9
- * @example
10
- * ```ts
11
- * percentFrom(500, 2000) // 25
12
- * percentFrom(1000, 2000) // 50
13
- * ```
14
- */
15
- export const percentFrom = (value, from) => {
16
- return ((value ?? 0) / (from ?? 0)) * 100 || 0;
7
+ const o = (r, t) => (r ?? 0) / (t ?? 0) * 100 || 0;
8
+ export {
9
+ n as degToRad,
10
+ o as percentFrom,
11
+ e as radToDeg
17
12
  };
13
+ //# sourceMappingURL=math.js.map
package/math.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.js","sources":["../src/math.ts"],"sourcesContent":["import type { Maybe } from 'yummies/utils/types';\n\nexport function degToRad(deg: number) {\n return deg * (Math.PI / 180);\n}\nexport function radToDeg(rad: number) {\n return rad * (180 / Math.PI);\n}\n\n/**\n * Получить процент от числа\n * @example\n * ```ts\n * percentFrom(500, 2000) // 25\n * percentFrom(1000, 2000) // 50\n * ```\n */\nexport const percentFrom = (value: Maybe<number>, from: Maybe<number>) => {\n return ((value ?? 0) / (from ?? 0)) * 100 || 0;\n};\n"],"names":["degToRad","deg","radToDeg","rad","percentFrom","value","from"],"mappings":"AAEO,SAASA,EAASC,GAAa;AACpC,SAAOA,KAAO,KAAK,KAAK;AAC1B;AACO,SAASC,EAASC,GAAa;AACpC,SAAOA,KAAO,MAAM,KAAK;AAC3B;AAUO,MAAMC,IAAc,CAACC,GAAsBC,OACvCD,KAAS,MAAMC,KAAQ,KAAM,OAAO;"}
package/media.cjs CHANGED
@@ -1,115 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isBase64Image = exports.isHttpUrl = exports.rotateImage = exports.renderImage = exports.imageToBlob = exports.fileToBlob = exports.blobToUrl = void 0;
4
- exports.blobToBase64 = blobToBase64;
5
- exports.decodeDataUrl = decodeDataUrl;
6
- const math_js_1 = require("./math.cjs");
7
- function blobToBase64(blob) {
8
- return new Promise((resolve, reject) => {
9
- const reader = new FileReader();
10
- reader.onloadend = () => resolve(reader.result);
11
- reader.onerror = reject;
12
- reader.readAsDataURL(blob);
13
- });
14
- }
15
- const blobToUrl = (urlOrBlob) => urlOrBlob instanceof Blob ? URL.createObjectURL(urlOrBlob) : urlOrBlob;
16
- exports.blobToUrl = blobToUrl;
17
- const fileToBlob = (file) => {
18
- return new Blob([file], { type: file.type });
19
- };
20
- exports.fileToBlob = fileToBlob;
21
- const imageToBlob = (imageElement, mimeType = 'image/png') => {
22
- const canvas = document.createElement('canvas');
23
- canvas.width = imageElement.naturalWidth || 300;
24
- canvas.height = imageElement.naturalHeight || 300;
25
- canvas.getContext('2d').drawImage(imageElement, 0, 0);
26
- const dataUri = canvas.toDataURL(mimeType, 1);
27
- const base64data = dataUri.split(',')[1];
28
- const base64MimeType = dataUri.split(';')[0].slice(5);
29
- const bytes = globalThis.atob(base64data);
30
- const buf = new ArrayBuffer(bytes.length);
31
- const array = new Uint8Array(buf);
32
- for (let index = 0; index < bytes.length; index++) {
33
- array[index] = bytes.charCodeAt(index);
34
- }
35
- const blob = new Blob([array], { type: base64MimeType });
36
- return blob;
37
- };
38
- exports.imageToBlob = imageToBlob;
39
- /**
40
- * Загружает и отрисовывает изображение с использованием Image
41
- *
42
- * @returns {Promise<HTMLImageElement>}
43
- */
44
- const renderImage = (urlOrBlob) => new Promise((resolve, reject) => {
45
- const image = new Image();
46
- image.src = (0, exports.blobToUrl)(urlOrBlob);
47
- image.onload = () => resolve(image);
48
- image.onerror = () => reject();
49
- });
50
- exports.renderImage = renderImage;
51
- function cropImageFromCanvas(context) {
52
- const canvas = context.canvas;
53
- let w = canvas.width;
54
- let h = canvas.height;
55
- const pix = { x: [], y: [] };
56
- const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
57
- let x;
58
- let y;
59
- let index;
60
- for (y = 0; y < h; y++) {
61
- for (x = 0; x < w; x++) {
62
- index = (y * w + x) * 4;
63
- if (imageData.data[index + 3] > 0) {
64
- pix.x.push(x);
65
- pix.y.push(y);
66
- }
67
- }
68
- }
69
- pix.x.sort((a, b) => a - b);
70
- pix.y.sort((a, b) => a - b);
71
- const n = pix.x.length - 1;
72
- w = 1 + pix.x[n] - pix.x[0];
73
- h = 1 + pix.y[n] - pix.y[0];
74
- const cut = context.getImageData(pix.x[0], pix.y[0], w, h);
75
- canvas.width = w;
76
- canvas.height = h;
77
- context.putImageData(cut, 0, 0);
78
- return canvas;
79
- }
80
- // TODO: ломает iphone с огромными изображениями
81
- const rotateImage = (image, angle) => {
82
- const maxSize = Math.max(image.width, image.height);
83
- const canvas = document.createElement('canvas');
84
- canvas.width = maxSize;
85
- canvas.height = maxSize;
86
- const context = canvas.getContext('2d');
87
- context.save();
88
- context.translate(canvas.width / 2, canvas.height / 2);
89
- context.rotate((0, math_js_1.degToRad)(angle));
90
- context.drawImage(image, -image.width / 2, -image.height / 2);
91
- context.restore();
92
- cropImageFromCanvas(context);
93
- return (0, exports.renderImage)(canvas.toDataURL('image/png'));
94
- };
95
- exports.rotateImage = rotateImage;
96
- /*
97
- * Returning object which contains base64 data and mime type of passed data url string.
98
- * */
99
- function decodeDataUrl(url) {
100
- const regex = /^data:(.*);base64,\s?(.*)$/;
101
- const matches = new RegExp(regex).exec(url);
102
- return {
103
- mimeType: matches?.[1],
104
- data: matches?.[2],
105
- };
106
- }
107
- const isHttpUrl = (url) => {
108
- return url.startsWith('https://') || url.startsWith('http://');
109
- };
110
- exports.isHttpUrl = isHttpUrl;
111
- const isBase64Image = (str) => {
112
- const { mimeType, data } = decodeDataUrl(str);
113
- return !!(data && mimeType?.startsWith('image/'));
114
- };
115
- exports.isBase64Image = isBase64Image;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("yummies/math");function w(t){return new Promise((n,a)=>{const e=new FileReader;e.onloadend=()=>n(e.result),e.onerror=a,e.readAsDataURL(t)})}const m=t=>t instanceof Blob?URL.createObjectURL(t):t,y=t=>new Blob([t],{type:t.type}),x=(t,n="image/png")=>{const a=document.createElement("canvas");a.width=t.naturalWidth||300,a.height=t.naturalHeight||300,a.getContext("2d").drawImage(t,0,0);const e=a.toDataURL(n,1),o=e.split(",")[1],h=e.split(";")[0].slice(5),s=globalThis.atob(o),r=new ArrayBuffer(s.length),i=new Uint8Array(r);for(let c=0;c<s.length;c++)i[c]=s.charCodeAt(c);return new Blob([i],{type:h})},b=t=>new Promise((n,a)=>{const e=new Image;e.src=m(t),e.onload=()=>n(e),e.onerror=()=>a()});function T(t){const n=t.canvas;let a=n.width,e=n.height;const o={x:[],y:[]},h=t.getImageData(0,0,n.width,n.height);let s,r,i;for(r=0;r<e;r++)for(s=0;s<a;s++)i=(r*a+s)*4,h.data[i+3]>0&&(o.x.push(s),o.y.push(r));o.x.sort((l,g)=>l-g),o.y.sort((l,g)=>l-g);const d=o.x.length-1;a=1+o.x[d]-o.x[0],e=1+o.y[d]-o.y[0];const c=t.getImageData(o.x[0],o.y[0],a,e);return n.width=a,n.height=e,t.putImageData(c,0,0),n}const f=(t,n)=>{const a=Math.max(t.width,t.height),e=document.createElement("canvas");e.width=a,e.height=a;const o=e.getContext("2d");return o.save(),o.translate(e.width/2,e.height/2),o.rotate(p.degToRad(n)),o.drawImage(t,-t.width/2,-t.height/2),o.restore(),T(o),b(e.toDataURL("image/png"))};function u(t){const n=/^data:(.*);base64,\s?(.*)$/,a=new RegExp(n).exec(t);return{mimeType:a?.[1],data:a?.[2]}}const I=t=>t.startsWith("https://")||t.startsWith("http://"),U=t=>{const{mimeType:n,data:a}=u(t);return!!(a&&n?.startsWith("image/"))};exports.blobToBase64=w;exports.blobToUrl=m;exports.decodeDataUrl=u;exports.fileToBlob=y;exports.imageToBlob=x;exports.isBase64Image=U;exports.isHttpUrl=I;exports.renderImage=b;exports.rotateImage=f;
2
+ //# sourceMappingURL=media.cjs.map
package/media.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.cjs","sources":["../src/media.ts"],"sourcesContent":["import { degToRad } from 'yummies/math';\n\nexport function blobToBase64(blob: Blob): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n}\n\nexport const blobToUrl = (urlOrBlob: string | Blob) =>\n urlOrBlob instanceof Blob ? URL.createObjectURL(urlOrBlob) : urlOrBlob;\n\nexport const fileToBlob = (file: File) => {\n return new Blob([file], { type: file.type });\n};\n\nexport const imageToBlob = (\n imageElement: HTMLImageElement,\n mimeType: string = 'image/png',\n) => {\n const canvas = document.createElement('canvas');\n\n canvas.width = imageElement.naturalWidth || 300;\n canvas.height = imageElement.naturalHeight || 300;\n\n canvas.getContext('2d')!.drawImage(imageElement, 0, 0);\n\n const dataUri = canvas.toDataURL(mimeType, 1);\n const base64data = dataUri.split(',')[1];\n const base64MimeType = dataUri.split(';')[0].slice(5);\n\n const bytes = globalThis.atob(base64data);\n const buf = new ArrayBuffer(bytes.length);\n const array = new Uint8Array(buf);\n\n for (let index = 0; index < bytes.length; index++) {\n array[index] = bytes.charCodeAt(index);\n }\n\n const blob = new Blob([array], { type: base64MimeType });\n\n return blob;\n};\n\n/**\n * Загружает и отрисовывает изображение с использованием Image\n *\n * @returns {Promise<HTMLImageElement>}\n */\nexport const renderImage = (urlOrBlob: Blob | string) =>\n new Promise<HTMLImageElement>((resolve, reject) => {\n const image = new Image();\n image.src = blobToUrl(urlOrBlob);\n image.onload = () => resolve(image);\n image.onerror = () => reject();\n });\n\nfunction cropImageFromCanvas(context: CanvasRenderingContext2D) {\n const canvas = context.canvas;\n let w = canvas.width;\n let h = canvas.height;\n const pix: { x: number[]; y: number[] } = { x: [], y: [] };\n const imageData = context.getImageData(0, 0, canvas.width, canvas.height);\n let x: number;\n let y: number;\n let index: number;\n\n for (y = 0; y < h; y++) {\n for (x = 0; x < w; x++) {\n index = (y * w + x) * 4;\n if (imageData.data[index + 3] > 0) {\n pix.x.push(x);\n pix.y.push(y);\n }\n }\n }\n pix.x.sort((a, b) => a - b);\n pix.y.sort((a, b) => a - b);\n const n = pix.x.length - 1;\n\n w = 1 + pix.x[n] - pix.x[0];\n h = 1 + pix.y[n] - pix.y[0];\n const cut = context.getImageData(pix.x[0], pix.y[0], w, h);\n\n canvas.width = w;\n canvas.height = h;\n context.putImageData(cut, 0, 0);\n return canvas;\n}\n\n// TODO: ломает iphone с огромными изображениями\nexport const rotateImage = (image: HTMLImageElement, angle: number) => {\n const maxSize = Math.max(image.width, image.height);\n const canvas = document.createElement('canvas');\n canvas.width = maxSize;\n canvas.height = maxSize;\n const context = canvas.getContext('2d')!;\n context.save();\n context.translate(canvas.width / 2, canvas.height / 2);\n context.rotate(degToRad(angle));\n context.drawImage(image, -image.width / 2, -image.height / 2);\n context.restore();\n cropImageFromCanvas(context);\n return renderImage(canvas.toDataURL('image/png'));\n};\n\ninterface DecodedDataUrl {\n mimeType?: string;\n data?: string;\n}\n\n/*\n * Returning object which contains base64 data and mime type of passed data url string.\n * */\nexport function decodeDataUrl(url: string): DecodedDataUrl {\n const regex = /^data:(.*);base64,\\s?(.*)$/;\n const matches = new RegExp(regex).exec(url);\n\n return {\n mimeType: matches?.[1],\n data: matches?.[2],\n };\n}\n\nexport const isHttpUrl = (url: string): boolean => {\n return url.startsWith('https://') || url.startsWith('http://');\n};\n\nexport const isBase64Image = (str: string): boolean => {\n const { mimeType, data } = decodeDataUrl(str);\n return !!(data && mimeType?.startsWith('image/'));\n};\n"],"names":["blobToBase64","blob","resolve","reject","reader","blobToUrl","urlOrBlob","fileToBlob","file","imageToBlob","imageElement","mimeType","canvas","dataUri","base64data","base64MimeType","bytes","buf","array","index","renderImage","image","cropImageFromCanvas","context","w","h","pix","imageData","x","y","a","b","n","cut","rotateImage","angle","maxSize","degToRad","decodeDataUrl","url","regex","matches","isHttpUrl","isBase64Image","str","data"],"mappings":"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"}
package/media.js CHANGED
@@ -1,103 +1,61 @@
1
- import { degToRad } from "./math.js";
2
- export function blobToBase64(blob) {
3
- return new Promise((resolve, reject) => {
4
- const reader = new FileReader();
5
- reader.onloadend = () => resolve(reader.result);
6
- reader.onerror = reject;
7
- reader.readAsDataURL(blob);
8
- });
1
+ import { degToRad as m } from "yummies/math";
2
+ function y(t) {
3
+ return new Promise((o, a) => {
4
+ const e = new FileReader();
5
+ e.onloadend = () => o(e.result), e.onerror = a, e.readAsDataURL(t);
6
+ });
9
7
  }
10
- export const blobToUrl = (urlOrBlob) => urlOrBlob instanceof Blob ? URL.createObjectURL(urlOrBlob) : urlOrBlob;
11
- export const fileToBlob = (file) => {
12
- return new Blob([file], { type: file.type });
13
- };
14
- export const imageToBlob = (imageElement, mimeType = 'image/png') => {
15
- const canvas = document.createElement('canvas');
16
- canvas.width = imageElement.naturalWidth || 300;
17
- canvas.height = imageElement.naturalHeight || 300;
18
- canvas.getContext('2d').drawImage(imageElement, 0, 0);
19
- const dataUri = canvas.toDataURL(mimeType, 1);
20
- const base64data = dataUri.split(',')[1];
21
- const base64MimeType = dataUri.split(';')[0].slice(5);
22
- const bytes = globalThis.atob(base64data);
23
- const buf = new ArrayBuffer(bytes.length);
24
- const array = new Uint8Array(buf);
25
- for (let index = 0; index < bytes.length; index++) {
26
- array[index] = bytes.charCodeAt(index);
27
- }
28
- const blob = new Blob([array], { type: base64MimeType });
29
- return blob;
30
- };
31
- /**
32
- * Загружает и отрисовывает изображение с использованием Image
33
- *
34
- * @returns {Promise<HTMLImageElement>}
35
- */
36
- export const renderImage = (urlOrBlob) => new Promise((resolve, reject) => {
37
- const image = new Image();
38
- image.src = blobToUrl(urlOrBlob);
39
- image.onload = () => resolve(image);
40
- image.onerror = () => reject();
8
+ const p = (t) => t instanceof Blob ? URL.createObjectURL(t) : t, f = (t) => new Blob([t], { type: t.type }), I = (t, o = "image/png") => {
9
+ const a = document.createElement("canvas");
10
+ a.width = t.naturalWidth || 300, a.height = t.naturalHeight || 300, a.getContext("2d").drawImage(t, 0, 0);
11
+ const e = a.toDataURL(o, 1), n = e.split(",")[1], h = e.split(";")[0].slice(5), s = globalThis.atob(n), r = new ArrayBuffer(s.length), i = new Uint8Array(r);
12
+ for (let c = 0; c < s.length; c++)
13
+ i[c] = s.charCodeAt(c);
14
+ return new Blob([i], { type: h });
15
+ }, w = (t) => new Promise((o, a) => {
16
+ const e = new Image();
17
+ e.src = p(t), e.onload = () => o(e), e.onerror = () => a();
41
18
  });
42
- function cropImageFromCanvas(context) {
43
- const canvas = context.canvas;
44
- let w = canvas.width;
45
- let h = canvas.height;
46
- const pix = { x: [], y: [] };
47
- const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
48
- let x;
49
- let y;
50
- let index;
51
- for (y = 0; y < h; y++) {
52
- for (x = 0; x < w; x++) {
53
- index = (y * w + x) * 4;
54
- if (imageData.data[index + 3] > 0) {
55
- pix.x.push(x);
56
- pix.y.push(y);
57
- }
58
- }
59
- }
60
- pix.x.sort((a, b) => a - b);
61
- pix.y.sort((a, b) => a - b);
62
- const n = pix.x.length - 1;
63
- w = 1 + pix.x[n] - pix.x[0];
64
- h = 1 + pix.y[n] - pix.y[0];
65
- const cut = context.getImageData(pix.x[0], pix.y[0], w, h);
66
- canvas.width = w;
67
- canvas.height = h;
68
- context.putImageData(cut, 0, 0);
69
- return canvas;
19
+ function b(t) {
20
+ const o = t.canvas;
21
+ let a = o.width, e = o.height;
22
+ const n = { x: [], y: [] }, h = t.getImageData(0, 0, o.width, o.height);
23
+ let s, r, i;
24
+ for (r = 0; r < e; r++)
25
+ for (s = 0; s < a; s++)
26
+ i = (r * a + s) * 4, h.data[i + 3] > 0 && (n.x.push(s), n.y.push(r));
27
+ n.x.sort((g, l) => g - l), n.y.sort((g, l) => g - l);
28
+ const d = n.x.length - 1;
29
+ a = 1 + n.x[d] - n.x[0], e = 1 + n.y[d] - n.y[0];
30
+ const c = t.getImageData(n.x[0], n.y[0], a, e);
31
+ return o.width = a, o.height = e, t.putImageData(c, 0, 0), o;
70
32
  }
71
- // TODO: ломает iphone с огромными изображениями
72
- export const rotateImage = (image, angle) => {
73
- const maxSize = Math.max(image.width, image.height);
74
- const canvas = document.createElement('canvas');
75
- canvas.width = maxSize;
76
- canvas.height = maxSize;
77
- const context = canvas.getContext('2d');
78
- context.save();
79
- context.translate(canvas.width / 2, canvas.height / 2);
80
- context.rotate(degToRad(angle));
81
- context.drawImage(image, -image.width / 2, -image.height / 2);
82
- context.restore();
83
- cropImageFromCanvas(context);
84
- return renderImage(canvas.toDataURL('image/png'));
33
+ const U = (t, o) => {
34
+ const a = Math.max(t.width, t.height), e = document.createElement("canvas");
35
+ e.width = a, e.height = a;
36
+ const n = e.getContext("2d");
37
+ return n.save(), n.translate(e.width / 2, e.height / 2), n.rotate(m(o)), n.drawImage(t, -t.width / 2, -t.height / 2), n.restore(), b(n), w(e.toDataURL("image/png"));
85
38
  };
86
- /*
87
- * Returning object which contains base64 data and mime type of passed data url string.
88
- * */
89
- export function decodeDataUrl(url) {
90
- const regex = /^data:(.*);base64,\s?(.*)$/;
91
- const matches = new RegExp(regex).exec(url);
92
- return {
93
- mimeType: matches?.[1],
94
- data: matches?.[2],
95
- };
39
+ function u(t) {
40
+ const o = /^data:(.*);base64,\s?(.*)$/, a = new RegExp(o).exec(t);
41
+ return {
42
+ mimeType: a?.[1],
43
+ data: a?.[2]
44
+ };
96
45
  }
97
- export const isHttpUrl = (url) => {
98
- return url.startsWith('https://') || url.startsWith('http://');
46
+ const T = (t) => t.startsWith("https://") || t.startsWith("http://"), v = (t) => {
47
+ const { mimeType: o, data: a } = u(t);
48
+ return !!(a && o?.startsWith("image/"));
99
49
  };
100
- export const isBase64Image = (str) => {
101
- const { mimeType, data } = decodeDataUrl(str);
102
- return !!(data && mimeType?.startsWith('image/'));
50
+ export {
51
+ y as blobToBase64,
52
+ p as blobToUrl,
53
+ u as decodeDataUrl,
54
+ f as fileToBlob,
55
+ I as imageToBlob,
56
+ v as isBase64Image,
57
+ T as isHttpUrl,
58
+ w as renderImage,
59
+ U as rotateImage
103
60
  };
61
+ //# sourceMappingURL=media.js.map
package/media.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","sources":["../src/media.ts"],"sourcesContent":["import { degToRad } from 'yummies/math';\n\nexport function blobToBase64(blob: Blob): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n}\n\nexport const blobToUrl = (urlOrBlob: string | Blob) =>\n urlOrBlob instanceof Blob ? URL.createObjectURL(urlOrBlob) : urlOrBlob;\n\nexport const fileToBlob = (file: File) => {\n return new Blob([file], { type: file.type });\n};\n\nexport const imageToBlob = (\n imageElement: HTMLImageElement,\n mimeType: string = 'image/png',\n) => {\n const canvas = document.createElement('canvas');\n\n canvas.width = imageElement.naturalWidth || 300;\n canvas.height = imageElement.naturalHeight || 300;\n\n canvas.getContext('2d')!.drawImage(imageElement, 0, 0);\n\n const dataUri = canvas.toDataURL(mimeType, 1);\n const base64data = dataUri.split(',')[1];\n const base64MimeType = dataUri.split(';')[0].slice(5);\n\n const bytes = globalThis.atob(base64data);\n const buf = new ArrayBuffer(bytes.length);\n const array = new Uint8Array(buf);\n\n for (let index = 0; index < bytes.length; index++) {\n array[index] = bytes.charCodeAt(index);\n }\n\n const blob = new Blob([array], { type: base64MimeType });\n\n return blob;\n};\n\n/**\n * Загружает и отрисовывает изображение с использованием Image\n *\n * @returns {Promise<HTMLImageElement>}\n */\nexport const renderImage = (urlOrBlob: Blob | string) =>\n new Promise<HTMLImageElement>((resolve, reject) => {\n const image = new Image();\n image.src = blobToUrl(urlOrBlob);\n image.onload = () => resolve(image);\n image.onerror = () => reject();\n });\n\nfunction cropImageFromCanvas(context: CanvasRenderingContext2D) {\n const canvas = context.canvas;\n let w = canvas.width;\n let h = canvas.height;\n const pix: { x: number[]; y: number[] } = { x: [], y: [] };\n const imageData = context.getImageData(0, 0, canvas.width, canvas.height);\n let x: number;\n let y: number;\n let index: number;\n\n for (y = 0; y < h; y++) {\n for (x = 0; x < w; x++) {\n index = (y * w + x) * 4;\n if (imageData.data[index + 3] > 0) {\n pix.x.push(x);\n pix.y.push(y);\n }\n }\n }\n pix.x.sort((a, b) => a - b);\n pix.y.sort((a, b) => a - b);\n const n = pix.x.length - 1;\n\n w = 1 + pix.x[n] - pix.x[0];\n h = 1 + pix.y[n] - pix.y[0];\n const cut = context.getImageData(pix.x[0], pix.y[0], w, h);\n\n canvas.width = w;\n canvas.height = h;\n context.putImageData(cut, 0, 0);\n return canvas;\n}\n\n// TODO: ломает iphone с огромными изображениями\nexport const rotateImage = (image: HTMLImageElement, angle: number) => {\n const maxSize = Math.max(image.width, image.height);\n const canvas = document.createElement('canvas');\n canvas.width = maxSize;\n canvas.height = maxSize;\n const context = canvas.getContext('2d')!;\n context.save();\n context.translate(canvas.width / 2, canvas.height / 2);\n context.rotate(degToRad(angle));\n context.drawImage(image, -image.width / 2, -image.height / 2);\n context.restore();\n cropImageFromCanvas(context);\n return renderImage(canvas.toDataURL('image/png'));\n};\n\ninterface DecodedDataUrl {\n mimeType?: string;\n data?: string;\n}\n\n/*\n * Returning object which contains base64 data and mime type of passed data url string.\n * */\nexport function decodeDataUrl(url: string): DecodedDataUrl {\n const regex = /^data:(.*);base64,\\s?(.*)$/;\n const matches = new RegExp(regex).exec(url);\n\n return {\n mimeType: matches?.[1],\n data: matches?.[2],\n };\n}\n\nexport const isHttpUrl = (url: string): boolean => {\n return url.startsWith('https://') || url.startsWith('http://');\n};\n\nexport const isBase64Image = (str: string): boolean => {\n const { mimeType, data } = decodeDataUrl(str);\n return !!(data && mimeType?.startsWith('image/'));\n};\n"],"names":["blobToBase64","blob","resolve","reject","reader","blobToUrl","urlOrBlob","fileToBlob","file","imageToBlob","imageElement","mimeType","canvas","dataUri","base64data","base64MimeType","bytes","buf","array","index","renderImage","image","cropImageFromCanvas","context","w","h","pix","imageData","x","y","a","b","n","cut","rotateImage","angle","maxSize","degToRad","decodeDataUrl","url","regex","matches","isHttpUrl","isBase64Image","str","data"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AnyObject } from "../utils/types.js";
1
+ import { AnyObject } from '../utils/types.ts';
2
2
  export type ObservableAnnotationsArray = [string, any][];
3
3
  export declare const applyObservable: (context: AnyObject, annotationsArray: ObservableAnnotationsArray, useDecorators?: boolean) => void;
4
4
  //# sourceMappingURL=apply-observable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"apply-observable.d.ts","sourceRoot":"","sources":["../../src/mobx/apply-observable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,0BAA0B;AAEnD,MAAM,MAAM,0BAA0B,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;AAEzD,eAAO,MAAM,eAAe,GAC1B,SAAS,SAAS,EAClB,kBAAkB,0BAA0B,EAC5C,gBAAgB,OAAO,SAWxB,CAAC"}
1
+ {"version":3,"file":"apply-observable.d.ts","sourceRoot":"","sources":["../../src/mobx/apply-observable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,MAAM,0BAA0B,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;AAEzD,eAAO,MAAM,eAAe,GAC1B,SAAS,SAAS,EAClB,kBAAkB,0BAA0B,EAC5C,gBAAgB,OAAO,SAWxB,CAAC"}
@@ -1,5 +1,5 @@
1
- import { type IAtom } from 'mobx';
2
- import type { AnyObject } from "../utils/types.js";
1
+ import { IAtom } from 'mobx';
2
+ import { AnyObject } from '../utils/types.ts';
3
3
  export interface IEnhancedAtom<TMeta extends AnyObject = AnyObject> extends IAtom {
4
4
  meta: TMeta;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-enhanced-atom.d.ts","sourceRoot":"","sources":["../../src/mobx/create-enhanced-atom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,KAAK,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,0BAA0B;AAEnD,MAAM,WAAW,aAAa,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS,CAChE,SAAQ,KAAK;IACb,IAAI,EAAE,KAAK,CAAC;CACb;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,KAAK,SAAS,SAAS,EACxD,MAAM,MAAM,EACZ,0BAA0B,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,EAC9D,4BAA4B,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,EAChE,OAAO,KAAK,KACX,aAAa,CAAC,KAAK,CAUrB,CAAC"}
1
+ {"version":3,"file":"create-enhanced-atom.d.ts","sourceRoot":"","sources":["../../src/mobx/create-enhanced-atom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,KAAK,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,aAAa,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS,CAChE,SAAQ,KAAK;IACb,IAAI,EAAE,KAAK,CAAC;CACb;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,KAAK,SAAS,SAAS,EACxD,MAAM,MAAM,EACZ,0BAA0B,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,EAC9D,4BAA4B,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,EAChE,OAAO,KAAK,KACX,aAAa,CAAC,KAAK,CAUrB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AnyObject } from "../utils/types.js";
1
+ import { AnyObject } from '../utils/types.ts';
2
2
  export declare class DeepObservableStruct<TData extends AnyObject> {
3
3
  data: TData;
4
4
  constructor(data: TData);
@@ -1 +1 @@
1
- {"version":3,"file":"deep-observable-struct.d.ts","sourceRoot":"","sources":["../../src/mobx/deep-observable-struct.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,0BAA0B;AAEnD,qBAAa,oBAAoB,CAAC,KAAK,SAAS,SAAS;IACvD,IAAI,EAAE,KAAK,CAAC;gBAEA,IAAI,EAAE,KAAK;IASvB,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;CAoD5B"}
1
+ {"version":3,"file":"deep-observable-struct.d.ts","sourceRoot":"","sources":["../../src/mobx/deep-observable-struct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,qBAAa,oBAAoB,CAAC,KAAK,SAAS,SAAS;IACvD,IAAI,EAAE,KAAK,CAAC;gBAEA,IAAI,EAAE,KAAK;IASvB,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;CAoD5B"}
@@ -1,5 +1,5 @@
1
- import { type AnnotationMapEntry } from 'mobx';
2
- import type { AnyObject } from "../utils/types.js";
1
+ import { AnnotationMapEntry } from 'mobx';
2
+ import { AnyObject } from '../utils/types.ts';
3
3
  type ObservableObjectAdministration = Parameters<Exclude<AnnotationMapEntry, boolean>['make_']>[0];
4
4
  export declare const getMobxAdministration: (context: AnyObject) => ObservableObjectAdministration;
5
5
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"get-mobx-administration.d.ts","sourceRoot":"","sources":["../../src/mobx/get-mobx-administration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,kBAAkB,EAAE,MAAM,MAAM,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,0BAA0B;AAEnD,KAAK,8BAA8B,GAAG,UAAU,CAC9C,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAC9C,CAAC,CAAC,CAAC,CAAC;AAEL,eAAO,MAAM,qBAAqB,GAChC,SAAS,SAAS,KACjB,8BAAgD,CAAC"}
1
+ {"version":3,"file":"get-mobx-administration.d.ts","sourceRoot":"","sources":["../../src/mobx/get-mobx-administration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,kBAAkB,EAAE,MAAM,MAAM,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,KAAK,8BAA8B,GAAG,UAAU,CAC9C,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAC9C,CAAC,CAAC,CAAC,CAAC;AAEL,eAAO,MAAM,qBAAqB,GAChC,SAAS,SAAS,KACjB,8BAAgD,CAAC"}
package/mobx/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export * from "./apply-observable.js";
2
- export * from "./create-enhanced-atom.js";
3
- export * from "./deep-observable-struct.js";
4
- export * from "./get-mobx-administration.js";
5
- export * from "./lazy-observe.js";
1
+ export * from './apply-observable.js';
2
+ export * from './create-enhanced-atom.js';
3
+ export * from './deep-observable-struct.js';
4
+ export * from './get-mobx-administration.js';
5
+ export * from './lazy-observe.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mobx/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0CAA0C;AAC1C,4CAA4C;AAC5C,6CAA6C;AAC7C,kCAAkC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mobx/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC"}
package/mobx.cjs ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("mobx"),m=require("./~index-PKNbSTT-.js"),h=(r,s,o)=>{o?(s.forEach(([n,t])=>{t(r,n)}),c.makeObservable(r)):c.makeObservable(r,Object.fromEntries(s))},g=(r,s,o,n)=>{const t=c.createAtom(r,s&&(()=>s?.(t)),o&&(()=>o?.(t)));return t.meta=n??{},t.reportChanged=t.reportChanged.bind(t),t.reportObserved=t.reportObserved.bind(t),t};class k{data;constructor(s){this.data=s,c.makeObservable(this,{data:c.observable.deep,set:c.action})}set(s){const o=Object.keys(this.data).map(e=>[e,this.data,s]);let n=0,t=o.length;for(;n<t;){const[e,i,b]=o[n],l=b[e],d=i[e];if(n++,e in b)if(m.isObject(l)&&m.isObject(d)){const v=Object.keys(l);Object.keys(d).forEach(u=>{u in l||delete i[e][u]}),v.forEach(u=>{t=o.push([u,i[e],l])})}else l!==d&&(i[e]=l);else delete i[e]}Object.keys(s).forEach(e=>{this.data[e]||(this.data[e]=s[e])})}}const j=r=>r[c.$mobx],A=({context:r,property:s,onStart:o,onEnd:n,endDelay:t=!1})=>{let e,i;const b=new Set,l=Array.isArray(s)?s:[s],d=()=>{if(b.clear(),t===!1){n?.(i,d),i=void 0;return}e&&(clearTimeout(e),e=void 0),e=setTimeout(()=>{n?.(i,d),e=void 0,i=void 0},t)},v=a=>{const O=b.size>0;b.add(a),!O&&(e&&(clearTimeout(e),e=void 0),i=o?.())},u=a=>{const O=!b.size;b.delete(a);const f=b.size>0;O||f||d()};return l.forEach(a=>{r?(c.onBecomeObserved(r,a,()=>v(a)),c.onBecomeUnobserved(r,a,()=>u(a))):(c.onBecomeObserved(a,()=>v(a)),c.onBecomeUnobserved(a,()=>u(a)))}),d};exports.DeepObservableStruct=k;exports.applyObservable=h;exports.createEnhancedAtom=g;exports.getMobxAdministration=j;exports.lazyObserve=A;
2
+ //# sourceMappingURL=mobx.cjs.map
package/mobx.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobx.cjs","sources":["../src/mobx/apply-observable.ts","../src/mobx/create-enhanced-atom.ts","../src/mobx/deep-observable-struct.ts","../src/mobx/get-mobx-administration.ts","../src/mobx/lazy-observe.ts"],"sourcesContent":["import { makeObservable } from 'mobx';\nimport type { AnyObject } from 'yummies/utils/types';\n\nexport type ObservableAnnotationsArray = [string, any][];\n\nexport const applyObservable = (\n context: AnyObject,\n annotationsArray: ObservableAnnotationsArray,\n useDecorators?: boolean,\n) => {\n if (useDecorators) {\n annotationsArray.forEach(([field, annotation]) => {\n annotation(context, field);\n });\n\n makeObservable(context);\n } else {\n makeObservable(context, Object.fromEntries(annotationsArray));\n }\n};\n","import { createAtom, type IAtom } from 'mobx';\nimport type { AnyObject } from 'yummies/utils/types';\n\nexport interface IEnhancedAtom<TMeta extends AnyObject = AnyObject>\n extends IAtom {\n meta: TMeta;\n}\n\n/**\n * Creates an enhanced atom with meta data\n * And bind `reportChanged` and `reportObserved` method to the atom\n */\nexport const createEnhancedAtom = <TMeta extends AnyObject>(\n name: string,\n onBecomeObservedHandler?: (atom: IEnhancedAtom<TMeta>) => void,\n onBecomeUnobservedHandler?: (atom: IEnhancedAtom<TMeta>) => void,\n meta?: TMeta,\n): IEnhancedAtom<TMeta> => {\n const atom = createAtom(\n name,\n onBecomeObservedHandler && (() => onBecomeObservedHandler?.(atom)),\n onBecomeUnobservedHandler && (() => onBecomeUnobservedHandler?.(atom)),\n ) as IEnhancedAtom<TMeta>;\n atom.meta = meta ?? ({} as TMeta);\n atom.reportChanged = atom.reportChanged.bind(atom);\n atom.reportObserved = atom.reportObserved.bind(atom);\n return atom;\n};\n","import { action, makeObservable, observable } from 'mobx';\nimport type { AnyObject } from 'yummies/utils/types';\nimport { typeGuard } from '../type-guard/index.js';\n\nexport class DeepObservableStruct<TData extends AnyObject> {\n data: TData;\n\n constructor(data: TData) {\n this.data = data;\n\n makeObservable(this, {\n data: observable.deep,\n set: action,\n });\n }\n\n set(newData: Partial<TData>) {\n type StackItem = [key: string, currObservable: AnyObject, new: AnyObject];\n\n const stack: StackItem[] = Object.keys(this.data).map((key) => [\n key,\n this.data,\n newData,\n ]);\n\n let currentIndex = 0;\n let stackLength = stack.length;\n\n while (currentIndex < stackLength) {\n const [key, currObservableData, newData] = stack[currentIndex];\n const newValue = newData[key];\n const currValue = currObservableData[key];\n\n currentIndex++;\n\n if (key in newData) {\n if (typeGuard.isObject(newValue) && typeGuard.isObject(currValue)) {\n const newValueKeys = Object.keys(newValue);\n\n Object.keys(currValue).forEach((childKey) => {\n if (!(childKey in newValue)) {\n delete currObservableData[key][childKey];\n }\n });\n\n newValueKeys.forEach((childKey) => {\n const length = stack.push([\n childKey,\n currObservableData[key],\n newValue,\n ]);\n stackLength = length;\n });\n } else if (newValue !== currValue) {\n currObservableData[key] = newValue;\n }\n } else {\n delete currObservableData[key];\n }\n }\n\n Object.keys(newData).forEach((newDataKey) => {\n if (!this.data[newDataKey]) {\n // @ts-expect-error\n this.data[newDataKey] = newData[newDataKey];\n }\n });\n }\n}\n","import { $mobx, type AnnotationMapEntry } from 'mobx';\nimport type { AnyObject } from 'yummies/utils/types';\n\ntype ObservableObjectAdministration = Parameters<\n Exclude<AnnotationMapEntry, boolean>['make_']\n>[0];\n\nexport const getMobxAdministration = (\n context: AnyObject,\n): ObservableObjectAdministration => context[$mobx];\n","import { onBecomeObserved, onBecomeUnobserved } from 'mobx';\n\n/**\n * When ONE OF the properties is becomes observed then `onStart` function is called.\n * WHen ALL properties are unobserved then `onEnd` function is called with the `metaData` that was returned by `onStart`.\n *\n * It uses `onBecomeObserved` and `onBecomeUnobserved` mobx hooks to perform lazy observation.\n */\nexport const lazyObserve = <TMetaData = void>({\n context,\n property,\n onStart,\n onEnd,\n endDelay = false,\n}: {\n context?: any;\n property: any | any[];\n onStart?: () => TMetaData;\n onEnd?: (metaData: TMetaData, cleanupFn: VoidFunction) => void;\n endDelay?: number | false;\n}) => {\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n let metaData: TMetaData | undefined;\n const observingProps = new Set<string>();\n const properties = Array.isArray(property) ? property : [property];\n\n const cleanup = () => {\n observingProps.clear();\n\n if (endDelay === false) {\n onEnd?.(metaData!, cleanup);\n metaData = undefined;\n return;\n }\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n\n timeoutId = setTimeout(() => {\n onEnd?.(metaData!, cleanup);\n timeoutId = undefined;\n metaData = undefined;\n }, endDelay);\n };\n\n const start = (property: string) => {\n const isAlreadyObserving = observingProps.size > 0;\n observingProps.add(property);\n\n if (isAlreadyObserving) {\n return;\n }\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n\n metaData = onStart?.();\n };\n\n const stop = (property: string) => {\n const isAlreadyNotObserving = !observingProps.size;\n\n observingProps.delete(property);\n\n const isObserving = observingProps.size > 0;\n\n if (isAlreadyNotObserving || isObserving) {\n return;\n }\n\n cleanup();\n };\n\n properties.forEach((property) => {\n if (context) {\n onBecomeObserved(context, property, () => start(property));\n onBecomeUnobserved(context, property, () => stop(property));\n } else {\n onBecomeObserved(property, () => start(property));\n onBecomeUnobserved(property, () => stop(property));\n }\n });\n\n return cleanup;\n};\n"],"names":["applyObservable","context","annotationsArray","useDecorators","field","annotation","makeObservable","createEnhancedAtom","name","onBecomeObservedHandler","onBecomeUnobservedHandler","meta","atom","createAtom","DeepObservableStruct","data","observable","action","newData","stack","key","currentIndex","stackLength","currObservableData","newValue","currValue","typeGuard.isObject","newValueKeys","childKey","newDataKey","getMobxAdministration","$mobx","lazyObserve","property","onStart","onEnd","endDelay","timeoutId","metaData","observingProps","properties","cleanup","start","isAlreadyObserving","stop","isAlreadyNotObserving","isObserving","onBecomeObserved","onBecomeUnobserved"],"mappings":"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"}
package/mobx.js ADDED
@@ -0,0 +1,89 @@
1
+ import { makeObservable as u, createAtom as k, action as j, observable as A, $mobx as E, onBecomeObserved as m, onBecomeUnobserved as v } from "mobx";
2
+ import { b as O } from "./~index-C3wKHvHr.js";
3
+ const V = (a, s, c) => {
4
+ c ? (s.forEach(([o, t]) => {
5
+ t(a, o);
6
+ }), u(a)) : u(a, Object.fromEntries(s));
7
+ }, C = (a, s, c, o) => {
8
+ const t = k(
9
+ a,
10
+ s && (() => s?.(t)),
11
+ c && (() => c?.(t))
12
+ );
13
+ return t.meta = o ?? {}, t.reportChanged = t.reportChanged.bind(t), t.reportObserved = t.reportObserved.bind(t), t;
14
+ };
15
+ class I {
16
+ data;
17
+ constructor(s) {
18
+ this.data = s, u(this, {
19
+ data: A.deep,
20
+ set: j
21
+ });
22
+ }
23
+ set(s) {
24
+ const c = Object.keys(this.data).map((e) => [
25
+ e,
26
+ this.data,
27
+ s
28
+ ]);
29
+ let o = 0, t = c.length;
30
+ for (; o < t; ) {
31
+ const [e, r, n] = c[o], l = n[e], b = r[e];
32
+ if (o++, e in n)
33
+ if (O(l) && O(b)) {
34
+ const f = Object.keys(l);
35
+ Object.keys(b).forEach((d) => {
36
+ d in l || delete r[e][d];
37
+ }), f.forEach((d) => {
38
+ t = c.push([
39
+ d,
40
+ r[e],
41
+ l
42
+ ]);
43
+ });
44
+ } else l !== b && (r[e] = l);
45
+ else
46
+ delete r[e];
47
+ }
48
+ Object.keys(s).forEach((e) => {
49
+ this.data[e] || (this.data[e] = s[e]);
50
+ });
51
+ }
52
+ }
53
+ const S = (a) => a[E], w = ({
54
+ context: a,
55
+ property: s,
56
+ onStart: c,
57
+ onEnd: o,
58
+ endDelay: t = !1
59
+ }) => {
60
+ let e, r;
61
+ const n = /* @__PURE__ */ new Set(), l = Array.isArray(s) ? s : [s], b = () => {
62
+ if (n.clear(), t === !1) {
63
+ o?.(r, b), r = void 0;
64
+ return;
65
+ }
66
+ e && (clearTimeout(e), e = void 0), e = setTimeout(() => {
67
+ o?.(r, b), e = void 0, r = void 0;
68
+ }, t);
69
+ }, f = (i) => {
70
+ const h = n.size > 0;
71
+ n.add(i), !h && (e && (clearTimeout(e), e = void 0), r = c?.());
72
+ }, d = (i) => {
73
+ const h = !n.size;
74
+ n.delete(i);
75
+ const g = n.size > 0;
76
+ h || g || b();
77
+ };
78
+ return l.forEach((i) => {
79
+ a ? (m(a, i, () => f(i)), v(a, i, () => d(i))) : (m(i, () => f(i)), v(i, () => d(i)));
80
+ }), b;
81
+ };
82
+ export {
83
+ I as DeepObservableStruct,
84
+ V as applyObservable,
85
+ C as createEnhancedAtom,
86
+ S as getMobxAdministration,
87
+ w as lazyObserve
88
+ };
89
+ //# sourceMappingURL=mobx.js.map
package/mobx.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobx.js","sources":["../src/mobx/apply-observable.ts","../src/mobx/create-enhanced-atom.ts","../src/mobx/deep-observable-struct.ts","../src/mobx/get-mobx-administration.ts","../src/mobx/lazy-observe.ts"],"sourcesContent":["import { makeObservable } from 'mobx';\nimport type { AnyObject } from 'yummies/utils/types';\n\nexport type ObservableAnnotationsArray = [string, any][];\n\nexport const applyObservable = (\n context: AnyObject,\n annotationsArray: ObservableAnnotationsArray,\n useDecorators?: boolean,\n) => {\n if (useDecorators) {\n annotationsArray.forEach(([field, annotation]) => {\n annotation(context, field);\n });\n\n makeObservable(context);\n } else {\n makeObservable(context, Object.fromEntries(annotationsArray));\n }\n};\n","import { createAtom, type IAtom } from 'mobx';\nimport type { AnyObject } from 'yummies/utils/types';\n\nexport interface IEnhancedAtom<TMeta extends AnyObject = AnyObject>\n extends IAtom {\n meta: TMeta;\n}\n\n/**\n * Creates an enhanced atom with meta data\n * And bind `reportChanged` and `reportObserved` method to the atom\n */\nexport const createEnhancedAtom = <TMeta extends AnyObject>(\n name: string,\n onBecomeObservedHandler?: (atom: IEnhancedAtom<TMeta>) => void,\n onBecomeUnobservedHandler?: (atom: IEnhancedAtom<TMeta>) => void,\n meta?: TMeta,\n): IEnhancedAtom<TMeta> => {\n const atom = createAtom(\n name,\n onBecomeObservedHandler && (() => onBecomeObservedHandler?.(atom)),\n onBecomeUnobservedHandler && (() => onBecomeUnobservedHandler?.(atom)),\n ) as IEnhancedAtom<TMeta>;\n atom.meta = meta ?? ({} as TMeta);\n atom.reportChanged = atom.reportChanged.bind(atom);\n atom.reportObserved = atom.reportObserved.bind(atom);\n return atom;\n};\n","import { action, makeObservable, observable } from 'mobx';\nimport type { AnyObject } from 'yummies/utils/types';\nimport { typeGuard } from '../type-guard/index.js';\n\nexport class DeepObservableStruct<TData extends AnyObject> {\n data: TData;\n\n constructor(data: TData) {\n this.data = data;\n\n makeObservable(this, {\n data: observable.deep,\n set: action,\n });\n }\n\n set(newData: Partial<TData>) {\n type StackItem = [key: string, currObservable: AnyObject, new: AnyObject];\n\n const stack: StackItem[] = Object.keys(this.data).map((key) => [\n key,\n this.data,\n newData,\n ]);\n\n let currentIndex = 0;\n let stackLength = stack.length;\n\n while (currentIndex < stackLength) {\n const [key, currObservableData, newData] = stack[currentIndex];\n const newValue = newData[key];\n const currValue = currObservableData[key];\n\n currentIndex++;\n\n if (key in newData) {\n if (typeGuard.isObject(newValue) && typeGuard.isObject(currValue)) {\n const newValueKeys = Object.keys(newValue);\n\n Object.keys(currValue).forEach((childKey) => {\n if (!(childKey in newValue)) {\n delete currObservableData[key][childKey];\n }\n });\n\n newValueKeys.forEach((childKey) => {\n const length = stack.push([\n childKey,\n currObservableData[key],\n newValue,\n ]);\n stackLength = length;\n });\n } else if (newValue !== currValue) {\n currObservableData[key] = newValue;\n }\n } else {\n delete currObservableData[key];\n }\n }\n\n Object.keys(newData).forEach((newDataKey) => {\n if (!this.data[newDataKey]) {\n // @ts-expect-error\n this.data[newDataKey] = newData[newDataKey];\n }\n });\n }\n}\n","import { $mobx, type AnnotationMapEntry } from 'mobx';\nimport type { AnyObject } from 'yummies/utils/types';\n\ntype ObservableObjectAdministration = Parameters<\n Exclude<AnnotationMapEntry, boolean>['make_']\n>[0];\n\nexport const getMobxAdministration = (\n context: AnyObject,\n): ObservableObjectAdministration => context[$mobx];\n","import { onBecomeObserved, onBecomeUnobserved } from 'mobx';\n\n/**\n * When ONE OF the properties is becomes observed then `onStart` function is called.\n * WHen ALL properties are unobserved then `onEnd` function is called with the `metaData` that was returned by `onStart`.\n *\n * It uses `onBecomeObserved` and `onBecomeUnobserved` mobx hooks to perform lazy observation.\n */\nexport const lazyObserve = <TMetaData = void>({\n context,\n property,\n onStart,\n onEnd,\n endDelay = false,\n}: {\n context?: any;\n property: any | any[];\n onStart?: () => TMetaData;\n onEnd?: (metaData: TMetaData, cleanupFn: VoidFunction) => void;\n endDelay?: number | false;\n}) => {\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n let metaData: TMetaData | undefined;\n const observingProps = new Set<string>();\n const properties = Array.isArray(property) ? property : [property];\n\n const cleanup = () => {\n observingProps.clear();\n\n if (endDelay === false) {\n onEnd?.(metaData!, cleanup);\n metaData = undefined;\n return;\n }\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n\n timeoutId = setTimeout(() => {\n onEnd?.(metaData!, cleanup);\n timeoutId = undefined;\n metaData = undefined;\n }, endDelay);\n };\n\n const start = (property: string) => {\n const isAlreadyObserving = observingProps.size > 0;\n observingProps.add(property);\n\n if (isAlreadyObserving) {\n return;\n }\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n\n metaData = onStart?.();\n };\n\n const stop = (property: string) => {\n const isAlreadyNotObserving = !observingProps.size;\n\n observingProps.delete(property);\n\n const isObserving = observingProps.size > 0;\n\n if (isAlreadyNotObserving || isObserving) {\n return;\n }\n\n cleanup();\n };\n\n properties.forEach((property) => {\n if (context) {\n onBecomeObserved(context, property, () => start(property));\n onBecomeUnobserved(context, property, () => stop(property));\n } else {\n onBecomeObserved(property, () => start(property));\n onBecomeUnobserved(property, () => stop(property));\n }\n });\n\n return cleanup;\n};\n"],"names":["applyObservable","context","annotationsArray","useDecorators","field","annotation","makeObservable","createEnhancedAtom","name","onBecomeObservedHandler","onBecomeUnobservedHandler","meta","atom","createAtom","DeepObservableStruct","data","observable","action","newData","stack","key","currentIndex","stackLength","currObservableData","newValue","currValue","typeGuard.isObject","newValueKeys","childKey","newDataKey","getMobxAdministration","$mobx","lazyObserve","property","onStart","onEnd","endDelay","timeoutId","metaData","observingProps","properties","cleanup","start","isAlreadyObserving","stop","isAlreadyNotObserving","isObserving","onBecomeObserved","onBecomeUnobserved"],"mappings":"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"}