@meduza/ui-kit-2 0.2.20 → 0.2.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui-kit-2.cjs.development.js +5 -5
- package/dist/ui-kit-2.cjs.development.js.map +1 -1
- package/dist/ui-kit-2.cjs.production.min.js +1 -1
- package/dist/ui-kit-2.cjs.production.min.js.map +1 -1
- package/dist/ui-kit-2.esm.js +5 -5
- package/dist/ui-kit-2.esm.js.map +1 -1
- package/dist/ui-kit.css +2872 -2869
- package/package.json +1 -1
- package/src/AnnouncementInText/AnnouncementInText.module.css +4 -0
- package/src/AnnouncementInText/index.tsx +7 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-kit-2.cjs.production.min.js","sources":["../src/utils/makeClassName.ts","../src/Button/loader.tsx","../src/Button/index.tsx","../src/SvgSymbol/icons.ts","../src/SvgSymbol/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/Dropdown/index.tsx","../src/MaterialTitle/index.tsx","../src/RawHtmlBlock/index.tsx","../src/Switcher/index.tsx","../src/Toolbar/index.tsx","../src/ToolbarButton/index.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\nconst Loader: 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\nexport default Loader\n","import React, { FC } from 'react'\nimport { makeClassName } from '../utils/makeClassName'\nimport Loader from './loader'\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 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[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 <Loader />\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 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}\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 { 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","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 'lead_hr': {\n TagName = 'div'\n break\n }\n default:\n TagName = type\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. И только в интересах читателей',\n subtitle: 'Нам срочно нужна ваша поддержка',\n button: 'Хочу помочь',\n href: 'https://mdza.io/WP4YuV4xTEM'\n },\n en: {\n title: 'Meduza, working 24/7, always for our readers',\n subtitle: 'We need your help like never before',\n button: 'Okay!',\n href: 'https://mdza.io/qopxag5BGec'\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 'Поддержите «Медузу». Сейчас. Это критически важно',\n text:\n 'Мы готовимся к худшему. Из-за войны с Украиной власти могут начать блокировать независимые СМИ в любой момент. В то же время международные санкции в отношении Центробанка и других российских кредитных организаций создают серьезные риски для нашего краудфандинга. Поэтому мы просим вас помочь нашей редакции. Прямо сейчас. Что важно знать: мы независимое издание, мы работаем только в интересах наших читателей, мы не планируем закрываться. Несмотря ни на что. Спасибо вам!',\n button: 'Хочу помочь',\n href: 'https://mdza.io/yiNxPZ7Bs-k'\n },\n\n en: {\n title: 'Meduza needs your support. We need it now, like never before.',\n text:\n 'We are preparing for the worst. Due to the war with Ukraine, the Russian authorities could begin blocking the country’s independent media at any moment. International sanctions against the Central Bank and other Russian credit organizations are creating serious risks for own crowdfunding. That’s why we’re asking you to support our newsroom. Right now. What you should know: We are an independent publication. We work only in the interests of our readers. We have no plans to close, come hell or high water. Thank you, everyone!',\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 <p 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 '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(gradients.bg_rgb, 'mediaBlockBottom')\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 optimized={urls} ratio={mobileRatio} display=\"narrow\" />\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","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 { 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 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 toolbarStyles from '../Toolbar/Toolbar.module.css'\nimport styles from './ToolbarButton.module.css'\n\nexport const ToolbarButton: React.FC<ToolbarButtonProps> = ({\n children,\n type,\n theme,\n isActive,\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 return (\n <li className={toolbarStyles.item}>\n <button\n data-testid=\"toolbar-button\"\n className={makeClassName(classNames)}\n type=\"button\"\n onClick={(): void => onClick(type)}\n >\n <SvgSymbol size=\"medium\" icon={type} styleContext=\"isInToolbar\" />\n {children && <span className={styles.text}>{children}</span>}\n </button>\n </li>\n )\n}\n"],"names":["makeClassName","list","filter","map","join","Loader","React","width","height","viewBox","xmlns","d","opacity","fillRule","attributeName","type","from","to","dur","repeatCount","Button","theme","size","state","styleContext","disabled","onClick","children","className","styles","root","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","receipt","read","listened","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","POST_MESSAGE_PREFIX","JSON","stringify","Lazy","useInView","threshold","ref","inView","entry","useState","visible","setVisible","useEffect","boundingClientRect","y","imageBreakpoints","imageConditionalKeys","xs","superFull","full","narrow","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","setIsLoaded","handleClick","show","blockStyles","maxWidth","pictureStyles","paddingBottom","isLoaded","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","innerWidth","documentElement","clientWidth","innerHeight","clientHeight","DotsOnImage","block","credit","dots","setRatio","container","useRef","title","setPopover","handleClickOutside","setDotSize","composedPath","indexOf","current","isVisible","dot","position","left","marker","isActive","backgroundColor","color","shouldShow","side","align","handleDotClick","svg_string","number","viewportSize","Tag","correlation","onlyOn","MediaCaption","caption","Table","rows","options","columnsWidth","columns_widths","tableCredit","table_credit","colors","table","tracks","row","i","cells","cell","j","header","fixedColumn","fixed_first_column","val","MaterialNote","item","BookmarkButton","isInBookmarks","control","Meta","hasSource","Timestamp","published","locale","timeFormat","preparedPublishedAt","publishedAt","dayjs","extend","relativeTime","fromNow","format","Error","suppressHydrationWarning","DangerousHTML","tagName","TagName","html","canRenderHtml","setCanRenderHtml","replaceScriptElementsRecursive","useCallback","node","childNodes","length","script","createElement","Math","random","toString","slice","innerHTML","attrs","attributes","setAttribute","name","value","parentElement","replaceChild","prepareAnchors","querySelectorAll","forEach","a","firstElementChild","EmbedGif","gif","mp4Url","videoFrozen","setVideoFrozen","videoElem","handleVideoTouch","handleVideoError","video","figure","objectWrap","playsInline","muted","loop","autoPlay","preload","EmbedBlock","only_on","provider","cc","small","small_url","large","large_url","gifUrl","gif_url","mp4_url","isPopoverShown","setIsPopoverShown","isProportional","mobileFullwidth","renderCC","proportional","filteredContext","startsWith","reduce","acc","push","object","gameEmbed","game_src","game_id","renderEmbed","IframeBlock","lang","rootEl","contentEl","scriptEl","range","createRange","setStart","textContent","appendChild","createContextualFragment","frame","querySelector","contentDocument","open","close","renderIframe","EmbedBlockContainer","wrap_with_iframe","QuoteBlock","CardTitle","index","text","ChapterBlock","subtitle","generateGradient","mediaBlockBottom","mediaBlockTop","SimpleTitle","first","RichTitle","second","as","featured","SimpleBlock","ListBlock","RelatedBlock","related","items","layout","Link","full_url","url","second_title","SourceBlock","quote","origin","cite","href","rel","SensitiveBlock","blurredImage","blurred_image","overlay","backgroundImage","button","figcaption","GroupedBlock","maxHeight","min","normalizedBoxesWidth","heigh","sumWidth","sum","hasFigcaption","MetaItem","hasBullets","bullets","MetaItemLive","DocumentItemsCount","one","two","five","n","i18n","ru","en","itemsCount","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","mobileRatio","mobile_ratio","gradients","text_rgb","bg_rgb","image","HalfBlock","ImportantLead","Spoiler","buttonTitle","btn_title","spoiled","setSpoiled","buttonCollapse","collapse","buttonExpande","expand","getBoundingClientRect","scrollIntoView","behavior","RelatedRichBlock","tag","styleHeader","cardType","triggerOnce","hasGradient","overlayHeader","picture","ShopRelatedBlock","firstTitle","first_title","secondTitle","price","active","enabled","childrenPosition","onChange","input","checked","knob","right","toolbarStyles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui-kit-2.cjs.production.min.js","sources":["../src/utils/makeClassName.ts","../src/Button/loader.tsx","../src/Button/index.tsx","../src/SvgSymbol/icons.ts","../src/SvgSymbol/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/Dropdown/index.tsx","../src/MaterialTitle/index.tsx","../src/RawHtmlBlock/index.tsx","../src/Switcher/index.tsx","../src/Toolbar/index.tsx","../src/ToolbarButton/index.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\nconst Loader: 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\nexport default Loader\n","import React, { FC } from 'react'\nimport { makeClassName } from '../utils/makeClassName'\nimport Loader from './loader'\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 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[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 <Loader />\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 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}\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 { 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","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 'lead_hr': {\n TagName = 'div'\n break\n }\n default:\n TagName = type\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. И только в интересах читателей',\n subtitle: 'Нам срочно нужна ваша поддержка',\n button: 'Хочу помочь',\n href: 'https://mdza.io/WP4YuV4xTEM'\n },\n en: {\n title: 'Meduza, working 24/7, always for our readers',\n subtitle: 'We need your help like never before',\n button: 'Okay!',\n href: 'https://mdza.io/qopxag5BGec'\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 '«Медуза» заблокирована в России. Мы были к этому готовы — и продолжаем работать. Несмотря ни на что',\n text:\n '<p>Нам нужна ваша помощь как никогда. Прямо сейчас. Дальше всем нам будет еще труднее. Мы независимое издание и работаем только в интересах читателей.</p>',\n button: 'Хочу помочь',\n href: 'https://mdza.io/yiNxPZ7Bs-k'\n },\n\n en: {\n title:\n 'Meduza has been blocked in Russia. We 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 of our 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 '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(gradients.bg_rgb, 'mediaBlockBottom')\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 optimized={urls} ratio={mobileRatio} display=\"narrow\" />\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","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 { 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 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 toolbarStyles from '../Toolbar/Toolbar.module.css'\nimport styles from './ToolbarButton.module.css'\n\nexport const ToolbarButton: React.FC<ToolbarButtonProps> = ({\n children,\n type,\n theme,\n isActive,\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 return (\n <li className={toolbarStyles.item}>\n <button\n data-testid=\"toolbar-button\"\n className={makeClassName(classNames)}\n type=\"button\"\n onClick={(): void => onClick(type)}\n >\n <SvgSymbol size=\"medium\" icon={type} styleContext=\"isInToolbar\" />\n {children && <span className={styles.text}>{children}</span>}\n </button>\n </li>\n )\n}\n"],"names":["makeClassName","list","filter","map","join","Loader","React","width","height","viewBox","xmlns","d","opacity","fillRule","attributeName","type","from","to","dur","repeatCount","Button","theme","size","state","styleContext","disabled","onClick","children","className","styles","root","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","receipt","read","listened","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","POST_MESSAGE_PREFIX","JSON","stringify","Lazy","useInView","threshold","ref","inView","entry","useState","visible","setVisible","useEffect","boundingClientRect","y","imageBreakpoints","imageConditionalKeys","xs","superFull","full","narrow","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","setIsLoaded","handleClick","show","blockStyles","maxWidth","pictureStyles","paddingBottom","isLoaded","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","innerWidth","documentElement","clientWidth","innerHeight","clientHeight","DotsOnImage","block","credit","dots","setRatio","container","useRef","title","setPopover","handleClickOutside","setDotSize","composedPath","indexOf","current","isVisible","dot","position","left","marker","isActive","backgroundColor","color","shouldShow","side","align","handleDotClick","svg_string","number","viewportSize","Tag","correlation","onlyOn","MediaCaption","caption","Table","rows","options","columnsWidth","columns_widths","tableCredit","table_credit","colors","table","tracks","row","i","cells","cell","j","header","fixedColumn","fixed_first_column","val","MaterialNote","item","BookmarkButton","isInBookmarks","control","Meta","hasSource","Timestamp","published","locale","timeFormat","preparedPublishedAt","publishedAt","dayjs","extend","relativeTime","fromNow","format","Error","suppressHydrationWarning","DangerousHTML","tagName","TagName","html","canRenderHtml","setCanRenderHtml","replaceScriptElementsRecursive","useCallback","node","childNodes","length","script","createElement","Math","random","toString","slice","innerHTML","attrs","attributes","setAttribute","name","value","parentElement","replaceChild","prepareAnchors","querySelectorAll","forEach","a","firstElementChild","EmbedGif","gif","mp4Url","videoFrozen","setVideoFrozen","videoElem","handleVideoTouch","handleVideoError","video","figure","objectWrap","playsInline","muted","loop","autoPlay","preload","EmbedBlock","only_on","provider","cc","small","small_url","large","large_url","gifUrl","gif_url","mp4_url","isPopoverShown","setIsPopoverShown","isProportional","mobileFullwidth","renderCC","proportional","filteredContext","startsWith","reduce","acc","push","object","gameEmbed","game_src","game_id","renderEmbed","IframeBlock","lang","rootEl","contentEl","scriptEl","range","createRange","setStart","textContent","appendChild","createContextualFragment","frame","querySelector","contentDocument","open","close","renderIframe","EmbedBlockContainer","wrap_with_iframe","QuoteBlock","CardTitle","index","text","ChapterBlock","subtitle","generateGradient","mediaBlockBottom","mediaBlockTop","SimpleTitle","first","RichTitle","second","as","featured","SimpleBlock","ListBlock","RelatedBlock","related","items","layout","Link","full_url","url","second_title","SourceBlock","quote","origin","cite","href","rel","SensitiveBlock","blurredImage","blurred_image","overlay","backgroundImage","button","figcaption","GroupedBlock","maxHeight","min","normalizedBoxesWidth","heigh","sumWidth","sum","hasFigcaption","MetaItem","hasBullets","bullets","MetaItemLive","DocumentItemsCount","one","two","five","n","i18n","ru","en","itemsCount","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","mobileRatio","mobile_ratio","gradients","text_rgb","bg_rgb","image","HalfBlock","ImportantLead","Spoiler","buttonTitle","btn_title","spoiled","setSpoiled","buttonCollapse","collapse","buttonExpande","expand","getBoundingClientRect","scrollIntoView","behavior","RelatedRichBlock","tag","styleHeader","cardType","triggerOnce","hasGradient","overlayHeader","picture","ShopRelatedBlock","firstTitle","first_title","secondTitle","price","active","enabled","childrenPosition","onChange","input","checked","knob","right","toolbarStyles"],"mappings":"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"}
|