prlg-ui 1.0.12 → 1.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/index.cjs.js +10 -0
  2. package/dist/index.d.ts +18 -17
  3. package/dist/{my-lib.es.js → index.es.js} +985 -902
  4. package/dist/prlg-ui.css +1 -0
  5. package/dist/scss/colors.scss +134 -0
  6. package/dist/scss/fonts.scss +3 -0
  7. package/dist/scss/main.scss +36 -0
  8. package/dist/scss/mixins.scss +163 -0
  9. package/dist/scss/reset.scss +51 -0
  10. package/dist/scss/root-vars.scss +4 -0
  11. package/dist/useBodyScroll.util-BgQeA8Dg.js +82 -0
  12. package/dist/useBodyScroll.util-D-eNxODy.cjs +1 -0
  13. package/dist/utils/Portal/Portal.vue +27 -0
  14. package/dist/utils/Portal/index.ts +3 -0
  15. package/dist/utils/Portal.vue +27 -0
  16. package/dist/utils/date.util.ts +29 -0
  17. package/dist/utils/dayjs.util.ts +26 -0
  18. package/dist/utils/eventBus.util.ts +41 -0
  19. package/dist/utils/index.ts +3 -0
  20. package/dist/utils/isClient.util.ts +3 -0
  21. package/dist/utils/onClickOutside.util.ts +57 -0
  22. package/dist/utils/price.util.ts +21 -0
  23. package/dist/utils/useBodyScroll.util.ts +33 -0
  24. package/dist/utils/utils.cjs.js +1 -0
  25. package/dist/utils/utils.es.js +497 -0
  26. package/dist/utils.d.ts +90 -0
  27. package/package.json +48 -46
  28. package/dist/fonts/Roboto/Roboto-Black.woff +0 -0
  29. package/dist/fonts/Roboto/Roboto-Black.woff2 +0 -0
  30. package/dist/fonts/Roboto/Roboto-Bold.woff +0 -0
  31. package/dist/fonts/Roboto/Roboto-Bold.woff2 +0 -0
  32. package/dist/fonts/Roboto/Roboto-ExtraBold.woff +0 -0
  33. package/dist/fonts/Roboto/Roboto-ExtraBold.woff2 +0 -0
  34. package/dist/fonts/Roboto/Roboto-ExtraLight.woff +0 -0
  35. package/dist/fonts/Roboto/Roboto-ExtraLight.woff2 +0 -0
  36. package/dist/fonts/Roboto/Roboto-Light.woff +0 -0
  37. package/dist/fonts/Roboto/Roboto-Light.woff2 +0 -0
  38. package/dist/fonts/Roboto/Roboto-Medium.woff +0 -0
  39. package/dist/fonts/Roboto/Roboto-Medium.woff2 +0 -0
  40. package/dist/fonts/Roboto/Roboto-Regular.woff +0 -0
  41. package/dist/fonts/Roboto/Roboto-Regular.woff2 +0 -0
  42. package/dist/fonts/Roboto/Roboto-SemiBold.woff +0 -0
  43. package/dist/fonts/Roboto/Roboto-SemiBold.woff2 +0 -0
  44. package/dist/fonts/Roboto/Roboto-Thin.woff +0 -0
  45. package/dist/fonts/Roboto/Roboto-Thin.woff2 +0 -0
  46. package/dist/images/catalogs/acssesuari.png +0 -0
  47. package/dist/images/catalogs/all.png +0 -0
  48. package/dist/images/catalogs/antifriz.png +0 -0
  49. package/dist/images/catalogs/battery.png +0 -0
  50. package/dist/images/catalogs/chemistry.png +0 -0
  51. package/dist/images/catalogs/lamps.png +0 -0
  52. package/dist/images/catalogs/oil.png +0 -0
  53. package/dist/images/catalogs/original.png +0 -0
  54. package/dist/images/catalogs/to.png +0 -0
  55. package/dist/images/catalogs/ucenka.png +0 -0
  56. package/dist/images/catalogs/vin.png +0 -0
  57. package/dist/images/catalogs/wheels.png +0 -0
  58. package/dist/images/mainPage/banner.png +0 -0
  59. package/dist/images/manager.png +0 -0
  60. package/dist/images/news/news1.png +0 -0
  61. package/dist/images/news/newsBig1.png +0 -0
  62. package/dist/logo.svg +0 -27
  63. package/dist/my-lib.css +0 -1
  64. package/dist/my-lib.umd.js +0 -2
