{"version":3,"file":"spa-static/js/chunk-helpers.afb2f2c0.js","mappings":"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","sources":["webpack://sirius-cms/./src/helpers/hasDiff.ts","webpack://sirius-cms/./src/helpers/transformFactToNote.ts","webpack://sirius-cms/./src/helpers/uniqCid.ts","webpack://sirius-cms/./src/helpers/validTime.ts","webpack://sirius-cms/./src/helpers/date.ts","webpack://sirius-cms/./src/helpers/getPathOfObject.ts","webpack://sirius-cms/./src/helpers/localItemsPerPage.ts","webpack://sirius-cms/./src/helpers/stripHtmlTags.ts","webpack://sirius-cms/./src/helpers/numWord.ts","webpack://sirius-cms/./src/helpers/stringToColor.ts","webpack://sirius-cms/./src/helpers/checkErid.ts","webpack://sirius-cms/./src/helpers/removeZWS.ts","webpack://sirius-cms/./src/helpers/loadScript.ts","webpack://sirius-cms/./src/helpers/getBrowserName.ts","webpack://sirius-cms/./src/helpers/ImageProcessing/getMimeType.ts","webpack://sirius-cms/./src/helpers/cloneDeep.ts","webpack://sirius-cms/./src/helpers/calcPercentage.ts","webpack://sirius-cms/./src/helpers/embed.js","webpack://sirius-cms/./src/helpers/getPlatformById.ts","webpack://sirius-cms/./src/helpers/forOwn.ts","webpack://sirius-cms/./src/helpers/computeSubPlatform.ts","webpack://sirius-cms/./src/helpers/computeMatrixOrigin.ts","webpack://sirius-cms/./src/helpers/isObject.ts","webpack://sirius-cms/./src/helpers/getWords.ts","webpack://sirius-cms/./src/helpers/decodeHTMLString.ts","webpack://sirius-cms/./src/helpers/getCountLetters.ts","webpack://sirius-cms/./src/helpers/isPositiveNumber.ts","webpack://sirius-cms/./src/helpers/sleep.ts","webpack://sirius-cms/./src/helpers/isNumber.ts","webpack://sirius-cms/./src/helpers/kitcut.ts","webpack://sirius-cms/./src/helpers/cloneObject.ts","webpack://sirius-cms/./src/helpers/deepFreeze.ts","webpack://sirius-cms/./src/helpers/numberToFixed.ts","webpack://sirius-cms/./src/helpers/getDownloadedUrl.ts","webpack://sirius-cms/./src/helpers/capitalizeFirstLetter.ts","webpack://sirius-cms/./src/helpers/stripHTML.ts","webpack://sirius-cms/./src/helpers/checkOnline.ts","webpack://sirius-cms/./src/helpers/hasWidgetParams.ts","webpack://sirius-cms/./src/helpers/getSocialDistributionStatus.ts","webpack://sirius-cms/./src/helpers/deepDiff.ts","webpack://sirius-cms/./src/helpers/validateEmail.ts","webpack://sirius-cms/./src/helpers/getLetters.ts","webpack://sirius-cms/./src/helpers/formatDigitValue.ts","webpack://sirius-cms/./src/helpers/randomUUID.ts","webpack://sirius-cms/./src/helpers/arrayMoveMutable.ts","webpack://sirius-cms/./src/helpers/formatPercentage.ts","webpack://sirius-cms/./src/helpers/checkURL.ts","webpack://sirius-cms/./src/helpers/copyText.ts","webpack://sirius-cms/./src/helpers/formatVideoDuration.ts","webpack://sirius-cms/./src/helpers/formatNumber.ts","webpack://sirius-cms/./src/helpers/cyrillicToLatin.ts","webpack://sirius-cms/./src/helpers/timeZone.ts","webpack://sirius-cms/./src/helpers/sliceText.ts","webpack://sirius-cms/./src/helpers/localStorageHelpers.ts","webpack://sirius-cms/./src/helpers/capitalize.ts","webpack://sirius-cms/./src/helpers/mergeStrings.ts","webpack://sirius-cms/./src/helpers/nestedFreeze.ts","webpack://sirius-cms/./src/helpers/downloadFile.ts","webpack://sirius-cms/./src/helpers/tableSort.ts","webpack://sirius-cms/./src/helpers/isEmpty.ts","webpack://sirius-cms/./src/helpers/urlCodeFromText.ts","webpack://sirius-cms/./src/helpers/differenceObj.ts","webpack://sirius-cms/./src/helpers/htmlToText.ts"],"sourcesContent":["import { deepDiff } from '@/helpers/deepDiff'\n\nexport function hasDiff(\n after: Record,\n before: Record\n) {\n return Object.keys(deepDiff(after, before)).length > 0\n}\n","import { ArticleBlock } from '@/types/article'\n\nexport default function transformFactToNote(\n item: Partial\n): Pick {\n if (item.widget?.name === 'note' || item.widget?.name === 'fact') {\n return {\n ...item,\n widget: {\n name: 'fact',\n params: {\n style: item.widget.params?.style || 'default',\n fact: item.widget.params?.text || item.widget.params?.fact,\n },\n },\n }\n }\n\n return item\n}\n","let startCID = Date.now()\n\nexport default function uniqCid(): number {\n startCID = Math.max(startCID, Date.now())\n\n return startCID++\n}\n","export default function validTime(timeString = ''): boolean {\n const [hours = '00', minutes = '00', seconds = '00'] = timeString.split(':')\n\n if (hours.length > 2 || minutes.length > 2 || seconds.length > 2) {\n return false\n }\n\n return (\n +hours >= 0 &&\n +hours <= 23 &&\n +minutes >= 0 &&\n +minutes <= 59 &&\n +seconds >= 0 &&\n +seconds <= 59\n )\n}\n","import { parse as parseDate } from 'date-fns'\n\nexport function getLocaleLongMonth(date: string): string {\n return new Date(date).toLocaleDateString('ru-RU', {\n day: '2-digit',\n month: 'long',\n })\n}\n\nexport function isValidDate(date: string | Date): boolean {\n return !isNaN(new Date(date).getTime())\n}\n\nexport function formatArticleDate(\n val?: string | null,\n options: { showTime?: boolean } = {}\n): string {\n if (!val) {\n return ''\n }\n\n const { showTime = true } = options\n const formatDate = parseDate(val, 'yyyy-MM-dd HH:mm:ss', new Date())\n const nowDate = new Date()\n\n if (formatDate.getFullYear() === nowDate.getFullYear()) {\n if (\n showTime &&\n formatDate.getMonth() === nowDate.getMonth() &&\n formatDate.getDate() === nowDate.getDate()\n ) {\n return formatDate.toLocaleTimeString('ru-RU', {\n hour: '2-digit',\n minute: '2-digit',\n })\n }\n\n return formatDate.toLocaleDateString('ru-RU', {\n day: '2-digit',\n month: 'long',\n hour: showTime ? '2-digit' : undefined,\n minute: showTime ? '2-digit' : undefined,\n })\n }\n\n return formatDate.toLocaleString('ru-RU', {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n hour: showTime ? '2-digit' : undefined,\n minute: showTime ? '2-digit' : undefined,\n })\n}\n","type GetFieldType = Path extends `${infer Left}.${infer Right}`\n ? Left extends keyof Obj\n ?\n | GetFieldType, Right>\n | Extract\n : undefined\n : Path extends keyof Obj\n ? Obj[Path]\n : undefined\n\nexport default function getPathOfObject<\n TData,\n TPath extends string,\n TDefault = GetFieldType\n>(\n data: TData,\n path: TPath,\n defaultValue?: TDefault\n): GetFieldType | TDefault | undefined {\n const value = path\n .replaceAll('[', '.')\n .replaceAll(']', '')\n .split('.')\n .reduce>(\n (value, key) => (value as any)?.[key],\n data as any\n )\n\n return value !== undefined ? value : defaultValue\n}\n","function getFieldName() {\n return `${\n window.location.pathname\n .split('/')\n .slice(2) // 1 for different magazines\n .join('.') || 'home'\n }.itemsPerPage`\n}\n\nexport function setLocalItemsPerPage(value: number): void {\n const fieldName = getFieldName()\n window.localStorage.setItem(fieldName, value.toString())\n}\n\nexport function getLocalItemsPerPage(defaultCount = 10): number {\n const fieldName = getFieldName()\n const localCount = Number(window.localStorage.getItem(fieldName))\n return localCount || defaultCount\n}\n","export default function stripHtmlTags(\n value?: string | null\n): string | null | undefined {\n return value?.toString().replace(/<\\/?[^>]+(>|$)/g, '')\n}\n","export default function numWord(value: number, words: string[]): string {\n value = Math.abs(value) % 100\n const num = value % 10\n if (value > 10 && value < 20) return words[2]\n if (num > 1 && num < 5) return words[1]\n if (num == 1) return words[0]\n return words[2]\n}\n","export default function stringToColor(value?: string | number): string {\n if (!value) return ''\n\n const str = value.toString()\n\n const color = (v: number) => `0${v.toString(16)}`.slice(-2)\n\n let hash = 280\n\n for (let index = 0; index < str.length; index++) {\n hash = (hash << 16) + hash + str.charCodeAt(index)\n }\n\n const r = color((hash & 0xff0000) >> 16)\n const g = color((hash & 0x00ff00) >> 8)\n const b = color(hash & 0x0000ff)\n\n return `#${r}${g}${b}`\n}\n","export default function checkErid(value?: string | null): boolean {\n return !!value && /^[a-z0-9]+$/i.test(value)\n}\n","export default function removeZWS(str?: string): string {\n return str?.replace(/[\\u200B-\\u200D\\uFEFF]/g, '') || ''\n}\n","export default function loadScript(\n src: string,\n async = true,\n crossOrigin = ''\n): HTMLScriptElement {\n const script = document.createElement('script')\n\n script.src = src\n script.async = async\n\n if (crossOrigin) {\n script.crossOrigin = crossOrigin\n }\n\n document.body.appendChild(script)\n\n return script\n}\n","export default function getBrowserName() {\n const userAgent = navigator.userAgent\n\n if (userAgent.includes('Opera') || userAgent.includes('OPR')) {\n return 'Opera'\n }\n\n if (userAgent.includes('Edg')) {\n return 'Edge'\n }\n\n if (userAgent.includes('Firefox')) {\n return 'Firefox'\n }\n\n if (userAgent.includes('Chrome')) {\n return 'Chrome'\n }\n\n if (userAgent.includes('Safari')) {\n return 'Safari'\n }\n\n return 'Unknown'\n}\n","export default function getMimeType(\n file: ArrayBuffer,\n fallback: string\n): string {\n const byteArray = new Uint8Array(file).subarray(0, 4)\n let header = ''\n for (let i = 0; i < byteArray.length; i++) {\n header += byteArray[i].toString(16)\n }\n switch (header) {\n case '89504e47':\n return 'image/png'\n case '47494638':\n return 'image/gif'\n case 'ffd8ffe0':\n case 'ffd8ffe1':\n case 'ffd8ffe2':\n case 'ffd8ffe3':\n case 'ffd8ffe8':\n return 'image/jpeg'\n default:\n return fallback\n }\n}\n","// eslint-disable-next-line @typescript-eslint/ban-types\nexport default function cloneDeep(\n value: V\n) {\n return structuredClone(value)\n}\n","import numberToFixed from './numberToFixed'\n\nexport default function calcPercentage(partial: number, total: number) {\n return Math.min(numberToFixed((100 * partial) / total, 2), 100)\n}\n","import axios from 'axios'\n\nexport const initInstagram = (() => {\n let instaScript\n\n return function () {\n if (!instaScript) {\n instaScript = document.createElement('script')\n instaScript.async = true\n instaScript.src = 'https://platform.instagram.com/en_US/embeds.js'\n document.head.appendChild(instaScript)\n }\n\n if (!window.instgrm) {\n instaScript.onload = () => {\n window.instgrm.Embeds.process()\n }\n } else {\n window.instgrm.Embeds.process()\n }\n }\n})()\n// @ts-ignore\nexport const initTiktok = (() => {\n let tiktokScript\n return async function ({ url, containerEl }) {\n console.log(url, containerEl)\n try {\n const { data } = await axios.get('https://www.tiktok.com/oembed', {\n params: {\n url,\n },\n })\n console.log(data)\n\n const wrapper = document.createElement('div')\n\n wrapper.innerHTML = data.html\n\n const script = wrapper.querySelector('script')\n\n script.parentElement.removeChild(script)\n\n if (containerEl) {\n if (!tiktokScript) {\n tiktokScript = document.createElement('script')\n tiktokScript.async = true\n tiktokScript.src = script.src\n\n document.head.appendChild(tiktokScript)\n }\n\n const loadedTiktokEmbed =\n !!window.tiktokEmbed && !!window.tiktokEmbed.lib\n\n const render = async () => {\n try {\n containerEl.innerHTML = wrapper.innerHTML\n const tiktokEl = containerEl.querySelector('[data-video-id]')\n\n await window.tiktokEmbed.lib.render([tiktokEl])\n } catch (e) {\n console.log(e)\n }\n }\n\n if (loadedTiktokEmbed) {\n render()\n } else {\n tiktokScript.onload = render\n }\n }\n } catch (e) {\n console.log(e)\n }\n }\n})()\n\n// @ts-ignore\nexport const initCoub = (() => {\n let coubScript\n return async function ({ url, containerEl }) {\n console.log(url, containerEl)\n try {\n const { data } = await axios.get('https://www.coub.com/oembed', {\n params: {\n url,\n },\n })\n console.log(data)\n\n const wrapper = document.createElement('div')\n\n wrapper.innerHTML = data.html\n\n const script = wrapper.querySelector('script')\n\n script.parentElement.removeChild(script)\n\n if (containerEl) {\n if (!coubScript) {\n coubScript = document.createElement('script')\n coubScript.async = true\n coubScript.src = script.src\n\n document.head.appendChild(coubScript)\n }\n\n const loadedCoubEmbed = !!window.coubEmbed && !!window.coubEmbed.lib\n\n const render = async () => {\n try {\n containerEl.innerHTML = wrapper.innerHTML\n const embedEl = containerEl.querySelector('[data-video-id]')\n\n await window.coubEmbed.lib.render([embedEl])\n } catch (e) {\n console.log(e)\n }\n }\n\n if (loadedCoubEmbed) {\n render()\n } else {\n coubScript.onload = render\n }\n }\n } catch (e) {\n console.log(e)\n }\n }\n})()\n","import { Platform, ProjectID } from '@/types/platform'\n\nconst projectIds = Object.entries(ProjectID)\n\nexport const getPlatformById = (id: ProjectID) => {\n for (const [key, value] of projectIds) {\n if (typeof value !== 'string') {\n continue\n }\n\n const currentId = +key as ProjectID\n\n if (isNaN(currentId) || currentId !== id) {\n continue\n }\n\n const code = value as Platform\n\n return code\n }\n}\n","export default function forOwn(\n object: O,\n callback: (value: O[keyof O], key: keyof O) => void\n): void {\n if (!object) return\n\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n const value = object[key]\n\n callback(value, key)\n }\n }\n}\n","import { Platform, SubPlatformMainSectionCode } from '@/types/platform'\n\nexport const computeSubPlatform = ({\n platform,\n sectionCode,\n}: {\n platform: Platform\n sectionCode?: string | null\n}) => {\n if (\n platform === Platform.goodhouse &&\n SubPlatformMainSectionCode.newyear_novochag === sectionCode\n ) {\n return 'newyear_novochag'\n }\n\n return null\n}\n","import { APP_FRONT_ENV } from '@/config/base'\nimport { Platform, PlatformOrigin, SubPlatformOrigin } from '@/types/platform'\nimport { computeSubPlatform } from './computeSubPlatform'\n\nexport const computeMatrixOrigin = ({\n platform,\n sectionCode,\n}: {\n platform: Platform\n sectionCode?: string | null\n}) => {\n const subPlatform = computeSubPlatform({ platform, sectionCode })\n const origin = subPlatform\n ? SubPlatformOrigin[subPlatform]\n : PlatformOrigin[platform]\n\n if (APP_FRONT_ENV === 'PROD') {\n return origin\n }\n\n return origin\n .replace('www.', '')\n .replace('://', `://${APP_FRONT_ENV.toLowerCase()}.`)\n}\n","export default function isObject(value: T) {\n return value instanceof Object\n}\n","export default function getWords(value?: string): string[] {\n return (\n value?.match(\n /(\\p{L}|\\p{N}|\\p{Pc})+|(\\p{M}|\\p{S}|\\p{Pi}|\\p{Pf}|\\p{Ps}|\\p{Ps}|\\p{Pe}|\\p{Po}|\\p{Pd}|\\p{Z}|\\p{C})+/gu\n ) || []\n )\n}\n","export default function decodeHTMLString(string: string): string {\n const textarea = document.createElement('textarea')\n textarea.innerHTML = string\n return textarea.value\n}\n","import getLetters from './getLetters'\n\nexport default function getCountLetters(text?: string | null): number {\n return getLetters(text).length\n}\n","import isNumber from './isNumber'\n\nexport default function isPositiveNumber(value?: string | number): boolean {\n return !!value && isNumber(value) && Number.isFinite(+value) && +value > 0\n}\n","export default function sleep(timeout: number): Promise {\n return new Promise((resolve) => {\n window.setTimeout(() => {\n resolve()\n }, timeout)\n })\n}\n","export default function isNumber(value?: number | string): boolean {\n return !!value && /^[0-9-.]+$/.test(value.toString())\n}\n","export default function kitcut(text: string, limit: number): string {\n text = text.trim()\n\n return text.length > limit ? `${text.slice(0, limit)}...` : text\n}\n","export default function cloneObject(obj: T): T {\n return obj ? JSON.parse(JSON.stringify(obj)) : obj\n}\n","export default function deepFreeze(o: T): T {\n if (!o) return o\n\n Object.freeze(o)\n\n Object.values(o).forEach((value) => {\n if (!Object.isFrozen(value)) {\n deepFreeze(value)\n }\n })\n\n return o\n}\n","import isNumber from './isNumber'\n\nexport default function numberToFixed(\n value?: number | string,\n fractionDigits = 2\n): number {\n const localValue = value && isNumber(value) ? +value : 0\n const [wholePart, decimalPart = ''] = localValue.toFixed(8).split('.')\n\n return +[wholePart, decimalPart.slice(0, fractionDigits)].join('.')\n}\n","export default function getDownloadedUrl(url: string): Promise {\n return fetch(url)\n .then((res) => res.blob())\n .then((imageBlob) => {\n return URL.createObjectURL(imageBlob)\n })\n}\n","export default function (string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1)\n}\n","export default function stripHtml(html: string): string {\n const tmp = document.createElement('div')\n tmp.innerHTML = html\n return tmp.textContent || tmp.innerText || ''\n}\n","export default async function checkOnline(): Promise {\n return await new Promise((resolve) => {\n const img = new Image()\n\n img.src = `/favicon.ico?t=${Date.now()}`\n\n img.addEventListener('load', () => {\n resolve(true)\n })\n\n img.addEventListener('error', () => {\n resolve(false)\n })\n })\n}\n","export default function hasWidgetParams(\n params?: Record | null\n): boolean {\n const paramsValues = params ? Object.values(params) : []\n\n return !paramsValues.every((value) => value === null || value === undefined)\n}\n","import { parse as parseDate } from 'date-fns'\nimport { SocialDistributionStatus } from '@/types/socialDistribution'\n\nexport default function getSocialDistributionStatus({\n status,\n activeFrom,\n isComputeStatus = false,\n}: {\n status?: SocialDistributionStatus\n activeFrom?: string | null\n isComputeStatus?: boolean\n}) {\n if (!isComputeStatus) {\n return status || SocialDistributionStatus.NEW\n }\n\n if (\n status === SocialDistributionStatus.ERROR ||\n status === SocialDistributionStatus.PUBLISHING ||\n status === SocialDistributionStatus.PUBLISHED\n ) {\n return status\n }\n\n const activeFromDate = activeFrom\n ? parseDate(activeFrom, 'yyyy-MM-dd HH:mm:ss', new Date())\n : null\n\n status = status || SocialDistributionStatus.NEW\n\n if (\n status === SocialDistributionStatus.NEW &&\n activeFromDate &&\n activeFromDate.getTime() < Date.now()\n ) {\n return SocialDistributionStatus.PUBLISHING\n }\n\n if (activeFromDate && activeFromDate.getTime() > Date.now()) {\n return SocialDistributionStatus.NEW\n }\n\n return status\n}\n","import isEqual from 'lodash.isequal'\nimport transform from 'lodash.transform'\nimport isObject from './isObject'\n\nexport function deepDiff(\n after: Record,\n before: Record\n): Record {\n function changes(\n after: Record,\n before: Record\n ): Record {\n return transform(after, function (result, value, key) {\n if (!isEqual(value, before[key])) {\n result[key] =\n isObject(value) &&\n isObject(before[key]) &&\n !Array.isArray(value) &&\n !Array.isArray(before[key])\n ? changes(value, before[key])\n : value\n }\n })\n }\n return changes(after, before)\n}\n","export default function (email: string): RegExpMatchArray | null {\n return email\n .toLowerCase()\n .match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n )\n}\n","import htmlToText from './htmlToText'\n\nexport default function getLetters(value?: string | null): string[] {\n return (\n htmlToText(value)?.match(/\\p{N}|\\p{L}|\\p{P}|\\p{M}|\\p{S}|\\p{Z}|\\p{C}/gu) ??\n []\n )\n}\n","export default function (value: number): string {\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ')\n}\n","export default function randomUUID() {\n // @ts-ignore\n if (typeof crypto.randomUUID === 'function') {\n // @ts-ignore\n return crypto.randomUUID()\n }\n\n // Полифил\n return `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, (c) =>\n (\n +c ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))\n ).toString(16)\n )\n}\n","export default function arrayMoveMutable(\n array: T[],\n fromIndex: number,\n toIndex: number\n): void {\n const startIndex = fromIndex < 0 ? array.length + fromIndex : fromIndex\n\n if (startIndex >= 0 && startIndex < array.length) {\n const endIndex = toIndex < 0 ? array.length + toIndex : toIndex\n\n const [item] = array.splice(fromIndex, 1)\n\n array.splice(endIndex, 0, item)\n }\n}\n","import numberToFixed from './numberToFixed'\n\nexport default function formatPercentage(value: number) {\n return `${numberToFixed(value, 2).toLocaleString('ru-RU')} %`\n}\n","export default function checkURL(value?: string | null) {\n if (!value) {\n return false\n }\n\n const inputElement = document.createElement('input')\n\n inputElement.type = 'url'\n inputElement.value = value\n\n return inputElement.checkValidity()\n}\n","import copy from 'copy-to-clipboard'\n\nexport default function copyText(text: string): void {\n copy(text, {\n message: 'Нажмите #{key} для копирования',\n })\n}\n","export default function formatVideoDuration({\n hours,\n minutes,\n seconds,\n}: {\n hours: number\n minutes: number\n seconds: number\n}): string {\n const formattedHours = hours < 10 ? `0${hours}` : hours\n const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes\n const formattedSeconds = seconds < 10 ? `0${seconds}` : seconds\n\n if (hours > 0) {\n return `${formattedHours}:${formattedMinutes}:${formattedSeconds}`\n }\n\n return `${formattedMinutes}:${formattedSeconds}`\n}\n","export default function formatNumber(\n n: number,\n options: {\n thousandth?: boolean\n millionth?: boolean\n thousandLabel?: string\n millionLabel?: string\n } = {}\n): string {\n if (!n) return '0'\n const {\n thousandth = true,\n millionth = true,\n millionLabel = 'млн.',\n thousandLabel = 'тыс.',\n } = options\n\n n = Math.ceil(n)\n\n if (millionth && n >= 1e6) {\n return `${+(n / 1e6).toFixed(1)} ${millionLabel}`\n }\n\n if (thousandth && n >= 1e3) {\n return `${+(n / 1e3).toFixed(1)} ${thousandLabel}`\n }\n\n return n.toLocaleString('ru-RU')\n}\n","export default function cyrillicToLatin(string: string): string {\n const ru: Record = {\n а: 'a',\n б: 'b',\n в: 'v',\n г: 'g',\n д: 'd',\n е: 'e',\n ё: 'e',\n ж: 'j',\n з: 'z',\n и: 'i',\n й: 'i',\n к: 'k',\n л: 'l',\n м: 'm',\n н: 'n',\n о: 'o',\n п: 'p',\n р: 'r',\n с: 's',\n т: 't',\n у: 'u',\n ф: 'f',\n х: 'h',\n ц: 'c',\n ч: 'ch',\n ш: 'sh',\n щ: 'shch',\n ы: 'y',\n э: 'e',\n ю: 'yu',\n я: 'ya',\n ъ: 'y',\n ь: '',\n }\n\n return string\n .split('')\n .map((char) => {\n if (char === 'ь') return\n if (ru[char]) {\n return ru[char]\n }\n\n if (ru[char.toLowerCase()]) {\n return ru[char.toLowerCase()].toUpperCase()\n }\n\n return char\n })\n .join('')\n}\n","const userTimeZone = new Date().getTimezoneOffset() // часовой пояс пользователя в минутах\nconst moscowTimeZone = -180 // в минутах (UTC +3)\n\nconst checkMoscowTimeZone = () => {\n return moscowTimeZone === userTimeZone\n}\n\nexport const getMoscowTimeDiff = () => {\n const now = new Date()\n const offsetDifference = userTimeZone - moscowTimeZone\n\n return new Date(now.getTime() + offsetDifference * 60 * 1000)\n}\n\nexport const isMoscowTimeZone = checkMoscowTimeZone()\n","import getLetters from './getLetters'\n\nexport default function sliceText({\n text,\n start,\n end,\n}: {\n text: string\n start: number\n end?: number\n}): string {\n return getLetters(text).slice(start, end).join('')\n}\n","interface IStorageItem {\n value: T\n expiry: number | null\n}\n\nexport const setStorageItemWithExpiry = (\n key: string,\n value: unknown,\n ttl?: number\n): void => {\n // ttl - time to live\n const item = {\n value: value,\n expiry: ttl ? Date.now() + ttl : null,\n }\n\n localStorage.setItem(key, JSON.stringify(item))\n}\n\nexport const getStorageItemWithExpiry = (key: string): null | T => {\n try {\n const item = localStorage.getItem(key)\n if (!item) return null\n const parsedItem: IStorageItem = JSON.parse(item)\n // compare the expiry time of the item with the current time\n if (parsedItem.expiry && Date.now() > parsedItem.expiry) {\n // If the item is expired, delete the item from storage and return null\n localStorage.removeItem(key)\n\n return null\n }\n return parsedItem.value\n } catch {\n return null\n }\n}\n","export default function capitalize(string: string): string {\n const words = string\n .toLowerCase()\n .split(' ')\n .filter((w) => w.trim().length > 0)\n\n return words.map((word) => word[0].toUpperCase() + word.slice(1)).join(' ')\n}\n","import isEmpty from './isEmpty'\n\nexport default function mergeStrings({\n values,\n separator = ' ',\n}: {\n values: Array\n separator?: string\n}) {\n return values.filter((v) => !isEmpty(v)).join(separator)\n}\n","export default function nestedFreeze(value: T): T {\n if (!value) return value\n\n if (Array.isArray(value)) {\n value.forEach((item) => {\n Object.freeze(item)\n })\n\n return value\n }\n\n return Object.freeze(value)\n}\n","export default function downloadFile(\n value: Blob | File,\n {\n fileExtension,\n fileName,\n }: {\n fileExtension: string\n fileName: string\n }\n): void {\n const link = document.createElement('a')\n link.href = URL.createObjectURL(value)\n link.setAttribute('download', `${fileName}.${fileExtension}`)\n link.click()\n\n URL.revokeObjectURL(link.href)\n}\n","export function getDefaultSort(defaultSort = 'id.desc'): string {\n return defaultSort\n}\n\nexport function getSortField(sortString = ''): string {\n return sortString.split('.')[0] || ''\n}\n\nexport function getSortType(sortString = ''): 'asc' | 'desc' {\n return (sortString.split('.')[1] as 'asc' | 'desc') || 'asc'\n}\n","export default function isEmpty(val?: unknown): val is undefined | null {\n if (Array.isArray(val)) {\n return !val.length\n }\n\n if (typeof val === 'string' || typeof val === 'number') {\n return !val.toString().trim().length\n }\n\n if (typeof val === 'object' && !!val) {\n return !Object.keys(val).length\n }\n\n return !val\n}\n","import cyrillicToLatin from './cyrillicToLatin'\nimport htmlToText from './htmlToText'\n\nexport default function urlCodeFromText(val: string): string {\n const code = cyrillicToLatin(\n htmlToText(val)\n .replace(/ |\\n/g, '-')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .replace(/æ/g, 'ae')\n .replace(/œ/g, 'oe')\n .toLowerCase()\n )\n .replace(/[^a-z0-9\\- ]/gi, '-')\n .split('-')\n .join(' ')\n .split(' ')\n .filter((word) => !!word.trim().length)\n .join('-')\n\n return code\n}\n","import cloneObject from './cloneObject'\n\nexport default function differenceObj(\n obj1: Record,\n obj2: Record\n): Record {\n const diff = Object.keys(cloneObject({ ...obj1, ...obj2 })).reduce<\n Record\n >((acc, key) => {\n if (obj1[key] !== obj2[key]) {\n if (obj2[key] !== undefined) {\n acc[key] = obj2[key]\n } else if (obj1[key] !== undefined) {\n acc[key] = obj1[key]\n }\n }\n\n return acc\n }, {})\n\n return diff\n}\n","export default function htmlToText(str?: string | null): string {\n if (!str) return ''\n\n const div = document.createElement('div')\n\n div.innerHTML = str\n\n const text = div.innerText\n\n return !text && div.querySelectorAll('ul, ol, li').length > 1 ? ' ' : text\n}\n"],"names":["hasDiff","after","before","Object","keys","deepDiff","length","transformFactToNote","item","widget","name","params","style","fact","text","startCID","Date","now","uniqCid","Math","max","validTime","timeString","hours","minutes","seconds","split","getLocaleLongMonth","date","toLocaleDateString","day","month","isValidDate","isNaN","getTime","formatArticleDate","val","options","showTime","formatDate","parseDate","nowDate","getFullYear","getMonth","getDate","toLocaleTimeString","hour","minute","undefined","toLocaleString","year","getPathOfObject","data","path","defaultValue","value","replaceAll","reduce","key","getFieldName","window","location","pathname","slice","join","setLocalItemsPerPage","fieldName","localStorage","setItem","toString","getLocalItemsPerPage","defaultCount","localCount","Number","getItem","stripHtmlTags","replace","numWord","words","abs","num","stringToColor","str","color","v","hash","index","charCodeAt","r","g","b","checkErid","test","removeZWS","loadScript","src","async","crossOrigin","script","document","createElement","body","appendChild","getBrowserName","userAgent","navigator","includes","getMimeType","file","fallback","byteArray","Uint8Array","subarray","header","i","cloneDeep","structuredClone","calcPercentage","partial","total","min","numberToFixed","instaScript","initTiktok","tiktokScript","url","containerEl","console","log","axios","wrapper","innerHTML","html","querySelector","parentElement","removeChild","head","loadedTiktokEmbed","tiktokEmbed","lib","render","tiktokEl","e","onload","initCoub","coubScript","loadedCoubEmbed","coubEmbed","embedEl","projectIds","entries","ProjectID","getPlatformById","id","currentId","code","forOwn","object","callback","prototype","hasOwnProperty","call","computeSubPlatform","platform","sectionCode","Platform","goodhouse","SubPlatformMainSectionCode","newyear_novochag","computeMatrixOrigin","subPlatform","origin","SubPlatformOrigin","PlatformOrigin","APP_FRONT_ENV","toLowerCase","isObject","getWords","match","decodeHTMLString","string","textarea","getCountLetters","getLetters","isPositiveNumber","isNumber","isFinite","sleep","timeout","Promise","resolve","setTimeout","kitcut","limit","trim","cloneObject","obj","JSON","parse","stringify","deepFreeze","o","freeze","values","forEach","isFrozen","fractionDigits","localValue","wholePart","decimalPart","toFixed","getDownloadedUrl","fetch","then","res","blob","imageBlob","URL","createObjectURL","charAt","toUpperCase","stripHtml","tmp","textContent","innerText","checkOnline","img","Image","addEventListener","hasWidgetParams","paramsValues","every","getSocialDistributionStatus","status","activeFrom","isComputeStatus","SocialDistributionStatus","NEW","ERROR","PUBLISHING","PUBLISHED","activeFromDate","changes","transform","result","isEqual","Array","isArray","email","htmlToText","randomUUID","crypto","c","getRandomValues","arrayMoveMutable","array","fromIndex","toIndex","startIndex","endIndex","splice","formatPercentage","checkURL","inputElement","type","checkValidity","copyText","copy","message","formatVideoDuration","formattedHours","formattedMinutes","formattedSeconds","formatNumber","n","thousandth","millionth","millionLabel","thousandLabel","ceil","cyrillicToLatin","ru","а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ы","э","ю","я","ъ","ь","map","char","userTimeZone","getTimezoneOffset","moscowTimeZone","checkMoscowTimeZone","getMoscowTimeDiff","offsetDifference","isMoscowTimeZone","sliceText","start","end","setStorageItemWithExpiry","ttl","expiry","getStorageItemWithExpiry","parsedItem","removeItem","capitalize","filter","w","word","mergeStrings","separator","isEmpty","nestedFreeze","downloadFile","fileExtension","fileName","link","href","setAttribute","click","revokeObjectURL","getDefaultSort","defaultSort","getSortField","sortString","getSortType","urlCodeFromText","normalize","differenceObj","obj1","obj2","diff","acc","div","querySelectorAll"],"sourceRoot":""}