@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
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';function e(e){return e&&'object'==typeof e&&'default'in e?e:{default:e}}Object.defineProperty(exports,'__esModule',{value:!0});var t=e(require('query-string'));function r(e){var{currentTarget:t}=e;if(!t)return!1;var r=t.querySelector('.toggle_arrow');var n='down';var o='expanded';return-1!==Array.from(r.classList).indexOf(n)?(r.classList.remove(n),t.classList.remove(o)):(t.classList.add(o),r.classList.add(n)),!0}function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((t=>Object.getOwnPropertyDescriptor(e,t).enumerable))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((t=>{n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((t=>{Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){var r=Math.abs(e);return t[r%10==1&&r%100!=11?0:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?1:2]}var s=e=>e.reduce(((e,t)=>[...e,t.mime]),[]);var c={tasks:['задача','задачи','задач'],exercises:['занятие','занятия','занятий'],members:['участник','участника','участников'],hours:['час','часа','часов'],seconds:['секунда','секунды','секунд'],minutes:['минута','минуты','минут'],remains:['остался','осталось','осталось'],days:['день','дня','дней'],points:['балл','балла','баллов'],students:['ученик','ученика','учеников'],studentsParentalCase:['ученика','учеников','учеников']};var l=(e,t)=>{for(var r of Object.keys(t))t[r]instanceof Object&&r in e&&Object.assign(t[r],l(e[r],t[r]));return Object.assign(e||{},t),e};var p={ALL:'Lek',AFN:'؋',ARS:'$',AWG:'ƒ',AUD:'$',AZN:'₼',BSD:'$',BBD:'$',BYR:'Br',BZD:'BZ$',BMD:'$',BOB:'$b',BAM:'KM',BWP:'P',BGN:'лв',BRL:'R$',BND:'$',KHR:'៛',CAD:'C$',KYD:'$',CLP:'$',CNY:'¥',COP:'$',CRC:'₡',HRK:'kn',CUP:'₱',CZK:'Kč',DKK:'kr',DOP:'RD$',XCD:'$',EGP:'£',SVC:'$',EEK:'kr',EUR:'€',FKP:'£',FJD:'$',FRF:'₣',GHC:'¢',GIP:'£',GTQ:'Q',GGP:'£',GYD:'$',HNL:'L',HKD:'$',HUF:'Ft',ISK:'kr',INR:'₨',IDR:'Rp',IRR:'﷼',IMP:'£',ILS:'₪',JMD:'J$',JPY:'¥',JEP:'£',KZT:'₸',KGS:'KGS',LAK:'₭',LVL:'Ls',LBP:'£',LRD:'$',LTL:'Lt',MKD:'ден',MYR:'RM',MUR:'₨',MXN:'$',MNT:'₮',MZN:'MT',NAD:'$',NPR:'₨',ANG:'ƒ',NZD:'$',NIO:'C$',NGN:'₦',KPW:'₩',NOK:'kr',OMR:'﷼',PKR:'₨',PAB:'B/.',PYG:'Gs',PEN:'S/.',PHP:'₱',PLN:'zł',QAR:'﷼',RON:'lei',RUR:'₽',SHP:'£',SAR:'﷼',RSD:'Дин.',SCR:'₨',SGD:'$',SBD:'$',SOS:'S',ZAR:'R',KRW:'₩',LKR:'₨',SEK:'kr',CHF:'CHF',SRD:'$',SYP:'£',TWD:'NT$',THB:'฿',TTD:'TT$',TRY:'₤',TRL:'₤',TVD:'$',UAH:'₴',GBP:'£',USD:'$',UYU:'$U',UZS:'лв',VEF:'Bs',VND:'₫',YER:'﷼',ZWD:'Z$'};function u(e,t){var r=arguments.length>1&&void 0!==t?t:0;var n=String(e).replace(/[^0-9a-f]/gi,'');n.length<6&&(n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]);var o='#';for(var a=0;a<3;a++){var i=n&&parseInt(n.substr(2*a,2),16);i=Math.round(Math.min(Math.max(0,i+i*r),255)).toString(16),o+="00".concat(i).substr(i.length)}return o}var d=[{mime:'image/jpeg',extensions:['jpg','jpeg']},{mime:'image/png',extensions:['png']},{mime:'image/gif',extensions:['gif']}],m=[{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']}],v=[{mime:'audio/mpeg, audio/mp3',extensions:['mp3']},{mime:'audio/wav',extensions:['wav']}];var f=e=>e.reduce(((e,t)=>[...e,...t.extensions]),[]);var g=()=>s(d);var x=()=>s(m);var h=()=>s(v);var y=()=>f(d);var b=()=>f(m);var O=()=>f(v);function R(e,t){return"".concat(e,"[").concat(t,"]")}exports.Collapse=class S{constructor(){this.init=this.init.bind(this),this.makeCollapse=this.makeCollapse.bind(this),this.destroy=this.destroy.bind(this),this.onClickHandler=r}makeCollapse(e){return-1===Array.from(e.classList).indexOf('js')&&(e.addEventListener('click',this.onClickHandler),e.classList.add('js'))}init(){setTimeout((()=>!(!document.querySelectorAll||!document.body.classList)&&(this.collapses=window.document.querySelectorAll('.toggle_element'),Array.from(this.collapses).forEach(this.makeCollapse))),0)}destroy(){var e=window.document.querySelectorAll('.toggle_element');Array.from(e).forEach((e=>{e.removeEventListener('click',this.makeCollapse)}))}reinit(){this.destroy(),this.init()}},exports.acceptAllExtensions=()=>[...b(),...y(),...O()],exports.acceptAllTypes=()=>[...g(),...x(),...h()],exports.acceptAudioExtensions=O,exports.acceptFileTypes=()=>[...g(),...x()],exports.acceptFilesExtensions=b,exports.acceptImagesExtensions=y,exports.base64ToArrayBuffer=e=>{var t=window.atob(e);var r=t.length;var n=new Uint8Array(r);for(var o=0;o<r;o++)n[o]=t.charCodeAt(o);return n.buffer},exports.capitalize=e=>e.length?e[0].toUpperCase()+e.slice(1):'',exports.colorLuminance=u,exports.createPath=(e,r)=>{var n=e;var o=n.includes('#');var i=o?n.split('#')[1]:'';o&&(n=(n=n.replace('#','')).replace(i,''));var[s,c]=n.split('?');return[s,t.default.stringify(a(a({},t.default.parse(c)),r),{encode:!1})].filter((e=>!!e)).join('?')+(o?"#".concat(i):'')},exports.currencyDirectory=p,exports.debounce=function(e,t){var r=null;return function(){for(var n=arguments.length,o=new Array(n),a=0;a<n;a++)o[a]=arguments[a];var i=()=>{e.apply(this,o),r=null};return r&&clearTimeout(r),r=setTimeout(i,t)}},exports.detectEnterKey=e=>13===('number'==typeof e.which?e.which:e.keyCode),exports.detectIE=()=>{var e=window.navigator.userAgent;var t=e.indexOf('MSIE ');if(t>0)return parseInt(e.substring(t+5,e.indexOf('.',t)),10);if(e.indexOf('Trident/')>0){var r=e.indexOf('rv:');return parseInt(e.substring(r+3,e.indexOf('.',r)),10)}var n=e.indexOf('Edge/');return n>0&&parseInt(e.substring(n+5,e.indexOf('.',n)),10)},exports.extractDigits=function(e){var t=arguments.length>0&&void 0!==e?e:'';return'string'==typeof t&&t.replace(/\D/gim,'')},exports.getColorByString=(e,t)=>{var r=e.length;var n=0;for(;r--;)n+=e.charCodeAt(r);return t?t[n%t.length]:null},exports.getCurrencySymbol=e=>p[e]||e,exports.getFilesSize=(e,t)=>{var r=0;return e.concat(t).forEach((e=>{r+=e.size})),r},exports.getGradient=(e,t)=>"linear-gradient(".concat(e,", ").concat(u("#".concat(t),.09),", ").concat(u("#".concat(t),-.09),")"),exports.getMimeTypes=s,exports.getNextPageFromLinkHeader=function(e){var t=arguments.length>0&&void 0!==e?e:'';return t&&parseInt(/[?&]page=([^&>]+)[&>]/gi.exec(t)[1])||null},exports.getNextPageURLFromLinkHeader=function(e){var t=arguments.length>0&&void 0!==e?e:'';var r=t.match(/<([^>]+)>/);return r?r[1]:''},exports.getRandomInt=(e,t)=>Math.floor(Math.random()*(t-e))+e,exports.indexByGroupId=e=>e.reduce(((e,t)=>{var r=a({},e);return r[t.group.id]=t,r}),{}),exports.indexById=e=>e.reduce(((e,t)=>{var r=a({},e);return r[t.id]=t,r}),{}),exports.isElementInViewport=e=>{var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)},exports.makeLoadOptionsFunc=(e,t,r)=>{var n=e(t);return n?n.then((e=>a({options:e},r))):Promise.resolve({options:r})},exports.makeOption=(e,t)=>e?{value:e,label:t}:void 0,exports.makeParamString=function(e){var t=arguments.length>0&&void 0!==e?e:{};return Object.keys(t).map((e=>"".concat(encodeURIComponent(e),"=").concat(encodeURIComponent(t[e])))).join('&')},exports.makeShortNameFromFull=function(e){var t=arguments.length>0&&void 0!==e?e:'';var r=t.split(' ');return 3===r.length?r.splice(0,2).reverse().join(' '):r.reverse().join(' ')},exports.matchesId=e=>t=>{var{id:r}=t;return String(r)===String(e)},exports.merge=l,exports.mergeByKey=function(e,t,r){var n=arguments.length>0&&void 0!==e?e:[];var o=arguments.length>1&&void 0!==t?t:[];var i=arguments.length>2&&void 0!==r?r:'id';return n.map((e=>{var t=o.find((t=>"".concat(t[i])==="".concat(e[i])));return t?a(a({},e),t):e}))},exports.mimeAudio=h,exports.mimeFiles=x,exports.mimeImages=g,exports.outerHeight=e=>{var t=getComputedStyle(e);return e.offsetHeight+(parseInt(t.marginTop)+parseInt(t.marginBottom))},exports.parseQueryString=e=>t.default.parse(e),exports.parseStringListToArray=function(e){var t=arguments.length>0&&void 0!==e?e:'';return t.split(/(?:^|<br>|\n)\s*[-\u\u2010-\u2015\ufe58\ufe63\uff0d]/gm).filter((e=>{var{length:t}=e;return t}))},exports.pickBy=(e,t)=>{var r={};return Object.entries(e).map((e=>{var n=e[0];var o=e[1];return t(n,o)&&(r[n]=o),[n,o]})),r},exports.pluralize=i,exports.pluralizeByType=(e,t)=>i(e||0,c[t]),exports.qid=function(e,t){var r=arguments.length>0&&void 0!==e?e:6;var n=!(arguments.length>1&&void 0!==t)||t;var o='';var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".concat(n?'0123456789':'');for(var i=0;i<r;i++)o+=a.charAt(Math.floor(Math.random()*a.length));return o},exports.rawMarkup=e=>({__html:e}),exports.removeElFromArr=(e,t)=>{var r=[...e];return r.splice(t,1),r},exports.scrollToElement=e=>{var t=document.querySelector(e);if(!t)return!1;var{top:r}=(e=>{var{top:t,left:r}=e.getBoundingClientRect();var{pageYOffset:n,pageXOffset:o}=window;return{top:t+n,left:r+o}})(t);return window.scrollTo(0,r)},exports.serializeArray=e=>{var t;var r;var n=[];if('object'==typeof e&&'FORM'===e.nodeName){var o=e.elements.length;for(var a=0;a<o;a++)if((t=e.elements[a]).name&&!t.disabled&&'file'!==t.type&&'reset'!==t.type&&'submit'!==t.type&&'button'!==t.type)if('select-multiple'===t.type){r=e.elements[a].options.length;for(var i=0;i<r;i++)t.options[i].selected&&(n[n.length]={name:t.name,value:t.options[i].value})}else('checkbox'!==t.type&&'radio'!==t.type||t.checked)&&(n[n.length]={name:t.name,value:t.value})}return n},exports.splitEvery=function(e,t){var r=arguments.length>0&&void 0!==e?e:1;var n=arguments.length>1&&void 0!==t?t:[];return n.reduce(((e,t,n)=>(n%r||(e[e.length]=[]),e[e.length-1].push(t),e)),[])},exports.toCamelCase=e=>{var t={};return Object.entries(e).forEach((e=>{var[r,n]=e;var o=r.split('_').map(((e,t)=>0===t?e:e[0].toUpperCase()+e.slice(1))).join('');t[o]=n})),t},exports.toUnderscoredCase=e=>{var t={};return Object.entries(e).forEach((e=>{var[r,n]=e;var o=r.split(/(?=[A-Z])/).join('_').toLowerCase();t[o]=n})),t},exports.transformOptionsForSelect=e=>e.map((e=>{var{id:t,name:r,image_url:n}=e;return{value:t,label:r,image_url:n}})),exports.uniq=e=>e.filter(((e,t,r)=>r.indexOf(e)===t)),exports.uuid=()=>{function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return"".concat(e()+e(),"-").concat(e(),"-").concat(e(),"-").concat(e(),"-").concat(e()).concat(e()).concat(e())},exports.wrapFormFields=function(e,t,r){var n=arguments.length>2&&void 0!==r?r:[];var o=t.split('&');var a=[];var i;var s;return o.forEach((t=>{i=t.substr(0,t.indexOf('=')),s=n.includes(i)?t:t.replace(i,R(e,i)),a.push(s)})),a.join('&')};
|
|
2
|
+
//# sourceMappingURL=foxford-utils.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foxford-utils.cjs.js","sources":["../../src/collapse.js","../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../src/pluralize.js","../../src/getMimeTypes.js","../../src/pluralizeByType.js","../../src/objects.js","../../src/currency-codes.js","../../src/colors.js","../../src/files.js","../../src/mime-types/images.js","../../src/mime-types/files.js","../../src/mime-types/audio.js","../../src/functions.js","../../src/base64ToArrayBuffer.js","../../src/capitalize.js","../../src/url.js","../../src/debounce.js","../../src/browser.js","../../src/strings.js","../../src/getFilesSize.js","../../src/getRandomInt.js","../../src/indexByGroupId.js","../../src/indexById.js","../../src/dom.js","../../src/array.js","../../src/parseStringListToArray.js","../../src/pickBy.js","../../src/qid.js","../../src/rawMarkup.js","../../src/scrollToElement.js","../../src/caseConverters.js","../../src/transformOptionsForSelect.js","../../src/uuid.js"],"sourcesContent":["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","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\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","// @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","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 * Глубокий мерж объектов\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","/* 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","// @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 = (): string[] => getMimeTypes(MimeTypes.images)\n\nexport const mimeFiles = (): string[] => getMimeTypes(MimeTypes.files)\n\nexport const mimeAudio = (): string[] => getMimeTypes(MimeTypes.audio)\n\nexport const acceptFileTypes = (): string[] => [...mimeImages(), ...mimeFiles()]\n\nexport const acceptAllTypes = (): string[] => [...mimeImages(), ...mimeFiles(), ...mimeAudio()]\n\nexport const acceptImagesExtensions = (): string[] => getExtentensions(MimeTypes.images)\n\nexport const acceptFilesExtensions = (): string[] => getExtentensions(MimeTypes.files)\n\nexport const acceptAudioExtensions = (): string[] => getExtentensions(MimeTypes.audio)\n\nexport const acceptAllExtensions = (): string[] => [\n ...acceptFilesExtensions(),\n ...acceptImagesExtensions(),\n ...acceptAudioExtensions(),\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: '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","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 =\n (idToMatch) =>\n ({ id }) =>\n 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","/**\n * Конвертим base64 в буфер\n *\n * @param {string} base64\n */\nexport function base64ToArrayBuffer(base64) {\n const binaryString = window.atob(base64)\n const len = binaryString.length\n const bytes = new Uint8Array(len)\n\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i)\n }\n\n return bytes.buffer\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","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","/**\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","// @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 * Функция принимает Ф.И.О, возвращает Ф.И.\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.splice(0, 2).reverse().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","// @flow\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","// Возвращает случайное целое число между 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","/*\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","/**\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","/**\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 * \"— Преподаватель кафедры общей физики МФТИ <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 * 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","/**\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 * @example\n * <div dangerouslySetInnerHTML={rawMarkup('<b>text</b>')} />\n */\nexport function rawMarkup(text) {\n return { __html: text }\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","// @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","/* eslint-disable camelcase */\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 * 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"],"names":["toggleOnClickHandler","_ref","currentTarget","toggleArrow","querySelector","arrowClass","toggleClass","Array","from","classList","indexOf","remove","add","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread2","target","i","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","pluralize","counter","forms","n","Math","abs","getMimeTypes","files","reduce","acc","file","mime","TYPES","tasks","exercises","members","hours","seconds","minutes","remains","days","points","students","studentsParentalCase","merge","assign","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","colorLuminance","rawHex","lum","hex","String","replace","rgb","c","parseInt","substr","round","min","max","toString","MimeTypes","extensions","getExtentensions","mimeImages","mimeFiles","mimeAudio","acceptImagesExtensions","acceptFilesExtensions","acceptAudioExtensions","wrapField","wrapper","field","Collapse","constructor","this","init","bind","makeCollapse","destroy","onClickHandler","collapse","addEventListener","setTimeout","document","querySelectorAll","body","collapses","window","item","removeEventListener","reinit","base64","binaryString","atob","len","bytes","Uint8Array","charCodeAt","buffer","str","toUpperCase","slice","u","query","url","hashExist","includes","hash","split","urlPath","urlQuery","qs","stringify","parse","encode","s","join","f","ms","timer","_len","args","_key","onComplete","clearTimeout","e","which","keyCode","ua","navigator","userAgent","msie","substring","rv","edge","string","colors","sum","currencyCode","attachments","size","concat","degree","color","link","exec","result","match","floor","random","items","all","newAll","group","id","el","rect","getBoundingClientRect","top","left","bottom","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","func","defaultOptions","response","then","options","_objectSpread","Promise","resolve","label","undefined","map","encodeURIComponent","fullName","nameArr","splice","reverse","idToMatch","arr1","arr2","el1","el2","find","style","getComputedStyle","offsetHeight","marginTop","marginBottom","filterFunc","newObj","entries","entry","type","number","text","possible","charAt","__html","arr","index","newArr","selector","elem","pageYOffset","pageXOffset","getElementPosition","scrollTo","form","l","nodeName","elements","name","disabled","j","selected","checked","limit","newKey","part","_ref2","toLowerCase","image_url","arrArg","pos","s4","formFieldsString","untouchables","parts","newFields","oldField","newPart","oldPart"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from'query-string';function t(e,t){var r=arguments.length>0&&void 0!==e?e:6;var n=!(arguments.length>1&&void 0!==t)||t;var a='';var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".concat(n?'0123456789':'');for(var o=0;o<r;o++)a+=i.charAt(Math.floor(Math.random()*i.length));return a}function r(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return"".concat(e()+e(),"-").concat(e(),"-").concat(e(),"-").concat(e(),"-").concat(e()).concat(e()).concat(e())}function n(e,t){var r={};return Object.entries(e).map((e=>{var n=e[0];var a=e[1];return t(n,a)&&(r[n]=a),[n,a]})),r}function a(e){var{currentTarget:t}=e;if(!t)return!1;var r=t.querySelector('.toggle_arrow');var n='down';var a='expanded';return-1!==Array.from(r.classList).indexOf(n)?(r.classList.remove(n),t.classList.remove(a)):(t.classList.add(a),r.classList.add(n)),!0}class i{constructor(){this.init=this.init.bind(this),this.makeCollapse=this.makeCollapse.bind(this),this.destroy=this.destroy.bind(this),this.onClickHandler=a}makeCollapse(e){return-1===Array.from(e.classList).indexOf('js')&&(e.addEventListener('click',this.onClickHandler),e.classList.add('js'))}init(){setTimeout((()=>!(!document.querySelectorAll||!document.body.classList)&&(this.collapses=window.document.querySelectorAll('.toggle_element'),Array.from(this.collapses).forEach(this.makeCollapse))),0)}destroy(){var e=window.document.querySelectorAll('.toggle_element');Array.from(e).forEach((e=>{e.removeEventListener('click',this.makeCollapse)}))}reinit(){this.destroy(),this.init()}}function o(e,t){var r=null;return function(){for(var n=arguments.length,a=new Array(n),i=0;i<n;i++)a[i]=arguments[i];var o=()=>{e.apply(this,a),r=null};return r&&clearTimeout(r),r=setTimeout(o,t)}}function c(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((t=>Object.getOwnPropertyDescriptor(e,t).enumerable))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((t=>{c(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((t=>{Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e){return e.reduce(((e,t)=>{var r=u({},e);return r[t.id]=t,r}),{})}function v(e,t){var r=Math.abs(e);return t[r%10==1&&r%100!=11?0:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?1:2]}function d(e){return{__html:e}}var p=e=>e.length?e[0].toUpperCase()+e.slice(1):'';function f(e,t){var r=0;return e.concat(t).forEach((e=>{r+=e.size})),r}var m=e=>e.reduce(((e,t)=>[...e,t.mime]),[]);function g(e,t){return Math.floor(Math.random()*(t-e))+e}function h(e){return e.reduce(((e,t)=>{var r=u({},e);return r[t.group.id]=t,r}),{})}function b(e){var t=document.querySelector(e);if(!t)return!1;var{top:r}=(e=>{var{top:t,left:r}=e.getBoundingClientRect();var{pageYOffset:n,pageXOffset:a}=window;return{top:t+n,left:r+a}})(t);return window.scrollTo(0,r)}var y={tasks:['задача','задачи','задач'],exercises:['занятие','занятия','занятий'],members:['участник','участника','участников'],hours:['час','часа','часов'],seconds:['секунда','секунды','секунд'],minutes:['минута','минуты','минут'],remains:['остался','осталось','осталось'],days:['день','дня','дней'],points:['балл','балла','баллов'],students:['ученик','ученика','учеников'],studentsParentalCase:['ученика','учеников','учеников']};function O(e,t){return v(e||0,y[t])}function x(e){var t=window.atob(e);var r=t.length;var n=new Uint8Array(r);for(var a=0;a<r;a++)n[a]=t.charCodeAt(a);return n.buffer}function R(e){var t=arguments.length>0&&void 0!==e?e:'';return t.split(/(?:^|<br>|\n)\s*[-\u\u2010-\u2015\ufe58\ufe63\uff0d]/gm).filter((e=>{var{length:t}=e;return t}))}function D(e){return e.map((e=>{var{id:t,name:r,image_url:n}=e;return{value:t,label:r,image_url:n}}))}var P=(e,t)=>{for(var r of Object.keys(t))t[r]instanceof Object&&r in e&&Object.assign(t[r],P(e[r],t[r]));return Object.assign(e||{},t),e};var S=()=>{var e=window.navigator.userAgent;var t=e.indexOf('MSIE ');if(t>0)return parseInt(e.substring(t+5,e.indexOf('.',t)),10);if(e.indexOf('Trident/')>0){var r=e.indexOf('rv:');return parseInt(e.substring(r+3,e.indexOf('.',r)),10)}var n=e.indexOf('Edge/');return n>0&&parseInt(e.substring(n+5,e.indexOf('.',n)),10)};function C(e){var t=getComputedStyle(e);return e.offsetHeight+(parseInt(t.marginTop)+parseInt(t.marginBottom))}function w(e){var t;var r;var n=[];if('object'==typeof e&&'FORM'===e.nodeName){var a=e.elements.length;for(var i=0;i<a;i++)if((t=e.elements[i]).name&&!t.disabled&&'file'!==t.type&&'reset'!==t.type&&'submit'!==t.type&&'button'!==t.type)if('select-multiple'===t.type){r=e.elements[i].options.length;for(var o=0;o<r;o++)t.options[o].selected&&(n[n.length]={name:t.name,value:t.options[o].value})}else('checkbox'!==t.type&&'radio'!==t.type||t.checked)&&(n[n.length]={name:t.name,value:t.value})}return n}function j(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}var $=e=>{var t={};return Object.entries(e).forEach((e=>{var[r,n]=e;var a=r.split('_').map(((e,t)=>0===t?e:e[0].toUpperCase()+e.slice(1))).join('');t[a]=n})),t};var L=e=>{var t={};return Object.entries(e).forEach((e=>{var[r,n]=e;var a=r.split(/(?=[A-Z])/).join('_').toLowerCase();t[a]=n})),t};var A=function(e,t){var r=arguments.length>0&&void 0!==e?e:1;var n=arguments.length>1&&void 0!==t?t:[];return n.reduce(((e,t,n)=>(n%r||(e[e.length]=[]),e[e.length-1].push(t),e)),[])};var M=e=>e.filter(((e,t,r)=>r.indexOf(e)===t));var B=(e,t)=>{var r=[...e];return r.splice(t,1),r};function N(e,t,r){var n=arguments.length>0&&void 0!==e?e:[];var a=arguments.length>1&&void 0!==t?t:[];var i=arguments.length>2&&void 0!==r?r:'id';return n.map((e=>{var t=a.find((t=>"".concat(t[i])==="".concat(e[i])));return t?u(u({},e),t):e}))}var k=function(e){var t=arguments.length>0&&void 0!==e?e:'';var r=t.split(' ');return 3===r.length?r.splice(0,2).reverse().join(' '):r.reverse().join(' ')};var E=function(e){var t=arguments.length>0&&void 0!==e?e:'';return'string'==typeof t&&t.replace(/\D/gim,'')};var K={ALL:'Lek',AFN:'؋',ARS:'$',AWG:'ƒ',AUD:'$',AZN:'₼',BSD:'$',BBD:'$',BYR:'Br',BZD:'BZ$',BMD:'$',BOB:'$b',BAM:'KM',BWP:'P',BGN:'лв',BRL:'R$',BND:'$',KHR:'៛',CAD:'C$',KYD:'$',CLP:'$',CNY:'¥',COP:'$',CRC:'₡',HRK:'kn',CUP:'₱',CZK:'Kč',DKK:'kr',DOP:'RD$',XCD:'$',EGP:'£',SVC:'$',EEK:'kr',EUR:'€',FKP:'£',FJD:'$',FRF:'₣',GHC:'¢',GIP:'£',GTQ:'Q',GGP:'£',GYD:'$',HNL:'L',HKD:'$',HUF:'Ft',ISK:'kr',INR:'₨',IDR:'Rp',IRR:'﷼',IMP:'£',ILS:'₪',JMD:'J$',JPY:'¥',JEP:'£',KZT:'₸',KGS:'KGS',LAK:'₭',LVL:'Ls',LBP:'£',LRD:'$',LTL:'Lt',MKD:'ден',MYR:'RM',MUR:'₨',MXN:'$',MNT:'₮',MZN:'MT',NAD:'$',NPR:'₨',ANG:'ƒ',NZD:'$',NIO:'C$',NGN:'₦',KPW:'₩',NOK:'kr',OMR:'﷼',PKR:'₨',PAB:'B/.',PYG:'Gs',PEN:'S/.',PHP:'₱',PLN:'zł',QAR:'﷼',RON:'lei',RUR:'₽',SHP:'£',SAR:'﷼',RSD:'Дин.',SCR:'₨',SGD:'$',SBD:'$',SOS:'S',ZAR:'R',KRW:'₩',LKR:'₨',SEK:'kr',CHF:'CHF',SRD:'$',SYP:'£',TWD:'NT$',THB:'฿',TTD:'TT$',TRY:'₤',TRL:'₤',TVD:'$',UAH:'₴',GBP:'£',USD:'$',UYU:'$U',UZS:'лв',VEF:'Bs',VND:'₫',YER:'﷼',ZWD:'Z$'};function T(e){return K[e]||e}function I(e,t){var r=arguments.length>1&&void 0!==t?t:0;var n=String(e).replace(/[^0-9a-f]/gi,'');n.length<6&&(n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]);var a='#';for(var i=0;i<3;i++){var o=n&&parseInt(n.substr(2*i,2),16);o=Math.round(Math.min(Math.max(0,o+o*r),255)).toString(16),a+="00".concat(o).substr(o.length)}return a}function G(e,t){return"linear-gradient(".concat(e,", ").concat(I("#".concat(t),.09),", ").concat(I("#".concat(t),-.09),")")}var H=(e,t)=>{var r=e.length;var n=0;for(;r--;)n+=e.charCodeAt(r);return t?t[n%t.length]:null};function U(t,r){var n=t;var a=n.includes('#');var i=a?n.split('#')[1]:'';a&&(n=(n=n.replace('#','')).replace(i,''));var[o,c]=n.split('?');return[o,e.stringify(u(u({},e.parse(c)),r),{encode:!1})].filter((e=>!!e)).join('?')+(a?"#".concat(i):'')}function Y(t){return e.parse(t)}function Z(e){var t=arguments.length>0&&void 0!==e?e:'';var r=t.match(/<([^>]+)>/);return r?r[1]:''}function F(e){var t=arguments.length>0&&void 0!==e?e:'';return t&&parseInt(/[?&]page=([^&>]+)[&>]/gi.exec(t)[1])||null}function W(e){var t=arguments.length>0&&void 0!==e?e:{};return Object.keys(t).map((e=>"".concat(encodeURIComponent(e),"=").concat(encodeURIComponent(t[e])))).join('&')}var _=[{mime:'image/jpeg',extensions:['jpg','jpeg']},{mime:'image/png',extensions:['png']},{mime:'image/gif',extensions:['gif']}],q=[{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']}],J=[{mime:'audio/mpeg, audio/mp3',extensions:['mp3']},{mime:'audio/wav',extensions:['wav']}];var V=e=>e.reduce(((e,t)=>[...e,...t.extensions]),[]);var Q=()=>m(_);var X=()=>m(q);var z=()=>m(J);var ee=()=>[...Q(),...X()];var te=()=>[...Q(),...X(),...z()];var re=()=>V(_);var ne=()=>V(q);var ae=()=>V(J);var ie=()=>[...ne(),...re(),...ae()];function oe(e,t){return"".concat(e,"[").concat(t,"]")}function ce(e,t,r){var n=arguments.length>2&&void 0!==r?r:[];var a=t.split('&');var i=[];var o;var c;return a.forEach((t=>{o=t.substr(0,t.indexOf('=')),c=n.includes(o)?t:t.replace(o,oe(e,o)),i.push(c)})),i.join('&')}var se=e=>t=>{var{id:r}=t;return String(r)===String(e)};function ue(e){return 13===('number'==typeof e.which?e.which:e.keyCode)}var le=(e,t)=>e?{value:e,label:t}:void 0;var ve=(e,t,r)=>{var n=e(t);return n?n.then((e=>u({options:e},r))):Promise.resolve({options:r})};export{i as Collapse,ie as acceptAllExtensions,te as acceptAllTypes,ae as acceptAudioExtensions,ee as acceptFileTypes,ne as acceptFilesExtensions,re as acceptImagesExtensions,x as base64ToArrayBuffer,p as capitalize,I as colorLuminance,U as createPath,K as currencyDirectory,o as debounce,ue as detectEnterKey,S as detectIE,E as extractDigits,H as getColorByString,T as getCurrencySymbol,f as getFilesSize,G as getGradient,m as getMimeTypes,F as getNextPageFromLinkHeader,Z as getNextPageURLFromLinkHeader,g as getRandomInt,h as indexByGroupId,l as indexById,j as isElementInViewport,ve as makeLoadOptionsFunc,le as makeOption,W as makeParamString,k as makeShortNameFromFull,se as matchesId,P as merge,N as mergeByKey,z as mimeAudio,X as mimeFiles,Q as mimeImages,C as outerHeight,Y as parseQueryString,R as parseStringListToArray,n as pickBy,v as pluralize,O as pluralizeByType,t as qid,d as rawMarkup,B as removeElFromArr,b as scrollToElement,w as serializeArray,A as splitEvery,$ as toCamelCase,L as toUnderscoredCase,D as transformOptionsForSelect,M as uniq,r as uuid,ce as wrapFormFields};
|
|
2
|
+
//# sourceMappingURL=foxford-utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foxford-utils.mjs","sources":["../../src/qid.js","../../src/uuid.js","../../src/pickBy.js","../../src/collapse.js","../../src/debounce.js","../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../node_modules/@babel/runtime/helpers/esm/objectSpread2.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/files.js","../../src/mime-types/images.js","../../src/mime-types/files.js","../../src/mime-types/audio.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","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\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","// @flow\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 binaryString = window.atob(base64)\n const len = binaryString.length\n const bytes = new Uint8Array(len)\n\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.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","/* eslint-disable camelcase */\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.splice(0, 2).reverse().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\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 = (): string[] => getMimeTypes(MimeTypes.images)\n\nexport const mimeFiles = (): string[] => getMimeTypes(MimeTypes.files)\n\nexport const mimeAudio = (): string[] => getMimeTypes(MimeTypes.audio)\n\nexport const acceptFileTypes = (): string[] => [...mimeImages(), ...mimeFiles()]\n\nexport const acceptAllTypes = (): string[] => [...mimeImages(), ...mimeFiles(), ...mimeAudio()]\n\nexport const acceptImagesExtensions = (): string[] => getExtentensions(MimeTypes.images)\n\nexport const acceptFilesExtensions = (): string[] => getExtentensions(MimeTypes.files)\n\nexport const acceptAudioExtensions = (): string[] => getExtentensions(MimeTypes.audio)\n\nexport const acceptAllExtensions = (): string[] => [\n ...acceptFilesExtensions(),\n ...acceptImagesExtensions(),\n ...acceptAudioExtensions(),\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: '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","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 =\n (idToMatch) =>\n ({ id }) =>\n 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","_ref","currentTarget","toggleArrow","querySelector","arrowClass","toggleClass","Array","from","classList","indexOf","remove","add","Collapse","constructor","this","init","bind","makeCollapse","destroy","onClickHandler","collapse","addEventListener","setTimeout","document","querySelectorAll","body","collapses","window","forEach","item","removeEventListener","reinit","debounce","f","ms","timer","_len","arguments","args","_key","onComplete","apply","clearTimeout","_defineProperty","defineProperty","enumerable","configurable","writable","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","_objectSpread2","target","source","getOwnPropertyDescriptors","defineProperties","indexById","items","reduce","all","newAll","id","pluralize","counter","forms","n","abs","rawMarkup","__html","capitalize","str","toUpperCase","slice","getFilesSize","attachments","files","size","concat","file","getMimeTypes","acc","mime","getRandomInt","min","max","indexByGroupId","group","scrollToElement","selector","field","top","elem","left","getBoundingClientRect","pageYOffset","pageXOffset","getElementPosition","scrollTo","TYPES","tasks","exercises","members","hours","seconds","minutes","remains","days","points","students","studentsParentalCase","pluralizeByType","type","base64ToArrayBuffer","base64","binaryString","atob","len","bytes","Uint8Array","charCodeAt","buffer","parseStringListToArray","string","split","transformOptionsForSelect","options","name","image_url","label","merge","assign","detectIE","ua","navigator","userAgent","msie","parseInt","rv","edge","outerHeight","el","style","getComputedStyle","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","_ref2","toLowerCase","splitEvery","limit","arr","index","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","qs","stringify","parse","encode","parseQueryString","getNextPageURLFromLinkHeader","link","match","getNextPageFromLinkHeader","exec","makeParamString","encodeURIComponent","MimeTypes","extensions","getExtentensions","mimeImages","mimeFiles","mimeAudio","acceptFileTypes","acceptAllTypes","acceptImagesExtensions","acceptFilesExtensions","acceptAudioExtensions","acceptAllExtensions","wrapField","wrapper","wrapFormFields","formFieldsString","untouchables","parts","newFields","oldField","newPart","oldPart","matchesId","idToMatch","detectEnterKey","e","which","keyCode","makeOption","undefined","makeLoadOptionsFunc","func","defaultOptions","response","then","_objectSpread","Promise","resolve"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,79 +1,51 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@foxford/foxford-utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Collection of utility libraries used by Foxford projects.",
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
"main": "foxford-utils.cjs.js",
|
|
6
|
+
"module": "foxford-utils.mjs",
|
|
7
|
+
"jsnext:main": "foxford-utils.mjs",
|
|
8
|
+
"peerDependencies": {
|
|
9
|
+
"query-string": "^6.x"
|
|
10
|
+
},
|
|
11
|
+
"author": "Roman Olin",
|
|
12
|
+
"maintainers": [
|
|
13
|
+
{
|
|
14
|
+
"name": "Roman Olin",
|
|
15
|
+
"email": "r.v.olin@foxford.ru"
|
|
16
|
+
}
|
|
8
17
|
],
|
|
9
|
-
"
|
|
10
|
-
"repository": "git@github.com:netology-group/foxford-utils-js.git",
|
|
11
|
-
"bugs": "https://github.com/netology-group/foxford-utils-js/issues",
|
|
18
|
+
"sideEffects": false,
|
|
12
19
|
"license": "MIT",
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
"prepublishOnly": "npm run build",
|
|
21
|
-
"lint": "npm run eslint && npm run flow",
|
|
22
|
-
"eslint": "eslint ./src",
|
|
23
|
-
"flow": "flow check",
|
|
24
|
-
"test": "npm run flow && npm run lint",
|
|
25
|
-
"build": "npm run clean && npm run build:cjs && npm run build:es",
|
|
26
|
-
"build:cjs": "rollup -c --environment NODE_ENV:production",
|
|
27
|
-
"build:es": "cross-env NODE_ENV=production BABEL_ENV=es babel src --out-dir dist/es",
|
|
28
|
-
"watch": "npm run clean && rollup -c -w --environment NODE_ENV:production",
|
|
29
|
-
"clean": "rimraf ./dist"
|
|
30
|
-
},
|
|
31
|
-
"dependencies": {
|
|
32
|
-
"query-string": "^6.2.0"
|
|
20
|
+
"devDependencies": {},
|
|
21
|
+
"scripts": {},
|
|
22
|
+
"homepage": "https://github.com/foxford/foxford-utils-js",
|
|
23
|
+
"bugs": "https://github.com/foxford/foxford-utils-js/issues",
|
|
24
|
+
"repository": "git@https://github.com/foxford/foxford-utils-js.git",
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
33
27
|
},
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
"@babel/plugin-proposal-object-rest-spread": "7.2.0",
|
|
41
|
-
"@babel/plugin-proposal-optional-chaining": "^7.2.0",
|
|
42
|
-
"@babel/plugin-transform-runtime": "7.2.0",
|
|
43
|
-
"@babel/polyfill": "7.2.5",
|
|
44
|
-
"@babel/preset-env": "7.2.3",
|
|
45
|
-
"@babel/preset-flow": "7.0.0",
|
|
46
|
-
"babel-eslint": "10.0.1",
|
|
47
|
-
"babel-loader": "^8.0.5",
|
|
48
|
-
"babel-plugin-module-resolver": "^3.1.2",
|
|
49
|
-
"cross-env": "7.0.2",
|
|
50
|
-
"eslint": "^5.12.0",
|
|
51
|
-
"eslint-import-resolver-babel-module": "^5.0.0-beta.0",
|
|
52
|
-
"eslint-loader": "^2.1.1",
|
|
53
|
-
"eslint-plugin-flowtype": "3.2.1",
|
|
54
|
-
"eslint-plugin-import": "2.14.0",
|
|
55
|
-
"eslint-plugin-prettier": "^3.0.1",
|
|
56
|
-
"eslint-plugin-react": "7.12.4",
|
|
57
|
-
"flow-bin": "0.93.0",
|
|
58
|
-
"prettier": "1.15.3",
|
|
59
|
-
"rimraf": "^2.6.3",
|
|
60
|
-
"rollup": "^1.1.0",
|
|
61
|
-
"rollup-plugin-alias": "^1.5.1",
|
|
62
|
-
"rollup-plugin-babel": "^4.3.0",
|
|
63
|
-
"rollup-plugin-babel-minify": "^6.2.0",
|
|
64
|
-
"rollup-plugin-commonjs": "^9.2.0",
|
|
65
|
-
"rollup-plugin-eslint": "^5.0.0",
|
|
66
|
-
"rollup-plugin-filesize": "^6.0.0",
|
|
67
|
-
"rollup-plugin-ignore": "^1.0.4",
|
|
68
|
-
"rollup-plugin-json": "^3.1.0",
|
|
69
|
-
"rollup-plugin-node-resolve": "^4.0.0",
|
|
70
|
-
"rollup-plugin-peer-deps-external": "^2.2.0",
|
|
71
|
-
"rollup-plugin-postcss": "^1.6.3",
|
|
72
|
-
"rollup-plugin-replace": "^2.1.0",
|
|
73
|
-
"rollup-plugin-visualizer": "^0.9.2"
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"require": "./foxford-utils.cjs.js",
|
|
31
|
+
"default": "./foxford-utils.mjs"
|
|
32
|
+
},
|
|
33
|
+
"./package.json": "./package.json"
|
|
74
34
|
},
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
|
|
78
|
-
|
|
35
|
+
"files": [
|
|
36
|
+
"README.md",
|
|
37
|
+
"index.d.ts",
|
|
38
|
+
"index.js.flow",
|
|
39
|
+
"foxford-utils.mjs",
|
|
40
|
+
"foxford-utils.mjs.map",
|
|
41
|
+
"foxford-utils.cjs.js",
|
|
42
|
+
"foxford-utils.cjs.js.map",
|
|
43
|
+
"foxford-utils.cjs.js.flow",
|
|
44
|
+
"foxford-utils.mjs.js.flow",
|
|
45
|
+
"foxford-utils.cjs.d.ts",
|
|
46
|
+
"foxford-utils.mjs.d.ts"
|
|
47
|
+
],
|
|
48
|
+
"keywords": [
|
|
49
|
+
"foxford"
|
|
50
|
+
]
|
|
79
51
|
}
|
package/README.md
DELETED