@meduza/ui-kit-2 0.4.2 → 0.4.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-kit-2.cjs.production.min.js","sources":["../src/utils/makeClassName.ts","../src/Button/ButtonLoader.tsx","../src/Button/Button.tsx","../src/SvgSymbol/icons.ts","../src/SvgSymbol/index.tsx","../src/Switcher/index.tsx","../src/utils/makeStyleContext.ts","../src/utils/BlockContext.ts","../src/utils/postMessage.ts","../src/Lazy/index.tsx","../src/constants.ts","../src/utils/converCase.ts","../src/Image/RenderPicture.tsx","../src/Image/index.tsx","../src/Popover/index.tsx","../src/Footnote/index.tsx","../src/utils/viewportSize.ts","../src/DotsOnImage/index.tsx","../src/Tag/index.tsx","../src/MediaCaption/index.tsx","../src/Table/index.tsx","../src/MaterialNote/index.tsx","../src/BookmarkButton/index.tsx","../src/Meta/index.tsx","../src/Timestamp/index.tsx","../src/utils/DangerousHtml.tsx","../src/EmbedBlock/EmbedGif.tsx","../src/EmbedBlock/EmbedBlock.tsx","../src/EmbedBlock/IframeBlock.tsx","../src/EmbedBlock/index.tsx","../src/QuoteBlock/index.tsx","../src/CardTitle/index.tsx","../src/ChapterBlock/index.tsx","../src/utils/generateGradient.ts","../src/SimpleTitle/index.tsx","../src/RichTitle/index.tsx","../src/SimpleBlock/index.tsx","../src/ListBlock/index.tsx","../src/RelatedBlock/index.tsx","../src/SourceBlock/index.tsx","../src/SensitiveBlock/index.tsx","../src/GroupedBlock/index.tsx","../src/MetaItem/index.tsx","../src/MetaItemLive/index.tsx","../src/DocumentItemsCount/index.tsx","../src/utils/pluralize.ts","../src/Meta/MetaContainer.tsx","../src/DonatesTeaser/index.tsx","../src/AnnouncementInText/index.tsx","../src/RenderBlocks/index.tsx","../src/Cover/index.tsx","../src/HalfBlock/index.tsx","../src/ImportantLead/index.tsx","../src/Spoiler/index.tsx","../src/RelatedRichBlock/index.tsx","../src/ShopRelatedBlock/index.tsx","../src/utils/capitalizeFirstLetter.ts","../src/Dropdown/index.tsx","../src/MaterialTitle/index.tsx","../src/RawHtmlBlock/index.tsx","../src/Toolbar/Toolbar.tsx","../src/ToolbarButton/index.tsx","../src/Toolbar/ToolbarItem.tsx","../src/Tooltip/Tooltip.tsx","../src/Tooltip/TooltipFooter.tsx"],"sourcesContent":["export type ClassNames = (string[] | string | boolean)[][]\n\nexport const makeClassName = (list: ClassNames): string => {\n return list\n .filter(([, active]) => active)\n .map(([className]) => className)\n .join(' ')\n}\n\nexport default makeClassName\n","import React from 'react'\n\nexport const ButtonLoader: React.FC = () => (\n <svg\n width=\"30px\"\n height=\"30px\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g>\n <path\n d=\"M15 0C6.716 0 0 6.716 0 15c0 8.284 6.716 15 15 15 8.284 0 15-6.716 15-15 0-8.284-6.716-15-15-15zm0 2c7.18 0 13 5.82 13 13s-5.82 13-13 13S2 22.18 2 15 7.82 2 15 2z\"\n opacity=\"0.3\"\n />\n </g>\n <g fillRule=\"evenodd\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 15 15\"\n to=\"360 15 15\"\n dur=\"1000ms\"\n repeatCount=\"indefinite\"\n />\n <path d=\"M15 0c8.18 0 14.83 6.547 14.997 14.686L30 15h-2c0-7.077-5.655-12.833-12.693-12.996L15 2V0z\" />\n </g>\n </svg>\n)\n","import React, { FC } from 'react'\nimport { makeClassName } from '../utils/makeClassName'\nimport { ButtonLoader } from './ButtonLoader'\nimport { ButtonProps } from './Button.types'\n\nimport styles from './Button.module.css'\n\nexport const Button: FC<ButtonProps> = ({\n theme = 'gold',\n size = 'default',\n state = 'isDefault',\n styleContext = 'isInToolbar',\n appearance,\n disabled = false,\n onClick,\n children\n}) => {\n const handleClick = (): void => {\n if (disabled || !onClick) {\n return\n }\n\n onClick()\n }\n\n return (\n <button\n data-testid=\"button\"\n className={makeClassName([\n [styles.root, true],\n [styles[size], !!size],\n [styles[theme], !!theme],\n [styles[appearance], !!appearance],\n [styles[state], !!state && !!styles[state]],\n [styles[styleContext], !!styleContext]\n ])}\n disabled={disabled}\n onClick={handleClick}\n type=\"button\"\n >\n {state === 'isLoading' ? (\n <span className={styles.loader}>\n <ButtonLoader />\n </span>\n ) : (\n children\n )}\n </button>\n )\n}\n","export const icons = {\n meduzaLogo: {\n width: 544,\n height: 115,\n content:\n '<path d=\"M59.1008614,49.65632 L59.1008614,106.01472 L84.9480411,114.24 L84.9480411,49.65632 L101.574882,49.65632 L101.574882,106.01472 L127.270909,114.24 L144.048902,91.392 L127.422062,91.392 L127.422062,35.7952 L101.726035,26.80832 L84.9480411,46.60992 L84.9480411,35.7952 L59.2520145,26.80832 L42.4740206,46.60992 L42.4740206,35.7952 L16.7779939,26.80832 L0,49.65632 L16.6268408,49.65632 L16.6268408,106.01472 L42.4740206,114.24 L42.4740206,49.65632 L59.1008614,49.65632 L59.1008614,49.65632 Z M336.61795,91.392 L336.61795,35.0336 L310.770769,26.80832 L310.770769,105.25312 L336.466796,114.24 L353.24479,94.4384 L353.24479,105.25312 L378.940817,114.24 L395.71881,91.392 L379.091969,91.392 L379.091969,35.0336 L353.24479,26.80832 L353.24479,91.392 L336.61795,91.392 L336.61795,91.392 Z M527.373159,38.08 L502.130592,26.80832 L472.202278,41.1264 L502.130592,52.39808 L461.016949,72.352 L461.016949,104.94848 L486.86413,114.24 L502.130592,94.28608 L502.130592,105.25312 L527.977771,114.24 L544,91.23968 L527.373159,91.23968 L527.373159,38.08 L527.373159,38.08 Z M177.453737,114.24 L207.079744,102.35904 L177.453737,91.23968 L177.453737,75.24608 L216.300083,56.3584 L194.231731,26.80832 L151.606557,47.37152 L151.606557,103.12064 L177.453737,114.24 L177.453737,114.24 Z M455.424284,89.56416 L423.984441,79.968 L453.459295,42.19264 L416.577937,26.80832 L397.230341,51.48416 L428.821339,61.23264 L398.741873,98.85568 L436.076687,114.24 L455.424284,89.56416 L455.424284,89.56416 Z M486.86413,91.392 L486.86413,68.84864 L502.130592,61.53728 L502.130592,91.392 L486.86413,91.392 L486.86413,91.392 Z M177.453737,41.58336 L190.452904,59.55712 L177.453737,65.80224 L177.453737,41.58336 L177.453737,41.58336 Z M222.95082,103.12064 L248.797999,114.24 L291.27202,97.18016 L291.27202,29.7024 L222.95082,0 L222.95082,26.30784 L265.424841,43.21536 L265.424841,97.33248 L248.797999,91.23968 L248.797999,43.71584 L222.95082,51.94112 L222.95082,103.12064 L222.95082,103.12064 Z\" />'\n },\n\n menu: {\n width: 24,\n height: 24,\n content:\n '<path d=\"M2 21h20M2 12h20M2 3h20\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" vector-effect=\"non-scaling-stroke\" />'\n },\n\n fb: {\n width: 16,\n height: 18,\n content:\n '<path d=\"M15.117 1H.883A.883.883 0 0 0 0 1.883v14.234A.883.883 0 0 0 .883 17h7.663v-6.196H6.461V8.389h2.085V6.61a2.91 2.91 0 0 1 3.106-3.192c.622-.003 1.244.03 1.863.095v2.16h-1.279c-1.002 0-1.196.476-1.196 1.176v1.541h2.39l-.31 2.415h-2.08V17h4.077a.883.883 0 0 0 .883-.883V1.883A.883.883 0 0 0 15.117 1\" />'\n },\n\n tw: {\n width: 20,\n height: 18,\n content:\n '<path d=\"M20 3.1c-.7.3-1.5.6-2.4.7.8-.5 1.5-1.4 1.8-2.4-.8.5-1.7.8-2.6 1-.7-.8-1.8-1.4-3-1.4-2.3 0-4.1 1.9-4.1 4.3 0 .3 0 .7.1 1-3.3-.1-6.4-1.8-8.4-4.4-.3.6-.5 1.4-.5 2.2 0 1.5.7 2.8 1.8 3.6-.7 0-1.3-.2-1.9-.5v.1c0 2.1 1.4 3.8 3.3 4.2-.3.1-.7.2-1.1.2-.3 0-.5 0-.8-.1.5 1.7 2 2.9 3.8 3-1.3 1-3.1 1.6-5 1.6-.3 0-.7 0-1-.1C1.8 17.3 4 18 6.3 18 13.8 18 18 11.5 18 5.8v-.6c.8-.5 1.5-1.2 2-2.1\" fill-rule=\"nonzero\"/>'\n },\n\n vk: {\n width: 20,\n height: 18,\n content:\n '<path d=\"M16.517 9.851s2.587-3.768 2.886-5.058c.1-.396-.1-.694-.498-.694h-2.288c-.498 0-.697.199-.896.595 0 0-1.194 2.678-2.686 4.364-.498.496-.697.694-.995.694-.2 0-.299-.198-.299-.694V4.793c0-.595-.1-.793-.597-.793H7.463c-.2 0-.398.198-.398.397 0 .595.796.694.796 2.28v3.174c0 .595 0 .893-.299.893-.796 0-2.686-2.777-3.681-5.851-.2-.595-.398-.794-.995-.794H.597C.299 4.1 0 4.298 0 4.694c0 .595.697 3.471 3.483 7.34C5.373 14.611 7.86 16 10.05 16c1.393 0 1.691-.198 1.691-.793v-1.984c0-.496.2-.694.498-.694s.895.1 2.189 1.388C15.92 15.405 16.02 16 16.915 16h2.587c.299 0 .498-.1.498-.595 0-.595-.796-1.587-1.89-2.876-.498-.595-1.195-1.29-1.493-1.686-.398-.397-.299-.595-.1-.992\" fill-rule=\"nonzero\"/>'\n },\n\n ok: {\n width: 9,\n height: 18,\n content:\n '<path d=\"M4.5 2c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4m0 5.7c-.9 0-1.6-.8-1.6-1.7 0-.9.7-1.6 1.6-1.6.9 0 1.7.7 1.7 1.7 0 .8-.8 1.6-1.7 1.6\" fill-rule=\"nonzero\"/> <path d=\"M6.127 12.982a9.194 9.194 0 0 0 2.307-.904c.602-.301.703-1.004.402-1.507-.301-.502-1.104-.703-1.605-.401-1.605 1.004-3.812 1.004-5.417 0-.502-.302-1.304-.201-1.605.3-.401.604-.2 1.206.401 1.608a9.194 9.194 0 0 0 2.307.904L.61 15.092c-.502.401-.502 1.104 0 1.607a1.357 1.357 0 0 0 1.705 0l2.207-2.11L6.73 16.7a1.357 1.357 0 0 0 1.705 0c.502-.402.502-1.105 0-1.608l-2.307-2.109\" fill-rule=\"nonzero\"/>'\n },\n\n tg: {\n width: 18,\n height: 18,\n content:\n '<path d=\"M9 18c-5 0-9-4-9-9s4-9 9-9 9 4 9 9-4 9-9 9zm-1.5-7.4c1.1 1 2 3.3 2 3.3.4.2.7.1.8-.4l2.1-7.4c.1-.6-.2-.8-.6-.7L4 8.3c-.6.2-.6.5-.1.7 0 .1 2.4.6 3.6 1.6z\" fill-rule=\"nonzero\"/>'\n },\n\n meduzaSymbol: {\n width: 24,\n height: 18,\n content:\n '<path d=\"M10.026233,17.0968697 L13.9737671,18.3530831 L13.9737671,10.9855851 L13.9737671,8.48948164 L16.5131165,8.48948164 L16.5131165,17.0968697 L20.4375656,18.3530831 L23,14.8636014 L20.4606507,14.8636014 L20.4606507,6.37252945 L16.5362015,5 L13.9737671,8.02421743 L13.9737671,6.37252945 L10.049318,5 L7.48688354,8.02421743 L7.48688354,6.37252945 L3.56243443,5 L1,8.48948164 L3.53934943,8.48948164 L3.53934943,17.0968697 L7.48688354,18.3530831 L7.48688354,8.48948164 L10.026233,8.48948164 L10.026233,17.0968697 Z\" />'\n },\n\n backward: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M13 0v2.01c6.672.263 12 5.754 12 12.49C25 21.404 19.404 27 12.5 27S0 21.404 0 14.5c0-3.493 1.441-6.758 3.936-9.105a.75.75 0 111.028 1.092A10.965 10.965 0 001.5 14.5c0 6.075 4.925 11 11 11s11-4.925 11-11c0-5.907-4.656-10.727-10.499-10.989L13 6 8 3l5-3zm3.295 11.33v1.25h-3.16v1.63c.32-.32.86-.56 1.47-.56 1.13 0 2.14.81 2.14 2.16 0 1.42-1.06 2.31-2.67 2.31-1.16 0-2-.38-2.57-1l.79-.99c.45.47 1.07.73 1.77.73.79 0 1.24-.45 1.24-.99 0-.59-.44-.99-1.2-.99-.55 0-1 .16-1.4.54l-.99-.26v-3.83h4.58zm-5.94 0V18h-1.42v-4.84l-1.11 1.13-.81-.85 2.1-2.11h1.24z\" fill-rule=\"nonzero\"/>'\n },\n\n forward: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M12 0l5 3-5 3V3.511C6.157 3.773 1.5 8.592 1.5 14.5c0 6.075 4.925 11 11 11s11-4.925 11-11c0-3.075-1.267-5.946-3.464-8.013a.75.75 0 011.028-1.092A12.465 12.465 0 0125 14.5C25 21.404 19.404 27 12.5 27S0 21.404 0 14.5C0 7.764 5.328 2.272 12 2.01V0zm4.295 11.33v1.25h-3.16v1.63c.32-.32.86-.56 1.47-.56 1.13 0 2.14.81 2.14 2.16 0 1.42-1.06 2.31-2.67 2.31-1.16 0-2-.38-2.57-1l.79-.99c.45.47 1.07.73 1.77.73.79 0 1.24-.45 1.24-.99 0-.59-.44-.99-1.2-.99-.55 0-1 .16-1.4.54l-.99-.26v-3.83h4.58zm-5.94 0V18h-1.42v-4.84l-1.11 1.13-.81-.85 2.1-2.11h1.24z\" fill-rule=\"nonzero\"/>'\n },\n\n download: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M12.5 2C19.404 2 25 7.596 25 14.5S19.404 27 12.5 27 0 21.404 0 14.5 5.596 2 12.5 2zm0 1.5c-6.075 0-11 4.925-11 11s4.925 11 11 11 11-4.925 11-11-4.925-11-11-11zm6 15.75a.75.75 0 01.102 1.493l-.102.007h-12a.75.75 0 01-.102-1.493l.102-.007h12zm-6-12a.75.75 0 01.743.648L13.25 8v7.598l1.834-1.222a.75.75 0 11.832 1.248l-3 2a.75.75 0 01-.832 0l-3-2a.75.75 0 11.832-1.248l1.834 1.223V8a.75.75 0 01.648-.743l.102-.007z\" fill-rule=\"nonzero\" fill=\"currentColor\" />'\n },\n\n play: {\n width: 62,\n height: 62,\n content:\n '<path d=\"M24.35 41.772a.5.5 0 0 1-.739-.439V20.667a.5.5 0 0 1 .74-.44l18.944 10.334a.5.5 0 0 1 0 .878L24.351 41.772z\" fill-rule=\"nonzero\"/>'\n },\n\n pause: {\n width: 22,\n height: 22,\n content:\n '<path d=\"M12.832 4h2.8c.276 0 .5.224.5.5v12.394c0 .277-.224.5-.5.5h-2.8c-.276 0-.5-.223-.5-.5V4.5c0-.276.224-.5.5-.5zM6.5 4h2.8c.277 0 .5.224.5.5v12.394c0 .277-.223.5-.5.5H6.5c-.276 0-.5-.223-.5-.5V4.5c0-.276.224-.5.5-.5z\" />'\n },\n\n speedHalf: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M7.212 15.198V12.29l-.676.724L6 12.406 7.35 11h.825v4.198h-.963zM8.056 18H7.3l4.23-7h.765l-4.24 7zm2.99 0v-.735c1.717-1.27 2.134-1.679 2.134-2.14 0-.389-.288-.578-.665-.578-.467 0-.884.263-1.083.525l-.496-.64c.417-.493 1.053-.693 1.599-.693.913 0 1.599.462 1.599 1.312 0 .682-.556 1.28-1.708 2.14h1.737V18h-3.118zm5.998-2.918l-1.39 1.48-.567-.577 1.4-1.49-1.4-1.48.566-.588 1.39 1.49 1.4-1.49.557.588-1.4 1.48 1.4 1.49-.556.577-1.4-1.48z\" /><path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" />'\n },\n\n speedOne: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M9.955 18v-4.84l-1.11 1.13-.81-.85 2.1-2.11h1.24V18h-1.42zm4.6-2.78l-1.4 1.41-.57-.55 1.41-1.42-1.41-1.41.57-.56 1.4 1.42 1.41-1.42.56.56-1.41 1.41 1.41 1.42-.56.55-1.41-1.41z\" fill-rule=\"nonzero\"/><path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" fill-rule=\"nonzero\"/>'\n },\n\n speedOneHalf: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M5.62 18v-4.84l-1.11 1.13-.81-.85 2.1-2.11h1.24V18H5.62zm3.37-2.67v-2.77l-.68.69-.54-.58 1.36-1.34h.83v4h-.97zM9.84 18h-.76l4.26-6.67h.77L9.84 18zm3.01 0v-.7c1.73-1.21 2.15-1.6 2.15-2.04 0-.37-.29-.55-.67-.55-.47 0-.89.25-1.09.5l-.5-.61c.42-.47 1.06-.66 1.61-.66.92 0 1.61.44 1.61 1.25 0 .65-.56 1.22-1.72 2.04h1.75V18h-3.14zm6.04-2.78l-1.4 1.41-.57-.55 1.41-1.42-1.41-1.41.57-.56 1.4 1.42 1.41-1.42.56.56-1.41 1.41 1.41 1.42-.56.55-1.41-1.41z\" fill-rule=\"nonzero\"/><path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" fill-rule=\"nonzero\"/>'\n },\n\n speedTwo: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M7.147 18v-1.158c2.685-2.078 3.471-2.792 3.471-3.64 0-.6-.52-.9-1.061-.9-.748 0-1.318.311-1.76.797L7 12.127C7.64 11.352 8.613 11 9.527 11c1.396 0 2.507.827 2.507 2.202 0 1.18-.924 2.203-2.625 3.506h2.675V18H7.147zm7.916-2.874l-1.377 1.457-.56-.568 1.386-1.468-1.386-1.458.56-.58 1.377 1.469 1.386-1.468.551.579-1.386 1.458L17 16.015l-.55.568-1.387-1.457z\" fill-rule=\"nonzero\"/><path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" fill-rule=\"nonzero\"/>'\n },\n\n podcastBookmark: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" /> <path d=\"M17.071 8.25H8a.75.75 0 00-.75.75v11.545l.007.104a.75.75 0 001.228.468l4.05-3.437 4.051 3.437a.75.75 0 001.235-.572V9a.75.75 0 00-.75-.75zm-.75 1.499v9.176l-3.3-2.8-.098-.07a.75.75 0 00-.873.07l-3.3 2.799V9.749h7.571z\" data-stroke=\"true\" /> <path d=\"M17.071 8.25H8a.75.75 0 00-.75.75v11.545l.007.104a.75.75 0 001.228.468l4.05-3.437 4.051 3.437a.75.75 0 001.235-.572V9a.75.75 0 00-.75-.75z\" data-fill=\"true\" />'\n },\n\n reaction: {\n width: 16,\n height: 16,\n content:\n '<path data-theme=\"light\" fill=\"#D09959\" d=\"M1 2h14v12H1z\"/> <path d=\"M0 1.778C0 .8.8 0 1.778 0h12.444C15.2 0 16 .8 16 1.778v12.444C16 15.2 15.2 16 14.222 16H1.778C.8 16 0 15.2 0 14.222V1.778zM6.8 11.7l2.5.8V6.2h1.6v5.5l2.5.8 1.6-2.3h-1.6V4.8L10.9 4 9.3 5.9V4.8L6.8 4 5.1 5.9V4.8L2.6 4 1 6.2h1.6v5.5l2.5.8V6.2h1.7v5.5z\" />'\n },\n\n cross: {\n width: 18,\n height: 18,\n content:\n '<path fill=\"none\" fill-rule=\"evenodd\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" vector-effect=\"non-scaling-stroke\" d=\"M2 2l14 14M16 2L2 16\" />'\n },\n\n link: {\n width: 24,\n height: 24,\n content:\n '<path d=\"M9.158 18.928c-1.065 0-2.13-.405-2.94-1.215-1.624-1.623-1.624-4.262 0-5.884l.643-.645c.327-.326.854-.326 1.18 0 .325.326.325.853 0 1.178l-.645.645c-.972.972-.972 2.554 0 3.526.973.972 2.554.973 3.526 0l2.842-2.84c.97-.972.97-2.555 0-3.527-.325-.325-.325-.854 0-1.18.325-.324.853-.324 1.178 0 1.623 1.625 1.623 4.264 0 5.885l-2.84 2.84c-.81.81-1.877 1.216-2.942 1.216\" /> <path d=\"M10.578 14.184c-.213 0-.426-.082-.59-.244-.784-.785-1.217-1.83-1.217-2.94 0-1.113.433-2.158 1.22-2.944l2.84-2.84c1.622-1.62 4.26-1.62 5.883 0 1.622 1.623 1.622 4.262 0 5.883l-.645.643c-.325.326-.852.326-1.178 0-.325-.325-.325-.852 0-1.178l.645-.644c.972-.97.972-2.554 0-3.526s-2.556-.972-3.527 0l-2.84 2.842c-.47.47-.73 1.096-.73 1.762 0 .667.26 1.293.73 1.763.325.327.325.854 0 1.18-.163.162-.376.244-.59.244\" />'\n },\n\n search: {\n width: 16,\n height: 16,\n content:\n '<g transform=\"translate(2 1)\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" vector-effect=\"non-scaling-stroke\"><circle cx=\"5.5\" cy=\"5.5\" r=\"5.5\"/><path d=\"M11.37 13.442l-.995-1.272\"/></g>'\n },\n\n card: {\n width: 15,\n height: 15,\n content:\n '<path d=\"M9 5.5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5H4a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h5zm-.5 1h-4v4h4v-4zm2.5-3a.5.5 0 0 1 .5.5v5a.5.5 0 1 1-1 0V4.5H6a.5.5 0 0 1 0-1h5z\" fill-rule=\"nonzero\"/>'\n },\n\n podcast: {\n width: 15,\n height: 15,\n content:\n '<path d=\"M5.252 11.432A.5.5 0 0 1 4.5 11V4a.5.5 0 0 1 .752-.432l6 3.5a.5.5 0 0 1 0 .864l-6 3.5zm.248-1.303L10.008 7.5 5.5 4.87v5.26z\" fill-rule=\"nonzero\" />'\n },\n\n arrow: {\n width: 12,\n height: 12,\n content:\n '<path d=\"M3 7l3 3.5L9 7M6 10V1\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.2\" vector-effect=\"non-scaling-stroke\" />'\n },\n\n brent: {\n width: 9,\n height: 12,\n content:\n '<g fill=\"#999\" fill-rule=\"nonzero\"><path d=\"M4.332 0l.528.606c2.528 2.902 3.804 5.07 3.804 6.634A4.332 4.332 0 110 7.24C0 5.676 1.276 3.508 3.804.606L4.332 0zm0 2.143l-.176.212C2.313 4.589 1.4 6.248 1.4 7.24a2.932 2.932 0 105.864 0c0-.992-.914-2.651-2.756-4.885l-.176-.212z\"/><path d=\"M2.973 7.475c0 .415.417.863.835.924l.097.008v.7c-.79 0-1.548-.716-1.626-1.5l-.006-.132h.7z\"/></g> '\n },\n\n user: {\n width: 16,\n height: 16,\n content:\n '<path fill=\"currentColor\" fill-rule=\"nonzero\" d=\"M8 1a4.25 4.25 0 012.676 7.552 6.751 6.751 0 014.074 6.198.75.75 0 11-1.5 0 5.25 5.25 0 00-10.5 0 .75.75 0 11-1.5 0 6.752 6.752 0 014.074-6.199A4.25 4.25 0 018 1zm0 1.5A2.75 2.75 0 108 8a2.75 2.75 0 000-5.5z\" />'\n },\n\n bookmark: {\n width: 17,\n height: 21,\n content:\n '<path d=\"M16 20l-7.5-6.333L1 20V1h15z\" stroke=\"currentColor\" fill-rule=\"evenodd\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>'\n },\n\n shareBookmark: {\n width: 11,\n height: 15,\n content:\n '<path clip-rule=\"evenodd\" d=\"M10 14 5.5 9.667 1 14V1h9v13Z\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>'\n },\n\n receipt: {\n width: 10,\n height: 13,\n content:\n '<g fill=\"currentColor\" fill-rule=\"nonzero\"><path d=\"M10 0H0v13l2-1.74 1.5 1.305L5 11.26l1.5 1.305L8 11.26 10 13V0zM9 .997v9.81l-1-.87-1.5 1.304L5 9.937 3.5 11.24 2 9.937l-1 .87V.996h8z\"/><path d=\"M7 3v1H3V3zM7 6v1H3V6z\"/></g>'\n },\n\n read: {\n width: 15,\n height: 15,\n content:\n '<g fill=\"none\" fill-rule=\"evenodd\"><path opacity=\".98\" d=\"M0 0h15v15H0z\"/><path d=\"M13.085 1.694a.513.513 0 01.855.56l-.051.077-3.163 3.975a.514.514 0 01-.73.075l-.068-.069-1.812-2.208a.512.512 0 01.729-.716l.065.066 1.409 1.718 2.766-3.478z\" fill=\"#6EAC65\" fill-rule=\"nonzero\"/><path d=\"M6.454 12.997l-.06-.01-.078-.023a.49.49 0 01-.266-.24l.011.015a2.349 2.349 0 00-.535-.607c-.89-.745-2.117-.917-3.813-.12a.5.5 0 01-.706-.37L1 11.558V4.568a.5.5 0 01.287-.453c2.053-.963 3.695-.733 4.88.26.327.272.556.548.698.77l.084.144.018.04.022.076.01.071L7 11.233l.126-.09c.95-.656 2.16-.857 3.608-.417l.266.087v-2.81a.5.5 0 01.41-.491l.09-.008a.5.5 0 01.492.41l.008.09v3.555a.5.5 0 01-.713.452c-1.696-.796-2.922-.624-3.813.12a2.533 2.533 0 00-.497.544l-.038.064a.486.486 0 01-.485.258zm-4.29-8.17L2 4.892v5.92c1.637-.572 2.977-.348 4 .42l.002-5.58a2.605 2.605 0 00-.476-.513c-.81-.677-1.897-.88-3.362-.314z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></g>'\n },\n listened: {\n width: 15,\n height: 15,\n content:\n '<g fill-rule=\"nonzero\"><path d=\"M4.978 4.354a.5.5 0 01-.332.624c-1.197.367-2.064 1.527-2.14 2.897l-.005.167a.749.749 0 01.999.708v3a.75.75 0 01-1.458.248L2 12a1 1 0 01-1-1v-1a1 1 0 01.5-.866V8.072c0-1.886 1.172-3.535 2.854-4.05a.5.5 0 01.624.332zM10 7a.5.5 0 01.492.41l.008.09.001 1.634a1 1 0 01.492.745L11 10v1a1 1 0 01-.883.993L10 12l-.042-.002a.75.75 0 01-1.451-.146L8.5 11.75v-3a.75.75 0 011.001-.707L9.5 7.5l.008-.09A.5.5 0 0110 7z\" fill=\"currentColor\" /><path d=\"M11.585 1.194a.513.513 0 01.855.56l-.051.077-3.163 3.975a.514.514 0 01-.73.075l-.068-.069-1.812-2.208a.512.512 0 01.729-.716l.065.066 1.409 1.718 2.766-3.478z\" fill=\"#6EAC65\" /></g>'\n },\n magic: {\n width: 15,\n height: 15,\n content:\n '<g fill-rule=\"evenodd\" clip-rule=\"evenodd\"> <path d=\"M7.804.4a.6.6 0 0 1 .6.6v2.035a.6.6 0 0 1-1.2 0V1a.6.6 0 0 1 .6-.6ZM7.804 10.577a.6.6 0 0 1 .6.6v2.035a.6.6 0 1 1-1.2 0v-2.035a.6.6 0 0 1 .6-.6ZM14.636 7.106a.6.6 0 0 1-.6.6h-2.078a.6.6 0 1 1 0-1.2h2.078a.6.6 0 0 1 .6.6ZM4.25 7.106a.6.6 0 0 1-.6.6H1.573a.6.6 0 0 1 0-1.2H3.65a.6.6 0 0 1 .6.6ZM12.639 2.37a.585.585 0 0 1 0 .84l-1.442 1.412a.615.615 0 0 1-.857 0 .585.585 0 0 1 0-.84l1.442-1.412a.615.615 0 0 1 .857 0ZM12.639 11.843a.615.615 0 0 1-.857 0L10.34 10.43a.585.585 0 0 1 0-.84.615.615 0 0 1 .857 0l1.442 1.413a.585.585 0 0 1 0 .84ZM5.269 4.621a.615.615 0 0 1-.858 0L2.97 3.208a.585.585 0 0 1 0-.84.615.615 0 0 1 .858 0l1.442 1.413a.585.585 0 0 1 0 .84ZM8.926 6.074a.6.6 0 0 1 0 .849l-.863.863-.849-.849.863-.863a.6.6 0 0 1 .849 0ZM7.348 8.5l-5.924 5.924a.6.6 0 1 1-.848-.848L6.5 7.652l.848.848Z\"/> </g>'\n }\n}\n","import React from 'react'\nimport { SvgSymbolProps } from './SvgSymbol.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport { icons } from './icons'\n\nimport styles from './SvgSymbol.module.css'\n\nexport const SvgSymbol: React.FC<SvgSymbolProps> = ({\n icon,\n size,\n styleContext\n}) => {\n const data = icons[icon]\n\n return (\n <svg\n data-testid=\"svg-symbol\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n className={makeClassName([\n [styles.root, true],\n [styles[size], !!styles[size]],\n [styles[icon], !!styles[icon]],\n [styles[styleContext], !!styles[styleContext]]\n ])}\n width={data.width}\n height={data.height}\n viewBox={`0 0 ${data.width} ${data.height}`}\n dangerouslySetInnerHTML={{ __html: data.content }}\n />\n )\n}\n","import React from 'react'\nimport { SwitcherProps } from './Switcher.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport styles from './Switcher.module.css'\n\nexport const Switcher: React.FC<SwitcherProps> = ({\n enabled,\n children,\n childrenPosition = 'left',\n onChange,\n styleContext,\n theme = 'light'\n}) => (\n <label\n data-testid=\"switcher\"\n className={makeClassName([\n [styles.root, true],\n [styles[theme], !!styles[theme]],\n [styles[styleContext], !!styles[styleContext]]\n ])}\n >\n {children && childrenPosition === 'left' && (\n <div\n className={makeClassName([\n [styles.children, true],\n [styles.left, true]\n ])}\n >\n {children}\n </div>\n )}\n <input\n className={styles.input}\n type=\"checkbox\"\n checked={enabled}\n onChange={onChange}\n />\n <span className={styles.control}>\n <span className={styles.knob} />\n </span>\n {children && childrenPosition === 'right' && (\n <div\n className={makeClassName([\n [styles.children, true],\n [styles.right, true]\n ])}\n >\n {children}\n </div>\n )}\n </label>\n)\n","import { ClassNames } from './makeClassName'\n\nconst makeStyleContext = (\n classNames: ClassNames,\n styleContext: string[] | string,\n styles: Record<string, string>\n): ClassNames => {\n const context = Array.isArray(styleContext)\n ? styleContext\n .filter((ctx) => styles[ctx])\n .map((ctx) => [[styles[ctx]], true])\n : [[styles[styleContext], !!styleContext && !!styles[styleContext]]]\n\n return classNames.concat(context)\n}\n\nexport default makeStyleContext\n","import React from 'react'\n\nconst BlockContext = React.createContext({ lightBox: null })\n\nexport const BlockProvider = BlockContext.Provider\n\nexport default BlockContext\n","const POST_MESSAGE_PREFIX = 'mdzKitMsg'\n\nconst postMessage = (\n category: string,\n element: string,\n action: string\n): void => {\n const target = window.top\n\n const msg = `${POST_MESSAGE_PREFIX}=${JSON.stringify({\n category,\n element,\n action\n })}`\n\n if (typeof target !== 'undefined') {\n target.postMessage(msg, '*')\n }\n}\n\nexport default postMessage\n","import React, { useState, useEffect } from 'react'\nimport { useInView } from 'react-intersection-observer'\nimport { makeClassName } from '../utils/makeClassName'\nimport { LazyProps } from './Lazy.types'\n\nimport styles from './Lazy.module.css'\n\nexport const Lazy: React.FC<LazyProps> = ({ children, threshold }) => {\n const [ref, inView, entry] = useInView({\n threshold: threshold || 0\n })\n\n const [visible, setVisible] = useState(false)\n\n useEffect(() => {\n if (entry && entry.boundingClientRect && entry.boundingClientRect.y < 0) {\n setVisible(true)\n }\n }, [entry])\n\n useEffect(() => {\n if (inView) {\n setVisible(true)\n }\n }, [inView])\n\n return (\n <div\n className={makeClassName([\n [styles.root, true],\n [styles.visible, visible]\n ])}\n ref={ref}\n data-testid=\"lazy\"\n >\n {visible && children}\n </div>\n )\n}\n","export const MediaQuerySizes = {\n MOBILE: 512,\n PORTRAIT_TABLET: 768,\n LANDSCAPE_TABLET: 1024,\n DESKTOP: 1010,\n WIDE_DESKTOP: 1200\n}\n\nexport const imageBreakpoints = {\n 325: '(min-width: 0)',\n 520: '(min-width: 325px)',\n 600: '(min-width: 600px)',\n 650: '(min-width: 650px)',\n 980: '(min-width: 1000px)',\n 1335: '(min-width: 1000px)'\n}\n\nexport const imageConditionalKeys = {\n xs: [325],\n superFull: [1335, 650, 520, 325],\n full: [980, 650, 520, 325],\n default: [650, 520, 325],\n narrow: [600, 325]\n}\n\nexport const SocialLabels = {\n ru: {\n tg: 'Телеграм',\n fb: 'Фейсбук',\n tw: 'Твиттер',\n pdf: 'PDF',\n unblock: 'Magic link',\n bookmark: 'В закладки',\n reaction: 'Напишите нам'\n },\n en: {\n tg: 'Telegram',\n fb: 'Fb',\n tw: 'Twitter',\n pdf: 'PDF',\n unblock: 'Magic link',\n bookmark: 'Add to bookmarks'\n }\n}\n","export const toCamel = (s: string): string =>\n s.replace(/([_][a-z])/gi, (str) => str.toUpperCase().replace('_', ''))\n\nexport const toCapitalize = (s: string): string =>\n s[0].toUpperCase() + s.slice(1)\n","import React, { useState, useEffect } from 'react'\nimport { PictureProps } from './Image.types'\nimport { imageBreakpoints, imageConditionalKeys } from '../constants'\nimport { toCamel } from '../utils/converCase'\n\nexport const RenderPicture: React.FC<PictureProps> = ({\n source,\n fallbackSource,\n optimized,\n alt,\n display,\n onLoad\n}) => {\n const [fallback, setFallback] = useState(false)\n\n useEffect(() => {\n setFallback(!window.HTMLPictureElement)\n }, [])\n\n const keys =\n imageConditionalKeys[toCamel(display)] || imageConditionalKeys.default\n\n return (\n <picture>\n {source && (\n <source media=\"(min-width: 325px)\" srcSet={`${source[1]} 2x`} />\n )}\n\n {optimized && !optimized.w325 && (\n <source media=\"(min-width: 0)\" srcSet={`${optimized.original}`} />\n )}\n\n {optimized &&\n keys.map((key) => {\n const breakpoint = optimized[`w${key}`]\n\n if (!breakpoint) {\n return null\n }\n\n return (\n <React.Fragment key={key}>\n <source\n type=\"image/webp\"\n media={imageBreakpoints[key]}\n srcSet={`${breakpoint['2x_webp']} 2x, ${breakpoint['1x_webp']} 1x `}\n />\n\n <source\n type=\"image/png\"\n media={imageBreakpoints[key]}\n srcSet={`${breakpoint['2x']} 2x, ${breakpoint['1x']} 1x `}\n />\n </React.Fragment>\n )\n })}\n\n <img\n src={\n fallback\n ? fallbackSource\n : 'data:image/gif;base64,R0lGODlhAQABAPAAAPLy8gAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=='\n }\n alt={alt}\n onLoad={() => onLoad(true)}\n />\n </picture>\n )\n}\n\nexport default RenderPicture\n","import React, { useContext, useState } from 'react'\nimport { ImageProps } from './Image.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport BlockContext from '../utils/BlockContext'\nimport postMessage from '../utils/postMessage'\nimport { Lazy } from '../Lazy'\nimport RenderPicture from './RenderPicture'\n\nimport styles from './Image.module.css'\n\nexport const Image: React.FC<ImageProps> = ({\n alt,\n display,\n optimized,\n width,\n height,\n source,\n lazy,\n ratio,\n styleContext,\n fullscreen = true\n}) => {\n const { lightBox } = useContext(BlockContext)\n const [isLoaded, setIsLoaded] = useState(lazy ? false : true)\n\n const handleClick = (): void => {\n if (!lightBox || !fullscreen || (optimized && !optimized.original)) {\n return\n }\n\n postMessage('', 'fullscreen_click', 'click')\n lightBox.show(optimized, width, height, alt)\n }\n\n const blockStyles = {\n maxWidth: width <= 649 ? width : '100%'\n }\n\n const pictureStyles = {\n paddingBottom: `${100 / (ratio || width / height)}%`\n }\n\n /* fallback w325 url until w6 was released */\n const fallbackSource =\n (source && source[0]) ||\n (optimized.w325 && optimized.w325['1x']) ||\n optimized.original\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles.isLoaded, isLoaded],\n [\n styles.fullscreen,\n lightBox && optimized && optimized.original && fullscreen\n ]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div\n className={makeClassName(classNames)}\n style={blockStyles}\n data-testid=\"image\"\n >\n <div\n className={styles.wrapper}\n style={pictureStyles}\n onClick={(): void => handleClick()}\n onKeyPress={(): void => handleClick()}\n role=\"button\"\n tabIndex={0}\n >\n {lazy ? (\n <>\n <Lazy threshold={0.25}>\n <RenderPicture\n fallbackSource={fallbackSource}\n source={source}\n optimized={optimized}\n alt={alt}\n display={display}\n onLoad={setIsLoaded}\n />\n </Lazy>\n <noscript>\n <img src={fallbackSource} alt={alt} />\n </noscript>\n </>\n ) : (\n <RenderPicture\n fallbackSource={fallbackSource}\n source={source}\n optimized={optimized}\n alt={alt}\n display={display}\n onLoad={setIsLoaded}\n />\n )}\n </div>\n </div>\n )\n}\n","import React, { useState, useEffect } from 'react'\nimport { PopoverProps } from './Popover.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport styles from './Popover.module.css'\n\nexport const Popover: React.FC<PopoverProps> = ({ children, onClose }) => {\n const [visible, setVisible] = useState(true)\n\n const handleClose = (): void => {\n setVisible(false)\n setTimeout(onClose, 350)\n }\n\n const handleScroll = (): void => {\n handleClose()\n }\n\n const escFunction = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n handleClose()\n }\n }\n\n useEffect(() => {\n document.body.dataset.popover = 'true'\n\n window.addEventListener('keydown', escFunction, false)\n window.addEventListener('scroll', handleScroll, false)\n\n return () => {\n document.body.removeAttribute('data-popover')\n\n window.removeEventListener('keydown', escFunction, false)\n window.removeEventListener('scroll', handleScroll, false)\n }\n }, [visible])\n\n /* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\n return (\n <div\n data-testid=\"popover\"\n className={makeClassName([\n [styles.root, true],\n [styles.visible, visible]\n ])}\n >\n <div className={styles.overlay} onClick={(): void => handleClose()} />\n\n <div className={styles.container}>\n <button\n type=\"button\"\n className={styles.dismiss}\n onClick={(): void => handleClose()}\n aria-label=\"dismiss\"\n />\n <svg width=\"100%\" className={styles.background}>\n <defs>\n <mask id=\"myMask\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">\n <rect fill=\"white\" y=\"0\" width=\"100%\" height=\"100%\" x=\"0\" />\n <svg x=\"50%\" overflow=\"visible\">\n <g transform=\"translate(-12 0)\">\n <path d=\"M4.61852778e-14,9.76996262e-15 L9.84597532,5.80270273 C11.0992017,6.54128882 12.6546044,6.54128882 13.9078308,5.80270273 L23.7538061,9.76996262e-15 L4.61852778e-14,9.76996262e-15 Z\" />\n </g>\n </svg>\n </mask>\n </defs>\n <rect\n fill=\"#F7F7F7\"\n id=\"base-mask\"\n mask=\"url(#myMask)\"\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n />\n </svg>\n <div className={styles.body}>{children}</div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { FootnoteProps } from './Footnote.types'\nimport makeClassName from '../utils/makeClassName'\n\nimport { SvgSymbol } from '../SvgSymbol'\n\nimport styles from './Footnote.module.css'\n\nexport const Footnote: React.FC<FootnoteProps> = ({ children, onClose }) => {\n return (\n <div\n data-testid=\"footnote\"\n className={makeClassName([[styles.root, true]])}\n >\n <button\n className={styles.dismiss}\n type=\"button\"\n onClick={(): void => onClose()}\n >\n <SvgSymbol icon=\"cross\" size=\"unset\" />\n </button>\n\n <div className={styles.body}>{children}</div>\n </div>\n )\n}\n","type viewportSize = {\n width: number\n height: number\n}\n\nexport default (): viewportSize => ({\n width:\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth,\n height:\n window.innerHeight ||\n document.documentElement.clientHeight ||\n document.body.clientHeight\n})\n","import React, { useState, useEffect, useRef } from 'react'\nimport { useInView } from 'react-intersection-observer'\n\nimport { PopoverData, DotsOnImageProps, SingleDot } from './DotsOnImage.types'\n\nimport { Image } from '../Image'\nimport { Popover } from '../Popover'\nimport { Footnote } from '../Footnote'\n\nimport viewportSize from '../utils/viewportSize'\nimport { MediaQuerySizes } from '../constants'\n\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './DotsOnImage.module.css'\n\nexport const DotsOnImage: React.FC<DotsOnImageProps> = ({\n block: { optimized, width, height, credit, display, dots }\n}) => {\n const [ratio, setRatio] = useState(1)\n const [ref, inView, entry] = useInView()\n\n const container = useRef(null)\n\n const [popover, setPopover] = useState<PopoverData>({\n title: null,\n body: null,\n show: false,\n id: null\n })\n\n const [visible, setVisible] = useState(false)\n const defaultWidth = 375\n\n useEffect(() => {\n if (entry && entry.boundingClientRect && entry.boundingClientRect.y < 0) {\n setVisible(true)\n }\n }, [entry])\n\n useEffect(() => {\n if (inView) {\n setVisible(true)\n }\n }, [inView])\n\n useEffect(() => {\n if (popover.id) {\n document.addEventListener('click', handleClickOutside)\n } else {\n document.removeEventListener('click', handleClickOutside)\n }\n\n return () => document.removeEventListener('click', handleClickOutside)\n }, [popover])\n\n useEffect(() => {\n setDotSize()\n window.addEventListener('resize', setDotSize)\n\n return () => document.removeEventListener('resize', setDotSize)\n }, [visible])\n\n const setDotSize = () => {\n const width = window.innerWidth\n\n if (width < defaultWidth) {\n const ratio = width / defaultWidth\n setRatio(ratio)\n } else {\n setRatio(1)\n }\n }\n\n const handleClickOutside = (event: MouseEvent): void => {\n const path = event.composedPath()\n\n if (path.indexOf(container.current) === -1) {\n setPopover({ show: false })\n }\n }\n\n const handleDotClick = (dot: SingleDot): void => {\n const shouldShow = dot.id !== popover.id\n const side = dot.position.x > 50 ? 'isLeft' : 'isRight'\n const align = dot.position.y > 50 ? 'isBottom' : 'isTop'\n\n const style = { top: `${dot.position.y}%`, left: `${dot.position.x}%` }\n\n setPopover({\n title: dot.title,\n body: dot.body,\n show: shouldShow,\n id: shouldShow ? dot.id : null,\n style,\n side,\n align\n })\n }\n\n return (\n <div\n className={makeClassName([\n [styles.root, true],\n [styles.isVisible, visible]\n ])}\n data-testid=\"dots-on-image\"\n ref={ref}\n >\n <Image\n fullscreen={false}\n optimized={optimized}\n width={width}\n height={height}\n alt={credit}\n display={display}\n />\n\n <div ref={container}>\n {dots.map((dot) => (\n <div\n className={styles.dot}\n key={dot.id}\n style={{\n top: `${dot.position.y}%`,\n left: `${dot.position.x}%`,\n transform: `scale(${ratio}) translate(-${50 / ratio}%, -${\n 50 / ratio\n }%)`\n }}\n >\n <button\n className={makeClassName([\n [styles.marker, true],\n [styles.isActive, dot.id === popover.id]\n ])}\n type=\"button\"\n style={{\n backgroundColor: dot.icon.color\n }}\n onClick={(): void => handleDotClick(dot)}\n >\n {dot.icon.type === 'svg' && (\n <div\n dangerouslySetInnerHTML={{ __html: dot.icon.svg_string }}\n />\n )}\n {dot.icon.type === 'number' && dot.icon.number}\n </button>\n </div>\n ))}\n\n {popover.show && (\n <>\n {viewportSize().width >= MediaQuerySizes.LANDSCAPE_TABLET ? (\n <div\n className={makeClassName([\n [styles.popover, true],\n [styles[popover.side], !!popover.side],\n [styles[popover.align], !!popover.align]\n ])}\n style={popover.style}\n >\n <Footnote\n onClose={(): void => {\n setPopover({ show: false })\n }}\n >\n {popover.title && <h3>{popover.title}</h3>}\n <div dangerouslySetInnerHTML={{ __html: popover.body }} />\n </Footnote>\n </div>\n ) : (\n <Popover\n onClose={(): void => {\n setPopover({ show: false })\n }}\n >\n {popover.title && <h3>{popover.title}</h3>}\n <div dangerouslySetInnerHTML={{ __html: popover.body }} />\n </Popover>\n )}\n </>\n )}\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { TagProps } from './Tag.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport styles from './Tag.module.css'\n\nexport const Tag: React.FC<TagProps> = ({\n children,\n size = 'small',\n theme = 'gold',\n styleContext,\n correlation,\n onlyOn\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[size], !!size && !!styles[size]],\n [styles[theme], !!theme && !!styles[theme]],\n [styles[onlyOn], !!onlyOn && !!styles[onlyOn]],\n [styles[correlation], !!correlation && !!styles[correlation]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"tag\" className={makeClassName(classNames)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { MediaCaptionProps } from './MediaCaption.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport styles from './MediaCaption.module.css'\n\nexport const MediaCaption: React.FC<MediaCaptionProps> = ({\n credit,\n caption,\n styleContext\n}) => {\n let classNames: ClassNames = [[styles.root, true]]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"media-caption\" className={makeClassName(classNames)}>\n {caption && (\n <div\n className={styles.caption}\n dangerouslySetInnerHTML={{ __html: caption }}\n />\n )}\n {credit && (\n <div\n className={styles.credit}\n dangerouslySetInnerHTML={{ __html: credit }}\n />\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { TableProps } from './Table.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport { MediaCaption } from '../MediaCaption'\n\nimport styles from './Table.module.css'\n\nexport const Table: React.FC<TableProps> = ({\n styleContext,\n block: {\n rows,\n options,\n display,\n columns_widths: columnsWidth,\n table_credit: tableCredit\n }\n}) => {\n const colors = {\n '#ffffff': 'white',\n '#f5f5f5': 'gray',\n '#feeeee': 'pink',\n '#e6f3ff': 'blue',\n '#fffde6': 'yellow',\n '#fff9f2': 'orange',\n '#e7f2ef': 'green',\n '#f4f0f8': 'violet'\n }\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[display], !!display && !!styles[display]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"table\" className={makeClassName(classNames)}>\n <div className={styles.wrapper}>\n <div className={styles.table}>\n <div className={styles.tracks}>\n {rows.map((row, i) => {\n return (\n <div key={row.key} className={styles.row}>\n {row.cells.map((cell, j) => (\n <div\n key={cell.key}\n className={makeClassName([\n [styles.cell, true],\n [styles.header, options.header && i === 0],\n [styles[colors[cell.color]], true],\n [styles[columnsWidth[j]], true],\n [\n styles.fixedColumn,\n options.fixed_first_column && j === 0\n ]\n ])}\n dangerouslySetInnerHTML={{ __html: cell.val }}\n />\n ))}\n </div>\n )\n })}\n </div>\n </div>\n </div>\n\n {tableCredit && (\n <MediaCaption credit={tableCredit} styleContext={styleContext} />\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { MaterialNoteProps } from './MaterialNote.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport styles from './MaterialNote.module.css'\n\nexport const MaterialNote: React.FC<MaterialNoteProps> = ({\n block: { data },\n styleContext\n}) => {\n let classNames: ClassNames = [[styles.root, true]]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <>\n <div data-testid=\"material-note\" className={makeClassName(classNames)}>\n {data &&\n data.map((item) => (\n <p\n className={styles[item.type]}\n key={item.id}\n dangerouslySetInnerHTML={{ __html: item.data }}\n />\n ))}\n </div>\n </>\n )\n}\n","import React from 'react'\nimport { BookmarkButtonProps } from './BookmarkButton.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { SvgSymbol } from '../SvgSymbol'\nimport styles from './BookmarkButton.module.css'\n\nexport const BookmarkButton: React.FC<BookmarkButtonProps> = ({\n styleContext,\n theme,\n isInBookmarks,\n onClick\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles.isInBookmarks, isInBookmarks],\n [styles[theme], !!theme && !!styles[theme]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"bookmark-button\" className={makeClassName(classNames)}>\n <button\n className={styles.control}\n onClick={(): void => onClick()}\n type=\"button\"\n >\n <SvgSymbol icon=\"bookmark\" size=\"unset\" />\n </button>\n </div>\n )\n}\n","import React from 'react'\nimport { MetaProps } from './Meta.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport styles from './Meta.module.css'\n\nexport const Meta: React.FC<MetaProps> = ({\n hasSource,\n theme,\n children,\n onlyOn,\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[theme], !!theme && !!styles[theme]],\n [styles[onlyOn], !!onlyOn],\n [styles.hasSource, hasSource]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"meta\" className={makeClassName(classNames)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { TimestampProps } from './Timestamp.types'\nimport dayjs from 'dayjs'\nimport 'dayjs/locale/ru'\nimport relativeTime from 'dayjs/plugin/relativeTime'\n\nimport styles from './Timestamp.module.css'\n\nexport const Timestamp: React.FC<TimestampProps> = ({\n publishedAt,\n locale = 'ru',\n type\n}) => {\n let published\n const timeFormat =\n locale === 'ru' ? 'HH:mm, D MMMM YYYY' : 'h:mm a, MMMM D, YYYY'\n\n const preparedPublishedAt = publishedAt * 1000\n\n dayjs.locale(locale)\n dayjs.extend(relativeTime)\n\n if (type === 'fromNow') {\n published = dayjs(preparedPublishedAt).fromNow()\n } else if (type === 'format') {\n published = dayjs(preparedPublishedAt).format('HH:mm')\n } else if (type === 'date') {\n published = dayjs(preparedPublishedAt).format(timeFormat)\n } else {\n throw new Error('Unknown time type')\n }\n\n return (\n <time\n suppressHydrationWarning={true}\n data-testid=\"timestamp\"\n className={styles.root}\n >\n {published}\n </time>\n )\n}\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\n\ntype DangerousHtmlProps = {\n className?: string\n html: string\n tagName?: keyof JSX.IntrinsicElements\n}\n\nconst DangerousHTML: React.FC<DangerousHtmlProps> = ({\n className = '',\n tagName: TagName = 'div',\n html\n}) => {\n const element = useRef<HTMLDivElement>(null)\n const [canRenderHtml, setCanRenderHtml] = useState(false)\n\n useEffect(() => {\n setCanRenderHtml(true)\n }, [])\n\n const replaceScriptElementsRecursive = useCallback((node) => {\n if (\n node.tagName === 'SCRIPT' &&\n (!node.id || node.id.indexOf('script-') !== 0)\n ) {\n const script = document.createElement('script')\n\n script.id = `script-${Math.random().toString(16).slice(2)}`\n script.innerHTML = node.innerHTML\n\n const attrs = node.attributes\n\n for (let i = 0; i < attrs.length; i += 1) {\n const { name, value } = attrs[i]\n\n script.setAttribute(name, value)\n }\n\n node.parentElement.replaceChild(script, node)\n } else {\n let i = 0\n const children = node.childNodes\n\n while (i < children.length) {\n replaceScriptElementsRecursive(children[i])\n i += 1\n }\n }\n }, [])\n\n const prepareAnchors = useCallback(() => {\n const anchors = Array.from(element.current.querySelectorAll('a'))\n\n anchors.forEach((a) => {\n a.setAttribute('target', '_blank')\n })\n }, [])\n\n useEffect(() => {\n if (\n canRenderHtml &&\n html.indexOf('script') > -1 &&\n element.current.firstElementChild\n ) {\n element.current.firstElementChild.innerHTML = html\n replaceScriptElementsRecursive(element.current.firstElementChild)\n prepareAnchors()\n }\n }, [\n canRenderHtml,\n element,\n html,\n replaceScriptElementsRecursive,\n prepareAnchors\n ])\n\n return (\n <div ref={element}>\n <TagName\n className={className}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n </div>\n )\n}\n\nexport default DangerousHTML\n","import React, { useState, useEffect, useRef } from 'react'\nimport viewportSize from '../utils/viewportSize'\nimport { MediaQuerySizes } from '../constants'\nimport { EmbedGifProps } from './EmbedBlock.types'\n\nimport styles from './EmbedBlock.module.css'\n\nexport const EmbedGif: React.FC<EmbedGifProps> = ({ gif, mp4Url, style }) => {\n const [videoFrozen, setVideoFrozen] = useState(false)\n const videoElem = useRef(null)\n\n const handleVideoTouch = (): void => {\n videoElem.current.play()\n setVideoFrozen(false)\n }\n\n const handleVideoError = (): void => {\n const video = videoElem.current\n\n video.setAttribute('poster', video.dataset.gif)\n\n setVideoFrozen(false)\n }\n\n useEffect(() => {\n const video = videoElem.current\n const { width: viewportWidth } = viewportSize()\n\n if (viewportWidth >= MediaQuerySizes.MOBILE) {\n video.setAttribute('autoplay', true)\n video.play()\n } else {\n setVideoFrozen(true)\n video.pause()\n video.addEventListener('touchstart', handleVideoTouch)\n }\n\n video.addEventListener('error', handleVideoError)\n\n return (): void => {\n video.removeEventListener('touchstart', handleVideoTouch)\n video.removeEventListener('error', handleVideoError)\n }\n }, [])\n\n return (\n <div className={styles.figure}>\n <div\n className={styles.objectWrap}\n style={style}\n data-frozen={videoFrozen}\n >\n <video\n playsInline\n muted\n loop\n autoPlay\n preload=\"metadata\"\n data-gif={gif}\n ref={videoElem}\n >\n <source src={`https://meduza.io${mp4Url}`} type=\"video/mp4\" />\n </video>\n </div>\n </div>\n )\n}\n","import React, { useState } from 'react'\nimport { Image } from '../Image'\nimport { Popover } from '../Popover'\nimport { MediaCaption } from '../MediaCaption'\nimport { DotsOnImage } from '../DotsOnImage'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport DangerousHTML from '../utils/DangerousHtml'\nimport { EmbedGif } from './EmbedGif'\nimport { EmbedBlockProps } from './EmbedBlock.types'\n\nimport styles from './EmbedBlock.module.css'\n\nexport const EmbedBlock: React.FC<EmbedBlockProps> = ({\n block,\n block: {\n data,\n data: {\n html,\n display,\n only_on: onlyOn,\n provider,\n cc,\n optimized,\n small_url: small,\n large_url: large,\n gif_url: gifUrl,\n mp4_url: mp4Url\n }\n },\n styleContext,\n children\n}) => {\n const [isPopoverShown, setIsPopoverShown] = useState(false)\n const style: React.CSSProperties = {}\n const isProportional = block.data.height && block.data.width\n\n const fullWidthProviders = [\n 'youtube',\n 'vimeo',\n 'onetv',\n 'coub',\n 'meduza',\n 'facebook_video'\n ]\n\n const mobileFullwidth =\n fullWidthProviders.indexOf(provider) > -1 || block.type === 'dots_on_image'\n\n const renderCC = (context?: string | string[]): JSX.Element => (\n <MediaCaption\n credit={data.credit}\n caption={data.caption}\n styleContext={context || styleContext}\n />\n )\n\n const renderEmbed = (style: React.CSSProperties): JSX.Element => {\n switch (block.type) {\n case 'gif': {\n return <EmbedGif gif={gifUrl} mp4Url={mp4Url} style={style} />\n }\n case 'image': {\n return (\n <div className={styles.figure}>\n <Image\n source={!optimized && [small, large]}\n optimized={block.data.optimized}\n width={block.data.width}\n height={block.data.height}\n alt={block.data.caption}\n display={block.data.display}\n lazy={block.data.lazy}\n styleContext={styleContext}\n />\n </div>\n )\n }\n case 'game_embed': {\n return (\n <div className={styles.gameEmbed}>\n <iframe\n src={block.data.game_src}\n id={block.data.game_id}\n title=\"Game embed\"\n />\n </div>\n )\n }\n case 'dots_on_image': {\n return (\n <div className={styles.figure}>\n <DotsOnImage block={data} />\n </div>\n )\n }\n\n default: {\n return (\n <div className={styles.object}>\n <div className={styles.wrapper} style={style}>\n <DangerousHTML className={styles.objectWrap} html={html} />\n </div>\n </div>\n )\n }\n }\n }\n\n if (isProportional) {\n style.paddingBottom = `${(block.data.height / block.data.width) * 100}%`\n style.height = 0\n }\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles.cc, cc],\n [styles[display], !!display && styles[display]],\n [styles[provider], !!provider && !!styles[provider]],\n [styles[onlyOn], !!onlyOn && styles[onlyOn]],\n [styles.mobileFullwidth, mobileFullwidth],\n [styles.proportional, isProportional]\n ]\n\n // Убираем из контекста все, что не начинается с приставки isIn,\n // чтобы не применились лишние модификаторы\n // TODO: в w6 модификаторы должны передаваться явно\n\n if (styleContext && Array.isArray(styleContext)) {\n const filteredContext = styleContext\n .filter((key) => key.startsWith('isIn') && styles[key])\n .reduce((acc, key) => {\n acc.push(key)\n\n return acc\n }, [])\n\n classNames = makeStyleContext(classNames, filteredContext, styles)\n }\n\n return (\n <figure className={makeClassName(classNames)}>\n {children && (\n <div className={styles.object}>\n <div className={styles.wrapper} style={style}>\n <div className={styles.objectWrap}>{children}</div>\n </div>\n </div>\n )}\n\n {!children && renderEmbed(style)}\n\n {cc === 'default' && <figcaption>{renderCC()}</figcaption>}\n\n {cc === 'button' && (\n <button\n className={styles.control}\n type=\"button\"\n aria-label=\"Open\"\n onClick={(): void => {\n setIsPopoverShown(!isPopoverShown)\n }}\n />\n )}\n\n {cc === 'button' && isPopoverShown && (\n <Popover\n onClose={(): void => {\n setIsPopoverShown(false)\n }}\n >\n {renderCC('isInPopover')}\n </Popover>\n )}\n </figure>\n )\n}\n","import React, { useEffect, useRef } from 'react'\nimport { EmbedBlockProps } from './EmbedBlock.types'\nimport { EmbedBlock } from './EmbedBlock'\n\nexport const IframeBlock: React.FC<EmbedBlockProps> = ({\n block,\n block: { id },\n styleContext,\n lang = 'ru'\n}) => {\n const element = useRef(null)\n\n const renderIframe = (): void => {\n const rootEl = document.createElement('div')\n const contentEl = document.createElement('div')\n const scriptEl = document.createElement('script')\n const style = document.createElement('style')\n const range = document.createRange()\n\n range.setStart(contentEl, 0)\n contentEl.setAttribute('id', 'content')\n scriptEl.textContent = `\n function getDocHeight() {\n var doc = document;\n var body = doc.body;\n var html = doc.documentElement;\n var height = Math.max( body.scrollHeight, body.offsetHeight,\n html.clientHeight, html.scrollHeight, html.offsetHeight );\n\n doc.body.style.margin=\"0\";\n\n return document.getElementById('content') ? document.getElementById('content').offsetHeight : height;\n }\n\n function sendDocHeightMsg() {\n var height = getDocHeight();\n var message = JSON.stringify({\n action: {\n type: \"UPDATE_HEIGHT\",\n payload: {\n id: \"${block.id}\",\n height: height\n }\n }\n });\n parent.postMessage(\"mdzMaterialEmbedHeight=\" + message, '*');\n }\n\n setInterval(sendDocHeightMsg, 300);\n `\n\n style.type = 'text/css'\n style.innerHTML =\n block.type === 'embed_code'\n ? '.twitter-tweet { padding-top: 15px; margin: 0 !important; }'\n : '.twitter-tweet { margin: 0 !important; } .fb-post { display: block; } .instagram-media { min-width: 0 !important; }'\n\n contentEl.appendChild(range.createContextualFragment(block.data.html))\n rootEl.appendChild(scriptEl)\n rootEl.appendChild(contentEl)\n contentEl.appendChild(style)\n\n const frame = element.current.querySelector('iframe').contentDocument\n\n frame.open()\n frame.close()\n frame.documentElement.setAttribute('lang', lang)\n frame.body.appendChild(rootEl)\n }\n\n useEffect(() => {\n renderIframe()\n }, [])\n\n return (\n <EmbedBlock block={block} styleContext={styleContext}>\n <div\n ref={element}\n dangerouslySetInnerHTML={{\n __html: `<iframe id=${id} frameBorder=\"0\" scrolling=\"no\"></iframe>`\n }}\n />\n </EmbedBlock>\n )\n}\n","import React from 'react'\nimport { EmbedBlockProps } from './EmbedBlock.types'\nimport { EmbedBlock } from './EmbedBlock'\nimport { IframeBlock } from './IframeBlock'\n\nexport const EmbedBlockContainer: React.FC<EmbedBlockProps> = ({\n block,\n styleContext,\n lang\n}) => {\n if (block.data && block.data.wrap_with_iframe) {\n return <IframeBlock block={block} styleContext={styleContext} lang={lang} />\n }\n return <EmbedBlock block={block} styleContext={styleContext} />\n}\n","import React from 'react'\nimport { QuoteBlockProps } from './QuoteBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './QuoteBlock.module.css'\n\nexport const QuoteBlock: React.FC<QuoteBlockProps> = ({\n block: { data },\n styleContext\n}) => {\n let classNames: ClassNames = [[styles.root, true]]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"quote-block\" className={makeClassName(classNames)}>\n <p dangerouslySetInnerHTML={{ __html: data }} />\n </div>\n )\n}\n","import React from 'react'\nimport { CardTitleProps } from './CardTitle.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport styles from './CardTitle.module.css'\n\nexport const CardTitle: React.FC<CardTitleProps> = ({\n block: {\n data: { only_on: onlyOn, index, text }\n },\n styleContext\n}) => {\n return (\n <div\n data-testid=\"card-title\"\n className={makeClassName([\n [styles.root, true],\n [styles[onlyOn], !!onlyOn],\n [styles[styleContext], !!styleContext && !!styles[styleContext]]\n ])}\n >\n <div className={styles.index}>{index}</div>\n <h3 className={styles.title}>{text}</h3>\n </div>\n )\n}\n","import React from 'react'\nimport { ChapterBlockProps } from './ChapterBlock.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport styles from './ChapterBlock.module.css'\n\nexport const ChapterBlock: React.FC<ChapterBlockProps> = ({\n block: { data, only_on: onlyOn },\n styleContext\n}) => {\n return (\n <div\n data-testid=\"chapter-block\"\n className={makeClassName([\n [styles.root, true],\n [styles[onlyOn], !!onlyOn]\n ])}\n >\n <div\n className={makeClassName([\n [styles.subtitle, true],\n [styles[styleContext], !!styleContext && !!styles[styleContext]]\n ])}\n dangerouslySetInnerHTML={{ __html: data }}\n />\n </div>\n )\n}\n","const generateGradient = (color: string, type: string): string => {\n const steps = {\n mediaBlockBottom: [\n [0, 7],\n [0.08, 12],\n [0.16, 17],\n [0.22, 21],\n [0.32, 26],\n [0.42, 32],\n [0.52, 38],\n [0.62, 47],\n [0.72, 57],\n [0.82, 65],\n [1, 82]\n ],\n mediaBlockTop: [\n [0.5, 0],\n [0, 97]\n ]\n }\n\n const gradient = steps[type].map((i) => `rgba(${color}, ${i[0]}) ${i[1]}%`)\n\n return `linear-gradient(-180deg, ${gradient})`\n}\n\nexport default generateGradient\n","import React from 'react'\nimport { SimpleTitleProps } from './SimpleTitle.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './SimpleTitle.module.css'\n\nexport const SimpleTitle: React.FC<SimpleTitleProps> = ({\n block: {\n data: { first },\n only_on: onlyOn\n },\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <h1 data-testid=\"simple-title\" className={makeClassName(classNames)}>\n {first}\n </h1>\n )\n}\n","import React from 'react'\nimport { RichTitleProps } from './RichTitle.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './RichTitle.module.css'\n\nexport const RichTitle: React.FC<RichTitleProps> = ({\n block: {\n only_on: onlyOn,\n data: { featured, first, second, as: TagName = 'h1' }\n },\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true],\n [styles.featured, !!featured]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <TagName data-testid=\"rich-title\" className={makeClassName(classNames)}>\n {first}\n {second && <span> {second}</span>}\n </TagName>\n )\n}\n","import React from 'react'\nimport { SimpleBlockProps } from './SimpleBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './SimpleBlock.module.css'\n\nexport const SimpleBlock: React.FC<SimpleBlockProps> = ({\n block: { data, type, only_on: onlyOn },\n styleContext\n}) => {\n let TagName\n\n let classNames: ClassNames = [\n [styles[type], !!type && !!styles[type]],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n switch (type) {\n case 'context_p':\n case 'lead':\n case 'note_caption':\n case 'note_credit': {\n TagName = 'p'\n break\n }\n case 'divider':\n return <hr className={makeClassName(classNames)} />\n case 'lead_hr': {\n TagName = 'div'\n break\n }\n default:\n TagName = type\n }\n\n return (\n <TagName\n className={makeClassName(classNames)}\n dangerouslySetInnerHTML={{ __html: data }}\n />\n )\n}\n","import React from 'react'\nimport { ListBlockProps } from './ListBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './ListBlock.module.css'\n\nexport const ListBlock: React.FC<ListBlockProps> = ({\n block: { type, data, only_on: onlyOn },\n styleContext\n}) => {\n const TagName = type\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true],\n [styles[type], !!type && !!styles[type]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <TagName className={makeClassName(classNames)} data-testid=\"list-block\">\n {data.map((item, index) => (\n <li key={index} dangerouslySetInnerHTML={{ __html: item }} />\n ))}\n </TagName>\n )\n}\n","import React from 'react'\nimport { Link } from 'react-router-dom'\n\nimport { RelatedBlockProps } from './RelatedBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './RelatedBlock.module.css'\n\nexport const RelatedBlock: React.FC<RelatedBlockProps> = ({\n block: {\n data: { title, related },\n only_on: onlyOn\n },\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"related-block\" className={makeClassName(classNames)}>\n <h3 className={styles.header}>{title}</h3>\n <ul className={styles.items}>\n {related.map((item, index) => (\n <li key={item.id || index} className={styles[item.layout]}>\n <Link to={item.full_url || `/${item.url}`}>\n <span className={styles.first}>{item.title}</span>\n {item.second_title && ' '}\n {item.second_title && <span>{item.second_title}</span>}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n )\n}\n","import React from 'react'\nimport { SourceBlockProps } from './SourceBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './SourceBlock.module.css'\n\nexport const SourceBlock: React.FC<SourceBlockProps> = ({\n block: {\n only_on: onlyOn,\n data: { quote, origin, url }\n },\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <blockquote\n data-testid=\"source-block\"\n cite={url}\n className={makeClassName(classNames)}\n >\n <a\n className={styles.text}\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {quote.map((item, index) => (\n <p key={index} dangerouslySetInnerHTML={{ __html: item.data }} />\n ))}\n <footer>\n <cite className={styles.origin}>{origin}</cite>\n </footer>\n </a>\n </blockquote>\n )\n}\n","import React, { useState } from 'react'\nimport { SensitiveBlockProps } from './SensitiveBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport { EmbedBlockContainer } from '../EmbedBlock'\nimport { MediaCaption } from '../MediaCaption'\nimport { Button } from '../Button'\n\nimport styles from './SensitiveBlock.module.css'\n\nexport const SensitiveBlock: React.FC<SensitiveBlockProps> = ({\n block,\n block: { cc, caption, credit, blurred_image: blurredImage },\n block: {\n item: {\n data: { display }\n }\n },\n styleContext\n}) => {\n const [visible, isVisible] = useState(false)\n\n const handleClick = () => {\n isVisible(true)\n }\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles.visible, visible],\n [styles[display], display && styles[display]]\n ]\n\n let context = ['isInSensitiveBlock']\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n context = [...styleContext, 'isInSensitiveBlock']\n }\n\n return (\n <div data-testid=\"sensitive-block\" className={makeClassName(classNames)}>\n <div className={styles.container}>\n <div\n className={styles.overlay}\n style={{ backgroundImage: `url(${blurredImage})` }}\n >\n <div className={styles.content}>\n <p dangerouslySetInnerHTML={{ __html: block.title }} />\n\n <div className={styles.button}>\n <Button onClick={() => handleClick()} theme=\"light\">\n {block.button.text}\n </Button>\n </div>\n </div>\n </div>\n <div className={styles.media}>\n <EmbedBlockContainer block={block.item} styleContext={context} />\n </div>\n </div>\n\n {cc && (\n <figcaption className={styles.figcaption}>\n <MediaCaption\n credit={credit}\n caption={caption}\n styleContext={styleContext}\n />\n </figcaption>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { GroupedBlockProps } from './GroupedBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { SensitiveBlock } from '../SensitiveBlock'\nimport { EmbedBlockContainer } from '../EmbedBlock'\nimport { MediaCaption } from '../MediaCaption'\n\nimport styles from './GroupedBlock.module.css'\n\nexport const GroupedBlock: React.FC<GroupedBlockProps> = ({\n block,\n block: { only_on: onlyOn },\n styleContext\n}) => {\n const maxHeight = Math.min(\n ...block.data.map(\n (item) =>\n (item.data && item.data.height) || (item.item && item.item.data.height)\n )\n )\n\n const normalizedBoxesWidth = block.data.map((item) => {\n const width =\n (item.data && item.data.width) || (item.item && item.item.data.heigh)\n const height =\n (item.data && item.data.height) || (item.item && item.item.data.heigh)\n return width / (height / maxHeight)\n })\n\n const sumWidth = normalizedBoxesWidth.reduce((sum, x) => sum + x)\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true],\n [styles.hasFigcaption, block.cc === 'default'],\n [styles[block.display], !!block.display && styles[block.display]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"grouped-block\" className={makeClassName(classNames)}>\n <div className={styles.items}>\n {block.data.map((item, index) => {\n const percentWidth = (normalizedBoxesWidth[index] / sumWidth) * 100\n\n return (\n <div\n className={styles.item}\n key={item.id}\n style={{ width: `${percentWidth}%` }}\n >\n {item.type === 'sensitive' ? (\n <SensitiveBlock\n block={item}\n styleContext={['isInGroupedBlock']}\n />\n ) : (\n <EmbedBlockContainer\n block={item}\n styleContext={['isInGroupedBlock']}\n />\n )}\n </div>\n )\n })}\n </div>\n {block.cc && (\n <figcaption className={styles.figcaption}>\n <MediaCaption\n credit={block.credit}\n caption={block.caption}\n styleContext={styleContext}\n />\n </figcaption>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { MetaItemProps } from './MetaItem.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport styles from './MetaItem.module.css'\n\nexport const MetaItem: React.FC<MetaItemProps> = ({\n hasSource,\n type,\n children,\n bullets\n}) => {\n const classNames = [\n [styles.root, true],\n [styles[type], !!type && !!styles[type]],\n [styles.hasSource, !!hasSource],\n [styles.hasBullets, !!bullets]\n ]\n\n return (\n <div data-testid=\"meta-item\" className={makeClassName(classNames)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { MetaItemLiveProps } from './MetaItemLive.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport styles from './MetaItemLive.module.css'\n\nexport const MetaItemLive: React.FC<MetaItemLiveProps> = ({\n theme = 'gold'\n}) => {\n const classNames = [\n [styles.root, true],\n [styles[theme], !!theme && styles[theme]]\n ]\n\n return (\n <div\n data-testid=\"meta-item-live\"\n data-meta=\"live\"\n className={makeClassName(classNames)}\n >\n <div className={styles.frame} />\n </div>\n )\n}\n","import React from 'react'\nimport { DocumentItemsCountProps } from './DocumentItemsCount.types'\nimport pluralize from '../utils/pluralize'\n\nimport styles from './DocumentItemsCount.module.css'\n\nexport const DocumentItemsCount: React.FC<DocumentItemsCountProps> = ({\n type,\n lang = 'ru',\n items,\n children\n}) => {\n const i18n = {\n ru: {\n card: {\n one: 'карточка',\n two: 'карточки',\n five: 'карточек'\n },\n podcast: {\n one: 'эпизод',\n two: 'эпизода',\n five: 'эпизодов'\n }\n },\n en: {\n card: {\n one: 'card',\n two: 'cards',\n five: 'cards'\n },\n podcast: {\n one: 'episode',\n two: 'episodes',\n five: 'episodes'\n }\n }\n }\n\n const itemsCount = `${items} ${pluralize(\n items,\n i18n[lang][type].one,\n i18n[lang][type].two,\n i18n[lang][type].five\n )}`\n\n return (\n <div data-testid=\"document-items-count\" className={styles.root}>\n {children}\n <span className={styles.items}>{itemsCount}</span>\n </div>\n )\n}\n","const pluralize = (\n number: number,\n one: string,\n two: string,\n five: string\n): string => {\n let n = Math.abs(number)\n n %= 100\n\n if (n >= 5 && n <= 20) {\n return five\n }\n\n n %= 10\n\n if (n === 1) {\n return one\n }\n\n if (n >= 2 && n <= 4) {\n return two\n }\n\n return five\n}\n\nexport default pluralize\n","import React from 'react'\nimport { toCamel } from '../utils/converCase'\n\nimport { MetaContainerProps } from './Meta.types'\nimport { Meta } from './'\nimport { MetaItem } from '../MetaItem'\nimport { MetaItemLive } from '../MetaItemLive'\nimport { DocumentItemsCount } from '../DocumentItemsCount'\nimport { BookmarkButton } from '../BookmarkButton'\nimport { Timestamp } from '../Timestamp'\nimport { SvgSymbol } from '../SvgSymbol'\n\nimport { TimestampProps } from '../Timestamp/Timestamp.types'\n\nimport styles from './Meta.module.css'\n\nexport const MetaContainer: React.FC<MetaContainerProps> = ({\n lang,\n block,\n isRead,\n isListened,\n bookmarkAction,\n isInBookmarks,\n block: {\n data: { components, theme }\n },\n styleContext\n}) => {\n const themeColor =\n styleContext && styleContext.indexOf('dark') !== -1 ? 'light' : 'unset'\n const isPodcast = styleContext && styleContext.indexOf('podcast') !== -1\n const isSlides = styleContext && styleContext.indexOf('slide') !== -1\n\n let context = []\n\n if (styleContext && Array.isArray(styleContext)) {\n context = styleContext.filter((item) => {\n return item !== 'dark'\n })\n }\n\n const hasSource = !!components.find((item) => item.type === 'source_name')\n\n return (\n <Meta\n styleContext={context}\n theme={theme || themeColor}\n onlyOn={block.only_on}\n hasSource={hasSource}\n >\n {components.map((component) => {\n switch (component.type) {\n case 'source_name': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <>\n {lang === 'ru' ? 'Источник: ' : 'Source: '}\n {component.url && (\n <a\n href={component.url}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {component.text}\n </a>\n )}\n {!component.url && component.text}\n </>\n </MetaItem>\n )\n }\n case 'duration': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <>\n <SvgSymbol icon=\"podcast\" size=\"small\" />\n {component.text}\n </>\n </MetaItem>\n )\n }\n case 'datetime': {\n const format = ((component.format && toCamel(component.format)) ||\n 'date') as TimestampProps['type']\n\n return (\n <MetaItem\n hasSource={hasSource}\n bullets\n key={component.id}\n type=\"datetime\"\n >\n <Timestamp\n publishedAt={component.datetime}\n type={format || 'date'}\n locale={lang}\n />\n </MetaItem>\n )\n }\n\n case 'items_count': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <DocumentItemsCount\n items={component.count}\n type={isPodcast ? 'podcast' : 'card'}\n lang={lang}\n >\n <SvgSymbol icon=\"card\" size=\"unset\" />\n </DocumentItemsCount>\n </MetaItem>\n )\n }\n case 'broadcast_active': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <>\n <MetaItemLive /> Прямой эфир\n </>\n </MetaItem>\n )\n }\n case 'broadcast': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <>\n {component.with_icon && <MetaItemLive />}\n\n {component.label}\n </>\n </MetaItem>\n )\n }\n\n default: {\n return null\n }\n }\n })}\n {(isRead || isListened) && (\n <MetaItem\n hasSource={hasSource}\n bullets\n type={isListened ? 'listened' : 'read'}\n >\n <SvgSymbol icon={isListened ? 'listened' : 'read'} size=\"unset\" />\n </MetaItem>\n )}\n\n {isSlides && lang === 'ru' && (\n <div className={styles.bookmark}>\n <BookmarkButton\n isInBookmarks={isInBookmarks}\n onClick={(): void => bookmarkAction('bookmark', 'top')}\n />\n </div>\n )}\n </Meta>\n )\n}\n","import React from 'react'\nimport { DonatesTeaserProps } from './DonatesTeaser.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './DonatesTeaser.module.css'\n\nexport const DonatesTeaser: React.FC<DonatesTeaserProps> = ({\n styleContext,\n lang = 'ru'\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[lang], styles[lang]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n const data = {\n ru: {\n title:\n '«Медуза». Работаем 24/7. И&nbsp;только&nbsp;в&nbsp;интересах читателей',\n subtitle: 'Нам срочно нужна ваша поддержка',\n button: 'Хочу помочь',\n href: 'https://support.meduza.io/'\n },\n en: {\n title: 'Meduza, working 24/7, always&nbsp;for our readers',\n subtitle: 'We&nbsp;need&nbsp;your&nbsp;help like never&nbsp;before',\n button: 'Okay!',\n href: 'https://support.meduza.io/en'\n }\n }\n\n return (\n <div data-testid=\"donates-teaser\" className={makeClassName(classNames)}>\n <div className={styles.main}>\n <h3 className={styles.title}>\n <span dangerouslySetInnerHTML={{ __html: data[lang].title }} />\n {` `}\n <span\n className={styles.text}\n dangerouslySetInnerHTML={{ __html: data[lang].subtitle }}\n />\n </h3>\n </div>\n\n <div className={styles.cta}>\n <a href={data[lang].href} target=\"_blank\" rel=\"noreferrer\">\n <span>{data[lang].button}</span>\n </a>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { AnnouncementInTextProps } from './AnnouncementInText.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './AnnouncementInText.module.css'\n\nexport const AnnouncementInText: React.FC<AnnouncementInTextProps> = ({\n styleContext,\n lang = 'ru'\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[lang], styles[lang]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n const data = {\n ru: {\n title:\n '&laquo;Медуза&raquo; заблокирована в&nbsp;России. Мы&nbsp;были к&nbsp;этому готовы&nbsp;&mdash; и&nbsp;продолжаем работать. Несмотря&nbsp;ни&nbsp;на&nbsp;что',\n text:\n '<p>Нам нужна ваша помощь как никогда. Прямо сейчас. Дальше всем нам будет еще труднее. Мы&nbsp;независимое издание и&nbsp;работаем только в&nbsp;интересах читателей.</p>',\n button: 'Хочу помочь',\n href: 'https://mdza.io/yiNxPZ7Bs-k'\n },\n\n en: {\n title:\n 'Meduza has been blocked in Russia. We&nbsp;were ready for this and our work continues, no matter what, but we need your support like never before. ',\n text:\n '<p>We need it now. Tomorrow could be too late. We are an independent publication, and we work only in the interests of our readers. Many&nbsp;of&nbsp;our&nbsp;readers in Russia can no longer contribute, so we turn to you, our audience around the world.</p>',\n button: 'I want to help',\n href: 'https://support.meduza.io/en'\n }\n }\n\n const localeData = data[lang]\n\n return (\n <div\n data-testid=\"announcement-in-text\"\n className={makeClassName(classNames)}\n >\n <div className={styles.body}>\n <h3\n className={styles.title}\n dangerouslySetInnerHTML={{ __html: localeData.title }}\n />\n\n <div dangerouslySetInnerHTML={{ __html: localeData.text }} />\n </div>\n\n <div className={styles.footer}>\n <a\n className={styles.link}\n href={localeData.href}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <span>{localeData.button}</span>\n </a>\n <span className={styles.button}>\n <span>{localeData.button}</span>\n </span>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { RenderBlocksProps } from './RenderBlocks.types'\nimport { Tag } from '../Tag'\nimport { SimpleTitle } from '../SimpleTitle'\nimport { RichTitle } from '../RichTitle'\nimport { SimpleBlock } from '../SimpleBlock'\nimport { ListBlock } from '../ListBlock'\nimport { ChapterBlock } from '../ChapterBlock'\nimport { QuoteBlock } from '../QuoteBlock'\nimport { CardTitle } from '../CardTitle'\nimport { RelatedBlock } from '../RelatedBlock'\nimport { SourceBlock } from '../SourceBlock'\nimport { EmbedBlockContainer } from '../EmbedBlock'\nimport { GroupedBlock } from '../GroupedBlock'\nimport { MetaContainer } from '../Meta/MetaContainer'\nimport { Table } from '../Table'\nimport { MaterialNote } from '../MaterialNote'\nimport { SensitiveBlock } from '../SensitiveBlock'\nimport { DonatesTeaser } from '../DonatesTeaser'\nimport { AnnouncementInText } from '../AnnouncementInText'\n\nexport const RenderBlocks: React.FC<RenderBlocksProps> = ({\n block,\n styleContext,\n lang,\n isRead,\n isListened,\n bookmarkAction,\n isInBookmarks\n}) => {\n switch (block.type) {\n case 'tag': {\n return (\n <Tag\n size=\"large\"\n onlyOn={block.only_on}\n theme={block.data.theme}\n styleContext={styleContext}\n >\n {block.data.text}\n </Tag>\n )\n }\n\n case 'simple_title': {\n return <SimpleTitle block={block} styleContext={styleContext} />\n }\n\n case 'rich_title': {\n return <RichTitle block={block} styleContext={styleContext} />\n }\n\n case 'meta': {\n return (\n <MetaContainer\n block={block}\n lang={block.data.lang}\n styleContext={styleContext}\n isRead={isRead}\n isListened={isListened}\n isInBookmarks={isInBookmarks}\n bookmarkAction={bookmarkAction}\n />\n )\n }\n\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'blockquote':\n case 'p':\n case 'context_p':\n case 'divider':\n case 'lead':\n case 'lead_hr': {\n return <SimpleBlock block={block} styleContext={styleContext} />\n }\n\n case 'quote':\n return <QuoteBlock block={block} styleContext={styleContext} />\n\n case 'ol':\n case 'ul': {\n return <ListBlock block={block} styleContext={styleContext} />\n }\n\n case 'chapter-subtitle': {\n return <ChapterBlock block={block} styleContext={styleContext} />\n }\n\n case 'card_title': {\n return <CardTitle block={block} styleContext={styleContext} />\n }\n\n case 'related': {\n return <RelatedBlock block={block} styleContext={styleContext} />\n }\n\n case 'source':\n return <SourceBlock block={block} styleContext={styleContext} />\n\n case 'table':\n return <Table block={block} styleContext={styleContext} />\n\n case 'sensitive':\n return <SensitiveBlock block={block} styleContext={styleContext} />\n\n case 'embed':\n case 'embed_code':\n case 'game_embed':\n case 'image':\n case 'dots_on_image':\n case 'gif':\n return (\n <EmbedBlockContainer\n block={block}\n styleContext={styleContext}\n lang={lang}\n />\n )\n case 'grouped':\n return <GroupedBlock block={block} styleContext={styleContext} />\n\n case 'donation':\n return <DonatesTeaser styleContext={styleContext} lang={lang} />\n\n case 'material_note':\n return <MaterialNote block={block} styleContext={styleContext} />\n\n case 'announcement_in_text':\n return <AnnouncementInText styleContext={styleContext} lang={lang} />\n\n default: {\n return null\n }\n }\n}\n","import React, { useState } from 'react'\nimport { CoverProps } from './Cover.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport generateGradient from '../utils/generateGradient'\nimport { RenderBlocks } from '../RenderBlocks'\nimport { MediaCaption } from '../MediaCaption'\nimport { Image } from '../Image'\nimport { Popover } from '../Popover'\n\nimport styles from './Cover.module.css'\n\nexport const Cover: React.FC<CoverProps> = ({\n block: {\n only_on: onlyOn,\n data: {\n blocks,\n cover: { credit, caption, urls, mobile_ratio: mobileRatio, gradients, cc }\n }\n },\n styleContext\n}) => {\n const [isPopoverShown, setIsPopoverShown] = useState(false)\n\n const style: React.CSSProperties = {}\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], !!onlyOn && !!styles[onlyOn]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n if (gradients) {\n const theme = [gradients.text_rgb === '0,0,0' ? 'dark' : 'light']\n\n classNames = makeStyleContext(classNames, theme, styles)\n\n style.backgroundImage = generateGradient(\n gradients.bg_rgb,\n 'mediaBlockBottom'\n )\n }\n\n const renderCC = (context?: string): JSX.Element => (\n <MediaCaption\n credit={credit}\n caption={caption}\n styleContext={context || styleContext}\n />\n )\n\n return (\n <div data-testid=\"cover\" className={makeClassName(classNames)}>\n <div className={styles.image}>\n <Image\n optimized={urls}\n ratio={mobileRatio}\n display=\"narrow\"\n lazy={true}\n />\n </div>\n <div className={styles.body} style={style}>\n {blocks.map((item) => (\n <RenderBlocks\n key={item.id}\n block={item}\n styleContext={styleContext}\n />\n ))}\n </div>\n {cc === 'button' && (\n <button\n className={styles.control}\n type=\"button\"\n aria-label=\"Open\"\n onClick={(): void => {\n setIsPopoverShown(!isPopoverShown)\n }}\n />\n )}\n\n {cc === 'button' && isPopoverShown && (\n <Popover\n onClose={(): void => {\n setIsPopoverShown(false)\n }}\n >\n {renderCC('isInPopover')}\n </Popover>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { HalfBlockProps } from './HalfBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { RenderBlocks } from '../RenderBlocks'\nimport { Image } from '../Image'\nimport { MediaCaption } from '../MediaCaption'\n\nimport styles from './HalfBlock.module.css'\n\nexport const HalfBlock: React.FC<HalfBlockProps> = ({\n block: {\n only_on: onlyOn,\n data,\n data: {\n cover: { optimized, ratio, credit, caption }\n }\n },\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"half-block\" className={makeClassName(classNames)}>\n <div className={styles.main}>\n <div className={styles.image}>\n <Image optimized={optimized} ratio={ratio} display=\"super_full\" />\n </div>\n <div className={styles.body}>\n {data.blocks.map((item) => (\n <RenderBlocks key={item.id} block={item} styleContext={['rich']} />\n ))}\n </div>\n </div>\n <div className={styles.footer}>\n <MediaCaption\n credit={credit}\n caption={caption}\n styleContext={styleContext}\n />\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { ImportantLeadProps } from './ImportantLead.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { RenderBlocks } from '../RenderBlocks'\n\nimport styles from './ImportantLead.module.css'\n\nexport const ImportantLead: React.FC<ImportantLeadProps> = ({\n block: { only_on: onlyOn, data },\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], !!onlyOn]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"important-lead\" className={makeClassName(classNames)}>\n {data.map((item) => (\n <RenderBlocks\n key={item.id}\n block={item}\n styleContext=\"isInImportantLead\"\n />\n ))}\n </div>\n )\n}\n","import React, { useState, useRef } from 'react'\nimport { SpoilerProps } from './Spoiler.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport postMessage from '../utils/postMessage'\nimport { RenderBlocks } from '../RenderBlocks'\nimport { Button } from '../Button'\nimport { SvgSymbol } from '../SvgSymbol'\n\nimport styles from './Spoiler.module.css'\n\nexport const Spoiler: React.FC<SpoilerProps> = ({\n block: {\n display,\n button,\n only_on: onlyOn,\n btn_title: buttonTitle,\n title,\n blocks\n },\n styleContext\n}) => {\n const [spoiled, setSpoiled] = useState(false)\n const ref = useRef(null)\n\n const handleButtonClick = (): void => {\n setSpoiled(!spoiled)\n\n if (spoiled) {\n postMessage('', 'closeSpoiler', 'click')\n const rect = ref.current.getBoundingClientRect()\n if (rect.top < 0) {\n ref.current.scrollIntoView({ behavior: 'smooth' })\n }\n } else {\n postMessage('', 'openSpoiler', 'click')\n }\n }\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], !!onlyOn],\n [styles[display], !!display && styles[display]],\n [[styles.spoiled], !!spoiled]\n ]\n\n const context = ['center']\n\n if (styleContext) {\n context.concat(styleContext)\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n const buttonCollapse = button ? button.collapse : 'Свернуть'\n const buttonExpande = button ? button.expand : buttonTitle\n\n return (\n <div ref={ref} className={makeClassName(classNames)} data-testid=\"spoiler\">\n <div className={styles.header}>{title && <h3>{title}</h3>}</div>\n <div className={styles.body}>\n {blocks.map((item) => (\n <RenderBlocks key={item.id} block={item} styleContext={context} />\n ))}\n </div>\n <div className={styles.footer}>\n <Button\n size=\"default\"\n theme=\"gray\"\n onClick={(): void => handleButtonClick()}\n styleContext=\"isInSpoiler\"\n >\n {spoiled ? buttonCollapse : buttonExpande}\n <SvgSymbol icon=\"arrow\" />\n </Button>\n </div>\n </div>\n )\n}\n","/* eslint-disable react/jsx-no-target-blank */\nimport React, { useEffect } from 'react'\nimport { Link } from 'react-router-dom'\n\nimport { useInView } from 'react-intersection-observer'\nimport { RelatedRichBlockProps } from './RelatedRichBlock.types'\n\nimport postMessage from '../utils/postMessage'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport generateGradient from '../utils/generateGradient'\nimport { toCapitalize } from '../utils/converCase'\n\nimport { Tag } from '../Tag'\nimport { RenderBlocks } from '../RenderBlocks'\nimport { Image } from '../Image'\n\nimport styles from './RelatedRichBlock.module.css'\n\nexport const RelatedRichBlock: React.FC<RelatedRichBlockProps> = ({\n block: {\n only_on: onlyOn,\n data: {\n blocks,\n url,\n cover: { urls, gradients, tag, layout, ratio }\n }\n },\n styleContext\n}) => {\n const style: React.CSSProperties = {}\n const styleHeader: React.CSSProperties = {}\n\n const cardType = `is${toCapitalize(layout)}`\n\n const [ref, inView] = useInView({\n threshold: 0,\n triggerOnce: true\n })\n\n useEffect(() => {\n if (inView) {\n if (\n (onlyOn === 'mobile' && window.innerWidth <= 511) ||\n (onlyOn === 'desktop' && window.innerWidth >= 512) ||\n !onlyOn\n ) {\n postMessage('richRelated', url, 'view')\n }\n }\n }, [inView])\n\n const handleClick = () => {\n postMessage('richRelated', url, 'click')\n }\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[cardType], !!layout && !!styles[cardType]],\n [styles.hasGradient, !!gradients],\n [styles[onlyOn], !!onlyOn && !!styles[onlyOn]]\n ]\n\n let context = ['isInMediaBlock']\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n\n context = [...styleContext, 'isInMediaBlock']\n }\n\n if (gradients) {\n styleHeader.backgroundImage = generateGradient(\n gradients.bg_rgb,\n 'mediaBlockTop'\n )\n\n const theme = [gradients.text_rgb === '0,0,0' ? 'dark' : 'light']\n classNames = makeStyleContext(classNames, theme, styles)\n\n if (onlyOn === 'desktop') {\n style.backgroundImage = generateGradient(\n gradients.bg_rgb,\n 'mediaBlockBottom'\n )\n }\n }\n\n return (\n <Link\n data-testid=\"related-rich-block\"\n className={makeClassName(classNames)}\n to={`/${url}`}\n onClick={(): void => handleClick()}\n ref={ref}\n >\n {layout === 'rich' && (\n <>\n <div className={styles.overlay} style={style} />\n <div className={styles.overlayHeader} style={styleHeader} />\n </>\n )}\n\n <div className={styles.tag}>\n <Tag size=\"small\" theme=\"inherit\" styleContext=\"richRelated\">\n {tag}\n </Tag>\n </div>\n <div className={styles.cover}>\n <div className={styles.picture}>\n <Image optimized={urls} ratio={ratio} display=\"narrow\" />\n </div>\n </div>\n <div className={styles.body}>\n {blocks.map((item) => (\n <RenderBlocks key={item.id} block={item} styleContext={context} />\n ))}\n </div>\n </Link>\n )\n}\n","/* eslint-disable react/jsx-no-target-blank */\nimport React, { useEffect } from 'react'\n\nimport { useInView } from 'react-intersection-observer'\nimport { ShopRelatedBlockProps } from './ShopRelatedBlock.types'\n\nimport postMessage from '../utils/postMessage'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport generateGradient from '../utils/generateGradient'\n\nimport { Tag } from '../Tag'\nimport { Image } from '../Image'\n\nimport styles from './ShopRelatedBlock.module.css'\n\nexport const ShopRelatedBlock: React.FC<ShopRelatedBlockProps> = ({\n block: {\n only_on: onlyOn,\n data: {\n url,\n cover: {\n urls,\n gradients,\n tag,\n layout,\n ratio,\n first_title: firstTitle,\n second_title: secondTitle\n }\n }\n },\n styleContext\n}) => {\n const style: React.CSSProperties = {}\n const styleHeader: React.CSSProperties = {}\n\n const [ref, inView] = useInView({\n threshold: 0,\n triggerOnce: true\n })\n\n useEffect(() => {\n if (inView) {\n if (\n (onlyOn === 'mobile' && window.innerWidth <= 511) ||\n (onlyOn === 'desktop' && window.innerWidth >= 512) ||\n !onlyOn\n ) {\n postMessage('productRelated', url, 'view')\n }\n }\n }, [inView])\n\n const handleClick = () => {\n postMessage('productRelated', url, 'click')\n }\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles.hasGradient, !!gradients],\n [styles[onlyOn], !!onlyOn && !!styles[onlyOn]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n if (gradients) {\n styleHeader.backgroundImage = generateGradient(\n gradients.bg_rgb,\n 'mediaBlockTop'\n )\n\n const theme = [gradients.text_rgb === '0,0,0' ? 'dark' : 'light']\n classNames = makeStyleContext(classNames, theme, styles)\n\n if (onlyOn === 'desktop') {\n style.backgroundImage = generateGradient(\n gradients.bg_rgb,\n 'mediaBlockBottom'\n )\n }\n }\n\n return (\n <a\n data-testid=\"related-rich-block\"\n className={makeClassName(classNames)}\n href={url}\n target=\"_blank\"\n onClick={(): void => handleClick()}\n ref={ref}\n >\n {layout === 'rich' && (\n <>\n <div className={styles.overlay} style={style} />\n <div className={styles.overlayHeader} style={styleHeader} />\n </>\n )}\n\n <div className={styles.tag}>\n <Tag size=\"small\" theme=\"inherit\" styleContext=\"richRelated\">\n {tag}\n </Tag>\n </div>\n <div className={styles.cover}>\n <div className={styles.picture}>\n <Image optimized={urls} ratio={ratio} display=\"narrow\" />\n </div>\n </div>\n <div className={styles.body}>\n <h2 className={styles.title}>\n {firstTitle}\n <span className={styles.price}>{secondTitle}</span>\n </h2>\n </div>\n </a>\n )\n}\n","export const capitalizeFirstLetter = (string: string): string =>\n string.charAt(0).toUpperCase() + string.slice(1)\n","import React from 'react'\nimport { DropdownProps } from './Dropdown.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './Dropdown.module.css'\n\nexport const Menu: React.FC<DropdownProps> = ({ children }) => {\n return (\n <div data-testid=\"dropdown\" className={styles.menu}>\n {children}\n </div>\n )\n}\n\nexport const Dropdown: React.FC<DropdownProps> = ({\n children,\n active,\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles.active, !!active && !!styles.active]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"dropdown\" className={makeClassName(classNames)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { MaterialTitleProps } from './MaterialTitle.types'\n\nimport styles from './MaterialTitle.module.css'\n\nexport const Primary: React.FC<MaterialTitleProps> = ({ children }) => {\n return <span className={styles.primary}>{children}</span>\n}\n\nexport const Secondary: React.FC<MaterialTitleProps> = ({ children }) => {\n return <span className={styles.secondary}>{children}</span>\n}\n\nexport const MaterialTitle: React.FC<MaterialTitleProps> = ({ children }) => {\n return (\n <h1 className={styles.root} data-testid=\"material-title\">\n {children}\n </h1>\n )\n}\n","import React from 'react'\nimport { RawHtmlBlockProps } from './RawHtmlBlock.types'\nimport { ImportantLead } from '../ImportantLead'\nimport { RenderBlocks } from '../RenderBlocks'\nimport { Spoiler } from '../Spoiler'\nimport { HalfBlock } from '../HalfBlock'\nimport { Cover } from '../Cover'\nimport { RelatedRichBlock } from '../RelatedRichBlock'\nimport { ShopRelatedBlock } from '../ShopRelatedBlock'\nimport { BlockProvider } from '../utils/BlockContext'\n\nexport const RawHtmlBlock: React.FC<RawHtmlBlockProps> = ({\n block,\n styleContext,\n isRead,\n isListened,\n isInBookmarks,\n bookmarkAction,\n lightBox,\n lang\n}) => {\n const context = {\n lightBox: lightBox || null\n }\n\n switch (block.type) {\n case 'important_lead': {\n return <ImportantLead block={block} styleContext={styleContext} />\n }\n\n case 'spoiler': {\n return (\n <BlockProvider value={context}>\n <Spoiler block={block} styleContext={styleContext} />\n </BlockProvider>\n )\n }\n\n case 'cover': {\n return <Cover block={block} styleContext={styleContext} />\n }\n\n case 'half': {\n return <HalfBlock block={block} styleContext={styleContext} />\n }\n\n case 'related_rich': {\n return <RelatedRichBlock block={block} styleContext={styleContext} />\n }\n\n case 'related_shop': {\n return <ShopRelatedBlock block={block} styleContext={styleContext} />\n }\n\n default: {\n return (\n <BlockProvider value={context}>\n <RenderBlocks\n block={block}\n styleContext={styleContext}\n isRead={isRead}\n isListened={isListened}\n isInBookmarks={isInBookmarks}\n bookmarkAction={bookmarkAction}\n lang={lang}\n />\n </BlockProvider>\n )\n }\n }\n}\n","import React from 'react'\nimport { ToolbarProps } from './Toolbar.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport styles from './Toolbar.module.css'\n\nexport const Toolbar: React.FC<ToolbarProps> = ({ children, styleContext }) => {\n let classNames: ClassNames = [[styles.root, true]]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"toolbar\" className={makeClassName(classNames)}>\n <ul className={styles.list}>{children}</ul>\n </div>\n )\n}\n","import React from 'react'\nimport { ToolbarButtonProps } from './ToolbarButton.types'\nimport { SvgSymbol } from '../SvgSymbol/'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport styles from './ToolbarButton.module.css'\nimport { SocialLabels } from '../constants'\n\nexport const ToolbarButton: React.FC<ToolbarButtonProps> = ({\n type,\n theme,\n isActive,\n lang = 'ru',\n text,\n icon,\n onClick\n}) => {\n const classNames: ClassNames = [\n [styles.root, true],\n [styles[type], !!styles[type]],\n [styles[theme], !!styles[theme] && !!theme],\n [styles.isActive, !!isActive]\n ]\n\n const label = SocialLabels[lang][type]\n\n return (\n <button\n data-testid=\"toolbar-button\"\n className={makeClassName(classNames)}\n type=\"button\"\n onClick={(event): void => onClick(event, type)}\n >\n {icon && (\n <div className={styles.icon}>\n <SvgSymbol size=\"medium\" icon={icon} styleContext=\"isInToolbar\" />\n </div>\n )}\n <span className={styles.text}>{text || label}</span>\n </button>\n )\n}\n","import React from 'react'\nimport { ToolbarItemProps } from './Toolbar.types'\n\nimport styles from '../Toolbar/Toolbar.module.css'\n\nexport const ToolbarItem: React.FC<ToolbarItemProps> = ({ children }) => {\n return <li className={styles.item}>{children}</li>\n}\n","import React from 'react'\nimport { TooltipProps } from './Tooltip.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport styles from './Tooltip.module.css'\nimport { capitalizeFirstLetter } from '../utils/capitalizeFirstLetter'\n\nexport const Tooltip: React.FC<TooltipProps> = ({ children, position }) => {\n const [x, y] = position\n\n const positionClass = `is${capitalizeFirstLetter(x)}${capitalizeFirstLetter(\n y\n )}`\n\n return (\n <div\n className={makeClassName([\n [styles.root, true],\n [styles[positionClass], true]\n ])}\n >\n <div className={styles.body}>{children}</div>\n </div>\n )\n}\n","import React from 'react'\nimport { TooltipFooterProps } from './Tooltip.types'\nimport styles from './Tooltip.module.css'\n\nexport const TooltipFooter: React.FC<TooltipFooterProps> = ({ children }) => {\n return <div className={styles.footer}>{children}</div>\n}\n"],"names":["makeClassName","list","filter","active","map","className","join","ButtonLoader","React","createElement","width","height","viewBox","xmlns","d","opacity","fillRule","attributeName","type","from","to","dur","repeatCount","Button","theme","size","state","styleContext","appearance","disabled","onClick","children","styles","root","handleClick","loader","icons","meduzaLogo","content","menu","fb","tw","vk","ok","tg","meduzaSymbol","backward","forward","download","play","pause","speedHalf","speedOne","speedOneHalf","speedTwo","podcastBookmark","reaction","cross","link","search","card","podcast","arrow","brent","user","bookmark","shareBookmark","receipt","read","listened","magic","SvgSymbol","icon","data","xmlnsXlink","dangerouslySetInnerHTML","__html","makeStyleContext","classNames","context","Array","isArray","ctx","concat","BlockContext","createContext","lightBox","BlockProvider","Provider","postMessage","category","element","action","target","window","top","msg","JSON","stringify","Lazy","threshold","ref","inView","entry","useInView","visible","setVisible","useState","useEffect","boundingClientRect","y","imageBreakpoints","imageConditionalKeys","xs","superFull","full","default","narrow","SocialLabels","ru","pdf","unblock","en","toCamel","s","replace","str","toUpperCase","RenderPicture","source","fallbackSource","optimized","alt","display","onLoad","fallback","setFallback","HTMLPictureElement","keys","media","srcSet","w325","original","key","breakpoint","Fragment","src","Image","lazy","ratio","fullscreen","useContext","isLoaded","setIsLoaded","show","blockStyles","maxWidth","pictureStyles","paddingBottom","style","wrapper","onKeyPress","role","tabIndex","Popover","onClose","handleClose","setTimeout","handleScroll","escFunction","event","document","body","dataset","popover","addEventListener","removeAttribute","removeEventListener","id","x","fill","overflow","transform","mask","Footnote","viewportSize","innerWidth","documentElement","clientWidth","innerHeight","clientHeight","DotsOnImage","block","credit","dots","setRatio","container","useRef","setPopover","title","handleClickOutside","setDotSize","composedPath","indexOf","current","isVisible","dot","position","left","marker","isActive","backgroundColor","color","shouldShow","side","align","handleDotClick","svg_string","number","Tag","correlation","onlyOn","MediaCaption","caption","Table","rows","options","columns_widths","columnsWidth","table_credit","tableCredit","colors","table","tracks","row","i","cells","cell","j","header","fixedColumn","fixed_first_column","val","MaterialNote","item","BookmarkButton","isInBookmarks","control","Meta","hasSource","Timestamp","publishedAt","locale","published","timeFormat","preparedPublishedAt","dayjs","extend","relativeTime","fromNow","format","Error","suppressHydrationWarning","DangerousHTML","tagName","TagName","html","canRenderHtml","setCanRenderHtml","replaceScriptElementsRecursive","useCallback","node","childNodes","length","script","Math","random","toString","slice","innerHTML","attrs","attributes","name","value","setAttribute","parentElement","replaceChild","prepareAnchors","querySelectorAll","forEach","a","firstElementChild","EmbedGif","gif","mp4Url","videoFrozen","setVideoFrozen","videoElem","handleVideoTouch","handleVideoError","video","viewportWidth","figure","objectWrap","playsInline","muted","loop","autoPlay","preload","EmbedBlock","only_on","provider","cc","small_url","small","large_url","large","gif_url","gifUrl","mp4_url","isPopoverShown","setIsPopoverShown","isProportional","mobileFullwidth","renderCC","proportional","filteredContext","startsWith","reduce","acc","push","object","gameEmbed","game_src","game_id","renderEmbed","IframeBlock","lang","renderIframe","rootEl","contentEl","scriptEl","range","createRange","setStart","textContent","appendChild","createContextualFragment","frame","querySelector","contentDocument","open","close","EmbedBlockContainer","wrap_with_iframe","QuoteBlock","CardTitle","index","text","ChapterBlock","subtitle","generateGradient","mediaBlockBottom","mediaBlockTop","SimpleTitle","first","RichTitle","featured","second","as","SimpleBlock","ListBlock","RelatedBlock","related","items","layout","Link","full_url","url","second_title","SourceBlock","quote","origin","cite","href","rel","SensitiveBlock","blurred_image","blurredImage","overlay","backgroundImage","button","figcaption","GroupedBlock","maxHeight","min","normalizedBoxesWidth","heigh","sumWidth","sum","hasFigcaption","MetaItem","bullets","hasBullets","MetaItemLive","DocumentItemsCount","i18n","one","two","five","itemsCount","pluralize","n","abs","MetaContainer","isRead","isListened","bookmarkAction","components","themeColor","isPodcast","isSlides","find","component","datetime","count","with_icon","label","DonatesTeaser","main","cta","AnnouncementInText","localeData","footer","RenderBlocks","Cover","blocks","cover","urls","mobile_ratio","mobileRatio","gradients","text_rgb","bg_rgb","image","HalfBlock","ImportantLead","Spoiler","btn_title","buttonTitle","spoiled","setSpoiled","buttonCollapse","collapse","buttonExpande","expand","getBoundingClientRect","scrollIntoView","behavior","RelatedRichBlock","tag","styleHeader","cardType","triggerOnce","hasGradient","overlayHeader","picture","ShopRelatedBlock","first_title","firstTitle","secondTitle","price","capitalizeFirstLetter","string","charAt","Dropdown","MaterialTitle","Menu","Primary","RawHtmlBlock","Secondary","Switcher","enabled","childrenPosition","onChange","input","checked","knob","right","Toolbar","ToolbarButton","ToolbarItem","Tooltip","positionClass","TooltipFooter"],"mappings":"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"}
@@ -2195,7 +2195,8 @@ const Cover = ({
2195
2195
  }, /*#__PURE__*/React.createElement(Image, {
2196
2196
  optimized: urls,
2197
2197
  ratio: mobileRatio,
2198
- display: "narrow"
2198
+ display: "narrow",
2199
+ lazy: true
2199
2200
  })), /*#__PURE__*/React.createElement("div", {
2200
2201
  className: styles$7.body,
2201
2202
  style: style
@@ -2649,4 +2650,4 @@ const TooltipFooter = ({
2649
2650
  };
2650
2651
 
2651
2652
  export { AnnouncementInText, BookmarkButton, Button, ButtonLoader, CardTitle, ChapterBlock, Cover, DocumentItemsCount, DonatesTeaser, DotsOnImage, Dropdown, EmbedBlockContainer, Footnote, GroupedBlock, HalfBlock, Image, ImportantLead, Lazy, ListBlock, MaterialNote, MaterialTitle, MediaCaption, Menu, Meta, MetaItem, MetaItemLive, Popover, Primary, QuoteBlock, RawHtmlBlock, RelatedBlock, RelatedRichBlock, RenderBlocks, RichTitle, Secondary, SensitiveBlock, ShopRelatedBlock, SimpleBlock, SimpleTitle, SourceBlock, Spoiler, SvgSymbol, Switcher, Table, Tag, Timestamp, Toolbar, ToolbarButton, ToolbarItem, Tooltip, TooltipFooter };
2652
- //# sourceMappingURL=uikit.esm.js.map
2653
+ //# sourceMappingURL=ui-kit-2.esm.js.map