@@ -0,0 +1,26 @@
1
+ import dayjs from 'dayjs'
2
+
3
+ // 📦 Плагины
4
+ import localizedFormat from 'dayjs/plugin/localizedFormat'
5
+ import relativeTime from 'dayjs/plugin/relativeTime'
6
+ import isToday from 'dayjs/plugin/isToday'
7
+ import isBetween from 'dayjs/plugin/isBetween'
8
+ import isSameOrBefore from 'dayjs/plugin/isSameOrBefore'
9
+ import isSameOrAfter from 'dayjs/plugin/isSameOrAfter'
10
+
11
+ // 🌍 Локаль
12
+ import 'dayjs/locale/ru'
13
+
14
+ // 🧩 Установка плагинов
15
+ dayjs.extend(localizedFormat)
16
+ dayjs.extend(relativeTime)
17
+ dayjs.extend(isToday)
18
+ dayjs.extend(isBetween)
19
+ dayjs.extend(isSameOrBefore)
20
+ dayjs.extend(isSameOrAfter)
21
+
22
+ // 🗣️ Установка локали
23
+ dayjs.locale('ru')
24
+
25
+ // 📤 Экспорт по умолчанию
26
+ export default dayjs
@@ -0,0 +1,41 @@
1
+ export type Handler<T> = (event: T) => void;
2
+
3
+ export interface TypedEventBus<Events extends Record<string, any>> {
4
+ on<K extends keyof Events>(type: K, handler: Handler<Events[K]>): void;
5
+ off<K extends keyof Events>(type: K, handler: Handler<Events[K]>): void;
6
+ emit<K extends keyof Events>(type: K, evt?: Events[K]): void;
7
+ clear(): void;
8
+ }
9
+
10
+ export function EventBus<Events extends Record<string, any>>(): TypedEventBus<Events> {
11
+ const allHandlers = new Map<keyof Events, Handler<any>[]>();
12
+
13
+ return {
14
+ on<K extends keyof Events>(type: K, handler: Handler<Events[K]>) {
15
+ const handlers = allHandlers.get(type) || [];
16
+ handlers.push(handler);
17
+ allHandlers.set(type, handlers);
18
+ },
19
+
20
+ off<K extends keyof Events>(type: K, handler: Handler<Events[K]>) {
21
+ const handlers = allHandlers.get(type);
22
+ if (handlers) {
23
+ allHandlers.set(
24
+ type,
25
+ handlers.filter(h => h !== handler)
26
+ );
27
+ }
28
+ },
29
+
30
+ emit<K extends keyof Events>(type: K, evt?: Events[K]) {
31
+ const handlers = allHandlers.get(type);
32
+ if (handlers) {
33
+ handlers.forEach(handler => handler(evt));
34
+ }
35
+ },
36
+
37
+ clear() {
38
+ allHandlers.clear();
39
+ }
40
+ };
41
+ }
@@ -0,0 +1,3 @@
1
+ import Portal from "./Portal.vue";
2
+
3
+ export { Portal };
@@ -0,0 +1,3 @@
1
+ export default function isClient(): boolean {
2
+ return !!(typeof window !== 'undefined' && window.document && window.document.createElement);
3
+ }
@@ -0,0 +1,57 @@
1
+ export interface OnClickOutsideOptions {
2
+ ignore?: (() => (HTMLElement | string | null | undefined)[]) | (HTMLElement | string | null | undefined)[];
3
+ }
4
+
5
+ const activeListeners = new WeakMap<HTMLElement, () => void>();
6
+
7
+ export function onClickOutside(
8
+ target: HTMLElement | null | undefined,
9
+ handler: (event: MouseEvent | TouchEvent) => void,
10
+ options: OnClickOutsideOptions = {}
11
+ ): () => void {
12
+ if (!target) return () => {};
13
+
14
+ // Remove existing listener if present
15
+ const existingCleanup = activeListeners.get(target);
16
+ if (existingCleanup) {
17
+ existingCleanup();
18
+ activeListeners.delete(target);
19
+ }
20
+
21
+ const listener = (event: MouseEvent | TouchEvent) => {
22
+ const targetNode = event.target instanceof Node ? event.target : null;
23
+ if (!targetNode) return;
24
+
25
+ const rawIgnores = typeof options.ignore === 'function' ? options.ignore() : options.ignore ?? [];
26
+ const ignoreElements = rawIgnores
27
+ .map(el => {
28
+ if (typeof el === 'string') {
29
+ return document.querySelector(el) as HTMLElement | null;
30
+ }
31
+ return el instanceof HTMLElement ? el : null;
32
+ })
33
+ .filter((el): el is HTMLElement => el !== null && el !== undefined);
34
+
35
+ if (
36
+ target.contains(targetNode) ||
37
+ ignoreElements.some(ignoreEl => ignoreEl.contains(targetNode))
38
+ ) {
39
+ return;
40
+ }
41
+
42
+ handler(event);
43
+ };
44
+
45
+ document.addEventListener('mousedown', listener, { capture: true });
46
+ document.addEventListener('touchstart', listener, { capture: true });
47
+
48
+ // Store cleanup function and return it
49
+ const cleanup = () => {
50
+ document.removeEventListener('mousedown', listener, { capture: true });
51
+ document.removeEventListener('touchstart', listener, { capture: true });
52
+ activeListeners.delete(target);
53
+ };
54
+ activeListeners.set(target, cleanup);
55
+
56
+ return cleanup;
57
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Преобразует число в форматированную строку с валютой (по умолчанию: ₽)
3
+ */
4
+ export function formatPrice(value: number, currency = "₽"): string {
5
+ return `${value.toLocaleString("ru-RU")} ${currency}`;
6
+ }
7
+
8
+ /**
9
+ * Возвращает сумму всех значений (например, для корзины)
10
+ */
11
+ export function sumPrices(items: number[]): number {
12
+ return items.reduce((total, price) => total + price, 0);
13
+ }
14
+
15
+ /**
16
+ * Делает безопасное преобразование строки в число (цены из инпута)
17
+ */
18
+ export function parsePrice(input: string): number {
19
+ const normalized = input.replace(/[^\d.,]/g, "").replace(",", ".");
20
+ return parseFloat(normalized) || 0;
21
+ }
@@ -0,0 +1,33 @@
1
+ export function useBodyScroll() {
2
+ let originalOverflow: string | null = null;
3
+ let originalPaddingRight: string | null = null;
4
+
5
+ const lockScroll = () => {
6
+ if (typeof window === 'undefined') return;
7
+
8
+ const body = document.body;
9
+ const scrollbarWidth = window.innerWidth - body.clientWidth;
10
+
11
+ if (originalOverflow === null) {
12
+ originalOverflow = body.style.overflow;
13
+ originalPaddingRight = body.style.paddingRight;
14
+ }
15
+
16
+ body.style.overflow = 'hidden';
17
+ body.style.paddingRight = `${scrollbarWidth}px`;
18
+ };
19
+
20
+ const unlockScroll = () => {
21
+ if (typeof window === 'undefined') return;
22
+
23
+ if (originalOverflow !== null && originalPaddingRight !== null) {
24
+ const body = document.body;
25
+ body.style.overflow = originalOverflow;
26
+ body.style.paddingRight = originalPaddingRight;
27
+ originalOverflow = null;
28
+ originalPaddingRight = null;
29
+ }
30
+ };
31
+
32
+ return { lockScroll, unlockScroll };
33
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const st=require("../useBodyScroll.util-D-eNxODy.cjs");function z(u){return u&&u.__esModule&&Object.prototype.hasOwnProperty.call(u,"default")?u.default:u}var G={exports:{}},Mt=G.exports,ut;function pt(){return ut||(ut=1,function(u,O){(function(l,c){u.exports=c()})(Mt,function(){var l=1e3,c=6e4,_=36e5,m="millisecond",x="second",$="minute",y="hour",a="day",h="week",p="month",g="quarter",T="year",f="date",D="Invalid Date",j=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,L=/\[([^\]]+)]|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,H={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(i){var r=["th","st","nd","rd"],t=i%100;return"["+i+(r[(t-20)%10]||r[t]||r[0])+"]"}},I=function(i,r,t){var n=String(i);return!n||n.length>=r?i:""+Array(r+1-n.length).join(t)+i},E={s:I,z:function(i){var r=-i.utcOffset(),t=Math.abs(r),n=Math.floor(t/60),e=t%60;return(r<=0?"+":"-")+I(n,2,"0")+":"+I(e,2,"0")},m:function i(r,t){if(r.date()<t.date())return-i(t,r);var n=12*(t.year()-r.year())+(t.month()-r.month()),e=r.clone().add(n,p),s=t-e<0,o=r.clone().add(n+(s?-1:1),p);return+(-(n+(t-e)/(s?e-o:o-e))||0)},a:function(i){return i<0?Math.ceil(i)||0:Math.floor(i)},p:function(i){return{M:p,y:T,w:h,d:a,D:f,h:y,m:$,s:x,ms:m,Q:g}[i]||String(i||"").toLowerCase().replace(/s$/,"")},u:function(i){return i===void 0}},B="en",b={};b[B]=H;var P="$isDayjsObject",C=function(i){return i instanceof V||!(!i||!i[P])},J=function i(r,t,n){var e;if(!r)return B;if(typeof r=="string"){var s=r.toLowerCase();b[s]&&(e=s),t&&(b[s]=t,e=s);var o=r.split("-");if(!e&&o.length>1)return i(o[0])}else{var M=r.name;b[M]=r,e=M}return!n&&e&&(B=e),e||!n&&B},S=function(i,r){if(C(i))return i.clone();var t=typeof r=="object"?r:{};return t.date=i,t.args=arguments,new V(t)},d=E;d.l=J,d.i=C,d.w=function(i,r){return S(i,{locale:r.$L,utc:r.$u,x:r.$x,$offset:r.$offset})};var V=function(){function i(t){this.$L=J(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[P]=!0}var r=i.prototype;return r.parse=function(t){this.$d=function(n){var e=n.date,s=n.utc;if(e===null)return new Date(NaN);if(d.u(e))return new Date;if(e instanceof Date)return new Date(e);if(typeof e=="string"&&!/Z$/i.test(e)){var o=e.match(j);if(o){var M=o[2]-1||0,v=(o[7]||"0").substring(0,3);return s?new Date(Date.UTC(o[1],M,o[3]||1,o[4]||0,o[5]||0,o[6]||0,v)):new Date(o[1],M,o[3]||1,o[4]||0,o[5]||0,o[6]||0,v)}}return new Date(e)}(t),this.init()},r.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},r.$utils=function(){return d},r.isValid=function(){return this.$d.toString()!==D},r.isSame=function(t,n){var e=S(t);return this.startOf(n)<=e&&e<=this.endOf(n)},r.isAfter=function(t,n){return S(t)<this.startOf(n)},r.isBefore=function(t,n){return this.endOf(n)<S(t)},r.$g=function(t,n,e){return d.u(t)?this[n]:this.set(e,t)},r.unix=function(){return Math.floor(this.valueOf()/1e3)},r.valueOf=function(){return this.$d.getTime()},r.startOf=function(t,n){var e=this,s=!!d.u(n)||n,o=d.p(t),M=function(W,A){var R=d.w(e.$u?Date.UTC(e.$y,A,W):new Date(e.$y,A,W),e);return s?R:R.endOf(a)},v=function(W,A){return d.w(e.toDate()[W].apply(e.toDate("s"),(s?[0,0,0,0]:[23,59,59,999]).slice(A)),e)},Y=this.$W,w=this.$M,q=this.$D,N="set"+(this.$u?"UTC":"");switch(o){case T:return s?M(1,0):M(31,11);case p:return s?M(1,w):M(0,w+1);case h:var F=this.$locale().weekStart||0,U=(Y<F?Y+7:Y)-F;return M(s?q-U:q+(6-U),w);case a:case f:return v(N+"Hours",0);case y:return v(N+"Minutes",1);case $:return v(N+"Seconds",2);case x:return v(N+"Milliseconds",3);default:return this.clone()}},r.endOf=function(t){return this.startOf(t,!1)},r.$set=function(t,n){var e,s=d.p(t),o="set"+(this.$u?"UTC":""),M=(e={},e[a]=o+"Date",e[f]=o+"Date",e[p]=o+"Month",e[T]=o+"FullYear",e[y]=o+"Hours",e[$]=o+"Minutes",e[x]=o+"Seconds",e[m]=o+"Milliseconds",e)[s],v=s===a?this.$D+(n-this.$W):n;if(s===p||s===T){var Y=this.clone().set(f,1);Y.$d[M](v),Y.init(),this.$d=Y.set(f,Math.min(this.$D,Y.daysInMonth())).$d}else M&&this.$d[M](v);return this.init(),this},r.set=function(t,n){return this.clone().$set(t,n)},r.get=function(t){return this[d.p(t)]()},r.add=function(t,n){var e,s=this;t=Number(t);var o=d.p(n),M=function(w){var q=S(s);return d.w(q.date(q.date()+Math.round(w*t)),s)};if(o===p)return this.set(p,this.$M+t);if(o===T)return this.set(T,this.$y+t);if(o===a)return M(1);if(o===h)return M(7);var v=(e={},e[$]=c,e[y]=_,e[x]=l,e)[o]||1,Y=this.$d.getTime()+t*v;return d.w(Y,this)},r.subtract=function(t,n){return this.add(-1*t,n)},r.format=function(t){var n=this,e=this.$locale();if(!this.isValid())return e.invalidDate||D;var s=t||"YYYY-MM-DDTHH:mm:ssZ",o=d.z(this),M=this.$H,v=this.$m,Y=this.$M,w=e.weekdays,q=e.months,N=e.meridiem,F=function(A,R,Z,Q){return A&&(A[R]||A(n,s))||Z[R].slice(0,Q)},U=function(A){return d.s(M%12||12,A,"0")},W=N||function(A,R,Z){var Q=A<12?"AM":"PM";return Z?Q.toLowerCase():Q};return s.replace(L,function(A,R){return R||function(Z){switch(Z){case"YY":return String(n.$y).slice(-2);case"YYYY":return d.s(n.$y,4,"0");case"M":return Y+1;case"MM":return d.s(Y+1,2,"0");case"MMM":return F(e.monthsShort,Y,q,3);case"MMMM":return F(q,Y);case"D":return n.$D;case"DD":return d.s(n.$D,2,"0");case"d":return String(n.$W);case"dd":return F(e.weekdaysMin,n.$W,w,2);case"ddd":return F(e.weekdaysShort,n.$W,w,3);case"dddd":return w[n.$W];case"H":return String(M);case"HH":return d.s(M,2,"0");case"h":return U(1);case"hh":return U(2);case"a":return W(M,v,!0);case"A":return W(M,v,!1);case"m":return String(v);case"mm":return d.s(v,2,"0");case"s":return String(n.$s);case"ss":return d.s(n.$s,2,"0");case"SSS":return d.s(n.$ms,3,"0");case"Z":return o}return null}(A)||o.replace(":","")})},r.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},r.diff=function(t,n,e){var s,o=this,M=d.p(n),v=S(t),Y=(v.utcOffset()-this.utcOffset())*c,w=this-v,q=function(){return d.m(o,v)};switch(M){case T:s=q()/12;break;case p:s=q();break;case g:s=q()/3;break;case h:s=(w-Y)/6048e5;break;case a:s=(w-Y)/864e5;break;case y:s=w/_;break;case $:s=w/c;break;case x:s=w/l;break;default:s=w}return e?s:d.a(s)},r.daysInMonth=function(){return this.endOf(p).$D},r.$locale=function(){return b[this.$L]},r.locale=function(t,n){if(!t)return this.$L;var e=this.clone(),s=J(t,n,!0);return s&&(e.$L=s),e},r.clone=function(){return d.w(this.$d,this)},r.toDate=function(){return new Date(this.valueOf())},r.toJSON=function(){return this.isValid()?this.toISOString():null},r.toISOString=function(){return this.$d.toISOString()},r.toString=function(){return this.$d.toUTCString()},i}(),ot=V.prototype;return S.prototype=ot,[["$ms",m],["$s",x],["$m",$],["$H",y],["$W",a],["$M",p],["$y",T],["$D",f]].forEach(function(i){ot[i[1]]=function(r){return this.$g(r,i[0],i[1])}}),S.extend=function(i,r){return i.$i||(i(r,V,S),i.$i=!0),S},S.locale=J,S.isDayjs=C,S.unix=function(i){return S(1e3*i)},S.en=b[B],S.Ls=b,S.p={},S})}(G)),G.exports}var $t=pt();const k=z($t);var K={exports:{}},_t=K.exports,at;function vt(){return at||(at=1,function(u,O){(function(l,c){u.exports=c()})(_t,function(){var l={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};return function(c,_,m){var x=_.prototype,$=x.format;m.en.formats=l,x.format=function(y){y===void 0&&(y="YYYY-MM-DDTHH:mm:ssZ");var a=this.$locale().formats,h=function(p,g){return p.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(T,f,D){var j=D&&D.toUpperCase();return f||g[D]||l[D]||g[j].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(L,H,I){return H||I.slice(1)})})}(y,a===void 0?{}:a);return $.call(this,h)}}})}(K)),K.exports}var yt=vt();const xt=z(yt);var X={exports:{}},Dt=X.exports,ft;function St(){return ft||(ft=1,function(u,O){(function(l,c){u.exports=c()})(Dt,function(){return function(l,c,_){l=l||{};var m=c.prototype,x={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 $(a,h,p,g){return m.fromToBase(a,h,p,g)}_.en.relativeTime=x,m.fromToBase=function(a,h,p,g,T){for(var f,D,j,L=p.$locale().relativeTime||x,H=l.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"}],I=H.length,E=0;E<I;E+=1){var B=H[E];B.d&&(f=g?_(a).diff(p,B.d,!0):p.diff(a,B.d,!0));var b=(l.rounding||Math.round)(Math.abs(f));if(j=f>0,b<=B.r||!B.r){b<=1&&E>0&&(B=H[E-1]);var P=L[B.l];T&&(b=T(""+b)),D=typeof P=="string"?P.replace("%d",b):P(b,h,B.l,j);break}}if(h)return D;var C=j?L.future:L.past;return typeof C=="function"?C(D):C.replace("%s",D)},m.to=function(a,h){return $(a,h,this,!0)},m.from=function(a,h){return $(a,h,this)};var y=function(a){return a.$u?_.utc():_()};m.toNow=function(a){return this.to(y(this),a)},m.fromNow=function(a){return this.from(y(this),a)}}})}(X)),X.exports}var Yt=St();const gt=z(Yt);var tt={exports:{}},wt=tt.exports,ct;function Ot(){return ct||(ct=1,function(u,O){(function(l,c){u.exports=c()})(wt,function(){return function(l,c,_){c.prototype.isToday=function(){var m="YYYY-MM-DD",x=_();return this.format(m)===x.format(m)}}})}(tt)),tt.exports}var Tt=Ot();const Lt=z(Tt);var et={exports:{}},Bt=et.exports,dt;function bt(){return dt||(dt=1,function(u,O){(function(l,c){u.exports=c()})(Bt,function(){return function(l,c,_){c.prototype.isBetween=function(m,x,$,y){var a=_(m),h=_(x),p=(y=y||"()")[0]==="(",g=y[1]===")";return(p?this.isAfter(a,$):!this.isBefore(a,$))&&(g?this.isBefore(h,$):!this.isAfter(h,$))||(p?this.isBefore(a,$):!this.isAfter(a,$))&&(g?this.isAfter(h,$):!this.isBefore(h,$))}}})}(et)),et.exports}var At=bt();const kt=z(At);var rt={exports:{}},Ht=rt.exports,ht;function qt(){return ht||(ht=1,function(u,O){(function(l,c){u.exports=c()})(Ht,function(){return function(l,c){c.prototype.isSameOrBefore=function(_,m){return this.isSame(_,m)||this.isBefore(_,m)}}})}(rt)),rt.exports}var jt=qt();const Rt=z(jt);var nt={exports:{}},It=nt.exports,lt;function Et(){return lt||(lt=1,function(u,O){(function(l,c){u.exports=c()})(It,function(){return function(l,c){c.prototype.isSameOrAfter=function(_,m){return this.isSame(_,m)||this.isAfter(_,m)}}})}(nt)),nt.exports}var Ct=Et();const Ft=z(Ct);var it={exports:{}},Wt=it.exports,mt;function zt(){return mt||(mt=1,function(u,O){(function(l,c){u.exports=c(pt())})(Wt,function(l){function c(f){return f&&typeof f=="object"&&"default"in f?f:{default:f}}var _=c(l),m="января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),x="январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),$="янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),y="янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_"),a=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function h(f,D,j){var L,H;return j==="m"?D?"минута":"минуту":f+" "+(L=+f,H={mm:D?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[j].split("_"),L%10==1&&L%100!=11?H[0]:L%10>=2&&L%10<=4&&(L%100<10||L%100>=20)?H[1]:H[2])}var p=function(f,D){return a.test(D)?m[f.month()]:x[f.month()]};p.s=x,p.f=m;var g=function(f,D){return a.test(D)?$[f.month()]:y[f.month()]};g.s=y,g.f=$;var T={name:"ru",weekdays:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),weekdaysShort:"вск_пнд_втр_срд_чтв_птн_сбт".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),months:p,monthsShort:g,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:h,mm:h,h:"час",hh:h,d:"день",dd:h,M:"месяц",MM:h,y:"год",yy:h},ordinal:function(f){return f},meridiem:function(f){return f<4?"ночи":f<12?"утра":f<17?"дня":"вечера"}};return _.default.locale(T,null,!0),T})}(it)),it.exports}zt();k.extend(xt);k.extend(gt);k.extend(Lt);k.extend(kt);k.extend(Rt);k.extend(Ft);k.locale("ru");function Pt(u){return k(u).format("D MMMM YYYY")}function Nt(u){return k(u).format("D MMMM, HH:mm")}function Ut(u,O){return k(O).diff(k(u),"day")}function Zt(u){return k().isAfter(k(u))}function Jt(u,O="₽"){return`${u.toLocaleString("ru-RU")} ${O}`}function Vt(u){return u.reduce((O,l)=>O+l,0)}function Qt(u){const O=u.replace(/[^\d.,]/g,"").replace(",",".");return parseFloat(O)||0}exports.EventBus=st.EventBus;exports.Portal=st._sfc_main;exports.onClickOutside=st.onClickOutside;exports.useBodyScroll=st.useBodyScroll;exports.formatDateReadable=Pt;exports.formatDateWithTime=Nt;exports.formatPrice=Jt;exports.getDaysBetween=Ut;exports.isExpired=Zt;exports.parsePrice=Qt;exports.sumPrices=Vt;