@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.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/qid.js","../../src/uuid.js","../../src/pickBy.js","../../src/collapse.js","../../src/debounce.js","../../src/indexById.js","../../src/pluralize.js","../../src/rawMarkup.js","../../src/capitalize.js","../../src/getFilesSize.js","../../src/getMimeTypes.js","../../src/getRandomInt.js","../../src/indexByGroupId.js","../../src/scrollToElement.js","../../src/pluralizeByType.js","../../src/base64ToArrayBuffer.js","../../src/parseStringListToArray.js","../../src/transformOptionsForSelect.js","../../src/objects.js","../../src/browser.js","../../src/dom.js","../../src/caseConverters.js","../../src/array.js","../../src/strings.js","../../src/currency-codes.js","../../src/colors.js","../../src/url.js","../../src/mime-types/images.js","../../src/mime-types/files.js","../../src/mime-types/audio.js","../../src/files.js","../../src/functions.js"],"sourcesContent":["/**\n * Generate unique qid\n * @param {number} length of unique id\n * @param {boolean} number use number in string\n * @return {string}\n */\nexport function qid(length = 6, number = true) {\n let text = ''\n const possible = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz${\n number ? '0123456789' : ''\n }`\n\n for (let i = 0; i < length; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length))\n }\n\n return text\n}\n","/**\n * Generate unique grouped id\n * @returns {string}\n */\nexport function uuid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1)\n }\n\n return `${s4() + s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`\n}\n","/**\n * Filter object fields\n *\n * @export\n * @param {object} object - input object\n * @param {function} filterFunc - function for filtering\n * @returns {object} - resulting objetc with filered fields\n */\nexport function pickBy(obj, filterFunc) {\n const newObj = {}\n\n Object.entries(obj).map((entry) => {\n const key = entry[0]\n const value = entry[1]\n\n if (filterFunc(key, value)) newObj[key] = value\n\n return [key, value]\n })\n\n return newObj\n}\n","function toggleOnClickHandler({ currentTarget }) {\n if (!currentTarget) return false\n\n const toggleArrow = currentTarget.querySelector('.toggle_arrow')\n const arrowClass = 'down'\n const toggleClass = 'expanded'\n\n if (Array.from(toggleArrow.classList).indexOf(arrowClass) !== -1) {\n toggleArrow.classList.remove(arrowClass)\n currentTarget.classList.remove(toggleClass)\n } else {\n currentTarget.classList.add(toggleClass)\n toggleArrow.classList.add(arrowClass)\n }\n\n return true\n}\n\nexport class Collapse {\n constructor() {\n this.init = this.init.bind(this)\n this.makeCollapse = this.makeCollapse.bind(this)\n this.destroy = this.destroy.bind(this)\n this.onClickHandler = toggleOnClickHandler\n }\n\n makeCollapse(collapse) {\n if (Array.from(collapse.classList).indexOf('js') !== -1) return false\n\n collapse.addEventListener('click', this.onClickHandler)\n\n return collapse.classList.add('js')\n }\n\n init() {\n setTimeout(() => {\n if (!document.querySelectorAll || !document.body.classList) return false\n\n this.collapses = window.document.querySelectorAll('.toggle_element')\n\n return Array.from(this.collapses).forEach(this.makeCollapse)\n }, 0)\n }\n\n destroy() {\n const collapses = window.document.querySelectorAll('.toggle_element')\n\n Array.from(collapses).forEach((item) => {\n item.removeEventListener('click', this.makeCollapse)\n })\n }\n\n reinit() {\n this.destroy()\n this.init()\n }\n}\n","/**\n * Decorate function with debounce\n *\n * @export\n * @param {function} f - function\n * @param {number} ms - debounce\n * @returns {function} - decorated function\n */\nexport function debounce(f, ms) {\n let timer = null\n\n return function decoratedFunction(...args) {\n const onComplete = () => {\n f.apply(this, args)\n timer = null\n }\n\n if (timer) {\n clearTimeout(timer)\n }\n\n timer = setTimeout(onComplete, ms)\n\n return timer\n }\n}\n","/*\n Функция превращает массив:\n [{ id: 1, name: 'item 1' }, ... ]\n\n В объект:\n {\n '1': {\n id: 1,\n name: 'item 1'\n },\n ...\n }\n*/\nexport function indexById(items) {\n return items.reduce((all, item) => {\n const newAll = { ...all }\n\n newAll[item.id] = item\n\n return newAll\n }, {})\n}\n","// @docs: http://localization-guide.readthedocs.io/en/latest/l10n/pluralforms.html\n// @example\n// pluralize(1, ['штука', 'штуки', 'штук'])\nexport function pluralize(counter, forms) {\n const n = Math.abs(counter)\n const id =\n n % 10 === 1 && n % 100 !== 11\n ? 0\n : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20)\n ? 1\n : 2\n\n return forms[id]\n}\n","/**\n * @example\n * <div dangerouslySetInnerHTML={rawMarkup('<b>text</b>')} />\n */\nexport function rawMarkup(text) {\n return { __html: text }\n}\n","// @flow\n/**\n * Capitalize string\n * @param {string} str\n */\nexport const capitalize = (str: string): string => {\n return str.length ? str[0].toUpperCase() + str.slice(1) : ''\n}\n","/**\n * getFilesSize - increment attachments and add new files\n * @param {Array[Object]} attachments\n * @param {Array} files\n */\nexport function getFilesSize(attachments: [], files: []): number {\n let size = 0\n\n attachments.concat(files).forEach((file) => {\n size += file.size\n })\n\n return size\n}\n","// @flow\n/**\n * Return array of mime-types from array of files\n * @param {Array[File]} files\n */\ntype MimeFiles = Array<{\n extensions: Array<string>,\n mime: string,\n}>\n\nexport const getMimeTypes = (files: MimeFiles): Array<?string> => {\n const data = files.reduce((acc, file) => [...acc, file.mime], [])\n\n return data\n}\n","// Возвращает случайное целое число между min (включительно) и max (не включая max)\nexport function getRandomInt(min, max) {\n return Math.floor(Math.random() * (max - min)) + min\n}\n","/*\n Функция превращает массив:\n [{ id: 1, name: 'item 1', group: { id: 1 } }, ... ]\n\n В объект:\n {\n '100': {\n id: 1,\n name: 'item 1',\n group: { id: 100 }\n },\n ...\n }\n*/\nexport function indexByGroupId(items) {\n return items.reduce((all, item) => {\n const newAll = { ...all }\n\n newAll[item.group.id] = item\n\n return newAll\n }, {})\n}\n","function getElementPosition(elem) {\n const { top, left } = elem.getBoundingClientRect()\n const { pageYOffset, pageXOffset } = window\n\n return {\n top: top + pageYOffset,\n left: left + pageXOffset,\n }\n}\n\nexport function scrollToElement(selector) {\n const field = document.querySelector(selector)\n if (!field) return false\n const { top } = getElementPosition(field)\n\n return window.scrollTo(0, top)\n}\n","import { pluralize } from './pluralize'\n\nconst TYPES = {\n tasks: ['задача', 'задачи', 'задач'],\n exercises: ['занятие', 'занятия', 'занятий'],\n members: ['участник', 'участника', 'участников'],\n hours: ['час', 'часа', 'часов'],\n seconds: ['секунда', 'секунды', 'секунд'],\n minutes: ['минута', 'минуты', 'минут'],\n remains: ['остался', 'осталось', 'осталось'],\n days: ['день', 'дня', 'дней'],\n points: ['балл', 'балла', 'баллов'],\n students: ['ученик', 'ученика', 'учеников'],\n studentsParentalCase: ['ученика', 'учеников', 'учеников'],\n}\n\n/**\n * Get a pluralized string for a preset by type\n *\n * @param {number} counter\n * @param {strung} type\n */\nexport function pluralizeByType(counter, type) {\n return pluralize(counter || 0, TYPES[type])\n}\n","/**\n * Конвертим base64 в буфер\n *\n * @param {string} base64\n */\nexport function base64ToArrayBuffer(base64) {\n const binary_string = window.atob(base64)\n const len = binary_string.length\n const bytes = new Uint8Array(len)\n\n for (let i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i)\n }\n\n return bytes.buffer\n}\n","/**\n * Функция для парсинга строки вида:\n * \"— Преподаватель кафедры общей физики МФТИ <br>\n * — Старший преподаватель вечерней физико-технической школы МФТИ\"\n * в массив\n *\n * @export\n * @param {any} string\n * @returns array\n */\nexport function parseStringListToArray(string = '') {\n return string\n .split(/(?:^|<br>|\\n)\\s*[-\\u\\u2010-\\u2015\\ufe58\\ufe63\\uff0d]/gm)\n .filter(({ length }) => length)\n}\n","/**\n * Function for transforming otions like grade options into select values\n *\n * @export\n * @param {array} options array of {object} { id, name, image_url }\n * @returns {array} selectOptions { value, label, image_url }\n */\nexport function transformOptionsForSelect(options) {\n return options.map(({ id, name, image_url }) => ({\n value: id,\n label: name,\n image_url,\n }))\n}\n","/**\n * Глубокий мерж объектов\n *\n * @param {object} target\n * @param {object} source\n */\nexport const merge = (target, source) => {\n /*\n Iterate through `source` properties and if an `Object`\n set property to merge of `target` and `source` properties\n */\n // eslint-disable-next-line no-restricted-syntax\n for (const key of Object.keys(source)) {\n if (source[key] instanceof Object && key in target) {\n Object.assign(source[key], merge(target[key], source[key]))\n }\n }\n\n // Join `target` and modified `source`\n Object.assign(target || {}, source)\n\n return target\n}\n","// @flow\n/**\n * Detect IE\n * @returns version of IE or false, if browser is not Internet Explorer\n */\nexport const detectIE = (): boolean | number => {\n const ua: string = window.navigator.userAgent\n\n const msie = ua.indexOf('MSIE ')\n\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10)\n }\n\n const trident = ua.indexOf('Trident/')\n\n if (trident > 0) {\n // IE 11 => return version number\n const rv = ua.indexOf('rv:')\n\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10)\n }\n\n const edge = ua.indexOf('Edge/')\n\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10)\n }\n\n // other browser\n return false\n}\n","/**\n * Function returnes outer height of the element\n *\n * @export\n * @param {node} el\n * @returns {number} height\n */\nexport function outerHeight(el) {\n const style = getComputedStyle(el)\n let height = el.offsetHeight\n\n height += parseInt(style.marginTop) + parseInt(style.marginBottom)\n\n return height\n}\n\n/**\n * Serialize form data\n *\n * @export\n * @param {form} form\n * @returns {array} s\n */\nexport function serializeArray(form) {\n let field\n let l\n const s = []\n\n if (typeof form === 'object' && form.nodeName === 'FORM') {\n const len = form.elements.length\n\n for (let i = 0; i < len; i++) {\n field = form.elements[i]\n if (\n field.name &&\n !field.disabled &&\n field.type !== 'file' &&\n field.type !== 'reset' &&\n field.type !== 'submit' &&\n field.type !== 'button'\n ) {\n if (field.type === 'select-multiple') {\n l = form.elements[i].options.length\n for (let j = 0; j < l; j++) {\n if (field.options[j].selected) {\n s[s.length] = { name: field.name, value: field.options[j].value }\n }\n }\n } else if ((field.type !== 'checkbox' && field.type !== 'radio') || field.checked) {\n s[s.length] = { name: field.name, value: field.value }\n }\n }\n }\n }\n\n return s\n}\n\n/**\n * Check if element placed inside current viewport\n *\n * @param {node} el\n */\nexport function isElementInViewport(el) {\n const rect = el.getBoundingClientRect()\n\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n )\n}\n","// @flow\n\ntype ObjectType = {\n [string]: string,\n}\n\n/**\n * Convert object keys to camelCase\n * @param {object} obj\n */\nexport const toCamelCase = (obj: ObjectType): ObjectType => {\n const result = {}\n\n Object.entries(obj).forEach(([key, value]) => {\n const newKey: string = key\n .split('_')\n .map((part, i) => (i === 0 ? part : part[0].toUpperCase() + part.slice(1)))\n .join('')\n\n result[newKey] = value\n })\n\n return result\n}\n\n/**\n * Convert camelCase keys in object to undercase\n * @param {object} obj\n */\nexport const toUnderscoredCase = (obj: ObjectType): ObjectType => {\n const result = {}\n\n Object.entries(obj).forEach(([key, value]) => {\n const newKey = key\n .split(/(?=[A-Z])/)\n .join('_')\n .toLowerCase()\n\n result[newKey] = value\n })\n\n return result\n}\n","/**\n * Function splits [arr] by arrays of [limit] elements\n *\n * @param {*} arr - any array\n * @param {*} limit - length of new arrays\n */\nexport const splitEvery = (limit = 1, arr = []) =>\n arr.reduce((acc, item, index) => {\n if (!(index % limit)) {\n acc[acc.length] = []\n }\n\n acc[acc.length - 1].push(item)\n\n return acc\n }, [])\n\n/**\n * Remove duplicated elements from array\n *\n * @param {array} arrArg - array to deduplicate\n */\nexport const uniq = (arrArg) => arrArg.filter((elem, pos, arr) => arr.indexOf(elem) === pos)\n\n/**\n * Remove element from array by index\n *\n * @param {array} arr\n * @param {number} index\n */\nexport const removeElFromArr = (arr, index) => {\n const newArr = [...arr]\n\n newArr.splice(index, 1)\n\n return newArr\n}\n\n/**\n * Merge two arrays of objects by field\n *\n * @param {array} [arr1=[]] - Array 1\n * @param {array} [arr2=[]] - Array 2\n * @returns {array}\n */\nexport function mergeByKey(arr1 = [], arr2 = [], key = 'id') {\n return arr1.map((el1) => {\n const el2 = arr2.find((el) => `${el[key]}` === `${el1[key]}`)\n\n return el2 ? { ...el1, ...el2 } : el1\n })\n}\n","/**\n * Функция принимает Ф.И.О, возвращает Ф.И.\n *\n * @param {string} fullName\n * @returns {string} shortName\n */\nexport const makeShortNameFromFull = (fullName = '') => {\n const nameArr = fullName.split(' ')\n\n return nameArr.length === 3\n ? nameArr\n .splice(0, 2)\n .reverse()\n .join(' ')\n : nameArr.reverse().join(' ')\n}\n\n/**\n * Extracts all decimals from string\n *\n * @param {string} [str='']\n * @returns {string}\n */\nexport const extractDigits = (str = '') => typeof str === 'string' && str.replace(/\\D/gim, '')\n","/* eslint-disable */\nexport const CURRENCY_DIRECTORY = {\n ALL: '\\u004C\\u0065\\u006b',\n AFN: '\\u060B',\n ARS: '\\u0024',\n AWG: '\\u0192',\n AUD: '\\u0024',\n AZN: '\\u20BC',\n BSD: '\\u0024',\n BBD: '\\u0024',\n BYR: '\\u0042\\u0072',\n BZD: '\\u0042\\u005a\\u0024',\n BMD: '\\u0024',\n BOB: '\\u0024\\u0062',\n BAM: '\\u004B\\u004d',\n BWP: '\\u0050',\n BGN: '\\u043B\\u0432',\n BRL: '\\u0052\\u0024',\n BND: '\\u0024',\n KHR: '\\u17DB',\n CAD: '\\u0043\\u0024',\n KYD: '\\u0024',\n CLP: '\\u0024',\n CNY: '\\u00A5',\n COP: '\\u0024',\n CRC: '\\u20A1',\n HRK: '\\u006B\\u006e',\n CUP: '\\u20B1',\n CZK: '\\u004B\\u010d',\n DKK: '\\u006B\\u0072',\n DOP: '\\u0052\\u0044\\u0024',\n XCD: '\\u0024',\n EGP: '\\u00A3',\n SVC: '\\u0024',\n EEK: '\\u006B\\u0072',\n EUR: '\\u20AC',\n FKP: '\\u00A3',\n FJD: '\\u0024',\n FRF: '\\u20A3',\n GHC: '\\u00A2',\n GIP: '\\u00A3',\n GTQ: '\\u0051',\n GGP: '\\u00A3',\n GYD: '\\u0024',\n HNL: '\\u004C',\n HKD: '\\u0024',\n HUF: '\\u0046\\u0074',\n ISK: '\\u006B\\u0072',\n INR: '\\u20A8',\n IDR: '\\u0052\\u0070',\n IRR: '\\uFDFC',\n IMP: '\\u00A3',\n ILS: '\\u20AA',\n JMD: '\\u004A\\u0024',\n JPY: '\\u00A5',\n JEP: '\\u00A3',\n KZT: '\\u20B8',\n KGS: '\\u004B\\u0047\\u0053',\n LAK: '\\u20AD',\n LVL: '\\u004C\\u0073',\n LBP: '\\u00A3',\n LRD: '\\u0024',\n LTL: '\\u004C\\u0074',\n MKD: '\\u0434\\u0435\\u043d',\n MYR: '\\u0052\\u004d',\n MUR: '\\u20A8',\n MXN: '\\u0024',\n MNT: '\\u20AE',\n MZN: '\\u004D\\u0054',\n NAD: '\\u0024',\n NPR: '\\u20A8',\n ANG: '\\u0192',\n NZD: '\\u0024',\n NIO: '\\u0043\\u0024',\n NGN: '\\u20A6',\n KPW: '\\u20A9',\n NOK: '\\u006B\\u0072',\n OMR: '\\uFDFC',\n PKR: '\\u20A8',\n PAB: '\\u0042\\u002f\\u002e',\n PYG: '\\u0047\\u0073',\n PEN: '\\u0053\\u002f\\u002e',\n PHP: '\\u20B1',\n PLN: '\\u007A\\u0142',\n QAR: '\\uFDFC',\n RON: '\\u006C\\u0065\\u0069',\n RUR: '\\u20BD',\n SHP: '\\u00A3',\n SAR: '\\uFDFC',\n RSD: '\\u0414\\u0438\\u043d\\u002e',\n SCR: '\\u20A8',\n SGD: '\\u0024',\n SBD: '\\u0024',\n SOS: '\\u0053',\n ZAR: '\\u0052',\n KRW: '\\u20A9',\n LKR: '\\u20A8',\n SEK: '\\u006B\\u0072',\n CHF: '\\u0043\\u0048\\u0046',\n SRD: '\\u0024',\n SYP: '\\u00A3',\n TWD: '\\u004E\\u0054\\u0024',\n THB: '\\u0E3F',\n TTD: '\\u0054\\u0054\\u0024',\n TRY: '\\u20A4',\n TRL: '\\u20A4',\n TVD: '\\u0024',\n UAH: '\\u20B4',\n GBP: '\\u00A3',\n USD: '\\u0024',\n UYU: '\\u0024\\u0055',\n UZS: '\\u043B\\u0432',\n VEF: '\\u0042\\u0073',\n VND: '\\u20AB',\n YER: '\\uFDFC',\n ZWD: '\\u005A\\u0024',\n}\n\n/**\n * Возвращает знак валюты по ISO коду.\n *\n * @param {String} currencyCode Код валюты.\n * @returns {String}\n */\nexport function getCurrencySymbol(currencyCode) {\n return CURRENCY_DIRECTORY[currencyCode] || currencyCode\n}\n","export function colorLuminance(rawHex, lum = 0) {\n // validate hex string\n let hex = String(rawHex).replace(/[^0-9a-f]/gi, '')\n\n if (hex.length < 6) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]\n }\n\n // convert to decimal and change luminosity\n let rgb = '#'\n\n for (let i = 0; i < 3; i++) {\n let c = hex && parseInt(hex.substr(i * 2, 2), 16)\n\n c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16)\n rgb += `00${c}`.substr(c.length)\n }\n\n return rgb\n}\n\nexport function getGradient(degree, color) {\n return `linear-gradient(${degree}, ${colorLuminance(`#${color}`, +0.09)}, ${colorLuminance(\n `#${color}`,\n -0.09\n )})`\n}\n\n/**\n * Возвращает цвет по строке\n *\n * @param {string} string строка имени\n * @param {Array} colors массив цветов (hex коды или имёна)\n * @return {string} цвет из массива цветов\n */\nexport const getColorByString = (string, colors) => {\n let i = string.length\n let sum = 0\n\n while (i--) {\n sum += string.charCodeAt(i)\n }\n\n return colors ? colors[sum % colors.length] : null\n}\n","import qs from 'query-string'\n\n/**\n * Хэлпер для создания строки URL адреса\n * @param {String} url Путь\n * @param {Object} query Объект параметров запроса\n * @example\n * createPath('/library', { id: 1 }) // => /library?id=1\n * @returns {String} Итоговый путь\n */\nexport function createPath(u, query) {\n let url = u\n\n const hashExist = url.includes('#')\n const hash = hashExist ? url.split('#')[1] : ''\n\n if (hashExist) {\n url = url.replace('#', '')\n url = url.replace(hash, '')\n }\n\n const [urlPath, urlQuery] = url.split('?')\n\n const queryParams = qs.stringify(\n {\n ...qs.parse(urlQuery),\n ...query,\n },\n { encode: false }\n )\n\n return [urlPath, queryParams].filter((s) => !!s).join('?') + (hashExist ? `#${hash}` : '')\n}\n\n/**\n * Хэлпер для того чтобы парсить строку запроса (location.search)\n * @param {String} query Строка запроса\n * @return {Object} Объект содержащий параметры запроса\n * @example\n * parseQueryString('/library?id=1') // => { id: 1 }\n */\nexport function parseQueryString(query) {\n return qs.parse(query)\n}\n\n/**\n * Функция извлекает URL следующей страницы из HTTP заголовка Link\n *\n * @param {String} link Содержимое заголовка Link\n * @return {String} URL адрес следующей страницы или пустая строка\n *\n * @example\n * var link = \"<http://localhost:3500/api/library/pupil_courses?page=2>; rel='next'\"\n * var url = getNextPageURLFromLinkHeader(link)\n * url === 'http://localhost:3500/api/library/pupil_courses?page=2'\n */\nexport function getNextPageURLFromLinkHeader(link = '') {\n const result = link.match(/<([^>]+)>/)\n\n return result ? result[1] : ''\n}\n\n/**\n * Функция извлекает номер следующей страницы из HTTP заголовка Link\n *\n * @param {String} link Содержимое заголовка Link\n * @return {Number} page номер страницы или null\n *\n * @example\n * var link = \"<http://localhost:3500/api/library/pupil_courses?page=2>; rel='next'\"\n * var url = getNextPageURLFromLinkHeader(link)\n * url === 'http://localhost:3500/api/library/pupil_courses?page=2'\n */\nexport function getNextPageFromLinkHeader(link = '') {\n return link ? parseInt(/[?&]page=([^&>]+)[&>]/gi.exec(link)[1]) || null : null\n}\n\n/**\n * Generate url param string\n *\n * @export\n * @param {object} object\n * @returns {string}\n */\nexport function makeParamString(object = {}) {\n return Object.keys(object)\n .map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&')\n}\n","// @flow\nexport default [\n {\n mime: 'image/jpeg',\n extensions: ['jpg', 'jpeg'],\n },\n {\n mime: 'image/png',\n extensions: ['png'],\n },\n {\n mime: 'image/gif',\n extensions: ['gif'],\n },\n]\n","// @flow\nexport default [\n {\n mime: 'application/vnd.oasis.opendocument.text',\n extensions: ['odt'],\n },\n {\n mime: 'application/vnd.oasis.opendocument.formula',\n extensions: ['odf'],\n },\n {\n mime: 'application/msword',\n extensions: ['doc', 'dot'],\n },\n {\n mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n extensions: ['docx'],\n },\n {\n mime: 'application/pdf',\n extensions: ['pdf'],\n },\n {\n mime:\n 'application/excel, application/x-excel, application/vnd.ms-excel, application/x-msexcel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n extensions: ['xls', 'xlsx'],\n },\n]\n","// @flow\nexport default [\n {\n mime: 'audio/mpeg, audio/mp3',\n extensions: ['mp3'],\n },\n {\n mime: 'audio/wav',\n extensions: ['wav'],\n },\n]\n","// @flow\nimport images from './mime-types/images'\nimport files from './mime-types/files'\nimport audio from './mime-types/audio'\nimport { getMimeTypes } from './getMimeTypes'\n\nconst MimeTypes = {\n images,\n files,\n audio,\n}\n\nconst getExtentensions = (files) => files.reduce((acc, file) => [...acc, ...file.extensions], [])\n\nexport const mimeImages = () => getMimeTypes(MimeTypes.images)\n\nexport const mimeFiles = () => getMimeTypes(MimeTypes.files)\n\nexport const mimeAudio = () => getMimeTypes(MimeTypes.audio)\n\nexport const acceptFileTypes = () => [...mimeImages(), ...mimeFiles()]\n\nexport const acceptAllTypes = () => [...mimeImages(), ...mimeFiles(), ...mimeAudio()]\n\nexport const acceptImagesExtensions = () => getExtentensions(MimeTypes.images)\n\nexport const acceptFilesExtensions = () => getExtentensions(MimeTypes.files)\n\nexport const acceptAudioExtensions = () => getExtentensions(MimeTypes.audio)\n\nexport const acceptAllExtensions = () => [\n ...acceptFilesExtensions(),\n ...acceptImagesExtensions(),\n ...acceptAudioExtensions(),\n]\n","function wrapField(wrapper, field) {\n return `${wrapper}[${field}]`\n}\n\nexport function wrapFormFields(wrapper, formFieldsString, untouchables = []) {\n const parts = formFieldsString.split('&')\n const newFields = []\n let oldField\n let newPart\n\n parts.forEach((oldPart) => {\n oldField = oldPart.substr(0, oldPart.indexOf('='))\n\n if (untouchables.includes(oldField)) {\n newPart = oldPart\n } else {\n newPart = oldPart.replace(oldField, wrapField(wrapper, oldField))\n }\n\n newFields.push(newPart)\n })\n\n return newFields.join('&')\n}\n\n/**\n * Function returns function for cheking if idToMatch matches object's id\n *\n * Usage: arr.find(matchesId(id))\n *\n * @param {string | object} idToMatch - id that will be matching in returned function\n *\n * @return {function}\n */\nexport const matchesId = (idToMatch) => ({ id }) => String(id) === String(idToMatch)\n\n/**\n * Detects if Enter key was pressed\n *\n * @export\n * @param {array} options array of {object} { id, name }\n * @returns {array} selectOprions { value, label }\n */\nexport function detectEnterKey(e) {\n const enterKey = 13\n const charCode = typeof e.which === 'number' ? e.which : e.keyCode\n\n return enterKey === charCode\n}\n\n/**\n * Make options for select\n * @param {numer} value\n * @param {string} label\n */\nexport const makeOption = (value, label) => (value ? { value, label } : undefined)\n\n/**\n * Make loadOptionsFunction for select\n *\n * @param {function} func - function to load array of options\n * @param {object} args - function's arguments\n * @param {array} defaultOptions - array of default options:\n * @param {string} label\n * @param {number} id\n */\nexport const makeLoadOptionsFunc = (func, args, defaultOptions) => {\n const response = func(args)\n\n return response\n ? response.then((options) => ({ options, ...defaultOptions }))\n : Promise.resolve({ options: defaultOptions })\n}\n"],"names":["qid","length","number","text","possible","i","charAt","Math","floor","random","uuid","s4","toString","substring","pickBy","obj","filterFunc","newObj","Object","entries","map","entry","key","value","toggleOnClickHandler","currentTarget","toggleArrow","querySelector","arrowClass","toggleClass","Array","from","classList","indexOf","remove","add","Collapse","init","bind","makeCollapse","destroy","onClickHandler","collapse","addEventListener","setTimeout","document","querySelectorAll","body","collapses","window","forEach","item","removeEventListener","reinit","debounce","f","ms","timer","decoratedFunction","args","onComplete","apply","clearTimeout","indexById","items","reduce","all","newAll","id","pluralize","counter","forms","n","abs","rawMarkup","__html","capitalize","str","toUpperCase","slice","getFilesSize","attachments","files","size","concat","file","getMimeTypes","data","acc","mime","getRandomInt","min","max","indexByGroupId","group","getElementPosition","elem","getBoundingClientRect","top","left","pageYOffset","pageXOffset","scrollToElement","selector","field","scrollTo","TYPES","tasks","exercises","members","hours","seconds","minutes","remains","days","points","students","studentsParentalCase","pluralizeByType","type","base64ToArrayBuffer","base64","binary_string","atob","len","bytes","Uint8Array","charCodeAt","buffer","parseStringListToArray","string","split","filter","transformOptionsForSelect","options","name","image_url","label","merge","target","source","keys","assign","detectIE","ua","navigator","userAgent","msie","parseInt","trident","rv","edge","outerHeight","el","style","getComputedStyle","height","offsetHeight","marginTop","marginBottom","serializeArray","form","l","s","nodeName","elements","disabled","j","selected","checked","isElementInViewport","rect","bottom","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","toCamelCase","result","newKey","part","join","toUnderscoredCase","toLowerCase","splitEvery","limit","arr","index","push","uniq","arrArg","pos","removeElFromArr","newArr","splice","mergeByKey","arr1","arr2","el1","el2","find","makeShortNameFromFull","fullName","nameArr","reverse","extractDigits","replace","CURRENCY_DIRECTORY","ALL","AFN","ARS","AWG","AUD","AZN","BSD","BBD","BYR","BZD","BMD","BOB","BAM","BWP","BGN","BRL","BND","KHR","CAD","KYD","CLP","CNY","COP","CRC","HRK","CUP","CZK","DKK","DOP","XCD","EGP","SVC","EEK","EUR","FKP","FJD","FRF","GHC","GIP","GTQ","GGP","GYD","HNL","HKD","HUF","ISK","INR","IDR","IRR","IMP","ILS","JMD","JPY","JEP","KZT","KGS","LAK","LVL","LBP","LRD","LTL","MKD","MYR","MUR","MXN","MNT","MZN","NAD","NPR","ANG","NZD","NIO","NGN","KPW","NOK","OMR","PKR","PAB","PYG","PEN","PHP","PLN","QAR","RON","RUR","SHP","SAR","RSD","SCR","SGD","SBD","SOS","ZAR","KRW","LKR","SEK","CHF","SRD","SYP","TWD","THB","TTD","TRY","TRL","TVD","UAH","GBP","USD","UYU","UZS","VEF","VND","YER","ZWD","getCurrencySymbol","currencyCode","colorLuminance","rawHex","lum","hex","String","rgb","c","substr","round","getGradient","degree","color","getColorByString","colors","sum","createPath","u","query","url","hashExist","includes","hash","urlPath","urlQuery","queryParams","qs","stringify","parse","encode","parseQueryString","getNextPageURLFromLinkHeader","link","match","getNextPageFromLinkHeader","exec","makeParamString","object","encodeURIComponent","extensions","MimeTypes","images","audio","getExtentensions","mimeImages","mimeFiles","mimeAudio","acceptFileTypes","acceptAllTypes","acceptImagesExtensions","acceptFilesExtensions","acceptAudioExtensions","acceptAllExtensions","wrapField","wrapper","wrapFormFields","formFieldsString","untouchables","parts","newFields","oldField","newPart","oldPart","matchesId","idToMatch","detectEnterKey","e","enterKey","charCode","which","keyCode","makeOption","undefined","makeLoadOptionsFunc","func","defaultOptions","response","then","Promise","resolve"],"mappings":"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"}
|
package/dist/cjs/index.min.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
@foxford/foxford-utils v0.3.8
|
|
3
|
-
https://netology-group.ru
|
|
4
|
-
(c) 2018-2020 Olin Roman
|
|
5
|
-
*/
|
|
6
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});function _interopDefault(a){return a&&"object"==typeof a&&"default"in a?a["default"]:a}var _objectSpread=_interopDefault(require("@babel/runtime/helpers/objectSpread")),qs=_interopDefault(require("query-string"));function qid(a,b){void 0===a&&(a=6),void 0===b&&(b=!0);for(var c="",d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"+(b?"0123456789":""),e=0;e<a;e++)c+=d.charAt(Math.floor(Math.random()*d.length));return c}function uuid(){function a(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()}function pickBy(a,b){var c={};return Object.entries(a).map(function(a){var d=a[0],e=a[1];return b(d,e)&&(c[d]=e),[d,e]}),c}function toggleOnClickHandler(a){var b=a.currentTarget;if(!b)return!1;var c=b.querySelector(".toggle_arrow"),d="down",e="expanded";return-1===Array.from(c.classList).indexOf(d)?(b.classList.add(e),c.classList.add(d)):(c.classList.remove(d),b.classList.remove(e)),!0}var Collapse=function(){function a(){this.init=this.init.bind(this),this.makeCollapse=this.makeCollapse.bind(this),this.destroy=this.destroy.bind(this),this.onClickHandler=toggleOnClickHandler}var b=a.prototype;return b.makeCollapse=function(a){return-1===Array.from(a.classList).indexOf("js")&&(a.addEventListener("click",this.onClickHandler),a.classList.add("js"))},b.init=function(){var a=this;setTimeout(function(){return!!(document.querySelectorAll&&document.body.classList)&&(a.collapses=window.document.querySelectorAll(".toggle_element"),Array.from(a.collapses).forEach(a.makeCollapse))},0)},b.destroy=function(){var a=this,b=window.document.querySelectorAll(".toggle_element");Array.from(b).forEach(function(b){b.removeEventListener("click",a.makeCollapse)})},b.reinit=function(){this.destroy(),this.init()},a}();function debounce(a,b){var c=null;return function(){for(var d=this,e=arguments.length,f=Array(e),g=0;g<e;g++)f[g]=arguments[g];return c&&clearTimeout(c),c=setTimeout(function(){a.apply(d,f),c=null},b),c}}function indexById(a){return a.reduce(function(a,b){var c=_objectSpread({},a);return c[b.id]=b,c},{})}function pluralize(a,b){var c=Math.abs(a),d=1==c%10&&11!=c%100?0:2<=c%10&&4>=c%10&&(10>c%100||20<=c%100)?1:2;return b[d]}function rawMarkup(a){return{__html:a}}var capitalize=function(a){return a.length?a[0].toUpperCase()+a.slice(1):""};function getFilesSize(a,b){var c=0;return a.concat(b).forEach(function(a){c+=a.size}),c}var getMimeTypes=function(a){var b=a.reduce(function(a,b){return[].concat(a,[b.mime])},[]);return b};function getRandomInt(a,b){return Math.floor(Math.random()*(b-a))+a}function indexByGroupId(a){return a.reduce(function(a,b){var c=_objectSpread({},a);return c[b.group.id]=b,c},{})}function getElementPosition(a){var b=a.getBoundingClientRect(),c=b.top,d=b.left,e=window,f=e.pageYOffset,g=e.pageXOffset;return{top:c+f,left:d+g}}function scrollToElement(a){var b=document.querySelector(a);if(!b)return!1;var c=getElementPosition(b),d=c.top;return window.scrollTo(0,d)}var TYPES={tasks:["\u0437\u0430\u0434\u0430\u0447\u0430","\u0437\u0430\u0434\u0430\u0447\u0438","\u0437\u0430\u0434\u0430\u0447"],exercises:["\u0437\u0430\u043D\u044F\u0442\u0438\u0435","\u0437\u0430\u043D\u044F\u0442\u0438\u044F","\u0437\u0430\u043D\u044F\u0442\u0438\u0439"],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"],hours:["\u0447\u0430\u0441","\u0447\u0430\u0441\u0430","\u0447\u0430\u0441\u043E\u0432"],seconds:["\u0441\u0435\u043A\u0443\u043D\u0434\u0430","\u0441\u0435\u043A\u0443\u043D\u0434\u044B","\u0441\u0435\u043A\u0443\u043D\u0434"],minutes:["\u043C\u0438\u043D\u0443\u0442\u0430","\u043C\u0438\u043D\u0443\u0442\u044B","\u043C\u0438\u043D\u0443\u0442"],remains:["\u043E\u0441\u0442\u0430\u043B\u0441\u044F","\u043E\u0441\u0442\u0430\u043B\u043E\u0441\u044C","\u043E\u0441\u0442\u0430\u043B\u043E\u0441\u044C"],days:["\u0434\u0435\u043D\u044C","\u0434\u043D\u044F","\u0434\u043D\u0435\u0439"],points:["\u0431\u0430\u043B\u043B","\u0431\u0430\u043B\u043B\u0430","\u0431\u0430\u043B\u043B\u043E\u0432"],students:["\u0443\u0447\u0435\u043D\u0438\u043A","\u0443\u0447\u0435\u043D\u0438\u043A\u0430","\u0443\u0447\u0435\u043D\u0438\u043A\u043E\u0432"],studentsParentalCase:["\u0443\u0447\u0435\u043D\u0438\u043A\u0430","\u0443\u0447\u0435\u043D\u0438\u043A\u043E\u0432","\u0443\u0447\u0435\u043D\u0438\u043A\u043E\u0432"]};function pluralizeByType(a,b){return pluralize(a||0,TYPES[b])}function base64ToArrayBuffer(a){for(var b=window.atob(a),c=b.length,d=new Uint8Array(c),e=0;e<c;e++)d[e]=b.charCodeAt(e);return d.buffer}function parseStringListToArray(a){return void 0===a&&(a=""),a.split(/(?:^|<br>|\n)\s*[-\u\u2010-\u2015\ufe58\ufe63\uff0d]/gm).filter(function(a){var b=a.length;return b})}function transformOptionsForSelect(a){return a.map(function(a){var b=a.id,c=a.name,d=a.image_url;return{value:b,label:c,image_url:d}})}var merge=function a(b,c){for(var d,e=Object.keys(c),f=0;f<e.length;f++)d=e[f],c[d]instanceof Object&&d in b&&Object.assign(c[d],a(b[d],c[d]));return Object.assign(b||{},c),b},detectIE=function(){var a=window.navigator.userAgent,b=a.indexOf("MSIE ");if(0<b)return parseInt(a.substring(b+5,a.indexOf(".",b)),10);var c=a.indexOf("Trident/");if(0<c){var d=a.indexOf("rv:");return parseInt(a.substring(d+3,a.indexOf(".",d)),10)}var e=a.indexOf("Edge/");return!!(0<e)&&parseInt(a.substring(e+5,a.indexOf(".",e)),10)};function outerHeight(a){var b=getComputedStyle(a),c=a.offsetHeight;return c+=parseInt(b.marginTop)+parseInt(b.marginBottom),c}function serializeArray(a){var b,c,d=[];if("object"==typeof a&&"FORM"===a.nodeName)for(var e=a.elements.length,f=0;f<e;f++)if(b=a.elements[f],b.name&&!b.disabled&&"file"!==b.type&&"reset"!==b.type&&"submit"!==b.type&&"button"!==b.type)if("select-multiple"===b.type){c=a.elements[f].options.length;for(var g=0;g<c;g++)b.options[g].selected&&(d[d.length]={name:b.name,value:b.options[g].value})}else("checkbox"!==b.type&&"radio"!==b.type||b.checked)&&(d[d.length]={name:b.name,value:b.value});return d}function isElementInViewport(a){var b=a.getBoundingClientRect();return 0<=b.top&&0<=b.left&&b.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&b.right<=(window.innerWidth||document.documentElement.clientWidth)}var toCamelCase=function(a){var b={};return Object.entries(a).forEach(function(a){var c=a[0],d=a[1],e=c.split("_").map(function(a,b){return 0===b?a:a[0].toUpperCase()+a.slice(1)}).join("");b[e]=d}),b},toUnderscoredCase=function(a){var b={};return Object.entries(a).forEach(function(a){var c=a[0],d=a[1],e=c.split(/(?=[A-Z])/).join("_").toLowerCase();b[e]=d}),b},splitEvery=function(a,b){return void 0===a&&(a=1),void 0===b&&(b=[]),b.reduce(function(b,c,d){return d%a||(b[b.length]=[]),b[b.length-1].push(c),b},[])},uniq=function(a){return a.filter(function(a,b,c){return c.indexOf(a)===b})},removeElFromArr=function(a,b){var c=[].concat(a);return c.splice(b,1),c};function mergeByKey(a,b,c){return void 0===a&&(a=[]),void 0===b&&(b=[]),void 0===c&&(c="id"),a.map(function(a){var d=b.find(function(b){return""+b[c]==""+a[c]});return d?_objectSpread({},a,d):a})}var makeShortNameFromFull=function(a){void 0===a&&(a="");var b=a.split(" ");return 3===b.length?b.splice(0,2).reverse().join(" "):b.reverse().join(" ")},extractDigits=function(a){return void 0===a&&(a=""),"string"==typeof a&&a.replace(/\D/gim,"")},CURRENCY_DIRECTORY={ALL:"Lek",AFN:"\u060B",ARS:"$",AWG:"\u0192",AUD:"$",AZN:"\u20BC",BSD:"$",BBD:"$",BYR:"Br",BZD:"BZ$",BMD:"$",BOB:"$b",BAM:"KM",BWP:"P",BGN:"\u043B\u0432",BRL:"R$",BND:"$",KHR:"\u17DB",CAD:"C$",KYD:"$",CLP:"$",CNY:"\xA5",COP:"$",CRC:"\u20A1",HRK:"kn",CUP:"\u20B1",CZK:"K\u010D",DKK:"kr",DOP:"RD$",XCD:"$",EGP:"\xA3",SVC:"$",EEK:"kr",EUR:"\u20AC",FKP:"\xA3",FJD:"$",FRF:"\u20A3",GHC:"\xA2",GIP:"\xA3",GTQ:"Q",GGP:"\xA3",GYD:"$",HNL:"L",HKD:"$",HUF:"Ft",ISK:"kr",INR:"\u20A8",IDR:"Rp",IRR:"\uFDFC",IMP:"\xA3",ILS:"\u20AA",JMD:"J$",JPY:"\xA5",JEP:"\xA3",KZT:"\u20B8",KGS:"KGS",LAK:"\u20AD",LVL:"Ls",LBP:"\xA3",LRD:"$",LTL:"Lt",MKD:"\u0434\u0435\u043D",MYR:"RM",MUR:"\u20A8",MXN:"$",MNT:"\u20AE",MZN:"MT",NAD:"$",NPR:"\u20A8",ANG:"\u0192",NZD:"$",NIO:"C$",NGN:"\u20A6",KPW:"\u20A9",NOK:"kr",OMR:"\uFDFC",PKR:"\u20A8",PAB:"B/.",PYG:"Gs",PEN:"S/.",PHP:"\u20B1",PLN:"z\u0142",QAR:"\uFDFC",RON:"lei",RUR:"\u20BD",SHP:"\xA3",SAR:"\uFDFC",RSD:"\u0414\u0438\u043D.",SCR:"\u20A8",SGD:"$",SBD:"$",SOS:"S",ZAR:"R",KRW:"\u20A9",LKR:"\u20A8",SEK:"kr",CHF:"CHF",SRD:"$",SYP:"\xA3",TWD:"NT$",THB:"\u0E3F",TTD:"TT$",TRY:"\u20A4",TRL:"\u20A4",TVD:"$",UAH:"\u20B4",GBP:"\xA3",USD:"$",UYU:"$U",UZS:"\u043B\u0432",VEF:"Bs",VND:"\u20AB",YER:"\uFDFC",ZWD:"Z$"};function getCurrencySymbol(a){return CURRENCY_DIRECTORY[a]||a}function colorLuminance(a,b){var d=Math.round,e=Math.min,f=Math.max;void 0===b&&(b=0);var g=(a+"").replace(/[^0-9a-f]/gi,"");6>g.length&&(g=g[0]+g[0]+g[1]+g[1]+g[2]+g[2]);for(var h,j="#",k=0;3>k;k++)h=g&&parseInt(g.substr(2*k,2),16),h=d(e(f(0,h+h*b),255)).toString(16),j+=("00"+h).substr(h.length);return j}function getGradient(a,b){return"linear-gradient("+a+", "+colorLuminance("#"+b,+.09)+", "+colorLuminance("#"+b,-.09)+")"}var getColorByString=function(a,b){for(var c=a.length,d=0;c--;)d+=a.charCodeAt(c);return b?b[d%b.length]:null};function createPath(a,b){var c=a,d=c.includes("#"),e=d?c.split("#")[1]:"";d&&(c=c.replace("#",""),c=c.replace(e,""));var f=c.split("?"),g=f[0],h=f[1],i=qs.stringify(_objectSpread({},qs.parse(h),b),{encode:!1});return[g,i].filter(function(a){return!!a}).join("?")+(d?"#"+e:"")}function parseQueryString(a){return qs.parse(a)}function getNextPageURLFromLinkHeader(a){void 0===a&&(a="");var b=a.match(/<([^>]+)>/);return b?b[1]:""}function getNextPageFromLinkHeader(a){return void 0===a&&(a=""),a?parseInt(/[?&]page=([^&>]+)[&>]/gi.exec(a)[1])||null:null}function makeParamString(a){return void 0===a&&(a={}),Object.keys(a).map(function(b){return encodeURIComponent(b)+"="+encodeURIComponent(a[b])}).join("&")}var images=[{mime:"image/jpeg",extensions:["jpg","jpeg"]},{mime:"image/png",extensions:["png"]},{mime:"image/gif",extensions:["gif"]}],files=[{mime:"application/vnd.oasis.opendocument.text",extensions:["odt"]},{mime:"application/vnd.oasis.opendocument.formula",extensions:["odf"]},{mime:"application/msword",extensions:["doc","dot"]},{mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",extensions:["docx"]},{mime:"application/pdf",extensions:["pdf"]},{mime:"application/excel, application/x-excel, application/vnd.ms-excel, application/x-msexcel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",extensions:["xls","xlsx"]}],audio=[{mime:"audio/mpeg, audio/mp3",extensions:["mp3"]},{mime:"audio/wav",extensions:["wav"]}],MimeTypes={images:images,files:files,audio:audio},getExtentensions=function(a){return a.reduce(function(a,b){return[].concat(a,b.extensions)},[])},mimeImages=function(){return getMimeTypes(MimeTypes.images)},mimeFiles=function(){return getMimeTypes(MimeTypes.files)},mimeAudio=function(){return getMimeTypes(MimeTypes.audio)},acceptFileTypes=function(){return[].concat(mimeImages(),mimeFiles())},acceptAllTypes=function(){return[].concat(mimeImages(),mimeFiles(),mimeAudio())},acceptImagesExtensions=function(){return getExtentensions(MimeTypes.images)},acceptFilesExtensions=function(){return getExtentensions(MimeTypes.files)},acceptAudioExtensions=function(){return getExtentensions(MimeTypes.audio)},acceptAllExtensions=function(){return[].concat(acceptFilesExtensions(),acceptImagesExtensions(),acceptAudioExtensions())};function wrapField(a,b){return a+"["+b+"]"}function wrapFormFields(a,b,c){void 0===c&&(c=[]);var d,e,f=b.split("&"),g=[];return f.forEach(function(b){d=b.substr(0,b.indexOf("=")),e=c.includes(d)?b:b.replace(d,wrapField(a,d)),g.push(e)}),g.join("&")}var matchesId=function(a){return function(b){var c=b.id;return c+""===a+""}};function detectEnterKey(a){var b="number"==typeof a.which?a.which:a.keyCode;return 13===b}var makeOption=function(a,b){return a?{value:a,label:b}:void 0},makeLoadOptionsFunc=function(a,b,c){var d=a(b);return d?d.then(function(a){return _objectSpread({options:a},c)}):Promise.resolve({options:c})};exports.qid=qid,exports.uuid=uuid,exports.pickBy=pickBy,exports.Collapse=Collapse,exports.debounce=debounce,exports.indexById=indexById,exports.pluralize=pluralize,exports.rawMarkup=rawMarkup,exports.capitalize=capitalize,exports.getFilesSize=getFilesSize,exports.getMimeTypes=getMimeTypes,exports.getRandomInt=getRandomInt,exports.indexByGroupId=indexByGroupId,exports.scrollToElement=scrollToElement,exports.pluralizeByType=pluralizeByType,exports.base64ToArrayBuffer=base64ToArrayBuffer,exports.parseStringListToArray=parseStringListToArray,exports.transformOptionsForSelect=transformOptionsForSelect,exports.merge=merge,exports.detectIE=detectIE,exports.serializeArray=serializeArray,exports.outerHeight=outerHeight,exports.isElementInViewport=isElementInViewport,exports.toCamelCase=toCamelCase,exports.toUnderscoredCase=toUnderscoredCase,exports.uniq=uniq,exports.splitEvery=splitEvery,exports.removeElFromArr=removeElFromArr,exports.mergeByKey=mergeByKey,exports.extractDigits=extractDigits,exports.makeShortNameFromFull=makeShortNameFromFull,exports.getCurrencySymbol=getCurrencySymbol,exports.currencyDirectory=CURRENCY_DIRECTORY,exports.getGradient=getGradient,exports.colorLuminance=colorLuminance,exports.getColorByString=getColorByString,exports.createPath=createPath,exports.parseQueryString=parseQueryString,exports.getNextPageFromLinkHeader=getNextPageFromLinkHeader,exports.getNextPageURLFromLinkHeader=getNextPageURLFromLinkHeader,exports.makeParamString=makeParamString,exports.mimeImages=mimeImages,exports.mimeFiles=mimeFiles,exports.mimeAudio=mimeAudio,exports.acceptFileTypes=acceptFileTypes,exports.acceptAllTypes=acceptAllTypes,exports.acceptImagesExtensions=acceptImagesExtensions,exports.acceptFilesExtensions=acceptFilesExtensions,exports.acceptAudioExtensions=acceptAudioExtensions,exports.acceptAllExtensions=acceptAllExtensions,exports.wrapFormFields=wrapFormFields,exports.matchesId=matchesId,exports.detectEnterKey=detectEnterKey,exports.makeOption=makeOption,exports.makeLoadOptionsFunc=makeLoadOptionsFunc;
|
|
7
|
-
//# sourceMappingURL=index.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.min.js","sources":["../../src/qid.js","../../src/uuid.js","../../src/pickBy.js","../../src/collapse.js","../../src/debounce.js","../../src/indexById.js","../../src/pluralize.js","../../src/rawMarkup.js","../../src/capitalize.js","../../src/getFilesSize.js","../../src/getMimeTypes.js","../../src/getRandomInt.js","../../src/indexByGroupId.js","../../src/scrollToElement.js","../../src/pluralizeByType.js","../../src/base64ToArrayBuffer.js","../../src/parseStringListToArray.js","../../src/transformOptionsForSelect.js","../../src/objects.js","../../src/browser.js","../../src/dom.js","../../src/caseConverters.js","../../src/array.js","../../src/strings.js","../../src/currency-codes.js","../../src/colors.js","../../src/url.js","../../src/mime-types/images.js","../../src/mime-types/files.js","../../src/mime-types/audio.js","../../src/files.js","../../src/functions.js"],"sourcesContent":["/**\n * Generate unique qid\n * @param {number} length of unique id\n * @param {boolean} number use number in string\n * @return {string}\n */\nexport function qid(length = 6, number = true) {\n let text = ''\n const possible = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz${\n number ? '0123456789' : ''\n }`\n\n for (let i = 0; i < length; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length))\n }\n\n return text\n}\n","/**\n * Generate unique grouped id\n * @returns {string}\n */\nexport function uuid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1)\n }\n\n return `${s4() + s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`\n}\n","/**\n * Filter object fields\n *\n * @export\n * @param {object} object - input object\n * @param {function} filterFunc - function for filtering\n * @returns {object} - resulting objetc with filered fields\n */\nexport function pickBy(obj, filterFunc) {\n const newObj = {}\n\n Object.entries(obj).map((entry) => {\n const key = entry[0]\n const value = entry[1]\n\n if (filterFunc(key, value)) newObj[key] = value\n\n return [key, value]\n })\n\n return newObj\n}\n","function toggleOnClickHandler({ currentTarget }) {\n if (!currentTarget) return false\n\n const toggleArrow = currentTarget.querySelector('.toggle_arrow')\n const arrowClass = 'down'\n const toggleClass = 'expanded'\n\n if (Array.from(toggleArrow.classList).indexOf(arrowClass) !== -1) {\n toggleArrow.classList.remove(arrowClass)\n currentTarget.classList.remove(toggleClass)\n } else {\n currentTarget.classList.add(toggleClass)\n toggleArrow.classList.add(arrowClass)\n }\n\n return true\n}\n\nexport class Collapse {\n constructor() {\n this.init = this.init.bind(this)\n this.makeCollapse = this.makeCollapse.bind(this)\n this.destroy = this.destroy.bind(this)\n this.onClickHandler = toggleOnClickHandler\n }\n\n makeCollapse(collapse) {\n if (Array.from(collapse.classList).indexOf('js') !== -1) return false\n\n collapse.addEventListener('click', this.onClickHandler)\n\n return collapse.classList.add('js')\n }\n\n init() {\n setTimeout(() => {\n if (!document.querySelectorAll || !document.body.classList) return false\n\n this.collapses = window.document.querySelectorAll('.toggle_element')\n\n return Array.from(this.collapses).forEach(this.makeCollapse)\n }, 0)\n }\n\n destroy() {\n const collapses = window.document.querySelectorAll('.toggle_element')\n\n Array.from(collapses).forEach((item) => {\n item.removeEventListener('click', this.makeCollapse)\n })\n }\n\n reinit() {\n this.destroy()\n this.init()\n }\n}\n","/**\n * Decorate function with debounce\n *\n * @export\n * @param {function} f - function\n * @param {number} ms - debounce\n * @returns {function} - decorated function\n */\nexport function debounce(f, ms) {\n let timer = null\n\n return function decoratedFunction(...args) {\n const onComplete = () => {\n f.apply(this, args)\n timer = null\n }\n\n if (timer) {\n clearTimeout(timer)\n }\n\n timer = setTimeout(onComplete, ms)\n\n return timer\n }\n}\n","/*\n Функция превращает массив:\n [{ id: 1, name: 'item 1' }, ... ]\n\n В объект:\n {\n '1': {\n id: 1,\n name: 'item 1'\n },\n ...\n }\n*/\nexport function indexById(items) {\n return items.reduce((all, item) => {\n const newAll = { ...all }\n\n newAll[item.id] = item\n\n return newAll\n }, {})\n}\n","// @docs: http://localization-guide.readthedocs.io/en/latest/l10n/pluralforms.html\n// @example\n// pluralize(1, ['штука', 'штуки', 'штук'])\nexport function pluralize(counter, forms) {\n const n = Math.abs(counter)\n const id =\n n % 10 === 1 && n % 100 !== 11\n ? 0\n : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20)\n ? 1\n : 2\n\n return forms[id]\n}\n","/**\n * @example\n * <div dangerouslySetInnerHTML={rawMarkup('<b>text</b>')} />\n */\nexport function rawMarkup(text) {\n return { __html: text }\n}\n","// @flow\n/**\n * Capitalize string\n * @param {string} str\n */\nexport const capitalize = (str: string): string => {\n return str.length ? str[0].toUpperCase() + str.slice(1) : ''\n}\n","/**\n * getFilesSize - increment attachments and add new files\n * @param {Array[Object]} attachments\n * @param {Array} files\n */\nexport function getFilesSize(attachments: [], files: []): number {\n let size = 0\n\n attachments.concat(files).forEach((file) => {\n size += file.size\n })\n\n return size\n}\n","// @flow\n/**\n * Return array of mime-types from array of files\n * @param {Array[File]} files\n */\ntype MimeFiles = Array<{\n extensions: Array<string>,\n mime: string,\n}>\n\nexport const getMimeTypes = (files: MimeFiles): Array<?string> => {\n const data = files.reduce((acc, file) => [...acc, file.mime], [])\n\n return data\n}\n","// Возвращает случайное целое число между min (включительно) и max (не включая max)\nexport function getRandomInt(min, max) {\n return Math.floor(Math.random() * (max - min)) + min\n}\n","/*\n Функция превращает массив:\n [{ id: 1, name: 'item 1', group: { id: 1 } }, ... ]\n\n В объект:\n {\n '100': {\n id: 1,\n name: 'item 1',\n group: { id: 100 }\n },\n ...\n }\n*/\nexport function indexByGroupId(items) {\n return items.reduce((all, item) => {\n const newAll = { ...all }\n\n newAll[item.group.id] = item\n\n return newAll\n }, {})\n}\n","function getElementPosition(elem) {\n const { top, left } = elem.getBoundingClientRect()\n const { pageYOffset, pageXOffset } = window\n\n return {\n top: top + pageYOffset,\n left: left + pageXOffset,\n }\n}\n\nexport function scrollToElement(selector) {\n const field = document.querySelector(selector)\n if (!field) return false\n const { top } = getElementPosition(field)\n\n return window.scrollTo(0, top)\n}\n","import { pluralize } from './pluralize'\n\nconst TYPES = {\n tasks: ['задача', 'задачи', 'задач'],\n exercises: ['занятие', 'занятия', 'занятий'],\n members: ['участник', 'участника', 'участников'],\n hours: ['час', 'часа', 'часов'],\n seconds: ['секунда', 'секунды', 'секунд'],\n minutes: ['минута', 'минуты', 'минут'],\n remains: ['остался', 'осталось', 'осталось'],\n days: ['день', 'дня', 'дней'],\n points: ['балл', 'балла', 'баллов'],\n students: ['ученик', 'ученика', 'учеников'],\n studentsParentalCase: ['ученика', 'учеников', 'учеников'],\n}\n\n/**\n * Get a pluralized string for a preset by type\n *\n * @param {number} counter\n * @param {strung} type\n */\nexport function pluralizeByType(counter, type) {\n return pluralize(counter || 0, TYPES[type])\n}\n","/**\n * Конвертим base64 в буфер\n *\n * @param {string} base64\n */\nexport function base64ToArrayBuffer(base64) {\n const binary_string = window.atob(base64)\n const len = binary_string.length\n const bytes = new Uint8Array(len)\n\n for (let i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i)\n }\n\n return bytes.buffer\n}\n","/**\n * Функция для парсинга строки вида:\n * \"— Преподаватель кафедры общей физики МФТИ <br>\n * — Старший преподаватель вечерней физико-технической школы МФТИ\"\n * в массив\n *\n * @export\n * @param {any} string\n * @returns array\n */\nexport function parseStringListToArray(string = '') {\n return string\n .split(/(?:^|<br>|\\n)\\s*[-\\u\\u2010-\\u2015\\ufe58\\ufe63\\uff0d]/gm)\n .filter(({ length }) => length)\n}\n","/**\n * Function for transforming otions like grade options into select values\n *\n * @export\n * @param {array} options array of {object} { id, name, image_url }\n * @returns {array} selectOptions { value, label, image_url }\n */\nexport function transformOptionsForSelect(options) {\n return options.map(({ id, name, image_url }) => ({\n value: id,\n label: name,\n image_url,\n }))\n}\n","/**\n * Глубокий мерж объектов\n *\n * @param {object} target\n * @param {object} source\n */\nexport const merge = (target, source) => {\n /*\n Iterate through `source` properties and if an `Object`\n set property to merge of `target` and `source` properties\n */\n // eslint-disable-next-line no-restricted-syntax\n for (const key of Object.keys(source)) {\n if (source[key] instanceof Object && key in target) {\n Object.assign(source[key], merge(target[key], source[key]))\n }\n }\n\n // Join `target` and modified `source`\n Object.assign(target || {}, source)\n\n return target\n}\n","// @flow\n/**\n * Detect IE\n * @returns version of IE or false, if browser is not Internet Explorer\n */\nexport const detectIE = (): boolean | number => {\n const ua: string = window.navigator.userAgent\n\n const msie = ua.indexOf('MSIE ')\n\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10)\n }\n\n const trident = ua.indexOf('Trident/')\n\n if (trident > 0) {\n // IE 11 => return version number\n const rv = ua.indexOf('rv:')\n\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10)\n }\n\n const edge = ua.indexOf('Edge/')\n\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10)\n }\n\n // other browser\n return false\n}\n","/**\n * Function returnes outer height of the element\n *\n * @export\n * @param {node} el\n * @returns {number} height\n */\nexport function outerHeight(el) {\n const style = getComputedStyle(el)\n let height = el.offsetHeight\n\n height += parseInt(style.marginTop) + parseInt(style.marginBottom)\n\n return height\n}\n\n/**\n * Serialize form data\n *\n * @export\n * @param {form} form\n * @returns {array} s\n */\nexport function serializeArray(form) {\n let field\n let l\n const s = []\n\n if (typeof form === 'object' && form.nodeName === 'FORM') {\n const len = form.elements.length\n\n for (let i = 0; i < len; i++) {\n field = form.elements[i]\n if (\n field.name &&\n !field.disabled &&\n field.type !== 'file' &&\n field.type !== 'reset' &&\n field.type !== 'submit' &&\n field.type !== 'button'\n ) {\n if (field.type === 'select-multiple') {\n l = form.elements[i].options.length\n for (let j = 0; j < l; j++) {\n if (field.options[j].selected) {\n s[s.length] = { name: field.name, value: field.options[j].value }\n }\n }\n } else if ((field.type !== 'checkbox' && field.type !== 'radio') || field.checked) {\n s[s.length] = { name: field.name, value: field.value }\n }\n }\n }\n }\n\n return s\n}\n\n/**\n * Check if element placed inside current viewport\n *\n * @param {node} el\n */\nexport function isElementInViewport(el) {\n const rect = el.getBoundingClientRect()\n\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n )\n}\n","// @flow\n\ntype ObjectType = {\n [string]: string,\n}\n\n/**\n * Convert object keys to camelCase\n * @param {object} obj\n */\nexport const toCamelCase = (obj: ObjectType): ObjectType => {\n const result = {}\n\n Object.entries(obj).forEach(([key, value]) => {\n const newKey: string = key\n .split('_')\n .map((part, i) => (i === 0 ? part : part[0].toUpperCase() + part.slice(1)))\n .join('')\n\n result[newKey] = value\n })\n\n return result\n}\n\n/**\n * Convert camelCase keys in object to undercase\n * @param {object} obj\n */\nexport const toUnderscoredCase = (obj: ObjectType): ObjectType => {\n const result = {}\n\n Object.entries(obj).forEach(([key, value]) => {\n const newKey = key\n .split(/(?=[A-Z])/)\n .join('_')\n .toLowerCase()\n\n result[newKey] = value\n })\n\n return result\n}\n","/**\n * Function splits [arr] by arrays of [limit] elements\n *\n * @param {*} arr - any array\n * @param {*} limit - length of new arrays\n */\nexport const splitEvery = (limit = 1, arr = []) =>\n arr.reduce((acc, item, index) => {\n if (!(index % limit)) {\n acc[acc.length] = []\n }\n\n acc[acc.length - 1].push(item)\n\n return acc\n }, [])\n\n/**\n * Remove duplicated elements from array\n *\n * @param {array} arrArg - array to deduplicate\n */\nexport const uniq = (arrArg) => arrArg.filter((elem, pos, arr) => arr.indexOf(elem) === pos)\n\n/**\n * Remove element from array by index\n *\n * @param {array} arr\n * @param {number} index\n */\nexport const removeElFromArr = (arr, index) => {\n const newArr = [...arr]\n\n newArr.splice(index, 1)\n\n return newArr\n}\n\n/**\n * Merge two arrays of objects by field\n *\n * @param {array} [arr1=[]] - Array 1\n * @param {array} [arr2=[]] - Array 2\n * @returns {array}\n */\nexport function mergeByKey(arr1 = [], arr2 = [], key = 'id') {\n return arr1.map((el1) => {\n const el2 = arr2.find((el) => `${el[key]}` === `${el1[key]}`)\n\n return el2 ? { ...el1, ...el2 } : el1\n })\n}\n","/**\n * Функция принимает Ф.И.О, возвращает Ф.И.\n *\n * @param {string} fullName\n * @returns {string} shortName\n */\nexport const makeShortNameFromFull = (fullName = '') => {\n const nameArr = fullName.split(' ')\n\n return nameArr.length === 3\n ? nameArr\n .splice(0, 2)\n .reverse()\n .join(' ')\n : nameArr.reverse().join(' ')\n}\n\n/**\n * Extracts all decimals from string\n *\n * @param {string} [str='']\n * @returns {string}\n */\nexport const extractDigits = (str = '') => typeof str === 'string' && str.replace(/\\D/gim, '')\n","/* eslint-disable */\nexport const CURRENCY_DIRECTORY = {\n ALL: '\\u004C\\u0065\\u006b',\n AFN: '\\u060B',\n ARS: '\\u0024',\n AWG: '\\u0192',\n AUD: '\\u0024',\n AZN: '\\u20BC',\n BSD: '\\u0024',\n BBD: '\\u0024',\n BYR: '\\u0042\\u0072',\n BZD: '\\u0042\\u005a\\u0024',\n BMD: '\\u0024',\n BOB: '\\u0024\\u0062',\n BAM: '\\u004B\\u004d',\n BWP: '\\u0050',\n BGN: '\\u043B\\u0432',\n BRL: '\\u0052\\u0024',\n BND: '\\u0024',\n KHR: '\\u17DB',\n CAD: '\\u0043\\u0024',\n KYD: '\\u0024',\n CLP: '\\u0024',\n CNY: '\\u00A5',\n COP: '\\u0024',\n CRC: '\\u20A1',\n HRK: '\\u006B\\u006e',\n CUP: '\\u20B1',\n CZK: '\\u004B\\u010d',\n DKK: '\\u006B\\u0072',\n DOP: '\\u0052\\u0044\\u0024',\n XCD: '\\u0024',\n EGP: '\\u00A3',\n SVC: '\\u0024',\n EEK: '\\u006B\\u0072',\n EUR: '\\u20AC',\n FKP: '\\u00A3',\n FJD: '\\u0024',\n FRF: '\\u20A3',\n GHC: '\\u00A2',\n GIP: '\\u00A3',\n GTQ: '\\u0051',\n GGP: '\\u00A3',\n GYD: '\\u0024',\n HNL: '\\u004C',\n HKD: '\\u0024',\n HUF: '\\u0046\\u0074',\n ISK: '\\u006B\\u0072',\n INR: '\\u20A8',\n IDR: '\\u0052\\u0070',\n IRR: '\\uFDFC',\n IMP: '\\u00A3',\n ILS: '\\u20AA',\n JMD: '\\u004A\\u0024',\n JPY: '\\u00A5',\n JEP: '\\u00A3',\n KZT: '\\u20B8',\n KGS: '\\u004B\\u0047\\u0053',\n LAK: '\\u20AD',\n LVL: '\\u004C\\u0073',\n LBP: '\\u00A3',\n LRD: '\\u0024',\n LTL: '\\u004C\\u0074',\n MKD: '\\u0434\\u0435\\u043d',\n MYR: '\\u0052\\u004d',\n MUR: '\\u20A8',\n MXN: '\\u0024',\n MNT: '\\u20AE',\n MZN: '\\u004D\\u0054',\n NAD: '\\u0024',\n NPR: '\\u20A8',\n ANG: '\\u0192',\n NZD: '\\u0024',\n NIO: '\\u0043\\u0024',\n NGN: '\\u20A6',\n KPW: '\\u20A9',\n NOK: '\\u006B\\u0072',\n OMR: '\\uFDFC',\n PKR: '\\u20A8',\n PAB: '\\u0042\\u002f\\u002e',\n PYG: '\\u0047\\u0073',\n PEN: '\\u0053\\u002f\\u002e',\n PHP: '\\u20B1',\n PLN: '\\u007A\\u0142',\n QAR: '\\uFDFC',\n RON: '\\u006C\\u0065\\u0069',\n RUR: '\\u20BD',\n SHP: '\\u00A3',\n SAR: '\\uFDFC',\n RSD: '\\u0414\\u0438\\u043d\\u002e',\n SCR: '\\u20A8',\n SGD: '\\u0024',\n SBD: '\\u0024',\n SOS: '\\u0053',\n ZAR: '\\u0052',\n KRW: '\\u20A9',\n LKR: '\\u20A8',\n SEK: '\\u006B\\u0072',\n CHF: '\\u0043\\u0048\\u0046',\n SRD: '\\u0024',\n SYP: '\\u00A3',\n TWD: '\\u004E\\u0054\\u0024',\n THB: '\\u0E3F',\n TTD: '\\u0054\\u0054\\u0024',\n TRY: '\\u20A4',\n TRL: '\\u20A4',\n TVD: '\\u0024',\n UAH: '\\u20B4',\n GBP: '\\u00A3',\n USD: '\\u0024',\n UYU: '\\u0024\\u0055',\n UZS: '\\u043B\\u0432',\n VEF: '\\u0042\\u0073',\n VND: '\\u20AB',\n YER: '\\uFDFC',\n ZWD: '\\u005A\\u0024',\n}\n\n/**\n * Возвращает знак валюты по ISO коду.\n *\n * @param {String} currencyCode Код валюты.\n * @returns {String}\n */\nexport function getCurrencySymbol(currencyCode) {\n return CURRENCY_DIRECTORY[currencyCode] || currencyCode\n}\n","export function colorLuminance(rawHex, lum = 0) {\n // validate hex string\n let hex = String(rawHex).replace(/[^0-9a-f]/gi, '')\n\n if (hex.length < 6) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]\n }\n\n // convert to decimal and change luminosity\n let rgb = '#'\n\n for (let i = 0; i < 3; i++) {\n let c = hex && parseInt(hex.substr(i * 2, 2), 16)\n\n c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16)\n rgb += `00${c}`.substr(c.length)\n }\n\n return rgb\n}\n\nexport function getGradient(degree, color) {\n return `linear-gradient(${degree}, ${colorLuminance(`#${color}`, +0.09)}, ${colorLuminance(\n `#${color}`,\n -0.09\n )})`\n}\n\n/**\n * Возвращает цвет по строке\n *\n * @param {string} string строка имени\n * @param {Array} colors массив цветов (hex коды или имёна)\n * @return {string} цвет из массива цветов\n */\nexport const getColorByString = (string, colors) => {\n let i = string.length\n let sum = 0\n\n while (i--) {\n sum += string.charCodeAt(i)\n }\n\n return colors ? colors[sum % colors.length] : null\n}\n","import qs from 'query-string'\n\n/**\n * Хэлпер для создания строки URL адреса\n * @param {String} url Путь\n * @param {Object} query Объект параметров запроса\n * @example\n * createPath('/library', { id: 1 }) // => /library?id=1\n * @returns {String} Итоговый путь\n */\nexport function createPath(u, query) {\n let url = u\n\n const hashExist = url.includes('#')\n const hash = hashExist ? url.split('#')[1] : ''\n\n if (hashExist) {\n url = url.replace('#', '')\n url = url.replace(hash, '')\n }\n\n const [urlPath, urlQuery] = url.split('?')\n\n const queryParams = qs.stringify(\n {\n ...qs.parse(urlQuery),\n ...query,\n },\n { encode: false }\n )\n\n return [urlPath, queryParams].filter((s) => !!s).join('?') + (hashExist ? `#${hash}` : '')\n}\n\n/**\n * Хэлпер для того чтобы парсить строку запроса (location.search)\n * @param {String} query Строка запроса\n * @return {Object} Объект содержащий параметры запроса\n * @example\n * parseQueryString('/library?id=1') // => { id: 1 }\n */\nexport function parseQueryString(query) {\n return qs.parse(query)\n}\n\n/**\n * Функция извлекает URL следующей страницы из HTTP заголовка Link\n *\n * @param {String} link Содержимое заголовка Link\n * @return {String} URL адрес следующей страницы или пустая строка\n *\n * @example\n * var link = \"<http://localhost:3500/api/library/pupil_courses?page=2>; rel='next'\"\n * var url = getNextPageURLFromLinkHeader(link)\n * url === 'http://localhost:3500/api/library/pupil_courses?page=2'\n */\nexport function getNextPageURLFromLinkHeader(link = '') {\n const result = link.match(/<([^>]+)>/)\n\n return result ? result[1] : ''\n}\n\n/**\n * Функция извлекает номер следующей страницы из HTTP заголовка Link\n *\n * @param {String} link Содержимое заголовка Link\n * @return {Number} page номер страницы или null\n *\n * @example\n * var link = \"<http://localhost:3500/api/library/pupil_courses?page=2>; rel='next'\"\n * var url = getNextPageURLFromLinkHeader(link)\n * url === 'http://localhost:3500/api/library/pupil_courses?page=2'\n */\nexport function getNextPageFromLinkHeader(link = '') {\n return link ? parseInt(/[?&]page=([^&>]+)[&>]/gi.exec(link)[1]) || null : null\n}\n\n/**\n * Generate url param string\n *\n * @export\n * @param {object} object\n * @returns {string}\n */\nexport function makeParamString(object = {}) {\n return Object.keys(object)\n .map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&')\n}\n","// @flow\nexport default [\n {\n mime: 'image/jpeg',\n extensions: ['jpg', 'jpeg'],\n },\n {\n mime: 'image/png',\n extensions: ['png'],\n },\n {\n mime: 'image/gif',\n extensions: ['gif'],\n },\n]\n","// @flow\nexport default [\n {\n mime: 'application/vnd.oasis.opendocument.text',\n extensions: ['odt'],\n },\n {\n mime: 'application/vnd.oasis.opendocument.formula',\n extensions: ['odf'],\n },\n {\n mime: 'application/msword',\n extensions: ['doc', 'dot'],\n },\n {\n mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n extensions: ['docx'],\n },\n {\n mime: 'application/pdf',\n extensions: ['pdf'],\n },\n {\n mime:\n 'application/excel, application/x-excel, application/vnd.ms-excel, application/x-msexcel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n extensions: ['xls', 'xlsx'],\n },\n]\n","// @flow\nexport default [\n {\n mime: 'audio/mpeg, audio/mp3',\n extensions: ['mp3'],\n },\n {\n mime: 'audio/wav',\n extensions: ['wav'],\n },\n]\n","// @flow\nimport images from './mime-types/images'\nimport files from './mime-types/files'\nimport audio from './mime-types/audio'\nimport { getMimeTypes } from './getMimeTypes'\n\nconst MimeTypes = {\n images,\n files,\n audio,\n}\n\nconst getExtentensions = (files) => files.reduce((acc, file) => [...acc, ...file.extensions], [])\n\nexport const mimeImages = () => getMimeTypes(MimeTypes.images)\n\nexport const mimeFiles = () => getMimeTypes(MimeTypes.files)\n\nexport const mimeAudio = () => getMimeTypes(MimeTypes.audio)\n\nexport const acceptFileTypes = () => [...mimeImages(), ...mimeFiles()]\n\nexport const acceptAllTypes = () => [...mimeImages(), ...mimeFiles(), ...mimeAudio()]\n\nexport const acceptImagesExtensions = () => getExtentensions(MimeTypes.images)\n\nexport const acceptFilesExtensions = () => getExtentensions(MimeTypes.files)\n\nexport const acceptAudioExtensions = () => getExtentensions(MimeTypes.audio)\n\nexport const acceptAllExtensions = () => [\n ...acceptFilesExtensions(),\n ...acceptImagesExtensions(),\n ...acceptAudioExtensions(),\n]\n","function wrapField(wrapper, field) {\n return `${wrapper}[${field}]`\n}\n\nexport function wrapFormFields(wrapper, formFieldsString, untouchables = []) {\n const parts = formFieldsString.split('&')\n const newFields = []\n let oldField\n let newPart\n\n parts.forEach((oldPart) => {\n oldField = oldPart.substr(0, oldPart.indexOf('='))\n\n if (untouchables.includes(oldField)) {\n newPart = oldPart\n } else {\n newPart = oldPart.replace(oldField, wrapField(wrapper, oldField))\n }\n\n newFields.push(newPart)\n })\n\n return newFields.join('&')\n}\n\n/**\n * Function returns function for cheking if idToMatch matches object's id\n *\n * Usage: arr.find(matchesId(id))\n *\n * @param {string | object} idToMatch - id that will be matching in returned function\n *\n * @return {function}\n */\nexport const matchesId = (idToMatch) => ({ id }) => String(id) === String(idToMatch)\n\n/**\n * Detects if Enter key was pressed\n *\n * @export\n * @param {array} options array of {object} { id, name }\n * @returns {array} selectOprions { value, label }\n */\nexport function detectEnterKey(e) {\n const enterKey = 13\n const charCode = typeof e.which === 'number' ? e.which : e.keyCode\n\n return enterKey === charCode\n}\n\n/**\n * Make options for select\n * @param {numer} value\n * @param {string} label\n */\nexport const makeOption = (value, label) => (value ? { value, label } : undefined)\n\n/**\n * Make loadOptionsFunction for select\n *\n * @param {function} func - function to load array of options\n * @param {object} args - function's arguments\n * @param {array} defaultOptions - array of default options:\n * @param {string} label\n * @param {number} id\n */\nexport const makeLoadOptionsFunc = (func, args, defaultOptions) => {\n const response = func(args)\n\n return response\n ? response.then((options) => ({ options, ...defaultOptions }))\n : Promise.resolve({ options: defaultOptions })\n}\n"],"names":["qid","length","number","text","possible","i","charAt","Math","floor","random","uuid","s4","toString","substring","pickBy","obj","filterFunc","newObj","Object","entries","map","entry","key","value","toggleOnClickHandler","currentTarget","toggleArrow","querySelector","arrowClass","toggleClass","Array","from","classList","indexOf","add","remove","Collapse","init","bind","makeCollapse","destroy","onClickHandler","collapse","addEventListener","setTimeout","document","querySelectorAll","body","_this","collapses","window","forEach","item","removeEventListener","_this2","reinit","debounce","f","ms","timer","args","clearTimeout","apply","indexById","items","reduce","all","newAll","id","pluralize","counter","forms","n","abs","rawMarkup","__html","capitalize","str","toUpperCase","slice","getFilesSize","attachments","files","size","concat","file","getMimeTypes","data","acc","mime","getRandomInt","min","max","indexByGroupId","group","getElementPosition","elem","getBoundingClientRect","top","left","pageYOffset","pageXOffset","scrollToElement","selector","field","scrollTo","TYPES","tasks","exercises","members","hours","seconds","minutes","remains","days","points","students","studentsParentalCase","pluralizeByType","type","base64ToArrayBuffer","base64","binary_string","atob","len","bytes","Uint8Array","charCodeAt","buffer","parseStringListToArray","string","split","filter","transformOptionsForSelect","options","name","image_url","label","merge","target","source","keys","assign","detectIE","ua","navigator","userAgent","msie","parseInt","trident","rv","edge","outerHeight","el","style","getComputedStyle","height","offsetHeight","marginTop","marginBottom","serializeArray","form","l","s","nodeName","elements","disabled","j","selected","checked","isElementInViewport","rect","bottom","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","toCamelCase","result","newKey","part","join","toUnderscoredCase","toLowerCase","splitEvery","limit","arr","index","push","uniq","arrArg","pos","removeElFromArr","newArr","splice","mergeByKey","arr1","arr2","el1","el2","find","makeShortNameFromFull","fullName","nameArr","reverse","extractDigits","replace","CURRENCY_DIRECTORY","ALL","AFN","ARS","AWG","AUD","AZN","BSD","BBD","BYR","BZD","BMD","BOB","BAM","BWP","BGN","BRL","BND","KHR","CAD","KYD","CLP","CNY","COP","CRC","HRK","CUP","CZK","DKK","DOP","XCD","EGP","SVC","EEK","EUR","FKP","FJD","FRF","GHC","GIP","GTQ","GGP","GYD","HNL","HKD","HUF","ISK","INR","IDR","IRR","IMP","ILS","JMD","JPY","JEP","KZT","KGS","LAK","LVL","LBP","LRD","LTL","MKD","MYR","MUR","MXN","MNT","MZN","NAD","NPR","ANG","NZD","NIO","NGN","KPW","NOK","OMR","PKR","PAB","PYG","PEN","PHP","PLN","QAR","RON","RUR","SHP","SAR","RSD","SCR","SGD","SBD","SOS","ZAR","KRW","LKR","SEK","CHF","SRD","SYP","TWD","THB","TTD","TRY","TRL","TVD","UAH","GBP","USD","UYU","UZS","VEF","VND","YER","ZWD","getCurrencySymbol","currencyCode","colorLuminance","rawHex","lum","round","hex","String","c","rgb","substr","getGradient","degree","color","getColorByString","colors","sum","createPath","u","query","url","hashExist","includes","hash","urlPath","urlQuery","queryParams","qs","stringify","parse","encode","parseQueryString","getNextPageURLFromLinkHeader","link","match","getNextPageFromLinkHeader","exec","makeParamString","object","encodeURIComponent","extensions","MimeTypes","images","audio","getExtentensions","mimeImages","mimeFiles","mimeAudio","acceptFileTypes","acceptAllTypes","acceptImagesExtensions","acceptFilesExtensions","acceptAudioExtensions","acceptAllExtensions","wrapField","wrapper","wrapFormFields","formFieldsString","untouchables","oldField","newPart","parts","newFields","oldPart","matchesId","idToMatch","detectEnterKey","e","charCode","which","keyCode","enterKey","makeOption","makeLoadOptionsFunc","func","defaultOptions","response","then","Promise","resolve"],"mappings":"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"}
|
package/dist/es/array.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import _objectSpread from "@babel/runtime/helpers/objectSpread";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Function splits [arr] by arrays of [limit] elements
|
|
5
|
-
*
|
|
6
|
-
* @param {*} arr - any array
|
|
7
|
-
* @param {*} limit - length of new arrays
|
|
8
|
-
*/
|
|
9
|
-
export var splitEvery = function splitEvery(limit, arr) {
|
|
10
|
-
if (limit === void 0) {
|
|
11
|
-
limit = 1;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
if (arr === void 0) {
|
|
15
|
-
arr = [];
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return arr.reduce(function (acc, item, index) {
|
|
19
|
-
if (!(index % limit)) {
|
|
20
|
-
acc[acc.length] = [];
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
acc[acc.length - 1].push(item);
|
|
24
|
-
return acc;
|
|
25
|
-
}, []);
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Remove duplicated elements from array
|
|
29
|
-
*
|
|
30
|
-
* @param {array} arrArg - array to deduplicate
|
|
31
|
-
*/
|
|
32
|
-
|
|
33
|
-
export var uniq = function uniq(arrArg) {
|
|
34
|
-
return arrArg.filter(function (elem, pos, arr) {
|
|
35
|
-
return arr.indexOf(elem) === pos;
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Remove element from array by index
|
|
40
|
-
*
|
|
41
|
-
* @param {array} arr
|
|
42
|
-
* @param {number} index
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
|
-
export var removeElFromArr = function removeElFromArr(arr, index) {
|
|
46
|
-
var newArr = [].concat(arr);
|
|
47
|
-
newArr.splice(index, 1);
|
|
48
|
-
return newArr;
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* Merge two arrays of objects by field
|
|
52
|
-
*
|
|
53
|
-
* @param {array} [arr1=[]] - Array 1
|
|
54
|
-
* @param {array} [arr2=[]] - Array 2
|
|
55
|
-
* @returns {array}
|
|
56
|
-
*/
|
|
57
|
-
|
|
58
|
-
export function mergeByKey(arr1, arr2, key) {
|
|
59
|
-
if (arr1 === void 0) {
|
|
60
|
-
arr1 = [];
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (arr2 === void 0) {
|
|
64
|
-
arr2 = [];
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (key === void 0) {
|
|
68
|
-
key = 'id';
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return arr1.map(function (el1) {
|
|
72
|
-
var el2 = arr2.find(function (el) {
|
|
73
|
-
return "" + el[key] === "" + el1[key];
|
|
74
|
-
});
|
|
75
|
-
return el2 ? _objectSpread({}, el1, el2) : el1;
|
|
76
|
-
});
|
|
77
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Конвертим base64 в буфер
|
|
3
|
-
*
|
|
4
|
-
* @param {string} base64
|
|
5
|
-
*/
|
|
6
|
-
export function base64ToArrayBuffer(base64) {
|
|
7
|
-
var binary_string = window.atob(base64);
|
|
8
|
-
var len = binary_string.length;
|
|
9
|
-
var bytes = new Uint8Array(len);
|
|
10
|
-
|
|
11
|
-
for (var i = 0; i < len; i++) {
|
|
12
|
-
bytes[i] = binary_string.charCodeAt(i);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return bytes.buffer;
|
|
16
|
-
}
|
package/dist/es/browser.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Detect IE
|
|
3
|
-
* @returns version of IE or false, if browser is not Internet Explorer
|
|
4
|
-
*/
|
|
5
|
-
export var detectIE = function detectIE() {
|
|
6
|
-
var ua = window.navigator.userAgent;
|
|
7
|
-
var msie = ua.indexOf('MSIE ');
|
|
8
|
-
|
|
9
|
-
if (msie > 0) {
|
|
10
|
-
// IE 10 or older => return version number
|
|
11
|
-
return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
var trident = ua.indexOf('Trident/');
|
|
15
|
-
|
|
16
|
-
if (trident > 0) {
|
|
17
|
-
// IE 11 => return version number
|
|
18
|
-
var rv = ua.indexOf('rv:');
|
|
19
|
-
return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
var edge = ua.indexOf('Edge/');
|
|
23
|
-
|
|
24
|
-
if (edge > 0) {
|
|
25
|
-
// Edge (IE 12+) => return version number
|
|
26
|
-
return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
|
|
27
|
-
} // other browser
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return false;
|
|
31
|
-
};
|
package/dist/es/capitalize.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Convert object keys to camelCase
|
|
3
|
-
* @param {object} obj
|
|
4
|
-
*/
|
|
5
|
-
export var toCamelCase = function toCamelCase(obj) {
|
|
6
|
-
var result = {};
|
|
7
|
-
Object.entries(obj).forEach(function (_ref) {
|
|
8
|
-
var key = _ref[0],
|
|
9
|
-
value = _ref[1];
|
|
10
|
-
var newKey = key.split('_').map(function (part, i) {
|
|
11
|
-
return i === 0 ? part : part[0].toUpperCase() + part.slice(1);
|
|
12
|
-
}).join('');
|
|
13
|
-
result[newKey] = value;
|
|
14
|
-
});
|
|
15
|
-
return result;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* Convert camelCase keys in object to undercase
|
|
19
|
-
* @param {object} obj
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
export var toUnderscoredCase = function toUnderscoredCase(obj) {
|
|
23
|
-
var result = {};
|
|
24
|
-
Object.entries(obj).forEach(function (_ref2) {
|
|
25
|
-
var key = _ref2[0],
|
|
26
|
-
value = _ref2[1];
|
|
27
|
-
var newKey = key.split(/(?=[A-Z])/).join('_').toLowerCase();
|
|
28
|
-
result[newKey] = value;
|
|
29
|
-
});
|
|
30
|
-
return result;
|
|
31
|
-
};
|
package/dist/es/collapse.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
function toggleOnClickHandler(_ref) {
|
|
2
|
-
var currentTarget = _ref.currentTarget;
|
|
3
|
-
if (!currentTarget) return false;
|
|
4
|
-
var toggleArrow = currentTarget.querySelector('.toggle_arrow');
|
|
5
|
-
var arrowClass = 'down';
|
|
6
|
-
var toggleClass = 'expanded';
|
|
7
|
-
|
|
8
|
-
if (Array.from(toggleArrow.classList).indexOf(arrowClass) !== -1) {
|
|
9
|
-
toggleArrow.classList.remove(arrowClass);
|
|
10
|
-
currentTarget.classList.remove(toggleClass);
|
|
11
|
-
} else {
|
|
12
|
-
currentTarget.classList.add(toggleClass);
|
|
13
|
-
toggleArrow.classList.add(arrowClass);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export var Collapse =
|
|
20
|
-
/*#__PURE__*/
|
|
21
|
-
function () {
|
|
22
|
-
function Collapse() {
|
|
23
|
-
this.init = this.init.bind(this);
|
|
24
|
-
this.makeCollapse = this.makeCollapse.bind(this);
|
|
25
|
-
this.destroy = this.destroy.bind(this);
|
|
26
|
-
this.onClickHandler = toggleOnClickHandler;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
var _proto = Collapse.prototype;
|
|
30
|
-
|
|
31
|
-
_proto.makeCollapse = function makeCollapse(collapse) {
|
|
32
|
-
if (Array.from(collapse.classList).indexOf('js') !== -1) return false;
|
|
33
|
-
collapse.addEventListener('click', this.onClickHandler);
|
|
34
|
-
return collapse.classList.add('js');
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
_proto.init = function init() {
|
|
38
|
-
var _this = this;
|
|
39
|
-
|
|
40
|
-
setTimeout(function () {
|
|
41
|
-
if (!document.querySelectorAll || !document.body.classList) return false;
|
|
42
|
-
_this.collapses = window.document.querySelectorAll('.toggle_element');
|
|
43
|
-
return Array.from(_this.collapses).forEach(_this.makeCollapse);
|
|
44
|
-
}, 0);
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
_proto.destroy = function destroy() {
|
|
48
|
-
var _this2 = this;
|
|
49
|
-
|
|
50
|
-
var collapses = window.document.querySelectorAll('.toggle_element');
|
|
51
|
-
Array.from(collapses).forEach(function (item) {
|
|
52
|
-
item.removeEventListener('click', _this2.makeCollapse);
|
|
53
|
-
});
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
_proto.reinit = function reinit() {
|
|
57
|
-
this.destroy();
|
|
58
|
-
this.init();
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
return Collapse;
|
|
62
|
-
}();
|
package/dist/es/colors.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export function colorLuminance(rawHex, lum) {
|
|
2
|
-
if (lum === void 0) {
|
|
3
|
-
lum = 0;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
// validate hex string
|
|
7
|
-
var hex = String(rawHex).replace(/[^0-9a-f]/gi, '');
|
|
8
|
-
|
|
9
|
-
if (hex.length < 6) {
|
|
10
|
-
hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
|
|
11
|
-
} // convert to decimal and change luminosity
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var rgb = '#';
|
|
15
|
-
|
|
16
|
-
for (var i = 0; i < 3; i++) {
|
|
17
|
-
var c = hex && parseInt(hex.substr(i * 2, 2), 16);
|
|
18
|
-
c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16);
|
|
19
|
-
rgb += ("00" + c).substr(c.length);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return rgb;
|
|
23
|
-
}
|
|
24
|
-
export function getGradient(degree, color) {
|
|
25
|
-
return "linear-gradient(" + degree + ", " + colorLuminance("#" + color, +0.09) + ", " + colorLuminance("#" + color, -0.09) + ")";
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Возвращает цвет по строке
|
|
29
|
-
*
|
|
30
|
-
* @param {string} string строка имени
|
|
31
|
-
* @param {Array} colors массив цветов (hex коды или имёна)
|
|
32
|
-
* @return {string} цвет из массива цветов
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
export var getColorByString = function getColorByString(string, colors) {
|
|
36
|
-
var i = string.length;
|
|
37
|
-
var sum = 0;
|
|
38
|
-
|
|
39
|
-
while (i--) {
|
|
40
|
-
sum += string.charCodeAt(i);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return colors ? colors[sum % colors.length] : null;
|
|
44
|
-
};
|