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.
- package/async.cjs +2 -70
- package/async.cjs.map +1 -0
- package/async.js +26 -59
- package/async.js.map +1 -0
- package/common.cjs +2 -18
- package/common.cjs.map +1 -0
- package/common.d.ts +1 -1
- package/common.d.ts.map +1 -1
- package/common.js +5 -13
- package/common.js.map +1 -0
- package/complex/global-config.d.ts +1 -1
- package/complex/global-config.d.ts.map +1 -1
- package/complex/index.d.ts +3 -3
- package/complex/index.d.ts.map +1 -1
- package/complex/modules-factory.d.ts +1 -1
- package/complex/modules-factory.d.ts.map +1 -1
- package/complex.cjs +2 -0
- package/complex.cjs.map +1 -0
- package/complex.js +66 -0
- package/complex.js.map +1 -0
- package/cookie.cjs +2 -13
- package/cookie.cjs.map +1 -0
- package/cookie.d.ts +1 -1
- package/cookie.d.ts.map +1 -1
- package/cookie.js +4 -8
- package/cookie.js.map +1 -0
- package/css.cjs +2 -64
- package/css.cjs.map +1 -0
- package/css.d.ts +1 -1
- package/css.js +24 -54
- package/css.js.map +1 -0
- package/data.cjs +2 -58
- package/data.cjs.map +1 -0
- package/data.js +32 -50
- package/data.js.map +1 -0
- package/date-time.cjs +2 -171
- package/date-time.cjs.map +1 -0
- package/date-time.d.ts +2 -3
- package/date-time.d.ts.map +1 -1
- package/date-time.js +311 -156
- package/date-time.js.map +1 -0
- package/device.cjs +2 -28
- package/device.cjs.map +1 -0
- package/device.js +23 -20
- package/device.js.map +1 -0
- package/encodings.cjs +2 -270
- package/encodings.cjs.map +1 -0
- package/encodings.js +269 -265
- package/encodings.js.map +1 -0
- package/errors.cjs +2 -34
- package/errors.cjs.map +1 -0
- package/errors.d.ts +1 -1
- package/errors.d.ts.map +1 -1
- package/errors.js +8 -29
- package/errors.js.map +1 -0
- package/file.cjs +2 -29
- package/file.cjs.map +1 -0
- package/file.js +19 -23
- package/file.js.map +1 -0
- package/format/_exports.d.ts +4 -4
- package/format/_exports.d.ts.map +1 -1
- package/format/index.d.ts +1 -1
- package/format/index.d.ts.map +1 -1
- package/format/number.d.ts +1 -1
- package/format/number.d.ts.map +1 -1
- package/format/percent.d.ts +2 -2
- package/format/percent.d.ts.map +1 -1
- package/format.cjs +2 -0
- package/format.cjs.map +1 -0
- package/format.js +27 -0
- package/format.js.map +1 -0
- package/html.cjs +2 -202
- package/html.cjs.map +1 -0
- package/html.d.ts +2 -2
- package/html.d.ts.map +1 -1
- package/html.js +120 -177
- package/html.js.map +1 -0
- package/id.cjs +3 -76
- package/id.cjs.map +1 -0
- package/id.js +15 -70
- package/id.js.map +1 -0
- package/imports.cjs +2 -45
- package/imports.cjs.map +1 -0
- package/imports.js +22 -37
- package/imports.js.map +1 -0
- package/math.cjs +2 -23
- package/math.cjs.map +1 -0
- package/math.d.ts +1 -1
- package/math.d.ts.map +1 -1
- package/math.js +10 -14
- package/math.js.map +1 -0
- package/media.cjs +2 -115
- package/media.cjs.map +1 -0
- package/media.js +54 -96
- package/media.js.map +1 -0
- package/mobx/apply-observable.d.ts +1 -1
- package/mobx/apply-observable.d.ts.map +1 -1
- package/mobx/create-enhanced-atom.d.ts +2 -2
- package/mobx/create-enhanced-atom.d.ts.map +1 -1
- package/mobx/deep-observable-struct.d.ts +1 -1
- package/mobx/deep-observable-struct.d.ts.map +1 -1
- package/mobx/get-mobx-administration.d.ts +2 -2
- package/mobx/get-mobx-administration.d.ts.map +1 -1
- package/mobx/index.d.ts +5 -5
- package/mobx/index.d.ts.map +1 -1
- package/mobx.cjs +2 -0
- package/mobx.cjs.map +1 -0
- package/mobx.js +89 -0
- package/mobx.js.map +1 -0
- package/ms.cjs +2 -22
- package/ms.cjs.map +1 -0
- package/ms.js +12 -17
- package/ms.js.map +1 -0
- package/number.cjs +2 -16
- package/number.cjs.map +1 -0
- package/number.js +9 -12
- package/number.js.map +1 -0
- package/package.json +101 -70
- package/parser/_exports.d.ts +3 -3
- package/parser/_exports.d.ts.map +1 -1
- package/parser/index.d.ts +1 -1
- package/parser/index.d.ts.map +1 -1
- package/parser/number.d.ts +1 -1
- package/parser/number.d.ts.map +1 -1
- package/parser/percent.d.ts +2 -2
- package/parser/percent.d.ts.map +1 -1
- package/parser/string.d.ts +1 -1
- package/parser/string.d.ts.map +1 -1
- package/parser.cjs +2 -0
- package/parser.cjs.map +1 -0
- package/parser.js +15 -0
- package/parser.js.map +1 -0
- package/price.cjs +2 -21
- package/price.cjs.map +1 -0
- package/price.js +13 -16
- package/price.js.map +1 -0
- package/random.cjs +2 -25
- package/random.cjs.map +1 -0
- package/random.js +11 -13
- package/random.js.map +1 -0
- package/react/hooks/index.d.ts +21 -21
- package/react/hooks/index.d.ts.map +1 -1
- package/react/hooks/use-click-outside.d.ts +1 -1
- package/react/hooks/use-define-ref.d.ts +1 -1
- package/react/hooks/use-element-ref.d.ts +1 -1
- package/react/hooks/use-event.d.ts +1 -1
- package/react/hooks/use-event.d.ts.map +1 -1
- package/react/hooks/use-initial-height.d.ts +1 -1
- package/react/hooks/use-last-value-ref.d.ts +1 -1
- package/react/hooks/use-resize-observer.d.ts +1 -1
- package/react/hooks/use-sync-ref.d.ts +1 -1
- package/react/hooks/use-toggle.d.ts +1 -1
- package/react/hooks/use-value.d.ts +1 -1
- package/react/index.d.ts +1 -1
- package/react/index.d.ts.map +1 -1
- package/react.cjs +2 -0
- package/react.cjs.map +1 -0
- package/react.js +152 -0
- package/react.js.map +1 -0
- package/sound.cjs +2 -16
- package/sound.cjs.map +1 -0
- package/sound.js +7 -11
- package/sound.js.map +1 -0
- package/text.cjs +2 -53
- package/text.cjs.map +1 -0
- package/text.js +20 -46
- package/text.js.map +1 -0
- package/type-guard/_exports.d.ts +1 -1
- package/type-guard/_exports.d.ts.map +1 -1
- package/type-guard/index.d.ts +1 -1
- package/type-guard/index.d.ts.map +1 -1
- package/type-guard.cjs +2 -0
- package/type-guard.cjs.map +1 -0
- package/type-guard.js +5 -0
- package/type-guard.js.map +1 -0
- package/utility-types.cjs +2 -0
- package/utility-types.cjs.map +1 -0
- package/utility-types.d.ts.map +1 -0
- package/utility-types.js +2 -0
- package/utility-types.js.map +1 -0
- package/utils/types.cjs +1 -1
- package/utils/types.cjs.map +1 -0
- package/utils/types.js +2 -1
- package/utils/types.js.map +1 -0
- package/vibrate.cjs +2 -12
- package/vibrate.cjs.map +1 -0
- package/vibrate.js +6 -7
- package/vibrate.js.map +1 -0
- package/~index-C3wKHvHr.js +80 -0
- package/~index-C3wKHvHr.js.map +1 -0
- package/~index-PKNbSTT-.js +2 -0
- package/~index-PKNbSTT-.js.map +1 -0
- package/~number-B1MpW9GU.js +2 -0
- package/~number-B1MpW9GU.js.map +1 -0
- package/~number-DX076ykA.js +2 -0
- package/~number-DX076ykA.js.map +1 -0
- package/~number-EWff2XI6.js +25 -0
- package/~number-EWff2XI6.js.map +1 -0
- package/~number-baxVnzrJ.js +32 -0
- package/~number-baxVnzrJ.js.map +1 -0
- package/async.d.cts +0 -28
- package/async.d.cts.map +0 -1
- package/common.d.cts +0 -15
- package/common.d.cts.map +0 -1
- package/complex/counter.cjs +0 -21
- package/complex/counter.d.cts +0 -15
- package/complex/counter.d.cts.map +0 -1
- package/complex/counter.js +0 -17
- package/complex/global-config.cjs +0 -46
- package/complex/global-config.d.cts +0 -11
- package/complex/global-config.d.cts.map +0 -1
- package/complex/global-config.js +0 -41
- package/complex/index.cjs +0 -19
- package/complex/index.d.cts +0 -4
- package/complex/index.d.cts.map +0 -1
- package/complex/index.js +0 -3
- package/complex/modules-factory.cjs +0 -50
- package/complex/modules-factory.d.cts +0 -49
- package/complex/modules-factory.d.cts.map +0 -1
- package/complex/modules-factory.js +0 -46
- package/cookie.d.cts +0 -3
- package/cookie.d.cts.map +0 -1
- package/css.d.cts +0 -42
- package/css.d.cts.map +0 -1
- package/data.d.cts +0 -4
- package/data.d.cts.map +0 -1
- package/date-time.d.cts +0 -28
- package/date-time.d.cts.map +0 -1
- package/device.d.cts +0 -8
- package/device.d.cts.map +0 -1
- package/encodings.d.cts +0 -2
- package/encodings.d.cts.map +0 -1
- package/errors.d.cts +0 -19
- package/errors.d.cts.map +0 -1
- package/file.d.cts +0 -3
- package/file.d.cts.map +0 -1
- package/format/_exports.cjs +0 -20
- package/format/_exports.d.cts +0 -5
- package/format/_exports.d.cts.map +0 -1
- package/format/_exports.js +0 -4
- package/format/constants.cjs +0 -6
- package/format/constants.d.cts +0 -4
- package/format/constants.d.cts.map +0 -1
- package/format/constants.js +0 -3
- package/format/index.cjs +0 -40
- package/format/index.d.cts +0 -3
- package/format/index.d.cts.map +0 -1
- package/format/index.js +0 -4
- package/format/number.cjs +0 -48
- package/format/number.d.cts +0 -36
- package/format/number.d.cts.map +0 -1
- package/format/number.js +0 -44
- package/format/percent.cjs +0 -27
- package/format/percent.d.cts +0 -15
- package/format/percent.d.cts.map +0 -1
- package/format/percent.js +0 -23
- package/format/skip-spaces.cjs +0 -8
- package/format/skip-spaces.d.cts +0 -5
- package/format/skip-spaces.d.cts.map +0 -1
- package/format/skip-spaces.js +0 -4
- package/html.d.cts +0 -44
- package/html.d.cts.map +0 -1
- package/id.d.cts +0 -63
- package/id.d.cts.map +0 -1
- package/imports.d.cts +0 -15
- package/imports.d.cts.map +0 -1
- package/math.d.cts +0 -13
- package/math.d.cts.map +0 -1
- package/media.d.cts +0 -20
- package/media.d.cts.map +0 -1
- package/mobx/apply-observable.cjs +0 -16
- package/mobx/apply-observable.d.cts +0 -4
- package/mobx/apply-observable.d.cts.map +0 -1
- package/mobx/apply-observable.js +0 -12
- package/mobx/create-enhanced-atom.cjs +0 -16
- package/mobx/create-enhanced-atom.d.cts +0 -11
- package/mobx/create-enhanced-atom.d.cts.map +0 -1
- package/mobx/create-enhanced-atom.js +0 -12
- package/mobx/deep-observable-struct.cjs +0 -61
- package/mobx/deep-observable-struct.d.cts +0 -7
- package/mobx/deep-observable-struct.d.cts.map +0 -1
- package/mobx/deep-observable-struct.js +0 -57
- package/mobx/get-mobx-administration.cjs +0 -6
- package/mobx/get-mobx-administration.d.cts +0 -6
- package/mobx/get-mobx-administration.d.cts.map +0 -1
- package/mobx/get-mobx-administration.js +0 -2
- package/mobx/index.cjs +0 -21
- package/mobx/index.d.cts +0 -6
- package/mobx/index.d.cts.map +0 -1
- package/mobx/index.js +0 -5
- package/mobx/lazy-observe.cjs +0 -66
- package/mobx/lazy-observe.d.cts +0 -14
- package/mobx/lazy-observe.d.cts.map +0 -1
- package/mobx/lazy-observe.js +0 -62
- package/ms.d.cts +0 -19
- package/ms.d.cts.map +0 -1
- package/number.d.cts +0 -8
- package/number.d.cts.map +0 -1
- package/parser/_exports.cjs +0 -19
- package/parser/_exports.d.cts +0 -4
- package/parser/_exports.d.cts.map +0 -1
- package/parser/_exports.js +0 -3
- package/parser/index.cjs +0 -40
- package/parser/index.d.cts +0 -3
- package/parser/index.d.cts.map +0 -1
- package/parser/index.js +0 -4
- package/parser/number.cjs +0 -48
- package/parser/number.d.cts +0 -21
- package/parser/number.d.cts.map +0 -1
- package/parser/number.js +0 -44
- package/parser/percent.cjs +0 -8
- package/parser/percent.d.cts +0 -4
- package/parser/percent.d.cts.map +0 -1
- package/parser/percent.js +0 -4
- package/parser/string.cjs +0 -18
- package/parser/string.d.cts +0 -7
- package/parser/string.d.cts.map +0 -1
- package/parser/string.js +0 -14
- package/price.d.cts +0 -6
- package/price.d.cts.map +0 -1
- package/random.d.cts +0 -9
- package/random.d.cts.map +0 -1
- package/react/hooks/index.cjs +0 -37
- package/react/hooks/index.d.cts +0 -22
- package/react/hooks/index.d.cts.map +0 -1
- package/react/hooks/index.js +0 -21
- package/react/hooks/use-abort-controller.cjs +0 -15
- package/react/hooks/use-abort-controller.d.cts +0 -2
- package/react/hooks/use-abort-controller.d.cts.map +0 -1
- package/react/hooks/use-abort-controller.js +0 -11
- package/react/hooks/use-abort-signal.cjs +0 -8
- package/react/hooks/use-abort-signal.d.cts +0 -2
- package/react/hooks/use-abort-signal.d.cts.map +0 -1
- package/react/hooks/use-abort-signal.js +0 -4
- package/react/hooks/use-click-outside.cjs +0 -17
- package/react/hooks/use-click-outside.d.cts +0 -9
- package/react/hooks/use-click-outside.d.cts.map +0 -1
- package/react/hooks/use-click-outside.js +0 -13
- package/react/hooks/use-constant.cjs +0 -19
- package/react/hooks/use-constant.d.cts +0 -9
- package/react/hooks/use-constant.d.cts.map +0 -1
- package/react/hooks/use-constant.js +0 -15
- package/react/hooks/use-define-ref.cjs +0 -19
- package/react/hooks/use-define-ref.d.cts +0 -10
- package/react/hooks/use-define-ref.d.cts.map +0 -1
- package/react/hooks/use-define-ref.js +0 -15
- package/react/hooks/use-element-ref.cjs +0 -12
- package/react/hooks/use-element-ref.d.cts +0 -2
- package/react/hooks/use-element-ref.d.cts.map +0 -1
- package/react/hooks/use-element-ref.js +0 -8
- package/react/hooks/use-event-listener.cjs +0 -17
- package/react/hooks/use-event-listener.d.cts +0 -8
- package/react/hooks/use-event-listener.d.cts.map +0 -1
- package/react/hooks/use-event-listener.js +0 -13
- package/react/hooks/use-event.cjs +0 -23
- package/react/hooks/use-event.d.cts +0 -3
- package/react/hooks/use-event.d.cts.map +0 -1
- package/react/hooks/use-event.js +0 -19
- package/react/hooks/use-flag.cjs +0 -19
- package/react/hooks/use-flag.d.cts +0 -8
- package/react/hooks/use-flag.d.cts.map +0 -1
- package/react/hooks/use-flag.js +0 -15
- package/react/hooks/use-force-update.cjs +0 -11
- package/react/hooks/use-force-update.d.cts +0 -2
- package/react/hooks/use-force-update.d.cts.map +0 -1
- package/react/hooks/use-force-update.js +0 -7
- package/react/hooks/use-initial-height.cjs +0 -15
- package/react/hooks/use-initial-height.d.cts +0 -5
- package/react/hooks/use-initial-height.d.cts.map +0 -1
- package/react/hooks/use-initial-height.js +0 -11
- package/react/hooks/use-instance.cjs +0 -31
- package/react/hooks/use-instance.d.cts +0 -27
- package/react/hooks/use-instance.d.cts.map +0 -1
- package/react/hooks/use-instance.js +0 -27
- package/react/hooks/use-intersection-observer.cjs +0 -14
- package/react/hooks/use-intersection-observer.d.cts +0 -2
- package/react/hooks/use-intersection-observer.d.cts.map +0 -1
- package/react/hooks/use-intersection-observer.js +0 -10
- package/react/hooks/use-last-defined-value.cjs +0 -12
- package/react/hooks/use-last-defined-value.d.cts +0 -2
- package/react/hooks/use-last-defined-value.d.cts.map +0 -1
- package/react/hooks/use-last-defined-value.js +0 -8
- package/react/hooks/use-last-value-ref.cjs +0 -12
- package/react/hooks/use-last-value-ref.d.cts +0 -2
- package/react/hooks/use-last-value-ref.d.cts.map +0 -1
- package/react/hooks/use-last-value-ref.js +0 -8
- package/react/hooks/use-life-cycle.cjs +0 -14
- package/react/hooks/use-life-cycle.d.cts +0 -5
- package/react/hooks/use-life-cycle.d.cts.map +0 -1
- package/react/hooks/use-life-cycle.js +0 -10
- package/react/hooks/use-resize-observer.cjs +0 -15
- package/react/hooks/use-resize-observer.d.cts +0 -2
- package/react/hooks/use-resize-observer.d.cts.map +0 -1
- package/react/hooks/use-resize-observer.js +0 -11
- package/react/hooks/use-sync-ref.cjs +0 -10
- package/react/hooks/use-sync-ref.d.cts +0 -2
- package/react/hooks/use-sync-ref.d.cts.map +0 -1
- package/react/hooks/use-sync-ref.js +0 -6
- package/react/hooks/use-toggle.cjs +0 -10
- package/react/hooks/use-toggle.d.cts +0 -2
- package/react/hooks/use-toggle.d.cts.map +0 -1
- package/react/hooks/use-toggle.js +0 -6
- package/react/hooks/use-value.cjs +0 -12
- package/react/hooks/use-value.d.cts +0 -5
- package/react/hooks/use-value.d.cts.map +0 -1
- package/react/hooks/use-value.js +0 -8
- package/react/hooks/use-visibility-state.cjs +0 -18
- package/react/hooks/use-visibility-state.d.cts +0 -2
- package/react/hooks/use-visibility-state.d.cts.map +0 -1
- package/react/hooks/use-visibility-state.js +0 -14
- package/react/index.cjs +0 -17
- package/react/index.d.cts +0 -2
- package/react/index.d.cts.map +0 -1
- package/react/index.js +0 -1
- package/sound.d.cts +0 -7
- package/sound.d.cts.map +0 -1
- package/storage.cjs +0 -48
- package/storage.d.cts +0 -39
- package/storage.d.cts.map +0 -1
- package/storage.js +0 -43
- package/text.d.cts +0 -15
- package/text.d.cts.map +0 -1
- package/type-guard/_exports.cjs +0 -129
- package/type-guard/_exports.d.cts +0 -86
- package/type-guard/_exports.d.cts.map +0 -1
- package/type-guard/_exports.js +0 -125
- package/type-guard/index.cjs +0 -40
- package/type-guard/index.d.cts +0 -3
- package/type-guard/index.d.cts.map +0 -1
- package/type-guard/index.js +0 -4
- package/utils/types.d.cts +0 -395
- package/utils/types.d.cts.map +0 -1
- package/vibrate.d.cts +0 -5
- package/vibrate.d.cts.map +0 -1
package/math.cjs
CHANGED
|
@@ -1,23 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
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
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,
|
|
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
|
-
|
|
2
|
-
|
|
1
|
+
function n(r) {
|
|
2
|
+
return r * (Math.PI / 180);
|
|
3
3
|
}
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
function e(r) {
|
|
5
|
+
return r * (180 / Math.PI);
|
|
6
6
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
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 "
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
|
|
98
|
-
|
|
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
|
|
101
|
-
|
|
102
|
-
|
|
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
|
|
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,
|
|
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 {
|
|
2
|
-
import
|
|
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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-observable-struct.d.ts","sourceRoot":"","sources":["../../src/mobx/deep-observable-struct.ts"],"names":[],"mappings":"
|
|
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 {
|
|
2
|
-
import
|
|
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,
|
|
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
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
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
|
package/mobx/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mobx/index.ts"],"names":[],"mappings":"AAAA,
|
|
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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"}
|