@foxford/foxford-utils 0.3.8 → 1.0.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/foxford-utils.cjs.js +2 -0
- package/foxford-utils.cjs.js.map +1 -0
- package/foxford-utils.mjs +2 -0
- package/foxford-utils.mjs.map +1 -0
- package/package.json +43 -71
- package/README.md +0 -4
- package/dist/cjs/index.js +0 -1123
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/index.min.js +0 -7
- package/dist/cjs/index.min.js.map +0 -1
- package/dist/es/array.js +0 -77
- package/dist/es/base64ToArrayBuffer.js +0 -16
- package/dist/es/browser.js +0 -31
- package/dist/es/capitalize.js +0 -7
- package/dist/es/caseConverters.js +0 -31
- package/dist/es/collapse.js +0 -62
- package/dist/es/colors.js +0 -44
- package/dist/es/currency-codes.js +0 -127
- package/dist/es/debounce.js +0 -30
- package/dist/es/dom.js +0 -66
- package/dist/es/files.js +0 -43
- package/dist/es/functions.js +0 -89
- package/dist/es/getFilesSize.js +0 -12
- package/dist/es/getMimeTypes.js +0 -10
- package/dist/es/getRandomInt.js +0 -4
- package/dist/es/index.js +0 -29
- package/dist/es/indexByGroupId.js +0 -24
- package/dist/es/indexById.js +0 -23
- package/dist/es/mime-types/audio.js +0 -7
- package/dist/es/mime-types/files.js +0 -19
- package/dist/es/mime-types/images.js +0 -10
- package/dist/es/objects.js +0 -26
- package/dist/es/parseStringListToArray.js +0 -20
- package/dist/es/pickBy.js +0 -18
- package/dist/es/pluralize.js +0 -8
- package/dist/es/pluralizeByType.js +0 -24
- package/dist/es/qid.js +0 -24
- package/dist/es/rawMarkup.js +0 -9
- package/dist/es/scrollToElement.js +0 -23
- package/dist/es/strings.js +0 -28
- package/dist/es/transformOptionsForSelect.js +0 -19
- package/dist/es/url.js +0 -99
- package/dist/es/uuid.js +0 -11
package/dist/cjs/index.js
DELETED
|
@@ -1,1123 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
|
6
|
-
|
|
7
|
-
var _objectSpread = _interopDefault(require('@babel/runtime/helpers/objectSpread'));
|
|
8
|
-
var qs = _interopDefault(require('query-string'));
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Generate unique qid
|
|
12
|
-
* @param {number} length of unique id
|
|
13
|
-
* @param {boolean} number use number in string
|
|
14
|
-
* @return {string}
|
|
15
|
-
*/
|
|
16
|
-
function qid(length, number) {
|
|
17
|
-
if (length === void 0) {
|
|
18
|
-
length = 6;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
if (number === void 0) {
|
|
22
|
-
number = true;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
var text = '';
|
|
26
|
-
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + (number ? '0123456789' : '');
|
|
27
|
-
|
|
28
|
-
for (var i = 0; i < length; i++) {
|
|
29
|
-
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return text;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Generate unique grouped id
|
|
37
|
-
* @returns {string}
|
|
38
|
-
*/
|
|
39
|
-
function uuid() {
|
|
40
|
-
function s4() {
|
|
41
|
-
return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return s4() + s4() + "-" + s4() + "-" + s4() + "-" + s4() + "-" + s4() + s4() + s4();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Filter object fields
|
|
49
|
-
*
|
|
50
|
-
* @export
|
|
51
|
-
* @param {object} object - input object
|
|
52
|
-
* @param {function} filterFunc - function for filtering
|
|
53
|
-
* @returns {object} - resulting objetc with filered fields
|
|
54
|
-
*/
|
|
55
|
-
function pickBy(obj, filterFunc) {
|
|
56
|
-
var newObj = {};
|
|
57
|
-
Object.entries(obj).map(function (entry) {
|
|
58
|
-
var key = entry[0];
|
|
59
|
-
var value = entry[1];
|
|
60
|
-
if (filterFunc(key, value)) newObj[key] = value;
|
|
61
|
-
return [key, value];
|
|
62
|
-
});
|
|
63
|
-
return newObj;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
function toggleOnClickHandler(_ref) {
|
|
67
|
-
var currentTarget = _ref.currentTarget;
|
|
68
|
-
if (!currentTarget) return false;
|
|
69
|
-
var toggleArrow = currentTarget.querySelector('.toggle_arrow');
|
|
70
|
-
var arrowClass = 'down';
|
|
71
|
-
var toggleClass = 'expanded';
|
|
72
|
-
|
|
73
|
-
if (Array.from(toggleArrow.classList).indexOf(arrowClass) !== -1) {
|
|
74
|
-
toggleArrow.classList.remove(arrowClass);
|
|
75
|
-
currentTarget.classList.remove(toggleClass);
|
|
76
|
-
} else {
|
|
77
|
-
currentTarget.classList.add(toggleClass);
|
|
78
|
-
toggleArrow.classList.add(arrowClass);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
var Collapse =
|
|
85
|
-
/*#__PURE__*/
|
|
86
|
-
function () {
|
|
87
|
-
function Collapse() {
|
|
88
|
-
this.init = this.init.bind(this);
|
|
89
|
-
this.makeCollapse = this.makeCollapse.bind(this);
|
|
90
|
-
this.destroy = this.destroy.bind(this);
|
|
91
|
-
this.onClickHandler = toggleOnClickHandler;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
var _proto = Collapse.prototype;
|
|
95
|
-
|
|
96
|
-
_proto.makeCollapse = function makeCollapse(collapse) {
|
|
97
|
-
if (Array.from(collapse.classList).indexOf('js') !== -1) return false;
|
|
98
|
-
collapse.addEventListener('click', this.onClickHandler);
|
|
99
|
-
return collapse.classList.add('js');
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
_proto.init = function init() {
|
|
103
|
-
var _this = this;
|
|
104
|
-
|
|
105
|
-
setTimeout(function () {
|
|
106
|
-
if (!document.querySelectorAll || !document.body.classList) return false;
|
|
107
|
-
_this.collapses = window.document.querySelectorAll('.toggle_element');
|
|
108
|
-
return Array.from(_this.collapses).forEach(_this.makeCollapse);
|
|
109
|
-
}, 0);
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
_proto.destroy = function destroy() {
|
|
113
|
-
var _this2 = this;
|
|
114
|
-
|
|
115
|
-
var collapses = window.document.querySelectorAll('.toggle_element');
|
|
116
|
-
Array.from(collapses).forEach(function (item) {
|
|
117
|
-
item.removeEventListener('click', _this2.makeCollapse);
|
|
118
|
-
});
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
_proto.reinit = function reinit() {
|
|
122
|
-
this.destroy();
|
|
123
|
-
this.init();
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
return Collapse;
|
|
127
|
-
}();
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Decorate function with debounce
|
|
131
|
-
*
|
|
132
|
-
* @export
|
|
133
|
-
* @param {function} f - function
|
|
134
|
-
* @param {number} ms - debounce
|
|
135
|
-
* @returns {function} - decorated function
|
|
136
|
-
*/
|
|
137
|
-
function debounce(f, ms) {
|
|
138
|
-
var timer = null;
|
|
139
|
-
return function decoratedFunction() {
|
|
140
|
-
var _this = this;
|
|
141
|
-
|
|
142
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
143
|
-
args[_key] = arguments[_key];
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
var onComplete = function onComplete() {
|
|
147
|
-
f.apply(_this, args);
|
|
148
|
-
timer = null;
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
if (timer) {
|
|
152
|
-
clearTimeout(timer);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
timer = setTimeout(onComplete, ms);
|
|
156
|
-
return timer;
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/*
|
|
161
|
-
Функция превращает массив:
|
|
162
|
-
[{ id: 1, name: 'item 1' }, ... ]
|
|
163
|
-
|
|
164
|
-
В объект:
|
|
165
|
-
{
|
|
166
|
-
'1': {
|
|
167
|
-
id: 1,
|
|
168
|
-
name: 'item 1'
|
|
169
|
-
},
|
|
170
|
-
...
|
|
171
|
-
}
|
|
172
|
-
*/
|
|
173
|
-
function indexById(items) {
|
|
174
|
-
return items.reduce(function (all, item) {
|
|
175
|
-
var newAll = _objectSpread({}, all);
|
|
176
|
-
|
|
177
|
-
newAll[item.id] = item;
|
|
178
|
-
return newAll;
|
|
179
|
-
}, {});
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
// @docs: http://localization-guide.readthedocs.io/en/latest/l10n/pluralforms.html
|
|
183
|
-
// @example
|
|
184
|
-
// pluralize(1, ['штука', 'штуки', 'штук'])
|
|
185
|
-
function pluralize(counter, forms) {
|
|
186
|
-
var n = Math.abs(counter);
|
|
187
|
-
var id = n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;
|
|
188
|
-
return forms[id];
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* @example
|
|
193
|
-
* <div dangerouslySetInnerHTML={rawMarkup('<b>text</b>')} />
|
|
194
|
-
*/
|
|
195
|
-
function rawMarkup(text) {
|
|
196
|
-
return {
|
|
197
|
-
__html: text
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Capitalize string
|
|
203
|
-
* @param {string} str
|
|
204
|
-
*/
|
|
205
|
-
var capitalize = function capitalize(str) {
|
|
206
|
-
return str.length ? str[0].toUpperCase() + str.slice(1) : '';
|
|
207
|
-
};
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* getFilesSize - increment attachments and add new files
|
|
211
|
-
* @param {Array[Object]} attachments
|
|
212
|
-
* @param {Array} files
|
|
213
|
-
*/
|
|
214
|
-
function getFilesSize(attachments, files) {
|
|
215
|
-
var size = 0;
|
|
216
|
-
attachments.concat(files).forEach(function (file) {
|
|
217
|
-
size += file.size;
|
|
218
|
-
});
|
|
219
|
-
return size;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Return array of mime-types from array of files
|
|
224
|
-
* @param {Array[File]} files
|
|
225
|
-
*/
|
|
226
|
-
var getMimeTypes = function getMimeTypes(files) {
|
|
227
|
-
var data = files.reduce(function (acc, file) {
|
|
228
|
-
return [].concat(acc, [file.mime]);
|
|
229
|
-
}, []);
|
|
230
|
-
return data;
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
// Возвращает случайное целое число между min (включительно) и max (не включая max)
|
|
234
|
-
function getRandomInt(min, max) {
|
|
235
|
-
return Math.floor(Math.random() * (max - min)) + min;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
/*
|
|
239
|
-
Функция превращает массив:
|
|
240
|
-
[{ id: 1, name: 'item 1', group: { id: 1 } }, ... ]
|
|
241
|
-
|
|
242
|
-
В объект:
|
|
243
|
-
{
|
|
244
|
-
'100': {
|
|
245
|
-
id: 1,
|
|
246
|
-
name: 'item 1',
|
|
247
|
-
group: { id: 100 }
|
|
248
|
-
},
|
|
249
|
-
...
|
|
250
|
-
}
|
|
251
|
-
*/
|
|
252
|
-
function indexByGroupId(items) {
|
|
253
|
-
return items.reduce(function (all, item) {
|
|
254
|
-
var newAll = _objectSpread({}, all);
|
|
255
|
-
|
|
256
|
-
newAll[item.group.id] = item;
|
|
257
|
-
return newAll;
|
|
258
|
-
}, {});
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
function getElementPosition(elem) {
|
|
262
|
-
var _elem$getBoundingClie = elem.getBoundingClientRect(),
|
|
263
|
-
top = _elem$getBoundingClie.top,
|
|
264
|
-
left = _elem$getBoundingClie.left;
|
|
265
|
-
|
|
266
|
-
var _window = window,
|
|
267
|
-
pageYOffset = _window.pageYOffset,
|
|
268
|
-
pageXOffset = _window.pageXOffset;
|
|
269
|
-
return {
|
|
270
|
-
top: top + pageYOffset,
|
|
271
|
-
left: left + pageXOffset
|
|
272
|
-
};
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
function scrollToElement(selector) {
|
|
276
|
-
var field = document.querySelector(selector);
|
|
277
|
-
if (!field) return false;
|
|
278
|
-
|
|
279
|
-
var _getElementPosition = getElementPosition(field),
|
|
280
|
-
top = _getElementPosition.top;
|
|
281
|
-
|
|
282
|
-
return window.scrollTo(0, top);
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
var TYPES = {
|
|
286
|
-
tasks: ['задача', 'задачи', 'задач'],
|
|
287
|
-
exercises: ['занятие', 'занятия', 'занятий'],
|
|
288
|
-
members: ['участник', 'участника', 'участников'],
|
|
289
|
-
hours: ['час', 'часа', 'часов'],
|
|
290
|
-
seconds: ['секунда', 'секунды', 'секунд'],
|
|
291
|
-
minutes: ['минута', 'минуты', 'минут'],
|
|
292
|
-
remains: ['остался', 'осталось', 'осталось'],
|
|
293
|
-
days: ['день', 'дня', 'дней'],
|
|
294
|
-
points: ['балл', 'балла', 'баллов'],
|
|
295
|
-
students: ['ученик', 'ученика', 'учеников'],
|
|
296
|
-
studentsParentalCase: ['ученика', 'учеников', 'учеников']
|
|
297
|
-
/**
|
|
298
|
-
* Get a pluralized string for a preset by type
|
|
299
|
-
*
|
|
300
|
-
* @param {number} counter
|
|
301
|
-
* @param {strung} type
|
|
302
|
-
*/
|
|
303
|
-
|
|
304
|
-
};
|
|
305
|
-
function pluralizeByType(counter, type) {
|
|
306
|
-
return pluralize(counter || 0, TYPES[type]);
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
/**
|
|
310
|
-
* Конвертим base64 в буфер
|
|
311
|
-
*
|
|
312
|
-
* @param {string} base64
|
|
313
|
-
*/
|
|
314
|
-
function base64ToArrayBuffer(base64) {
|
|
315
|
-
var binary_string = window.atob(base64);
|
|
316
|
-
var len = binary_string.length;
|
|
317
|
-
var bytes = new Uint8Array(len);
|
|
318
|
-
|
|
319
|
-
for (var i = 0; i < len; i++) {
|
|
320
|
-
bytes[i] = binary_string.charCodeAt(i);
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
return bytes.buffer;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
/**
|
|
327
|
-
* Функция для парсинга строки вида:
|
|
328
|
-
* "— Преподаватель кафедры общей физики МФТИ <br>
|
|
329
|
-
* — Старший преподаватель вечерней физико-технической школы МФТИ"
|
|
330
|
-
* в массив
|
|
331
|
-
*
|
|
332
|
-
* @export
|
|
333
|
-
* @param {any} string
|
|
334
|
-
* @returns array
|
|
335
|
-
*/
|
|
336
|
-
function parseStringListToArray(string) {
|
|
337
|
-
if (string === void 0) {
|
|
338
|
-
string = '';
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
return string.split(/(?:^|<br>|\n)\s*[-\u\u2010-\u2015\ufe58\ufe63\uff0d]/gm).filter(function (_ref) {
|
|
342
|
-
var length = _ref.length;
|
|
343
|
-
return length;
|
|
344
|
-
});
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
/**
|
|
348
|
-
* Function for transforming otions like grade options into select values
|
|
349
|
-
*
|
|
350
|
-
* @export
|
|
351
|
-
* @param {array} options array of {object} { id, name, image_url }
|
|
352
|
-
* @returns {array} selectOptions { value, label, image_url }
|
|
353
|
-
*/
|
|
354
|
-
function transformOptionsForSelect(options) {
|
|
355
|
-
return options.map(function (_ref) {
|
|
356
|
-
var id = _ref.id,
|
|
357
|
-
name = _ref.name,
|
|
358
|
-
image_url = _ref.image_url;
|
|
359
|
-
return {
|
|
360
|
-
value: id,
|
|
361
|
-
label: name,
|
|
362
|
-
image_url: image_url
|
|
363
|
-
};
|
|
364
|
-
});
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
/**
|
|
368
|
-
* Глубокий мерж объектов
|
|
369
|
-
*
|
|
370
|
-
* @param {object} target
|
|
371
|
-
* @param {object} source
|
|
372
|
-
*/
|
|
373
|
-
var merge = function merge(target, source) {
|
|
374
|
-
/*
|
|
375
|
-
Iterate through `source` properties and if an `Object`
|
|
376
|
-
set property to merge of `target` and `source` properties
|
|
377
|
-
*/
|
|
378
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
379
|
-
var _arr = Object.keys(source);
|
|
380
|
-
|
|
381
|
-
for (var _i = 0; _i < _arr.length; _i++) {
|
|
382
|
-
var key = _arr[_i];
|
|
383
|
-
|
|
384
|
-
if (source[key] instanceof Object && key in target) {
|
|
385
|
-
Object.assign(source[key], merge(target[key], source[key]));
|
|
386
|
-
}
|
|
387
|
-
} // Join `target` and modified `source`
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
Object.assign(target || {}, source);
|
|
391
|
-
return target;
|
|
392
|
-
};
|
|
393
|
-
|
|
394
|
-
/**
|
|
395
|
-
* Detect IE
|
|
396
|
-
* @returns version of IE or false, if browser is not Internet Explorer
|
|
397
|
-
*/
|
|
398
|
-
var detectIE = function detectIE() {
|
|
399
|
-
var ua = window.navigator.userAgent;
|
|
400
|
-
var msie = ua.indexOf('MSIE ');
|
|
401
|
-
|
|
402
|
-
if (msie > 0) {
|
|
403
|
-
// IE 10 or older => return version number
|
|
404
|
-
return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
var trident = ua.indexOf('Trident/');
|
|
408
|
-
|
|
409
|
-
if (trident > 0) {
|
|
410
|
-
// IE 11 => return version number
|
|
411
|
-
var rv = ua.indexOf('rv:');
|
|
412
|
-
return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
var edge = ua.indexOf('Edge/');
|
|
416
|
-
|
|
417
|
-
if (edge > 0) {
|
|
418
|
-
// Edge (IE 12+) => return version number
|
|
419
|
-
return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
|
|
420
|
-
} // other browser
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
return false;
|
|
424
|
-
};
|
|
425
|
-
|
|
426
|
-
/**
|
|
427
|
-
* Function returnes outer height of the element
|
|
428
|
-
*
|
|
429
|
-
* @export
|
|
430
|
-
* @param {node} el
|
|
431
|
-
* @returns {number} height
|
|
432
|
-
*/
|
|
433
|
-
function outerHeight(el) {
|
|
434
|
-
var style = getComputedStyle(el);
|
|
435
|
-
var height = el.offsetHeight;
|
|
436
|
-
height += parseInt(style.marginTop) + parseInt(style.marginBottom);
|
|
437
|
-
return height;
|
|
438
|
-
}
|
|
439
|
-
/**
|
|
440
|
-
* Serialize form data
|
|
441
|
-
*
|
|
442
|
-
* @export
|
|
443
|
-
* @param {form} form
|
|
444
|
-
* @returns {array} s
|
|
445
|
-
*/
|
|
446
|
-
|
|
447
|
-
function serializeArray(form) {
|
|
448
|
-
var field;
|
|
449
|
-
var l;
|
|
450
|
-
var s = [];
|
|
451
|
-
|
|
452
|
-
if (typeof form === 'object' && form.nodeName === 'FORM') {
|
|
453
|
-
var len = form.elements.length;
|
|
454
|
-
|
|
455
|
-
for (var i = 0; i < len; i++) {
|
|
456
|
-
field = form.elements[i];
|
|
457
|
-
|
|
458
|
-
if (field.name && !field.disabled && field.type !== 'file' && field.type !== 'reset' && field.type !== 'submit' && field.type !== 'button') {
|
|
459
|
-
if (field.type === 'select-multiple') {
|
|
460
|
-
l = form.elements[i].options.length;
|
|
461
|
-
|
|
462
|
-
for (var j = 0; j < l; j++) {
|
|
463
|
-
if (field.options[j].selected) {
|
|
464
|
-
s[s.length] = {
|
|
465
|
-
name: field.name,
|
|
466
|
-
value: field.options[j].value
|
|
467
|
-
};
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
} else if (field.type !== 'checkbox' && field.type !== 'radio' || field.checked) {
|
|
471
|
-
s[s.length] = {
|
|
472
|
-
name: field.name,
|
|
473
|
-
value: field.value
|
|
474
|
-
};
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
return s;
|
|
481
|
-
}
|
|
482
|
-
/**
|
|
483
|
-
* Check if element placed inside current viewport
|
|
484
|
-
*
|
|
485
|
-
* @param {node} el
|
|
486
|
-
*/
|
|
487
|
-
|
|
488
|
-
function isElementInViewport(el) {
|
|
489
|
-
var rect = el.getBoundingClientRect();
|
|
490
|
-
return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
/**
|
|
494
|
-
* Convert object keys to camelCase
|
|
495
|
-
* @param {object} obj
|
|
496
|
-
*/
|
|
497
|
-
var toCamelCase = function toCamelCase(obj) {
|
|
498
|
-
var result = {};
|
|
499
|
-
Object.entries(obj).forEach(function (_ref) {
|
|
500
|
-
var key = _ref[0],
|
|
501
|
-
value = _ref[1];
|
|
502
|
-
var newKey = key.split('_').map(function (part, i) {
|
|
503
|
-
return i === 0 ? part : part[0].toUpperCase() + part.slice(1);
|
|
504
|
-
}).join('');
|
|
505
|
-
result[newKey] = value;
|
|
506
|
-
});
|
|
507
|
-
return result;
|
|
508
|
-
};
|
|
509
|
-
/**
|
|
510
|
-
* Convert camelCase keys in object to undercase
|
|
511
|
-
* @param {object} obj
|
|
512
|
-
*/
|
|
513
|
-
|
|
514
|
-
var toUnderscoredCase = function toUnderscoredCase(obj) {
|
|
515
|
-
var result = {};
|
|
516
|
-
Object.entries(obj).forEach(function (_ref2) {
|
|
517
|
-
var key = _ref2[0],
|
|
518
|
-
value = _ref2[1];
|
|
519
|
-
var newKey = key.split(/(?=[A-Z])/).join('_').toLowerCase();
|
|
520
|
-
result[newKey] = value;
|
|
521
|
-
});
|
|
522
|
-
return result;
|
|
523
|
-
};
|
|
524
|
-
|
|
525
|
-
/**
|
|
526
|
-
* Function splits [arr] by arrays of [limit] elements
|
|
527
|
-
*
|
|
528
|
-
* @param {*} arr - any array
|
|
529
|
-
* @param {*} limit - length of new arrays
|
|
530
|
-
*/
|
|
531
|
-
var splitEvery = function splitEvery(limit, arr) {
|
|
532
|
-
if (limit === void 0) {
|
|
533
|
-
limit = 1;
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
if (arr === void 0) {
|
|
537
|
-
arr = [];
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
return arr.reduce(function (acc, item, index) {
|
|
541
|
-
if (!(index % limit)) {
|
|
542
|
-
acc[acc.length] = [];
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
acc[acc.length - 1].push(item);
|
|
546
|
-
return acc;
|
|
547
|
-
}, []);
|
|
548
|
-
};
|
|
549
|
-
/**
|
|
550
|
-
* Remove duplicated elements from array
|
|
551
|
-
*
|
|
552
|
-
* @param {array} arrArg - array to deduplicate
|
|
553
|
-
*/
|
|
554
|
-
|
|
555
|
-
var uniq = function uniq(arrArg) {
|
|
556
|
-
return arrArg.filter(function (elem, pos, arr) {
|
|
557
|
-
return arr.indexOf(elem) === pos;
|
|
558
|
-
});
|
|
559
|
-
};
|
|
560
|
-
/**
|
|
561
|
-
* Remove element from array by index
|
|
562
|
-
*
|
|
563
|
-
* @param {array} arr
|
|
564
|
-
* @param {number} index
|
|
565
|
-
*/
|
|
566
|
-
|
|
567
|
-
var removeElFromArr = function removeElFromArr(arr, index) {
|
|
568
|
-
var newArr = [].concat(arr);
|
|
569
|
-
newArr.splice(index, 1);
|
|
570
|
-
return newArr;
|
|
571
|
-
};
|
|
572
|
-
/**
|
|
573
|
-
* Merge two arrays of objects by field
|
|
574
|
-
*
|
|
575
|
-
* @param {array} [arr1=[]] - Array 1
|
|
576
|
-
* @param {array} [arr2=[]] - Array 2
|
|
577
|
-
* @returns {array}
|
|
578
|
-
*/
|
|
579
|
-
|
|
580
|
-
function mergeByKey(arr1, arr2, key) {
|
|
581
|
-
if (arr1 === void 0) {
|
|
582
|
-
arr1 = [];
|
|
583
|
-
}
|
|
584
|
-
|
|
585
|
-
if (arr2 === void 0) {
|
|
586
|
-
arr2 = [];
|
|
587
|
-
}
|
|
588
|
-
|
|
589
|
-
if (key === void 0) {
|
|
590
|
-
key = 'id';
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
return arr1.map(function (el1) {
|
|
594
|
-
var el2 = arr2.find(function (el) {
|
|
595
|
-
return "" + el[key] === "" + el1[key];
|
|
596
|
-
});
|
|
597
|
-
return el2 ? _objectSpread({}, el1, el2) : el1;
|
|
598
|
-
});
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
/**
|
|
602
|
-
* Функция принимает Ф.И.О, возвращает Ф.И.
|
|
603
|
-
*
|
|
604
|
-
* @param {string} fullName
|
|
605
|
-
* @returns {string} shortName
|
|
606
|
-
*/
|
|
607
|
-
var makeShortNameFromFull = function makeShortNameFromFull(fullName) {
|
|
608
|
-
if (fullName === void 0) {
|
|
609
|
-
fullName = '';
|
|
610
|
-
}
|
|
611
|
-
|
|
612
|
-
var nameArr = fullName.split(' ');
|
|
613
|
-
return nameArr.length === 3 ? nameArr.splice(0, 2).reverse().join(' ') : nameArr.reverse().join(' ');
|
|
614
|
-
};
|
|
615
|
-
/**
|
|
616
|
-
* Extracts all decimals from string
|
|
617
|
-
*
|
|
618
|
-
* @param {string} [str='']
|
|
619
|
-
* @returns {string}
|
|
620
|
-
*/
|
|
621
|
-
|
|
622
|
-
var extractDigits = function extractDigits(str) {
|
|
623
|
-
if (str === void 0) {
|
|
624
|
-
str = '';
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
return typeof str === 'string' && str.replace(/\D/gim, '');
|
|
628
|
-
};
|
|
629
|
-
|
|
630
|
-
/* eslint-disable */
|
|
631
|
-
var CURRENCY_DIRECTORY = {
|
|
632
|
-
ALL: "Lek",
|
|
633
|
-
AFN: "\u060B",
|
|
634
|
-
ARS: "$",
|
|
635
|
-
AWG: "\u0192",
|
|
636
|
-
AUD: "$",
|
|
637
|
-
AZN: "\u20BC",
|
|
638
|
-
BSD: "$",
|
|
639
|
-
BBD: "$",
|
|
640
|
-
BYR: "Br",
|
|
641
|
-
BZD: "BZ$",
|
|
642
|
-
BMD: "$",
|
|
643
|
-
BOB: "$b",
|
|
644
|
-
BAM: "KM",
|
|
645
|
-
BWP: "P",
|
|
646
|
-
BGN: "\u043B\u0432",
|
|
647
|
-
BRL: "R$",
|
|
648
|
-
BND: "$",
|
|
649
|
-
KHR: "\u17DB",
|
|
650
|
-
CAD: "C$",
|
|
651
|
-
KYD: "$",
|
|
652
|
-
CLP: "$",
|
|
653
|
-
CNY: "\xA5",
|
|
654
|
-
COP: "$",
|
|
655
|
-
CRC: "\u20A1",
|
|
656
|
-
HRK: "kn",
|
|
657
|
-
CUP: "\u20B1",
|
|
658
|
-
CZK: "K\u010D",
|
|
659
|
-
DKK: "kr",
|
|
660
|
-
DOP: "RD$",
|
|
661
|
-
XCD: "$",
|
|
662
|
-
EGP: "\xA3",
|
|
663
|
-
SVC: "$",
|
|
664
|
-
EEK: "kr",
|
|
665
|
-
EUR: "\u20AC",
|
|
666
|
-
FKP: "\xA3",
|
|
667
|
-
FJD: "$",
|
|
668
|
-
FRF: "\u20A3",
|
|
669
|
-
GHC: "\xA2",
|
|
670
|
-
GIP: "\xA3",
|
|
671
|
-
GTQ: "Q",
|
|
672
|
-
GGP: "\xA3",
|
|
673
|
-
GYD: "$",
|
|
674
|
-
HNL: "L",
|
|
675
|
-
HKD: "$",
|
|
676
|
-
HUF: "Ft",
|
|
677
|
-
ISK: "kr",
|
|
678
|
-
INR: "\u20A8",
|
|
679
|
-
IDR: "Rp",
|
|
680
|
-
IRR: "\uFDFC",
|
|
681
|
-
IMP: "\xA3",
|
|
682
|
-
ILS: "\u20AA",
|
|
683
|
-
JMD: "J$",
|
|
684
|
-
JPY: "\xA5",
|
|
685
|
-
JEP: "\xA3",
|
|
686
|
-
KZT: "\u20B8",
|
|
687
|
-
KGS: "KGS",
|
|
688
|
-
LAK: "\u20AD",
|
|
689
|
-
LVL: "Ls",
|
|
690
|
-
LBP: "\xA3",
|
|
691
|
-
LRD: "$",
|
|
692
|
-
LTL: "Lt",
|
|
693
|
-
MKD: "\u0434\u0435\u043D",
|
|
694
|
-
MYR: "RM",
|
|
695
|
-
MUR: "\u20A8",
|
|
696
|
-
MXN: "$",
|
|
697
|
-
MNT: "\u20AE",
|
|
698
|
-
MZN: "MT",
|
|
699
|
-
NAD: "$",
|
|
700
|
-
NPR: "\u20A8",
|
|
701
|
-
ANG: "\u0192",
|
|
702
|
-
NZD: "$",
|
|
703
|
-
NIO: "C$",
|
|
704
|
-
NGN: "\u20A6",
|
|
705
|
-
KPW: "\u20A9",
|
|
706
|
-
NOK: "kr",
|
|
707
|
-
OMR: "\uFDFC",
|
|
708
|
-
PKR: "\u20A8",
|
|
709
|
-
PAB: "B/.",
|
|
710
|
-
PYG: "Gs",
|
|
711
|
-
PEN: "S/.",
|
|
712
|
-
PHP: "\u20B1",
|
|
713
|
-
PLN: "z\u0142",
|
|
714
|
-
QAR: "\uFDFC",
|
|
715
|
-
RON: "lei",
|
|
716
|
-
RUR: "\u20BD",
|
|
717
|
-
SHP: "\xA3",
|
|
718
|
-
SAR: "\uFDFC",
|
|
719
|
-
RSD: "\u0414\u0438\u043D.",
|
|
720
|
-
SCR: "\u20A8",
|
|
721
|
-
SGD: "$",
|
|
722
|
-
SBD: "$",
|
|
723
|
-
SOS: "S",
|
|
724
|
-
ZAR: "R",
|
|
725
|
-
KRW: "\u20A9",
|
|
726
|
-
LKR: "\u20A8",
|
|
727
|
-
SEK: "kr",
|
|
728
|
-
CHF: "CHF",
|
|
729
|
-
SRD: "$",
|
|
730
|
-
SYP: "\xA3",
|
|
731
|
-
TWD: "NT$",
|
|
732
|
-
THB: "\u0E3F",
|
|
733
|
-
TTD: "TT$",
|
|
734
|
-
TRY: "\u20A4",
|
|
735
|
-
TRL: "\u20A4",
|
|
736
|
-
TVD: "$",
|
|
737
|
-
UAH: "\u20B4",
|
|
738
|
-
GBP: "\xA3",
|
|
739
|
-
USD: "$",
|
|
740
|
-
UYU: "$U",
|
|
741
|
-
UZS: "\u043B\u0432",
|
|
742
|
-
VEF: "Bs",
|
|
743
|
-
VND: "\u20AB",
|
|
744
|
-
YER: "\uFDFC",
|
|
745
|
-
ZWD: "Z$"
|
|
746
|
-
/**
|
|
747
|
-
* Возвращает знак валюты по ISO коду.
|
|
748
|
-
*
|
|
749
|
-
* @param {String} currencyCode Код валюты.
|
|
750
|
-
* @returns {String}
|
|
751
|
-
*/
|
|
752
|
-
|
|
753
|
-
};
|
|
754
|
-
function getCurrencySymbol(currencyCode) {
|
|
755
|
-
return CURRENCY_DIRECTORY[currencyCode] || currencyCode;
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
function colorLuminance(rawHex, lum) {
|
|
759
|
-
if (lum === void 0) {
|
|
760
|
-
lum = 0;
|
|
761
|
-
}
|
|
762
|
-
|
|
763
|
-
// validate hex string
|
|
764
|
-
var hex = String(rawHex).replace(/[^0-9a-f]/gi, '');
|
|
765
|
-
|
|
766
|
-
if (hex.length < 6) {
|
|
767
|
-
hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
|
|
768
|
-
} // convert to decimal and change luminosity
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
var rgb = '#';
|
|
772
|
-
|
|
773
|
-
for (var i = 0; i < 3; i++) {
|
|
774
|
-
var c = hex && parseInt(hex.substr(i * 2, 2), 16);
|
|
775
|
-
c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16);
|
|
776
|
-
rgb += ("00" + c).substr(c.length);
|
|
777
|
-
}
|
|
778
|
-
|
|
779
|
-
return rgb;
|
|
780
|
-
}
|
|
781
|
-
function getGradient(degree, color) {
|
|
782
|
-
return "linear-gradient(" + degree + ", " + colorLuminance("#" + color, +0.09) + ", " + colorLuminance("#" + color, -0.09) + ")";
|
|
783
|
-
}
|
|
784
|
-
/**
|
|
785
|
-
* Возвращает цвет по строке
|
|
786
|
-
*
|
|
787
|
-
* @param {string} string строка имени
|
|
788
|
-
* @param {Array} colors массив цветов (hex коды или имёна)
|
|
789
|
-
* @return {string} цвет из массива цветов
|
|
790
|
-
*/
|
|
791
|
-
|
|
792
|
-
var getColorByString = function getColorByString(string, colors) {
|
|
793
|
-
var i = string.length;
|
|
794
|
-
var sum = 0;
|
|
795
|
-
|
|
796
|
-
while (i--) {
|
|
797
|
-
sum += string.charCodeAt(i);
|
|
798
|
-
}
|
|
799
|
-
|
|
800
|
-
return colors ? colors[sum % colors.length] : null;
|
|
801
|
-
};
|
|
802
|
-
|
|
803
|
-
/**
|
|
804
|
-
* Хэлпер для создания строки URL адреса
|
|
805
|
-
* @param {String} url Путь
|
|
806
|
-
* @param {Object} query Объект параметров запроса
|
|
807
|
-
* @example
|
|
808
|
-
* createPath('/library', { id: 1 }) // => /library?id=1
|
|
809
|
-
* @returns {String} Итоговый путь
|
|
810
|
-
*/
|
|
811
|
-
|
|
812
|
-
function createPath(u, query) {
|
|
813
|
-
var url = u;
|
|
814
|
-
var hashExist = url.includes('#');
|
|
815
|
-
var hash = hashExist ? url.split('#')[1] : '';
|
|
816
|
-
|
|
817
|
-
if (hashExist) {
|
|
818
|
-
url = url.replace('#', '');
|
|
819
|
-
url = url.replace(hash, '');
|
|
820
|
-
}
|
|
821
|
-
|
|
822
|
-
var _url$split = url.split('?'),
|
|
823
|
-
urlPath = _url$split[0],
|
|
824
|
-
urlQuery = _url$split[1];
|
|
825
|
-
|
|
826
|
-
var queryParams = qs.stringify(_objectSpread({}, qs.parse(urlQuery), query), {
|
|
827
|
-
encode: false
|
|
828
|
-
});
|
|
829
|
-
return [urlPath, queryParams].filter(function (s) {
|
|
830
|
-
return !!s;
|
|
831
|
-
}).join('?') + (hashExist ? "#" + hash : '');
|
|
832
|
-
}
|
|
833
|
-
/**
|
|
834
|
-
* Хэлпер для того чтобы парсить строку запроса (location.search)
|
|
835
|
-
* @param {String} query Строка запроса
|
|
836
|
-
* @return {Object} Объект содержащий параметры запроса
|
|
837
|
-
* @example
|
|
838
|
-
* parseQueryString('/library?id=1') // => { id: 1 }
|
|
839
|
-
*/
|
|
840
|
-
|
|
841
|
-
function parseQueryString(query) {
|
|
842
|
-
return qs.parse(query);
|
|
843
|
-
}
|
|
844
|
-
/**
|
|
845
|
-
* Функция извлекает URL следующей страницы из HTTP заголовка Link
|
|
846
|
-
*
|
|
847
|
-
* @param {String} link Содержимое заголовка Link
|
|
848
|
-
* @return {String} URL адрес следующей страницы или пустая строка
|
|
849
|
-
*
|
|
850
|
-
* @example
|
|
851
|
-
* var link = "<http://localhost:3500/api/library/pupil_courses?page=2>; rel='next'"
|
|
852
|
-
* var url = getNextPageURLFromLinkHeader(link)
|
|
853
|
-
* url === 'http://localhost:3500/api/library/pupil_courses?page=2'
|
|
854
|
-
*/
|
|
855
|
-
|
|
856
|
-
function getNextPageURLFromLinkHeader(link) {
|
|
857
|
-
if (link === void 0) {
|
|
858
|
-
link = '';
|
|
859
|
-
}
|
|
860
|
-
|
|
861
|
-
var result = link.match(/<([^>]+)>/);
|
|
862
|
-
return result ? result[1] : '';
|
|
863
|
-
}
|
|
864
|
-
/**
|
|
865
|
-
* Функция извлекает номер следующей страницы из HTTP заголовка Link
|
|
866
|
-
*
|
|
867
|
-
* @param {String} link Содержимое заголовка Link
|
|
868
|
-
* @return {Number} page номер страницы или null
|
|
869
|
-
*
|
|
870
|
-
* @example
|
|
871
|
-
* var link = "<http://localhost:3500/api/library/pupil_courses?page=2>; rel='next'"
|
|
872
|
-
* var url = getNextPageURLFromLinkHeader(link)
|
|
873
|
-
* url === 'http://localhost:3500/api/library/pupil_courses?page=2'
|
|
874
|
-
*/
|
|
875
|
-
|
|
876
|
-
function getNextPageFromLinkHeader(link) {
|
|
877
|
-
if (link === void 0) {
|
|
878
|
-
link = '';
|
|
879
|
-
}
|
|
880
|
-
|
|
881
|
-
return link ? parseInt(/[?&]page=([^&>]+)[&>]/gi.exec(link)[1]) || null : null;
|
|
882
|
-
}
|
|
883
|
-
/**
|
|
884
|
-
* Generate url param string
|
|
885
|
-
*
|
|
886
|
-
* @export
|
|
887
|
-
* @param {object} object
|
|
888
|
-
* @returns {string}
|
|
889
|
-
*/
|
|
890
|
-
|
|
891
|
-
function makeParamString(object) {
|
|
892
|
-
if (object === void 0) {
|
|
893
|
-
object = {};
|
|
894
|
-
}
|
|
895
|
-
|
|
896
|
-
return Object.keys(object).map(function (key) {
|
|
897
|
-
return encodeURIComponent(key) + "=" + encodeURIComponent(object[key]);
|
|
898
|
-
}).join('&');
|
|
899
|
-
}
|
|
900
|
-
|
|
901
|
-
var images = [{
|
|
902
|
-
mime: 'image/jpeg',
|
|
903
|
-
extensions: ['jpg', 'jpeg']
|
|
904
|
-
}, {
|
|
905
|
-
mime: 'image/png',
|
|
906
|
-
extensions: ['png']
|
|
907
|
-
}, {
|
|
908
|
-
mime: 'image/gif',
|
|
909
|
-
extensions: ['gif']
|
|
910
|
-
}];
|
|
911
|
-
|
|
912
|
-
var files = [{
|
|
913
|
-
mime: 'application/vnd.oasis.opendocument.text',
|
|
914
|
-
extensions: ['odt']
|
|
915
|
-
}, {
|
|
916
|
-
mime: 'application/vnd.oasis.opendocument.formula',
|
|
917
|
-
extensions: ['odf']
|
|
918
|
-
}, {
|
|
919
|
-
mime: 'application/msword',
|
|
920
|
-
extensions: ['doc', 'dot']
|
|
921
|
-
}, {
|
|
922
|
-
mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
923
|
-
extensions: ['docx']
|
|
924
|
-
}, {
|
|
925
|
-
mime: 'application/pdf',
|
|
926
|
-
extensions: ['pdf']
|
|
927
|
-
}, {
|
|
928
|
-
mime: 'application/excel, application/x-excel, application/vnd.ms-excel, application/x-msexcel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
929
|
-
extensions: ['xls', 'xlsx']
|
|
930
|
-
}];
|
|
931
|
-
|
|
932
|
-
var audio = [{
|
|
933
|
-
mime: 'audio/mpeg, audio/mp3',
|
|
934
|
-
extensions: ['mp3']
|
|
935
|
-
}, {
|
|
936
|
-
mime: 'audio/wav',
|
|
937
|
-
extensions: ['wav']
|
|
938
|
-
}];
|
|
939
|
-
|
|
940
|
-
var MimeTypes = {
|
|
941
|
-
images: images,
|
|
942
|
-
files: files,
|
|
943
|
-
audio: audio
|
|
944
|
-
};
|
|
945
|
-
|
|
946
|
-
var getExtentensions = function getExtentensions(files$$1) {
|
|
947
|
-
return files$$1.reduce(function (acc, file) {
|
|
948
|
-
return [].concat(acc, file.extensions);
|
|
949
|
-
}, []);
|
|
950
|
-
};
|
|
951
|
-
|
|
952
|
-
var mimeImages = function mimeImages() {
|
|
953
|
-
return getMimeTypes(MimeTypes.images);
|
|
954
|
-
};
|
|
955
|
-
var mimeFiles = function mimeFiles() {
|
|
956
|
-
return getMimeTypes(MimeTypes.files);
|
|
957
|
-
};
|
|
958
|
-
var mimeAudio = function mimeAudio() {
|
|
959
|
-
return getMimeTypes(MimeTypes.audio);
|
|
960
|
-
};
|
|
961
|
-
var acceptFileTypes = function acceptFileTypes() {
|
|
962
|
-
return [].concat(mimeImages(), mimeFiles());
|
|
963
|
-
};
|
|
964
|
-
var acceptAllTypes = function acceptAllTypes() {
|
|
965
|
-
return [].concat(mimeImages(), mimeFiles(), mimeAudio());
|
|
966
|
-
};
|
|
967
|
-
var acceptImagesExtensions = function acceptImagesExtensions() {
|
|
968
|
-
return getExtentensions(MimeTypes.images);
|
|
969
|
-
};
|
|
970
|
-
var acceptFilesExtensions = function acceptFilesExtensions() {
|
|
971
|
-
return getExtentensions(MimeTypes.files);
|
|
972
|
-
};
|
|
973
|
-
var acceptAudioExtensions = function acceptAudioExtensions() {
|
|
974
|
-
return getExtentensions(MimeTypes.audio);
|
|
975
|
-
};
|
|
976
|
-
var acceptAllExtensions = function acceptAllExtensions() {
|
|
977
|
-
return [].concat(acceptFilesExtensions(), acceptImagesExtensions(), acceptAudioExtensions());
|
|
978
|
-
};
|
|
979
|
-
|
|
980
|
-
function wrapField(wrapper, field) {
|
|
981
|
-
return wrapper + "[" + field + "]";
|
|
982
|
-
}
|
|
983
|
-
|
|
984
|
-
function wrapFormFields(wrapper, formFieldsString, untouchables) {
|
|
985
|
-
if (untouchables === void 0) {
|
|
986
|
-
untouchables = [];
|
|
987
|
-
}
|
|
988
|
-
|
|
989
|
-
var parts = formFieldsString.split('&');
|
|
990
|
-
var newFields = [];
|
|
991
|
-
var oldField;
|
|
992
|
-
var newPart;
|
|
993
|
-
parts.forEach(function (oldPart) {
|
|
994
|
-
oldField = oldPart.substr(0, oldPart.indexOf('='));
|
|
995
|
-
|
|
996
|
-
if (untouchables.includes(oldField)) {
|
|
997
|
-
newPart = oldPart;
|
|
998
|
-
} else {
|
|
999
|
-
newPart = oldPart.replace(oldField, wrapField(wrapper, oldField));
|
|
1000
|
-
}
|
|
1001
|
-
|
|
1002
|
-
newFields.push(newPart);
|
|
1003
|
-
});
|
|
1004
|
-
return newFields.join('&');
|
|
1005
|
-
}
|
|
1006
|
-
/**
|
|
1007
|
-
* Function returns function for cheking if idToMatch matches object's id
|
|
1008
|
-
*
|
|
1009
|
-
* Usage: arr.find(matchesId(id))
|
|
1010
|
-
*
|
|
1011
|
-
* @param {string | object} idToMatch - id that will be matching in returned function
|
|
1012
|
-
*
|
|
1013
|
-
* @return {function}
|
|
1014
|
-
*/
|
|
1015
|
-
|
|
1016
|
-
var matchesId = function matchesId(idToMatch) {
|
|
1017
|
-
return function (_ref) {
|
|
1018
|
-
var id = _ref.id;
|
|
1019
|
-
return String(id) === String(idToMatch);
|
|
1020
|
-
};
|
|
1021
|
-
};
|
|
1022
|
-
/**
|
|
1023
|
-
* Detects if Enter key was pressed
|
|
1024
|
-
*
|
|
1025
|
-
* @export
|
|
1026
|
-
* @param {array} options array of {object} { id, name }
|
|
1027
|
-
* @returns {array} selectOprions { value, label }
|
|
1028
|
-
*/
|
|
1029
|
-
|
|
1030
|
-
function detectEnterKey(e) {
|
|
1031
|
-
var enterKey = 13;
|
|
1032
|
-
var charCode = typeof e.which === 'number' ? e.which : e.keyCode;
|
|
1033
|
-
return enterKey === charCode;
|
|
1034
|
-
}
|
|
1035
|
-
/**
|
|
1036
|
-
* Make options for select
|
|
1037
|
-
* @param {numer} value
|
|
1038
|
-
* @param {string} label
|
|
1039
|
-
*/
|
|
1040
|
-
|
|
1041
|
-
var makeOption = function makeOption(value, label) {
|
|
1042
|
-
return value ? {
|
|
1043
|
-
value: value,
|
|
1044
|
-
label: label
|
|
1045
|
-
} : undefined;
|
|
1046
|
-
};
|
|
1047
|
-
/**
|
|
1048
|
-
* Make loadOptionsFunction for select
|
|
1049
|
-
*
|
|
1050
|
-
* @param {function} func - function to load array of options
|
|
1051
|
-
* @param {object} args - function's arguments
|
|
1052
|
-
* @param {array} defaultOptions - array of default options:
|
|
1053
|
-
* @param {string} label
|
|
1054
|
-
* @param {number} id
|
|
1055
|
-
*/
|
|
1056
|
-
|
|
1057
|
-
var makeLoadOptionsFunc = function makeLoadOptionsFunc(func, args, defaultOptions) {
|
|
1058
|
-
var response = func(args);
|
|
1059
|
-
return response ? response.then(function (options) {
|
|
1060
|
-
return _objectSpread({
|
|
1061
|
-
options: options
|
|
1062
|
-
}, defaultOptions);
|
|
1063
|
-
}) : Promise.resolve({
|
|
1064
|
-
options: defaultOptions
|
|
1065
|
-
});
|
|
1066
|
-
};
|
|
1067
|
-
|
|
1068
|
-
exports.qid = qid;
|
|
1069
|
-
exports.uuid = uuid;
|
|
1070
|
-
exports.pickBy = pickBy;
|
|
1071
|
-
exports.Collapse = Collapse;
|
|
1072
|
-
exports.debounce = debounce;
|
|
1073
|
-
exports.indexById = indexById;
|
|
1074
|
-
exports.pluralize = pluralize;
|
|
1075
|
-
exports.rawMarkup = rawMarkup;
|
|
1076
|
-
exports.capitalize = capitalize;
|
|
1077
|
-
exports.getFilesSize = getFilesSize;
|
|
1078
|
-
exports.getMimeTypes = getMimeTypes;
|
|
1079
|
-
exports.getRandomInt = getRandomInt;
|
|
1080
|
-
exports.indexByGroupId = indexByGroupId;
|
|
1081
|
-
exports.scrollToElement = scrollToElement;
|
|
1082
|
-
exports.pluralizeByType = pluralizeByType;
|
|
1083
|
-
exports.base64ToArrayBuffer = base64ToArrayBuffer;
|
|
1084
|
-
exports.parseStringListToArray = parseStringListToArray;
|
|
1085
|
-
exports.transformOptionsForSelect = transformOptionsForSelect;
|
|
1086
|
-
exports.merge = merge;
|
|
1087
|
-
exports.detectIE = detectIE;
|
|
1088
|
-
exports.serializeArray = serializeArray;
|
|
1089
|
-
exports.outerHeight = outerHeight;
|
|
1090
|
-
exports.isElementInViewport = isElementInViewport;
|
|
1091
|
-
exports.toCamelCase = toCamelCase;
|
|
1092
|
-
exports.toUnderscoredCase = toUnderscoredCase;
|
|
1093
|
-
exports.uniq = uniq;
|
|
1094
|
-
exports.splitEvery = splitEvery;
|
|
1095
|
-
exports.removeElFromArr = removeElFromArr;
|
|
1096
|
-
exports.mergeByKey = mergeByKey;
|
|
1097
|
-
exports.extractDigits = extractDigits;
|
|
1098
|
-
exports.makeShortNameFromFull = makeShortNameFromFull;
|
|
1099
|
-
exports.getCurrencySymbol = getCurrencySymbol;
|
|
1100
|
-
exports.currencyDirectory = CURRENCY_DIRECTORY;
|
|
1101
|
-
exports.getGradient = getGradient;
|
|
1102
|
-
exports.colorLuminance = colorLuminance;
|
|
1103
|
-
exports.getColorByString = getColorByString;
|
|
1104
|
-
exports.createPath = createPath;
|
|
1105
|
-
exports.parseQueryString = parseQueryString;
|
|
1106
|
-
exports.getNextPageFromLinkHeader = getNextPageFromLinkHeader;
|
|
1107
|
-
exports.getNextPageURLFromLinkHeader = getNextPageURLFromLinkHeader;
|
|
1108
|
-
exports.makeParamString = makeParamString;
|
|
1109
|
-
exports.mimeImages = mimeImages;
|
|
1110
|
-
exports.mimeFiles = mimeFiles;
|
|
1111
|
-
exports.mimeAudio = mimeAudio;
|
|
1112
|
-
exports.acceptFileTypes = acceptFileTypes;
|
|
1113
|
-
exports.acceptAllTypes = acceptAllTypes;
|
|
1114
|
-
exports.acceptImagesExtensions = acceptImagesExtensions;
|
|
1115
|
-
exports.acceptFilesExtensions = acceptFilesExtensions;
|
|
1116
|
-
exports.acceptAudioExtensions = acceptAudioExtensions;
|
|
1117
|
-
exports.acceptAllExtensions = acceptAllExtensions;
|
|
1118
|
-
exports.wrapFormFields = wrapFormFields;
|
|
1119
|
-
exports.matchesId = matchesId;
|
|
1120
|
-
exports.detectEnterKey = detectEnterKey;
|
|
1121
|
-
exports.makeOption = makeOption;
|
|
1122
|
-
exports.makeLoadOptionsFunc = makeLoadOptionsFunc;
|
|
1123
|
-
//# sourceMappingURL=index.js.map
|