yummies 5.7.0 → 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 (393) 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/lazy-observe.d.ts +6 -0
  73. package/mobx/lazy-observe.d.ts.map +1 -1
  74. package/mobx.js +89 -0
  75. package/mobx.js.map +1 -0
  76. package/ms.js +12 -17
  77. package/ms.js.map +1 -0
  78. package/number.js +9 -12
  79. package/number.js.map +1 -0
  80. package/package.json +93 -92
  81. package/parser/_exports.d.ts +3 -3
  82. package/parser/_exports.d.ts.map +1 -1
  83. package/parser/index.d.ts +1 -1
  84. package/parser/index.d.ts.map +1 -1
  85. package/parser/number.d.ts +1 -1
  86. package/parser/number.d.ts.map +1 -1
  87. package/parser/percent.d.ts +2 -2
  88. package/parser/percent.d.ts.map +1 -1
  89. package/parser/string.d.ts +1 -1
  90. package/parser/string.d.ts.map +1 -1
  91. package/parser.js +15 -0
  92. package/parser.js.map +1 -0
  93. package/price.js +13 -16
  94. package/price.js.map +1 -0
  95. package/random.js +11 -13
  96. package/random.js.map +1 -0
  97. package/react/hooks/index.d.ts +21 -21
  98. package/react/hooks/index.d.ts.map +1 -1
  99. package/react/hooks/use-click-outside.d.ts +1 -1
  100. package/react/hooks/use-define-ref.d.ts +1 -1
  101. package/react/hooks/use-element-ref.d.ts +1 -1
  102. package/react/hooks/use-event.d.ts +1 -1
  103. package/react/hooks/use-event.d.ts.map +1 -1
  104. package/react/hooks/use-initial-height.d.ts +1 -1
  105. package/react/hooks/use-last-value-ref.d.ts +1 -1
  106. package/react/hooks/use-resize-observer.d.ts +1 -1
  107. package/react/hooks/use-sync-ref.d.ts +1 -1
  108. package/react/hooks/use-toggle.d.ts +1 -1
  109. package/react/hooks/use-value.d.ts +1 -1
  110. package/react/index.d.ts +1 -1
  111. package/react/index.d.ts.map +1 -1
  112. package/react.js +152 -0
  113. package/react.js.map +1 -0
  114. package/sound.js +7 -11
  115. package/sound.js.map +1 -0
  116. package/text.js +20 -46
  117. package/text.js.map +1 -0
  118. package/type-guard/_exports.d.ts +1 -1
  119. package/type-guard/_exports.d.ts.map +1 -1
  120. package/type-guard/index.d.ts +1 -1
  121. package/type-guard/index.d.ts.map +1 -1
  122. package/type-guard.js +5 -0
  123. package/type-guard.js.map +1 -0
  124. package/utility-types.d.ts.map +1 -0
  125. package/utility-types.js +2 -0
  126. package/utility-types.js.map +1 -0
  127. package/utils/types.js +2 -1
  128. package/utils/types.js.map +1 -0
  129. package/vibrate.js +6 -7
  130. package/vibrate.js.map +1 -0
  131. package/~index-C3wKHvHr.js +80 -0
  132. package/~index-C3wKHvHr.js.map +1 -0
  133. package/~number-EWff2XI6.js +25 -0
  134. package/~number-EWff2XI6.js.map +1 -0
  135. package/~number-baxVnzrJ.js +32 -0
  136. package/~number-baxVnzrJ.js.map +1 -0
  137. package/async.cjs +0 -70
  138. package/async.d.cts +0 -28
  139. package/async.d.cts.map +0 -1
  140. package/common.cjs +0 -18
  141. package/common.d.cts +0 -15
  142. package/common.d.cts.map +0 -1
  143. package/complex/counter.cjs +0 -21
  144. package/complex/counter.d.cts +0 -15
  145. package/complex/counter.d.cts.map +0 -1
  146. package/complex/counter.js +0 -17
  147. package/complex/global-config.cjs +0 -46
  148. package/complex/global-config.d.cts +0 -11
  149. package/complex/global-config.d.cts.map +0 -1
  150. package/complex/global-config.js +0 -41
  151. package/complex/index.cjs +0 -19
  152. package/complex/index.d.cts +0 -4
  153. package/complex/index.d.cts.map +0 -1
  154. package/complex/index.js +0 -3
  155. package/complex/modules-factory.cjs +0 -50
  156. package/complex/modules-factory.d.cts +0 -49
  157. package/complex/modules-factory.d.cts.map +0 -1
  158. package/complex/modules-factory.js +0 -46
  159. package/cookie.cjs +0 -13
  160. package/cookie.d.cts +0 -3
  161. package/cookie.d.cts.map +0 -1
  162. package/css.cjs +0 -64
  163. package/css.d.cts +0 -42
  164. package/css.d.cts.map +0 -1
  165. package/data.cjs +0 -58
  166. package/data.d.cts +0 -4
  167. package/data.d.cts.map +0 -1
  168. package/date-time.cjs +0 -171
  169. package/date-time.d.cts +0 -28
  170. package/date-time.d.cts.map +0 -1
  171. package/device.cjs +0 -28
  172. package/device.d.cts +0 -8
  173. package/device.d.cts.map +0 -1
  174. package/encodings.cjs +0 -270
  175. package/encodings.d.cts +0 -2
  176. package/encodings.d.cts.map +0 -1
  177. package/errors.cjs +0 -34
  178. package/errors.d.cts +0 -19
  179. package/errors.d.cts.map +0 -1
  180. package/file.cjs +0 -29
  181. package/file.d.cts +0 -3
  182. package/file.d.cts.map +0 -1
  183. package/format/_exports.cjs +0 -20
  184. package/format/_exports.d.cts +0 -5
  185. package/format/_exports.d.cts.map +0 -1
  186. package/format/_exports.js +0 -4
  187. package/format/constants.cjs +0 -6
  188. package/format/constants.d.cts +0 -4
  189. package/format/constants.d.cts.map +0 -1
  190. package/format/constants.js +0 -3
  191. package/format/index.cjs +0 -40
  192. package/format/index.d.cts +0 -3
  193. package/format/index.d.cts.map +0 -1
  194. package/format/index.js +0 -4
  195. package/format/number.cjs +0 -48
  196. package/format/number.d.cts +0 -36
  197. package/format/number.d.cts.map +0 -1
  198. package/format/number.js +0 -44
  199. package/format/percent.cjs +0 -27
  200. package/format/percent.d.cts +0 -15
  201. package/format/percent.d.cts.map +0 -1
  202. package/format/percent.js +0 -23
  203. package/format/skip-spaces.cjs +0 -8
  204. package/format/skip-spaces.d.cts +0 -5
  205. package/format/skip-spaces.d.cts.map +0 -1
  206. package/format/skip-spaces.js +0 -4
  207. package/html.cjs +0 -202
  208. package/html.d.cts +0 -44
  209. package/html.d.cts.map +0 -1
  210. package/id.cjs +0 -76
  211. package/id.d.cts +0 -63
  212. package/id.d.cts.map +0 -1
  213. package/imports.cjs +0 -45
  214. package/imports.d.cts +0 -15
  215. package/imports.d.cts.map +0 -1
  216. package/math.cjs +0 -23
  217. package/math.d.cts +0 -13
  218. package/math.d.cts.map +0 -1
  219. package/media.cjs +0 -115
  220. package/media.d.cts +0 -20
  221. package/media.d.cts.map +0 -1
  222. package/mobx/apply-observable.cjs +0 -16
  223. package/mobx/apply-observable.d.cts +0 -4
  224. package/mobx/apply-observable.d.cts.map +0 -1
  225. package/mobx/apply-observable.js +0 -12
  226. package/mobx/create-enhanced-atom.cjs +0 -16
  227. package/mobx/create-enhanced-atom.d.cts +0 -11
  228. package/mobx/create-enhanced-atom.d.cts.map +0 -1
  229. package/mobx/create-enhanced-atom.js +0 -12
  230. package/mobx/deep-observable-struct.cjs +0 -61
  231. package/mobx/deep-observable-struct.d.cts +0 -7
  232. package/mobx/deep-observable-struct.d.cts.map +0 -1
  233. package/mobx/deep-observable-struct.js +0 -57
  234. package/mobx/get-mobx-administration.cjs +0 -6
  235. package/mobx/get-mobx-administration.d.cts +0 -6
  236. package/mobx/get-mobx-administration.d.cts.map +0 -1
  237. package/mobx/get-mobx-administration.js +0 -2
  238. package/mobx/index.cjs +0 -21
  239. package/mobx/index.d.cts +0 -6
  240. package/mobx/index.d.cts.map +0 -1
  241. package/mobx/index.js +0 -5
  242. package/mobx/lazy-observe.cjs +0 -52
  243. package/mobx/lazy-observe.d.cts +0 -8
  244. package/mobx/lazy-observe.d.cts.map +0 -1
  245. package/mobx/lazy-observe.js +0 -48
  246. package/ms.cjs +0 -22
  247. package/ms.d.cts +0 -19
  248. package/ms.d.cts.map +0 -1
  249. package/number.cjs +0 -16
  250. package/number.d.cts +0 -8
  251. package/number.d.cts.map +0 -1
  252. package/parser/_exports.cjs +0 -19
  253. package/parser/_exports.d.cts +0 -4
  254. package/parser/_exports.d.cts.map +0 -1
  255. package/parser/_exports.js +0 -3
  256. package/parser/index.cjs +0 -40
  257. package/parser/index.d.cts +0 -3
  258. package/parser/index.d.cts.map +0 -1
  259. package/parser/index.js +0 -4
  260. package/parser/number.cjs +0 -48
  261. package/parser/number.d.cts +0 -21
  262. package/parser/number.d.cts.map +0 -1
  263. package/parser/number.js +0 -44
  264. package/parser/percent.cjs +0 -8
  265. package/parser/percent.d.cts +0 -4
  266. package/parser/percent.d.cts.map +0 -1
  267. package/parser/percent.js +0 -4
  268. package/parser/string.cjs +0 -18
  269. package/parser/string.d.cts +0 -7
  270. package/parser/string.d.cts.map +0 -1
  271. package/parser/string.js +0 -14
  272. package/price.cjs +0 -21
  273. package/price.d.cts +0 -6
  274. package/price.d.cts.map +0 -1
  275. package/random.cjs +0 -25
  276. package/random.d.cts +0 -9
  277. package/random.d.cts.map +0 -1
  278. package/react/hooks/index.cjs +0 -37
  279. package/react/hooks/index.d.cts +0 -22
  280. package/react/hooks/index.d.cts.map +0 -1
  281. package/react/hooks/index.js +0 -21
  282. package/react/hooks/use-abort-controller.cjs +0 -15
  283. package/react/hooks/use-abort-controller.d.cts +0 -2
  284. package/react/hooks/use-abort-controller.d.cts.map +0 -1
  285. package/react/hooks/use-abort-controller.js +0 -11
  286. package/react/hooks/use-abort-signal.cjs +0 -8
  287. package/react/hooks/use-abort-signal.d.cts +0 -2
  288. package/react/hooks/use-abort-signal.d.cts.map +0 -1
  289. package/react/hooks/use-abort-signal.js +0 -4
  290. package/react/hooks/use-click-outside.cjs +0 -17
  291. package/react/hooks/use-click-outside.d.cts +0 -9
  292. package/react/hooks/use-click-outside.d.cts.map +0 -1
  293. package/react/hooks/use-click-outside.js +0 -13
  294. package/react/hooks/use-constant.cjs +0 -19
  295. package/react/hooks/use-constant.d.cts +0 -9
  296. package/react/hooks/use-constant.d.cts.map +0 -1
  297. package/react/hooks/use-constant.js +0 -15
  298. package/react/hooks/use-define-ref.cjs +0 -19
  299. package/react/hooks/use-define-ref.d.cts +0 -10
  300. package/react/hooks/use-define-ref.d.cts.map +0 -1
  301. package/react/hooks/use-define-ref.js +0 -15
  302. package/react/hooks/use-element-ref.cjs +0 -12
  303. package/react/hooks/use-element-ref.d.cts +0 -2
  304. package/react/hooks/use-element-ref.d.cts.map +0 -1
  305. package/react/hooks/use-element-ref.js +0 -8
  306. package/react/hooks/use-event-listener.cjs +0 -17
  307. package/react/hooks/use-event-listener.d.cts +0 -8
  308. package/react/hooks/use-event-listener.d.cts.map +0 -1
  309. package/react/hooks/use-event-listener.js +0 -13
  310. package/react/hooks/use-event.cjs +0 -23
  311. package/react/hooks/use-event.d.cts +0 -3
  312. package/react/hooks/use-event.d.cts.map +0 -1
  313. package/react/hooks/use-event.js +0 -19
  314. package/react/hooks/use-flag.cjs +0 -19
  315. package/react/hooks/use-flag.d.cts +0 -8
  316. package/react/hooks/use-flag.d.cts.map +0 -1
  317. package/react/hooks/use-flag.js +0 -15
  318. package/react/hooks/use-force-update.cjs +0 -11
  319. package/react/hooks/use-force-update.d.cts +0 -2
  320. package/react/hooks/use-force-update.d.cts.map +0 -1
  321. package/react/hooks/use-force-update.js +0 -7
  322. package/react/hooks/use-initial-height.cjs +0 -15
  323. package/react/hooks/use-initial-height.d.cts +0 -5
  324. package/react/hooks/use-initial-height.d.cts.map +0 -1
  325. package/react/hooks/use-initial-height.js +0 -11
  326. package/react/hooks/use-instance.cjs +0 -31
  327. package/react/hooks/use-instance.d.cts +0 -27
  328. package/react/hooks/use-instance.d.cts.map +0 -1
  329. package/react/hooks/use-instance.js +0 -27
  330. package/react/hooks/use-intersection-observer.cjs +0 -14
  331. package/react/hooks/use-intersection-observer.d.cts +0 -2
  332. package/react/hooks/use-intersection-observer.d.cts.map +0 -1
  333. package/react/hooks/use-intersection-observer.js +0 -10
  334. package/react/hooks/use-last-defined-value.cjs +0 -12
  335. package/react/hooks/use-last-defined-value.d.cts +0 -2
  336. package/react/hooks/use-last-defined-value.d.cts.map +0 -1
  337. package/react/hooks/use-last-defined-value.js +0 -8
  338. package/react/hooks/use-last-value-ref.cjs +0 -12
  339. package/react/hooks/use-last-value-ref.d.cts +0 -2
  340. package/react/hooks/use-last-value-ref.d.cts.map +0 -1
  341. package/react/hooks/use-last-value-ref.js +0 -8
  342. package/react/hooks/use-life-cycle.cjs +0 -14
  343. package/react/hooks/use-life-cycle.d.cts +0 -5
  344. package/react/hooks/use-life-cycle.d.cts.map +0 -1
  345. package/react/hooks/use-life-cycle.js +0 -10
  346. package/react/hooks/use-resize-observer.cjs +0 -15
  347. package/react/hooks/use-resize-observer.d.cts +0 -2
  348. package/react/hooks/use-resize-observer.d.cts.map +0 -1
  349. package/react/hooks/use-resize-observer.js +0 -11
  350. package/react/hooks/use-sync-ref.cjs +0 -10
  351. package/react/hooks/use-sync-ref.d.cts +0 -2
  352. package/react/hooks/use-sync-ref.d.cts.map +0 -1
  353. package/react/hooks/use-sync-ref.js +0 -6
  354. package/react/hooks/use-toggle.cjs +0 -10
  355. package/react/hooks/use-toggle.d.cts +0 -2
  356. package/react/hooks/use-toggle.d.cts.map +0 -1
  357. package/react/hooks/use-toggle.js +0 -6
  358. package/react/hooks/use-value.cjs +0 -12
  359. package/react/hooks/use-value.d.cts +0 -5
  360. package/react/hooks/use-value.d.cts.map +0 -1
  361. package/react/hooks/use-value.js +0 -8
  362. package/react/hooks/use-visibility-state.cjs +0 -18
  363. package/react/hooks/use-visibility-state.d.cts +0 -2
  364. package/react/hooks/use-visibility-state.d.cts.map +0 -1
  365. package/react/hooks/use-visibility-state.js +0 -14
  366. package/react/index.cjs +0 -17
  367. package/react/index.d.cts +0 -2
  368. package/react/index.d.cts.map +0 -1
  369. package/react/index.js +0 -1
  370. package/sound.cjs +0 -16
  371. package/sound.d.cts +0 -7
  372. package/sound.d.cts.map +0 -1
  373. package/storage.cjs +0 -48
  374. package/storage.d.cts +0 -39
  375. package/storage.d.cts.map +0 -1
  376. package/storage.js +0 -43
  377. package/text.cjs +0 -53
  378. package/text.d.cts +0 -15
  379. package/text.d.cts.map +0 -1
  380. package/type-guard/_exports.cjs +0 -129
  381. package/type-guard/_exports.d.cts +0 -86
  382. package/type-guard/_exports.d.cts.map +0 -1
  383. package/type-guard/_exports.js +0 -125
  384. package/type-guard/index.cjs +0 -40
  385. package/type-guard/index.d.cts +0 -3
  386. package/type-guard/index.d.cts.map +0 -1
  387. package/type-guard/index.js +0 -4
  388. package/utils/types.cjs +0 -2
  389. package/utils/types.d.cts +0 -395
  390. package/utils/types.d.cts.map +0 -1
  391. package/vibrate.cjs +0 -12
  392. package/vibrate.d.cts +0 -5
  393. package/vibrate.d.cts.map +0 -1
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"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * When ONE OF the properties is becomes observed then `onStart` function is called.
3
+ * WHen ALL properties are unobserved then `onEnd` function is called with the `metaData` that was returned by `onStart`.
4
+ *
5
+ * It uses `onBecomeObserved` and `onBecomeUnobserved` mobx hooks to perform lazy observation.
6
+ */
1
7
  export declare const lazyObserve: <TMetaData = void>({ context, property, onStart, onEnd, endDelay, }: {
2
8
  context?: any;
3
9
  property: any | any[];
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-observe.d.ts","sourceRoot":"","sources":["../../src/mobx/lazy-observe.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,GAAI,SAAS,GAAG,IAAI,EAAE,kDAM3C;IACD,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC3B,eAmDA,CAAC"}
1
+ {"version":3,"file":"lazy-observe.d.ts","sourceRoot":"","sources":["../../src/mobx/lazy-observe.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,SAAS,GAAG,IAAI,EAAE,kDAM3C;IACD,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC3B,eAoEA,CAAC"}
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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"}
package/ms.js CHANGED
@@ -1,18 +1,13 @@
1
- export const unitsToMs = {
2
- ms: 1,
3
- sec: 1000,
4
- min: 1000 * 60,
5
- hour: 1000 * 60 * 60,
6
- day: 1000 * 60 * 60 * 24,
7
- week: 1000 * 60 * 60 * 24 * 7,
1
+ const o = {
2
+ ms: 1,
3
+ sec: 1e3,
4
+ min: 6e4,
5
+ hour: 36e5,
6
+ day: 864e5,
7
+ week: 6048e5
8
+ }, m = (e, s = "ms") => e * o[s];
9
+ export {
10
+ m as ms,
11
+ o as unitsToMs
8
12
  };
9
- /**
10
- * Переводит значение в юнитах в миллисекунды
11
- *
12
- * @example
13
- * ```ts
14
- * ms(1, 'min') // 60_000
15
- * ms(30, 'sec') // 30_000
16
- * ```
17
- */
18
- export const ms = (value, unit = 'ms') => value * unitsToMs[unit];
13
+ //# sourceMappingURL=ms.js.map
package/ms.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ms.js","sources":["../src/ms.ts"],"sourcesContent":["export const unitsToMs = {\n ms: 1,\n sec: 1000,\n min: 1000 * 60,\n hour: 1000 * 60 * 60,\n day: 1000 * 60 * 60 * 24,\n week: 1000 * 60 * 60 * 24 * 7,\n} as const;\n\n/**\n * Переводит значение в юнитах в миллисекунды\n *\n * @example\n * ```ts\n * ms(1, 'min') // 60_000\n * ms(30, 'sec') // 30_000\n * ```\n */\nexport const ms = (value: number, unit: keyof typeof unitsToMs = 'ms') =>\n value * unitsToMs[unit];\n"],"names":["unitsToMs","ms","value","unit"],"mappings":"AAAO,MAAMA,IAAY;AAAA,EACvB,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AACR,GAWaC,IAAK,CAACC,GAAeC,IAA+B,SAC/DD,IAAQF,EAAUG,CAAI;"}
package/number.js CHANGED
@@ -1,13 +1,10 @@
1
- /**
2
- * Works like `parseFloat(number.toFixed(4))` but performance better
3
- *
4
- * @example
5
- * round(191.212999999999999999999999, 4) // 191.213
6
- */
7
- export function round(value, decimalPlaces = 0) {
8
- if (!decimalPlaces) {
9
- return Math.round(value);
10
- }
11
- const factor = 10 ** decimalPlaces;
12
- return Math.round(value * factor) / factor;
1
+ function o(r, n = 0) {
2
+ if (!n)
3
+ return Math.round(r);
4
+ const t = 10 ** n;
5
+ return Math.round(r * t) / t;
13
6
  }
7
+ export {
8
+ o as round
9
+ };
10
+ //# sourceMappingURL=number.js.map
package/number.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.js","sources":["../src/number.ts"],"sourcesContent":["/**\n * Works like `parseFloat(number.toFixed(4))` but performance better\n *\n * @example\n * round(191.212999999999999999999999, 4) // 191.213\n */\nexport function round(value: number, decimalPlaces: number = 0): number {\n if (!decimalPlaces) {\n return Math.round(value);\n }\n\n const factor = 10 ** decimalPlaces;\n return Math.round(value * factor) / factor;\n}\n"],"names":["round","value","decimalPlaces","factor"],"mappings":"AAMO,SAASA,EAAMC,GAAeC,IAAwB,GAAW;AACtE,MAAI,CAACA;AACH,WAAO,KAAK,MAAMD,CAAK;AAGzB,QAAME,IAAS,MAAMD;AACrB,SAAO,KAAK,MAAMD,IAAQE,CAAM,IAAIA;AACtC;"}