@minsize/utils 0.1.2 → 0.1.4
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/README.md +44 -44
- package/index.d.ts +26 -8
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/package.json +21 -21
package/README.md
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
## Utils
|
|
2
|
-
[](https://www.npmjs.com/package/@minsize/utils)
|
|
3
|
-
|
|
4
|
-
```
|
|
5
|
-
npm i @minsize/utils
|
|
6
|
-
|
|
7
|
-
yarn add @minsize/utils
|
|
8
|
-
```
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
| Функция | Описание |
|
|
12
|
-
| --------------------- | --------------------------------------------------------------------------------------------- |
|
|
13
|
-
| `chunks` | Разбивает массив на части заданного размера. |
|
|
14
|
-
| `clamp` | Ограничивает число указанным минимальным и максимальным значением. |
|
|
15
|
-
| `decWord` | Возвращает строку с правильным окончанием слова в зависимости от числа. |
|
|
16
|
-
| `alignTo` | Возвращает выровненное число. |
|
|
17
|
-
| `toShort` | Возвращает строку, представляющую число в сокращенной форме. |
|
|
18
|
-
| `timeAgo` | Возвращает строку, описывающую время, прошедшее с момента отметки времени. |
|
|
19
|
-
| `formatNumber` | Форматирует число в виде строки с разделителями. |
|
|
20
|
-
| `shuffle` | Перемешивает элементы массива в случайном порядке. |
|
|
21
|
-
| `random` | Генерирует случайное число в указанном диапазоне. |
|
|
22
|
-
| `randomByWeight` | Выбирает случайный элемент на основе весов из набора элементов с весами. |
|
|
23
|
-
| `isType` | Проверяет, является ли значение указанного типа. |
|
|
24
|
-
| `omit` | Возвращает новый объект без указанных ключей. |
|
|
25
|
-
| `pick` | Возвращает новый объект с выбранными ключами. |
|
|
26
|
-
| `sleep` | Ожидает указанное количество миллисекунд. |
|
|
27
|
-
| `copyText` | Позволяет копировать текст в буфер обмена. |
|
|
28
|
-
| `createLinksFromText` | Возвращает массив, содержащий фрагменты текста и результаты вызова колбэка для каждого блока. |
|
|
29
|
-
| `HSVtoRGB` | Преобразует цвет из модели HSV в модель RGB. |
|
|
30
|
-
| `RGBtoHEX` | Преобразует цвет из модели RGB в шестнадцатеричный формат (HEX). |
|
|
31
|
-
| `RGBtoHSV` | Преобразует цвет из модели RGB в модель HSV. |
|
|
32
|
-
| `HEXtoRGB` | Преобразует цвет из шестнадцатеричного формата (HEX) в модель RGB. |
|
|
33
|
-
| `comparison` | Сравнивает два объекта на глубокое равенство, включая массивы (с учетом порядка). |
|
|
34
|
-
| `generateUniqueKey` | Генерирует уникальный ключ для произвольного JavaScript объекта с использованием хэширования. |
|
|
35
|
-
| `unlink` | Удаляет связь или ссылку между элементами или объектами. |
|
|
36
|
-
| `textParserUrl` | Разбирает текст для извлечения и обработки URL. |
|
|
37
|
-
| `memoize` | Запоминает результаты вызова функции, чтобы оптимизировать её производительность. |
|
|
38
|
-
| `retry` | Повторяет выполнение функции при неудаче, например, при временных сбоях. |
|
|
39
|
-
| `unique` | Возвращает массив, содержащий только уникальные элементы исходного массива. |
|
|
40
|
-
| `parseQueryString` | Преобразует строку запроса URL в объект с параметрами и их значениями. |
|
|
41
|
-
| `groupBy` | Группирует элементы массива по заданному критерию. |
|
|
42
|
-
| `orderBy` | Сортирует массив объектов по указанным вложенным ключам и направлениям. |
|
|
43
|
-
| `parseVersionString` | Преобразует строку версии в объект JSON, разделяя её на основные части версии. |
|
|
44
|
-
| `parseVersionString` | Преобразует строку версии в объект JSON, разделяя её на основные части версии. |
|
|
1
|
+
## Utils
|
|
2
|
+
[](https://www.npmjs.com/package/@minsize/utils)
|
|
3
|
+
|
|
4
|
+
```
|
|
5
|
+
npm i @minsize/utils
|
|
6
|
+
|
|
7
|
+
yarn add @minsize/utils
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
| Функция | Описание |
|
|
12
|
+
| --------------------- | --------------------------------------------------------------------------------------------- |
|
|
13
|
+
| `chunks` | Разбивает массив на части заданного размера. |
|
|
14
|
+
| `clamp` | Ограничивает число указанным минимальным и максимальным значением. |
|
|
15
|
+
| `decWord` | Возвращает строку с правильным окончанием слова в зависимости от числа. |
|
|
16
|
+
| `alignTo` | Возвращает выровненное число. |
|
|
17
|
+
| `toShort` | Возвращает строку, представляющую число в сокращенной форме. |
|
|
18
|
+
| `timeAgo` | Возвращает строку, описывающую время, прошедшее с момента отметки времени. |
|
|
19
|
+
| `formatNumber` | Форматирует число в виде строки с разделителями. |
|
|
20
|
+
| `shuffle` | Перемешивает элементы массива в случайном порядке. |
|
|
21
|
+
| `random` | Генерирует случайное число в указанном диапазоне. |
|
|
22
|
+
| `randomByWeight` | Выбирает случайный элемент на основе весов из набора элементов с весами. |
|
|
23
|
+
| `isType` | Проверяет, является ли значение указанного типа. |
|
|
24
|
+
| `omit` | Возвращает новый объект без указанных ключей. |
|
|
25
|
+
| `pick` | Возвращает новый объект с выбранными ключами. |
|
|
26
|
+
| `sleep` | Ожидает указанное количество миллисекунд. |
|
|
27
|
+
| `copyText` | Позволяет копировать текст в буфер обмена. |
|
|
28
|
+
| `createLinksFromText` | Возвращает массив, содержащий фрагменты текста и результаты вызова колбэка для каждого блока. |
|
|
29
|
+
| `HSVtoRGB` | Преобразует цвет из модели HSV в модель RGB. |
|
|
30
|
+
| `RGBtoHEX` | Преобразует цвет из модели RGB в шестнадцатеричный формат (HEX). |
|
|
31
|
+
| `RGBtoHSV` | Преобразует цвет из модели RGB в модель HSV. |
|
|
32
|
+
| `HEXtoRGB` | Преобразует цвет из шестнадцатеричного формата (HEX) в модель RGB. |
|
|
33
|
+
| `comparison` | Сравнивает два объекта на глубокое равенство, включая массивы (с учетом порядка). |
|
|
34
|
+
| `generateUniqueKey` | Генерирует уникальный ключ для произвольного JavaScript объекта с использованием хэширования. |
|
|
35
|
+
| `unlink` | Удаляет связь или ссылку между элементами или объектами. |
|
|
36
|
+
| `textParserUrl` | Разбирает текст для извлечения и обработки URL. |
|
|
37
|
+
| `memoize` | Запоминает результаты вызова функции, чтобы оптимизировать её производительность. |
|
|
38
|
+
| `retry` | Повторяет выполнение функции при неудаче, например, при временных сбоях. |
|
|
39
|
+
| `unique` | Возвращает массив, содержащий только уникальные элементы исходного массива. |
|
|
40
|
+
| `parseQueryString` | Преобразует строку запроса URL в объект с параметрами и их значениями. |
|
|
41
|
+
| `groupBy` | Группирует элементы массива по заданному критерию. |
|
|
42
|
+
| `orderBy` | Сортирует массив объектов по указанным вложенным ключам и направлениям. |
|
|
43
|
+
| `parseVersionString` | Преобразует строку версии в объект JSON, разделяя её на основные части версии. |
|
|
44
|
+
| `parseVersionString` | Преобразует строку версии в объект JSON, разделяя её на основные части версии. |
|
|
45
45
|
| `EventEmitter` | Класс для работы с событиями (подписка/отписка/вызов). |
|
package/index.d.ts
CHANGED
|
@@ -155,6 +155,24 @@ declare function parseVersionString(versionString: string): {
|
|
|
155
155
|
prerelease: string | null;
|
|
156
156
|
};
|
|
157
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Elastic clamp - возвращает значение с "упругим" эффектом при выходе за границы
|
|
160
|
+
* @param value - входное значение
|
|
161
|
+
* @param min - минимальная граница
|
|
162
|
+
* @param max - максимальная граница
|
|
163
|
+
* @param options - параметры эффекта
|
|
164
|
+
* @param options.threshold - порог, после которого сопротивление усиливается (по умолчанию: 50)
|
|
165
|
+
* @param options.resistance - коэффициент сопротивления (по умолчанию: 0.2)
|
|
166
|
+
* @example
|
|
167
|
+
* elasticClamp(10, 1, 10) // return: 10
|
|
168
|
+
* elasticClamp(0, 1, 10) // return: 0.99 (примерно 1 с elastic effect)
|
|
169
|
+
* elasticClamp(11, 1, 10) // return: 10.99 (примерно 10 + elastic effect)
|
|
170
|
+
*/
|
|
171
|
+
declare const elasticClamp: (value: number, min: number, max: number, options?: {
|
|
172
|
+
threshold?: number;
|
|
173
|
+
resistance?: number;
|
|
174
|
+
}) => number;
|
|
175
|
+
|
|
158
176
|
/**
|
|
159
177
|
*
|
|
160
178
|
* @example
|
|
@@ -211,8 +229,8 @@ declare const RGBtoHSV: (r: number, g: number, b: number) => [number, number, nu
|
|
|
211
229
|
|
|
212
230
|
declare const HEXtoRGB: (hex: string) => [number, number, number];
|
|
213
231
|
|
|
214
|
-
type Callback = (...args:
|
|
215
|
-
declare class EventEmitter {
|
|
232
|
+
type Callback<T extends unknown[] = unknown[]> = (...args: T) => void;
|
|
233
|
+
declare class EventEmitter<TEvents extends Record<string, unknown[]>> {
|
|
216
234
|
e: Record<string, Callback[]>;
|
|
217
235
|
/**
|
|
218
236
|
* Подписка на событие
|
|
@@ -220,31 +238,31 @@ declare class EventEmitter {
|
|
|
220
238
|
* @param callback - Функция-обработчик
|
|
221
239
|
* @returns Функция для отписки
|
|
222
240
|
*/
|
|
223
|
-
on(name:
|
|
241
|
+
on<TEventName extends keyof TEvents & string>(name: TEventName, callback: Callback<TEvents[TEventName]>): () => void;
|
|
224
242
|
/**
|
|
225
243
|
* Отписка от события
|
|
226
244
|
* @param name - Имя события
|
|
227
245
|
* @param callback - Функция-обработчик для удаления
|
|
228
246
|
*/
|
|
229
|
-
off(name:
|
|
247
|
+
off<TEventName extends keyof TEvents & string>(name: TEventName, callback: Callback<TEvents[TEventName]>): void;
|
|
230
248
|
/**
|
|
231
249
|
* Инициация события
|
|
232
250
|
* @param name - Имя события
|
|
233
251
|
* @param args - Аргументы для обработчиков
|
|
234
252
|
*/
|
|
235
|
-
emit(name:
|
|
253
|
+
emit<TEventName extends keyof TEvents & string>(name: TEventName, ...args: TEvents[TEventName]): void;
|
|
236
254
|
/**
|
|
237
255
|
* Подписка на событие один раз
|
|
238
256
|
* @param name - Имя события
|
|
239
257
|
* @param callback - Функция-обработчик
|
|
240
258
|
* @returns Функция для отписки
|
|
241
259
|
*/
|
|
242
|
-
once(name:
|
|
260
|
+
once<TEventName extends keyof TEvents & string>(name: TEventName, callback: Callback<TEvents[TEventName]>): () => void;
|
|
243
261
|
/**
|
|
244
262
|
* Полная очистка всех подписчиков
|
|
245
263
|
* @param name - Опциональное имя события (если не указано - очищаем все)
|
|
246
264
|
*/
|
|
247
|
-
clear(name?:
|
|
265
|
+
clear<TEventName extends keyof TEvents & string>(name?: TEventName): void;
|
|
248
266
|
}
|
|
249
267
|
|
|
250
|
-
export { EventEmitter, HEXtoRGB, HSVtoRGB, RGBtoHEX, RGBtoHSV, alignTo, chunks, clamp, comparison, copyText, createLinksFromText, decWord, formatNumber, generateUniqueKey, groupBy, isType, memoize, omit, orderBy, parseQueryString, parseVersionString, pick, random, randomByWeight, retry, shuffle, sleep, textParserUrl, timeAgo, toShort, unique, unlink };
|
|
268
|
+
export { EventEmitter, HEXtoRGB, HSVtoRGB, RGBtoHEX, RGBtoHSV, alignTo, chunks, clamp, comparison, copyText, createLinksFromText, decWord, elasticClamp, formatNumber, generateUniqueKey, groupBy, isType, memoize, omit, orderBy, parseQueryString, parseVersionString, pick, random, randomByWeight, retry, shuffle, sleep, textParserUrl, timeAgo, toShort, unique, unlink };
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const e=(e,t)=>t[e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2];function t(e,t,r){if(!r){const e=new Date;r=e.getDate()*e.getFullYear()*(e.getHours()??1)*e.getMilliseconds()}const n=function(e){const t=2**32;let r=e;return function(){var e;return r=(1664525*r+1013904223)%t,e=r,e^=e>>>21,r=(e^=e<<35)^e>>>4,(r>>>0)/t}}(r);return function(e,t,r){if(t>r)throw new Error("Минимальная граница не может быть больше максимальной.");return Math.floor(e()*(r-t+1))+t}(n,e,t)}const r={date:e=>e instanceof Date,regexp:e=>e instanceof RegExp,error:e=>e instanceof Error,map:e=>e instanceof Map,set:e=>e instanceof Set,weakmap:e=>e instanceof WeakMap,weakset:e=>e instanceof WeakSet,promise:e=>e instanceof Promise,buffer:e=>e instanceof Buffer,undefined:e=>void 0===e,string:e=>"string"==typeof e,bigint:e=>"bigint"==typeof e,number:e=>"number"==typeof e&&!isNaN(e),nan:e=>"number"==typeof e&&isNaN(e),boolean:e=>"boolean"==typeof e,array:e=>Array.isArray(e),object:e=>"object"==typeof e&&!Array.isArray(e)&&null!==e,function:e=>"function"==typeof e,null:e=>null===e,symbol:e=>"symbol"==typeof e,unknown:()=>!0};const n=(e,t)=>{if(e===t)return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return e===t;if("[object Map]"===Object.prototype.toString.call(e)&&"[object Map]"===Object.prototype.toString.call(t))return o(e,t);const r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let o of r){if(!t.hasOwnProperty(o))return!1;const r=e[o],s=t[o];if(Array.isArray(r)&&Array.isArray(s)){if(r.length!==s.length)return!1;for(let e=0;e<r.length;e++)if(!n(r[e],s[e]))return!1}else if(!n(r,s))return!1}return!0},o=(e,t)=>{if(e.size!==t.size)return!1;for(const[r,o]of e){if(!t.has(r))return!1;if(!n(t.get(r),o))return!1}return!0},s=e=>Object.prototype.toString.call(e),c=(e,t)=>{switch(t||s(t)){case"[object Number]":return Number(String(e));case"[object String]":return String(e);case"[object BigInt]":return BigInt(String(e));case"[object Map]":return new Map(e);case"[object Set]":return new Set(e);default:return e}},a=e=>{const t=[];for(const r of e){const e=s(r);"[object Array]"===e?t.push(a(r)):"[object Object]"===e?t.push(i(r)):t.push(c(r))}return t},i=e=>{const t={},r=Object.keys(e);for(const n of r){const r=s(e[n]);t[n]="[object Array]"===r?a(e[n]):"[object Object]"===r?i(e[n]):e[n]}return t},u=new RegExp(/(?:https?:\/\/)?(?:www\.)?([А-Яа-яa-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*\.(?:ru|com|org|net|me|su|рф|biz|info|co|uk|de|fr|jp|cn|es|it|ca|au|nl|se|no|dk|fi|pl|at|ch|be|cz|ie|pt|ro|hu|gr|sk|bg|hr|si|lt|lv|ee|is|mt|lu|li|mc|sm|va|ad|al|ba|mk|me|rs|tr|ua|by|kz|uz|am|ge|az|tm|kg|tj|md|kg|tj|af|dz|bh|eg|iq|ir|jo|kw|lb|ly|ma|om|ps|qa|sa|sd|sy|tn|ae|ye|ar|bo|br|cl|co|ec|gf|gy|pe|py|sr|uy|ve|ag|ai|aw|bb|bm|bs|bz|ca|cr|cu|dm|do|gd|gp|gt|hn|ht|jm|kn|ky|lc|ms|mx|ni|pa|pr|sv|tc|tt|vc|vg|vi|an|aq|as|fj|fm|gu|hm|id|ki|mh|mp|nc|nf|nr|nu|pf|pg|pw|sb|tk|to|tv|vu|wf|ws)(?:\/[a-zA-Z0-9._~:\/?#[\]@!$&'()*+,;=-]*)?)(?:\s)/),l=new RegExp(/(?:https?:\/\/)(?:www\.)?([А-Яа-яa-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*\.(?:ru|com|org|net|me|su|рф|biz|info|co|uk|de|fr|jp|cn|es|it|ca|au|nl|se|no|dk|fi|pl|at|ch|be|cz|ie|pt|ro|hu|gr|sk|bg|hr|si|lt|lv|ee|is|mt|lu|li|mc|sm|va|ad|al|ba|mk|me|rs|tr|ua|by|kz|uz|am|ge|az|tm|kg|tj|md|kg|tj|af|dz|bh|eg|iq|ir|jo|kw|lb|ly|ma|om|ps|qa|sa|sd|sy|tn|ae|ye|ar|bo|br|cl|co|ec|gf|gy|pe|py|sr|uy|ve|ag|ai|aw|bb|bm|bs|bz|ca|cr|cu|dm|do|gd|gp|gt|hn|ht|jm|kn|ky|lc|ms|mx|ni|pa|pr|sv|tc|tt|vc|vg|vi|an|aq|as|fj|fm|gu|hm|id|ki|mh|mp|nc|nf|nr|nu|pf|pg|pw|sb|tk|to|tv|vu|wf|ws)(?:\/[a-zA-Z0-9._~:\/?#[\]@!$&'()*+,;=-]*)?)(?:\s)/),f=e=>e;function p(e,t){return t.split(".").reduce(((e,t)=>e?e[t]:void 0),e)}const g=e=>{const t=e.toString(16);return 1==t.length?"0"+t:t};var h=Object.defineProperty,b=(e,t,r)=>(((e,t,r)=>{t in e?h(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r})(e,"symbol"!=typeof t?t+"":t,r),r);exports.EventEmitter=class{constructor(){b(this,"e",{})}on(e,t){return this.e[e]||(this.e[e]=[]),this.e[e].push(t),()=>this.off(e,t)}off(e,t){if(!this.e[e])return;let r=this.e[e].indexOf(t);-1!==r&&(this.e[e].splice(r,1),0===this.e[e].length&&delete this.e[e])}emit(e,...t){if(!this.e[e])return;let r=this.e[e].slice();for(let n of r)try{n(...t)}catch(t){console.error(`Ошибка в обработчике события ${e}:`,t)}}once(e,t){let r=(...n)=>{this.off(e,r),t(...n)};return this.on(e,r)}clear(e){e?delete this.e[e]:this.e={}}},exports.HEXtoRGB=e=>{if(3===(e=e.replace("#","")).length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),6!==e.length)return[0,0,0];const t=parseInt(e.substring(0,2),16),r=parseInt(e.substring(2,4),16),n=parseInt(e.substring(4,6),16);return isNaN(t)||isNaN(r)||isNaN(n)||t<0||t>255||r<0||r>255||n<0||n>255?[0,0,0]:[t,r,n]},exports.HSVtoRGB=(e,t,r)=>{var n,o,s,c,a,i,u,l;switch(i=r*(1-t),u=r*(1-(a=6*e-(c=Math.floor(6*e)))*t),l=r*(1-(1-a)*t),c%6){case 0:n=r,o=l,s=i;break;case 1:n=u,o=r,s=i;break;case 2:n=i,o=r,s=l;break;case 3:n=i,o=u,s=r;break;case 4:n=l,o=i,s=r;break;case 5:n=r,o=i,s=u}return[Math.round(255*n),Math.round(255*o),Math.round(255*s)]},exports.RGBtoHEX=(e,t,r)=>"#"+g(e)+g(t)+g(r),exports.RGBtoHSV=(e,t,r)=>{var n=Math.max(e,t,r),o=Math.min(e,t,r),s=n-o,c=0,a=0===n?0:s/n,i=n/255;switch(n){case o:c=0;break;case e:c=t-r+s*(t<r?6:0),c/=6*s;break;case t:c=r-e+2*s,c/=6*s;break;case r:c=e-t+4*s,c/=6*s}return[c,a,i]},exports.alignTo=function(e,t){return e<=0?t:e+(t-e%t)%t},exports.chunks=(e,t)=>{const r=[];for(let n=0;n<t.length;n+=e)r.push(t.slice(n,n+e));return r},exports.clamp=(e,t,r)=>e>t?e<r?e:r:t,exports.comparison=n,exports.copyText=e=>{if(e){try{navigator.clipboard?.writeText(e)}catch{}try{var t=document.createElement("input");t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}catch{}}},exports.createLinksFromText=(e,t)=>{const r=[],n=/{{([^}]+):([^}]+)}}/g;let o,s=0;for(;null!==(o=n.exec(e));)r.push(e.substring(s,o.index)),s=o.index+o[0].length,r.push({key:o[1],text:o[2]});return r.push(e.substring(s)),r.map((e=>"string"==typeof e?e:t(e.key,e.text)))},exports.decWord=e,exports.formatNumber=e=>(e||0).toString().replace(/\B(?=(\d{3})+(?!\d))/g,"."),exports.generateUniqueKey=e=>{const t=e=>{if("string"==typeof e||"number"==typeof e||"boolean"==typeof e||null===e)return JSON.stringify(e);if(Array.isArray(e))return"["+e.map(t).join(",")+"]";if("object"==typeof e){const r=Object.keys(e).sort();let n="{";for(let o=0;o<r.length;o++){const s=r[o];n+=JSON.stringify(s)+":"+t(e[s]),o<r.length-1&&(n+=",")}return n+="}",n}return String(e)},r=e=>{let t=0;if(0===e.length)return t;for(let r=0;r<e.length;r++){t=(t<<5)-t+e.charCodeAt(r),t|=0}return t};try{const n=t(e);return r(n).toString(16)}catch(t){return console.warn(`Object could not be fully stringified. Using a simple string conversion. Error: ${t}`),r(String(e)).toString(16)}},exports.groupBy=function(e,t){return e.reduce(((e,r)=>{const n=t(r);return e[n]||(e[n]=[]),e[n].push(r),e}),{})},exports.isType=function(e,t){for(const[n,o]of Object.entries(r))if(o(e))return void 0!==t?n===t:n;return void 0===t&&"unknown"},exports.memoize=function(e){const t=new Map;return function(...r){const n=JSON.stringify(r);if(t.has(n))return t.get(n);const o=e(...r);return t.set(n,o),o}},exports.omit=function(e,t){return Object.keys(e).reduce(((r,n)=>(t.includes(n)||(r[n]=e[n]),r)),{})},exports.orderBy=function(e,t){const r=Object.keys(t);return e.slice().sort(((e,n)=>{for(const o of r){const r="desc"===t[o]?-1:1,s=p(e,o),c=p(n,o);if(s<c)return-r;if(s>c)return r}return 0}))},exports.parseQueryString=function(e){const t={},r=(e.startsWith("?")?e.slice(1):e).split("&");for(const e of r){const[r,n]=e.split("=");if(r){const e=decodeURIComponent(r),o=n?decodeURIComponent(n):"";t[e]=o}}return t},exports.parseVersionString=function(e){const t=e.match(/^(\d+|\*)\.(\d+|\*)\.(\d+|\*)(?:-([a-zA-Z0-9-.]+))?$/);if(!t)throw new Error("Invalid version string");const[,r,n,o,s]=t,c=e=>"*"===e?"*":parseInt(e,10);return{major:c(r),minor:c(n),patch:c(o),prerelease:s||null}},exports.pick=function(e,t){return Object.keys(e).reduce(((r,n)=>(t.includes(n)&&(r[n]=e[n]),r)),{})},exports.random=t,exports.randomByWeight=function(e,r){let n=0;for(const t in e)n+=e[t];const o=t(0,n,r);let s=0;for(const t in e)if(s+=e[t],o<s)return t;const c=Object.keys(e);return c[t(0,c.length-1,r)]},exports.retry=function(e,t,r){return new Promise(((n,o)=>{const s=t=>{e().then(n).catch((e=>{0===t?o(e):(console.log(`Retrying... attempts left: ${t}`),setTimeout((()=>s(t-1)),r))}))};s(t)}))},exports.shuffle=(e,r)=>{for(let n=e.length-1;n>0;n--){const o=t(0,n,r);[e[n],e[o]]=[e[o],e[n]]}return e},exports.sleep=async e=>await new Promise((t=>setTimeout(t,e))),exports.textParserUrl=(e,t)=>{const r=t?.onToken??f,n=t?.requireProtocol??!1,o=t?.regex??n?l:u,s=[];let c=e+" ",a=o.exec(c);for(;a;){const e=a[0].trim(),t=a.index;t>0&&(s.push(r({type:"raw",value:c.substring(0,t)})),c=c.substring(t)),s.push(r({type:"url",value:e})),c=c.substring(e.length),a=o.exec(c)}return c.length>0&&s.push(r({type:"raw",value:c})),s},exports.timeAgo=t=>{if(!t)return"только что";const r=new Date(t),n=Math.floor((Date.now()-r.getTime())/1e3),o=()=>new Intl.DateTimeFormat("RU-ru",{day:"numeric",month:"short"}).format(r).replace(".",""),s=()=>r.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"}),c=(t,r,n)=>Array.isArray(t)?`${n} ${e(n,t)} ${r}`:`${t} ${r}`;switch(!0){case n<0:return"скоро";case n<60:return c(["секунду","секунды","секунд"],"назад",n);case n<3600:return c(["минуту","минуты","минут"],"назад",Math.floor(n/60));case n<7200:return c("час","назад",Math.floor(n/3600));case n<10800:return c("два часа","назад",Math.floor(n/3600));case n<14400:return c("три часа","назад",Math.floor(n/3600));case n<86400:return c(`сегодня в ${s()}`,"",Math.floor(n/3600));case n<172800:return c(`вчера в ${s()}`,"",Math.floor(n/86400));case n<259200:return c("два дня","назад",Math.floor(n/86400));case n<345600:return c("три дня","назад",Math.floor(n/86400));case n<31536e3:return c(`${o()} в ${s()}`,"",Math.floor(n/86400));case n>=31536e3:return c(`${o()} ${r.getFullYear()} г.`,"",Math.floor(n/31536e3))}return"только что"},exports.toShort=(e,t,r=1)=>{const n=t||["","k","M","G","T","P"],o=e<0,s=Math.abs(e),c=Math.log10(s)/3|0,a=s/10**(3*c);return parseFloat(`${o?"-":""}${a%1?(Math.floor(10*a)/10).toFixed(r):a}`)+n[c]},exports.unique=function(e){return Array.from(new Set(e))},exports.unlink=e=>{switch(s(e)){case"[object Array]":return a(e);case"[object Object]":return i(e);default:return c(e)}};
|
|
1
|
+
"use strict";const t=(t,e)=>e[t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2];function e(t,e,r){if(!r){const t=new Date;r=t.getDate()*t.getFullYear()*(t.getHours()??1)*t.getMilliseconds()}const n=function(t){const e=2**32;let r=t;return function(){var t;return r=(1664525*r+1013904223)%e,t=r,t^=t>>>21,r=(t^=t<<35)^t>>>4,(r>>>0)/e}}(r);return function(t,e,r){if(e>r)throw new Error("Минимальная граница не может быть больше максимальной.");return Math.floor(t()*(r-e+1))+e}(n,t,e)}const r={date:t=>t instanceof Date,regexp:t=>t instanceof RegExp,error:t=>t instanceof Error,map:t=>t instanceof Map,set:t=>t instanceof Set,weakmap:t=>t instanceof WeakMap,weakset:t=>t instanceof WeakSet,promise:t=>t instanceof Promise,buffer:t=>t instanceof Buffer,undefined:t=>void 0===t,string:t=>"string"==typeof t,bigint:t=>"bigint"==typeof t,number:t=>"number"==typeof t&&!isNaN(t),nan:t=>"number"==typeof t&&isNaN(t),boolean:t=>"boolean"==typeof t,array:t=>Array.isArray(t),object:t=>"object"==typeof t&&!Array.isArray(t)&&null!==t,function:t=>"function"==typeof t,null:t=>null===t,symbol:t=>"symbol"==typeof t,unknown:()=>!0};const n=(t,e)=>{if(t===e)return!0;if("object"!=typeof t||null===t||"object"!=typeof e||null===e)return t===e;if("[object Map]"===Object.prototype.toString.call(t)&&"[object Map]"===Object.prototype.toString.call(e))return o(t,e);const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!1;for(let o of r){if(!e.hasOwnProperty(o))return!1;const r=t[o],s=e[o];if(Array.isArray(r)&&Array.isArray(s)){if(r.length!==s.length)return!1;for(let t=0;t<r.length;t++)if(!n(r[t],s[t]))return!1}else if(!n(r,s))return!1}return!0},o=(t,e)=>{if(t.size!==e.size)return!1;for(const[r,o]of t){if(!e.has(r))return!1;if(!n(e.get(r),o))return!1}return!0},s=t=>Object.prototype.toString.call(t),c=(t,e)=>{switch(e||s(e)){case"[object Number]":return Number(String(t));case"[object String]":return String(t);case"[object BigInt]":return BigInt(String(t));case"[object Map]":return new Map(t);case"[object Set]":return new Set(t);default:return t}},a=t=>{const e=[];for(const r of t){const t=s(r);"[object Array]"===t?e.push(a(r)):"[object Object]"===t?e.push(i(r)):e.push(c(r))}return e},i=t=>{const e={},r=Object.keys(t);for(const n of r){const r=s(t[n]);e[n]="[object Array]"===r?a(t[n]):"[object Object]"===r?i(t[n]):t[n]}return e},u=new RegExp(/(?:https?:\/\/)?(?:www\.)?([А-Яа-яa-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*\.(?:ru|com|org|net|me|su|рф|biz|info|co|uk|de|fr|jp|cn|es|it|ca|au|nl|se|no|dk|fi|pl|at|ch|be|cz|ie|pt|ro|hu|gr|sk|bg|hr|si|lt|lv|ee|is|mt|lu|li|mc|sm|va|ad|al|ba|mk|me|rs|tr|ua|by|kz|uz|am|ge|az|tm|kg|tj|md|kg|tj|af|dz|bh|eg|iq|ir|jo|kw|lb|ly|ma|om|ps|qa|sa|sd|sy|tn|ae|ye|ar|bo|br|cl|co|ec|gf|gy|pe|py|sr|uy|ve|ag|ai|aw|bb|bm|bs|bz|ca|cr|cu|dm|do|gd|gp|gt|hn|ht|jm|kn|ky|lc|ms|mx|ni|pa|pr|sv|tc|tt|vc|vg|vi|an|aq|as|fj|fm|gu|hm|id|ki|mh|mp|nc|nf|nr|nu|pf|pg|pw|sb|tk|to|tv|vu|wf|ws)(?:\/[a-zA-Z0-9._~:\/?#[\]@!$&'()*+,;=-]*)?)(?:\s)/),f=new RegExp(/(?:https?:\/\/)(?:www\.)?([А-Яа-яa-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*\.(?:ru|com|org|net|me|su|рф|biz|info|co|uk|de|fr|jp|cn|es|it|ca|au|nl|se|no|dk|fi|pl|at|ch|be|cz|ie|pt|ro|hu|gr|sk|bg|hr|si|lt|lv|ee|is|mt|lu|li|mc|sm|va|ad|al|ba|mk|me|rs|tr|ua|by|kz|uz|am|ge|az|tm|kg|tj|md|kg|tj|af|dz|bh|eg|iq|ir|jo|kw|lb|ly|ma|om|ps|qa|sa|sd|sy|tn|ae|ye|ar|bo|br|cl|co|ec|gf|gy|pe|py|sr|uy|ve|ag|ai|aw|bb|bm|bs|bz|ca|cr|cu|dm|do|gd|gp|gt|hn|ht|jm|kn|ky|lc|ms|mx|ni|pa|pr|sv|tc|tt|vc|vg|vi|an|aq|as|fj|fm|gu|hm|id|ki|mh|mp|nc|nf|nr|nu|pf|pg|pw|sb|tk|to|tv|vu|wf|ws)(?:\/[a-zA-Z0-9._~:\/?#[\]@!$&'()*+,;=-]*)?)(?:\s)/),l=t=>t;function p(t,e){return e.split(".").reduce(((t,e)=>t?t[e]:void 0),t)}const h=t=>{const e=t.toString(16);return 1==e.length?"0"+e:e};var g=Object.defineProperty,b=(t,e,r)=>(((t,e,r)=>{e in t?g(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r})(t,"symbol"!=typeof e?e+"":e,r),r);exports.EventEmitter=class{constructor(){b(this,"e",{})}on(t,e){return this.e[t]||(this.e[t]=[]),this.e[t].push(e),()=>this.off(t,e)}off(t,e){if(!this.e[t])return;const r=this.e[t].findIndex((t=>t===e));-1!==r&&(this.e[t].splice(r,1),0===this.e[t].length&&delete this.e[t])}emit(t,...e){if(!this.e[t])return;const r=this.e[t].slice();for(const n of r)try{n(...e)}catch(e){console.error(`Ошибка в обработчике события ${t}:`,e)}}once(t,e){const r=(...n)=>{this.off(t,r),e(...n)};return this.on(t,r)}clear(t){t?delete this.e[t]:this.e={}}},exports.HEXtoRGB=t=>{if(3===(t=t.replace("#","")).length&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),6!==t.length)return[0,0,0];const e=parseInt(t.substring(0,2),16),r=parseInt(t.substring(2,4),16),n=parseInt(t.substring(4,6),16);return isNaN(e)||isNaN(r)||isNaN(n)||e<0||e>255||r<0||r>255||n<0||n>255?[0,0,0]:[e,r,n]},exports.HSVtoRGB=(t,e,r)=>{var n,o,s,c,a,i,u,f;switch(i=r*(1-e),u=r*(1-(a=6*t-(c=Math.floor(6*t)))*e),f=r*(1-(1-a)*e),c%6){case 0:n=r,o=f,s=i;break;case 1:n=u,o=r,s=i;break;case 2:n=i,o=r,s=f;break;case 3:n=i,o=u,s=r;break;case 4:n=f,o=i,s=r;break;case 5:n=r,o=i,s=u}return[Math.round(255*n),Math.round(255*o),Math.round(255*s)]},exports.RGBtoHEX=(t,e,r)=>"#"+h(t)+h(e)+h(r),exports.RGBtoHSV=(t,e,r)=>{var n=Math.max(t,e,r),o=Math.min(t,e,r),s=n-o,c=0,a=0===n?0:s/n,i=n/255;switch(n){case o:c=0;break;case t:c=e-r+s*(e<r?6:0),c/=6*s;break;case e:c=r-t+2*s,c/=6*s;break;case r:c=t-e+4*s,c/=6*s}return[c,a,i]},exports.alignTo=function(t,e){return t<=0?e:t+(e-t%e)%e},exports.chunks=(t,e)=>{const r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r},exports.clamp=(t,e,r)=>t>e?t<r?t:r:e,exports.comparison=n,exports.copyText=t=>{if(t){try{navigator.clipboard?.writeText(t)}catch{}try{var e=document.createElement("input");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}catch{}}},exports.createLinksFromText=(t,e)=>{const r=[],n=/{{([^}]+):([^}]+)}}/g;let o,s=0;for(;null!==(o=n.exec(t));)r.push(t.substring(s,o.index)),s=o.index+o[0].length,r.push({key:o[1],text:o[2]});return r.push(t.substring(s)),r.map((t=>"string"==typeof t?t:e(t.key,t.text)))},exports.decWord=t,exports.elasticClamp=(t,e,r,n={})=>{const{threshold:o=50,resistance:s=.2}=n;return t<e?e-o*(1-Math.exp((e-t)*s/o)):t>r?r+o*(1-Math.exp((t-r)*s/o)):t},exports.formatNumber=t=>(t||0).toString().replace(/\B(?=(\d{3})+(?!\d))/g,"."),exports.generateUniqueKey=t=>{const e=t=>{if("string"==typeof t||"number"==typeof t||"boolean"==typeof t||null===t)return JSON.stringify(t);if(Array.isArray(t))return"["+t.map(e).join(",")+"]";if("object"==typeof t){const r=Object.keys(t).sort();let n="{";for(let o=0;o<r.length;o++){const s=r[o];n+=JSON.stringify(s)+":"+e(t[s]),o<r.length-1&&(n+=",")}return n+="}",n}return String(t)},r=t=>{let e=0;if(0===t.length)return e;for(let r=0;r<t.length;r++){e=(e<<5)-e+t.charCodeAt(r),e|=0}return e};try{const n=e(t);return r(n).toString(16)}catch(e){return console.warn(`Object could not be fully stringified. Using a simple string conversion. Error: ${e}`),r(String(t)).toString(16)}},exports.groupBy=function(t,e){return t.reduce(((t,r)=>{const n=e(r);return t[n]||(t[n]=[]),t[n].push(r),t}),{})},exports.isType=function(t,e){for(const[n,o]of Object.entries(r))if(o(t))return void 0!==e?n===e:n;return void 0===e&&"unknown"},exports.memoize=function(t){const e=new Map;return function(...r){const n=JSON.stringify(r);if(e.has(n))return e.get(n);const o=t(...r);return e.set(n,o),o}},exports.omit=function(t,e){return Object.keys(t).reduce(((r,n)=>(e.includes(n)||(r[n]=t[n]),r)),{})},exports.orderBy=function(t,e){const r=Object.keys(e);return t.slice().sort(((t,n)=>{for(const o of r){const r="desc"===e[o]?-1:1,s=p(t,o),c=p(n,o);if(s<c)return-r;if(s>c)return r}return 0}))},exports.parseQueryString=function(t){const e={},r=(t.startsWith("?")?t.slice(1):t).split("&");for(const t of r){const[r,n]=t.split("=");if(r){const t=decodeURIComponent(r),o=n?decodeURIComponent(n):"";e[t]=o}}return e},exports.parseVersionString=function(t){const e=t.match(/^(\d+|\*)\.(\d+|\*)\.(\d+|\*)(?:-([a-zA-Z0-9-.]+))?$/);if(!e)throw new Error("Invalid version string");const[,r,n,o,s]=e,c=t=>"*"===t?"*":parseInt(t,10);return{major:c(r),minor:c(n),patch:c(o),prerelease:s||null}},exports.pick=function(t,e){return Object.keys(t).reduce(((r,n)=>(e.includes(n)&&(r[n]=t[n]),r)),{})},exports.random=e,exports.randomByWeight=function(t,r){let n=0;for(const e in t)n+=t[e];const o=e(0,n,r);let s=0;for(const e in t)if(s+=t[e],o<s)return e;const c=Object.keys(t);return c[e(0,c.length-1,r)]},exports.retry=function(t,e,r){return new Promise(((n,o)=>{const s=e=>{t().then(n).catch((t=>{0===e?o(t):(console.log(`Retrying... attempts left: ${e}`),setTimeout((()=>s(e-1)),r))}))};s(e)}))},exports.shuffle=(t,r)=>{for(let n=t.length-1;n>0;n--){const o=e(0,n,r);[t[n],t[o]]=[t[o],t[n]]}return t},exports.sleep=async t=>await new Promise((e=>setTimeout(e,t))),exports.textParserUrl=(t,e)=>{const r=e?.onToken??l,n=e?.requireProtocol??!1,o=e?.regex??n?f:u,s=[];let c=t+" ",a=o.exec(c);for(;a;){const t=a[0].trim(),e=a.index;e>0&&(s.push(r({type:"raw",value:c.substring(0,e)})),c=c.substring(e)),s.push(r({type:"url",value:t})),c=c.substring(t.length),a=o.exec(c)}return c.length>0&&s.push(r({type:"raw",value:c})),s},exports.timeAgo=e=>{if(!e)return"только что";const r=new Date(e),n=Math.floor((Date.now()-r.getTime())/1e3),o=()=>new Intl.DateTimeFormat("RU-ru",{day:"numeric",month:"short"}).format(r).replace(".",""),s=()=>r.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"}),c=(e,r,n)=>Array.isArray(e)?`${n} ${t(n,e)} ${r}`:`${e} ${r}`;switch(!0){case n<0:return"скоро";case n<60:return c(["секунду","секунды","секунд"],"назад",n);case n<3600:return c(["минуту","минуты","минут"],"назад",Math.floor(n/60));case n<7200:return c("час","назад",Math.floor(n/3600));case n<10800:return c("два часа","назад",Math.floor(n/3600));case n<14400:return c("три часа","назад",Math.floor(n/3600));case n<86400:return c(`сегодня в ${s()}`,"",Math.floor(n/3600));case n<172800:return c(`вчера в ${s()}`,"",Math.floor(n/86400));case n<259200:return c("два дня","назад",Math.floor(n/86400));case n<345600:return c("три дня","назад",Math.floor(n/86400));case n<31536e3:return c(`${o()} в ${s()}`,"",Math.floor(n/86400));case n>=31536e3:return c(`${o()} ${r.getFullYear()} г.`,"",Math.floor(n/31536e3))}return"только что"},exports.toShort=(t,e,r=1)=>{const n=e||["","k","M","G","T","P"],o=t<0,s=Math.abs(t),c=Math.log10(s)/3|0,a=s/10**(3*c);return parseFloat(`${o?"-":""}${a%1?(Math.floor(10*a)/10).toFixed(r):a}`)+n[c]},exports.unique=function(t){return Array.from(new Set(t))},exports.unlink=t=>{switch(s(t)){case"[object Array]":return a(t);case"[object Object]":return i(t);default:return c(t)}};
|
package/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const t=(t,e,r)=>t>e?t<r?t:r:e,e=(t,e)=>e[t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2];function r(t,e){return t<=0?e:t+(e-t%e)%e}const n=(t,e,r=1)=>{const n=e||["","k","M","G","T","P"],o=t<0,s=Math.abs(t),c=Math.log10(s)/3|0,a=s/10**(3*c);return parseFloat(`${o?"-":""}${a%1?(Math.floor(10*a)/10).toFixed(r):a}`)+n[c]},o=t=>{if(!t)return"только что";const r=new Date(t),n=Math.floor((Date.now()-r.getTime())/1e3),o=()=>new Intl.DateTimeFormat("RU-ru",{day:"numeric",month:"short"}).format(r).replace(".",""),s=()=>r.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"}),c=(t,r,n)=>Array.isArray(t)?`${n} ${e(n,t)} ${r}`:`${t} ${r}`;switch(!0){case n<0:return"скоро";case n<60:return c(["секунду","секунды","секунд"],"назад",n);case n<3600:return c(["минуту","минуты","минут"],"назад",Math.floor(n/60));case n<7200:return c("час","назад",Math.floor(n/3600));case n<10800:return c("два часа","назад",Math.floor(n/3600));case n<14400:return c("три часа","назад",Math.floor(n/3600));case n<86400:return c(`сегодня в ${s()}`,"",Math.floor(n/3600));case n<172800:return c(`вчера в ${s()}`,"",Math.floor(n/86400));case n<259200:return c("два дня","назад",Math.floor(n/86400));case n<345600:return c("три дня","назад",Math.floor(n/86400));case n<31536e3:return c(`${o()} в ${s()}`,"",Math.floor(n/86400));case n>=31536e3:return c(`${o()} ${r.getFullYear()} г.`,"",Math.floor(n/31536e3))}return"только что"},s=t=>(t||0).toString().replace(/\B(?=(\d{3})+(?!\d))/g,".");function c(t,e,r){if(!r){const t=new Date;r=t.getDate()*t.getFullYear()*(t.getHours()??1)*t.getMilliseconds()}const n=function(t){const e=2**32;let r=t;return function(){var t;return r=(1664525*r+1013904223)%e,t=r,t^=t>>>21,r=(t^=t<<35)^t>>>4,(r>>>0)/e}}(r);return function(t,e,r){if(e>r)throw new Error("Минимальная граница не может быть больше максимальной.");return Math.floor(t()*(r-e+1))+e}(n,t,e)}function a(t,e){let r=0;for(const e in t)r+=t[e];const n=c(0,r,e);let o=0;for(const e in t)if(o+=t[e],n<o)return e;const s=Object.keys(t);return s[c(0,s.length-1,e)]}const i={date:t=>t instanceof Date,regexp:t=>t instanceof RegExp,error:t=>t instanceof Error,map:t=>t instanceof Map,set:t=>t instanceof Set,weakmap:t=>t instanceof WeakMap,weakset:t=>t instanceof WeakSet,promise:t=>t instanceof Promise,buffer:t=>t instanceof Buffer,undefined:t=>void 0===t,string:t=>"string"==typeof t,bigint:t=>"bigint"==typeof t,number:t=>"number"==typeof t&&!isNaN(t),nan:t=>"number"==typeof t&&isNaN(t),boolean:t=>"boolean"==typeof t,array:t=>Array.isArray(t),object:t=>"object"==typeof t&&!Array.isArray(t)&&null!==t,function:t=>"function"==typeof t,null:t=>null===t,symbol:t=>"symbol"==typeof t,unknown:()=>!0};function u(t,e){for(const[r,n]of Object.entries(i))if(n(t))return void 0!==e?r===e:r;return void 0===e&&"unknown"}function f(t,e){return Object.keys(t).reduce(((r,n)=>(e.includes(n)||(r[n]=t[n]),r)),{})}function l(t,e){return Object.keys(t).reduce(((r,n)=>(e.includes(n)&&(r[n]=t[n]),r)),{})}const h=async t=>await new Promise((e=>setTimeout(e,t))),g=t=>{if(t){try{navigator.clipboard?.writeText(t)}catch{}try{var e=document.createElement("input");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}catch{}}},p=(t,e)=>{const r=[],n=/{{([^}]+):([^}]+)}}/g;let o,s=0;for(;null!==(o=n.exec(t));)r.push(t.substring(s,o.index)),s=o.index+o[0].length,r.push({key:o[1],text:o[2]});return r.push(t.substring(s)),r.map((t=>"string"==typeof t?t:e(t.key,t.text)))},b=(t,e)=>{if(t===e)return!0;if("object"!=typeof t||null===t||"object"!=typeof e||null===e)return t===e;if("[object Map]"===Object.prototype.toString.call(t)&&"[object Map]"===Object.prototype.toString.call(e))return m(t,e);const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!1;for(let n of r){if(!e.hasOwnProperty(n))return!1;const r=t[n],o=e[n];if(Array.isArray(r)&&Array.isArray(o)){if(r.length!==o.length)return!1;for(let t=0;t<r.length;t++)if(!b(r[t],o[t]))return!1}else if(!b(r,o))return!1}return!0},m=(t,e)=>{if(t.size!==e.size)return!1;for(const[r,n]of t){if(!e.has(r))return!1;if(!b(e.get(r),n))return!1}return!0},y=t=>{const e=t=>{if("string"==typeof t||"number"==typeof t||"boolean"==typeof t||null===t)return JSON.stringify(t);if(Array.isArray(t))return"["+t.map(e).join(",")+"]";if("object"==typeof t){const r=Object.keys(t).sort();let n="{";for(let o=0;o<r.length;o++){const s=r[o];n+=JSON.stringify(s)+":"+e(t[s]),o<r.length-1&&(n+=",")}return n+="}",n}return String(t)},r=t=>{let e=0;if(0===t.length)return e;for(let r=0;r<t.length;r++){e=(e<<5)-e+t.charCodeAt(r),e|=0}return e};try{const n=e(t);return r(n).toString(16)}catch(e){return console.warn(`Object could not be fully stringified. Using a simple string conversion. Error: ${e}`),r(String(t)).toString(16)}},d=t=>Object.prototype.toString.call(t),k=(t,e)=>{switch(e||d(e)){case"[object Number]":return Number(String(t));case"[object String]":return String(t);case"[object BigInt]":return BigInt(String(t));case"[object Map]":return new Map(t);case"[object Set]":return new Set(t);default:return t}},j=t=>{const e=[];for(const r of t){const t=d(r);"[object Array]"===t?e.push(j(r)):"[object Object]"===t?e.push(w(r)):e.push(k(r))}return e},w=t=>{const e={},r=Object.keys(t);for(const n of r){const r=d(t[n]);e[n]="[object Array]"===r?j(t[n]):"[object Object]"===r?w(t[n]):t[n]}return e},v=t=>{switch(d(t)){case"[object Array]":return j(t);case"[object Object]":return w(t);default:return k(t)}},M=new RegExp(/(?:https?:\/\/)?(?:www\.)?([А-Яа-яa-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*\.(?:ru|com|org|net|me|su|рф|biz|info|co|uk|de|fr|jp|cn|es|it|ca|au|nl|se|no|dk|fi|pl|at|ch|be|cz|ie|pt|ro|hu|gr|sk|bg|hr|si|lt|lv|ee|is|mt|lu|li|mc|sm|va|ad|al|ba|mk|me|rs|tr|ua|by|kz|uz|am|ge|az|tm|kg|tj|md|kg|tj|af|dz|bh|eg|iq|ir|jo|kw|lb|ly|ma|om|ps|qa|sa|sd|sy|tn|ae|ye|ar|bo|br|cl|co|ec|gf|gy|pe|py|sr|uy|ve|ag|ai|aw|bb|bm|bs|bz|ca|cr|cu|dm|do|gd|gp|gt|hn|ht|jm|kn|ky|lc|ms|mx|ni|pa|pr|sv|tc|tt|vc|vg|vi|an|aq|as|fj|fm|gu|hm|id|ki|mh|mp|nc|nf|nr|nu|pf|pg|pw|sb|tk|to|tv|vu|wf|ws)(?:\/[a-zA-Z0-9._~:\/?#[\]@!$&'()*+,;=-]*)?)(?:\s)/),A=new RegExp(/(?:https?:\/\/)(?:www\.)?([А-Яа-яa-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*\.(?:ru|com|org|net|me|su|рф|biz|info|co|uk|de|fr|jp|cn|es|it|ca|au|nl|se|no|dk|fi|pl|at|ch|be|cz|ie|pt|ro|hu|gr|sk|bg|hr|si|lt|lv|ee|is|mt|lu|li|mc|sm|va|ad|al|ba|mk|me|rs|tr|ua|by|kz|uz|am|ge|az|tm|kg|tj|md|kg|tj|af|dz|bh|eg|iq|ir|jo|kw|lb|ly|ma|om|ps|qa|sa|sd|sy|tn|ae|ye|ar|bo|br|cl|co|ec|gf|gy|pe|py|sr|uy|ve|ag|ai|aw|bb|bm|bs|bz|ca|cr|cu|dm|do|gd|gp|gt|hn|ht|jm|kn|ky|lc|ms|mx|ni|pa|pr|sv|tc|tt|vc|vg|vi|an|aq|as|fj|fm|gu|hm|id|ki|mh|mp|nc|nf|nr|nu|pf|pg|pw|sb|tk|to|tv|vu|wf|ws)(?:\/[a-zA-Z0-9._~:\/?#[\]@!$&'()*+,;=-]*)?)(?:\s)/),z=t=>t,O=(t,e)=>{const r=e?.onToken??z,n=e?.requireProtocol??!1,o=e?.regex??n?A:M,s=[];let c=t+" ",a=o.exec(c);for(;a;){const t=a[0].trim(),e=a.index;e>0&&(s.push(r({type:"raw",value:c.substring(0,e)})),c=c.substring(e)),s.push(r({type:"url",value:t})),c=c.substring(t.length),a=o.exec(c)}return c.length>0&&s.push(r({type:"raw",value:c})),s};function S(t){const e=new Map;return function(...r){const n=JSON.stringify(r);if(e.has(n))return e.get(n);const o=t(...r);return e.set(n,o),o}}function x(t,e,r){return new Promise(((n,o)=>{const s=e=>{t().then(n).catch((t=>{0===e?o(t):(console.log(`Retrying... attempts left: ${e}`),setTimeout((()=>s(e-1)),r))}))};s(e)}))}function $(t){const e={},r=(t.startsWith("?")?t.slice(1):t).split("&");for(const t of r){const[r,n]=t.split("=");if(r){const t=decodeURIComponent(r),o=n?decodeURIComponent(n):"";e[t]=o}}return e}function N(t){const e=t.match(/^(\d+|\*)\.(\d+|\*)\.(\d+|\*)(?:-([a-zA-Z0-9-.]+))?$/);if(!e)throw new Error("Invalid version string");const[,r,n,o,s]=e,c=t=>"*"===t?"*":parseInt(t,10);return{major:c(r),minor:c(n),patch:c(o),prerelease:s||null}}const I=(t,e)=>{const r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r},T=(t,e)=>{for(let r=t.length-1;r>0;r--){const n=c(0,r,e);[t[r],t[n]]=[t[n],t[r]]}return t};function E(t){return Array.from(new Set(t))}function q(t,e){return t.reduce(((t,r)=>{const n=e(r);return t[n]||(t[n]=[]),t[n].push(r),t}),{})}function P(t,e){return e.split(".").reduce(((t,e)=>t?t[e]:void 0),t)}function R(t,e){const r=Object.keys(e);return t.slice().sort(((t,n)=>{for(const o of r){const r="desc"===e[o]?-1:1,s=P(t,o),c=P(n,o);if(s<c)return-r;if(s>c)return r}return 0}))}const Z=(t,e,r)=>{var n,o,s,c,a,i,u,f;switch(i=r*(1-e),u=r*(1-(a=6*t-(c=Math.floor(6*t)))*e),f=r*(1-(1-a)*e),c%6){case 0:n=r,o=f,s=i;break;case 1:n=u,o=r,s=i;break;case 2:n=i,o=r,s=f;break;case 3:n=i,o=u,s=r;break;case 4:n=f,o=i,s=r;break;case 5:n=r,o=i,s=u}return[Math.round(255*n),Math.round(255*o),Math.round(255*s)]},C=t=>{const e=t.toString(16);return 1==e.length?"0"+e:e},D=(t,e,r)=>"#"+C(t)+C(e)+C(r),F=(t,e,r)=>{var n=Math.max(t,e,r),o=Math.min(t,e,r),s=n-o,c=0,a=0===n?0:s/n,i=n/255;switch(n){case o:c=0;break;case t:c=e-r+s*(e<r?6:0),c/=6*s;break;case e:c=r-t+2*s,c/=6*s;break;case r:c=t-e+4*s,c/=6*s}return[c,a,i]},B=t=>{if(3===(t=t.replace("#","")).length&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),6!==t.length)return[0,0,0];const e=parseInt(t.substring(0,2),16),r=parseInt(t.substring(2,4),16),n=parseInt(t.substring(4,6),16);return isNaN(e)||isNaN(r)||isNaN(n)||e<0||e>255||r<0||r>255||n<0||n>255?[0,0,0]:[e,r,n]};var U=Object.defineProperty,J=(t,e,r)=>(((t,e,r)=>{e in t?U(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r})(t,"symbol"!=typeof e?e+"":e,r),r);class W{constructor(){J(this,"e",{})}on(t,e){return this.e[t]||(this.e[t]=[]),this.e[t].push(e),()=>this.off(t,e)}off(t,e){if(!this.e[t])return;let r=this.e[t].indexOf(e);-1!==r&&(this.e[t].splice(r,1),0===this.e[t].length&&delete this.e[t])}emit(t,...e){if(!this.e[t])return;let r=this.e[t].slice();for(let n of r)try{n(...e)}catch(e){console.error(`Ошибка в обработчике события ${t}:`,e)}}once(t,e){let r=(...n)=>{this.off(t,r),e(...n)};return this.on(t,r)}clear(t){t?delete this.e[t]:this.e={}}}export{W as EventEmitter,B as HEXtoRGB,Z as HSVtoRGB,D as RGBtoHEX,F as RGBtoHSV,r as alignTo,I as chunks,t as clamp,b as comparison,g as copyText,p as createLinksFromText,e as decWord,s as formatNumber,y as generateUniqueKey,q as groupBy,u as isType,S as memoize,f as omit,R as orderBy,$ as parseQueryString,N as parseVersionString,l as pick,c as random,a as randomByWeight,x as retry,T as shuffle,h as sleep,O as textParserUrl,o as timeAgo,n as toShort,E as unique,v as unlink};
|
|
1
|
+
const t=(t,e,r)=>t>e?t<r?t:r:e,e=(t,e)=>e[t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2];function r(t,e){return t<=0?e:t+(e-t%e)%e}const n=(t,e,r=1)=>{const n=e||["","k","M","G","T","P"],o=t<0,s=Math.abs(t),c=Math.log10(s)/3|0,a=s/10**(3*c);return parseFloat(`${o?"-":""}${a%1?(Math.floor(10*a)/10).toFixed(r):a}`)+n[c]},o=t=>{if(!t)return"только что";const r=new Date(t),n=Math.floor((Date.now()-r.getTime())/1e3),o=()=>new Intl.DateTimeFormat("RU-ru",{day:"numeric",month:"short"}).format(r).replace(".",""),s=()=>r.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"}),c=(t,r,n)=>Array.isArray(t)?`${n} ${e(n,t)} ${r}`:`${t} ${r}`;switch(!0){case n<0:return"скоро";case n<60:return c(["секунду","секунды","секунд"],"назад",n);case n<3600:return c(["минуту","минуты","минут"],"назад",Math.floor(n/60));case n<7200:return c("час","назад",Math.floor(n/3600));case n<10800:return c("два часа","назад",Math.floor(n/3600));case n<14400:return c("три часа","назад",Math.floor(n/3600));case n<86400:return c(`сегодня в ${s()}`,"",Math.floor(n/3600));case n<172800:return c(`вчера в ${s()}`,"",Math.floor(n/86400));case n<259200:return c("два дня","назад",Math.floor(n/86400));case n<345600:return c("три дня","назад",Math.floor(n/86400));case n<31536e3:return c(`${o()} в ${s()}`,"",Math.floor(n/86400));case n>=31536e3:return c(`${o()} ${r.getFullYear()} г.`,"",Math.floor(n/31536e3))}return"только что"},s=t=>(t||0).toString().replace(/\B(?=(\d{3})+(?!\d))/g,".");function c(t,e,r){if(!r){const t=new Date;r=t.getDate()*t.getFullYear()*(t.getHours()??1)*t.getMilliseconds()}const n=function(t){const e=2**32;let r=t;return function(){var t;return r=(1664525*r+1013904223)%e,t=r,t^=t>>>21,r=(t^=t<<35)^t>>>4,(r>>>0)/e}}(r);return function(t,e,r){if(e>r)throw new Error("Минимальная граница не может быть больше максимальной.");return Math.floor(t()*(r-e+1))+e}(n,t,e)}function a(t,e){let r=0;for(const e in t)r+=t[e];const n=c(0,r,e);let o=0;for(const e in t)if(o+=t[e],n<o)return e;const s=Object.keys(t);return s[c(0,s.length-1,e)]}const i={date:t=>t instanceof Date,regexp:t=>t instanceof RegExp,error:t=>t instanceof Error,map:t=>t instanceof Map,set:t=>t instanceof Set,weakmap:t=>t instanceof WeakMap,weakset:t=>t instanceof WeakSet,promise:t=>t instanceof Promise,buffer:t=>t instanceof Buffer,undefined:t=>void 0===t,string:t=>"string"==typeof t,bigint:t=>"bigint"==typeof t,number:t=>"number"==typeof t&&!isNaN(t),nan:t=>"number"==typeof t&&isNaN(t),boolean:t=>"boolean"==typeof t,array:t=>Array.isArray(t),object:t=>"object"==typeof t&&!Array.isArray(t)&&null!==t,function:t=>"function"==typeof t,null:t=>null===t,symbol:t=>"symbol"==typeof t,unknown:()=>!0};function u(t,e){for(const[r,n]of Object.entries(i))if(n(t))return void 0!==e?r===e:r;return void 0===e&&"unknown"}function f(t,e){return Object.keys(t).reduce(((r,n)=>(e.includes(n)||(r[n]=t[n]),r)),{})}function l(t,e){return Object.keys(t).reduce(((r,n)=>(e.includes(n)&&(r[n]=t[n]),r)),{})}const h=async t=>await new Promise((e=>setTimeout(e,t))),p=t=>{if(t){try{navigator.clipboard?.writeText(t)}catch{}try{var e=document.createElement("input");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}catch{}}},g=(t,e)=>{const r=[],n=/{{([^}]+):([^}]+)}}/g;let o,s=0;for(;null!==(o=n.exec(t));)r.push(t.substring(s,o.index)),s=o.index+o[0].length,r.push({key:o[1],text:o[2]});return r.push(t.substring(s)),r.map((t=>"string"==typeof t?t:e(t.key,t.text)))},b=(t,e)=>{if(t===e)return!0;if("object"!=typeof t||null===t||"object"!=typeof e||null===e)return t===e;if("[object Map]"===Object.prototype.toString.call(t)&&"[object Map]"===Object.prototype.toString.call(e))return m(t,e);const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!1;for(let n of r){if(!e.hasOwnProperty(n))return!1;const r=t[n],o=e[n];if(Array.isArray(r)&&Array.isArray(o)){if(r.length!==o.length)return!1;for(let t=0;t<r.length;t++)if(!b(r[t],o[t]))return!1}else if(!b(r,o))return!1}return!0},m=(t,e)=>{if(t.size!==e.size)return!1;for(const[r,n]of t){if(!e.has(r))return!1;if(!b(e.get(r),n))return!1}return!0},y=t=>{const e=t=>{if("string"==typeof t||"number"==typeof t||"boolean"==typeof t||null===t)return JSON.stringify(t);if(Array.isArray(t))return"["+t.map(e).join(",")+"]";if("object"==typeof t){const r=Object.keys(t).sort();let n="{";for(let o=0;o<r.length;o++){const s=r[o];n+=JSON.stringify(s)+":"+e(t[s]),o<r.length-1&&(n+=",")}return n+="}",n}return String(t)},r=t=>{let e=0;if(0===t.length)return e;for(let r=0;r<t.length;r++){e=(e<<5)-e+t.charCodeAt(r),e|=0}return e};try{const n=e(t);return r(n).toString(16)}catch(e){return console.warn(`Object could not be fully stringified. Using a simple string conversion. Error: ${e}`),r(String(t)).toString(16)}},d=t=>Object.prototype.toString.call(t),k=(t,e)=>{switch(e||d(e)){case"[object Number]":return Number(String(t));case"[object String]":return String(t);case"[object BigInt]":return BigInt(String(t));case"[object Map]":return new Map(t);case"[object Set]":return new Set(t);default:return t}},j=t=>{const e=[];for(const r of t){const t=d(r);"[object Array]"===t?e.push(j(r)):"[object Object]"===t?e.push(w(r)):e.push(k(r))}return e},w=t=>{const e={},r=Object.keys(t);for(const n of r){const r=d(t[n]);e[n]="[object Array]"===r?j(t[n]):"[object Object]"===r?w(t[n]):t[n]}return e},v=t=>{switch(d(t)){case"[object Array]":return j(t);case"[object Object]":return w(t);default:return k(t)}},M=new RegExp(/(?:https?:\/\/)?(?:www\.)?([А-Яа-яa-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*\.(?:ru|com|org|net|me|su|рф|biz|info|co|uk|de|fr|jp|cn|es|it|ca|au|nl|se|no|dk|fi|pl|at|ch|be|cz|ie|pt|ro|hu|gr|sk|bg|hr|si|lt|lv|ee|is|mt|lu|li|mc|sm|va|ad|al|ba|mk|me|rs|tr|ua|by|kz|uz|am|ge|az|tm|kg|tj|md|kg|tj|af|dz|bh|eg|iq|ir|jo|kw|lb|ly|ma|om|ps|qa|sa|sd|sy|tn|ae|ye|ar|bo|br|cl|co|ec|gf|gy|pe|py|sr|uy|ve|ag|ai|aw|bb|bm|bs|bz|ca|cr|cu|dm|do|gd|gp|gt|hn|ht|jm|kn|ky|lc|ms|mx|ni|pa|pr|sv|tc|tt|vc|vg|vi|an|aq|as|fj|fm|gu|hm|id|ki|mh|mp|nc|nf|nr|nu|pf|pg|pw|sb|tk|to|tv|vu|wf|ws)(?:\/[a-zA-Z0-9._~:\/?#[\]@!$&'()*+,;=-]*)?)(?:\s)/),A=new RegExp(/(?:https?:\/\/)(?:www\.)?([А-Яа-яa-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*\.(?:ru|com|org|net|me|su|рф|biz|info|co|uk|de|fr|jp|cn|es|it|ca|au|nl|se|no|dk|fi|pl|at|ch|be|cz|ie|pt|ro|hu|gr|sk|bg|hr|si|lt|lv|ee|is|mt|lu|li|mc|sm|va|ad|al|ba|mk|me|rs|tr|ua|by|kz|uz|am|ge|az|tm|kg|tj|md|kg|tj|af|dz|bh|eg|iq|ir|jo|kw|lb|ly|ma|om|ps|qa|sa|sd|sy|tn|ae|ye|ar|bo|br|cl|co|ec|gf|gy|pe|py|sr|uy|ve|ag|ai|aw|bb|bm|bs|bz|ca|cr|cu|dm|do|gd|gp|gt|hn|ht|jm|kn|ky|lc|ms|mx|ni|pa|pr|sv|tc|tt|vc|vg|vi|an|aq|as|fj|fm|gu|hm|id|ki|mh|mp|nc|nf|nr|nu|pf|pg|pw|sb|tk|to|tv|vu|wf|ws)(?:\/[a-zA-Z0-9._~:\/?#[\]@!$&'()*+,;=-]*)?)(?:\s)/),x=t=>t,z=(t,e)=>{const r=e?.onToken??x,n=e?.requireProtocol??!1,o=e?.regex??n?A:M,s=[];let c=t+" ",a=o.exec(c);for(;a;){const t=a[0].trim(),e=a.index;e>0&&(s.push(r({type:"raw",value:c.substring(0,e)})),c=c.substring(e)),s.push(r({type:"url",value:t})),c=c.substring(t.length),a=o.exec(c)}return c.length>0&&s.push(r({type:"raw",value:c})),s};function S(t){const e=new Map;return function(...r){const n=JSON.stringify(r);if(e.has(n))return e.get(n);const o=t(...r);return e.set(n,o),o}}function O(t,e,r){return new Promise(((n,o)=>{const s=e=>{t().then(n).catch((t=>{0===e?o(t):(console.log(`Retrying... attempts left: ${e}`),setTimeout((()=>s(e-1)),r))}))};s(e)}))}function $(t){const e={},r=(t.startsWith("?")?t.slice(1):t).split("&");for(const t of r){const[r,n]=t.split("=");if(r){const t=decodeURIComponent(r),o=n?decodeURIComponent(n):"";e[t]=o}}return e}function N(t){const e=t.match(/^(\d+|\*)\.(\d+|\*)\.(\d+|\*)(?:-([a-zA-Z0-9-.]+))?$/);if(!e)throw new Error("Invalid version string");const[,r,n,o,s]=e,c=t=>"*"===t?"*":parseInt(t,10);return{major:c(r),minor:c(n),patch:c(o),prerelease:s||null}}const I=(t,e,r,n={})=>{const{threshold:o=50,resistance:s=.2}=n;return t<e?e-o*(1-Math.exp((e-t)*s/o)):t>r?r+o*(1-Math.exp((t-r)*s/o)):t},T=(t,e)=>{const r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r},E=(t,e)=>{for(let r=t.length-1;r>0;r--){const n=c(0,r,e);[t[r],t[n]]=[t[n],t[r]]}return t};function q(t){return Array.from(new Set(t))}function P(t,e){return t.reduce(((t,r)=>{const n=e(r);return t[n]||(t[n]=[]),t[n].push(r),t}),{})}function R(t,e){return e.split(".").reduce(((t,e)=>t?t[e]:void 0),t)}function Z(t,e){const r=Object.keys(e);return t.slice().sort(((t,n)=>{for(const o of r){const r="desc"===e[o]?-1:1,s=R(t,o),c=R(n,o);if(s<c)return-r;if(s>c)return r}return 0}))}const C=(t,e,r)=>{var n,o,s,c,a,i,u,f;switch(i=r*(1-e),u=r*(1-(a=6*t-(c=Math.floor(6*t)))*e),f=r*(1-(1-a)*e),c%6){case 0:n=r,o=f,s=i;break;case 1:n=u,o=r,s=i;break;case 2:n=i,o=r,s=f;break;case 3:n=i,o=u,s=r;break;case 4:n=f,o=i,s=r;break;case 5:n=r,o=i,s=u}return[Math.round(255*n),Math.round(255*o),Math.round(255*s)]},D=t=>{const e=t.toString(16);return 1==e.length?"0"+e:e},F=(t,e,r)=>"#"+D(t)+D(e)+D(r),B=(t,e,r)=>{var n=Math.max(t,e,r),o=Math.min(t,e,r),s=n-o,c=0,a=0===n?0:s/n,i=n/255;switch(n){case o:c=0;break;case t:c=e-r+s*(e<r?6:0),c/=6*s;break;case e:c=r-t+2*s,c/=6*s;break;case r:c=t-e+4*s,c/=6*s}return[c,a,i]},U=t=>{if(3===(t=t.replace("#","")).length&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),6!==t.length)return[0,0,0];const e=parseInt(t.substring(0,2),16),r=parseInt(t.substring(2,4),16),n=parseInt(t.substring(4,6),16);return isNaN(e)||isNaN(r)||isNaN(n)||e<0||e>255||r<0||r>255||n<0||n>255?[0,0,0]:[e,r,n]};var J=Object.defineProperty,W=(t,e,r)=>(((t,e,r)=>{e in t?J(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r})(t,"symbol"!=typeof e?e+"":e,r),r);class Y{constructor(){W(this,"e",{})}on(t,e){return this.e[t]||(this.e[t]=[]),this.e[t].push(e),()=>this.off(t,e)}off(t,e){if(!this.e[t])return;const r=this.e[t].findIndex((t=>t===e));-1!==r&&(this.e[t].splice(r,1),0===this.e[t].length&&delete this.e[t])}emit(t,...e){if(!this.e[t])return;const r=this.e[t].slice();for(const n of r)try{n(...e)}catch(e){console.error(`Ошибка в обработчике события ${t}:`,e)}}once(t,e){const r=(...n)=>{this.off(t,r),e(...n)};return this.on(t,r)}clear(t){t?delete this.e[t]:this.e={}}}export{Y as EventEmitter,U as HEXtoRGB,C as HSVtoRGB,F as RGBtoHEX,B as RGBtoHSV,r as alignTo,T as chunks,t as clamp,b as comparison,p as copyText,g as createLinksFromText,e as decWord,I as elasticClamp,s as formatNumber,y as generateUniqueKey,P as groupBy,u as isType,S as memoize,f as omit,Z as orderBy,$ as parseQueryString,N as parseVersionString,l as pick,c as random,a as randomByWeight,O as retry,E as shuffle,h as sleep,z as textParserUrl,o as timeAgo,n as toShort,q as unique,v as unlink};
|
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@minsize/utils",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Frequently used utilities",
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"types": "index.ts",
|
|
7
|
-
"author": {
|
|
8
|
-
"name": "Egor Kytyukov",
|
|
9
|
-
"url": "https://t.me/xuserz"
|
|
10
|
-
},
|
|
11
|
-
"repository": {
|
|
12
|
-
"type": "git",
|
|
13
|
-
"url": "https://github.com/minsize/utils"
|
|
14
|
-
},
|
|
15
|
-
"contributors": [],
|
|
16
|
-
"keywords": [
|
|
17
|
-
"utils",
|
|
18
|
-
"utilities",
|
|
19
|
-
"frontend",
|
|
20
|
-
"backend"
|
|
21
|
-
]
|
|
1
|
+
{
|
|
2
|
+
"name": "@minsize/utils",
|
|
3
|
+
"version": "0.1.4",
|
|
4
|
+
"description": "Frequently used utilities",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"types": "index.ts",
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "Egor Kytyukov",
|
|
9
|
+
"url": "https://t.me/xuserz"
|
|
10
|
+
},
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/minsize/utils"
|
|
14
|
+
},
|
|
15
|
+
"contributors": [],
|
|
16
|
+
"keywords": [
|
|
17
|
+
"utils",
|
|
18
|
+
"utilities",
|
|
19
|
+
"frontend",
|
|
20
|
+
"backend"
|
|
21
|
+
]
|
|
22
22
|
}
|