yummies 5.8.0 → 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 -0
- package/async.cjs.map +1 -0
- package/common.cjs +2 -0
- package/common.cjs.map +1 -0
- package/complex.cjs +2 -0
- package/complex.cjs.map +1 -0
- package/cookie.cjs +2 -0
- package/cookie.cjs.map +1 -0
- package/css.cjs +2 -0
- package/css.cjs.map +1 -0
- package/css.js +19 -2780
- package/css.js.map +1 -1
- package/data.cjs +2 -0
- package/data.cjs.map +1 -0
- package/date-time.cjs +2 -0
- package/date-time.cjs.map +1 -0
- package/date-time.js +240 -519
- package/date-time.js.map +1 -1
- package/device.cjs +2 -0
- package/device.cjs.map +1 -0
- package/encodings.cjs +2 -0
- package/encodings.cjs.map +1 -0
- package/errors.cjs +2 -0
- package/errors.cjs.map +1 -0
- package/file.cjs +2 -0
- package/file.cjs.map +1 -0
- package/format.cjs +2 -0
- package/format.cjs.map +1 -0
- package/html.cjs +2 -0
- package/html.cjs.map +1 -0
- package/html.js +66 -590
- package/html.js.map +1 -1
- package/id.cjs +3 -0
- package/id.cjs.map +1 -0
- package/id.js +12 -22
- package/id.js.map +1 -1
- package/imports.cjs +2 -0
- package/imports.cjs.map +1 -0
- package/math.cjs +2 -0
- package/math.cjs.map +1 -0
- package/media.cjs +2 -0
- package/media.cjs.map +1 -0
- package/mobx.cjs +2 -0
- package/mobx.cjs.map +1 -0
- package/ms.cjs +2 -0
- package/ms.cjs.map +1 -0
- package/number.cjs +2 -0
- package/number.cjs.map +1 -0
- package/package.json +61 -31
- package/parser.cjs +2 -0
- package/parser.cjs.map +1 -0
- package/price.cjs +2 -0
- package/price.cjs.map +1 -0
- package/random.cjs +2 -0
- package/random.cjs.map +1 -0
- package/react.cjs +2 -0
- package/react.cjs.map +1 -0
- package/sound.cjs +2 -0
- package/sound.cjs.map +1 -0
- package/text.cjs +2 -0
- package/text.cjs.map +1 -0
- package/type-guard.cjs +2 -0
- package/type-guard.cjs.map +1 -0
- package/utility-types.cjs +2 -0
- package/utility-types.cjs.map +1 -0
- package/utils/types.cjs +2 -0
- package/utils/types.cjs.map +1 -0
- package/vibrate.cjs +2 -0
- package/vibrate.cjs.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yummies",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.9.0",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"javascript",
|
|
6
6
|
"typescript",
|
|
@@ -64,152 +64,182 @@
|
|
|
64
64
|
"./async": {
|
|
65
65
|
"import": "./async.js",
|
|
66
66
|
"default": "./async.js",
|
|
67
|
-
"types": "./async.d.ts"
|
|
67
|
+
"types": "./async.d.ts",
|
|
68
|
+
"require": "./async.cjs"
|
|
68
69
|
},
|
|
69
70
|
"./common": {
|
|
70
71
|
"import": "./common.js",
|
|
71
72
|
"default": "./common.js",
|
|
72
|
-
"types": "./common.d.ts"
|
|
73
|
+
"types": "./common.d.ts",
|
|
74
|
+
"require": "./common.cjs"
|
|
73
75
|
},
|
|
74
76
|
"./complex": {
|
|
75
77
|
"import": "./complex.js",
|
|
76
78
|
"default": "./complex.js",
|
|
77
|
-
"types": "./complex/index.d.ts"
|
|
79
|
+
"types": "./complex/index.d.ts",
|
|
80
|
+
"require": "./complex.cjs"
|
|
78
81
|
},
|
|
79
82
|
"./cookie": {
|
|
80
83
|
"import": "./cookie.js",
|
|
81
84
|
"default": "./cookie.js",
|
|
82
|
-
"types": "./cookie.d.ts"
|
|
85
|
+
"types": "./cookie.d.ts",
|
|
86
|
+
"require": "./cookie.cjs"
|
|
83
87
|
},
|
|
84
88
|
"./css": {
|
|
85
89
|
"import": "./css.js",
|
|
86
90
|
"default": "./css.js",
|
|
87
|
-
"types": "./css.d.ts"
|
|
91
|
+
"types": "./css.d.ts",
|
|
92
|
+
"require": "./css.cjs"
|
|
88
93
|
},
|
|
89
94
|
"./data": {
|
|
90
95
|
"import": "./data.js",
|
|
91
96
|
"default": "./data.js",
|
|
92
|
-
"types": "./data.d.ts"
|
|
97
|
+
"types": "./data.d.ts",
|
|
98
|
+
"require": "./data.cjs"
|
|
93
99
|
},
|
|
94
100
|
"./date-time": {
|
|
95
101
|
"import": "./date-time.js",
|
|
96
102
|
"default": "./date-time.js",
|
|
97
|
-
"types": "./date-time.d.ts"
|
|
103
|
+
"types": "./date-time.d.ts",
|
|
104
|
+
"require": "./date-time.cjs"
|
|
98
105
|
},
|
|
99
106
|
"./device": {
|
|
100
107
|
"import": "./device.js",
|
|
101
108
|
"default": "./device.js",
|
|
102
|
-
"types": "./device.d.ts"
|
|
109
|
+
"types": "./device.d.ts",
|
|
110
|
+
"require": "./device.cjs"
|
|
103
111
|
},
|
|
104
112
|
"./encodings": {
|
|
105
113
|
"import": "./encodings.js",
|
|
106
114
|
"default": "./encodings.js",
|
|
107
|
-
"types": "./encodings.d.ts"
|
|
115
|
+
"types": "./encodings.d.ts",
|
|
116
|
+
"require": "./encodings.cjs"
|
|
108
117
|
},
|
|
109
118
|
"./errors": {
|
|
110
119
|
"import": "./errors.js",
|
|
111
120
|
"default": "./errors.js",
|
|
112
|
-
"types": "./errors.d.ts"
|
|
121
|
+
"types": "./errors.d.ts",
|
|
122
|
+
"require": "./errors.cjs"
|
|
113
123
|
},
|
|
114
124
|
"./file": {
|
|
115
125
|
"import": "./file.js",
|
|
116
126
|
"default": "./file.js",
|
|
117
|
-
"types": "./file.d.ts"
|
|
127
|
+
"types": "./file.d.ts",
|
|
128
|
+
"require": "./file.cjs"
|
|
118
129
|
},
|
|
119
130
|
"./format": {
|
|
120
131
|
"import": "./format.js",
|
|
121
132
|
"default": "./format.js",
|
|
122
|
-
"types": "./format/index.d.ts"
|
|
133
|
+
"types": "./format/index.d.ts",
|
|
134
|
+
"require": "./format.cjs"
|
|
123
135
|
},
|
|
124
136
|
"./html": {
|
|
125
137
|
"import": "./html.js",
|
|
126
138
|
"default": "./html.js",
|
|
127
|
-
"types": "./html.d.ts"
|
|
139
|
+
"types": "./html.d.ts",
|
|
140
|
+
"require": "./html.cjs"
|
|
128
141
|
},
|
|
129
142
|
"./id": {
|
|
130
143
|
"import": "./id.js",
|
|
131
144
|
"default": "./id.js",
|
|
132
|
-
"types": "./id.d.ts"
|
|
145
|
+
"types": "./id.d.ts",
|
|
146
|
+
"require": "./id.cjs"
|
|
133
147
|
},
|
|
134
148
|
"./imports": {
|
|
135
149
|
"import": "./imports.js",
|
|
136
150
|
"default": "./imports.js",
|
|
137
|
-
"types": "./imports.d.ts"
|
|
151
|
+
"types": "./imports.d.ts",
|
|
152
|
+
"require": "./imports.cjs"
|
|
138
153
|
},
|
|
139
154
|
"./math": {
|
|
140
155
|
"import": "./math.js",
|
|
141
156
|
"default": "./math.js",
|
|
142
|
-
"types": "./math.d.ts"
|
|
157
|
+
"types": "./math.d.ts",
|
|
158
|
+
"require": "./math.cjs"
|
|
143
159
|
},
|
|
144
160
|
"./media": {
|
|
145
161
|
"import": "./media.js",
|
|
146
162
|
"default": "./media.js",
|
|
147
|
-
"types": "./media.d.ts"
|
|
163
|
+
"types": "./media.d.ts",
|
|
164
|
+
"require": "./media.cjs"
|
|
148
165
|
},
|
|
149
166
|
"./mobx": {
|
|
150
167
|
"import": "./mobx.js",
|
|
151
168
|
"default": "./mobx.js",
|
|
152
|
-
"types": "./mobx/index.d.ts"
|
|
169
|
+
"types": "./mobx/index.d.ts",
|
|
170
|
+
"require": "./mobx.cjs"
|
|
153
171
|
},
|
|
154
172
|
"./ms": {
|
|
155
173
|
"import": "./ms.js",
|
|
156
174
|
"default": "./ms.js",
|
|
157
|
-
"types": "./ms.d.ts"
|
|
175
|
+
"types": "./ms.d.ts",
|
|
176
|
+
"require": "./ms.cjs"
|
|
158
177
|
},
|
|
159
178
|
"./number": {
|
|
160
179
|
"import": "./number.js",
|
|
161
180
|
"default": "./number.js",
|
|
162
|
-
"types": "./number.d.ts"
|
|
181
|
+
"types": "./number.d.ts",
|
|
182
|
+
"require": "./number.cjs"
|
|
163
183
|
},
|
|
164
184
|
"./parser": {
|
|
165
185
|
"import": "./parser.js",
|
|
166
186
|
"default": "./parser.js",
|
|
167
|
-
"types": "./parser/index.d.ts"
|
|
187
|
+
"types": "./parser/index.d.ts",
|
|
188
|
+
"require": "./parser.cjs"
|
|
168
189
|
},
|
|
169
190
|
"./price": {
|
|
170
191
|
"import": "./price.js",
|
|
171
192
|
"default": "./price.js",
|
|
172
|
-
"types": "./price.d.ts"
|
|
193
|
+
"types": "./price.d.ts",
|
|
194
|
+
"require": "./price.cjs"
|
|
173
195
|
},
|
|
174
196
|
"./random": {
|
|
175
197
|
"import": "./random.js",
|
|
176
198
|
"default": "./random.js",
|
|
177
|
-
"types": "./random.d.ts"
|
|
199
|
+
"types": "./random.d.ts",
|
|
200
|
+
"require": "./random.cjs"
|
|
178
201
|
},
|
|
179
202
|
"./react": {
|
|
180
203
|
"import": "./react.js",
|
|
181
204
|
"default": "./react.js",
|
|
182
|
-
"types": "./react/index.d.ts"
|
|
205
|
+
"types": "./react/index.d.ts",
|
|
206
|
+
"require": "./react.cjs"
|
|
183
207
|
},
|
|
184
208
|
"./sound": {
|
|
185
209
|
"import": "./sound.js",
|
|
186
210
|
"default": "./sound.js",
|
|
187
|
-
"types": "./sound.d.ts"
|
|
211
|
+
"types": "./sound.d.ts",
|
|
212
|
+
"require": "./sound.cjs"
|
|
188
213
|
},
|
|
189
214
|
"./text": {
|
|
190
215
|
"import": "./text.js",
|
|
191
216
|
"default": "./text.js",
|
|
192
|
-
"types": "./text.d.ts"
|
|
217
|
+
"types": "./text.d.ts",
|
|
218
|
+
"require": "./text.cjs"
|
|
193
219
|
},
|
|
194
220
|
"./type-guard": {
|
|
195
221
|
"import": "./type-guard.js",
|
|
196
222
|
"default": "./type-guard.js",
|
|
197
|
-
"types": "./type-guard/index.d.ts"
|
|
223
|
+
"types": "./type-guard/index.d.ts",
|
|
224
|
+
"require": "./type-guard.cjs"
|
|
198
225
|
},
|
|
199
226
|
"./utility-types": {
|
|
200
227
|
"import": "./utility-types.js",
|
|
201
228
|
"default": "./utility-types.js",
|
|
202
|
-
"types": "./utility-types.d.ts"
|
|
229
|
+
"types": "./utility-types.d.ts",
|
|
230
|
+
"require": "./utility-types.cjs"
|
|
203
231
|
},
|
|
204
232
|
"./utils/types": {
|
|
205
233
|
"import": "./utils/types.js",
|
|
206
234
|
"default": "./utils/types.js",
|
|
207
|
-
"types": "./utils/types.d.ts"
|
|
235
|
+
"types": "./utils/types.d.ts",
|
|
236
|
+
"require": "./utils/types.cjs"
|
|
208
237
|
},
|
|
209
238
|
"./vibrate": {
|
|
210
239
|
"import": "./vibrate.js",
|
|
211
240
|
"default": "./vibrate.js",
|
|
212
|
-
"types": "./vibrate.d.ts"
|
|
241
|
+
"types": "./vibrate.d.ts",
|
|
242
|
+
"require": "./vibrate.cjs"
|
|
213
243
|
},
|
|
214
244
|
"./package.json": "./package.json"
|
|
215
245
|
},
|
package/parser.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./~number-B1MpW9GU.js"),u=require("yummies/type-guard"),l=(r,e,t)=>n.number(Number(r)/Number(e)*100,t),o=(r,e)=>{const t=e&&"fallback"in e?e.fallback:"";return r==null?t:u.typeGuard.isObject(r)?e?.prettyJson?JSON.stringify(r,null,2):JSON.stringify(r):String(r)},b=Object.freeze(Object.defineProperty({__proto__:null,number:n.number,percent:l,string:o},Symbol.toStringTag,{value:"Module"}));exports.parser=b;
|
|
2
|
+
//# sourceMappingURL=parser.cjs.map
|
package/parser.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.cjs","sources":["../src/parser/percent.ts","../src/parser/string.ts"],"sourcesContent":["import type { Maybe } from 'yummies/utils/types';\n\nimport { type NumberParserSettings, number } from './number.js';\n\nexport const percent = <TFallback = number>(\n value: Maybe<string | number>,\n maxValue?: Maybe<string | number>,\n settings?: Maybe<NumberParserSettings<TFallback>>,\n) => {\n return number<TFallback>((Number(value) / Number(maxValue)) * 100, settings);\n};\n","import { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/utils/types';\n\nexport interface StringParserSettings<TFallback = string> {\n fallback?: TFallback;\n prettyJson?: boolean;\n}\n\nexport const string = <TFallback = string>(\n input: Maybe<unknown>,\n settings?: Maybe<StringParserSettings<TFallback>>,\n): string | TFallback => {\n const fallback =\n settings && 'fallback' in settings ? (settings.fallback as TFallback) : '';\n\n if (input == null) {\n return fallback;\n }\n\n if (typeGuard.isObject(input)) {\n if (settings?.prettyJson) {\n return JSON.stringify(input, null, 2);\n }\n\n return JSON.stringify(input);\n }\n\n return String(input);\n};\n"],"names":["percent","value","maxValue","settings","number","string","input","fallback","typeGuard"],"mappings":"yJAIaA,EAAU,CACrBC,EACAC,EACAC,IAEOC,EAAAA,OAAmB,OAAOH,CAAK,EAAI,OAAOC,CAAQ,EAAK,IAAKC,CAAQ,ECDhEE,EAAS,CACpBC,EACAH,IACuB,CACvB,MAAMI,EACJJ,GAAY,aAAcA,EAAYA,EAAS,SAAyB,GAE1E,OAAIG,GAAS,KACJC,EAGLC,EAAAA,UAAU,SAASF,CAAK,EACtBH,GAAU,WACL,KAAK,UAAUG,EAAO,KAAM,CAAC,EAG/B,KAAK,UAAUA,CAAK,EAGtB,OAAOA,CAAK,CACrB"}
|
package/price.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=(o,i,r,{withoutSymbol:n,customSymbol:a,...m}={})=>{const e=new Intl.NumberFormat(i,{style:"currency",currency:r,minimumFractionDigits:0,currencyDisplay:"narrowSymbol",...m}),t=e.format(0).replace("0",""),c=e.format(o).replace(t,"");return n?c:`${c} ${a??(r==="RUB"?"р":t)}`.replace(/\s{2,}/," ")};exports.formatPrice=s;
|
|
2
|
+
//# sourceMappingURL=price.cjs.map
|
package/price.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price.cjs","sources":["../src/price.ts"],"sourcesContent":["export interface PriceFormatOptions\n extends Partial<Omit<Intl.NumberFormatOptions, 'currency'>> {\n withoutSymbol?: boolean;\n customSymbol?: string;\n}\n\nexport const formatPrice = (\n price: number,\n locale: string,\n currency?: string,\n { withoutSymbol, customSymbol, ...options }: PriceFormatOptions = {},\n) => {\n const priceFormatter = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n minimumFractionDigits: 0,\n currencyDisplay: 'narrowSymbol',\n ...options,\n });\n\n const zeroPrice = priceFormatter.format(0);\n const currencySymbol = zeroPrice.replace('0', '');\n const rawPrice = priceFormatter.format(price);\n const priceWithoutCurrency = rawPrice.replace(currencySymbol, '');\n\n if (withoutSymbol) {\n return priceWithoutCurrency;\n }\n\n return `${priceWithoutCurrency} ${\n customSymbol ?? (currency === 'RUB' ? 'р' : currencySymbol)\n }`.replace(/\\s{2,}/, ' ');\n};\n"],"names":["formatPrice","price","locale","currency","withoutSymbol","customSymbol","options","priceFormatter","currencySymbol","priceWithoutCurrency"],"mappings":"gFAMO,MAAMA,EAAc,CACzBC,EACAC,EACAC,EACA,CAAE,cAAAC,EAAe,aAAAC,EAAc,GAAGC,CAAA,EAAgC,KAC/D,CACH,MAAMC,EAAiB,IAAI,KAAK,aAAaL,EAAQ,CACnD,MAAO,WACP,SAAAC,EACA,sBAAuB,EACvB,gBAAiB,eACjB,GAAGG,CAAA,CACJ,EAGKE,EADYD,EAAe,OAAO,CAAC,EACR,QAAQ,IAAK,EAAE,EAE1CE,EADWF,EAAe,OAAON,CAAK,EACN,QAAQO,EAAgB,EAAE,EAEhE,OAAIJ,EACKK,EAGF,GAAGA,CAAoB,IAC5BJ,IAAiBF,IAAa,MAAQ,IAAMK,EAC9C,GAAG,QAAQ,SAAU,GAAG,CAC1B"}
|
package/random.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=(o=0,t=1)=>Math.random()*(t-o)+o,e=(o=0,t=1)=>o===t?o:Math.round(n(o,t)),r=o=>o[e(0,o.length-1)],g=(o=0,t=10)=>Array.from({length:e(o,t)}).fill(null),d=()=>e(0,1)===1,a=()=>e(0,10)<=6,l=()=>!a(),c=o=>Math.random()<o;exports.getFrequencyValue=c;exports.getMajorRandomBool=a;exports.getMinorRandomBool=l;exports.getRandomBool=d;exports.getRandomChoice=r;exports.getRandomFloat=n;exports.getRandomInt=e;exports.getRandomSizeArray=g;
|
|
2
|
+
//# sourceMappingURL=random.cjs.map
|
package/random.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.cjs","sources":["../src/random.ts"],"sourcesContent":["export const getRandomFloat = <T extends number = number>(\n min = 0,\n max = 1,\n): T => (Math.random() * (max - min) + min) as T;\n\nexport const getRandomInt = <T extends number = number>(min = 0, max = 1): T =>\n min === max ? (min as T) : (Math.round(getRandomFloat(min, max)) as T);\n\nexport const getRandomChoice = <T>(arr: T[]): T =>\n arr[getRandomInt(0, arr.length - 1)];\n\nexport const getRandomSizeArray = (min = 0, max = 10) =>\n Array.from({ length: getRandomInt(min, max) }).fill(null);\n\nexport const getRandomBool = () => getRandomInt(0, 1) === 1;\n\nexport const getMajorRandomBool = () => {\n return getRandomInt(0, 10) <= 6;\n};\n\nexport const getMinorRandomBool = () => {\n return !getMajorRandomBool();\n};\n\nexport const getFrequencyValue = (frequency: number) => {\n return Math.random() < frequency;\n};\n"],"names":["getRandomFloat","min","max","getRandomInt","getRandomChoice","arr","getRandomSizeArray","getRandomBool","getMajorRandomBool","getMinorRandomBool","getFrequencyValue","frequency"],"mappings":"gFAAO,MAAMA,EAAiB,CAC5BC,EAAM,EACNC,EAAM,IACC,KAAK,OAAA,GAAYA,EAAMD,GAAOA,EAE1BE,EAAe,CAA4BF,EAAM,EAAGC,EAAM,IACrED,IAAQC,EAAOD,EAAa,KAAK,MAAMD,EAAeC,EAAKC,CAAG,CAAC,EAEpDE,EAAsBC,GACjCA,EAAIF,EAAa,EAAGE,EAAI,OAAS,CAAC,CAAC,EAExBC,EAAqB,CAACL,EAAM,EAAGC,EAAM,KAChD,MAAM,KAAK,CAAE,OAAQC,EAAaF,EAAKC,CAAG,EAAG,EAAE,KAAK,IAAI,EAE7CK,EAAgB,IAAMJ,EAAa,EAAG,CAAC,IAAM,EAE7CK,EAAqB,IACzBL,EAAa,EAAG,EAAE,GAAK,EAGnBM,EAAqB,IACzB,CAACD,EAAA,EAGGE,EAAqBC,GACzB,KAAK,SAAWA"}
|
package/react.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),i=e=>{const t=n.useRef();return t.current||(t.current={value:e()}),t.current.value},f=()=>{const e=i(()=>new AbortController);return n.useEffect(()=>()=>{e.abort()},[]),e},b=()=>f().signal,l=e=>{const t=n.useRef(e);return t.current=e,t},d=({event:e,handler:t,options:s,deps:r=[],node:u=document})=>{const o=l(t);n.useEffect(()=>{const c=a=>o.current(a);return u.addEventListener(e,c,s),()=>u.removeEventListener(e,c,s)},r)},v=({contentRef:e,onClick:t,options:s})=>{d({event:"mousedown",handler:r=>{e.current&&!e.current.contains(r.target)&&t()},options:s})},g=e=>{const t=n.useRef(void 0);return t.current||(t.current=e()),t},E=e=>{const t=n.useRef();return n.useLayoutEffect(()=>{t.current=e()},[]),t},y=e=>{const t=n.useRef(e);return n.useLayoutEffect(()=>{t.current=e}),n.useCallback((...s)=>{const r=t.current;return r(...s)},[])},S=(e=!1)=>{const[t,s]=n.useState(e),r=n.useCallback(()=>s(a=>!a),[]),u=n.useCallback(()=>s(!0),[]),o=n.useCallback(()=>s(!1),[]),c=n.useRef({enabled:t,toggle:r,enable:u,disable:o});return c.current.enabled=t,c.current},C=()=>{const[,e]=n.useState(null);return n.useCallback(()=>{e({})},[])},L=()=>{const e=n.useRef(null),[t,s]=n.useState(void 0);return n.useEffect(()=>{e.current&&!t&&s(e.current.offsetHeight)},[t]),{ref:e,initialHeight:t}},R=e=>(t,s)=>{const r=b(),u=i(()=>t({...e,abortSignal:r,payload:s?.payload}));return n.useLayoutEffect(()=>{s?.onUpdate?.(s.payload)},[s?.payload]),u},O=R(),h=(e,t)=>{const[s]=n.useState(()=>new IntersectionObserver(e,t));return n.useEffect(()=>()=>{s.disconnect()},[]),s},m=e=>{const t=n.useRef(e);return e!=null&&(t.current=e),t.current},k=e=>{const t=n.useRef(e);return e!=null&&(t.current=e),t},I=e=>{const t=l(e);n.useEffect(()=>{const s=t.current();return s.mount?.(),s.unmount?.()},[])},V=e=>{const t=g(()=>new ResizeObserver(e));return n.useLayoutEffect(()=>()=>{t.current.disconnect()},[]),t},p=e=>{const[t,s]=n.useState(!!e),r=n.useCallback(()=>s(u=>!u),[]);return[t,r,s]},H=e=>{const[t,s]=n.useState(e);return{value:t,set:s}},A=()=>{const[e,t]=n.useState();return n.useEffect(()=>{const s=()=>{t(document.visibilityState)};return document.addEventListener("visibilitychange",s),()=>{document.removeEventListener("visibilitychange",s)}},[]),e};exports.createUseInstanceHook=R;exports.useAbortController=f;exports.useAbortSignal=b;exports.useClickOutside=v;exports.useConstant=i;exports.useDefineRef=g;exports.useElementRef=E;exports.useEvent=y;exports.useEventListener=d;exports.useFlag=S;exports.useForceUpdate=C;exports.useInitialHeight=L;exports.useInstance=O;exports.useIntersectionObserver=h;exports.useLastDefinedValue=m;exports.useLastValueRef=k;exports.useLifeCycle=I;exports.useResizeObserver=V;exports.useSyncRef=l;exports.useToggle=p;exports.useValue=H;exports.useVisibilityState=A;
|
|
2
|
+
//# sourceMappingURL=react.cjs.map
|
package/react.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.cjs","sources":["../src/react/hooks/use-constant.ts","../src/react/hooks/use-abort-controller.ts","../src/react/hooks/use-abort-signal.ts","../src/react/hooks/use-sync-ref.ts","../src/react/hooks/use-event-listener.ts","../src/react/hooks/use-click-outside.ts","../src/react/hooks/use-define-ref.ts","../src/react/hooks/use-element-ref.ts","../src/react/hooks/use-event.ts","../src/react/hooks/use-flag.ts","../src/react/hooks/use-force-update.ts","../src/react/hooks/use-initial-height.ts","../src/react/hooks/use-instance.ts","../src/react/hooks/use-intersection-observer.ts","../src/react/hooks/use-last-defined-value.ts","../src/react/hooks/use-last-value-ref.ts","../src/react/hooks/use-life-cycle.ts","../src/react/hooks/use-resize-observer.ts","../src/react/hooks/use-toggle.ts","../src/react/hooks/use-value.ts","../src/react/hooks/use-visibility-state.ts"],"sourcesContent":["import { useRef } from 'react';\n\n/**\n * React hook for creating a value exactly once.\n * useMemo doesn't give this guarantee unfortunately -\n * https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily\n * https://reactjs.org/docs/hooks-reference.html#usememo\n * @param defineValue Function which returns defined value.\n */\nexport const useConstant = <T>(defineValue: () => T): T => {\n const ref = useRef<{ value: T }>();\n\n if (!ref.current) {\n ref.current = { value: defineValue() };\n }\n\n return ref.current.value;\n};\n","import { useEffect } from 'react';\n\nimport { useConstant } from './use-constant.js';\n\nexport const useAbortController = () => {\n const controller = useConstant(() => new AbortController());\n\n useEffect(() => {\n return () => {\n controller.abort();\n };\n }, []);\n\n return controller;\n};\n","import { useAbortController } from './use-abort-controller.js';\n\nexport const useAbortSignal = () => {\n return useAbortController().signal;\n};\n","import { useRef } from 'react';\n\nexport const useSyncRef = <T>(value: T) => {\n const ref = useRef(value);\n ref.current = value;\n return ref;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { useEffect } from 'react';\nimport { useSyncRef } from './use-sync-ref.js';\n\nexport const useEventListener = <EventName extends keyof HTMLElementEventMap>({\n event,\n handler,\n options,\n deps = [],\n node = document,\n}: {\n event: EventName;\n handler: (e: HTMLElementEventMap[EventName]) => void;\n options?: boolean | AddEventListenerOptions;\n deps?: unknown[];\n node?: HTMLElement | Document | Window;\n}) => {\n const handlerRef = useSyncRef(handler);\n\n useEffect(() => {\n const handleEvent = (e: HTMLElementEventMap[EventName]) =>\n handlerRef.current(e);\n\n // @ts-expect-error\n node.addEventListener(event, handleEvent, options);\n // @ts-expect-error\n return () => node.removeEventListener(event, handleEvent, options);\n }, deps);\n};\n","import type { MutableRefObject } from 'react';\nimport { useEventListener } from './use-event-listener.js';\n\ntype ClickOutsideInput = {\n contentRef: MutableRefObject<HTMLElement | null>;\n onClick: VoidFunction;\n options?: AddEventListenerOptions;\n};\n\nexport const useClickOutside = ({\n contentRef,\n onClick,\n options,\n}: ClickOutsideInput) => {\n useEventListener({\n event: 'mousedown',\n handler: (event) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n onClick();\n }\n },\n options,\n });\n};\n","import { type MutableRefObject, useRef } from 'react';\n\n/**\n * React hook for creating a value exactly once.\n * useMemo doesn't give this guarantee unfortunately -\n * https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily\n * https://reactjs.org/docs/hooks-reference.html#usememo\n * @param defineFn Function which returns defined value.\n */\nexport const useDefineRef = <T>(defineFn: () => T): MutableRefObject<T> => {\n const ref = useRef<T>(void 0 as T);\n\n if (!ref.current) {\n ref.current = defineFn();\n }\n\n return ref;\n};\n","import { useLayoutEffect, useRef } from 'react';\n\nexport const useElementRef = <T extends HTMLElement>(selector: () => T) => {\n const ref = useRef<T>();\n\n useLayoutEffect(() => {\n ref.current = selector();\n }, []);\n\n return ref;\n};\n","/**\n * A Hook to define an event handler with an always-stable function identity.\n *\n * borrowed from @gaeron\n * https://github.com/reactjs/rfcs/blob/useevent/text/0000-useevent.md\n */\nimport { useCallback, useLayoutEffect, useRef } from 'react';\nimport type { AnyFunction } from 'yummies/utils/types';\n\nexport const useEvent = <H extends AnyFunction>(handler: H): H => {\n const handlerRef = useRef<H>(handler);\n\n // In a real implementation, this would run before layout effects\n useLayoutEffect(() => {\n handlerRef.current = handler;\n });\n\n return useCallback((...args: unknown[]) => {\n // In a real implementation, this would throw if called during render\n const fn = handlerRef.current as AnyFunction;\n return fn(...args);\n }, []) as unknown as H;\n};\n","import { useCallback, useRef, useState } from 'react';\n\nexport interface FlagHook {\n enabled: boolean;\n toggle: VoidFunction;\n enable: VoidFunction;\n disable: VoidFunction;\n}\n\nexport const useFlag = (defaultValue = false): FlagHook => {\n const [enabled, setEnabled] = useState(defaultValue);\n\n const toggle = useCallback(() => setEnabled((value) => !value), []);\n const enable = useCallback(() => setEnabled(true), []);\n const disable = useCallback(() => setEnabled(false), []);\n\n const flagObjRef = useRef<FlagHook>({\n enabled,\n toggle,\n enable,\n disable,\n });\n\n flagObjRef.current.enabled = enabled;\n\n return flagObjRef.current;\n};\n","import { useCallback, useState } from 'react';\n\nexport const useForceUpdate = () => {\n const [, setState] = useState<unknown>(null);\n\n return useCallback(() => {\n setState({});\n }, []);\n};\n","import { useEffect, useRef, useState } from 'react';\n\nexport const useInitialHeight = <T extends HTMLElement>() => {\n const ref = useRef<T | null>(null);\n const [initialHeight, setInitialHeight] = useState<number | undefined>(\n undefined,\n );\n\n useEffect(() => {\n if (ref.current && !initialHeight) {\n setInitialHeight(ref.current.offsetHeight);\n }\n }, [initialHeight]);\n\n return { ref, initialHeight };\n};\n","import { useLayoutEffect } from 'react';\nimport { useAbortSignal } from './use-abort-signal.js';\nimport { useConstant } from './use-constant.js';\n\nexport type InstanceCreateConfig<TPayload, TExtension = {}> = TExtension & {\n abortSignal: AbortSignal;\n payload: TPayload;\n};\n\nexport const createUseInstanceHook =\n <TExtension = {}>(extension?: TExtension) =>\n <TInstance, TPayload>(\n factory: (\n config: InstanceCreateConfig<NoInfer<TPayload>, TExtension>,\n ) => TInstance,\n config?: {\n payload?: TPayload;\n onUpdate?: (payload: TPayload) => void;\n },\n ) => {\n const abortSignal = useAbortSignal();\n\n const instance = useConstant(() =>\n factory({\n ...(extension as TExtension),\n abortSignal,\n payload: config?.payload as any,\n }),\n );\n\n useLayoutEffect(() => {\n config?.onUpdate?.(config.payload!);\n }, [config?.payload]);\n\n return instance;\n };\n\n/**\n * The `useInstance` hook is used to create and manage an instance of an object\n * that requires access to the root store and an abort signal.\n *\n * You can create YOUR OWN CUSTOM `useInstance` hook using `createUseInstanceHook` if you need\n * to provide some specific data\n *\n * @param factory - A factory function that takes a configuration and returns an instance.\n * @param config - An optional configuration containing additional input parameters and an update function.\n * @returns An instance created by the factory function.\n */\nexport const useInstance = createUseInstanceHook();\n","import { useEffect, useState } from 'react';\n\nexport const useIntersectionObserver = (\n callback: IntersectionObserverCallback,\n options?: IntersectionObserverInit,\n) => {\n const [intersectionObserver] = useState(\n () => new IntersectionObserver(callback, options),\n );\n\n useEffect(() => {\n return () => {\n intersectionObserver.disconnect();\n };\n }, []);\n\n return intersectionObserver;\n};\n","import { useRef } from 'react';\n\nexport const useLastDefinedValue = <T>(value: T) => {\n const ref = useRef(value);\n if (value != null) {\n ref.current = value;\n }\n return ref.current;\n};\n","import { useRef } from 'react';\n\nexport const useLastValueRef = <T>(value: T | null | undefined) => {\n const ref = useRef(value);\n\n if (value != null) {\n ref.current = value;\n }\n\n return ref;\n};\n","import { useEffect } from 'react';\nimport { useSyncRef } from './use-sync-ref.js';\n\nexport const useLifeCycle = (\n fn: () => {\n mount?: VoidFunction;\n unmount?: VoidFunction;\n },\n) => {\n const fnRef = useSyncRef(fn);\n\n useEffect(() => {\n const fnOperation = fnRef.current();\n fnOperation.mount?.();\n return fnOperation.unmount?.();\n }, []);\n};\n","import { useLayoutEffect } from 'react';\nimport { useDefineRef } from './use-define-ref.js';\n\nexport const useResizeObserver = (callback: ResizeObserverCallback) => {\n const resizeObserverRef = useDefineRef(() => new ResizeObserver(callback));\n\n useLayoutEffect(() => {\n return () => {\n resizeObserverRef.current.disconnect();\n };\n }, []);\n\n return resizeObserverRef;\n};\n","import { useCallback, useState } from 'react';\n\nexport const useToggle = (initialState?: boolean) => {\n const [toggled, setToggled] = useState(!!initialState);\n\n const toggle = useCallback(() => setToggled((toggled) => !toggled), []);\n\n return [toggled, toggle, setToggled] as const;\n};\n","import { useState } from 'react';\n\nexport const useValue = <T>(defaults: T | (() => T)) => {\n const [value, setValue] = useState<T>(defaults);\n\n return {\n value,\n set: setValue,\n };\n};\n","import { useEffect, useState } from 'react';\n\nexport const useVisibilityState = () => {\n const [state, setState] = useState<DocumentVisibilityState>();\n\n useEffect(() => {\n const handleVisibilityChange = () => {\n setState(document.visibilityState);\n };\n\n document.addEventListener('visibilitychange', handleVisibilityChange);\n\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n };\n }, []);\n\n return state;\n};\n"],"names":["useConstant","defineValue","ref","useRef","useAbortController","controller","useEffect","useAbortSignal","useSyncRef","value","useEventListener","event","handler","options","deps","node","handlerRef","handleEvent","e","useClickOutside","contentRef","onClick","useDefineRef","defineFn","useElementRef","selector","useLayoutEffect","useEvent","useCallback","args","fn","useFlag","defaultValue","enabled","setEnabled","useState","toggle","enable","disable","flagObjRef","useForceUpdate","setState","useInitialHeight","initialHeight","setInitialHeight","createUseInstanceHook","extension","factory","config","abortSignal","instance","useInstance","useIntersectionObserver","callback","intersectionObserver","useLastDefinedValue","useLastValueRef","useLifeCycle","fnRef","fnOperation","useResizeObserver","resizeObserverRef","useToggle","initialState","toggled","setToggled","useValue","defaults","setValue","useVisibilityState","state","handleVisibilityChange"],"mappings":"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"}
|
package/sound.cjs
ADDED
package/sound.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sound.cjs","sources":["../src/sound.ts"],"sourcesContent":["/**\n * Воспроизводит звук из файла\n */\nexport const playSound = async (\n file: string,\n { volume = 1 }: { volume?: number } = {},\n) => {\n let audio = new Audio(file);\n audio.volume = volume;\n audio.muted = !volume;\n await audio.play();\n audio.remove();\n // @ts-expect-error\n audio = null;\n};\n"],"names":["playSound","file","volume","audio"],"mappings":"gFAGO,MAAMA,EAAY,MACvBC,EACA,CAAE,OAAAC,EAAS,CAAA,EAA2B,CAAA,IACnC,CACH,IAAIC,EAAQ,IAAI,MAAMF,CAAI,EAC1BE,EAAM,OAASD,EACfC,EAAM,MAAQ,CAACD,EACf,MAAMC,EAAM,KAAA,EACZA,EAAM,OAAA,EAENA,EAAQ,IACV"}
|
package/text.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=(l,t,o=[2,0,1,1,1,2])=>t[l%100>4&&l%100<20?2:o[Math.min(l%10,5)]],f=(l,t=60)=>{const o=l.split(/\s+/).filter(s=>s!==""),n=[];let e="";for(const s of o){if(s.length>t){e!==""&&(n.push(e),e="");let i=0;for(;i<s.length;){const r=s.slice(i,i+t);n.push(r),i+=t}continue}e===""?e=s:e.length+1+s.length<=t?e+=` ${s}`:(n.push(e),e=s)}return(e!==""||n.length===0)&&n.push(e),n};exports.declension=c;exports.splitTextByLines=f;
|
|
2
|
+
//# sourceMappingURL=text.cjs.map
|
package/text.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.cjs","sources":["../src/text.ts"],"sourcesContent":["/**\n * Склонение слова в зависимости от количества\n * @example\n * declension(1, ['слово', 'слова', 'слов']) // 'слово'\n * @example\n * declension(2, ['слово', 'слова', 'слов']) // 'слова'\n * @example\n * declension(5, ['слово', 'слова', 'слов']) // 'слов'\n */\nexport const declension = (\n count: number,\n txt: readonly [one: string, two: string, five: string],\n cases = [2, 0, 1, 1, 1, 2],\n) =>\n txt[count % 100 > 4 && count % 100 < 20 ? 2 : cases[Math.min(count % 10, 5)]];\n\n/**\n * Разбиение текста на линии\n */\nexport const splitTextByLines = (\n text: string,\n lineLingth: number = 60,\n): string[] => {\n const words = text.split(/\\s+/).filter((word) => word !== '');\n const lines = [];\n let currentLine = '';\n\n for (const word of words) {\n if (word.length > lineLingth) {\n if (currentLine !== '') {\n lines.push(currentLine);\n currentLine = '';\n }\n\n let start = 0;\n while (start < word.length) {\n const chunk = word.slice(start, start + lineLingth);\n lines.push(chunk);\n start += lineLingth;\n }\n continue;\n }\n\n // Проверка возможности добавления слова в текущую строку\n if (currentLine === '') {\n currentLine = word;\n } else if (currentLine.length + 1 + word.length <= lineLingth) {\n currentLine += ` ${word}`;\n } else {\n lines.push(currentLine);\n currentLine = word;\n }\n }\n\n if (currentLine !== '' || lines.length === 0) {\n lines.push(currentLine);\n }\n\n return lines;\n};\n"],"names":["declension","count","txt","cases","splitTextByLines","text","lineLingth","words","word","lines","currentLine","start","chunk"],"mappings":"gFASO,MAAMA,EAAa,CACxBC,EACAC,EACAC,EAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,IAEzBD,EAAID,EAAQ,IAAM,GAAKA,EAAQ,IAAM,GAAK,EAAIE,EAAM,KAAK,IAAIF,EAAQ,GAAI,CAAC,CAAC,CAAC,EAKjEG,EAAmB,CAC9BC,EACAC,EAAqB,KACR,CACb,MAAMC,EAAQF,EAAK,MAAM,KAAK,EAAE,OAAQG,GAASA,IAAS,EAAE,EACtDC,EAAQ,CAAA,EACd,IAAIC,EAAc,GAElB,UAAWF,KAAQD,EAAO,CACxB,GAAIC,EAAK,OAASF,EAAY,CACxBI,IAAgB,KAClBD,EAAM,KAAKC,CAAW,EACtBA,EAAc,IAGhB,IAAIC,EAAQ,EACZ,KAAOA,EAAQH,EAAK,QAAQ,CAC1B,MAAMI,EAAQJ,EAAK,MAAMG,EAAOA,EAAQL,CAAU,EAClDG,EAAM,KAAKG,CAAK,EAChBD,GAASL,CACX,CACA,QACF,CAGII,IAAgB,GAClBA,EAAcF,EACLE,EAAY,OAAS,EAAIF,EAAK,QAAUF,EACjDI,GAAe,IAAIF,CAAI,IAEvBC,EAAM,KAAKC,CAAW,EACtBA,EAAcF,EAElB,CAEA,OAAIE,IAAgB,IAAMD,EAAM,SAAW,IACzCA,EAAM,KAAKC,CAAW,EAGjBD,CACT"}
|
package/type-guard.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-guard.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utility-types.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/utils/types.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/vibrate.cjs
ADDED
package/vibrate.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibrate.cjs","sources":["../src/vibrate.ts"],"sourcesContent":["/**\n * Вибрации по шаблону\n */\nexport const vibrate = (pattern: number | number[]) => {\n if ('vibrate' in navigator) {\n navigator.vibrate(pattern);\n }\n};\n"],"names":["vibrate","pattern"],"mappings":"gFAGO,MAAMA,EAAWC,GAA+B,CACjD,YAAa,WACf,UAAU,QAAQA,CAAO,CAE7B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";function r(n){if(n===void 0)return"undefined";if(n===null)return"null";if(n&&(n.nodeType===1||n.nodeType===9))return"element";const t=Object.prototype.toString.call(n);if(t==="[object Number]"){if(Number.isNaN(n))return"nan";if(!Number.isFinite(n))return"infinite"}return t}const e=n=>t=>r(t)===n,b=n=>n!=null,u=e("null"),i=e("undefined"),o=e("[object Object]"),f=e("[object Array]"),s=e("[object String]"),c=e("[object Number]"),l=e("[object Boolean]"),d=e("[object Function]"),j=e("[object RegExp]"),m=e("element"),p=e("nan"),y=e("infinite"),N=e("[object Symbol]"),g=Object.freeze(Object.defineProperty({__proto__:null,isArray:f,isBoolean:l,isDefined:b,isElement:m,isFunction:d,isInfinite:y,isNaN:p,isNull:u,isNumber:c,isObject:o,isRegExp:j,isString:s,isSymbol:N,isUndefined:i},Symbol.toStringTag,{value:"Module"}));exports._exports=g;exports.isNumber=c;exports.isObject=o;exports.isString=s;exports.isUndefined=i;
|
|
2
|
+
//# sourceMappingURL=~index-PKNbSTT-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"~index-PKNbSTT-.js","sources":["../src/type-guard/_exports.ts"],"sourcesContent":["import type { AnyFunction, AnyObject } from 'yummies/utils/types';\n\nenum Type {\n Null = 'null',\n Undefined = 'undefined',\n NaN = 'nan',\n Object = '[object Object]',\n Array = '[object Array]',\n String = '[object String]',\n Number = '[object Number]',\n Boolean = '[object Boolean]',\n Function = '[object Function]',\n RegExp = '[object RegExp]',\n Symbol = '[object Symbol]',\n Infinite = 'infinite',\n Element = 'element',\n}\n\nfunction getType(value: unknown): Type {\n if (value === undefined) {\n return Type.Undefined;\n }\n if (value === null) {\n return Type.Null;\n }\n\n // handle DOM elements\n // @ts-expect-error\n if (value && (value.nodeType === 1 || value.nodeType === 9)) {\n return Type.Element;\n }\n\n const stringifiedValue = Object.prototype.toString.call(value);\n\n // handle NaN and Infinity\n if (stringifiedValue === Type.Number) {\n if (Number.isNaN(value as number)) {\n return Type.NaN;\n }\n if (!Number.isFinite(value as number)) {\n return Type.Infinite;\n }\n }\n\n return stringifiedValue as Type;\n}\n\nconst createTypeGuard =\n <T>(type: Type) =>\n (value: unknown): value is T =>\n getType(value) === type;\n\n/**\n * Check if a value is not null or undefined\n * @param value the value to check\n * @returns boolean\n */\nexport const isDefined = <T>(value: T | undefined | null): value is T =>\n value != null;\n\n/**\n * Check if a value is null\n * @param value the value to check\n * @returns boolean\n */\nexport const isNull = createTypeGuard<null>(Type.Null);\n\n/**\n * Check if a value is undefined\n * @param value the value to check\n * @returns boolean\n */\nexport const isUndefined = createTypeGuard<undefined>(Type.Undefined);\n\n/**\n * Check if a value is an object\n * @param value the value to check\n * @returns boolean\n */\nexport const isObject = createTypeGuard<AnyObject>(Type.Object);\n\n/**\n * Check if a value is an array\n * @param value the value to check\n * @returns boolean\n */\nexport const isArray = createTypeGuard<unknown[]>(Type.Array);\n\n/**\n * Check if a value is a string\n * @param value the value to check\n * @returns boolean\n */\nexport const isString = createTypeGuard<string>(Type.String);\n\n/**\n * Check if a value is a number\n * @param value the value to check\n * @returns boolean\n */\nexport const isNumber = createTypeGuard<number>(Type.Number);\n\n/**\n * Check if a value is a boolean\n * @param value the value to check\n * @returns boolean\n */\nexport const isBoolean = createTypeGuard<boolean>(Type.Boolean);\n\n/**\n * Check if a value is a function\n * @param value the value to check\n * @returns boolean\n */\nexport const isFunction = createTypeGuard<AnyFunction>(Type.Function);\n\n/**\n * Check if a value is a regular expression\n * @param value the value to check\n * @returns boolean\n */\nexport const isRegExp = createTypeGuard<RegExp>(Type.RegExp);\n\n/**\n * Check if a value is a DOM element\n * @param value the value to check\n * @returns boolean\n */\nexport const isElement = createTypeGuard<HTMLElement>(Type.Element);\n\n/**\n * Check if a value is NaN\n * @param value the value to check\n * @returns boolean\n */\nexport const isNaN = createTypeGuard<number>(Type.NaN) as (\n value: unknown,\n) => boolean;\n\n/**\n * Check if a value is infinity\n * @param value the value to check\n * @returns boolean\n */\nexport const isInfinite = createTypeGuard<number>(Type.Infinite) as (\n value: unknown,\n) => boolean;\n\n/**\n * Check if a value is a symbol\n * @param value the value to check\n * @returns boolean\n */\nexport const isSymbol = createTypeGuard<symbol>(Type.Symbol);\n"],"names":["getType","value","stringifiedValue","createTypeGuard","type","isDefined","isNull","isUndefined","isObject","isArray","isString","isNumber","isBoolean","isFunction","isRegExp","isElement","isNaN","isInfinite","isSymbol"],"mappings":"aAkBA,SAASA,EAAQC,EAAsB,CACrC,GAAIA,IAAU,OACZ,MAAO,YAET,GAAIA,IAAU,KACZ,MAAO,OAKT,GAAIA,IAAUA,EAAM,WAAa,GAAKA,EAAM,WAAa,GACvD,MAAO,UAGT,MAAMC,EAAmB,OAAO,UAAU,SAAS,KAAKD,CAAK,EAG7D,GAAIC,IAAqB,kBAAa,CACpC,GAAI,OAAO,MAAMD,CAAe,EAC9B,MAAO,MAET,GAAI,CAAC,OAAO,SAASA,CAAe,EAClC,MAAO,UAEX,CAEA,OAAOC,CACT,CAEA,MAAMC,EACAC,GACHH,GACCD,EAAQC,CAAK,IAAMG,EAOVC,EAAgBJ,GAC3BA,GAAS,KAOEK,EAASH,EAAsB,MAAA,EAO/BI,EAAcJ,EAA2B,WAAA,EAOzCK,EAAWL,EAA2B,iBAAA,EAOtCM,EAAUN,EAA2B,gBAAA,EAOrCO,EAAWP,EAAwB,iBAAA,EAOnCQ,EAAWR,EAAwB,iBAAA,EAOnCS,EAAYT,EAAyB,kBAAA,EAOrCU,EAAaV,EAA6B,mBAAA,EAO1CW,EAAWX,EAAwB,iBAAA,EAOnCY,EAAYZ,EAA6B,SAAA,EAOzCa,EAAQb,EAAwB,KAAA,EAShCc,EAAad,EAAwB,UAAA,EASrCe,EAAWf,EAAwB,iBAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const f=require("yummies/format"),r=require("yummies/type-guard"),s=(i,n)=>{const t={...s.defaultSettings,...n},l=t?.fallback??0;let e;if(r.typeGuard.isNumber(i))e=i;else if(r.typeGuard.isString(i)){const a=f.format.skipSpaces(i).replace(",",".");a===""?e=l:e=Number(a)}else e=l;return r.typeGuard.isNumber(e)?(t?.clamped!=null&&(e=Math.max(t.clamped[0]??-1/0,Math.min(e,t.clamped[1]??1/0))),t?.ceil!=null&&(e=Math.ceil(e)),t?.floor!=null&&(e=Math.floor(e)),t?.digits!=null&&(e=+e.toFixed(t.digits)),e):l};s.defaultSettings={};exports.number=s;
|
|
2
|
+
//# sourceMappingURL=~number-B1MpW9GU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"~number-B1MpW9GU.js","sources":["../src/parser/number.ts"],"sourcesContent":["import { format } from 'yummies/format';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/utils/types';\n\nexport interface NumberParserSettings<TFallback = number> {\n digits?: number;\n fallback?: TFallback;\n /**\n * Round to upper boundary\n * 5.1 -> 6\n */\n ceil?: boolean;\n /**\n * Round to bottom boundary\n * 5.9 -> 5\n */\n floor?: boolean;\n clamped?: [min?: Maybe<number>, max?: Maybe<number>];\n}\n\nexport const number = <TFallback = number>(\n input: Maybe<unknown>,\n userSettings?: Maybe<NumberParserSettings<TFallback>>,\n): number | TFallback => {\n const settings = {\n ...number.defaultSettings,\n ...userSettings,\n };\n\n const fallback = settings?.fallback ?? 0;\n\n let result: number;\n\n if (typeGuard.isNumber(input)) {\n result = input;\n } else if (typeGuard.isString(input)) {\n const formattedInput = format.skipSpaces(input).replace(',', '.');\n if (formattedInput === '') {\n result = fallback as any;\n } else {\n result = Number(formattedInput);\n }\n } else {\n result = fallback as any;\n }\n\n if (typeGuard.isNumber(result)) {\n if (settings?.clamped != null) {\n result = Math.max(\n settings.clamped[0] ?? -Infinity,\n Math.min(result, settings.clamped[1] ?? Infinity),\n );\n }\n\n if (settings?.ceil != null) {\n result = Math.ceil(result);\n }\n\n if (settings?.floor != null) {\n result = Math.floor(result);\n }\n\n if (settings?.digits != null) {\n result = +result.toFixed(settings.digits);\n }\n\n return result;\n } else {\n return fallback;\n }\n};\n\nnumber.defaultSettings = {} as NumberParserSettings;\n"],"names":["number","input","userSettings","settings","fallback","result","typeGuard","formattedInput","format"],"mappings":"+EAoBaA,EAAS,CACpBC,EACAC,IACuB,CACvB,MAAMC,EAAW,CACf,GAAGH,EAAO,gBACV,GAAGE,CAAA,EAGCE,EAAWD,GAAU,UAAY,EAEvC,IAAIE,EAEJ,GAAIC,EAAAA,UAAU,SAASL,CAAK,EAC1BI,EAASJ,UACAK,EAAAA,UAAU,SAASL,CAAK,EAAG,CACpC,MAAMM,EAAiBC,EAAAA,OAAO,WAAWP,CAAK,EAAE,QAAQ,IAAK,GAAG,EAC5DM,IAAmB,GACrBF,EAASD,EAETC,EAAS,OAAOE,CAAc,CAElC,MACEF,EAASD,EAGX,OAAIE,EAAAA,UAAU,SAASD,CAAM,GACvBF,GAAU,SAAW,OACvBE,EAAS,KAAK,IACZF,EAAS,QAAQ,CAAC,GAAK,KACvB,KAAK,IAAIE,EAAQF,EAAS,QAAQ,CAAC,GAAK,GAAQ,CAAA,GAIhDA,GAAU,MAAQ,OACpBE,EAAS,KAAK,KAAKA,CAAM,GAGvBF,GAAU,OAAS,OACrBE,EAAS,KAAK,MAAMA,CAAM,GAGxBF,GAAU,QAAU,OACtBE,EAAS,CAACA,EAAO,QAAQF,EAAS,MAAM,GAGnCE,GAEAD,CAEX,EAEAJ,EAAO,gBAAkB,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const I=require("yummies/parser"),u=require("yummies/type-guard"),f="–",$="-",x="∞",n=(o,m)=>{const t={...n.defaultSettings,...m},a=t.digits??0,g=t?.cutZeros??!1,c=t.delimiter??" ",p=t.postfix??"",N=t.emptyText??f,y=t.digitsOnlyForFloat??!0;let e;if(u.typeGuard.isString(o)?e=I.parser.number(e,{fallback:void 0}):e=o,u.typeGuard.isNumber(e)){let s=`${e}`;a!==!1&&(s=e.toFixed(a)),g&&(s=`${+s}`);const[F,i]=s.split(".",2);let r=F,l="";i&&(!y||!/^0+$/.test(i))&&(l=`.${i}`);const d=/(\d+)(\d{3})/;for(;d.test(r)&&c;)r=r.replace(d,`$1${c}$2`);return r+l+p}return N};n.defaultSettings={};exports.HYPHEN=$;exports.INFINITY=x;exports.NO_VALUE=f;exports.number=n;
|
|
2
|
+
//# sourceMappingURL=~number-DX076ykA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"~number-DX076ykA.js","sources":["../src/format/constants.ts","../src/format/number.ts"],"sourcesContent":["export const NO_VALUE = '–'; // en-dash\n\nexport const HYPHEN = '-';\n\nexport const INFINITY = '∞';\n","import { parser } from 'yummies/parser';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/utils/types';\nimport { NO_VALUE } from './constants.js';\n\nexport interface NumberFormatSettings {\n delimiter?: string;\n /**\n * digitsOnlyForFloat - Show digits after decimal point only if they are not zeros after converting to number.\n * Example: \"0.00\" -> \"0\", \"0.10\" -> \"0.1\", but \"0.003\" -> \"0.003\"\n *\n * @default true\n */\n digitsOnlyForFloat?: boolean;\n /**\n * Text which will be returned if the value is undefined, null, NaN, Infinity or empty string.\n * Example: \"–\" will be returned if the value is undefined and emptyText is \"–\".\n */\n emptyText?: string;\n /**\n * Text to append to the end of the formatted number.\n * Example: if value is 1000 and postfix is \"₽\", result will be \"1 000₽\".\n */\n postfix?: string;\n /**\n * Fixed number of digits after the decimal point (number.toFixed() method)\n * If set to false, the truncation is ignored!\n */\n digits?: number | false;\n /**\n * Remove trailing zeros from the end of the number\n * Example: 0.010000000000000000000000000000000000000000000 -> 0.01\n */\n cutZeros?: boolean;\n}\n\nexport const number = (\n rawValue: Maybe<string | number>,\n userSettings?: Maybe<NumberFormatSettings>,\n): string => {\n const settings = {\n ...number.defaultSettings,\n ...userSettings,\n };\n\n const digits = settings.digits ?? 0;\n const cutZeros = settings?.cutZeros ?? false;\n const delimiter = settings.delimiter ?? ' ';\n const postfix = settings.postfix ?? '';\n const emptyText = settings.emptyText ?? NO_VALUE;\n const digitsOnlyForFloat = settings.digitsOnlyForFloat ?? true;\n\n let value: Maybe<number>;\n\n if (typeGuard.isString(rawValue)) {\n value = parser.number(value, { fallback: undefined });\n } else {\n value = rawValue;\n }\n\n if (typeGuard.isNumber(value)) {\n let raw: string = `${value}`;\n\n if (digits !== false) {\n raw = value.toFixed(digits);\n }\n if (cutZeros) {\n raw = `${+raw}`;\n }\n\n const [integerPart, decimalPart] = raw.split('.', 2);\n\n let formattedIntegerPart = integerPart;\n let formattedDecimalPart = '';\n\n if (decimalPart && (!digitsOnlyForFloat || !/^0+$/.test(decimalPart))) {\n formattedDecimalPart = `.${decimalPart}`;\n }\n\n const rgx = /(\\d+)(\\d{3})/;\n\n while (rgx.test(formattedIntegerPart) && delimiter) {\n formattedIntegerPart = formattedIntegerPart.replace(\n rgx,\n `$1${delimiter}$2`,\n );\n }\n\n return formattedIntegerPart + formattedDecimalPart + postfix;\n }\n\n return emptyText;\n};\n\nnumber.defaultSettings = {} as NumberFormatSettings;\n"],"names":["NO_VALUE","HYPHEN","INFINITY","number","rawValue","userSettings","settings","digits","cutZeros","delimiter","postfix","emptyText","digitsOnlyForFloat","value","typeGuard","parser","raw","integerPart","decimalPart","formattedIntegerPart","formattedDecimalPart","rgx"],"mappings":"+EAAaA,EAAW,IAEXC,EAAS,IAETC,EAAW,ICgCXC,EAAS,CACpBC,EACAC,IACW,CACX,MAAMC,EAAW,CACf,GAAGH,EAAO,gBACV,GAAGE,CAAA,EAGCE,EAASD,EAAS,QAAU,EAC5BE,EAAWF,GAAU,UAAY,GACjCG,EAAYH,EAAS,WAAa,IAClCI,EAAUJ,EAAS,SAAW,GAC9BK,EAAYL,EAAS,WAAaN,EAClCY,EAAqBN,EAAS,oBAAsB,GAE1D,IAAIO,EAQJ,GANIC,EAAAA,UAAU,SAASV,CAAQ,EAC7BS,EAAQE,EAAAA,OAAO,OAAOF,EAAO,CAAE,SAAU,OAAW,EAEpDA,EAAQT,EAGNU,EAAAA,UAAU,SAASD,CAAK,EAAG,CAC7B,IAAIG,EAAc,GAAGH,CAAK,GAEtBN,IAAW,KACbS,EAAMH,EAAM,QAAQN,CAAM,GAExBC,IACFQ,EAAM,GAAG,CAACA,CAAG,IAGf,KAAM,CAACC,EAAaC,CAAW,EAAIF,EAAI,MAAM,IAAK,CAAC,EAEnD,IAAIG,EAAuBF,EACvBG,EAAuB,GAEvBF,IAAgB,CAACN,GAAsB,CAAC,OAAO,KAAKM,CAAW,KACjEE,EAAuB,IAAIF,CAAW,IAGxC,MAAMG,EAAM,eAEZ,KAAOA,EAAI,KAAKF,CAAoB,GAAKV,GACvCU,EAAuBA,EAAqB,QAC1CE,EACA,KAAKZ,CAAS,IAAA,EAIlB,OAAOU,EAAuBC,EAAuBV,CACvD,CAEA,OAAOC,CACT,EAEAR,EAAO,gBAAkB,CAAA"}
|