yummies 6.6.0 → 6.7.1
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/date-time.cjs +32 -26
- package/date-time.cjs.map +1 -1
- package/date-time.js +32 -26
- package/date-time.js.map +1 -1
- package/mobx.cjs +3 -1
- package/mobx.cjs.map +1 -1
- package/mobx.d.ts +1 -0
- package/mobx.js +3 -1
- package/mobx.js.map +1 -1
- package/package.json +7 -1
- package/storage.cjs +49 -0
- package/storage.cjs.map +1 -0
- package/storage.d.ts +41 -0
- package/storage.js +49 -0
- package/storage.js.map +1 -0
package/date-time.cjs
CHANGED
|
@@ -238,56 +238,62 @@ requireRu();
|
|
|
238
238
|
dayjs.extend(relativeTime);
|
|
239
239
|
dayjs.extend(duration);
|
|
240
240
|
dayjs.locale("ru");
|
|
241
|
-
const toLibFormat = (value
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
return dayjs(value);
|
|
241
|
+
const toLibFormat = (value) => {
|
|
242
|
+
let result = null;
|
|
243
|
+
if (dayjs.isDayjs(value)) {
|
|
244
|
+
result = value;
|
|
245
|
+
} else if (value != null) {
|
|
246
|
+
result = dayjs(value);
|
|
247
|
+
}
|
|
248
|
+
if (!result?.isValid()) {
|
|
249
|
+
return null;
|
|
251
250
|
}
|
|
251
|
+
return result;
|
|
252
252
|
};
|
|
253
253
|
const formatDate = (value, settings) => {
|
|
254
254
|
const dateFormat = settings?.format;
|
|
255
255
|
const datePattern = settings?.pattern;
|
|
256
256
|
const asTime = settings?.asTime;
|
|
257
|
-
|
|
258
|
-
if (typeGuard.typeGuard.
|
|
257
|
+
let libDate = null;
|
|
258
|
+
if (asTime && typeGuard.typeGuard.isNumber(value)) {
|
|
259
|
+
libDate = dayjs.duration(value);
|
|
260
|
+
} else {
|
|
261
|
+
libDate = toLibFormat(value);
|
|
262
|
+
}
|
|
263
|
+
if (!libDate) {
|
|
259
264
|
return format.format.NO_VALUE;
|
|
260
265
|
}
|
|
261
266
|
if (datePattern) {
|
|
262
|
-
return
|
|
267
|
+
return libDate.format(datePattern);
|
|
263
268
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
return
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
return value.fromNow(true);
|
|
269
|
+
if (dateFormat === "human" || dateFormat === "spent-time") {
|
|
270
|
+
if ("fromNow" in libDate) {
|
|
271
|
+
return libDate.fromNow(dateFormat === "spent-time");
|
|
272
|
+
} else {
|
|
273
|
+
return format.format.NO_VALUE;
|
|
270
274
|
}
|
|
275
|
+
}
|
|
276
|
+
switch (dateFormat) {
|
|
271
277
|
case "full": {
|
|
272
|
-
return
|
|
278
|
+
return libDate.format("DD MMM YYYY HH:mm:ss");
|
|
273
279
|
}
|
|
274
280
|
case "short": {
|
|
275
|
-
return
|
|
281
|
+
return libDate.format("DD MMM HH:mm");
|
|
276
282
|
}
|
|
277
283
|
case "time": {
|
|
278
|
-
return
|
|
284
|
+
return libDate.format("HH:mm:ss");
|
|
279
285
|
}
|
|
280
286
|
case "time-short": {
|
|
281
|
-
return
|
|
287
|
+
return libDate.format("HH:mm");
|
|
282
288
|
}
|
|
283
289
|
case "day": {
|
|
284
|
-
return
|
|
290
|
+
return libDate.format("DD MMM YYYY");
|
|
285
291
|
}
|
|
286
292
|
case "month": {
|
|
287
|
-
return
|
|
293
|
+
return libDate.format("MMMM YYYY");
|
|
288
294
|
}
|
|
289
295
|
default: {
|
|
290
|
-
return
|
|
296
|
+
return libDate.format("DD.MM.YYYY");
|
|
291
297
|
}
|
|
292
298
|
}
|
|
293
299
|
};
|
package/date-time.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-time.cjs","sources":["../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/duration.js","../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/relativeTime.js","../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/locale/ru.js","../src/date-time.ts"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","!function(_,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],t):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_ru=t(_.dayjs)}(this,(function(_){\"use strict\";function t(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var e=t(_),n=\"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря\".split(\"_\"),s=\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\"),r=\"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.\".split(\"_\"),o=\"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.\".split(\"_\"),i=/D[oD]?(\\[[^[\\]]*\\]|\\s)+MMMM?/;function d(_,t,e){var n,s;return\"m\"===e?t?\"минута\":\"минуту\":_+\" \"+(n=+_,s={mm:t?\"минута_минуты_минут\":\"минуту_минуты_минут\",hh:\"час_часа_часов\",dd:\"день_дня_дней\",MM:\"месяц_месяца_месяцев\",yy:\"год_года_лет\"}[e].split(\"_\"),n%10==1&&n%100!=11?s[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?s[1]:s[2])}var u=function(_,t){return i.test(t)?n[_.month()]:s[_.month()]};u.s=s,u.f=n;var a=function(_,t){return i.test(t)?r[_.month()]:o[_.month()]};a.s=o,a.f=r;var m={name:\"ru\",weekdays:\"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота\".split(\"_\"),weekdaysShort:\"вск_пнд_втр_срд_чтв_птн_сбт\".split(\"_\"),weekdaysMin:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),months:u,monthsShort:a,weekStart:1,yearStart:4,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., H:mm\",LLLL:\"dddd, D MMMM YYYY г., H:mm\"},relativeTime:{future:\"через %s\",past:\"%s назад\",s:\"несколько секунд\",m:d,mm:d,h:\"час\",hh:d,d:\"день\",dd:d,M:\"месяц\",MM:d,y:\"год\",yy:d},ordinal:function(_){return _},meridiem:function(_){return _<4?\"ночи\":_<12?\"утра\":_<17?\"дня\":\"вечера\"}};return e.default.locale(m,null,!0),m}));","import dayjs, { type Dayjs, type ManipulateType } from 'dayjs';\nimport duration from 'dayjs/plugin/duration.js';\nimport relativeTime from 'dayjs/plugin/relativeTime.js';\nimport { format } from 'yummies/format';\nimport { unitsToMs } from 'yummies/ms';\nimport { declension } from 'yummies/text';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/types';\n\nimport 'dayjs/locale/ru.js';\n\ndayjs.extend(relativeTime);\ndayjs.extend(duration);\ndayjs.locale('ru');\n\nconst toLibFormat = (\n value: Maybe<RawDateToFormat>,\n asTime?: boolean,\n): Dayjs => {\n if (typeGuard.isNumber(value)) {\n if (asTime) {\n return dayjs.duration(value) as unknown as Dayjs;\n }\n return dayjs(value);\n } else if (dayjs.isDayjs(value)) {\n return value;\n } else {\n return dayjs(value);\n }\n};\n\nexport type RawDateToFormat = Date | string | number | Dayjs;\n\nexport const formatDate = (\n value: Maybe<RawDateToFormat>,\n settings?: Maybe<{\n format?:\n | 'human'\n | 'full'\n | 'short'\n | 'day'\n | 'day-only'\n | 'date'\n | 'month'\n | 'spent-time'\n | 'time'\n | 'time-short';\n pattern?: string;\n asTime?: boolean;\n }>,\n) => {\n const dateFormat = settings?.format;\n const datePattern = settings?.pattern;\n const asTime = settings?.asTime;\n\n value = toLibFormat(value, asTime);\n\n if (typeGuard.isUndefined(value) || !value.isValid()) {\n return format.NO_VALUE;\n }\n\n if (datePattern) {\n return value.format(datePattern);\n }\n\n switch (dateFormat) {\n case 'human': {\n return value.fromNow();\n }\n case 'spent-time': {\n return value.fromNow(true);\n }\n case 'full': {\n return value.format('DD MMM YYYY HH:mm:ss');\n }\n case 'short': {\n return value.format('DD MMM HH:mm');\n }\n case 'time': {\n return value.format('HH:mm:ss');\n }\n case 'time-short': {\n return value.format('HH:mm');\n }\n case 'day': {\n return value.format('DD MMM YYYY');\n }\n case 'month': {\n return value.format('MMMM YYYY');\n }\n default: {\n return value.format('DD.MM.YYYY');\n }\n }\n};\n\nexport const dayTimeDuration = (timeInMs: number) => {\n let left = Math.max(timeInMs, 0);\n\n const days = Math.floor(left / unitsToMs.day);\n left = left % unitsToMs.day;\n\n const hours = Math.floor(left / unitsToMs.hour);\n left = left % unitsToMs.hour;\n\n const minutes = Math.floor(left / unitsToMs.min);\n left = left % unitsToMs.min;\n\n const seconds = Math.floor(left / unitsToMs.sec);\n left = left % unitsToMs.sec;\n\n const milliseconds = Math.floor(left);\n\n return {\n days,\n hours,\n minutes,\n seconds,\n milliseconds,\n };\n};\n\ntype DateChangeParam = [amount: number, unit?: Maybe<ManipulateType>];\n\nexport const changeDate = (\n date: Maybe<RawDateToFormat>,\n ...args: [\n ...DateChangeParam,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ]\n) => {\n let wrappedDate = toLibFormat(date);\n\n for (let i = 0; i < args.length; i += 2) {\n const amount = args[i] as DateChangeParam[0];\n const unit = args[i + 1] as DateChangeParam[1];\n if (unit != null) {\n wrappedDate = wrappedDate.add(amount, unit);\n }\n }\n\n return wrappedDate.toDate();\n};\n\nexport const timeDuration = (timeInMs: number) => {\n const { days, hours, milliseconds, minutes, seconds } =\n dayTimeDuration(timeInMs);\n\n return {\n hours: hours + unitsToMs.day * days,\n milliseconds,\n minutes,\n seconds,\n };\n};\n\nconst durationFormatLabels = {\n days: { compact: 'д', full: ['день', 'дня', 'дней'] },\n hours: { compact: 'ч', full: ['час', 'часа', 'часов'] },\n minutes: { compact: 'мин', full: ['минута', 'минуты', 'минут'] },\n seconds: { compact: 'сек', full: ['секунда', 'секунды', 'секунд'] },\n} as const;\n\nexport function getFormatDuration(\n dateA: Date,\n dateB: Date,\n compact?: boolean,\n): string;\nexport function getFormatDuration(ms: number, compact?: boolean): string;\n\nexport function getFormatDuration(...args: any[]): string {\n let compact = false;\n let diff = 0;\n\n if (args[0] instanceof Date) {\n const startedDate = dayjs(args[0]);\n const endedDate = dayjs(args[1]);\n\n diff = endedDate.diff(startedDate, 'ms');\n compact = args[2] === true;\n } else {\n diff = args[0];\n compact = args[1] === true;\n }\n\n const { days, hours, minutes, seconds } = dayTimeDuration(diff);\n\n const formattedParts: string[] = [];\n\n if (days) {\n if (compact) {\n formattedParts.push(`${days} ${durationFormatLabels.days.compact}`);\n } else {\n formattedParts.push(\n `${days} ${declension(days, durationFormatLabels.days.full)}`,\n );\n }\n }\n\n if (hours) {\n if (compact) {\n formattedParts.push(`${hours} ${durationFormatLabels.hours.compact}`);\n } else {\n formattedParts.push(\n `${hours} ${declension(hours, durationFormatLabels.hours.full)}`,\n );\n }\n }\n\n if (minutes) {\n if (compact) {\n formattedParts.push(`${minutes} ${durationFormatLabels.minutes.compact}`);\n } else {\n formattedParts.push(\n `${minutes} ${declension(minutes, durationFormatLabels.minutes.full)}`,\n );\n }\n }\n\n if (seconds) {\n if (compact) {\n formattedParts.push(`${seconds} ${durationFormatLabels.seconds.compact}`);\n } else {\n formattedParts.push(\n `${seconds} ${declension(seconds, durationFormatLabels.seconds.full)}`,\n );\n }\n }\n\n return formattedParts.join(' ');\n}\n"],"names":["module","this","t","s","n","l","i","e","r","y","o","u","d","a","h","require$$0","_","typeGuard","format","unitsToMs","declension"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
1
|
+
{"version":3,"file":"date-time.cjs","sources":["../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/duration.js","../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/relativeTime.js","../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/locale/ru.js","../src/date-time.ts"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","!function(_,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],t):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_ru=t(_.dayjs)}(this,(function(_){\"use strict\";function t(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var e=t(_),n=\"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря\".split(\"_\"),s=\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\"),r=\"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.\".split(\"_\"),o=\"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.\".split(\"_\"),i=/D[oD]?(\\[[^[\\]]*\\]|\\s)+MMMM?/;function d(_,t,e){var n,s;return\"m\"===e?t?\"минута\":\"минуту\":_+\" \"+(n=+_,s={mm:t?\"минута_минуты_минут\":\"минуту_минуты_минут\",hh:\"час_часа_часов\",dd:\"день_дня_дней\",MM:\"месяц_месяца_месяцев\",yy:\"год_года_лет\"}[e].split(\"_\"),n%10==1&&n%100!=11?s[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?s[1]:s[2])}var u=function(_,t){return i.test(t)?n[_.month()]:s[_.month()]};u.s=s,u.f=n;var a=function(_,t){return i.test(t)?r[_.month()]:o[_.month()]};a.s=o,a.f=r;var m={name:\"ru\",weekdays:\"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота\".split(\"_\"),weekdaysShort:\"вск_пнд_втр_срд_чтв_птн_сбт\".split(\"_\"),weekdaysMin:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),months:u,monthsShort:a,weekStart:1,yearStart:4,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., H:mm\",LLLL:\"dddd, D MMMM YYYY г., H:mm\"},relativeTime:{future:\"через %s\",past:\"%s назад\",s:\"несколько секунд\",m:d,mm:d,h:\"час\",hh:d,d:\"день\",dd:d,M:\"месяц\",MM:d,y:\"год\",yy:d},ordinal:function(_){return _},meridiem:function(_){return _<4?\"ночи\":_<12?\"утра\":_<17?\"дня\":\"вечера\"}};return e.default.locale(m,null,!0),m}));","import dayjs, { type Dayjs, type ManipulateType } from 'dayjs';\nimport duration from 'dayjs/plugin/duration.js';\nimport relativeTime from 'dayjs/plugin/relativeTime.js';\nimport { format } from 'yummies/format';\nimport { unitsToMs } from 'yummies/ms';\nimport { declension } from 'yummies/text';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/types';\n\nimport 'dayjs/locale/ru.js';\n\ndayjs.extend(relativeTime);\ndayjs.extend(duration);\ndayjs.locale('ru');\n\nconst toLibFormat = (value: Maybe<RawDateToFormat>): Dayjs | null => {\n let result: Maybe<Dayjs> = null;\n if (dayjs.isDayjs(value)) {\n result = value;\n } else if (value != null) {\n result = dayjs(value);\n }\n\n if (!result?.isValid()) {\n return null;\n }\n\n return result;\n};\n\nexport type RawDateToFormat = Date | string | number | Dayjs;\n\nexport const formatDate = (\n value: Maybe<RawDateToFormat>,\n settings?: Maybe<{\n format?:\n | 'human'\n | 'full'\n | 'short'\n | 'day'\n | 'day-only'\n | 'date'\n | 'month'\n | 'spent-time'\n | 'time'\n | 'time-short';\n pattern?: string;\n asTime?: boolean;\n }>,\n) => {\n const dateFormat = settings?.format;\n const datePattern = settings?.pattern;\n const asTime = settings?.asTime;\n\n let libDate: duration.Duration | dayjs.Dayjs | null = null;\n\n if (asTime && typeGuard.isNumber(value)) {\n libDate = dayjs.duration(value);\n } else {\n libDate = toLibFormat(value);\n }\n\n if (!libDate) {\n return format.NO_VALUE;\n }\n\n if (datePattern) {\n return libDate.format(datePattern);\n }\n\n if (dateFormat === 'human' || dateFormat === 'spent-time') {\n if ('fromNow' in libDate) {\n return libDate.fromNow(dateFormat === 'spent-time');\n } else {\n return format.NO_VALUE;\n }\n }\n\n switch (dateFormat) {\n case 'full': {\n return libDate.format('DD MMM YYYY HH:mm:ss');\n }\n case 'short': {\n return libDate.format('DD MMM HH:mm');\n }\n case 'time': {\n return libDate.format('HH:mm:ss');\n }\n case 'time-short': {\n return libDate.format('HH:mm');\n }\n case 'day': {\n return libDate.format('DD MMM YYYY');\n }\n case 'month': {\n return libDate.format('MMMM YYYY');\n }\n default: {\n return libDate.format('DD.MM.YYYY');\n }\n }\n};\n\nexport const dayTimeDuration = (timeInMs: number) => {\n let left = Math.max(timeInMs, 0);\n\n const days = Math.floor(left / unitsToMs.day);\n left = left % unitsToMs.day;\n\n const hours = Math.floor(left / unitsToMs.hour);\n left = left % unitsToMs.hour;\n\n const minutes = Math.floor(left / unitsToMs.min);\n left = left % unitsToMs.min;\n\n const seconds = Math.floor(left / unitsToMs.sec);\n left = left % unitsToMs.sec;\n\n const milliseconds = Math.floor(left);\n\n return {\n days,\n hours,\n minutes,\n seconds,\n milliseconds,\n };\n};\n\ntype DateChangeParam = [amount: number, unit?: Maybe<ManipulateType>];\n\nexport const changeDate = (\n date: Maybe<RawDateToFormat>,\n ...args: [\n ...DateChangeParam,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ]\n) => {\n let wrappedDate = toLibFormat(date)!;\n\n for (let i = 0; i < args.length; i += 2) {\n const amount = args[i] as DateChangeParam[0];\n const unit = args[i + 1] as DateChangeParam[1];\n if (unit != null) {\n wrappedDate = wrappedDate.add(amount, unit);\n }\n }\n\n return wrappedDate.toDate();\n};\n\nexport const timeDuration = (timeInMs: number) => {\n const { days, hours, milliseconds, minutes, seconds } =\n dayTimeDuration(timeInMs);\n\n return {\n hours: hours + unitsToMs.day * days,\n milliseconds,\n minutes,\n seconds,\n };\n};\n\nconst durationFormatLabels = {\n days: { compact: 'д', full: ['день', 'дня', 'дней'] },\n hours: { compact: 'ч', full: ['час', 'часа', 'часов'] },\n minutes: { compact: 'мин', full: ['минута', 'минуты', 'минут'] },\n seconds: { compact: 'сек', full: ['секунда', 'секунды', 'секунд'] },\n} as const;\n\nexport function getFormatDuration(\n dateA: Date,\n dateB: Date,\n compact?: boolean,\n): string;\nexport function getFormatDuration(ms: number, compact?: boolean): string;\n\nexport function getFormatDuration(...args: any[]): string {\n let compact = false;\n let diff = 0;\n\n if (args[0] instanceof Date) {\n const startedDate = dayjs(args[0]);\n const endedDate = dayjs(args[1]);\n\n diff = endedDate.diff(startedDate, 'ms');\n compact = args[2] === true;\n } else {\n diff = args[0];\n compact = args[1] === true;\n }\n\n const { days, hours, minutes, seconds } = dayTimeDuration(diff);\n\n const formattedParts: string[] = [];\n\n if (days) {\n if (compact) {\n formattedParts.push(`${days} ${durationFormatLabels.days.compact}`);\n } else {\n formattedParts.push(\n `${days} ${declension(days, durationFormatLabels.days.full)}`,\n );\n }\n }\n\n if (hours) {\n if (compact) {\n formattedParts.push(`${hours} ${durationFormatLabels.hours.compact}`);\n } else {\n formattedParts.push(\n `${hours} ${declension(hours, durationFormatLabels.hours.full)}`,\n );\n }\n }\n\n if (minutes) {\n if (compact) {\n formattedParts.push(`${minutes} ${durationFormatLabels.minutes.compact}`);\n } else {\n formattedParts.push(\n `${minutes} ${declension(minutes, durationFormatLabels.minutes.full)}`,\n );\n }\n }\n\n if (seconds) {\n if (compact) {\n formattedParts.push(`${seconds} ${durationFormatLabels.seconds.compact}`);\n } else {\n formattedParts.push(\n `${seconds} ${declension(seconds, durationFormatLabels.seconds.full)}`,\n );\n }\n }\n\n return formattedParts.join(' ');\n}\n"],"names":["module","this","t","s","n","l","i","e","r","y","o","u","d","a","h","require$$0","_","typeGuard","format","unitsToMs","declension"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
package/date-time.js
CHANGED
|
@@ -236,56 +236,62 @@ requireRu();
|
|
|
236
236
|
dayjs.extend(relativeTime);
|
|
237
237
|
dayjs.extend(duration);
|
|
238
238
|
dayjs.locale("ru");
|
|
239
|
-
const toLibFormat = (value
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
return dayjs(value);
|
|
239
|
+
const toLibFormat = (value) => {
|
|
240
|
+
let result = null;
|
|
241
|
+
if (dayjs.isDayjs(value)) {
|
|
242
|
+
result = value;
|
|
243
|
+
} else if (value != null) {
|
|
244
|
+
result = dayjs(value);
|
|
245
|
+
}
|
|
246
|
+
if (!result?.isValid()) {
|
|
247
|
+
return null;
|
|
249
248
|
}
|
|
249
|
+
return result;
|
|
250
250
|
};
|
|
251
251
|
const formatDate = (value, settings) => {
|
|
252
252
|
const dateFormat = settings?.format;
|
|
253
253
|
const datePattern = settings?.pattern;
|
|
254
254
|
const asTime = settings?.asTime;
|
|
255
|
-
|
|
256
|
-
if (typeGuard.
|
|
255
|
+
let libDate = null;
|
|
256
|
+
if (asTime && typeGuard.isNumber(value)) {
|
|
257
|
+
libDate = dayjs.duration(value);
|
|
258
|
+
} else {
|
|
259
|
+
libDate = toLibFormat(value);
|
|
260
|
+
}
|
|
261
|
+
if (!libDate) {
|
|
257
262
|
return format.NO_VALUE;
|
|
258
263
|
}
|
|
259
264
|
if (datePattern) {
|
|
260
|
-
return
|
|
265
|
+
return libDate.format(datePattern);
|
|
261
266
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
return
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
return value.fromNow(true);
|
|
267
|
+
if (dateFormat === "human" || dateFormat === "spent-time") {
|
|
268
|
+
if ("fromNow" in libDate) {
|
|
269
|
+
return libDate.fromNow(dateFormat === "spent-time");
|
|
270
|
+
} else {
|
|
271
|
+
return format.NO_VALUE;
|
|
268
272
|
}
|
|
273
|
+
}
|
|
274
|
+
switch (dateFormat) {
|
|
269
275
|
case "full": {
|
|
270
|
-
return
|
|
276
|
+
return libDate.format("DD MMM YYYY HH:mm:ss");
|
|
271
277
|
}
|
|
272
278
|
case "short": {
|
|
273
|
-
return
|
|
279
|
+
return libDate.format("DD MMM HH:mm");
|
|
274
280
|
}
|
|
275
281
|
case "time": {
|
|
276
|
-
return
|
|
282
|
+
return libDate.format("HH:mm:ss");
|
|
277
283
|
}
|
|
278
284
|
case "time-short": {
|
|
279
|
-
return
|
|
285
|
+
return libDate.format("HH:mm");
|
|
280
286
|
}
|
|
281
287
|
case "day": {
|
|
282
|
-
return
|
|
288
|
+
return libDate.format("DD MMM YYYY");
|
|
283
289
|
}
|
|
284
290
|
case "month": {
|
|
285
|
-
return
|
|
291
|
+
return libDate.format("MMMM YYYY");
|
|
286
292
|
}
|
|
287
293
|
default: {
|
|
288
|
-
return
|
|
294
|
+
return libDate.format("DD.MM.YYYY");
|
|
289
295
|
}
|
|
290
296
|
}
|
|
291
297
|
};
|
package/date-time.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-time.js","sources":["../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/duration.js","../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/relativeTime.js","../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/locale/ru.js","../src/date-time.ts"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","!function(_,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],t):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_ru=t(_.dayjs)}(this,(function(_){\"use strict\";function t(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var e=t(_),n=\"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря\".split(\"_\"),s=\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\"),r=\"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.\".split(\"_\"),o=\"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.\".split(\"_\"),i=/D[oD]?(\\[[^[\\]]*\\]|\\s)+MMMM?/;function d(_,t,e){var n,s;return\"m\"===e?t?\"минута\":\"минуту\":_+\" \"+(n=+_,s={mm:t?\"минута_минуты_минут\":\"минуту_минуты_минут\",hh:\"час_часа_часов\",dd:\"день_дня_дней\",MM:\"месяц_месяца_месяцев\",yy:\"год_года_лет\"}[e].split(\"_\"),n%10==1&&n%100!=11?s[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?s[1]:s[2])}var u=function(_,t){return i.test(t)?n[_.month()]:s[_.month()]};u.s=s,u.f=n;var a=function(_,t){return i.test(t)?r[_.month()]:o[_.month()]};a.s=o,a.f=r;var m={name:\"ru\",weekdays:\"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота\".split(\"_\"),weekdaysShort:\"вск_пнд_втр_срд_чтв_птн_сбт\".split(\"_\"),weekdaysMin:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),months:u,monthsShort:a,weekStart:1,yearStart:4,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., H:mm\",LLLL:\"dddd, D MMMM YYYY г., H:mm\"},relativeTime:{future:\"через %s\",past:\"%s назад\",s:\"несколько секунд\",m:d,mm:d,h:\"час\",hh:d,d:\"день\",dd:d,M:\"месяц\",MM:d,y:\"год\",yy:d},ordinal:function(_){return _},meridiem:function(_){return _<4?\"ночи\":_<12?\"утра\":_<17?\"дня\":\"вечера\"}};return e.default.locale(m,null,!0),m}));","import dayjs, { type Dayjs, type ManipulateType } from 'dayjs';\nimport duration from 'dayjs/plugin/duration.js';\nimport relativeTime from 'dayjs/plugin/relativeTime.js';\nimport { format } from 'yummies/format';\nimport { unitsToMs } from 'yummies/ms';\nimport { declension } from 'yummies/text';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/types';\n\nimport 'dayjs/locale/ru.js';\n\ndayjs.extend(relativeTime);\ndayjs.extend(duration);\ndayjs.locale('ru');\n\nconst toLibFormat = (\n value: Maybe<RawDateToFormat>,\n asTime?: boolean,\n): Dayjs => {\n if (typeGuard.isNumber(value)) {\n if (asTime) {\n return dayjs.duration(value) as unknown as Dayjs;\n }\n return dayjs(value);\n } else if (dayjs.isDayjs(value)) {\n return value;\n } else {\n return dayjs(value);\n }\n};\n\nexport type RawDateToFormat = Date | string | number | Dayjs;\n\nexport const formatDate = (\n value: Maybe<RawDateToFormat>,\n settings?: Maybe<{\n format?:\n | 'human'\n | 'full'\n | 'short'\n | 'day'\n | 'day-only'\n | 'date'\n | 'month'\n | 'spent-time'\n | 'time'\n | 'time-short';\n pattern?: string;\n asTime?: boolean;\n }>,\n) => {\n const dateFormat = settings?.format;\n const datePattern = settings?.pattern;\n const asTime = settings?.asTime;\n\n value = toLibFormat(value, asTime);\n\n if (typeGuard.isUndefined(value) || !value.isValid()) {\n return format.NO_VALUE;\n }\n\n if (datePattern) {\n return value.format(datePattern);\n }\n\n switch (dateFormat) {\n case 'human': {\n return value.fromNow();\n }\n case 'spent-time': {\n return value.fromNow(true);\n }\n case 'full': {\n return value.format('DD MMM YYYY HH:mm:ss');\n }\n case 'short': {\n return value.format('DD MMM HH:mm');\n }\n case 'time': {\n return value.format('HH:mm:ss');\n }\n case 'time-short': {\n return value.format('HH:mm');\n }\n case 'day': {\n return value.format('DD MMM YYYY');\n }\n case 'month': {\n return value.format('MMMM YYYY');\n }\n default: {\n return value.format('DD.MM.YYYY');\n }\n }\n};\n\nexport const dayTimeDuration = (timeInMs: number) => {\n let left = Math.max(timeInMs, 0);\n\n const days = Math.floor(left / unitsToMs.day);\n left = left % unitsToMs.day;\n\n const hours = Math.floor(left / unitsToMs.hour);\n left = left % unitsToMs.hour;\n\n const minutes = Math.floor(left / unitsToMs.min);\n left = left % unitsToMs.min;\n\n const seconds = Math.floor(left / unitsToMs.sec);\n left = left % unitsToMs.sec;\n\n const milliseconds = Math.floor(left);\n\n return {\n days,\n hours,\n minutes,\n seconds,\n milliseconds,\n };\n};\n\ntype DateChangeParam = [amount: number, unit?: Maybe<ManipulateType>];\n\nexport const changeDate = (\n date: Maybe<RawDateToFormat>,\n ...args: [\n ...DateChangeParam,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ]\n) => {\n let wrappedDate = toLibFormat(date);\n\n for (let i = 0; i < args.length; i += 2) {\n const amount = args[i] as DateChangeParam[0];\n const unit = args[i + 1] as DateChangeParam[1];\n if (unit != null) {\n wrappedDate = wrappedDate.add(amount, unit);\n }\n }\n\n return wrappedDate.toDate();\n};\n\nexport const timeDuration = (timeInMs: number) => {\n const { days, hours, milliseconds, minutes, seconds } =\n dayTimeDuration(timeInMs);\n\n return {\n hours: hours + unitsToMs.day * days,\n milliseconds,\n minutes,\n seconds,\n };\n};\n\nconst durationFormatLabels = {\n days: { compact: 'д', full: ['день', 'дня', 'дней'] },\n hours: { compact: 'ч', full: ['час', 'часа', 'часов'] },\n minutes: { compact: 'мин', full: ['минута', 'минуты', 'минут'] },\n seconds: { compact: 'сек', full: ['секунда', 'секунды', 'секунд'] },\n} as const;\n\nexport function getFormatDuration(\n dateA: Date,\n dateB: Date,\n compact?: boolean,\n): string;\nexport function getFormatDuration(ms: number, compact?: boolean): string;\n\nexport function getFormatDuration(...args: any[]): string {\n let compact = false;\n let diff = 0;\n\n if (args[0] instanceof Date) {\n const startedDate = dayjs(args[0]);\n const endedDate = dayjs(args[1]);\n\n diff = endedDate.diff(startedDate, 'ms');\n compact = args[2] === true;\n } else {\n diff = args[0];\n compact = args[1] === true;\n }\n\n const { days, hours, minutes, seconds } = dayTimeDuration(diff);\n\n const formattedParts: string[] = [];\n\n if (days) {\n if (compact) {\n formattedParts.push(`${days} ${durationFormatLabels.days.compact}`);\n } else {\n formattedParts.push(\n `${days} ${declension(days, durationFormatLabels.days.full)}`,\n );\n }\n }\n\n if (hours) {\n if (compact) {\n formattedParts.push(`${hours} ${durationFormatLabels.hours.compact}`);\n } else {\n formattedParts.push(\n `${hours} ${declension(hours, durationFormatLabels.hours.full)}`,\n );\n }\n }\n\n if (minutes) {\n if (compact) {\n formattedParts.push(`${minutes} ${durationFormatLabels.minutes.compact}`);\n } else {\n formattedParts.push(\n `${minutes} ${declension(minutes, durationFormatLabels.minutes.full)}`,\n );\n }\n }\n\n if (seconds) {\n if (compact) {\n formattedParts.push(`${seconds} ${durationFormatLabels.seconds.compact}`);\n } else {\n formattedParts.push(\n `${seconds} ${declension(seconds, durationFormatLabels.seconds.full)}`,\n );\n }\n }\n\n return formattedParts.join(' ');\n}\n"],"names":["this","t","s","n","l","i","e","r","y","o","u","d","a","h","require$$0","_"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
1
|
+
{"version":3,"file":"date-time.js","sources":["../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/duration.js","../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/relativeTime.js","../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/locale/ru.js","../src/date-time.ts"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","!function(_,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],t):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_ru=t(_.dayjs)}(this,(function(_){\"use strict\";function t(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var e=t(_),n=\"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря\".split(\"_\"),s=\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\"),r=\"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.\".split(\"_\"),o=\"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.\".split(\"_\"),i=/D[oD]?(\\[[^[\\]]*\\]|\\s)+MMMM?/;function d(_,t,e){var n,s;return\"m\"===e?t?\"минута\":\"минуту\":_+\" \"+(n=+_,s={mm:t?\"минута_минуты_минут\":\"минуту_минуты_минут\",hh:\"час_часа_часов\",dd:\"день_дня_дней\",MM:\"месяц_месяца_месяцев\",yy:\"год_года_лет\"}[e].split(\"_\"),n%10==1&&n%100!=11?s[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?s[1]:s[2])}var u=function(_,t){return i.test(t)?n[_.month()]:s[_.month()]};u.s=s,u.f=n;var a=function(_,t){return i.test(t)?r[_.month()]:o[_.month()]};a.s=o,a.f=r;var m={name:\"ru\",weekdays:\"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота\".split(\"_\"),weekdaysShort:\"вск_пнд_втр_срд_чтв_птн_сбт\".split(\"_\"),weekdaysMin:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),months:u,monthsShort:a,weekStart:1,yearStart:4,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., H:mm\",LLLL:\"dddd, D MMMM YYYY г., H:mm\"},relativeTime:{future:\"через %s\",past:\"%s назад\",s:\"несколько секунд\",m:d,mm:d,h:\"час\",hh:d,d:\"день\",dd:d,M:\"месяц\",MM:d,y:\"год\",yy:d},ordinal:function(_){return _},meridiem:function(_){return _<4?\"ночи\":_<12?\"утра\":_<17?\"дня\":\"вечера\"}};return e.default.locale(m,null,!0),m}));","import dayjs, { type Dayjs, type ManipulateType } from 'dayjs';\nimport duration from 'dayjs/plugin/duration.js';\nimport relativeTime from 'dayjs/plugin/relativeTime.js';\nimport { format } from 'yummies/format';\nimport { unitsToMs } from 'yummies/ms';\nimport { declension } from 'yummies/text';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/types';\n\nimport 'dayjs/locale/ru.js';\n\ndayjs.extend(relativeTime);\ndayjs.extend(duration);\ndayjs.locale('ru');\n\nconst toLibFormat = (value: Maybe<RawDateToFormat>): Dayjs | null => {\n let result: Maybe<Dayjs> = null;\n if (dayjs.isDayjs(value)) {\n result = value;\n } else if (value != null) {\n result = dayjs(value);\n }\n\n if (!result?.isValid()) {\n return null;\n }\n\n return result;\n};\n\nexport type RawDateToFormat = Date | string | number | Dayjs;\n\nexport const formatDate = (\n value: Maybe<RawDateToFormat>,\n settings?: Maybe<{\n format?:\n | 'human'\n | 'full'\n | 'short'\n | 'day'\n | 'day-only'\n | 'date'\n | 'month'\n | 'spent-time'\n | 'time'\n | 'time-short';\n pattern?: string;\n asTime?: boolean;\n }>,\n) => {\n const dateFormat = settings?.format;\n const datePattern = settings?.pattern;\n const asTime = settings?.asTime;\n\n let libDate: duration.Duration | dayjs.Dayjs | null = null;\n\n if (asTime && typeGuard.isNumber(value)) {\n libDate = dayjs.duration(value);\n } else {\n libDate = toLibFormat(value);\n }\n\n if (!libDate) {\n return format.NO_VALUE;\n }\n\n if (datePattern) {\n return libDate.format(datePattern);\n }\n\n if (dateFormat === 'human' || dateFormat === 'spent-time') {\n if ('fromNow' in libDate) {\n return libDate.fromNow(dateFormat === 'spent-time');\n } else {\n return format.NO_VALUE;\n }\n }\n\n switch (dateFormat) {\n case 'full': {\n return libDate.format('DD MMM YYYY HH:mm:ss');\n }\n case 'short': {\n return libDate.format('DD MMM HH:mm');\n }\n case 'time': {\n return libDate.format('HH:mm:ss');\n }\n case 'time-short': {\n return libDate.format('HH:mm');\n }\n case 'day': {\n return libDate.format('DD MMM YYYY');\n }\n case 'month': {\n return libDate.format('MMMM YYYY');\n }\n default: {\n return libDate.format('DD.MM.YYYY');\n }\n }\n};\n\nexport const dayTimeDuration = (timeInMs: number) => {\n let left = Math.max(timeInMs, 0);\n\n const days = Math.floor(left / unitsToMs.day);\n left = left % unitsToMs.day;\n\n const hours = Math.floor(left / unitsToMs.hour);\n left = left % unitsToMs.hour;\n\n const minutes = Math.floor(left / unitsToMs.min);\n left = left % unitsToMs.min;\n\n const seconds = Math.floor(left / unitsToMs.sec);\n left = left % unitsToMs.sec;\n\n const milliseconds = Math.floor(left);\n\n return {\n days,\n hours,\n minutes,\n seconds,\n milliseconds,\n };\n};\n\ntype DateChangeParam = [amount: number, unit?: Maybe<ManipulateType>];\n\nexport const changeDate = (\n date: Maybe<RawDateToFormat>,\n ...args: [\n ...DateChangeParam,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ]\n) => {\n let wrappedDate = toLibFormat(date)!;\n\n for (let i = 0; i < args.length; i += 2) {\n const amount = args[i] as DateChangeParam[0];\n const unit = args[i + 1] as DateChangeParam[1];\n if (unit != null) {\n wrappedDate = wrappedDate.add(amount, unit);\n }\n }\n\n return wrappedDate.toDate();\n};\n\nexport const timeDuration = (timeInMs: number) => {\n const { days, hours, milliseconds, minutes, seconds } =\n dayTimeDuration(timeInMs);\n\n return {\n hours: hours + unitsToMs.day * days,\n milliseconds,\n minutes,\n seconds,\n };\n};\n\nconst durationFormatLabels = {\n days: { compact: 'д', full: ['день', 'дня', 'дней'] },\n hours: { compact: 'ч', full: ['час', 'часа', 'часов'] },\n minutes: { compact: 'мин', full: ['минута', 'минуты', 'минут'] },\n seconds: { compact: 'сек', full: ['секунда', 'секунды', 'секунд'] },\n} as const;\n\nexport function getFormatDuration(\n dateA: Date,\n dateB: Date,\n compact?: boolean,\n): string;\nexport function getFormatDuration(ms: number, compact?: boolean): string;\n\nexport function getFormatDuration(...args: any[]): string {\n let compact = false;\n let diff = 0;\n\n if (args[0] instanceof Date) {\n const startedDate = dayjs(args[0]);\n const endedDate = dayjs(args[1]);\n\n diff = endedDate.diff(startedDate, 'ms');\n compact = args[2] === true;\n } else {\n diff = args[0];\n compact = args[1] === true;\n }\n\n const { days, hours, minutes, seconds } = dayTimeDuration(diff);\n\n const formattedParts: string[] = [];\n\n if (days) {\n if (compact) {\n formattedParts.push(`${days} ${durationFormatLabels.days.compact}`);\n } else {\n formattedParts.push(\n `${days} ${declension(days, durationFormatLabels.days.full)}`,\n );\n }\n }\n\n if (hours) {\n if (compact) {\n formattedParts.push(`${hours} ${durationFormatLabels.hours.compact}`);\n } else {\n formattedParts.push(\n `${hours} ${declension(hours, durationFormatLabels.hours.full)}`,\n );\n }\n }\n\n if (minutes) {\n if (compact) {\n formattedParts.push(`${minutes} ${durationFormatLabels.minutes.compact}`);\n } else {\n formattedParts.push(\n `${minutes} ${declension(minutes, durationFormatLabels.minutes.full)}`,\n );\n }\n }\n\n if (seconds) {\n if (compact) {\n formattedParts.push(`${seconds} ${durationFormatLabels.seconds.compact}`);\n } else {\n formattedParts.push(\n `${seconds} ${declension(seconds, durationFormatLabels.seconds.full)}`,\n );\n }\n }\n\n return formattedParts.join(' ');\n}\n"],"names":["this","t","s","n","l","i","e","r","y","o","u","d","a","h","require$$0","_"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
package/mobx.cjs
CHANGED
|
@@ -26,7 +26,7 @@ const createEnhancedAtom = (name, onBecomeObservedHandler, onBecomeUnobservedHan
|
|
|
26
26
|
const createRef = (cfg) => {
|
|
27
27
|
let lastValue;
|
|
28
28
|
const comparer = cfg?.comparer ?? mobx.comparer.default;
|
|
29
|
-
const
|
|
29
|
+
const setValue = (value) => {
|
|
30
30
|
const nextValue = value ?? null;
|
|
31
31
|
if (comparer(ref.current, nextValue)) {
|
|
32
32
|
return;
|
|
@@ -50,6 +50,8 @@ const createRef = (cfg) => {
|
|
|
50
50
|
}
|
|
51
51
|
});
|
|
52
52
|
};
|
|
53
|
+
const ref = setValue;
|
|
54
|
+
ref.set = setValue;
|
|
53
55
|
ref.listeners = new Set(cfg?.onChange ? [cfg.onChange] : []);
|
|
54
56
|
if (cfg?.onSet || cfg?.onUnset) {
|
|
55
57
|
ref.listeners.add((value, prevValue) => {
|
package/mobx.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mobx.cjs","sources":["../src/mobx/apply-observable.ts","../src/mobx/create-enhanced-atom.ts","../src/mobx/create-ref.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/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/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 {\n type IEqualsComparer,\n makeObservable,\n comparer as mobxComparer,\n observable,\n runInAction,\n} from 'mobx';\nimport type { AnyObject, Maybe } from 'yummies/types';\n\n/**\n * You can return `false` if you don't want to change the value in this ref\n */\nexport type RefChangeListener<T> = (\n value: T | null,\n prevValue: T | undefined,\n) => void | false;\n\n/**\n * Alternative to React.createRef but works in MobX world.\n * Typically it the should be the same React.LegacyRef (fn style)\n */\nexport interface Ref<T = any, TMeta = AnyObject> {\n /**\n * Setter function\n */\n (value: Maybe<T>): void;\n\n listeners: Set<RefChangeListener<NoInfer<T>>>;\n current: NoInfer<T> | null;\n meta: TMeta;\n}\n\nexport interface CreateRefConfig<T = any, TMeta = AnyObject> {\n onSet?: (node: T, prevValue: T | undefined) => void;\n onUnset?: (lastValue: T | undefined) => void;\n onChange?: RefChangeListener<T>;\n meta?: TMeta;\n initial?: Maybe<T>;\n comparer?: IEqualsComparer<T | null>;\n}\n\n/**\n * Creates ref thing to attach HTMLElements in React and all other\n */\nexport const createRef = <T = any, TMeta = AnyObject>(\n cfg?: CreateRefConfig<T, TMeta>,\n): Ref<T, TMeta> => {\n let lastValue: T | undefined;\n const comparer = cfg?.comparer ?? mobxComparer.default;\n\n const ref = ((value: Maybe<T>) => {\n const nextValue = value ?? null;\n\n if (comparer(ref.current, nextValue)) {\n return;\n }\n\n runInAction(() => {\n const prevLastValue = lastValue;\n lastValue = ref.current ?? undefined;\n ref.current = nextValue;\n\n let isNextValueIgnored = false;\n\n ref.listeners.forEach((listener) => {\n const listenerResult = listener(ref.current, lastValue);\n\n if (listenerResult === false) {\n isNextValueIgnored = true;\n }\n });\n\n if (isNextValueIgnored) {\n lastValue = prevLastValue;\n ref.current = lastValue ?? null;\n } else if (ref.current === null && lastValue !== undefined) {\n lastValue = undefined;\n }\n });\n }) as Ref<T, TMeta>;\n\n ref.listeners = new Set(cfg?.onChange ? [cfg.onChange] : []);\n\n if (cfg?.onSet || cfg?.onUnset) {\n ref.listeners.add((value, prevValue) => {\n if (value) {\n cfg.onSet?.(value, prevValue);\n } else {\n cfg.onUnset?.(prevValue);\n }\n });\n }\n\n ref.current = cfg?.initial ?? null;\n ref.meta = cfg?.meta ?? ({} as TMeta);\n\n makeObservable(ref, {\n current: observable.ref,\n meta: observable,\n });\n\n return ref;\n};\n\nexport const isRef = <T, TMeta = any>(\n value: T | Ref<T, TMeta>,\n): value is Ref<T, TMeta> => {\n return typeof value === 'function' && 'current' in value;\n};\n\nexport const toRef = <T, TMeta = any>(\n value: T | Ref<T, TMeta>,\n cfg?: Omit<CreateRefConfig<T, TMeta>, 'initial'>,\n): Ref<T, TMeta> => {\n return isRef(value) ? value : createRef({ initial: value, ...cfg });\n};\n","import { action, makeObservable, observable } from 'mobx';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { AnyObject } from 'yummies/types';\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/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":["makeObservable","createAtom","mobxComparer","runInAction","observable","action","newData","typeGuard","$mobx","property","onBecomeObserved","onBecomeUnobserved"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mobx.cjs","sources":["../src/mobx/apply-observable.ts","../src/mobx/create-enhanced-atom.ts","../src/mobx/create-ref.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/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/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 {\n type IEqualsComparer,\n makeObservable,\n comparer as mobxComparer,\n observable,\n runInAction,\n} from 'mobx';\nimport type { AnyObject, Maybe } from 'yummies/types';\n\n/**\n * You can return `false` if you don't want to change the value in this ref\n */\nexport type RefChangeListener<T> = (\n value: T | null,\n prevValue: T | undefined,\n) => void | false;\n\n/**\n * Alternative to React.createRef but works in MobX world.\n * Typically it the should be the same React.LegacyRef (fn style)\n */\nexport interface Ref<T = any, TMeta = AnyObject> {\n /**\n * Setter function\n */\n (value: Maybe<T>): void;\n\n set(value: Maybe<T>): void;\n listeners: Set<RefChangeListener<NoInfer<T>>>;\n current: NoInfer<T> | null;\n meta: TMeta;\n}\n\nexport interface CreateRefConfig<T = any, TMeta = AnyObject> {\n onSet?: (node: T, prevValue: T | undefined) => void;\n onUnset?: (lastValue: T | undefined) => void;\n onChange?: RefChangeListener<T>;\n meta?: TMeta;\n initial?: Maybe<T>;\n comparer?: IEqualsComparer<T | null>;\n}\n\n/**\n * Creates ref thing to attach HTMLElements in React and all other\n */\nexport const createRef = <T = any, TMeta = AnyObject>(\n cfg?: CreateRefConfig<T, TMeta>,\n): Ref<T, TMeta> => {\n let lastValue: T | undefined;\n const comparer = cfg?.comparer ?? mobxComparer.default;\n\n const setValue: Ref<T, TMeta>['set'] = (value) => {\n const nextValue = value ?? null;\n\n if (comparer(ref.current, nextValue)) {\n return;\n }\n\n runInAction(() => {\n const prevLastValue = lastValue;\n lastValue = ref.current ?? undefined;\n ref.current = nextValue;\n\n let isNextValueIgnored = false;\n\n ref.listeners.forEach((listener) => {\n const listenerResult = listener(ref.current, lastValue);\n\n if (listenerResult === false) {\n isNextValueIgnored = true;\n }\n });\n\n if (isNextValueIgnored) {\n lastValue = prevLastValue;\n ref.current = lastValue ?? null;\n } else if (ref.current === null && lastValue !== undefined) {\n lastValue = undefined;\n }\n });\n };\n\n const ref = setValue as Ref<T, TMeta>;\n\n ref.set = setValue;\n\n ref.listeners = new Set(cfg?.onChange ? [cfg.onChange] : []);\n\n if (cfg?.onSet || cfg?.onUnset) {\n ref.listeners.add((value, prevValue) => {\n if (value) {\n cfg.onSet?.(value, prevValue);\n } else {\n cfg.onUnset?.(prevValue);\n }\n });\n }\n\n ref.current = cfg?.initial ?? null;\n ref.meta = cfg?.meta ?? ({} as TMeta);\n\n makeObservable(ref, {\n current: observable.ref,\n meta: observable,\n });\n\n return ref;\n};\n\nexport const isRef = <T, TMeta = any>(\n value: T | Ref<T, TMeta>,\n): value is Ref<T, TMeta> => {\n return typeof value === 'function' && 'current' in value;\n};\n\nexport const toRef = <T, TMeta = any>(\n value: T | Ref<T, TMeta>,\n cfg?: Omit<CreateRefConfig<T, TMeta>, 'initial'>,\n): Ref<T, TMeta> => {\n return isRef(value) ? value : createRef({ initial: value, ...cfg });\n};\n","import { action, makeObservable, observable } from 'mobx';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { AnyObject } from 'yummies/types';\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/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":["makeObservable","createAtom","mobxComparer","runInAction","observable","action","newData","typeGuard","$mobx","property","onBecomeObserved","onBecomeUnobserved"],"mappings":"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"}
|
package/mobx.d.ts
CHANGED
package/mobx.js
CHANGED
|
@@ -24,7 +24,7 @@ const createEnhancedAtom = (name, onBecomeObservedHandler, onBecomeUnobservedHan
|
|
|
24
24
|
const createRef = (cfg) => {
|
|
25
25
|
let lastValue;
|
|
26
26
|
const comparer$1 = cfg?.comparer ?? comparer.default;
|
|
27
|
-
const
|
|
27
|
+
const setValue = (value) => {
|
|
28
28
|
const nextValue = value ?? null;
|
|
29
29
|
if (comparer$1(ref.current, nextValue)) {
|
|
30
30
|
return;
|
|
@@ -48,6 +48,8 @@ const createRef = (cfg) => {
|
|
|
48
48
|
}
|
|
49
49
|
});
|
|
50
50
|
};
|
|
51
|
+
const ref = setValue;
|
|
52
|
+
ref.set = setValue;
|
|
51
53
|
ref.listeners = new Set(cfg?.onChange ? [cfg.onChange] : []);
|
|
52
54
|
if (cfg?.onSet || cfg?.onUnset) {
|
|
53
55
|
ref.listeners.add((value, prevValue) => {
|
package/mobx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mobx.js","sources":["../src/mobx/apply-observable.ts","../src/mobx/create-enhanced-atom.ts","../src/mobx/create-ref.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/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/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 {\n type IEqualsComparer,\n makeObservable,\n comparer as mobxComparer,\n observable,\n runInAction,\n} from 'mobx';\nimport type { AnyObject, Maybe } from 'yummies/types';\n\n/**\n * You can return `false` if you don't want to change the value in this ref\n */\nexport type RefChangeListener<T> = (\n value: T | null,\n prevValue: T | undefined,\n) => void | false;\n\n/**\n * Alternative to React.createRef but works in MobX world.\n * Typically it the should be the same React.LegacyRef (fn style)\n */\nexport interface Ref<T = any, TMeta = AnyObject> {\n /**\n * Setter function\n */\n (value: Maybe<T>): void;\n\n listeners: Set<RefChangeListener<NoInfer<T>>>;\n current: NoInfer<T> | null;\n meta: TMeta;\n}\n\nexport interface CreateRefConfig<T = any, TMeta = AnyObject> {\n onSet?: (node: T, prevValue: T | undefined) => void;\n onUnset?: (lastValue: T | undefined) => void;\n onChange?: RefChangeListener<T>;\n meta?: TMeta;\n initial?: Maybe<T>;\n comparer?: IEqualsComparer<T | null>;\n}\n\n/**\n * Creates ref thing to attach HTMLElements in React and all other\n */\nexport const createRef = <T = any, TMeta = AnyObject>(\n cfg?: CreateRefConfig<T, TMeta>,\n): Ref<T, TMeta> => {\n let lastValue: T | undefined;\n const comparer = cfg?.comparer ?? mobxComparer.default;\n\n const ref = ((value: Maybe<T>) => {\n const nextValue = value ?? null;\n\n if (comparer(ref.current, nextValue)) {\n return;\n }\n\n runInAction(() => {\n const prevLastValue = lastValue;\n lastValue = ref.current ?? undefined;\n ref.current = nextValue;\n\n let isNextValueIgnored = false;\n\n ref.listeners.forEach((listener) => {\n const listenerResult = listener(ref.current, lastValue);\n\n if (listenerResult === false) {\n isNextValueIgnored = true;\n }\n });\n\n if (isNextValueIgnored) {\n lastValue = prevLastValue;\n ref.current = lastValue ?? null;\n } else if (ref.current === null && lastValue !== undefined) {\n lastValue = undefined;\n }\n });\n }) as Ref<T, TMeta>;\n\n ref.listeners = new Set(cfg?.onChange ? [cfg.onChange] : []);\n\n if (cfg?.onSet || cfg?.onUnset) {\n ref.listeners.add((value, prevValue) => {\n if (value) {\n cfg.onSet?.(value, prevValue);\n } else {\n cfg.onUnset?.(prevValue);\n }\n });\n }\n\n ref.current = cfg?.initial ?? null;\n ref.meta = cfg?.meta ?? ({} as TMeta);\n\n makeObservable(ref, {\n current: observable.ref,\n meta: observable,\n });\n\n return ref;\n};\n\nexport const isRef = <T, TMeta = any>(\n value: T | Ref<T, TMeta>,\n): value is Ref<T, TMeta> => {\n return typeof value === 'function' && 'current' in value;\n};\n\nexport const toRef = <T, TMeta = any>(\n value: T | Ref<T, TMeta>,\n cfg?: Omit<CreateRefConfig<T, TMeta>, 'initial'>,\n): Ref<T, TMeta> => {\n return isRef(value) ? value : createRef({ initial: value, ...cfg });\n};\n","import { action, makeObservable, observable } from 'mobx';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { AnyObject } from 'yummies/types';\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/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":["comparer","mobxComparer","newData","property"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mobx.js","sources":["../src/mobx/apply-observable.ts","../src/mobx/create-enhanced-atom.ts","../src/mobx/create-ref.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/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/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 {\n type IEqualsComparer,\n makeObservable,\n comparer as mobxComparer,\n observable,\n runInAction,\n} from 'mobx';\nimport type { AnyObject, Maybe } from 'yummies/types';\n\n/**\n * You can return `false` if you don't want to change the value in this ref\n */\nexport type RefChangeListener<T> = (\n value: T | null,\n prevValue: T | undefined,\n) => void | false;\n\n/**\n * Alternative to React.createRef but works in MobX world.\n * Typically it the should be the same React.LegacyRef (fn style)\n */\nexport interface Ref<T = any, TMeta = AnyObject> {\n /**\n * Setter function\n */\n (value: Maybe<T>): void;\n\n set(value: Maybe<T>): void;\n listeners: Set<RefChangeListener<NoInfer<T>>>;\n current: NoInfer<T> | null;\n meta: TMeta;\n}\n\nexport interface CreateRefConfig<T = any, TMeta = AnyObject> {\n onSet?: (node: T, prevValue: T | undefined) => void;\n onUnset?: (lastValue: T | undefined) => void;\n onChange?: RefChangeListener<T>;\n meta?: TMeta;\n initial?: Maybe<T>;\n comparer?: IEqualsComparer<T | null>;\n}\n\n/**\n * Creates ref thing to attach HTMLElements in React and all other\n */\nexport const createRef = <T = any, TMeta = AnyObject>(\n cfg?: CreateRefConfig<T, TMeta>,\n): Ref<T, TMeta> => {\n let lastValue: T | undefined;\n const comparer = cfg?.comparer ?? mobxComparer.default;\n\n const setValue: Ref<T, TMeta>['set'] = (value) => {\n const nextValue = value ?? null;\n\n if (comparer(ref.current, nextValue)) {\n return;\n }\n\n runInAction(() => {\n const prevLastValue = lastValue;\n lastValue = ref.current ?? undefined;\n ref.current = nextValue;\n\n let isNextValueIgnored = false;\n\n ref.listeners.forEach((listener) => {\n const listenerResult = listener(ref.current, lastValue);\n\n if (listenerResult === false) {\n isNextValueIgnored = true;\n }\n });\n\n if (isNextValueIgnored) {\n lastValue = prevLastValue;\n ref.current = lastValue ?? null;\n } else if (ref.current === null && lastValue !== undefined) {\n lastValue = undefined;\n }\n });\n };\n\n const ref = setValue as Ref<T, TMeta>;\n\n ref.set = setValue;\n\n ref.listeners = new Set(cfg?.onChange ? [cfg.onChange] : []);\n\n if (cfg?.onSet || cfg?.onUnset) {\n ref.listeners.add((value, prevValue) => {\n if (value) {\n cfg.onSet?.(value, prevValue);\n } else {\n cfg.onUnset?.(prevValue);\n }\n });\n }\n\n ref.current = cfg?.initial ?? null;\n ref.meta = cfg?.meta ?? ({} as TMeta);\n\n makeObservable(ref, {\n current: observable.ref,\n meta: observable,\n });\n\n return ref;\n};\n\nexport const isRef = <T, TMeta = any>(\n value: T | Ref<T, TMeta>,\n): value is Ref<T, TMeta> => {\n return typeof value === 'function' && 'current' in value;\n};\n\nexport const toRef = <T, TMeta = any>(\n value: T | Ref<T, TMeta>,\n cfg?: Omit<CreateRefConfig<T, TMeta>, 'initial'>,\n): Ref<T, TMeta> => {\n return isRef(value) ? value : createRef({ initial: value, ...cfg });\n};\n","import { action, makeObservable, observable } from 'mobx';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { AnyObject } from 'yummies/types';\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/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":["comparer","mobxComparer","newData","property"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yummies",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.7.1",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"javascript",
|
|
6
6
|
"typescript",
|
|
@@ -190,6 +190,12 @@
|
|
|
190
190
|
"require": "./sound.cjs",
|
|
191
191
|
"default": "./sound.js"
|
|
192
192
|
},
|
|
193
|
+
"./storage": {
|
|
194
|
+
"types": "./storage.d.ts",
|
|
195
|
+
"import": "./storage.js",
|
|
196
|
+
"require": "./storage.cjs",
|
|
197
|
+
"default": "./storage.js"
|
|
198
|
+
},
|
|
193
199
|
"./text": {
|
|
194
200
|
"types": "./text.d.ts",
|
|
195
201
|
"import": "./text.js",
|
package/storage.cjs
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const storages = {
|
|
4
|
+
session: sessionStorage,
|
|
5
|
+
local: localStorage
|
|
6
|
+
};
|
|
7
|
+
const createStorageKey = (prefix, key, namespace) => `${prefix}${namespace ? `/${namespace}` : ""}/${key}`;
|
|
8
|
+
const parseStorageValue = (value) => {
|
|
9
|
+
if (typeof value !== "string") {
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
try {
|
|
13
|
+
const parsed = JSON.parse(value);
|
|
14
|
+
return parsed;
|
|
15
|
+
} catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const formatValueToStorage = (value) => {
|
|
20
|
+
return JSON.stringify(value);
|
|
21
|
+
};
|
|
22
|
+
function createStorage(storageConfig) {
|
|
23
|
+
return {
|
|
24
|
+
set: (cfg) => {
|
|
25
|
+
const config = cfg;
|
|
26
|
+
const storageType = config.type ?? storageConfig.type;
|
|
27
|
+
const storagePrefix = config.prefix ?? storageConfig.prefix;
|
|
28
|
+
const storage = storages[storageType];
|
|
29
|
+
storage.setItem(
|
|
30
|
+
createStorageKey(storagePrefix, config.key, config.namespace),
|
|
31
|
+
formatValueToStorage(config.value)
|
|
32
|
+
);
|
|
33
|
+
},
|
|
34
|
+
get: (cfg) => {
|
|
35
|
+
const config = cfg;
|
|
36
|
+
const storageType = config.type ?? storageConfig.type;
|
|
37
|
+
const storagePrefix = config.prefix ?? storageConfig.prefix;
|
|
38
|
+
const storage = storages[storageType];
|
|
39
|
+
return parseStorageValue(
|
|
40
|
+
storage.getItem(
|
|
41
|
+
createStorageKey(storagePrefix, config.key, config.namespace)
|
|
42
|
+
)
|
|
43
|
+
) ?? config.fallback ?? null;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
exports.createStorage = createStorage;
|
|
48
|
+
exports.createStorageKey = createStorageKey;
|
|
49
|
+
//# sourceMappingURL=storage.cjs.map
|
package/storage.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.cjs","sources":["../src/storage.ts"],"sourcesContent":["export type StorageType = 'session' | 'local';\n\nconst storages: Record<StorageType, Storage> = {\n session: sessionStorage,\n local: localStorage,\n};\n\nexport const createStorageKey = (\n prefix: string,\n key: string,\n namespace?: string,\n) => `${prefix}${namespace ? `/${namespace}` : ''}/${key}`;\n\nconst parseStorageValue = <V>(value: unknown): V | null => {\n if (typeof value !== 'string') {\n return value as V;\n }\n\n try {\n const parsed = JSON.parse(value);\n return parsed;\n } catch {\n return null;\n }\n};\n\nconst formatValueToStorage = (value: unknown): string => {\n return JSON.stringify(value);\n};\n\nexport interface SetToStorageConfig<V>\n extends Omit<GetFromStorageConfig<V>, 'fallback'> {\n value: V;\n}\n\nexport interface GetFromStorageConfig<V> {\n /**\n * Ключ по которому можно получить значение из хранилища (имя ключа не полное, оно дополняется неймпспейсом проекта)\n */\n key: string;\n /**\n * Тип хранилища\n */\n type: StorageType;\n /**\n * дефолтное значение, которое будет использоваться если значения нет в хранилище\n */\n fallback?: V;\n /**\n * Доп. делитель в ключ/utils/types'е\n */\n namespace?: string;\n /**\n * Доп. делитель\n */\n prefix?: string;\n}\n\nexport type SetToStorageWrappedConfig<\n V,\n BaseConfig extends StorageConfigBase,\n> = Omit<\n SetToStorageConfig<V>,\n Extract<keyof SetToStorageConfig<V>, keyof BaseConfig>\n> &\n Partial<\n Pick<\n SetToStorageConfig<V>,\n Extract<keyof SetToStorageConfig<V>, keyof BaseConfig>\n >\n > &\n Pick<BaseConfig, Exclude<keyof BaseConfig, keyof SetToStorageConfig<V>>>;\n\nexport type GetFromStorageWrappedConfig<\n V,\n BaseConfig extends StorageConfigBase,\n> = Omit<\n GetFromStorageConfig<V>,\n Extract<keyof GetFromStorageConfig<V>, keyof BaseConfig>\n> &\n Partial<\n Pick<\n GetFromStorageConfig<V>,\n Extract<keyof GetFromStorageConfig<V>, keyof BaseConfig>\n >\n > &\n Pick<BaseConfig, Exclude<keyof BaseConfig, keyof GetFromStorageConfig<V>>>;\n\nexport type StorageConfigBase = Partial<\n Pick<GetFromStorageConfig<any>, 'prefix' | 'type'>\n>;\n\nexport interface StorageApi<BaseConfig extends StorageConfigBase> {\n set<Value>(config: SetToStorageWrappedConfig<Value, BaseConfig>): void;\n get<Value>(\n config: GetFromStorageWrappedConfig<Value, BaseConfig>,\n ): Value | null;\n}\n\n/**\n * Создает интерфейс для работы с хранилищем (localStorage, sessionStorage)\n */\nexport function createStorage<BaseConfig extends StorageConfigBase>(\n storageConfig: BaseConfig,\n): StorageApi<BaseConfig> {\n return {\n set: <Value>(cfg: SetToStorageWrappedConfig<Value, BaseConfig>) => {\n const config = cfg as unknown as SetToStorageConfig<Value>;\n const storageType = (config.type ?? storageConfig.type!) as StorageType;\n const storagePrefix = (config.prefix ?? storageConfig.prefix!) as string;\n\n const storage = storages[storageType];\n\n storage.setItem(\n createStorageKey(storagePrefix, config.key, config.namespace),\n formatValueToStorage(config.value),\n );\n },\n get: <Value>(cfg: GetFromStorageWrappedConfig<Value, BaseConfig>) => {\n const config = cfg as unknown as GetFromStorageConfig<Value>;\n const storageType = (config.type ?? storageConfig.type!) as StorageType;\n const storagePrefix = (config.prefix ?? storageConfig.prefix!) as string;\n\n const storage = storages[storageType];\n\n return (\n parseStorageValue<Value>(\n storage.getItem(\n createStorageKey(storagePrefix, config.key, config.namespace),\n ),\n ) ??\n config.fallback ??\n null\n );\n },\n } as const;\n}\n"],"names":[],"mappings":";;AAEA,MAAM,WAAyC;AAAA,EAC7C,SAAS;AAAA,EACT,OAAO;AACT;AAEO,MAAM,mBAAmB,CAC9B,QACA,KACA,cACG,GAAG,MAAM,GAAG,YAAY,IAAI,SAAS,KAAK,EAAE,IAAI,GAAG;AAExD,MAAM,oBAAoB,CAAI,UAA6B;AACzD,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,SAAS,KAAK,MAAM,KAAK;AAC/B,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,MAAM,uBAAuB,CAAC,UAA2B;AACvD,SAAO,KAAK,UAAU,KAAK;AAC7B;AA0EO,SAAS,cACd,eACwB;AACxB,SAAO;AAAA,IACL,KAAK,CAAQ,QAAsD;AACjE,YAAM,SAAS;AACf,YAAM,cAAe,OAAO,QAAQ,cAAc;AAClD,YAAM,gBAAiB,OAAO,UAAU,cAAc;AAEtD,YAAM,UAAU,SAAS,WAAW;AAEpC,cAAQ;AAAA,QACN,iBAAiB,eAAe,OAAO,KAAK,OAAO,SAAS;AAAA,QAC5D,qBAAqB,OAAO,KAAK;AAAA,MAAA;AAAA,IAErC;AAAA,IACA,KAAK,CAAQ,QAAwD;AACnE,YAAM,SAAS;AACf,YAAM,cAAe,OAAO,QAAQ,cAAc;AAClD,YAAM,gBAAiB,OAAO,UAAU,cAAc;AAEtD,YAAM,UAAU,SAAS,WAAW;AAEpC,aACE;AAAA,QACE,QAAQ;AAAA,UACN,iBAAiB,eAAe,OAAO,KAAK,OAAO,SAAS;AAAA,QAAA;AAAA,MAC9D,KAEF,OAAO,YACP;AAAA,IAEJ;AAAA,EAAA;AAEJ;;;"}
|
package/storage.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
type StorageType = 'session' | 'local';
|
|
2
|
+
declare const createStorageKey: (prefix: string, key: string, namespace?: string) => string;
|
|
3
|
+
interface SetToStorageConfig<V> extends Omit<GetFromStorageConfig<V>, 'fallback'> {
|
|
4
|
+
value: V;
|
|
5
|
+
}
|
|
6
|
+
interface GetFromStorageConfig<V> {
|
|
7
|
+
/**
|
|
8
|
+
* Ключ по которому можно получить значение из хранилища (имя ключа не полное, оно дополняется неймпспейсом проекта)
|
|
9
|
+
*/
|
|
10
|
+
key: string;
|
|
11
|
+
/**
|
|
12
|
+
* Тип хранилища
|
|
13
|
+
*/
|
|
14
|
+
type: StorageType;
|
|
15
|
+
/**
|
|
16
|
+
* дефолтное значение, которое будет использоваться если значения нет в хранилище
|
|
17
|
+
*/
|
|
18
|
+
fallback?: V;
|
|
19
|
+
/**
|
|
20
|
+
* Доп. делитель в ключ/utils/types'е
|
|
21
|
+
*/
|
|
22
|
+
namespace?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Доп. делитель
|
|
25
|
+
*/
|
|
26
|
+
prefix?: string;
|
|
27
|
+
}
|
|
28
|
+
type SetToStorageWrappedConfig<V, BaseConfig extends StorageConfigBase> = Omit<SetToStorageConfig<V>, Extract<keyof SetToStorageConfig<V>, keyof BaseConfig>> & Partial<Pick<SetToStorageConfig<V>, Extract<keyof SetToStorageConfig<V>, keyof BaseConfig>>> & Pick<BaseConfig, Exclude<keyof BaseConfig, keyof SetToStorageConfig<V>>>;
|
|
29
|
+
type GetFromStorageWrappedConfig<V, BaseConfig extends StorageConfigBase> = Omit<GetFromStorageConfig<V>, Extract<keyof GetFromStorageConfig<V>, keyof BaseConfig>> & Partial<Pick<GetFromStorageConfig<V>, Extract<keyof GetFromStorageConfig<V>, keyof BaseConfig>>> & Pick<BaseConfig, Exclude<keyof BaseConfig, keyof GetFromStorageConfig<V>>>;
|
|
30
|
+
type StorageConfigBase = Partial<Pick<GetFromStorageConfig<any>, 'prefix' | 'type'>>;
|
|
31
|
+
interface StorageApi<BaseConfig extends StorageConfigBase> {
|
|
32
|
+
set<Value>(config: SetToStorageWrappedConfig<Value, BaseConfig>): void;
|
|
33
|
+
get<Value>(config: GetFromStorageWrappedConfig<Value, BaseConfig>): Value | null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Создает интерфейс для работы с хранилищем (localStorage, sessionStorage)
|
|
37
|
+
*/
|
|
38
|
+
declare function createStorage<BaseConfig extends StorageConfigBase>(storageConfig: BaseConfig): StorageApi<BaseConfig>;
|
|
39
|
+
|
|
40
|
+
export { createStorage, createStorageKey };
|
|
41
|
+
export type { GetFromStorageConfig, GetFromStorageWrappedConfig, SetToStorageConfig, SetToStorageWrappedConfig, StorageApi, StorageConfigBase, StorageType };
|
package/storage.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
const storages = {
|
|
2
|
+
session: sessionStorage,
|
|
3
|
+
local: localStorage
|
|
4
|
+
};
|
|
5
|
+
const createStorageKey = (prefix, key, namespace) => `${prefix}${namespace ? `/${namespace}` : ""}/${key}`;
|
|
6
|
+
const parseStorageValue = (value) => {
|
|
7
|
+
if (typeof value !== "string") {
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
const parsed = JSON.parse(value);
|
|
12
|
+
return parsed;
|
|
13
|
+
} catch {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const formatValueToStorage = (value) => {
|
|
18
|
+
return JSON.stringify(value);
|
|
19
|
+
};
|
|
20
|
+
function createStorage(storageConfig) {
|
|
21
|
+
return {
|
|
22
|
+
set: (cfg) => {
|
|
23
|
+
const config = cfg;
|
|
24
|
+
const storageType = config.type ?? storageConfig.type;
|
|
25
|
+
const storagePrefix = config.prefix ?? storageConfig.prefix;
|
|
26
|
+
const storage = storages[storageType];
|
|
27
|
+
storage.setItem(
|
|
28
|
+
createStorageKey(storagePrefix, config.key, config.namespace),
|
|
29
|
+
formatValueToStorage(config.value)
|
|
30
|
+
);
|
|
31
|
+
},
|
|
32
|
+
get: (cfg) => {
|
|
33
|
+
const config = cfg;
|
|
34
|
+
const storageType = config.type ?? storageConfig.type;
|
|
35
|
+
const storagePrefix = config.prefix ?? storageConfig.prefix;
|
|
36
|
+
const storage = storages[storageType];
|
|
37
|
+
return parseStorageValue(
|
|
38
|
+
storage.getItem(
|
|
39
|
+
createStorageKey(storagePrefix, config.key, config.namespace)
|
|
40
|
+
)
|
|
41
|
+
) ?? config.fallback ?? null;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export {
|
|
46
|
+
createStorage,
|
|
47
|
+
createStorageKey
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=storage.js.map
|
package/storage.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sources":["../src/storage.ts"],"sourcesContent":["export type StorageType = 'session' | 'local';\n\nconst storages: Record<StorageType, Storage> = {\n session: sessionStorage,\n local: localStorage,\n};\n\nexport const createStorageKey = (\n prefix: string,\n key: string,\n namespace?: string,\n) => `${prefix}${namespace ? `/${namespace}` : ''}/${key}`;\n\nconst parseStorageValue = <V>(value: unknown): V | null => {\n if (typeof value !== 'string') {\n return value as V;\n }\n\n try {\n const parsed = JSON.parse(value);\n return parsed;\n } catch {\n return null;\n }\n};\n\nconst formatValueToStorage = (value: unknown): string => {\n return JSON.stringify(value);\n};\n\nexport interface SetToStorageConfig<V>\n extends Omit<GetFromStorageConfig<V>, 'fallback'> {\n value: V;\n}\n\nexport interface GetFromStorageConfig<V> {\n /**\n * Ключ по которому можно получить значение из хранилища (имя ключа не полное, оно дополняется неймпспейсом проекта)\n */\n key: string;\n /**\n * Тип хранилища\n */\n type: StorageType;\n /**\n * дефолтное значение, которое будет использоваться если значения нет в хранилище\n */\n fallback?: V;\n /**\n * Доп. делитель в ключ/utils/types'е\n */\n namespace?: string;\n /**\n * Доп. делитель\n */\n prefix?: string;\n}\n\nexport type SetToStorageWrappedConfig<\n V,\n BaseConfig extends StorageConfigBase,\n> = Omit<\n SetToStorageConfig<V>,\n Extract<keyof SetToStorageConfig<V>, keyof BaseConfig>\n> &\n Partial<\n Pick<\n SetToStorageConfig<V>,\n Extract<keyof SetToStorageConfig<V>, keyof BaseConfig>\n >\n > &\n Pick<BaseConfig, Exclude<keyof BaseConfig, keyof SetToStorageConfig<V>>>;\n\nexport type GetFromStorageWrappedConfig<\n V,\n BaseConfig extends StorageConfigBase,\n> = Omit<\n GetFromStorageConfig<V>,\n Extract<keyof GetFromStorageConfig<V>, keyof BaseConfig>\n> &\n Partial<\n Pick<\n GetFromStorageConfig<V>,\n Extract<keyof GetFromStorageConfig<V>, keyof BaseConfig>\n >\n > &\n Pick<BaseConfig, Exclude<keyof BaseConfig, keyof GetFromStorageConfig<V>>>;\n\nexport type StorageConfigBase = Partial<\n Pick<GetFromStorageConfig<any>, 'prefix' | 'type'>\n>;\n\nexport interface StorageApi<BaseConfig extends StorageConfigBase> {\n set<Value>(config: SetToStorageWrappedConfig<Value, BaseConfig>): void;\n get<Value>(\n config: GetFromStorageWrappedConfig<Value, BaseConfig>,\n ): Value | null;\n}\n\n/**\n * Создает интерфейс для работы с хранилищем (localStorage, sessionStorage)\n */\nexport function createStorage<BaseConfig extends StorageConfigBase>(\n storageConfig: BaseConfig,\n): StorageApi<BaseConfig> {\n return {\n set: <Value>(cfg: SetToStorageWrappedConfig<Value, BaseConfig>) => {\n const config = cfg as unknown as SetToStorageConfig<Value>;\n const storageType = (config.type ?? storageConfig.type!) as StorageType;\n const storagePrefix = (config.prefix ?? storageConfig.prefix!) as string;\n\n const storage = storages[storageType];\n\n storage.setItem(\n createStorageKey(storagePrefix, config.key, config.namespace),\n formatValueToStorage(config.value),\n );\n },\n get: <Value>(cfg: GetFromStorageWrappedConfig<Value, BaseConfig>) => {\n const config = cfg as unknown as GetFromStorageConfig<Value>;\n const storageType = (config.type ?? storageConfig.type!) as StorageType;\n const storagePrefix = (config.prefix ?? storageConfig.prefix!) as string;\n\n const storage = storages[storageType];\n\n return (\n parseStorageValue<Value>(\n storage.getItem(\n createStorageKey(storagePrefix, config.key, config.namespace),\n ),\n ) ??\n config.fallback ??\n null\n );\n },\n } as const;\n}\n"],"names":[],"mappings":"AAEA,MAAM,WAAyC;AAAA,EAC7C,SAAS;AAAA,EACT,OAAO;AACT;AAEO,MAAM,mBAAmB,CAC9B,QACA,KACA,cACG,GAAG,MAAM,GAAG,YAAY,IAAI,SAAS,KAAK,EAAE,IAAI,GAAG;AAExD,MAAM,oBAAoB,CAAI,UAA6B;AACzD,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,SAAS,KAAK,MAAM,KAAK;AAC/B,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,MAAM,uBAAuB,CAAC,UAA2B;AACvD,SAAO,KAAK,UAAU,KAAK;AAC7B;AA0EO,SAAS,cACd,eACwB;AACxB,SAAO;AAAA,IACL,KAAK,CAAQ,QAAsD;AACjE,YAAM,SAAS;AACf,YAAM,cAAe,OAAO,QAAQ,cAAc;AAClD,YAAM,gBAAiB,OAAO,UAAU,cAAc;AAEtD,YAAM,UAAU,SAAS,WAAW;AAEpC,cAAQ;AAAA,QACN,iBAAiB,eAAe,OAAO,KAAK,OAAO,SAAS;AAAA,QAC5D,qBAAqB,OAAO,KAAK;AAAA,MAAA;AAAA,IAErC;AAAA,IACA,KAAK,CAAQ,QAAwD;AACnE,YAAM,SAAS;AACf,YAAM,cAAe,OAAO,QAAQ,cAAc;AAClD,YAAM,gBAAiB,OAAO,UAAU,cAAc;AAEtD,YAAM,UAAU,SAAS,WAAW;AAEpC,aACE;AAAA,QACE,QAAQ;AAAA,UACN,iBAAiB,eAAe,OAAO,KAAK,OAAO,SAAS;AAAA,QAAA;AAAA,MAC9D,KAEF,OAAO,YACP;AAAA,IAEJ;AAAA,EAAA;AAEJ;"}
|