@foxford/foxford-utils 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.mdx +318 -0
- package/index.cjs +859 -0
- package/index.d.cts +516 -0
- package/index.d.ts +516 -0
- package/index.js +770 -0
- package/index.js.flow +654 -0
- package/package.json +31 -38
- package/foxford-utils.cjs.js +0 -2
- package/foxford-utils.cjs.js.map +0 -1
- package/foxford-utils.mjs +0 -2
- package/foxford-utils.mjs.map +0 -1
package/index.cjs
ADDED
|
@@ -0,0 +1,859 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
var __restKey = (key) => typeof key === "symbol" ? key : key + "";
|
|
23
|
+
var __objRest = (source, exclude) => {
|
|
24
|
+
var target = {};
|
|
25
|
+
for (var prop in source)
|
|
26
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
27
|
+
target[prop] = source[prop];
|
|
28
|
+
if (source != null && __getOwnPropSymbols)
|
|
29
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
30
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
31
|
+
target[prop] = source[prop];
|
|
32
|
+
}
|
|
33
|
+
return target;
|
|
34
|
+
};
|
|
35
|
+
var __export = (target, all) => {
|
|
36
|
+
for (var name in all)
|
|
37
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
38
|
+
};
|
|
39
|
+
var __copyProps = (to, from, except, desc) => {
|
|
40
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
41
|
+
for (let key of __getOwnPropNames(from))
|
|
42
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
43
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
44
|
+
}
|
|
45
|
+
return to;
|
|
46
|
+
};
|
|
47
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
48
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
49
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
50
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
51
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
52
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
53
|
+
mod
|
|
54
|
+
));
|
|
55
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
56
|
+
|
|
57
|
+
// src/index.ts
|
|
58
|
+
var index_exports = {};
|
|
59
|
+
__export(index_exports, {
|
|
60
|
+
Collapse: () => Collapse,
|
|
61
|
+
TYPES: () => TYPES,
|
|
62
|
+
acceptAllExtensions: () => acceptAllExtensions,
|
|
63
|
+
acceptAllTypes: () => acceptAllTypes,
|
|
64
|
+
acceptAudioExtensions: () => acceptAudioExtensions,
|
|
65
|
+
acceptFileTypes: () => acceptFileTypes,
|
|
66
|
+
acceptFilesExtensions: () => acceptFilesExtensions,
|
|
67
|
+
acceptImagesExtensions: () => acceptImagesExtensions,
|
|
68
|
+
base64ToArrayBuffer: () => base64ToArrayBuffer,
|
|
69
|
+
capitalize: () => capitalize,
|
|
70
|
+
colorLuminance: () => colorLuminance,
|
|
71
|
+
createPath: () => createPath,
|
|
72
|
+
currencyDirectory: () => CURRENCY_DIRECTORY,
|
|
73
|
+
debounce: () => debounce,
|
|
74
|
+
detectEnterKey: () => detectEnterKey,
|
|
75
|
+
detectIE: () => detectIE,
|
|
76
|
+
extractDigits: () => extractDigits,
|
|
77
|
+
getColorByString: () => getColorByString,
|
|
78
|
+
getCurrencySymbol: () => getCurrencySymbol,
|
|
79
|
+
getFilesSize: () => getFilesSize,
|
|
80
|
+
getGradient: () => getGradient,
|
|
81
|
+
getMimeTypes: () => getMimeTypes,
|
|
82
|
+
getNextPageFromLinkHeader: () => getNextPageFromLinkHeader,
|
|
83
|
+
getNextPageURLFromLinkHeader: () => getNextPageURLFromLinkHeader,
|
|
84
|
+
getRandomInt: () => getRandomInt,
|
|
85
|
+
indexByGroupId: () => indexByGroupId,
|
|
86
|
+
indexById: () => indexById,
|
|
87
|
+
isElementInViewport: () => isElementInViewport,
|
|
88
|
+
makeLoadOptionsFunc: () => makeLoadOptionsFunc,
|
|
89
|
+
makeOption: () => makeOption,
|
|
90
|
+
makeParamString: () => makeParamString,
|
|
91
|
+
makeShortNameFromFull: () => makeShortNameFromFull,
|
|
92
|
+
matchesId: () => matchesId,
|
|
93
|
+
merge: () => merge,
|
|
94
|
+
mergeByKey: () => mergeByKey,
|
|
95
|
+
mimeAudio: () => mimeAudio,
|
|
96
|
+
mimeFiles: () => mimeFiles,
|
|
97
|
+
mimeImages: () => mimeImages,
|
|
98
|
+
outerHeight: () => outerHeight,
|
|
99
|
+
parseQueryString: () => parseQueryString,
|
|
100
|
+
parseStringListToArray: () => parseStringListToArray,
|
|
101
|
+
pickBy: () => pickBy,
|
|
102
|
+
pluralize: () => pluralize,
|
|
103
|
+
pluralizeByType: () => pluralizeByType,
|
|
104
|
+
qid: () => qid,
|
|
105
|
+
rawMarkup: () => rawMarkup,
|
|
106
|
+
removeElFromArr: () => removeElFromArr,
|
|
107
|
+
scrollToElement: () => scrollToElement,
|
|
108
|
+
serializeArray: () => serializeArray,
|
|
109
|
+
splitEvery: () => splitEvery,
|
|
110
|
+
toCamelCase: () => toCamelCase,
|
|
111
|
+
toUnderscoredCase: () => toUnderscoredCase,
|
|
112
|
+
transformOptionsForSelect: () => transformOptionsForSelect,
|
|
113
|
+
uniq: () => uniq,
|
|
114
|
+
uuid: () => uuid,
|
|
115
|
+
wrapFormFields: () => wrapFormFields
|
|
116
|
+
});
|
|
117
|
+
module.exports = __toCommonJS(index_exports);
|
|
118
|
+
|
|
119
|
+
// src/qid.ts
|
|
120
|
+
function qid(length = 6, number = true) {
|
|
121
|
+
let text = "";
|
|
122
|
+
const possible = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz${number ? "0123456789" : ""}`;
|
|
123
|
+
for (let i = 0; i < length; i++) {
|
|
124
|
+
const idx = Math.floor(Math.random() * possible.length);
|
|
125
|
+
text += possible.charAt(idx);
|
|
126
|
+
}
|
|
127
|
+
return text;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// src/uuid.ts
|
|
131
|
+
function uuid() {
|
|
132
|
+
function s4() {
|
|
133
|
+
return Math.floor((1 + Math.random()) * 65536).toString(16).substring(1);
|
|
134
|
+
}
|
|
135
|
+
return `${s4() + s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// src/pickBy.ts
|
|
139
|
+
function pickBy(obj, filterFunc) {
|
|
140
|
+
const out = {};
|
|
141
|
+
for (const [rawKey, value] of Object.entries(obj)) {
|
|
142
|
+
if (filterFunc(rawKey, value)) {
|
|
143
|
+
;
|
|
144
|
+
out[rawKey] = value;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return out;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// src/collapse.ts
|
|
151
|
+
function toggleOnClickHandler({ currentTarget }) {
|
|
152
|
+
if (!(currentTarget instanceof HTMLElement)) return false;
|
|
153
|
+
const toggleArrow = currentTarget.querySelector(".toggle_arrow");
|
|
154
|
+
if (!toggleArrow) return false;
|
|
155
|
+
const arrowClass = "down";
|
|
156
|
+
const toggleClass = "expanded";
|
|
157
|
+
if (toggleArrow.classList.contains(arrowClass)) {
|
|
158
|
+
toggleArrow.classList.remove(arrowClass);
|
|
159
|
+
currentTarget.classList.remove(toggleClass);
|
|
160
|
+
} else {
|
|
161
|
+
currentTarget.classList.add(toggleClass);
|
|
162
|
+
toggleArrow.classList.add(arrowClass);
|
|
163
|
+
}
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
var Collapse = class {
|
|
167
|
+
constructor() {
|
|
168
|
+
this._collapses = null;
|
|
169
|
+
this.init = this.init.bind(this);
|
|
170
|
+
this.makeCollapse = this.makeCollapse.bind(this);
|
|
171
|
+
this.destroy = this.destroy.bind(this);
|
|
172
|
+
this.onClickHandler = toggleOnClickHandler;
|
|
173
|
+
this._onClickEventListener = (e) => this.onClickHandler(e);
|
|
174
|
+
this._boundMakeCollapse = (el) => this.makeCollapse(el);
|
|
175
|
+
}
|
|
176
|
+
makeCollapse(collapse) {
|
|
177
|
+
if (collapse.classList.contains("js")) return false;
|
|
178
|
+
collapse.addEventListener("click", this._onClickEventListener);
|
|
179
|
+
collapse.classList.add("js");
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
init() {
|
|
183
|
+
setTimeout(() => {
|
|
184
|
+
if (!document.querySelectorAll || !document.body || !document.body.classList) return;
|
|
185
|
+
this._collapses = window.document.querySelectorAll(".toggle_element");
|
|
186
|
+
Array.from(this._collapses).forEach(this._boundMakeCollapse);
|
|
187
|
+
}, 0);
|
|
188
|
+
}
|
|
189
|
+
destroy() {
|
|
190
|
+
var _a;
|
|
191
|
+
const collapses = (_a = this._collapses) != null ? _a : window.document.querySelectorAll(".toggle_element");
|
|
192
|
+
Array.from(collapses).forEach((item) => {
|
|
193
|
+
item.removeEventListener("click", this._onClickEventListener);
|
|
194
|
+
item.classList.remove("js");
|
|
195
|
+
});
|
|
196
|
+
this._collapses = null;
|
|
197
|
+
}
|
|
198
|
+
reinit() {
|
|
199
|
+
this.destroy();
|
|
200
|
+
this.init();
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
// src/debounce.ts
|
|
205
|
+
function debounce(f, ms) {
|
|
206
|
+
let timer = null;
|
|
207
|
+
function decoratedFunction(...args) {
|
|
208
|
+
const onComplete = () => {
|
|
209
|
+
f.apply(this, args);
|
|
210
|
+
timer = null;
|
|
211
|
+
};
|
|
212
|
+
if (timer) {
|
|
213
|
+
clearTimeout(timer);
|
|
214
|
+
}
|
|
215
|
+
timer = setTimeout(onComplete, ms);
|
|
216
|
+
return timer;
|
|
217
|
+
}
|
|
218
|
+
return decoratedFunction;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// src/indexById.ts
|
|
222
|
+
function indexById(items) {
|
|
223
|
+
return items.reduce((acc, item) => {
|
|
224
|
+
acc[String(item.id)] = item;
|
|
225
|
+
return acc;
|
|
226
|
+
}, {});
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// src/pluralize.ts
|
|
230
|
+
function pluralize(counter, forms) {
|
|
231
|
+
const n = Math.abs(counter);
|
|
232
|
+
const id = n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;
|
|
233
|
+
return forms[id];
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// src/rawMarkup.ts
|
|
237
|
+
function rawMarkup(text) {
|
|
238
|
+
return { __html: text };
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// src/capitalize.ts
|
|
242
|
+
function capitalize(str) {
|
|
243
|
+
if (!str) return "";
|
|
244
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// src/getFilesSize.ts
|
|
248
|
+
function getFilesSize(attachments, files) {
|
|
249
|
+
let size = 0;
|
|
250
|
+
for (const f of attachments) size += f.size;
|
|
251
|
+
for (const f of files) size += f.size;
|
|
252
|
+
return size;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// src/getMimeTypes.ts
|
|
256
|
+
function getMimeTypes(files) {
|
|
257
|
+
return files.map((f) => f.mime);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// src/getRandomInt.ts
|
|
261
|
+
function getRandomInt(min, max) {
|
|
262
|
+
return Math.floor(Math.random() * (max - min)) + min;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// src/indexByGroupId.ts
|
|
266
|
+
function indexByGroupId(items) {
|
|
267
|
+
return items.reduce((acc, item) => {
|
|
268
|
+
acc[String(item.group.id)] = item;
|
|
269
|
+
return acc;
|
|
270
|
+
}, {});
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// src/scrollToElement.ts
|
|
274
|
+
function getElementPosition(elem) {
|
|
275
|
+
const { top, left } = elem.getBoundingClientRect();
|
|
276
|
+
const yOffset = (typeof window.pageYOffset === "number" ? window.pageYOffset : window.scrollY) || 0;
|
|
277
|
+
const xOffset = (typeof window.pageXOffset === "number" ? window.pageXOffset : window.scrollX) || 0;
|
|
278
|
+
return {
|
|
279
|
+
left: left + xOffset,
|
|
280
|
+
top: top + yOffset
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
function scrollToElement(selector) {
|
|
284
|
+
const field = document.querySelector(selector);
|
|
285
|
+
if (!field) return false;
|
|
286
|
+
const { top } = getElementPosition(field);
|
|
287
|
+
window.scrollTo(0, top);
|
|
288
|
+
return void 0;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// src/pluralizeByType.ts
|
|
292
|
+
var TYPES = {
|
|
293
|
+
days: ["\u0434\u0435\u043D\u044C", "\u0434\u043D\u044F", "\u0434\u043D\u0435\u0439"],
|
|
294
|
+
exercises: ["\u0437\u0430\u043D\u044F\u0442\u0438\u0435", "\u0437\u0430\u043D\u044F\u0442\u0438\u044F", "\u0437\u0430\u043D\u044F\u0442\u0438\u0439"],
|
|
295
|
+
hours: ["\u0447\u0430\u0441", "\u0447\u0430\u0441\u0430", "\u0447\u0430\u0441\u043E\u0432"],
|
|
296
|
+
members: ["\u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A", "\u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u0430", "\u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u043E\u0432"],
|
|
297
|
+
minutes: ["\u043C\u0438\u043D\u0443\u0442\u0430", "\u043C\u0438\u043D\u0443\u0442\u044B", "\u043C\u0438\u043D\u0443\u0442"],
|
|
298
|
+
points: ["\u0431\u0430\u043B\u043B", "\u0431\u0430\u043B\u043B\u0430", "\u0431\u0430\u043B\u043B\u043E\u0432"],
|
|
299
|
+
remains: ["\u043E\u0441\u0442\u0430\u043B\u0441\u044F", "\u043E\u0441\u0442\u0430\u043B\u043E\u0441\u044C", "\u043E\u0441\u0442\u0430\u043B\u043E\u0441\u044C"],
|
|
300
|
+
seconds: ["\u0441\u0435\u043A\u0443\u043D\u0434\u0430", "\u0441\u0435\u043A\u0443\u043D\u0434\u044B", "\u0441\u0435\u043A\u0443\u043D\u0434"],
|
|
301
|
+
students: ["\u0443\u0447\u0435\u043D\u0438\u043A", "\u0443\u0447\u0435\u043D\u0438\u043A\u0430", "\u0443\u0447\u0435\u043D\u0438\u043A\u043E\u0432"],
|
|
302
|
+
studentsParentalCase: ["\u0443\u0447\u0435\u043D\u0438\u043A\u0430", "\u0443\u0447\u0435\u043D\u0438\u043A\u043E\u0432", "\u0443\u0447\u0435\u043D\u0438\u043A\u043E\u0432"],
|
|
303
|
+
tasks: ["\u0437\u0430\u0434\u0430\u0447\u0430", "\u0437\u0430\u0434\u0430\u0447\u0438", "\u0437\u0430\u0434\u0430\u0447"]
|
|
304
|
+
};
|
|
305
|
+
function pluralizeByType(counter, type) {
|
|
306
|
+
const forms = TYPES[type];
|
|
307
|
+
return pluralize(counter || 0, forms);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// src/base64ToArrayBuffer.ts
|
|
311
|
+
function base64ToArrayBuffer(base64) {
|
|
312
|
+
const binaryString = window.atob(base64);
|
|
313
|
+
const len = binaryString.length;
|
|
314
|
+
const bytes = new Uint8Array(len);
|
|
315
|
+
for (let i = 0; i < len; i++) {
|
|
316
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
317
|
+
}
|
|
318
|
+
return bytes.buffer;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// src/parseStringListToArray.ts
|
|
322
|
+
function parseStringListToArray(input = "") {
|
|
323
|
+
if (!input) return [];
|
|
324
|
+
return input.split(/(?:^|<br\s*\/?>|\n)\s*[-\u2010-\u2015\ufe58\ufe63\uff0d]\s*/gim).map((s) => s.trim()).filter((s) => s.length > 0);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// src/transformOptionsForSelect.ts
|
|
328
|
+
var transformOptionsForSelect = (options = []) => options.map(({ id, name, image_url }) => ({
|
|
329
|
+
image_url,
|
|
330
|
+
label: name,
|
|
331
|
+
value: id
|
|
332
|
+
}));
|
|
333
|
+
|
|
334
|
+
// src/objects.ts
|
|
335
|
+
function isObjectLike(v) {
|
|
336
|
+
return typeof v === "object" && v !== null;
|
|
337
|
+
}
|
|
338
|
+
function merge(target, source) {
|
|
339
|
+
for (const key of Object.keys(source)) {
|
|
340
|
+
const srcVal = source[key];
|
|
341
|
+
const tgtHasKey = Object.prototype.hasOwnProperty.call(target, key);
|
|
342
|
+
const tgtVal = tgtHasKey ? target[key] : void 0;
|
|
343
|
+
if (isObjectLike(srcVal) && isObjectLike(tgtVal)) {
|
|
344
|
+
merge(tgtVal, srcVal);
|
|
345
|
+
} else {
|
|
346
|
+
;
|
|
347
|
+
target[key] = srcVal;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return target;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// src/browser.ts
|
|
354
|
+
function detectIE(ua) {
|
|
355
|
+
const userAgent = ua != null ? ua : typeof window !== "undefined" ? window.navigator.userAgent : "";
|
|
356
|
+
if (!userAgent) return false;
|
|
357
|
+
const msie = userAgent.indexOf("MSIE ");
|
|
358
|
+
if (msie > 0) {
|
|
359
|
+
const end = userAgent.indexOf(".", msie);
|
|
360
|
+
return parseInt(userAgent.substring(msie + 5, end), 10);
|
|
361
|
+
}
|
|
362
|
+
const trident = userAgent.indexOf("Trident/");
|
|
363
|
+
if (trident > 0) {
|
|
364
|
+
const rv = userAgent.indexOf("rv:");
|
|
365
|
+
const end = userAgent.indexOf(".", rv);
|
|
366
|
+
return parseInt(userAgent.substring(rv + 3, end), 10);
|
|
367
|
+
}
|
|
368
|
+
const edge = userAgent.indexOf("Edge/");
|
|
369
|
+
if (edge > 0) {
|
|
370
|
+
const end = userAgent.indexOf(".", edge);
|
|
371
|
+
return parseInt(userAgent.substring(edge + 5, end), 10);
|
|
372
|
+
}
|
|
373
|
+
return false;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// src/dom.ts
|
|
377
|
+
var hasUsableName = (f) => !!f.name;
|
|
378
|
+
var isDisabled = (f) => f.disabled;
|
|
379
|
+
var getType = (f) => f instanceof HTMLInputElement ? f.type : f instanceof HTMLSelectElement ? f.type : f instanceof HTMLButtonElement ? f.type : "";
|
|
380
|
+
var isIgnorableType = (t) => t === "file" || t === "reset" || t === "submit" || t === "button" || t === "image";
|
|
381
|
+
var isSelectMultiple = (f) => f instanceof HTMLSelectElement && f.type === "select-multiple";
|
|
382
|
+
var isCheckableUnchecked = (f) => f instanceof HTMLInputElement && (f.type === "checkbox" || f.type === "radio") && !f.checked;
|
|
383
|
+
var pushSelectedOptions = (sel, out) => {
|
|
384
|
+
for (const opt of Array.from(sel.selectedOptions)) {
|
|
385
|
+
out.push({ name: sel.name, value: opt.value });
|
|
386
|
+
}
|
|
387
|
+
};
|
|
388
|
+
var getValue = (f) => f.value;
|
|
389
|
+
function serializeArray(form) {
|
|
390
|
+
if (!(form instanceof HTMLFormElement)) return [];
|
|
391
|
+
const out = [];
|
|
392
|
+
const elements = Array.from(form.elements);
|
|
393
|
+
for (const field of elements) {
|
|
394
|
+
const t = getType(field);
|
|
395
|
+
if (!hasUsableName(field)) continue;
|
|
396
|
+
if (isDisabled(field)) continue;
|
|
397
|
+
if (isIgnorableType(t)) continue;
|
|
398
|
+
if (isSelectMultiple(field)) {
|
|
399
|
+
pushSelectedOptions(field, out);
|
|
400
|
+
continue;
|
|
401
|
+
}
|
|
402
|
+
if (isCheckableUnchecked(field)) continue;
|
|
403
|
+
out.push({ name: field.name, value: getValue(field) });
|
|
404
|
+
}
|
|
405
|
+
return out;
|
|
406
|
+
}
|
|
407
|
+
function outerHeight(el) {
|
|
408
|
+
const style = getComputedStyle(el);
|
|
409
|
+
const marginTop = parseFloat(style.marginTop) || 0;
|
|
410
|
+
const marginBottom = parseFloat(style.marginBottom) || 0;
|
|
411
|
+
return el.offsetHeight + marginTop + marginBottom;
|
|
412
|
+
}
|
|
413
|
+
function isElementInViewport(el) {
|
|
414
|
+
const rect = el.getBoundingClientRect();
|
|
415
|
+
const vh = window.innerHeight || document.documentElement.clientHeight;
|
|
416
|
+
const vw = window.innerWidth || document.documentElement.clientWidth;
|
|
417
|
+
return rect.top >= 0 && rect.left >= 0 && rect.bottom <= vh && rect.right <= vw;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
// src/caseConverters.ts
|
|
421
|
+
function toCamelCase(obj) {
|
|
422
|
+
const result = {};
|
|
423
|
+
Object.entries(obj).forEach(([key, value]) => {
|
|
424
|
+
const newKey = key.split("_").map((part, i) => i === 0 ? part : part.charAt(0).toUpperCase() + part.slice(1)).join("");
|
|
425
|
+
result[newKey] = value;
|
|
426
|
+
});
|
|
427
|
+
return result;
|
|
428
|
+
}
|
|
429
|
+
function toUnderscoredCase(obj) {
|
|
430
|
+
const result = {};
|
|
431
|
+
Object.entries(obj).forEach(([key, value]) => {
|
|
432
|
+
const newKey = key.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toLowerCase();
|
|
433
|
+
result[newKey] = value;
|
|
434
|
+
});
|
|
435
|
+
return result;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
// src/array.ts
|
|
439
|
+
function splitEvery(limit = 1, arr = []) {
|
|
440
|
+
const size = Math.max(1, Math.floor(limit));
|
|
441
|
+
return arr.reduce((acc, item, index) => {
|
|
442
|
+
if (index % size === 0) acc.push([]);
|
|
443
|
+
const last = acc[acc.length - 1];
|
|
444
|
+
if (last !== void 0) last.push(item);
|
|
445
|
+
return acc;
|
|
446
|
+
}, []);
|
|
447
|
+
}
|
|
448
|
+
function uniq(arrArg) {
|
|
449
|
+
return Array.from(new Set(arrArg));
|
|
450
|
+
}
|
|
451
|
+
function removeElFromArr(arr, index) {
|
|
452
|
+
const newArr = [...arr];
|
|
453
|
+
newArr.splice(index, 1);
|
|
454
|
+
return newArr;
|
|
455
|
+
}
|
|
456
|
+
function mergeByKey(arr1 = [], arr2 = [], key = "id") {
|
|
457
|
+
return arr1.map((el1) => {
|
|
458
|
+
const el2 = arr2.find((el) => String(el[key]) === String(el1[key]));
|
|
459
|
+
if (!el2) return el1;
|
|
460
|
+
const _a = el2, { [key]: _ignore } = _a, rest = __objRest(_a, [__restKey(key)]);
|
|
461
|
+
return __spreadValues(__spreadValues({}, el1), rest);
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
// src/strings.ts
|
|
466
|
+
var makeShortNameFromFull = (fullName = "") => {
|
|
467
|
+
const parts = fullName.trim().split(/\s+/).filter(Boolean);
|
|
468
|
+
if (parts.length === 3) {
|
|
469
|
+
const [last, first] = parts;
|
|
470
|
+
return [first, last].join(" ");
|
|
471
|
+
}
|
|
472
|
+
return parts.reverse().join(" ");
|
|
473
|
+
};
|
|
474
|
+
var extractDigits = (input = "") => {
|
|
475
|
+
return typeof input === "string" ? input.replace(/\D/g, "") : "";
|
|
476
|
+
};
|
|
477
|
+
|
|
478
|
+
// src/currency-codes.ts
|
|
479
|
+
var CURRENCY_DIRECTORY = {
|
|
480
|
+
AFN: "\u060B",
|
|
481
|
+
ALL: "Lek",
|
|
482
|
+
ANG: "\u0192",
|
|
483
|
+
ARS: "$",
|
|
484
|
+
AUD: "$",
|
|
485
|
+
AWG: "\u0192",
|
|
486
|
+
AZN: "\u20BC",
|
|
487
|
+
BAM: "KM",
|
|
488
|
+
BBD: "$",
|
|
489
|
+
BGN: "\u043B\u0432",
|
|
490
|
+
BMD: "$",
|
|
491
|
+
BND: "$",
|
|
492
|
+
BOB: "$b",
|
|
493
|
+
BRL: "R$",
|
|
494
|
+
BSD: "$",
|
|
495
|
+
BWP: "P",
|
|
496
|
+
BYR: "Br",
|
|
497
|
+
BZD: "BZ$",
|
|
498
|
+
CAD: "C$",
|
|
499
|
+
CHF: "CHF",
|
|
500
|
+
CLP: "$",
|
|
501
|
+
CNY: "\xA5",
|
|
502
|
+
COP: "$",
|
|
503
|
+
CRC: "\u20A1",
|
|
504
|
+
CUP: "\u20B1",
|
|
505
|
+
CZK: "K\u010D",
|
|
506
|
+
DKK: "kr",
|
|
507
|
+
DOP: "RD$",
|
|
508
|
+
EEK: "kr",
|
|
509
|
+
EGP: "\xA3",
|
|
510
|
+
EUR: "\u20AC",
|
|
511
|
+
FJD: "$",
|
|
512
|
+
FKP: "\xA3",
|
|
513
|
+
FRF: "\u20A3",
|
|
514
|
+
GBP: "\xA3",
|
|
515
|
+
GGP: "\xA3",
|
|
516
|
+
GHC: "\xA2",
|
|
517
|
+
GIP: "\xA3",
|
|
518
|
+
GTQ: "Q",
|
|
519
|
+
GYD: "$",
|
|
520
|
+
HKD: "$",
|
|
521
|
+
HNL: "L",
|
|
522
|
+
HRK: "kn",
|
|
523
|
+
HUF: "Ft",
|
|
524
|
+
IDR: "Rp",
|
|
525
|
+
ILS: "\u20AA",
|
|
526
|
+
IMP: "\xA3",
|
|
527
|
+
INR: "\u20A8",
|
|
528
|
+
IRR: "\uFDFC",
|
|
529
|
+
ISK: "kr",
|
|
530
|
+
JEP: "\xA3",
|
|
531
|
+
JMD: "J$",
|
|
532
|
+
JPY: "\xA5",
|
|
533
|
+
KGS: "KGS",
|
|
534
|
+
KHR: "\u17DB",
|
|
535
|
+
KPW: "\u20A9",
|
|
536
|
+
KRW: "\u20A9",
|
|
537
|
+
KYD: "$",
|
|
538
|
+
KZT: "\u20B8",
|
|
539
|
+
LAK: "\u20AD",
|
|
540
|
+
LBP: "\xA3",
|
|
541
|
+
LKR: "\u20A8",
|
|
542
|
+
LRD: "$",
|
|
543
|
+
LTL: "Lt",
|
|
544
|
+
LVL: "Ls",
|
|
545
|
+
MKD: "\u0434\u0435\u043D",
|
|
546
|
+
MNT: "\u20AE",
|
|
547
|
+
MUR: "\u20A8",
|
|
548
|
+
MXN: "$",
|
|
549
|
+
MYR: "RM",
|
|
550
|
+
MZN: "MT",
|
|
551
|
+
NAD: "$",
|
|
552
|
+
NGN: "\u20A6",
|
|
553
|
+
NIO: "C$",
|
|
554
|
+
NOK: "kr",
|
|
555
|
+
NPR: "\u20A8",
|
|
556
|
+
NZD: "$",
|
|
557
|
+
OMR: "\uFDFC",
|
|
558
|
+
PAB: "B/.",
|
|
559
|
+
PEN: "S/.",
|
|
560
|
+
PHP: "\u20B1",
|
|
561
|
+
PKR: "\u20A8",
|
|
562
|
+
PLN: "z\u0142",
|
|
563
|
+
PYG: "Gs",
|
|
564
|
+
QAR: "\uFDFC",
|
|
565
|
+
RON: "lei",
|
|
566
|
+
RSD: "\u0414\u0438\u043D.",
|
|
567
|
+
RUR: "\u20BD",
|
|
568
|
+
SAR: "\uFDFC",
|
|
569
|
+
SBD: "$",
|
|
570
|
+
SCR: "\u20A8",
|
|
571
|
+
SEK: "kr",
|
|
572
|
+
SGD: "$",
|
|
573
|
+
SHP: "\xA3",
|
|
574
|
+
SOS: "S",
|
|
575
|
+
SRD: "$",
|
|
576
|
+
SVC: "$",
|
|
577
|
+
SYP: "\xA3",
|
|
578
|
+
THB: "\u0E3F",
|
|
579
|
+
TRL: "\u20A4",
|
|
580
|
+
TRY: "\u20A4",
|
|
581
|
+
TTD: "TT$",
|
|
582
|
+
TVD: "$",
|
|
583
|
+
TWD: "NT$",
|
|
584
|
+
UAH: "\u20B4",
|
|
585
|
+
USD: "$",
|
|
586
|
+
UYU: "$U",
|
|
587
|
+
UZS: "\u043B\u0432",
|
|
588
|
+
VEF: "Bs",
|
|
589
|
+
VND: "\u20AB",
|
|
590
|
+
XCD: "$",
|
|
591
|
+
YER: "\uFDFC",
|
|
592
|
+
ZAR: "R",
|
|
593
|
+
ZWD: "Z$"
|
|
594
|
+
};
|
|
595
|
+
var CURRENCY_INDEX = CURRENCY_DIRECTORY;
|
|
596
|
+
function getCurrencySymbol(currencyCode) {
|
|
597
|
+
var _a;
|
|
598
|
+
return (_a = CURRENCY_INDEX[currencyCode]) != null ? _a : currencyCode;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
// src/colors.ts
|
|
602
|
+
function colorLuminance(rawHex, lum = 0) {
|
|
603
|
+
let hex = String(rawHex).replace(/[^0-9a-f]/gi, "").toLowerCase();
|
|
604
|
+
if (hex.length < 6) {
|
|
605
|
+
const r = hex.charAt(0);
|
|
606
|
+
const g = hex.charAt(1);
|
|
607
|
+
const b = hex.charAt(2);
|
|
608
|
+
hex = r + r + g + g + b + b;
|
|
609
|
+
}
|
|
610
|
+
let rgb = "#";
|
|
611
|
+
for (let i = 0; i < 3; i++) {
|
|
612
|
+
const chunk = hex.substring(i * 2, i * 2 + 2);
|
|
613
|
+
let c = parseInt(chunk, 16);
|
|
614
|
+
if (Number.isNaN(c)) c = 0;
|
|
615
|
+
const adjusted = Math.round(Math.min(Math.max(0, c + c * lum), 255));
|
|
616
|
+
const part = adjusted.toString(16).padStart(2, "0");
|
|
617
|
+
rgb += part;
|
|
618
|
+
}
|
|
619
|
+
return rgb;
|
|
620
|
+
}
|
|
621
|
+
function getGradient(degree, color) {
|
|
622
|
+
const base = `#${color}`;
|
|
623
|
+
const lighter = colorLuminance(base, 0.09);
|
|
624
|
+
const darker = colorLuminance(base, -0.09);
|
|
625
|
+
return `linear-gradient(${degree}, ${lighter}, ${darker})`;
|
|
626
|
+
}
|
|
627
|
+
function getColorByString(str, colors) {
|
|
628
|
+
var _a;
|
|
629
|
+
if (!colors || colors.length === 0) return null;
|
|
630
|
+
let i = str.length;
|
|
631
|
+
let sum = 0;
|
|
632
|
+
while (i--) {
|
|
633
|
+
sum += str.charCodeAt(i);
|
|
634
|
+
}
|
|
635
|
+
return (_a = colors[sum % colors.length]) != null ? _a : null;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
// src/url.ts
|
|
639
|
+
var import_query_string = __toESM(require("query-string"), 1);
|
|
640
|
+
function createPath(u, query = {}) {
|
|
641
|
+
var _a;
|
|
642
|
+
let url = u;
|
|
643
|
+
const hashExist = url.includes("#");
|
|
644
|
+
const hash = hashExist ? (_a = url.split("#")[1]) != null ? _a : "" : "";
|
|
645
|
+
if (hashExist) {
|
|
646
|
+
url = url.replace("#", "");
|
|
647
|
+
url = url.replace(hash, "");
|
|
648
|
+
}
|
|
649
|
+
const [urlPath, urlQuery = ""] = url.split("?");
|
|
650
|
+
const queryParams = import_query_string.default.stringify(
|
|
651
|
+
__spreadValues(__spreadValues({}, import_query_string.default.parse(urlQuery)), query),
|
|
652
|
+
{ encode: false, skipNull: true, sort: false }
|
|
653
|
+
);
|
|
654
|
+
const base = [urlPath, queryParams].filter(Boolean).join("?");
|
|
655
|
+
return base + (hashExist ? `#${hash}` : "");
|
|
656
|
+
}
|
|
657
|
+
function parseQueryString(query) {
|
|
658
|
+
return import_query_string.default.parse(query);
|
|
659
|
+
}
|
|
660
|
+
function getNextPageURLFromLinkHeader(link = "") {
|
|
661
|
+
var _a;
|
|
662
|
+
const result = /<([^>]+)>/.exec(link);
|
|
663
|
+
return (_a = result == null ? void 0 : result[1]) != null ? _a : "";
|
|
664
|
+
}
|
|
665
|
+
function getNextPageFromLinkHeader(link = "") {
|
|
666
|
+
if (!link) return null;
|
|
667
|
+
const m = /[?&]page=([^&>]+)[&>]/i.exec(link);
|
|
668
|
+
if (!m || !m[1]) return null;
|
|
669
|
+
const n = Number.parseInt(m[1], 10);
|
|
670
|
+
return Number.isNaN(n) ? null : n;
|
|
671
|
+
}
|
|
672
|
+
function makeParamString(object = {}) {
|
|
673
|
+
return Object.keys(object).map((key) => {
|
|
674
|
+
const v = object[key];
|
|
675
|
+
const str = v == null ? "" : String(v);
|
|
676
|
+
return `${encodeURIComponent(key)}=${encodeURIComponent(str)}`;
|
|
677
|
+
}).join("&");
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
// src/mime-types/audio.ts
|
|
681
|
+
var audioFormats = [
|
|
682
|
+
{
|
|
683
|
+
extensions: ["mp3"],
|
|
684
|
+
mime: "audio/mpeg, audio/mp3"
|
|
685
|
+
},
|
|
686
|
+
{
|
|
687
|
+
extensions: ["wav"],
|
|
688
|
+
mime: "audio/wav"
|
|
689
|
+
}
|
|
690
|
+
];
|
|
691
|
+
var audio_default = audioFormats;
|
|
692
|
+
|
|
693
|
+
// src/mime-types/files.ts
|
|
694
|
+
var fileFormats = [
|
|
695
|
+
{
|
|
696
|
+
extensions: ["odt"],
|
|
697
|
+
mime: "application/vnd.oasis.opendocument.text"
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
extensions: ["odf"],
|
|
701
|
+
mime: "application/vnd.oasis.opendocument.formula"
|
|
702
|
+
},
|
|
703
|
+
{
|
|
704
|
+
extensions: ["odp"],
|
|
705
|
+
mime: "application/vnd.oasis.opendocument.presentation"
|
|
706
|
+
},
|
|
707
|
+
{
|
|
708
|
+
extensions: ["ppt"],
|
|
709
|
+
mime: "application/vnd.ms-powerpoint"
|
|
710
|
+
},
|
|
711
|
+
{
|
|
712
|
+
extensions: ["pptx"],
|
|
713
|
+
mime: "application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
|
714
|
+
},
|
|
715
|
+
{
|
|
716
|
+
extensions: ["doc", "dot"],
|
|
717
|
+
mime: "application/msword"
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
extensions: ["docx"],
|
|
721
|
+
mime: "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
|
|
722
|
+
},
|
|
723
|
+
{
|
|
724
|
+
extensions: ["pdf"],
|
|
725
|
+
mime: "application/pdf"
|
|
726
|
+
},
|
|
727
|
+
{
|
|
728
|
+
extensions: ["xls", "xlsx"],
|
|
729
|
+
mime: "application/excel, application/x-excel, application/vnd.ms-excel, application/x-msexcel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
|
730
|
+
}
|
|
731
|
+
];
|
|
732
|
+
var files_default = fileFormats;
|
|
733
|
+
|
|
734
|
+
// src/mime-types/images.ts
|
|
735
|
+
var imageFormats = [
|
|
736
|
+
{
|
|
737
|
+
extensions: ["jpg", "jpeg"],
|
|
738
|
+
mime: "image/jpeg"
|
|
739
|
+
},
|
|
740
|
+
{
|
|
741
|
+
extensions: ["png"],
|
|
742
|
+
mime: "image/png"
|
|
743
|
+
},
|
|
744
|
+
{
|
|
745
|
+
extensions: ["gif"],
|
|
746
|
+
mime: "image/gif"
|
|
747
|
+
}
|
|
748
|
+
];
|
|
749
|
+
var images_default = imageFormats;
|
|
750
|
+
|
|
751
|
+
// src/files.ts
|
|
752
|
+
var MimeTypes = {
|
|
753
|
+
audio: audio_default,
|
|
754
|
+
files: files_default,
|
|
755
|
+
images: images_default
|
|
756
|
+
};
|
|
757
|
+
var getExtensions = (list) => list.flatMap((file) => file.extensions);
|
|
758
|
+
var mimeImages = () => getMimeTypes(MimeTypes.images);
|
|
759
|
+
var mimeFiles = () => getMimeTypes(MimeTypes.files);
|
|
760
|
+
var mimeAudio = () => getMimeTypes(MimeTypes.audio);
|
|
761
|
+
var acceptFileTypes = () => [...mimeImages(), ...mimeFiles()];
|
|
762
|
+
var acceptAllTypes = () => [...mimeImages(), ...mimeFiles(), ...mimeAudio()];
|
|
763
|
+
var acceptImagesExtensions = () => getExtensions(MimeTypes.images);
|
|
764
|
+
var acceptFilesExtensions = () => getExtensions(MimeTypes.files);
|
|
765
|
+
var acceptAudioExtensions = () => getExtensions(MimeTypes.audio);
|
|
766
|
+
var acceptAllExtensions = () => [
|
|
767
|
+
...acceptFilesExtensions(),
|
|
768
|
+
...acceptImagesExtensions(),
|
|
769
|
+
...acceptAudioExtensions()
|
|
770
|
+
];
|
|
771
|
+
|
|
772
|
+
// src/functions.ts
|
|
773
|
+
function wrapField(wrapper, field) {
|
|
774
|
+
return `${wrapper}[${field}]`;
|
|
775
|
+
}
|
|
776
|
+
function wrapFormFields(wrapper, formFieldsString, untouchables = []) {
|
|
777
|
+
const parts = formFieldsString.split("&");
|
|
778
|
+
const newFields = [];
|
|
779
|
+
parts.forEach((oldPart) => {
|
|
780
|
+
const eqIndex = oldPart.indexOf("=");
|
|
781
|
+
const oldField = eqIndex >= 0 ? oldPart.slice(0, eqIndex) : oldPart;
|
|
782
|
+
const newPart = untouchables.includes(oldField) ? oldPart : oldPart.replace(oldField, wrapField(wrapper, oldField));
|
|
783
|
+
newFields.push(newPart);
|
|
784
|
+
});
|
|
785
|
+
return newFields.join("&");
|
|
786
|
+
}
|
|
787
|
+
var matchesId = (idToMatch) => (obj) => String(obj.id) === String(idToMatch);
|
|
788
|
+
function detectEnterKey(e) {
|
|
789
|
+
const ENTER = 13;
|
|
790
|
+
const charCode = typeof e.which === "number" ? e.which : e.keyCode;
|
|
791
|
+
return ENTER === charCode;
|
|
792
|
+
}
|
|
793
|
+
function makeOption(value, label) {
|
|
794
|
+
return value ? { label, value } : void 0;
|
|
795
|
+
}
|
|
796
|
+
function makeLoadOptionsFunc(func, args, defaultOptions, extras = {}) {
|
|
797
|
+
var _a;
|
|
798
|
+
const response = (_a = func == null ? void 0 : func(args)) != null ? _a : null;
|
|
799
|
+
return response ? response.then((options) => __spreadValues({ options }, extras)) : Promise.resolve(__spreadValues({ options: defaultOptions }, extras));
|
|
800
|
+
}
|
|
801
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
802
|
+
0 && (module.exports = {
|
|
803
|
+
Collapse,
|
|
804
|
+
TYPES,
|
|
805
|
+
acceptAllExtensions,
|
|
806
|
+
acceptAllTypes,
|
|
807
|
+
acceptAudioExtensions,
|
|
808
|
+
acceptFileTypes,
|
|
809
|
+
acceptFilesExtensions,
|
|
810
|
+
acceptImagesExtensions,
|
|
811
|
+
base64ToArrayBuffer,
|
|
812
|
+
capitalize,
|
|
813
|
+
colorLuminance,
|
|
814
|
+
createPath,
|
|
815
|
+
currencyDirectory,
|
|
816
|
+
debounce,
|
|
817
|
+
detectEnterKey,
|
|
818
|
+
detectIE,
|
|
819
|
+
extractDigits,
|
|
820
|
+
getColorByString,
|
|
821
|
+
getCurrencySymbol,
|
|
822
|
+
getFilesSize,
|
|
823
|
+
getGradient,
|
|
824
|
+
getMimeTypes,
|
|
825
|
+
getNextPageFromLinkHeader,
|
|
826
|
+
getNextPageURLFromLinkHeader,
|
|
827
|
+
getRandomInt,
|
|
828
|
+
indexByGroupId,
|
|
829
|
+
indexById,
|
|
830
|
+
isElementInViewport,
|
|
831
|
+
makeLoadOptionsFunc,
|
|
832
|
+
makeOption,
|
|
833
|
+
makeParamString,
|
|
834
|
+
makeShortNameFromFull,
|
|
835
|
+
matchesId,
|
|
836
|
+
merge,
|
|
837
|
+
mergeByKey,
|
|
838
|
+
mimeAudio,
|
|
839
|
+
mimeFiles,
|
|
840
|
+
mimeImages,
|
|
841
|
+
outerHeight,
|
|
842
|
+
parseQueryString,
|
|
843
|
+
parseStringListToArray,
|
|
844
|
+
pickBy,
|
|
845
|
+
pluralize,
|
|
846
|
+
pluralizeByType,
|
|
847
|
+
qid,
|
|
848
|
+
rawMarkup,
|
|
849
|
+
removeElFromArr,
|
|
850
|
+
scrollToElement,
|
|
851
|
+
serializeArray,
|
|
852
|
+
splitEvery,
|
|
853
|
+
toCamelCase,
|
|
854
|
+
toUnderscoredCase,
|
|
855
|
+
transformOptionsForSelect,
|
|
856
|
+
uniq,
|
|
857
|
+
uuid,
|
|
858
|
+
wrapFormFields
|
|
859
|
+
});
|