@hhgtech/hhg-components 1.19.2 → 1.19.3
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/build/care.js +1 -1
- package/build/components/atoms/textArea/index.d.ts +2 -2
- package/build/components.js +1 -1
- package/build/cookieHelper-2ca633b5.js +2 -0
- package/build/{cookieHelper-715ce012.js.map → cookieHelper-2ca633b5.js.map} +1 -1
- package/build/esm/care.js +1 -1
- package/build/esm/components/atoms/textArea/index.d.ts +2 -2
- package/build/esm/components.js +1 -1
- package/build/esm/{cookieHelper-7d235823.js → cookieHelper-c439e940.js} +2 -2
- package/build/esm/{cookieHelper-7d235823.js.map → cookieHelper-c439e940.js.map} +1 -1
- package/build/esm/{index-29ec3e98.js → index-39602a38.js} +2 -2
- package/build/esm/{index-29ec3e98.js.map → index-39602a38.js.map} +1 -1
- package/build/esm/{index-3ed9e586.js → index-68af11c4.js} +2 -2
- package/build/esm/{index-3ed9e586.js.map → index-68af11c4.js.map} +1 -1
- package/build/esm/{index-6d2e5233.js → index-784db743.js} +2 -2
- package/build/esm/{index-6d2e5233.js.map → index-784db743.js.map} +1 -1
- package/build/esm/{index-36ac364b.js → index-9b7d6029.js} +2 -2
- package/build/esm/{index-36ac364b.js.map → index-9b7d6029.js.map} +1 -1
- package/build/esm/index.js +1 -1
- package/build/esm/{index.styled-220d5ec6.js → index.styled-94e62055.js} +2 -2
- package/build/esm/{index.styled-220d5ec6.js.map → index.styled-94e62055.js.map} +1 -1
- package/build/esm/navigation.js +1 -1
- package/build/esm/together.js +1 -1
- package/build/esm/{types-a4043d1f.js → types-355af28f.js} +2 -2
- package/build/esm/{types-a4043d1f.js.map → types-355af28f.js.map} +1 -1
- package/build/esm/{types-88470211.js → types-50e7bd36.js} +2 -2
- package/build/esm/{types-88470211.js.map → types-50e7bd36.js.map} +1 -1
- package/build/{index-e0cb03f5.js → index-2fc58ef1.js} +2 -2
- package/build/{index-e0cb03f5.js.map → index-2fc58ef1.js.map} +1 -1
- package/build/{index-3c4bfaee.js → index-47df1eaf.js} +2 -2
- package/build/{index-3c4bfaee.js.map → index-47df1eaf.js.map} +1 -1
- package/build/{index-ea3fd161.js → index-9e90ff46.js} +2 -2
- package/build/{index-ea3fd161.js.map → index-9e90ff46.js.map} +1 -1
- package/build/{index-5fec96ae.js → index-e8f5d7f5.js} +2 -2
- package/build/{index-5fec96ae.js.map → index-e8f5d7f5.js.map} +1 -1
- package/build/index.js +1 -1
- package/build/{index.styled-8c034498.js → index.styled-e08dcf9a.js} +2 -2
- package/build/{index.styled-8c034498.js.map → index.styled-e08dcf9a.js.map} +1 -1
- package/build/navigation.js +1 -1
- package/build/together.js +1 -1
- package/build/{types-426c7634.js → types-3a885bbd.js} +2 -2
- package/build/{types-426c7634.js.map → types-3a885bbd.js.map} +1 -1
- package/build/{types-b2449d3f.js → types-80aca43e.js} +2 -2
- package/build/{types-b2449d3f.js.map → types-80aca43e.js.map} +1 -1
- package/package.json +1 -1
- package/build/cookieHelper-715ce012.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.styled-8c034498.js","sources":["../src/components/atoms/avatar/index.tsx","../src/components/atoms/button/index.tsx","../src/components/atoms/heading/index.tsx","../src/components/molecules/dropdown/index.styled.tsx","../src/components/molecules/popup/index.styled.tsx","../src/components/molecules/popup/index.tsx","../node_modules/cookie/index.js","../node_modules/slugify/slugify.js","../src/together/api/paths.ts","../src/together/togetherComponentGlobalContext.tsx","../src/together/interfaces/constants.ts","../src/together/api/utils.ts","../src/together/api/dataTransform.ts","../src/together/hooks/useTogetherAuthRequiredAction.tsx","../src/together/components/atoms/loading/index.styled.tsx","../src/together/components/atoms/loading/index.tsx","../src/together/components/atoms/cardReactions/index.tsx","../src/together/components/atoms/userAvatar/index.styled.tsx","../src/together/components/atoms/userAvatar/index.tsx","../src/together/components/atoms/cardLink/index.styled.tsx","../src/misc/number.ts","../src/together/components/atoms/cardReactions/index.styled.tsx","../src/together/components/atoms/labelSortPin/labelSorting.tsx","../src/together/components/atoms/tagTopic/index.styled.tsx","../src/together/components/atoms/labelSortPin/index.styled.tsx","../src/together/components/atoms/labelSortPin/index.tsx","../src/together/components/organisms/popoverMenu/index.styled.tsx","../src/together/components/organisms/popoverMenu/index.tsx","../src/together/components/organisms/popoverMenu/treePopoverMenu.tsx","../src/together/assets/images/avatar-default.png","../src/together/components/molecules/popupDoctor/index.styled.tsx","../src/together/components/molecules/popupDoctor/index.tsx","../src/together/components/molecules/popupExpert/index.styled.tsx","../src/together/components/molecules/popupExpert/index.tsx","../src/together/components/molecules/popupHospital/index.styled.tsx","../src/together/components/molecules/popupHospital/index.tsx","../src/together/components/molecules/cardAuthor/customMMLocale/formatDistance.ts","../src/together/components/molecules/cardAuthor/customMMLocale/index.ts","../src/together/components/molecules/cardAuthor/index.styled.tsx","../src/together/components/molecules/cardAuthor/index.tsx","../node_modules/innertext/node_modules/html-entities/lib/surrogate-pairs.js","../node_modules/innertext/node_modules/html-entities/lib/xml-entities.js","../node_modules/innertext/node_modules/html-entities/lib/html4-entities.js","../node_modules/innertext/node_modules/html-entities/lib/html5-entities.js","../node_modules/innertext/node_modules/html-entities/lib/index.js","../node_modules/innertext/index.js","../src/together/utils/post.ts","../src/together/components/molecules/createPostDescription/index.styled.tsx","../src/together/components/molecules/createPostDescription/editor.tsx","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/react-contenteditable/lib/react-contenteditable.js","../node_modules/prop-types/index.js","../node_modules/fast-deep-equal/index.js","../src/together/components/molecules/createPostTitle/index.styled.tsx","../src/together/components/molecules/topicSelectList/index.styled.tsx","../src/together/components/molecules/createNewPostContent/index.styled.tsx","../src/together/components/molecules/popupFrame/index.styled.tsx","../src/together/components/molecules/popupFrame/index.tsx","../src/together/components/molecules/popupDanger/index.styled.tsx","../src/together/components/molecules/inputCommentBar/index.styled.tsx","../src/together/components/molecules/inputCommentBar/mainInputTriggerContext.tsx","../src/together/components/molecules/shareBox/index.styled.tsx","../src/together/components/molecules/shareBox/index.tsx","../src/together/assets/marrybaby/svg/zalo.png","../src/together/assets/images/icon-zalo.png","../src/together/assets/images/icon-whatsapp.png","../src/together/components/molecules/popupFrame/popupShare.tsx","../src/together/components/molecules/submitReportForm/index.styled.tsx","../src/together/components/molecules/postContent/index.styled.tsx","../src/together/components/molecules/postImagePreview/index.styled.tsx","../src/together/components/molecules/postImagePreview/postSingleImageViewPopup/index.styled.tsx","../node_modules/vanilla-lazyload/dist/lazyload.esm.js","../src/misc/lazyLoad.ts","../src/together/components/molecules/socialLinkPreview/index.styled.tsx","../src/together/components/organisms/cardReply/index.styled.tsx","../src/together/components/organisms/cardPost/index.styled.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\n\nimport { CSSProperties } from 'styled-components'\n\nimport { StyledAvatar } from './index.styled'\n\nexport type AvatarSize =\n | 'xs'\n | 'small'\n | 'medium'\n | 'large'\n | 'xl'\n | 'xxl'\n | 'xxxl'\n\nconst pxBySize: { [size in AvatarSize]: number } = {\n xs: 28,\n small: 32,\n medium: 40,\n large: 48,\n xl: 64,\n xxl: 80,\n xxxl: 96,\n}\n\nexport type Props = {\n size?: AvatarSize\n avatarImg?: JSX.Element\n avatarUrl?: string\n firstLetter?: string\n backgroundColor?: string\n onClick?: () => void\n className?: string\n type?: 'rounded' | 'square'\n style?: CSSProperties\n isAmp?: boolean\n width?: number\n height?: number\n}\n\nconst Avatar = ({\n type = 'square',\n size,\n avatarImg,\n avatarUrl,\n firstLetter,\n backgroundColor,\n onClick,\n style,\n className,\n isAmp = false,\n width,\n height,\n}: Props) => {\n const sizePx = size ? pxBySize[size] : undefined\n const [isImageLoadingError, setIsImageLoadingError] = useState(false)\n\n useEffect(() => {\n if (avatarUrl) {\n const img = document.createElement('img')\n img.setAttribute('src', avatarUrl)\n img.addEventListener('error', () => {\n setIsImageLoadingError(true)\n })\n }\n }, [avatarUrl, setIsImageLoadingError])\n\n const shouldRenderLetter =\n ((!avatarUrl && !avatarImg) || isImageLoadingError) && firstLetter\n\n return (\n <StyledAvatar\n style={style}\n data-avatar-type={type}\n onClick={onClick}\n className={className}\n size={!isAmp ? sizePx : undefined}\n backgroundColor={backgroundColor}\n avatarUrl={avatarUrl}\n data-is-amp={isAmp}\n width={width}\n height={height}\n >\n {avatarImg}\n {avatarUrl && !isImageLoadingError && <img src={avatarUrl} />}\n {shouldRenderLetter && firstLetter}\n </StyledAvatar>\n )\n}\n\nexport { Avatar }\n","import React, { HTMLAttributes, ReactNode } from 'react'\n\nimport { StyledButton, StyledLoader } from './index.styled'\n\nexport type Props = Omit<HTMLAttributes<HTMLButtonElement>, 'onClick'> & {\n size: 'lg' | 'md' | 'sm'\n children?: ReactNode\n color?: 'primary' | 'secondary' | 'transparent' | 'tertiary' | 'ghost'\n theme?: 'helloSites' | 'marryBaby'\n isDisabled?: boolean\n isBlock?: boolean\n title?: string\n className?: string\n icon?: JSX.Element\n isLoading?: boolean\n loadingText?: string\n onClick?: (evt?: any) => void\n dataEventCategory?: string\n dataEventAction?: string\n dataEventLabel?: string\n dataProductChannel?: string\n dataProductSku?: string\n dataProductBrand?: string\n dataProductName?: string\n dataProductPrice?: string\n dataProductCategory?: string\n dataProductPosition?: string\n isAmp?: boolean\n dataVarsTracking?: boolean\n on?: string\n type?: 'submit' | 'reset' | 'button'\n}\n\nconst Button = ({\n size,\n color = 'primary',\n theme = 'helloSites',\n isDisabled,\n isBlock,\n title,\n className,\n onClick,\n icon,\n children,\n isLoading,\n loadingText,\n dataEventCategory,\n dataEventAction,\n dataEventLabel,\n dataProductChannel,\n dataProductSku,\n dataProductBrand,\n dataProductName,\n dataProductPrice,\n dataProductCategory,\n dataProductPosition,\n isAmp,\n on,\n dataVarsTracking,\n type,\n ...rest\n}: Props) => {\n const getGtmProps = () => {\n if (isAmp) {\n return {\n 'data-vars-event-category': dataEventCategory,\n 'data-vars-event-action': dataEventAction,\n 'data-vars-event-label': dataEventLabel,\n 'data-vars-product-channel': dataProductChannel,\n 'data-vars-product-sku': dataProductSku,\n 'data-vars-product-brand': dataProductBrand,\n 'data-vars-product-name': dataProductName,\n 'data-vars-product-price': dataProductPrice,\n 'data-vars-product-category': dataProductCategory,\n 'data-vars-product-position': dataProductPosition,\n 'data-vars-tracking': dataVarsTracking,\n on: on,\n }\n } else {\n return {\n 'data-event-category': dataEventCategory,\n 'data-event-action': dataEventAction,\n 'data-event-label': dataEventLabel,\n 'data-product-channel': dataProductChannel,\n 'data-product-sku': dataProductSku,\n 'data-product-brand': dataProductBrand,\n 'data-product-name': dataProductName,\n 'data-product-price': dataProductPrice,\n 'data-product-category': dataProductCategory,\n 'data-product-position': dataProductPosition,\n }\n }\n }\n\n return (\n <StyledButton\n {...getGtmProps()}\n className={className}\n data-size={size}\n data-color={color}\n data-block={isBlock}\n data-has-icon={!!icon || undefined}\n data-theme={theme}\n disabled={isDisabled}\n onClick={(evt) => {\n !isLoading && !isDisabled && onClick && onClick(evt)\n }}\n title={title}\n data-is-loading={isLoading || undefined}\n buttonHasIcon={!!icon}\n buttonTheme={theme}\n buttonSize={size}\n buttonColor={color}\n buttonIsLoading={isLoading}\n buttonIsBlock={isBlock}\n type={type}\n {...rest}\n >\n {isLoading ? (\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 24,\n }}\n >\n {(color === 'secondary' ||\n color === 'transparent' ||\n color === 'tertiary' ||\n color === 'ghost') && (\n <>\n <svg\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"#DBDFE5\"\n strokeWidth=\"4\"\n />\n </svg>\n\n <StyledLoader\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n <mask id=\"a\" fill=\"#fff\">\n <path d=\"M12 0A12 12 0 11.19 9.88l3.9.7A8.03 8.03 0 1012 3.98V0z\" />\n </mask>\n <path\n d=\"M12 0A12 12 0 11.19 9.88l3.9.7A8.03 8.03 0 1012 3.98V0z\"\n stroke=\"#2D87F3\"\n strokeWidth=\"8\"\n mask=\"url(#a)\"\n />\n </StyledLoader>\n </>\n )}\n\n {color === 'primary' && (\n <>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"white\" strokeWidth=\"4\" />\n </svg>\n <StyledLoader\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <mask id=\"path-1-inside-1\" fill=\"white\">\n <path d=\"M12 0C14.464 2.93833e-08 16.8683 0.758527 18.8863 2.17253C20.9042 3.58653 22.438 5.58746 23.2791 7.90347C24.1203 10.2195 24.2281 12.7383 23.5879 15.1177C22.9477 17.4971 21.5906 19.6218 19.7009 21.2031C17.8111 22.7843 15.4804 23.7456 13.0254 23.9561C10.5704 24.1667 8.11007 23.6164 5.97869 22.38C3.8473 21.1436 2.14819 19.281 1.1122 17.0454C0.0761991 14.8097 -0.246461 12.3093 0.188053 9.8839L4.09856 10.5845C3.8079 12.2069 4.02374 13.8795 4.71676 15.375C5.40977 16.8705 6.54637 18.1165 7.97213 18.9435C9.39789 19.7706 11.0437 20.1387 12.6859 19.9979C14.3282 19.857 15.8873 19.214 17.1514 18.1563C18.4155 17.0985 19.3233 15.6772 19.7516 14.0856C20.1798 12.4939 20.1077 10.8089 19.545 9.25969C18.9823 7.71042 17.9563 6.37193 16.6065 5.42605C15.2566 4.48017 13.6483 3.97277 12 3.97277L12 0Z\" />\n </mask>\n <path\n d=\"M12 0C14.464 2.93833e-08 16.8683 0.758527 18.8863 2.17253C20.9042 3.58653 22.438 5.58746 23.2791 7.90347C24.1203 10.2195 24.2281 12.7383 23.5879 15.1177C22.9477 17.4971 21.5906 19.6218 19.7009 21.2031C17.8111 22.7843 15.4804 23.7456 13.0254 23.9561C10.5704 24.1667 8.11007 23.6164 5.97869 22.38C3.8473 21.1436 2.14819 19.281 1.1122 17.0454C0.0761991 14.8097 -0.246461 12.3093 0.188053 9.8839L4.09856 10.5845C3.8079 12.2069 4.02374 13.8795 4.71676 15.375C5.40977 16.8705 6.54637 18.1165 7.97213 18.9435C9.39789 19.7706 11.0437 20.1387 12.6859 19.9979C14.3282 19.857 15.8873 19.214 17.1514 18.1563C18.4155 17.0985 19.3233 15.6772 19.7516 14.0856C20.1798 12.4939 20.1077 10.8089 19.545 9.25969C18.9823 7.71042 17.9563 6.37193 16.6065 5.42605C15.2566 4.48017 13.6483 3.97277 12 3.97277L12 0Z\"\n stroke=\"#91CAFF\"\n strokeWidth=\"8\"\n mask=\"url(#path-1-inside-1)\"\n />\n </StyledLoader>\n </>\n )}\n\n <span>{loadingText}</span>\n </div>\n ) : (\n <span>\n {!isLoading && <span className=\"button-icon\">{icon}</span>} {children}\n </span>\n )}\n </StyledButton>\n )\n}\n\nexport { Button }\n","import React, { ReactNode } from 'react'\n\nimport { CSSProperties } from 'styled-components'\n\nimport { StyledHeading } from './index.styled'\n\nexport type Props = {\n tag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n children: ReactNode\n title?: string\n color?: string\n className?: string\n style?: CSSProperties\n fontWeight?: 'bold' | 'semibold'\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n dataEventCategory?: string\n dataEventAction?: string\n dataEventLabel?: string\n}\n\nconst Heading = ({\n as,\n tag,\n className,\n children,\n title,\n color,\n style,\n fontWeight,\n dataEventCategory,\n dataEventAction,\n dataEventLabel,\n}: Props) => {\n const asTag = as || tag\n return (\n <StyledHeading\n title={title}\n style={{\n ...(color\n ? { ['--custom-heading-color' as string]: color }\n : undefined),\n ...style,\n }}\n data-tag={tag}\n data-font-weight={fontWeight || undefined}\n data-event-category={dataEventCategory}\n data-event-action={dataEventAction}\n data-event-label={dataEventLabel}\n as={asTag}\n className={className}\n headingFontWeight={fontWeight}\n headingTag={tag}\n >\n {children}\n </StyledHeading>\n )\n}\n\nexport { Heading }\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledDropdown = styled.div`\n --dropdown-padding: 12px 18px 12px 16px;\n position: relative;\n box-sizing: border-box;\n border: 1px solid ${(props: ThemeProps) => props.theme.colors.gray200};\n background: url(\"data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%23595959' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A\")\n no-repeat;\n background-position: right 16px center;\n border-radius: 6px;\n\n &[data-disabled='true'],\n :disabled {\n background-color: #f2f2f2;\n cursor: not-allowed;\n }\n\n &[data-size='sm'] {\n font-size: 13px;\n line-height: 20px;\n }\n &[data-size='md'] {\n font-size: 14px;\n line-height: 21px;\n }\n &[data-size='lg'] {\n font-size: 16px;\n line-height: 24px;\n }\n\n &[data-has-icons='true'] {\n border: none;\n background: ${(props: ThemeProps) => props.theme.colors.gray100};\n\n img,\n svg {\n display: inline-block;\n max-width: 16px;\n margin-right: 6px;\n }\n\n span {\n display: inline-block;\n vertical-align: middle;\n }\n\n &:hover {\n box-shadow: none;\n }\n > div {\n position: relative;\n display: flex;\n width: 100%;\n box-sizing: border-box;\n align-items: center;\n }\n > div::after {\n position: absolute;\n top: 50%;\n right: 12px;\n width: 10px;\n height: 8px;\n background-image: url(\"data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%23595959' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A\");\n background-repeat: no-repeat;\n content: '';\n transform: translateY(-50%);\n }\n }\n\n &:hover {\n box-shadow: 0 0 2px 2px ${(props: ThemeProps) => props.theme.colors.blue200};\n }\n\n &[data-is-native='true'] {\n padding: var(--dropdown-padding);\n line-height: 24px;\n\n &:focus {\n box-shadow: 0px 0px 2px 2px\n ${(props: ThemeProps) => props.theme.colors.blue200};\n }\n }\n`\n\nexport const StyledDropdownName = styled.div`\n padding: var(--dropdown-padding);\n cursor: pointer;\n\n &.with-label {\n padding-top: 34px;\n padding-bottom: 12px;\n }\n &[data-dropdown-open] {\n padding: 11px 15px 11px 15px;\n border: 1px solid ${(props: ThemeProps) => props.theme.colors.primaryBase};\n border-radius: 6px;\n box-shadow: 0 0 2px 2px ${(props: ThemeProps) => props.theme.colors.blue200};\n }\n`\n\nexport const StyledDropdownList = styled.ul`\n position: absolute;\n top: 100%;\n right: 0;\n left: 0;\n display: block;\n margin-top: 4px;\n background: ${(props: ThemeProps) => props.theme.colors.white};\n border-radius: 6px;\n box-shadow: -1px 1px 2px rgba(67, 70, 74, 0.0001),\n -2px 2px 5px rgba(67, 86, 100, 0.123689);\n cursor: pointer;\n\n &[data-has-icons='true'] {\n border: 1px solid ${(props: ThemeProps) => props.theme.colors.gray200};\n background: white;\n box-shadow: none;\n filter: drop-shadow(0px 10px 16px rgba(0, 0, 0, 0.04));\n }\n`\n\nexport const StyledDropdownOption = styled.li`\n display: flex;\n padding: 12px 18px 12px 16px;\n &[data-disabled='true'] {\n cursor: not-allowed;\n color: #bfbfbf;\n & > * {\n pointer-events: none;\n }\n }\n &:hover,\n :active {\n background: ${(props: ThemeProps) => props.theme.colors.gray100};\n }\n`\nexport const StyledIcon = styled.div`\n max-width: 16px;\n margin-right: 8px;\n`\n\nexport const StyledDropdownLabel = styled.div`\n position: absolute;\n top: 12px;\n left: 16px;\n pointer-events: none;\n`\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledPopup = styled.div`\n position: fixed;\n left: 50%;\n\n padding: 0 16px 32px;\n background-color: ${(props: ThemeProps) => props.theme.colors.white};\n border-radius: 6px;\n box-shadow: 0px 4px 8px ${(props: ThemeProps) => props.theme.colors.gray200};\n transform: translate(-50%, -50%);\n transition: all 0.5s ease-in-out;\n visibility: hidden;\n\n &[data-open='true'] {\n z-index: 200;\n top: 50%;\n opacity: 1;\n visibility: visible;\n }\n\n &[data-open='false'] {\n top: -50%;\n }\n\n &[data-type='lead'] {\n width: 332px;\n height: 460px;\n\n div {\n top: -15px;\n right: -15px;\n }\n }\n\n &[data-type='form'] {\n width: 496px;\n height: 548px;\n ${MediaQueries.mbDown} {\n width: 340px;\n }\n }\n\n &[data-type='confirm'] {\n ${MediaQueries.mbDown} {\n width: calc(100% - 32px);\n }\n ${MediaQueries.mbUp} {\n width: 100%;\n max-width: 407px;\n }\n }\n\n .popup-content {\n position: relative;\n z-index: 111;\n height: 100%;\n padding: 16px;\n }\n\n .close-button {\n position: absolute;\n top: 16px;\n right: 0;\n cursor: pointer;\n\n img {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n }\n }\n`\n\nexport const StyledPopupWrapper = styled.div`\n position: fixed;\n z-index: 110;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n align-items: center;\n background: rgba(38, 38, 38, 0.3);\n\n &[data-open='false'] {\n display: none;\n }\n`\n","import React from 'react'\n\nimport { StyledPopup, StyledPopupWrapper } from './index.styled'\n\nexport type Props = {\n type: 'lead' | 'form' | 'confirm' | 'profile'\n closeIcon?: JSX.Element\n isOpen: boolean\n onClose: () => void\n children?: any\n className?: string\n enableAnimation?: boolean\n}\n\nconst Popup = ({\n type = 'lead',\n closeIcon,\n isOpen = true,\n onClose,\n children,\n className = '',\n enableAnimation = true,\n}: Props) => {\n return (\n <>\n <StyledPopup\n data-open={isOpen}\n data-type={type}\n data-animation={enableAnimation}\n >\n <div className={`${className || ''} popup-content`}>\n {!!closeIcon && (\n <div className=\"close-button\" onClick={onClose}>\n {closeIcon}\n </div>\n )}\n {children}\n </div>\n </StyledPopup>\n <StyledPopupWrapper data-open={isOpen} onClick={onClose} />\n </>\n )\n}\n\nexport { Popup }\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar __toString = Object.prototype.toString\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var dec = opt.decode || decode;\n\n var index = 0\n while (index < str.length) {\n var eqIdx = str.indexOf('=', index)\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break\n }\n\n var endIdx = str.indexOf(';', index)\n\n if (endIdx === -1) {\n endIdx = str.length\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(';', eqIdx - 1) + 1\n continue\n }\n\n var key = str.slice(index, eqIdx).trim()\n\n // only assign once\n if (undefined === obj[key]) {\n var val = str.slice(eqIdx + 1, endIdx).trim()\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n\n index = endIdx + 1\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n var expires = opt.expires\n\n if (!isDate(expires) || isNaN(expires.valueOf())) {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + expires.toUTCString()\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.priority) {\n var priority = typeof opt.priority === 'string'\n ? opt.priority.toLowerCase()\n : opt.priority\n\n switch (priority) {\n case 'low':\n str += '; Priority=Low'\n break\n case 'medium':\n str += '; Priority=Medium'\n break\n case 'high':\n str += '; Priority=High'\n break\n default:\n throw new TypeError('option priority is invalid')\n }\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n *\n * @param {string} str\n * @returns {string}\n */\n\nfunction decode (str) {\n return str.indexOf('%') !== -1\n ? decodeURIComponent(str)\n : str\n}\n\n/**\n * URL-encode value.\n *\n * @param {string} str\n * @returns {string}\n */\n\nfunction encode (val) {\n return encodeURIComponent(val)\n}\n\n/**\n * Determine if value is a Date.\n *\n * @param {*} val\n * @private\n */\n\nfunction isDate (val) {\n return __toString.call(val) === '[object Date]' ||\n val instanceof Date\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ō\":\"O\",\"ō\":\"o\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"Ə\":\"E\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"ə\":\"e\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"Ա\":\"A\",\"Բ\":\"B\",\"Գ\":\"G\",\"Դ\":\"D\",\"Ե\":\"E\",\"Զ\":\"Z\",\"Է\":\"E\\'\",\"Ը\":\"Y\\'\",\"Թ\":\"T\\'\",\"Ժ\":\"JH\",\"Ի\":\"I\",\"Լ\":\"L\",\"Խ\":\"X\",\"Ծ\":\"C\\'\",\"Կ\":\"K\",\"Հ\":\"H\",\"Ձ\":\"D\\'\",\"Ղ\":\"GH\",\"Ճ\":\"TW\",\"Մ\":\"M\",\"Յ\":\"Y\",\"Ն\":\"N\",\"Շ\":\"SH\",\"Չ\":\"CH\",\"Պ\":\"P\",\"Ջ\":\"J\",\"Ռ\":\"R\\'\",\"Ս\":\"S\",\"Վ\":\"V\",\"Տ\":\"T\",\"Ր\":\"R\",\"Ց\":\"C\",\"Փ\":\"P\\'\",\"Ք\":\"Q\\'\",\"Օ\":\"O\\'\\'\",\"Ֆ\":\"F\",\"և\":\"EV\",\"ء\":\"a\",\"آ\":\"aa\",\"أ\":\"a\",\"ؤ\":\"u\",\"إ\":\"i\",\"ئ\":\"e\",\"ا\":\"a\",\"ب\":\"b\",\"ة\":\"h\",\"ت\":\"t\",\"ث\":\"th\",\"ج\":\"j\",\"ح\":\"h\",\"خ\":\"kh\",\"د\":\"d\",\"ذ\":\"th\",\"ر\":\"r\",\"ز\":\"z\",\"س\":\"s\",\"ش\":\"sh\",\"ص\":\"s\",\"ض\":\"dh\",\"ط\":\"t\",\"ظ\":\"z\",\"ع\":\"a\",\"غ\":\"gh\",\"ف\":\"f\",\"ق\":\"q\",\"ك\":\"k\",\"ل\":\"l\",\"م\":\"m\",\"ن\":\"n\",\"ه\":\"h\",\"و\":\"w\",\"ى\":\"a\",\"ي\":\"y\",\"ً\":\"an\",\"ٌ\":\"on\",\"ٍ\":\"en\",\"َ\":\"a\",\"ُ\":\"u\",\"ِ\":\"e\",\"ْ\":\"\",\"٠\":\"0\",\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"پ\":\"p\",\"چ\":\"ch\",\"ژ\":\"zh\",\"ک\":\"k\",\"گ\":\"g\",\"ی\":\"y\",\"۰\":\"0\",\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"Ṣ\":\"S\",\"ṣ\":\"s\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"–\":\"-\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"„\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₺\":\"turkish lira\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\",\"ﻵ\":\"laa\",\"ﻷ\":\"laa\",\"ﻹ\":\"lai\",\"ﻻ\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"Й\":\"Y\",\"Ц\":\"Ts\",\"Щ\":\"Sht\",\"Ъ\":\"A\",\"Ь\":\"Y\",\"й\":\"y\",\"ц\":\"ts\",\"щ\":\"sht\",\"ъ\":\"a\",\"ь\":\"y\"},\"de\":{\"Ä\":\"AE\",\"ä\":\"ae\",\"Ö\":\"OE\",\"ö\":\"oe\",\"Ü\":\"UE\",\"ü\":\"ue\",\"ß\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"∑\":\"summe\",\"∞\":\"unendlich\",\"♥\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"¢\":\"centavos\",\"£\":\"libras\",\"¤\":\"moneda\",\"₣\":\"francos\",\"∑\":\"suma\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"¢\":\"centime\",\"£\":\"livre\",\"¤\":\"devise\",\"₣\":\"franc\",\"∑\":\"somme\",\"∞\":\"infini\",\"♥\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"¢\":\"centavo\",\"∑\":\"soma\",\"£\":\"libra\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"uk\":{\"И\":\"Y\",\"и\":\"y\",\"Й\":\"Y\",\"й\":\"y\",\"Ц\":\"Ts\",\"ц\":\"ts\",\"Х\":\"Kh\",\"х\":\"kh\",\"Щ\":\"Shch\",\"щ\":\"shch\",\"Г\":\"H\",\"г\":\"h\"},\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"},\"da\":{\"Ø\":\"OE\",\"ø\":\"oe\",\"Å\":\"AA\",\"å\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"større end\"},\"nb\":{\"&\":\"og\",\"Å\":\"AA\",\"Æ\":\"AE\",\"Ø\":\"OE\",\"å\":\"aa\",\"æ\":\"ae\",\"ø\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"Å\":\"AA\",\"Ä\":\"AE\",\"Ö\":\"OE\",\"å\":\"aa\",\"ä\":\"ae\",\"ö\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch] || charMap[ch] || ch;\n if (appendChar === replacement) {\n appendChar = ' ';\n }\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n","export const PATHS = {\n BASE_API_PATH: '/',\n PROFILE: 'profile?website_url={website_url}',\n SEARCH_USER: 'profile/search?website_url={website_url}&name={name}',\n FETCH_PREVIEW: 'fetch/preview?website_url={website_url}',\n FETCH_POST_OR_TOPIC:\n 'fetch/{slug}?website_url={website_url}&community_slug={communitySlug}',\n POST: {\n LIST: 'post?website_url={website_url}&slug={slug}&pin={pin}&page={page}&community_id={communityId}&topic_id={topicId}&sort_by={sort}&id={id}',\n DETAIL_BY_ID_OR_SLUG: 'post/{idSlug}?website_url={website_url}',\n CREATE: 'post/create?website_url={website_url}',\n LIKE: 'post/{id}/like?website_url={website_url}',\n DELETE: 'post/{id}/delete?website_url={website_url}',\n REPORT: 'post/{id}/report?website_url={website_url}',\n UPDATE: 'post/{id}/update?website_url={website_url}',\n FOLLOW: 'post/{id}/follow?website_url={website_url}',\n CREATE_ARTICLE_COMMENT: 'article-comment/create?website_url={website_url}',\n },\n COMMENT: {\n LIST: 'comment?website_url={website_url}&post_id={postId}&page={page}&sort_by={sort}&items_per_page={perPage}&_without_reply={withoutReply}',\n CREATE: 'comment/create?website_url={website_url}',\n REPLY: 'comment/reply?website_url={website_url}',\n DELETE: 'comment/{id}/delete?website_url={website_url}',\n LIKE: 'comment/{id}/like?website_url={website_url}',\n UNLIKE: 'comment/{id}/unlike?website_url={website_url}',\n IMAGE_UPLOAD: 'comment/image/upload?website_url={website_url}',\n },\n COMMUNITY: {\n LIST: 'community?website_url={website_url}&page={page}',\n DETAIL_BY_ID_OR_SLUG: 'community/{idSlug}?website_url={website_url}',\n JOIN: 'community/join?website_url={website_url}',\n LEAVE: 'community/leave?website_url={website_url}',\n },\n TOPIC: {\n LIST: 'topic?website_url={website_url}&community_slug={communitySlug}&community_id={communityId}&page={page}',\n DETAIL_BY_ID_OR_SLUG:\n 'topic/{idSlug}?website_url={website_url}&community_slug={communitySlug}&community_id={communityId}',\n HEALTH_TOOLS: 'tools?topic_id={topicId}&website_url={website_url}',\n SUBOTS: 'subots?topic_id={topicId}&website_url={website_url}',\n SUGGESTED_POSTS:\n 'suggested-posts?topic_id={topicId}&website_url={website_url}&page={page}',\n JOIN: 'topic/join?website_url={website_url}',\n LEAVE: 'topic/leave?website_url={website_url}',\n },\n BOOKMARK: {\n LIST: 'bookmark?user_id={userId}&website_url={website_url}',\n CREATE: 'bookmark/create?website_url={website_url}',\n DELETE: 'bookmark/delete?website_url={website_url}',\n },\n // OLD\n\n UPLOAD_IMAGE: 'auth/comment/image/upload?website_url={website_url}',\n}\nexport const SUBOT_PATHS = {\n TOGETHER: {\n SURVEY: {\n GET_FIRST_NODE: 'frontend/api/bots/{botId}',\n CHAT_WITH_BOT: 'frontend/api/inline/messages',\n },\n },\n}\nexport const CARE_PATHS = {\n GET_DOCTOR_INFO: 'api/doctors/{doctorId}?site={website_url}',\n GET_HOSPITAL_INFO:\n 'api/hospital/branch/{hospital_branch_id}?site={website_url}',\n}\nexport const DISCOVER_PATHS = {\n BASE_API_PATH: '/',\n GET_SEARCH_ARTICLES: 'search?s={keyword}&page={page}',\n // GET_TOP_CATEGORIES: 'categories',\n GET_ALL_CATEGORIES: 'categories?type=all',\n GET_HOMEPAGE_POSTS: 'home/trending-post?type={type}',\n GET_HOMEPAGE_LATEST_POSTS: 'articles?page=1&_islatest=1',\n GET_ARTICLE_DETAIL:\n 'article/{slug}?skip_ids={skipIds}&_isrelated={isRelated}',\n GET_CATEGORY_DETAIL: 'category/{slug}',\n GET_CATEGORY_OR_ARTICLE_DETAIL: 'fetch/{fullSlug}',\n GET_PREVIEW_ARTICLE: 'fetch/{fullSlug}?preview_nonce={nonce}&preview=true',\n GET_ARTICLE_OF_CATEGORY:\n 'articles?category_id={categoryId}&page={currentPage}',\n GET_PAGE_STATIC: 'page/{slug}',\n GET_ALL_HEALTH_TOOLS: 'healthtools',\n GET_ALL_MARRYBABY_HEALTH_TOOLS: 'health-tools',\n GET_HEALTH_TOOLS_BY_CATEGORY: 'healthtools?_hasgroup=1',\n GET_AUTHOR: 'author/{slug}',\n GET_ALL_EXPERTS: 'experts',\n GET_ALL_EXPERTS_PAGING: 'experts?page={page}',\n GET_EXPERT: 'expert/{slug}',\n GET_EXPERT_POST: 'expert/article?page={page}',\n POST_ARTICLE_FEEDBACK: 'article/feedback/{id}',\n GET_AZ_DRUGS: 'category/a-z/{category}',\n GET_HOMEPAGE_MEDICAL_REVIEWED: 'home/medical-reviewed',\n GET_ARTICLES_BY_IDS: 'articles?ids={ids}',\n GET_ARTICLE_OF_CATEGORY_NO_EXPLAINERS:\n 'articles?category_id={categoryId}&page={currentPage}&skip_ids={ids}',\n GET_EXPERT_OF_CATEGORY: 'category/expert/?id={id}',\n GET_DUE_DATE_INFO: 'health-tools/due-date-calculator/info',\n GET_DUE_DATE_ALL_WEEKS: 'health-tools/due-date-calculator/all',\n GET_DUE_DATE_SUGGESTED_ARTICLES:\n 'health-tools/due-date-calculator/result?from_week={from}&to_week={to}',\n GET_PROFILE: 'user/profile',\n GET_ADMIN_PROFILE: 'GET_ADMIN_PROFILE',\n GET_FEATURE: 'feature',\n POST_NEW_FEATURE: 'feature/update',\n CREATE_BOOKMARK: 'bookmark/create',\n DELETE_BOOKMARK: 'bookmark/delete',\n DELETE_ALL_BOOKMARK: 'bookmark/delete-all',\n GET_ALL_BOOKMARK: 'bookmark',\n SSO_USER_PROFILE: 'user',\n SSO_USER_BOOKMARKS: 'user/bookmarks',\n SSO_USER_PASSWORD: 'user/settings/password',\n SSO_USER_EMAIL: 'user/settings/update-email',\n SSO_CLOSE_ACCOUNT: 'user/settings/close-account',\n SSO_HELP: 'user/settings/help',\n GET_HEALTH_TOOL_OVULATION_INFO: 'health-tools/ovulation-calculator/info',\n GET_HEALTH_TOOL_OVULATION_SUGGESTED_ARTICLES:\n 'health-tools/ovulation-calculator/result?method={method}', // method: 1, 2, 3\n GET_HEALTH_TOOL_BMI_INFO: 'health-tools/bmi-calculator/info',\n GET_HEALTH_TOOL_BMI_RESULT:\n 'health-tools/bmi-calculator/result?gender={gender}&bmi={bmi}&age={age}',\n GET_HEALTH_TOOL_BMR_INFO: 'health-tools/bmr-calculator/info',\n GET_HEALTH_TOOL_BMR_RESULT:\n 'health-tools/bmr-calculator/result?kcals={kcals}&gender={gender}&age={age}',\n GET_HEALTH_TOOL_PWG_INFO: 'health-tools/preweight-gain-calculator/info',\n GET_HEALTH_TOOL_THR_INFO: 'health-tools/target-heart-rate/info',\n POST_UPDATE_LOCATION: 'tracking/geo/',\n // SIDIS\n GET_SIDIS_DUE_DATE: 'frontend/tools/due_date',\n GET_SIDIS_OVULATION: 'frontend/tools/ovulation',\n GET_SIDIS_BMI: 'frontend/tools/bmi',\n GET_SIDIS_BMR: 'frontend/tools/bmr',\n POST_LOGOUT: 'user/logout',\n OVULATION_CREATE_EVENT:\n 'ovulation/event?method={method}&day={day}&cycle={cycle}&period={period}&token={token}&user_id={user_id}',\n GET_ALL_SPOTLIGHT: 'spotlights?per_page={perPage}&order_by={orderBy}',\n SSO_UPDATE_FIRST_TIME_BOOKMARK: 'bookmark/update-first-time',\n POST_COMMENT_NOTIFICATION: 'comment/notification',\n GET_ABOUT_US_DATA: 'about',\n POST_LEAD_IMPRESSION: 'campaign/{campaignCode}/impression',\n POST_LEAD_POPUP_EXIT: 'campaign/{campaignCode}/popup_exit',\n POST_LEAD_LEAD: 'campaign/{campaignCode}/lead',\n POST_SSO_VERIFY_TOKEN: 'verify-id-token',\n GET_LANDING_PAGE_FIRST_NODE: 'landing_page/bot',\n GET_LANDING_PAGE_NEXT_NODE: 'landing_page/messages',\n POST_LANDING_PAGE_IMPRESSION: 'landing_page/impressions',\n POST_LANDING_PAGE_CLICK: 'landing_page/clicks',\n FETCH_URL_DATA: 'preview',\n GET_SPOTLIGHT_LANDING: 'spotlight/{slug}',\n GET_FOOTER_INFO: 'footer',\n CHECK_SSO_EMAIL: 'member/check-email',\n\n GET_HOMEPAGE_SITEWIDE_BANNER: 'home/sitewide-banner',\n GET_DYNAMIC_FOOTER: 'menu/footer',\n GET_EXPERTS: 'experts?page={page}&number={perPage}&s={search}',\n GET_EXPERT_BY_ID: 'expert/{id}',\n}\n\nexport const ADMIN_PATHS = {\n SEARCH_USER: 'admin/profile/search?website_url={website_url}&name={name}',\n COMMENT: {\n IMAGE_UPLOAD: 'admin/comment/image/upload?website_url={website_url}',\n },\n}\n","import React, { createContext, ReactNode, useEffect, useState } from 'react'\n\nimport { LocaleType } from 'interfaces/types'\n\nimport { PATHS } from './api/paths'\nimport { callApiWithAuth, getApiPath } from './api/utils'\n\nexport type Role = 'user' | 'admin'\n\nexport type UserInfo = {\n name?: string\n url?: string\n phone?: string\n username?: string\n avatar?: string\n email?: string\n phone_verified?: boolean\n birthday?: string\n gender?: number\n id?: number\n total_bookmark?: number\n bookmarks?: Array<string | number>\n postCount?: number\n role?: Role\n commentCount?: number\n communities_interacted?: number\n partnerId?: string\n first_time_bookmark?: boolean\n provider?: string\n}\n\nexport type PushNotificationPayloadType = {\n message: string\n type: 'success' | 'danger' | 'info' | 'warning'\n title?: string\n displayIcon?: string\n}\nexport type TogetherComponentGlobalContextType = {\n data: {\n locale?: LocaleType\n userInfo?: UserInfo\n togetherUserId?: number\n env?: {\n isMarryBaby?: boolean\n togetherBasePath?: string\n publicSSO?: string\n togetherBaseApiUrl?: string\n subotApiUrl?: string\n discoverBaseApiUrl?: string\n careBaseApiUrl?: string\n }\n router?: {\n asPath?: string\n basePath?: string\n query?: NodeJS.Dict<string | string[]>\n }\n }\n action: {\n pushNotifications?: (payload: PushNotificationPayloadType) => void\n sanitizeFunction?: (h: string) => string\n }\n}\nexport const DefaultComponentGlobalContextData: TogetherComponentGlobalContextType['data'] =\n {\n locale: 'vi-VN' as LocaleType,\n env: {\n isMarryBaby: false,\n togetherBasePath: '/community',\n },\n router: {\n basePath: '',\n asPath: '/',\n },\n }\n\nexport const TogetherComponentGlobalContext =\n createContext<TogetherComponentGlobalContextType>({\n data: DefaultComponentGlobalContextData,\n action: {\n pushNotifications: (s) => s,\n sanitizeFunction: (s) => s,\n },\n })\n\nexport let GlobalData: TogetherComponentGlobalContextType['data'] =\n DefaultComponentGlobalContextData\n\nexport type Props = {\n userInfo?: UserInfo\n locale?: LocaleType\n children?: ReactNode\n translation?: { [key: string]: string }\n router?: any\n pushNotifications?: (payload: PushNotificationPayloadType) => void\n sanitizeFunction?: (h: string) => string\n env?: TogetherComponentGlobalContextType['data']['env']\n}\nexport const TogetherComponentGlobalContextProvider = ({\n locale = 'vi-VN',\n children,\n userInfo,\n router,\n env = {\n isMarryBaby: false,\n togetherBasePath: '/community',\n },\n sanitizeFunction = (s) => s,\n pushNotifications = () => false,\n}: Props) => {\n const [togetherUserId, setTogetherUserId] = useState()\n\n GlobalData = {\n userInfo,\n locale,\n togetherUserId,\n router,\n env,\n }\n useEffect(() => {\n if (userInfo?.id) {\n callApiWithAuth(\n getApiPath(PATHS.PROFILE, {\n _locale: locale,\n }),\n 'GET',\n ).then((res) => {\n setTogetherUserId(res?.data?.id)\n })\n }\n }, [userInfo?.id])\n return (\n <TogetherComponentGlobalContext.Provider\n value={{\n data: {\n userInfo,\n locale,\n togetherUserId,\n router,\n env,\n },\n action: {\n pushNotifications,\n sanitizeFunction,\n },\n }}\n >\n {children}\n </TogetherComponentGlobalContext.Provider>\n )\n}\n","import { LocaleType } from 'src/interfaces/types'\n\nimport { BmrActiveLevel, CareLocalisedSlugsType } from './types'\nexport const POST_DATE_FORMAT = 'dd/MM/yyyy'\nexport const NORMAL_DATE_FORMAT = 'YYYY-MM-DD'\n\nexport const DEFAULT_AVATAR_IMG = `/images/avatar.jpg`\nexport const DEFAULT_RESULT_IMG = `/images/default.png`\nexport const DEFAULT_IMG = `/images/default-image.jpg`\n\nexport const BMI_LEVELS = [\n 'underweight',\n 'healthy',\n 'overweight',\n 'obese_level_1',\n 'obese_level_2',\n]\n\nexport const BMR_LEVELS = ['low', 'normal', 'high']\nexport const CORAL_TOKEN_COOKE = 'coral_together_user_token'\n\nexport const HEALTH_TOOL_TYPE = {\n DUE_DATE: 'DUE_DATE',\n BMI: 'BMI',\n BMR: 'BMR',\n OVULATION: 'OVULATION',\n IFRAME: 'IFRAME',\n PWG: 'PWG',\n THR: 'THR',\n} as const\n\nexport const LOCALE_HEALTH_TOOLS: {\n [locale: string]: {\n [ht: string]: string\n }\n} = {\n 'id-ID': {\n 'kalkulator-bmi': HEALTH_TOOL_TYPE.BMI,\n 'kebutuhan-kalori': HEALTH_TOOL_TYPE.BMR,\n 'kalkulator-hari-perkiraan-lahir': HEALTH_TOOL_TYPE.DUE_DATE,\n 'kalkulator-masa-subur-2': HEALTH_TOOL_TYPE.OVULATION,\n 'kalkulator-kenaikan-berat-badan-ibu-hamil': HEALTH_TOOL_TYPE.PWG,\n 'kalkulator-detak-jantung-saat-olahraga': HEALTH_TOOL_TYPE.THR,\n },\n 'ms-MY': {\n 'kalkulator-bmi': HEALTH_TOOL_TYPE.BMI,\n 'kalkulator-bmr': HEALTH_TOOL_TYPE.BMR,\n 'kalkulator-tarikh-bersalin': HEALTH_TOOL_TYPE.DUE_DATE,\n 'kalkulator-kesuburan': HEALTH_TOOL_TYPE.OVULATION,\n 'kalkulator-tambah-berat-badan-hamil': HEALTH_TOOL_TYPE.PWG,\n 'target-heart-rate-calculator': HEALTH_TOOL_TYPE.THR,\n },\n 'vi-VN': {\n 'cach-tinh-chi-so-bmi': HEALTH_TOOL_TYPE.BMI,\n 'tinh-chi-so-bmr': HEALTH_TOOL_TYPE.BMR,\n 'cong-cu-tinh-ngay-du-sinh': HEALTH_TOOL_TYPE.DUE_DATE,\n 'tinh-ngay-rung-trung': HEALTH_TOOL_TYPE.OVULATION,\n 'cong-cu-tinh-can-nang-khi-mang-thai': HEALTH_TOOL_TYPE.PWG,\n 'cong-cu-do-nhip-tim': HEALTH_TOOL_TYPE.THR,\n },\n 'zh-TW': {\n 'bmi-calculator': HEALTH_TOOL_TYPE.BMI,\n 'bmr-calculator': HEALTH_TOOL_TYPE.BMR,\n 'due-date-calculator': HEALTH_TOOL_TYPE.DUE_DATE,\n 'ovulation-calculator': HEALTH_TOOL_TYPE.OVULATION,\n 'pregnancy-weight-gain-calculator': HEALTH_TOOL_TYPE.PWG,\n 'target-heart-rate-calculator': HEALTH_TOOL_TYPE.THR,\n },\n 'en-PH': {\n 'bmi-calculator': HEALTH_TOOL_TYPE.BMI,\n 'bmr-calculator': HEALTH_TOOL_TYPE.BMR,\n 'due-date-calculator': HEALTH_TOOL_TYPE.DUE_DATE,\n 'ovulation-calculator': HEALTH_TOOL_TYPE.OVULATION,\n 'pregnancy-weight-gain-calculator': HEALTH_TOOL_TYPE.PWG,\n 'target-heart-rate-calculator': HEALTH_TOOL_TYPE.THR,\n },\n 'th-TH': {\n 'เครื่องคำนวณหา-ค่าดัชนี': HEALTH_TOOL_TYPE.BMI,\n 'เครื่องคำนวณอัตราการเผาผลาญพลังงาน-bmr': HEALTH_TOOL_TYPE.BMR,\n เครื่องมือคำนวณกำหนดคลอด: HEALTH_TOOL_TYPE.DUE_DATE,\n 'เครื่องคำนวณการตกไข่-ovulation-calculat': HEALTH_TOOL_TYPE.OVULATION,\n เครื่องคำนวณน้ำหนักตัว: HEALTH_TOOL_TYPE.PWG,\n เครื่องวัดอัตราการเต้น: HEALTH_TOOL_TYPE.THR,\n },\n 'hi-IN': {\n 'bmi-calculator-en': HEALTH_TOOL_TYPE.BMI,\n 'bmi-calculator': HEALTH_TOOL_TYPE.BMI,\n 'bmr-calculator': HEALTH_TOOL_TYPE.BMR,\n 'delivery-date-calculator': HEALTH_TOOL_TYPE.DUE_DATE,\n 'ovulation-calculator': HEALTH_TOOL_TYPE.OVULATION,\n 'pregnancy-weight-gain-calculator': HEALTH_TOOL_TYPE.PWG,\n 'target-heart-rate-calculator': HEALTH_TOOL_TYPE.THR,\n },\n 'km-KH': {\n 'គណនា-bmi': HEALTH_TOOL_TYPE.BMI,\n 'គណនា-bmr': HEALTH_TOOL_TYPE.BMR,\n គណនាថ្ងៃសម្រាលកូន: HEALTH_TOOL_TYPE.DUE_DATE,\n គណនាថ្ងៃមេជីវិតញីទុំធ្លាក់: HEALTH_TOOL_TYPE.OVULATION,\n គណនាទម្ងន់ស្ត្រីពពោះ: HEALTH_TOOL_TYPE.PWG,\n គណនារកចង្វាក់បេះដូងល្អ: HEALTH_TOOL_TYPE.THR,\n },\n 'my-MM': {\n 'bmi-calculator': HEALTH_TOOL_TYPE.BMI,\n 'bmr-calculator': HEALTH_TOOL_TYPE.BMR,\n 'due-date-calendar': HEALTH_TOOL_TYPE.DUE_DATE,\n 'ovulation-calculator': HEALTH_TOOL_TYPE.OVULATION,\n 'pregnaancy-weight-calculator': HEALTH_TOOL_TYPE.PWG,\n 'target-heartrate': HEALTH_TOOL_TYPE.THR,\n 'pregnancy-weight-calculator': HEALTH_TOOL_TYPE.PWG,\n 'target-heart-rate': HEALTH_TOOL_TYPE.THR,\n },\n}\n\nexport const BEARER_TOKEN_COOKIE = 'hhg_user_token'\nexport const TOGETHER_DISCLAIMER_COOKIE = 'hhg_together_disclaimer'\nexport const BEARER_ADMIN_TOKEN_COOKIE = 'together_admin_token'\n\nexport const Z_INDEX = {\n adBlock: 48,\n articleAdContainer: 47,\n headerContainerHome: 99,\n headerContainerPopup: 200,\n headerContainerPopupSUbLevel: 300,\n menuSearchInputPopup: 5,\n menuSearchInputDisplayIcon: 6,\n menuSearchPopup: 200,\n}\n\nexport const BmrActiveLevels: {\n name: string\n value: BmrActiveLevel\n icon: string\n description: string\n}[] = [\n {\n value: 'sedentary',\n icon: 'bmr-sedentary',\n //'/images/toolsBMRSedentary.svg',\n name: 'bmr.activeLevel.sedentary',\n description: 'bmr.activeLevel.sedentary.description',\n },\n {\n value: 'lightly-active',\n icon: 'bmr-light',\n // icon: '/images/toolsBMRLightlyActive.svg',\n name: 'bmr.activeLevel.lightlyActive',\n description: 'bmr.activeLevel.lightlyActive.description',\n },\n {\n value: 'moderately-active',\n icon: 'bmr-moderately',\n // icon: '/images/toolsBMRModeratelyActive.svg',\n name: 'bmr.activeLevel.moderatelyActive',\n description: 'bmr.activeLevel.moderatelyActive.description',\n },\n {\n value: 'intensely-active',\n icon: 'bmr-intensively',\n // icon: '/images/toolsBMRIntenselyActive.svg',\n name: 'bmr.activeLevel.intenselyActive',\n description: 'bmr.activeLevel.intenselyActive.description',\n },\n {\n value: 'extremely-active',\n icon: 'bmr-extremely',\n // icon: '/images/toolsBMRExtremelyActive.svg',\n name: 'bmr.activeLevel.extremelyActive',\n description: 'bmr.activeLevel.extremelyActive.description',\n },\n]\nexport const LEAD_CAMPAIGN_CODE = 'lmoct7xfr5sv4fv'\nexport const LEAD_TOKEN_COOKIE = 'hhg-id'\nexport const GA_TOKEN_COOKIE = '_ga'\nexport const GOOGLE_CALENDAR_AUTH_CLIENT_ID =\n '1038242799566-esoq4ij201ve5qfp266nbca44scpo3c6.apps.googleusercontent.com'\n\nexport const FIND_CARE_IFRAME_URL =\n 'https://www.appsheet.com/start/4ba34ebe-3cb6-4c16-8dd4-d074025a5bb6#appName=DependentDropdowns-2711103&group=%5B%5D&page=card&sort=%5B%5D&table=Menu&view=Menu'\n\nexport const REPORT_REASON_MAP: {\n [k: string]: {\n label: string\n reportReasonText: string\n }\n} = {\n report_scam: {\n label: 'morePopover.report.scam',\n reportReasonText: 'morePopover.report.scam',\n },\n report_sex: {\n label: 'morePopover.report.sex',\n reportReasonText: 'morePopover.report.sex',\n },\n report_offensive: {\n label: 'morePopover.report.offensive',\n reportReasonText: 'morePopover.report.offensive',\n },\n report_violence: {\n label: 'morePopover.report.violence',\n reportReasonText: 'morePopover.report.violence',\n },\n report_prohibited: {\n label: 'morePopover.report.prohibited',\n reportReasonText: 'morePopover.report.prohibited',\n },\n report_spam: {\n label: 'morePopover.report.spam',\n reportReasonText: 'morePopover.report.spam',\n },\n report_falseNews: {\n label: 'morePopover.report.falseNews',\n reportReasonText: 'morePopover.report.falseNews',\n },\n report_other: {\n label: 'morePopover.report.other',\n reportReasonText: 'morePopover.report.other',\n },\n}\n\nexport const MB_SOCIAL_LINKS = {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/marry.baby.vn',\n INSTAGRAM: 'https://www.instagram.com/marrybaby.vn/',\n TWITTER: '',\n YOUTUBE: 'https://www.youtube.com/channel/UCeZybTkY1VzJ3N7LvPGdKbg',\n ZALO: 'http://zalo.me/806483414530291942',\n}\n\nexport const INTERNAL_ROLES = ['admin', 'moderator', 'local-admin']\nexport const EXTERNAL_ROLES = [\n 'ambassador',\n 'expert',\n 'sponsor',\n 'guide',\n 'influencer',\n]\nexport const INTERNAL_PROFILE_ROLES = ['moderator', 'local-admin']\nexport const EXTERNAL_PROFILE_ROLES = ['expert', 'ambassador', 'sponsor']\nexport const RoleDataMap = {\n moderator: {\n text: 'Moderator',\n fid: 'cardAuthor.moderator',\n background: '#fe921d',\n },\n admin: {\n text: 'Admin',\n fid: 'cardAuthor.admin',\n background: '#2b62cd',\n },\n 'local-admin': {\n text: 'Local admin',\n fid: 'cardAuthor.localAdmin',\n background: '#2b62cd',\n },\n expert: {\n text: 'Expert',\n fid: 'cardAuthor.expert',\n background: '#ff6f4d',\n },\n sponsor: {\n text: 'Sponsor',\n fid: 'cardAuthor.sponsor',\n background: '#00c7e6',\n },\n ambassador: {\n text: 'Ambassador',\n fid: 'cardAuthor.ambassador',\n background: '#00CB8A',\n },\n}\n\nexport const MAX_IMAGE_UPLOADS = 20\n\nexport const LOCALISED_SLUGS: {\n [key in LocaleType]?: {\n [key in CareLocalisedSlugsType]: string\n }\n} = {\n 'en-PH': {\n ALL: 'all',\n HOSPITAL: 'hospital',\n SERVICE: 'service',\n DOCTOR: 'doctor',\n SEARCH: 'search',\n SPECIALTIES: 'specialties',\n CURRENT: 'current-location',\n },\n 'vi-VN': {\n ALL: 'tat-ca',\n HOSPITAL: 'benh-vien',\n SERVICE: 'dich-vu',\n DOCTOR: 'bac-si',\n SEARCH: 'tim-kiem',\n SPECIALTIES: 'chuyen-khoa',\n CURRENT: 'vi-tri-hien-tai',\n },\n 'id-ID': {\n ALL: 'semua',\n HOSPITAL: 'rumah-sakit',\n SERVICE: 'layanan',\n DOCTOR: 'dokter',\n SEARCH: 'cari',\n SPECIALTIES: 'spesialisasi',\n CURRENT: 'posisi-saya-saat-ini',\n },\n}\n","import cookieParser from 'cookie'\nimport { getCookie } from 'misc/cookieHelper'\nimport slugify from 'slugify'\nimport { LocaleType } from 'src/components/organisms/navigationLayout/types'\nimport formatString from 'string-format'\nimport { GlobalData } from 'together/togetherComponentGlobalContext'\n\nimport {\n BEARER_ADMIN_TOKEN_COOKIE,\n BEARER_TOKEN_COOKIE,\n LOCALISED_SLUGS,\n} from '../interfaces/constants'\n// import { DISCOVER_PATHS, PATHS } from './paths'\n// let _apolloClient:ApolloClient<NormalizedCacheObject>\n\nexport const domainLocales = {\n 'vi-VN': 'hellobacsi.com',\n 'id-ID': 'hellosehat.com',\n 'ms-MY': 'hellodoktor.com',\n 'km-KH': 'hellokrupet.com',\n 'en-PH': 'hellodoctor.com.ph',\n 'th-TH': 'hellokhunmor.com',\n 'my-MM': 'hellosayarwon.com',\n 'zh-TW': 'helloyishi.com.tw',\n 'hi-IN': 'helloswasthya.com',\n}\nexport const domainLocalesMarryBaby = {\n 'vi-VN': 'marrybaby.vn',\n}\n\nconst locale = (process.env.NEXT_PUBLIC_DEPLOY_LOCALE || 'vi-VN') as LocaleType\nexport const getWebsiteUrlApi = (locale: string) => {\n const {\n env: { isMarryBaby },\n } = GlobalData\n return `https://${\n isMarryBaby ? domainLocalesMarryBaby[locale] : domainLocales[locale]\n }`\n}\nconst cleanFormatString = (url: string) => {\n const qIndex = url.indexOf('?')\n if (qIndex >= 0) {\n return (\n url.slice(0, qIndex + 1) +\n url\n .slice(qIndex + 1)\n .replace(/[^=&]+=(&|$)/g, '')\n .replace(/&$/, '')\n )\n }\n return url\n}\n\nexport const getCurrentBaseUrl = (locale: string) => {\n const {\n env: { isMarryBaby },\n } = GlobalData\n if (typeof window !== 'undefined') return window.location.origin\n const isStaging = process.env.NEXT_PUBLIC_DEPLOY_ENV === 'staging'\n const isDev = process.env.NEXT_PUBLIC_DEPLOY_ENV === 'development'\n return isDev\n ? 'http://localhost:3000'\n : `https://${\n isStaging\n ? isMarryBaby\n ? 'fe.'\n : 'discover.'\n : isMarryBaby\n ? 'www.'\n : ''\n }${domainLocales[locale]}`\n}\n\nexport const getCurrentHref = (\n locale: string,\n basePath: string,\n asPath: string,\n) => {\n if (typeof window !== 'undefined') return window.location.href\n return `${getCurrentBaseUrl(locale)}${basePath}${asPath}`\n}\n\nexport const getApiPath = (\n path: string,\n params?: { [key: string]: string | number },\n query?: { [key: string]: string | number },\n) => {\n let queryString = ''\n if (query) {\n queryString = Object.keys(query)\n .map((key) => key + '=' + query[key])\n .join('&')\n }\n const { togetherBaseApiUrl = '' } = GlobalData?.env || {}\n let formattedPath = formatString(path, {\n ...(params?._locale\n ? {\n website_url: getWebsiteUrlApi(String(params._locale)),\n }\n : {}),\n ...params,\n })\n formattedPath += `${formattedPath.includes('?') ? '&' : '?'}${queryString}`\n return togetherBaseApiUrl + 'api/v1/' + cleanFormatString(formattedPath)\n}\n\nexport const getDiscoverApiPath = (\n path: string,\n params?: { [key: string]: string | number },\n) => {\n const { discoverBaseApiUrl = '' } = GlobalData?.env || {}\n return (\n discoverBaseApiUrl +\n 'wp-json/api/' +\n cleanFormatString(\n formatString(path, {\n ...params,\n }),\n )\n )\n}\nexport const getCarePath = (\n path: string,\n params?: { [key: string]: string | number | undefined },\n) => {\n const { careBaseApiUrl = '' } = GlobalData?.env || {}\n return (\n (careBaseApiUrl || 'https://service-health-care.hellohealthgroup.com/') +\n cleanFormatString(formatString(path, { ...params }))\n )\n}\n\nconst fixedEncodeURI = (str: string) => {\n return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']')\n}\n\ntype ApiOptions = RequestInit & {\n data?: any\n}\nconst convertApiOptionsToRequestInit = (opts: ApiOptions): RequestInit => {\n if (opts?.data) {\n if (opts.data instanceof FormData) {\n opts.body = opts.data\n } else if (typeof opts.data === 'object') {\n opts.body = JSON.stringify(opts.data)\n }\n delete opts.data\n }\n return opts\n}\n\nexport const callApi = async (\n url: string,\n method: string,\n options?: ApiOptions,\n skipEncodeURI = false,\n) => {\n try {\n const res = await fetch(skipEncodeURI ? url : fixedEncodeURI(url), {\n method,\n ...convertApiOptionsToRequestInit(options),\n }).then((r) => r.json())\n if (res) return res\n } catch (err) {\n console.log(err)\n console.log({\n url,\n status: err?.response?.status,\n statusText: err?.response?.statusText,\n })\n // Sentry.captureException(err)\n return err?.response?.data || null\n }\n return null\n}\n\nexport const callApiWithOptionalAuth = async (\n urlData:\n | {\n url: string\n backupUrl: string\n }\n | string,\n method = 'GET',\n options?: ApiOptions,\n reqCookie?: string,\n) => {\n try {\n const url = typeof urlData === 'string' ? urlData : urlData.url\n const backupUrl = typeof urlData === 'string' ? urlData : urlData.backupUrl\n const parsedCookie = cookieParser.parse(reqCookie || '')\n const token = parsedCookie[BEARER_TOKEN_COOKIE]\n const cookie = token || getCookie(BEARER_TOKEN_COOKIE)\n if (cookie && cookie.length) {\n try {\n const res = await fetch(url, {\n method,\n ...convertApiOptionsToRequestInit(options),\n headers: {\n Authorization: 'Bearer ' + cookie,\n },\n }).then((r) => r.json())\n if (\n res?.messages?.find(\n (m: string) => m?.toLowerCase() === 'Unauthenticated',\n )\n ) {\n return callApi(backupUrl || url, method, options)\n }\n if (res) return res\n } catch (err) {\n console.log({\n status: err?.response?.status,\n statusText: err?.response?.statusText,\n })\n // Fallback noauth call\n return callApi(backupUrl || url, method, options)\n }\n } else {\n return callApi(backupUrl || url, method, options)\n }\n } catch (err) {\n console.log({\n status: err?.response?.status,\n statusText: err?.response?.statusText,\n })\n // Sentry.captureException(err)\n return err?.response?.data || null\n }\n return null\n}\nexport const callApiWithAuth = async (\n url: string,\n method: string,\n options?: ApiOptions,\n reqCookie?: string,\n) => {\n try {\n const parsedCookie = cookieParser.parse(reqCookie || '')\n const token = parsedCookie[BEARER_TOKEN_COOKIE]\n const cookie = token || getCookie(BEARER_TOKEN_COOKIE)\n if (cookie && cookie.length) {\n const res = await fetch(url, {\n method,\n ...convertApiOptionsToRequestInit(options),\n headers: {\n Authorization: 'Bearer ' + cookie,\n },\n }).then((r) => r.json())\n if (res) return res\n }\n } catch (err) {\n // Sentry.captureException(err)\n return null\n }\n return null\n}\nexport const callApiWithAdminAuth = async (\n url: string,\n method: string,\n options?: ApiOptions,\n reqCookie?: string,\n) => {\n try {\n const parsedCookie = cookieParser.parse(reqCookie || '')\n const token = parsedCookie[BEARER_ADMIN_TOKEN_COOKIE]\n const cookie = token || getCookie(BEARER_ADMIN_TOKEN_COOKIE)\n if (cookie && cookie.length) {\n const res = await fetch(url, {\n method,\n ...convertApiOptionsToRequestInit(options),\n headers: {\n Authorization: 'Bearer ' + cookie,\n },\n }).then((r) => r.json())\n if (res) return res\n }\n } catch (err) {\n // Sentry.captureException(err)\n return null\n }\n return null\n}\n\nexport function updateQueryStringParameter(\n uri: string,\n key: string,\n value: string,\n) {\n const re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i')\n const separator = uri.indexOf('?') !== -1 ? '&' : '?'\n if (uri.match(re)) {\n return uri.replace(re, '$1' + key + '=' + value + '$2')\n } else {\n return uri + separator + key + '=' + value\n }\n}\n\nexport const getUrlToSSOWithReturnUrl = (\n url?: string,\n params?: {\n [k: string]: string\n },\n) => {\n const { publicSSO } = GlobalData.env\n\n const originalRedirectUrl = url || window.location.href\n // const redirectUrl = new URL(originalRedirectUrl)\n if (params) {\n Object.keys(params).map((k) => {\n updateQueryStringParameter(originalRedirectUrl, k, params[k])\n })\n }\n updateQueryStringParameter(originalRedirectUrl, 'source', 'communities')\n\n return publicSSO\n ? `${publicSSO}?returnUrl=${encodeURIComponent(\n originalRedirectUrl.toString(),\n )}`\n : originalRedirectUrl\n}\nexport const getUrlToSignUp = (\n url?: string,\n params?: {\n [k: string]: string\n },\n togetherBasePath = '/community',\n) => {\n const currentLocation =\n url || (typeof window !== 'undefined' ? window.location.href : '/')\n let origin = typeof window !== 'undefined' ? window.location.origin : ''\n if (!origin) {\n if (url && (url.startsWith('http://') || url.startsWith('https://'))) {\n origin = url.split('/').slice(0, 3).join('/')\n }\n }\n const onBoardingUrl = `${origin}${togetherBasePath}/on-boarding?return=${encodeURIComponent(\n currentLocation,\n )}`\n return getUrlToSSOWithReturnUrl(onBoardingUrl, params)\n}\n\nexport const slugifiedNameWithId = (\n name?: string,\n id?: number,\n slug?: string,\n _locale?: LocaleType,\n) => {\n if (slug && id) {\n return `${slug}-${id}`\n }\n\n return `${slugify(name || '', {\n lower: true,\n locale: _locale || locale,\n })}-${id}`\n}\n\nexport const getCareDoctorUrl = ({\n name,\n id,\n locale,\n}: {\n name?: string\n id?: number\n locale: LocaleType\n}) => {\n return `/care/${\n LOCALISED_SLUGS[locale || 'vi-VN']?.DOCTOR\n }/${slugifiedNameWithId(name, id)}`\n}\n\nexport const getCareHospitalUrl = ({\n name,\n id,\n slug,\n locale,\n}: {\n name?: string\n id?: number\n slug?: string\n locale: LocaleType\n}) => {\n return `/care/${\n LOCALISED_SLUGS[locale || 'vi-VN']?.HOSPITAL\n }/${slugifiedNameWithId(name, id, slug)}`\n}\n\nexport const getCareHospitalUrlAmp = ({\n slug,\n id,\n locale,\n}: {\n slug?: string\n id?: number\n locale: LocaleType\n}) => {\n return `/care/${LOCALISED_SLUGS[locale || 'vi-VN']?.HOSPITAL}/${slug}-${id}`\n}\n","import {\n Article,\n ArticleApi,\n ArticleAuthor,\n ArticleAuthorApi,\n ArticleExpert,\n ArticleExpertApi,\n Author,\n BMICondition,\n BMIResult,\n BMIResultApi,\n Category,\n CategoryApi,\n CategoryHealthToolApi,\n Comment,\n CommentApi,\n Community,\n CommunityApi,\n ExpertUserSummaryApi,\n FAQs,\n FAQsApi,\n HealthTool,\n HealthToolApi,\n HealthToolByCategory,\n Notification,\n NotificationApi,\n OvulationInfo,\n OvulationInfoApi,\n PageCategory,\n PageCategoryApi,\n Post,\n PostApi,\n PostDetail,\n PostPaginationApi,\n PostPaginationClient,\n PwgInfo,\n PwgInfoApi,\n ReportedPostDetail,\n ReviewedCategory,\n ReviewedCategoryApi,\n ReviewedUserApi,\n Role,\n SiteWideBanner,\n SiteWideBannerApi,\n Sponsor,\n SponsorApi,\n SpotlightSummary,\n SpotlightSummaryApi,\n SuggestedArticle,\n SuggestedArticleApi,\n ThrInfo,\n ThrInfoApi,\n Topic,\n TopicApi,\n TopicHealthTool,\n TopicHealthToolApi,\n TopicSubot,\n TopicSubotApi,\n} from '../interfaces/types'\n\nexport const formatAuthor = (author: ArticleAuthorApi): ArticleAuthor => {\n if (!author) return {} as ArticleAuthor\n\n return {\n displayName: author.display_name || null,\n avatar: author.avatar || null,\n thumbnailAvatar: author.avatar_thumbnail || null,\n profileUrl: author.profile_url || null,\n description: author.description || null,\n metaTag: author.meta_tag || '',\n } as ArticleAuthor\n}\nexport const formatArticleExpert = (\n expert: ArticleExpertApi,\n): ArticleExpert => {\n if (!expert) return {} as ArticleExpert\n\n return {\n id: expert.ID || null,\n name: expert.name || null,\n specialty: expert.specialty || null,\n avatar: expert.avatar || null,\n permalink: expert.permalink || null,\n thumbnailAvatar: expert.avatar_thumbnail || null,\n } as ArticleExpert\n}\nexport const formatArticle = (article: ArticleApi): Article => {\n if (!article) return {} as Article\n\n return {\n id: article.ID,\n postName: article.post_name,\n sponsor: article.sponsor ? formatSponsor(article.sponsor) : null,\n isSponsored: article.is_sponsored || null,\n postTitle: article.post_title || '',\n postModified: article.post_modified || '',\n postDate: article.post_date || '',\n modifiedTime: article.modified_time || '',\n permalink: article.permalink || '',\n featureImage: article.image || null,\n featureImageMobile: article.image_medium || null,\n featureImageMobileXs: article.image_thumbnail || null,\n author: formatAuthor(article.author),\n reviewer: article.reviewed_by\n ? formatAuthor(article.reviewed_by) || null\n : null,\n articleReviewed: article?.reviewed\n ? {\n ...article?.reviewed,\n author: formatUserProfile(article?.reviewed?.author),\n editor: formatUserProfile(article?.reviewed?.editor),\n expert: formatUserProfile(article?.reviewed?.expert),\n fact_check: formatUserProfile(article?.reviewed?.fact_check),\n }\n : null,\n category: formatCategory(article.category),\n postContent: article.post_content || null,\n sections: article.sections || null,\n categories: (article.categories || []).map(formatCategory),\n sources: article.sources || null,\n description: article.description || null,\n excerpt: article.excerpt || null,\n expert: formatArticleExpert(article.expert),\n metaTag: article.meta_tag || null,\n } as Article\n}\n\nexport const formatUserProfile = (\n user: ReviewedUserApi | null | undefined,\n): ReviewedUserApi | null | undefined => {\n if (typeof user === 'undefined' || !user) return null\n return {\n ...user,\n profile_url: user?.slug\n ? ['expert', 'medical'].includes(user?.role || '')\n ? `/expert/${user?.slug}`\n : `/author/${user?.slug}`\n : user.profile_url,\n }\n}\n\nexport const formatBMIResult = (data: BMIResultApi): BMIResult => {\n if (!data || !data.status) return {} as BMIResult\n\n return {\n status: data?.status as BMICondition,\n comparison: data?.comparison ?? '',\n assessmentData: [\n {\n tab: 'tools.condition',\n content: data?.condition ?? '',\n },\n {\n tab: 'tools.risks',\n content: data?.risk ?? '',\n },\n {\n tab: 'tools.suggestion',\n content: data?.suggestion ?? '',\n },\n ],\n chartData: data?.chart_data?.length > 0 ? data?.chart_data : [],\n disclaimer: data?.disclaimer ?? '',\n illustrator: data?.illustrator ?? '',\n faqs: data?.faqs ?? [],\n suggestedArticlesLink: data?.suggested_articles_link ?? '',\n // suggestedArticles: data?.suggested_articles?.map(formatArticle) ?? [],\n }\n}\n\nexport const formatSponsor = (sponsor: SponsorApi): Sponsor => {\n if (!sponsor) return {} as Sponsor\n\n return {\n title: sponsor.title,\n logo: sponsor.logo,\n link: sponsor.link,\n } as Sponsor\n}\n\nexport const formatReviewedCategory = (\n data: ReviewedCategoryApi,\n): ReviewedCategory => {\n return {\n postTitle: data.post_title,\n permalink: data.permalink,\n }\n}\n\nexport const formatCategory = (category: CategoryApi): Category => {\n if (!category) return {} as Category\n\n return {\n termId: category.term_id || null,\n sponsor: category.sponsor ? formatSponsor(category.sponsor) : null,\n isSponsored: category.is_sponsored || null,\n categoryName: category.cat_name || null,\n name: category.name || null,\n iconUrl: category.icon || '',\n slugName: category.category_nicename || null,\n description: category.description || null,\n featureImage: category.image || null,\n displayName: category.name || null,\n parent: category.parent || null,\n permalink: category.permalink || null,\n slug: category.slug || null,\n childCates:\n category.child_cates?.map((childCate) => {\n return formatCategory(childCate)\n }) || [],\n\n colorFeatureImage: category.color_feature_image || null,\n imageColor: category.image_color || null,\n textColor: category.text_color || null,\n catParent: category.cat_parent?.name\n ? {\n name: category.cat_parent.name,\n permalink: category.cat_parent.permalink,\n }\n : {},\n metaTag: category.meta_tag || '',\n reviewedBy: category.reviewed_by\n ? formatReviewedCategory(category.reviewed_by)\n : null,\n reviewedDate: category.reviewed_date || '',\n faqs: category.faqs\n ? category.faqs.map((faq) => formatFaqsCategory(faq))\n : null,\n } as Category\n}\n\nexport const formatCategoryApi = (category: PageCategoryApi): PageCategory => {\n if (!category) return {} as PageCategory\n\n return {\n categoryInfo: formatCategory(category.data.category) || null,\n explainersPosts: (category.data.explainers_posts || []).map(formatArticle),\n subCategories: (category.data.sub_categories || []).map(formatCategory),\n }\n}\n\nexport const formatFaqsCategory = (data: FAQsApi): FAQs => {\n return {\n title: data.title,\n content: data.content,\n }\n}\n\nexport const formatHealthTool = (healthTool: HealthToolApi): HealthTool => {\n if (!healthTool) return {} as HealthTool\n\n return {\n icon: healthTool.icon,\n link: healthTool.link.startsWith('http')\n ? healthTool.link\n : '/health-tools' + healthTool.link,\n subtitle: healthTool.subtitle,\n title: healthTool.title,\n }\n}\n\nexport const formatHealthToolTypeCategory = (\n category: CategoryHealthToolApi,\n): HealthToolByCategory => {\n if (!category) return {} as HealthToolByCategory\n\n return {\n termId: category?.term_id || 0,\n name: category?.name || '',\n healthTools:\n category?.health_tools?.map((tool: HealthTool) =>\n formatHealthTool(tool),\n ) ?? [],\n }\n}\nexport const formatCommunity = (community: CommunityApi): Community => {\n if (!community) return {} as Community\n return {\n topicCount: community.topics_count,\n postCount: community.posts_count,\n memberCount: community.members_count,\n thumbnail: community.thumbnail,\n coverImage: community.cover_image,\n mobileCoverImage: community.mobile_cover_image,\n name: community.name,\n description: community.description,\n slug: community.slug,\n id: community.id,\n joined: community.joined,\n isActive:\n community.is_active !== null && typeof community.is_active !== 'undefined'\n ? Boolean(community.is_active)\n : true,\n mappedCategoryId: community.mapped_category_id || 0,\n discoverCategory: community.discover_category\n ? {\n categoryId: community.discover_category.category_id || 0,\n name: community.discover_category.name || '',\n }\n : null,\n isHidden: Boolean(community.is_hidden),\n } as Community\n}\n\nexport const formatTopic = (topic: TopicApi): Topic => {\n if (!topic) return {} as Topic\n return {\n id: topic.id || 0,\n name: topic.name || '',\n image: topic.thumbnail || '',\n slug: topic.slug || '',\n url: '/' + topic.community?.slug + '/' + topic?.slug || '',\n description: topic.description || '',\n joined: topic.joined || false,\n postCount: topic.count_posts || 0,\n memberCount: topic.count_members || 0,\n communityId: String(topic.community?.id),\n communitySlug: topic.community?.slug,\n communityName: topic.community?.name,\n order: topic.order || 0,\n isActive:\n topic.is_active !== null && typeof topic.is_active !== 'undefined'\n ? Boolean(topic.is_active)\n : true,\n mappedCategoryId: topic.mapped_category_id || 0,\n discoverCategory: topic.discover_category\n ? {\n categoryId: topic.discover_category.category_id || 0,\n name: topic.discover_category.name || '',\n }\n : null,\n isHidden: Boolean(topic.is_hidden),\n }\n}\n\nexport const formatPost = (post: PostApi): Post => {\n if (!post) return {} as Post\n\n return {\n id: post.id,\n topics:\n post.topics?.map((topic) => ({\n id: topic.id || 0,\n name: topic.name || '',\n slug: topic.slug || '',\n url: '/' + post.community?.slug + '/' + topic.slug,\n communityId: String(post.community?.id),\n communitySlug: post.community?.slug || '',\n communityName: post.community?.name || '',\n isHidden: Boolean(topic.is_hidden),\n isActive: true,\n })) || [],\n community: {\n id: post.community?.id || 0,\n name: post.community?.name || '',\n slug: post.community?.slug || '',\n isActive: true,\n isHidden: Boolean(post.community?.is_hidden),\n },\n slug: post.slug || '',\n author: {\n id: post.user?.id || 0,\n username: post.user?.user_name || '',\n email: post.user?.email || '',\n name: post.user?.name || '',\n avatar: post.user?.avatar || '',\n role: post.user?.role\n ? (post.user?.role?.toLowerCase() as Role)\n : ('' as Role),\n type: post.user?.type || '',\n partnerId: post.user?.partner_id ? String(post.user?.partner_id) : '',\n title: post.user?.title || '',\n doctorId: post.user?.doctor_id ? String(post.user?.doctor_id) : '',\n hospitalId: post.user?.hospital_id ? String(post.user?.hospital_id) : '',\n },\n previewUrl: {\n title: post.preview_title || '',\n url: post.preview_link || '',\n image: post.preview_image || '',\n description: post.preview_description || '',\n },\n createdAt: post.created_at || '',\n scheduleDateTime: post.schedule_datetime || '',\n photos: post.images || [],\n description: post.description || '',\n commentsCount: post.comments_count || 0,\n likesCount: post.likes_count || 0,\n title: post.name || '',\n isPin: !!post.is_pin,\n pinDate: post.pin_date || '',\n liked: post.liked || false,\n bookmarked: Boolean(post.bookmarked) || false,\n mentions: post.mentions || [],\n commented: Boolean(post.commented) || false,\n introUrl: post.intro_url || '',\n bannerImage: post.banner_image || '',\n // authorExpertId: post.author_expert_id ? String(post.author_expert_id) : '',\n }\n}\nexport const formatPostPagination = (\n pagination: PostPaginationApi,\n): PostPaginationClient => {\n if (!pagination) return {} as PostPaginationClient\n\n return {\n currentPage: pagination.current || 0,\n lastPage: pagination.last || 0,\n total: pagination.total_items || 0,\n }\n}\n\nexport const formatNotification = (\n notification: NotificationApi,\n): Notification => {\n if (!notification) return {} as Notification\n return {\n time: notification.created_at,\n content: notification.content,\n postId: String(notification.post_id),\n fromUser: {\n name: notification.from_user?.name,\n id: notification.from_user?.id,\n avatar: notification.from_user?.avatar,\n },\n toUserId: String(notification.to_user_id),\n postSlug: notification.post_slug || '',\n communitySlug: notification.community_slug || '',\n }\n}\n\nexport const formatSpotlightsList = (\n spotligts: SpotlightSummaryApi[],\n): SpotlightSummary[] => {\n if (!spotligts) return []\n return spotligts.map((spotlight) => ({\n id: spotlight.ID,\n name: spotlight.name,\n permalink: spotlight.permalink,\n image: spotlight?.small_banner || spotlight?.image,\n imageMedium: spotlight?.image_medium || null,\n imageThumbnail: spotlight?.image_thumbnail || null,\n startDate: spotlight?.start_date,\n endDate: spotlight?.end_date,\n }))\n}\n\nexport const formatOvulationInfo = (\n data: OvulationInfoApi | null,\n): OvulationInfo => {\n if (!data) return {} as OvulationInfo\n\n return {\n disclaimer: data.disclaimer,\n info: data.info || [],\n reviewedBy: data.reviewed_by\n ? {\n id: data.reviewed_by.ID,\n permalink: data.reviewed_by.permalink,\n name: data.reviewed_by.name,\n postTitle: data.reviewed_by.post_title,\n }\n : null,\n reviewedDate: data.reviewed_date,\n } as OvulationInfo\n}\nexport const formatSuggestedArticle = (\n data: SuggestedArticleApi | null,\n): SuggestedArticle => {\n if (!data) return {} as SuggestedArticle\n\n return {\n postId: data.post_id || null,\n categoryId: data.category_id || null,\n postUrl: data.post_url || null,\n postReviewed: data.post_reviewed || null,\n postPageviews: data.post_pageviews || null,\n postRank: data.post_rank || null,\n isPin: data.is_pin || null,\n frequency: data.frequency || null,\n topic: data.topic || null,\n } as SuggestedArticle\n}\nexport const formatTopicHealthTool = (\n data: TopicHealthToolApi | null,\n): TopicHealthTool => {\n if (!data) return {} as TopicHealthTool\n\n return {\n id: data.tool_id || null,\n topicFrequency: data.frequency || null,\n topicId: data.topic_id || null,\n topicName: data.topic_name || null,\n isPinned: !!data.is_pin || null,\n toolLink: data.tool_link || '',\n } as TopicHealthTool\n}\nexport const formatComment = (data: CommentApi | null): Comment => {\n if (!data) return {} as Comment\n\n return {\n content: data.content,\n countLikes: data.likes_count,\n countReplies: data.replies_count,\n createdAt: data.created_at,\n createdTime: data.created_time,\n id: String(data.id),\n images: data.image || [],\n link: data.link || null,\n replies:\n data.replies && data.replies.length > 0\n ? data.replies.map(formatComment)\n : [],\n author: {\n id: data.user?.id || 0,\n username: data.user?.user_name || '',\n name: data.user?.name || '',\n role: data.user?.role\n ? (data.user?.role?.toLowerCase() as Role)\n : ('' as Role),\n avatar: data.user?.avatar || '',\n type: data.user?.type || '',\n email: data.user?.email || '',\n partnerId: data.user?.partner_id ? String(data.user?.partner_id) : '',\n title: data.user?.title || '',\n doctorId: data.user?.doctor_id ? String(data.user?.doctor_id) : '',\n hospitalId: data.user?.hospital_id ? String(data.user?.hospital_id) : '',\n },\n liked: !!data.liked,\n mentionedUser: data.mentioned\n ? {\n id: data.mentioned?.id || 0,\n username: data.mentioned?.user_name || '',\n name: data.mentioned?.name || '',\n role: data.mentioned?.role\n ? (data.mentioned?.role?.toLowerCase() as Role)\n : ('' as Role),\n avatar: data.mentioned?.avatar || '',\n type: data.mentioned?.type || '',\n email: data.mentioned?.email || '',\n partnerId: data.mentioned?.partner_id\n ? String(data.mentioned?.partner_id)\n : '',\n doctorId: data.mentioned?.doctor_id\n ? String(data.mentioned?.doctor_id)\n : '',\n hospitalId: data.mentioned?.hospital_id\n ? String(data.mentioned?.hospital_id)\n : '',\n title: data.mentioned?.title || '',\n }\n : null,\n mentions: data.mentions || [],\n } as Comment\n}\n\nexport const formatReportedPostToPostDetail = (\n data: ReportedPostDetail | null,\n): PostDetail => {\n if (!data) return {} as PostDetail\n\n return {\n name: data.title,\n description: data.description,\n images: data.images,\n likes_count: data.count_likes,\n comments_count: data.count_comments,\n topics: [],\n // created_at:\n // created_date?: string\n // preview_image:\n slug: data.post_slug,\n id: data.post_id,\n is_pin: data.is_pin,\n pin_date: '',\n post_type: data.post_type,\n schedule_datetime: data.schedule_datetime,\n is_active: data.is_active,\n preview_title: data.preview_title || '',\n preview_image: data.preview_image || '',\n preview_description: data.preview_description || '',\n preview_link: data.preview_link || '',\n user: data.user,\n created_at: '',\n created_time: '',\n community: {\n id: data.community_id,\n name: data.community_name,\n slug: data.community_slug,\n description: '',\n },\n }\n}\nexport const formatTopicSubot = (data: TopicSubotApi | null): TopicSubot => {\n if (!data) return {} as TopicSubot\n\n return {\n chatBotId: data.subot_id,\n isPinned: data.is_pin,\n topicId: data.topic_id,\n topicFrequency: data.frequency,\n } as TopicSubot\n}\n\nexport const formatSiteWideBanner = (\n sitewide_banner?: SiteWideBannerApi | null,\n type?: 'article' | 'category' | 'home',\n): SiteWideBanner | null => {\n if (typeof sitewide_banner === 'undefined' || !sitewide_banner) return null\n return {\n content: sitewide_banner?.content || '',\n icon: sitewide_banner?.icon || '',\n type: type || 'other',\n }\n}\n\nexport const formatPWGContent = (data: PwgInfoApi | null): PwgInfo => {\n if (!data) return {} as PwgInfo\n return {\n disclaimer: data.disclaimer,\n info: data.info || [],\n reviewedBy: data.reviewed_by ? formatUserProfile(data.reviewed_by) : null,\n reviewedDate: data.reviewed_date,\n metaTag: data.meta_tag,\n } as PwgInfo\n}\n\nexport const formatUserProfileUrl = (\n user?: ReviewedUserApi | ExpertUserSummaryApi | Author | null,\n): string => {\n if (typeof user === 'undefined' || !user) return ''\n\n return user?.turn_off_profile\n ? ''\n : user?.slug\n ? ['expert', 'medical'].includes(user?.role || '')\n ? `/expert/${user?.slug}`\n : `/author/${user?.slug}`\n : user?.profile_url || user?.permalink || '#'\n}\n\nexport const formatTHRContent = (data: ThrInfoApi | null): ThrInfo => {\n if (!data) return {} as ThrInfo\n return {\n disclaimer: data.disclaimer,\n info: data.info || [],\n reviewedBy: data.reviewed_by ? formatUserProfile(data.reviewed_by) : null,\n reviewedDate: data.reviewed_date,\n metaTag: data.meta_tag,\n } as ThrInfo\n}\n","import React, { createContext, ReactNode, useContext } from 'react'\n\nimport { deleteCookie } from 'misc/cookieHelper'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { getUrlToSignUp } from '../api/utils'\nimport { BEARER_TOKEN_COOKIE } from '../interfaces/constants'\n\nexport type Context = {\n defaultParams?: {\n [k: string]: string\n }\n}\n\nexport const TogetherAuthConfigContext = createContext({} as Context)\n\nexport const TogetherAuthConfigContextProvider = ({\n children,\n defaultParams,\n}: {\n children: ReactNode\n defaultParams?: {\n [k: string]: any\n }\n}) => {\n return (\n <TogetherAuthConfigContext.Provider\n value={{\n defaultParams,\n }}\n >\n {children}\n </TogetherAuthConfigContext.Provider>\n )\n}\n\nexport const useTogetherAuthRequiredAction = (propsParams?: {\n [k: string]: any\n}) => {\n const {\n data: {\n userInfo,\n env: { togetherBasePath },\n },\n } = useContext(TogetherComponentGlobalContext)\n const { defaultParams } = useContext(TogetherAuthConfigContext) || {}\n const isLoggedIn = userInfo?.id\n const isFirstInteract =\n userInfo &&\n typeof userInfo.communities_interacted === 'number' &&\n userInfo.communities_interacted === 0\n const authActionWrapper = (\n func?: () => any,\n extraParams?: {\n [k: string]: any\n },\n ) => {\n const params = {\n ...defaultParams,\n ...propsParams,\n ...extraParams,\n }\n if (!isLoggedIn || isFirstInteract) {\n if (!isLoggedIn) {\n deleteCookie(BEARER_TOKEN_COOKIE)\n }\n if (params?._joinCommunityIds) {\n localStorage.setItem(\n 'to_join_community_ids',\n JSON.stringify(\n Array.from(\n new Set(\n (\n JSON.parse(\n localStorage.getItem('to_join_community_ids') || '[]',\n ) || []\n )\n .concat(params._joinCommunityIds)\n .filter(Boolean),\n ),\n ),\n ),\n )\n delete params?._joinCommunityIds\n }\n if (params?._joinTopicIds) {\n localStorage.setItem(\n 'to_join_topic_ids',\n JSON.stringify(\n Array.from(\n new Set(\n (\n JSON.parse(\n localStorage.getItem('to_join_topic_ids') || '[]',\n ) || []\n )\n .concat(params._joinTopicIds)\n .filter(Boolean),\n ),\n ),\n ),\n )\n delete params?._joinTopicIds\n }\n const currentLocation = params?._location || window.location.href\n delete params?._location\n window.location.href = getUrlToSignUp(\n currentLocation,\n params,\n togetherBasePath,\n )\n return null\n } else {\n return func && func()\n }\n }\n return {\n authActionWrapper,\n params: {\n ...defaultParams,\n ...propsParams,\n },\n }\n}\n","import styled, { keyframes } from 'styled-components'\n\nexport const StyledLoading = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1em;\n button {\n position: relative;\n }\n`\n\nconst circle = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n`\nexport const StyledLoadingCard = styled.div`\n display: flex;\n width: fit-content;\n width: -moz-fit-content;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 1rem 2rem;\n background: white;\n border-radius: 6px;\n box-shadow: -1px 1px 2px rgba(67, 70, 74, 0.0001),\n -2px 2px 5px rgba(67, 86, 100, 0.123689);\n .loading-spinner {\n width: 24px;\n height: 24px;\n margin-bottom: 0.5rem;\n animation: ${circle} 1.2s linear infinite;\n }\n &[data-is-marrybaby='true'] {\n box-shadow: none;\n }\n`\n","import React from 'react'\n\nimport { Button } from 'components/atoms/button'\nimport { useTranslations } from 'hooks/useTranslations'\n\nimport { StyledLoading } from './index.styled'\n\nexport type Props = {\n size?: 'lg' | 'md' | 'sm'\n className?: string\n}\n\nconst Loading = ({ className, size = 'md' }: Props) => {\n const { t } = useTranslations()\n\n return (\n <StyledLoading className={className}>\n <Button size={size} color=\"transparent\" isLoading>\n {t('loading')}\n </Button>\n </StyledLoading>\n )\n}\n\nexport { Loading }\n","import React, { CSSProperties, useContext } from 'react'\n\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { abbreviateNumber } from 'misc/number'\n\nimport { getCurrentHref } from '../../../api/utils'\nimport MBComment from '../../../assets/marrybaby/svg/comment.svg'\nimport MBCommentSolid from '../../../assets/marrybaby/svg/commentSolid.svg'\nimport MBHeart from '../../../assets/marrybaby/svg/heart.svg'\nimport MBHeartSolid from '../../../assets/marrybaby/svg/heartSolid.svg'\nimport MBShare from '../../../assets/marrybaby/svg/share.svg'\nimport IconEdit from '../../../assets/svg/icon-edit.svg'\nimport IconHeartEmpty from '../../../assets/svg/icon-heart-empty.svg'\nimport IconHeartFillRed from '../../../assets/svg/icon-heart-fill-red.svg'\nimport IconReplyArrow from '../../../assets/svg/icon-reply-arrow.svg'\nimport IconReplyCircleEmpty from '../../../assets/svg/icon-reply-circle-empty.svg'\nimport IconReplyCircleFill from '../../../assets/svg/icon-reply-circle-fill.svg'\nimport { TogetherComponentGlobalContext } from '../../../togetherComponentGlobalContext'\nimport {\n StyledCardReactions,\n StyledLeftIcon,\n StyledRightIcon,\n StyledText,\n} from './index.styled'\n\nexport enum CardReactionType {\n post = 1,\n reply = 2,\n}\n\nexport type Props = {\n type: CardReactionType\n loveCount?: number\n replyCount?: number\n replyPadding?: boolean\n liked?: boolean\n isReplied?: boolean\n hideCommentIcon?: boolean\n className?: string\n onCommentClick?: () => void\n onLikeClick?: () => void\n onCommentCountClick?: () => void\n onShareClick?: () => void\n style?: CSSProperties\n showingMostEngaging?: boolean\n}\n\nconst CardReactions = ({\n type,\n loveCount,\n replyCount,\n replyPadding,\n liked,\n isReplied,\n onCommentClick,\n onLikeClick,\n onCommentCountClick,\n onShareClick,\n className,\n style,\n hideCommentIcon,\n showingMostEngaging,\n}: Props) => {\n const {\n data: {\n locale,\n router,\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n const { asPath, basePath } = router || {}\n const { t } = useTranslations()\n const isMarryBabyReply = type === CardReactionType.reply && isMarryBaby\n\n // /api/v1/auth/post?post_slug=test-post-title-3607&website_url={{website_url}}\n return (\n <StyledCardReactions\n data-show-most-engaging={showingMostEngaging}\n data-type={type === CardReactionType.post ? 'post' : 'reply'}\n data-reply-padding={type === CardReactionType.reply && replyPadding}\n className={className}\n style={style}\n >\n <div className=\"reaction-icon-container\">\n <div\n onClick={() => {\n onLikeClick && onLikeClick()\n }}\n className=\"child-no-click\"\n data-event-category=\"Together\"\n data-event-action=\"Like Click\"\n data-event-label={getCurrentHref(locale || 'vi-VN', basePath, asPath)}\n >\n <StyledText\n style={{\n marginRight: isMarryBaby ? 0 : '1rem',\n }}\n size=\"p3\"\n >\n <StyledLeftIcon\n src={\n isMarryBaby\n ? liked\n ? MBHeartSolid\n : MBHeart\n : liked\n ? IconHeartFillRed\n : IconHeartEmpty\n }\n />\n {isMarryBaby\n ? t('post.likesCount', {\n count: loveCount || 0,\n })\n : loveCount && loveCount > 0\n ? abbreviateNumber(loveCount)\n : ''}\n </StyledText>\n </div>\n {!isMarryBabyReply ? (\n <>\n {!hideCommentIcon && (\n <div\n onClick={() => {\n onCommentCountClick && onCommentCountClick()\n }}\n className=\"child-no-click\"\n data-event-category=\"Together\"\n data-event-action=\"Comment Click\"\n data-event-label={getCurrentHref(\n locale || 'vi-VN',\n basePath,\n asPath,\n )}\n >\n <StyledText size=\"p3\">\n <StyledLeftIcon\n src={\n isMarryBaby\n ? isReplied\n ? MBCommentSolid\n : MBComment\n : isReplied\n ? IconReplyCircleFill\n : IconReplyCircleEmpty\n }\n />\n {isMarryBaby\n ? t('post.commentCount', {\n count: replyCount || 0,\n })\n : replyCount && replyCount > 0\n ? abbreviateNumber(replyCount)\n : ''}\n </StyledText>\n </div>\n )}\n {isMarryBaby && (\n <div\n onClick={() => {\n onShareClick && onShareClick()\n }}\n className=\"child-no-click\"\n data-event-category=\"Together\"\n data-event-action=\"Share Click\"\n data-event-label={getCurrentHref(\n locale || 'vi-VN',\n basePath,\n asPath,\n )}\n >\n <StyledText size=\"p3\">\n <StyledLeftIcon src={MBShare} />\n {isMarryBaby\n ? t('post.shareCount', {\n count: 0,\n })\n : ''}\n </StyledText>\n </div>\n )}\n </>\n ) : (\n <div onClick={onCommentClick} className=\"child-no-click\">\n <Text className=\"reaction-reply\" size=\"p3\">\n {t('cardReactions.reply')}\n </Text>\n </div>\n )}\n </div>\n\n {!isMarryBaby && (\n <div\n className=\"reaction-comment-button child-no-click\"\n onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n onCommentClick && onCommentClick()\n }}\n >\n <StyledText size=\"p3\" type=\"bold\" color=\"#2D87F3\">\n {type === CardReactionType.post ? (\n <>\n <StyledRightIcon src={IconEdit} />\n {t('cardReactions.comment')}\n </>\n ) : (\n <>\n <StyledRightIcon src={IconReplyArrow} />\n {t('cardReactions.reply')}\n </>\n )}\n </StyledText>\n </div>\n )}\n </StyledCardReactions>\n )\n}\n\nexport { CardReactions }\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledUserAvatar = styled.div`\n width: 40px;\n height: 40px;\n flex-shrink: 0;\n cursor: pointer;\n font-size: 20px;\n\n img {\n border-radius: 50%;\n }\n\n .avatar {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .avatar-default {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${(props: ThemeProps) =>\n props.theme.colors.secondaryBase};\n border-radius: 50%;\n color: white;\n font-size: 1em;\n font-weight: bold;\n line-height: 1;\n }\n\n &[data-is-marrybaby='true'] {\n .avatar-default {\n background-color: ${(props: ThemeProps) => props.theme.mbColors.pink};\n }\n }\n`\n","import React, { CSSProperties, useState, useEffect, useContext } from 'react'\n\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { StyledUserAvatar } from './index.styled'\n\nexport type Props = {\n style?: CSSProperties\n className?: string\n avatar?: string\n username?: string\n isMarryBaby?: boolean\n}\n\nconst UserAvatar = ({\n className,\n isMarryBaby: isMarryBabyProp,\n style,\n avatar,\n username,\n}: Props) => {\n const {\n data: {\n env: { isMarryBaby: isMarryBabyContext },\n },\n } = useContext(TogetherComponentGlobalContext)\n const isMarryBaby =\n typeof isMarryBabyProp === 'boolean' ? isMarryBabyProp : isMarryBabyContext\n const [tempAvatar, setTempAvatar] = useState(false)\n useEffect(() => {\n const img = new Image()\n img.onerror = () => {\n setTempAvatar(true)\n }\n img.src = avatar\n }, [])\n return (\n <StyledUserAvatar\n data-is-marrybaby={isMarryBaby}\n className={className}\n style={style}\n >\n {avatar && !tempAvatar ? (\n <img\n src={avatar}\n className=\"avatar\"\n alt=\"avatar\"\n onError={() => {\n // e.currentTarget.onerror = null\n setTempAvatar(true)\n }}\n />\n ) : (\n <div className=\"avatar avatar-default\">\n {username && username?.length > 0 ? username[0].toUpperCase() : 'A'}\n </div>\n )}\n </StyledUserAvatar>\n )\n}\n\nexport { UserAvatar }\n","import styled from 'styled-components'\n\nexport const StyledCardLink = styled.div`\n .link-info-container {\n padding: 0.5rem 1rem;\n background: #f4faff;\n }\n .link-image-wrapper {\n position: relative;\n overflow: hidden;\n width: 100%;\n padding-top: min(280px, 56.25%);\n .link-image-blur {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 110%;\n height: 110%;\n /* Add the blur effect */\n -webkit-filter: blur(8px);\n filter: blur(8px);\n object-fit: cover;\n object-position: center;\n opacity: 0.8;\n transform: translate(-50%, -50%);\n }\n .link-image {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n object-position: center;\n }\n }\n a {\n text-decoration: none;\n }\n &[data-is-marrybaby='true'] {\n overflow: hidden;\n border-radius: 1rem;\n .link-info-container {\n padding-bottom: 1rem;\n background: #f3f3f3;\n p {\n color: #2661ad;\n }\n .link-logo {\n max-width: 2rem;\n height: 13px;\n margin-right: 4px;\n object-fit: contain;\n vertical-align: middle;\n }\n }\n .link-image-wrapper {\n padding-top: min(360px, 56.25%);\n .link-image {\n object-fit: cover;\n }\n }\n }\n`\n","// SOURCE: https://stackoverflow.com/a/10601315\nexport const abbreviateNumber = (value: number): string => {\n let newValue = String(value)\n if (value >= 1000) {\n const suffixes = ['', 'k', 'm', 'b', 't']\n const suffixNum = Math.floor(('' + value).length / 3)\n let shortValue\n for (let precision = 2; precision >= 1; precision--) {\n shortValue = parseFloat(\n (suffixNum != 0\n ? value / Math.pow(1000, suffixNum)\n : value\n ).toPrecision(precision),\n )\n const dotLessShortValue = (shortValue + '').replace(/[^a-zA-Z 0-9]+/g, '')\n if (dotLessShortValue.length <= 2) {\n break\n }\n }\n if (shortValue && shortValue % 1 != 0) shortValue = shortValue.toFixed(1)\n newValue = shortValue + suffixes[suffixNum]\n }\n return newValue\n}\n","import { Text } from 'components/atoms/text'\nimport { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledCardReactions = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem;\n cursor: pointer;\n &[data-type='post'] {\n border-top: 1px solid #f2f2f2;\n &[data-show-most-engaging='true'] {\n border-bottom: 1px solid #f2f2f2;\n }\n }\n &[data-type='reply'] {\n &[data-reply-padding='true'] {\n padding-left: 2.5rem;\n }\n }\n .reaction-icon-container {\n display: flex;\n }\n .child-no-click {\n * {\n pointer-events: none;\n }\n }\n [data-is-marrybaby='true'] {\n border-top: none;\n &[data-type='post'] {\n border-top: none;\n }\n &::before {\n position: absolute;\n top: 0;\n left: 50%;\n width: calc(100% - 2rem);\n height: 1px;\n background: ${(props: ThemeProps) => props.theme.mbColors.lightGray};\n content: ' ';\n transform: translateX(-50%);\n }\n .reaction-icon-container {\n width: 100%;\n justify-content: space-between;\n p {\n color: #9495a0;\n }\n .reaction-reply {\n color: #2661ad;\n }\n }\n &[data-type='reply'] {\n .reaction-icon-container {\n justify-content: start;\n > div {\n &:not(:last-child) {\n position: relative;\n margin-right: 22px;\n &::after {\n position: absolute;\n top: 50%;\n left: calc(100% + 0.5rem);\n color: #9495a0;\n content: '•';\n font-size: 14px;\n transform: translateY(-50%);\n }\n }\n }\n }\n }\n }\n`\n\nexport const StyledLeftIcon = styled.img`\n width: 1.5rem;\n height: 1.5rem;\n margin-right: 2px;\n\n [data-is-marrybaby='true'] {\n margin-right: 5px;\n }\n`\nexport const StyledRightIcon = styled.img`\n width: 1rem;\n height: 1rem;\n margin-right: 0.5rem;\n`\nexport const StyledText = styled(Text)`\n display: flex;\n align-items: center;\n`\n","import React, { CSSProperties, useContext, useState } from 'react'\n\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport MBSortBy from '../../../assets/marrybaby/svg/sortBy.svg'\nimport IconSortArrow from '../../../assets/svg/icon-sort-arrow.svg'\nimport { TreePopoverMenu } from '../../organisms/popoverMenu/treePopoverMenu'\nimport { LabelSortPin } from './index'\n\nexport enum LabelSortingValue {\n latest = 'latest',\n oldest = 'oldest',\n popular = 'popular',\n}\n\nexport type ChoiceItem = {\n label: string\n value: string\n}\n\nexport type Props = {\n onChange?: (v: string) => void\n color?: 'gray' | 'white'\n className?: string\n style?: CSSProperties\n leftLabel?: string\n rightLabel?: string\n value?: LabelSortingValue\n choices?: ChoiceItem[]\n}\n\nexport const LabelSorting = ({\n onChange,\n className,\n style,\n leftLabel,\n rightLabel,\n color,\n value,\n choices,\n}: Props) => {\n const {\n data: {\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n return (\n <LabelSortPin\n label={leftLabel}\n rightLabel={\n <TreePopoverMenu\n position=\"bottom\"\n align=\"end\"\n data={{\n isShowheader: false,\n type: 'list',\n list: choices.map((c) => ({\n label: c.label,\n onClick: () => onChange && onChange(String(c.value)),\n selected: c.value === value,\n className: 'bold-item',\n })),\n }}\n toggleButtonContent={\n <div\n style={{\n display: 'flex',\n }}\n >\n <Text\n style={{\n display: 'flex',\n alignItems: 'center',\n fontWeight: 'normal',\n marginRight: 12,\n }}\n size=\"p4\"\n >\n {rightLabel}\n </Text>\n <img\n src={isMarryBaby ? MBSortBy : IconSortArrow}\n style={{\n width: 16,\n height: 16,\n alignSelf: 'center',\n }}\n />\n </div>\n }\n />\n }\n color={'gray' || color}\n className={className}\n style={style}\n />\n )\n}\n\n// HOOKS for use with this component\nexport const useSortChoices = (choices: ChoiceItem[]) => {\n const [selectedValue, setSelectedValue] = useState<LabelSortingValue>(\n LabelSortingValue.latest,\n )\n const selectedChoice = choices?.find((c) => c.value === selectedValue)\n\n return {\n setSortChoiceValue: setSelectedValue,\n selectedSortChoice: selectedChoice,\n sortedChoices: choices,\n }\n}\nexport const useSortCommentChoices = () => {\n const { t } = useTranslations()\n return useSortChoices([\n {\n label: t('choicePopover.latest'),\n value: LabelSortingValue.latest,\n },\n {\n label: t('choicePopover.oldest'),\n value: LabelSortingValue.oldest,\n },\n ])\n}\n","import styled from 'styled-components'\n\nexport const StyledTagTopic = styled.div`\n display: flex;\n width: 100%;\n padding: 0.5rem 0;\n cursor: grab;\n overflow-x: auto;\n .tag-link-item {\n white-space: nowrap;\n padding: 5px 12px;\n border: 1px solid #e4e8ec;\n background: white;\n border-radius: 2rem;\n cursor: pointer;\n -webkit-user-drag: none;\n user-select: none;\n }\n .tag-link-item:not(:first-child) {\n margin-left: 0.5rem;\n }\n\n ::-webkit-scrollbar {\n width: 0;\n }\n &.sliding {\n cursor: grabbing;\n user-select: none;\n a {\n pointer-events: none;\n }\n }\n`\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledLabelSortPin = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n cursor: pointer;\n &[data-color='gray'] {\n background: ${(props: ThemeProps) => props.theme.colors.neutral50};\n }\n &[data-color='white'] {\n border-bottom: 1px solid #e4e8ec;\n background: ${(props: ThemeProps) => props.theme.colors.white};\n }\n\n .popover-menu__btn {\n display: flex;\n min-width: 2rem;\n height: 2rem;\n align-items: center;\n padding: 8px 0 !important;\n border: none;\n margin-left: 0.5rem;\n background: transparent;\n > span {\n display: flex;\n align-items: center;\n }\n\n &:hover {\n background: transparent !important;\n }\n }\n\n &.label-pinned {\n border-radius: 6px 6px 0 0;\n .label-sort-pin-icon {\n width: 16px;\n height: 16px;\n vertical-align: middle;\n }\n }\n\n &[data-is-marrybaby='true'] {\n padding: 0.75rem 1rem;\n border-radius: 16px 16px 0px 0px;\n &[data-color='white'] {\n border-bottom: none;\n }\n &[data-color='gray'] {\n background: #f3f3f3;\n }\n .popover-menu__btn {\n width: unset;\n }\n\n &.label-pinned {\n border-bottom: none;\n background: #fff9eb;\n border-radius: 1rem 1rem 0 0;\n .label-sort-pin-icon {\n margin-right: 8px;\n }\n .label-sort-pin-heading {\n color: #fb8c00;\n }\n }\n &.label-sorting {\n ${MediaQueries.tdUp} {\n padding-bottom: 1.5rem;\n margin-bottom: -0.75rem;\n }\n }\n }\n`\n","import React, { CSSProperties, ReactNode, useContext } from 'react'\n\nimport { Text } from 'components/atoms/text'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { StyledLabelSortPin } from './index.styled'\n\nexport type Props = {\n label: ReactNode\n rightLabel?: ReactNode\n onClick?: () => unknown\n color?: 'gray' | 'white'\n className?: string\n style?: CSSProperties\n}\n\nconst LabelSortPin = ({\n label,\n rightLabel,\n onClick,\n color,\n className,\n style,\n}: Props) => {\n const {\n data: {\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n return (\n <StyledLabelSortPin\n data-is-marrybaby={isMarryBaby}\n data-color={color}\n onClick={onClick}\n className={className}\n style={style}\n >\n <Text\n className=\"label-sort-pin-heading\"\n size={isMarryBaby ? 'p4' : 'p3'}\n type=\"bold\"\n >\n {label}\n </Text>\n {rightLabel}\n </StyledLabelSortPin>\n )\n}\n\nexport { LabelSortPin }\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledPopoverMenu = styled.div`\n position: relative;\n display: content;\n\n .popover-menu__btn {\n /* position: relative; */\n > span {\n width: 100%;\n height: 100%;\n > img {\n width: 100%;\n height: 100%;\n }\n }\n }\n\n .popover-menu__content {\n position: absolute;\n z-index: 10;\n width: 320px;\n padding: 8px;\n border: none;\n background: #fff;\n border-radius: 8px;\n box-shadow: 3px 3px 20px rgba(0, 0, 0, 0.1);\n\n &::before {\n position: absolute;\n width: 16px;\n height: 8px;\n background: #fff;\n content: '';\n }\n\n &.--position {\n &-top {\n bottom: calc(100% + 8px);\n\n &.--align {\n &-start {\n left: 0;\n\n &::before {\n top: 100%;\n left: 16px;\n clip-path: polygon(0 0, 50% 100%, 100% 0);\n }\n }\n\n &-end {\n left: 100%;\n transform: translateX(calc(-100% + 1rem));\n\n &::before {\n top: 100%;\n right: 16px;\n clip-path: polygon(0 0, 50% 100%, 100% 0);\n }\n }\n }\n }\n\n &-right {\n left: calc(100% + 8px);\n\n &.--align {\n &-start {\n top: 0;\n\n &::before {\n top: 16px;\n left: 0;\n width: 8px;\n height: 16px;\n clip-path: polygon(0 50%, 100% 0%, 100% 100%);\n transform: translateX(-100%);\n }\n }\n\n &-end {\n top: 100%;\n transform: translateX(calc(-100% + 1rem));\n\n &::before {\n bottom: 16px;\n left: 0;\n width: 8px;\n height: 16px;\n clip-path: polygon(0 50%, 100% 0%, 100% 100%);\n transform: translateX(-100%);\n }\n }\n }\n }\n\n &-bottom {\n top: calc(100% + 8px);\n\n &.--align {\n &-start {\n left: 0;\n\n &::before {\n bottom: 100%;\n left: 16px;\n clip-path: polygon(50% 0%, 0% 100%, 100% 100%);\n }\n }\n\n &-end {\n left: 100%;\n transform: translateX(calc(-100% + 1rem));\n\n &::before {\n right: 16px;\n bottom: 100%;\n clip-path: polygon(50% 0%, 0% 100%, 100% 100%);\n }\n }\n }\n }\n\n &-left {\n left: -8px;\n transform: translateX(-100%);\n\n &.--align {\n &-start {\n top: 0;\n\n &::before {\n top: 16px;\n left: 100%;\n width: 8px;\n height: 16px;\n clip-path: polygon(0 0%, 100% 50%, 0% 100%);\n transform: translateX(0);\n }\n }\n\n &-end {\n bottom: 0;\n\n &::before {\n bottom: 16px;\n left: 100%;\n width: 8px;\n height: 16px;\n clip-path: polygon(0 0%, 100% 50%, 0% 100%);\n transform: translateX(0);\n }\n }\n }\n }\n }\n }\n\n &[data-is-marrybaby='true'] {\n .popover-menu__content {\n padding: 0;\n border-radius: 12px;\n /* &::before {\n display: none;\n } */\n }\n }\n`\n\nexport const StyledTree = styled.div`\n display: flex;\n /* max-height: 300px; */\n flex-direction: column;\n cursor: default;\n\n .__header {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1rem 0;\n margin-bottom: 8px;\n\n .__back-btn {\n position: absolute;\n top: 50%;\n left: 8px;\n width: 16px;\n height: 16px;\n cursor: pointer;\n transform: translateY(-50%);\n }\n }\n\n .tree-text-description {\n padding-right: 8px;\n padding-left: 8px;\n margin-top: -8px;\n margin-bottom: 8px;\n font-size: 14px;\n font-weight: 400;\n line-height: 22px;\n text-align: left;\n }\n\n .__content {\n overflow: auto;\n flex: 1;\n }\n\n .__list {\n .__item {\n position: relative;\n &.bold-item {\n font-weight: 700;\n }\n &:last-child {\n .__btn {\n margin-bottom: 0;\n }\n }\n\n .__btn {\n position: relative;\n display: flex;\n width: 100%;\n height: 40px;\n align-items: center;\n padding: 0 1rem;\n border: none;\n margin-bottom: 8px;\n color: ${(props: ThemeProps) => props.theme.colors.gray800};\n cursor: pointer;\n text-align: left;\n transition: background 0.3s;\n\n /* for better gtm tracking result */\n * {\n pointer-events: none;\n }\n &.--checked {\n color: ${(props: ThemeProps) => props.theme.colors.gray500};\n pointer-events: none;\n }\n\n &:hover {\n background: ${(props: ThemeProps) => props.theme.colors.gray100};\n }\n\n .__icon {\n width: 16px;\n height: 16px;\n margin-right: 0.4rem;\n }\n\n & > span {\n position: relative;\n\n & > img {\n width: 16px;\n height: 16px;\n margin-right: 0.4rem;\n }\n }\n }\n\n .__toggle {\n position: absolute;\n top: 50%;\n right: 16px;\n width: 16px;\n height: 16px;\n pointer-events: none;\n transform: translateY(-50%);\n }\n }\n }\n &[data-is-marrybaby='true'] {\n .__header {\n padding: 1rem;\n }\n .tree-text-description {\n padding: 0 1rem;\n }\n .__list {\n .__item {\n &:first-child {\n .__btn {\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n }\n }\n &:last-child {\n .__btn {\n border-bottom-left-radius: 12px;\n border-bottom-right-radius: 12px;\n }\n }\n .__btn {\n height: unset;\n padding: 1rem;\n margin-bottom: 0;\n &:hover {\n background: ${(props: ThemeProps) =>\n props.theme.mbColors.lightPink};\n }\n }\n }\n }\n }\n`\n","import React, {\n CSSProperties,\n Dispatch,\n ReactNode,\n SetStateAction,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\n\nimport { Button, Props as ButtonProps } from 'components/atoms/button'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { StyledPopoverMenu } from './index.styled'\n\nexport type Props = {\n className?: string\n style?: CSSProperties\n toggleButtonContent?: ReactNode\n children?:\n | ((data: { setShow?: Dispatch<SetStateAction<boolean>> }) => ReactNode)\n | ReactNode\n | null\n position?: 'top' | 'right' | 'bottom' | 'left'\n align?: 'start' | 'end'\n buttonProps?: Omit<ButtonProps, 'children' | 'size'> & {\n size?: ButtonProps['size']\n }\n}\n\nexport const PopoverMenu = ({\n className,\n style,\n toggleButtonContent,\n position = 'bottom',\n align = 'end',\n children,\n buttonProps,\n}: Props) => {\n const {\n data: {\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n const [isShow, setIsShow] = useState(false)\n const popoverContent = useRef<HTMLDivElement>(null)\n\n const isShowRef = useRef(isShow)\n useEffect(() => {\n isShowRef.current = isShow\n if (!isShow) return\n popoverContent.current?.focus()\n }, [isShow])\n\n useEffect(() => {\n const clickHandler = (e: MouseEvent) => {\n if (\n !popoverContent.current?.contains(e.target as Node) &&\n isShowRef.current\n )\n setIsShow(false)\n }\n window.addEventListener('click', clickHandler)\n return () => {\n window.removeEventListener('click', clickHandler)\n }\n }, [])\n\n return (\n <StyledPopoverMenu\n data-is-marrybaby={isMarryBaby}\n className={className}\n style={style}\n >\n <Button\n theme={isMarryBaby ? 'marryBaby' : 'helloSites'}\n className=\"popover-menu__btn\"\n size=\"md\"\n color=\"transparent\"\n onClick={() => setIsShow((v) => !v)}\n {...buttonProps}\n >\n {toggleButtonContent}\n </Button>\n {isShow ? (\n <div\n ref={popoverContent}\n className={`popover-menu__content --position-${position} --align-${align}`}\n tabIndex={0}\n onClick={(e) => e.stopPropagation()}\n >\n {typeof children === 'function'\n ? children({\n setShow: setIsShow,\n })\n : children}\n </div>\n ) : null}\n </StyledPopoverMenu>\n )\n}\n","import React, {\n Dispatch,\n useState,\n useMemo,\n SetStateAction,\n ReactNode,\n CSSProperties,\n} from 'react'\n\nimport { Heading } from 'components/atoms/heading'\nimport { Text } from 'components/atoms/text'\nimport { theme } from 'misc/theme'\n\nimport IconCheckGray from '../../../assets/svg/icon-check-gray.svg'\nimport IconChevronLeftDark from '../../../assets/svg/icon-chevron-left-dark.svg'\nimport IconChevronRightDark from '../../../assets/svg/icon-chevron-right-dark.svg'\nimport { PopoverMenu, Props as PopoverMenuProps } from './index'\nimport { StyledTree } from './index.styled'\n\nexport type TreeProps = {\n data?: TreeDataProps\n setShow?: Dispatch<SetStateAction<boolean>>\n}\nexport type Props = PopoverMenuProps & TreeProps\n\nexport type TreeDataProps = {\n title?: string\n description?: string\n isShowheader?: boolean\n type: 'jsx' | 'list'\n jsxRenderer?: (setShow?: (v: boolean) => void) => ReactNode\n list?: ListItemProps[]\n} | null\n\nexport type ListItemProps = {\n icon?: string | null\n label: string\n onClick?: () => void\n subTree?: TreeDataProps\n selected?: boolean\n style?: CSSProperties\n className?: string\n dataEventCategory?: string\n dataEventAction?: string\n dataEventLabel?: string\n}\n\nexport const TreePopoverMenu = ({ data, ...popoverProps }: Props) => {\n return (\n <PopoverMenu {...popoverProps}>\n {({ setShow }) => <Tree data={data} setShow={setShow} />}\n </PopoverMenu>\n )\n}\n\nconst getCurrentDataFromPath = (\n data: TreeDataProps,\n path: string,\n): TreeDataProps | undefined => {\n const pathItems = path.split('.')\n let currentData: TreeDataProps | undefined = data\n pathItems.forEach((pathItem) => {\n if (!pathItem || !currentData || currentData?.type !== 'list') return\n currentData = currentData?.list?.[Number(pathItem)]?.subTree\n })\n return currentData\n}\n\nexport const Tree = ({ data, setShow }: TreeProps) => {\n const [path, setPath] = useState('')\n const currentData = useMemo(\n () => data && getCurrentDataFromPath(data, path),\n [data, path],\n )\n\n if (!data) return null\n if (!currentData) return null\n\n const handleItemClick = (\n index: number,\n { subTree, onClick = () => null }: ListItemProps,\n ) => {\n if (onClick) onClick()\n if (!subTree) setShow && setShow(false)\n else setPath((p) => p.split('.').concat(String(index)).join('.'))\n }\n\n return (\n <StyledTree>\n {currentData.isShowheader ? (\n <div className=\"__header\">\n {path ? (\n <img\n className=\"__back-btn\"\n src={IconChevronLeftDark}\n onClick={() =>\n setPath((p) => p.split('.').slice(0, -1).join('.'))\n }\n />\n ) : null}\n {currentData.title ? (\n <Heading className=\"__title\" tag=\"h6\">\n {currentData.title}\n </Heading>\n ) : null}\n </div>\n ) : null}\n {currentData.description ? (\n <Text\n className=\"tree-text-description\"\n color={theme.colors.gray600}\n size=\"p3\"\n type=\"regular\"\n >\n {currentData.description}\n </Text>\n ) : null}\n <div className=\"__content\">\n {currentData.type === 'jsx'\n ? currentData?.jsxRenderer?.(setShow)\n : null}\n {currentData.type === 'list' ? (\n <ul className=\"__list\">\n {Array.isArray(currentData.list)\n ? currentData.list.map((item: ListItemProps, index) => (\n <li\n key={index}\n style={item.style}\n className={`__item ${item.className}`}\n >\n {' '}\n <div\n className={`__btn ${item.selected ? '--checked' : ''}`}\n onClick={() => handleItemClick(index, item)}\n data-event-category={item.dataEventCategory}\n data-event-action={item.dataEventAction}\n data-event-label={item.dataEventLabel}\n >\n {item.icon && <img className=\"__icon\" src={item.icon} />}\n <span>{item.label}</span>\n </div>\n {item.subTree ? (\n <img className=\"__toggle\" src={IconChevronRightDark} />\n ) : null}\n {item.selected ? (\n <img className=\"__toggle\" src={IconCheckGray} />\n ) : null}\n </li>\n ))\n : null}\n </ul>\n ) : null}\n </div>\n </StyledTree>\n )\n}\n","var img = \"data:image/png;base64,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\";\n export default img;","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledPopup = styled.div`\n position: fixed;\n left: 50%;\n width: 343px;\n background-color: ${(props: ThemeProps) => props.theme.colors.white};\n border-radius: 6px;\n box-shadow: 0px 0px 4px ${(props: ThemeProps) => props.theme.colors.gray200};\n transform: translate(-50%, -50%);\n transition: all 0.5s ease-in-out;\n\n ${MediaQueries.tdUp} {\n width: 750px;\n }\n\n &[data-animation='true'] {\n transition: all 0.5s ease-in-out;\n }\n\n &[data-open='true'] {\n z-index: 200;\n top: 50%;\n opacity: 1;\n visibility: visible;\n }\n\n &[data-open='false'] {\n top: -50%;\n }\n\n .popup-content {\n ${MediaQueries.mbDown} {\n display: block;\n }\n display: flex;\n position: relative;\n z-index: 111;\n height: 100%;\n .button-see-more {\n margin: 32px 0;\n padding: 0;\n > * {\n display: inline-block;\n }\n }\n .close-button {\n position: absolute;\n z-index: 100;\n top: 10px;\n right: 10px;\n cursor: pointer;\n width: unset;\n height: unset;\n img {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n }\n }\n }\n\n .main-info {\n padding-bottom: 32px;\n background-color: ${(props: ThemeProps) => props.theme.colors.blue50};\n border-radius: 6px;\n .btn-booking {\n display: flex;\n margin: 12px auto;\n }\n .avatar-title {\n position: relative;\n width: 100%;\n padding-top: 46px;\n text-align: center;\n }\n }\n`\n\nexport const StyledPopupWrapper = styled.div`\n position: fixed;\n z-index: 110;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n align-items: center;\n background: rgba(38, 38, 38, 0.3);\n\n &[data-open='false'] {\n display: none;\n }\n`\n\nexport const StyledProfileImage = styled.div`\n .image-container {\n .badge-avatar {\n position: absolute;\n right: 0;\n bottom: 0;\n top: 0;\n }\n }\n display: flex;\n justify-content: center;\n padding-bottom: 15px;\n text-align: center;\n .profile-image {\n width: 100px;\n min-width: 100px;\n height: 100px;\n min-height: 100px;\n border-radius: 50%;\n object-fit: cover;\n }\n .badge-avatar {\n width: 24px;\n height: 24px;\n }\n`\n\nexport const StyledTitleContainer = styled.div`\n position: relative;\n z-index: 9;\n .specialty {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n }\n\n padding: 0px 16px;\n text-align: center;\n .specialty {\n justify-content: center;\n }\n\n .experience {\n padding: 16px 0px 32px;\n text-align: left;\n .btn-wrapper {\n margin-top: 24px;\n }\n }\n p {\n max-width: 100%;\n -webkit-line-clamp: 4;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n`\nexport const StyledSeparator = styled.span`\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0 0.4em;\n color: ${(props: ThemeProps) => props.theme.colors.neutral300};\n`\nexport const StyledDotSeparator = styled.div`\n display: inline-block;\n width: 3px;\n height: 3px;\n margin: 0;\n background-color: ${(props: ThemeProps) => props.theme.colors.gray400};\n border-radius: 50%;\n`\n\nexport const StyledItem = styled.div`\n display: flex;\n margin-top: 8px;\n\n .bullet-point {\n width: 24px;\n height: 24px;\n }\n`\n\nexport const StyledExperienceList = styled.ul`\n padding-left: 18px;\n li {\n list-style-type: disc;\n }\n`\n","import React, { useEffect, useState } from 'react'\n\nimport { Button } from 'components/atoms/button'\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { theme } from 'misc/theme'\nimport { useId } from 'react-id-generator'\nimport { LocaleType } from 'src/interfaces/types'\nimport { DoctorInfo } from 'src/together/interfaces/types'\n\nimport { CARE_PATHS } from '../../../api/paths'\nimport {\n callApi,\n domainLocales,\n getCareDoctorUrl,\n getCareHospitalUrl,\n getCarePath,\n} from '../../../api/utils'\nimport AvatarDefault from '../../../assets/images/avatar-default.png'\nimport CloseLight from '../../../assets/svg/closeLight.svg'\nimport ReviewerMedical from '../../../assets/svg/reviewer-medical.svg'\nimport { Loading } from '../../atoms/loading'\nimport {\n StyledExperienceList,\n StyledPopup,\n StyledPopupWrapper,\n StyledProfileImage,\n StyledTitleContainer,\n} from './index.styled'\n\ntype DoctorExperience = {\n content: string\n year: string | number\n}\n\nexport type Props = {\n isOpen: boolean\n onClose: () => void\n enableAnimation?: boolean\n doctorId: string\n locale?: LocaleType\n isMobile?: boolean\n}\n\nconst PopupDoctor = ({\n isOpen = true,\n onClose,\n enableAnimation = true,\n doctorId,\n locale,\n isMobile,\n}: Props) => {\n const { t } = useTranslations()\n const [doctorInfo, setDoctorInfo] = useState<DoctorInfo | null>(null)\n const [isLoading, setIsLoading] = useState(false)\n\n useEffect(() => {\n if (isOpen && doctorId && String(doctorInfo?.id) !== String(doctorId)) {\n setIsLoading(true)\n try {\n setDoctorInfo(null)\n callApi(\n getCarePath(CARE_PATHS.GET_DOCTOR_INFO, {\n doctorId: doctorId,\n website_url: domainLocales[locale],\n }),\n\n 'get',\n ).then((res) => {\n setDoctorInfo(res?._data.doctor)\n })\n } catch (error) {\n console.error(error)\n }\n setIsLoading(false)\n }\n }, [isOpen, doctorId, doctorInfo?.id])\n\n const experiences = doctorInfo?.experiences || []\n\n const specialty = doctorInfo?.specialties || []\n const specialtiesList = specialty\n .map((specialty: any) => specialty?.name || specialty)\n .join(' • ')\n\n const formattedExperiences = experiences\n .map((experience) => {\n try {\n return JSON.parse(experience.description)\n } catch (e) {\n return experience.description\n }\n })\n .filter((e: DoctorExperience) => e.content)\n\n const renderExperienceText = (experience: DoctorExperience) => {\n if (experience?.year) return `${experience.year} ${experience?.content}`\n if (experience?.content) return experience.content\n if (typeof experience === 'string') return experience\n return ''\n }\n const idList = useId(doctorInfo?.experiences?.length)\n return (\n <>\n <StyledPopup\n data-open={isOpen}\n data-animation={enableAnimation}\n onClick={(e) => e.stopPropagation()}\n >\n {isLoading || !doctorInfo ? (\n <Loading />\n ) : (\n <div className=\"popup-content\">\n <div className=\"close-button\" onClick={onClose}>\n <img\n src={CloseLight}\n style={{ width: 20, height: 20 }}\n alt=\"close-icon\"\n />\n </div>\n <div className=\"main-info\">\n <div className=\"border-banner\"></div>\n <div className=\"avatar-title\">\n <StyledProfileImage>\n <div className=\"image-container\">\n <div style={{ position: 'relative' }}>\n <img\n src={\n doctorInfo?.avatar\n ? doctorInfo?.avatar\n : AvatarDefault\n }\n className=\"profile-image\"\n alt=\"avatar\"\n />\n <img\n className=\"badge-avatar\"\n src={ReviewerMedical}\n alt=\"badge\"\n />\n </div>\n </div>\n </StyledProfileImage>\n <StyledTitleContainer>\n <Text size=\"s3\" type=\"semiBold\" className=\"full-name\">\n {doctorInfo?.name}\n </Text>\n <div className=\"specialty\">\n {specialtiesList && (\n <>\n <Text size=\"p4\" color={theme.colors.gray800}>\n {specialtiesList}\n {' • '}\n </Text>\n </>\n )}\n\n <a\n href={getCareHospitalUrl({\n id: doctorInfo?.organization?.id,\n name: doctorInfo?.organization?.name,\n slug: doctorInfo?.organization?.slug,\n locale,\n })}\n className=\"organisation\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Text\n size=\"p4\"\n className=\"organisation\"\n color={theme.colors.gray800}\n style={{ textDecoration: 'underline' }}\n >\n {doctorInfo?.organization.name}\n </Text>\n </a>\n </div>\n </StyledTitleContainer>\n </div>\n {!isMobile && (\n <div className=\"btn-wrapper\">\n <a\n href={getCareDoctorUrl({\n name: doctorInfo.name,\n id: doctorInfo.id,\n locale: locale as LocaleType,\n })}\n >\n <Button color=\"primary\" size=\"md\" className=\"btn-booking\">\n {t('careBooking.bookAnAppointment')}\n </Button>\n </a>\n </div>\n )}\n </div>\n {formattedExperiences && (\n <StyledTitleContainer>\n <div className=\"experience\">\n <Text\n type=\"bold\"\n size=\"s3\"\n color={theme.colors.gray800}\n style={{ paddingBottom: 16 }}\n >\n {t('expert.content.description').toUpperCase()}\n </Text>\n <StyledExperienceList>\n {formattedExperiences.map(\n (experience: DoctorExperience, i: number) => (\n <li key={idList[i]}>\n <Text size=\"p2\">\n {renderExperienceText(experience)}\n </Text>\n </li>\n ),\n )}\n </StyledExperienceList>\n {isMobile ? (\n <div className=\"btn-wrapper\">\n <a\n href={getCareDoctorUrl({\n name: doctorInfo.name,\n id: doctorInfo.id,\n locale: locale as LocaleType,\n })}\n >\n <Button\n color=\"primary\"\n size=\"md\"\n className=\"btn-booking\"\n >\n {t('careBooking.bookAnAppointment')}\n </Button>\n </a>\n </div>\n ) : (\n <a\n href={getCareDoctorUrl({\n name: doctorInfo.name,\n id: doctorInfo.id,\n locale: locale as LocaleType,\n })}\n >\n <Text\n size=\"s4\"\n color=\"#2D87F3\"\n style={{ paddingTop: 24 }}\n >\n {t('home.seeExpert')}\n </Text>\n </a>\n )}\n </div>\n </StyledTitleContainer>\n )}\n </div>\n )}\n </StyledPopup>\n <StyledPopupWrapper\n data-open={isOpen}\n onClick={(e) => {\n e.stopPropagation()\n onClose()\n }}\n />\n </>\n )\n}\n\nexport { PopupDoctor }\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledPopup = styled.div`\n position: fixed;\n left: 50%;\n width: 343px;\n background-color: ${(props: ThemeProps) => props.theme.colors.white};\n border-radius: 6px;\n box-shadow: 0px 0px 4px ${(props: ThemeProps) => props.theme.colors.gray200};\n transform: translate(-50%, -50%);\n transition: all 0.5s ease-in-out;\n\n ${MediaQueries.tdUp} {\n width: 750px;\n }\n\n &[data-animation='true'] {\n transition: all 0.5s ease-in-out;\n }\n\n &[data-open='true'] {\n z-index: 200;\n top: 50%;\n opacity: 1;\n visibility: visible;\n }\n\n &[data-open='false'] {\n top: -50%;\n }\n\n .popup-content {\n ${MediaQueries.mbDown} {\n display: block;\n }\n display: flex;\n position: relative;\n z-index: 111;\n height: 100%;\n .button-see-more {\n margin: 32px 0;\n padding: 0;\n > * {\n display: inline-block;\n }\n }\n .close-button {\n position: absolute;\n z-index: 100;\n top: 10px;\n right: 10px;\n cursor: pointer;\n width: unset;\n height: unset;\n img {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n }\n }\n }\n\n .main-info {\n padding-bottom: 32px;\n background-color: ${(props: ThemeProps) => props.theme.colors.blue50};\n border-radius: 6px;\n\n .avatar-title {\n position: relative;\n width: 100%;\n padding-top: 46px;\n text-align: center;\n }\n }\n`\n\nexport const StyledPopupWrapper = styled.div`\n position: fixed;\n z-index: 110;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n align-items: center;\n background: rgba(38, 38, 38, 0.3);\n\n &[data-open='false'] {\n display: none;\n }\n`\n\nexport const StyledProfileImage = styled.div`\n .image-container {\n .badge-avatar {\n position: absolute;\n right: 0;\n bottom: 0;\n top: 0;\n }\n }\n display: flex;\n justify-content: center;\n padding-bottom: 15px;\n text-align: center;\n .profile-image {\n width: 100px;\n min-width: 100px;\n height: 100px;\n min-height: 100px;\n border-radius: 50%;\n object-fit: cover;\n }\n .badge-avatar {\n width: 24px;\n height: 24px;\n }\n`\n\nexport const StyledTitleContainer = styled.div`\n position: relative;\n z-index: 9;\n .specialty {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n }\n\n padding: 0px 16px;\n text-align: center;\n .specialty {\n justify-content: center;\n }\n\n .experience {\n padding: 16px 0px 32px;\n text-align: left;\n .btn-wrapper {\n margin-top: 24px;\n }\n }\n p {\n max-width: 100%;\n -webkit-line-clamp: 4;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n`\nexport const StyledSeparator = styled.span`\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0 0.4em;\n color: ${(props: ThemeProps) => props.theme.colors.neutral300};\n`\nexport const StyledDotSeparator = styled.div`\n display: inline-block;\n width: 3px;\n height: 3px;\n margin: 0;\n background-color: ${(props: ThemeProps) => props.theme.colors.gray400};\n border-radius: 50%;\n`\n\nexport const StyledItem = styled.div`\n display: flex;\n margin-top: 8px;\n\n .bullet-point {\n width: 24px;\n height: 24px;\n }\n`\n","import React, { useEffect, useState } from 'react'\n\nimport { Heading } from 'components/atoms/heading'\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { theme } from 'misc/theme'\n\nimport { DISCOVER_PATHS } from '../../../api/paths'\nimport { callApi, getDiscoverApiPath } from '../../../api/utils'\nimport AvatarDefault from '../../../assets/images/avatar-default.png'\nimport BulletPoint from '../../../assets/svg/bullet-point.svg'\nimport CloseLight from '../../../assets/svg/closeLight.svg'\nimport ReviewerAuthor from '../../../assets/svg/reviewer-author.svg'\nimport ReviewerEditor from '../../../assets/svg/reviewer-editor.svg'\nimport ReviewerExpert from '../../../assets/svg/reviewer-expert.svg'\nimport ReviewerFactCheck from '../../../assets/svg/reviewer-fact-check.svg'\nimport ReviewerMedical from '../../../assets/svg/reviewer-medical.svg'\nimport { Loading } from '../../atoms/loading'\nimport {\n StyledItem,\n StyledPopup,\n StyledPopupWrapper,\n StyledProfileImage,\n StyledTitleContainer,\n} from './index.styled'\n\nconst ReviewerIconMap = {\n author: ReviewerAuthor,\n edtior: ReviewerEditor,\n expert: ReviewerExpert,\n 'fact-check': ReviewerFactCheck,\n medical: ReviewerMedical,\n}\n\nexport type Experience = {\n title: string\n organization: string\n duration: string\n}\nexport type ExpertInfo = {\n avatar?: string\n role?: string\n display_name: string\n specialty: string\n organisation: string\n experiences: Array<Experience>\n organisation_url: string\n profile_url: string\n user_id: number\n}\nexport type Props = {\n isOpen: boolean\n onClose: () => void\n enableAnimation?: boolean\n expertId: string\n}\n\nconst PopupExpert = ({\n isOpen = true,\n onClose,\n enableAnimation = true,\n expertId,\n}: Props) => {\n const { t } = useTranslations()\n const [expertInfo, setExpertInfo] = useState<ExpertInfo | null>(null)\n const [isLoading, setIsLoading] = useState(false)\n\n useEffect(() => {\n if (\n isOpen &&\n expertId &&\n String(expertInfo?.user_id) !== String(expertId)\n ) {\n setIsLoading(true)\n try {\n setExpertInfo(null)\n callApi(\n getDiscoverApiPath(DISCOVER_PATHS.GET_EXPERT_BY_ID, {\n id: expertId,\n }),\n 'get',\n ).then((res) => {\n setExpertInfo(res?.data)\n })\n } catch (error) {\n console.error(error)\n }\n setIsLoading(false)\n }\n }, [isOpen, expertId, expertInfo?.user_id])\n\n return (\n <>\n <StyledPopup\n data-open={isOpen}\n data-animation={enableAnimation}\n onClick={(e) => e.stopPropagation()}\n >\n {isLoading || !expertInfo ? (\n <Loading />\n ) : (\n <div className=\"popup-content\">\n <div className=\"close-button\" onClick={onClose}>\n <img\n src={CloseLight}\n style={{ width: 20, height: 20 }}\n alt=\"close-icon\"\n />\n </div>\n <div className=\"main-info\">\n <div className=\"border-banner\"></div>\n <div className=\"avatar-title\">\n <StyledProfileImage>\n <div className=\"image-container\">\n <div style={{ position: 'relative' }}>\n <img\n src={\n expertInfo?.avatar\n ? expertInfo?.avatar\n : AvatarDefault\n }\n className=\"profile-image\"\n alt=\"avatar\"\n />\n <img\n className=\"badge-avatar\"\n src={ReviewerIconMap[expertInfo?.role]}\n alt=\"badge\"\n />\n </div>\n </div>\n </StyledProfileImage>\n <StyledTitleContainer>\n <Text size=\"s3\" className=\"full-name\" type=\"semiBold\">\n {expertInfo?.display_name}\n </Text>\n <div>\n <Text size=\"p4\" color={theme.colors.gray800}>\n {expertInfo?.specialty}\n {' • '}\n </Text>\n <a\n href={expertInfo?.organisation_url}\n className=\"organisation\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Text\n size=\"p4\"\n className=\"organisation\"\n color={theme.colors.gray800}\n style={{ textDecoration: 'underline' }}\n >\n {expertInfo?.organisation}\n </Text>\n </a>\n </div>\n </StyledTitleContainer>\n </div>\n </div>\n <StyledTitleContainer>\n <div className=\"experience\">\n <Text\n type=\"bold\"\n size=\"p4\"\n color={theme.colors.gray800}\n style={{ paddingBottom: 16 }}\n >\n {t('expert.content.description').toUpperCase()}\n </Text>\n <div className=\"list-items\">\n {expertInfo?.experiences\n ? expertInfo.experiences\n .filter((e) => !!(e && (e.title || e.organization)))\n .slice(0, 3)\n .map((experience, index) => (\n <StyledItem key={index}>\n <img\n className=\"bullet-point\"\n src={BulletPoint}\n alt=\"point\"\n />\n <div className=\"text-contain\">\n <Heading tag=\"h6\" color={theme.colors.gray800}>\n {experience?.title}\n </Heading>\n <Text size=\"p2\" color={theme.colors.gray500}>\n {experience?.organization}\n </Text>\n </div>\n </StyledItem>\n ))\n : false}\n </div>\n <a href={expertInfo?.profile_url}>\n <Text size=\"s4\" color=\"#2D87F3\" style={{ paddingTop: 24 }}>\n {t('home.seeExpert')}\n </Text>\n </a>\n </div>\n </StyledTitleContainer>\n </div>\n )}\n </StyledPopup>\n <StyledPopupWrapper\n data-open={isOpen}\n onClick={(e) => {\n e.stopPropagation()\n onClose()\n }}\n />\n </>\n )\n}\n\nexport { PopupExpert }\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledPopup = styled.div`\n position: fixed;\n left: 50%;\n width: 343px;\n background-color: ${(props: ThemeProps) => props.theme.colors.white};\n border-radius: 6px;\n box-shadow: 0px 0px 4px ${(props: ThemeProps) => props.theme.colors.gray200};\n transform: translate(-50%, -50%);\n transition: all 0.5s ease-in-out;\n\n ${MediaQueries.tdUp} {\n width: 750px;\n }\n\n &[data-animation='true'] {\n transition: all 0.5s ease-in-out;\n }\n\n &[data-open='true'] {\n z-index: 200;\n top: 50%;\n opacity: 1;\n visibility: visible;\n }\n\n &[data-open='false'] {\n top: -50%;\n }\n\n .popup-content {\n ${MediaQueries.mbDown} {\n display: block;\n }\n display: flex;\n position: relative;\n z-index: 111;\n height: 100%;\n .button-see-more {\n margin: 32px 0;\n padding: 0;\n > * {\n display: inline-block;\n }\n }\n .close-button {\n position: absolute;\n z-index: 100;\n top: 10px;\n right: 10px;\n cursor: pointer;\n width: unset;\n height: unset;\n img {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n }\n }\n }\n\n .main-info {\n padding-bottom: 32px;\n background-color: ${(props: ThemeProps) => props.theme.colors.blue50};\n border-radius: 6px;\n .btn-booking {\n display: flex;\n margin: 12px auto;\n }\n .avatar-title {\n position: relative;\n width: 100%;\n padding-top: 46px;\n text-align: center;\n }\n }\n`\n\nexport const StyledPopupWrapper = styled.div`\n position: fixed;\n z-index: 110;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n align-items: center;\n background: rgba(38, 38, 38, 0.3);\n\n &[data-open='false'] {\n display: none;\n }\n`\n\nexport const StyledProfileImage = styled.div`\n .image-container {\n .badge-avatar {\n position: absolute;\n right: 0;\n bottom: 0;\n top: 0;\n }\n }\n display: flex;\n justify-content: center;\n padding-bottom: 15px;\n text-align: center;\n .profile-image {\n width: 100px;\n min-width: 100px;\n height: 100px;\n min-height: 100px;\n border-radius: 50%;\n object-fit: cover;\n }\n .badge-avatar {\n width: 24px;\n height: 24px;\n }\n`\n\nexport const StyledTitleContainer = styled.div`\n position: relative;\n z-index: 9;\n .specialty {\n display: block;\n min-width: 240px;\n }\n\n padding: 0px 16px;\n text-align: center;\n .specialty {\n justify-content: center;\n }\n\n .experience {\n padding: 16px 0px 32px;\n text-align: left;\n .btn-wrapper {\n margin-top: 24px;\n }\n }\n p {\n max-width: 100%;\n }\n`\nexport const StyledSeparator = styled.span`\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0 0.4em;\n color: ${(props: ThemeProps) => props.theme.colors.neutral300};\n`\nexport const StyledDotSeparator = styled.div`\n display: inline-block;\n width: 3px;\n height: 3px;\n margin: 0;\n background-color: ${(props: ThemeProps) => props.theme.colors.gray400};\n border-radius: 50%;\n`\n\nexport const StyledItem = styled.div`\n display: flex;\n margin-top: 8px;\n\n .bullet-point {\n width: 24px;\n height: 24px;\n }\n`\n","import React, { useEffect, useMemo, useState } from 'react'\n\nimport { Button } from 'components/atoms/button'\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { theme } from 'misc/theme'\nimport { LocaleType } from 'src/interfaces/types'\n\nimport { CARE_PATHS } from '../../../api/paths'\nimport {\n callApi,\n domainLocales,\n getCareHospitalUrl,\n getCarePath,\n} from '../../../api/utils'\nimport AvatarDefault from '../../../assets/images/avatar-default.png'\nimport CloseLight from '../../../assets/svg/closeLight.svg'\nimport ReviewerMedical from '../../../assets/svg/reviewer-medical.svg'\nimport { Loading } from '../../atoms/loading'\nimport {\n StyledPopup,\n StyledPopupWrapper,\n StyledProfileImage,\n StyledTitleContainer,\n} from './index.styled'\n\nexport type Specialy = {\n id: string\n name: string\n slug: string\n thumbnail?: string\n}\n\nexport type HospitalInfo = {\n name: string\n about?: string\n specialties?: Array<Specialy>\n logo?: string\n address?: string\n city_id?: number\n total_available_doctor?: number\n total_available_service?: number\n slug: string\n id: number\n}\nexport type Props = {\n isOpen: boolean\n onClose: () => void\n enableAnimation?: boolean\n hospitalId: string\n locale?: LocaleType\n isMobile?: boolean\n}\n\nconst PopupHospital = ({\n isOpen = true,\n onClose,\n enableAnimation = true,\n hospitalId,\n locale,\n isMobile,\n}: Props) => {\n const { t } = useTranslations()\n const [hospitalInfo, setHospitalInfo] = useState<HospitalInfo | null>(null)\n const [isLoading, setIsLoading] = useState(false)\n\n useEffect(() => {\n if (\n isOpen &&\n hospitalId &&\n String(hospitalInfo?.id) !== String(hospitalId)\n ) {\n setIsLoading(true)\n try {\n setHospitalInfo(null)\n callApi(\n getCarePath(CARE_PATHS.GET_HOSPITAL_INFO, {\n hospital_branch_id: hospitalId,\n website_url: domainLocales[locale],\n }),\n 'get',\n ).then((res) => {\n setHospitalInfo(res?._data.branch)\n })\n } catch (error) {\n console.error(error)\n }\n setIsLoading(false)\n }\n }, [isOpen, hospitalId, hospitalInfo?.id])\n const specialties = hospitalInfo?.specialties || []\n const formatSpecialties: string[] = useMemo(\n () => specialties.map((specialty: any) => specialty.name),\n [specialties],\n )\n\n return (\n <>\n <StyledPopup\n data-open={isOpen}\n data-animation={enableAnimation}\n onClick={(e) => e.stopPropagation()}\n >\n {isLoading || !hospitalInfo ? (\n <Loading />\n ) : (\n <div className=\"popup-content\">\n <div className=\"close-button\" onClick={onClose}>\n <img\n src={CloseLight}\n style={{ width: 20, height: 20 }}\n alt=\"close-icon\"\n />\n </div>\n <div className=\"main-info\">\n <div className=\"border-banner\"></div>\n <div className=\"avatar-title\">\n <StyledProfileImage>\n <div className=\"image-container\">\n <div style={{ position: 'relative' }}>\n <img\n src={\n hospitalInfo?.logo\n ? hospitalInfo?.logo\n : AvatarDefault\n }\n className=\"profile-image\"\n alt=\"avatar\"\n />\n <img\n className=\"badge-avatar\"\n src={ReviewerMedical}\n alt=\"badge\"\n />\n </div>\n </div>\n </StyledProfileImage>\n <StyledTitleContainer>\n <Text size=\"s3\" type=\"semiBold\" className=\"full-name\">\n {hospitalInfo?.name}\n </Text>\n <div className=\"specialty\">\n {specialties && (\n <Text size=\"p4\" color={theme.colors.gray800}>\n {formatSpecialties.join(' • ')}\n {'•'}\n </Text>\n )}\n\n <a\n href={getCareHospitalUrl({\n id: hospitalInfo.id,\n name: hospitalInfo.name,\n slug: hospitalInfo.slug,\n locale,\n })}\n className=\"organisation\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Text\n size=\"p4\"\n className=\"organisation\"\n color={theme.colors.gray800}\n style={{ textDecoration: 'underline' }}\n >\n {hospitalInfo?.name}\n </Text>\n </a>\n </div>\n </StyledTitleContainer>\n </div>\n {!isMobile && (\n <a\n href={getCareHospitalUrl({\n id: hospitalInfo.id,\n name: hospitalInfo.name,\n slug: hospitalInfo.slug,\n locale,\n })}\n >\n <div className=\"btn-wrapper\">\n <Button color=\"primary\" size=\"md\" className=\"btn-booking\">\n {t('careBooking.bookAnAppointment')}\n </Button>\n </div>\n </a>\n )}\n </div>\n\n <StyledTitleContainer>\n <div className=\"experience\">\n <Text\n type=\"bold\"\n size=\"s3\"\n color={theme.colors.gray800}\n style={{ paddingBottom: 16 }}\n >\n {t('hospital.content.description').toUpperCase()}\n </Text>\n <Text size=\"p2\" color={theme.colors.gray500}>\n {hospitalInfo.about}\n </Text>\n {isMobile ? (\n <a\n href={getCareHospitalUrl({\n id: hospitalInfo.id,\n name: hospitalInfo.name,\n slug: hospitalInfo.slug,\n locale,\n })}\n >\n <div className=\"btn-wrapper\">\n <Button color=\"primary\" size=\"md\" className=\"btn-booking\">\n {t('careBooking.bookAnAppointment')}\n </Button>\n </div>\n </a>\n ) : (\n <a\n href={getCareHospitalUrl({\n id: hospitalInfo.id,\n name: hospitalInfo.name,\n slug: hospitalInfo.slug,\n locale,\n })}\n >\n <Text size=\"s4\" color=\"#2D87F3\" style={{ paddingTop: 24 }}>\n {t('home.seeHospital')}\n </Text>\n </a>\n )}\n </div>\n </StyledTitleContainer>\n </div>\n )}\n </StyledPopup>\n <StyledPopupWrapper\n data-open={isOpen}\n onClick={(e) => {\n e.stopPropagation()\n onClose()\n }}\n />\n </>\n )\n}\n\nexport { PopupHospital }\n","import { FormatDistanceFn, FormatDistanceLocale } from './types'\n\ntype FormatDistanceTokenValue =\n | string\n | {\n one: string\n other: string\n }\n\nconst formatDistanceLocale: FormatDistanceLocale<FormatDistanceTokenValue> = {\n lessThanXSeconds: {\n one: 'တစ်စက္ကန့်အောက်',\n other: '{{count}} စက္ကန့်အောက်',\n },\n\n xSeconds: {\n one: 'တစ်စက္ကန့်',\n other: '{{count}} စက္ကန့်',\n },\n\n halfAMinute: 'မိနစ်ဝက်',\n\n lessThanXMinutes: {\n one: 'တစ်မိနစ်အောက်',\n other: '{{count}} မိနစ်အောက်',\n },\n\n xMinutes: {\n one: 'တစ်မိနစ်',\n other: '{{count}}နာရီခန့်',\n },\n\n aboutXHours: {\n one: 'တစ်နာရီခန့်',\n other: '{{count}}နာရီခန့်',\n },\n\n xHours: {\n one: 'တစ်နာရီ',\n other: '{{count}}နာရီ',\n },\n\n xDays: {\n one: 'တစ်ရက်',\n other: '{{count}}ရက်',\n },\n\n aboutXWeeks: {\n one: 'တစ်ပတ်ခန့်',\n other: '{{count}}ပတ်ခန့်',\n },\n\n xWeeks: {\n one: 'တစ်ပတ်',\n other: '{{count}}ပတ်',\n },\n\n aboutXMonths: {\n one: 'တစ်လခန့်',\n other: '{{count}} လခန့်',\n },\n\n xMonths: {\n one: 'တစ်လ',\n other: '{{count}}လ',\n },\n\n aboutXYears: {\n one: 'တစ်နှစ်ခန့်',\n other: '{{count}}နှစ်',\n },\n\n xYears: {\n one: 'တစ်နှစ်',\n other: '{{count}}နှစ်',\n },\n\n overXYears: {\n one: 'တစ်နှစ်ကျော်',\n other: '{{count}}နှစ်ကျော်',\n },\n\n almostXYears: {\n one: 'တစ်နှစ်နီးပါး',\n other: '{{count}}နှစ်နီးပါး',\n },\n}\n\nconst formatDistance: FormatDistanceFn = (token, count, options) => {\n let result\n\n const tokenValue = formatDistanceLocale[token]\n if (typeof tokenValue === 'string') {\n result = tokenValue\n } else if (count === 1) {\n result = tokenValue.one\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString())\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return result + 'အတွင်း'\n } else {\n return 'လွန်ခဲ့သော ' + result\n // + 'က'\n }\n }\n\n return result\n}\nexport default formatDistance\n","import { Locale } from 'date-fns'\n\nimport formatDistance from './formatDistance'\n\nexport default {\n code: 'my',\n formatDistance: formatDistance,\n // formatLong: formatLong,\n // formatRelative: formatRelative,\n // localize: localize,\n // match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n} as Locale\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledCardAuthor = styled.div`\n display: flex;\n align-items: center;\n padding: 0 1rem;\n a {\n text-decoration: none;\n }\n .button-more {\n display: flex;\n width: 20px;\n height: 20px;\n align-items: center;\n justify-content: center;\n .button-more-icon {\n height: 13px;\n vertical-align: middle;\n }\n }\n .temp-avatar {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${(props: ThemeProps) =>\n props.theme.colors.secondaryBase};\n border-radius: 50%;\n color: white;\n font-weight: bold;\n }\n\n .author-info {\n flex: 1;\n margin-left: 0.5rem;\n .author-info-top {\n display: flex;\n align-items: center;\n cursor: pointer;\n }\n .author-info-text-wrapper {\n display: flex;\n min-width: 0px;\n flex: 1 1 0%;\n align-items: center;\n }\n .author-name {\n overflow: hidden;\n font-weight: 600;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .author-time {\n flex-shrink: 0;\n }\n .author-role {\n height: 1rem;\n flex-shrink: 0;\n padding: 0 0.5rem;\n margin-left: 4px;\n border-radius: 1rem;\n color: white;\n font-size: 8px;\n font-weight: 600;\n line-height: 1rem;\n &[data-label-type='admin'] {\n background: ${(props: ThemeProps) => props.theme.colors.blue800};\n }\n &[data-label-type='local admin'] {\n background: ${(props: ThemeProps) => props.theme.colors.blue800};\n }\n &[data-label-type='ambassador'] {\n background: ${(props: ThemeProps) => props.theme.colors.green400};\n }\n &[data-label-type='expert'] {\n background: ${(props: ThemeProps) => props.theme.colors.red400};\n }\n &[data-label-type='moderator'] {\n background: ${(props: ThemeProps) => props.theme.colors.yellow800};\n }\n &[data-label-type='sponsor'] {\n background: ${(props: ThemeProps) => props.theme.colors.teal400};\n }\n &[data-label-type='guide'] {\n background: ${(props: ThemeProps) => props.theme.colors.teal400};\n }\n &[data-label-type='influencer'] {\n background: ${(props: ThemeProps) => props.theme.colors.teal400};\n }\n }\n }\n .author-community {\n .text-container {\n color: ${(props: ThemeProps) => props.theme.colors.gray500};\n font-weight: 600;\n font-size: 12px;\n line-height: 20px;\n .time-text {\n font-size: 11px;\n font-weight: normal;\n }\n a {\n color: inherit;\n }\n }\n }\n .expert-wrapper {\n width: 100%;\n }\n &[data-is-booking='true'] {\n display: grid;\n background-color: ${(props: ThemeProps) => props.theme.colors.blue50};\n .btn-wrapper {\n padding: 0 16px;\n .btn-booking {\n width: 100%;\n margin: 12px 0;\n }\n }\n }\n &[data-is-marrybaby='true'] {\n align-items: unset;\n .author-info {\n margin-left: 1rem;\n ${MediaQueries.mbDown} {\n margin-left: 0.5rem;\n }\n .author-info-text-wrapper {\n flex-wrap: wrap;\n }\n .author-time {\n margin-left: 0.4rem;\n font-size: 14px;\n }\n }\n .author-community {\n .text-container {\n font-size: 12px;\n line-height: 20px;\n }\n .author-community-name {\n color: ${(props: ThemeProps) => props.theme.mbColors.cobalt};\n font-weight: 500;\n }\n }\n }\n`\nexport const StyledKebabIcon = styled.img`\n width: 20px;\n height: 20px;\n margin-left: 0.5rem;\n cursor: pointer;\n object-fit: contain;\n`\nexport const StyledAvatarContainer = styled.div`\n position: relative;\n .mini-icon {\n position: absolute;\n right: 1.2px;\n bottom: 1.2px;\n }\n`\n","import React, {\n CSSProperties,\n MouseEventHandler,\n useContext,\n useEffect,\n useState,\n} from 'react'\n\nimport { Avatar } from 'components/atoms/avatar'\nimport { Button } from 'components/atoms/button'\nimport { Text } from 'components/atoms/text'\nimport { format, formatDistanceToNow } from 'date-fns'\nimport enUS from 'date-fns/locale/en-US'\nimport hi from 'date-fns/locale/hi'\nimport id from 'date-fns/locale/id'\nimport ms from 'date-fns/locale/ms'\nimport th from 'date-fns/locale/th'\nimport vi from 'date-fns/locale/vi'\nimport zhTW from 'date-fns/locale/zh-TW'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { TranslationsKey } from 'i18n/translations'\nimport { toggleNoScroll } from 'misc/utils'\nimport { domainLocales } from 'src/interfaces/constants'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { Community, Role } from '../../../interfaces/types'\nimport { UserAvatar } from '../../atoms/userAvatar'\nimport { PopupDoctor } from '../popupDoctor'\nimport { PopupExpert } from '../popupExpert'\nimport { PopupHospital } from '../popupHospital'\nimport my from './customMMLocale'\nimport { StyledAvatarContainer, StyledCardAuthor } from './index.styled'\n\nexport const AuthorLabelTextMapping: { [k in Role]?: string } = {\n admin: 'cardAuthor.admin',\n moderator: 'cardAuthor.moderator',\n ambassador: 'cardAuthor.ambassador',\n expert: 'cardAuthor.expert',\n sponsor: 'cardAuthor.sponsor',\n 'local-admin': 'cardAuthor.localAdmin',\n guide: 'cardAuthor.guide',\n influencer: 'cardAuthor.influencer',\n}\n\nconst looselyMatchRole = (role: string): Role | undefined => {\n const allRoles: Role[] = [\n 'admin',\n 'moderator',\n 'ambassador',\n 'expert',\n 'sponsor',\n 'local-admin',\n 'guide',\n 'influencer',\n ]\n return (\n allRoles.find((r) => r === role) ||\n allRoles.find((r) => role.includes(r)) ||\n allRoles.find((r) => r.includes(role))\n )\n}\n\nexport type Props = {\n userId?: number\n time?: string\n miniIcon?: string\n className?: string\n style?: CSSProperties\n name?: string\n username?: string\n email?: string\n url?: string\n avatar?: string\n postId?: string\n community?: Community\n type?: 'post' | 'comment' | 'reply' | 'most-engaging'\n role?: Role\n expertId?: string\n doctorId?: string\n hospitalId?: string\n isMarryBaby?: boolean\n title?: string\n hasQuickBooking?: boolean\n handleMakeAppointment?: (doctorId?: string, hospitalId?: string) => void\n}\n\nexport const locales: { [key: string]: Locale } = {\n 'vi-VN': vi,\n 'id-ID': id,\n 'ms-MY': ms,\n 'km-KH': enUS,\n 'en-PH': enUS,\n 'th-TH': th,\n 'my-MM': my,\n 'zh-TW': zhTW,\n 'hi-IN': hi,\n}\n\nconst CardAuthor = ({\n // userId,\n time,\n className,\n community,\n name,\n username,\n url,\n avatar,\n miniIcon,\n role,\n style,\n type = 'post',\n expertId,\n isMarryBaby: isMarryBabyProp,\n title,\n doctorId,\n hospitalId,\n hasQuickBooking,\n handleMakeAppointment,\n}: Props) => {\n const {\n data: {\n locale,\n router,\n env: { isMarryBaby: isMarryBabyContext, togetherBasePath },\n },\n } = useContext(TogetherComponentGlobalContext)\n const isMarryBaby =\n typeof isMarryBabyProp === 'boolean' ? isMarryBabyProp : isMarryBabyContext\n const displayName = name || username || ''\n const matchedRole = role ? looselyMatchRole(role) : ''\n const { t } = useTranslations()\n const cleanedTimeDate = time\n ? !isNaN(new Date(time).getTime())\n ? new Date(time)\n : null\n : null\n const timeText = cleanedTimeDate\n ? formatDistanceToNow(cleanedTimeDate, {\n locale: locales[locale],\n })\n : time\n const timeTextTitle = cleanedTimeDate\n ? format(cleanedTimeDate, 'dd/MM/yyyy HH:mm')\n : time\n\n const [openPopupExpert, setOpenPopupExpert] = useState(false)\n\n const { asPath } = router || {}\n const currentUrl = `https://${domainLocales[locale]}${asPath}`\n\n const onAuthorClick: MouseEventHandler<HTMLDivElement> = (e) => {\n if (role === 'expert' && (expertId || doctorId || hospitalId)) {\n e.stopPropagation()\n setOpenPopupExpert(true)\n } else if (url) {\n window.location.href = url\n }\n }\n\n useEffect(() => {\n toggleNoScroll(openPopupExpert)\n }, [openPopupExpert])\n\n return (\n <>\n {role === 'expert' && expertId ? (\n <PopupExpert\n isOpen={openPopupExpert}\n onClose={() => setOpenPopupExpert(false)}\n expertId={expertId}\n ></PopupExpert>\n ) : null}\n {role === 'expert' && doctorId ? (\n <PopupDoctor\n isOpen={openPopupExpert}\n onClose={() => setOpenPopupExpert(false)}\n doctorId={doctorId}\n locale={locale}\n ></PopupDoctor>\n ) : null}\n {role === 'expert' && hospitalId ? (\n <PopupHospital\n isOpen={openPopupExpert}\n onClose={() => setOpenPopupExpert(false)}\n hospitalId={hospitalId}\n locale={locale}\n ></PopupHospital>\n ) : null}\n <StyledCardAuthor\n data-is-marrybaby={isMarryBaby}\n className={className}\n style={style}\n data-is-booking={hasQuickBooking}\n >\n <div style={{ display: 'flex', width: '100%' }}>\n <a>\n <StyledAvatarContainer onClick={onAuthorClick}>\n <UserAvatar\n className=\"author-avatar-wrapper\"\n username={displayName}\n avatar={avatar}\n />\n {miniIcon ? (\n <Avatar\n className=\"mini-icon\"\n type=\"rounded\"\n avatarImg={\n <img\n src={miniIcon}\n style={{\n width: '12px',\n height: '12px',\n objectFit: 'cover',\n }}\n alt=\"badge\"\n />\n }\n />\n ) : null}\n </StyledAvatarContainer>\n </a>\n <div className=\"expert-wrapper\">\n <div className=\"author-info\">\n <div className=\"author-info-top\">\n <div\n onClick={onAuthorClick}\n className=\"author-info-text-wrapper\"\n >\n <Text className=\"author-name\" size=\"p3\">\n {displayName}\n </Text>\n {matchedRole && AuthorLabelTextMapping[matchedRole] && (\n <div className=\"author-role\" data-label-type={matchedRole}>\n {title ||\n t(\n AuthorLabelTextMapping[\n matchedRole\n ] as TranslationsKey,\n )}\n </div>\n )}\n {isMarryBaby ? (\n <Text\n size=\"p4\"\n type=\"regular\"\n color=\"#9495A0\"\n title={timeTextTitle}\n className=\"author-time\"\n >\n {`${type === 'post' ? '• ' : ''}${timeText}`}\n </Text>\n ) : null}\n </div>\n {!isMarryBaby && type !== 'post' ? (\n <Text\n size=\"p4\"\n type=\"regular\"\n color=\"#595959\"\n style={{ lineHeight: '20px' }}\n title={timeTextTitle}\n >\n {timeText}\n </Text>\n ) : null}\n </div>\n {type === 'post' ? (\n <div className=\"author-community\">\n <Text className=\"text-container\" size=\"p4\">\n <a\n href={\n community?.slug &&\n community.isActive &&\n !community.isHidden\n ? `${togetherBasePath}/${community?.slug}`\n : undefined\n }\n className=\"author-community-name\"\n >\n {`${isMarryBaby ? '/' : ''}${community?.name}`}\n </a>\n {(isMarryBaby ? undefined : timeText) ? ' • ' : ''}\n <span className=\"time-text\">\n {isMarryBaby ? undefined : timeText}\n </span>\n </Text>\n </div>\n ) : null}\n </div>\n </div>\n </div>\n {hasQuickBooking && (\n <div className=\"btn-wrapper\">\n <Button\n color=\"primary\"\n size=\"md\"\n className=\"btn-booking\"\n onClick={(e) => {\n handleMakeAppointment?.(doctorId, hospitalId)\n e.stopPropagation()\n }}\n dataEventCategory=\"Care\"\n dataEventAction=\"Comment - Quick Booking\"\n dataEventLabel={currentUrl}\n >\n {t('careBooking.bookAnAppointment')}\n </Button>\n </div>\n )}\n </StyledCardAuthor>\n </>\n )\n}\n\nexport { CardAuthor }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromCodePoint = String.fromCodePoint || function (astralCodePoint) {\n return String.fromCharCode(Math.floor((astralCodePoint - 0x10000) / 0x400) + 0xD800, (astralCodePoint - 0x10000) % 0x400 + 0xDC00);\n};\nexports.getCodePoint = String.prototype.codePointAt ?\n function (input, position) {\n return input.codePointAt(position);\n } :\n function (input, position) {\n return (input.charCodeAt(position) - 0xD800) * 0x400\n + input.charCodeAt(position + 1) - 0xDC00 + 0x10000;\n };\nexports.highSurrogateFrom = 0xD800;\nexports.highSurrogateTo = 0xDBFF;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar surrogate_pairs_1 = require(\"./surrogate-pairs\");\nvar ALPHA_INDEX = {\n '<': '<',\n '>': '>',\n '"': '\"',\n '&apos': '\\'',\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': '\\'',\n '&': '&'\n};\nvar CHAR_INDEX = {\n 60: 'lt',\n 62: 'gt',\n 34: 'quot',\n 39: 'apos',\n 38: 'amp'\n};\nvar CHAR_S_INDEX = {\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '&': '&'\n};\nvar XmlEntities = /** @class */ (function () {\n function XmlEntities() {\n }\n XmlEntities.prototype.encode = function (str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/[<>\"'&]/g, function (s) {\n return CHAR_S_INDEX[s];\n });\n };\n XmlEntities.encode = function (str) {\n return new XmlEntities().encode(str);\n };\n XmlEntities.prototype.decode = function (str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/&#?[0-9a-zA-Z]+;?/g, function (s) {\n if (s.charAt(1) === '#') {\n var code = s.charAt(2).toLowerCase() === 'x' ?\n parseInt(s.substr(3), 16) :\n parseInt(s.substr(2));\n if (!isNaN(code) || code >= -32768) {\n if (code <= 65535) {\n return String.fromCharCode(code);\n }\n else {\n return surrogate_pairs_1.fromCodePoint(code);\n }\n }\n return '';\n }\n return ALPHA_INDEX[s] || s;\n });\n };\n XmlEntities.decode = function (str) {\n return new XmlEntities().decode(str);\n };\n XmlEntities.prototype.encodeNonUTF = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n var alpha = CHAR_INDEX[c];\n if (alpha) {\n result += \"&\" + alpha + \";\";\n i++;\n continue;\n }\n if (c < 32 || c > 126) {\n if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) {\n result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';\n i++;\n }\n else {\n result += '&#' + c + ';';\n }\n }\n else {\n result += str.charAt(i);\n }\n i++;\n }\n return result;\n };\n XmlEntities.encodeNonUTF = function (str) {\n return new XmlEntities().encodeNonUTF(str);\n };\n XmlEntities.prototype.encodeNonASCII = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n if (c <= 255) {\n result += str[i++];\n continue;\n }\n if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) {\n result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';\n i++;\n }\n else {\n result += '&#' + c + ';';\n }\n i++;\n }\n return result;\n };\n XmlEntities.encodeNonASCII = function (str) {\n return new XmlEntities().encodeNonASCII(str);\n };\n return XmlEntities;\n}());\nexports.XmlEntities = XmlEntities;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar surrogate_pairs_1 = require(\"./surrogate-pairs\");\nvar HTML_ALPHA = ['apos', 'nbsp', 'iexcl', 'cent', 'pound', 'curren', 'yen', 'brvbar', 'sect', 'uml', 'copy', 'ordf', 'laquo', 'not', 'shy', 'reg', 'macr', 'deg', 'plusmn', 'sup2', 'sup3', 'acute', 'micro', 'para', 'middot', 'cedil', 'sup1', 'ordm', 'raquo', 'frac14', 'frac12', 'frac34', 'iquest', 'Agrave', 'Aacute', 'Acirc', 'Atilde', 'Auml', 'Aring', 'AElig', 'Ccedil', 'Egrave', 'Eacute', 'Ecirc', 'Euml', 'Igrave', 'Iacute', 'Icirc', 'Iuml', 'ETH', 'Ntilde', 'Ograve', 'Oacute', 'Ocirc', 'Otilde', 'Ouml', 'times', 'Oslash', 'Ugrave', 'Uacute', 'Ucirc', 'Uuml', 'Yacute', 'THORN', 'szlig', 'agrave', 'aacute', 'acirc', 'atilde', 'auml', 'aring', 'aelig', 'ccedil', 'egrave', 'eacute', 'ecirc', 'euml', 'igrave', 'iacute', 'icirc', 'iuml', 'eth', 'ntilde', 'ograve', 'oacute', 'ocirc', 'otilde', 'ouml', 'divide', 'oslash', 'ugrave', 'uacute', 'ucirc', 'uuml', 'yacute', 'thorn', 'yuml', 'quot', 'amp', 'lt', 'gt', 'OElig', 'oelig', 'Scaron', 'scaron', 'Yuml', 'circ', 'tilde', 'ensp', 'emsp', 'thinsp', 'zwnj', 'zwj', 'lrm', 'rlm', 'ndash', 'mdash', 'lsquo', 'rsquo', 'sbquo', 'ldquo', 'rdquo', 'bdquo', 'dagger', 'Dagger', 'permil', 'lsaquo', 'rsaquo', 'euro', 'fnof', 'Alpha', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zeta', 'Eta', 'Theta', 'Iota', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Xi', 'Omicron', 'Pi', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'Phi', 'Chi', 'Psi', 'Omega', 'alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta', 'eta', 'theta', 'iota', 'kappa', 'lambda', 'mu', 'nu', 'xi', 'omicron', 'pi', 'rho', 'sigmaf', 'sigma', 'tau', 'upsilon', 'phi', 'chi', 'psi', 'omega', 'thetasym', 'upsih', 'piv', 'bull', 'hellip', 'prime', 'Prime', 'oline', 'frasl', 'weierp', 'image', 'real', 'trade', 'alefsym', 'larr', 'uarr', 'rarr', 'darr', 'harr', 'crarr', 'lArr', 'uArr', 'rArr', 'dArr', 'hArr', 'forall', 'part', 'exist', 'empty', 'nabla', 'isin', 'notin', 'ni', 'prod', 'sum', 'minus', 'lowast', 'radic', 'prop', 'infin', 'ang', 'and', 'or', 'cap', 'cup', 'int', 'there4', 'sim', 'cong', 'asymp', 'ne', 'equiv', 'le', 'ge', 'sub', 'sup', 'nsub', 'sube', 'supe', 'oplus', 'otimes', 'perp', 'sdot', 'lceil', 'rceil', 'lfloor', 'rfloor', 'lang', 'rang', 'loz', 'spades', 'clubs', 'hearts', 'diams'];\nvar HTML_CODES = [39, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 34, 38, 60, 62, 338, 339, 352, 353, 376, 710, 732, 8194, 8195, 8201, 8204, 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8240, 8249, 8250, 8364, 402, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8226, 8230, 8242, 8243, 8254, 8260, 8472, 8465, 8476, 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660, 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730, 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800, 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968, 8969, 8970, 8971, 9001, 9002, 9674, 9824, 9827, 9829, 9830];\nvar alphaIndex = {};\nvar numIndex = {};\n(function () {\n var i = 0;\n var length = HTML_ALPHA.length;\n while (i < length) {\n var a = HTML_ALPHA[i];\n var c = HTML_CODES[i];\n alphaIndex[a] = String.fromCharCode(c);\n numIndex[c] = a;\n i++;\n }\n})();\nvar Html4Entities = /** @class */ (function () {\n function Html4Entities() {\n }\n Html4Entities.prototype.decode = function (str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/&(#?[\\w\\d]+);?/g, function (s, entity) {\n var chr;\n if (entity.charAt(0) === \"#\") {\n var code = entity.charAt(1).toLowerCase() === 'x' ?\n parseInt(entity.substr(2), 16) :\n parseInt(entity.substr(1));\n if (!isNaN(code) || code >= -32768) {\n if (code <= 65535) {\n chr = String.fromCharCode(code);\n }\n else {\n chr = surrogate_pairs_1.fromCodePoint(code);\n }\n }\n }\n else {\n chr = alphaIndex[entity];\n }\n return chr || s;\n });\n };\n Html4Entities.decode = function (str) {\n return new Html4Entities().decode(str);\n };\n Html4Entities.prototype.encode = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var alpha = numIndex[str.charCodeAt(i)];\n result += alpha ? \"&\" + alpha + \";\" : str.charAt(i);\n i++;\n }\n return result;\n };\n Html4Entities.encode = function (str) {\n return new Html4Entities().encode(str);\n };\n Html4Entities.prototype.encodeNonUTF = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var cc = str.charCodeAt(i);\n var alpha = numIndex[cc];\n if (alpha) {\n result += \"&\" + alpha + \";\";\n }\n else if (cc < 32 || cc > 126) {\n if (cc >= surrogate_pairs_1.highSurrogateFrom && cc <= surrogate_pairs_1.highSurrogateTo) {\n result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';\n i++;\n }\n else {\n result += '&#' + cc + ';';\n }\n }\n else {\n result += str.charAt(i);\n }\n i++;\n }\n return result;\n };\n Html4Entities.encodeNonUTF = function (str) {\n return new Html4Entities().encodeNonUTF(str);\n };\n Html4Entities.prototype.encodeNonASCII = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n if (c <= 255) {\n result += str[i++];\n continue;\n }\n if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) {\n result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';\n i++;\n }\n else {\n result += '&#' + c + ';';\n }\n i++;\n }\n return result;\n };\n Html4Entities.encodeNonASCII = function (str) {\n return new Html4Entities().encodeNonASCII(str);\n };\n return Html4Entities;\n}());\nexports.Html4Entities = Html4Entities;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar surrogate_pairs_1 = require(\"./surrogate-pairs\");\nvar ENTITIES = [['Aacute', [193]], ['aacute', [225]], ['Abreve', [258]], ['abreve', [259]], ['ac', [8766]], ['acd', [8767]], ['acE', [8766, 819]], ['Acirc', [194]], ['acirc', [226]], ['acute', [180]], ['Acy', [1040]], ['acy', [1072]], ['AElig', [198]], ['aelig', [230]], ['af', [8289]], ['Afr', [120068]], ['afr', [120094]], ['Agrave', [192]], ['agrave', [224]], ['alefsym', [8501]], ['aleph', [8501]], ['Alpha', [913]], ['alpha', [945]], ['Amacr', [256]], ['amacr', [257]], ['amalg', [10815]], ['amp', [38]], ['AMP', [38]], ['andand', [10837]], ['And', [10835]], ['and', [8743]], ['andd', [10844]], ['andslope', [10840]], ['andv', [10842]], ['ang', [8736]], ['ange', [10660]], ['angle', [8736]], ['angmsdaa', [10664]], ['angmsdab', [10665]], ['angmsdac', [10666]], ['angmsdad', [10667]], ['angmsdae', [10668]], ['angmsdaf', [10669]], ['angmsdag', [10670]], ['angmsdah', [10671]], ['angmsd', [8737]], ['angrt', [8735]], ['angrtvb', [8894]], ['angrtvbd', [10653]], ['angsph', [8738]], ['angst', [197]], ['angzarr', [9084]], ['Aogon', [260]], ['aogon', [261]], ['Aopf', [120120]], ['aopf', [120146]], ['apacir', [10863]], ['ap', [8776]], ['apE', [10864]], ['ape', [8778]], ['apid', [8779]], ['apos', [39]], ['ApplyFunction', [8289]], ['approx', [8776]], ['approxeq', [8778]], ['Aring', [197]], ['aring', [229]], ['Ascr', [119964]], ['ascr', [119990]], ['Assign', [8788]], ['ast', [42]], ['asymp', [8776]], ['asympeq', [8781]], ['Atilde', [195]], ['atilde', [227]], ['Auml', [196]], ['auml', [228]], ['awconint', [8755]], ['awint', [10769]], ['backcong', [8780]], ['backepsilon', [1014]], ['backprime', [8245]], ['backsim', [8765]], ['backsimeq', [8909]], ['Backslash', [8726]], ['Barv', [10983]], ['barvee', [8893]], ['barwed', [8965]], ['Barwed', [8966]], ['barwedge', [8965]], ['bbrk', [9141]], ['bbrktbrk', [9142]], ['bcong', [8780]], ['Bcy', [1041]], ['bcy', [1073]], ['bdquo', [8222]], ['becaus', [8757]], ['because', [8757]], ['Because', [8757]], ['bemptyv', [10672]], ['bepsi', [1014]], ['bernou', [8492]], ['Bernoullis', [8492]], ['Beta', [914]], ['beta', [946]], ['beth', [8502]], ['between', [8812]], ['Bfr', [120069]], ['bfr', [120095]], ['bigcap', [8898]], ['bigcirc', [9711]], ['bigcup', [8899]], ['bigodot', [10752]], ['bigoplus', [10753]], ['bigotimes', [10754]], ['bigsqcup', [10758]], ['bigstar', [9733]], ['bigtriangledown', [9661]], ['bigtriangleup', [9651]], ['biguplus', [10756]], ['bigvee', [8897]], ['bigwedge', [8896]], ['bkarow', [10509]], ['blacklozenge', [10731]], ['blacksquare', [9642]], ['blacktriangle', [9652]], ['blacktriangledown', [9662]], ['blacktriangleleft', [9666]], ['blacktriangleright', [9656]], ['blank', [9251]], ['blk12', [9618]], ['blk14', [9617]], ['blk34', [9619]], ['block', [9608]], ['bne', [61, 8421]], ['bnequiv', [8801, 8421]], ['bNot', [10989]], ['bnot', [8976]], ['Bopf', [120121]], ['bopf', [120147]], ['bot', [8869]], ['bottom', [8869]], ['bowtie', [8904]], ['boxbox', [10697]], ['boxdl', [9488]], ['boxdL', [9557]], ['boxDl', [9558]], ['boxDL', [9559]], ['boxdr', [9484]], ['boxdR', [9554]], ['boxDr', [9555]], ['boxDR', [9556]], ['boxh', [9472]], ['boxH', [9552]], ['boxhd', [9516]], ['boxHd', [9572]], ['boxhD', [9573]], ['boxHD', [9574]], ['boxhu', [9524]], ['boxHu', [9575]], ['boxhU', [9576]], ['boxHU', [9577]], ['boxminus', [8863]], ['boxplus', [8862]], ['boxtimes', [8864]], ['boxul', [9496]], ['boxuL', [9563]], ['boxUl', [9564]], ['boxUL', [9565]], ['boxur', [9492]], ['boxuR', [9560]], ['boxUr', [9561]], ['boxUR', [9562]], ['boxv', [9474]], ['boxV', [9553]], ['boxvh', [9532]], ['boxvH', [9578]], ['boxVh', [9579]], ['boxVH', [9580]], ['boxvl', [9508]], ['boxvL', [9569]], ['boxVl', [9570]], ['boxVL', [9571]], ['boxvr', [9500]], ['boxvR', [9566]], ['boxVr', [9567]], ['boxVR', [9568]], ['bprime', [8245]], ['breve', [728]], ['Breve', [728]], ['brvbar', [166]], ['bscr', [119991]], ['Bscr', [8492]], ['bsemi', [8271]], ['bsim', [8765]], ['bsime', [8909]], ['bsolb', [10693]], ['bsol', [92]], ['bsolhsub', [10184]], ['bull', [8226]], ['bullet', [8226]], ['bump', [8782]], ['bumpE', [10926]], ['bumpe', [8783]], ['Bumpeq', [8782]], ['bumpeq', [8783]], ['Cacute', [262]], ['cacute', [263]], ['capand', [10820]], ['capbrcup', [10825]], ['capcap', [10827]], ['cap', [8745]], ['Cap', [8914]], ['capcup', [10823]], ['capdot', [10816]], ['CapitalDifferentialD', [8517]], ['caps', [8745, 65024]], ['caret', [8257]], ['caron', [711]], ['Cayleys', [8493]], ['ccaps', [10829]], ['Ccaron', [268]], ['ccaron', [269]], ['Ccedil', [199]], ['ccedil', [231]], ['Ccirc', [264]], ['ccirc', [265]], ['Cconint', [8752]], ['ccups', [10828]], ['ccupssm', [10832]], ['Cdot', [266]], ['cdot', [267]], ['cedil', [184]], ['Cedilla', [184]], ['cemptyv', [10674]], ['cent', [162]], ['centerdot', [183]], ['CenterDot', [183]], ['cfr', [120096]], ['Cfr', [8493]], ['CHcy', [1063]], ['chcy', [1095]], ['check', [10003]], ['checkmark', [10003]], ['Chi', [935]], ['chi', [967]], ['circ', [710]], ['circeq', [8791]], ['circlearrowleft', [8634]], ['circlearrowright', [8635]], ['circledast', [8859]], ['circledcirc', [8858]], ['circleddash', [8861]], ['CircleDot', [8857]], ['circledR', [174]], ['circledS', [9416]], ['CircleMinus', [8854]], ['CirclePlus', [8853]], ['CircleTimes', [8855]], ['cir', [9675]], ['cirE', [10691]], ['cire', [8791]], ['cirfnint', [10768]], ['cirmid', [10991]], ['cirscir', [10690]], ['ClockwiseContourIntegral', [8754]], ['clubs', [9827]], ['clubsuit', [9827]], ['colon', [58]], ['Colon', [8759]], ['Colone', [10868]], ['colone', [8788]], ['coloneq', [8788]], ['comma', [44]], ['commat', [64]], ['comp', [8705]], ['compfn', [8728]], ['complement', [8705]], ['complexes', [8450]], ['cong', [8773]], ['congdot', [10861]], ['Congruent', [8801]], ['conint', [8750]], ['Conint', [8751]], ['ContourIntegral', [8750]], ['copf', [120148]], ['Copf', [8450]], ['coprod', [8720]], ['Coproduct', [8720]], ['copy', [169]], ['COPY', [169]], ['copysr', [8471]], ['CounterClockwiseContourIntegral', [8755]], ['crarr', [8629]], ['cross', [10007]], ['Cross', [10799]], ['Cscr', [119966]], ['cscr', [119992]], ['csub', [10959]], ['csube', [10961]], ['csup', [10960]], ['csupe', [10962]], ['ctdot', [8943]], ['cudarrl', [10552]], ['cudarrr', [10549]], ['cuepr', [8926]], ['cuesc', [8927]], ['cularr', [8630]], ['cularrp', [10557]], ['cupbrcap', [10824]], ['cupcap', [10822]], ['CupCap', [8781]], ['cup', [8746]], ['Cup', [8915]], ['cupcup', [10826]], ['cupdot', [8845]], ['cupor', [10821]], ['cups', [8746, 65024]], ['curarr', [8631]], ['curarrm', [10556]], ['curlyeqprec', [8926]], ['curlyeqsucc', [8927]], ['curlyvee', [8910]], ['curlywedge', [8911]], ['curren', [164]], ['curvearrowleft', [8630]], ['curvearrowright', [8631]], ['cuvee', [8910]], ['cuwed', [8911]], ['cwconint', [8754]], ['cwint', [8753]], ['cylcty', [9005]], ['dagger', [8224]], ['Dagger', [8225]], ['daleth', [8504]], ['darr', [8595]], ['Darr', [8609]], ['dArr', [8659]], ['dash', [8208]], ['Dashv', [10980]], ['dashv', [8867]], ['dbkarow', [10511]], ['dblac', [733]], ['Dcaron', [270]], ['dcaron', [271]], ['Dcy', [1044]], ['dcy', [1076]], ['ddagger', [8225]], ['ddarr', [8650]], ['DD', [8517]], ['dd', [8518]], ['DDotrahd', [10513]], ['ddotseq', [10871]], ['deg', [176]], ['Del', [8711]], ['Delta', [916]], ['delta', [948]], ['demptyv', [10673]], ['dfisht', [10623]], ['Dfr', [120071]], ['dfr', [120097]], ['dHar', [10597]], ['dharl', [8643]], ['dharr', [8642]], ['DiacriticalAcute', [180]], ['DiacriticalDot', [729]], ['DiacriticalDoubleAcute', [733]], ['DiacriticalGrave', [96]], ['DiacriticalTilde', [732]], ['diam', [8900]], ['diamond', [8900]], ['Diamond', [8900]], ['diamondsuit', [9830]], ['diams', [9830]], ['die', [168]], ['DifferentialD', [8518]], ['digamma', [989]], ['disin', [8946]], ['div', [247]], ['divide', [247]], ['divideontimes', [8903]], ['divonx', [8903]], ['DJcy', [1026]], ['djcy', [1106]], ['dlcorn', [8990]], ['dlcrop', [8973]], ['dollar', [36]], ['Dopf', [120123]], ['dopf', [120149]], ['Dot', [168]], ['dot', [729]], ['DotDot', [8412]], ['doteq', [8784]], ['doteqdot', [8785]], ['DotEqual', [8784]], ['dotminus', [8760]], ['dotplus', [8724]], ['dotsquare', [8865]], ['doublebarwedge', [8966]], ['DoubleContourIntegral', [8751]], ['DoubleDot', [168]], ['DoubleDownArrow', [8659]], ['DoubleLeftArrow', [8656]], ['DoubleLeftRightArrow', [8660]], ['DoubleLeftTee', [10980]], ['DoubleLongLeftArrow', [10232]], ['DoubleLongLeftRightArrow', [10234]], ['DoubleLongRightArrow', [10233]], ['DoubleRightArrow', [8658]], ['DoubleRightTee', [8872]], ['DoubleUpArrow', [8657]], ['DoubleUpDownArrow', [8661]], ['DoubleVerticalBar', [8741]], ['DownArrowBar', [10515]], ['downarrow', [8595]], ['DownArrow', [8595]], ['Downarrow', [8659]], ['DownArrowUpArrow', [8693]], ['DownBreve', [785]], ['downdownarrows', [8650]], ['downharpoonleft', [8643]], ['downharpoonright', [8642]], ['DownLeftRightVector', [10576]], ['DownLeftTeeVector', [10590]], ['DownLeftVectorBar', [10582]], ['DownLeftVector', [8637]], ['DownRightTeeVector', [10591]], ['DownRightVectorBar', [10583]], ['DownRightVector', [8641]], ['DownTeeArrow', [8615]], ['DownTee', [8868]], ['drbkarow', [10512]], ['drcorn', [8991]], ['drcrop', [8972]], ['Dscr', [119967]], ['dscr', [119993]], ['DScy', [1029]], ['dscy', [1109]], ['dsol', [10742]], ['Dstrok', [272]], ['dstrok', [273]], ['dtdot', [8945]], ['dtri', [9663]], ['dtrif', [9662]], ['duarr', [8693]], ['duhar', [10607]], ['dwangle', [10662]], ['DZcy', [1039]], ['dzcy', [1119]], ['dzigrarr', [10239]], ['Eacute', [201]], ['eacute', [233]], ['easter', [10862]], ['Ecaron', [282]], ['ecaron', [283]], ['Ecirc', [202]], ['ecirc', [234]], ['ecir', [8790]], ['ecolon', [8789]], ['Ecy', [1069]], ['ecy', [1101]], ['eDDot', [10871]], ['Edot', [278]], ['edot', [279]], ['eDot', [8785]], ['ee', [8519]], ['efDot', [8786]], ['Efr', [120072]], ['efr', [120098]], ['eg', [10906]], ['Egrave', [200]], ['egrave', [232]], ['egs', [10902]], ['egsdot', [10904]], ['el', [10905]], ['Element', [8712]], ['elinters', [9191]], ['ell', [8467]], ['els', [10901]], ['elsdot', [10903]], ['Emacr', [274]], ['emacr', [275]], ['empty', [8709]], ['emptyset', [8709]], ['EmptySmallSquare', [9723]], ['emptyv', [8709]], ['EmptyVerySmallSquare', [9643]], ['emsp13', [8196]], ['emsp14', [8197]], ['emsp', [8195]], ['ENG', [330]], ['eng', [331]], ['ensp', [8194]], ['Eogon', [280]], ['eogon', [281]], ['Eopf', [120124]], ['eopf', [120150]], ['epar', [8917]], ['eparsl', [10723]], ['eplus', [10865]], ['epsi', [949]], ['Epsilon', [917]], ['epsilon', [949]], ['epsiv', [1013]], ['eqcirc', [8790]], ['eqcolon', [8789]], ['eqsim', [8770]], ['eqslantgtr', [10902]], ['eqslantless', [10901]], ['Equal', [10869]], ['equals', [61]], ['EqualTilde', [8770]], ['equest', [8799]], ['Equilibrium', [8652]], ['equiv', [8801]], ['equivDD', [10872]], ['eqvparsl', [10725]], ['erarr', [10609]], ['erDot', [8787]], ['escr', [8495]], ['Escr', [8496]], ['esdot', [8784]], ['Esim', [10867]], ['esim', [8770]], ['Eta', [919]], ['eta', [951]], ['ETH', [208]], ['eth', [240]], ['Euml', [203]], ['euml', [235]], ['euro', [8364]], ['excl', [33]], ['exist', [8707]], ['Exists', [8707]], ['expectation', [8496]], ['exponentiale', [8519]], ['ExponentialE', [8519]], ['fallingdotseq', [8786]], ['Fcy', [1060]], ['fcy', [1092]], ['female', [9792]], ['ffilig', [64259]], ['fflig', [64256]], ['ffllig', [64260]], ['Ffr', [120073]], ['ffr', [120099]], ['filig', [64257]], ['FilledSmallSquare', [9724]], ['FilledVerySmallSquare', [9642]], ['fjlig', [102, 106]], ['flat', [9837]], ['fllig', [64258]], ['fltns', [9649]], ['fnof', [402]], ['Fopf', [120125]], ['fopf', [120151]], ['forall', [8704]], ['ForAll', [8704]], ['fork', [8916]], ['forkv', [10969]], ['Fouriertrf', [8497]], ['fpartint', [10765]], ['frac12', [189]], ['frac13', [8531]], ['frac14', [188]], ['frac15', [8533]], ['frac16', [8537]], ['frac18', [8539]], ['frac23', [8532]], ['frac25', [8534]], ['frac34', [190]], ['frac35', [8535]], ['frac38', [8540]], ['frac45', [8536]], ['frac56', [8538]], ['frac58', [8541]], ['frac78', [8542]], ['frasl', [8260]], ['frown', [8994]], ['fscr', [119995]], ['Fscr', [8497]], ['gacute', [501]], ['Gamma', [915]], ['gamma', [947]], ['Gammad', [988]], ['gammad', [989]], ['gap', [10886]], ['Gbreve', [286]], ['gbreve', [287]], ['Gcedil', [290]], ['Gcirc', [284]], ['gcirc', [285]], ['Gcy', [1043]], ['gcy', [1075]], ['Gdot', [288]], ['gdot', [289]], ['ge', [8805]], ['gE', [8807]], ['gEl', [10892]], ['gel', [8923]], ['geq', [8805]], ['geqq', [8807]], ['geqslant', [10878]], ['gescc', [10921]], ['ges', [10878]], ['gesdot', [10880]], ['gesdoto', [10882]], ['gesdotol', [10884]], ['gesl', [8923, 65024]], ['gesles', [10900]], ['Gfr', [120074]], ['gfr', [120100]], ['gg', [8811]], ['Gg', [8921]], ['ggg', [8921]], ['gimel', [8503]], ['GJcy', [1027]], ['gjcy', [1107]], ['gla', [10917]], ['gl', [8823]], ['glE', [10898]], ['glj', [10916]], ['gnap', [10890]], ['gnapprox', [10890]], ['gne', [10888]], ['gnE', [8809]], ['gneq', [10888]], ['gneqq', [8809]], ['gnsim', [8935]], ['Gopf', [120126]], ['gopf', [120152]], ['grave', [96]], ['GreaterEqual', [8805]], ['GreaterEqualLess', [8923]], ['GreaterFullEqual', [8807]], ['GreaterGreater', [10914]], ['GreaterLess', [8823]], ['GreaterSlantEqual', [10878]], ['GreaterTilde', [8819]], ['Gscr', [119970]], ['gscr', [8458]], ['gsim', [8819]], ['gsime', [10894]], ['gsiml', [10896]], ['gtcc', [10919]], ['gtcir', [10874]], ['gt', [62]], ['GT', [62]], ['Gt', [8811]], ['gtdot', [8919]], ['gtlPar', [10645]], ['gtquest', [10876]], ['gtrapprox', [10886]], ['gtrarr', [10616]], ['gtrdot', [8919]], ['gtreqless', [8923]], ['gtreqqless', [10892]], ['gtrless', [8823]], ['gtrsim', [8819]], ['gvertneqq', [8809, 65024]], ['gvnE', [8809, 65024]], ['Hacek', [711]], ['hairsp', [8202]], ['half', [189]], ['hamilt', [8459]], ['HARDcy', [1066]], ['hardcy', [1098]], ['harrcir', [10568]], ['harr', [8596]], ['hArr', [8660]], ['harrw', [8621]], ['Hat', [94]], ['hbar', [8463]], ['Hcirc', [292]], ['hcirc', [293]], ['hearts', [9829]], ['heartsuit', [9829]], ['hellip', [8230]], ['hercon', [8889]], ['hfr', [120101]], ['Hfr', [8460]], ['HilbertSpace', [8459]], ['hksearow', [10533]], ['hkswarow', [10534]], ['hoarr', [8703]], ['homtht', [8763]], ['hookleftarrow', [8617]], ['hookrightarrow', [8618]], ['hopf', [120153]], ['Hopf', [8461]], ['horbar', [8213]], ['HorizontalLine', [9472]], ['hscr', [119997]], ['Hscr', [8459]], ['hslash', [8463]], ['Hstrok', [294]], ['hstrok', [295]], ['HumpDownHump', [8782]], ['HumpEqual', [8783]], ['hybull', [8259]], ['hyphen', [8208]], ['Iacute', [205]], ['iacute', [237]], ['ic', [8291]], ['Icirc', [206]], ['icirc', [238]], ['Icy', [1048]], ['icy', [1080]], ['Idot', [304]], ['IEcy', [1045]], ['iecy', [1077]], ['iexcl', [161]], ['iff', [8660]], ['ifr', [120102]], ['Ifr', [8465]], ['Igrave', [204]], ['igrave', [236]], ['ii', [8520]], ['iiiint', [10764]], ['iiint', [8749]], ['iinfin', [10716]], ['iiota', [8489]], ['IJlig', [306]], ['ijlig', [307]], ['Imacr', [298]], ['imacr', [299]], ['image', [8465]], ['ImaginaryI', [8520]], ['imagline', [8464]], ['imagpart', [8465]], ['imath', [305]], ['Im', [8465]], ['imof', [8887]], ['imped', [437]], ['Implies', [8658]], ['incare', [8453]], ['in', [8712]], ['infin', [8734]], ['infintie', [10717]], ['inodot', [305]], ['intcal', [8890]], ['int', [8747]], ['Int', [8748]], ['integers', [8484]], ['Integral', [8747]], ['intercal', [8890]], ['Intersection', [8898]], ['intlarhk', [10775]], ['intprod', [10812]], ['InvisibleComma', [8291]], ['InvisibleTimes', [8290]], ['IOcy', [1025]], ['iocy', [1105]], ['Iogon', [302]], ['iogon', [303]], ['Iopf', [120128]], ['iopf', [120154]], ['Iota', [921]], ['iota', [953]], ['iprod', [10812]], ['iquest', [191]], ['iscr', [119998]], ['Iscr', [8464]], ['isin', [8712]], ['isindot', [8949]], ['isinE', [8953]], ['isins', [8948]], ['isinsv', [8947]], ['isinv', [8712]], ['it', [8290]], ['Itilde', [296]], ['itilde', [297]], ['Iukcy', [1030]], ['iukcy', [1110]], ['Iuml', [207]], ['iuml', [239]], ['Jcirc', [308]], ['jcirc', [309]], ['Jcy', [1049]], ['jcy', [1081]], ['Jfr', [120077]], ['jfr', [120103]], ['jmath', [567]], ['Jopf', [120129]], ['jopf', [120155]], ['Jscr', [119973]], ['jscr', [119999]], ['Jsercy', [1032]], ['jsercy', [1112]], ['Jukcy', [1028]], ['jukcy', [1108]], ['Kappa', [922]], ['kappa', [954]], ['kappav', [1008]], ['Kcedil', [310]], ['kcedil', [311]], ['Kcy', [1050]], ['kcy', [1082]], ['Kfr', [120078]], ['kfr', [120104]], ['kgreen', [312]], ['KHcy', [1061]], ['khcy', [1093]], ['KJcy', [1036]], ['kjcy', [1116]], ['Kopf', [120130]], ['kopf', [120156]], ['Kscr', [119974]], ['kscr', [120000]], ['lAarr', [8666]], ['Lacute', [313]], ['lacute', [314]], ['laemptyv', [10676]], ['lagran', [8466]], ['Lambda', [923]], ['lambda', [955]], ['lang', [10216]], ['Lang', [10218]], ['langd', [10641]], ['langle', [10216]], ['lap', [10885]], ['Laplacetrf', [8466]], ['laquo', [171]], ['larrb', [8676]], ['larrbfs', [10527]], ['larr', [8592]], ['Larr', [8606]], ['lArr', [8656]], ['larrfs', [10525]], ['larrhk', [8617]], ['larrlp', [8619]], ['larrpl', [10553]], ['larrsim', [10611]], ['larrtl', [8610]], ['latail', [10521]], ['lAtail', [10523]], ['lat', [10923]], ['late', [10925]], ['lates', [10925, 65024]], ['lbarr', [10508]], ['lBarr', [10510]], ['lbbrk', [10098]], ['lbrace', [123]], ['lbrack', [91]], ['lbrke', [10635]], ['lbrksld', [10639]], ['lbrkslu', [10637]], ['Lcaron', [317]], ['lcaron', [318]], ['Lcedil', [315]], ['lcedil', [316]], ['lceil', [8968]], ['lcub', [123]], ['Lcy', [1051]], ['lcy', [1083]], ['ldca', [10550]], ['ldquo', [8220]], ['ldquor', [8222]], ['ldrdhar', [10599]], ['ldrushar', [10571]], ['ldsh', [8626]], ['le', [8804]], ['lE', [8806]], ['LeftAngleBracket', [10216]], ['LeftArrowBar', [8676]], ['leftarrow', [8592]], ['LeftArrow', [8592]], ['Leftarrow', [8656]], ['LeftArrowRightArrow', [8646]], ['leftarrowtail', [8610]], ['LeftCeiling', [8968]], ['LeftDoubleBracket', [10214]], ['LeftDownTeeVector', [10593]], ['LeftDownVectorBar', [10585]], ['LeftDownVector', [8643]], ['LeftFloor', [8970]], ['leftharpoondown', [8637]], ['leftharpoonup', [8636]], ['leftleftarrows', [8647]], ['leftrightarrow', [8596]], ['LeftRightArrow', [8596]], ['Leftrightarrow', [8660]], ['leftrightarrows', [8646]], ['leftrightharpoons', [8651]], ['leftrightsquigarrow', [8621]], ['LeftRightVector', [10574]], ['LeftTeeArrow', [8612]], ['LeftTee', [8867]], ['LeftTeeVector', [10586]], ['leftthreetimes', [8907]], ['LeftTriangleBar', [10703]], ['LeftTriangle', [8882]], ['LeftTriangleEqual', [8884]], ['LeftUpDownVector', [10577]], ['LeftUpTeeVector', [10592]], ['LeftUpVectorBar', [10584]], ['LeftUpVector', [8639]], ['LeftVectorBar', [10578]], ['LeftVector', [8636]], ['lEg', [10891]], ['leg', [8922]], ['leq', [8804]], ['leqq', [8806]], ['leqslant', [10877]], ['lescc', [10920]], ['les', [10877]], ['lesdot', [10879]], ['lesdoto', [10881]], ['lesdotor', [10883]], ['lesg', [8922, 65024]], ['lesges', [10899]], ['lessapprox', [10885]], ['lessdot', [8918]], ['lesseqgtr', [8922]], ['lesseqqgtr', [10891]], ['LessEqualGreater', [8922]], ['LessFullEqual', [8806]], ['LessGreater', [8822]], ['lessgtr', [8822]], ['LessLess', [10913]], ['lesssim', [8818]], ['LessSlantEqual', [10877]], ['LessTilde', [8818]], ['lfisht', [10620]], ['lfloor', [8970]], ['Lfr', [120079]], ['lfr', [120105]], ['lg', [8822]], ['lgE', [10897]], ['lHar', [10594]], ['lhard', [8637]], ['lharu', [8636]], ['lharul', [10602]], ['lhblk', [9604]], ['LJcy', [1033]], ['ljcy', [1113]], ['llarr', [8647]], ['ll', [8810]], ['Ll', [8920]], ['llcorner', [8990]], ['Lleftarrow', [8666]], ['llhard', [10603]], ['lltri', [9722]], ['Lmidot', [319]], ['lmidot', [320]], ['lmoustache', [9136]], ['lmoust', [9136]], ['lnap', [10889]], ['lnapprox', [10889]], ['lne', [10887]], ['lnE', [8808]], ['lneq', [10887]], ['lneqq', [8808]], ['lnsim', [8934]], ['loang', [10220]], ['loarr', [8701]], ['lobrk', [10214]], ['longleftarrow', [10229]], ['LongLeftArrow', [10229]], ['Longleftarrow', [10232]], ['longleftrightarrow', [10231]], ['LongLeftRightArrow', [10231]], ['Longleftrightarrow', [10234]], ['longmapsto', [10236]], ['longrightarrow', [10230]], ['LongRightArrow', [10230]], ['Longrightarrow', [10233]], ['looparrowleft', [8619]], ['looparrowright', [8620]], ['lopar', [10629]], ['Lopf', [120131]], ['lopf', [120157]], ['loplus', [10797]], ['lotimes', [10804]], ['lowast', [8727]], ['lowbar', [95]], ['LowerLeftArrow', [8601]], ['LowerRightArrow', [8600]], ['loz', [9674]], ['lozenge', [9674]], ['lozf', [10731]], ['lpar', [40]], ['lparlt', [10643]], ['lrarr', [8646]], ['lrcorner', [8991]], ['lrhar', [8651]], ['lrhard', [10605]], ['lrm', [8206]], ['lrtri', [8895]], ['lsaquo', [8249]], ['lscr', [120001]], ['Lscr', [8466]], ['lsh', [8624]], ['Lsh', [8624]], ['lsim', [8818]], ['lsime', [10893]], ['lsimg', [10895]], ['lsqb', [91]], ['lsquo', [8216]], ['lsquor', [8218]], ['Lstrok', [321]], ['lstrok', [322]], ['ltcc', [10918]], ['ltcir', [10873]], ['lt', [60]], ['LT', [60]], ['Lt', [8810]], ['ltdot', [8918]], ['lthree', [8907]], ['ltimes', [8905]], ['ltlarr', [10614]], ['ltquest', [10875]], ['ltri', [9667]], ['ltrie', [8884]], ['ltrif', [9666]], ['ltrPar', [10646]], ['lurdshar', [10570]], ['luruhar', [10598]], ['lvertneqq', [8808, 65024]], ['lvnE', [8808, 65024]], ['macr', [175]], ['male', [9794]], ['malt', [10016]], ['maltese', [10016]], ['Map', [10501]], ['map', [8614]], ['mapsto', [8614]], ['mapstodown', [8615]], ['mapstoleft', [8612]], ['mapstoup', [8613]], ['marker', [9646]], ['mcomma', [10793]], ['Mcy', [1052]], ['mcy', [1084]], ['mdash', [8212]], ['mDDot', [8762]], ['measuredangle', [8737]], ['MediumSpace', [8287]], ['Mellintrf', [8499]], ['Mfr', [120080]], ['mfr', [120106]], ['mho', [8487]], ['micro', [181]], ['midast', [42]], ['midcir', [10992]], ['mid', [8739]], ['middot', [183]], ['minusb', [8863]], ['minus', [8722]], ['minusd', [8760]], ['minusdu', [10794]], ['MinusPlus', [8723]], ['mlcp', [10971]], ['mldr', [8230]], ['mnplus', [8723]], ['models', [8871]], ['Mopf', [120132]], ['mopf', [120158]], ['mp', [8723]], ['mscr', [120002]], ['Mscr', [8499]], ['mstpos', [8766]], ['Mu', [924]], ['mu', [956]], ['multimap', [8888]], ['mumap', [8888]], ['nabla', [8711]], ['Nacute', [323]], ['nacute', [324]], ['nang', [8736, 8402]], ['nap', [8777]], ['napE', [10864, 824]], ['napid', [8779, 824]], ['napos', [329]], ['napprox', [8777]], ['natural', [9838]], ['naturals', [8469]], ['natur', [9838]], ['nbsp', [160]], ['nbump', [8782, 824]], ['nbumpe', [8783, 824]], ['ncap', [10819]], ['Ncaron', [327]], ['ncaron', [328]], ['Ncedil', [325]], ['ncedil', [326]], ['ncong', [8775]], ['ncongdot', [10861, 824]], ['ncup', [10818]], ['Ncy', [1053]], ['ncy', [1085]], ['ndash', [8211]], ['nearhk', [10532]], ['nearr', [8599]], ['neArr', [8663]], ['nearrow', [8599]], ['ne', [8800]], ['nedot', [8784, 824]], ['NegativeMediumSpace', [8203]], ['NegativeThickSpace', [8203]], ['NegativeThinSpace', [8203]], ['NegativeVeryThinSpace', [8203]], ['nequiv', [8802]], ['nesear', [10536]], ['nesim', [8770, 824]], ['NestedGreaterGreater', [8811]], ['NestedLessLess', [8810]], ['nexist', [8708]], ['nexists', [8708]], ['Nfr', [120081]], ['nfr', [120107]], ['ngE', [8807, 824]], ['nge', [8817]], ['ngeq', [8817]], ['ngeqq', [8807, 824]], ['ngeqslant', [10878, 824]], ['nges', [10878, 824]], ['nGg', [8921, 824]], ['ngsim', [8821]], ['nGt', [8811, 8402]], ['ngt', [8815]], ['ngtr', [8815]], ['nGtv', [8811, 824]], ['nharr', [8622]], ['nhArr', [8654]], ['nhpar', [10994]], ['ni', [8715]], ['nis', [8956]], ['nisd', [8954]], ['niv', [8715]], ['NJcy', [1034]], ['njcy', [1114]], ['nlarr', [8602]], ['nlArr', [8653]], ['nldr', [8229]], ['nlE', [8806, 824]], ['nle', [8816]], ['nleftarrow', [8602]], ['nLeftarrow', [8653]], ['nleftrightarrow', [8622]], ['nLeftrightarrow', [8654]], ['nleq', [8816]], ['nleqq', [8806, 824]], ['nleqslant', [10877, 824]], ['nles', [10877, 824]], ['nless', [8814]], ['nLl', [8920, 824]], ['nlsim', [8820]], ['nLt', [8810, 8402]], ['nlt', [8814]], ['nltri', [8938]], ['nltrie', [8940]], ['nLtv', [8810, 824]], ['nmid', [8740]], ['NoBreak', [8288]], ['NonBreakingSpace', [160]], ['nopf', [120159]], ['Nopf', [8469]], ['Not', [10988]], ['not', [172]], ['NotCongruent', [8802]], ['NotCupCap', [8813]], ['NotDoubleVerticalBar', [8742]], ['NotElement', [8713]], ['NotEqual', [8800]], ['NotEqualTilde', [8770, 824]], ['NotExists', [8708]], ['NotGreater', [8815]], ['NotGreaterEqual', [8817]], ['NotGreaterFullEqual', [8807, 824]], ['NotGreaterGreater', [8811, 824]], ['NotGreaterLess', [8825]], ['NotGreaterSlantEqual', [10878, 824]], ['NotGreaterTilde', [8821]], ['NotHumpDownHump', [8782, 824]], ['NotHumpEqual', [8783, 824]], ['notin', [8713]], ['notindot', [8949, 824]], ['notinE', [8953, 824]], ['notinva', [8713]], ['notinvb', [8951]], ['notinvc', [8950]], ['NotLeftTriangleBar', [10703, 824]], ['NotLeftTriangle', [8938]], ['NotLeftTriangleEqual', [8940]], ['NotLess', [8814]], ['NotLessEqual', [8816]], ['NotLessGreater', [8824]], ['NotLessLess', [8810, 824]], ['NotLessSlantEqual', [10877, 824]], ['NotLessTilde', [8820]], ['NotNestedGreaterGreater', [10914, 824]], ['NotNestedLessLess', [10913, 824]], ['notni', [8716]], ['notniva', [8716]], ['notnivb', [8958]], ['notnivc', [8957]], ['NotPrecedes', [8832]], ['NotPrecedesEqual', [10927, 824]], ['NotPrecedesSlantEqual', [8928]], ['NotReverseElement', [8716]], ['NotRightTriangleBar', [10704, 824]], ['NotRightTriangle', [8939]], ['NotRightTriangleEqual', [8941]], ['NotSquareSubset', [8847, 824]], ['NotSquareSubsetEqual', [8930]], ['NotSquareSuperset', [8848, 824]], ['NotSquareSupersetEqual', [8931]], ['NotSubset', [8834, 8402]], ['NotSubsetEqual', [8840]], ['NotSucceeds', [8833]], ['NotSucceedsEqual', [10928, 824]], ['NotSucceedsSlantEqual', [8929]], ['NotSucceedsTilde', [8831, 824]], ['NotSuperset', [8835, 8402]], ['NotSupersetEqual', [8841]], ['NotTilde', [8769]], ['NotTildeEqual', [8772]], ['NotTildeFullEqual', [8775]], ['NotTildeTilde', [8777]], ['NotVerticalBar', [8740]], ['nparallel', [8742]], ['npar', [8742]], ['nparsl', [11005, 8421]], ['npart', [8706, 824]], ['npolint', [10772]], ['npr', [8832]], ['nprcue', [8928]], ['nprec', [8832]], ['npreceq', [10927, 824]], ['npre', [10927, 824]], ['nrarrc', [10547, 824]], ['nrarr', [8603]], ['nrArr', [8655]], ['nrarrw', [8605, 824]], ['nrightarrow', [8603]], ['nRightarrow', [8655]], ['nrtri', [8939]], ['nrtrie', [8941]], ['nsc', [8833]], ['nsccue', [8929]], ['nsce', [10928, 824]], ['Nscr', [119977]], ['nscr', [120003]], ['nshortmid', [8740]], ['nshortparallel', [8742]], ['nsim', [8769]], ['nsime', [8772]], ['nsimeq', [8772]], ['nsmid', [8740]], ['nspar', [8742]], ['nsqsube', [8930]], ['nsqsupe', [8931]], ['nsub', [8836]], ['nsubE', [10949, 824]], ['nsube', [8840]], ['nsubset', [8834, 8402]], ['nsubseteq', [8840]], ['nsubseteqq', [10949, 824]], ['nsucc', [8833]], ['nsucceq', [10928, 824]], ['nsup', [8837]], ['nsupE', [10950, 824]], ['nsupe', [8841]], ['nsupset', [8835, 8402]], ['nsupseteq', [8841]], ['nsupseteqq', [10950, 824]], ['ntgl', [8825]], ['Ntilde', [209]], ['ntilde', [241]], ['ntlg', [8824]], ['ntriangleleft', [8938]], ['ntrianglelefteq', [8940]], ['ntriangleright', [8939]], ['ntrianglerighteq', [8941]], ['Nu', [925]], ['nu', [957]], ['num', [35]], ['numero', [8470]], ['numsp', [8199]], ['nvap', [8781, 8402]], ['nvdash', [8876]], ['nvDash', [8877]], ['nVdash', [8878]], ['nVDash', [8879]], ['nvge', [8805, 8402]], ['nvgt', [62, 8402]], ['nvHarr', [10500]], ['nvinfin', [10718]], ['nvlArr', [10498]], ['nvle', [8804, 8402]], ['nvlt', [60, 8402]], ['nvltrie', [8884, 8402]], ['nvrArr', [10499]], ['nvrtrie', [8885, 8402]], ['nvsim', [8764, 8402]], ['nwarhk', [10531]], ['nwarr', [8598]], ['nwArr', [8662]], ['nwarrow', [8598]], ['nwnear', [10535]], ['Oacute', [211]], ['oacute', [243]], ['oast', [8859]], ['Ocirc', [212]], ['ocirc', [244]], ['ocir', [8858]], ['Ocy', [1054]], ['ocy', [1086]], ['odash', [8861]], ['Odblac', [336]], ['odblac', [337]], ['odiv', [10808]], ['odot', [8857]], ['odsold', [10684]], ['OElig', [338]], ['oelig', [339]], ['ofcir', [10687]], ['Ofr', [120082]], ['ofr', [120108]], ['ogon', [731]], ['Ograve', [210]], ['ograve', [242]], ['ogt', [10689]], ['ohbar', [10677]], ['ohm', [937]], ['oint', [8750]], ['olarr', [8634]], ['olcir', [10686]], ['olcross', [10683]], ['oline', [8254]], ['olt', [10688]], ['Omacr', [332]], ['omacr', [333]], ['Omega', [937]], ['omega', [969]], ['Omicron', [927]], ['omicron', [959]], ['omid', [10678]], ['ominus', [8854]], ['Oopf', [120134]], ['oopf', [120160]], ['opar', [10679]], ['OpenCurlyDoubleQuote', [8220]], ['OpenCurlyQuote', [8216]], ['operp', [10681]], ['oplus', [8853]], ['orarr', [8635]], ['Or', [10836]], ['or', [8744]], ['ord', [10845]], ['order', [8500]], ['orderof', [8500]], ['ordf', [170]], ['ordm', [186]], ['origof', [8886]], ['oror', [10838]], ['orslope', [10839]], ['orv', [10843]], ['oS', [9416]], ['Oscr', [119978]], ['oscr', [8500]], ['Oslash', [216]], ['oslash', [248]], ['osol', [8856]], ['Otilde', [213]], ['otilde', [245]], ['otimesas', [10806]], ['Otimes', [10807]], ['otimes', [8855]], ['Ouml', [214]], ['ouml', [246]], ['ovbar', [9021]], ['OverBar', [8254]], ['OverBrace', [9182]], ['OverBracket', [9140]], ['OverParenthesis', [9180]], ['para', [182]], ['parallel', [8741]], ['par', [8741]], ['parsim', [10995]], ['parsl', [11005]], ['part', [8706]], ['PartialD', [8706]], ['Pcy', [1055]], ['pcy', [1087]], ['percnt', [37]], ['period', [46]], ['permil', [8240]], ['perp', [8869]], ['pertenk', [8241]], ['Pfr', [120083]], ['pfr', [120109]], ['Phi', [934]], ['phi', [966]], ['phiv', [981]], ['phmmat', [8499]], ['phone', [9742]], ['Pi', [928]], ['pi', [960]], ['pitchfork', [8916]], ['piv', [982]], ['planck', [8463]], ['planckh', [8462]], ['plankv', [8463]], ['plusacir', [10787]], ['plusb', [8862]], ['pluscir', [10786]], ['plus', [43]], ['plusdo', [8724]], ['plusdu', [10789]], ['pluse', [10866]], ['PlusMinus', [177]], ['plusmn', [177]], ['plussim', [10790]], ['plustwo', [10791]], ['pm', [177]], ['Poincareplane', [8460]], ['pointint', [10773]], ['popf', [120161]], ['Popf', [8473]], ['pound', [163]], ['prap', [10935]], ['Pr', [10939]], ['pr', [8826]], ['prcue', [8828]], ['precapprox', [10935]], ['prec', [8826]], ['preccurlyeq', [8828]], ['Precedes', [8826]], ['PrecedesEqual', [10927]], ['PrecedesSlantEqual', [8828]], ['PrecedesTilde', [8830]], ['preceq', [10927]], ['precnapprox', [10937]], ['precneqq', [10933]], ['precnsim', [8936]], ['pre', [10927]], ['prE', [10931]], ['precsim', [8830]], ['prime', [8242]], ['Prime', [8243]], ['primes', [8473]], ['prnap', [10937]], ['prnE', [10933]], ['prnsim', [8936]], ['prod', [8719]], ['Product', [8719]], ['profalar', [9006]], ['profline', [8978]], ['profsurf', [8979]], ['prop', [8733]], ['Proportional', [8733]], ['Proportion', [8759]], ['propto', [8733]], ['prsim', [8830]], ['prurel', [8880]], ['Pscr', [119979]], ['pscr', [120005]], ['Psi', [936]], ['psi', [968]], ['puncsp', [8200]], ['Qfr', [120084]], ['qfr', [120110]], ['qint', [10764]], ['qopf', [120162]], ['Qopf', [8474]], ['qprime', [8279]], ['Qscr', [119980]], ['qscr', [120006]], ['quaternions', [8461]], ['quatint', [10774]], ['quest', [63]], ['questeq', [8799]], ['quot', [34]], ['QUOT', [34]], ['rAarr', [8667]], ['race', [8765, 817]], ['Racute', [340]], ['racute', [341]], ['radic', [8730]], ['raemptyv', [10675]], ['rang', [10217]], ['Rang', [10219]], ['rangd', [10642]], ['range', [10661]], ['rangle', [10217]], ['raquo', [187]], ['rarrap', [10613]], ['rarrb', [8677]], ['rarrbfs', [10528]], ['rarrc', [10547]], ['rarr', [8594]], ['Rarr', [8608]], ['rArr', [8658]], ['rarrfs', [10526]], ['rarrhk', [8618]], ['rarrlp', [8620]], ['rarrpl', [10565]], ['rarrsim', [10612]], ['Rarrtl', [10518]], ['rarrtl', [8611]], ['rarrw', [8605]], ['ratail', [10522]], ['rAtail', [10524]], ['ratio', [8758]], ['rationals', [8474]], ['rbarr', [10509]], ['rBarr', [10511]], ['RBarr', [10512]], ['rbbrk', [10099]], ['rbrace', [125]], ['rbrack', [93]], ['rbrke', [10636]], ['rbrksld', [10638]], ['rbrkslu', [10640]], ['Rcaron', [344]], ['rcaron', [345]], ['Rcedil', [342]], ['rcedil', [343]], ['rceil', [8969]], ['rcub', [125]], ['Rcy', [1056]], ['rcy', [1088]], ['rdca', [10551]], ['rdldhar', [10601]], ['rdquo', [8221]], ['rdquor', [8221]], ['CloseCurlyDoubleQuote', [8221]], ['rdsh', [8627]], ['real', [8476]], ['realine', [8475]], ['realpart', [8476]], ['reals', [8477]], ['Re', [8476]], ['rect', [9645]], ['reg', [174]], ['REG', [174]], ['ReverseElement', [8715]], ['ReverseEquilibrium', [8651]], ['ReverseUpEquilibrium', [10607]], ['rfisht', [10621]], ['rfloor', [8971]], ['rfr', [120111]], ['Rfr', [8476]], ['rHar', [10596]], ['rhard', [8641]], ['rharu', [8640]], ['rharul', [10604]], ['Rho', [929]], ['rho', [961]], ['rhov', [1009]], ['RightAngleBracket', [10217]], ['RightArrowBar', [8677]], ['rightarrow', [8594]], ['RightArrow', [8594]], ['Rightarrow', [8658]], ['RightArrowLeftArrow', [8644]], ['rightarrowtail', [8611]], ['RightCeiling', [8969]], ['RightDoubleBracket', [10215]], ['RightDownTeeVector', [10589]], ['RightDownVectorBar', [10581]], ['RightDownVector', [8642]], ['RightFloor', [8971]], ['rightharpoondown', [8641]], ['rightharpoonup', [8640]], ['rightleftarrows', [8644]], ['rightleftharpoons', [8652]], ['rightrightarrows', [8649]], ['rightsquigarrow', [8605]], ['RightTeeArrow', [8614]], ['RightTee', [8866]], ['RightTeeVector', [10587]], ['rightthreetimes', [8908]], ['RightTriangleBar', [10704]], ['RightTriangle', [8883]], ['RightTriangleEqual', [8885]], ['RightUpDownVector', [10575]], ['RightUpTeeVector', [10588]], ['RightUpVectorBar', [10580]], ['RightUpVector', [8638]], ['RightVectorBar', [10579]], ['RightVector', [8640]], ['ring', [730]], ['risingdotseq', [8787]], ['rlarr', [8644]], ['rlhar', [8652]], ['rlm', [8207]], ['rmoustache', [9137]], ['rmoust', [9137]], ['rnmid', [10990]], ['roang', [10221]], ['roarr', [8702]], ['robrk', [10215]], ['ropar', [10630]], ['ropf', [120163]], ['Ropf', [8477]], ['roplus', [10798]], ['rotimes', [10805]], ['RoundImplies', [10608]], ['rpar', [41]], ['rpargt', [10644]], ['rppolint', [10770]], ['rrarr', [8649]], ['Rrightarrow', [8667]], ['rsaquo', [8250]], ['rscr', [120007]], ['Rscr', [8475]], ['rsh', [8625]], ['Rsh', [8625]], ['rsqb', [93]], ['rsquo', [8217]], ['rsquor', [8217]], ['CloseCurlyQuote', [8217]], ['rthree', [8908]], ['rtimes', [8906]], ['rtri', [9657]], ['rtrie', [8885]], ['rtrif', [9656]], ['rtriltri', [10702]], ['RuleDelayed', [10740]], ['ruluhar', [10600]], ['rx', [8478]], ['Sacute', [346]], ['sacute', [347]], ['sbquo', [8218]], ['scap', [10936]], ['Scaron', [352]], ['scaron', [353]], ['Sc', [10940]], ['sc', [8827]], ['sccue', [8829]], ['sce', [10928]], ['scE', [10932]], ['Scedil', [350]], ['scedil', [351]], ['Scirc', [348]], ['scirc', [349]], ['scnap', [10938]], ['scnE', [10934]], ['scnsim', [8937]], ['scpolint', [10771]], ['scsim', [8831]], ['Scy', [1057]], ['scy', [1089]], ['sdotb', [8865]], ['sdot', [8901]], ['sdote', [10854]], ['searhk', [10533]], ['searr', [8600]], ['seArr', [8664]], ['searrow', [8600]], ['sect', [167]], ['semi', [59]], ['seswar', [10537]], ['setminus', [8726]], ['setmn', [8726]], ['sext', [10038]], ['Sfr', [120086]], ['sfr', [120112]], ['sfrown', [8994]], ['sharp', [9839]], ['SHCHcy', [1065]], ['shchcy', [1097]], ['SHcy', [1064]], ['shcy', [1096]], ['ShortDownArrow', [8595]], ['ShortLeftArrow', [8592]], ['shortmid', [8739]], ['shortparallel', [8741]], ['ShortRightArrow', [8594]], ['ShortUpArrow', [8593]], ['shy', [173]], ['Sigma', [931]], ['sigma', [963]], ['sigmaf', [962]], ['sigmav', [962]], ['sim', [8764]], ['simdot', [10858]], ['sime', [8771]], ['simeq', [8771]], ['simg', [10910]], ['simgE', [10912]], ['siml', [10909]], ['simlE', [10911]], ['simne', [8774]], ['simplus', [10788]], ['simrarr', [10610]], ['slarr', [8592]], ['SmallCircle', [8728]], ['smallsetminus', [8726]], ['smashp', [10803]], ['smeparsl', [10724]], ['smid', [8739]], ['smile', [8995]], ['smt', [10922]], ['smte', [10924]], ['smtes', [10924, 65024]], ['SOFTcy', [1068]], ['softcy', [1100]], ['solbar', [9023]], ['solb', [10692]], ['sol', [47]], ['Sopf', [120138]], ['sopf', [120164]], ['spades', [9824]], ['spadesuit', [9824]], ['spar', [8741]], ['sqcap', [8851]], ['sqcaps', [8851, 65024]], ['sqcup', [8852]], ['sqcups', [8852, 65024]], ['Sqrt', [8730]], ['sqsub', [8847]], ['sqsube', [8849]], ['sqsubset', [8847]], ['sqsubseteq', [8849]], ['sqsup', [8848]], ['sqsupe', [8850]], ['sqsupset', [8848]], ['sqsupseteq', [8850]], ['square', [9633]], ['Square', [9633]], ['SquareIntersection', [8851]], ['SquareSubset', [8847]], ['SquareSubsetEqual', [8849]], ['SquareSuperset', [8848]], ['SquareSupersetEqual', [8850]], ['SquareUnion', [8852]], ['squarf', [9642]], ['squ', [9633]], ['squf', [9642]], ['srarr', [8594]], ['Sscr', [119982]], ['sscr', [120008]], ['ssetmn', [8726]], ['ssmile', [8995]], ['sstarf', [8902]], ['Star', [8902]], ['star', [9734]], ['starf', [9733]], ['straightepsilon', [1013]], ['straightphi', [981]], ['strns', [175]], ['sub', [8834]], ['Sub', [8912]], ['subdot', [10941]], ['subE', [10949]], ['sube', [8838]], ['subedot', [10947]], ['submult', [10945]], ['subnE', [10955]], ['subne', [8842]], ['subplus', [10943]], ['subrarr', [10617]], ['subset', [8834]], ['Subset', [8912]], ['subseteq', [8838]], ['subseteqq', [10949]], ['SubsetEqual', [8838]], ['subsetneq', [8842]], ['subsetneqq', [10955]], ['subsim', [10951]], ['subsub', [10965]], ['subsup', [10963]], ['succapprox', [10936]], ['succ', [8827]], ['succcurlyeq', [8829]], ['Succeeds', [8827]], ['SucceedsEqual', [10928]], ['SucceedsSlantEqual', [8829]], ['SucceedsTilde', [8831]], ['succeq', [10928]], ['succnapprox', [10938]], ['succneqq', [10934]], ['succnsim', [8937]], ['succsim', [8831]], ['SuchThat', [8715]], ['sum', [8721]], ['Sum', [8721]], ['sung', [9834]], ['sup1', [185]], ['sup2', [178]], ['sup3', [179]], ['sup', [8835]], ['Sup', [8913]], ['supdot', [10942]], ['supdsub', [10968]], ['supE', [10950]], ['supe', [8839]], ['supedot', [10948]], ['Superset', [8835]], ['SupersetEqual', [8839]], ['suphsol', [10185]], ['suphsub', [10967]], ['suplarr', [10619]], ['supmult', [10946]], ['supnE', [10956]], ['supne', [8843]], ['supplus', [10944]], ['supset', [8835]], ['Supset', [8913]], ['supseteq', [8839]], ['supseteqq', [10950]], ['supsetneq', [8843]], ['supsetneqq', [10956]], ['supsim', [10952]], ['supsub', [10964]], ['supsup', [10966]], ['swarhk', [10534]], ['swarr', [8601]], ['swArr', [8665]], ['swarrow', [8601]], ['swnwar', [10538]], ['szlig', [223]], ['Tab', [9]], ['target', [8982]], ['Tau', [932]], ['tau', [964]], ['tbrk', [9140]], ['Tcaron', [356]], ['tcaron', [357]], ['Tcedil', [354]], ['tcedil', [355]], ['Tcy', [1058]], ['tcy', [1090]], ['tdot', [8411]], ['telrec', [8981]], ['Tfr', [120087]], ['tfr', [120113]], ['there4', [8756]], ['therefore', [8756]], ['Therefore', [8756]], ['Theta', [920]], ['theta', [952]], ['thetasym', [977]], ['thetav', [977]], ['thickapprox', [8776]], ['thicksim', [8764]], ['ThickSpace', [8287, 8202]], ['ThinSpace', [8201]], ['thinsp', [8201]], ['thkap', [8776]], ['thksim', [8764]], ['THORN', [222]], ['thorn', [254]], ['tilde', [732]], ['Tilde', [8764]], ['TildeEqual', [8771]], ['TildeFullEqual', [8773]], ['TildeTilde', [8776]], ['timesbar', [10801]], ['timesb', [8864]], ['times', [215]], ['timesd', [10800]], ['tint', [8749]], ['toea', [10536]], ['topbot', [9014]], ['topcir', [10993]], ['top', [8868]], ['Topf', [120139]], ['topf', [120165]], ['topfork', [10970]], ['tosa', [10537]], ['tprime', [8244]], ['trade', [8482]], ['TRADE', [8482]], ['triangle', [9653]], ['triangledown', [9663]], ['triangleleft', [9667]], ['trianglelefteq', [8884]], ['triangleq', [8796]], ['triangleright', [9657]], ['trianglerighteq', [8885]], ['tridot', [9708]], ['trie', [8796]], ['triminus', [10810]], ['TripleDot', [8411]], ['triplus', [10809]], ['trisb', [10701]], ['tritime', [10811]], ['trpezium', [9186]], ['Tscr', [119983]], ['tscr', [120009]], ['TScy', [1062]], ['tscy', [1094]], ['TSHcy', [1035]], ['tshcy', [1115]], ['Tstrok', [358]], ['tstrok', [359]], ['twixt', [8812]], ['twoheadleftarrow', [8606]], ['twoheadrightarrow', [8608]], ['Uacute', [218]], ['uacute', [250]], ['uarr', [8593]], ['Uarr', [8607]], ['uArr', [8657]], ['Uarrocir', [10569]], ['Ubrcy', [1038]], ['ubrcy', [1118]], ['Ubreve', [364]], ['ubreve', [365]], ['Ucirc', [219]], ['ucirc', [251]], ['Ucy', [1059]], ['ucy', [1091]], ['udarr', [8645]], ['Udblac', [368]], ['udblac', [369]], ['udhar', [10606]], ['ufisht', [10622]], ['Ufr', [120088]], ['ufr', [120114]], ['Ugrave', [217]], ['ugrave', [249]], ['uHar', [10595]], ['uharl', [8639]], ['uharr', [8638]], ['uhblk', [9600]], ['ulcorn', [8988]], ['ulcorner', [8988]], ['ulcrop', [8975]], ['ultri', [9720]], ['Umacr', [362]], ['umacr', [363]], ['uml', [168]], ['UnderBar', [95]], ['UnderBrace', [9183]], ['UnderBracket', [9141]], ['UnderParenthesis', [9181]], ['Union', [8899]], ['UnionPlus', [8846]], ['Uogon', [370]], ['uogon', [371]], ['Uopf', [120140]], ['uopf', [120166]], ['UpArrowBar', [10514]], ['uparrow', [8593]], ['UpArrow', [8593]], ['Uparrow', [8657]], ['UpArrowDownArrow', [8645]], ['updownarrow', [8597]], ['UpDownArrow', [8597]], ['Updownarrow', [8661]], ['UpEquilibrium', [10606]], ['upharpoonleft', [8639]], ['upharpoonright', [8638]], ['uplus', [8846]], ['UpperLeftArrow', [8598]], ['UpperRightArrow', [8599]], ['upsi', [965]], ['Upsi', [978]], ['upsih', [978]], ['Upsilon', [933]], ['upsilon', [965]], ['UpTeeArrow', [8613]], ['UpTee', [8869]], ['upuparrows', [8648]], ['urcorn', [8989]], ['urcorner', [8989]], ['urcrop', [8974]], ['Uring', [366]], ['uring', [367]], ['urtri', [9721]], ['Uscr', [119984]], ['uscr', [120010]], ['utdot', [8944]], ['Utilde', [360]], ['utilde', [361]], ['utri', [9653]], ['utrif', [9652]], ['uuarr', [8648]], ['Uuml', [220]], ['uuml', [252]], ['uwangle', [10663]], ['vangrt', [10652]], ['varepsilon', [1013]], ['varkappa', [1008]], ['varnothing', [8709]], ['varphi', [981]], ['varpi', [982]], ['varpropto', [8733]], ['varr', [8597]], ['vArr', [8661]], ['varrho', [1009]], ['varsigma', [962]], ['varsubsetneq', [8842, 65024]], ['varsubsetneqq', [10955, 65024]], ['varsupsetneq', [8843, 65024]], ['varsupsetneqq', [10956, 65024]], ['vartheta', [977]], ['vartriangleleft', [8882]], ['vartriangleright', [8883]], ['vBar', [10984]], ['Vbar', [10987]], ['vBarv', [10985]], ['Vcy', [1042]], ['vcy', [1074]], ['vdash', [8866]], ['vDash', [8872]], ['Vdash', [8873]], ['VDash', [8875]], ['Vdashl', [10982]], ['veebar', [8891]], ['vee', [8744]], ['Vee', [8897]], ['veeeq', [8794]], ['vellip', [8942]], ['verbar', [124]], ['Verbar', [8214]], ['vert', [124]], ['Vert', [8214]], ['VerticalBar', [8739]], ['VerticalLine', [124]], ['VerticalSeparator', [10072]], ['VerticalTilde', [8768]], ['VeryThinSpace', [8202]], ['Vfr', [120089]], ['vfr', [120115]], ['vltri', [8882]], ['vnsub', [8834, 8402]], ['vnsup', [8835, 8402]], ['Vopf', [120141]], ['vopf', [120167]], ['vprop', [8733]], ['vrtri', [8883]], ['Vscr', [119985]], ['vscr', [120011]], ['vsubnE', [10955, 65024]], ['vsubne', [8842, 65024]], ['vsupnE', [10956, 65024]], ['vsupne', [8843, 65024]], ['Vvdash', [8874]], ['vzigzag', [10650]], ['Wcirc', [372]], ['wcirc', [373]], ['wedbar', [10847]], ['wedge', [8743]], ['Wedge', [8896]], ['wedgeq', [8793]], ['weierp', [8472]], ['Wfr', [120090]], ['wfr', [120116]], ['Wopf', [120142]], ['wopf', [120168]], ['wp', [8472]], ['wr', [8768]], ['wreath', [8768]], ['Wscr', [119986]], ['wscr', [120012]], ['xcap', [8898]], ['xcirc', [9711]], ['xcup', [8899]], ['xdtri', [9661]], ['Xfr', [120091]], ['xfr', [120117]], ['xharr', [10231]], ['xhArr', [10234]], ['Xi', [926]], ['xi', [958]], ['xlarr', [10229]], ['xlArr', [10232]], ['xmap', [10236]], ['xnis', [8955]], ['xodot', [10752]], ['Xopf', [120143]], ['xopf', [120169]], ['xoplus', [10753]], ['xotime', [10754]], ['xrarr', [10230]], ['xrArr', [10233]], ['Xscr', [119987]], ['xscr', [120013]], ['xsqcup', [10758]], ['xuplus', [10756]], ['xutri', [9651]], ['xvee', [8897]], ['xwedge', [8896]], ['Yacute', [221]], ['yacute', [253]], ['YAcy', [1071]], ['yacy', [1103]], ['Ycirc', [374]], ['ycirc', [375]], ['Ycy', [1067]], ['ycy', [1099]], ['yen', [165]], ['Yfr', [120092]], ['yfr', [120118]], ['YIcy', [1031]], ['yicy', [1111]], ['Yopf', [120144]], ['yopf', [120170]], ['Yscr', [119988]], ['yscr', [120014]], ['YUcy', [1070]], ['yucy', [1102]], ['yuml', [255]], ['Yuml', [376]], ['Zacute', [377]], ['zacute', [378]], ['Zcaron', [381]], ['zcaron', [382]], ['Zcy', [1047]], ['zcy', [1079]], ['Zdot', [379]], ['zdot', [380]], ['zeetrf', [8488]], ['ZeroWidthSpace', [8203]], ['Zeta', [918]], ['zeta', [950]], ['zfr', [120119]], ['Zfr', [8488]], ['ZHcy', [1046]], ['zhcy', [1078]], ['zigrarr', [8669]], ['zopf', [120171]], ['Zopf', [8484]], ['Zscr', [119989]], ['zscr', [120015]], ['zwj', [8205]], ['zwnj', [8204]]];\nvar DECODE_ONLY_ENTITIES = [['NewLine', [10]]];\nvar alphaIndex = {};\nvar charIndex = {};\ncreateIndexes(alphaIndex, charIndex);\nvar Html5Entities = /** @class */ (function () {\n function Html5Entities() {\n }\n Html5Entities.prototype.decode = function (str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/&(#?[\\w\\d]+);?/g, function (s, entity) {\n var chr;\n if (entity.charAt(0) === \"#\") {\n var code = entity.charAt(1) === 'x' ?\n parseInt(entity.substr(2).toLowerCase(), 16) :\n parseInt(entity.substr(1));\n if (!isNaN(code) || code >= -32768) {\n if (code <= 65535) {\n chr = String.fromCharCode(code);\n }\n else {\n chr = surrogate_pairs_1.fromCodePoint(code);\n }\n }\n }\n else {\n chr = alphaIndex[entity];\n }\n return chr || s;\n });\n };\n Html5Entities.decode = function (str) {\n return new Html5Entities().decode(str);\n };\n Html5Entities.prototype.encode = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var charInfo = charIndex[str.charCodeAt(i)];\n if (charInfo) {\n var alpha = charInfo[str.charCodeAt(i + 1)];\n if (alpha) {\n i++;\n }\n else {\n alpha = charInfo[''];\n }\n if (alpha) {\n result += \"&\" + alpha + \";\";\n i++;\n continue;\n }\n }\n result += str.charAt(i);\n i++;\n }\n return result;\n };\n Html5Entities.encode = function (str) {\n return new Html5Entities().encode(str);\n };\n Html5Entities.prototype.encodeNonUTF = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n var charInfo = charIndex[c];\n if (charInfo) {\n var alpha = charInfo[str.charCodeAt(i + 1)];\n if (alpha) {\n i++;\n }\n else {\n alpha = charInfo[''];\n }\n if (alpha) {\n result += \"&\" + alpha + \";\";\n i++;\n continue;\n }\n }\n if (c < 32 || c > 126) {\n if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) {\n result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';\n i++;\n }\n else {\n result += '&#' + c + ';';\n }\n }\n else {\n result += str.charAt(i);\n }\n i++;\n }\n return result;\n };\n Html5Entities.encodeNonUTF = function (str) {\n return new Html5Entities().encodeNonUTF(str);\n };\n Html5Entities.prototype.encodeNonASCII = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n if (c <= 255) {\n result += str[i++];\n continue;\n }\n if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) {\n result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';\n i += 2;\n }\n else {\n result += '&#' + c + ';';\n i++;\n }\n }\n return result;\n };\n Html5Entities.encodeNonASCII = function (str) {\n return new Html5Entities().encodeNonASCII(str);\n };\n return Html5Entities;\n}());\nexports.Html5Entities = Html5Entities;\nfunction createIndexes(alphaIndex, charIndex) {\n var i = ENTITIES.length;\n while (i--) {\n var _a = ENTITIES[i], alpha = _a[0], _b = _a[1], chr = _b[0], chr2 = _b[1];\n var addChar = (chr < 32 || chr > 126) || chr === 62 || chr === 60 || chr === 38 || chr === 34 || chr === 39;\n var charInfo = void 0;\n if (addChar) {\n charInfo = charIndex[chr] = charIndex[chr] || {};\n }\n if (chr2) {\n alphaIndex[alpha] = String.fromCharCode(chr) + String.fromCharCode(chr2);\n addChar && (charInfo[chr2] = alpha);\n }\n else {\n alphaIndex[alpha] = String.fromCharCode(chr);\n addChar && (charInfo[''] = alpha);\n }\n }\n i = DECODE_ONLY_ENTITIES.length;\n while (i--) {\n var _c = DECODE_ONLY_ENTITIES[i], alpha = _c[0], _d = _c[1], chr = _d[0], chr2 = _d[1];\n alphaIndex[alpha] = String.fromCharCode(chr) + (chr2 ? String.fromCharCode(chr2) : '');\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar xml_entities_1 = require(\"./xml-entities\");\nexports.XmlEntities = xml_entities_1.XmlEntities;\nvar html4_entities_1 = require(\"./html4-entities\");\nexports.Html4Entities = html4_entities_1.Html4Entities;\nvar html5_entities_1 = require(\"./html5-entities\");\nexports.Html5Entities = html5_entities_1.Html5Entities;\nexports.AllHtmlEntities = html5_entities_1.Html5Entities;\n","var Entities = require('html-entities').AllHtmlEntities;\n\nvar entities = new Entities();\n\n// Quick and dirty way of getting the text representation of a string of HTML,\n// basically close to what a DOM node's innerText property would be\n\nfunction innertext (html) {\n // Drop everything inside <...> (i.e., tags/elements), and keep the text.\n // Unlike browser innerText, this removes newlines; it also doesn't handle\n // un-encoded `<` or `>` characters very well, so don't feed it malformed HTML\n return entities.decode(html.split(/<[^>]+>/)\n .map(function (chunk) { return chunk.trim() })\n .filter(function (trimmedChunk) { return trimmedChunk.length > 0 })\n .join(' ')\n );\n}\n\nmodule.exports = innertext;\n","import { ADMIN_PATHS, PATHS } from '../api/paths'\nimport { callApiWithAdminAuth, callApiWithAuth, getApiPath } from '../api/utils'\n\nexport const EncodeUrlRegexMap = {\n edit: /<mocka ([^>]*)data-url=\"true\"[^<>]*>(.*?)<\\/mocka>/gim,\n url: /((?:=\")|(?:data-url=\"true\">)|)(https?:\\/\\/(www\\.)?(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#\\/%=~_|$?!:,.])*(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#\\/%=~_|$]))/gim,\n encodedUrl: /\\[a\\+href=\"([^<\"]+)\"(?:\\+text=\\\"([^<\"]+)\")?\\]/gim,\n editorMention: /<mention [^>]*data-id=\"([^<\"]+)\"[^>]*>([^<]+)<\\/mention>/gim,\n editorFullMention:\n /<mention [^>]*data-id=\"([^<\"]+)\" [^\\>]*data-name=\"([^<\"]+)\"[^>]*>([^<]+)<\\/mention>/gim,\n savedMention: /\\[mention\\+id=\"([^<\"]+)\"([^\\]]*)\\]/gim,\n rawUrl:\n /^(https?:\\/\\/(www\\.)?(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#\\/%=~_|$?!:,.])*(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#\\/%=~_|$]))$/gim,\n optionalProtocol:\n /^((https?:\\/\\/)?(www\\.)?(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#\\/%=~_|$?!:,.])*(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#\\/%=~_|$]))$/gim,\n encodedUrl2: /<a [^>]*href=\"([^>\"]+)\"[^>]*>([^<]+)<\\/a>/gim,\n}\nexport const BadWordRegex =\n /<mocka [^\\>]*data-bad-word=\"[^\\\"]*\" [^\\>]*data-error=\"true\"[^\\>]*>(.*?)<\\/mocka>/gim\nexport const encodePostUrl = (s: string, sanitizeFunction = (s: string) => s) =>\n sanitizeFunction(\n s\n .replace(/(\\ )+/g, ' ')\n .replace(/(\\&)+/g, '&')\n ?.replace(/(\\u200c|‌)+/g, '')\n .replace(EncodeUrlRegexMap.url, (match, p1, p2) => {\n if (p1 !== '=\"' && p1 !== 'data-url=\"true\">')\n return `<a href=\"${p2}\" target=\"_blank\">${p2}</a>`\n return match\n })\n .replace(EncodeUrlRegexMap.edit, (match, p1, p2) => {\n const cleanUrl = p1.match(/data-href=\"([^\"]*)\"/im)?.[1]\n if (cleanUrl) return `<a href=\"${cleanUrl}\" target=\"_blank\">${p2}</a>`\n return `<a href=\"${p2}\" target=\"_blank\">${p2}</a>`\n }),\n )\nexport const encodeMention = (s: string) =>\n s.replace(EncodeUrlRegexMap.editorMention, (match, p1, p2) => {\n return `[mention+id=\"${p1}\"+name=\"${p2}\"]`\n })\n\nexport const getAnchorHtml = ({\n url,\n text,\n method,\n}: {\n url: string\n text: string\n method: string\n}) => {\n // remove white space before and after link element, put them outside of current tag\n const trimStartIndex = text.indexOf(text.trimStart())\n const trimEndIndex = text.trimEnd().length\n const preSpaces = text.substring(0, trimStartIndex)\n const trimmedText = text.substring(trimStartIndex, trimEndIndex)\n const postSpaces = text.substring(trimEndIndex)\n if (method === 'edit') {\n return `${preSpaces}<mocka data-href=\"${url}\" data-url=\"true\">${trimmedText}</mocka>${postSpaces}`\n }\n if (method === 'display') {\n if (url.startsWith('http://') || url.startsWith('https://')) {\n return `${preSpaces}<a href=\"${url}\" target=\"_blank\">${trimmedText}</a>${postSpaces}`\n }\n }\n return text\n}\n\nexport const decodePostUrl = (s: string, method: string) =>\n s\n .replace(EncodeUrlRegexMap.encodedUrl, (match, p1, p2) => {\n const text = p2 || p1\n return getAnchorHtml({\n text,\n url: p1,\n method,\n })\n })\n .replace(EncodeUrlRegexMap.encodedUrl2, (match, p1, p2) => {\n const text = p2 || p1\n return getAnchorHtml({\n text,\n url: p1,\n method,\n })\n })\nexport const decodeMention = (\n s: string,\n users: {\n id: number\n name: string\n }[] = [],\n) =>\n s.replace(EncodeUrlRegexMap.savedMention, (match, p1, p2) => {\n const foundUser = users.find((u) => String(u.id) === p1)\n if (!foundUser) {\n if (!p2) return ''\n let tempName = ''\n ;(p2 as string).replace(/\\+name=\"([^<\"]+)\"/i, (m, _p1) => {\n tempName = _p1\n return m\n })\n return `<mention data-id=\"${p1}\" data-name=\"${tempName}\">${tempName}</mention>`\n }\n return `<mention data-id=\"${p1}\" data-name=\"${foundUser.name}\">${foundUser.name}</mention>`\n })\n\nexport const getUrlsFromString = (s: string) => {\n const res: string[] = []\n s.replace(/(\\&)+/g, '&').replace(\n EncodeUrlRegexMap.url,\n (match, p1, p2) => {\n if (p1 !== '=\"' && p1 !== 'data-url=\"true\">') {\n res.push(p2)\n }\n return match\n },\n )\n return res\n}\nexport const LIMIT_MENTION = 30\n\nexport const getMentionIdsFromString = (s: string, disableLimit?: boolean) => {\n const res: string[] = []\n s.replace(EncodeUrlRegexMap.editorMention, (match, p1) => {\n res.push(p1)\n return match\n }).replace(EncodeUrlRegexMap.savedMention, (match, p1) => {\n res.push(p1)\n return match\n })\n if (!disableLimit) {\n return Array.from(new Set(res)).slice(0, LIMIT_MENTION)\n }\n return res\n}\nexport const getUrlsFromEditorString = (s: string): string[] =>\n [\n ...getUrlsFromString(s),\n ...(s.match(EncodeUrlRegexMap.edit)?.map((s) => {\n const cleanUrl = s.match(/data-href=\"([^\"]*)\"/im)?.[1]\n const text = s.match(/>(.*?)<\\/mocka>/im)?.[1]\n return cleanUrl || text\n }) || []),\n ].filter((s) => !!s) as string[]\n\nexport const escapeRegExp = (string: string) => {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n}\n\nexport function escapeHtmlString(html: string, isAttribute?: boolean) {\n const escape = document.createElement('textarea')\n if (!isAttribute) {\n escape.textContent = html\n return escape.innerText\n } else {\n escape.setAttribute('_temp', html)\n return escape.getAttribute('_temp')\n }\n}\n\nexport function unescapeHtmlString(html: string) {\n const escape = document.createElement('textarea')\n escape.innerHTML = html\n return escape.textContent\n}\n\nexport const wrapAnchorAroundUrls = (s: string) =>\n s\n .replace(/(\\ )+/g, ' ')\n // ?.replace(/(\\&)+/g, '&')\n ?.replace(/(\\u200c|‌)+/g, '')\n ?.replace(EncodeUrlRegexMap.edit, (match, p1, p2) => {\n const cleanUrl = p1.match(/data-href=\"([^\"]*)\"/im)?.[1]\n if (!cleanUrl || cleanUrl === p2 || p2.match(EncodeUrlRegexMap.rawUrl))\n return p2\n if (cleanUrl) return `<a href=\"${cleanUrl}\">${p2}</a>`\n return `<a href=\"${p2}\">${p2}</a>`\n })\n .replace(EncodeUrlRegexMap.url, (match, p1, p2) => {\n if (p1 !== '=\"' && p1 !== 'data-url=\"true\">') {\n const lowercase = p2.toLowerCase()\n const addHttps = !lowercase.startsWith('http') ? ' https://' : ''\n const url = `${addHttps}${lowercase}`\n return getAnchorHtml({\n text: url,\n url: url,\n method: 'edit',\n })\n }\n return match\n })\n .replace(EncodeUrlRegexMap.encodedUrl2, (match, p1, p2) => {\n const text = p2 || p1\n return getAnchorHtml({\n text: text,\n url: p1,\n method: 'edit',\n })\n })\n\nexport const removeEdittedBannedWord = (s: string) =>\n s.replace(BadWordRegex, (s, m1) => {\n const w = document.createElement('div')\n w.innerHTML = s\n const child = w.firstChild as HTMLElement\n if (child?.innerText !== child?.getAttribute('data-bad-word')) return m1\n else return s\n })\nexport const removeBannedWordWrapper = (s: string) =>\n s.replace(BadWordRegex, '$1')\nexport const removeFontFormat = (s: string) =>\n s.replace(/<font [^\\>]*>(.+)<\\/font>/gim, (s, m1) => {\n return m1.replace(/<u[^\\>]*>(.+)<\\/u>/gim, '$1')\n })\n\nexport const encodePostContent = (\n s: string,\n sanitizeFunction = (s: string) => s,\n) => encodePostUrl(encodeMention(removeBannedWordWrapper(s)), sanitizeFunction)\n\nexport const ALLOW_DOMAIN_URL = [\n 'hellobacsi.com',\n 'hellosehat.com',\n 'hellodoktor.com',\n 'hellokrupet.com',\n 'hellodoctor.com.ph',\n 'hellokhunmor.com',\n 'hellosayarwon.com',\n 'helloyishi.com.tw',\n 'helloswasthya.com',\n 'marrybaby.vn',\n]\n\nexport const reformatUrl = (s: string) => {\n if (s.match(EncodeUrlRegexMap.optionalProtocol)) {\n if (s.startsWith('https://') || s.startsWith('http://')) return s\n else return `https://${s}`\n }\n return ''\n}\n\nexport const highlightBadWords = (text: string, bannedWords: string[]) => {\n const filteredBanedWords = bannedWords.filter(Boolean)\n if (text && filteredBanedWords.length > 0) {\n const submitTitle = removeBannedWordWrapper(text)\n return submitTitle.replace(\n new RegExp(\n `\\\\b(${filteredBanedWords\n .map((banned) => escapeRegExp(banned))\n .join('|')})\\\\b`,\n 'gi',\n ),\n (s, m1) => {\n const escape = document.createElement('mocka')\n escape.setAttribute('data-bad-word', m1)\n escape.setAttribute('data-error', 'true')\n escape.innerText = m1\n return `${escape.outerHTML}`\n },\n )\n }\n return text\n}\n\nexport const fixMalformedMention = (text: string) => {\n return text.replace(\n EncodeUrlRegexMap.editorFullMention,\n (match, id: string, originalName: string, nameText: string) => {\n if (nameText !== originalName) {\n // fix logic here\n const splittedName = originalName.split(' ')\n const cutoffIndex = splittedName.findIndex((_, index) => {\n const nameSection = splittedName.slice(0, index + 1).join(' ')\n if (nameText.startsWith(nameSection)) {\n return false\n }\n return true\n })\n if (cutoffIndex === 0) return `@${nameText}`\n else {\n const nameSection = (\n cutoffIndex < 0 ? splittedName : splittedName.slice(0, cutoffIndex)\n ).join(' ')\n const restText = nameText.slice(nameSection.length).trim()\n console.log(cutoffIndex, nameSection, restText)\n return `<mention data-id=\"${id}\" data-name=\"${nameSection}\">${nameSection}</mention> ${restText} `\n }\n }\n return match\n },\n )\n}\n\nexport const youtubeVidIdGetter = (url: string) => {\n const regExp =\n /(?:youtube(?:-nocookie)?\\.com\\/(?:[^\\/]+\\/.+\\/|(?:v|e(?:mbed)?)\\/|.*[?&]v=)|youtu\\.be\\/)([^\"&?\\/\\s]+)/gi\n let res = ''\n url.replace(regExp, (...params) => {\n res = params[1] || ''\n return ''\n })\n return res || ''\n}\nexport const facebookVidIdGetter = (url: string) => {\n const regExp =\n /(?:https?:\\/\\/)?(?:www.|web.|m.)?facebook.com\\/(?:video.php|photo.php|watch)?\\/?\\?v=(\\d+)|\\S+\\/videos\\/((\\S+)\\/(\\d+)|(\\d+))\\/?/gim\n let res = ''\n url.replace(regExp, (...params) => {\n res = params.find((p) => p && /^\\d+$/.test(p))\n return ''\n })\n return res\n}\n\nexport const uploadAndGetSrc = (\n file: File | string,\n locale: string,\n isAdmin?: boolean,\n): Promise<string> =>\n typeof file === 'string'\n ? Promise.resolve(file)\n : (async () => {\n const imageFormData = new FormData()\n if (file.type.startsWith('image/gif')) {\n imageFormData.append('image', file)\n } else {\n const imageCompression = await import('browser-image-compression')\n const compressed = await imageCompression.default(file, {\n maxSizeMB: 0.4,\n maxWidthOrHeight: 1536,\n useWebWorker: true,\n })\n imageFormData.append('image', compressed)\n }\n const callApiFunction = isAdmin ? callApiWithAdminAuth : callApiWithAuth\n const imageRes = await callApiFunction(\n getApiPath(\n isAdmin\n ? ADMIN_PATHS.COMMENT.IMAGE_UPLOAD\n : PATHS.COMMENT.IMAGE_UPLOAD,\n {\n _locale: locale,\n },\n ),\n 'POST',\n {\n data: imageFormData,\n },\n )\n return imageRes?.data?.image || ''\n })()\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledCreatePostDescription = styled.div`\n input:focus,\n textarea:focus,\n [contenteditable='true'] {\n outline: none;\n }\n\n .textarea-control {\n position: relative;\n border: 1px solid ${(props: ThemeProps) => props.theme.colors.gray200};\n border-radius: 6px;\n &.--focus {\n border-color: ${(props: ThemeProps) => props.theme.colors.primaryBase};\n box-shadow: 0px 0px 2px 2px\n ${(props: ThemeProps) => props.theme.colors.blue200};\n }\n\n .textarea-wrapper {\n width: 100%;\n height: 200px;\n }\n\n .control-tool {\n position: absolute;\n bottom: 0;\n left: 0;\n display: flex;\n width: calc(100% - 2rem);\n height: 40px;\n align-items: center;\n justify-content: flex-end;\n border-top: 1px solid ${(props: ThemeProps) => props.theme.colors.gray200};\n margin: 0 1rem;\n\n .tool-button {\n display: flex;\n width: 2rem;\n height: 2rem;\n align-items: center;\n justify-content: center;\n background: transparent;\n cursor: pointer;\n }\n .image-icon {\n vertical-align: middle;\n }\n }\n }\n\n .link-preview-wrapper {\n position: relative;\n .icon-close {\n position: absolute;\n top: 5px;\n right: 5px;\n width: 24px;\n height: 24px;\n cursor: pointer;\n }\n }\n\n .image-gallery {\n margin-bottom: 1rem;\n\n .image-item {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 0;\n padding-top: 67%;\n margin-top: 1rem;\n border-radius: 6px;\n\n & > img {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .close-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n left: unset;\n width: 24px;\n height: 24px;\n cursor: pointer;\n }\n }\n }\n\n .description-label {\n margin-bottom: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.gray600};\n /* font-family: 'Open Sans', sans-serif; */\n font-size: 13px;\n font-weight: bold;\n }\n\n .count-string {\n margin-top: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.gray500};\n font-size: 11px;\n text-align: right;\n }\n\n .input-notification {\n display: flex;\n\n & > img {\n width: 16px;\n height: 16px;\n margin-top: 1.5px;\n margin-right: 8px;\n }\n }\n`\n\nexport const StyledEditorContainer = styled.div`\n height: 100%;\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: column;\n .ql-toolbar.ql-snow {\n top: 0;\n width: 100%;\n position: sticky;\n z-index: 3;\n border: none;\n border-bottom: 1px solid #ccc;\n background: white;\n .ql-formats {\n display: inline-flex;\n align-items: center;\n margin-right: 0.5rem;\n .link-tool-wrapper {\n .popover-menu__content {\n padding: 0.5rem;\n transform: translateX(calc(-50% - 1rem));\n max-width: calc(100vw - 4rem);\n ::before {\n right: calc(50% - 8px);\n }\n .link-tool-popover {\n input {\n padding-left: 1rem;\n }\n .link-input-url {\n margin-bottom: 0.5rem;\n }\n .link-input-text {\n margin-bottom: 0.5rem;\n }\n label {\n display: inline-block;\n margin-bottom: 0.2rem;\n }\n .link-input-button-wrapper {\n &[data-is-marrybaby='true'] {\n .link-input-button {\n border: solid 2px\n ${(props: ThemeProps) => props.theme.mbColors.pink};\n background-color: ${(props: ThemeProps) =>\n props.theme.mbColors.pink};\n &:hover:not(:disabled) {\n border: solid 2px\n ${(props: ThemeProps) => props.theme.mbColors.pink};\n background-color: ${(props: ThemeProps) =>\n props.theme.colors.white};\n color: ${(props: ThemeProps) => props.theme.mbColors.pink};\n }\n }\n }\n }\n .link-input-button {\n width: auto;\n height: auto;\n padding: 0.4rem 1rem;\n background-color: ${(props: ThemeProps) =>\n props.theme.colors.primaryBase};\n\n &:disabled {\n border-color: #bfbfbf;\n background-color: #bfbfbf;\n color: #fff;\n cursor: not-allowed;\n }\n &:hover:not(:disabled) {\n background-color: ${(props: ThemeProps) =>\n props.theme.colors.primaryHover};\n }\n }\n .error-text {\n padding: 0;\n margin-bottom: 0.5rem;\n font-weight: 600;\n color: ${(props: ThemeProps) => props.theme.colors.red700};\n }\n }\n }\n }\n }\n @media (max-width: 450px) {\n position: relative;\n .ql-formats {\n .link-tool-wrapper {\n position: unset;\n .popover-menu__content {\n left: 0;\n transform: unset;\n max-width: 100%;\n }\n }\n }\n }\n }\n .quill {\n flex: 1;\n overflow-y: hidden;\n .ql-container {\n display: inline-block;\n width: 100%;\n min-height: 100%;\n /* padding: 14px 16px; */\n border: none;\n border-radius: 6px;\n color: ${(props: ThemeProps) => props.theme.colors.gray800};\n font-size: 1rem;\n line-height: 1.5;\n resize: none;\n white-space: break-spaces;\n .ql-editor {\n word-break: break-word;\n overflow-wrap: break-word;\n /* -ms-overflow-style: none;\n scrollbar-width: none;\n &::-webkit-scrollbar {\n display: none;\n } */\n }\n mocka {\n padding: 2px 6px;\n border-radius: 1rem;\n &[data-url='true'] {\n /* background-color: #eeeeff; */\n font-style: italic;\n color: #1890ff;\n cursor: pointer;\n outline: none;\n text-decoration: underline;\n }\n &[data-error='true'] {\n background-color: #ffeeee;\n color: red;\n text-decoration: underline;\n font-style: bold;\n }\n }\n mention {\n padding: 2px 6px;\n border-radius: 1rem;\n background-color: #eeeeff;\n color: #1890ff;\n cursor: pointer;\n outline: none;\n text-decoration: none;\n }\n ol,\n ul {\n padding-left: 1rem;\n }\n }\n }\n .mention-search-container {\n position: absolute;\n background: white;\n border-radius: 6px;\n filter: drop-shadow(0px 10px 16px rgba(0, 0, 0, 0.04))\n drop-shadow(0px 2px 8px rgba(0, 0, 0, 0.04))\n drop-shadow(0px 0px 1px rgba(0, 0, 0, 0.04));\n overflow-y: scroll;\n z-index: 99;\n ::-webkit-scrollbar {\n -webkit-appearance: none;\n }\n ::-webkit-scrollbar:vertical {\n width: 14px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: 6px;\n background-color: #d9d9d9;\n @supports (background-clip: padding-box) {\n border: 3px solid rgba(0, 0, 0, 0);\n background-clip: padding-box;\n }\n @supports not (background-clip: padding-box) {\n border: 3px solid white;\n }\n }\n ::-webkit-scrollbar-track {\n background-color: #fff;\n border-radius: 0 6px 6px 0;\n border-left: 1px solid #f2f2f2;\n }\n .mention-search-item {\n cursor: pointer;\n padding: 12px 1rem;\n display: flex;\n align-items: center;\n &.item-selected {\n background-color: ${(props: ThemeProps) => props.theme.colors.gray100};\n }\n .search-avatar {\n width: 40px;\n height: 40px;\n font-size: 20px;\n margin-right: 20px;\n }\n }\n }\n`\n","/* eslint-disable @typescript-eslint/no-var-requires */\nimport React, {\n CSSProperties,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\n\n// import ReactQuill, { Quill } from 'react-quill'\nimport { Button } from 'components/atoms/button'\nimport { Input } from 'components/atoms/input'\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { TranslationsKey } from 'i18n/translations'\nimport { debounce } from 'lodash'\nimport { getCookie } from 'misc/cookieHelper'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { ADMIN_PATHS, PATHS } from '../../../api/paths'\nimport {\n callApi,\n callApiWithAdminAuth,\n callApiWithAuth,\n getApiPath,\n} from '../../../api/utils'\nimport IconLink from '../../../assets/svg/icon-link.svg'\nimport { BEARER_TOKEN_COOKIE } from '../../../interfaces/constants'\nimport {\n ALLOW_DOMAIN_URL,\n escapeRegExp,\n getMentionIdsFromString,\n getUrlsFromEditorString,\n highlightBadWords,\n LIMIT_MENTION,\n reformatUrl,\n removeEdittedBannedWord,\n removeFontFormat,\n wrapAnchorAroundUrls,\n fixMalformedMention,\n} from '../../../utils/post'\nimport { UserAvatar } from '../../atoms/userAvatar'\nimport { PopoverMenu } from '../../organisms/popoverMenu'\nimport { StyledEditorContainer } from './index.styled'\n\n// import 'react-quill/dist/quill.snow.css'\nlet ReactQuill = null\n\n;(async () => {\n if (typeof window === 'undefined') return\n const QuillRes = await import('react-quill')\n ReactQuill = QuillRes.default\n const Quill = QuillRes.Quill\n class PreserveWhiteSpace {\n constructor(private quill: any, private options: any) {\n quill.container.style.whiteSpace = 'pre-line'\n }\n }\n Quill.register('modules/preserveWhiteSpace', PreserveWhiteSpace)\n\n const Inline = Quill.import('blots/inline')\n\n class MockABlot extends Inline {\n static blotName = 'mocka1'\n static tagName = 'mocka'\n static create(options: any) {\n if (!options) return super.create(false)\n const node: any = super.create(options)\n MockABlot.setNodeConfigurations(node, options)\n return node\n }\n\n static formats(node: any) {\n if (\n node.innerText &&\n (node.getAttribute('data-href') ||\n node.getAttribute('data-url') ||\n node.getAttribute('data-error') ||\n node.getAttribute('data-bad-word'))\n ) {\n return {\n 'data-bad-word': node.getAttribute('data-bad-word'),\n 'data-error': node.getAttribute('data-error'),\n 'data-href': node.getAttribute('data-href'),\n 'data-url': node.getAttribute('data-url'),\n 'data-text': node.innerText || node.getAttribute('data-href'),\n }\n } else {\n return false\n }\n }\n\n /* To prevent the node from accidentally being built in different ways. */\n static setNodeConfigurations(node: any, value: any) {\n if (!value) return\n if (\n !value?.['data-text']\n ?.replace(/(\\ )+/g, ' ')\n ?.replace(/(\\u200c|‌)+/g, '')\n )\n return\n if (value['data-bad-word'])\n node.setAttribute('data-bad-word', value['data-bad-word'])\n if (value['data-href']) node.setAttribute('data-href', value['data-href'])\n if (value['data-error'])\n node.setAttribute('data-error', value['data-error'])\n // setTimeout(() => {\n // if (value['data-text'] !== node.innerText && !node.innerText)\n // node.innerHTML = value['data-text']\n // }, 200)\n if (value['data-url']) node.setAttribute('data-url', value['data-url'])\n // if (value['data-text']) node.innerText = value['data-text']\n // console.log(value, node.outerHTML, node)\n }\n }\n Quill.register(MockABlot)\n class MentionBlot extends Inline {\n static blotName = 'mention'\n static tagName = 'mention'\n static create(options: any) {\n if (!options) return super.create(false)\n const node: any = super.create(options)\n MentionBlot.setNodeConfigurations(node, options)\n return node\n }\n\n static formats(node: any) {\n if (node.getAttribute('data-name') && node.getAttribute('data-id')) {\n return {\n 'data-name': node.getAttribute('data-name'),\n 'data-id': node.getAttribute('data-id'),\n }\n } else {\n return false\n }\n }\n\n /* To prevent the node from accidentally being built in different ways. */\n static setNodeConfigurations(node: any, value: any) {\n if (!value) return\n if (\n !value['data-id'] ||\n !value?.['data-name']\n ?.replace(/(\\ )+/g, ' ')\n ?.replace(/(\\u200c|‌)+/g, '')\n )\n return\n if (value['data-id']) node.setAttribute('data-id', value['data-id'])\n if (value['data-name']) {\n // node.setAttribute('contenteditable', false)\n node.setAttribute('data-name', value['data-name'])\n }\n }\n }\n Quill.register(MentionBlot)\n})()\n\nfunction getCaretCharacterOffsetWithin(element: HTMLElement) {\n let caretOffset = -1\n if (typeof window.getSelection != 'undefined') {\n const sel = window.getSelection()\n if (sel?.rangeCount && sel?.rangeCount > 0) {\n const range = window.getSelection()?.getRangeAt(0)\n if (range) {\n const preCaretRange = range.cloneRange()\n // preCaretRange.setStart(element, 0)\n preCaretRange.selectNodeContents(element)\n preCaretRange.setEnd(range.endContainer, range.endOffset)\n\n caretOffset = calculateChildNodeOffset(\n preCaretRange.cloneContents().childNodes,\n caretOffset,\n )\n const parentMockAElement =\n range.endContainer.parentElement?.closest('mocka')\n const lastNodeValue =\n range.endContainer.nodeValue ||\n (range.endContainer as HTMLElement).outerHTML\n if (parentMockAElement && lastNodeValue?.length) {\n /// set selector to end of <mocka elemt, prevent select in the middle\n caretOffset =\n caretOffset -\n range.endOffset +\n (parentMockAElement.outerHTML.length -\n parentMockAElement?.outerHTML.lastIndexOf(lastNodeValue))\n }\n }\n }\n }\n return caretOffset\n}\n\nfunction calculateChildNodeOffset(\n childNodes: NodeListOf<ChildNode>,\n caretOffset: number,\n) {\n childNodes.forEach((node, index) => {\n const isLast = index + 1 === childNodes.length\n if (node.nodeType === Node.ELEMENT_NODE) {\n const outerHTML = (node as HTMLElement).outerHTML\n if (!isLast) {\n caretOffset += outerHTML.length\n return\n } else {\n caretOffset += outerHTML.indexOf('>') + 1\n caretOffset = calculateChildNodeOffset(node.childNodes, caretOffset)\n }\n } else if (node.nodeType === Node.TEXT_NODE) {\n caretOffset += (node.nodeValue || '')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''').length\n }\n })\n return caretOffset\n}\nfunction getSearchName(root: HTMLElement) {\n let res: {\n name: string\n rect: DOMRect\n replaceRange: Range\n } | null = null\n if (typeof window.getSelection != 'undefined') {\n const sel = window.getSelection()\n if (sel?.rangeCount && sel?.rangeCount > 0) {\n const range = window.getSelection()?.getRangeAt(0)\n if (range) {\n const preCaretRange = range.cloneRange()\n // preCaretRange.setStart(element, 0)\n preCaretRange.selectNodeContents(root)\n preCaretRange.setEnd(range.endContainer, range.endOffset)\n const endText = (preCaretRange.endContainer.nodeValue || '').substring(\n 0,\n range.endOffset,\n )\n\n // only allow @ at start of text or has space before it\n const lastAnchorSymbolIndex = endText.lastIndexOf('@')\n if (\n lastAnchorSymbolIndex + 1 < endText.length &&\n (lastAnchorSymbolIndex === 0 ||\n endText.slice(\n lastAnchorSymbolIndex - 1,\n lastAnchorSymbolIndex + 1,\n ) === ' @')\n ) {\n const name = endText.slice(lastAnchorSymbolIndex + 1)?.trim()\n if (name) {\n preCaretRange.setStart(range.endContainer, lastAnchorSymbolIndex)\n const replaceRange = preCaretRange.cloneRange()\n replaceRange.setStart(\n replaceRange.endContainer,\n lastAnchorSymbolIndex,\n )\n res = {\n name,\n rect: preCaretRange.getBoundingClientRect(),\n replaceRange,\n }\n }\n }\n }\n }\n }\n return res\n}\n\nconst inputModify = (\n value: string,\n opts?: {\n formatUrl?: boolean\n bannedWords?: string[]\n },\n) => {\n const { formatUrl, bannedWords = [] } = opts || {}\n const removedFormat = fixMalformedMention(removeFontFormat(value))\n if (!formatUrl)\n return {\n value: highlightBadWords(removedFormat, bannedWords),\n }\n let descriptionWithWrappedAnchor = removeEdittedBannedWord(\n wrapAnchorAroundUrls(removedFormat),\n )\n\n const urls = getUrlsFromEditorString(removedFormat)\n if (urls) {\n const invalidUrls: string[] = []\n let previewUrl = ''\n urls.forEach((url) => {\n if (!url) return\n try {\n const jsUrl = new URL(url)\n if (ALLOW_DOMAIN_URL.some((o) => jsUrl.origin.endsWith(o))) {\n // is valid\n } else {\n invalidUrls.push(url)\n // is not valid\n }\n } catch {\n invalidUrls.push(url)\n }\n })\n if (invalidUrls.length > 0) {\n descriptionWithWrappedAnchor = descriptionWithWrappedAnchor\n .replace(\n new RegExp(\n `data-url=\"true\">(${invalidUrls.map(escapeRegExp).join('|')})<`,\n 'gi',\n ),\n 'data-error=\"true\" data-url=\"true\">$1<',\n )\n .replace(\n new RegExp(\n `data-href=\"(${invalidUrls\n .map(escapeRegExp)\n .join('|')})\" data-url=\"true\">`,\n 'gi',\n ),\n 'data-href=\"$1\" data-error=\"true\" data-url=\"true\">',\n )\n }\n previewUrl = urls.filter((u) => invalidUrls.indexOf(u) === -1)?.[0]\n return {\n invalidUrls,\n previewUrl,\n value: highlightBadWords(descriptionWithWrappedAnchor, bannedWords),\n }\n }\n return {\n value: highlightBadWords(descriptionWithWrappedAnchor, bannedWords),\n }\n}\n\nexport type Props = {\n html?: string\n onChange?: (s: string) => void\n className?: string\n style?: CSSProperties\n onImagePickerClick?: () => void\n bannedWords?: string[]\n onInvalidUrlsChange?: (v: string[]) => void\n onPreviewUrlChange?: (\n v: {\n title: string\n url: string\n image: string\n description: string\n } | null,\n ) => void\n setEditorRef?: (editor: HTMLElement) => void\n isReplying?: boolean\n}\n\nexport const RichTextEditor = ({\n html,\n onChange,\n className,\n style,\n onImagePickerClick,\n bannedWords = [],\n onInvalidUrlsChange,\n onPreviewUrlChange,\n setEditorRef,\n isReplying,\n}: // onAddLink,\nProps) => {\n const bannedWordsRef = useRef<string[]>([])\n bannedWordsRef.current = bannedWords\n const [invalidUrls, setInvalidUrls] = useState<string[]>([])\n const [previewUrl, setPreviewUrl] = useState<{\n title?: string\n url?: string\n image?: string\n description?: string\n isFetching?: boolean\n } | null>(null)\n\n const {\n data: { locale },\n } = useContext(TogetherComponentGlobalContext)\n\n const bannedString = bannedWords?.join(',') || ''\n useEffect(() => {\n const currHTML = reactQuillRef.current?.getEditor()?.root.innerHTML\n debounceInputModify(currHTML)\n }, [bannedString])\n\n const fetchPreviewData = (url: string) => {\n if (!previewUrl || previewUrl.url !== url) {\n setPreviewUrl({\n url,\n isFetching: true,\n })\n callApi(\n getApiPath(PATHS.FETCH_PREVIEW, {\n _locale: locale,\n }),\n 'POST',\n {\n data: {\n link: url,\n },\n },\n )\n .then((res) => {\n setPreviewUrl({\n title: res?.data?.title,\n description: res?.data?.description,\n image: res?.data?.image || res?.data?.logo,\n url,\n })\n })\n .catch(() => {\n setPreviewUrl(null)\n })\n }\n }\n\n const fetchPreviewDataRef = useRef(fetchPreviewData)\n fetchPreviewDataRef.current = fetchPreviewData\n\n const debounceInputModify = useCallback(\n debounce((v: string) => {\n if (v) {\n const processedInput = inputModify(v, {\n bannedWords: bannedWordsRef.current,\n formatUrl: true,\n })\n const {\n invalidUrls: _invalidUrls,\n previewUrl: _previewUrl,\n value,\n } = processedInput\n if (_invalidUrls) {\n setInvalidUrls(_invalidUrls)\n }\n if (_previewUrl) {\n fetchPreviewDataRef.current(_previewUrl)\n } else setPreviewUrl(null)\n if (value !== v) {\n onChange?.(value)\n }\n }\n }, 500),\n [],\n )\n\n useEffect(() => {\n onInvalidUrlsChange && onInvalidUrlsChange(invalidUrls)\n }, [invalidUrls])\n useEffect(() => {\n if (onPreviewUrlChange) {\n if (previewUrl?.url)\n onPreviewUrlChange({\n title: previewUrl.title || '',\n url: previewUrl.url || '',\n image: previewUrl.image || '',\n description: previewUrl.description || '',\n })\n else onPreviewUrlChange(null)\n }\n }, [previewUrl])\n\n const imageHandlerRef = useRef(onImagePickerClick)\n imageHandlerRef.current = onImagePickerClick\n const toolbarIdRef = useRef(String(Math.floor(Math.random() * 100000000)))\n const cachedModules = useRef({\n toolbar: {\n handlers: {\n image: () => imageHandlerRef.current?.(),\n link: () => false,\n },\n container: '#toolbar-' + toolbarIdRef.current,\n },\n // toolbar: [\n // ['bold', 'italic', 'underline'],\n // [{ list: 'ordered' }, { list: 'bullet' }],\n // ],\n preserveWhiteSpace: true,\n })\n const contentEditableCaretPos = useRef<number>(-1)\n\n const reactQuillRef = useRef<any>(null)\n setEditorRef &&\n reactQuillRef.current?.getEditor()?.root &&\n setEditorRef(reactQuillRef.current?.getEditor()?.root)\n\n const handleSelectionChange = () => {\n if (reactQuillRef.current?.getEditor()?.root) {\n const newCaretPos = getCaretCharacterOffsetWithin(\n reactQuillRef.current?.getEditor()?.root,\n )\n const currHTML = reactQuillRef.current?.getEditor()?.root.innerHTML\n // in case of clicking on a div outside editor while focus, we get caret position too large\n if (newCaretPos >= 0 && newCaretPos < currHTML.length) {\n const mentionIds = getMentionIdsFromString(currHTML, true)\n if (mentionIds.length < LIMIT_MENTION - (isReplying ? 1 : 0)) {\n const searchData = getSearchName(\n reactQuillRef.current?.getEditor()?.root,\n )\n if (searchData) {\n searchUser(searchData.name, searchData.rect)\n replaceRangeRef.current = searchData.replaceRange\n } else {\n replaceRangeRef.current = null\n // to avoid race condition, we reuse this function to clear foundUsers\n searchUser('', null as any)\n }\n } else {\n replaceRangeRef.current = null\n // to avoid race condition, we reuse this function to clear foundUsers\n searchUser('', null as any)\n }\n // const insertIndex = newCaretPos + 1\n // const currHTML = reactQuillRef.current?.getEditor()?.root.innerHTML\n // console.log(\n // currHTML?.substring(0, insertIndex) || '',\n // '========',\n // currHTML?.substring(insertIndex) || '',\n // )\n contentEditableCaretPos.current = newCaretPos\n }\n } else {\n setFoundUsers([])\n }\n }\n const [foundUsers, setFoundUsers] = useState<Array<any>>([])\n const [searchUserPosition, setSearchUserPosition] = useState<CSSProperties>({\n top: 0,\n left: 0,\n })\n const searchUser = useCallback(\n debounce(\n async (name: string, rect: DOMRect | null, excludeIds?: string[]) => {\n if (!name || !DOMRect) {\n return setFoundUsers([])\n }\n const res = await ((getCookie(BEARER_TOKEN_COOKIE)?.length || 0) > 0\n ? callApiWithAuth(\n getApiPath(PATHS.SEARCH_USER, {\n _locale: locale,\n name: name,\n }),\n 'get',\n )\n : callApiWithAdminAuth(\n getApiPath(ADMIN_PATHS.SEARCH_USER, {\n _locale: locale,\n name: name,\n }),\n 'get',\n ))\n setSelectTagUserIndex(0)\n setFoundUsers(\n res?.data?.users?.filter(\n (u: any) => !excludeIds?.includes(String(u.id)),\n ),\n )\n const textNodeRect = rect\n const containerRect = containerRef.current?.getBoundingClientRect()\n if (textNodeRect && containerRect) {\n const idealWidth = 343\n const idealHeight = 256\n const styleConfig: CSSProperties = {\n top: textNodeRect.bottom - containerRect.top,\n width: `min(343px, 100%)`,\n maxHeight: idealHeight,\n }\n const tempRightWidth =\n containerRect.width - (textNodeRect.left - containerRect.left)\n if (tempRightWidth < idealWidth) {\n styleConfig.right = 0\n } else {\n styleConfig.left = textNodeRect.left - containerRect.left\n }\n setSearchUserPosition(styleConfig)\n }\n },\n 500,\n ),\n [],\n )\n const setSelectUser = (id: string, name: string) => {\n if (replaceRangeRef.current) {\n replaceRangeRef.current.deleteContents()\n const newMention = document.createElement('mention')\n newMention.setAttribute('data-id', id)\n newMention.setAttribute('data-name', name)\n // newMention.setAttribute('contenteditable', 'false')\n newMention.innerText = name\n\n const newPostText = document.createTextNode(' ')\n replaceRangeRef.current.insertNode(newPostText)\n replaceRangeRef.current.insertNode(newMention)\n const editorRoot = reactQuillRef.current?.getEditor()?.root\n editorRoot.focus()\n const range = window.getSelection()?.getRangeAt(0)\n range?.setStart(\n replaceRangeRef.current.endContainer,\n replaceRangeRef.current.endOffset,\n )\n range?.setEnd(\n replaceRangeRef.current.endContainer,\n replaceRangeRef.current.endOffset,\n )\n }\n setFoundUsers([])\n }\n const containerRef = useRef<HTMLDivElement>(null)\n const replaceRangeRef = useRef<Range | null>(null)\n const foundUsersListRef = useRef<HTMLDivElement>(null)\n const [selectTagUserIndex, setSelectTagUserIndex] = useState(0)\n useEffect(() => {\n // convenient behavior, scroll item into view when select using keyboard\n if (foundUsersListRef.current) {\n const parentElement = foundUsersListRef.current\n const childElement = parentElement.children.item(\n selectTagUserIndex,\n ) as HTMLElement\n if (childElement) {\n const containerRect = parentElement.getBoundingClientRect()\n const childRect = childElement.getBoundingClientRect()\n if (childElement.offsetTop < parentElement.scrollTop)\n parentElement.scrollTop = childElement.offsetTop\n else if (\n childElement.offsetTop + childRect.height >\n parentElement.scrollTop + containerRect.height\n ) {\n parentElement.scrollTop =\n childElement.offsetTop - containerRect.height + childRect.height\n }\n }\n }\n }, [selectTagUserIndex])\n\n useEffect(() => {\n const clickHandler = function (e: MouseEvent) {\n if (!containerRef.current?.contains(e.target as Node)) {\n // Clicked outside the box\n setFoundUsers([])\n }\n }\n window.addEventListener('click', clickHandler)\n return () => {\n window.removeEventListener('click', clickHandler)\n }\n }, [])\n return (\n <StyledEditorContainer\n ref={containerRef}\n className={className}\n style={style}\n onKeyDownCapture={(e) => {\n // convenient behavior, use arrow to select tag user and enter to choose\n if (foundUsers?.length) {\n let preventKey = false\n if (e.key === 'ArrowDown') {\n preventKey = true\n setSelectTagUserIndex((s) =>\n s + 1 >= foundUsers.length ? 0 : s + 1,\n )\n } else if (e.key === 'Escape') {\n preventKey = true\n setSelectTagUserIndex(0)\n setFoundUsers([])\n } else if (e.key === 'ArrowUp') {\n preventKey = true\n setSelectTagUserIndex((s) =>\n s - 1 < 0 ? foundUsers.length - 1 : s - 1,\n )\n } else if (e.key === 'Enter' || e.key === 'Tab') {\n const user = foundUsers[selectTagUserIndex]\n if (user) {\n preventKey = true\n setSelectUser(user.id, user.name)\n }\n }\n if (preventKey) {\n e.preventDefault()\n return false\n }\n }\n }}\n >\n <CustomToolbar\n id={toolbarIdRef.current}\n onAddLink={(text, href) => {\n const insertIndex = contentEditableCaretPos.current + 1\n const currHTML = reactQuillRef.current?.getEditor()?.root.innerHTML\n const newHTML =\n (currHTML?.substring(0, insertIndex) || '') +\n `<mocka data-href=\"${href}\" data-url=\"true\">${text}</mocka> ` +\n (currHTML?.substring(insertIndex) || '')\n\n onChange?.(newHTML)\n debounceInputModify(newHTML)\n }}\n />\n {ReactQuill && (\n <ReactQuill\n ref={reactQuillRef}\n theme=\"snow\"\n value={html}\n onChange={(t: string) => {\n onChange?.(t)\n debounceInputModify(t)\n handleSelectionChange()\n }}\n onChangeSelection={() => {\n handleSelectionChange()\n }}\n modules={cachedModules.current}\n formats={[\n 'mocka1',\n 'mention',\n 'id',\n 'key',\n 'bold',\n 'italic',\n 'underline',\n 'list',\n 'bullet',\n ]}\n />\n )}\n {!!foundUsers?.length && (\n <div\n ref={foundUsersListRef}\n className=\"mention-search-container\"\n style={searchUserPosition}\n >\n {foundUsers.map((foundUser, index) => (\n <div\n className={`mention-search-item ${\n selectTagUserIndex === index ? 'item-selected' : ''\n }`}\n key={foundUser.id}\n onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n setSelectUser(foundUser.id, foundUser.name)\n }}\n onMouseEnter={() => {\n setSelectTagUserIndex(index)\n }}\n >\n <UserAvatar\n className=\"search-avatar\"\n username={foundUser.name}\n avatar={foundUser.avatar}\n />\n <div>\n <Text size=\"p2\">{foundUser.name}</Text>\n <Text size=\"p4\" color=\"#595959\">\n @{foundUser.username}\n </Text>\n </div>\n </div>\n ))}\n </div>\n )}\n </StyledEditorContainer>\n )\n}\n\nconst CustomToolbar = ({\n onAddLink,\n id,\n}: {\n id?: string\n onAddLink?: (text: string, href: string) => void\n}) => {\n return (\n <div\n id={'toolbar-' + id}\n onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <span className=\"ql-formats\">\n <button className=\"ql-bold\" type=\"button\" />\n <button className=\"ql-italic\" type=\"button\" />\n <button className=\"ql-underline\" type=\"button\" />\n </span>\n <span className=\"ql-formats\">\n <button className=\"ql-list\" value=\"ordered\" type=\"button\" />\n <button className=\"ql-list\" value=\"bullet\" type=\"button\" />\n </span>\n <span className=\"ql-formats\">\n <button className=\"ql-image\" type=\"button\"></button>\n {onAddLink && (\n <PopoverMenu\n className=\"link-tool-wrapper\"\n toggleButtonContent={<img className=\"link-icon\" src={IconLink} />}\n buttonProps={{\n size: 'md',\n color: 'transparent',\n }}\n align=\"end\"\n >\n {({ setShow }) => (\n <LinkToolInputPopover onAddUrl={onAddLink} setShow={setShow} />\n )}\n </PopoverMenu>\n )}\n </span>\n </div>\n )\n}\n\n// export const RichTextEditor = memo(Editor, (prev, next) => {\n// return prev.html === next.html\n// })\n\ntype LinkToolProps = {\n onAddUrl: (text: string, url: string) => void\n setShow?: (b: boolean) => void\n}\nconst URL_WARN_MAP = [\n 'notification.limitUrlDomain',\n 'notification.urlWrongFormat',\n]\nconst LinkToolInputPopover = ({ onAddUrl, setShow }: LinkToolProps) => {\n const {\n data: {\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n const { t } = useTranslations()\n const [urlValue, setUrlValue] = useState('')\n const [textValue, setTextValue] = useState('')\n const [urlWarnType, setUrlWarnType] = useState(-1)\n const checkUrlValid = (v: string) => {\n const trimmedUrl = reformatUrl(v.trim())\n try {\n const jsUrl = new URL(trimmedUrl)\n if (!jsUrl.protocol.startsWith('http')) {\n setUrlWarnType(1)\n return false\n }\n if (\n !ALLOW_DOMAIN_URL.some(\n (o) =>\n jsUrl.origin.endsWith('/' + o) || jsUrl.origin.endsWith('.' + o),\n )\n ) {\n setUrlWarnType(0)\n return false\n }\n setUrlWarnType(-1)\n return true\n } catch {\n setUrlWarnType(1)\n return false\n }\n }\n const isValid = urlValue.trim() && textValue.trim() && urlWarnType < 0\n return (\n <div className=\"link-tool-popover\">\n <Input\n name=\"url\"\n value={urlValue}\n size=\"md\"\n label=\"URL\"\n placeholder={t('placeholder.enterUrlHere')}\n type=\"text\"\n className=\"link-input-url\"\n onChange={(v) => {\n setUrlValue(v)\n checkUrlValid(v)\n }}\n />\n {urlWarnType >= 0 && (\n <Text size=\"c2\" className=\"error-text\">\n {t(URL_WARN_MAP[urlWarnType] as TranslationsKey)}\n </Text>\n )}\n <Input\n name=\"text\"\n value={textValue}\n size=\"md\"\n label={t('createPost.urlText')}\n placeholder={t('placeholder.enterUrlTextHere')}\n type=\"text\"\n className=\"link-input-text\"\n onChange={(v) => setTextValue(v)}\n />\n <div\n data-is-marrybaby={isMarryBaby}\n className=\"link-input-button-wrapper\"\n >\n <Button\n theme={isMarryBaby ? 'marryBaby' : 'helloSites'}\n size=\"sm\"\n color=\"primary\"\n className=\"link-input-button\"\n onClick={() => {\n if (!isValid) return\n onAddUrl(textValue.trim(), reformatUrl(urlValue.trim()))\n setShow && setShow(false)\n }}\n isDisabled={!isValid}\n >\n {t('insert')}\n </Button>\n </div>\n </div>\n )\n}\n\nexport default RichTextEditor\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = __importStar(require(\"react\"));\nvar fast_deep_equal_1 = __importDefault(require(\"fast-deep-equal\"));\nvar PropTypes = __importStar(require(\"prop-types\"));\nfunction normalizeHtml(str) {\n return str && str.replace(/ |\\u202F|\\u00A0/g, ' ');\n}\nfunction replaceCaret(el) {\n // Place the caret at the end of the element\n var target = document.createTextNode('');\n el.appendChild(target);\n // do not move caret if element was not focused\n var isTargetFocused = document.activeElement === el;\n if (target !== null && target.nodeValue !== null && isTargetFocused) {\n var sel = window.getSelection();\n if (sel !== null) {\n var range = document.createRange();\n range.setStart(target, target.nodeValue.length);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n if (el instanceof HTMLElement)\n el.focus();\n }\n}\n/**\n * A simple component for an html element with editable contents.\n */\nvar ContentEditable = /** @class */ (function (_super) {\n __extends(ContentEditable, _super);\n function ContentEditable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastHtml = _this.props.html;\n _this.el = typeof _this.props.innerRef === 'function' ? { current: null } : React.createRef();\n _this.getEl = function () { return (_this.props.innerRef && typeof _this.props.innerRef !== 'function' ? _this.props.innerRef : _this.el).current; };\n _this.emitChange = function (originalEvt) {\n var el = _this.getEl();\n if (!el)\n return;\n var html = el.innerHTML;\n if (_this.props.onChange && html !== _this.lastHtml) {\n // Clone event with Object.assign to avoid\n // \"Cannot assign to read only property 'target' of object\"\n var evt = Object.assign({}, originalEvt, {\n target: {\n value: html\n }\n });\n _this.props.onChange(evt);\n }\n _this.lastHtml = html;\n };\n return _this;\n }\n ContentEditable.prototype.render = function () {\n var _this = this;\n var _a = this.props, tagName = _a.tagName, html = _a.html, innerRef = _a.innerRef, props = __rest(_a, [\"tagName\", \"html\", \"innerRef\"]);\n return React.createElement(tagName || 'div', __assign(__assign({}, props), { ref: typeof innerRef === 'function' ? function (current) {\n innerRef(current);\n _this.el.current = current;\n } : innerRef || this.el, onInput: this.emitChange, onBlur: this.props.onBlur || this.emitChange, onKeyUp: this.props.onKeyUp || this.emitChange, onKeyDown: this.props.onKeyDown || this.emitChange, contentEditable: !this.props.disabled, dangerouslySetInnerHTML: { __html: html } }), this.props.children);\n };\n ContentEditable.prototype.shouldComponentUpdate = function (nextProps) {\n var props = this.props;\n var el = this.getEl();\n // We need not rerender if the change of props simply reflects the user's edits.\n // Rerendering in this case would make the cursor/caret jump\n // Rerender if there is no element yet... (somehow?)\n if (!el)\n return true;\n // ...or if html really changed... (programmatically, not by user edit)\n if (normalizeHtml(nextProps.html) !== normalizeHtml(el.innerHTML)) {\n return true;\n }\n // Handle additional properties\n return props.disabled !== nextProps.disabled ||\n props.tagName !== nextProps.tagName ||\n props.className !== nextProps.className ||\n props.innerRef !== nextProps.innerRef ||\n props.placeholder !== nextProps.placeholder ||\n !fast_deep_equal_1.default(props.style, nextProps.style);\n };\n ContentEditable.prototype.componentDidUpdate = function () {\n var el = this.getEl();\n if (!el)\n return;\n // Perhaps React (whose VDOM gets outdated because we often prevent\n // rerendering) did not update the DOM. So we update it manually now.\n if (this.props.html !== el.innerHTML) {\n el.innerHTML = this.props.html;\n }\n this.lastHtml = this.props.html;\n replaceCaret(el);\n };\n ContentEditable.propTypes = {\n html: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n disabled: PropTypes.bool,\n tagName: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n ])\n };\n return ContentEditable;\n}(React.Component));\nexports.default = ContentEditable;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledCreatePostTitle = styled.div`\n input:focus,\n textarea:focus,\n [contenteditable='true'] {\n outline: none;\n }\n\n .title-input {\n overflow: hidden;\n width: 100%;\n padding: 12px 16px;\n border: solid 1px #d9d9d9;\n border-radius: 6px;\n font-size: 16px;\n line-height: 1.2;\n white-space: nowrap;\n :focus {\n border-color: ${(props: ThemeProps) => props.theme.colors.primaryBase};\n box-shadow: 0px 0px 2px 2px\n ${(props: ThemeProps) => props.theme.colors.blue200};\n }\n br {\n display: none;\n }\n * {\n display: inline;\n white-space: nowrap;\n }\n mocka {\n padding: 2px 6px;\n border-radius: 1rem;\n &[data-error='true'] {\n background-color: #ffeeee;\n color: red;\n text-decoration: underline;\n font-style: bold;\n }\n }\n ol,\n ul {\n padding-left: 1rem;\n }\n }\n\n label {\n display: block;\n margin-bottom: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.gray600};\n font-size: 13px;\n font-weight: bold;\n }\n\n .count-string {\n margin-top: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.gray500};\n font-size: 11px;\n text-align: right;\n }\n`\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledTopicSelectList = styled.div`\n display: flex;\n width: 100%;\n flex-wrap: wrap;\n margin-top: 1rem;\n\n .tag-item {\n min-height: 32px;\n padding: 5px 12px;\n border: 1px solid ${(props: ThemeProps) => props.theme.colors.neutral100};\n margin-right: 1rem;\n margin-bottom: 8px;\n border-radius: 1rem;\n color: ${(props: ThemeProps) => props.theme.colors.gray800};\n cursor: pointer;\n font-size: 13px;\n line-height: 22px;\n transition: all 0.2s;\n\n &.--active {\n border-color: ${(props: ThemeProps) => props.theme.colors.blue50};\n background: ${(props: ThemeProps) => props.theme.colors.blue50};\n color: ${(props: ThemeProps) => props.theme.colors.primaryBase};\n }\n &[data-disabled='true'] {\n background: ${(props: ThemeProps) => props.theme.colors.gray100};\n color: ${(props: ThemeProps) => props.theme.colors.gray800};\n }\n }\n .topic-spinner {\n margin-right: auto;\n margin-left: auto;\n & > button {\n width: 24px;\n height: 24px;\n }\n }\n &[data-is-marrybaby='true'] {\n .tag-item {\n border-color: transparent;\n background: #f3f3f3;\n color: #3e3f58;\n &.--active {\n border-color: #b6cdff;\n background: #e0e9fb;\n color: #3e3f58;\n }\n }\n }\n`\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledCreateNewPost = styled.div`\n position: relative;\n display: flex;\n height: 100%;\n flex-direction: column;\n padding: 16px 32px;\n\n .input-group-container {\n flex: 1;\n padding-right: 2px;\n padding-left: 2px;\n margin-bottom: 0.5rem;\n -ms-overflow-style: none; /* IE and Edge */\n overflow-y: auto;\n scrollbar-width: none; /* Firefox */\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n .input-group {\n :not(:last-child) {\n margin-bottom: 0.6rem;\n }\n\n input:focus,\n textarea:focus,\n [contenteditable='true'] {\n outline: none;\n }\n\n label {\n margin-bottom: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.gray600};\n /* font-family: 'Open Sans', sans-serif; */\n font-size: 13px;\n font-weight: bold;\n }\n\n .input-group-label {\n margin-bottom: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.gray600};\n /* font-family: 'Open Sans', sans-serif; */\n font-size: 13px;\n font-weight: bold;\n }\n\n .input-notification {\n display: flex;\n\n & > img {\n width: 16px;\n height: 16px;\n margin-top: 1.5px;\n margin-right: 8px;\n }\n }\n\n .tag-list {\n }\n }\n\n .warning {\n margin-top: 16px;\n }\n\n .submit-btn {\n width: 100%;\n }\n`\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledPopupFrame = styled.div`\n [data-type='confirm'] {\n max-width: 468px;\n height: 486px;\n padding: 0;\n\n .popup-content {\n display: flex;\n flex-direction: column;\n padding: 0;\n\n .close-button {\n top: 16px;\n right: 16px;\n width: 24px;\n height: 24px;\n z-index: 5;\n }\n\n .header {\n display: flex;\n height: 56px;\n align-items: center;\n padding: 16px 56px 16px 32px;\n border-bottom: 1px solid\n ${(props: ThemeProps) => props.theme.colors.neutral100};\n font-weight: 900;\n }\n\n .content {\n overflow: auto;\n flex: 1;\n .topic-list-wrapper {\n padding: 1rem;\n }\n }\n }\n }\n\n &.create-post-popup-frame {\n & > [data-type='confirm'] {\n height: 80vh;\n min-height: 486px;\n transition: all 0.3s ease-in-out;\n ${MediaQueries.mbDown} {\n top: 0;\n left: 0;\n transform: unset;\n width: 100vw;\n max-width: 100vw;\n min-height: unset;\n height: 100%;\n }\n &[data-open='false'] {\n transform: translate(-50%, calc(-100vh - 150%));\n }\n }\n\n &.center {\n .header {\n justify-content: center;\n }\n }\n }\n\n > div&[data-open='true'] {\n z-index: 250;\n &:last-child {\n z-index: 200;\n }\n }\n`\n","import React, { CSSProperties, ReactNode } from 'react'\n\nimport { Heading } from 'components/atoms/heading'\nimport { Popup } from 'components/molecules/popup'\n\nimport IconClose from '../../../assets/svg/icon-close.svg'\nimport { StyledPopupFrame } from './index.styled'\n\nexport type Props = {\n className?: string\n style?: CSSProperties\n closeIcon?: JSX.Element\n heading?: ReactNode\n children?: ReactNode\n isOpen?: boolean\n onClose?: () => void\n}\n\nexport const PopupFrame = ({\n className,\n style,\n closeIcon,\n heading = '',\n children,\n isOpen = false,\n onClose = () => null,\n}: Props) => {\n return (\n <StyledPopupFrame className={className} style={style}>\n <Popup\n type=\"confirm\"\n onClose={onClose}\n isOpen={isOpen}\n closeIcon={closeIcon || <img src={IconClose} />}\n >\n <div className=\"header\">\n <Heading tag=\"h5\">{heading}</Heading>\n </div>\n <div className=\"content\">{children}</div>\n </Popup>\n </StyledPopupFrame>\n )\n}\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledPopupDanger = styled.div`\n [data-type='confirm'] {\n width: min(360px, 100%);\n height: auto;\n &[data-open='false'] {\n top: calc(-100% - 500px);\n }\n }\n\n .header {\n display: none !important;\n }\n\n .confirm-dialog {\n position: relative;\n overflow: auto;\n width: 100%;\n padding-top: 44px;\n background: #fff;\n border-radius: 6px;\n\n .confirm-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 0 16px 16px;\n text-align: center;\n\n .title {\n margin-bottom: 8px;\n font-size: 24px;\n line-height: 32px;\n word-break: break-word;\n overflow-wrap: break-word;\n }\n\n .desc {\n margin-bottom: 24px;\n color: ${(props: ThemeProps) => props.theme.colors.gray500};\n font-size: 18px;\n line-height: 24px;\n text-align: center;\n word-break: break-word;\n overflow-wrap: break-word;\n }\n\n .btn-group {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n\n button {\n margin: 0 4px 0.5rem;\n }\n }\n }\n }\n .thumbnail-container {\n width: 80px;\n height: 80px;\n margin-bottom: 32px;\n .thumbnail {\n width: 100%;\n height: 100%;\n }\n &.is-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n background: #e0e9fc;\n border-radius: 1rem;\n .thumbnail {\n width: 40px;\n height: 40px;\n }\n }\n }\n &[data-is-marrybaby='true'] {\n .popup-frame {\n > div:first-child {\n overflow: hidden;\n border-radius: 1rem;\n &[data-open='true'] {\n ${MediaQueries.mbDown} {\n top: 100%;\n transform: translate(-50%, -100%);\n max-width: unset;\n width: 100%;\n background: unset;\n overflow: unset;\n }\n }\n }\n .popup-content {\n .close-button {\n ${MediaQueries.mbDown} {\n display: none;\n }\n }\n .confirm-dialog {\n ${MediaQueries.mbDown} {\n background: unset;\n position: relative;\n overflow-x: hidden;\n &::before {\n content: '';\n width: 200%;\n background: #fff;\n position: absolute;\n left: 50%;\n top: 0;\n transform: translateX(-50%);\n z-index: -1;\n height: 100%;\n border-top-left-radius: 100%;\n border-top-right-radius: 100%;\n }\n }\n .confirm-content {\n padding: 0 40px 40px;\n ${MediaQueries.mbDown} {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n }\n .btn-group {\n width: 100%;\n justify-content: space-between;\n button {\n flex: 1;\n margin: 0;\n &:first-child {\n margin-right: 0.5rem;\n }\n }\n }\n }\n }\n }\n .thumbnail-container {\n ${MediaQueries.mbDown} {\n display: none;\n }\n &.is-icon {\n background: #ffeaf1;\n border-radius: 24px;\n }\n &.is-mobile {\n position: absolute;\n top: 0;\n left: 50%;\n display: none;\n width: 48px;\n height: 48px;\n transform: translate(-50%, -50%);\n &.is-icon {\n border-radius: 1rem;\n .thumbnail {\n width: 24px;\n height: 24px;\n }\n }\n ${MediaQueries.mbDown} {\n display: flex;\n }\n }\n }\n }\n }\n`\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledInputCommentBar = styled.div`\n padding: 1rem;\n border-top: 1px solid #f2f2f2;\n &[data-is-reply='true'] {\n padding-right: 0;\n padding-left: 0;\n border-top: 1px solid #e4e8ec;\n margin-right: 1rem;\n margin-left: 1rem;\n }\n .error-text {\n padding: 1rem;\n color: ${(props: ThemeProps) => props.theme.colors.red700};\n }\n .reply-to-container {\n display: flex;\n justify-content: space-between;\n padding-bottom: 0.75rem;\n margin-top: -0.25rem;\n .icon-close-comment {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n a {\n text-decoration: none;\n }\n }\n .input-container {\n display: flex;\n align-items: center;\n .avatar-wrapper {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n margin-right: 0.5rem;\n &.avatar-wrapper-reply {\n width: 32px;\n height: 32px;\n .avatar {\n width: 32px;\n height: 32px;\n }\n }\n }\n .input-wrapper {\n margin-right: 0.5rem;\n &[data-has-error] {\n .as-input {\n border-color: ${(props: ThemeProps) => props.theme.colors.red700};\n }\n }\n\n .as-input {\n .textarea {\n width: 100%;\n max-height: 225px;\n min-height: 75px;\n .ql-toolbar {\n padding: 0;\n }\n .ql-editor {\n padding-left: 0;\n padding-right: 0;\n }\n .quill {\n height: 0;\n }\n }\n width: 100%;\n padding: 12px 16px;\n border: solid 1px ${(props: ThemeProps) => props.theme.colors.gray200};\n border-radius: 6px;\n\n &:active,\n &:focus {\n border-color: ${(props: ThemeProps) =>\n props.theme.colors.primaryBase};\n box-shadow: 0px 0px 2px 2px\n ${(props: ThemeProps) => props.theme.colors.blue200};\n }\n\n &:disabled {\n background-color: ${(props: ThemeProps) =>\n props.theme.colors.gray100};\n cursor: not-allowed;\n }\n\n span {\n &[data-error='true'] {\n color: red;\n text-decoration: underline;\n }\n }\n }\n\n &[data-has-action-icon] {\n .as-input {\n padding: 12px 48px 12px 16px;\n }\n }\n &[data-has-display-icon] {\n .as-input {\n padding: 12px 16px 12px 48px;\n }\n }\n\n &[data-has-action-icon][data-has-display-icon] {\n .as-input {\n padding: 12px 48px;\n }\n }\n\n &[data-size='lg'] {\n .as-input {\n font-size: 16px;\n font-weight: ${(props: ThemeProps) => props.theme.sizes.fwRegular};\n ${MediaQueries.mbDown} {\n font-size: 22px;\n line-height: 1.2;\n }\n\n ${MediaQueries.mbUp} {\n font-size: 26px;\n line-height: 1.2;\n }\n }\n }\n &[data-size='md'] {\n .as-input {\n font-weight: ${(props: ThemeProps) => props.theme.sizes.fwRegular};\n line-height: 22px;\n ${MediaQueries.mbDown} {\n font-size: 14px;\n line-height: 1.2;\n }\n\n ${MediaQueries.mbUp} {\n font-size: 16px;\n line-height: 1.2;\n }\n }\n }\n &[data-size='sm'] {\n .as-input {\n font-weight: ${(props: ThemeProps) => props.theme.sizes.fwRegular};\n line-height: 20px;\n ${MediaQueries.mbDown} {\n font-size: 13px;\n line-height: 1.5;\n }\n\n ${MediaQueries.mbUp} {\n font-size: 13px;\n line-height: 1.5;\n }\n }\n }\n }\n .images-input-label {\n height: 100%;\n cursor: pointer;\n .icon-images-input {\n width: 24px;\n height: 24px;\n vertical-align: middle;\n }\n }\n .send-button {\n display: flex;\n width: 40px;\n height: 40px;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n &.send-button-post {\n background: ${(props: ThemeProps) => props.theme.colors.neutral100};\n border-radius: 50%;\n }\n .icon-enter {\n width: 20px;\n height: 20px;\n vertical-align: middle;\n }\n &[data-is-loading='true'] {\n > div {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n }\n }\n .preview-images-container {\n margin-top: 1rem;\n .image-src-wrapper {\n position: relative;\n width: 100%;\n padding-top: 66.67%;\n &:not(:last-child) {\n margin-bottom: 1rem;\n }\n .preview-image {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n .icon-close-circle {\n position: absolute;\n top: 10px;\n right: 10px;\n width: 20px;\n height: 20px;\n cursor: pointer;\n }\n }\n }\n`\n","import React, { createContext, ReactNode, useState } from 'react'\n\nexport type Context = {\n trigger?: boolean\n onTrigger?: () => void\n}\n\nexport const MainInputTriggerContext = createContext({} as Context)\n\nexport const MainInputTriggerContextProvider = ({\n children,\n}: {\n children?: ReactNode\n}) => {\n const [trigger, setTrigger] = useState(false)\n return (\n <MainInputTriggerContext.Provider\n value={{\n trigger,\n onTrigger: () => setTrigger((v) => !v),\n }}\n >\n {children}\n </MainInputTriggerContext.Provider>\n )\n}\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledShare = styled.div`\n padding: 1rem;\n .share__social {\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: center;\n\n & > a {\n margin: 0 7px;\n\n & > img {\n width: 32px;\n height: 32px;\n }\n .__label {\n display: none;\n }\n }\n }\n\n .share__copy-link {\n position: relative;\n padding: 1rem 0.5rem 0;\n\n margin-top: 16px;\n &::before {\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2rem);\n border-top: 1px solid\n ${(props: ThemeProps) => props.theme.colors.neutral100};\n margin-left: -1rem;\n content: '';\n }\n .__label {\n margin-bottom: 8px;\n font-size: 11px;\n font-weight: 400;\n line-height: 17px;\n text-align: left;\n }\n\n .__input-group {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 40px;\n border: 1px solid ${(props: ThemeProps) => props.theme.colors.gray200};\n background: #fff;\n border-radius: 6px;\n\n & > input {\n width: 100%;\n height: 100%;\n padding: 0 16px;\n border: none;\n background: transparent;\n color: ${(props: ThemeProps) => props.theme.colors.gray800};\n\n &:focus {\n outline: none;\n }\n }\n\n .__copy {\n position: absolute;\n top: 0;\n right: 0;\n width: 71px;\n height: 100%;\n padding-left: 12px;\n background: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 0.1) 0%,\n #fff 17%,\n #fff 100%\n );\n color: ${(props: ThemeProps) => props.theme.colors.primaryBase};\n cursor: pointer;\n font-size: 14px;\n font-weight: 400;\n }\n }\n }\n\n &[data-is-marrybaby='true'] {\n ${MediaQueries.mbDown} {\n padding: 0.5rem;\n }\n .share__social {\n justify-content: space-between;\n & > a {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n ${MediaQueries.mbDown} {\n margin: 0;\n }\n & > img {\n margin-bottom: 0.8rem;\n }\n .__label {\n display: initial;\n }\n }\n }\n .share__copy-link {\n padding: 0;\n &::before {\n display: none;\n }\n .__label {\n display: none;\n }\n .__input-group {\n height: unset;\n background-color: rgb(243, 243, 243);\n border-radius: 16px;\n & > input {\n padding: 1rem;\n }\n .__copy {\n background: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 0.1) 0%,\n #f3f3f3 17%,\n #f3f3f3 100%\n );\n }\n }\n }\n }\n`\n","import React, {\n CSSProperties,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\n\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { theme } from 'misc/theme'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport IconWhatsapp from '../../../assets/images/icon-whatsapp.png'\nimport IconZalo from '../../../assets/images/icon-zalo.png'\nimport MBIconCopy from '../../../assets/marrybaby/svg/copy.svg'\nimport MBIconFacebook from '../../../assets/marrybaby/svg/facebook.svg'\nimport MBIconLinkedIn from '../../../assets/marrybaby/svg/linkedin.svg'\nimport MBIconMessenger from '../../../assets/marrybaby/svg/messenger.svg'\nimport MBIconTwitter from '../../../assets/marrybaby/svg/twitter.svg'\nimport MBIconZalo from '../../../assets/marrybaby/svg/zalo.png'\nimport IconFacebook from '../../../assets/svg/icon-facebook.svg'\nimport IconLinkedIn from '../../../assets/svg/icon-linkedin.svg'\nimport IconTwitter from '../../../assets/svg/icon-twitter.svg'\nimport { StyledShare } from './index.styled'\n\nexport type Props = {\n className?: string\n shareUrl?: string\n title?: string\n style?: CSSProperties\n}\n\nconst getSocialList = (\n shareUrl: string,\n isMarryBaby?: boolean,\n): { icon: string; name: string; href: string }[] =>\n isMarryBaby\n ? [\n {\n icon: MBIconFacebook,\n name: 'Facebook',\n href: `https://www.facebook.com/sharer.php?u=${shareUrl}`,\n },\n {\n icon: MBIconZalo,\n name: 'Zalo',\n href: `https://sp.zalo.me/share?href=${shareUrl}`,\n },\n {\n icon: MBIconTwitter,\n name: 'Twitter',\n href: `https://twitter.com/intent/tweet?url=${shareUrl}`,\n },\n {\n icon: MBIconLinkedIn,\n name: 'LinkedIn',\n href: `https://www.linkedin.com/sharing/share-offsite/?url=${shareUrl}`,\n },\n {\n icon: MBIconMessenger,\n name: 'Messenger',\n href: `https://www.facebook.com/sharer.php?u=${shareUrl}`,\n },\n ]\n : [\n {\n icon: IconFacebook,\n name: 'Facebook',\n href: `https://www.facebook.com/sharer.php?u=${shareUrl}`,\n },\n {\n icon: IconZalo,\n name: 'Zalo',\n href: `https://sp.zalo.me/share?href=${shareUrl}`,\n },\n {\n icon: IconTwitter,\n name: 'Twitter',\n href: `https://twitter.com/intent/tweet?url=${shareUrl}`,\n },\n {\n icon: IconWhatsapp,\n name: 'WhatsApp',\n href: `https://wa.me/?text=${shareUrl}`,\n },\n {\n icon: IconLinkedIn,\n name: 'LinkedIn',\n href: `https://www.linkedin.com/sharing/share-offsite/?url=${shareUrl}`,\n },\n ]\n\nexport const ShareBox = ({ className, style, shareUrl, title }: Props) => {\n const {\n action: { pushNotifications },\n data: {\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n const { t } = useTranslations()\n const input = useRef<HTMLInputElement>(null)\n const [copied, setCopied] = useState(false)\n\n const copyToClipboard = () => {\n if (!input?.current) return\n const el = document.createElement('textarea')\n el.value = input.current.value\n document.body.appendChild(el)\n el.select()\n document.execCommand('copy')\n document.body.removeChild(el)\n input.current.focus()\n setCopied(true)\n pushNotifications({\n title: '',\n message: t('share.linkCopied'),\n type: 'success',\n })\n }\n\n useEffect(() => {\n copyToClipboard()\n if (navigator.share) {\n navigator\n .share({\n title: title || 'Read This Post',\n url: shareUrl,\n })\n .then((res) => {\n // setCopied(true)\n pushNotifications({\n title: '',\n message: t('share.linkShared'),\n type: 'success',\n })\n })\n .catch(console.error)\n }\n }, [])\n\n const socialList = getSocialList(shareUrl || '', isMarryBaby)\n\n return (\n <StyledShare\n data-is-marrybaby={isMarryBaby}\n className={className}\n style={style}\n >\n <div className=\"share__social\">\n {socialList.map((social, index) => (\n <a key={index} href={social.href} target=\"_blank\" rel=\"noreferrer\">\n <img src={social.icon} />\n <Text className=\"__label\" size=\"label2\" type=\"regular\">\n {social.name}\n </Text>\n </a>\n ))}\n </div>\n <div className=\"share__copy-link\">\n <Text\n className=\"__label\"\n color={theme.colors.gray500}\n size=\"p4\"\n type=\"regular\"\n >\n {t('orCopyLink')}\n </Text>\n <div className=\"__input-group\">\n <input\n ref={input}\n type=\"text\"\n value={shareUrl}\n readOnly\n onFocus={(e) => e.target.select()}\n />\n <button className=\"__copy\" onClick={() => copyToClipboard()}>\n {isMarryBaby ? (\n <img src={MBIconCopy} />\n ) : (\n t(copied ? 'copied' : 'copy')\n )}\n </button>\n </div>\n </div>\n </StyledShare>\n )\n}\n","var img = \"data:image/png;base64,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\";\n export default img;","var img = \"data:image/png;base64,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\";\n export default img;","var img = \"data:image/png;base64,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\";\n export default img;","import React, { CSSProperties, useContext, useEffect, useState } from 'react'\n\nimport { Heading } from 'components/atoms/heading'\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { ThemeProps } from 'misc/theme'\nimport { MediaQueries, toggleNoScroll } from 'misc/utils'\nimport * as ReactDOM from 'react-dom'\nimport styled from 'styled-components'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { PopupFrame } from '.'\nimport { ShareBox } from '../shareBox'\n\nexport type Props = {\n className?: string\n style?: CSSProperties\n url?: string\n avatar?: string\n text?: string\n onClose?: () => void\n}\n\nexport const SharePopup = ({\n className,\n style,\n url,\n avatar,\n text,\n onClose,\n}: Props) => {\n const {\n data: {\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n const { t } = useTranslations()\n const [isOpen, setIsOpen] = useState(false)\n\n useEffect(() => {\n toggleNoScroll(true)\n setTimeout(() => setIsOpen(true), 0)\n return () => toggleNoScroll(false)\n }, [])\n return ReactDOM.createPortal(\n <StyledSharePopup\n data-is-marrybaby={isMarryBaby}\n className={className}\n style={style}\n >\n <PopupFrame\n className=\"share-popup\"\n isOpen={isOpen}\n onClose={onClose}\n heading={t('bottomBar.share')}\n >\n {isMarryBaby ? (\n <Text className=\"share-mb-text\" size=\"sm\">\n {t('article.shareOn')}\n </Text>\n ) : (\n <div className=\"custom-share__header\">\n {avatar && (\n <div className=\"custom-share__header-image\">\n <img src={avatar} />\n </div>\n )}\n <div className=\"custom-share__header-info\">\n <Heading tag=\"h4\">{text}</Heading>\n <Text className=\"desc\" size=\"md\">\n {url}\n </Text>\n </div>\n </div>\n )}\n\n {isOpen && (\n <ShareBox\n shareUrl={\n url || (typeof window !== 'undefined' ? window.location.href : '')\n }\n title={text}\n />\n )}\n </PopupFrame>\n </StyledSharePopup>,\n document.body,\n )\n}\n\nexport const StyledSharePopup = styled.div`\n .share-popup {\n > div:first-child {\n height: unset;\n }\n .close-button {\n display: none;\n }\n .popup-content .header {\n display: none;\n }\n }\n .custom-share__header {\n display: flex;\n flex-wrap: no-wrap;\n align-items: center;\n padding: 1rem;\n border-bottom: 1px solid\n ${(props: ThemeProps) => props.theme.colors.neutral100};\n margin-bottom: 16px;\n\n .custom-share__header-image {\n width: 38px;\n height: 38px;\n flex-shrink: 0;\n & > img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n }\n }\n\n .custom-share__header-info {\n flex: 1;\n padding: 0 8px;\n word-break: break-word;\n\n [data-tag='h4'] {\n margin-bottom: 8px;\n font-size: 14px;\n font-weight: bold;\n line-height: 14px;\n }\n\n [data-size='md'] {\n color: #a5a5a5;\n font-size: 14px;\n line-height: 14px;\n }\n }\n }\n\n &[data-is-marrybaby='true'] {\n .share-popup {\n > div:first-child {\n overflow: hidden;\n border-radius: 1rem;\n &[data-open='true'] {\n ${MediaQueries.mbDown} {\n max-width: unset;\n width: 100%;\n top: 100%;\n transform: translate(-50%, -100%);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n }\n .close-button {\n display: block;\n }\n .popup-content {\n .header {\n display: block;\n padding: 1rem;\n background-color: rgb(243, 243, 243);\n }\n .content {\n padding-bottom: 1rem;\n }\n }\n .share-mb-text {\n margin: 1rem 1rem 0.5rem;\n }\n }\n }\n`\n","import styled from 'styled-components'\n\nexport const StyledSubmitReportForm = styled.div`\n padding: 0 8px;\n margin-top: 18px;\n\n .report-list {\n margin-bottom: 18px;\n\n .report-item {\n display: flex;\n align-items: center;\n margin-bottom: 10px;\n font-weight: 600;\n\n & > img {\n width: 12px;\n height: 12px;\n margin-right: 8px;\n }\n\n .__label {\n font-size: 14px;\n }\n }\n }\n\n .report-submit {\n width: 100%;\n }\n &[data-is-marrybaby='true'] {\n padding: 0 1rem 1rem;\n }\n`\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledPostContent = styled.div`\n padding: 0.5rem 1rem 1rem;\n line-height: 1.5;\n word-break: break-word;\n .post-content-replying {\n margin-right: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.primaryBase};\n cursor: pointer;\n display: inline-block;\n &.tag-only {\n margin-right: 0;\n }\n }\n .post-content {\n display: inline;\n white-space: pre-wrap;\n /* > *:first-child, */\n > mention:first-child ~ * {\n &:not(ul),\n &:not(ol) {\n display: inline-block;\n }\n }\n > mention:first-child {\n margin-right: 5px;\n }\n &.has-see-more {\n *:last-child {\n &:not(ul),\n &:not(ol) {\n display: inline;\n }\n }\n }\n img {\n width: 100%;\n height: unset;\n }\n ul,\n ol {\n list-style-position: inside;\n padding-left: 1rem;\n display: block;\n }\n ol {\n list-style-type: decimal;\n }\n ul {\n list-style-type: disc;\n }\n mention {\n color: #1890ff;\n padding-right: 4px;\n :hover {\n text-decoration: underline;\n }\n }\n }\n .see-more-text {\n color: #1890ff;\n cursor: pointer;\n }\n`\n","import styled from 'styled-components'\n\nexport const StyledPostImagePreview = styled.div`\n display: grid;\n cursor: pointer;\n grid-gap: 3px;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: auto;\n .img-wrapper {\n position: relative;\n overflow: hidden;\n width: 100%;\n padding-top: 56.25%;\n grid-column: auto;\n .img-preview-blur {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 110%;\n height: 110%;\n /* Add the blur effect */\n -webkit-filter: blur(8px);\n filter: blur(8px);\n object-fit: cover;\n object-position: center;\n opacity: 0.8;\n transform: translate(-50%, -50%);\n }\n .img-preview {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n object-position: center;\n }\n .img-more-overlay {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.5);\n }\n }\n &[data-image-count='1'] {\n .img-wrapper {\n /* padding-top: 100%; */\n grid-column: 1/3;\n }\n }\n &[data-image-count='2'] {\n .img-wrapper {\n /* padding-top: 100%; */\n }\n }\n &[data-image-count='3'] {\n .img-wrapper {\n &:first-child {\n grid-column: 1/3;\n }\n }\n }\n &[data-image-count='4'] {\n .img-wrapper {\n /* padding-top: 100%; */\n }\n }\n &[data-image-count='5'] {\n grid-template-columns: repeat(6, 1fr);\n .img-wrapper {\n /* padding-top: 100%; */\n grid-column: auto/ span 2;\n\n &:first-child {\n padding-top: 56.25%;\n grid-column: 1/4;\n }\n &:nth-child(2) {\n padding-top: 56.25%;\n grid-column: 4/7;\n }\n }\n }\n\n &[data-is-marrybaby='true'] {\n grid-gap: 8px;\n .img-wrapper {\n padding-top: 66.66%;\n border-radius: 1rem;\n .img-preview {\n object-fit: cover;\n }\n }\n &[data-image-count='3'] {\n grid-template-columns: 1fr 1fr 1fr;\n .img-wrapper {\n &:first-child {\n padding-top: 100%;\n grid-column: 1/3;\n grid-row: 1/3;\n }\n }\n }\n }\n`\nexport const StyledImagePreviewPopup = styled.div`\n position: fixed;\n z-index: 999;\n top: 0;\n left: 0;\n display: flex;\n overflow: hidden;\n width: 100vw;\n height: 100vh;\n flex-direction: column;\n background: white;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s linear;\n &[data-open='true'] {\n opacity: 1;\n pointer-events: auto;\n }\n .top-bar {\n position: relative;\n padding: 20px 40px;\n .icon-arrow-left {\n position: absolute;\n top: 50%;\n left: 20px;\n height: 24px;\n width: 24px;\n cursor: pointer;\n transform: translateY(-50%);\n }\n }\n .container {\n flex: 1;\n overflow-y: auto;\n .img-preview {\n width: 100%;\n min-width: 100%;\n margin-bottom: 0.5rem;\n cursor: pointer;\n max-height: 100%;\n object-fit: cover;\n }\n }\n`\n","import { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledImagePreviewContainer = styled.div`\n position: fixed;\n z-index: 999;\n top: 0;\n left: 0;\n display: flex;\n width: 100%;\n height: 100%;\n flex-direction: column;\n background: black;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s linear;\n &[data-open='true'] {\n opacity: 1;\n pointer-events: auto;\n }\n`\nexport const StyledImagePreviewTopbar = styled.div`\n padding: 1rem;\n background: white;\n .icon-close {\n width: 26px;\n height: 26px;\n cursor: pointer;\n }\n`\nexport const StyledImagePreviewWrapper = styled.div`\n position: relative;\n flex: 1;\n overflow: hidden;\n > img {\n height: 100%;\n width: 100%;\n object-fit: contain;\n object-position: center;\n }\n`\nexport const StyledArrowWrapper = styled.div`\n --inner-padding: max(16px, 20%);\n height: 100%;\n position: absolute;\n left: 0;\n padding: 8px;\n padding-right: var(--inner-padding);\n display: flex;\n align-items: center;\n top: 0;\n cursor: pointer;\n &[data-right] {\n padding-right: 8px;\n padding-left: var(--inner-padding);\n left: unset;\n right: 0;\n }\n &[data-disabled='true'] {\n cursor: not-allowed;\n }\n`\nexport const StyledCircleArrow = styled.div`\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.3);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n > img {\n width: 16px;\n height: 16px;\n &[data-disabled='true'] {\n opacity: 0.5;\n }\n }\n ${MediaQueries.tdUp} {\n padding: 8px;\n > img {\n width: 30px;\n height: 30px;\n }\n }\n`\n","const runningOnBrowser = typeof window !== \"undefined\";\n\nconst isBot =\n (runningOnBrowser && !(\"onscroll\" in window)) ||\n (typeof navigator !== \"undefined\" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent));\n\nconst supportsIntersectionObserver = runningOnBrowser && \"IntersectionObserver\" in window;\n\nconst supportsClassList = runningOnBrowser && \"classList\" in document.createElement(\"p\");\n\nconst isHiDpi = runningOnBrowser && window.devicePixelRatio > 1;\n\nconst defaultSettings = {\n elements_selector: \".lazy\",\n container: isBot || runningOnBrowser ? document : null,\n threshold: 300,\n thresholds: null,\n data_src: \"src\",\n data_srcset: \"srcset\",\n data_sizes: \"sizes\",\n data_bg: \"bg\",\n data_bg_hidpi: \"bg-hidpi\",\n data_bg_multi: \"bg-multi\",\n data_bg_multi_hidpi: \"bg-multi-hidpi\",\n data_poster: \"poster\",\n class_applied: \"applied\",\n class_loading: \"loading\",\n class_loaded: \"loaded\",\n class_error: \"error\",\n class_entered: \"entered\",\n class_exited: \"exited\",\n unobserve_completed: true,\n unobserve_entered: false,\n cancel_on_exit: true,\n callback_enter: null,\n callback_exit: null,\n callback_applied: null,\n callback_loading: null,\n callback_loaded: null,\n callback_error: null,\n callback_finish: null,\n callback_cancel: null,\n use_native: false\n};\n\nconst getExtendedSettings = (customSettings) => {\n return Object.assign({}, defaultSettings, customSettings);\n};\n\n/* Creates instance and notifies it through the window element */\nconst createInstance = function(classObj, options) {\n let event;\n const eventString = \"LazyLoad::Initialized\";\n const instance = new classObj(options);\n try {\n // Works in modern browsers\n event = new CustomEvent(eventString, { detail: { instance } });\n } catch (err) {\n // Works in Internet Explorer (all versions)\n event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventString, false, false, { instance });\n }\n window.dispatchEvent(event);\n};\n\n/* Auto initialization of one or more instances of lazyload, depending on the \n options passed in (plain object or an array) */\nconst autoInitialize = (classObj, options) => {\n if (!options) {\n return;\n }\n if (!options.length) {\n // Plain object\n createInstance(classObj, options);\n } else {\n // Array of objects\n for (let i = 0, optionsItem; (optionsItem = options[i]); i += 1) {\n createInstance(classObj, optionsItem);\n }\n }\n};\n\nconst SRC = \"src\";\nconst SRCSET = \"srcset\";\nconst SIZES = \"sizes\";\nconst POSTER = \"poster\";\nconst ORIGINALS = \"llOriginalAttrs\";\nconst DATA = \"data\";\n\nconst statusLoading = \"loading\";\nconst statusLoaded = \"loaded\";\nconst statusApplied = \"applied\";\nconst statusEntered = \"entered\";\nconst statusError = \"error\";\nconst statusNative = \"native\";\n\nconst dataPrefix = \"data-\";\nconst statusDataName = \"ll-status\";\n\nconst getData = (element, attribute) => {\n return element.getAttribute(dataPrefix + attribute);\n};\n\nconst setData = (element, attribute, value) => {\n var attrName = dataPrefix + attribute;\n if (value === null) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst getStatus = (element) => getData(element, statusDataName);\nconst setStatus = (element, status) => setData(element, statusDataName, status);\nconst resetStatus = (element) => setStatus(element, null);\n\nconst hasEmptyStatus = (element) => getStatus(element) === null;\nconst hasStatusLoading = (element) => getStatus(element) === statusLoading;\nconst hasStatusError = (element) => getStatus(element) === statusError;\nconst hasStatusNative = (element) => getStatus(element) === statusNative;\n\nconst statusesAfterLoading = [statusLoading, statusLoaded, statusApplied, statusError];\nconst hadStartedLoading = (element) => statusesAfterLoading.indexOf(getStatus(element)) >= 0;\n\nconst safeCallback = (callback, arg1, arg2, arg3) => {\n\tif (!callback) {\n\t\treturn;\n\t}\n\n\tif (arg3 !== undefined) {\n\t\tcallback(arg1, arg2, arg3);\n\t\treturn;\n\t}\n\tif (arg2 !== undefined) {\n\t\tcallback(arg1, arg2);\n\t\treturn;\n\t}\n\tcallback(arg1);\n};\n\nconst addClass = (element, className) => {\n\tif (supportsClassList) {\n\t\telement.classList.add(className);\n\t\treturn;\n\t}\n\telement.className += (element.className ? \" \" : \"\") + className;\n};\n\nconst removeClass = (element, className) => {\n\tif (supportsClassList) {\n\t\telement.classList.remove(className);\n\t\treturn;\n\t}\n\telement.className = element.className.\n\t\treplace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").\n\t\treplace(/^\\s+/, \"\").\n\t\treplace(/\\s+$/, \"\");\n};\n\nconst addTempImage = (element) => {\n element.llTempImage = document.createElement(\"IMG\");\n};\n\nconst deleteTempImage = (element) => {\n delete element.llTempImage;\n};\n\nconst getTempImage = (element) => element.llTempImage;\n\nconst unobserve = (element, instance) => {\n if (!instance) return;\n const observer = instance._observer;\n if (!observer) return;\n observer.unobserve(element);\n};\n\nconst resetObserver = (observer) => {\n observer.disconnect();\n};\n\nconst unobserveEntered = (element, settings, instance) => {\n if (settings.unobserve_entered) unobserve(element, instance);\n};\n\nconst updateLoadingCount = (instance, delta) => {\n if (!instance) return;\n instance.loadingCount += delta;\n};\n\nconst decreaseToLoadCount = (instance) => {\n if (!instance) return;\n instance.toLoadCount -= 1;\n};\n\nconst setToLoadCount = (instance, value) => {\n if (!instance) return;\n instance.toLoadCount = value;\n};\n\nconst isSomethingLoading = (instance) => instance.loadingCount > 0;\n\nconst haveElementsToLoad = (instance) => instance.toLoadCount > 0;\n\nconst getSourceTags = (parentTag) => {\n let sourceTags = [];\n for (let i = 0, childTag; (childTag = parentTag.children[i]); i += 1) {\n if (childTag.tagName === \"SOURCE\") {\n sourceTags.push(childTag);\n }\n }\n return sourceTags;\n};\n\nconst forEachPictureSource = (element, fn) => {\n const parent = element.parentNode;\n if (!parent || parent.tagName !== \"PICTURE\") {\n return;\n }\n let sourceTags = getSourceTags(parent);\n sourceTags.forEach(fn);\n};\n\nconst forEachVideoSource = (element, fn) => {\n let sourceTags = getSourceTags(element);\n sourceTags.forEach(fn);\n};\n\nconst attrsSrc = [SRC];\nconst attrsSrcPoster = [SRC, POSTER];\nconst attrsSrcSrcsetSizes = [SRC, SRCSET, SIZES];\nconst attrsData = [DATA];\n\nconst hasOriginalAttrs = (element) => !!element[ORIGINALS];\nconst getOriginalAttrs = (element) => element[ORIGINALS];\nconst deleteOriginalAttrs = (element) => delete element[ORIGINALS];\n\n// ## SAVE ##\n\nconst setOriginalsObject = (element, attributes) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n const originals = {};\n attributes.forEach((attribute) => {\n originals[attribute] = element.getAttribute(attribute);\n });\n element[ORIGINALS] = originals;\n};\n\nconst saveOriginalBackgroundStyle = (element) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n element[ORIGINALS] = { backgroundImage: element.style.backgroundImage };\n};\n\n// ## RESTORE ##\n\nconst setOrResetAttribute = (element, attrName, value) => {\n if (!value) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst restoreOriginalAttrs = (element, attributes) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n attributes.forEach((attribute) => {\n setOrResetAttribute(element, attribute, originals[attribute]);\n });\n};\n\nconst restoreOriginalBgImage = (element) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n element.style.backgroundImage = originals.backgroundImage;\n};\n\nconst manageApplied = (element, settings, instance) => {\n addClass(element, settings.class_applied);\n setStatus(element, statusApplied);\n // Instance is not provided when loading is called from static class\n if (!instance) return;\n if (settings.unobserve_completed) {\n // Unobserve now because we can't do it on load\n unobserve(element, settings);\n }\n safeCallback(settings.callback_applied, element, instance);\n};\n\nconst manageLoading = (element, settings, instance) => {\n addClass(element, settings.class_loading);\n setStatus(element, statusLoading);\n // Instance is not provided when loading is called from static class\n if (!instance) return;\n updateLoadingCount(instance, +1);\n safeCallback(settings.callback_loading, element, instance);\n};\n\nconst setAttributeIfValue = (element, attrName, value) => {\n if (!value) {\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst setImageAttributes = (element, settings) => {\n setAttributeIfValue(element, SIZES, getData(element, settings.data_sizes));\n setAttributeIfValue(element, SRCSET, getData(element, settings.data_srcset));\n setAttributeIfValue(element, SRC, getData(element, settings.data_src));\n};\n\nconst setSourcesImg = (imgEl, settings) => {\n forEachPictureSource(imgEl, (sourceTag) => {\n setOriginalsObject(sourceTag, attrsSrcSrcsetSizes);\n setImageAttributes(sourceTag, settings);\n });\n setOriginalsObject(imgEl, attrsSrcSrcsetSizes);\n setImageAttributes(imgEl, settings);\n};\n\nconst setSourcesIframe = (iframe, settings) => {\n setOriginalsObject(iframe, attrsSrc);\n setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src));\n};\n\nconst setSourcesVideo = (videoEl, settings) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n setOriginalsObject(sourceEl, attrsSrc);\n setAttributeIfValue(sourceEl, SRC, getData(sourceEl, settings.data_src));\n });\n setOriginalsObject(videoEl, attrsSrcPoster);\n\n setAttributeIfValue(videoEl, POSTER, getData(videoEl, settings.data_poster));\n setAttributeIfValue(videoEl, SRC, getData(videoEl, settings.data_src));\n videoEl.load();\n};\n\nconst setSourcesObject = (object, settings) => {\n setOriginalsObject(object, attrsData);\n setAttributeIfValue(object, DATA, getData(object, settings.data_src));\n};\n\nconst setBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg);\n const bgHiDpiValue = getData(element, settings.data_bg_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue) return;\n element.style.backgroundImage = `url(\"${bgDataValue}\")`;\n getTempImage(element).setAttribute(SRC, bgDataValue);\n manageLoading(element, settings, instance);\n};\n\n// NOTE: THE TEMP IMAGE TRICK CANNOT BE DONE WITH data-multi-bg\n// BECAUSE INSIDE ITS VALUES MUST BE WRAPPED WITH URL() AND ONE OF THEM\n// COULD BE A GRADIENT BACKGROUND IMAGE\nconst setMultiBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg_multi);\n const bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue) {\n return;\n }\n element.style.backgroundImage = bgDataValue;\n manageApplied(element, settings, instance);\n};\n\nconst setSourcesFunctions = {\n IMG: setSourcesImg,\n IFRAME: setSourcesIframe,\n VIDEO: setSourcesVideo,\n OBJECT: setSourcesObject\n};\n\nconst setSourcesNative = (element, settings) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n};\n\nconst setSources = (element, settings, instance) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n manageLoading(element, settings, instance);\n};\n\nconst elementsWithLoadEvent = [\"IMG\", \"IFRAME\", \"VIDEO\", \"OBJECT\"];\nconst hasLoadEvent = (element) => elementsWithLoadEvent.indexOf(element.tagName) > -1;\n\nconst checkFinish = (settings, instance) => {\n if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) {\n safeCallback(settings.callback_finish, instance);\n }\n};\n\nconst addEventListener = (element, eventName, handler) => {\n element.addEventListener(eventName, handler);\n element.llEvLisnrs[eventName] = handler;\n};\n\nconst removeEventListener = (element, eventName, handler) => {\n element.removeEventListener(eventName, handler);\n};\n\nconst hasEventListeners = (element) => {\n return !!element.llEvLisnrs;\n};\n\nconst addEventListeners = (element, loadHandler, errorHandler) => {\n if (!hasEventListeners(element)) element.llEvLisnrs = {};\n const loadEventName = element.tagName === \"VIDEO\" ? \"loadeddata\" : \"load\";\n addEventListener(element, loadEventName, loadHandler);\n addEventListener(element, \"error\", errorHandler);\n};\n\nconst removeEventListeners = (element) => {\n if (!hasEventListeners(element)) {\n return;\n }\n const eventListeners = element.llEvLisnrs;\n for (let eventName in eventListeners) {\n const handler = eventListeners[eventName];\n removeEventListener(element, eventName, handler);\n }\n delete element.llEvLisnrs;\n};\n\nconst doneHandler = (element, settings, instance) => {\n deleteTempImage(element);\n updateLoadingCount(instance, -1);\n decreaseToLoadCount(instance);\n removeClass(element, settings.class_loading);\n if (settings.unobserve_completed) {\n unobserve(element, instance);\n }\n};\n\nconst loadHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_loaded);\n setStatus(element, statusLoaded);\n safeCallback(settings.callback_loaded, element, instance);\n if (!goingNative) checkFinish(settings, instance);\n};\n\nconst errorHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_error);\n setStatus(element, statusError);\n safeCallback(settings.callback_error, element, instance);\n if (!goingNative) checkFinish(settings, instance);\n};\n\nconst addOneShotEventListeners = (element, settings, instance) => {\n const elementToListenTo = getTempImage(element) || element;\n if (hasEventListeners(elementToListenTo)) {\n // This happens when loading is retried twice\n return;\n }\n const _loadHandler = (event) => {\n loadHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n const _errorHandler = (event) => {\n errorHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n addEventListeners(elementToListenTo, _loadHandler, _errorHandler);\n};\n\nconst loadBackground = (element, settings, instance) => {\n addTempImage(element);\n addOneShotEventListeners(element, settings, instance);\n saveOriginalBackgroundStyle(element);\n setBackground(element, settings, instance);\n setMultiBackground(element, settings, instance);\n};\n\nconst loadRegular = (element, settings, instance) => {\n addOneShotEventListeners(element, settings, instance);\n setSources(element, settings, instance);\n};\n\nconst load = (element, settings, instance) => {\n if (hasLoadEvent(element)) {\n loadRegular(element, settings, instance);\n } else {\n loadBackground(element, settings, instance);\n }\n};\n\nconst loadNative = (element, settings, instance) => {\n element.setAttribute(\"loading\", \"lazy\");\n addOneShotEventListeners(element, settings, instance);\n setSourcesNative(element, settings);\n setStatus(element, statusNative);\n};\n\nconst removeImageAttributes = (element) => {\n element.removeAttribute(SRC);\n element.removeAttribute(SRCSET);\n element.removeAttribute(SIZES);\n};\n\nconst resetSourcesImg = (element) => {\n forEachPictureSource(element, (sourceTag) => {\n removeImageAttributes(sourceTag);\n });\n removeImageAttributes(element);\n};\n\nconst restoreImg = (imgEl) => {\n forEachPictureSource(imgEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes);\n });\n restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes);\n};\n\nconst restoreVideo = (videoEl) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrc);\n });\n restoreOriginalAttrs(videoEl, attrsSrcPoster);\n videoEl.load();\n};\n\nconst restoreIframe = (iframeEl) => {\n restoreOriginalAttrs(iframeEl, attrsSrc);\n};\n\nconst restoreObject = (objectEl) => {\n restoreOriginalAttrs(objectEl, attrsData);\n};\n\nconst restoreFunctions = {\n IMG: restoreImg,\n IFRAME: restoreIframe,\n VIDEO: restoreVideo,\n OBJECT: restoreObject\n};\n\nconst restoreAttributes = (element) => {\n const restoreFunction = restoreFunctions[element.tagName];\n if (!restoreFunction) {\n restoreOriginalBgImage(element);\n return;\n }\n restoreFunction(element);\n};\n\nconst resetClasses = (element, settings) => {\n if (hasEmptyStatus(element) || hasStatusNative(element)) {\n return;\n }\n removeClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n removeClass(element, settings.class_applied);\n removeClass(element, settings.class_loading);\n removeClass(element, settings.class_loaded);\n removeClass(element, settings.class_error);\n};\n\nconst restore = (element, settings) => {\n restoreAttributes(element);\n resetClasses(element, settings);\n resetStatus(element);\n deleteOriginalAttrs(element);\n};\n\nconst cancelLoading = (element, entry, settings, instance) => {\n if (!settings.cancel_on_exit) return;\n if (!hasStatusLoading(element)) return;\n if (element.tagName !== \"IMG\") return; //Works only on images\n removeEventListeners(element);\n resetSourcesImg(element);\n restoreImg(element);\n removeClass(element, settings.class_loading);\n updateLoadingCount(instance, -1);\n resetStatus(element);\n safeCallback(settings.callback_cancel, element, entry, instance);\n};\n\nconst onEnter = (element, entry, settings, instance) => {\n const dontLoad = hadStartedLoading(element); /* Save status \n before setting it, to prevent loading it again. Fixes #526. */\n setStatus(element, statusEntered);\n addClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n unobserveEntered(element, settings, instance);\n safeCallback(settings.callback_enter, element, entry, instance);\n if (dontLoad) return;\n load(element, settings, instance);\n};\n\nconst onExit = (element, entry, settings, instance) => {\n if (hasEmptyStatus(element)) return; //Ignore the first pass, at landing\n addClass(element, settings.class_exited);\n cancelLoading(element, entry, settings, instance);\n safeCallback(settings.callback_exit, element, entry, instance);\n};\n\nconst tagsWithNativeLazy = [\"IMG\", \"IFRAME\", \"VIDEO\"];\n\nconst shouldUseNative = (settings) =>\n settings.use_native && \"loading\" in HTMLImageElement.prototype;\n\nconst loadAllNative = (elements, settings, instance) => {\n elements.forEach((element) => {\n if (tagsWithNativeLazy.indexOf(element.tagName) === -1) {\n return;\n }\n loadNative(element, settings, instance);\n });\n setToLoadCount(instance, 0);\n};\n\nconst isIntersecting = (entry) => entry.isIntersecting || entry.intersectionRatio > 0;\n\nconst getObserverSettings = (settings) => ({\n root: settings.container === document ? null : settings.container,\n rootMargin: settings.thresholds || settings.threshold + \"px\"\n});\n\nconst intersectionHandler = (entries, settings, instance) => {\n entries.forEach((entry) =>\n isIntersecting(entry)\n ? onEnter(entry.target, entry, settings, instance)\n : onExit(entry.target, entry, settings, instance)\n );\n};\n\nconst observeElements = (observer, elements) => {\n elements.forEach((element) => {\n observer.observe(element);\n });\n};\n\nconst updateObserver = (observer, elementsToObserve) => {\n resetObserver(observer);\n observeElements(observer, elementsToObserve);\n};\n\nconst setObserver = (settings, instance) => {\n if (!supportsIntersectionObserver || shouldUseNative(settings)) {\n return;\n }\n instance._observer = new IntersectionObserver((entries) => {\n intersectionHandler(entries, settings, instance);\n }, getObserverSettings(settings));\n};\n\nconst toArray = (nodeSet) => Array.prototype.slice.call(nodeSet);\n\nconst queryElements = (settings) =>\n settings.container.querySelectorAll(settings.elements_selector);\n\nconst excludeManagedElements = (elements) => toArray(elements).filter(hasEmptyStatus);\n\nconst hasError = (element) => hasStatusError(element);\nconst filterErrorElements = (elements) => toArray(elements).filter(hasError);\n\nconst getElementsToLoad = (elements, settings) =>\n excludeManagedElements(elements || queryElements(settings));\n\nconst retryLazyLoad = (settings, instance) => {\n const errorElements = filterErrorElements(queryElements(settings));\n errorElements.forEach(element => {\n removeClass(element, settings.class_error);\n resetStatus(element);\n });\n instance.update();\n};\n\nconst setOnlineCheck = (settings, instance) => {\n if (!runningOnBrowser) {\n return;\n }\n window.addEventListener(\"online\", () => {\n retryLazyLoad(settings, instance);\n });\n};\n\nconst LazyLoad = function (customSettings, elements) {\n const settings = getExtendedSettings(customSettings);\n this._settings = settings;\n this.loadingCount = 0;\n setObserver(settings, this);\n setOnlineCheck(settings, this);\n this.update(elements);\n};\n\nLazyLoad.prototype = {\n update: function (givenNodeset) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(givenNodeset, settings);\n setToLoadCount(this, elementsToLoad.length);\n\n if (isBot || !supportsIntersectionObserver) {\n this.loadAll(elementsToLoad);\n return;\n }\n if (shouldUseNative(settings)) {\n loadAllNative(elementsToLoad, settings, this);\n return;\n }\n\n updateObserver(this._observer, elementsToLoad);\n },\n\n destroy: function () {\n // Observer\n if (this._observer) {\n this._observer.disconnect();\n }\n // Clean custom attributes on elements\n queryElements(this._settings).forEach((element) => {\n deleteOriginalAttrs(element);\n });\n // Delete all internal props\n delete this._observer;\n delete this._settings;\n delete this.loadingCount;\n delete this.toLoadCount;\n },\n\n loadAll: function (elements) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(elements, settings);\n elementsToLoad.forEach((element) => {\n unobserve(element, this);\n load(element, settings, this);\n });\n },\n\n restoreAll: function() {\n const settings = this._settings;\n queryElements(settings).forEach((element) => {\n restore(element, settings);\n });\n }\n};\n\nLazyLoad.load = (element, customSettings) => {\n const settings = getExtendedSettings(customSettings);\n load(element, settings);\n};\n\nLazyLoad.resetStatus = (element) => {\n resetStatus(element);\n};\n\n// Automatic instances creation if required (useful for async script loading)\nif (runningOnBrowser) {\n autoInitialize(LazyLoad, window.lazyLoadOptions);\n}\n\nexport { LazyLoad as default };\n","import LazyLoad, { ILazyLoadInstance } from 'vanilla-lazyload'\n\nexport let lazyLoadInstance: ILazyLoadInstance | null = null\n// Only initialize it one time for the entire application\nif (typeof window !== 'undefined' && !lazyLoadInstance) {\n lazyLoadInstance = new LazyLoad()\n}\n","import styled from 'styled-components'\n\nexport const StyledSocialLinkPreview = styled.div`\n .link-info-container {\n padding: 0.5rem 1rem;\n background: #f4faff;\n }\n .link-image-wrapper {\n position: relative;\n overflow: hidden;\n width: 100%;\n padding-top: 56.25%;\n &.fetching {\n background: lightgray;\n }\n .loading-spinner {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n .link-image {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n }\n }\n a {\n text-decoration: none;\n }\n &[data-is-marrybaby='true'] {\n overflow: hidden;\n border-radius: 1rem;\n }\n`\n","import { MediaQueries } from 'misc/utils'\nimport { ThemeProps } from 'src/misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledCardPost = styled.div`\n position: relative;\n margin-bottom: 0;\n background: white;\n border-radius: 6px;\n\n .post-author {\n padding-top: 1rem;\n padding-right: 2rem;\n &.with-popover {\n padding-right: 2.6rem;\n }\n .author-avatar-wrapper {\n width: 40px;\n height: 40px;\n font-size: 20px;\n ${MediaQueries.mbDown} {\n width: 32px;\n height: 32px;\n font-size: 16px;\n }\n }\n }\n .image-preview-wrapper,\n .link-preview-wrapper {\n width: 100%;\n &[data-is-reply='true'] {\n padding-right: 1rem;\n padding-left: 1rem;\n }\n }\n .post-reaction {\n background: none;\n border-radius: 0 0 6px 6px;\n }\n &[data-is-reply='true'] {\n > .post-author .author-avatar-wrapper {\n width: 20px;\n height: 20px;\n font-size: 10px;\n }\n }\n &[data-is-reply='false'] {\n border: 1px solid #e4e8ec;\n }\n .expert-wrapper {\n width: 100%;\n }\n &[data-has-booking='true'] {\n display: grid;\n .post-author {\n background-color: ${(props: ThemeProps) => props.theme.colors.blue50};\n }\n .btn-wrapper {\n padding: 0 16px;\n .btn-booking {\n width: 100%;\n margin: 12px 0;\n }\n }\n }\n\n .comment-reply-wrapper {\n padding: 0 1rem;\n .more-cmt {\n .chevron-right {\n height: 1rem;\n width: 1rem;\n vertical-align: middle;\n }\n }\n }\n .top-divider {\n border-color: #e4e8ec;\n }\n .popover {\n position: absolute;\n top: 1.5rem;\n right: 1rem;\n .popover-menu__btn {\n display: flex;\n width: 1rem;\n height: 1rem;\n align-items: center;\n justify-content: center;\n padding: 0;\n background: transparent;\n\n &:hover {\n background-color: transparent;\n }\n\n .popover-menu__content {\n &.--position-bottom {\n &.--align-end {\n &::before {\n right: 12.5px;\n }\n }\n }\n }\n }\n }\n\n &[data-is-marrybaby='true'] {\n &[data-is-reply='false'] {\n border: none;\n }\n .image-preview-wrapper,\n .link-preview-wrapper {\n padding-right: 1rem;\n padding-left: 1rem;\n }\n .popover {\n .popover-menu__btn {\n width: 24px;\n height: 24px;\n }\n }\n\n margin-left: 56px;\n ${MediaQueries.mbDown} {\n margin-left: 40px;\n }\n > .post-author {\n margin-left: -56px;\n ${MediaQueries.mbDown} {\n margin-left: -40px;\n }\n .author-info {\n align-items: center;\n display: flex;\n align-items: center;\n .author-info-top {\n width: 100%;\n }\n .author-info-text-wrapper {\n justify-content: space-between;\n }\n }\n .author-avatar-wrapper {\n width: 40px;\n height: 40px;\n font-size: 20px;\n ${MediaQueries.mbDown} {\n width: 24px;\n height: 24px;\n font-size: 12px;\n }\n }\n }\n &[data-is-reply] {\n > .post-author {\n .author-avatar-wrapper {\n width: 40px;\n height: 40px;\n font-size: 20px;\n ${MediaQueries.mbDown} {\n width: 24px;\n height: 24px;\n font-size: 12px;\n }\n }\n }\n }\n\n .comment-reply-wrapper {\n padding-right: 0;\n padding-left: 0;\n }\n .post-reaction {\n &::after {\n position: absolute;\n bottom: 0;\n left: 50%;\n width: calc(100% - 2rem);\n height: 1px;\n background: #f3f3f3;\n content: ' ';\n transform: translateX(-50%);\n }\n }\n .post-content-wrapper {\n padding-top: 0;\n padding-bottom: 0;\n ${MediaQueries.mbDown} {\n padding-left: 0.5rem;\n }\n }\n\n ${MediaQueries.mbDown} {\n margin-bottom: 12px;\n }\n }\n`\n","import { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledCardPost = styled.div`\n position: relative;\n margin-bottom: 24px;\n background: white;\n border-radius: 6px;\n\n a {\n text-decoration: none;\n }\n\n ${MediaQueries.mbDown} {\n margin-bottom: 8px;\n }\n &.flat-top {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n .post-pin {\n padding: 0.5rem 1rem;\n border-radius: 6px 6px 0 0;\n }\n .post-author {\n padding-top: 1rem;\n &.comment {\n padding-right: 2.6rem;\n }\n .author-avatar-wrapper {\n width: 40px;\n height: 40px;\n font-size: 20px;\n ${MediaQueries.mbDown} {\n width: 32px;\n height: 32px;\n font-size: 16px;\n }\n }\n }\n .post-content-link-wrapper {\n color: inherit;\n cursor: pointer;\n .post-content-title {\n padding: 1rem 1rem 0;\n word-break: break-word;\n }\n }\n .social-preview-wrapper.has-image {\n margin-bottom: 5px;\n }\n .social-preview-wrapper,\n .image-preview-wrapper,\n .link-preview-wrapper {\n width: 100%;\n &[data-is-reply='true'] {\n padding-right: 1rem;\n padding-left: 1rem;\n }\n }\n .post-topics {\n padding: 0 1rem;\n margin-bottom: 1rem;\n }\n\n .post-reaction {\n background: none;\n border-radius: 0 0 6px 6px;\n &.hide-top-border {\n ::before {\n display: none;\n }\n }\n }\n .most-engaging-wrapper {\n padding: 1rem;\n cursor: pointer;\n .author-avatar-wrapper {\n width: 2rem;\n height: 2rem;\n font-size: 1rem;\n }\n .see-more-comments {\n width: 100%;\n padding: 12px 0 0;\n text-align: unset;\n }\n }\n &[data-most-engaging='true'] {\n border: none;\n ${MediaQueries.mbDown} {\n margin: 1rem;\n border: 1px solid #e4e8ec;\n }\n }\n .top-divider {\n border-color: #e4e8ec;\n }\n .popover {\n position: absolute;\n top: 1.2rem;\n right: 1rem;\n .popover-menu__btn {\n display: flex;\n width: 1.5rem;\n height: 1rem;\n align-items: center;\n justify-content: center;\n padding: 0;\n background: transparent;\n\n &:hover {\n background-color: transparent;\n }\n }\n .popover-menu__content {\n &.--position-bottom {\n &.--align-end {\n &::before {\n right: 12.5px;\n }\n }\n }\n }\n }\n\n &[data-is-marrybaby='true'] {\n border: 1px solid #f3f3f3;\n border-radius: 1rem;\n /* shadow */\n\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.08);\n .image-preview-wrapper,\n .link-preview-wrapper {\n padding-right: 1rem;\n padding-left: 1rem;\n }\n .popover {\n .popover-menu__btn {\n width: 24px;\n height: 24px;\n ${MediaQueries.mbDown} {\n width: 18px;\n height: 18px;\n }\n }\n .popover-menu__content {\n &.--position-bottom {\n &.--align-end {\n &::before {\n right: 1rem;\n }\n width: 350px;\n ${MediaQueries.mbDown} {\n max-width: calc(320px - 2rem);\n }\n }\n }\n }\n }\n .most-engaging-wrapper {\n position: relative;\n padding: 0;\n &::before {\n position: absolute;\n z-index: 5;\n top: 0;\n left: 50%;\n width: calc(100% - 2rem);\n height: 1px;\n background: #f3f3f3;\n content: ' ';\n transform: translateX(-50%);\n }\n }\n ${MediaQueries.mbDown} {\n margin-bottom: 12px;\n }\n }\n`\n"],"names":["pxBySize","xs","small","medium","large","xl","xxl","xxxl","Avatar","_a","_b","type","size","avatarImg","avatarUrl","firstLetter","backgroundColor","onClick","style","className","_c","isAmp","width","height","sizePx","undefined","_d","useState","isImageLoadingError","setIsImageLoadingError","useEffect","img","document","createElement","setAttribute","addEventListener","shouldRenderLetter","React","StyledAvatar","src","Button","color","theme","isDisabled","isBlock","title","icon","children","isLoading","loadingText","dataEventCategory","dataEventAction","dataEventLabel","dataProductChannel","dataProductSku","dataProductBrand","dataProductName","dataProductPrice","dataProductCategory","dataProductPosition","on","dataVarsTracking","rest","__rest","StyledButton","__assign","disabled","evt","buttonHasIcon","buttonTheme","buttonSize","buttonColor","buttonIsLoading","buttonIsBlock","display","justifyContent","alignItems","Fragment","fill","xmlns","viewBox","cx","cy","r","stroke","strokeWidth","StyledLoader","id","d","mask","Heading","as","tag","fontWeight","asTag","StyledHeading","headingFontWeight","headingTag","StyledDropdown","styled","div","templateObject_1","__makeTemplateObject","props","colors","gray200","gray100","blue200","StyledDropdownName","templateObject_2","primaryBase","StyledDropdownList","ul","templateObject_3","white","StyledDropdownOption","li","templateObject_4","StyledIcon","templateObject_5","StyledDropdownLabel","templateObject_6","StyledPopup","MediaQueries","mbDown","mbUp","StyledPopupWrapper","Popup","closeIcon","isOpen","onClose","_e","enableAnimation","concat","parse_1","str","options","TypeError","obj","dec","decode","index","length","eqIdx","indexOf","endIdx","lastIndexOf","key","slice","trim","val","charCodeAt","tryDecode","serialize_1","name","opt","enc","encode","fieldContentRegExp","test","value","maxAge","isNaN","isFinite","Math","floor","domain","path","expires","__toString","call","Date","isDate","valueOf","toUTCString","httpOnly","secure","priority","toLowerCase","sameSite","Object","prototype","toString","decodeURIComponent","encodeURIComponent","e","factory","this","charMap","JSON","parse","locales","replace","string","Error","locale","replacement","slug","normalize","split","reduce","result","ch","appendChar","remove","strict","lower","extend","customMap","assign","module","exports","PATHS","BASE_API_PATH","PROFILE","SEARCH_USER","FETCH_PREVIEW","FETCH_POST_OR_TOPIC","POST","LIST","DETAIL_BY_ID_OR_SLUG","CREATE","LIKE","DELETE","REPORT","UPDATE","FOLLOW","CREATE_ARTICLE_COMMENT","COMMENT","REPLY","UNLIKE","IMAGE_UPLOAD","COMMUNITY","JOIN","LEAVE","TOPIC","HEALTH_TOOLS","SUBOTS","SUGGESTED_POSTS","BOOKMARK","UPLOAD_IMAGE","CARE_PATHS","GET_DOCTOR_INFO","GET_HOSPITAL_INFO","DISCOVER_PATHS","ADMIN_PATHS","DefaultComponentGlobalContextData","env","isMarryBaby","togetherBasePath","router","basePath","asPath","TogetherComponentGlobalContext","createContext","data","action","pushNotifications","s","sanitizeFunction","GlobalData","HEALTH_TOOL_TYPE","DUE_DATE","BMI","BMR","OVULATION","IFRAME","PWG","THR","LOCALE_HEALTH_TOOLS","REPORT_REASON_MAP","report_scam","label","reportReasonText","report_sex","report_offensive","report_violence","report_prohibited","report_spam","report_falseNews","report_other","LOCALISED_SLUGS","ALL","HOSPITAL","SERVICE","DOCTOR","SEARCH","SPECIALTIES","CURRENT","adBlock","articleAdContainer","headerContainerHome","headerContainerPopup","headerContainerPopupSUbLevel","menuSearchInputPopup","menuSearchInputDisplayIcon","menuSearchPopup","description","LINKEDIN","FACEBOOK","INSTAGRAM","TWITTER","YOUTUBE","ZALO","moderator","text","fid","background","admin","expert","sponsor","ambassador","domainLocales","domainLocalesMarryBaby","process","NEXT_PUBLIC_DEPLOY_LOCALE","getWebsiteUrlApi","cleanFormatString","url","qIndex","getCurrentBaseUrl","window","location","origin","isStaging","NEXT_PUBLIC_DEPLOY_ENV","getCurrentHref","href","getApiPath","params","query","queryString","keys","map","join","togetherBaseApiUrl","formattedPath","formatString","_locale","website_url","String","includes","getCarePath","careBaseApiUrl","stringFormat","convertApiOptionsToRequestInit","opts","FormData","body","stringify","callApi","method","skipEncodeURI","fetch","encodeURI","then","json","res","sent","console","log","err_1","status","response","statusText","callApiWithAuth","reqCookie","__awaiter","parsedCookie","cookieParser","token","cookie","getCookie","headers","Authorization","callApiWithAdminAuth","updateQueryStringParameter","uri","re","RegExp","separator","match","getUrlToSignUp","currentLocation","startsWith","publicSSO","originalRedirectUrl","k","getUrlToSSOWithReturnUrl","slugifiedNameWithId","slugify","getCareDoctorUrl","getCareHospitalUrl","formatAuthor","author","displayName","display_name","avatar","thumbnailAvatar","avatar_thumbnail","profileUrl","profile_url","metaTag","meta_tag","formatArticleExpert","ID","specialty","permalink","formatArticle","article","postName","post_name","formatSponsor","isSponsored","is_sponsored","postTitle","post_title","postModified","post_modified","postDate","post_date","modifiedTime","modified_time","featureImage","image","featureImageMobile","image_medium","featureImageMobileXs","image_thumbnail","reviewer","reviewed_by","articleReviewed","reviewed","formatUserProfile","editor","fact_check","category","formatCategory","postContent","post_content","sections","categories","sources","excerpt","user","role","logo","link","formatReviewedCategory","termId","term_id","categoryName","cat_name","iconUrl","slugName","category_nicename","parent","childCates","child_cates","childCate","colorFeatureImage","color_feature_image","imageColor","image_color","textColor","text_color","catParent","cat_parent","reviewedBy","reviewedDate","reviewed_date","faqs","faq","formatFaqsCategory","content","formatHealthTool","healthTool","subtitle","formatCommunity","community","topicCount","topics_count","postCount","posts_count","memberCount","members_count","thumbnail","coverImage","cover_image","mobileCoverImage","mobile_cover_image","joined","isActive","is_active","Boolean","mappedCategoryId","mapped_category_id","discoverCategory","discover_category","categoryId","category_id","isHidden","is_hidden","formatTopic","topic","count_posts","count_members","communityId","communitySlug","communityName","order","formatPost","post","topics","_f","username","_g","user_name","email","_h","_j","_k","_l","_o","_m","_p","partnerId","_q","partner_id","_r","_s","doctorId","_t","doctor_id","_u","hospitalId","_v","hospital_id","_w","previewUrl","preview_title","preview_link","preview_image","preview_description","createdAt","created_at","scheduleDateTime","schedule_datetime","photos","images","commentsCount","comments_count","likesCount","likes_count","isPin","is_pin","pinDate","pin_date","liked","bookmarked","mentions","commented","introUrl","intro_url","bannerImage","banner_image","formatComment","countLikes","countReplies","replies_count","createdTime","created_time","replies","mentionedUser","mentioned","_x","_y","_z","_0","_1","_2","_3","_4","_5","_6","_7","comparison","assessmentData","tab","condition","risk","suggestion","chartData","chart_data","disclaimer","illustrator","suggestedArticlesLink","suggested_articles_link","categoryInfo","explainersPosts","explainers_posts","subCategories","sub_categories","healthTools","health_tools","tool","pagination","currentPage","current","lastPage","last","total","total_items","notification","time","postId","post_id","fromUser","from_user","toUserId","to_user_id","postSlug","post_slug","community_slug","spotligts","spotlight","small_banner","imageMedium","imageThumbnail","startDate","start_date","endDate","end_date","info","postUrl","post_url","postReviewed","post_reviewed","postPageviews","post_pageviews","postRank","post_rank","frequency","tool_id","topicFrequency","topicId","topic_id","topicName","topic_name","isPinned","toolLink","tool_link","count_likes","count_comments","post_type","community_id","community_name","chatBotId","subot_id","sitewide_banner","turn_off_profile","TogetherAuthConfigContext","StyledLoading","circle","keyframes","CardReactionType","Loading","t","useTranslations","StyledUserAvatar","secondaryBase","mbColors","pink","UserAvatar","isMarryBabyProp","isMarryBabyContext","useContext","tempAvatar","setTempAvatar","Image","onerror","alt","onError","toUpperCase","StyledCardLink","abbreviateNumber","newValue","suffixNum","shortValue","precision","parseFloat","pow","toPrecision","toFixed","StyledCardReactions","lightGray","StyledLeftIcon","StyledRightIcon","StyledText","Text","LabelSortingValue","StyledTagTopic","StyledLabelSortPin","neutral50","tdUp","LabelSortPin","rightLabel","StyledPopoverMenu","StyledTree","gray800","gray500","lightPink","PopoverMenu","toggleButtonContent","position","align","buttonProps","isShow","setIsShow","popoverContent","useRef","isShowRef","focus","clickHandler","contains","target","removeEventListener","v","ref","tabIndex","stopPropagation","setShow","TreePopoverMenu","popoverProps","Tree","setPath","currentData","useMemo","pathItems","forEach","pathItem","list","Number","subTree","getCurrentDataFromPath","isShowheader","p","gray600","jsxRenderer","Array","isArray","item","selected","handleItemClick","blue50","StyledProfileImage","StyledTitleContainer","span","neutral300","gray400","templateObject_7","StyledExperienceList","templateObject_8","PopupDoctor","isMobile","doctorInfo","setDoctorInfo","setIsLoading","_data","doctor","error","experiences","specialtiesList","specialties","formattedExperiences","experience","filter","idList","useId","CloseLight","AvatarDefault","ReviewerMedical","organization","rel","textDecoration","paddingBottom","i","year","renderExperienceText","paddingTop","StyledItem","ReviewerIconMap","edtior","medical","PopupExpert","expertId","expertInfo","setExpertInfo","user_id","discoverBaseApiUrl","getDiscoverApiPath","organisation_url","organisation","PopupHospital","hospitalInfo","setHospitalInfo","hospital_branch_id","branch","formatSpecialties","about","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","my","code","formatDistance","count","tokenValue","addSuffix","weekStartsOn","firstWeekContainsDate","StyledCardAuthor","blue800","green400","red400","yellow800","teal400","cobalt","StyledAvatarContainer","AuthorLabelTextMapping","guide","influencer","vi","ms","enUS","th","zhTW","hi","fromCodePoint","astralCodePoint","fromCharCode","getCodePoint","codePointAt","input","ALPHA_INDEX","CHAR_INDEX","CHAR_S_INDEX","XmlEntities","charAt","parseInt","substr","surrogate_pairs_1","encodeNonUTF","strLength","c","alpha","highSurrogateFrom","highSurrogateTo","encodeNonASCII","XmlEntities_1","HTML_ALPHA","HTML_CODES","alphaIndex","numIndex","a","Html4Entities","entity","chr","cc","Html4Entities_1","ENTITIES","DECODE_ONLY_ENTITIES","charIndex","chr2","addChar","charInfo","createIndexes","Html5Entities","Html5Entities_1","xml_entities_1","html4_entities_1","html5_entities_1","AllHtmlEntities","entities","Entities","innertext_1","html","chunk","trimmedChunk","EncodeUrlRegexMap","BadWordRegex","getAnchorHtml","trimStartIndex","trimStart","trimEndIndex","trimEnd","preSpaces","substring","trimmedText","postSpaces","getMentionIdsFromString","disableLimit","p1","push","from","Set","getUrlsFromEditorString","__spreadArray","p2","getUrlsFromString","cleanUrl","escapeRegExp","removeBannedWordWrapper","ALLOW_DOMAIN_URL","reformatUrl","highlightBadWords","bannedWords","filteredBanedWords","banned","m1","escape","innerText","outerHTML","StyledCreatePostDescription","StyledEditorContainer","primaryHover","red700","ReactQuill","getCaretCharacterOffsetWithin","element","caretOffset","getSelection","sel","rangeCount","range","getRangeAt","preCaretRange","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","calculateChildNodeOffset","cloneContents","childNodes","parentMockAElement","parentElement","closest","lastNodeValue","nodeValue","node","isLast","nodeType","Node","ELEMENT_NODE","TEXT_NODE","Promise","n","QuillRes","default","Quill","PreserveWhiteSpace","quill","container","whiteSpace","register","Inline","import","MockABlot","__extends","_super","create","setNodeConfigurations","formats","getAttribute","blotName","tagName","MentionBlot","inputModify","formatUrl","removedFormat","originalName","nameText","splittedName_1","cutoffIndex","findIndex","_","nameSection","restText","descriptionWithWrappedAnchor","w","innerHTML","child","firstChild","removeEdittedBannedWord","lowercase","addHttps","wrapAnchorAroundUrls","urls","invalidUrls_1","jsUrl_1","URL","some","o","endsWith","u","invalidUrls","CustomToolbar","onAddLink","preventDefault","LinkToolInputPopover","onAddUrl","URL_WARN_MAP","urlValue","setUrlValue","textValue","setTextValue","urlWarnType","setUrlWarnType","isValid","Input","placeholder","onChange","trimmedUrl","jsUrl_2","protocol","checkUrlValid","b","Symbol","for","f","g","h","l","m","q","x","y","z","$$typeof","A","NODE_ENV","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","typeOf","object","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isConcurrentMode","isAsyncMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","require$$0","require$$1","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","propertyIsEnumerable","toObject","objectAssign","test1","getOwnPropertyNames","test2","order2","test3","letter","err","shouldUseNative","source","symbols","to","arguments","has","Function","bind","printWarning","ReactPropTypesSecret","loggedTypeFailures","message","checkPropTypes","typeSpecs","values","componentName","getStack","typeSpecName","ex","stack","resetWarningCache","emptyFunctionThatReturnsNull","emptyFunction","emptyFunctionWithReset","extendStatics","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","number","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","propName","propFullName","PropTypeError","propValue","getPropType","elementType","ReactIs","instanceOf","expectedClass","expectedClassName","constructor","isNode","objectOf","propType","oneOf","expectedValues","validate","is","valuesString","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","isSymbol","PropTypes","shim","getShim","require$$2","commonjsGlobal","setPrototypeOf","__proto__","__","apply","__createBinding","k2","defineProperty","enumerable","get","__setModuleDefault","__importStar","mod","__esModule","__importDefault","fast_deep_equal_1","equal","flags","normalizeHtml","_default","ContentEditable","_this","lastHtml","el","innerRef","createRef","getEl","emitChange","originalEvt","render","onInput","onBlur","onKeyUp","onKeyDown","contentEditable","dangerouslySetInnerHTML","__html","shouldComponentUpdate","nextProps","componentDidUpdate","createTextNode","appendChild","isTargetFocused","activeElement","createRange","setStart","collapse","removeAllRanges","addRange","HTMLElement","replaceCaret","propTypes","Component","StyledCreatePostTitle","StyledTopicSelectList","neutral100","StyledCreateNewPost","StyledPopupFrame","PopupFrame","heading","IconClose","StyledPopupDanger","StyledInputCommentBar","sizes","fwRegular","MainInputTriggerContext","StyledShare","ShareBox","shareUrl","copied","setCopied","copyToClipboard","select","execCommand","removeChild","navigator","share","catch","socialList","getSocialList","social","readOnly","onFocus","StyledSharePopup","StyledSubmitReportForm","StyledPostContent","StyledPostImagePreview","StyledImagePreviewPopup","StyledImagePreviewContainer","StyledImagePreviewTopbar","StyledImagePreviewWrapper","StyledArrowWrapper","StyledCircleArrow","runningOnBrowser","isBot","userAgent","supportsIntersectionObserver","supportsClassList","isHiDpi","devicePixelRatio","defaultSettings","elements_selector","threshold","thresholds","data_src","data_srcset","data_sizes","data_bg","data_bg_hidpi","data_bg_multi","data_bg_multi_hidpi","data_poster","class_applied","class_loading","class_loaded","class_error","class_entered","class_exited","unobserve_completed","unobserve_entered","cancel_on_exit","callback_enter","callback_exit","callback_applied","callback_loading","callback_loaded","callback_error","callback_finish","callback_cancel","use_native","getExtendedSettings","customSettings","createInstance","classObj","event","eventString","instance","CustomEvent","detail","createEvent","initCustomEvent","dispatchEvent","SRC","ORIGINALS","getData","attribute","getStatus","setStatus","attrName","removeAttribute","setData","resetStatus","hasEmptyStatus","hasStatusNative","statusesAfterLoading","safeCallback","callback","arg1","arg2","arg3","addClass","classList","add","removeClass","getTempImage","llTempImage","unobserve","observer","_observer","updateLoadingCount","delta","loadingCount","setToLoadCount","toLoadCount","getSourceTags","parentTag","sourceTags","childTag","forEachPictureSource","fn","parentNode","forEachVideoSource","attrsSrc","attrsSrcPoster","attrsSrcSrcsetSizes","attrsData","hasOriginalAttrs","getOriginalAttrs","deleteOriginalAttrs","setOriginalsObject","attributes","originals","restoreOriginalAttrs","setOrResetAttribute","manageLoading","settings","setAttributeIfValue","setImageAttributes","setMultiBackground","bg1xValue","bgHiDpiValue","bgDataValue","backgroundImage","manageApplied","setSourcesFunctions","IMG","imgEl","sourceTag","iframe","VIDEO","videoEl","sourceEl","load","OBJECT","elementsWithLoadEvent","checkFinish","isSomethingLoading","haveElementsToLoad","eventName","handler","llEvLisnrs","hasEventListeners","removeEventListeners","eventListeners","doneHandler","deleteTempImage","decreaseToLoadCount","addOneShotEventListeners","elementToListenTo","loadHandler","errorHandler","loadEventName","addEventListeners","goingNative","loadBackground","addTempImage","saveOriginalBackgroundStyle","setBackground","loadRegular","setSourcesFunction","setSources","hasLoadEvent","loadNative","setSourcesNative","removeImageAttributes","restoreImg","restoreFunctions","iframeEl","objectEl","restoreAttributes","restoreFunction","restoreOriginalBgImage","restore","resetClasses","cancelLoading","hasStatusLoading","resetSourcesImg","onEnter","dontLoad","hadStartedLoading","unobserveEntered","tagsWithNativeLazy","HTMLImageElement","intersectionHandler","isIntersecting","intersectionRatio","onExit","setObserver","IntersectionObserver","root","rootMargin","getObserverSettings","toArray","nodeSet","queryElements","querySelectorAll","hasError","hasStatusError","getElementsToLoad","elements","excludeManagedElements","retryLazyLoad","update","LazyLoad","_settings","setOnlineCheck","givenNodeset","elementsToLoad","elementsToObserve","loadAllNative","disconnect","resetObserver","observe","observeElements","loadAll","destroy","restoreAll","optionsItem","autoInitialize","lazyLoadOptions","lazyLoadInstance","StyledSocialLinkPreview","StyledCardPost","miniIcon","hasQuickBooking","handleMakeAppointment","matchedRole","allRoles","find","looselyMatchRole","cleanedTimeDate","getTime","timeText","formatDistanceToNow","timeTextTitle","format","openPopupExpert","setOpenPopupExpert","currentUrl","onAuthorClick","toggleNoScroll","objectFit","lineHeight","loveCount","replyCount","replyPadding","isReplied","onCommentClick","onLikeClick","onCommentCountClick","onShareClick","hideCommentIcon","showingMostEngaging","isMarryBabyReply","reply","marginRight","leftLabel","choices","alignSelf","onImagePickerClick","onInvalidUrlsChange","onPreviewUrlChange","setEditorRef","isReplying","bannedWordsRef","setInvalidUrls","setPreviewUrl","bannedString","currHTML","reactQuillRef","getEditor","debounceInputModify","fetchPreviewData","isFetching","fetchPreviewDataRef","useCallback","debounce","processedInput","_invalidUrls","_previewUrl","imageHandlerRef","toolbarIdRef","random","cachedModules","toolbar","handlers","preserveWhiteSpace","contentEditableCaretPos","handleSelectionChange","newCaretPos","searchData","endText","lastAnchorSymbolIndex","name_1","replaceRange","rect","getBoundingClientRect","getSearchName","searchUser","replaceRangeRef","setFoundUsers","foundUsers","top","left","searchUserPosition","setSearchUserPosition","excludeIds","DOMRect","setSelectTagUserIndex","users","textNodeRect","containerRect","containerRef","styleConfig","bottom","maxHeight","right","setSelectUser","deleteContents","newMention","newPostText","insertNode","foundUsersListRef","selectTagUserIndex","childElement","childRect","offsetTop","scrollTop","onKeyDownCapture","preventKey","insertIndex","newHTML","onChangeSelection","modules","foundUser","onMouseEnter","setIsOpen","setTimeout","ReactDOM","createPortal","defaultParams","Provider","userInfo","togetherUserId","setTogetherUserId","urlData","backupUrl","messages","err_2","err_3","tempName_1","_p1","encodePostUrl","encodeMention","_i","file","isAdmin","resolve","imageFormData","append","require","maxSizeMB","maxWidthOrHeight","useWebWorker","compressed","imageRes","propsParams","isLoggedIn","isFirstInteract","communities_interacted","authActionWrapper","extraParams","deleteCookie","_joinCommunityIds","localStorage","setItem","getItem","_joinTopicIds","_location"],"mappings":"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CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,QAAS,CAAC,MAAO,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAU,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,WAAY,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,aAAc,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,OAAQ,CAAC,UAAW,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,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CAAC,OAAQ,CAAC,OAAQ,CAAC,KAAM,OAAQ,CAAC,OAAQ,CAAC,GAAI,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,OAAQ,CAAC,KAAM,OAAQ,CAAC,OAAQ,CAAC,GAAI,OAAQ,CAAC,UAAW,CAAC,KAAM,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,UAAW,CAAC,KAAM,OAAQ,CAAC,QAAS,CAAC,KAAM,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,QAAS,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,MAAO,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,MAAO,CAAC,QAAS,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,UAAW,CAAC,MAAO,CAAC,UAAW,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,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AAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,KAAM,CAAC,MAAO,CAAC,KAAM,CAAC,MAAO,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,iBAAkB,CAAC,OAAQ,CAAC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"}
|
|
1
|
+
{"version":3,"file":"index.styled-e08dcf9a.js","sources":["../src/components/atoms/avatar/index.tsx","../src/components/atoms/button/index.tsx","../src/components/atoms/heading/index.tsx","../src/components/molecules/dropdown/index.styled.tsx","../src/components/molecules/popup/index.styled.tsx","../src/components/molecules/popup/index.tsx","../node_modules/cookie/index.js","../node_modules/slugify/slugify.js","../src/together/api/paths.ts","../src/together/togetherComponentGlobalContext.tsx","../src/together/interfaces/constants.ts","../src/together/api/utils.ts","../src/together/api/dataTransform.ts","../src/together/hooks/useTogetherAuthRequiredAction.tsx","../src/together/components/atoms/loading/index.styled.tsx","../src/together/components/atoms/loading/index.tsx","../src/together/components/atoms/cardReactions/index.tsx","../src/together/components/atoms/userAvatar/index.styled.tsx","../src/together/components/atoms/userAvatar/index.tsx","../src/together/components/atoms/cardLink/index.styled.tsx","../src/misc/number.ts","../src/together/components/atoms/cardReactions/index.styled.tsx","../src/together/components/atoms/labelSortPin/labelSorting.tsx","../src/together/components/atoms/tagTopic/index.styled.tsx","../src/together/components/atoms/labelSortPin/index.styled.tsx","../src/together/components/atoms/labelSortPin/index.tsx","../src/together/components/organisms/popoverMenu/index.styled.tsx","../src/together/components/organisms/popoverMenu/index.tsx","../src/together/components/organisms/popoverMenu/treePopoverMenu.tsx","../src/together/assets/images/avatar-default.png","../src/together/components/molecules/popupDoctor/index.styled.tsx","../src/together/components/molecules/popupDoctor/index.tsx","../src/together/components/molecules/popupExpert/index.styled.tsx","../src/together/components/molecules/popupExpert/index.tsx","../src/together/components/molecules/popupHospital/index.styled.tsx","../src/together/components/molecules/popupHospital/index.tsx","../src/together/components/molecules/cardAuthor/customMMLocale/formatDistance.ts","../src/together/components/molecules/cardAuthor/customMMLocale/index.ts","../src/together/components/molecules/cardAuthor/index.styled.tsx","../src/together/components/molecules/cardAuthor/index.tsx","../node_modules/innertext/node_modules/html-entities/lib/surrogate-pairs.js","../node_modules/innertext/node_modules/html-entities/lib/xml-entities.js","../node_modules/innertext/node_modules/html-entities/lib/html4-entities.js","../node_modules/innertext/node_modules/html-entities/lib/html5-entities.js","../node_modules/innertext/node_modules/html-entities/lib/index.js","../node_modules/innertext/index.js","../src/together/utils/post.ts","../src/together/components/molecules/createPostDescription/index.styled.tsx","../src/together/components/molecules/createPostDescription/editor.tsx","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/react-contenteditable/lib/react-contenteditable.js","../node_modules/prop-types/index.js","../node_modules/fast-deep-equal/index.js","../src/together/components/molecules/createPostTitle/index.styled.tsx","../src/together/components/molecules/topicSelectList/index.styled.tsx","../src/together/components/molecules/createNewPostContent/index.styled.tsx","../src/together/components/molecules/popupFrame/index.styled.tsx","../src/together/components/molecules/popupFrame/index.tsx","../src/together/components/molecules/popupDanger/index.styled.tsx","../src/together/components/molecules/inputCommentBar/index.styled.tsx","../src/together/components/molecules/inputCommentBar/mainInputTriggerContext.tsx","../src/together/components/molecules/shareBox/index.styled.tsx","../src/together/components/molecules/shareBox/index.tsx","../src/together/assets/marrybaby/svg/zalo.png","../src/together/assets/images/icon-zalo.png","../src/together/assets/images/icon-whatsapp.png","../src/together/components/molecules/popupFrame/popupShare.tsx","../src/together/components/molecules/submitReportForm/index.styled.tsx","../src/together/components/molecules/postContent/index.styled.tsx","../src/together/components/molecules/postImagePreview/index.styled.tsx","../src/together/components/molecules/postImagePreview/postSingleImageViewPopup/index.styled.tsx","../node_modules/vanilla-lazyload/dist/lazyload.esm.js","../src/misc/lazyLoad.ts","../src/together/components/molecules/socialLinkPreview/index.styled.tsx","../src/together/components/organisms/cardReply/index.styled.tsx","../src/together/components/organisms/cardPost/index.styled.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\n\nimport { CSSProperties } from 'styled-components'\n\nimport { StyledAvatar } from './index.styled'\n\nexport type AvatarSize =\n | 'xs'\n | 'small'\n | 'medium'\n | 'large'\n | 'xl'\n | 'xxl'\n | 'xxxl'\n\nconst pxBySize: { [size in AvatarSize]: number } = {\n xs: 28,\n small: 32,\n medium: 40,\n large: 48,\n xl: 64,\n xxl: 80,\n xxxl: 96,\n}\n\nexport type Props = {\n size?: AvatarSize\n avatarImg?: JSX.Element\n avatarUrl?: string\n firstLetter?: string\n backgroundColor?: string\n onClick?: () => void\n className?: string\n type?: 'rounded' | 'square'\n style?: CSSProperties\n isAmp?: boolean\n width?: number\n height?: number\n}\n\nconst Avatar = ({\n type = 'square',\n size,\n avatarImg,\n avatarUrl,\n firstLetter,\n backgroundColor,\n onClick,\n style,\n className,\n isAmp = false,\n width,\n height,\n}: Props) => {\n const sizePx = size ? pxBySize[size] : undefined\n const [isImageLoadingError, setIsImageLoadingError] = useState(false)\n\n useEffect(() => {\n if (avatarUrl) {\n const img = document.createElement('img')\n img.setAttribute('src', avatarUrl)\n img.addEventListener('error', () => {\n setIsImageLoadingError(true)\n })\n }\n }, [avatarUrl, setIsImageLoadingError])\n\n const shouldRenderLetter =\n ((!avatarUrl && !avatarImg) || isImageLoadingError) && firstLetter\n\n return (\n <StyledAvatar\n style={style}\n data-avatar-type={type}\n onClick={onClick}\n className={className}\n size={!isAmp ? sizePx : undefined}\n backgroundColor={backgroundColor}\n avatarUrl={avatarUrl}\n data-is-amp={isAmp}\n width={width}\n height={height}\n >\n {avatarImg}\n {avatarUrl && !isImageLoadingError && <img src={avatarUrl} />}\n {shouldRenderLetter && firstLetter}\n </StyledAvatar>\n )\n}\n\nexport { Avatar }\n","import React, { HTMLAttributes, ReactNode } from 'react'\n\nimport { StyledButton, StyledLoader } from './index.styled'\n\nexport type Props = Omit<HTMLAttributes<HTMLButtonElement>, 'onClick'> & {\n size: 'lg' | 'md' | 'sm'\n children?: ReactNode\n color?: 'primary' | 'secondary' | 'transparent' | 'tertiary' | 'ghost'\n theme?: 'helloSites' | 'marryBaby'\n isDisabled?: boolean\n isBlock?: boolean\n title?: string\n className?: string\n icon?: JSX.Element\n isLoading?: boolean\n loadingText?: string\n onClick?: (evt?: any) => void\n dataEventCategory?: string\n dataEventAction?: string\n dataEventLabel?: string\n dataProductChannel?: string\n dataProductSku?: string\n dataProductBrand?: string\n dataProductName?: string\n dataProductPrice?: string\n dataProductCategory?: string\n dataProductPosition?: string\n isAmp?: boolean\n dataVarsTracking?: boolean\n on?: string\n type?: 'submit' | 'reset' | 'button'\n}\n\nconst Button = ({\n size,\n color = 'primary',\n theme = 'helloSites',\n isDisabled,\n isBlock,\n title,\n className,\n onClick,\n icon,\n children,\n isLoading,\n loadingText,\n dataEventCategory,\n dataEventAction,\n dataEventLabel,\n dataProductChannel,\n dataProductSku,\n dataProductBrand,\n dataProductName,\n dataProductPrice,\n dataProductCategory,\n dataProductPosition,\n isAmp,\n on,\n dataVarsTracking,\n type,\n ...rest\n}: Props) => {\n const getGtmProps = () => {\n if (isAmp) {\n return {\n 'data-vars-event-category': dataEventCategory,\n 'data-vars-event-action': dataEventAction,\n 'data-vars-event-label': dataEventLabel,\n 'data-vars-product-channel': dataProductChannel,\n 'data-vars-product-sku': dataProductSku,\n 'data-vars-product-brand': dataProductBrand,\n 'data-vars-product-name': dataProductName,\n 'data-vars-product-price': dataProductPrice,\n 'data-vars-product-category': dataProductCategory,\n 'data-vars-product-position': dataProductPosition,\n 'data-vars-tracking': dataVarsTracking,\n on: on,\n }\n } else {\n return {\n 'data-event-category': dataEventCategory,\n 'data-event-action': dataEventAction,\n 'data-event-label': dataEventLabel,\n 'data-product-channel': dataProductChannel,\n 'data-product-sku': dataProductSku,\n 'data-product-brand': dataProductBrand,\n 'data-product-name': dataProductName,\n 'data-product-price': dataProductPrice,\n 'data-product-category': dataProductCategory,\n 'data-product-position': dataProductPosition,\n }\n }\n }\n\n return (\n <StyledButton\n {...getGtmProps()}\n className={className}\n data-size={size}\n data-color={color}\n data-block={isBlock}\n data-has-icon={!!icon || undefined}\n data-theme={theme}\n disabled={isDisabled}\n onClick={(evt) => {\n !isLoading && !isDisabled && onClick && onClick(evt)\n }}\n title={title}\n data-is-loading={isLoading || undefined}\n buttonHasIcon={!!icon}\n buttonTheme={theme}\n buttonSize={size}\n buttonColor={color}\n buttonIsLoading={isLoading}\n buttonIsBlock={isBlock}\n type={type}\n {...rest}\n >\n {isLoading ? (\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 24,\n }}\n >\n {(color === 'secondary' ||\n color === 'transparent' ||\n color === 'tertiary' ||\n color === 'ghost') && (\n <>\n <svg\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"#DBDFE5\"\n strokeWidth=\"4\"\n />\n </svg>\n\n <StyledLoader\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n <mask id=\"a\" fill=\"#fff\">\n <path d=\"M12 0A12 12 0 11.19 9.88l3.9.7A8.03 8.03 0 1012 3.98V0z\" />\n </mask>\n <path\n d=\"M12 0A12 12 0 11.19 9.88l3.9.7A8.03 8.03 0 1012 3.98V0z\"\n stroke=\"#2D87F3\"\n strokeWidth=\"8\"\n mask=\"url(#a)\"\n />\n </StyledLoader>\n </>\n )}\n\n {color === 'primary' && (\n <>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"white\" strokeWidth=\"4\" />\n </svg>\n <StyledLoader\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <mask id=\"path-1-inside-1\" fill=\"white\">\n <path d=\"M12 0C14.464 2.93833e-08 16.8683 0.758527 18.8863 2.17253C20.9042 3.58653 22.438 5.58746 23.2791 7.90347C24.1203 10.2195 24.2281 12.7383 23.5879 15.1177C22.9477 17.4971 21.5906 19.6218 19.7009 21.2031C17.8111 22.7843 15.4804 23.7456 13.0254 23.9561C10.5704 24.1667 8.11007 23.6164 5.97869 22.38C3.8473 21.1436 2.14819 19.281 1.1122 17.0454C0.0761991 14.8097 -0.246461 12.3093 0.188053 9.8839L4.09856 10.5845C3.8079 12.2069 4.02374 13.8795 4.71676 15.375C5.40977 16.8705 6.54637 18.1165 7.97213 18.9435C9.39789 19.7706 11.0437 20.1387 12.6859 19.9979C14.3282 19.857 15.8873 19.214 17.1514 18.1563C18.4155 17.0985 19.3233 15.6772 19.7516 14.0856C20.1798 12.4939 20.1077 10.8089 19.545 9.25969C18.9823 7.71042 17.9563 6.37193 16.6065 5.42605C15.2566 4.48017 13.6483 3.97277 12 3.97277L12 0Z\" />\n </mask>\n <path\n d=\"M12 0C14.464 2.93833e-08 16.8683 0.758527 18.8863 2.17253C20.9042 3.58653 22.438 5.58746 23.2791 7.90347C24.1203 10.2195 24.2281 12.7383 23.5879 15.1177C22.9477 17.4971 21.5906 19.6218 19.7009 21.2031C17.8111 22.7843 15.4804 23.7456 13.0254 23.9561C10.5704 24.1667 8.11007 23.6164 5.97869 22.38C3.8473 21.1436 2.14819 19.281 1.1122 17.0454C0.0761991 14.8097 -0.246461 12.3093 0.188053 9.8839L4.09856 10.5845C3.8079 12.2069 4.02374 13.8795 4.71676 15.375C5.40977 16.8705 6.54637 18.1165 7.97213 18.9435C9.39789 19.7706 11.0437 20.1387 12.6859 19.9979C14.3282 19.857 15.8873 19.214 17.1514 18.1563C18.4155 17.0985 19.3233 15.6772 19.7516 14.0856C20.1798 12.4939 20.1077 10.8089 19.545 9.25969C18.9823 7.71042 17.9563 6.37193 16.6065 5.42605C15.2566 4.48017 13.6483 3.97277 12 3.97277L12 0Z\"\n stroke=\"#91CAFF\"\n strokeWidth=\"8\"\n mask=\"url(#path-1-inside-1)\"\n />\n </StyledLoader>\n </>\n )}\n\n <span>{loadingText}</span>\n </div>\n ) : (\n <span>\n {!isLoading && <span className=\"button-icon\">{icon}</span>} {children}\n </span>\n )}\n </StyledButton>\n )\n}\n\nexport { Button }\n","import React, { ReactNode } from 'react'\n\nimport { CSSProperties } from 'styled-components'\n\nimport { StyledHeading } from './index.styled'\n\nexport type Props = {\n tag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n children: ReactNode\n title?: string\n color?: string\n className?: string\n style?: CSSProperties\n fontWeight?: 'bold' | 'semibold'\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n dataEventCategory?: string\n dataEventAction?: string\n dataEventLabel?: string\n}\n\nconst Heading = ({\n as,\n tag,\n className,\n children,\n title,\n color,\n style,\n fontWeight,\n dataEventCategory,\n dataEventAction,\n dataEventLabel,\n}: Props) => {\n const asTag = as || tag\n return (\n <StyledHeading\n title={title}\n style={{\n ...(color\n ? { ['--custom-heading-color' as string]: color }\n : undefined),\n ...style,\n }}\n data-tag={tag}\n data-font-weight={fontWeight || undefined}\n data-event-category={dataEventCategory}\n data-event-action={dataEventAction}\n data-event-label={dataEventLabel}\n as={asTag}\n className={className}\n headingFontWeight={fontWeight}\n headingTag={tag}\n >\n {children}\n </StyledHeading>\n )\n}\n\nexport { Heading }\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledDropdown = styled.div`\n --dropdown-padding: 12px 18px 12px 16px;\n position: relative;\n box-sizing: border-box;\n border: 1px solid ${(props: ThemeProps) => props.theme.colors.gray200};\n background: url(\"data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%23595959' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A\")\n no-repeat;\n background-position: right 16px center;\n border-radius: 6px;\n\n &[data-disabled='true'],\n :disabled {\n background-color: #f2f2f2;\n cursor: not-allowed;\n }\n\n &[data-size='sm'] {\n font-size: 13px;\n line-height: 20px;\n }\n &[data-size='md'] {\n font-size: 14px;\n line-height: 21px;\n }\n &[data-size='lg'] {\n font-size: 16px;\n line-height: 24px;\n }\n\n &[data-has-icons='true'] {\n border: none;\n background: ${(props: ThemeProps) => props.theme.colors.gray100};\n\n img,\n svg {\n display: inline-block;\n max-width: 16px;\n margin-right: 6px;\n }\n\n span {\n display: inline-block;\n vertical-align: middle;\n }\n\n &:hover {\n box-shadow: none;\n }\n > div {\n position: relative;\n display: flex;\n width: 100%;\n box-sizing: border-box;\n align-items: center;\n }\n > div::after {\n position: absolute;\n top: 50%;\n right: 12px;\n width: 10px;\n height: 8px;\n background-image: url(\"data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%23595959' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A\");\n background-repeat: no-repeat;\n content: '';\n transform: translateY(-50%);\n }\n }\n\n &:hover {\n box-shadow: 0 0 2px 2px ${(props: ThemeProps) => props.theme.colors.blue200};\n }\n\n &[data-is-native='true'] {\n padding: var(--dropdown-padding);\n line-height: 24px;\n\n &:focus {\n box-shadow: 0px 0px 2px 2px\n ${(props: ThemeProps) => props.theme.colors.blue200};\n }\n }\n`\n\nexport const StyledDropdownName = styled.div`\n padding: var(--dropdown-padding);\n cursor: pointer;\n\n &.with-label {\n padding-top: 34px;\n padding-bottom: 12px;\n }\n &[data-dropdown-open] {\n padding: 11px 15px 11px 15px;\n border: 1px solid ${(props: ThemeProps) => props.theme.colors.primaryBase};\n border-radius: 6px;\n box-shadow: 0 0 2px 2px ${(props: ThemeProps) => props.theme.colors.blue200};\n }\n`\n\nexport const StyledDropdownList = styled.ul`\n position: absolute;\n top: 100%;\n right: 0;\n left: 0;\n display: block;\n margin-top: 4px;\n background: ${(props: ThemeProps) => props.theme.colors.white};\n border-radius: 6px;\n box-shadow: -1px 1px 2px rgba(67, 70, 74, 0.0001),\n -2px 2px 5px rgba(67, 86, 100, 0.123689);\n cursor: pointer;\n\n &[data-has-icons='true'] {\n border: 1px solid ${(props: ThemeProps) => props.theme.colors.gray200};\n background: white;\n box-shadow: none;\n filter: drop-shadow(0px 10px 16px rgba(0, 0, 0, 0.04));\n }\n`\n\nexport const StyledDropdownOption = styled.li`\n display: flex;\n padding: 12px 18px 12px 16px;\n &[data-disabled='true'] {\n cursor: not-allowed;\n color: #bfbfbf;\n & > * {\n pointer-events: none;\n }\n }\n &:hover,\n :active {\n background: ${(props: ThemeProps) => props.theme.colors.gray100};\n }\n`\nexport const StyledIcon = styled.div`\n max-width: 16px;\n margin-right: 8px;\n`\n\nexport const StyledDropdownLabel = styled.div`\n position: absolute;\n top: 12px;\n left: 16px;\n pointer-events: none;\n`\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledPopup = styled.div`\n position: fixed;\n left: 50%;\n\n padding: 0 16px 32px;\n background-color: ${(props: ThemeProps) => props.theme.colors.white};\n border-radius: 6px;\n box-shadow: 0px 4px 8px ${(props: ThemeProps) => props.theme.colors.gray200};\n transform: translate(-50%, -50%);\n transition: all 0.5s ease-in-out;\n visibility: hidden;\n\n &[data-open='true'] {\n z-index: 200;\n top: 50%;\n opacity: 1;\n visibility: visible;\n }\n\n &[data-open='false'] {\n top: -50%;\n }\n\n &[data-type='lead'] {\n width: 332px;\n height: 460px;\n\n div {\n top: -15px;\n right: -15px;\n }\n }\n\n &[data-type='form'] {\n width: 496px;\n height: 548px;\n ${MediaQueries.mbDown} {\n width: 340px;\n }\n }\n\n &[data-type='confirm'] {\n ${MediaQueries.mbDown} {\n width: calc(100% - 32px);\n }\n ${MediaQueries.mbUp} {\n width: 100%;\n max-width: 407px;\n }\n }\n\n .popup-content {\n position: relative;\n z-index: 111;\n height: 100%;\n padding: 16px;\n }\n\n .close-button {\n position: absolute;\n top: 16px;\n right: 0;\n cursor: pointer;\n\n img {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n }\n }\n`\n\nexport const StyledPopupWrapper = styled.div`\n position: fixed;\n z-index: 110;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n align-items: center;\n background: rgba(38, 38, 38, 0.3);\n\n &[data-open='false'] {\n display: none;\n }\n`\n","import React from 'react'\n\nimport { StyledPopup, StyledPopupWrapper } from './index.styled'\n\nexport type Props = {\n type: 'lead' | 'form' | 'confirm' | 'profile'\n closeIcon?: JSX.Element\n isOpen: boolean\n onClose: () => void\n children?: any\n className?: string\n enableAnimation?: boolean\n}\n\nconst Popup = ({\n type = 'lead',\n closeIcon,\n isOpen = true,\n onClose,\n children,\n className = '',\n enableAnimation = true,\n}: Props) => {\n return (\n <>\n <StyledPopup\n data-open={isOpen}\n data-type={type}\n data-animation={enableAnimation}\n >\n <div className={`${className || ''} popup-content`}>\n {!!closeIcon && (\n <div className=\"close-button\" onClick={onClose}>\n {closeIcon}\n </div>\n )}\n {children}\n </div>\n </StyledPopup>\n <StyledPopupWrapper data-open={isOpen} onClick={onClose} />\n </>\n )\n}\n\nexport { Popup }\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar __toString = Object.prototype.toString\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var dec = opt.decode || decode;\n\n var index = 0\n while (index < str.length) {\n var eqIdx = str.indexOf('=', index)\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break\n }\n\n var endIdx = str.indexOf(';', index)\n\n if (endIdx === -1) {\n endIdx = str.length\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(';', eqIdx - 1) + 1\n continue\n }\n\n var key = str.slice(index, eqIdx).trim()\n\n // only assign once\n if (undefined === obj[key]) {\n var val = str.slice(eqIdx + 1, endIdx).trim()\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n\n index = endIdx + 1\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n var expires = opt.expires\n\n if (!isDate(expires) || isNaN(expires.valueOf())) {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + expires.toUTCString()\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.priority) {\n var priority = typeof opt.priority === 'string'\n ? opt.priority.toLowerCase()\n : opt.priority\n\n switch (priority) {\n case 'low':\n str += '; Priority=Low'\n break\n case 'medium':\n str += '; Priority=Medium'\n break\n case 'high':\n str += '; Priority=High'\n break\n default:\n throw new TypeError('option priority is invalid')\n }\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n *\n * @param {string} str\n * @returns {string}\n */\n\nfunction decode (str) {\n return str.indexOf('%') !== -1\n ? decodeURIComponent(str)\n : str\n}\n\n/**\n * URL-encode value.\n *\n * @param {string} str\n * @returns {string}\n */\n\nfunction encode (val) {\n return encodeURIComponent(val)\n}\n\n/**\n * Determine if value is a Date.\n *\n * @param {*} val\n * @private\n */\n\nfunction isDate (val) {\n return __toString.call(val) === '[object Date]' ||\n val instanceof Date\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ō\":\"O\",\"ō\":\"o\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"Ə\":\"E\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"ə\":\"e\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"Ա\":\"A\",\"Բ\":\"B\",\"Գ\":\"G\",\"Դ\":\"D\",\"Ե\":\"E\",\"Զ\":\"Z\",\"Է\":\"E\\'\",\"Ը\":\"Y\\'\",\"Թ\":\"T\\'\",\"Ժ\":\"JH\",\"Ի\":\"I\",\"Լ\":\"L\",\"Խ\":\"X\",\"Ծ\":\"C\\'\",\"Կ\":\"K\",\"Հ\":\"H\",\"Ձ\":\"D\\'\",\"Ղ\":\"GH\",\"Ճ\":\"TW\",\"Մ\":\"M\",\"Յ\":\"Y\",\"Ն\":\"N\",\"Շ\":\"SH\",\"Չ\":\"CH\",\"Պ\":\"P\",\"Ջ\":\"J\",\"Ռ\":\"R\\'\",\"Ս\":\"S\",\"Վ\":\"V\",\"Տ\":\"T\",\"Ր\":\"R\",\"Ց\":\"C\",\"Փ\":\"P\\'\",\"Ք\":\"Q\\'\",\"Օ\":\"O\\'\\'\",\"Ֆ\":\"F\",\"և\":\"EV\",\"ء\":\"a\",\"آ\":\"aa\",\"أ\":\"a\",\"ؤ\":\"u\",\"إ\":\"i\",\"ئ\":\"e\",\"ا\":\"a\",\"ب\":\"b\",\"ة\":\"h\",\"ت\":\"t\",\"ث\":\"th\",\"ج\":\"j\",\"ح\":\"h\",\"خ\":\"kh\",\"د\":\"d\",\"ذ\":\"th\",\"ر\":\"r\",\"ز\":\"z\",\"س\":\"s\",\"ش\":\"sh\",\"ص\":\"s\",\"ض\":\"dh\",\"ط\":\"t\",\"ظ\":\"z\",\"ع\":\"a\",\"غ\":\"gh\",\"ف\":\"f\",\"ق\":\"q\",\"ك\":\"k\",\"ل\":\"l\",\"م\":\"m\",\"ن\":\"n\",\"ه\":\"h\",\"و\":\"w\",\"ى\":\"a\",\"ي\":\"y\",\"ً\":\"an\",\"ٌ\":\"on\",\"ٍ\":\"en\",\"َ\":\"a\",\"ُ\":\"u\",\"ِ\":\"e\",\"ْ\":\"\",\"٠\":\"0\",\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"پ\":\"p\",\"چ\":\"ch\",\"ژ\":\"zh\",\"ک\":\"k\",\"گ\":\"g\",\"ی\":\"y\",\"۰\":\"0\",\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"Ṣ\":\"S\",\"ṣ\":\"s\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"–\":\"-\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"„\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₺\":\"turkish lira\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\",\"ﻵ\":\"laa\",\"ﻷ\":\"laa\",\"ﻹ\":\"lai\",\"ﻻ\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"Й\":\"Y\",\"Ц\":\"Ts\",\"Щ\":\"Sht\",\"Ъ\":\"A\",\"Ь\":\"Y\",\"й\":\"y\",\"ц\":\"ts\",\"щ\":\"sht\",\"ъ\":\"a\",\"ь\":\"y\"},\"de\":{\"Ä\":\"AE\",\"ä\":\"ae\",\"Ö\":\"OE\",\"ö\":\"oe\",\"Ü\":\"UE\",\"ü\":\"ue\",\"ß\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"∑\":\"summe\",\"∞\":\"unendlich\",\"♥\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"¢\":\"centavos\",\"£\":\"libras\",\"¤\":\"moneda\",\"₣\":\"francos\",\"∑\":\"suma\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"¢\":\"centime\",\"£\":\"livre\",\"¤\":\"devise\",\"₣\":\"franc\",\"∑\":\"somme\",\"∞\":\"infini\",\"♥\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"¢\":\"centavo\",\"∑\":\"soma\",\"£\":\"libra\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"uk\":{\"И\":\"Y\",\"и\":\"y\",\"Й\":\"Y\",\"й\":\"y\",\"Ц\":\"Ts\",\"ц\":\"ts\",\"Х\":\"Kh\",\"х\":\"kh\",\"Щ\":\"Shch\",\"щ\":\"shch\",\"Г\":\"H\",\"г\":\"h\"},\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"},\"da\":{\"Ø\":\"OE\",\"ø\":\"oe\",\"Å\":\"AA\",\"å\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"større end\"},\"nb\":{\"&\":\"og\",\"Å\":\"AA\",\"Æ\":\"AE\",\"Ø\":\"OE\",\"å\":\"aa\",\"æ\":\"ae\",\"ø\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"Å\":\"AA\",\"Ä\":\"AE\",\"Ö\":\"OE\",\"å\":\"aa\",\"ä\":\"ae\",\"ö\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch] || charMap[ch] || ch;\n if (appendChar === replacement) {\n appendChar = ' ';\n }\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n","export const PATHS = {\n BASE_API_PATH: '/',\n PROFILE: 'profile?website_url={website_url}',\n SEARCH_USER: 'profile/search?website_url={website_url}&name={name}',\n FETCH_PREVIEW: 'fetch/preview?website_url={website_url}',\n FETCH_POST_OR_TOPIC:\n 'fetch/{slug}?website_url={website_url}&community_slug={communitySlug}',\n POST: {\n LIST: 'post?website_url={website_url}&slug={slug}&pin={pin}&page={page}&community_id={communityId}&topic_id={topicId}&sort_by={sort}&id={id}',\n DETAIL_BY_ID_OR_SLUG: 'post/{idSlug}?website_url={website_url}',\n CREATE: 'post/create?website_url={website_url}',\n LIKE: 'post/{id}/like?website_url={website_url}',\n DELETE: 'post/{id}/delete?website_url={website_url}',\n REPORT: 'post/{id}/report?website_url={website_url}',\n UPDATE: 'post/{id}/update?website_url={website_url}',\n FOLLOW: 'post/{id}/follow?website_url={website_url}',\n CREATE_ARTICLE_COMMENT: 'article-comment/create?website_url={website_url}',\n },\n COMMENT: {\n LIST: 'comment?website_url={website_url}&post_id={postId}&page={page}&sort_by={sort}&items_per_page={perPage}&_without_reply={withoutReply}',\n CREATE: 'comment/create?website_url={website_url}',\n REPLY: 'comment/reply?website_url={website_url}',\n DELETE: 'comment/{id}/delete?website_url={website_url}',\n LIKE: 'comment/{id}/like?website_url={website_url}',\n UNLIKE: 'comment/{id}/unlike?website_url={website_url}',\n IMAGE_UPLOAD: 'comment/image/upload?website_url={website_url}',\n },\n COMMUNITY: {\n LIST: 'community?website_url={website_url}&page={page}',\n DETAIL_BY_ID_OR_SLUG: 'community/{idSlug}?website_url={website_url}',\n JOIN: 'community/join?website_url={website_url}',\n LEAVE: 'community/leave?website_url={website_url}',\n },\n TOPIC: {\n LIST: 'topic?website_url={website_url}&community_slug={communitySlug}&community_id={communityId}&page={page}',\n DETAIL_BY_ID_OR_SLUG:\n 'topic/{idSlug}?website_url={website_url}&community_slug={communitySlug}&community_id={communityId}',\n HEALTH_TOOLS: 'tools?topic_id={topicId}&website_url={website_url}',\n SUBOTS: 'subots?topic_id={topicId}&website_url={website_url}',\n SUGGESTED_POSTS:\n 'suggested-posts?topic_id={topicId}&website_url={website_url}&page={page}',\n JOIN: 'topic/join?website_url={website_url}',\n LEAVE: 'topic/leave?website_url={website_url}',\n },\n BOOKMARK: {\n LIST: 'bookmark?user_id={userId}&website_url={website_url}',\n CREATE: 'bookmark/create?website_url={website_url}',\n DELETE: 'bookmark/delete?website_url={website_url}',\n },\n // OLD\n\n UPLOAD_IMAGE: 'auth/comment/image/upload?website_url={website_url}',\n}\nexport const SUBOT_PATHS = {\n TOGETHER: {\n SURVEY: {\n GET_FIRST_NODE: 'frontend/api/bots/{botId}',\n CHAT_WITH_BOT: 'frontend/api/inline/messages',\n },\n },\n}\nexport const CARE_PATHS = {\n GET_DOCTOR_INFO: 'api/doctors/{doctorId}?site={website_url}',\n GET_HOSPITAL_INFO:\n 'api/hospital/branch/{hospital_branch_id}?site={website_url}',\n}\nexport const DISCOVER_PATHS = {\n BASE_API_PATH: '/',\n GET_SEARCH_ARTICLES: 'search?s={keyword}&page={page}',\n // GET_TOP_CATEGORIES: 'categories',\n GET_ALL_CATEGORIES: 'categories?type=all',\n GET_HOMEPAGE_POSTS: 'home/trending-post?type={type}',\n GET_HOMEPAGE_LATEST_POSTS: 'articles?page=1&_islatest=1',\n GET_ARTICLE_DETAIL:\n 'article/{slug}?skip_ids={skipIds}&_isrelated={isRelated}',\n GET_CATEGORY_DETAIL: 'category/{slug}',\n GET_CATEGORY_OR_ARTICLE_DETAIL: 'fetch/{fullSlug}',\n GET_PREVIEW_ARTICLE: 'fetch/{fullSlug}?preview_nonce={nonce}&preview=true',\n GET_ARTICLE_OF_CATEGORY:\n 'articles?category_id={categoryId}&page={currentPage}',\n GET_PAGE_STATIC: 'page/{slug}',\n GET_ALL_HEALTH_TOOLS: 'healthtools',\n GET_ALL_MARRYBABY_HEALTH_TOOLS: 'health-tools',\n GET_HEALTH_TOOLS_BY_CATEGORY: 'healthtools?_hasgroup=1',\n GET_AUTHOR: 'author/{slug}',\n GET_ALL_EXPERTS: 'experts',\n GET_ALL_EXPERTS_PAGING: 'experts?page={page}',\n GET_EXPERT: 'expert/{slug}',\n GET_EXPERT_POST: 'expert/article?page={page}',\n POST_ARTICLE_FEEDBACK: 'article/feedback/{id}',\n GET_AZ_DRUGS: 'category/a-z/{category}',\n GET_HOMEPAGE_MEDICAL_REVIEWED: 'home/medical-reviewed',\n GET_ARTICLES_BY_IDS: 'articles?ids={ids}',\n GET_ARTICLE_OF_CATEGORY_NO_EXPLAINERS:\n 'articles?category_id={categoryId}&page={currentPage}&skip_ids={ids}',\n GET_EXPERT_OF_CATEGORY: 'category/expert/?id={id}',\n GET_DUE_DATE_INFO: 'health-tools/due-date-calculator/info',\n GET_DUE_DATE_ALL_WEEKS: 'health-tools/due-date-calculator/all',\n GET_DUE_DATE_SUGGESTED_ARTICLES:\n 'health-tools/due-date-calculator/result?from_week={from}&to_week={to}',\n GET_PROFILE: 'user/profile',\n GET_ADMIN_PROFILE: 'GET_ADMIN_PROFILE',\n GET_FEATURE: 'feature',\n POST_NEW_FEATURE: 'feature/update',\n CREATE_BOOKMARK: 'bookmark/create',\n DELETE_BOOKMARK: 'bookmark/delete',\n DELETE_ALL_BOOKMARK: 'bookmark/delete-all',\n GET_ALL_BOOKMARK: 'bookmark',\n SSO_USER_PROFILE: 'user',\n SSO_USER_BOOKMARKS: 'user/bookmarks',\n SSO_USER_PASSWORD: 'user/settings/password',\n SSO_USER_EMAIL: 'user/settings/update-email',\n SSO_CLOSE_ACCOUNT: 'user/settings/close-account',\n SSO_HELP: 'user/settings/help',\n GET_HEALTH_TOOL_OVULATION_INFO: 'health-tools/ovulation-calculator/info',\n GET_HEALTH_TOOL_OVULATION_SUGGESTED_ARTICLES:\n 'health-tools/ovulation-calculator/result?method={method}', // method: 1, 2, 3\n GET_HEALTH_TOOL_BMI_INFO: 'health-tools/bmi-calculator/info',\n GET_HEALTH_TOOL_BMI_RESULT:\n 'health-tools/bmi-calculator/result?gender={gender}&bmi={bmi}&age={age}',\n GET_HEALTH_TOOL_BMR_INFO: 'health-tools/bmr-calculator/info',\n GET_HEALTH_TOOL_BMR_RESULT:\n 'health-tools/bmr-calculator/result?kcals={kcals}&gender={gender}&age={age}',\n GET_HEALTH_TOOL_PWG_INFO: 'health-tools/preweight-gain-calculator/info',\n GET_HEALTH_TOOL_THR_INFO: 'health-tools/target-heart-rate/info',\n POST_UPDATE_LOCATION: 'tracking/geo/',\n // SIDIS\n GET_SIDIS_DUE_DATE: 'frontend/tools/due_date',\n GET_SIDIS_OVULATION: 'frontend/tools/ovulation',\n GET_SIDIS_BMI: 'frontend/tools/bmi',\n GET_SIDIS_BMR: 'frontend/tools/bmr',\n POST_LOGOUT: 'user/logout',\n OVULATION_CREATE_EVENT:\n 'ovulation/event?method={method}&day={day}&cycle={cycle}&period={period}&token={token}&user_id={user_id}',\n GET_ALL_SPOTLIGHT: 'spotlights?per_page={perPage}&order_by={orderBy}',\n SSO_UPDATE_FIRST_TIME_BOOKMARK: 'bookmark/update-first-time',\n POST_COMMENT_NOTIFICATION: 'comment/notification',\n GET_ABOUT_US_DATA: 'about',\n POST_LEAD_IMPRESSION: 'campaign/{campaignCode}/impression',\n POST_LEAD_POPUP_EXIT: 'campaign/{campaignCode}/popup_exit',\n POST_LEAD_LEAD: 'campaign/{campaignCode}/lead',\n POST_SSO_VERIFY_TOKEN: 'verify-id-token',\n GET_LANDING_PAGE_FIRST_NODE: 'landing_page/bot',\n GET_LANDING_PAGE_NEXT_NODE: 'landing_page/messages',\n POST_LANDING_PAGE_IMPRESSION: 'landing_page/impressions',\n POST_LANDING_PAGE_CLICK: 'landing_page/clicks',\n FETCH_URL_DATA: 'preview',\n GET_SPOTLIGHT_LANDING: 'spotlight/{slug}',\n GET_FOOTER_INFO: 'footer',\n CHECK_SSO_EMAIL: 'member/check-email',\n\n GET_HOMEPAGE_SITEWIDE_BANNER: 'home/sitewide-banner',\n GET_DYNAMIC_FOOTER: 'menu/footer',\n GET_EXPERTS: 'experts?page={page}&number={perPage}&s={search}',\n GET_EXPERT_BY_ID: 'expert/{id}',\n}\n\nexport const ADMIN_PATHS = {\n SEARCH_USER: 'admin/profile/search?website_url={website_url}&name={name}',\n COMMENT: {\n IMAGE_UPLOAD: 'admin/comment/image/upload?website_url={website_url}',\n },\n}\n","import React, { createContext, ReactNode, useEffect, useState } from 'react'\n\nimport { LocaleType } from 'interfaces/types'\n\nimport { PATHS } from './api/paths'\nimport { callApiWithAuth, getApiPath } from './api/utils'\n\nexport type Role = 'user' | 'admin'\n\nexport type UserInfo = {\n name?: string\n url?: string\n phone?: string\n username?: string\n avatar?: string\n email?: string\n phone_verified?: boolean\n birthday?: string\n gender?: number\n id?: number\n total_bookmark?: number\n bookmarks?: Array<string | number>\n postCount?: number\n role?: Role\n commentCount?: number\n communities_interacted?: number\n partnerId?: string\n first_time_bookmark?: boolean\n provider?: string\n}\n\nexport type PushNotificationPayloadType = {\n message: string\n type: 'success' | 'danger' | 'info' | 'warning'\n title?: string\n displayIcon?: string\n}\nexport type TogetherComponentGlobalContextType = {\n data: {\n locale?: LocaleType\n userInfo?: UserInfo\n togetherUserId?: number\n env?: {\n isMarryBaby?: boolean\n togetherBasePath?: string\n publicSSO?: string\n togetherBaseApiUrl?: string\n subotApiUrl?: string\n discoverBaseApiUrl?: string\n careBaseApiUrl?: string\n }\n router?: {\n asPath?: string\n basePath?: string\n query?: NodeJS.Dict<string | string[]>\n }\n }\n action: {\n pushNotifications?: (payload: PushNotificationPayloadType) => void\n sanitizeFunction?: (h: string) => string\n }\n}\nexport const DefaultComponentGlobalContextData: TogetherComponentGlobalContextType['data'] =\n {\n locale: 'vi-VN' as LocaleType,\n env: {\n isMarryBaby: false,\n togetherBasePath: '/community',\n },\n router: {\n basePath: '',\n asPath: '/',\n },\n }\n\nexport const TogetherComponentGlobalContext =\n createContext<TogetherComponentGlobalContextType>({\n data: DefaultComponentGlobalContextData,\n action: {\n pushNotifications: (s) => s,\n sanitizeFunction: (s) => s,\n },\n })\n\nexport let GlobalData: TogetherComponentGlobalContextType['data'] =\n DefaultComponentGlobalContextData\n\nexport type Props = {\n userInfo?: UserInfo\n locale?: LocaleType\n children?: ReactNode\n translation?: { [key: string]: string }\n router?: any\n pushNotifications?: (payload: PushNotificationPayloadType) => void\n sanitizeFunction?: (h: string) => string\n env?: TogetherComponentGlobalContextType['data']['env']\n}\nexport const TogetherComponentGlobalContextProvider = ({\n locale = 'vi-VN',\n children,\n userInfo,\n router,\n env = {\n isMarryBaby: false,\n togetherBasePath: '/community',\n },\n sanitizeFunction = (s) => s,\n pushNotifications = () => false,\n}: Props) => {\n const [togetherUserId, setTogetherUserId] = useState()\n\n GlobalData = {\n userInfo,\n locale,\n togetherUserId,\n router,\n env,\n }\n useEffect(() => {\n if (userInfo?.id) {\n callApiWithAuth(\n getApiPath(PATHS.PROFILE, {\n _locale: locale,\n }),\n 'GET',\n ).then((res) => {\n setTogetherUserId(res?.data?.id)\n })\n }\n }, [userInfo?.id])\n return (\n <TogetherComponentGlobalContext.Provider\n value={{\n data: {\n userInfo,\n locale,\n togetherUserId,\n router,\n env,\n },\n action: {\n pushNotifications,\n sanitizeFunction,\n },\n }}\n >\n {children}\n </TogetherComponentGlobalContext.Provider>\n )\n}\n","import { LocaleType } from 'src/interfaces/types'\n\nimport { BmrActiveLevel, CareLocalisedSlugsType } from './types'\nexport const POST_DATE_FORMAT = 'dd/MM/yyyy'\nexport const NORMAL_DATE_FORMAT = 'YYYY-MM-DD'\n\nexport const DEFAULT_AVATAR_IMG = `/images/avatar.jpg`\nexport const DEFAULT_RESULT_IMG = `/images/default.png`\nexport const DEFAULT_IMG = `/images/default-image.jpg`\n\nexport const BMI_LEVELS = [\n 'underweight',\n 'healthy',\n 'overweight',\n 'obese_level_1',\n 'obese_level_2',\n]\n\nexport const BMR_LEVELS = ['low', 'normal', 'high']\nexport const CORAL_TOKEN_COOKE = 'coral_together_user_token'\n\nexport const HEALTH_TOOL_TYPE = {\n DUE_DATE: 'DUE_DATE',\n BMI: 'BMI',\n BMR: 'BMR',\n OVULATION: 'OVULATION',\n IFRAME: 'IFRAME',\n PWG: 'PWG',\n THR: 'THR',\n} as const\n\nexport const LOCALE_HEALTH_TOOLS: {\n [locale: string]: {\n [ht: string]: string\n }\n} = {\n 'id-ID': {\n 'kalkulator-bmi': HEALTH_TOOL_TYPE.BMI,\n 'kebutuhan-kalori': HEALTH_TOOL_TYPE.BMR,\n 'kalkulator-hari-perkiraan-lahir': HEALTH_TOOL_TYPE.DUE_DATE,\n 'kalkulator-masa-subur-2': HEALTH_TOOL_TYPE.OVULATION,\n 'kalkulator-kenaikan-berat-badan-ibu-hamil': HEALTH_TOOL_TYPE.PWG,\n 'kalkulator-detak-jantung-saat-olahraga': HEALTH_TOOL_TYPE.THR,\n },\n 'ms-MY': {\n 'kalkulator-bmi': HEALTH_TOOL_TYPE.BMI,\n 'kalkulator-bmr': HEALTH_TOOL_TYPE.BMR,\n 'kalkulator-tarikh-bersalin': HEALTH_TOOL_TYPE.DUE_DATE,\n 'kalkulator-kesuburan': HEALTH_TOOL_TYPE.OVULATION,\n 'kalkulator-tambah-berat-badan-hamil': HEALTH_TOOL_TYPE.PWG,\n 'target-heart-rate-calculator': HEALTH_TOOL_TYPE.THR,\n },\n 'vi-VN': {\n 'cach-tinh-chi-so-bmi': HEALTH_TOOL_TYPE.BMI,\n 'tinh-chi-so-bmr': HEALTH_TOOL_TYPE.BMR,\n 'cong-cu-tinh-ngay-du-sinh': HEALTH_TOOL_TYPE.DUE_DATE,\n 'tinh-ngay-rung-trung': HEALTH_TOOL_TYPE.OVULATION,\n 'cong-cu-tinh-can-nang-khi-mang-thai': HEALTH_TOOL_TYPE.PWG,\n 'cong-cu-do-nhip-tim': HEALTH_TOOL_TYPE.THR,\n },\n 'zh-TW': {\n 'bmi-calculator': HEALTH_TOOL_TYPE.BMI,\n 'bmr-calculator': HEALTH_TOOL_TYPE.BMR,\n 'due-date-calculator': HEALTH_TOOL_TYPE.DUE_DATE,\n 'ovulation-calculator': HEALTH_TOOL_TYPE.OVULATION,\n 'pregnancy-weight-gain-calculator': HEALTH_TOOL_TYPE.PWG,\n 'target-heart-rate-calculator': HEALTH_TOOL_TYPE.THR,\n },\n 'en-PH': {\n 'bmi-calculator': HEALTH_TOOL_TYPE.BMI,\n 'bmr-calculator': HEALTH_TOOL_TYPE.BMR,\n 'due-date-calculator': HEALTH_TOOL_TYPE.DUE_DATE,\n 'ovulation-calculator': HEALTH_TOOL_TYPE.OVULATION,\n 'pregnancy-weight-gain-calculator': HEALTH_TOOL_TYPE.PWG,\n 'target-heart-rate-calculator': HEALTH_TOOL_TYPE.THR,\n },\n 'th-TH': {\n 'เครื่องคำนวณหา-ค่าดัชนี': HEALTH_TOOL_TYPE.BMI,\n 'เครื่องคำนวณอัตราการเผาผลาญพลังงาน-bmr': HEALTH_TOOL_TYPE.BMR,\n เครื่องมือคำนวณกำหนดคลอด: HEALTH_TOOL_TYPE.DUE_DATE,\n 'เครื่องคำนวณการตกไข่-ovulation-calculat': HEALTH_TOOL_TYPE.OVULATION,\n เครื่องคำนวณน้ำหนักตัว: HEALTH_TOOL_TYPE.PWG,\n เครื่องวัดอัตราการเต้น: HEALTH_TOOL_TYPE.THR,\n },\n 'hi-IN': {\n 'bmi-calculator-en': HEALTH_TOOL_TYPE.BMI,\n 'bmi-calculator': HEALTH_TOOL_TYPE.BMI,\n 'bmr-calculator': HEALTH_TOOL_TYPE.BMR,\n 'delivery-date-calculator': HEALTH_TOOL_TYPE.DUE_DATE,\n 'ovulation-calculator': HEALTH_TOOL_TYPE.OVULATION,\n 'pregnancy-weight-gain-calculator': HEALTH_TOOL_TYPE.PWG,\n 'target-heart-rate-calculator': HEALTH_TOOL_TYPE.THR,\n },\n 'km-KH': {\n 'គណនា-bmi': HEALTH_TOOL_TYPE.BMI,\n 'គណនា-bmr': HEALTH_TOOL_TYPE.BMR,\n គណនាថ្ងៃសម្រាលកូន: HEALTH_TOOL_TYPE.DUE_DATE,\n គណនាថ្ងៃមេជីវិតញីទុំធ្លាក់: HEALTH_TOOL_TYPE.OVULATION,\n គណនាទម្ងន់ស្ត្រីពពោះ: HEALTH_TOOL_TYPE.PWG,\n គណនារកចង្វាក់បេះដូងល្អ: HEALTH_TOOL_TYPE.THR,\n },\n 'my-MM': {\n 'bmi-calculator': HEALTH_TOOL_TYPE.BMI,\n 'bmr-calculator': HEALTH_TOOL_TYPE.BMR,\n 'due-date-calendar': HEALTH_TOOL_TYPE.DUE_DATE,\n 'ovulation-calculator': HEALTH_TOOL_TYPE.OVULATION,\n 'pregnaancy-weight-calculator': HEALTH_TOOL_TYPE.PWG,\n 'target-heartrate': HEALTH_TOOL_TYPE.THR,\n 'pregnancy-weight-calculator': HEALTH_TOOL_TYPE.PWG,\n 'target-heart-rate': HEALTH_TOOL_TYPE.THR,\n },\n}\n\nexport const BEARER_TOKEN_COOKIE = 'hhg_user_token'\nexport const TOGETHER_DISCLAIMER_COOKIE = 'hhg_together_disclaimer'\nexport const BEARER_ADMIN_TOKEN_COOKIE = 'together_admin_token'\n\nexport const Z_INDEX = {\n adBlock: 48,\n articleAdContainer: 47,\n headerContainerHome: 99,\n headerContainerPopup: 200,\n headerContainerPopupSUbLevel: 300,\n menuSearchInputPopup: 5,\n menuSearchInputDisplayIcon: 6,\n menuSearchPopup: 200,\n}\n\nexport const BmrActiveLevels: {\n name: string\n value: BmrActiveLevel\n icon: string\n description: string\n}[] = [\n {\n value: 'sedentary',\n icon: 'bmr-sedentary',\n //'/images/toolsBMRSedentary.svg',\n name: 'bmr.activeLevel.sedentary',\n description: 'bmr.activeLevel.sedentary.description',\n },\n {\n value: 'lightly-active',\n icon: 'bmr-light',\n // icon: '/images/toolsBMRLightlyActive.svg',\n name: 'bmr.activeLevel.lightlyActive',\n description: 'bmr.activeLevel.lightlyActive.description',\n },\n {\n value: 'moderately-active',\n icon: 'bmr-moderately',\n // icon: '/images/toolsBMRModeratelyActive.svg',\n name: 'bmr.activeLevel.moderatelyActive',\n description: 'bmr.activeLevel.moderatelyActive.description',\n },\n {\n value: 'intensely-active',\n icon: 'bmr-intensively',\n // icon: '/images/toolsBMRIntenselyActive.svg',\n name: 'bmr.activeLevel.intenselyActive',\n description: 'bmr.activeLevel.intenselyActive.description',\n },\n {\n value: 'extremely-active',\n icon: 'bmr-extremely',\n // icon: '/images/toolsBMRExtremelyActive.svg',\n name: 'bmr.activeLevel.extremelyActive',\n description: 'bmr.activeLevel.extremelyActive.description',\n },\n]\nexport const LEAD_CAMPAIGN_CODE = 'lmoct7xfr5sv4fv'\nexport const LEAD_TOKEN_COOKIE = 'hhg-id'\nexport const GA_TOKEN_COOKIE = '_ga'\nexport const GOOGLE_CALENDAR_AUTH_CLIENT_ID =\n '1038242799566-esoq4ij201ve5qfp266nbca44scpo3c6.apps.googleusercontent.com'\n\nexport const FIND_CARE_IFRAME_URL =\n 'https://www.appsheet.com/start/4ba34ebe-3cb6-4c16-8dd4-d074025a5bb6#appName=DependentDropdowns-2711103&group=%5B%5D&page=card&sort=%5B%5D&table=Menu&view=Menu'\n\nexport const REPORT_REASON_MAP: {\n [k: string]: {\n label: string\n reportReasonText: string\n }\n} = {\n report_scam: {\n label: 'morePopover.report.scam',\n reportReasonText: 'morePopover.report.scam',\n },\n report_sex: {\n label: 'morePopover.report.sex',\n reportReasonText: 'morePopover.report.sex',\n },\n report_offensive: {\n label: 'morePopover.report.offensive',\n reportReasonText: 'morePopover.report.offensive',\n },\n report_violence: {\n label: 'morePopover.report.violence',\n reportReasonText: 'morePopover.report.violence',\n },\n report_prohibited: {\n label: 'morePopover.report.prohibited',\n reportReasonText: 'morePopover.report.prohibited',\n },\n report_spam: {\n label: 'morePopover.report.spam',\n reportReasonText: 'morePopover.report.spam',\n },\n report_falseNews: {\n label: 'morePopover.report.falseNews',\n reportReasonText: 'morePopover.report.falseNews',\n },\n report_other: {\n label: 'morePopover.report.other',\n reportReasonText: 'morePopover.report.other',\n },\n}\n\nexport const MB_SOCIAL_LINKS = {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/marry.baby.vn',\n INSTAGRAM: 'https://www.instagram.com/marrybaby.vn/',\n TWITTER: '',\n YOUTUBE: 'https://www.youtube.com/channel/UCeZybTkY1VzJ3N7LvPGdKbg',\n ZALO: 'http://zalo.me/806483414530291942',\n}\n\nexport const INTERNAL_ROLES = ['admin', 'moderator', 'local-admin']\nexport const EXTERNAL_ROLES = [\n 'ambassador',\n 'expert',\n 'sponsor',\n 'guide',\n 'influencer',\n]\nexport const INTERNAL_PROFILE_ROLES = ['moderator', 'local-admin']\nexport const EXTERNAL_PROFILE_ROLES = ['expert', 'ambassador', 'sponsor']\nexport const RoleDataMap = {\n moderator: {\n text: 'Moderator',\n fid: 'cardAuthor.moderator',\n background: '#fe921d',\n },\n admin: {\n text: 'Admin',\n fid: 'cardAuthor.admin',\n background: '#2b62cd',\n },\n 'local-admin': {\n text: 'Local admin',\n fid: 'cardAuthor.localAdmin',\n background: '#2b62cd',\n },\n expert: {\n text: 'Expert',\n fid: 'cardAuthor.expert',\n background: '#ff6f4d',\n },\n sponsor: {\n text: 'Sponsor',\n fid: 'cardAuthor.sponsor',\n background: '#00c7e6',\n },\n ambassador: {\n text: 'Ambassador',\n fid: 'cardAuthor.ambassador',\n background: '#00CB8A',\n },\n}\n\nexport const MAX_IMAGE_UPLOADS = 20\n\nexport const LOCALISED_SLUGS: {\n [key in LocaleType]?: {\n [key in CareLocalisedSlugsType]: string\n }\n} = {\n 'en-PH': {\n ALL: 'all',\n HOSPITAL: 'hospital',\n SERVICE: 'service',\n DOCTOR: 'doctor',\n SEARCH: 'search',\n SPECIALTIES: 'specialties',\n CURRENT: 'current-location',\n },\n 'vi-VN': {\n ALL: 'tat-ca',\n HOSPITAL: 'benh-vien',\n SERVICE: 'dich-vu',\n DOCTOR: 'bac-si',\n SEARCH: 'tim-kiem',\n SPECIALTIES: 'chuyen-khoa',\n CURRENT: 'vi-tri-hien-tai',\n },\n 'id-ID': {\n ALL: 'semua',\n HOSPITAL: 'rumah-sakit',\n SERVICE: 'layanan',\n DOCTOR: 'dokter',\n SEARCH: 'cari',\n SPECIALTIES: 'spesialisasi',\n CURRENT: 'posisi-saya-saat-ini',\n },\n}\n","import cookieParser from 'cookie'\nimport { getCookie } from 'misc/cookieHelper'\nimport slugify from 'slugify'\nimport { LocaleType } from 'src/components/organisms/navigationLayout/types'\nimport formatString from 'string-format'\nimport { GlobalData } from 'together/togetherComponentGlobalContext'\n\nimport {\n BEARER_ADMIN_TOKEN_COOKIE,\n BEARER_TOKEN_COOKIE,\n LOCALISED_SLUGS,\n} from '../interfaces/constants'\n// import { DISCOVER_PATHS, PATHS } from './paths'\n// let _apolloClient:ApolloClient<NormalizedCacheObject>\n\nexport const domainLocales = {\n 'vi-VN': 'hellobacsi.com',\n 'id-ID': 'hellosehat.com',\n 'ms-MY': 'hellodoktor.com',\n 'km-KH': 'hellokrupet.com',\n 'en-PH': 'hellodoctor.com.ph',\n 'th-TH': 'hellokhunmor.com',\n 'my-MM': 'hellosayarwon.com',\n 'zh-TW': 'helloyishi.com.tw',\n 'hi-IN': 'helloswasthya.com',\n}\nexport const domainLocalesMarryBaby = {\n 'vi-VN': 'marrybaby.vn',\n}\n\nconst locale = (process.env.NEXT_PUBLIC_DEPLOY_LOCALE || 'vi-VN') as LocaleType\nexport const getWebsiteUrlApi = (locale: string) => {\n const {\n env: { isMarryBaby },\n } = GlobalData\n return `https://${\n isMarryBaby ? domainLocalesMarryBaby[locale] : domainLocales[locale]\n }`\n}\nconst cleanFormatString = (url: string) => {\n const qIndex = url.indexOf('?')\n if (qIndex >= 0) {\n return (\n url.slice(0, qIndex + 1) +\n url\n .slice(qIndex + 1)\n .replace(/[^=&]+=(&|$)/g, '')\n .replace(/&$/, '')\n )\n }\n return url\n}\n\nexport const getCurrentBaseUrl = (locale: string) => {\n const {\n env: { isMarryBaby },\n } = GlobalData\n if (typeof window !== 'undefined') return window.location.origin\n const isStaging = process.env.NEXT_PUBLIC_DEPLOY_ENV === 'staging'\n const isDev = process.env.NEXT_PUBLIC_DEPLOY_ENV === 'development'\n return isDev\n ? 'http://localhost:3000'\n : `https://${\n isStaging\n ? isMarryBaby\n ? 'fe.'\n : 'discover.'\n : isMarryBaby\n ? 'www.'\n : ''\n }${domainLocales[locale]}`\n}\n\nexport const getCurrentHref = (\n locale: string,\n basePath: string,\n asPath: string,\n) => {\n if (typeof window !== 'undefined') return window.location.href\n return `${getCurrentBaseUrl(locale)}${basePath}${asPath}`\n}\n\nexport const getApiPath = (\n path: string,\n params?: { [key: string]: string | number },\n query?: { [key: string]: string | number },\n) => {\n let queryString = ''\n if (query) {\n queryString = Object.keys(query)\n .map((key) => key + '=' + query[key])\n .join('&')\n }\n const { togetherBaseApiUrl = '' } = GlobalData?.env || {}\n let formattedPath = formatString(path, {\n ...(params?._locale\n ? {\n website_url: getWebsiteUrlApi(String(params._locale)),\n }\n : {}),\n ...params,\n })\n formattedPath += `${formattedPath.includes('?') ? '&' : '?'}${queryString}`\n return togetherBaseApiUrl + 'api/v1/' + cleanFormatString(formattedPath)\n}\n\nexport const getDiscoverApiPath = (\n path: string,\n params?: { [key: string]: string | number },\n) => {\n const { discoverBaseApiUrl = '' } = GlobalData?.env || {}\n return (\n discoverBaseApiUrl +\n 'wp-json/api/' +\n cleanFormatString(\n formatString(path, {\n ...params,\n }),\n )\n )\n}\nexport const getCarePath = (\n path: string,\n params?: { [key: string]: string | number | undefined },\n) => {\n const { careBaseApiUrl = '' } = GlobalData?.env || {}\n return (\n (careBaseApiUrl || 'https://service-health-care.hellohealthgroup.com/') +\n cleanFormatString(formatString(path, { ...params }))\n )\n}\n\nconst fixedEncodeURI = (str: string) => {\n return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']')\n}\n\ntype ApiOptions = RequestInit & {\n data?: any\n}\nconst convertApiOptionsToRequestInit = (opts: ApiOptions): RequestInit => {\n if (opts?.data) {\n if (opts.data instanceof FormData) {\n opts.body = opts.data\n } else if (typeof opts.data === 'object') {\n opts.body = JSON.stringify(opts.data)\n }\n delete opts.data\n }\n return opts\n}\n\nexport const callApi = async (\n url: string,\n method: string,\n options?: ApiOptions,\n skipEncodeURI = false,\n) => {\n try {\n const res = await fetch(skipEncodeURI ? url : fixedEncodeURI(url), {\n method,\n ...convertApiOptionsToRequestInit(options),\n }).then((r) => r.json())\n if (res) return res\n } catch (err) {\n console.log(err)\n console.log({\n url,\n status: err?.response?.status,\n statusText: err?.response?.statusText,\n })\n // Sentry.captureException(err)\n return err?.response?.data || null\n }\n return null\n}\n\nexport const callApiWithOptionalAuth = async (\n urlData:\n | {\n url: string\n backupUrl: string\n }\n | string,\n method = 'GET',\n options?: ApiOptions,\n reqCookie?: string,\n) => {\n try {\n const url = typeof urlData === 'string' ? urlData : urlData.url\n const backupUrl = typeof urlData === 'string' ? urlData : urlData.backupUrl\n const parsedCookie = cookieParser.parse(reqCookie || '')\n const token = parsedCookie[BEARER_TOKEN_COOKIE]\n const cookie = token || getCookie(BEARER_TOKEN_COOKIE)\n if (cookie && cookie.length) {\n try {\n const res = await fetch(url, {\n method,\n ...convertApiOptionsToRequestInit(options),\n headers: {\n Authorization: 'Bearer ' + cookie,\n },\n }).then((r) => r.json())\n if (\n res?.messages?.find(\n (m: string) => m?.toLowerCase() === 'Unauthenticated',\n )\n ) {\n return callApi(backupUrl || url, method, options)\n }\n if (res) return res\n } catch (err) {\n console.log({\n status: err?.response?.status,\n statusText: err?.response?.statusText,\n })\n // Fallback noauth call\n return callApi(backupUrl || url, method, options)\n }\n } else {\n return callApi(backupUrl || url, method, options)\n }\n } catch (err) {\n console.log({\n status: err?.response?.status,\n statusText: err?.response?.statusText,\n })\n // Sentry.captureException(err)\n return err?.response?.data || null\n }\n return null\n}\nexport const callApiWithAuth = async (\n url: string,\n method: string,\n options?: ApiOptions,\n reqCookie?: string,\n) => {\n try {\n const parsedCookie = cookieParser.parse(reqCookie || '')\n const token = parsedCookie[BEARER_TOKEN_COOKIE]\n const cookie = token || getCookie(BEARER_TOKEN_COOKIE)\n if (cookie && cookie.length) {\n const res = await fetch(url, {\n method,\n ...convertApiOptionsToRequestInit(options),\n headers: {\n Authorization: 'Bearer ' + cookie,\n },\n }).then((r) => r.json())\n if (res) return res\n }\n } catch (err) {\n // Sentry.captureException(err)\n return null\n }\n return null\n}\nexport const callApiWithAdminAuth = async (\n url: string,\n method: string,\n options?: ApiOptions,\n reqCookie?: string,\n) => {\n try {\n const parsedCookie = cookieParser.parse(reqCookie || '')\n const token = parsedCookie[BEARER_ADMIN_TOKEN_COOKIE]\n const cookie = token || getCookie(BEARER_ADMIN_TOKEN_COOKIE)\n if (cookie && cookie.length) {\n const res = await fetch(url, {\n method,\n ...convertApiOptionsToRequestInit(options),\n headers: {\n Authorization: 'Bearer ' + cookie,\n },\n }).then((r) => r.json())\n if (res) return res\n }\n } catch (err) {\n // Sentry.captureException(err)\n return null\n }\n return null\n}\n\nexport function updateQueryStringParameter(\n uri: string,\n key: string,\n value: string,\n) {\n const re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i')\n const separator = uri.indexOf('?') !== -1 ? '&' : '?'\n if (uri.match(re)) {\n return uri.replace(re, '$1' + key + '=' + value + '$2')\n } else {\n return uri + separator + key + '=' + value\n }\n}\n\nexport const getUrlToSSOWithReturnUrl = (\n url?: string,\n params?: {\n [k: string]: string\n },\n) => {\n const { publicSSO } = GlobalData.env\n\n const originalRedirectUrl = url || window.location.href\n // const redirectUrl = new URL(originalRedirectUrl)\n if (params) {\n Object.keys(params).map((k) => {\n updateQueryStringParameter(originalRedirectUrl, k, params[k])\n })\n }\n updateQueryStringParameter(originalRedirectUrl, 'source', 'communities')\n\n return publicSSO\n ? `${publicSSO}?returnUrl=${encodeURIComponent(\n originalRedirectUrl.toString(),\n )}`\n : originalRedirectUrl\n}\nexport const getUrlToSignUp = (\n url?: string,\n params?: {\n [k: string]: string\n },\n togetherBasePath = '/community',\n) => {\n const currentLocation =\n url || (typeof window !== 'undefined' ? window.location.href : '/')\n let origin = typeof window !== 'undefined' ? window.location.origin : ''\n if (!origin) {\n if (url && (url.startsWith('http://') || url.startsWith('https://'))) {\n origin = url.split('/').slice(0, 3).join('/')\n }\n }\n const onBoardingUrl = `${origin}${togetherBasePath}/on-boarding?return=${encodeURIComponent(\n currentLocation,\n )}`\n return getUrlToSSOWithReturnUrl(onBoardingUrl, params)\n}\n\nexport const slugifiedNameWithId = (\n name?: string,\n id?: number,\n slug?: string,\n _locale?: LocaleType,\n) => {\n if (slug && id) {\n return `${slug}-${id}`\n }\n\n return `${slugify(name || '', {\n lower: true,\n locale: _locale || locale,\n })}-${id}`\n}\n\nexport const getCareDoctorUrl = ({\n name,\n id,\n locale,\n}: {\n name?: string\n id?: number\n locale: LocaleType\n}) => {\n return `/care/${\n LOCALISED_SLUGS[locale || 'vi-VN']?.DOCTOR\n }/${slugifiedNameWithId(name, id)}`\n}\n\nexport const getCareHospitalUrl = ({\n name,\n id,\n slug,\n locale,\n}: {\n name?: string\n id?: number\n slug?: string\n locale: LocaleType\n}) => {\n return `/care/${\n LOCALISED_SLUGS[locale || 'vi-VN']?.HOSPITAL\n }/${slugifiedNameWithId(name, id, slug)}`\n}\n\nexport const getCareHospitalUrlAmp = ({\n slug,\n id,\n locale,\n}: {\n slug?: string\n id?: number\n locale: LocaleType\n}) => {\n return `/care/${LOCALISED_SLUGS[locale || 'vi-VN']?.HOSPITAL}/${slug}-${id}`\n}\n","import {\n Article,\n ArticleApi,\n ArticleAuthor,\n ArticleAuthorApi,\n ArticleExpert,\n ArticleExpertApi,\n Author,\n BMICondition,\n BMIResult,\n BMIResultApi,\n Category,\n CategoryApi,\n CategoryHealthToolApi,\n Comment,\n CommentApi,\n Community,\n CommunityApi,\n ExpertUserSummaryApi,\n FAQs,\n FAQsApi,\n HealthTool,\n HealthToolApi,\n HealthToolByCategory,\n Notification,\n NotificationApi,\n OvulationInfo,\n OvulationInfoApi,\n PageCategory,\n PageCategoryApi,\n Post,\n PostApi,\n PostDetail,\n PostPaginationApi,\n PostPaginationClient,\n PwgInfo,\n PwgInfoApi,\n ReportedPostDetail,\n ReviewedCategory,\n ReviewedCategoryApi,\n ReviewedUserApi,\n Role,\n SiteWideBanner,\n SiteWideBannerApi,\n Sponsor,\n SponsorApi,\n SpotlightSummary,\n SpotlightSummaryApi,\n SuggestedArticle,\n SuggestedArticleApi,\n ThrInfo,\n ThrInfoApi,\n Topic,\n TopicApi,\n TopicHealthTool,\n TopicHealthToolApi,\n TopicSubot,\n TopicSubotApi,\n} from '../interfaces/types'\n\nexport const formatAuthor = (author: ArticleAuthorApi): ArticleAuthor => {\n if (!author) return {} as ArticleAuthor\n\n return {\n displayName: author.display_name || null,\n avatar: author.avatar || null,\n thumbnailAvatar: author.avatar_thumbnail || null,\n profileUrl: author.profile_url || null,\n description: author.description || null,\n metaTag: author.meta_tag || '',\n } as ArticleAuthor\n}\nexport const formatArticleExpert = (\n expert: ArticleExpertApi,\n): ArticleExpert => {\n if (!expert) return {} as ArticleExpert\n\n return {\n id: expert.ID || null,\n name: expert.name || null,\n specialty: expert.specialty || null,\n avatar: expert.avatar || null,\n permalink: expert.permalink || null,\n thumbnailAvatar: expert.avatar_thumbnail || null,\n } as ArticleExpert\n}\nexport const formatArticle = (article: ArticleApi): Article => {\n if (!article) return {} as Article\n\n return {\n id: article.ID,\n postName: article.post_name,\n sponsor: article.sponsor ? formatSponsor(article.sponsor) : null,\n isSponsored: article.is_sponsored || null,\n postTitle: article.post_title || '',\n postModified: article.post_modified || '',\n postDate: article.post_date || '',\n modifiedTime: article.modified_time || '',\n permalink: article.permalink || '',\n featureImage: article.image || null,\n featureImageMobile: article.image_medium || null,\n featureImageMobileXs: article.image_thumbnail || null,\n author: formatAuthor(article.author),\n reviewer: article.reviewed_by\n ? formatAuthor(article.reviewed_by) || null\n : null,\n articleReviewed: article?.reviewed\n ? {\n ...article?.reviewed,\n author: formatUserProfile(article?.reviewed?.author),\n editor: formatUserProfile(article?.reviewed?.editor),\n expert: formatUserProfile(article?.reviewed?.expert),\n fact_check: formatUserProfile(article?.reviewed?.fact_check),\n }\n : null,\n category: formatCategory(article.category),\n postContent: article.post_content || null,\n sections: article.sections || null,\n categories: (article.categories || []).map(formatCategory),\n sources: article.sources || null,\n description: article.description || null,\n excerpt: article.excerpt || null,\n expert: formatArticleExpert(article.expert),\n metaTag: article.meta_tag || null,\n } as Article\n}\n\nexport const formatUserProfile = (\n user: ReviewedUserApi | null | undefined,\n): ReviewedUserApi | null | undefined => {\n if (typeof user === 'undefined' || !user) return null\n return {\n ...user,\n profile_url: user?.slug\n ? ['expert', 'medical'].includes(user?.role || '')\n ? `/expert/${user?.slug}`\n : `/author/${user?.slug}`\n : user.profile_url,\n }\n}\n\nexport const formatBMIResult = (data: BMIResultApi): BMIResult => {\n if (!data || !data.status) return {} as BMIResult\n\n return {\n status: data?.status as BMICondition,\n comparison: data?.comparison ?? '',\n assessmentData: [\n {\n tab: 'tools.condition',\n content: data?.condition ?? '',\n },\n {\n tab: 'tools.risks',\n content: data?.risk ?? '',\n },\n {\n tab: 'tools.suggestion',\n content: data?.suggestion ?? '',\n },\n ],\n chartData: data?.chart_data?.length > 0 ? data?.chart_data : [],\n disclaimer: data?.disclaimer ?? '',\n illustrator: data?.illustrator ?? '',\n faqs: data?.faqs ?? [],\n suggestedArticlesLink: data?.suggested_articles_link ?? '',\n // suggestedArticles: data?.suggested_articles?.map(formatArticle) ?? [],\n }\n}\n\nexport const formatSponsor = (sponsor: SponsorApi): Sponsor => {\n if (!sponsor) return {} as Sponsor\n\n return {\n title: sponsor.title,\n logo: sponsor.logo,\n link: sponsor.link,\n } as Sponsor\n}\n\nexport const formatReviewedCategory = (\n data: ReviewedCategoryApi,\n): ReviewedCategory => {\n return {\n postTitle: data.post_title,\n permalink: data.permalink,\n }\n}\n\nexport const formatCategory = (category: CategoryApi): Category => {\n if (!category) return {} as Category\n\n return {\n termId: category.term_id || null,\n sponsor: category.sponsor ? formatSponsor(category.sponsor) : null,\n isSponsored: category.is_sponsored || null,\n categoryName: category.cat_name || null,\n name: category.name || null,\n iconUrl: category.icon || '',\n slugName: category.category_nicename || null,\n description: category.description || null,\n featureImage: category.image || null,\n displayName: category.name || null,\n parent: category.parent || null,\n permalink: category.permalink || null,\n slug: category.slug || null,\n childCates:\n category.child_cates?.map((childCate) => {\n return formatCategory(childCate)\n }) || [],\n\n colorFeatureImage: category.color_feature_image || null,\n imageColor: category.image_color || null,\n textColor: category.text_color || null,\n catParent: category.cat_parent?.name\n ? {\n name: category.cat_parent.name,\n permalink: category.cat_parent.permalink,\n }\n : {},\n metaTag: category.meta_tag || '',\n reviewedBy: category.reviewed_by\n ? formatReviewedCategory(category.reviewed_by)\n : null,\n reviewedDate: category.reviewed_date || '',\n faqs: category.faqs\n ? category.faqs.map((faq) => formatFaqsCategory(faq))\n : null,\n } as Category\n}\n\nexport const formatCategoryApi = (category: PageCategoryApi): PageCategory => {\n if (!category) return {} as PageCategory\n\n return {\n categoryInfo: formatCategory(category.data.category) || null,\n explainersPosts: (category.data.explainers_posts || []).map(formatArticle),\n subCategories: (category.data.sub_categories || []).map(formatCategory),\n }\n}\n\nexport const formatFaqsCategory = (data: FAQsApi): FAQs => {\n return {\n title: data.title,\n content: data.content,\n }\n}\n\nexport const formatHealthTool = (healthTool: HealthToolApi): HealthTool => {\n if (!healthTool) return {} as HealthTool\n\n return {\n icon: healthTool.icon,\n link: healthTool.link.startsWith('http')\n ? healthTool.link\n : '/health-tools' + healthTool.link,\n subtitle: healthTool.subtitle,\n title: healthTool.title,\n }\n}\n\nexport const formatHealthToolTypeCategory = (\n category: CategoryHealthToolApi,\n): HealthToolByCategory => {\n if (!category) return {} as HealthToolByCategory\n\n return {\n termId: category?.term_id || 0,\n name: category?.name || '',\n healthTools:\n category?.health_tools?.map((tool: HealthTool) =>\n formatHealthTool(tool),\n ) ?? [],\n }\n}\nexport const formatCommunity = (community: CommunityApi): Community => {\n if (!community) return {} as Community\n return {\n topicCount: community.topics_count,\n postCount: community.posts_count,\n memberCount: community.members_count,\n thumbnail: community.thumbnail,\n coverImage: community.cover_image,\n mobileCoverImage: community.mobile_cover_image,\n name: community.name,\n description: community.description,\n slug: community.slug,\n id: community.id,\n joined: community.joined,\n isActive:\n community.is_active !== null && typeof community.is_active !== 'undefined'\n ? Boolean(community.is_active)\n : true,\n mappedCategoryId: community.mapped_category_id || 0,\n discoverCategory: community.discover_category\n ? {\n categoryId: community.discover_category.category_id || 0,\n name: community.discover_category.name || '',\n }\n : null,\n isHidden: Boolean(community.is_hidden),\n } as Community\n}\n\nexport const formatTopic = (topic: TopicApi): Topic => {\n if (!topic) return {} as Topic\n return {\n id: topic.id || 0,\n name: topic.name || '',\n image: topic.thumbnail || '',\n slug: topic.slug || '',\n url: '/' + topic.community?.slug + '/' + topic?.slug || '',\n description: topic.description || '',\n joined: topic.joined || false,\n postCount: topic.count_posts || 0,\n memberCount: topic.count_members || 0,\n communityId: String(topic.community?.id),\n communitySlug: topic.community?.slug,\n communityName: topic.community?.name,\n order: topic.order || 0,\n isActive:\n topic.is_active !== null && typeof topic.is_active !== 'undefined'\n ? Boolean(topic.is_active)\n : true,\n mappedCategoryId: topic.mapped_category_id || 0,\n discoverCategory: topic.discover_category\n ? {\n categoryId: topic.discover_category.category_id || 0,\n name: topic.discover_category.name || '',\n }\n : null,\n isHidden: Boolean(topic.is_hidden),\n }\n}\n\nexport const formatPost = (post: PostApi): Post => {\n if (!post) return {} as Post\n\n return {\n id: post.id,\n topics:\n post.topics?.map((topic) => ({\n id: topic.id || 0,\n name: topic.name || '',\n slug: topic.slug || '',\n url: '/' + post.community?.slug + '/' + topic.slug,\n communityId: String(post.community?.id),\n communitySlug: post.community?.slug || '',\n communityName: post.community?.name || '',\n isHidden: Boolean(topic.is_hidden),\n isActive: true,\n })) || [],\n community: {\n id: post.community?.id || 0,\n name: post.community?.name || '',\n slug: post.community?.slug || '',\n isActive: true,\n isHidden: Boolean(post.community?.is_hidden),\n },\n slug: post.slug || '',\n author: {\n id: post.user?.id || 0,\n username: post.user?.user_name || '',\n email: post.user?.email || '',\n name: post.user?.name || '',\n avatar: post.user?.avatar || '',\n role: post.user?.role\n ? (post.user?.role?.toLowerCase() as Role)\n : ('' as Role),\n type: post.user?.type || '',\n partnerId: post.user?.partner_id ? String(post.user?.partner_id) : '',\n title: post.user?.title || '',\n doctorId: post.user?.doctor_id ? String(post.user?.doctor_id) : '',\n hospitalId: post.user?.hospital_id ? String(post.user?.hospital_id) : '',\n },\n previewUrl: {\n title: post.preview_title || '',\n url: post.preview_link || '',\n image: post.preview_image || '',\n description: post.preview_description || '',\n },\n createdAt: post.created_at || '',\n scheduleDateTime: post.schedule_datetime || '',\n photos: post.images || [],\n description: post.description || '',\n commentsCount: post.comments_count || 0,\n likesCount: post.likes_count || 0,\n title: post.name || '',\n isPin: !!post.is_pin,\n pinDate: post.pin_date || '',\n liked: post.liked || false,\n bookmarked: Boolean(post.bookmarked) || false,\n mentions: post.mentions || [],\n commented: Boolean(post.commented) || false,\n introUrl: post.intro_url || '',\n bannerImage: post.banner_image || '',\n // authorExpertId: post.author_expert_id ? String(post.author_expert_id) : '',\n }\n}\nexport const formatPostPagination = (\n pagination: PostPaginationApi,\n): PostPaginationClient => {\n if (!pagination) return {} as PostPaginationClient\n\n return {\n currentPage: pagination.current || 0,\n lastPage: pagination.last || 0,\n total: pagination.total_items || 0,\n }\n}\n\nexport const formatNotification = (\n notification: NotificationApi,\n): Notification => {\n if (!notification) return {} as Notification\n return {\n time: notification.created_at,\n content: notification.content,\n postId: String(notification.post_id),\n fromUser: {\n name: notification.from_user?.name,\n id: notification.from_user?.id,\n avatar: notification.from_user?.avatar,\n },\n toUserId: String(notification.to_user_id),\n postSlug: notification.post_slug || '',\n communitySlug: notification.community_slug || '',\n }\n}\n\nexport const formatSpotlightsList = (\n spotligts: SpotlightSummaryApi[],\n): SpotlightSummary[] => {\n if (!spotligts) return []\n return spotligts.map((spotlight) => ({\n id: spotlight.ID,\n name: spotlight.name,\n permalink: spotlight.permalink,\n image: spotlight?.small_banner || spotlight?.image,\n imageMedium: spotlight?.image_medium || null,\n imageThumbnail: spotlight?.image_thumbnail || null,\n startDate: spotlight?.start_date,\n endDate: spotlight?.end_date,\n }))\n}\n\nexport const formatOvulationInfo = (\n data: OvulationInfoApi | null,\n): OvulationInfo => {\n if (!data) return {} as OvulationInfo\n\n return {\n disclaimer: data.disclaimer,\n info: data.info || [],\n reviewedBy: data.reviewed_by\n ? {\n id: data.reviewed_by.ID,\n permalink: data.reviewed_by.permalink,\n name: data.reviewed_by.name,\n postTitle: data.reviewed_by.post_title,\n }\n : null,\n reviewedDate: data.reviewed_date,\n } as OvulationInfo\n}\nexport const formatSuggestedArticle = (\n data: SuggestedArticleApi | null,\n): SuggestedArticle => {\n if (!data) return {} as SuggestedArticle\n\n return {\n postId: data.post_id || null,\n categoryId: data.category_id || null,\n postUrl: data.post_url || null,\n postReviewed: data.post_reviewed || null,\n postPageviews: data.post_pageviews || null,\n postRank: data.post_rank || null,\n isPin: data.is_pin || null,\n frequency: data.frequency || null,\n topic: data.topic || null,\n } as SuggestedArticle\n}\nexport const formatTopicHealthTool = (\n data: TopicHealthToolApi | null,\n): TopicHealthTool => {\n if (!data) return {} as TopicHealthTool\n\n return {\n id: data.tool_id || null,\n topicFrequency: data.frequency || null,\n topicId: data.topic_id || null,\n topicName: data.topic_name || null,\n isPinned: !!data.is_pin || null,\n toolLink: data.tool_link || '',\n } as TopicHealthTool\n}\nexport const formatComment = (data: CommentApi | null): Comment => {\n if (!data) return {} as Comment\n\n return {\n content: data.content,\n countLikes: data.likes_count,\n countReplies: data.replies_count,\n createdAt: data.created_at,\n createdTime: data.created_time,\n id: String(data.id),\n images: data.image || [],\n link: data.link || null,\n replies:\n data.replies && data.replies.length > 0\n ? data.replies.map(formatComment)\n : [],\n author: {\n id: data.user?.id || 0,\n username: data.user?.user_name || '',\n name: data.user?.name || '',\n role: data.user?.role\n ? (data.user?.role?.toLowerCase() as Role)\n : ('' as Role),\n avatar: data.user?.avatar || '',\n type: data.user?.type || '',\n email: data.user?.email || '',\n partnerId: data.user?.partner_id ? String(data.user?.partner_id) : '',\n title: data.user?.title || '',\n doctorId: data.user?.doctor_id ? String(data.user?.doctor_id) : '',\n hospitalId: data.user?.hospital_id ? String(data.user?.hospital_id) : '',\n },\n liked: !!data.liked,\n mentionedUser: data.mentioned\n ? {\n id: data.mentioned?.id || 0,\n username: data.mentioned?.user_name || '',\n name: data.mentioned?.name || '',\n role: data.mentioned?.role\n ? (data.mentioned?.role?.toLowerCase() as Role)\n : ('' as Role),\n avatar: data.mentioned?.avatar || '',\n type: data.mentioned?.type || '',\n email: data.mentioned?.email || '',\n partnerId: data.mentioned?.partner_id\n ? String(data.mentioned?.partner_id)\n : '',\n doctorId: data.mentioned?.doctor_id\n ? String(data.mentioned?.doctor_id)\n : '',\n hospitalId: data.mentioned?.hospital_id\n ? String(data.mentioned?.hospital_id)\n : '',\n title: data.mentioned?.title || '',\n }\n : null,\n mentions: data.mentions || [],\n } as Comment\n}\n\nexport const formatReportedPostToPostDetail = (\n data: ReportedPostDetail | null,\n): PostDetail => {\n if (!data) return {} as PostDetail\n\n return {\n name: data.title,\n description: data.description,\n images: data.images,\n likes_count: data.count_likes,\n comments_count: data.count_comments,\n topics: [],\n // created_at:\n // created_date?: string\n // preview_image:\n slug: data.post_slug,\n id: data.post_id,\n is_pin: data.is_pin,\n pin_date: '',\n post_type: data.post_type,\n schedule_datetime: data.schedule_datetime,\n is_active: data.is_active,\n preview_title: data.preview_title || '',\n preview_image: data.preview_image || '',\n preview_description: data.preview_description || '',\n preview_link: data.preview_link || '',\n user: data.user,\n created_at: '',\n created_time: '',\n community: {\n id: data.community_id,\n name: data.community_name,\n slug: data.community_slug,\n description: '',\n },\n }\n}\nexport const formatTopicSubot = (data: TopicSubotApi | null): TopicSubot => {\n if (!data) return {} as TopicSubot\n\n return {\n chatBotId: data.subot_id,\n isPinned: data.is_pin,\n topicId: data.topic_id,\n topicFrequency: data.frequency,\n } as TopicSubot\n}\n\nexport const formatSiteWideBanner = (\n sitewide_banner?: SiteWideBannerApi | null,\n type?: 'article' | 'category' | 'home',\n): SiteWideBanner | null => {\n if (typeof sitewide_banner === 'undefined' || !sitewide_banner) return null\n return {\n content: sitewide_banner?.content || '',\n icon: sitewide_banner?.icon || '',\n type: type || 'other',\n }\n}\n\nexport const formatPWGContent = (data: PwgInfoApi | null): PwgInfo => {\n if (!data) return {} as PwgInfo\n return {\n disclaimer: data.disclaimer,\n info: data.info || [],\n reviewedBy: data.reviewed_by ? formatUserProfile(data.reviewed_by) : null,\n reviewedDate: data.reviewed_date,\n metaTag: data.meta_tag,\n } as PwgInfo\n}\n\nexport const formatUserProfileUrl = (\n user?: ReviewedUserApi | ExpertUserSummaryApi | Author | null,\n): string => {\n if (typeof user === 'undefined' || !user) return ''\n\n return user?.turn_off_profile\n ? ''\n : user?.slug\n ? ['expert', 'medical'].includes(user?.role || '')\n ? `/expert/${user?.slug}`\n : `/author/${user?.slug}`\n : user?.profile_url || user?.permalink || '#'\n}\n\nexport const formatTHRContent = (data: ThrInfoApi | null): ThrInfo => {\n if (!data) return {} as ThrInfo\n return {\n disclaimer: data.disclaimer,\n info: data.info || [],\n reviewedBy: data.reviewed_by ? formatUserProfile(data.reviewed_by) : null,\n reviewedDate: data.reviewed_date,\n metaTag: data.meta_tag,\n } as ThrInfo\n}\n","import React, { createContext, ReactNode, useContext } from 'react'\n\nimport { deleteCookie } from 'misc/cookieHelper'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { getUrlToSignUp } from '../api/utils'\nimport { BEARER_TOKEN_COOKIE } from '../interfaces/constants'\n\nexport type Context = {\n defaultParams?: {\n [k: string]: string\n }\n}\n\nexport const TogetherAuthConfigContext = createContext({} as Context)\n\nexport const TogetherAuthConfigContextProvider = ({\n children,\n defaultParams,\n}: {\n children: ReactNode\n defaultParams?: {\n [k: string]: any\n }\n}) => {\n return (\n <TogetherAuthConfigContext.Provider\n value={{\n defaultParams,\n }}\n >\n {children}\n </TogetherAuthConfigContext.Provider>\n )\n}\n\nexport const useTogetherAuthRequiredAction = (propsParams?: {\n [k: string]: any\n}) => {\n const {\n data: {\n userInfo,\n env: { togetherBasePath },\n },\n } = useContext(TogetherComponentGlobalContext)\n const { defaultParams } = useContext(TogetherAuthConfigContext) || {}\n const isLoggedIn = userInfo?.id\n const isFirstInteract =\n userInfo &&\n typeof userInfo.communities_interacted === 'number' &&\n userInfo.communities_interacted === 0\n const authActionWrapper = (\n func?: () => any,\n extraParams?: {\n [k: string]: any\n },\n ) => {\n const params = {\n ...defaultParams,\n ...propsParams,\n ...extraParams,\n }\n if (!isLoggedIn || isFirstInteract) {\n if (!isLoggedIn) {\n deleteCookie(BEARER_TOKEN_COOKIE)\n }\n if (params?._joinCommunityIds) {\n localStorage.setItem(\n 'to_join_community_ids',\n JSON.stringify(\n Array.from(\n new Set(\n (\n JSON.parse(\n localStorage.getItem('to_join_community_ids') || '[]',\n ) || []\n )\n .concat(params._joinCommunityIds)\n .filter(Boolean),\n ),\n ),\n ),\n )\n delete params?._joinCommunityIds\n }\n if (params?._joinTopicIds) {\n localStorage.setItem(\n 'to_join_topic_ids',\n JSON.stringify(\n Array.from(\n new Set(\n (\n JSON.parse(\n localStorage.getItem('to_join_topic_ids') || '[]',\n ) || []\n )\n .concat(params._joinTopicIds)\n .filter(Boolean),\n ),\n ),\n ),\n )\n delete params?._joinTopicIds\n }\n const currentLocation = params?._location || window.location.href\n delete params?._location\n window.location.href = getUrlToSignUp(\n currentLocation,\n params,\n togetherBasePath,\n )\n return null\n } else {\n return func && func()\n }\n }\n return {\n authActionWrapper,\n params: {\n ...defaultParams,\n ...propsParams,\n },\n }\n}\n","import styled, { keyframes } from 'styled-components'\n\nexport const StyledLoading = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1em;\n button {\n position: relative;\n }\n`\n\nconst circle = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n`\nexport const StyledLoadingCard = styled.div`\n display: flex;\n width: fit-content;\n width: -moz-fit-content;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 1rem 2rem;\n background: white;\n border-radius: 6px;\n box-shadow: -1px 1px 2px rgba(67, 70, 74, 0.0001),\n -2px 2px 5px rgba(67, 86, 100, 0.123689);\n .loading-spinner {\n width: 24px;\n height: 24px;\n margin-bottom: 0.5rem;\n animation: ${circle} 1.2s linear infinite;\n }\n &[data-is-marrybaby='true'] {\n box-shadow: none;\n }\n`\n","import React from 'react'\n\nimport { Button } from 'components/atoms/button'\nimport { useTranslations } from 'hooks/useTranslations'\n\nimport { StyledLoading } from './index.styled'\n\nexport type Props = {\n size?: 'lg' | 'md' | 'sm'\n className?: string\n}\n\nconst Loading = ({ className, size = 'md' }: Props) => {\n const { t } = useTranslations()\n\n return (\n <StyledLoading className={className}>\n <Button size={size} color=\"transparent\" isLoading>\n {t('loading')}\n </Button>\n </StyledLoading>\n )\n}\n\nexport { Loading }\n","import React, { CSSProperties, useContext } from 'react'\n\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { abbreviateNumber } from 'misc/number'\n\nimport { getCurrentHref } from '../../../api/utils'\nimport MBComment from '../../../assets/marrybaby/svg/comment.svg'\nimport MBCommentSolid from '../../../assets/marrybaby/svg/commentSolid.svg'\nimport MBHeart from '../../../assets/marrybaby/svg/heart.svg'\nimport MBHeartSolid from '../../../assets/marrybaby/svg/heartSolid.svg'\nimport MBShare from '../../../assets/marrybaby/svg/share.svg'\nimport IconEdit from '../../../assets/svg/icon-edit.svg'\nimport IconHeartEmpty from '../../../assets/svg/icon-heart-empty.svg'\nimport IconHeartFillRed from '../../../assets/svg/icon-heart-fill-red.svg'\nimport IconReplyArrow from '../../../assets/svg/icon-reply-arrow.svg'\nimport IconReplyCircleEmpty from '../../../assets/svg/icon-reply-circle-empty.svg'\nimport IconReplyCircleFill from '../../../assets/svg/icon-reply-circle-fill.svg'\nimport { TogetherComponentGlobalContext } from '../../../togetherComponentGlobalContext'\nimport {\n StyledCardReactions,\n StyledLeftIcon,\n StyledRightIcon,\n StyledText,\n} from './index.styled'\n\nexport enum CardReactionType {\n post = 1,\n reply = 2,\n}\n\nexport type Props = {\n type: CardReactionType\n loveCount?: number\n replyCount?: number\n replyPadding?: boolean\n liked?: boolean\n isReplied?: boolean\n hideCommentIcon?: boolean\n className?: string\n onCommentClick?: () => void\n onLikeClick?: () => void\n onCommentCountClick?: () => void\n onShareClick?: () => void\n style?: CSSProperties\n showingMostEngaging?: boolean\n}\n\nconst CardReactions = ({\n type,\n loveCount,\n replyCount,\n replyPadding,\n liked,\n isReplied,\n onCommentClick,\n onLikeClick,\n onCommentCountClick,\n onShareClick,\n className,\n style,\n hideCommentIcon,\n showingMostEngaging,\n}: Props) => {\n const {\n data: {\n locale,\n router,\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n const { asPath, basePath } = router || {}\n const { t } = useTranslations()\n const isMarryBabyReply = type === CardReactionType.reply && isMarryBaby\n\n // /api/v1/auth/post?post_slug=test-post-title-3607&website_url={{website_url}}\n return (\n <StyledCardReactions\n data-show-most-engaging={showingMostEngaging}\n data-type={type === CardReactionType.post ? 'post' : 'reply'}\n data-reply-padding={type === CardReactionType.reply && replyPadding}\n className={className}\n style={style}\n >\n <div className=\"reaction-icon-container\">\n <div\n onClick={() => {\n onLikeClick && onLikeClick()\n }}\n className=\"child-no-click\"\n data-event-category=\"Together\"\n data-event-action=\"Like Click\"\n data-event-label={getCurrentHref(locale || 'vi-VN', basePath, asPath)}\n >\n <StyledText\n style={{\n marginRight: isMarryBaby ? 0 : '1rem',\n }}\n size=\"p3\"\n >\n <StyledLeftIcon\n src={\n isMarryBaby\n ? liked\n ? MBHeartSolid\n : MBHeart\n : liked\n ? IconHeartFillRed\n : IconHeartEmpty\n }\n />\n {isMarryBaby\n ? t('post.likesCount', {\n count: loveCount || 0,\n })\n : loveCount && loveCount > 0\n ? abbreviateNumber(loveCount)\n : ''}\n </StyledText>\n </div>\n {!isMarryBabyReply ? (\n <>\n {!hideCommentIcon && (\n <div\n onClick={() => {\n onCommentCountClick && onCommentCountClick()\n }}\n className=\"child-no-click\"\n data-event-category=\"Together\"\n data-event-action=\"Comment Click\"\n data-event-label={getCurrentHref(\n locale || 'vi-VN',\n basePath,\n asPath,\n )}\n >\n <StyledText size=\"p3\">\n <StyledLeftIcon\n src={\n isMarryBaby\n ? isReplied\n ? MBCommentSolid\n : MBComment\n : isReplied\n ? IconReplyCircleFill\n : IconReplyCircleEmpty\n }\n />\n {isMarryBaby\n ? t('post.commentCount', {\n count: replyCount || 0,\n })\n : replyCount && replyCount > 0\n ? abbreviateNumber(replyCount)\n : ''}\n </StyledText>\n </div>\n )}\n {isMarryBaby && (\n <div\n onClick={() => {\n onShareClick && onShareClick()\n }}\n className=\"child-no-click\"\n data-event-category=\"Together\"\n data-event-action=\"Share Click\"\n data-event-label={getCurrentHref(\n locale || 'vi-VN',\n basePath,\n asPath,\n )}\n >\n <StyledText size=\"p3\">\n <StyledLeftIcon src={MBShare} />\n {isMarryBaby\n ? t('post.shareCount', {\n count: 0,\n })\n : ''}\n </StyledText>\n </div>\n )}\n </>\n ) : (\n <div onClick={onCommentClick} className=\"child-no-click\">\n <Text className=\"reaction-reply\" size=\"p3\">\n {t('cardReactions.reply')}\n </Text>\n </div>\n )}\n </div>\n\n {!isMarryBaby && (\n <div\n className=\"reaction-comment-button child-no-click\"\n onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n onCommentClick && onCommentClick()\n }}\n >\n <StyledText size=\"p3\" type=\"bold\" color=\"#2D87F3\">\n {type === CardReactionType.post ? (\n <>\n <StyledRightIcon src={IconEdit} />\n {t('cardReactions.comment')}\n </>\n ) : (\n <>\n <StyledRightIcon src={IconReplyArrow} />\n {t('cardReactions.reply')}\n </>\n )}\n </StyledText>\n </div>\n )}\n </StyledCardReactions>\n )\n}\n\nexport { CardReactions }\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledUserAvatar = styled.div`\n width: 40px;\n height: 40px;\n flex-shrink: 0;\n cursor: pointer;\n font-size: 20px;\n\n img {\n border-radius: 50%;\n }\n\n .avatar {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .avatar-default {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${(props: ThemeProps) =>\n props.theme.colors.secondaryBase};\n border-radius: 50%;\n color: white;\n font-size: 1em;\n font-weight: bold;\n line-height: 1;\n }\n\n &[data-is-marrybaby='true'] {\n .avatar-default {\n background-color: ${(props: ThemeProps) => props.theme.mbColors.pink};\n }\n }\n`\n","import React, { CSSProperties, useState, useEffect, useContext } from 'react'\n\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { StyledUserAvatar } from './index.styled'\n\nexport type Props = {\n style?: CSSProperties\n className?: string\n avatar?: string\n username?: string\n isMarryBaby?: boolean\n}\n\nconst UserAvatar = ({\n className,\n isMarryBaby: isMarryBabyProp,\n style,\n avatar,\n username,\n}: Props) => {\n const {\n data: {\n env: { isMarryBaby: isMarryBabyContext },\n },\n } = useContext(TogetherComponentGlobalContext)\n const isMarryBaby =\n typeof isMarryBabyProp === 'boolean' ? isMarryBabyProp : isMarryBabyContext\n const [tempAvatar, setTempAvatar] = useState(false)\n useEffect(() => {\n const img = new Image()\n img.onerror = () => {\n setTempAvatar(true)\n }\n img.src = avatar\n }, [])\n return (\n <StyledUserAvatar\n data-is-marrybaby={isMarryBaby}\n className={className}\n style={style}\n >\n {avatar && !tempAvatar ? (\n <img\n src={avatar}\n className=\"avatar\"\n alt=\"avatar\"\n onError={() => {\n // e.currentTarget.onerror = null\n setTempAvatar(true)\n }}\n />\n ) : (\n <div className=\"avatar avatar-default\">\n {username && username?.length > 0 ? username[0].toUpperCase() : 'A'}\n </div>\n )}\n </StyledUserAvatar>\n )\n}\n\nexport { UserAvatar }\n","import styled from 'styled-components'\n\nexport const StyledCardLink = styled.div`\n .link-info-container {\n padding: 0.5rem 1rem;\n background: #f4faff;\n }\n .link-image-wrapper {\n position: relative;\n overflow: hidden;\n width: 100%;\n padding-top: min(280px, 56.25%);\n .link-image-blur {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 110%;\n height: 110%;\n /* Add the blur effect */\n -webkit-filter: blur(8px);\n filter: blur(8px);\n object-fit: cover;\n object-position: center;\n opacity: 0.8;\n transform: translate(-50%, -50%);\n }\n .link-image {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n object-position: center;\n }\n }\n a {\n text-decoration: none;\n }\n &[data-is-marrybaby='true'] {\n overflow: hidden;\n border-radius: 1rem;\n .link-info-container {\n padding-bottom: 1rem;\n background: #f3f3f3;\n p {\n color: #2661ad;\n }\n .link-logo {\n max-width: 2rem;\n height: 13px;\n margin-right: 4px;\n object-fit: contain;\n vertical-align: middle;\n }\n }\n .link-image-wrapper {\n padding-top: min(360px, 56.25%);\n .link-image {\n object-fit: cover;\n }\n }\n }\n`\n","// SOURCE: https://stackoverflow.com/a/10601315\nexport const abbreviateNumber = (value: number): string => {\n let newValue = String(value)\n if (value >= 1000) {\n const suffixes = ['', 'k', 'm', 'b', 't']\n const suffixNum = Math.floor(('' + value).length / 3)\n let shortValue\n for (let precision = 2; precision >= 1; precision--) {\n shortValue = parseFloat(\n (suffixNum != 0\n ? value / Math.pow(1000, suffixNum)\n : value\n ).toPrecision(precision),\n )\n const dotLessShortValue = (shortValue + '').replace(/[^a-zA-Z 0-9]+/g, '')\n if (dotLessShortValue.length <= 2) {\n break\n }\n }\n if (shortValue && shortValue % 1 != 0) shortValue = shortValue.toFixed(1)\n newValue = shortValue + suffixes[suffixNum]\n }\n return newValue\n}\n","import { Text } from 'components/atoms/text'\nimport { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledCardReactions = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem;\n cursor: pointer;\n &[data-type='post'] {\n border-top: 1px solid #f2f2f2;\n &[data-show-most-engaging='true'] {\n border-bottom: 1px solid #f2f2f2;\n }\n }\n &[data-type='reply'] {\n &[data-reply-padding='true'] {\n padding-left: 2.5rem;\n }\n }\n .reaction-icon-container {\n display: flex;\n }\n .child-no-click {\n * {\n pointer-events: none;\n }\n }\n [data-is-marrybaby='true'] {\n border-top: none;\n &[data-type='post'] {\n border-top: none;\n }\n &::before {\n position: absolute;\n top: 0;\n left: 50%;\n width: calc(100% - 2rem);\n height: 1px;\n background: ${(props: ThemeProps) => props.theme.mbColors.lightGray};\n content: ' ';\n transform: translateX(-50%);\n }\n .reaction-icon-container {\n width: 100%;\n justify-content: space-between;\n p {\n color: #9495a0;\n }\n .reaction-reply {\n color: #2661ad;\n }\n }\n &[data-type='reply'] {\n .reaction-icon-container {\n justify-content: start;\n > div {\n &:not(:last-child) {\n position: relative;\n margin-right: 22px;\n &::after {\n position: absolute;\n top: 50%;\n left: calc(100% + 0.5rem);\n color: #9495a0;\n content: '•';\n font-size: 14px;\n transform: translateY(-50%);\n }\n }\n }\n }\n }\n }\n`\n\nexport const StyledLeftIcon = styled.img`\n width: 1.5rem;\n height: 1.5rem;\n margin-right: 2px;\n\n [data-is-marrybaby='true'] {\n margin-right: 5px;\n }\n`\nexport const StyledRightIcon = styled.img`\n width: 1rem;\n height: 1rem;\n margin-right: 0.5rem;\n`\nexport const StyledText = styled(Text)`\n display: flex;\n align-items: center;\n`\n","import React, { CSSProperties, useContext, useState } from 'react'\n\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport MBSortBy from '../../../assets/marrybaby/svg/sortBy.svg'\nimport IconSortArrow from '../../../assets/svg/icon-sort-arrow.svg'\nimport { TreePopoverMenu } from '../../organisms/popoverMenu/treePopoverMenu'\nimport { LabelSortPin } from './index'\n\nexport enum LabelSortingValue {\n latest = 'latest',\n oldest = 'oldest',\n popular = 'popular',\n}\n\nexport type ChoiceItem = {\n label: string\n value: string\n}\n\nexport type Props = {\n onChange?: (v: string) => void\n color?: 'gray' | 'white'\n className?: string\n style?: CSSProperties\n leftLabel?: string\n rightLabel?: string\n value?: LabelSortingValue\n choices?: ChoiceItem[]\n}\n\nexport const LabelSorting = ({\n onChange,\n className,\n style,\n leftLabel,\n rightLabel,\n color,\n value,\n choices,\n}: Props) => {\n const {\n data: {\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n return (\n <LabelSortPin\n label={leftLabel}\n rightLabel={\n <TreePopoverMenu\n position=\"bottom\"\n align=\"end\"\n data={{\n isShowheader: false,\n type: 'list',\n list: choices.map((c) => ({\n label: c.label,\n onClick: () => onChange && onChange(String(c.value)),\n selected: c.value === value,\n className: 'bold-item',\n })),\n }}\n toggleButtonContent={\n <div\n style={{\n display: 'flex',\n }}\n >\n <Text\n style={{\n display: 'flex',\n alignItems: 'center',\n fontWeight: 'normal',\n marginRight: 12,\n }}\n size=\"p4\"\n >\n {rightLabel}\n </Text>\n <img\n src={isMarryBaby ? MBSortBy : IconSortArrow}\n style={{\n width: 16,\n height: 16,\n alignSelf: 'center',\n }}\n />\n </div>\n }\n />\n }\n color={'gray' || color}\n className={className}\n style={style}\n />\n )\n}\n\n// HOOKS for use with this component\nexport const useSortChoices = (choices: ChoiceItem[]) => {\n const [selectedValue, setSelectedValue] = useState<LabelSortingValue>(\n LabelSortingValue.latest,\n )\n const selectedChoice = choices?.find((c) => c.value === selectedValue)\n\n return {\n setSortChoiceValue: setSelectedValue,\n selectedSortChoice: selectedChoice,\n sortedChoices: choices,\n }\n}\nexport const useSortCommentChoices = () => {\n const { t } = useTranslations()\n return useSortChoices([\n {\n label: t('choicePopover.latest'),\n value: LabelSortingValue.latest,\n },\n {\n label: t('choicePopover.oldest'),\n value: LabelSortingValue.oldest,\n },\n ])\n}\n","import styled from 'styled-components'\n\nexport const StyledTagTopic = styled.div`\n display: flex;\n width: 100%;\n padding: 0.5rem 0;\n cursor: grab;\n overflow-x: auto;\n .tag-link-item {\n white-space: nowrap;\n padding: 5px 12px;\n border: 1px solid #e4e8ec;\n background: white;\n border-radius: 2rem;\n cursor: pointer;\n -webkit-user-drag: none;\n user-select: none;\n }\n .tag-link-item:not(:first-child) {\n margin-left: 0.5rem;\n }\n\n ::-webkit-scrollbar {\n width: 0;\n }\n &.sliding {\n cursor: grabbing;\n user-select: none;\n a {\n pointer-events: none;\n }\n }\n`\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledLabelSortPin = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n cursor: pointer;\n &[data-color='gray'] {\n background: ${(props: ThemeProps) => props.theme.colors.neutral50};\n }\n &[data-color='white'] {\n border-bottom: 1px solid #e4e8ec;\n background: ${(props: ThemeProps) => props.theme.colors.white};\n }\n\n .popover-menu__btn {\n display: flex;\n min-width: 2rem;\n height: 2rem;\n align-items: center;\n padding: 8px 0 !important;\n border: none;\n margin-left: 0.5rem;\n background: transparent;\n > span {\n display: flex;\n align-items: center;\n }\n\n &:hover {\n background: transparent !important;\n }\n }\n\n &.label-pinned {\n border-radius: 6px 6px 0 0;\n .label-sort-pin-icon {\n width: 16px;\n height: 16px;\n vertical-align: middle;\n }\n }\n\n &[data-is-marrybaby='true'] {\n padding: 0.75rem 1rem;\n border-radius: 16px 16px 0px 0px;\n &[data-color='white'] {\n border-bottom: none;\n }\n &[data-color='gray'] {\n background: #f3f3f3;\n }\n .popover-menu__btn {\n width: unset;\n }\n\n &.label-pinned {\n border-bottom: none;\n background: #fff9eb;\n border-radius: 1rem 1rem 0 0;\n .label-sort-pin-icon {\n margin-right: 8px;\n }\n .label-sort-pin-heading {\n color: #fb8c00;\n }\n }\n &.label-sorting {\n ${MediaQueries.tdUp} {\n padding-bottom: 1.5rem;\n margin-bottom: -0.75rem;\n }\n }\n }\n`\n","import React, { CSSProperties, ReactNode, useContext } from 'react'\n\nimport { Text } from 'components/atoms/text'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { StyledLabelSortPin } from './index.styled'\n\nexport type Props = {\n label: ReactNode\n rightLabel?: ReactNode\n onClick?: () => unknown\n color?: 'gray' | 'white'\n className?: string\n style?: CSSProperties\n}\n\nconst LabelSortPin = ({\n label,\n rightLabel,\n onClick,\n color,\n className,\n style,\n}: Props) => {\n const {\n data: {\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n return (\n <StyledLabelSortPin\n data-is-marrybaby={isMarryBaby}\n data-color={color}\n onClick={onClick}\n className={className}\n style={style}\n >\n <Text\n className=\"label-sort-pin-heading\"\n size={isMarryBaby ? 'p4' : 'p3'}\n type=\"bold\"\n >\n {label}\n </Text>\n {rightLabel}\n </StyledLabelSortPin>\n )\n}\n\nexport { LabelSortPin }\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledPopoverMenu = styled.div`\n position: relative;\n display: content;\n\n .popover-menu__btn {\n /* position: relative; */\n > span {\n width: 100%;\n height: 100%;\n > img {\n width: 100%;\n height: 100%;\n }\n }\n }\n\n .popover-menu__content {\n position: absolute;\n z-index: 10;\n width: 320px;\n padding: 8px;\n border: none;\n background: #fff;\n border-radius: 8px;\n box-shadow: 3px 3px 20px rgba(0, 0, 0, 0.1);\n\n &::before {\n position: absolute;\n width: 16px;\n height: 8px;\n background: #fff;\n content: '';\n }\n\n &.--position {\n &-top {\n bottom: calc(100% + 8px);\n\n &.--align {\n &-start {\n left: 0;\n\n &::before {\n top: 100%;\n left: 16px;\n clip-path: polygon(0 0, 50% 100%, 100% 0);\n }\n }\n\n &-end {\n left: 100%;\n transform: translateX(calc(-100% + 1rem));\n\n &::before {\n top: 100%;\n right: 16px;\n clip-path: polygon(0 0, 50% 100%, 100% 0);\n }\n }\n }\n }\n\n &-right {\n left: calc(100% + 8px);\n\n &.--align {\n &-start {\n top: 0;\n\n &::before {\n top: 16px;\n left: 0;\n width: 8px;\n height: 16px;\n clip-path: polygon(0 50%, 100% 0%, 100% 100%);\n transform: translateX(-100%);\n }\n }\n\n &-end {\n top: 100%;\n transform: translateX(calc(-100% + 1rem));\n\n &::before {\n bottom: 16px;\n left: 0;\n width: 8px;\n height: 16px;\n clip-path: polygon(0 50%, 100% 0%, 100% 100%);\n transform: translateX(-100%);\n }\n }\n }\n }\n\n &-bottom {\n top: calc(100% + 8px);\n\n &.--align {\n &-start {\n left: 0;\n\n &::before {\n bottom: 100%;\n left: 16px;\n clip-path: polygon(50% 0%, 0% 100%, 100% 100%);\n }\n }\n\n &-end {\n left: 100%;\n transform: translateX(calc(-100% + 1rem));\n\n &::before {\n right: 16px;\n bottom: 100%;\n clip-path: polygon(50% 0%, 0% 100%, 100% 100%);\n }\n }\n }\n }\n\n &-left {\n left: -8px;\n transform: translateX(-100%);\n\n &.--align {\n &-start {\n top: 0;\n\n &::before {\n top: 16px;\n left: 100%;\n width: 8px;\n height: 16px;\n clip-path: polygon(0 0%, 100% 50%, 0% 100%);\n transform: translateX(0);\n }\n }\n\n &-end {\n bottom: 0;\n\n &::before {\n bottom: 16px;\n left: 100%;\n width: 8px;\n height: 16px;\n clip-path: polygon(0 0%, 100% 50%, 0% 100%);\n transform: translateX(0);\n }\n }\n }\n }\n }\n }\n\n &[data-is-marrybaby='true'] {\n .popover-menu__content {\n padding: 0;\n border-radius: 12px;\n /* &::before {\n display: none;\n } */\n }\n }\n`\n\nexport const StyledTree = styled.div`\n display: flex;\n /* max-height: 300px; */\n flex-direction: column;\n cursor: default;\n\n .__header {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1rem 0;\n margin-bottom: 8px;\n\n .__back-btn {\n position: absolute;\n top: 50%;\n left: 8px;\n width: 16px;\n height: 16px;\n cursor: pointer;\n transform: translateY(-50%);\n }\n }\n\n .tree-text-description {\n padding-right: 8px;\n padding-left: 8px;\n margin-top: -8px;\n margin-bottom: 8px;\n font-size: 14px;\n font-weight: 400;\n line-height: 22px;\n text-align: left;\n }\n\n .__content {\n overflow: auto;\n flex: 1;\n }\n\n .__list {\n .__item {\n position: relative;\n &.bold-item {\n font-weight: 700;\n }\n &:last-child {\n .__btn {\n margin-bottom: 0;\n }\n }\n\n .__btn {\n position: relative;\n display: flex;\n width: 100%;\n height: 40px;\n align-items: center;\n padding: 0 1rem;\n border: none;\n margin-bottom: 8px;\n color: ${(props: ThemeProps) => props.theme.colors.gray800};\n cursor: pointer;\n text-align: left;\n transition: background 0.3s;\n\n /* for better gtm tracking result */\n * {\n pointer-events: none;\n }\n &.--checked {\n color: ${(props: ThemeProps) => props.theme.colors.gray500};\n pointer-events: none;\n }\n\n &:hover {\n background: ${(props: ThemeProps) => props.theme.colors.gray100};\n }\n\n .__icon {\n width: 16px;\n height: 16px;\n margin-right: 0.4rem;\n }\n\n & > span {\n position: relative;\n\n & > img {\n width: 16px;\n height: 16px;\n margin-right: 0.4rem;\n }\n }\n }\n\n .__toggle {\n position: absolute;\n top: 50%;\n right: 16px;\n width: 16px;\n height: 16px;\n pointer-events: none;\n transform: translateY(-50%);\n }\n }\n }\n &[data-is-marrybaby='true'] {\n .__header {\n padding: 1rem;\n }\n .tree-text-description {\n padding: 0 1rem;\n }\n .__list {\n .__item {\n &:first-child {\n .__btn {\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n }\n }\n &:last-child {\n .__btn {\n border-bottom-left-radius: 12px;\n border-bottom-right-radius: 12px;\n }\n }\n .__btn {\n height: unset;\n padding: 1rem;\n margin-bottom: 0;\n &:hover {\n background: ${(props: ThemeProps) =>\n props.theme.mbColors.lightPink};\n }\n }\n }\n }\n }\n`\n","import React, {\n CSSProperties,\n Dispatch,\n ReactNode,\n SetStateAction,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\n\nimport { Button, Props as ButtonProps } from 'components/atoms/button'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { StyledPopoverMenu } from './index.styled'\n\nexport type Props = {\n className?: string\n style?: CSSProperties\n toggleButtonContent?: ReactNode\n children?:\n | ((data: { setShow?: Dispatch<SetStateAction<boolean>> }) => ReactNode)\n | ReactNode\n | null\n position?: 'top' | 'right' | 'bottom' | 'left'\n align?: 'start' | 'end'\n buttonProps?: Omit<ButtonProps, 'children' | 'size'> & {\n size?: ButtonProps['size']\n }\n}\n\nexport const PopoverMenu = ({\n className,\n style,\n toggleButtonContent,\n position = 'bottom',\n align = 'end',\n children,\n buttonProps,\n}: Props) => {\n const {\n data: {\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n const [isShow, setIsShow] = useState(false)\n const popoverContent = useRef<HTMLDivElement>(null)\n\n const isShowRef = useRef(isShow)\n useEffect(() => {\n isShowRef.current = isShow\n if (!isShow) return\n popoverContent.current?.focus()\n }, [isShow])\n\n useEffect(() => {\n const clickHandler = (e: MouseEvent) => {\n if (\n !popoverContent.current?.contains(e.target as Node) &&\n isShowRef.current\n )\n setIsShow(false)\n }\n window.addEventListener('click', clickHandler)\n return () => {\n window.removeEventListener('click', clickHandler)\n }\n }, [])\n\n return (\n <StyledPopoverMenu\n data-is-marrybaby={isMarryBaby}\n className={className}\n style={style}\n >\n <Button\n theme={isMarryBaby ? 'marryBaby' : 'helloSites'}\n className=\"popover-menu__btn\"\n size=\"md\"\n color=\"transparent\"\n onClick={() => setIsShow((v) => !v)}\n {...buttonProps}\n >\n {toggleButtonContent}\n </Button>\n {isShow ? (\n <div\n ref={popoverContent}\n className={`popover-menu__content --position-${position} --align-${align}`}\n tabIndex={0}\n onClick={(e) => e.stopPropagation()}\n >\n {typeof children === 'function'\n ? children({\n setShow: setIsShow,\n })\n : children}\n </div>\n ) : null}\n </StyledPopoverMenu>\n )\n}\n","import React, {\n Dispatch,\n useState,\n useMemo,\n SetStateAction,\n ReactNode,\n CSSProperties,\n} from 'react'\n\nimport { Heading } from 'components/atoms/heading'\nimport { Text } from 'components/atoms/text'\nimport { theme } from 'misc/theme'\n\nimport IconCheckGray from '../../../assets/svg/icon-check-gray.svg'\nimport IconChevronLeftDark from '../../../assets/svg/icon-chevron-left-dark.svg'\nimport IconChevronRightDark from '../../../assets/svg/icon-chevron-right-dark.svg'\nimport { PopoverMenu, Props as PopoverMenuProps } from './index'\nimport { StyledTree } from './index.styled'\n\nexport type TreeProps = {\n data?: TreeDataProps\n setShow?: Dispatch<SetStateAction<boolean>>\n}\nexport type Props = PopoverMenuProps & TreeProps\n\nexport type TreeDataProps = {\n title?: string\n description?: string\n isShowheader?: boolean\n type: 'jsx' | 'list'\n jsxRenderer?: (setShow?: (v: boolean) => void) => ReactNode\n list?: ListItemProps[]\n} | null\n\nexport type ListItemProps = {\n icon?: string | null\n label: string\n onClick?: () => void\n subTree?: TreeDataProps\n selected?: boolean\n style?: CSSProperties\n className?: string\n dataEventCategory?: string\n dataEventAction?: string\n dataEventLabel?: string\n}\n\nexport const TreePopoverMenu = ({ data, ...popoverProps }: Props) => {\n return (\n <PopoverMenu {...popoverProps}>\n {({ setShow }) => <Tree data={data} setShow={setShow} />}\n </PopoverMenu>\n )\n}\n\nconst getCurrentDataFromPath = (\n data: TreeDataProps,\n path: string,\n): TreeDataProps | undefined => {\n const pathItems = path.split('.')\n let currentData: TreeDataProps | undefined = data\n pathItems.forEach((pathItem) => {\n if (!pathItem || !currentData || currentData?.type !== 'list') return\n currentData = currentData?.list?.[Number(pathItem)]?.subTree\n })\n return currentData\n}\n\nexport const Tree = ({ data, setShow }: TreeProps) => {\n const [path, setPath] = useState('')\n const currentData = useMemo(\n () => data && getCurrentDataFromPath(data, path),\n [data, path],\n )\n\n if (!data) return null\n if (!currentData) return null\n\n const handleItemClick = (\n index: number,\n { subTree, onClick = () => null }: ListItemProps,\n ) => {\n if (onClick) onClick()\n if (!subTree) setShow && setShow(false)\n else setPath((p) => p.split('.').concat(String(index)).join('.'))\n }\n\n return (\n <StyledTree>\n {currentData.isShowheader ? (\n <div className=\"__header\">\n {path ? (\n <img\n className=\"__back-btn\"\n src={IconChevronLeftDark}\n onClick={() =>\n setPath((p) => p.split('.').slice(0, -1).join('.'))\n }\n />\n ) : null}\n {currentData.title ? (\n <Heading className=\"__title\" tag=\"h6\">\n {currentData.title}\n </Heading>\n ) : null}\n </div>\n ) : null}\n {currentData.description ? (\n <Text\n className=\"tree-text-description\"\n color={theme.colors.gray600}\n size=\"p3\"\n type=\"regular\"\n >\n {currentData.description}\n </Text>\n ) : null}\n <div className=\"__content\">\n {currentData.type === 'jsx'\n ? currentData?.jsxRenderer?.(setShow)\n : null}\n {currentData.type === 'list' ? (\n <ul className=\"__list\">\n {Array.isArray(currentData.list)\n ? currentData.list.map((item: ListItemProps, index) => (\n <li\n key={index}\n style={item.style}\n className={`__item ${item.className}`}\n >\n {' '}\n <div\n className={`__btn ${item.selected ? '--checked' : ''}`}\n onClick={() => handleItemClick(index, item)}\n data-event-category={item.dataEventCategory}\n data-event-action={item.dataEventAction}\n data-event-label={item.dataEventLabel}\n >\n {item.icon && <img className=\"__icon\" src={item.icon} />}\n <span>{item.label}</span>\n </div>\n {item.subTree ? (\n <img className=\"__toggle\" src={IconChevronRightDark} />\n ) : null}\n {item.selected ? (\n <img className=\"__toggle\" src={IconCheckGray} />\n ) : null}\n </li>\n ))\n : null}\n </ul>\n ) : null}\n </div>\n </StyledTree>\n )\n}\n","var img = \"data:image/png;base64,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\";\n export default img;","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledPopup = styled.div`\n position: fixed;\n left: 50%;\n width: 343px;\n background-color: ${(props: ThemeProps) => props.theme.colors.white};\n border-radius: 6px;\n box-shadow: 0px 0px 4px ${(props: ThemeProps) => props.theme.colors.gray200};\n transform: translate(-50%, -50%);\n transition: all 0.5s ease-in-out;\n\n ${MediaQueries.tdUp} {\n width: 750px;\n }\n\n &[data-animation='true'] {\n transition: all 0.5s ease-in-out;\n }\n\n &[data-open='true'] {\n z-index: 200;\n top: 50%;\n opacity: 1;\n visibility: visible;\n }\n\n &[data-open='false'] {\n top: -50%;\n }\n\n .popup-content {\n ${MediaQueries.mbDown} {\n display: block;\n }\n display: flex;\n position: relative;\n z-index: 111;\n height: 100%;\n .button-see-more {\n margin: 32px 0;\n padding: 0;\n > * {\n display: inline-block;\n }\n }\n .close-button {\n position: absolute;\n z-index: 100;\n top: 10px;\n right: 10px;\n cursor: pointer;\n width: unset;\n height: unset;\n img {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n }\n }\n }\n\n .main-info {\n padding-bottom: 32px;\n background-color: ${(props: ThemeProps) => props.theme.colors.blue50};\n border-radius: 6px;\n .btn-booking {\n display: flex;\n margin: 12px auto;\n }\n .avatar-title {\n position: relative;\n width: 100%;\n padding-top: 46px;\n text-align: center;\n }\n }\n`\n\nexport const StyledPopupWrapper = styled.div`\n position: fixed;\n z-index: 110;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n align-items: center;\n background: rgba(38, 38, 38, 0.3);\n\n &[data-open='false'] {\n display: none;\n }\n`\n\nexport const StyledProfileImage = styled.div`\n .image-container {\n .badge-avatar {\n position: absolute;\n right: 0;\n bottom: 0;\n top: 0;\n }\n }\n display: flex;\n justify-content: center;\n padding-bottom: 15px;\n text-align: center;\n .profile-image {\n width: 100px;\n min-width: 100px;\n height: 100px;\n min-height: 100px;\n border-radius: 50%;\n object-fit: cover;\n }\n .badge-avatar {\n width: 24px;\n height: 24px;\n }\n`\n\nexport const StyledTitleContainer = styled.div`\n position: relative;\n z-index: 9;\n .specialty {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n }\n\n padding: 0px 16px;\n text-align: center;\n .specialty {\n justify-content: center;\n }\n\n .experience {\n padding: 16px 0px 32px;\n text-align: left;\n .btn-wrapper {\n margin-top: 24px;\n }\n }\n p {\n max-width: 100%;\n -webkit-line-clamp: 4;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n`\nexport const StyledSeparator = styled.span`\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0 0.4em;\n color: ${(props: ThemeProps) => props.theme.colors.neutral300};\n`\nexport const StyledDotSeparator = styled.div`\n display: inline-block;\n width: 3px;\n height: 3px;\n margin: 0;\n background-color: ${(props: ThemeProps) => props.theme.colors.gray400};\n border-radius: 50%;\n`\n\nexport const StyledItem = styled.div`\n display: flex;\n margin-top: 8px;\n\n .bullet-point {\n width: 24px;\n height: 24px;\n }\n`\n\nexport const StyledExperienceList = styled.ul`\n padding-left: 18px;\n li {\n list-style-type: disc;\n }\n`\n","import React, { useEffect, useState } from 'react'\n\nimport { Button } from 'components/atoms/button'\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { theme } from 'misc/theme'\nimport { useId } from 'react-id-generator'\nimport { LocaleType } from 'src/interfaces/types'\nimport { DoctorInfo } from 'src/together/interfaces/types'\n\nimport { CARE_PATHS } from '../../../api/paths'\nimport {\n callApi,\n domainLocales,\n getCareDoctorUrl,\n getCareHospitalUrl,\n getCarePath,\n} from '../../../api/utils'\nimport AvatarDefault from '../../../assets/images/avatar-default.png'\nimport CloseLight from '../../../assets/svg/closeLight.svg'\nimport ReviewerMedical from '../../../assets/svg/reviewer-medical.svg'\nimport { Loading } from '../../atoms/loading'\nimport {\n StyledExperienceList,\n StyledPopup,\n StyledPopupWrapper,\n StyledProfileImage,\n StyledTitleContainer,\n} from './index.styled'\n\ntype DoctorExperience = {\n content: string\n year: string | number\n}\n\nexport type Props = {\n isOpen: boolean\n onClose: () => void\n enableAnimation?: boolean\n doctorId: string\n locale?: LocaleType\n isMobile?: boolean\n}\n\nconst PopupDoctor = ({\n isOpen = true,\n onClose,\n enableAnimation = true,\n doctorId,\n locale,\n isMobile,\n}: Props) => {\n const { t } = useTranslations()\n const [doctorInfo, setDoctorInfo] = useState<DoctorInfo | null>(null)\n const [isLoading, setIsLoading] = useState(false)\n\n useEffect(() => {\n if (isOpen && doctorId && String(doctorInfo?.id) !== String(doctorId)) {\n setIsLoading(true)\n try {\n setDoctorInfo(null)\n callApi(\n getCarePath(CARE_PATHS.GET_DOCTOR_INFO, {\n doctorId: doctorId,\n website_url: domainLocales[locale],\n }),\n\n 'get',\n ).then((res) => {\n setDoctorInfo(res?._data.doctor)\n })\n } catch (error) {\n console.error(error)\n }\n setIsLoading(false)\n }\n }, [isOpen, doctorId, doctorInfo?.id])\n\n const experiences = doctorInfo?.experiences || []\n\n const specialty = doctorInfo?.specialties || []\n const specialtiesList = specialty\n .map((specialty: any) => specialty?.name || specialty)\n .join(' • ')\n\n const formattedExperiences = experiences\n .map((experience) => {\n try {\n return JSON.parse(experience.description)\n } catch (e) {\n return experience.description\n }\n })\n .filter((e: DoctorExperience) => e.content)\n\n const renderExperienceText = (experience: DoctorExperience) => {\n if (experience?.year) return `${experience.year} ${experience?.content}`\n if (experience?.content) return experience.content\n if (typeof experience === 'string') return experience\n return ''\n }\n const idList = useId(doctorInfo?.experiences?.length)\n return (\n <>\n <StyledPopup\n data-open={isOpen}\n data-animation={enableAnimation}\n onClick={(e) => e.stopPropagation()}\n >\n {isLoading || !doctorInfo ? (\n <Loading />\n ) : (\n <div className=\"popup-content\">\n <div className=\"close-button\" onClick={onClose}>\n <img\n src={CloseLight}\n style={{ width: 20, height: 20 }}\n alt=\"close-icon\"\n />\n </div>\n <div className=\"main-info\">\n <div className=\"border-banner\"></div>\n <div className=\"avatar-title\">\n <StyledProfileImage>\n <div className=\"image-container\">\n <div style={{ position: 'relative' }}>\n <img\n src={\n doctorInfo?.avatar\n ? doctorInfo?.avatar\n : AvatarDefault\n }\n className=\"profile-image\"\n alt=\"avatar\"\n />\n <img\n className=\"badge-avatar\"\n src={ReviewerMedical}\n alt=\"badge\"\n />\n </div>\n </div>\n </StyledProfileImage>\n <StyledTitleContainer>\n <Text size=\"s3\" type=\"semiBold\" className=\"full-name\">\n {doctorInfo?.name}\n </Text>\n <div className=\"specialty\">\n {specialtiesList && (\n <>\n <Text size=\"p4\" color={theme.colors.gray800}>\n {specialtiesList}\n {' • '}\n </Text>\n </>\n )}\n\n <a\n href={getCareHospitalUrl({\n id: doctorInfo?.organization?.id,\n name: doctorInfo?.organization?.name,\n slug: doctorInfo?.organization?.slug,\n locale,\n })}\n className=\"organisation\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Text\n size=\"p4\"\n className=\"organisation\"\n color={theme.colors.gray800}\n style={{ textDecoration: 'underline' }}\n >\n {doctorInfo?.organization.name}\n </Text>\n </a>\n </div>\n </StyledTitleContainer>\n </div>\n {!isMobile && (\n <div className=\"btn-wrapper\">\n <a\n href={getCareDoctorUrl({\n name: doctorInfo.name,\n id: doctorInfo.id,\n locale: locale as LocaleType,\n })}\n >\n <Button color=\"primary\" size=\"md\" className=\"btn-booking\">\n {t('careBooking.bookAnAppointment')}\n </Button>\n </a>\n </div>\n )}\n </div>\n {formattedExperiences && (\n <StyledTitleContainer>\n <div className=\"experience\">\n <Text\n type=\"bold\"\n size=\"s3\"\n color={theme.colors.gray800}\n style={{ paddingBottom: 16 }}\n >\n {t('expert.content.description').toUpperCase()}\n </Text>\n <StyledExperienceList>\n {formattedExperiences.map(\n (experience: DoctorExperience, i: number) => (\n <li key={idList[i]}>\n <Text size=\"p2\">\n {renderExperienceText(experience)}\n </Text>\n </li>\n ),\n )}\n </StyledExperienceList>\n {isMobile ? (\n <div className=\"btn-wrapper\">\n <a\n href={getCareDoctorUrl({\n name: doctorInfo.name,\n id: doctorInfo.id,\n locale: locale as LocaleType,\n })}\n >\n <Button\n color=\"primary\"\n size=\"md\"\n className=\"btn-booking\"\n >\n {t('careBooking.bookAnAppointment')}\n </Button>\n </a>\n </div>\n ) : (\n <a\n href={getCareDoctorUrl({\n name: doctorInfo.name,\n id: doctorInfo.id,\n locale: locale as LocaleType,\n })}\n >\n <Text\n size=\"s4\"\n color=\"#2D87F3\"\n style={{ paddingTop: 24 }}\n >\n {t('home.seeExpert')}\n </Text>\n </a>\n )}\n </div>\n </StyledTitleContainer>\n )}\n </div>\n )}\n </StyledPopup>\n <StyledPopupWrapper\n data-open={isOpen}\n onClick={(e) => {\n e.stopPropagation()\n onClose()\n }}\n />\n </>\n )\n}\n\nexport { PopupDoctor }\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledPopup = styled.div`\n position: fixed;\n left: 50%;\n width: 343px;\n background-color: ${(props: ThemeProps) => props.theme.colors.white};\n border-radius: 6px;\n box-shadow: 0px 0px 4px ${(props: ThemeProps) => props.theme.colors.gray200};\n transform: translate(-50%, -50%);\n transition: all 0.5s ease-in-out;\n\n ${MediaQueries.tdUp} {\n width: 750px;\n }\n\n &[data-animation='true'] {\n transition: all 0.5s ease-in-out;\n }\n\n &[data-open='true'] {\n z-index: 200;\n top: 50%;\n opacity: 1;\n visibility: visible;\n }\n\n &[data-open='false'] {\n top: -50%;\n }\n\n .popup-content {\n ${MediaQueries.mbDown} {\n display: block;\n }\n display: flex;\n position: relative;\n z-index: 111;\n height: 100%;\n .button-see-more {\n margin: 32px 0;\n padding: 0;\n > * {\n display: inline-block;\n }\n }\n .close-button {\n position: absolute;\n z-index: 100;\n top: 10px;\n right: 10px;\n cursor: pointer;\n width: unset;\n height: unset;\n img {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n }\n }\n }\n\n .main-info {\n padding-bottom: 32px;\n background-color: ${(props: ThemeProps) => props.theme.colors.blue50};\n border-radius: 6px;\n\n .avatar-title {\n position: relative;\n width: 100%;\n padding-top: 46px;\n text-align: center;\n }\n }\n`\n\nexport const StyledPopupWrapper = styled.div`\n position: fixed;\n z-index: 110;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n align-items: center;\n background: rgba(38, 38, 38, 0.3);\n\n &[data-open='false'] {\n display: none;\n }\n`\n\nexport const StyledProfileImage = styled.div`\n .image-container {\n .badge-avatar {\n position: absolute;\n right: 0;\n bottom: 0;\n top: 0;\n }\n }\n display: flex;\n justify-content: center;\n padding-bottom: 15px;\n text-align: center;\n .profile-image {\n width: 100px;\n min-width: 100px;\n height: 100px;\n min-height: 100px;\n border-radius: 50%;\n object-fit: cover;\n }\n .badge-avatar {\n width: 24px;\n height: 24px;\n }\n`\n\nexport const StyledTitleContainer = styled.div`\n position: relative;\n z-index: 9;\n .specialty {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n }\n\n padding: 0px 16px;\n text-align: center;\n .specialty {\n justify-content: center;\n }\n\n .experience {\n padding: 16px 0px 32px;\n text-align: left;\n .btn-wrapper {\n margin-top: 24px;\n }\n }\n p {\n max-width: 100%;\n -webkit-line-clamp: 4;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n`\nexport const StyledSeparator = styled.span`\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0 0.4em;\n color: ${(props: ThemeProps) => props.theme.colors.neutral300};\n`\nexport const StyledDotSeparator = styled.div`\n display: inline-block;\n width: 3px;\n height: 3px;\n margin: 0;\n background-color: ${(props: ThemeProps) => props.theme.colors.gray400};\n border-radius: 50%;\n`\n\nexport const StyledItem = styled.div`\n display: flex;\n margin-top: 8px;\n\n .bullet-point {\n width: 24px;\n height: 24px;\n }\n`\n","import React, { useEffect, useState } from 'react'\n\nimport { Heading } from 'components/atoms/heading'\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { theme } from 'misc/theme'\n\nimport { DISCOVER_PATHS } from '../../../api/paths'\nimport { callApi, getDiscoverApiPath } from '../../../api/utils'\nimport AvatarDefault from '../../../assets/images/avatar-default.png'\nimport BulletPoint from '../../../assets/svg/bullet-point.svg'\nimport CloseLight from '../../../assets/svg/closeLight.svg'\nimport ReviewerAuthor from '../../../assets/svg/reviewer-author.svg'\nimport ReviewerEditor from '../../../assets/svg/reviewer-editor.svg'\nimport ReviewerExpert from '../../../assets/svg/reviewer-expert.svg'\nimport ReviewerFactCheck from '../../../assets/svg/reviewer-fact-check.svg'\nimport ReviewerMedical from '../../../assets/svg/reviewer-medical.svg'\nimport { Loading } from '../../atoms/loading'\nimport {\n StyledItem,\n StyledPopup,\n StyledPopupWrapper,\n StyledProfileImage,\n StyledTitleContainer,\n} from './index.styled'\n\nconst ReviewerIconMap = {\n author: ReviewerAuthor,\n edtior: ReviewerEditor,\n expert: ReviewerExpert,\n 'fact-check': ReviewerFactCheck,\n medical: ReviewerMedical,\n}\n\nexport type Experience = {\n title: string\n organization: string\n duration: string\n}\nexport type ExpertInfo = {\n avatar?: string\n role?: string\n display_name: string\n specialty: string\n organisation: string\n experiences: Array<Experience>\n organisation_url: string\n profile_url: string\n user_id: number\n}\nexport type Props = {\n isOpen: boolean\n onClose: () => void\n enableAnimation?: boolean\n expertId: string\n}\n\nconst PopupExpert = ({\n isOpen = true,\n onClose,\n enableAnimation = true,\n expertId,\n}: Props) => {\n const { t } = useTranslations()\n const [expertInfo, setExpertInfo] = useState<ExpertInfo | null>(null)\n const [isLoading, setIsLoading] = useState(false)\n\n useEffect(() => {\n if (\n isOpen &&\n expertId &&\n String(expertInfo?.user_id) !== String(expertId)\n ) {\n setIsLoading(true)\n try {\n setExpertInfo(null)\n callApi(\n getDiscoverApiPath(DISCOVER_PATHS.GET_EXPERT_BY_ID, {\n id: expertId,\n }),\n 'get',\n ).then((res) => {\n setExpertInfo(res?.data)\n })\n } catch (error) {\n console.error(error)\n }\n setIsLoading(false)\n }\n }, [isOpen, expertId, expertInfo?.user_id])\n\n return (\n <>\n <StyledPopup\n data-open={isOpen}\n data-animation={enableAnimation}\n onClick={(e) => e.stopPropagation()}\n >\n {isLoading || !expertInfo ? (\n <Loading />\n ) : (\n <div className=\"popup-content\">\n <div className=\"close-button\" onClick={onClose}>\n <img\n src={CloseLight}\n style={{ width: 20, height: 20 }}\n alt=\"close-icon\"\n />\n </div>\n <div className=\"main-info\">\n <div className=\"border-banner\"></div>\n <div className=\"avatar-title\">\n <StyledProfileImage>\n <div className=\"image-container\">\n <div style={{ position: 'relative' }}>\n <img\n src={\n expertInfo?.avatar\n ? expertInfo?.avatar\n : AvatarDefault\n }\n className=\"profile-image\"\n alt=\"avatar\"\n />\n <img\n className=\"badge-avatar\"\n src={ReviewerIconMap[expertInfo?.role]}\n alt=\"badge\"\n />\n </div>\n </div>\n </StyledProfileImage>\n <StyledTitleContainer>\n <Text size=\"s3\" className=\"full-name\" type=\"semiBold\">\n {expertInfo?.display_name}\n </Text>\n <div>\n <Text size=\"p4\" color={theme.colors.gray800}>\n {expertInfo?.specialty}\n {' • '}\n </Text>\n <a\n href={expertInfo?.organisation_url}\n className=\"organisation\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Text\n size=\"p4\"\n className=\"organisation\"\n color={theme.colors.gray800}\n style={{ textDecoration: 'underline' }}\n >\n {expertInfo?.organisation}\n </Text>\n </a>\n </div>\n </StyledTitleContainer>\n </div>\n </div>\n <StyledTitleContainer>\n <div className=\"experience\">\n <Text\n type=\"bold\"\n size=\"p4\"\n color={theme.colors.gray800}\n style={{ paddingBottom: 16 }}\n >\n {t('expert.content.description').toUpperCase()}\n </Text>\n <div className=\"list-items\">\n {expertInfo?.experiences\n ? expertInfo.experiences\n .filter((e) => !!(e && (e.title || e.organization)))\n .slice(0, 3)\n .map((experience, index) => (\n <StyledItem key={index}>\n <img\n className=\"bullet-point\"\n src={BulletPoint}\n alt=\"point\"\n />\n <div className=\"text-contain\">\n <Heading tag=\"h6\" color={theme.colors.gray800}>\n {experience?.title}\n </Heading>\n <Text size=\"p2\" color={theme.colors.gray500}>\n {experience?.organization}\n </Text>\n </div>\n </StyledItem>\n ))\n : false}\n </div>\n <a href={expertInfo?.profile_url}>\n <Text size=\"s4\" color=\"#2D87F3\" style={{ paddingTop: 24 }}>\n {t('home.seeExpert')}\n </Text>\n </a>\n </div>\n </StyledTitleContainer>\n </div>\n )}\n </StyledPopup>\n <StyledPopupWrapper\n data-open={isOpen}\n onClick={(e) => {\n e.stopPropagation()\n onClose()\n }}\n />\n </>\n )\n}\n\nexport { PopupExpert }\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledPopup = styled.div`\n position: fixed;\n left: 50%;\n width: 343px;\n background-color: ${(props: ThemeProps) => props.theme.colors.white};\n border-radius: 6px;\n box-shadow: 0px 0px 4px ${(props: ThemeProps) => props.theme.colors.gray200};\n transform: translate(-50%, -50%);\n transition: all 0.5s ease-in-out;\n\n ${MediaQueries.tdUp} {\n width: 750px;\n }\n\n &[data-animation='true'] {\n transition: all 0.5s ease-in-out;\n }\n\n &[data-open='true'] {\n z-index: 200;\n top: 50%;\n opacity: 1;\n visibility: visible;\n }\n\n &[data-open='false'] {\n top: -50%;\n }\n\n .popup-content {\n ${MediaQueries.mbDown} {\n display: block;\n }\n display: flex;\n position: relative;\n z-index: 111;\n height: 100%;\n .button-see-more {\n margin: 32px 0;\n padding: 0;\n > * {\n display: inline-block;\n }\n }\n .close-button {\n position: absolute;\n z-index: 100;\n top: 10px;\n right: 10px;\n cursor: pointer;\n width: unset;\n height: unset;\n img {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n }\n }\n }\n\n .main-info {\n padding-bottom: 32px;\n background-color: ${(props: ThemeProps) => props.theme.colors.blue50};\n border-radius: 6px;\n .btn-booking {\n display: flex;\n margin: 12px auto;\n }\n .avatar-title {\n position: relative;\n width: 100%;\n padding-top: 46px;\n text-align: center;\n }\n }\n`\n\nexport const StyledPopupWrapper = styled.div`\n position: fixed;\n z-index: 110;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n align-items: center;\n background: rgba(38, 38, 38, 0.3);\n\n &[data-open='false'] {\n display: none;\n }\n`\n\nexport const StyledProfileImage = styled.div`\n .image-container {\n .badge-avatar {\n position: absolute;\n right: 0;\n bottom: 0;\n top: 0;\n }\n }\n display: flex;\n justify-content: center;\n padding-bottom: 15px;\n text-align: center;\n .profile-image {\n width: 100px;\n min-width: 100px;\n height: 100px;\n min-height: 100px;\n border-radius: 50%;\n object-fit: cover;\n }\n .badge-avatar {\n width: 24px;\n height: 24px;\n }\n`\n\nexport const StyledTitleContainer = styled.div`\n position: relative;\n z-index: 9;\n .specialty {\n display: block;\n min-width: 240px;\n }\n\n padding: 0px 16px;\n text-align: center;\n .specialty {\n justify-content: center;\n }\n\n .experience {\n padding: 16px 0px 32px;\n text-align: left;\n .btn-wrapper {\n margin-top: 24px;\n }\n }\n p {\n max-width: 100%;\n }\n`\nexport const StyledSeparator = styled.span`\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0 0.4em;\n color: ${(props: ThemeProps) => props.theme.colors.neutral300};\n`\nexport const StyledDotSeparator = styled.div`\n display: inline-block;\n width: 3px;\n height: 3px;\n margin: 0;\n background-color: ${(props: ThemeProps) => props.theme.colors.gray400};\n border-radius: 50%;\n`\n\nexport const StyledItem = styled.div`\n display: flex;\n margin-top: 8px;\n\n .bullet-point {\n width: 24px;\n height: 24px;\n }\n`\n","import React, { useEffect, useMemo, useState } from 'react'\n\nimport { Button } from 'components/atoms/button'\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { theme } from 'misc/theme'\nimport { LocaleType } from 'src/interfaces/types'\n\nimport { CARE_PATHS } from '../../../api/paths'\nimport {\n callApi,\n domainLocales,\n getCareHospitalUrl,\n getCarePath,\n} from '../../../api/utils'\nimport AvatarDefault from '../../../assets/images/avatar-default.png'\nimport CloseLight from '../../../assets/svg/closeLight.svg'\nimport ReviewerMedical from '../../../assets/svg/reviewer-medical.svg'\nimport { Loading } from '../../atoms/loading'\nimport {\n StyledPopup,\n StyledPopupWrapper,\n StyledProfileImage,\n StyledTitleContainer,\n} from './index.styled'\n\nexport type Specialy = {\n id: string\n name: string\n slug: string\n thumbnail?: string\n}\n\nexport type HospitalInfo = {\n name: string\n about?: string\n specialties?: Array<Specialy>\n logo?: string\n address?: string\n city_id?: number\n total_available_doctor?: number\n total_available_service?: number\n slug: string\n id: number\n}\nexport type Props = {\n isOpen: boolean\n onClose: () => void\n enableAnimation?: boolean\n hospitalId: string\n locale?: LocaleType\n isMobile?: boolean\n}\n\nconst PopupHospital = ({\n isOpen = true,\n onClose,\n enableAnimation = true,\n hospitalId,\n locale,\n isMobile,\n}: Props) => {\n const { t } = useTranslations()\n const [hospitalInfo, setHospitalInfo] = useState<HospitalInfo | null>(null)\n const [isLoading, setIsLoading] = useState(false)\n\n useEffect(() => {\n if (\n isOpen &&\n hospitalId &&\n String(hospitalInfo?.id) !== String(hospitalId)\n ) {\n setIsLoading(true)\n try {\n setHospitalInfo(null)\n callApi(\n getCarePath(CARE_PATHS.GET_HOSPITAL_INFO, {\n hospital_branch_id: hospitalId,\n website_url: domainLocales[locale],\n }),\n 'get',\n ).then((res) => {\n setHospitalInfo(res?._data.branch)\n })\n } catch (error) {\n console.error(error)\n }\n setIsLoading(false)\n }\n }, [isOpen, hospitalId, hospitalInfo?.id])\n const specialties = hospitalInfo?.specialties || []\n const formatSpecialties: string[] = useMemo(\n () => specialties.map((specialty: any) => specialty.name),\n [specialties],\n )\n\n return (\n <>\n <StyledPopup\n data-open={isOpen}\n data-animation={enableAnimation}\n onClick={(e) => e.stopPropagation()}\n >\n {isLoading || !hospitalInfo ? (\n <Loading />\n ) : (\n <div className=\"popup-content\">\n <div className=\"close-button\" onClick={onClose}>\n <img\n src={CloseLight}\n style={{ width: 20, height: 20 }}\n alt=\"close-icon\"\n />\n </div>\n <div className=\"main-info\">\n <div className=\"border-banner\"></div>\n <div className=\"avatar-title\">\n <StyledProfileImage>\n <div className=\"image-container\">\n <div style={{ position: 'relative' }}>\n <img\n src={\n hospitalInfo?.logo\n ? hospitalInfo?.logo\n : AvatarDefault\n }\n className=\"profile-image\"\n alt=\"avatar\"\n />\n <img\n className=\"badge-avatar\"\n src={ReviewerMedical}\n alt=\"badge\"\n />\n </div>\n </div>\n </StyledProfileImage>\n <StyledTitleContainer>\n <Text size=\"s3\" type=\"semiBold\" className=\"full-name\">\n {hospitalInfo?.name}\n </Text>\n <div className=\"specialty\">\n {specialties && (\n <Text size=\"p4\" color={theme.colors.gray800}>\n {formatSpecialties.join(' • ')}\n {'•'}\n </Text>\n )}\n\n <a\n href={getCareHospitalUrl({\n id: hospitalInfo.id,\n name: hospitalInfo.name,\n slug: hospitalInfo.slug,\n locale,\n })}\n className=\"organisation\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Text\n size=\"p4\"\n className=\"organisation\"\n color={theme.colors.gray800}\n style={{ textDecoration: 'underline' }}\n >\n {hospitalInfo?.name}\n </Text>\n </a>\n </div>\n </StyledTitleContainer>\n </div>\n {!isMobile && (\n <a\n href={getCareHospitalUrl({\n id: hospitalInfo.id,\n name: hospitalInfo.name,\n slug: hospitalInfo.slug,\n locale,\n })}\n >\n <div className=\"btn-wrapper\">\n <Button color=\"primary\" size=\"md\" className=\"btn-booking\">\n {t('careBooking.bookAnAppointment')}\n </Button>\n </div>\n </a>\n )}\n </div>\n\n <StyledTitleContainer>\n <div className=\"experience\">\n <Text\n type=\"bold\"\n size=\"s3\"\n color={theme.colors.gray800}\n style={{ paddingBottom: 16 }}\n >\n {t('hospital.content.description').toUpperCase()}\n </Text>\n <Text size=\"p2\" color={theme.colors.gray500}>\n {hospitalInfo.about}\n </Text>\n {isMobile ? (\n <a\n href={getCareHospitalUrl({\n id: hospitalInfo.id,\n name: hospitalInfo.name,\n slug: hospitalInfo.slug,\n locale,\n })}\n >\n <div className=\"btn-wrapper\">\n <Button color=\"primary\" size=\"md\" className=\"btn-booking\">\n {t('careBooking.bookAnAppointment')}\n </Button>\n </div>\n </a>\n ) : (\n <a\n href={getCareHospitalUrl({\n id: hospitalInfo.id,\n name: hospitalInfo.name,\n slug: hospitalInfo.slug,\n locale,\n })}\n >\n <Text size=\"s4\" color=\"#2D87F3\" style={{ paddingTop: 24 }}>\n {t('home.seeHospital')}\n </Text>\n </a>\n )}\n </div>\n </StyledTitleContainer>\n </div>\n )}\n </StyledPopup>\n <StyledPopupWrapper\n data-open={isOpen}\n onClick={(e) => {\n e.stopPropagation()\n onClose()\n }}\n />\n </>\n )\n}\n\nexport { PopupHospital }\n","import { FormatDistanceFn, FormatDistanceLocale } from './types'\n\ntype FormatDistanceTokenValue =\n | string\n | {\n one: string\n other: string\n }\n\nconst formatDistanceLocale: FormatDistanceLocale<FormatDistanceTokenValue> = {\n lessThanXSeconds: {\n one: 'တစ်စက္ကန့်အောက်',\n other: '{{count}} စက္ကန့်အောက်',\n },\n\n xSeconds: {\n one: 'တစ်စက္ကန့်',\n other: '{{count}} စက္ကန့်',\n },\n\n halfAMinute: 'မိနစ်ဝက်',\n\n lessThanXMinutes: {\n one: 'တစ်မိနစ်အောက်',\n other: '{{count}} မိနစ်အောက်',\n },\n\n xMinutes: {\n one: 'တစ်မိနစ်',\n other: '{{count}}နာရီခန့်',\n },\n\n aboutXHours: {\n one: 'တစ်နာရီခန့်',\n other: '{{count}}နာရီခန့်',\n },\n\n xHours: {\n one: 'တစ်နာရီ',\n other: '{{count}}နာရီ',\n },\n\n xDays: {\n one: 'တစ်ရက်',\n other: '{{count}}ရက်',\n },\n\n aboutXWeeks: {\n one: 'တစ်ပတ်ခန့်',\n other: '{{count}}ပတ်ခန့်',\n },\n\n xWeeks: {\n one: 'တစ်ပတ်',\n other: '{{count}}ပတ်',\n },\n\n aboutXMonths: {\n one: 'တစ်လခန့်',\n other: '{{count}} လခန့်',\n },\n\n xMonths: {\n one: 'တစ်လ',\n other: '{{count}}လ',\n },\n\n aboutXYears: {\n one: 'တစ်နှစ်ခန့်',\n other: '{{count}}နှစ်',\n },\n\n xYears: {\n one: 'တစ်နှစ်',\n other: '{{count}}နှစ်',\n },\n\n overXYears: {\n one: 'တစ်နှစ်ကျော်',\n other: '{{count}}နှစ်ကျော်',\n },\n\n almostXYears: {\n one: 'တစ်နှစ်နီးပါး',\n other: '{{count}}နှစ်နီးပါး',\n },\n}\n\nconst formatDistance: FormatDistanceFn = (token, count, options) => {\n let result\n\n const tokenValue = formatDistanceLocale[token]\n if (typeof tokenValue === 'string') {\n result = tokenValue\n } else if (count === 1) {\n result = tokenValue.one\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString())\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return result + 'အတွင်း'\n } else {\n return 'လွန်ခဲ့သော ' + result\n // + 'က'\n }\n }\n\n return result\n}\nexport default formatDistance\n","import { Locale } from 'date-fns'\n\nimport formatDistance from './formatDistance'\n\nexport default {\n code: 'my',\n formatDistance: formatDistance,\n // formatLong: formatLong,\n // formatRelative: formatRelative,\n // localize: localize,\n // match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n} as Locale\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledCardAuthor = styled.div`\n display: flex;\n align-items: center;\n padding: 0 1rem;\n a {\n text-decoration: none;\n }\n .button-more {\n display: flex;\n width: 20px;\n height: 20px;\n align-items: center;\n justify-content: center;\n .button-more-icon {\n height: 13px;\n vertical-align: middle;\n }\n }\n .temp-avatar {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${(props: ThemeProps) =>\n props.theme.colors.secondaryBase};\n border-radius: 50%;\n color: white;\n font-weight: bold;\n }\n\n .author-info {\n flex: 1;\n margin-left: 0.5rem;\n .author-info-top {\n display: flex;\n align-items: center;\n cursor: pointer;\n }\n .author-info-text-wrapper {\n display: flex;\n min-width: 0px;\n flex: 1 1 0%;\n align-items: center;\n }\n .author-name {\n overflow: hidden;\n font-weight: 600;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .author-time {\n flex-shrink: 0;\n }\n .author-role {\n height: 1rem;\n flex-shrink: 0;\n padding: 0 0.5rem;\n margin-left: 4px;\n border-radius: 1rem;\n color: white;\n font-size: 8px;\n font-weight: 600;\n line-height: 1rem;\n &[data-label-type='admin'] {\n background: ${(props: ThemeProps) => props.theme.colors.blue800};\n }\n &[data-label-type='local admin'] {\n background: ${(props: ThemeProps) => props.theme.colors.blue800};\n }\n &[data-label-type='ambassador'] {\n background: ${(props: ThemeProps) => props.theme.colors.green400};\n }\n &[data-label-type='expert'] {\n background: ${(props: ThemeProps) => props.theme.colors.red400};\n }\n &[data-label-type='moderator'] {\n background: ${(props: ThemeProps) => props.theme.colors.yellow800};\n }\n &[data-label-type='sponsor'] {\n background: ${(props: ThemeProps) => props.theme.colors.teal400};\n }\n &[data-label-type='guide'] {\n background: ${(props: ThemeProps) => props.theme.colors.teal400};\n }\n &[data-label-type='influencer'] {\n background: ${(props: ThemeProps) => props.theme.colors.teal400};\n }\n }\n }\n .author-community {\n .text-container {\n color: ${(props: ThemeProps) => props.theme.colors.gray500};\n font-weight: 600;\n font-size: 12px;\n line-height: 20px;\n .time-text {\n font-size: 11px;\n font-weight: normal;\n }\n a {\n color: inherit;\n }\n }\n }\n .expert-wrapper {\n width: 100%;\n }\n &[data-is-booking='true'] {\n display: grid;\n background-color: ${(props: ThemeProps) => props.theme.colors.blue50};\n .btn-wrapper {\n padding: 0 16px;\n .btn-booking {\n width: 100%;\n margin: 12px 0;\n }\n }\n }\n &[data-is-marrybaby='true'] {\n align-items: unset;\n .author-info {\n margin-left: 1rem;\n ${MediaQueries.mbDown} {\n margin-left: 0.5rem;\n }\n .author-info-text-wrapper {\n flex-wrap: wrap;\n }\n .author-time {\n margin-left: 0.4rem;\n font-size: 14px;\n }\n }\n .author-community {\n .text-container {\n font-size: 12px;\n line-height: 20px;\n }\n .author-community-name {\n color: ${(props: ThemeProps) => props.theme.mbColors.cobalt};\n font-weight: 500;\n }\n }\n }\n`\nexport const StyledKebabIcon = styled.img`\n width: 20px;\n height: 20px;\n margin-left: 0.5rem;\n cursor: pointer;\n object-fit: contain;\n`\nexport const StyledAvatarContainer = styled.div`\n position: relative;\n .mini-icon {\n position: absolute;\n right: 1.2px;\n bottom: 1.2px;\n }\n`\n","import React, {\n CSSProperties,\n MouseEventHandler,\n useContext,\n useEffect,\n useState,\n} from 'react'\n\nimport { Avatar } from 'components/atoms/avatar'\nimport { Button } from 'components/atoms/button'\nimport { Text } from 'components/atoms/text'\nimport { format, formatDistanceToNow } from 'date-fns'\nimport enUS from 'date-fns/locale/en-US'\nimport hi from 'date-fns/locale/hi'\nimport id from 'date-fns/locale/id'\nimport ms from 'date-fns/locale/ms'\nimport th from 'date-fns/locale/th'\nimport vi from 'date-fns/locale/vi'\nimport zhTW from 'date-fns/locale/zh-TW'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { TranslationsKey } from 'i18n/translations'\nimport { toggleNoScroll } from 'misc/utils'\nimport { domainLocales } from 'src/interfaces/constants'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { Community, Role } from '../../../interfaces/types'\nimport { UserAvatar } from '../../atoms/userAvatar'\nimport { PopupDoctor } from '../popupDoctor'\nimport { PopupExpert } from '../popupExpert'\nimport { PopupHospital } from '../popupHospital'\nimport my from './customMMLocale'\nimport { StyledAvatarContainer, StyledCardAuthor } from './index.styled'\n\nexport const AuthorLabelTextMapping: { [k in Role]?: string } = {\n admin: 'cardAuthor.admin',\n moderator: 'cardAuthor.moderator',\n ambassador: 'cardAuthor.ambassador',\n expert: 'cardAuthor.expert',\n sponsor: 'cardAuthor.sponsor',\n 'local-admin': 'cardAuthor.localAdmin',\n guide: 'cardAuthor.guide',\n influencer: 'cardAuthor.influencer',\n}\n\nconst looselyMatchRole = (role: string): Role | undefined => {\n const allRoles: Role[] = [\n 'admin',\n 'moderator',\n 'ambassador',\n 'expert',\n 'sponsor',\n 'local-admin',\n 'guide',\n 'influencer',\n ]\n return (\n allRoles.find((r) => r === role) ||\n allRoles.find((r) => role.includes(r)) ||\n allRoles.find((r) => r.includes(role))\n )\n}\n\nexport type Props = {\n userId?: number\n time?: string\n miniIcon?: string\n className?: string\n style?: CSSProperties\n name?: string\n username?: string\n email?: string\n url?: string\n avatar?: string\n postId?: string\n community?: Community\n type?: 'post' | 'comment' | 'reply' | 'most-engaging'\n role?: Role\n expertId?: string\n doctorId?: string\n hospitalId?: string\n isMarryBaby?: boolean\n title?: string\n hasQuickBooking?: boolean\n handleMakeAppointment?: (doctorId?: string, hospitalId?: string) => void\n}\n\nexport const locales: { [key: string]: Locale } = {\n 'vi-VN': vi,\n 'id-ID': id,\n 'ms-MY': ms,\n 'km-KH': enUS,\n 'en-PH': enUS,\n 'th-TH': th,\n 'my-MM': my,\n 'zh-TW': zhTW,\n 'hi-IN': hi,\n}\n\nconst CardAuthor = ({\n // userId,\n time,\n className,\n community,\n name,\n username,\n url,\n avatar,\n miniIcon,\n role,\n style,\n type = 'post',\n expertId,\n isMarryBaby: isMarryBabyProp,\n title,\n doctorId,\n hospitalId,\n hasQuickBooking,\n handleMakeAppointment,\n}: Props) => {\n const {\n data: {\n locale,\n router,\n env: { isMarryBaby: isMarryBabyContext, togetherBasePath },\n },\n } = useContext(TogetherComponentGlobalContext)\n const isMarryBaby =\n typeof isMarryBabyProp === 'boolean' ? isMarryBabyProp : isMarryBabyContext\n const displayName = name || username || ''\n const matchedRole = role ? looselyMatchRole(role) : ''\n const { t } = useTranslations()\n const cleanedTimeDate = time\n ? !isNaN(new Date(time).getTime())\n ? new Date(time)\n : null\n : null\n const timeText = cleanedTimeDate\n ? formatDistanceToNow(cleanedTimeDate, {\n locale: locales[locale],\n })\n : time\n const timeTextTitle = cleanedTimeDate\n ? format(cleanedTimeDate, 'dd/MM/yyyy HH:mm')\n : time\n\n const [openPopupExpert, setOpenPopupExpert] = useState(false)\n\n const { asPath } = router || {}\n const currentUrl = `https://${domainLocales[locale]}${asPath}`\n\n const onAuthorClick: MouseEventHandler<HTMLDivElement> = (e) => {\n if (role === 'expert' && (expertId || doctorId || hospitalId)) {\n e.stopPropagation()\n setOpenPopupExpert(true)\n } else if (url) {\n window.location.href = url\n }\n }\n\n useEffect(() => {\n toggleNoScroll(openPopupExpert)\n }, [openPopupExpert])\n\n return (\n <>\n {role === 'expert' && expertId ? (\n <PopupExpert\n isOpen={openPopupExpert}\n onClose={() => setOpenPopupExpert(false)}\n expertId={expertId}\n ></PopupExpert>\n ) : null}\n {role === 'expert' && doctorId ? (\n <PopupDoctor\n isOpen={openPopupExpert}\n onClose={() => setOpenPopupExpert(false)}\n doctorId={doctorId}\n locale={locale}\n ></PopupDoctor>\n ) : null}\n {role === 'expert' && hospitalId ? (\n <PopupHospital\n isOpen={openPopupExpert}\n onClose={() => setOpenPopupExpert(false)}\n hospitalId={hospitalId}\n locale={locale}\n ></PopupHospital>\n ) : null}\n <StyledCardAuthor\n data-is-marrybaby={isMarryBaby}\n className={className}\n style={style}\n data-is-booking={hasQuickBooking}\n >\n <div style={{ display: 'flex', width: '100%' }}>\n <a>\n <StyledAvatarContainer onClick={onAuthorClick}>\n <UserAvatar\n className=\"author-avatar-wrapper\"\n username={displayName}\n avatar={avatar}\n />\n {miniIcon ? (\n <Avatar\n className=\"mini-icon\"\n type=\"rounded\"\n avatarImg={\n <img\n src={miniIcon}\n style={{\n width: '12px',\n height: '12px',\n objectFit: 'cover',\n }}\n alt=\"badge\"\n />\n }\n />\n ) : null}\n </StyledAvatarContainer>\n </a>\n <div className=\"expert-wrapper\">\n <div className=\"author-info\">\n <div className=\"author-info-top\">\n <div\n onClick={onAuthorClick}\n className=\"author-info-text-wrapper\"\n >\n <Text className=\"author-name\" size=\"p3\">\n {displayName}\n </Text>\n {matchedRole && AuthorLabelTextMapping[matchedRole] && (\n <div className=\"author-role\" data-label-type={matchedRole}>\n {title ||\n t(\n AuthorLabelTextMapping[\n matchedRole\n ] as TranslationsKey,\n )}\n </div>\n )}\n {isMarryBaby ? (\n <Text\n size=\"p4\"\n type=\"regular\"\n color=\"#9495A0\"\n title={timeTextTitle}\n className=\"author-time\"\n >\n {`${type === 'post' ? '• ' : ''}${timeText}`}\n </Text>\n ) : null}\n </div>\n {!isMarryBaby && type !== 'post' ? (\n <Text\n size=\"p4\"\n type=\"regular\"\n color=\"#595959\"\n style={{ lineHeight: '20px' }}\n title={timeTextTitle}\n >\n {timeText}\n </Text>\n ) : null}\n </div>\n {type === 'post' ? (\n <div className=\"author-community\">\n <Text className=\"text-container\" size=\"p4\">\n <a\n href={\n community?.slug &&\n community.isActive &&\n !community.isHidden\n ? `${togetherBasePath}/${community?.slug}`\n : undefined\n }\n className=\"author-community-name\"\n >\n {`${isMarryBaby ? '/' : ''}${community?.name}`}\n </a>\n {(isMarryBaby ? undefined : timeText) ? ' • ' : ''}\n <span className=\"time-text\">\n {isMarryBaby ? undefined : timeText}\n </span>\n </Text>\n </div>\n ) : null}\n </div>\n </div>\n </div>\n {hasQuickBooking && (\n <div className=\"btn-wrapper\">\n <Button\n color=\"primary\"\n size=\"md\"\n className=\"btn-booking\"\n onClick={(e) => {\n handleMakeAppointment?.(doctorId, hospitalId)\n e.stopPropagation()\n }}\n dataEventCategory=\"Care\"\n dataEventAction=\"Comment - Quick Booking\"\n dataEventLabel={currentUrl}\n >\n {t('careBooking.bookAnAppointment')}\n </Button>\n </div>\n )}\n </StyledCardAuthor>\n </>\n )\n}\n\nexport { CardAuthor }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromCodePoint = String.fromCodePoint || function (astralCodePoint) {\n return String.fromCharCode(Math.floor((astralCodePoint - 0x10000) / 0x400) + 0xD800, (astralCodePoint - 0x10000) % 0x400 + 0xDC00);\n};\nexports.getCodePoint = String.prototype.codePointAt ?\n function (input, position) {\n return input.codePointAt(position);\n } :\n function (input, position) {\n return (input.charCodeAt(position) - 0xD800) * 0x400\n + input.charCodeAt(position + 1) - 0xDC00 + 0x10000;\n };\nexports.highSurrogateFrom = 0xD800;\nexports.highSurrogateTo = 0xDBFF;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar surrogate_pairs_1 = require(\"./surrogate-pairs\");\nvar ALPHA_INDEX = {\n '<': '<',\n '>': '>',\n '"': '\"',\n '&apos': '\\'',\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': '\\'',\n '&': '&'\n};\nvar CHAR_INDEX = {\n 60: 'lt',\n 62: 'gt',\n 34: 'quot',\n 39: 'apos',\n 38: 'amp'\n};\nvar CHAR_S_INDEX = {\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '&': '&'\n};\nvar XmlEntities = /** @class */ (function () {\n function XmlEntities() {\n }\n XmlEntities.prototype.encode = function (str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/[<>\"'&]/g, function (s) {\n return CHAR_S_INDEX[s];\n });\n };\n XmlEntities.encode = function (str) {\n return new XmlEntities().encode(str);\n };\n XmlEntities.prototype.decode = function (str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/&#?[0-9a-zA-Z]+;?/g, function (s) {\n if (s.charAt(1) === '#') {\n var code = s.charAt(2).toLowerCase() === 'x' ?\n parseInt(s.substr(3), 16) :\n parseInt(s.substr(2));\n if (!isNaN(code) || code >= -32768) {\n if (code <= 65535) {\n return String.fromCharCode(code);\n }\n else {\n return surrogate_pairs_1.fromCodePoint(code);\n }\n }\n return '';\n }\n return ALPHA_INDEX[s] || s;\n });\n };\n XmlEntities.decode = function (str) {\n return new XmlEntities().decode(str);\n };\n XmlEntities.prototype.encodeNonUTF = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n var alpha = CHAR_INDEX[c];\n if (alpha) {\n result += \"&\" + alpha + \";\";\n i++;\n continue;\n }\n if (c < 32 || c > 126) {\n if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) {\n result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';\n i++;\n }\n else {\n result += '&#' + c + ';';\n }\n }\n else {\n result += str.charAt(i);\n }\n i++;\n }\n return result;\n };\n XmlEntities.encodeNonUTF = function (str) {\n return new XmlEntities().encodeNonUTF(str);\n };\n XmlEntities.prototype.encodeNonASCII = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n if (c <= 255) {\n result += str[i++];\n continue;\n }\n if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) {\n result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';\n i++;\n }\n else {\n result += '&#' + c + ';';\n }\n i++;\n }\n return result;\n };\n XmlEntities.encodeNonASCII = function (str) {\n return new XmlEntities().encodeNonASCII(str);\n };\n return XmlEntities;\n}());\nexports.XmlEntities = XmlEntities;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar surrogate_pairs_1 = require(\"./surrogate-pairs\");\nvar HTML_ALPHA = ['apos', 'nbsp', 'iexcl', 'cent', 'pound', 'curren', 'yen', 'brvbar', 'sect', 'uml', 'copy', 'ordf', 'laquo', 'not', 'shy', 'reg', 'macr', 'deg', 'plusmn', 'sup2', 'sup3', 'acute', 'micro', 'para', 'middot', 'cedil', 'sup1', 'ordm', 'raquo', 'frac14', 'frac12', 'frac34', 'iquest', 'Agrave', 'Aacute', 'Acirc', 'Atilde', 'Auml', 'Aring', 'AElig', 'Ccedil', 'Egrave', 'Eacute', 'Ecirc', 'Euml', 'Igrave', 'Iacute', 'Icirc', 'Iuml', 'ETH', 'Ntilde', 'Ograve', 'Oacute', 'Ocirc', 'Otilde', 'Ouml', 'times', 'Oslash', 'Ugrave', 'Uacute', 'Ucirc', 'Uuml', 'Yacute', 'THORN', 'szlig', 'agrave', 'aacute', 'acirc', 'atilde', 'auml', 'aring', 'aelig', 'ccedil', 'egrave', 'eacute', 'ecirc', 'euml', 'igrave', 'iacute', 'icirc', 'iuml', 'eth', 'ntilde', 'ograve', 'oacute', 'ocirc', 'otilde', 'ouml', 'divide', 'oslash', 'ugrave', 'uacute', 'ucirc', 'uuml', 'yacute', 'thorn', 'yuml', 'quot', 'amp', 'lt', 'gt', 'OElig', 'oelig', 'Scaron', 'scaron', 'Yuml', 'circ', 'tilde', 'ensp', 'emsp', 'thinsp', 'zwnj', 'zwj', 'lrm', 'rlm', 'ndash', 'mdash', 'lsquo', 'rsquo', 'sbquo', 'ldquo', 'rdquo', 'bdquo', 'dagger', 'Dagger', 'permil', 'lsaquo', 'rsaquo', 'euro', 'fnof', 'Alpha', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zeta', 'Eta', 'Theta', 'Iota', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Xi', 'Omicron', 'Pi', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'Phi', 'Chi', 'Psi', 'Omega', 'alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta', 'eta', 'theta', 'iota', 'kappa', 'lambda', 'mu', 'nu', 'xi', 'omicron', 'pi', 'rho', 'sigmaf', 'sigma', 'tau', 'upsilon', 'phi', 'chi', 'psi', 'omega', 'thetasym', 'upsih', 'piv', 'bull', 'hellip', 'prime', 'Prime', 'oline', 'frasl', 'weierp', 'image', 'real', 'trade', 'alefsym', 'larr', 'uarr', 'rarr', 'darr', 'harr', 'crarr', 'lArr', 'uArr', 'rArr', 'dArr', 'hArr', 'forall', 'part', 'exist', 'empty', 'nabla', 'isin', 'notin', 'ni', 'prod', 'sum', 'minus', 'lowast', 'radic', 'prop', 'infin', 'ang', 'and', 'or', 'cap', 'cup', 'int', 'there4', 'sim', 'cong', 'asymp', 'ne', 'equiv', 'le', 'ge', 'sub', 'sup', 'nsub', 'sube', 'supe', 'oplus', 'otimes', 'perp', 'sdot', 'lceil', 'rceil', 'lfloor', 'rfloor', 'lang', 'rang', 'loz', 'spades', 'clubs', 'hearts', 'diams'];\nvar HTML_CODES = [39, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 34, 38, 60, 62, 338, 339, 352, 353, 376, 710, 732, 8194, 8195, 8201, 8204, 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8240, 8249, 8250, 8364, 402, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8226, 8230, 8242, 8243, 8254, 8260, 8472, 8465, 8476, 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660, 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730, 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800, 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968, 8969, 8970, 8971, 9001, 9002, 9674, 9824, 9827, 9829, 9830];\nvar alphaIndex = {};\nvar numIndex = {};\n(function () {\n var i = 0;\n var length = HTML_ALPHA.length;\n while (i < length) {\n var a = HTML_ALPHA[i];\n var c = HTML_CODES[i];\n alphaIndex[a] = String.fromCharCode(c);\n numIndex[c] = a;\n i++;\n }\n})();\nvar Html4Entities = /** @class */ (function () {\n function Html4Entities() {\n }\n Html4Entities.prototype.decode = function (str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/&(#?[\\w\\d]+);?/g, function (s, entity) {\n var chr;\n if (entity.charAt(0) === \"#\") {\n var code = entity.charAt(1).toLowerCase() === 'x' ?\n parseInt(entity.substr(2), 16) :\n parseInt(entity.substr(1));\n if (!isNaN(code) || code >= -32768) {\n if (code <= 65535) {\n chr = String.fromCharCode(code);\n }\n else {\n chr = surrogate_pairs_1.fromCodePoint(code);\n }\n }\n }\n else {\n chr = alphaIndex[entity];\n }\n return chr || s;\n });\n };\n Html4Entities.decode = function (str) {\n return new Html4Entities().decode(str);\n };\n Html4Entities.prototype.encode = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var alpha = numIndex[str.charCodeAt(i)];\n result += alpha ? \"&\" + alpha + \";\" : str.charAt(i);\n i++;\n }\n return result;\n };\n Html4Entities.encode = function (str) {\n return new Html4Entities().encode(str);\n };\n Html4Entities.prototype.encodeNonUTF = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var cc = str.charCodeAt(i);\n var alpha = numIndex[cc];\n if (alpha) {\n result += \"&\" + alpha + \";\";\n }\n else if (cc < 32 || cc > 126) {\n if (cc >= surrogate_pairs_1.highSurrogateFrom && cc <= surrogate_pairs_1.highSurrogateTo) {\n result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';\n i++;\n }\n else {\n result += '&#' + cc + ';';\n }\n }\n else {\n result += str.charAt(i);\n }\n i++;\n }\n return result;\n };\n Html4Entities.encodeNonUTF = function (str) {\n return new Html4Entities().encodeNonUTF(str);\n };\n Html4Entities.prototype.encodeNonASCII = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n if (c <= 255) {\n result += str[i++];\n continue;\n }\n if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) {\n result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';\n i++;\n }\n else {\n result += '&#' + c + ';';\n }\n i++;\n }\n return result;\n };\n Html4Entities.encodeNonASCII = function (str) {\n return new Html4Entities().encodeNonASCII(str);\n };\n return Html4Entities;\n}());\nexports.Html4Entities = Html4Entities;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar surrogate_pairs_1 = require(\"./surrogate-pairs\");\nvar ENTITIES = [['Aacute', [193]], ['aacute', [225]], ['Abreve', [258]], ['abreve', [259]], ['ac', [8766]], ['acd', [8767]], ['acE', [8766, 819]], ['Acirc', [194]], ['acirc', [226]], ['acute', [180]], ['Acy', [1040]], ['acy', [1072]], ['AElig', [198]], ['aelig', [230]], ['af', [8289]], ['Afr', [120068]], ['afr', [120094]], ['Agrave', [192]], ['agrave', [224]], ['alefsym', [8501]], ['aleph', [8501]], ['Alpha', [913]], ['alpha', [945]], ['Amacr', [256]], ['amacr', [257]], ['amalg', [10815]], ['amp', [38]], ['AMP', [38]], ['andand', [10837]], ['And', [10835]], ['and', [8743]], ['andd', [10844]], ['andslope', [10840]], ['andv', [10842]], ['ang', [8736]], ['ange', [10660]], ['angle', [8736]], ['angmsdaa', [10664]], ['angmsdab', [10665]], ['angmsdac', [10666]], ['angmsdad', [10667]], ['angmsdae', [10668]], ['angmsdaf', [10669]], ['angmsdag', [10670]], ['angmsdah', [10671]], ['angmsd', [8737]], ['angrt', [8735]], ['angrtvb', [8894]], ['angrtvbd', [10653]], ['angsph', [8738]], ['angst', [197]], ['angzarr', [9084]], ['Aogon', [260]], ['aogon', [261]], ['Aopf', [120120]], ['aopf', [120146]], ['apacir', [10863]], ['ap', [8776]], ['apE', [10864]], ['ape', [8778]], ['apid', [8779]], ['apos', [39]], ['ApplyFunction', [8289]], ['approx', [8776]], ['approxeq', [8778]], ['Aring', [197]], ['aring', [229]], ['Ascr', [119964]], ['ascr', [119990]], ['Assign', [8788]], ['ast', [42]], ['asymp', [8776]], ['asympeq', [8781]], ['Atilde', [195]], ['atilde', [227]], ['Auml', [196]], ['auml', [228]], ['awconint', [8755]], ['awint', [10769]], ['backcong', [8780]], ['backepsilon', [1014]], ['backprime', [8245]], ['backsim', [8765]], ['backsimeq', [8909]], ['Backslash', [8726]], ['Barv', [10983]], ['barvee', [8893]], ['barwed', [8965]], ['Barwed', [8966]], ['barwedge', [8965]], ['bbrk', [9141]], ['bbrktbrk', [9142]], ['bcong', [8780]], ['Bcy', [1041]], ['bcy', [1073]], ['bdquo', [8222]], ['becaus', [8757]], ['because', [8757]], ['Because', [8757]], ['bemptyv', [10672]], ['bepsi', [1014]], ['bernou', [8492]], ['Bernoullis', [8492]], ['Beta', [914]], ['beta', [946]], ['beth', [8502]], ['between', [8812]], ['Bfr', [120069]], ['bfr', [120095]], ['bigcap', [8898]], ['bigcirc', [9711]], ['bigcup', [8899]], ['bigodot', [10752]], ['bigoplus', [10753]], ['bigotimes', [10754]], ['bigsqcup', [10758]], ['bigstar', [9733]], ['bigtriangledown', [9661]], ['bigtriangleup', [9651]], ['biguplus', [10756]], ['bigvee', [8897]], ['bigwedge', [8896]], ['bkarow', [10509]], ['blacklozenge', [10731]], ['blacksquare', [9642]], ['blacktriangle', [9652]], ['blacktriangledown', [9662]], ['blacktriangleleft', [9666]], ['blacktriangleright', [9656]], ['blank', [9251]], ['blk12', [9618]], ['blk14', [9617]], ['blk34', [9619]], ['block', [9608]], ['bne', [61, 8421]], ['bnequiv', [8801, 8421]], ['bNot', [10989]], ['bnot', [8976]], ['Bopf', [120121]], ['bopf', [120147]], ['bot', [8869]], ['bottom', [8869]], ['bowtie', [8904]], ['boxbox', [10697]], ['boxdl', [9488]], ['boxdL', [9557]], ['boxDl', [9558]], ['boxDL', [9559]], ['boxdr', [9484]], ['boxdR', [9554]], ['boxDr', [9555]], ['boxDR', [9556]], ['boxh', [9472]], ['boxH', [9552]], ['boxhd', [9516]], ['boxHd', [9572]], ['boxhD', [9573]], ['boxHD', [9574]], ['boxhu', [9524]], ['boxHu', [9575]], ['boxhU', [9576]], ['boxHU', [9577]], ['boxminus', [8863]], ['boxplus', [8862]], ['boxtimes', [8864]], ['boxul', [9496]], ['boxuL', [9563]], ['boxUl', [9564]], ['boxUL', [9565]], ['boxur', [9492]], ['boxuR', [9560]], ['boxUr', [9561]], ['boxUR', [9562]], ['boxv', [9474]], ['boxV', [9553]], ['boxvh', [9532]], ['boxvH', [9578]], ['boxVh', [9579]], ['boxVH', [9580]], ['boxvl', [9508]], ['boxvL', [9569]], ['boxVl', [9570]], ['boxVL', [9571]], ['boxvr', [9500]], ['boxvR', [9566]], ['boxVr', [9567]], ['boxVR', [9568]], ['bprime', [8245]], ['breve', [728]], ['Breve', [728]], ['brvbar', [166]], ['bscr', [119991]], ['Bscr', [8492]], ['bsemi', [8271]], ['bsim', [8765]], ['bsime', [8909]], ['bsolb', [10693]], ['bsol', [92]], ['bsolhsub', [10184]], ['bull', [8226]], ['bullet', [8226]], ['bump', [8782]], ['bumpE', [10926]], ['bumpe', [8783]], ['Bumpeq', [8782]], ['bumpeq', [8783]], ['Cacute', [262]], ['cacute', [263]], ['capand', [10820]], ['capbrcup', [10825]], ['capcap', [10827]], ['cap', [8745]], ['Cap', [8914]], ['capcup', [10823]], ['capdot', [10816]], ['CapitalDifferentialD', [8517]], ['caps', [8745, 65024]], ['caret', [8257]], ['caron', [711]], ['Cayleys', [8493]], ['ccaps', [10829]], ['Ccaron', [268]], ['ccaron', [269]], ['Ccedil', [199]], ['ccedil', [231]], ['Ccirc', [264]], ['ccirc', [265]], ['Cconint', [8752]], ['ccups', [10828]], ['ccupssm', [10832]], ['Cdot', [266]], ['cdot', [267]], ['cedil', [184]], ['Cedilla', [184]], ['cemptyv', [10674]], ['cent', [162]], ['centerdot', [183]], ['CenterDot', [183]], ['cfr', [120096]], ['Cfr', [8493]], ['CHcy', [1063]], ['chcy', [1095]], ['check', [10003]], ['checkmark', [10003]], ['Chi', [935]], ['chi', [967]], ['circ', [710]], ['circeq', [8791]], ['circlearrowleft', [8634]], ['circlearrowright', [8635]], ['circledast', [8859]], ['circledcirc', [8858]], ['circleddash', [8861]], ['CircleDot', [8857]], ['circledR', [174]], ['circledS', [9416]], ['CircleMinus', [8854]], ['CirclePlus', [8853]], ['CircleTimes', [8855]], ['cir', [9675]], ['cirE', [10691]], ['cire', [8791]], ['cirfnint', [10768]], ['cirmid', [10991]], ['cirscir', [10690]], ['ClockwiseContourIntegral', [8754]], ['clubs', [9827]], ['clubsuit', [9827]], ['colon', [58]], ['Colon', [8759]], ['Colone', [10868]], ['colone', [8788]], ['coloneq', [8788]], ['comma', [44]], ['commat', [64]], ['comp', [8705]], ['compfn', [8728]], ['complement', [8705]], ['complexes', [8450]], ['cong', [8773]], ['congdot', [10861]], ['Congruent', [8801]], ['conint', [8750]], ['Conint', [8751]], ['ContourIntegral', [8750]], ['copf', [120148]], ['Copf', [8450]], ['coprod', [8720]], ['Coproduct', [8720]], ['copy', [169]], ['COPY', [169]], ['copysr', [8471]], ['CounterClockwiseContourIntegral', [8755]], ['crarr', [8629]], ['cross', [10007]], ['Cross', [10799]], ['Cscr', [119966]], ['cscr', [119992]], ['csub', [10959]], ['csube', [10961]], ['csup', [10960]], ['csupe', [10962]], ['ctdot', [8943]], ['cudarrl', [10552]], ['cudarrr', [10549]], ['cuepr', [8926]], ['cuesc', [8927]], ['cularr', [8630]], ['cularrp', [10557]], ['cupbrcap', [10824]], ['cupcap', [10822]], ['CupCap', [8781]], ['cup', [8746]], ['Cup', [8915]], ['cupcup', [10826]], ['cupdot', [8845]], ['cupor', [10821]], ['cups', [8746, 65024]], ['curarr', [8631]], ['curarrm', [10556]], ['curlyeqprec', [8926]], ['curlyeqsucc', [8927]], ['curlyvee', [8910]], ['curlywedge', [8911]], ['curren', [164]], ['curvearrowleft', [8630]], ['curvearrowright', [8631]], ['cuvee', [8910]], ['cuwed', [8911]], ['cwconint', [8754]], ['cwint', [8753]], ['cylcty', [9005]], ['dagger', [8224]], ['Dagger', [8225]], ['daleth', [8504]], ['darr', [8595]], ['Darr', [8609]], ['dArr', [8659]], ['dash', [8208]], ['Dashv', [10980]], ['dashv', [8867]], ['dbkarow', [10511]], ['dblac', [733]], ['Dcaron', [270]], ['dcaron', [271]], ['Dcy', [1044]], ['dcy', [1076]], ['ddagger', [8225]], ['ddarr', [8650]], ['DD', [8517]], ['dd', [8518]], ['DDotrahd', [10513]], ['ddotseq', [10871]], ['deg', [176]], ['Del', [8711]], ['Delta', [916]], ['delta', [948]], ['demptyv', [10673]], ['dfisht', [10623]], ['Dfr', [120071]], ['dfr', [120097]], ['dHar', [10597]], ['dharl', [8643]], ['dharr', [8642]], ['DiacriticalAcute', [180]], ['DiacriticalDot', [729]], ['DiacriticalDoubleAcute', [733]], ['DiacriticalGrave', [96]], ['DiacriticalTilde', [732]], ['diam', [8900]], ['diamond', [8900]], ['Diamond', [8900]], ['diamondsuit', [9830]], ['diams', [9830]], ['die', [168]], ['DifferentialD', [8518]], ['digamma', [989]], ['disin', [8946]], ['div', [247]], ['divide', [247]], ['divideontimes', [8903]], ['divonx', [8903]], ['DJcy', [1026]], ['djcy', [1106]], ['dlcorn', [8990]], ['dlcrop', [8973]], ['dollar', [36]], ['Dopf', [120123]], ['dopf', [120149]], ['Dot', [168]], ['dot', [729]], ['DotDot', [8412]], ['doteq', [8784]], ['doteqdot', [8785]], ['DotEqual', [8784]], ['dotminus', [8760]], ['dotplus', [8724]], ['dotsquare', [8865]], ['doublebarwedge', [8966]], ['DoubleContourIntegral', [8751]], ['DoubleDot', [168]], ['DoubleDownArrow', [8659]], ['DoubleLeftArrow', [8656]], ['DoubleLeftRightArrow', [8660]], ['DoubleLeftTee', [10980]], ['DoubleLongLeftArrow', [10232]], ['DoubleLongLeftRightArrow', [10234]], ['DoubleLongRightArrow', [10233]], ['DoubleRightArrow', [8658]], ['DoubleRightTee', [8872]], ['DoubleUpArrow', [8657]], ['DoubleUpDownArrow', [8661]], ['DoubleVerticalBar', [8741]], ['DownArrowBar', [10515]], ['downarrow', [8595]], ['DownArrow', [8595]], ['Downarrow', [8659]], ['DownArrowUpArrow', [8693]], ['DownBreve', [785]], ['downdownarrows', [8650]], ['downharpoonleft', [8643]], ['downharpoonright', [8642]], ['DownLeftRightVector', [10576]], ['DownLeftTeeVector', [10590]], ['DownLeftVectorBar', [10582]], ['DownLeftVector', [8637]], ['DownRightTeeVector', [10591]], ['DownRightVectorBar', [10583]], ['DownRightVector', [8641]], ['DownTeeArrow', [8615]], ['DownTee', [8868]], ['drbkarow', [10512]], ['drcorn', [8991]], ['drcrop', [8972]], ['Dscr', [119967]], ['dscr', [119993]], ['DScy', [1029]], ['dscy', [1109]], ['dsol', [10742]], ['Dstrok', [272]], ['dstrok', [273]], ['dtdot', [8945]], ['dtri', [9663]], ['dtrif', [9662]], ['duarr', [8693]], ['duhar', [10607]], ['dwangle', [10662]], ['DZcy', [1039]], ['dzcy', [1119]], ['dzigrarr', [10239]], ['Eacute', [201]], ['eacute', [233]], ['easter', [10862]], ['Ecaron', [282]], ['ecaron', [283]], ['Ecirc', [202]], ['ecirc', [234]], ['ecir', [8790]], ['ecolon', [8789]], ['Ecy', [1069]], ['ecy', [1101]], ['eDDot', [10871]], ['Edot', [278]], ['edot', [279]], ['eDot', [8785]], ['ee', [8519]], ['efDot', [8786]], ['Efr', [120072]], ['efr', [120098]], ['eg', [10906]], ['Egrave', [200]], ['egrave', [232]], ['egs', [10902]], ['egsdot', [10904]], ['el', [10905]], ['Element', [8712]], ['elinters', [9191]], ['ell', [8467]], ['els', [10901]], ['elsdot', [10903]], ['Emacr', [274]], ['emacr', [275]], ['empty', [8709]], ['emptyset', [8709]], ['EmptySmallSquare', [9723]], ['emptyv', [8709]], ['EmptyVerySmallSquare', [9643]], ['emsp13', [8196]], ['emsp14', [8197]], ['emsp', [8195]], ['ENG', [330]], ['eng', [331]], ['ensp', [8194]], ['Eogon', [280]], ['eogon', [281]], ['Eopf', [120124]], ['eopf', [120150]], ['epar', [8917]], ['eparsl', [10723]], ['eplus', [10865]], ['epsi', [949]], ['Epsilon', [917]], ['epsilon', [949]], ['epsiv', [1013]], ['eqcirc', [8790]], ['eqcolon', [8789]], ['eqsim', [8770]], ['eqslantgtr', [10902]], ['eqslantless', [10901]], ['Equal', [10869]], ['equals', [61]], ['EqualTilde', [8770]], ['equest', [8799]], ['Equilibrium', [8652]], ['equiv', [8801]], ['equivDD', [10872]], ['eqvparsl', [10725]], ['erarr', [10609]], ['erDot', [8787]], ['escr', [8495]], ['Escr', [8496]], ['esdot', [8784]], ['Esim', [10867]], ['esim', [8770]], ['Eta', [919]], ['eta', [951]], ['ETH', [208]], ['eth', [240]], ['Euml', [203]], ['euml', [235]], ['euro', [8364]], ['excl', [33]], ['exist', [8707]], ['Exists', [8707]], ['expectation', [8496]], ['exponentiale', [8519]], ['ExponentialE', [8519]], ['fallingdotseq', [8786]], ['Fcy', [1060]], ['fcy', [1092]], ['female', [9792]], ['ffilig', [64259]], ['fflig', [64256]], ['ffllig', [64260]], ['Ffr', [120073]], ['ffr', [120099]], ['filig', [64257]], ['FilledSmallSquare', [9724]], ['FilledVerySmallSquare', [9642]], ['fjlig', [102, 106]], ['flat', [9837]], ['fllig', [64258]], ['fltns', [9649]], ['fnof', [402]], ['Fopf', [120125]], ['fopf', [120151]], ['forall', [8704]], ['ForAll', [8704]], ['fork', [8916]], ['forkv', [10969]], ['Fouriertrf', [8497]], ['fpartint', [10765]], ['frac12', [189]], ['frac13', [8531]], ['frac14', [188]], ['frac15', [8533]], ['frac16', [8537]], ['frac18', [8539]], ['frac23', [8532]], ['frac25', [8534]], ['frac34', [190]], ['frac35', [8535]], ['frac38', [8540]], ['frac45', [8536]], ['frac56', [8538]], ['frac58', [8541]], ['frac78', [8542]], ['frasl', [8260]], ['frown', [8994]], ['fscr', [119995]], ['Fscr', [8497]], ['gacute', [501]], ['Gamma', [915]], ['gamma', [947]], ['Gammad', [988]], ['gammad', [989]], ['gap', [10886]], ['Gbreve', [286]], ['gbreve', [287]], ['Gcedil', [290]], ['Gcirc', [284]], ['gcirc', [285]], ['Gcy', [1043]], ['gcy', [1075]], ['Gdot', [288]], ['gdot', [289]], ['ge', [8805]], ['gE', [8807]], ['gEl', [10892]], ['gel', [8923]], ['geq', [8805]], ['geqq', [8807]], ['geqslant', [10878]], ['gescc', [10921]], ['ges', [10878]], ['gesdot', [10880]], ['gesdoto', [10882]], ['gesdotol', [10884]], ['gesl', [8923, 65024]], ['gesles', [10900]], ['Gfr', [120074]], ['gfr', [120100]], ['gg', [8811]], ['Gg', [8921]], ['ggg', [8921]], ['gimel', [8503]], ['GJcy', [1027]], ['gjcy', [1107]], ['gla', [10917]], ['gl', [8823]], ['glE', [10898]], ['glj', [10916]], ['gnap', [10890]], ['gnapprox', [10890]], ['gne', [10888]], ['gnE', [8809]], ['gneq', [10888]], ['gneqq', [8809]], ['gnsim', [8935]], ['Gopf', [120126]], ['gopf', [120152]], ['grave', [96]], ['GreaterEqual', [8805]], ['GreaterEqualLess', [8923]], ['GreaterFullEqual', [8807]], ['GreaterGreater', [10914]], ['GreaterLess', [8823]], ['GreaterSlantEqual', [10878]], ['GreaterTilde', [8819]], ['Gscr', [119970]], ['gscr', [8458]], ['gsim', [8819]], ['gsime', [10894]], ['gsiml', [10896]], ['gtcc', [10919]], ['gtcir', [10874]], ['gt', [62]], ['GT', [62]], ['Gt', [8811]], ['gtdot', [8919]], ['gtlPar', [10645]], ['gtquest', [10876]], ['gtrapprox', [10886]], ['gtrarr', [10616]], ['gtrdot', [8919]], ['gtreqless', [8923]], ['gtreqqless', [10892]], ['gtrless', [8823]], ['gtrsim', [8819]], ['gvertneqq', [8809, 65024]], ['gvnE', [8809, 65024]], ['Hacek', [711]], ['hairsp', [8202]], ['half', [189]], ['hamilt', [8459]], ['HARDcy', [1066]], ['hardcy', [1098]], ['harrcir', [10568]], ['harr', [8596]], ['hArr', [8660]], ['harrw', [8621]], ['Hat', [94]], ['hbar', [8463]], ['Hcirc', [292]], ['hcirc', [293]], ['hearts', [9829]], ['heartsuit', [9829]], ['hellip', [8230]], ['hercon', [8889]], ['hfr', [120101]], ['Hfr', [8460]], ['HilbertSpace', [8459]], ['hksearow', [10533]], ['hkswarow', [10534]], ['hoarr', [8703]], ['homtht', [8763]], ['hookleftarrow', [8617]], ['hookrightarrow', [8618]], ['hopf', [120153]], ['Hopf', [8461]], ['horbar', [8213]], ['HorizontalLine', [9472]], ['hscr', [119997]], ['Hscr', [8459]], ['hslash', [8463]], ['Hstrok', [294]], ['hstrok', [295]], ['HumpDownHump', [8782]], ['HumpEqual', [8783]], ['hybull', [8259]], ['hyphen', [8208]], ['Iacute', [205]], ['iacute', [237]], ['ic', [8291]], ['Icirc', [206]], ['icirc', [238]], ['Icy', [1048]], ['icy', [1080]], ['Idot', [304]], ['IEcy', [1045]], ['iecy', [1077]], ['iexcl', [161]], ['iff', [8660]], ['ifr', [120102]], ['Ifr', [8465]], ['Igrave', [204]], ['igrave', [236]], ['ii', [8520]], ['iiiint', [10764]], ['iiint', [8749]], ['iinfin', [10716]], ['iiota', [8489]], ['IJlig', [306]], ['ijlig', [307]], ['Imacr', [298]], ['imacr', [299]], ['image', [8465]], ['ImaginaryI', [8520]], ['imagline', [8464]], ['imagpart', [8465]], ['imath', [305]], ['Im', [8465]], ['imof', [8887]], ['imped', [437]], ['Implies', [8658]], ['incare', [8453]], ['in', [8712]], ['infin', [8734]], ['infintie', [10717]], ['inodot', [305]], ['intcal', [8890]], ['int', [8747]], ['Int', [8748]], ['integers', [8484]], ['Integral', [8747]], ['intercal', [8890]], ['Intersection', [8898]], ['intlarhk', [10775]], ['intprod', [10812]], ['InvisibleComma', [8291]], ['InvisibleTimes', [8290]], ['IOcy', [1025]], ['iocy', [1105]], ['Iogon', [302]], ['iogon', [303]], ['Iopf', [120128]], ['iopf', [120154]], ['Iota', [921]], ['iota', [953]], ['iprod', [10812]], ['iquest', [191]], ['iscr', [119998]], ['Iscr', [8464]], ['isin', [8712]], ['isindot', [8949]], ['isinE', [8953]], ['isins', [8948]], ['isinsv', [8947]], ['isinv', [8712]], ['it', [8290]], ['Itilde', [296]], ['itilde', [297]], ['Iukcy', [1030]], ['iukcy', [1110]], ['Iuml', [207]], ['iuml', [239]], ['Jcirc', [308]], ['jcirc', [309]], ['Jcy', [1049]], ['jcy', [1081]], ['Jfr', [120077]], ['jfr', [120103]], ['jmath', [567]], ['Jopf', [120129]], ['jopf', [120155]], ['Jscr', [119973]], ['jscr', [119999]], ['Jsercy', [1032]], ['jsercy', [1112]], ['Jukcy', [1028]], ['jukcy', [1108]], ['Kappa', [922]], ['kappa', [954]], ['kappav', [1008]], ['Kcedil', [310]], ['kcedil', [311]], ['Kcy', [1050]], ['kcy', [1082]], ['Kfr', [120078]], ['kfr', [120104]], ['kgreen', [312]], ['KHcy', [1061]], ['khcy', [1093]], ['KJcy', [1036]], ['kjcy', [1116]], ['Kopf', [120130]], ['kopf', [120156]], ['Kscr', [119974]], ['kscr', [120000]], ['lAarr', [8666]], ['Lacute', [313]], ['lacute', [314]], ['laemptyv', [10676]], ['lagran', [8466]], ['Lambda', [923]], ['lambda', [955]], ['lang', [10216]], ['Lang', [10218]], ['langd', [10641]], ['langle', [10216]], ['lap', [10885]], ['Laplacetrf', [8466]], ['laquo', [171]], ['larrb', [8676]], ['larrbfs', [10527]], ['larr', [8592]], ['Larr', [8606]], ['lArr', [8656]], ['larrfs', [10525]], ['larrhk', [8617]], ['larrlp', [8619]], ['larrpl', [10553]], ['larrsim', [10611]], ['larrtl', [8610]], ['latail', [10521]], ['lAtail', [10523]], ['lat', [10923]], ['late', [10925]], ['lates', [10925, 65024]], ['lbarr', [10508]], ['lBarr', [10510]], ['lbbrk', [10098]], ['lbrace', [123]], ['lbrack', [91]], ['lbrke', [10635]], ['lbrksld', [10639]], ['lbrkslu', [10637]], ['Lcaron', [317]], ['lcaron', [318]], ['Lcedil', [315]], ['lcedil', [316]], ['lceil', [8968]], ['lcub', [123]], ['Lcy', [1051]], ['lcy', [1083]], ['ldca', [10550]], ['ldquo', [8220]], ['ldquor', [8222]], ['ldrdhar', [10599]], ['ldrushar', [10571]], ['ldsh', [8626]], ['le', [8804]], ['lE', [8806]], ['LeftAngleBracket', [10216]], ['LeftArrowBar', [8676]], ['leftarrow', [8592]], ['LeftArrow', [8592]], ['Leftarrow', [8656]], ['LeftArrowRightArrow', [8646]], ['leftarrowtail', [8610]], ['LeftCeiling', [8968]], ['LeftDoubleBracket', [10214]], ['LeftDownTeeVector', [10593]], ['LeftDownVectorBar', [10585]], ['LeftDownVector', [8643]], ['LeftFloor', [8970]], ['leftharpoondown', [8637]], ['leftharpoonup', [8636]], ['leftleftarrows', [8647]], ['leftrightarrow', [8596]], ['LeftRightArrow', [8596]], ['Leftrightarrow', [8660]], ['leftrightarrows', [8646]], ['leftrightharpoons', [8651]], ['leftrightsquigarrow', [8621]], ['LeftRightVector', [10574]], ['LeftTeeArrow', [8612]], ['LeftTee', [8867]], ['LeftTeeVector', [10586]], ['leftthreetimes', [8907]], ['LeftTriangleBar', [10703]], ['LeftTriangle', [8882]], ['LeftTriangleEqual', [8884]], ['LeftUpDownVector', [10577]], ['LeftUpTeeVector', [10592]], ['LeftUpVectorBar', [10584]], ['LeftUpVector', [8639]], ['LeftVectorBar', [10578]], ['LeftVector', [8636]], ['lEg', [10891]], ['leg', [8922]], ['leq', [8804]], ['leqq', [8806]], ['leqslant', [10877]], ['lescc', [10920]], ['les', [10877]], ['lesdot', [10879]], ['lesdoto', [10881]], ['lesdotor', [10883]], ['lesg', [8922, 65024]], ['lesges', [10899]], ['lessapprox', [10885]], ['lessdot', [8918]], ['lesseqgtr', [8922]], ['lesseqqgtr', [10891]], ['LessEqualGreater', [8922]], ['LessFullEqual', [8806]], ['LessGreater', [8822]], ['lessgtr', [8822]], ['LessLess', [10913]], ['lesssim', [8818]], ['LessSlantEqual', [10877]], ['LessTilde', [8818]], ['lfisht', [10620]], ['lfloor', [8970]], ['Lfr', [120079]], ['lfr', [120105]], ['lg', [8822]], ['lgE', [10897]], ['lHar', [10594]], ['lhard', [8637]], ['lharu', [8636]], ['lharul', [10602]], ['lhblk', [9604]], ['LJcy', [1033]], ['ljcy', [1113]], ['llarr', [8647]], ['ll', [8810]], ['Ll', [8920]], ['llcorner', [8990]], ['Lleftarrow', [8666]], ['llhard', [10603]], ['lltri', [9722]], ['Lmidot', [319]], ['lmidot', [320]], ['lmoustache', [9136]], ['lmoust', [9136]], ['lnap', [10889]], ['lnapprox', [10889]], ['lne', [10887]], ['lnE', [8808]], ['lneq', [10887]], ['lneqq', [8808]], ['lnsim', [8934]], ['loang', [10220]], ['loarr', [8701]], ['lobrk', [10214]], ['longleftarrow', [10229]], ['LongLeftArrow', [10229]], ['Longleftarrow', [10232]], ['longleftrightarrow', [10231]], ['LongLeftRightArrow', [10231]], ['Longleftrightarrow', [10234]], ['longmapsto', [10236]], ['longrightarrow', [10230]], ['LongRightArrow', [10230]], ['Longrightarrow', [10233]], ['looparrowleft', [8619]], ['looparrowright', [8620]], ['lopar', [10629]], ['Lopf', [120131]], ['lopf', [120157]], ['loplus', [10797]], ['lotimes', [10804]], ['lowast', [8727]], ['lowbar', [95]], ['LowerLeftArrow', [8601]], ['LowerRightArrow', [8600]], ['loz', [9674]], ['lozenge', [9674]], ['lozf', [10731]], ['lpar', [40]], ['lparlt', [10643]], ['lrarr', [8646]], ['lrcorner', [8991]], ['lrhar', [8651]], ['lrhard', [10605]], ['lrm', [8206]], ['lrtri', [8895]], ['lsaquo', [8249]], ['lscr', [120001]], ['Lscr', [8466]], ['lsh', [8624]], ['Lsh', [8624]], ['lsim', [8818]], ['lsime', [10893]], ['lsimg', [10895]], ['lsqb', [91]], ['lsquo', [8216]], ['lsquor', [8218]], ['Lstrok', [321]], ['lstrok', [322]], ['ltcc', [10918]], ['ltcir', [10873]], ['lt', [60]], ['LT', [60]], ['Lt', [8810]], ['ltdot', [8918]], ['lthree', [8907]], ['ltimes', [8905]], ['ltlarr', [10614]], ['ltquest', [10875]], ['ltri', [9667]], ['ltrie', [8884]], ['ltrif', [9666]], ['ltrPar', [10646]], ['lurdshar', [10570]], ['luruhar', [10598]], ['lvertneqq', [8808, 65024]], ['lvnE', [8808, 65024]], ['macr', [175]], ['male', [9794]], ['malt', [10016]], ['maltese', [10016]], ['Map', [10501]], ['map', [8614]], ['mapsto', [8614]], ['mapstodown', [8615]], ['mapstoleft', [8612]], ['mapstoup', [8613]], ['marker', [9646]], ['mcomma', [10793]], ['Mcy', [1052]], ['mcy', [1084]], ['mdash', [8212]], ['mDDot', [8762]], ['measuredangle', [8737]], ['MediumSpace', [8287]], ['Mellintrf', [8499]], ['Mfr', [120080]], ['mfr', [120106]], ['mho', [8487]], ['micro', [181]], ['midast', [42]], ['midcir', [10992]], ['mid', [8739]], ['middot', [183]], ['minusb', [8863]], ['minus', [8722]], ['minusd', [8760]], ['minusdu', [10794]], ['MinusPlus', [8723]], ['mlcp', [10971]], ['mldr', [8230]], ['mnplus', [8723]], ['models', [8871]], ['Mopf', [120132]], ['mopf', [120158]], ['mp', [8723]], ['mscr', [120002]], ['Mscr', [8499]], ['mstpos', [8766]], ['Mu', [924]], ['mu', [956]], ['multimap', [8888]], ['mumap', [8888]], ['nabla', [8711]], ['Nacute', [323]], ['nacute', [324]], ['nang', [8736, 8402]], ['nap', [8777]], ['napE', [10864, 824]], ['napid', [8779, 824]], ['napos', [329]], ['napprox', [8777]], ['natural', [9838]], ['naturals', [8469]], ['natur', [9838]], ['nbsp', [160]], ['nbump', [8782, 824]], ['nbumpe', [8783, 824]], ['ncap', [10819]], ['Ncaron', [327]], ['ncaron', [328]], ['Ncedil', [325]], ['ncedil', [326]], ['ncong', [8775]], ['ncongdot', [10861, 824]], ['ncup', [10818]], ['Ncy', [1053]], ['ncy', [1085]], ['ndash', [8211]], ['nearhk', [10532]], ['nearr', [8599]], ['neArr', [8663]], ['nearrow', [8599]], ['ne', [8800]], ['nedot', [8784, 824]], ['NegativeMediumSpace', [8203]], ['NegativeThickSpace', [8203]], ['NegativeThinSpace', [8203]], ['NegativeVeryThinSpace', [8203]], ['nequiv', [8802]], ['nesear', [10536]], ['nesim', [8770, 824]], ['NestedGreaterGreater', [8811]], ['NestedLessLess', [8810]], ['nexist', [8708]], ['nexists', [8708]], ['Nfr', [120081]], ['nfr', [120107]], ['ngE', [8807, 824]], ['nge', [8817]], ['ngeq', [8817]], ['ngeqq', [8807, 824]], ['ngeqslant', [10878, 824]], ['nges', [10878, 824]], ['nGg', [8921, 824]], ['ngsim', [8821]], ['nGt', [8811, 8402]], ['ngt', [8815]], ['ngtr', [8815]], ['nGtv', [8811, 824]], ['nharr', [8622]], ['nhArr', [8654]], ['nhpar', [10994]], ['ni', [8715]], ['nis', [8956]], ['nisd', [8954]], ['niv', [8715]], ['NJcy', [1034]], ['njcy', [1114]], ['nlarr', [8602]], ['nlArr', [8653]], ['nldr', [8229]], ['nlE', [8806, 824]], ['nle', [8816]], ['nleftarrow', [8602]], ['nLeftarrow', [8653]], ['nleftrightarrow', [8622]], ['nLeftrightarrow', [8654]], ['nleq', [8816]], ['nleqq', [8806, 824]], ['nleqslant', [10877, 824]], ['nles', [10877, 824]], ['nless', [8814]], ['nLl', [8920, 824]], ['nlsim', [8820]], ['nLt', [8810, 8402]], ['nlt', [8814]], ['nltri', [8938]], ['nltrie', [8940]], ['nLtv', [8810, 824]], ['nmid', [8740]], ['NoBreak', [8288]], ['NonBreakingSpace', [160]], ['nopf', [120159]], ['Nopf', [8469]], ['Not', [10988]], ['not', [172]], ['NotCongruent', [8802]], ['NotCupCap', [8813]], ['NotDoubleVerticalBar', [8742]], ['NotElement', [8713]], ['NotEqual', [8800]], ['NotEqualTilde', [8770, 824]], ['NotExists', [8708]], ['NotGreater', [8815]], ['NotGreaterEqual', [8817]], ['NotGreaterFullEqual', [8807, 824]], ['NotGreaterGreater', [8811, 824]], ['NotGreaterLess', [8825]], ['NotGreaterSlantEqual', [10878, 824]], ['NotGreaterTilde', [8821]], ['NotHumpDownHump', [8782, 824]], ['NotHumpEqual', [8783, 824]], ['notin', [8713]], ['notindot', [8949, 824]], ['notinE', [8953, 824]], ['notinva', [8713]], ['notinvb', [8951]], ['notinvc', [8950]], ['NotLeftTriangleBar', [10703, 824]], ['NotLeftTriangle', [8938]], ['NotLeftTriangleEqual', [8940]], ['NotLess', [8814]], ['NotLessEqual', [8816]], ['NotLessGreater', [8824]], ['NotLessLess', [8810, 824]], ['NotLessSlantEqual', [10877, 824]], ['NotLessTilde', [8820]], ['NotNestedGreaterGreater', [10914, 824]], ['NotNestedLessLess', [10913, 824]], ['notni', [8716]], ['notniva', [8716]], ['notnivb', [8958]], ['notnivc', [8957]], ['NotPrecedes', [8832]], ['NotPrecedesEqual', [10927, 824]], ['NotPrecedesSlantEqual', [8928]], ['NotReverseElement', [8716]], ['NotRightTriangleBar', [10704, 824]], ['NotRightTriangle', [8939]], ['NotRightTriangleEqual', [8941]], ['NotSquareSubset', [8847, 824]], ['NotSquareSubsetEqual', [8930]], ['NotSquareSuperset', [8848, 824]], ['NotSquareSupersetEqual', [8931]], ['NotSubset', [8834, 8402]], ['NotSubsetEqual', [8840]], ['NotSucceeds', [8833]], ['NotSucceedsEqual', [10928, 824]], ['NotSucceedsSlantEqual', [8929]], ['NotSucceedsTilde', [8831, 824]], ['NotSuperset', [8835, 8402]], ['NotSupersetEqual', [8841]], ['NotTilde', [8769]], ['NotTildeEqual', [8772]], ['NotTildeFullEqual', [8775]], ['NotTildeTilde', [8777]], ['NotVerticalBar', [8740]], ['nparallel', [8742]], ['npar', [8742]], ['nparsl', [11005, 8421]], ['npart', [8706, 824]], ['npolint', [10772]], ['npr', [8832]], ['nprcue', [8928]], ['nprec', [8832]], ['npreceq', [10927, 824]], ['npre', [10927, 824]], ['nrarrc', [10547, 824]], ['nrarr', [8603]], ['nrArr', [8655]], ['nrarrw', [8605, 824]], ['nrightarrow', [8603]], ['nRightarrow', [8655]], ['nrtri', [8939]], ['nrtrie', [8941]], ['nsc', [8833]], ['nsccue', [8929]], ['nsce', [10928, 824]], ['Nscr', [119977]], ['nscr', [120003]], ['nshortmid', [8740]], ['nshortparallel', [8742]], ['nsim', [8769]], ['nsime', [8772]], ['nsimeq', [8772]], ['nsmid', [8740]], ['nspar', [8742]], ['nsqsube', [8930]], ['nsqsupe', [8931]], ['nsub', [8836]], ['nsubE', [10949, 824]], ['nsube', [8840]], ['nsubset', [8834, 8402]], ['nsubseteq', [8840]], ['nsubseteqq', [10949, 824]], ['nsucc', [8833]], ['nsucceq', [10928, 824]], ['nsup', [8837]], ['nsupE', [10950, 824]], ['nsupe', [8841]], ['nsupset', [8835, 8402]], ['nsupseteq', [8841]], ['nsupseteqq', [10950, 824]], ['ntgl', [8825]], ['Ntilde', [209]], ['ntilde', [241]], ['ntlg', [8824]], ['ntriangleleft', [8938]], ['ntrianglelefteq', [8940]], ['ntriangleright', [8939]], ['ntrianglerighteq', [8941]], ['Nu', [925]], ['nu', [957]], ['num', [35]], ['numero', [8470]], ['numsp', [8199]], ['nvap', [8781, 8402]], ['nvdash', [8876]], ['nvDash', [8877]], ['nVdash', [8878]], ['nVDash', [8879]], ['nvge', [8805, 8402]], ['nvgt', [62, 8402]], ['nvHarr', [10500]], ['nvinfin', [10718]], ['nvlArr', [10498]], ['nvle', [8804, 8402]], ['nvlt', [60, 8402]], ['nvltrie', [8884, 8402]], ['nvrArr', [10499]], ['nvrtrie', [8885, 8402]], ['nvsim', [8764, 8402]], ['nwarhk', [10531]], ['nwarr', [8598]], ['nwArr', [8662]], ['nwarrow', [8598]], ['nwnear', [10535]], ['Oacute', [211]], ['oacute', [243]], ['oast', [8859]], ['Ocirc', [212]], ['ocirc', [244]], ['ocir', [8858]], ['Ocy', [1054]], ['ocy', [1086]], ['odash', [8861]], ['Odblac', [336]], ['odblac', [337]], ['odiv', [10808]], ['odot', [8857]], ['odsold', [10684]], ['OElig', [338]], ['oelig', [339]], ['ofcir', [10687]], ['Ofr', [120082]], ['ofr', [120108]], ['ogon', [731]], ['Ograve', [210]], ['ograve', [242]], ['ogt', [10689]], ['ohbar', [10677]], ['ohm', [937]], ['oint', [8750]], ['olarr', [8634]], ['olcir', [10686]], ['olcross', [10683]], ['oline', [8254]], ['olt', [10688]], ['Omacr', [332]], ['omacr', [333]], ['Omega', [937]], ['omega', [969]], ['Omicron', [927]], ['omicron', [959]], ['omid', [10678]], ['ominus', [8854]], ['Oopf', [120134]], ['oopf', [120160]], ['opar', [10679]], ['OpenCurlyDoubleQuote', [8220]], ['OpenCurlyQuote', [8216]], ['operp', [10681]], ['oplus', [8853]], ['orarr', [8635]], ['Or', [10836]], ['or', [8744]], ['ord', [10845]], ['order', [8500]], ['orderof', [8500]], ['ordf', [170]], ['ordm', [186]], ['origof', [8886]], ['oror', [10838]], ['orslope', [10839]], ['orv', [10843]], ['oS', [9416]], ['Oscr', [119978]], ['oscr', [8500]], ['Oslash', [216]], ['oslash', [248]], ['osol', [8856]], ['Otilde', [213]], ['otilde', [245]], ['otimesas', [10806]], ['Otimes', [10807]], ['otimes', [8855]], ['Ouml', [214]], ['ouml', [246]], ['ovbar', [9021]], ['OverBar', [8254]], ['OverBrace', [9182]], ['OverBracket', [9140]], ['OverParenthesis', [9180]], ['para', [182]], ['parallel', [8741]], ['par', [8741]], ['parsim', [10995]], ['parsl', [11005]], ['part', [8706]], ['PartialD', [8706]], ['Pcy', [1055]], ['pcy', [1087]], ['percnt', [37]], ['period', [46]], ['permil', [8240]], ['perp', [8869]], ['pertenk', [8241]], ['Pfr', [120083]], ['pfr', [120109]], ['Phi', [934]], ['phi', [966]], ['phiv', [981]], ['phmmat', [8499]], ['phone', [9742]], ['Pi', [928]], ['pi', [960]], ['pitchfork', [8916]], ['piv', [982]], ['planck', [8463]], ['planckh', [8462]], ['plankv', [8463]], ['plusacir', [10787]], ['plusb', [8862]], ['pluscir', [10786]], ['plus', [43]], ['plusdo', [8724]], ['plusdu', [10789]], ['pluse', [10866]], ['PlusMinus', [177]], ['plusmn', [177]], ['plussim', [10790]], ['plustwo', [10791]], ['pm', [177]], ['Poincareplane', [8460]], ['pointint', [10773]], ['popf', [120161]], ['Popf', [8473]], ['pound', [163]], ['prap', [10935]], ['Pr', [10939]], ['pr', [8826]], ['prcue', [8828]], ['precapprox', [10935]], ['prec', [8826]], ['preccurlyeq', [8828]], ['Precedes', [8826]], ['PrecedesEqual', [10927]], ['PrecedesSlantEqual', [8828]], ['PrecedesTilde', [8830]], ['preceq', [10927]], ['precnapprox', [10937]], ['precneqq', [10933]], ['precnsim', [8936]], ['pre', [10927]], ['prE', [10931]], ['precsim', [8830]], ['prime', [8242]], ['Prime', [8243]], ['primes', [8473]], ['prnap', [10937]], ['prnE', [10933]], ['prnsim', [8936]], ['prod', [8719]], ['Product', [8719]], ['profalar', [9006]], ['profline', [8978]], ['profsurf', [8979]], ['prop', [8733]], ['Proportional', [8733]], ['Proportion', [8759]], ['propto', [8733]], ['prsim', [8830]], ['prurel', [8880]], ['Pscr', [119979]], ['pscr', [120005]], ['Psi', [936]], ['psi', [968]], ['puncsp', [8200]], ['Qfr', [120084]], ['qfr', [120110]], ['qint', [10764]], ['qopf', [120162]], ['Qopf', [8474]], ['qprime', [8279]], ['Qscr', [119980]], ['qscr', [120006]], ['quaternions', [8461]], ['quatint', [10774]], ['quest', [63]], ['questeq', [8799]], ['quot', [34]], ['QUOT', [34]], ['rAarr', [8667]], ['race', [8765, 817]], ['Racute', [340]], ['racute', [341]], ['radic', [8730]], ['raemptyv', [10675]], ['rang', [10217]], ['Rang', [10219]], ['rangd', [10642]], ['range', [10661]], ['rangle', [10217]], ['raquo', [187]], ['rarrap', [10613]], ['rarrb', [8677]], ['rarrbfs', [10528]], ['rarrc', [10547]], ['rarr', [8594]], ['Rarr', [8608]], ['rArr', [8658]], ['rarrfs', [10526]], ['rarrhk', [8618]], ['rarrlp', [8620]], ['rarrpl', [10565]], ['rarrsim', [10612]], ['Rarrtl', [10518]], ['rarrtl', [8611]], ['rarrw', [8605]], ['ratail', [10522]], ['rAtail', [10524]], ['ratio', [8758]], ['rationals', [8474]], ['rbarr', [10509]], ['rBarr', [10511]], ['RBarr', [10512]], ['rbbrk', [10099]], ['rbrace', [125]], ['rbrack', [93]], ['rbrke', [10636]], ['rbrksld', [10638]], ['rbrkslu', [10640]], ['Rcaron', [344]], ['rcaron', [345]], ['Rcedil', [342]], ['rcedil', [343]], ['rceil', [8969]], ['rcub', [125]], ['Rcy', [1056]], ['rcy', [1088]], ['rdca', [10551]], ['rdldhar', [10601]], ['rdquo', [8221]], ['rdquor', [8221]], ['CloseCurlyDoubleQuote', [8221]], ['rdsh', [8627]], ['real', [8476]], ['realine', [8475]], ['realpart', [8476]], ['reals', [8477]], ['Re', [8476]], ['rect', [9645]], ['reg', [174]], ['REG', [174]], ['ReverseElement', [8715]], ['ReverseEquilibrium', [8651]], ['ReverseUpEquilibrium', [10607]], ['rfisht', [10621]], ['rfloor', [8971]], ['rfr', [120111]], ['Rfr', [8476]], ['rHar', [10596]], ['rhard', [8641]], ['rharu', [8640]], ['rharul', [10604]], ['Rho', [929]], ['rho', [961]], ['rhov', [1009]], ['RightAngleBracket', [10217]], ['RightArrowBar', [8677]], ['rightarrow', [8594]], ['RightArrow', [8594]], ['Rightarrow', [8658]], ['RightArrowLeftArrow', [8644]], ['rightarrowtail', [8611]], ['RightCeiling', [8969]], ['RightDoubleBracket', [10215]], ['RightDownTeeVector', [10589]], ['RightDownVectorBar', [10581]], ['RightDownVector', [8642]], ['RightFloor', [8971]], ['rightharpoondown', [8641]], ['rightharpoonup', [8640]], ['rightleftarrows', [8644]], ['rightleftharpoons', [8652]], ['rightrightarrows', [8649]], ['rightsquigarrow', [8605]], ['RightTeeArrow', [8614]], ['RightTee', [8866]], ['RightTeeVector', [10587]], ['rightthreetimes', [8908]], ['RightTriangleBar', [10704]], ['RightTriangle', [8883]], ['RightTriangleEqual', [8885]], ['RightUpDownVector', [10575]], ['RightUpTeeVector', [10588]], ['RightUpVectorBar', [10580]], ['RightUpVector', [8638]], ['RightVectorBar', [10579]], ['RightVector', [8640]], ['ring', [730]], ['risingdotseq', [8787]], ['rlarr', [8644]], ['rlhar', [8652]], ['rlm', [8207]], ['rmoustache', [9137]], ['rmoust', [9137]], ['rnmid', [10990]], ['roang', [10221]], ['roarr', [8702]], ['robrk', [10215]], ['ropar', [10630]], ['ropf', [120163]], ['Ropf', [8477]], ['roplus', [10798]], ['rotimes', [10805]], ['RoundImplies', [10608]], ['rpar', [41]], ['rpargt', [10644]], ['rppolint', [10770]], ['rrarr', [8649]], ['Rrightarrow', [8667]], ['rsaquo', [8250]], ['rscr', [120007]], ['Rscr', [8475]], ['rsh', [8625]], ['Rsh', [8625]], ['rsqb', [93]], ['rsquo', [8217]], ['rsquor', [8217]], ['CloseCurlyQuote', [8217]], ['rthree', [8908]], ['rtimes', [8906]], ['rtri', [9657]], ['rtrie', [8885]], ['rtrif', [9656]], ['rtriltri', [10702]], ['RuleDelayed', [10740]], ['ruluhar', [10600]], ['rx', [8478]], ['Sacute', [346]], ['sacute', [347]], ['sbquo', [8218]], ['scap', [10936]], ['Scaron', [352]], ['scaron', [353]], ['Sc', [10940]], ['sc', [8827]], ['sccue', [8829]], ['sce', [10928]], ['scE', [10932]], ['Scedil', [350]], ['scedil', [351]], ['Scirc', [348]], ['scirc', [349]], ['scnap', [10938]], ['scnE', [10934]], ['scnsim', [8937]], ['scpolint', [10771]], ['scsim', [8831]], ['Scy', [1057]], ['scy', [1089]], ['sdotb', [8865]], ['sdot', [8901]], ['sdote', [10854]], ['searhk', [10533]], ['searr', [8600]], ['seArr', [8664]], ['searrow', [8600]], ['sect', [167]], ['semi', [59]], ['seswar', [10537]], ['setminus', [8726]], ['setmn', [8726]], ['sext', [10038]], ['Sfr', [120086]], ['sfr', [120112]], ['sfrown', [8994]], ['sharp', [9839]], ['SHCHcy', [1065]], ['shchcy', [1097]], ['SHcy', [1064]], ['shcy', [1096]], ['ShortDownArrow', [8595]], ['ShortLeftArrow', [8592]], ['shortmid', [8739]], ['shortparallel', [8741]], ['ShortRightArrow', [8594]], ['ShortUpArrow', [8593]], ['shy', [173]], ['Sigma', [931]], ['sigma', [963]], ['sigmaf', [962]], ['sigmav', [962]], ['sim', [8764]], ['simdot', [10858]], ['sime', [8771]], ['simeq', [8771]], ['simg', [10910]], ['simgE', [10912]], ['siml', [10909]], ['simlE', [10911]], ['simne', [8774]], ['simplus', [10788]], ['simrarr', [10610]], ['slarr', [8592]], ['SmallCircle', [8728]], ['smallsetminus', [8726]], ['smashp', [10803]], ['smeparsl', [10724]], ['smid', [8739]], ['smile', [8995]], ['smt', [10922]], ['smte', [10924]], ['smtes', [10924, 65024]], ['SOFTcy', [1068]], ['softcy', [1100]], ['solbar', [9023]], ['solb', [10692]], ['sol', [47]], ['Sopf', [120138]], ['sopf', [120164]], ['spades', [9824]], ['spadesuit', [9824]], ['spar', [8741]], ['sqcap', [8851]], ['sqcaps', [8851, 65024]], ['sqcup', [8852]], ['sqcups', [8852, 65024]], ['Sqrt', [8730]], ['sqsub', [8847]], ['sqsube', [8849]], ['sqsubset', [8847]], ['sqsubseteq', [8849]], ['sqsup', [8848]], ['sqsupe', [8850]], ['sqsupset', [8848]], ['sqsupseteq', [8850]], ['square', [9633]], ['Square', [9633]], ['SquareIntersection', [8851]], ['SquareSubset', [8847]], ['SquareSubsetEqual', [8849]], ['SquareSuperset', [8848]], ['SquareSupersetEqual', [8850]], ['SquareUnion', [8852]], ['squarf', [9642]], ['squ', [9633]], ['squf', [9642]], ['srarr', [8594]], ['Sscr', [119982]], ['sscr', [120008]], ['ssetmn', [8726]], ['ssmile', [8995]], ['sstarf', [8902]], ['Star', [8902]], ['star', [9734]], ['starf', [9733]], ['straightepsilon', [1013]], ['straightphi', [981]], ['strns', [175]], ['sub', [8834]], ['Sub', [8912]], ['subdot', [10941]], ['subE', [10949]], ['sube', [8838]], ['subedot', [10947]], ['submult', [10945]], ['subnE', [10955]], ['subne', [8842]], ['subplus', [10943]], ['subrarr', [10617]], ['subset', [8834]], ['Subset', [8912]], ['subseteq', [8838]], ['subseteqq', [10949]], ['SubsetEqual', [8838]], ['subsetneq', [8842]], ['subsetneqq', [10955]], ['subsim', [10951]], ['subsub', [10965]], ['subsup', [10963]], ['succapprox', [10936]], ['succ', [8827]], ['succcurlyeq', [8829]], ['Succeeds', [8827]], ['SucceedsEqual', [10928]], ['SucceedsSlantEqual', [8829]], ['SucceedsTilde', [8831]], ['succeq', [10928]], ['succnapprox', [10938]], ['succneqq', [10934]], ['succnsim', [8937]], ['succsim', [8831]], ['SuchThat', [8715]], ['sum', [8721]], ['Sum', [8721]], ['sung', [9834]], ['sup1', [185]], ['sup2', [178]], ['sup3', [179]], ['sup', [8835]], ['Sup', [8913]], ['supdot', [10942]], ['supdsub', [10968]], ['supE', [10950]], ['supe', [8839]], ['supedot', [10948]], ['Superset', [8835]], ['SupersetEqual', [8839]], ['suphsol', [10185]], ['suphsub', [10967]], ['suplarr', [10619]], ['supmult', [10946]], ['supnE', [10956]], ['supne', [8843]], ['supplus', [10944]], ['supset', [8835]], ['Supset', [8913]], ['supseteq', [8839]], ['supseteqq', [10950]], ['supsetneq', [8843]], ['supsetneqq', [10956]], ['supsim', [10952]], ['supsub', [10964]], ['supsup', [10966]], ['swarhk', [10534]], ['swarr', [8601]], ['swArr', [8665]], ['swarrow', [8601]], ['swnwar', [10538]], ['szlig', [223]], ['Tab', [9]], ['target', [8982]], ['Tau', [932]], ['tau', [964]], ['tbrk', [9140]], ['Tcaron', [356]], ['tcaron', [357]], ['Tcedil', [354]], ['tcedil', [355]], ['Tcy', [1058]], ['tcy', [1090]], ['tdot', [8411]], ['telrec', [8981]], ['Tfr', [120087]], ['tfr', [120113]], ['there4', [8756]], ['therefore', [8756]], ['Therefore', [8756]], ['Theta', [920]], ['theta', [952]], ['thetasym', [977]], ['thetav', [977]], ['thickapprox', [8776]], ['thicksim', [8764]], ['ThickSpace', [8287, 8202]], ['ThinSpace', [8201]], ['thinsp', [8201]], ['thkap', [8776]], ['thksim', [8764]], ['THORN', [222]], ['thorn', [254]], ['tilde', [732]], ['Tilde', [8764]], ['TildeEqual', [8771]], ['TildeFullEqual', [8773]], ['TildeTilde', [8776]], ['timesbar', [10801]], ['timesb', [8864]], ['times', [215]], ['timesd', [10800]], ['tint', [8749]], ['toea', [10536]], ['topbot', [9014]], ['topcir', [10993]], ['top', [8868]], ['Topf', [120139]], ['topf', [120165]], ['topfork', [10970]], ['tosa', [10537]], ['tprime', [8244]], ['trade', [8482]], ['TRADE', [8482]], ['triangle', [9653]], ['triangledown', [9663]], ['triangleleft', [9667]], ['trianglelefteq', [8884]], ['triangleq', [8796]], ['triangleright', [9657]], ['trianglerighteq', [8885]], ['tridot', [9708]], ['trie', [8796]], ['triminus', [10810]], ['TripleDot', [8411]], ['triplus', [10809]], ['trisb', [10701]], ['tritime', [10811]], ['trpezium', [9186]], ['Tscr', [119983]], ['tscr', [120009]], ['TScy', [1062]], ['tscy', [1094]], ['TSHcy', [1035]], ['tshcy', [1115]], ['Tstrok', [358]], ['tstrok', [359]], ['twixt', [8812]], ['twoheadleftarrow', [8606]], ['twoheadrightarrow', [8608]], ['Uacute', [218]], ['uacute', [250]], ['uarr', [8593]], ['Uarr', [8607]], ['uArr', [8657]], ['Uarrocir', [10569]], ['Ubrcy', [1038]], ['ubrcy', [1118]], ['Ubreve', [364]], ['ubreve', [365]], ['Ucirc', [219]], ['ucirc', [251]], ['Ucy', [1059]], ['ucy', [1091]], ['udarr', [8645]], ['Udblac', [368]], ['udblac', [369]], ['udhar', [10606]], ['ufisht', [10622]], ['Ufr', [120088]], ['ufr', [120114]], ['Ugrave', [217]], ['ugrave', [249]], ['uHar', [10595]], ['uharl', [8639]], ['uharr', [8638]], ['uhblk', [9600]], ['ulcorn', [8988]], ['ulcorner', [8988]], ['ulcrop', [8975]], ['ultri', [9720]], ['Umacr', [362]], ['umacr', [363]], ['uml', [168]], ['UnderBar', [95]], ['UnderBrace', [9183]], ['UnderBracket', [9141]], ['UnderParenthesis', [9181]], ['Union', [8899]], ['UnionPlus', [8846]], ['Uogon', [370]], ['uogon', [371]], ['Uopf', [120140]], ['uopf', [120166]], ['UpArrowBar', [10514]], ['uparrow', [8593]], ['UpArrow', [8593]], ['Uparrow', [8657]], ['UpArrowDownArrow', [8645]], ['updownarrow', [8597]], ['UpDownArrow', [8597]], ['Updownarrow', [8661]], ['UpEquilibrium', [10606]], ['upharpoonleft', [8639]], ['upharpoonright', [8638]], ['uplus', [8846]], ['UpperLeftArrow', [8598]], ['UpperRightArrow', [8599]], ['upsi', [965]], ['Upsi', [978]], ['upsih', [978]], ['Upsilon', [933]], ['upsilon', [965]], ['UpTeeArrow', [8613]], ['UpTee', [8869]], ['upuparrows', [8648]], ['urcorn', [8989]], ['urcorner', [8989]], ['urcrop', [8974]], ['Uring', [366]], ['uring', [367]], ['urtri', [9721]], ['Uscr', [119984]], ['uscr', [120010]], ['utdot', [8944]], ['Utilde', [360]], ['utilde', [361]], ['utri', [9653]], ['utrif', [9652]], ['uuarr', [8648]], ['Uuml', [220]], ['uuml', [252]], ['uwangle', [10663]], ['vangrt', [10652]], ['varepsilon', [1013]], ['varkappa', [1008]], ['varnothing', [8709]], ['varphi', [981]], ['varpi', [982]], ['varpropto', [8733]], ['varr', [8597]], ['vArr', [8661]], ['varrho', [1009]], ['varsigma', [962]], ['varsubsetneq', [8842, 65024]], ['varsubsetneqq', [10955, 65024]], ['varsupsetneq', [8843, 65024]], ['varsupsetneqq', [10956, 65024]], ['vartheta', [977]], ['vartriangleleft', [8882]], ['vartriangleright', [8883]], ['vBar', [10984]], ['Vbar', [10987]], ['vBarv', [10985]], ['Vcy', [1042]], ['vcy', [1074]], ['vdash', [8866]], ['vDash', [8872]], ['Vdash', [8873]], ['VDash', [8875]], ['Vdashl', [10982]], ['veebar', [8891]], ['vee', [8744]], ['Vee', [8897]], ['veeeq', [8794]], ['vellip', [8942]], ['verbar', [124]], ['Verbar', [8214]], ['vert', [124]], ['Vert', [8214]], ['VerticalBar', [8739]], ['VerticalLine', [124]], ['VerticalSeparator', [10072]], ['VerticalTilde', [8768]], ['VeryThinSpace', [8202]], ['Vfr', [120089]], ['vfr', [120115]], ['vltri', [8882]], ['vnsub', [8834, 8402]], ['vnsup', [8835, 8402]], ['Vopf', [120141]], ['vopf', [120167]], ['vprop', [8733]], ['vrtri', [8883]], ['Vscr', [119985]], ['vscr', [120011]], ['vsubnE', [10955, 65024]], ['vsubne', [8842, 65024]], ['vsupnE', [10956, 65024]], ['vsupne', [8843, 65024]], ['Vvdash', [8874]], ['vzigzag', [10650]], ['Wcirc', [372]], ['wcirc', [373]], ['wedbar', [10847]], ['wedge', [8743]], ['Wedge', [8896]], ['wedgeq', [8793]], ['weierp', [8472]], ['Wfr', [120090]], ['wfr', [120116]], ['Wopf', [120142]], ['wopf', [120168]], ['wp', [8472]], ['wr', [8768]], ['wreath', [8768]], ['Wscr', [119986]], ['wscr', [120012]], ['xcap', [8898]], ['xcirc', [9711]], ['xcup', [8899]], ['xdtri', [9661]], ['Xfr', [120091]], ['xfr', [120117]], ['xharr', [10231]], ['xhArr', [10234]], ['Xi', [926]], ['xi', [958]], ['xlarr', [10229]], ['xlArr', [10232]], ['xmap', [10236]], ['xnis', [8955]], ['xodot', [10752]], ['Xopf', [120143]], ['xopf', [120169]], ['xoplus', [10753]], ['xotime', [10754]], ['xrarr', [10230]], ['xrArr', [10233]], ['Xscr', [119987]], ['xscr', [120013]], ['xsqcup', [10758]], ['xuplus', [10756]], ['xutri', [9651]], ['xvee', [8897]], ['xwedge', [8896]], ['Yacute', [221]], ['yacute', [253]], ['YAcy', [1071]], ['yacy', [1103]], ['Ycirc', [374]], ['ycirc', [375]], ['Ycy', [1067]], ['ycy', [1099]], ['yen', [165]], ['Yfr', [120092]], ['yfr', [120118]], ['YIcy', [1031]], ['yicy', [1111]], ['Yopf', [120144]], ['yopf', [120170]], ['Yscr', [119988]], ['yscr', [120014]], ['YUcy', [1070]], ['yucy', [1102]], ['yuml', [255]], ['Yuml', [376]], ['Zacute', [377]], ['zacute', [378]], ['Zcaron', [381]], ['zcaron', [382]], ['Zcy', [1047]], ['zcy', [1079]], ['Zdot', [379]], ['zdot', [380]], ['zeetrf', [8488]], ['ZeroWidthSpace', [8203]], ['Zeta', [918]], ['zeta', [950]], ['zfr', [120119]], ['Zfr', [8488]], ['ZHcy', [1046]], ['zhcy', [1078]], ['zigrarr', [8669]], ['zopf', [120171]], ['Zopf', [8484]], ['Zscr', [119989]], ['zscr', [120015]], ['zwj', [8205]], ['zwnj', [8204]]];\nvar DECODE_ONLY_ENTITIES = [['NewLine', [10]]];\nvar alphaIndex = {};\nvar charIndex = {};\ncreateIndexes(alphaIndex, charIndex);\nvar Html5Entities = /** @class */ (function () {\n function Html5Entities() {\n }\n Html5Entities.prototype.decode = function (str) {\n if (!str || !str.length) {\n return '';\n }\n return str.replace(/&(#?[\\w\\d]+);?/g, function (s, entity) {\n var chr;\n if (entity.charAt(0) === \"#\") {\n var code = entity.charAt(1) === 'x' ?\n parseInt(entity.substr(2).toLowerCase(), 16) :\n parseInt(entity.substr(1));\n if (!isNaN(code) || code >= -32768) {\n if (code <= 65535) {\n chr = String.fromCharCode(code);\n }\n else {\n chr = surrogate_pairs_1.fromCodePoint(code);\n }\n }\n }\n else {\n chr = alphaIndex[entity];\n }\n return chr || s;\n });\n };\n Html5Entities.decode = function (str) {\n return new Html5Entities().decode(str);\n };\n Html5Entities.prototype.encode = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var charInfo = charIndex[str.charCodeAt(i)];\n if (charInfo) {\n var alpha = charInfo[str.charCodeAt(i + 1)];\n if (alpha) {\n i++;\n }\n else {\n alpha = charInfo[''];\n }\n if (alpha) {\n result += \"&\" + alpha + \";\";\n i++;\n continue;\n }\n }\n result += str.charAt(i);\n i++;\n }\n return result;\n };\n Html5Entities.encode = function (str) {\n return new Html5Entities().encode(str);\n };\n Html5Entities.prototype.encodeNonUTF = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n var charInfo = charIndex[c];\n if (charInfo) {\n var alpha = charInfo[str.charCodeAt(i + 1)];\n if (alpha) {\n i++;\n }\n else {\n alpha = charInfo[''];\n }\n if (alpha) {\n result += \"&\" + alpha + \";\";\n i++;\n continue;\n }\n }\n if (c < 32 || c > 126) {\n if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) {\n result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';\n i++;\n }\n else {\n result += '&#' + c + ';';\n }\n }\n else {\n result += str.charAt(i);\n }\n i++;\n }\n return result;\n };\n Html5Entities.encodeNonUTF = function (str) {\n return new Html5Entities().encodeNonUTF(str);\n };\n Html5Entities.prototype.encodeNonASCII = function (str) {\n if (!str || !str.length) {\n return '';\n }\n var strLength = str.length;\n var result = '';\n var i = 0;\n while (i < strLength) {\n var c = str.charCodeAt(i);\n if (c <= 255) {\n result += str[i++];\n continue;\n }\n if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) {\n result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';';\n i += 2;\n }\n else {\n result += '&#' + c + ';';\n i++;\n }\n }\n return result;\n };\n Html5Entities.encodeNonASCII = function (str) {\n return new Html5Entities().encodeNonASCII(str);\n };\n return Html5Entities;\n}());\nexports.Html5Entities = Html5Entities;\nfunction createIndexes(alphaIndex, charIndex) {\n var i = ENTITIES.length;\n while (i--) {\n var _a = ENTITIES[i], alpha = _a[0], _b = _a[1], chr = _b[0], chr2 = _b[1];\n var addChar = (chr < 32 || chr > 126) || chr === 62 || chr === 60 || chr === 38 || chr === 34 || chr === 39;\n var charInfo = void 0;\n if (addChar) {\n charInfo = charIndex[chr] = charIndex[chr] || {};\n }\n if (chr2) {\n alphaIndex[alpha] = String.fromCharCode(chr) + String.fromCharCode(chr2);\n addChar && (charInfo[chr2] = alpha);\n }\n else {\n alphaIndex[alpha] = String.fromCharCode(chr);\n addChar && (charInfo[''] = alpha);\n }\n }\n i = DECODE_ONLY_ENTITIES.length;\n while (i--) {\n var _c = DECODE_ONLY_ENTITIES[i], alpha = _c[0], _d = _c[1], chr = _d[0], chr2 = _d[1];\n alphaIndex[alpha] = String.fromCharCode(chr) + (chr2 ? String.fromCharCode(chr2) : '');\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar xml_entities_1 = require(\"./xml-entities\");\nexports.XmlEntities = xml_entities_1.XmlEntities;\nvar html4_entities_1 = require(\"./html4-entities\");\nexports.Html4Entities = html4_entities_1.Html4Entities;\nvar html5_entities_1 = require(\"./html5-entities\");\nexports.Html5Entities = html5_entities_1.Html5Entities;\nexports.AllHtmlEntities = html5_entities_1.Html5Entities;\n","var Entities = require('html-entities').AllHtmlEntities;\n\nvar entities = new Entities();\n\n// Quick and dirty way of getting the text representation of a string of HTML,\n// basically close to what a DOM node's innerText property would be\n\nfunction innertext (html) {\n // Drop everything inside <...> (i.e., tags/elements), and keep the text.\n // Unlike browser innerText, this removes newlines; it also doesn't handle\n // un-encoded `<` or `>` characters very well, so don't feed it malformed HTML\n return entities.decode(html.split(/<[^>]+>/)\n .map(function (chunk) { return chunk.trim() })\n .filter(function (trimmedChunk) { return trimmedChunk.length > 0 })\n .join(' ')\n );\n}\n\nmodule.exports = innertext;\n","import { ADMIN_PATHS, PATHS } from '../api/paths'\nimport { callApiWithAdminAuth, callApiWithAuth, getApiPath } from '../api/utils'\n\nexport const EncodeUrlRegexMap = {\n edit: /<mocka ([^>]*)data-url=\"true\"[^<>]*>(.*?)<\\/mocka>/gim,\n url: /((?:=\")|(?:data-url=\"true\">)|)(https?:\\/\\/(www\\.)?(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#\\/%=~_|$?!:,.])*(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#\\/%=~_|$]))/gim,\n encodedUrl: /\\[a\\+href=\"([^<\"]+)\"(?:\\+text=\\\"([^<\"]+)\")?\\]/gim,\n editorMention: /<mention [^>]*data-id=\"([^<\"]+)\"[^>]*>([^<]+)<\\/mention>/gim,\n editorFullMention:\n /<mention [^>]*data-id=\"([^<\"]+)\" [^\\>]*data-name=\"([^<\"]+)\"[^>]*>([^<]+)<\\/mention>/gim,\n savedMention: /\\[mention\\+id=\"([^<\"]+)\"([^\\]]*)\\]/gim,\n rawUrl:\n /^(https?:\\/\\/(www\\.)?(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#\\/%=~_|$?!:,.])*(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#\\/%=~_|$]))$/gim,\n optionalProtocol:\n /^((https?:\\/\\/)?(www\\.)?(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#\\/%=~_|$?!:,.])*(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#\\/%=~_|$]))$/gim,\n encodedUrl2: /<a [^>]*href=\"([^>\"]+)\"[^>]*>([^<]+)<\\/a>/gim,\n}\nexport const BadWordRegex =\n /<mocka [^\\>]*data-bad-word=\"[^\\\"]*\" [^\\>]*data-error=\"true\"[^\\>]*>(.*?)<\\/mocka>/gim\nexport const encodePostUrl = (s: string, sanitizeFunction = (s: string) => s) =>\n sanitizeFunction(\n s\n .replace(/(\\ )+/g, ' ')\n .replace(/(\\&)+/g, '&')\n ?.replace(/(\\u200c|‌)+/g, '')\n .replace(EncodeUrlRegexMap.url, (match, p1, p2) => {\n if (p1 !== '=\"' && p1 !== 'data-url=\"true\">')\n return `<a href=\"${p2}\" target=\"_blank\">${p2}</a>`\n return match\n })\n .replace(EncodeUrlRegexMap.edit, (match, p1, p2) => {\n const cleanUrl = p1.match(/data-href=\"([^\"]*)\"/im)?.[1]\n if (cleanUrl) return `<a href=\"${cleanUrl}\" target=\"_blank\">${p2}</a>`\n return `<a href=\"${p2}\" target=\"_blank\">${p2}</a>`\n }),\n )\nexport const encodeMention = (s: string) =>\n s.replace(EncodeUrlRegexMap.editorMention, (match, p1, p2) => {\n return `[mention+id=\"${p1}\"+name=\"${p2}\"]`\n })\n\nexport const getAnchorHtml = ({\n url,\n text,\n method,\n}: {\n url: string\n text: string\n method: string\n}) => {\n // remove white space before and after link element, put them outside of current tag\n const trimStartIndex = text.indexOf(text.trimStart())\n const trimEndIndex = text.trimEnd().length\n const preSpaces = text.substring(0, trimStartIndex)\n const trimmedText = text.substring(trimStartIndex, trimEndIndex)\n const postSpaces = text.substring(trimEndIndex)\n if (method === 'edit') {\n return `${preSpaces}<mocka data-href=\"${url}\" data-url=\"true\">${trimmedText}</mocka>${postSpaces}`\n }\n if (method === 'display') {\n if (url.startsWith('http://') || url.startsWith('https://')) {\n return `${preSpaces}<a href=\"${url}\" target=\"_blank\">${trimmedText}</a>${postSpaces}`\n }\n }\n return text\n}\n\nexport const decodePostUrl = (s: string, method: string) =>\n s\n .replace(EncodeUrlRegexMap.encodedUrl, (match, p1, p2) => {\n const text = p2 || p1\n return getAnchorHtml({\n text,\n url: p1,\n method,\n })\n })\n .replace(EncodeUrlRegexMap.encodedUrl2, (match, p1, p2) => {\n const text = p2 || p1\n return getAnchorHtml({\n text,\n url: p1,\n method,\n })\n })\nexport const decodeMention = (\n s: string,\n users: {\n id: number\n name: string\n }[] = [],\n) =>\n s.replace(EncodeUrlRegexMap.savedMention, (match, p1, p2) => {\n const foundUser = users.find((u) => String(u.id) === p1)\n if (!foundUser) {\n if (!p2) return ''\n let tempName = ''\n ;(p2 as string).replace(/\\+name=\"([^<\"]+)\"/i, (m, _p1) => {\n tempName = _p1\n return m\n })\n return `<mention data-id=\"${p1}\" data-name=\"${tempName}\">${tempName}</mention>`\n }\n return `<mention data-id=\"${p1}\" data-name=\"${foundUser.name}\">${foundUser.name}</mention>`\n })\n\nexport const getUrlsFromString = (s: string) => {\n const res: string[] = []\n s.replace(/(\\&)+/g, '&').replace(\n EncodeUrlRegexMap.url,\n (match, p1, p2) => {\n if (p1 !== '=\"' && p1 !== 'data-url=\"true\">') {\n res.push(p2)\n }\n return match\n },\n )\n return res\n}\nexport const LIMIT_MENTION = 30\n\nexport const getMentionIdsFromString = (s: string, disableLimit?: boolean) => {\n const res: string[] = []\n s.replace(EncodeUrlRegexMap.editorMention, (match, p1) => {\n res.push(p1)\n return match\n }).replace(EncodeUrlRegexMap.savedMention, (match, p1) => {\n res.push(p1)\n return match\n })\n if (!disableLimit) {\n return Array.from(new Set(res)).slice(0, LIMIT_MENTION)\n }\n return res\n}\nexport const getUrlsFromEditorString = (s: string): string[] =>\n [\n ...getUrlsFromString(s),\n ...(s.match(EncodeUrlRegexMap.edit)?.map((s) => {\n const cleanUrl = s.match(/data-href=\"([^\"]*)\"/im)?.[1]\n const text = s.match(/>(.*?)<\\/mocka>/im)?.[1]\n return cleanUrl || text\n }) || []),\n ].filter((s) => !!s) as string[]\n\nexport const escapeRegExp = (string: string) => {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n}\n\nexport function escapeHtmlString(html: string, isAttribute?: boolean) {\n const escape = document.createElement('textarea')\n if (!isAttribute) {\n escape.textContent = html\n return escape.innerText\n } else {\n escape.setAttribute('_temp', html)\n return escape.getAttribute('_temp')\n }\n}\n\nexport function unescapeHtmlString(html: string) {\n const escape = document.createElement('textarea')\n escape.innerHTML = html\n return escape.textContent\n}\n\nexport const wrapAnchorAroundUrls = (s: string) =>\n s\n .replace(/(\\ )+/g, ' ')\n // ?.replace(/(\\&)+/g, '&')\n ?.replace(/(\\u200c|‌)+/g, '')\n ?.replace(EncodeUrlRegexMap.edit, (match, p1, p2) => {\n const cleanUrl = p1.match(/data-href=\"([^\"]*)\"/im)?.[1]\n if (!cleanUrl || cleanUrl === p2 || p2.match(EncodeUrlRegexMap.rawUrl))\n return p2\n if (cleanUrl) return `<a href=\"${cleanUrl}\">${p2}</a>`\n return `<a href=\"${p2}\">${p2}</a>`\n })\n .replace(EncodeUrlRegexMap.url, (match, p1, p2) => {\n if (p1 !== '=\"' && p1 !== 'data-url=\"true\">') {\n const lowercase = p2.toLowerCase()\n const addHttps = !lowercase.startsWith('http') ? ' https://' : ''\n const url = `${addHttps}${lowercase}`\n return getAnchorHtml({\n text: url,\n url: url,\n method: 'edit',\n })\n }\n return match\n })\n .replace(EncodeUrlRegexMap.encodedUrl2, (match, p1, p2) => {\n const text = p2 || p1\n return getAnchorHtml({\n text: text,\n url: p1,\n method: 'edit',\n })\n })\n\nexport const removeEdittedBannedWord = (s: string) =>\n s.replace(BadWordRegex, (s, m1) => {\n const w = document.createElement('div')\n w.innerHTML = s\n const child = w.firstChild as HTMLElement\n if (child?.innerText !== child?.getAttribute('data-bad-word')) return m1\n else return s\n })\nexport const removeBannedWordWrapper = (s: string) =>\n s.replace(BadWordRegex, '$1')\nexport const removeFontFormat = (s: string) =>\n s.replace(/<font [^\\>]*>(.+)<\\/font>/gim, (s, m1) => {\n return m1.replace(/<u[^\\>]*>(.+)<\\/u>/gim, '$1')\n })\n\nexport const encodePostContent = (\n s: string,\n sanitizeFunction = (s: string) => s,\n) => encodePostUrl(encodeMention(removeBannedWordWrapper(s)), sanitizeFunction)\n\nexport const ALLOW_DOMAIN_URL = [\n 'hellobacsi.com',\n 'hellosehat.com',\n 'hellodoktor.com',\n 'hellokrupet.com',\n 'hellodoctor.com.ph',\n 'hellokhunmor.com',\n 'hellosayarwon.com',\n 'helloyishi.com.tw',\n 'helloswasthya.com',\n 'marrybaby.vn',\n]\n\nexport const reformatUrl = (s: string) => {\n if (s.match(EncodeUrlRegexMap.optionalProtocol)) {\n if (s.startsWith('https://') || s.startsWith('http://')) return s\n else return `https://${s}`\n }\n return ''\n}\n\nexport const highlightBadWords = (text: string, bannedWords: string[]) => {\n const filteredBanedWords = bannedWords.filter(Boolean)\n if (text && filteredBanedWords.length > 0) {\n const submitTitle = removeBannedWordWrapper(text)\n return submitTitle.replace(\n new RegExp(\n `\\\\b(${filteredBanedWords\n .map((banned) => escapeRegExp(banned))\n .join('|')})\\\\b`,\n 'gi',\n ),\n (s, m1) => {\n const escape = document.createElement('mocka')\n escape.setAttribute('data-bad-word', m1)\n escape.setAttribute('data-error', 'true')\n escape.innerText = m1\n return `${escape.outerHTML}`\n },\n )\n }\n return text\n}\n\nexport const fixMalformedMention = (text: string) => {\n return text.replace(\n EncodeUrlRegexMap.editorFullMention,\n (match, id: string, originalName: string, nameText: string) => {\n if (nameText !== originalName) {\n // fix logic here\n const splittedName = originalName.split(' ')\n const cutoffIndex = splittedName.findIndex((_, index) => {\n const nameSection = splittedName.slice(0, index + 1).join(' ')\n if (nameText.startsWith(nameSection)) {\n return false\n }\n return true\n })\n if (cutoffIndex === 0) return `@${nameText}`\n else {\n const nameSection = (\n cutoffIndex < 0 ? splittedName : splittedName.slice(0, cutoffIndex)\n ).join(' ')\n const restText = nameText.slice(nameSection.length).trim()\n console.log(cutoffIndex, nameSection, restText)\n return `<mention data-id=\"${id}\" data-name=\"${nameSection}\">${nameSection}</mention> ${restText} `\n }\n }\n return match\n },\n )\n}\n\nexport const youtubeVidIdGetter = (url: string) => {\n const regExp =\n /(?:youtube(?:-nocookie)?\\.com\\/(?:[^\\/]+\\/.+\\/|(?:v|e(?:mbed)?)\\/|.*[?&]v=)|youtu\\.be\\/)([^\"&?\\/\\s]+)/gi\n let res = ''\n url.replace(regExp, (...params) => {\n res = params[1] || ''\n return ''\n })\n return res || ''\n}\nexport const facebookVidIdGetter = (url: string) => {\n const regExp =\n /(?:https?:\\/\\/)?(?:www.|web.|m.)?facebook.com\\/(?:video.php|photo.php|watch)?\\/?\\?v=(\\d+)|\\S+\\/videos\\/((\\S+)\\/(\\d+)|(\\d+))\\/?/gim\n let res = ''\n url.replace(regExp, (...params) => {\n res = params.find((p) => p && /^\\d+$/.test(p))\n return ''\n })\n return res\n}\n\nexport const uploadAndGetSrc = (\n file: File | string,\n locale: string,\n isAdmin?: boolean,\n): Promise<string> =>\n typeof file === 'string'\n ? Promise.resolve(file)\n : (async () => {\n const imageFormData = new FormData()\n if (file.type.startsWith('image/gif')) {\n imageFormData.append('image', file)\n } else {\n const imageCompression = await import('browser-image-compression')\n const compressed = await imageCompression.default(file, {\n maxSizeMB: 0.4,\n maxWidthOrHeight: 1536,\n useWebWorker: true,\n })\n imageFormData.append('image', compressed)\n }\n const callApiFunction = isAdmin ? callApiWithAdminAuth : callApiWithAuth\n const imageRes = await callApiFunction(\n getApiPath(\n isAdmin\n ? ADMIN_PATHS.COMMENT.IMAGE_UPLOAD\n : PATHS.COMMENT.IMAGE_UPLOAD,\n {\n _locale: locale,\n },\n ),\n 'POST',\n {\n data: imageFormData,\n },\n )\n return imageRes?.data?.image || ''\n })()\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledCreatePostDescription = styled.div`\n input:focus,\n textarea:focus,\n [contenteditable='true'] {\n outline: none;\n }\n\n .textarea-control {\n position: relative;\n border: 1px solid ${(props: ThemeProps) => props.theme.colors.gray200};\n border-radius: 6px;\n &.--focus {\n border-color: ${(props: ThemeProps) => props.theme.colors.primaryBase};\n box-shadow: 0px 0px 2px 2px\n ${(props: ThemeProps) => props.theme.colors.blue200};\n }\n\n .textarea-wrapper {\n width: 100%;\n height: 200px;\n }\n\n .control-tool {\n position: absolute;\n bottom: 0;\n left: 0;\n display: flex;\n width: calc(100% - 2rem);\n height: 40px;\n align-items: center;\n justify-content: flex-end;\n border-top: 1px solid ${(props: ThemeProps) => props.theme.colors.gray200};\n margin: 0 1rem;\n\n .tool-button {\n display: flex;\n width: 2rem;\n height: 2rem;\n align-items: center;\n justify-content: center;\n background: transparent;\n cursor: pointer;\n }\n .image-icon {\n vertical-align: middle;\n }\n }\n }\n\n .link-preview-wrapper {\n position: relative;\n .icon-close {\n position: absolute;\n top: 5px;\n right: 5px;\n width: 24px;\n height: 24px;\n cursor: pointer;\n }\n }\n\n .image-gallery {\n margin-bottom: 1rem;\n\n .image-item {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 0;\n padding-top: 67%;\n margin-top: 1rem;\n border-radius: 6px;\n\n & > img {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .close-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n left: unset;\n width: 24px;\n height: 24px;\n cursor: pointer;\n }\n }\n }\n\n .description-label {\n margin-bottom: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.gray600};\n /* font-family: 'Open Sans', sans-serif; */\n font-size: 13px;\n font-weight: bold;\n }\n\n .count-string {\n margin-top: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.gray500};\n font-size: 11px;\n text-align: right;\n }\n\n .input-notification {\n display: flex;\n\n & > img {\n width: 16px;\n height: 16px;\n margin-top: 1.5px;\n margin-right: 8px;\n }\n }\n`\n\nexport const StyledEditorContainer = styled.div`\n height: 100%;\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: column;\n .ql-toolbar.ql-snow {\n top: 0;\n width: 100%;\n position: sticky;\n z-index: 3;\n border: none;\n border-bottom: 1px solid #ccc;\n background: white;\n .ql-formats {\n display: inline-flex;\n align-items: center;\n margin-right: 0.5rem;\n .link-tool-wrapper {\n .popover-menu__content {\n padding: 0.5rem;\n transform: translateX(calc(-50% - 1rem));\n max-width: calc(100vw - 4rem);\n ::before {\n right: calc(50% - 8px);\n }\n .link-tool-popover {\n input {\n padding-left: 1rem;\n }\n .link-input-url {\n margin-bottom: 0.5rem;\n }\n .link-input-text {\n margin-bottom: 0.5rem;\n }\n label {\n display: inline-block;\n margin-bottom: 0.2rem;\n }\n .link-input-button-wrapper {\n &[data-is-marrybaby='true'] {\n .link-input-button {\n border: solid 2px\n ${(props: ThemeProps) => props.theme.mbColors.pink};\n background-color: ${(props: ThemeProps) =>\n props.theme.mbColors.pink};\n &:hover:not(:disabled) {\n border: solid 2px\n ${(props: ThemeProps) => props.theme.mbColors.pink};\n background-color: ${(props: ThemeProps) =>\n props.theme.colors.white};\n color: ${(props: ThemeProps) => props.theme.mbColors.pink};\n }\n }\n }\n }\n .link-input-button {\n width: auto;\n height: auto;\n padding: 0.4rem 1rem;\n background-color: ${(props: ThemeProps) =>\n props.theme.colors.primaryBase};\n\n &:disabled {\n border-color: #bfbfbf;\n background-color: #bfbfbf;\n color: #fff;\n cursor: not-allowed;\n }\n &:hover:not(:disabled) {\n background-color: ${(props: ThemeProps) =>\n props.theme.colors.primaryHover};\n }\n }\n .error-text {\n padding: 0;\n margin-bottom: 0.5rem;\n font-weight: 600;\n color: ${(props: ThemeProps) => props.theme.colors.red700};\n }\n }\n }\n }\n }\n @media (max-width: 450px) {\n position: relative;\n .ql-formats {\n .link-tool-wrapper {\n position: unset;\n .popover-menu__content {\n left: 0;\n transform: unset;\n max-width: 100%;\n }\n }\n }\n }\n }\n .quill {\n flex: 1;\n overflow-y: hidden;\n .ql-container {\n display: inline-block;\n width: 100%;\n min-height: 100%;\n /* padding: 14px 16px; */\n border: none;\n border-radius: 6px;\n color: ${(props: ThemeProps) => props.theme.colors.gray800};\n font-size: 1rem;\n line-height: 1.5;\n resize: none;\n white-space: break-spaces;\n .ql-editor {\n word-break: break-word;\n overflow-wrap: break-word;\n /* -ms-overflow-style: none;\n scrollbar-width: none;\n &::-webkit-scrollbar {\n display: none;\n } */\n }\n mocka {\n padding: 2px 6px;\n border-radius: 1rem;\n &[data-url='true'] {\n /* background-color: #eeeeff; */\n font-style: italic;\n color: #1890ff;\n cursor: pointer;\n outline: none;\n text-decoration: underline;\n }\n &[data-error='true'] {\n background-color: #ffeeee;\n color: red;\n text-decoration: underline;\n font-style: bold;\n }\n }\n mention {\n padding: 2px 6px;\n border-radius: 1rem;\n background-color: #eeeeff;\n color: #1890ff;\n cursor: pointer;\n outline: none;\n text-decoration: none;\n }\n ol,\n ul {\n padding-left: 1rem;\n }\n }\n }\n .mention-search-container {\n position: absolute;\n background: white;\n border-radius: 6px;\n filter: drop-shadow(0px 10px 16px rgba(0, 0, 0, 0.04))\n drop-shadow(0px 2px 8px rgba(0, 0, 0, 0.04))\n drop-shadow(0px 0px 1px rgba(0, 0, 0, 0.04));\n overflow-y: scroll;\n z-index: 99;\n ::-webkit-scrollbar {\n -webkit-appearance: none;\n }\n ::-webkit-scrollbar:vertical {\n width: 14px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: 6px;\n background-color: #d9d9d9;\n @supports (background-clip: padding-box) {\n border: 3px solid rgba(0, 0, 0, 0);\n background-clip: padding-box;\n }\n @supports not (background-clip: padding-box) {\n border: 3px solid white;\n }\n }\n ::-webkit-scrollbar-track {\n background-color: #fff;\n border-radius: 0 6px 6px 0;\n border-left: 1px solid #f2f2f2;\n }\n .mention-search-item {\n cursor: pointer;\n padding: 12px 1rem;\n display: flex;\n align-items: center;\n &.item-selected {\n background-color: ${(props: ThemeProps) => props.theme.colors.gray100};\n }\n .search-avatar {\n width: 40px;\n height: 40px;\n font-size: 20px;\n margin-right: 20px;\n }\n }\n }\n`\n","/* eslint-disable @typescript-eslint/no-var-requires */\nimport React, {\n CSSProperties,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\n\n// import ReactQuill, { Quill } from 'react-quill'\nimport { Button } from 'components/atoms/button'\nimport { Input } from 'components/atoms/input'\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { TranslationsKey } from 'i18n/translations'\nimport { debounce } from 'lodash'\nimport { getCookie } from 'misc/cookieHelper'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { ADMIN_PATHS, PATHS } from '../../../api/paths'\nimport {\n callApi,\n callApiWithAdminAuth,\n callApiWithAuth,\n getApiPath,\n} from '../../../api/utils'\nimport IconLink from '../../../assets/svg/icon-link.svg'\nimport { BEARER_TOKEN_COOKIE } from '../../../interfaces/constants'\nimport {\n ALLOW_DOMAIN_URL,\n escapeRegExp,\n getMentionIdsFromString,\n getUrlsFromEditorString,\n highlightBadWords,\n LIMIT_MENTION,\n reformatUrl,\n removeEdittedBannedWord,\n removeFontFormat,\n wrapAnchorAroundUrls,\n fixMalformedMention,\n} from '../../../utils/post'\nimport { UserAvatar } from '../../atoms/userAvatar'\nimport { PopoverMenu } from '../../organisms/popoverMenu'\nimport { StyledEditorContainer } from './index.styled'\n\n// import 'react-quill/dist/quill.snow.css'\nlet ReactQuill = null\n\n;(async () => {\n if (typeof window === 'undefined') return\n const QuillRes = await import('react-quill')\n ReactQuill = QuillRes.default\n const Quill = QuillRes.Quill\n class PreserveWhiteSpace {\n constructor(private quill: any, private options: any) {\n quill.container.style.whiteSpace = 'pre-line'\n }\n }\n Quill.register('modules/preserveWhiteSpace', PreserveWhiteSpace)\n\n const Inline = Quill.import('blots/inline')\n\n class MockABlot extends Inline {\n static blotName = 'mocka1'\n static tagName = 'mocka'\n static create(options: any) {\n if (!options) return super.create(false)\n const node: any = super.create(options)\n MockABlot.setNodeConfigurations(node, options)\n return node\n }\n\n static formats(node: any) {\n if (\n node.innerText &&\n (node.getAttribute('data-href') ||\n node.getAttribute('data-url') ||\n node.getAttribute('data-error') ||\n node.getAttribute('data-bad-word'))\n ) {\n return {\n 'data-bad-word': node.getAttribute('data-bad-word'),\n 'data-error': node.getAttribute('data-error'),\n 'data-href': node.getAttribute('data-href'),\n 'data-url': node.getAttribute('data-url'),\n 'data-text': node.innerText || node.getAttribute('data-href'),\n }\n } else {\n return false\n }\n }\n\n /* To prevent the node from accidentally being built in different ways. */\n static setNodeConfigurations(node: any, value: any) {\n if (!value) return\n if (\n !value?.['data-text']\n ?.replace(/(\\ )+/g, ' ')\n ?.replace(/(\\u200c|‌)+/g, '')\n )\n return\n if (value['data-bad-word'])\n node.setAttribute('data-bad-word', value['data-bad-word'])\n if (value['data-href']) node.setAttribute('data-href', value['data-href'])\n if (value['data-error'])\n node.setAttribute('data-error', value['data-error'])\n // setTimeout(() => {\n // if (value['data-text'] !== node.innerText && !node.innerText)\n // node.innerHTML = value['data-text']\n // }, 200)\n if (value['data-url']) node.setAttribute('data-url', value['data-url'])\n // if (value['data-text']) node.innerText = value['data-text']\n // console.log(value, node.outerHTML, node)\n }\n }\n Quill.register(MockABlot)\n class MentionBlot extends Inline {\n static blotName = 'mention'\n static tagName = 'mention'\n static create(options: any) {\n if (!options) return super.create(false)\n const node: any = super.create(options)\n MentionBlot.setNodeConfigurations(node, options)\n return node\n }\n\n static formats(node: any) {\n if (node.getAttribute('data-name') && node.getAttribute('data-id')) {\n return {\n 'data-name': node.getAttribute('data-name'),\n 'data-id': node.getAttribute('data-id'),\n }\n } else {\n return false\n }\n }\n\n /* To prevent the node from accidentally being built in different ways. */\n static setNodeConfigurations(node: any, value: any) {\n if (!value) return\n if (\n !value['data-id'] ||\n !value?.['data-name']\n ?.replace(/(\\ )+/g, ' ')\n ?.replace(/(\\u200c|‌)+/g, '')\n )\n return\n if (value['data-id']) node.setAttribute('data-id', value['data-id'])\n if (value['data-name']) {\n // node.setAttribute('contenteditable', false)\n node.setAttribute('data-name', value['data-name'])\n }\n }\n }\n Quill.register(MentionBlot)\n})()\n\nfunction getCaretCharacterOffsetWithin(element: HTMLElement) {\n let caretOffset = -1\n if (typeof window.getSelection != 'undefined') {\n const sel = window.getSelection()\n if (sel?.rangeCount && sel?.rangeCount > 0) {\n const range = window.getSelection()?.getRangeAt(0)\n if (range) {\n const preCaretRange = range.cloneRange()\n // preCaretRange.setStart(element, 0)\n preCaretRange.selectNodeContents(element)\n preCaretRange.setEnd(range.endContainer, range.endOffset)\n\n caretOffset = calculateChildNodeOffset(\n preCaretRange.cloneContents().childNodes,\n caretOffset,\n )\n const parentMockAElement =\n range.endContainer.parentElement?.closest('mocka')\n const lastNodeValue =\n range.endContainer.nodeValue ||\n (range.endContainer as HTMLElement).outerHTML\n if (parentMockAElement && lastNodeValue?.length) {\n /// set selector to end of <mocka elemt, prevent select in the middle\n caretOffset =\n caretOffset -\n range.endOffset +\n (parentMockAElement.outerHTML.length -\n parentMockAElement?.outerHTML.lastIndexOf(lastNodeValue))\n }\n }\n }\n }\n return caretOffset\n}\n\nfunction calculateChildNodeOffset(\n childNodes: NodeListOf<ChildNode>,\n caretOffset: number,\n) {\n childNodes.forEach((node, index) => {\n const isLast = index + 1 === childNodes.length\n if (node.nodeType === Node.ELEMENT_NODE) {\n const outerHTML = (node as HTMLElement).outerHTML\n if (!isLast) {\n caretOffset += outerHTML.length\n return\n } else {\n caretOffset += outerHTML.indexOf('>') + 1\n caretOffset = calculateChildNodeOffset(node.childNodes, caretOffset)\n }\n } else if (node.nodeType === Node.TEXT_NODE) {\n caretOffset += (node.nodeValue || '')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''').length\n }\n })\n return caretOffset\n}\nfunction getSearchName(root: HTMLElement) {\n let res: {\n name: string\n rect: DOMRect\n replaceRange: Range\n } | null = null\n if (typeof window.getSelection != 'undefined') {\n const sel = window.getSelection()\n if (sel?.rangeCount && sel?.rangeCount > 0) {\n const range = window.getSelection()?.getRangeAt(0)\n if (range) {\n const preCaretRange = range.cloneRange()\n // preCaretRange.setStart(element, 0)\n preCaretRange.selectNodeContents(root)\n preCaretRange.setEnd(range.endContainer, range.endOffset)\n const endText = (preCaretRange.endContainer.nodeValue || '').substring(\n 0,\n range.endOffset,\n )\n\n // only allow @ at start of text or has space before it\n const lastAnchorSymbolIndex = endText.lastIndexOf('@')\n if (\n lastAnchorSymbolIndex + 1 < endText.length &&\n (lastAnchorSymbolIndex === 0 ||\n endText.slice(\n lastAnchorSymbolIndex - 1,\n lastAnchorSymbolIndex + 1,\n ) === ' @')\n ) {\n const name = endText.slice(lastAnchorSymbolIndex + 1)?.trim()\n if (name) {\n preCaretRange.setStart(range.endContainer, lastAnchorSymbolIndex)\n const replaceRange = preCaretRange.cloneRange()\n replaceRange.setStart(\n replaceRange.endContainer,\n lastAnchorSymbolIndex,\n )\n res = {\n name,\n rect: preCaretRange.getBoundingClientRect(),\n replaceRange,\n }\n }\n }\n }\n }\n }\n return res\n}\n\nconst inputModify = (\n value: string,\n opts?: {\n formatUrl?: boolean\n bannedWords?: string[]\n },\n) => {\n const { formatUrl, bannedWords = [] } = opts || {}\n const removedFormat = fixMalformedMention(removeFontFormat(value))\n if (!formatUrl)\n return {\n value: highlightBadWords(removedFormat, bannedWords),\n }\n let descriptionWithWrappedAnchor = removeEdittedBannedWord(\n wrapAnchorAroundUrls(removedFormat),\n )\n\n const urls = getUrlsFromEditorString(removedFormat)\n if (urls) {\n const invalidUrls: string[] = []\n let previewUrl = ''\n urls.forEach((url) => {\n if (!url) return\n try {\n const jsUrl = new URL(url)\n if (ALLOW_DOMAIN_URL.some((o) => jsUrl.origin.endsWith(o))) {\n // is valid\n } else {\n invalidUrls.push(url)\n // is not valid\n }\n } catch {\n invalidUrls.push(url)\n }\n })\n if (invalidUrls.length > 0) {\n descriptionWithWrappedAnchor = descriptionWithWrappedAnchor\n .replace(\n new RegExp(\n `data-url=\"true\">(${invalidUrls.map(escapeRegExp).join('|')})<`,\n 'gi',\n ),\n 'data-error=\"true\" data-url=\"true\">$1<',\n )\n .replace(\n new RegExp(\n `data-href=\"(${invalidUrls\n .map(escapeRegExp)\n .join('|')})\" data-url=\"true\">`,\n 'gi',\n ),\n 'data-href=\"$1\" data-error=\"true\" data-url=\"true\">',\n )\n }\n previewUrl = urls.filter((u) => invalidUrls.indexOf(u) === -1)?.[0]\n return {\n invalidUrls,\n previewUrl,\n value: highlightBadWords(descriptionWithWrappedAnchor, bannedWords),\n }\n }\n return {\n value: highlightBadWords(descriptionWithWrappedAnchor, bannedWords),\n }\n}\n\nexport type Props = {\n html?: string\n onChange?: (s: string) => void\n className?: string\n style?: CSSProperties\n onImagePickerClick?: () => void\n bannedWords?: string[]\n onInvalidUrlsChange?: (v: string[]) => void\n onPreviewUrlChange?: (\n v: {\n title: string\n url: string\n image: string\n description: string\n } | null,\n ) => void\n setEditorRef?: (editor: HTMLElement) => void\n isReplying?: boolean\n}\n\nexport const RichTextEditor = ({\n html,\n onChange,\n className,\n style,\n onImagePickerClick,\n bannedWords = [],\n onInvalidUrlsChange,\n onPreviewUrlChange,\n setEditorRef,\n isReplying,\n}: // onAddLink,\nProps) => {\n const bannedWordsRef = useRef<string[]>([])\n bannedWordsRef.current = bannedWords\n const [invalidUrls, setInvalidUrls] = useState<string[]>([])\n const [previewUrl, setPreviewUrl] = useState<{\n title?: string\n url?: string\n image?: string\n description?: string\n isFetching?: boolean\n } | null>(null)\n\n const {\n data: { locale },\n } = useContext(TogetherComponentGlobalContext)\n\n const bannedString = bannedWords?.join(',') || ''\n useEffect(() => {\n const currHTML = reactQuillRef.current?.getEditor()?.root.innerHTML\n debounceInputModify(currHTML)\n }, [bannedString])\n\n const fetchPreviewData = (url: string) => {\n if (!previewUrl || previewUrl.url !== url) {\n setPreviewUrl({\n url,\n isFetching: true,\n })\n callApi(\n getApiPath(PATHS.FETCH_PREVIEW, {\n _locale: locale,\n }),\n 'POST',\n {\n data: {\n link: url,\n },\n },\n )\n .then((res) => {\n setPreviewUrl({\n title: res?.data?.title,\n description: res?.data?.description,\n image: res?.data?.image || res?.data?.logo,\n url,\n })\n })\n .catch(() => {\n setPreviewUrl(null)\n })\n }\n }\n\n const fetchPreviewDataRef = useRef(fetchPreviewData)\n fetchPreviewDataRef.current = fetchPreviewData\n\n const debounceInputModify = useCallback(\n debounce((v: string) => {\n if (v) {\n const processedInput = inputModify(v, {\n bannedWords: bannedWordsRef.current,\n formatUrl: true,\n })\n const {\n invalidUrls: _invalidUrls,\n previewUrl: _previewUrl,\n value,\n } = processedInput\n if (_invalidUrls) {\n setInvalidUrls(_invalidUrls)\n }\n if (_previewUrl) {\n fetchPreviewDataRef.current(_previewUrl)\n } else setPreviewUrl(null)\n if (value !== v) {\n onChange?.(value)\n }\n }\n }, 500),\n [],\n )\n\n useEffect(() => {\n onInvalidUrlsChange && onInvalidUrlsChange(invalidUrls)\n }, [invalidUrls])\n useEffect(() => {\n if (onPreviewUrlChange) {\n if (previewUrl?.url)\n onPreviewUrlChange({\n title: previewUrl.title || '',\n url: previewUrl.url || '',\n image: previewUrl.image || '',\n description: previewUrl.description || '',\n })\n else onPreviewUrlChange(null)\n }\n }, [previewUrl])\n\n const imageHandlerRef = useRef(onImagePickerClick)\n imageHandlerRef.current = onImagePickerClick\n const toolbarIdRef = useRef(String(Math.floor(Math.random() * 100000000)))\n const cachedModules = useRef({\n toolbar: {\n handlers: {\n image: () => imageHandlerRef.current?.(),\n link: () => false,\n },\n container: '#toolbar-' + toolbarIdRef.current,\n },\n // toolbar: [\n // ['bold', 'italic', 'underline'],\n // [{ list: 'ordered' }, { list: 'bullet' }],\n // ],\n preserveWhiteSpace: true,\n })\n const contentEditableCaretPos = useRef<number>(-1)\n\n const reactQuillRef = useRef<any>(null)\n setEditorRef &&\n reactQuillRef.current?.getEditor()?.root &&\n setEditorRef(reactQuillRef.current?.getEditor()?.root)\n\n const handleSelectionChange = () => {\n if (reactQuillRef.current?.getEditor()?.root) {\n const newCaretPos = getCaretCharacterOffsetWithin(\n reactQuillRef.current?.getEditor()?.root,\n )\n const currHTML = reactQuillRef.current?.getEditor()?.root.innerHTML\n // in case of clicking on a div outside editor while focus, we get caret position too large\n if (newCaretPos >= 0 && newCaretPos < currHTML.length) {\n const mentionIds = getMentionIdsFromString(currHTML, true)\n if (mentionIds.length < LIMIT_MENTION - (isReplying ? 1 : 0)) {\n const searchData = getSearchName(\n reactQuillRef.current?.getEditor()?.root,\n )\n if (searchData) {\n searchUser(searchData.name, searchData.rect)\n replaceRangeRef.current = searchData.replaceRange\n } else {\n replaceRangeRef.current = null\n // to avoid race condition, we reuse this function to clear foundUsers\n searchUser('', null as any)\n }\n } else {\n replaceRangeRef.current = null\n // to avoid race condition, we reuse this function to clear foundUsers\n searchUser('', null as any)\n }\n // const insertIndex = newCaretPos + 1\n // const currHTML = reactQuillRef.current?.getEditor()?.root.innerHTML\n // console.log(\n // currHTML?.substring(0, insertIndex) || '',\n // '========',\n // currHTML?.substring(insertIndex) || '',\n // )\n contentEditableCaretPos.current = newCaretPos\n }\n } else {\n setFoundUsers([])\n }\n }\n const [foundUsers, setFoundUsers] = useState<Array<any>>([])\n const [searchUserPosition, setSearchUserPosition] = useState<CSSProperties>({\n top: 0,\n left: 0,\n })\n const searchUser = useCallback(\n debounce(\n async (name: string, rect: DOMRect | null, excludeIds?: string[]) => {\n if (!name || !DOMRect) {\n return setFoundUsers([])\n }\n const res = await ((getCookie(BEARER_TOKEN_COOKIE)?.length || 0) > 0\n ? callApiWithAuth(\n getApiPath(PATHS.SEARCH_USER, {\n _locale: locale,\n name: name,\n }),\n 'get',\n )\n : callApiWithAdminAuth(\n getApiPath(ADMIN_PATHS.SEARCH_USER, {\n _locale: locale,\n name: name,\n }),\n 'get',\n ))\n setSelectTagUserIndex(0)\n setFoundUsers(\n res?.data?.users?.filter(\n (u: any) => !excludeIds?.includes(String(u.id)),\n ),\n )\n const textNodeRect = rect\n const containerRect = containerRef.current?.getBoundingClientRect()\n if (textNodeRect && containerRect) {\n const idealWidth = 343\n const idealHeight = 256\n const styleConfig: CSSProperties = {\n top: textNodeRect.bottom - containerRect.top,\n width: `min(343px, 100%)`,\n maxHeight: idealHeight,\n }\n const tempRightWidth =\n containerRect.width - (textNodeRect.left - containerRect.left)\n if (tempRightWidth < idealWidth) {\n styleConfig.right = 0\n } else {\n styleConfig.left = textNodeRect.left - containerRect.left\n }\n setSearchUserPosition(styleConfig)\n }\n },\n 500,\n ),\n [],\n )\n const setSelectUser = (id: string, name: string) => {\n if (replaceRangeRef.current) {\n replaceRangeRef.current.deleteContents()\n const newMention = document.createElement('mention')\n newMention.setAttribute('data-id', id)\n newMention.setAttribute('data-name', name)\n // newMention.setAttribute('contenteditable', 'false')\n newMention.innerText = name\n\n const newPostText = document.createTextNode(' ')\n replaceRangeRef.current.insertNode(newPostText)\n replaceRangeRef.current.insertNode(newMention)\n const editorRoot = reactQuillRef.current?.getEditor()?.root\n editorRoot.focus()\n const range = window.getSelection()?.getRangeAt(0)\n range?.setStart(\n replaceRangeRef.current.endContainer,\n replaceRangeRef.current.endOffset,\n )\n range?.setEnd(\n replaceRangeRef.current.endContainer,\n replaceRangeRef.current.endOffset,\n )\n }\n setFoundUsers([])\n }\n const containerRef = useRef<HTMLDivElement>(null)\n const replaceRangeRef = useRef<Range | null>(null)\n const foundUsersListRef = useRef<HTMLDivElement>(null)\n const [selectTagUserIndex, setSelectTagUserIndex] = useState(0)\n useEffect(() => {\n // convenient behavior, scroll item into view when select using keyboard\n if (foundUsersListRef.current) {\n const parentElement = foundUsersListRef.current\n const childElement = parentElement.children.item(\n selectTagUserIndex,\n ) as HTMLElement\n if (childElement) {\n const containerRect = parentElement.getBoundingClientRect()\n const childRect = childElement.getBoundingClientRect()\n if (childElement.offsetTop < parentElement.scrollTop)\n parentElement.scrollTop = childElement.offsetTop\n else if (\n childElement.offsetTop + childRect.height >\n parentElement.scrollTop + containerRect.height\n ) {\n parentElement.scrollTop =\n childElement.offsetTop - containerRect.height + childRect.height\n }\n }\n }\n }, [selectTagUserIndex])\n\n useEffect(() => {\n const clickHandler = function (e: MouseEvent) {\n if (!containerRef.current?.contains(e.target as Node)) {\n // Clicked outside the box\n setFoundUsers([])\n }\n }\n window.addEventListener('click', clickHandler)\n return () => {\n window.removeEventListener('click', clickHandler)\n }\n }, [])\n return (\n <StyledEditorContainer\n ref={containerRef}\n className={className}\n style={style}\n onKeyDownCapture={(e) => {\n // convenient behavior, use arrow to select tag user and enter to choose\n if (foundUsers?.length) {\n let preventKey = false\n if (e.key === 'ArrowDown') {\n preventKey = true\n setSelectTagUserIndex((s) =>\n s + 1 >= foundUsers.length ? 0 : s + 1,\n )\n } else if (e.key === 'Escape') {\n preventKey = true\n setSelectTagUserIndex(0)\n setFoundUsers([])\n } else if (e.key === 'ArrowUp') {\n preventKey = true\n setSelectTagUserIndex((s) =>\n s - 1 < 0 ? foundUsers.length - 1 : s - 1,\n )\n } else if (e.key === 'Enter' || e.key === 'Tab') {\n const user = foundUsers[selectTagUserIndex]\n if (user) {\n preventKey = true\n setSelectUser(user.id, user.name)\n }\n }\n if (preventKey) {\n e.preventDefault()\n return false\n }\n }\n }}\n >\n <CustomToolbar\n id={toolbarIdRef.current}\n onAddLink={(text, href) => {\n const insertIndex = contentEditableCaretPos.current + 1\n const currHTML = reactQuillRef.current?.getEditor()?.root.innerHTML\n const newHTML =\n (currHTML?.substring(0, insertIndex) || '') +\n `<mocka data-href=\"${href}\" data-url=\"true\">${text}</mocka> ` +\n (currHTML?.substring(insertIndex) || '')\n\n onChange?.(newHTML)\n debounceInputModify(newHTML)\n }}\n />\n {ReactQuill && (\n <ReactQuill\n ref={reactQuillRef}\n theme=\"snow\"\n value={html}\n onChange={(t: string) => {\n onChange?.(t)\n debounceInputModify(t)\n handleSelectionChange()\n }}\n onChangeSelection={() => {\n handleSelectionChange()\n }}\n modules={cachedModules.current}\n formats={[\n 'mocka1',\n 'mention',\n 'id',\n 'key',\n 'bold',\n 'italic',\n 'underline',\n 'list',\n 'bullet',\n ]}\n />\n )}\n {!!foundUsers?.length && (\n <div\n ref={foundUsersListRef}\n className=\"mention-search-container\"\n style={searchUserPosition}\n >\n {foundUsers.map((foundUser, index) => (\n <div\n className={`mention-search-item ${\n selectTagUserIndex === index ? 'item-selected' : ''\n }`}\n key={foundUser.id}\n onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n setSelectUser(foundUser.id, foundUser.name)\n }}\n onMouseEnter={() => {\n setSelectTagUserIndex(index)\n }}\n >\n <UserAvatar\n className=\"search-avatar\"\n username={foundUser.name}\n avatar={foundUser.avatar}\n />\n <div>\n <Text size=\"p2\">{foundUser.name}</Text>\n <Text size=\"p4\" color=\"#595959\">\n @{foundUser.username}\n </Text>\n </div>\n </div>\n ))}\n </div>\n )}\n </StyledEditorContainer>\n )\n}\n\nconst CustomToolbar = ({\n onAddLink,\n id,\n}: {\n id?: string\n onAddLink?: (text: string, href: string) => void\n}) => {\n return (\n <div\n id={'toolbar-' + id}\n onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <span className=\"ql-formats\">\n <button className=\"ql-bold\" type=\"button\" />\n <button className=\"ql-italic\" type=\"button\" />\n <button className=\"ql-underline\" type=\"button\" />\n </span>\n <span className=\"ql-formats\">\n <button className=\"ql-list\" value=\"ordered\" type=\"button\" />\n <button className=\"ql-list\" value=\"bullet\" type=\"button\" />\n </span>\n <span className=\"ql-formats\">\n <button className=\"ql-image\" type=\"button\"></button>\n {onAddLink && (\n <PopoverMenu\n className=\"link-tool-wrapper\"\n toggleButtonContent={<img className=\"link-icon\" src={IconLink} />}\n buttonProps={{\n size: 'md',\n color: 'transparent',\n }}\n align=\"end\"\n >\n {({ setShow }) => (\n <LinkToolInputPopover onAddUrl={onAddLink} setShow={setShow} />\n )}\n </PopoverMenu>\n )}\n </span>\n </div>\n )\n}\n\n// export const RichTextEditor = memo(Editor, (prev, next) => {\n// return prev.html === next.html\n// })\n\ntype LinkToolProps = {\n onAddUrl: (text: string, url: string) => void\n setShow?: (b: boolean) => void\n}\nconst URL_WARN_MAP = [\n 'notification.limitUrlDomain',\n 'notification.urlWrongFormat',\n]\nconst LinkToolInputPopover = ({ onAddUrl, setShow }: LinkToolProps) => {\n const {\n data: {\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n const { t } = useTranslations()\n const [urlValue, setUrlValue] = useState('')\n const [textValue, setTextValue] = useState('')\n const [urlWarnType, setUrlWarnType] = useState(-1)\n const checkUrlValid = (v: string) => {\n const trimmedUrl = reformatUrl(v.trim())\n try {\n const jsUrl = new URL(trimmedUrl)\n if (!jsUrl.protocol.startsWith('http')) {\n setUrlWarnType(1)\n return false\n }\n if (\n !ALLOW_DOMAIN_URL.some(\n (o) =>\n jsUrl.origin.endsWith('/' + o) || jsUrl.origin.endsWith('.' + o),\n )\n ) {\n setUrlWarnType(0)\n return false\n }\n setUrlWarnType(-1)\n return true\n } catch {\n setUrlWarnType(1)\n return false\n }\n }\n const isValid = urlValue.trim() && textValue.trim() && urlWarnType < 0\n return (\n <div className=\"link-tool-popover\">\n <Input\n name=\"url\"\n value={urlValue}\n size=\"md\"\n label=\"URL\"\n placeholder={t('placeholder.enterUrlHere')}\n type=\"text\"\n className=\"link-input-url\"\n onChange={(v) => {\n setUrlValue(v)\n checkUrlValid(v)\n }}\n />\n {urlWarnType >= 0 && (\n <Text size=\"c2\" className=\"error-text\">\n {t(URL_WARN_MAP[urlWarnType] as TranslationsKey)}\n </Text>\n )}\n <Input\n name=\"text\"\n value={textValue}\n size=\"md\"\n label={t('createPost.urlText')}\n placeholder={t('placeholder.enterUrlTextHere')}\n type=\"text\"\n className=\"link-input-text\"\n onChange={(v) => setTextValue(v)}\n />\n <div\n data-is-marrybaby={isMarryBaby}\n className=\"link-input-button-wrapper\"\n >\n <Button\n theme={isMarryBaby ? 'marryBaby' : 'helloSites'}\n size=\"sm\"\n color=\"primary\"\n className=\"link-input-button\"\n onClick={() => {\n if (!isValid) return\n onAddUrl(textValue.trim(), reformatUrl(urlValue.trim()))\n setShow && setShow(false)\n }}\n isDisabled={!isValid}\n >\n {t('insert')}\n </Button>\n </div>\n </div>\n )\n}\n\nexport default RichTextEditor\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = __importStar(require(\"react\"));\nvar fast_deep_equal_1 = __importDefault(require(\"fast-deep-equal\"));\nvar PropTypes = __importStar(require(\"prop-types\"));\nfunction normalizeHtml(str) {\n return str && str.replace(/ |\\u202F|\\u00A0/g, ' ');\n}\nfunction replaceCaret(el) {\n // Place the caret at the end of the element\n var target = document.createTextNode('');\n el.appendChild(target);\n // do not move caret if element was not focused\n var isTargetFocused = document.activeElement === el;\n if (target !== null && target.nodeValue !== null && isTargetFocused) {\n var sel = window.getSelection();\n if (sel !== null) {\n var range = document.createRange();\n range.setStart(target, target.nodeValue.length);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n if (el instanceof HTMLElement)\n el.focus();\n }\n}\n/**\n * A simple component for an html element with editable contents.\n */\nvar ContentEditable = /** @class */ (function (_super) {\n __extends(ContentEditable, _super);\n function ContentEditable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastHtml = _this.props.html;\n _this.el = typeof _this.props.innerRef === 'function' ? { current: null } : React.createRef();\n _this.getEl = function () { return (_this.props.innerRef && typeof _this.props.innerRef !== 'function' ? _this.props.innerRef : _this.el).current; };\n _this.emitChange = function (originalEvt) {\n var el = _this.getEl();\n if (!el)\n return;\n var html = el.innerHTML;\n if (_this.props.onChange && html !== _this.lastHtml) {\n // Clone event with Object.assign to avoid\n // \"Cannot assign to read only property 'target' of object\"\n var evt = Object.assign({}, originalEvt, {\n target: {\n value: html\n }\n });\n _this.props.onChange(evt);\n }\n _this.lastHtml = html;\n };\n return _this;\n }\n ContentEditable.prototype.render = function () {\n var _this = this;\n var _a = this.props, tagName = _a.tagName, html = _a.html, innerRef = _a.innerRef, props = __rest(_a, [\"tagName\", \"html\", \"innerRef\"]);\n return React.createElement(tagName || 'div', __assign(__assign({}, props), { ref: typeof innerRef === 'function' ? function (current) {\n innerRef(current);\n _this.el.current = current;\n } : innerRef || this.el, onInput: this.emitChange, onBlur: this.props.onBlur || this.emitChange, onKeyUp: this.props.onKeyUp || this.emitChange, onKeyDown: this.props.onKeyDown || this.emitChange, contentEditable: !this.props.disabled, dangerouslySetInnerHTML: { __html: html } }), this.props.children);\n };\n ContentEditable.prototype.shouldComponentUpdate = function (nextProps) {\n var props = this.props;\n var el = this.getEl();\n // We need not rerender if the change of props simply reflects the user's edits.\n // Rerendering in this case would make the cursor/caret jump\n // Rerender if there is no element yet... (somehow?)\n if (!el)\n return true;\n // ...or if html really changed... (programmatically, not by user edit)\n if (normalizeHtml(nextProps.html) !== normalizeHtml(el.innerHTML)) {\n return true;\n }\n // Handle additional properties\n return props.disabled !== nextProps.disabled ||\n props.tagName !== nextProps.tagName ||\n props.className !== nextProps.className ||\n props.innerRef !== nextProps.innerRef ||\n props.placeholder !== nextProps.placeholder ||\n !fast_deep_equal_1.default(props.style, nextProps.style);\n };\n ContentEditable.prototype.componentDidUpdate = function () {\n var el = this.getEl();\n if (!el)\n return;\n // Perhaps React (whose VDOM gets outdated because we often prevent\n // rerendering) did not update the DOM. So we update it manually now.\n if (this.props.html !== el.innerHTML) {\n el.innerHTML = this.props.html;\n }\n this.lastHtml = this.props.html;\n replaceCaret(el);\n };\n ContentEditable.propTypes = {\n html: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n disabled: PropTypes.bool,\n tagName: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n ])\n };\n return ContentEditable;\n}(React.Component));\nexports.default = ContentEditable;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledCreatePostTitle = styled.div`\n input:focus,\n textarea:focus,\n [contenteditable='true'] {\n outline: none;\n }\n\n .title-input {\n overflow: hidden;\n width: 100%;\n padding: 12px 16px;\n border: solid 1px #d9d9d9;\n border-radius: 6px;\n font-size: 16px;\n line-height: 1.2;\n white-space: nowrap;\n :focus {\n border-color: ${(props: ThemeProps) => props.theme.colors.primaryBase};\n box-shadow: 0px 0px 2px 2px\n ${(props: ThemeProps) => props.theme.colors.blue200};\n }\n br {\n display: none;\n }\n * {\n display: inline;\n white-space: nowrap;\n }\n mocka {\n padding: 2px 6px;\n border-radius: 1rem;\n &[data-error='true'] {\n background-color: #ffeeee;\n color: red;\n text-decoration: underline;\n font-style: bold;\n }\n }\n ol,\n ul {\n padding-left: 1rem;\n }\n }\n\n label {\n display: block;\n margin-bottom: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.gray600};\n font-size: 13px;\n font-weight: bold;\n }\n\n .count-string {\n margin-top: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.gray500};\n font-size: 11px;\n text-align: right;\n }\n`\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledTopicSelectList = styled.div`\n display: flex;\n width: 100%;\n flex-wrap: wrap;\n margin-top: 1rem;\n\n .tag-item {\n min-height: 32px;\n padding: 5px 12px;\n border: 1px solid ${(props: ThemeProps) => props.theme.colors.neutral100};\n margin-right: 1rem;\n margin-bottom: 8px;\n border-radius: 1rem;\n color: ${(props: ThemeProps) => props.theme.colors.gray800};\n cursor: pointer;\n font-size: 13px;\n line-height: 22px;\n transition: all 0.2s;\n\n &.--active {\n border-color: ${(props: ThemeProps) => props.theme.colors.blue50};\n background: ${(props: ThemeProps) => props.theme.colors.blue50};\n color: ${(props: ThemeProps) => props.theme.colors.primaryBase};\n }\n &[data-disabled='true'] {\n background: ${(props: ThemeProps) => props.theme.colors.gray100};\n color: ${(props: ThemeProps) => props.theme.colors.gray800};\n }\n }\n .topic-spinner {\n margin-right: auto;\n margin-left: auto;\n & > button {\n width: 24px;\n height: 24px;\n }\n }\n &[data-is-marrybaby='true'] {\n .tag-item {\n border-color: transparent;\n background: #f3f3f3;\n color: #3e3f58;\n &.--active {\n border-color: #b6cdff;\n background: #e0e9fb;\n color: #3e3f58;\n }\n }\n }\n`\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledCreateNewPost = styled.div`\n position: relative;\n display: flex;\n height: 100%;\n flex-direction: column;\n padding: 16px 32px;\n\n .input-group-container {\n flex: 1;\n padding-right: 2px;\n padding-left: 2px;\n margin-bottom: 0.5rem;\n -ms-overflow-style: none; /* IE and Edge */\n overflow-y: auto;\n scrollbar-width: none; /* Firefox */\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n .input-group {\n :not(:last-child) {\n margin-bottom: 0.6rem;\n }\n\n input:focus,\n textarea:focus,\n [contenteditable='true'] {\n outline: none;\n }\n\n label {\n margin-bottom: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.gray600};\n /* font-family: 'Open Sans', sans-serif; */\n font-size: 13px;\n font-weight: bold;\n }\n\n .input-group-label {\n margin-bottom: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.gray600};\n /* font-family: 'Open Sans', sans-serif; */\n font-size: 13px;\n font-weight: bold;\n }\n\n .input-notification {\n display: flex;\n\n & > img {\n width: 16px;\n height: 16px;\n margin-top: 1.5px;\n margin-right: 8px;\n }\n }\n\n .tag-list {\n }\n }\n\n .warning {\n margin-top: 16px;\n }\n\n .submit-btn {\n width: 100%;\n }\n`\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledPopupFrame = styled.div`\n [data-type='confirm'] {\n max-width: 468px;\n height: 486px;\n padding: 0;\n\n .popup-content {\n display: flex;\n flex-direction: column;\n padding: 0;\n\n .close-button {\n top: 16px;\n right: 16px;\n width: 24px;\n height: 24px;\n z-index: 5;\n }\n\n .header {\n display: flex;\n height: 56px;\n align-items: center;\n padding: 16px 56px 16px 32px;\n border-bottom: 1px solid\n ${(props: ThemeProps) => props.theme.colors.neutral100};\n font-weight: 900;\n }\n\n .content {\n overflow: auto;\n flex: 1;\n .topic-list-wrapper {\n padding: 1rem;\n }\n }\n }\n }\n\n &.create-post-popup-frame {\n & > [data-type='confirm'] {\n height: 80vh;\n min-height: 486px;\n transition: all 0.3s ease-in-out;\n ${MediaQueries.mbDown} {\n top: 0;\n left: 0;\n transform: unset;\n width: 100vw;\n max-width: 100vw;\n min-height: unset;\n height: 100%;\n }\n &[data-open='false'] {\n transform: translate(-50%, calc(-100vh - 150%));\n }\n }\n\n &.center {\n .header {\n justify-content: center;\n }\n }\n }\n\n > div&[data-open='true'] {\n z-index: 250;\n &:last-child {\n z-index: 200;\n }\n }\n`\n","import React, { CSSProperties, ReactNode } from 'react'\n\nimport { Heading } from 'components/atoms/heading'\nimport { Popup } from 'components/molecules/popup'\n\nimport IconClose from '../../../assets/svg/icon-close.svg'\nimport { StyledPopupFrame } from './index.styled'\n\nexport type Props = {\n className?: string\n style?: CSSProperties\n closeIcon?: JSX.Element\n heading?: ReactNode\n children?: ReactNode\n isOpen?: boolean\n onClose?: () => void\n}\n\nexport const PopupFrame = ({\n className,\n style,\n closeIcon,\n heading = '',\n children,\n isOpen = false,\n onClose = () => null,\n}: Props) => {\n return (\n <StyledPopupFrame className={className} style={style}>\n <Popup\n type=\"confirm\"\n onClose={onClose}\n isOpen={isOpen}\n closeIcon={closeIcon || <img src={IconClose} />}\n >\n <div className=\"header\">\n <Heading tag=\"h5\">{heading}</Heading>\n </div>\n <div className=\"content\">{children}</div>\n </Popup>\n </StyledPopupFrame>\n )\n}\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledPopupDanger = styled.div`\n [data-type='confirm'] {\n width: min(360px, 100%);\n height: auto;\n &[data-open='false'] {\n top: calc(-100% - 500px);\n }\n }\n\n .header {\n display: none !important;\n }\n\n .confirm-dialog {\n position: relative;\n overflow: auto;\n width: 100%;\n padding-top: 44px;\n background: #fff;\n border-radius: 6px;\n\n .confirm-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 0 16px 16px;\n text-align: center;\n\n .title {\n margin-bottom: 8px;\n font-size: 24px;\n line-height: 32px;\n word-break: break-word;\n overflow-wrap: break-word;\n }\n\n .desc {\n margin-bottom: 24px;\n color: ${(props: ThemeProps) => props.theme.colors.gray500};\n font-size: 18px;\n line-height: 24px;\n text-align: center;\n word-break: break-word;\n overflow-wrap: break-word;\n }\n\n .btn-group {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n\n button {\n margin: 0 4px 0.5rem;\n }\n }\n }\n }\n .thumbnail-container {\n width: 80px;\n height: 80px;\n margin-bottom: 32px;\n .thumbnail {\n width: 100%;\n height: 100%;\n }\n &.is-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n background: #e0e9fc;\n border-radius: 1rem;\n .thumbnail {\n width: 40px;\n height: 40px;\n }\n }\n }\n &[data-is-marrybaby='true'] {\n .popup-frame {\n > div:first-child {\n overflow: hidden;\n border-radius: 1rem;\n &[data-open='true'] {\n ${MediaQueries.mbDown} {\n top: 100%;\n transform: translate(-50%, -100%);\n max-width: unset;\n width: 100%;\n background: unset;\n overflow: unset;\n }\n }\n }\n .popup-content {\n .close-button {\n ${MediaQueries.mbDown} {\n display: none;\n }\n }\n .confirm-dialog {\n ${MediaQueries.mbDown} {\n background: unset;\n position: relative;\n overflow-x: hidden;\n &::before {\n content: '';\n width: 200%;\n background: #fff;\n position: absolute;\n left: 50%;\n top: 0;\n transform: translateX(-50%);\n z-index: -1;\n height: 100%;\n border-top-left-radius: 100%;\n border-top-right-radius: 100%;\n }\n }\n .confirm-content {\n padding: 0 40px 40px;\n ${MediaQueries.mbDown} {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n }\n .btn-group {\n width: 100%;\n justify-content: space-between;\n button {\n flex: 1;\n margin: 0;\n &:first-child {\n margin-right: 0.5rem;\n }\n }\n }\n }\n }\n }\n .thumbnail-container {\n ${MediaQueries.mbDown} {\n display: none;\n }\n &.is-icon {\n background: #ffeaf1;\n border-radius: 24px;\n }\n &.is-mobile {\n position: absolute;\n top: 0;\n left: 50%;\n display: none;\n width: 48px;\n height: 48px;\n transform: translate(-50%, -50%);\n &.is-icon {\n border-radius: 1rem;\n .thumbnail {\n width: 24px;\n height: 24px;\n }\n }\n ${MediaQueries.mbDown} {\n display: flex;\n }\n }\n }\n }\n }\n`\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledInputCommentBar = styled.div`\n padding: 1rem;\n border-top: 1px solid #f2f2f2;\n &[data-is-reply='true'] {\n padding-right: 0;\n padding-left: 0;\n border-top: 1px solid #e4e8ec;\n margin-right: 1rem;\n margin-left: 1rem;\n }\n .error-text {\n padding: 1rem;\n color: ${(props: ThemeProps) => props.theme.colors.red700};\n }\n .reply-to-container {\n display: flex;\n justify-content: space-between;\n padding-bottom: 0.75rem;\n margin-top: -0.25rem;\n .icon-close-comment {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n a {\n text-decoration: none;\n }\n }\n .input-container {\n display: flex;\n align-items: center;\n .avatar-wrapper {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n margin-right: 0.5rem;\n &.avatar-wrapper-reply {\n width: 32px;\n height: 32px;\n .avatar {\n width: 32px;\n height: 32px;\n }\n }\n }\n .input-wrapper {\n margin-right: 0.5rem;\n &[data-has-error] {\n .as-input {\n border-color: ${(props: ThemeProps) => props.theme.colors.red700};\n }\n }\n\n .as-input {\n .textarea {\n width: 100%;\n max-height: 225px;\n min-height: 75px;\n .ql-toolbar {\n padding: 0;\n }\n .ql-editor {\n padding-left: 0;\n padding-right: 0;\n }\n .quill {\n height: 0;\n }\n }\n width: 100%;\n padding: 12px 16px;\n border: solid 1px ${(props: ThemeProps) => props.theme.colors.gray200};\n border-radius: 6px;\n\n &:active,\n &:focus {\n border-color: ${(props: ThemeProps) =>\n props.theme.colors.primaryBase};\n box-shadow: 0px 0px 2px 2px\n ${(props: ThemeProps) => props.theme.colors.blue200};\n }\n\n &:disabled {\n background-color: ${(props: ThemeProps) =>\n props.theme.colors.gray100};\n cursor: not-allowed;\n }\n\n span {\n &[data-error='true'] {\n color: red;\n text-decoration: underline;\n }\n }\n }\n\n &[data-has-action-icon] {\n .as-input {\n padding: 12px 48px 12px 16px;\n }\n }\n &[data-has-display-icon] {\n .as-input {\n padding: 12px 16px 12px 48px;\n }\n }\n\n &[data-has-action-icon][data-has-display-icon] {\n .as-input {\n padding: 12px 48px;\n }\n }\n\n &[data-size='lg'] {\n .as-input {\n font-size: 16px;\n font-weight: ${(props: ThemeProps) => props.theme.sizes.fwRegular};\n ${MediaQueries.mbDown} {\n font-size: 22px;\n line-height: 1.2;\n }\n\n ${MediaQueries.mbUp} {\n font-size: 26px;\n line-height: 1.2;\n }\n }\n }\n &[data-size='md'] {\n .as-input {\n font-weight: ${(props: ThemeProps) => props.theme.sizes.fwRegular};\n line-height: 22px;\n ${MediaQueries.mbDown} {\n font-size: 14px;\n line-height: 1.2;\n }\n\n ${MediaQueries.mbUp} {\n font-size: 16px;\n line-height: 1.2;\n }\n }\n }\n &[data-size='sm'] {\n .as-input {\n font-weight: ${(props: ThemeProps) => props.theme.sizes.fwRegular};\n line-height: 20px;\n ${MediaQueries.mbDown} {\n font-size: 13px;\n line-height: 1.5;\n }\n\n ${MediaQueries.mbUp} {\n font-size: 13px;\n line-height: 1.5;\n }\n }\n }\n }\n .images-input-label {\n height: 100%;\n cursor: pointer;\n .icon-images-input {\n width: 24px;\n height: 24px;\n vertical-align: middle;\n }\n }\n .send-button {\n display: flex;\n width: 40px;\n height: 40px;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n &.send-button-post {\n background: ${(props: ThemeProps) => props.theme.colors.neutral100};\n border-radius: 50%;\n }\n .icon-enter {\n width: 20px;\n height: 20px;\n vertical-align: middle;\n }\n &[data-is-loading='true'] {\n > div {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n }\n }\n .preview-images-container {\n margin-top: 1rem;\n .image-src-wrapper {\n position: relative;\n width: 100%;\n padding-top: 66.67%;\n &:not(:last-child) {\n margin-bottom: 1rem;\n }\n .preview-image {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n .icon-close-circle {\n position: absolute;\n top: 10px;\n right: 10px;\n width: 20px;\n height: 20px;\n cursor: pointer;\n }\n }\n }\n`\n","import React, { createContext, ReactNode, useState } from 'react'\n\nexport type Context = {\n trigger?: boolean\n onTrigger?: () => void\n}\n\nexport const MainInputTriggerContext = createContext({} as Context)\n\nexport const MainInputTriggerContextProvider = ({\n children,\n}: {\n children?: ReactNode\n}) => {\n const [trigger, setTrigger] = useState(false)\n return (\n <MainInputTriggerContext.Provider\n value={{\n trigger,\n onTrigger: () => setTrigger((v) => !v),\n }}\n >\n {children}\n </MainInputTriggerContext.Provider>\n )\n}\n","import { ThemeProps } from 'misc/theme'\nimport { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledShare = styled.div`\n padding: 1rem;\n .share__social {\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: center;\n\n & > a {\n margin: 0 7px;\n\n & > img {\n width: 32px;\n height: 32px;\n }\n .__label {\n display: none;\n }\n }\n }\n\n .share__copy-link {\n position: relative;\n padding: 1rem 0.5rem 0;\n\n margin-top: 16px;\n &::before {\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2rem);\n border-top: 1px solid\n ${(props: ThemeProps) => props.theme.colors.neutral100};\n margin-left: -1rem;\n content: '';\n }\n .__label {\n margin-bottom: 8px;\n font-size: 11px;\n font-weight: 400;\n line-height: 17px;\n text-align: left;\n }\n\n .__input-group {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 40px;\n border: 1px solid ${(props: ThemeProps) => props.theme.colors.gray200};\n background: #fff;\n border-radius: 6px;\n\n & > input {\n width: 100%;\n height: 100%;\n padding: 0 16px;\n border: none;\n background: transparent;\n color: ${(props: ThemeProps) => props.theme.colors.gray800};\n\n &:focus {\n outline: none;\n }\n }\n\n .__copy {\n position: absolute;\n top: 0;\n right: 0;\n width: 71px;\n height: 100%;\n padding-left: 12px;\n background: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 0.1) 0%,\n #fff 17%,\n #fff 100%\n );\n color: ${(props: ThemeProps) => props.theme.colors.primaryBase};\n cursor: pointer;\n font-size: 14px;\n font-weight: 400;\n }\n }\n }\n\n &[data-is-marrybaby='true'] {\n ${MediaQueries.mbDown} {\n padding: 0.5rem;\n }\n .share__social {\n justify-content: space-between;\n & > a {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n ${MediaQueries.mbDown} {\n margin: 0;\n }\n & > img {\n margin-bottom: 0.8rem;\n }\n .__label {\n display: initial;\n }\n }\n }\n .share__copy-link {\n padding: 0;\n &::before {\n display: none;\n }\n .__label {\n display: none;\n }\n .__input-group {\n height: unset;\n background-color: rgb(243, 243, 243);\n border-radius: 16px;\n & > input {\n padding: 1rem;\n }\n .__copy {\n background: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 0.1) 0%,\n #f3f3f3 17%,\n #f3f3f3 100%\n );\n }\n }\n }\n }\n`\n","import React, {\n CSSProperties,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\n\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { theme } from 'misc/theme'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport IconWhatsapp from '../../../assets/images/icon-whatsapp.png'\nimport IconZalo from '../../../assets/images/icon-zalo.png'\nimport MBIconCopy from '../../../assets/marrybaby/svg/copy.svg'\nimport MBIconFacebook from '../../../assets/marrybaby/svg/facebook.svg'\nimport MBIconLinkedIn from '../../../assets/marrybaby/svg/linkedin.svg'\nimport MBIconMessenger from '../../../assets/marrybaby/svg/messenger.svg'\nimport MBIconTwitter from '../../../assets/marrybaby/svg/twitter.svg'\nimport MBIconZalo from '../../../assets/marrybaby/svg/zalo.png'\nimport IconFacebook from '../../../assets/svg/icon-facebook.svg'\nimport IconLinkedIn from '../../../assets/svg/icon-linkedin.svg'\nimport IconTwitter from '../../../assets/svg/icon-twitter.svg'\nimport { StyledShare } from './index.styled'\n\nexport type Props = {\n className?: string\n shareUrl?: string\n title?: string\n style?: CSSProperties\n}\n\nconst getSocialList = (\n shareUrl: string,\n isMarryBaby?: boolean,\n): { icon: string; name: string; href: string }[] =>\n isMarryBaby\n ? [\n {\n icon: MBIconFacebook,\n name: 'Facebook',\n href: `https://www.facebook.com/sharer.php?u=${shareUrl}`,\n },\n {\n icon: MBIconZalo,\n name: 'Zalo',\n href: `https://sp.zalo.me/share?href=${shareUrl}`,\n },\n {\n icon: MBIconTwitter,\n name: 'Twitter',\n href: `https://twitter.com/intent/tweet?url=${shareUrl}`,\n },\n {\n icon: MBIconLinkedIn,\n name: 'LinkedIn',\n href: `https://www.linkedin.com/sharing/share-offsite/?url=${shareUrl}`,\n },\n {\n icon: MBIconMessenger,\n name: 'Messenger',\n href: `https://www.facebook.com/sharer.php?u=${shareUrl}`,\n },\n ]\n : [\n {\n icon: IconFacebook,\n name: 'Facebook',\n href: `https://www.facebook.com/sharer.php?u=${shareUrl}`,\n },\n {\n icon: IconZalo,\n name: 'Zalo',\n href: `https://sp.zalo.me/share?href=${shareUrl}`,\n },\n {\n icon: IconTwitter,\n name: 'Twitter',\n href: `https://twitter.com/intent/tweet?url=${shareUrl}`,\n },\n {\n icon: IconWhatsapp,\n name: 'WhatsApp',\n href: `https://wa.me/?text=${shareUrl}`,\n },\n {\n icon: IconLinkedIn,\n name: 'LinkedIn',\n href: `https://www.linkedin.com/sharing/share-offsite/?url=${shareUrl}`,\n },\n ]\n\nexport const ShareBox = ({ className, style, shareUrl, title }: Props) => {\n const {\n action: { pushNotifications },\n data: {\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n const { t } = useTranslations()\n const input = useRef<HTMLInputElement>(null)\n const [copied, setCopied] = useState(false)\n\n const copyToClipboard = () => {\n if (!input?.current) return\n const el = document.createElement('textarea')\n el.value = input.current.value\n document.body.appendChild(el)\n el.select()\n document.execCommand('copy')\n document.body.removeChild(el)\n input.current.focus()\n setCopied(true)\n pushNotifications({\n title: '',\n message: t('share.linkCopied'),\n type: 'success',\n })\n }\n\n useEffect(() => {\n copyToClipboard()\n if (navigator.share) {\n navigator\n .share({\n title: title || 'Read This Post',\n url: shareUrl,\n })\n .then((res) => {\n // setCopied(true)\n pushNotifications({\n title: '',\n message: t('share.linkShared'),\n type: 'success',\n })\n })\n .catch(console.error)\n }\n }, [])\n\n const socialList = getSocialList(shareUrl || '', isMarryBaby)\n\n return (\n <StyledShare\n data-is-marrybaby={isMarryBaby}\n className={className}\n style={style}\n >\n <div className=\"share__social\">\n {socialList.map((social, index) => (\n <a key={index} href={social.href} target=\"_blank\" rel=\"noreferrer\">\n <img src={social.icon} />\n <Text className=\"__label\" size=\"label2\" type=\"regular\">\n {social.name}\n </Text>\n </a>\n ))}\n </div>\n <div className=\"share__copy-link\">\n <Text\n className=\"__label\"\n color={theme.colors.gray500}\n size=\"p4\"\n type=\"regular\"\n >\n {t('orCopyLink')}\n </Text>\n <div className=\"__input-group\">\n <input\n ref={input}\n type=\"text\"\n value={shareUrl}\n readOnly\n onFocus={(e) => e.target.select()}\n />\n <button className=\"__copy\" onClick={() => copyToClipboard()}>\n {isMarryBaby ? (\n <img src={MBIconCopy} />\n ) : (\n t(copied ? 'copied' : 'copy')\n )}\n </button>\n </div>\n </div>\n </StyledShare>\n )\n}\n","var img = \"data:image/png;base64,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\";\n export default img;","var img = \"data:image/png;base64,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\";\n export default img;","var img = \"data:image/png;base64,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\";\n export default img;","import React, { CSSProperties, useContext, useEffect, useState } from 'react'\n\nimport { Heading } from 'components/atoms/heading'\nimport { Text } from 'components/atoms/text'\nimport { useTranslations } from 'hooks/useTranslations'\nimport { ThemeProps } from 'misc/theme'\nimport { MediaQueries, toggleNoScroll } from 'misc/utils'\nimport * as ReactDOM from 'react-dom'\nimport styled from 'styled-components'\nimport { TogetherComponentGlobalContext } from 'together/togetherComponentGlobalContext'\n\nimport { PopupFrame } from '.'\nimport { ShareBox } from '../shareBox'\n\nexport type Props = {\n className?: string\n style?: CSSProperties\n url?: string\n avatar?: string\n text?: string\n onClose?: () => void\n}\n\nexport const SharePopup = ({\n className,\n style,\n url,\n avatar,\n text,\n onClose,\n}: Props) => {\n const {\n data: {\n env: { isMarryBaby },\n },\n } = useContext(TogetherComponentGlobalContext)\n const { t } = useTranslations()\n const [isOpen, setIsOpen] = useState(false)\n\n useEffect(() => {\n toggleNoScroll(true)\n setTimeout(() => setIsOpen(true), 0)\n return () => toggleNoScroll(false)\n }, [])\n return ReactDOM.createPortal(\n <StyledSharePopup\n data-is-marrybaby={isMarryBaby}\n className={className}\n style={style}\n >\n <PopupFrame\n className=\"share-popup\"\n isOpen={isOpen}\n onClose={onClose}\n heading={t('bottomBar.share')}\n >\n {isMarryBaby ? (\n <Text className=\"share-mb-text\" size=\"sm\">\n {t('article.shareOn')}\n </Text>\n ) : (\n <div className=\"custom-share__header\">\n {avatar && (\n <div className=\"custom-share__header-image\">\n <img src={avatar} />\n </div>\n )}\n <div className=\"custom-share__header-info\">\n <Heading tag=\"h4\">{text}</Heading>\n <Text className=\"desc\" size=\"md\">\n {url}\n </Text>\n </div>\n </div>\n )}\n\n {isOpen && (\n <ShareBox\n shareUrl={\n url || (typeof window !== 'undefined' ? window.location.href : '')\n }\n title={text}\n />\n )}\n </PopupFrame>\n </StyledSharePopup>,\n document.body,\n )\n}\n\nexport const StyledSharePopup = styled.div`\n .share-popup {\n > div:first-child {\n height: unset;\n }\n .close-button {\n display: none;\n }\n .popup-content .header {\n display: none;\n }\n }\n .custom-share__header {\n display: flex;\n flex-wrap: no-wrap;\n align-items: center;\n padding: 1rem;\n border-bottom: 1px solid\n ${(props: ThemeProps) => props.theme.colors.neutral100};\n margin-bottom: 16px;\n\n .custom-share__header-image {\n width: 38px;\n height: 38px;\n flex-shrink: 0;\n & > img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n }\n }\n\n .custom-share__header-info {\n flex: 1;\n padding: 0 8px;\n word-break: break-word;\n\n [data-tag='h4'] {\n margin-bottom: 8px;\n font-size: 14px;\n font-weight: bold;\n line-height: 14px;\n }\n\n [data-size='md'] {\n color: #a5a5a5;\n font-size: 14px;\n line-height: 14px;\n }\n }\n }\n\n &[data-is-marrybaby='true'] {\n .share-popup {\n > div:first-child {\n overflow: hidden;\n border-radius: 1rem;\n &[data-open='true'] {\n ${MediaQueries.mbDown} {\n max-width: unset;\n width: 100%;\n top: 100%;\n transform: translate(-50%, -100%);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n }\n .close-button {\n display: block;\n }\n .popup-content {\n .header {\n display: block;\n padding: 1rem;\n background-color: rgb(243, 243, 243);\n }\n .content {\n padding-bottom: 1rem;\n }\n }\n .share-mb-text {\n margin: 1rem 1rem 0.5rem;\n }\n }\n }\n`\n","import styled from 'styled-components'\n\nexport const StyledSubmitReportForm = styled.div`\n padding: 0 8px;\n margin-top: 18px;\n\n .report-list {\n margin-bottom: 18px;\n\n .report-item {\n display: flex;\n align-items: center;\n margin-bottom: 10px;\n font-weight: 600;\n\n & > img {\n width: 12px;\n height: 12px;\n margin-right: 8px;\n }\n\n .__label {\n font-size: 14px;\n }\n }\n }\n\n .report-submit {\n width: 100%;\n }\n &[data-is-marrybaby='true'] {\n padding: 0 1rem 1rem;\n }\n`\n","import { ThemeProps } from 'misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledPostContent = styled.div`\n padding: 0.5rem 1rem 1rem;\n line-height: 1.5;\n word-break: break-word;\n .post-content-replying {\n margin-right: 5px;\n color: ${(props: ThemeProps) => props.theme.colors.primaryBase};\n cursor: pointer;\n display: inline-block;\n &.tag-only {\n margin-right: 0;\n }\n }\n .post-content {\n display: inline;\n white-space: pre-wrap;\n /* > *:first-child, */\n > mention:first-child ~ * {\n &:not(ul),\n &:not(ol) {\n display: inline-block;\n }\n }\n > mention:first-child {\n margin-right: 5px;\n }\n &.has-see-more {\n *:last-child {\n &:not(ul),\n &:not(ol) {\n display: inline;\n }\n }\n }\n img {\n width: 100%;\n height: unset;\n }\n ul,\n ol {\n list-style-position: inside;\n padding-left: 1rem;\n display: block;\n }\n ol {\n list-style-type: decimal;\n }\n ul {\n list-style-type: disc;\n }\n mention {\n color: #1890ff;\n padding-right: 4px;\n :hover {\n text-decoration: underline;\n }\n }\n }\n .see-more-text {\n color: #1890ff;\n cursor: pointer;\n }\n`\n","import styled from 'styled-components'\n\nexport const StyledPostImagePreview = styled.div`\n display: grid;\n cursor: pointer;\n grid-gap: 3px;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: auto;\n .img-wrapper {\n position: relative;\n overflow: hidden;\n width: 100%;\n padding-top: 56.25%;\n grid-column: auto;\n .img-preview-blur {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 110%;\n height: 110%;\n /* Add the blur effect */\n -webkit-filter: blur(8px);\n filter: blur(8px);\n object-fit: cover;\n object-position: center;\n opacity: 0.8;\n transform: translate(-50%, -50%);\n }\n .img-preview {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n object-position: center;\n }\n .img-more-overlay {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.5);\n }\n }\n &[data-image-count='1'] {\n .img-wrapper {\n /* padding-top: 100%; */\n grid-column: 1/3;\n }\n }\n &[data-image-count='2'] {\n .img-wrapper {\n /* padding-top: 100%; */\n }\n }\n &[data-image-count='3'] {\n .img-wrapper {\n &:first-child {\n grid-column: 1/3;\n }\n }\n }\n &[data-image-count='4'] {\n .img-wrapper {\n /* padding-top: 100%; */\n }\n }\n &[data-image-count='5'] {\n grid-template-columns: repeat(6, 1fr);\n .img-wrapper {\n /* padding-top: 100%; */\n grid-column: auto/ span 2;\n\n &:first-child {\n padding-top: 56.25%;\n grid-column: 1/4;\n }\n &:nth-child(2) {\n padding-top: 56.25%;\n grid-column: 4/7;\n }\n }\n }\n\n &[data-is-marrybaby='true'] {\n grid-gap: 8px;\n .img-wrapper {\n padding-top: 66.66%;\n border-radius: 1rem;\n .img-preview {\n object-fit: cover;\n }\n }\n &[data-image-count='3'] {\n grid-template-columns: 1fr 1fr 1fr;\n .img-wrapper {\n &:first-child {\n padding-top: 100%;\n grid-column: 1/3;\n grid-row: 1/3;\n }\n }\n }\n }\n`\nexport const StyledImagePreviewPopup = styled.div`\n position: fixed;\n z-index: 999;\n top: 0;\n left: 0;\n display: flex;\n overflow: hidden;\n width: 100vw;\n height: 100vh;\n flex-direction: column;\n background: white;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s linear;\n &[data-open='true'] {\n opacity: 1;\n pointer-events: auto;\n }\n .top-bar {\n position: relative;\n padding: 20px 40px;\n .icon-arrow-left {\n position: absolute;\n top: 50%;\n left: 20px;\n height: 24px;\n width: 24px;\n cursor: pointer;\n transform: translateY(-50%);\n }\n }\n .container {\n flex: 1;\n overflow-y: auto;\n .img-preview {\n width: 100%;\n min-width: 100%;\n margin-bottom: 0.5rem;\n cursor: pointer;\n max-height: 100%;\n object-fit: cover;\n }\n }\n`\n","import { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledImagePreviewContainer = styled.div`\n position: fixed;\n z-index: 999;\n top: 0;\n left: 0;\n display: flex;\n width: 100%;\n height: 100%;\n flex-direction: column;\n background: black;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s linear;\n &[data-open='true'] {\n opacity: 1;\n pointer-events: auto;\n }\n`\nexport const StyledImagePreviewTopbar = styled.div`\n padding: 1rem;\n background: white;\n .icon-close {\n width: 26px;\n height: 26px;\n cursor: pointer;\n }\n`\nexport const StyledImagePreviewWrapper = styled.div`\n position: relative;\n flex: 1;\n overflow: hidden;\n > img {\n height: 100%;\n width: 100%;\n object-fit: contain;\n object-position: center;\n }\n`\nexport const StyledArrowWrapper = styled.div`\n --inner-padding: max(16px, 20%);\n height: 100%;\n position: absolute;\n left: 0;\n padding: 8px;\n padding-right: var(--inner-padding);\n display: flex;\n align-items: center;\n top: 0;\n cursor: pointer;\n &[data-right] {\n padding-right: 8px;\n padding-left: var(--inner-padding);\n left: unset;\n right: 0;\n }\n &[data-disabled='true'] {\n cursor: not-allowed;\n }\n`\nexport const StyledCircleArrow = styled.div`\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.3);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n > img {\n width: 16px;\n height: 16px;\n &[data-disabled='true'] {\n opacity: 0.5;\n }\n }\n ${MediaQueries.tdUp} {\n padding: 8px;\n > img {\n width: 30px;\n height: 30px;\n }\n }\n`\n","const runningOnBrowser = typeof window !== \"undefined\";\n\nconst isBot =\n (runningOnBrowser && !(\"onscroll\" in window)) ||\n (typeof navigator !== \"undefined\" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent));\n\nconst supportsIntersectionObserver = runningOnBrowser && \"IntersectionObserver\" in window;\n\nconst supportsClassList = runningOnBrowser && \"classList\" in document.createElement(\"p\");\n\nconst isHiDpi = runningOnBrowser && window.devicePixelRatio > 1;\n\nconst defaultSettings = {\n elements_selector: \".lazy\",\n container: isBot || runningOnBrowser ? document : null,\n threshold: 300,\n thresholds: null,\n data_src: \"src\",\n data_srcset: \"srcset\",\n data_sizes: \"sizes\",\n data_bg: \"bg\",\n data_bg_hidpi: \"bg-hidpi\",\n data_bg_multi: \"bg-multi\",\n data_bg_multi_hidpi: \"bg-multi-hidpi\",\n data_poster: \"poster\",\n class_applied: \"applied\",\n class_loading: \"loading\",\n class_loaded: \"loaded\",\n class_error: \"error\",\n class_entered: \"entered\",\n class_exited: \"exited\",\n unobserve_completed: true,\n unobserve_entered: false,\n cancel_on_exit: true,\n callback_enter: null,\n callback_exit: null,\n callback_applied: null,\n callback_loading: null,\n callback_loaded: null,\n callback_error: null,\n callback_finish: null,\n callback_cancel: null,\n use_native: false\n};\n\nconst getExtendedSettings = (customSettings) => {\n return Object.assign({}, defaultSettings, customSettings);\n};\n\n/* Creates instance and notifies it through the window element */\nconst createInstance = function(classObj, options) {\n let event;\n const eventString = \"LazyLoad::Initialized\";\n const instance = new classObj(options);\n try {\n // Works in modern browsers\n event = new CustomEvent(eventString, { detail: { instance } });\n } catch (err) {\n // Works in Internet Explorer (all versions)\n event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventString, false, false, { instance });\n }\n window.dispatchEvent(event);\n};\n\n/* Auto initialization of one or more instances of lazyload, depending on the \n options passed in (plain object or an array) */\nconst autoInitialize = (classObj, options) => {\n if (!options) {\n return;\n }\n if (!options.length) {\n // Plain object\n createInstance(classObj, options);\n } else {\n // Array of objects\n for (let i = 0, optionsItem; (optionsItem = options[i]); i += 1) {\n createInstance(classObj, optionsItem);\n }\n }\n};\n\nconst SRC = \"src\";\nconst SRCSET = \"srcset\";\nconst SIZES = \"sizes\";\nconst POSTER = \"poster\";\nconst ORIGINALS = \"llOriginalAttrs\";\nconst DATA = \"data\";\n\nconst statusLoading = \"loading\";\nconst statusLoaded = \"loaded\";\nconst statusApplied = \"applied\";\nconst statusEntered = \"entered\";\nconst statusError = \"error\";\nconst statusNative = \"native\";\n\nconst dataPrefix = \"data-\";\nconst statusDataName = \"ll-status\";\n\nconst getData = (element, attribute) => {\n return element.getAttribute(dataPrefix + attribute);\n};\n\nconst setData = (element, attribute, value) => {\n var attrName = dataPrefix + attribute;\n if (value === null) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst getStatus = (element) => getData(element, statusDataName);\nconst setStatus = (element, status) => setData(element, statusDataName, status);\nconst resetStatus = (element) => setStatus(element, null);\n\nconst hasEmptyStatus = (element) => getStatus(element) === null;\nconst hasStatusLoading = (element) => getStatus(element) === statusLoading;\nconst hasStatusError = (element) => getStatus(element) === statusError;\nconst hasStatusNative = (element) => getStatus(element) === statusNative;\n\nconst statusesAfterLoading = [statusLoading, statusLoaded, statusApplied, statusError];\nconst hadStartedLoading = (element) => statusesAfterLoading.indexOf(getStatus(element)) >= 0;\n\nconst safeCallback = (callback, arg1, arg2, arg3) => {\n\tif (!callback) {\n\t\treturn;\n\t}\n\n\tif (arg3 !== undefined) {\n\t\tcallback(arg1, arg2, arg3);\n\t\treturn;\n\t}\n\tif (arg2 !== undefined) {\n\t\tcallback(arg1, arg2);\n\t\treturn;\n\t}\n\tcallback(arg1);\n};\n\nconst addClass = (element, className) => {\n\tif (supportsClassList) {\n\t\telement.classList.add(className);\n\t\treturn;\n\t}\n\telement.className += (element.className ? \" \" : \"\") + className;\n};\n\nconst removeClass = (element, className) => {\n\tif (supportsClassList) {\n\t\telement.classList.remove(className);\n\t\treturn;\n\t}\n\telement.className = element.className.\n\t\treplace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").\n\t\treplace(/^\\s+/, \"\").\n\t\treplace(/\\s+$/, \"\");\n};\n\nconst addTempImage = (element) => {\n element.llTempImage = document.createElement(\"IMG\");\n};\n\nconst deleteTempImage = (element) => {\n delete element.llTempImage;\n};\n\nconst getTempImage = (element) => element.llTempImage;\n\nconst unobserve = (element, instance) => {\n if (!instance) return;\n const observer = instance._observer;\n if (!observer) return;\n observer.unobserve(element);\n};\n\nconst resetObserver = (observer) => {\n observer.disconnect();\n};\n\nconst unobserveEntered = (element, settings, instance) => {\n if (settings.unobserve_entered) unobserve(element, instance);\n};\n\nconst updateLoadingCount = (instance, delta) => {\n if (!instance) return;\n instance.loadingCount += delta;\n};\n\nconst decreaseToLoadCount = (instance) => {\n if (!instance) return;\n instance.toLoadCount -= 1;\n};\n\nconst setToLoadCount = (instance, value) => {\n if (!instance) return;\n instance.toLoadCount = value;\n};\n\nconst isSomethingLoading = (instance) => instance.loadingCount > 0;\n\nconst haveElementsToLoad = (instance) => instance.toLoadCount > 0;\n\nconst getSourceTags = (parentTag) => {\n let sourceTags = [];\n for (let i = 0, childTag; (childTag = parentTag.children[i]); i += 1) {\n if (childTag.tagName === \"SOURCE\") {\n sourceTags.push(childTag);\n }\n }\n return sourceTags;\n};\n\nconst forEachPictureSource = (element, fn) => {\n const parent = element.parentNode;\n if (!parent || parent.tagName !== \"PICTURE\") {\n return;\n }\n let sourceTags = getSourceTags(parent);\n sourceTags.forEach(fn);\n};\n\nconst forEachVideoSource = (element, fn) => {\n let sourceTags = getSourceTags(element);\n sourceTags.forEach(fn);\n};\n\nconst attrsSrc = [SRC];\nconst attrsSrcPoster = [SRC, POSTER];\nconst attrsSrcSrcsetSizes = [SRC, SRCSET, SIZES];\nconst attrsData = [DATA];\n\nconst hasOriginalAttrs = (element) => !!element[ORIGINALS];\nconst getOriginalAttrs = (element) => element[ORIGINALS];\nconst deleteOriginalAttrs = (element) => delete element[ORIGINALS];\n\n// ## SAVE ##\n\nconst setOriginalsObject = (element, attributes) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n const originals = {};\n attributes.forEach((attribute) => {\n originals[attribute] = element.getAttribute(attribute);\n });\n element[ORIGINALS] = originals;\n};\n\nconst saveOriginalBackgroundStyle = (element) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n element[ORIGINALS] = { backgroundImage: element.style.backgroundImage };\n};\n\n// ## RESTORE ##\n\nconst setOrResetAttribute = (element, attrName, value) => {\n if (!value) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst restoreOriginalAttrs = (element, attributes) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n attributes.forEach((attribute) => {\n setOrResetAttribute(element, attribute, originals[attribute]);\n });\n};\n\nconst restoreOriginalBgImage = (element) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n element.style.backgroundImage = originals.backgroundImage;\n};\n\nconst manageApplied = (element, settings, instance) => {\n addClass(element, settings.class_applied);\n setStatus(element, statusApplied);\n // Instance is not provided when loading is called from static class\n if (!instance) return;\n if (settings.unobserve_completed) {\n // Unobserve now because we can't do it on load\n unobserve(element, settings);\n }\n safeCallback(settings.callback_applied, element, instance);\n};\n\nconst manageLoading = (element, settings, instance) => {\n addClass(element, settings.class_loading);\n setStatus(element, statusLoading);\n // Instance is not provided when loading is called from static class\n if (!instance) return;\n updateLoadingCount(instance, +1);\n safeCallback(settings.callback_loading, element, instance);\n};\n\nconst setAttributeIfValue = (element, attrName, value) => {\n if (!value) {\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst setImageAttributes = (element, settings) => {\n setAttributeIfValue(element, SIZES, getData(element, settings.data_sizes));\n setAttributeIfValue(element, SRCSET, getData(element, settings.data_srcset));\n setAttributeIfValue(element, SRC, getData(element, settings.data_src));\n};\n\nconst setSourcesImg = (imgEl, settings) => {\n forEachPictureSource(imgEl, (sourceTag) => {\n setOriginalsObject(sourceTag, attrsSrcSrcsetSizes);\n setImageAttributes(sourceTag, settings);\n });\n setOriginalsObject(imgEl, attrsSrcSrcsetSizes);\n setImageAttributes(imgEl, settings);\n};\n\nconst setSourcesIframe = (iframe, settings) => {\n setOriginalsObject(iframe, attrsSrc);\n setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src));\n};\n\nconst setSourcesVideo = (videoEl, settings) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n setOriginalsObject(sourceEl, attrsSrc);\n setAttributeIfValue(sourceEl, SRC, getData(sourceEl, settings.data_src));\n });\n setOriginalsObject(videoEl, attrsSrcPoster);\n\n setAttributeIfValue(videoEl, POSTER, getData(videoEl, settings.data_poster));\n setAttributeIfValue(videoEl, SRC, getData(videoEl, settings.data_src));\n videoEl.load();\n};\n\nconst setSourcesObject = (object, settings) => {\n setOriginalsObject(object, attrsData);\n setAttributeIfValue(object, DATA, getData(object, settings.data_src));\n};\n\nconst setBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg);\n const bgHiDpiValue = getData(element, settings.data_bg_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue) return;\n element.style.backgroundImage = `url(\"${bgDataValue}\")`;\n getTempImage(element).setAttribute(SRC, bgDataValue);\n manageLoading(element, settings, instance);\n};\n\n// NOTE: THE TEMP IMAGE TRICK CANNOT BE DONE WITH data-multi-bg\n// BECAUSE INSIDE ITS VALUES MUST BE WRAPPED WITH URL() AND ONE OF THEM\n// COULD BE A GRADIENT BACKGROUND IMAGE\nconst setMultiBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg_multi);\n const bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue) {\n return;\n }\n element.style.backgroundImage = bgDataValue;\n manageApplied(element, settings, instance);\n};\n\nconst setSourcesFunctions = {\n IMG: setSourcesImg,\n IFRAME: setSourcesIframe,\n VIDEO: setSourcesVideo,\n OBJECT: setSourcesObject\n};\n\nconst setSourcesNative = (element, settings) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n};\n\nconst setSources = (element, settings, instance) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n manageLoading(element, settings, instance);\n};\n\nconst elementsWithLoadEvent = [\"IMG\", \"IFRAME\", \"VIDEO\", \"OBJECT\"];\nconst hasLoadEvent = (element) => elementsWithLoadEvent.indexOf(element.tagName) > -1;\n\nconst checkFinish = (settings, instance) => {\n if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) {\n safeCallback(settings.callback_finish, instance);\n }\n};\n\nconst addEventListener = (element, eventName, handler) => {\n element.addEventListener(eventName, handler);\n element.llEvLisnrs[eventName] = handler;\n};\n\nconst removeEventListener = (element, eventName, handler) => {\n element.removeEventListener(eventName, handler);\n};\n\nconst hasEventListeners = (element) => {\n return !!element.llEvLisnrs;\n};\n\nconst addEventListeners = (element, loadHandler, errorHandler) => {\n if (!hasEventListeners(element)) element.llEvLisnrs = {};\n const loadEventName = element.tagName === \"VIDEO\" ? \"loadeddata\" : \"load\";\n addEventListener(element, loadEventName, loadHandler);\n addEventListener(element, \"error\", errorHandler);\n};\n\nconst removeEventListeners = (element) => {\n if (!hasEventListeners(element)) {\n return;\n }\n const eventListeners = element.llEvLisnrs;\n for (let eventName in eventListeners) {\n const handler = eventListeners[eventName];\n removeEventListener(element, eventName, handler);\n }\n delete element.llEvLisnrs;\n};\n\nconst doneHandler = (element, settings, instance) => {\n deleteTempImage(element);\n updateLoadingCount(instance, -1);\n decreaseToLoadCount(instance);\n removeClass(element, settings.class_loading);\n if (settings.unobserve_completed) {\n unobserve(element, instance);\n }\n};\n\nconst loadHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_loaded);\n setStatus(element, statusLoaded);\n safeCallback(settings.callback_loaded, element, instance);\n if (!goingNative) checkFinish(settings, instance);\n};\n\nconst errorHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_error);\n setStatus(element, statusError);\n safeCallback(settings.callback_error, element, instance);\n if (!goingNative) checkFinish(settings, instance);\n};\n\nconst addOneShotEventListeners = (element, settings, instance) => {\n const elementToListenTo = getTempImage(element) || element;\n if (hasEventListeners(elementToListenTo)) {\n // This happens when loading is retried twice\n return;\n }\n const _loadHandler = (event) => {\n loadHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n const _errorHandler = (event) => {\n errorHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n addEventListeners(elementToListenTo, _loadHandler, _errorHandler);\n};\n\nconst loadBackground = (element, settings, instance) => {\n addTempImage(element);\n addOneShotEventListeners(element, settings, instance);\n saveOriginalBackgroundStyle(element);\n setBackground(element, settings, instance);\n setMultiBackground(element, settings, instance);\n};\n\nconst loadRegular = (element, settings, instance) => {\n addOneShotEventListeners(element, settings, instance);\n setSources(element, settings, instance);\n};\n\nconst load = (element, settings, instance) => {\n if (hasLoadEvent(element)) {\n loadRegular(element, settings, instance);\n } else {\n loadBackground(element, settings, instance);\n }\n};\n\nconst loadNative = (element, settings, instance) => {\n element.setAttribute(\"loading\", \"lazy\");\n addOneShotEventListeners(element, settings, instance);\n setSourcesNative(element, settings);\n setStatus(element, statusNative);\n};\n\nconst removeImageAttributes = (element) => {\n element.removeAttribute(SRC);\n element.removeAttribute(SRCSET);\n element.removeAttribute(SIZES);\n};\n\nconst resetSourcesImg = (element) => {\n forEachPictureSource(element, (sourceTag) => {\n removeImageAttributes(sourceTag);\n });\n removeImageAttributes(element);\n};\n\nconst restoreImg = (imgEl) => {\n forEachPictureSource(imgEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes);\n });\n restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes);\n};\n\nconst restoreVideo = (videoEl) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrc);\n });\n restoreOriginalAttrs(videoEl, attrsSrcPoster);\n videoEl.load();\n};\n\nconst restoreIframe = (iframeEl) => {\n restoreOriginalAttrs(iframeEl, attrsSrc);\n};\n\nconst restoreObject = (objectEl) => {\n restoreOriginalAttrs(objectEl, attrsData);\n};\n\nconst restoreFunctions = {\n IMG: restoreImg,\n IFRAME: restoreIframe,\n VIDEO: restoreVideo,\n OBJECT: restoreObject\n};\n\nconst restoreAttributes = (element) => {\n const restoreFunction = restoreFunctions[element.tagName];\n if (!restoreFunction) {\n restoreOriginalBgImage(element);\n return;\n }\n restoreFunction(element);\n};\n\nconst resetClasses = (element, settings) => {\n if (hasEmptyStatus(element) || hasStatusNative(element)) {\n return;\n }\n removeClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n removeClass(element, settings.class_applied);\n removeClass(element, settings.class_loading);\n removeClass(element, settings.class_loaded);\n removeClass(element, settings.class_error);\n};\n\nconst restore = (element, settings) => {\n restoreAttributes(element);\n resetClasses(element, settings);\n resetStatus(element);\n deleteOriginalAttrs(element);\n};\n\nconst cancelLoading = (element, entry, settings, instance) => {\n if (!settings.cancel_on_exit) return;\n if (!hasStatusLoading(element)) return;\n if (element.tagName !== \"IMG\") return; //Works only on images\n removeEventListeners(element);\n resetSourcesImg(element);\n restoreImg(element);\n removeClass(element, settings.class_loading);\n updateLoadingCount(instance, -1);\n resetStatus(element);\n safeCallback(settings.callback_cancel, element, entry, instance);\n};\n\nconst onEnter = (element, entry, settings, instance) => {\n const dontLoad = hadStartedLoading(element); /* Save status \n before setting it, to prevent loading it again. Fixes #526. */\n setStatus(element, statusEntered);\n addClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n unobserveEntered(element, settings, instance);\n safeCallback(settings.callback_enter, element, entry, instance);\n if (dontLoad) return;\n load(element, settings, instance);\n};\n\nconst onExit = (element, entry, settings, instance) => {\n if (hasEmptyStatus(element)) return; //Ignore the first pass, at landing\n addClass(element, settings.class_exited);\n cancelLoading(element, entry, settings, instance);\n safeCallback(settings.callback_exit, element, entry, instance);\n};\n\nconst tagsWithNativeLazy = [\"IMG\", \"IFRAME\", \"VIDEO\"];\n\nconst shouldUseNative = (settings) =>\n settings.use_native && \"loading\" in HTMLImageElement.prototype;\n\nconst loadAllNative = (elements, settings, instance) => {\n elements.forEach((element) => {\n if (tagsWithNativeLazy.indexOf(element.tagName) === -1) {\n return;\n }\n loadNative(element, settings, instance);\n });\n setToLoadCount(instance, 0);\n};\n\nconst isIntersecting = (entry) => entry.isIntersecting || entry.intersectionRatio > 0;\n\nconst getObserverSettings = (settings) => ({\n root: settings.container === document ? null : settings.container,\n rootMargin: settings.thresholds || settings.threshold + \"px\"\n});\n\nconst intersectionHandler = (entries, settings, instance) => {\n entries.forEach((entry) =>\n isIntersecting(entry)\n ? onEnter(entry.target, entry, settings, instance)\n : onExit(entry.target, entry, settings, instance)\n );\n};\n\nconst observeElements = (observer, elements) => {\n elements.forEach((element) => {\n observer.observe(element);\n });\n};\n\nconst updateObserver = (observer, elementsToObserve) => {\n resetObserver(observer);\n observeElements(observer, elementsToObserve);\n};\n\nconst setObserver = (settings, instance) => {\n if (!supportsIntersectionObserver || shouldUseNative(settings)) {\n return;\n }\n instance._observer = new IntersectionObserver((entries) => {\n intersectionHandler(entries, settings, instance);\n }, getObserverSettings(settings));\n};\n\nconst toArray = (nodeSet) => Array.prototype.slice.call(nodeSet);\n\nconst queryElements = (settings) =>\n settings.container.querySelectorAll(settings.elements_selector);\n\nconst excludeManagedElements = (elements) => toArray(elements).filter(hasEmptyStatus);\n\nconst hasError = (element) => hasStatusError(element);\nconst filterErrorElements = (elements) => toArray(elements).filter(hasError);\n\nconst getElementsToLoad = (elements, settings) =>\n excludeManagedElements(elements || queryElements(settings));\n\nconst retryLazyLoad = (settings, instance) => {\n const errorElements = filterErrorElements(queryElements(settings));\n errorElements.forEach(element => {\n removeClass(element, settings.class_error);\n resetStatus(element);\n });\n instance.update();\n};\n\nconst setOnlineCheck = (settings, instance) => {\n if (!runningOnBrowser) {\n return;\n }\n window.addEventListener(\"online\", () => {\n retryLazyLoad(settings, instance);\n });\n};\n\nconst LazyLoad = function (customSettings, elements) {\n const settings = getExtendedSettings(customSettings);\n this._settings = settings;\n this.loadingCount = 0;\n setObserver(settings, this);\n setOnlineCheck(settings, this);\n this.update(elements);\n};\n\nLazyLoad.prototype = {\n update: function (givenNodeset) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(givenNodeset, settings);\n setToLoadCount(this, elementsToLoad.length);\n\n if (isBot || !supportsIntersectionObserver) {\n this.loadAll(elementsToLoad);\n return;\n }\n if (shouldUseNative(settings)) {\n loadAllNative(elementsToLoad, settings, this);\n return;\n }\n\n updateObserver(this._observer, elementsToLoad);\n },\n\n destroy: function () {\n // Observer\n if (this._observer) {\n this._observer.disconnect();\n }\n // Clean custom attributes on elements\n queryElements(this._settings).forEach((element) => {\n deleteOriginalAttrs(element);\n });\n // Delete all internal props\n delete this._observer;\n delete this._settings;\n delete this.loadingCount;\n delete this.toLoadCount;\n },\n\n loadAll: function (elements) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(elements, settings);\n elementsToLoad.forEach((element) => {\n unobserve(element, this);\n load(element, settings, this);\n });\n },\n\n restoreAll: function() {\n const settings = this._settings;\n queryElements(settings).forEach((element) => {\n restore(element, settings);\n });\n }\n};\n\nLazyLoad.load = (element, customSettings) => {\n const settings = getExtendedSettings(customSettings);\n load(element, settings);\n};\n\nLazyLoad.resetStatus = (element) => {\n resetStatus(element);\n};\n\n// Automatic instances creation if required (useful for async script loading)\nif (runningOnBrowser) {\n autoInitialize(LazyLoad, window.lazyLoadOptions);\n}\n\nexport { LazyLoad as default };\n","import LazyLoad, { ILazyLoadInstance } from 'vanilla-lazyload'\n\nexport let lazyLoadInstance: ILazyLoadInstance | null = null\n// Only initialize it one time for the entire application\nif (typeof window !== 'undefined' && !lazyLoadInstance) {\n lazyLoadInstance = new LazyLoad()\n}\n","import styled from 'styled-components'\n\nexport const StyledSocialLinkPreview = styled.div`\n .link-info-container {\n padding: 0.5rem 1rem;\n background: #f4faff;\n }\n .link-image-wrapper {\n position: relative;\n overflow: hidden;\n width: 100%;\n padding-top: 56.25%;\n &.fetching {\n background: lightgray;\n }\n .loading-spinner {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n .link-image {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n }\n }\n a {\n text-decoration: none;\n }\n &[data-is-marrybaby='true'] {\n overflow: hidden;\n border-radius: 1rem;\n }\n`\n","import { MediaQueries } from 'misc/utils'\nimport { ThemeProps } from 'src/misc/theme'\nimport styled from 'styled-components'\n\nexport const StyledCardPost = styled.div`\n position: relative;\n margin-bottom: 0;\n background: white;\n border-radius: 6px;\n\n .post-author {\n padding-top: 1rem;\n padding-right: 2rem;\n &.with-popover {\n padding-right: 2.6rem;\n }\n .author-avatar-wrapper {\n width: 40px;\n height: 40px;\n font-size: 20px;\n ${MediaQueries.mbDown} {\n width: 32px;\n height: 32px;\n font-size: 16px;\n }\n }\n }\n .image-preview-wrapper,\n .link-preview-wrapper {\n width: 100%;\n &[data-is-reply='true'] {\n padding-right: 1rem;\n padding-left: 1rem;\n }\n }\n .post-reaction {\n background: none;\n border-radius: 0 0 6px 6px;\n }\n &[data-is-reply='true'] {\n > .post-author .author-avatar-wrapper {\n width: 20px;\n height: 20px;\n font-size: 10px;\n }\n }\n &[data-is-reply='false'] {\n border: 1px solid #e4e8ec;\n }\n .expert-wrapper {\n width: 100%;\n }\n &[data-has-booking='true'] {\n display: grid;\n .post-author {\n background-color: ${(props: ThemeProps) => props.theme.colors.blue50};\n }\n .btn-wrapper {\n padding: 0 16px;\n .btn-booking {\n width: 100%;\n margin: 12px 0;\n }\n }\n }\n\n .comment-reply-wrapper {\n padding: 0 1rem;\n .more-cmt {\n .chevron-right {\n height: 1rem;\n width: 1rem;\n vertical-align: middle;\n }\n }\n }\n .top-divider {\n border-color: #e4e8ec;\n }\n .popover {\n position: absolute;\n top: 1.5rem;\n right: 1rem;\n .popover-menu__btn {\n display: flex;\n width: 1rem;\n height: 1rem;\n align-items: center;\n justify-content: center;\n padding: 0;\n background: transparent;\n\n &:hover {\n background-color: transparent;\n }\n\n .popover-menu__content {\n &.--position-bottom {\n &.--align-end {\n &::before {\n right: 12.5px;\n }\n }\n }\n }\n }\n }\n\n &[data-is-marrybaby='true'] {\n &[data-is-reply='false'] {\n border: none;\n }\n .image-preview-wrapper,\n .link-preview-wrapper {\n padding-right: 1rem;\n padding-left: 1rem;\n }\n .popover {\n .popover-menu__btn {\n width: 24px;\n height: 24px;\n }\n }\n\n margin-left: 56px;\n ${MediaQueries.mbDown} {\n margin-left: 40px;\n }\n > .post-author {\n margin-left: -56px;\n ${MediaQueries.mbDown} {\n margin-left: -40px;\n }\n .author-info {\n align-items: center;\n display: flex;\n align-items: center;\n .author-info-top {\n width: 100%;\n }\n .author-info-text-wrapper {\n justify-content: space-between;\n }\n }\n .author-avatar-wrapper {\n width: 40px;\n height: 40px;\n font-size: 20px;\n ${MediaQueries.mbDown} {\n width: 24px;\n height: 24px;\n font-size: 12px;\n }\n }\n }\n &[data-is-reply] {\n > .post-author {\n .author-avatar-wrapper {\n width: 40px;\n height: 40px;\n font-size: 20px;\n ${MediaQueries.mbDown} {\n width: 24px;\n height: 24px;\n font-size: 12px;\n }\n }\n }\n }\n\n .comment-reply-wrapper {\n padding-right: 0;\n padding-left: 0;\n }\n .post-reaction {\n &::after {\n position: absolute;\n bottom: 0;\n left: 50%;\n width: calc(100% - 2rem);\n height: 1px;\n background: #f3f3f3;\n content: ' ';\n transform: translateX(-50%);\n }\n }\n .post-content-wrapper {\n padding-top: 0;\n padding-bottom: 0;\n ${MediaQueries.mbDown} {\n padding-left: 0.5rem;\n }\n }\n\n ${MediaQueries.mbDown} {\n margin-bottom: 12px;\n }\n }\n`\n","import { MediaQueries } from 'misc/utils'\nimport styled from 'styled-components'\n\nexport const StyledCardPost = styled.div`\n position: relative;\n margin-bottom: 24px;\n background: white;\n border-radius: 6px;\n\n a {\n text-decoration: none;\n }\n\n ${MediaQueries.mbDown} {\n margin-bottom: 8px;\n }\n &.flat-top {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n .post-pin {\n padding: 0.5rem 1rem;\n border-radius: 6px 6px 0 0;\n }\n .post-author {\n padding-top: 1rem;\n &.comment {\n padding-right: 2.6rem;\n }\n .author-avatar-wrapper {\n width: 40px;\n height: 40px;\n font-size: 20px;\n ${MediaQueries.mbDown} {\n width: 32px;\n height: 32px;\n font-size: 16px;\n }\n }\n }\n .post-content-link-wrapper {\n color: inherit;\n cursor: pointer;\n .post-content-title {\n padding: 1rem 1rem 0;\n word-break: break-word;\n }\n }\n .social-preview-wrapper.has-image {\n margin-bottom: 5px;\n }\n .social-preview-wrapper,\n .image-preview-wrapper,\n .link-preview-wrapper {\n width: 100%;\n &[data-is-reply='true'] {\n padding-right: 1rem;\n padding-left: 1rem;\n }\n }\n .post-topics {\n padding: 0 1rem;\n margin-bottom: 1rem;\n }\n\n .post-reaction {\n background: none;\n border-radius: 0 0 6px 6px;\n &.hide-top-border {\n ::before {\n display: none;\n }\n }\n }\n .most-engaging-wrapper {\n padding: 1rem;\n cursor: pointer;\n .author-avatar-wrapper {\n width: 2rem;\n height: 2rem;\n font-size: 1rem;\n }\n .see-more-comments {\n width: 100%;\n padding: 12px 0 0;\n text-align: unset;\n }\n }\n &[data-most-engaging='true'] {\n border: none;\n ${MediaQueries.mbDown} {\n margin: 1rem;\n border: 1px solid #e4e8ec;\n }\n }\n .top-divider {\n border-color: #e4e8ec;\n }\n .popover {\n position: absolute;\n top: 1.2rem;\n right: 1rem;\n .popover-menu__btn {\n display: flex;\n width: 1.5rem;\n height: 1rem;\n align-items: center;\n justify-content: center;\n padding: 0;\n background: transparent;\n\n &:hover {\n background-color: transparent;\n }\n }\n .popover-menu__content {\n &.--position-bottom {\n &.--align-end {\n &::before {\n right: 12.5px;\n }\n }\n }\n }\n }\n\n &[data-is-marrybaby='true'] {\n border: 1px solid #f3f3f3;\n border-radius: 1rem;\n /* shadow */\n\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.08);\n .image-preview-wrapper,\n .link-preview-wrapper {\n padding-right: 1rem;\n padding-left: 1rem;\n }\n .popover {\n .popover-menu__btn {\n width: 24px;\n height: 24px;\n ${MediaQueries.mbDown} {\n width: 18px;\n height: 18px;\n }\n }\n .popover-menu__content {\n &.--position-bottom {\n &.--align-end {\n &::before {\n right: 1rem;\n }\n width: 350px;\n ${MediaQueries.mbDown} {\n max-width: calc(320px - 2rem);\n }\n }\n }\n }\n }\n .most-engaging-wrapper {\n position: relative;\n padding: 0;\n &::before {\n position: absolute;\n z-index: 5;\n top: 0;\n left: 50%;\n width: calc(100% - 2rem);\n height: 1px;\n background: #f3f3f3;\n content: ' ';\n transform: translateX(-50%);\n }\n }\n ${MediaQueries.mbDown} {\n margin-bottom: 12px;\n }\n }\n`\n"],"names":["pxBySize","xs","small","medium","large","xl","xxl","xxxl","Avatar","_a","_b","type","size","avatarImg","avatarUrl","firstLetter","backgroundColor","onClick","style","className","_c","isAmp","width","height","sizePx","undefined","_d","useState","isImageLoadingError","setIsImageLoadingError","useEffect","img","document","createElement","setAttribute","addEventListener","shouldRenderLetter","React","StyledAvatar","src","Button","color","theme","isDisabled","isBlock","title","icon","children","isLoading","loadingText","dataEventCategory","dataEventAction","dataEventLabel","dataProductChannel","dataProductSku","dataProductBrand","dataProductName","dataProductPrice","dataProductCategory","dataProductPosition","on","dataVarsTracking","rest","__rest","StyledButton","__assign","disabled","evt","buttonHasIcon","buttonTheme","buttonSize","buttonColor","buttonIsLoading","buttonIsBlock","display","justifyContent","alignItems","Fragment","fill","xmlns","viewBox","cx","cy","r","stroke","strokeWidth","StyledLoader","id","d","mask","Heading","as","tag","fontWeight","asTag","StyledHeading","headingFontWeight","headingTag","StyledDropdown","styled","div","templateObject_1","__makeTemplateObject","props","colors","gray200","gray100","blue200","StyledDropdownName","templateObject_2","primaryBase","StyledDropdownList","ul","templateObject_3","white","StyledDropdownOption","li","templateObject_4","StyledIcon","templateObject_5","StyledDropdownLabel","templateObject_6","StyledPopup","MediaQueries","mbDown","mbUp","StyledPopupWrapper","Popup","closeIcon","isOpen","onClose","_e","enableAnimation","concat","parse_1","str","options","TypeError","obj","dec","decode","index","length","eqIdx","indexOf","endIdx","lastIndexOf","key","slice","trim","val","charCodeAt","tryDecode","serialize_1","name","opt","enc","encode","fieldContentRegExp","test","value","maxAge","isNaN","isFinite","Math","floor","domain","path","expires","__toString","call","Date","isDate","valueOf","toUTCString","httpOnly","secure","priority","toLowerCase","sameSite","Object","prototype","toString","decodeURIComponent","encodeURIComponent","e","factory","this","charMap","JSON","parse","locales","replace","string","Error","locale","replacement","slug","normalize","split","reduce","result","ch","appendChar","remove","strict","lower","extend","customMap","assign","module","exports","PATHS","BASE_API_PATH","PROFILE","SEARCH_USER","FETCH_PREVIEW","FETCH_POST_OR_TOPIC","POST","LIST","DETAIL_BY_ID_OR_SLUG","CREATE","LIKE","DELETE","REPORT","UPDATE","FOLLOW","CREATE_ARTICLE_COMMENT","COMMENT","REPLY","UNLIKE","IMAGE_UPLOAD","COMMUNITY","JOIN","LEAVE","TOPIC","HEALTH_TOOLS","SUBOTS","SUGGESTED_POSTS","BOOKMARK","UPLOAD_IMAGE","CARE_PATHS","GET_DOCTOR_INFO","GET_HOSPITAL_INFO","DISCOVER_PATHS","ADMIN_PATHS","DefaultComponentGlobalContextData","env","isMarryBaby","togetherBasePath","router","basePath","asPath","TogetherComponentGlobalContext","createContext","data","action","pushNotifications","s","sanitizeFunction","GlobalData","HEALTH_TOOL_TYPE","DUE_DATE","BMI","BMR","OVULATION","IFRAME","PWG","THR","LOCALE_HEALTH_TOOLS","REPORT_REASON_MAP","report_scam","label","reportReasonText","report_sex","report_offensive","report_violence","report_prohibited","report_spam","report_falseNews","report_other","LOCALISED_SLUGS","ALL","HOSPITAL","SERVICE","DOCTOR","SEARCH","SPECIALTIES","CURRENT","adBlock","articleAdContainer","headerContainerHome","headerContainerPopup","headerContainerPopupSUbLevel","menuSearchInputPopup","menuSearchInputDisplayIcon","menuSearchPopup","description","LINKEDIN","FACEBOOK","INSTAGRAM","TWITTER","YOUTUBE","ZALO","moderator","text","fid","background","admin","expert","sponsor","ambassador","domainLocales","domainLocalesMarryBaby","process","NEXT_PUBLIC_DEPLOY_LOCALE","getWebsiteUrlApi","cleanFormatString","url","qIndex","getCurrentBaseUrl","window","location","origin","isStaging","NEXT_PUBLIC_DEPLOY_ENV","getCurrentHref","href","getApiPath","params","query","queryString","keys","map","join","togetherBaseApiUrl","formattedPath","formatString","_locale","website_url","String","includes","getCarePath","careBaseApiUrl","stringFormat","convertApiOptionsToRequestInit","opts","FormData","body","stringify","callApi","method","skipEncodeURI","fetch","encodeURI","then","json","res","sent","console","log","err_1","status","response","statusText","callApiWithAuth","reqCookie","__awaiter","parsedCookie","cookieParser","token","cookie","getCookie","headers","Authorization","callApiWithAdminAuth","updateQueryStringParameter","uri","re","RegExp","separator","match","getUrlToSignUp","currentLocation","startsWith","publicSSO","originalRedirectUrl","k","getUrlToSSOWithReturnUrl","slugifiedNameWithId","slugify","getCareDoctorUrl","getCareHospitalUrl","formatAuthor","author","displayName","display_name","avatar","thumbnailAvatar","avatar_thumbnail","profileUrl","profile_url","metaTag","meta_tag","formatArticleExpert","ID","specialty","permalink","formatArticle","article","postName","post_name","formatSponsor","isSponsored","is_sponsored","postTitle","post_title","postModified","post_modified","postDate","post_date","modifiedTime","modified_time","featureImage","image","featureImageMobile","image_medium","featureImageMobileXs","image_thumbnail","reviewer","reviewed_by","articleReviewed","reviewed","formatUserProfile","editor","fact_check","category","formatCategory","postContent","post_content","sections","categories","sources","excerpt","user","role","logo","link","formatReviewedCategory","termId","term_id","categoryName","cat_name","iconUrl","slugName","category_nicename","parent","childCates","child_cates","childCate","colorFeatureImage","color_feature_image","imageColor","image_color","textColor","text_color","catParent","cat_parent","reviewedBy","reviewedDate","reviewed_date","faqs","faq","formatFaqsCategory","content","formatHealthTool","healthTool","subtitle","formatCommunity","community","topicCount","topics_count","postCount","posts_count","memberCount","members_count","thumbnail","coverImage","cover_image","mobileCoverImage","mobile_cover_image","joined","isActive","is_active","Boolean","mappedCategoryId","mapped_category_id","discoverCategory","discover_category","categoryId","category_id","isHidden","is_hidden","formatTopic","topic","count_posts","count_members","communityId","communitySlug","communityName","order","formatPost","post","topics","_f","username","_g","user_name","email","_h","_j","_k","_l","_o","_m","_p","partnerId","_q","partner_id","_r","_s","doctorId","_t","doctor_id","_u","hospitalId","_v","hospital_id","_w","previewUrl","preview_title","preview_link","preview_image","preview_description","createdAt","created_at","scheduleDateTime","schedule_datetime","photos","images","commentsCount","comments_count","likesCount","likes_count","isPin","is_pin","pinDate","pin_date","liked","bookmarked","mentions","commented","introUrl","intro_url","bannerImage","banner_image","formatComment","countLikes","countReplies","replies_count","createdTime","created_time","replies","mentionedUser","mentioned","_x","_y","_z","_0","_1","_2","_3","_4","_5","_6","_7","comparison","assessmentData","tab","condition","risk","suggestion","chartData","chart_data","disclaimer","illustrator","suggestedArticlesLink","suggested_articles_link","categoryInfo","explainersPosts","explainers_posts","subCategories","sub_categories","healthTools","health_tools","tool","pagination","currentPage","current","lastPage","last","total","total_items","notification","time","postId","post_id","fromUser","from_user","toUserId","to_user_id","postSlug","post_slug","community_slug","spotligts","spotlight","small_banner","imageMedium","imageThumbnail","startDate","start_date","endDate","end_date","info","postUrl","post_url","postReviewed","post_reviewed","postPageviews","post_pageviews","postRank","post_rank","frequency","tool_id","topicFrequency","topicId","topic_id","topicName","topic_name","isPinned","toolLink","tool_link","count_likes","count_comments","post_type","community_id","community_name","chatBotId","subot_id","sitewide_banner","turn_off_profile","TogetherAuthConfigContext","StyledLoading","circle","keyframes","CardReactionType","Loading","t","useTranslations","StyledUserAvatar","secondaryBase","mbColors","pink","UserAvatar","isMarryBabyProp","isMarryBabyContext","useContext","tempAvatar","setTempAvatar","Image","onerror","alt","onError","toUpperCase","StyledCardLink","abbreviateNumber","newValue","suffixNum","shortValue","precision","parseFloat","pow","toPrecision","toFixed","StyledCardReactions","lightGray","StyledLeftIcon","StyledRightIcon","StyledText","Text","LabelSortingValue","StyledTagTopic","StyledLabelSortPin","neutral50","tdUp","LabelSortPin","rightLabel","StyledPopoverMenu","StyledTree","gray800","gray500","lightPink","PopoverMenu","toggleButtonContent","position","align","buttonProps","isShow","setIsShow","popoverContent","useRef","isShowRef","focus","clickHandler","contains","target","removeEventListener","v","ref","tabIndex","stopPropagation","setShow","TreePopoverMenu","popoverProps","Tree","setPath","currentData","useMemo","pathItems","forEach","pathItem","list","Number","subTree","getCurrentDataFromPath","isShowheader","p","gray600","jsxRenderer","Array","isArray","item","selected","handleItemClick","blue50","StyledProfileImage","StyledTitleContainer","span","neutral300","gray400","templateObject_7","StyledExperienceList","templateObject_8","PopupDoctor","isMobile","doctorInfo","setDoctorInfo","setIsLoading","_data","doctor","error","experiences","specialtiesList","specialties","formattedExperiences","experience","filter","idList","useId","CloseLight","AvatarDefault","ReviewerMedical","organization","rel","textDecoration","paddingBottom","i","year","renderExperienceText","paddingTop","StyledItem","ReviewerIconMap","edtior","medical","PopupExpert","expertId","expertInfo","setExpertInfo","user_id","discoverBaseApiUrl","getDiscoverApiPath","organisation_url","organisation","PopupHospital","hospitalInfo","setHospitalInfo","hospital_branch_id","branch","formatSpecialties","about","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","my","code","formatDistance","count","tokenValue","addSuffix","weekStartsOn","firstWeekContainsDate","StyledCardAuthor","blue800","green400","red400","yellow800","teal400","cobalt","StyledAvatarContainer","AuthorLabelTextMapping","guide","influencer","vi","ms","enUS","th","zhTW","hi","fromCodePoint","astralCodePoint","fromCharCode","getCodePoint","codePointAt","input","ALPHA_INDEX","CHAR_INDEX","CHAR_S_INDEX","XmlEntities","charAt","parseInt","substr","surrogate_pairs_1","encodeNonUTF","strLength","c","alpha","highSurrogateFrom","highSurrogateTo","encodeNonASCII","XmlEntities_1","HTML_ALPHA","HTML_CODES","alphaIndex","numIndex","a","Html4Entities","entity","chr","cc","Html4Entities_1","ENTITIES","DECODE_ONLY_ENTITIES","charIndex","chr2","addChar","charInfo","createIndexes","Html5Entities","Html5Entities_1","xml_entities_1","html4_entities_1","html5_entities_1","AllHtmlEntities","entities","Entities","innertext_1","html","chunk","trimmedChunk","EncodeUrlRegexMap","BadWordRegex","getAnchorHtml","trimStartIndex","trimStart","trimEndIndex","trimEnd","preSpaces","substring","trimmedText","postSpaces","getMentionIdsFromString","disableLimit","p1","push","from","Set","getUrlsFromEditorString","__spreadArray","p2","getUrlsFromString","cleanUrl","escapeRegExp","removeBannedWordWrapper","ALLOW_DOMAIN_URL","reformatUrl","highlightBadWords","bannedWords","filteredBanedWords","banned","m1","escape","innerText","outerHTML","StyledCreatePostDescription","StyledEditorContainer","primaryHover","red700","ReactQuill","getCaretCharacterOffsetWithin","element","caretOffset","getSelection","sel","rangeCount","range","getRangeAt","preCaretRange","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","calculateChildNodeOffset","cloneContents","childNodes","parentMockAElement","parentElement","closest","lastNodeValue","nodeValue","node","isLast","nodeType","Node","ELEMENT_NODE","TEXT_NODE","Promise","n","QuillRes","default","Quill","PreserveWhiteSpace","quill","container","whiteSpace","register","Inline","import","MockABlot","__extends","_super","create","setNodeConfigurations","formats","getAttribute","blotName","tagName","MentionBlot","inputModify","formatUrl","removedFormat","originalName","nameText","splittedName_1","cutoffIndex","findIndex","_","nameSection","restText","descriptionWithWrappedAnchor","w","innerHTML","child","firstChild","removeEdittedBannedWord","lowercase","addHttps","wrapAnchorAroundUrls","urls","invalidUrls_1","jsUrl_1","URL","some","o","endsWith","u","invalidUrls","CustomToolbar","onAddLink","preventDefault","LinkToolInputPopover","onAddUrl","URL_WARN_MAP","urlValue","setUrlValue","textValue","setTextValue","urlWarnType","setUrlWarnType","isValid","Input","placeholder","onChange","trimmedUrl","jsUrl_2","protocol","checkUrlValid","b","Symbol","for","f","g","h","l","m","q","x","y","z","$$typeof","A","NODE_ENV","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","typeOf","object","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isConcurrentMode","isAsyncMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","require$$0","require$$1","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","propertyIsEnumerable","toObject","objectAssign","test1","getOwnPropertyNames","test2","order2","test3","letter","err","shouldUseNative","source","symbols","to","arguments","has","Function","bind","printWarning","ReactPropTypesSecret","loggedTypeFailures","message","checkPropTypes","typeSpecs","values","componentName","getStack","typeSpecName","ex","stack","resetWarningCache","emptyFunctionThatReturnsNull","emptyFunction","emptyFunctionWithReset","extendStatics","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","number","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","propName","propFullName","PropTypeError","propValue","getPropType","elementType","ReactIs","instanceOf","expectedClass","expectedClassName","constructor","isNode","objectOf","propType","oneOf","expectedValues","validate","is","valuesString","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","isSymbol","PropTypes","shim","getShim","require$$2","commonjsGlobal","setPrototypeOf","__proto__","__","apply","__createBinding","k2","defineProperty","enumerable","get","__setModuleDefault","__importStar","mod","__esModule","__importDefault","fast_deep_equal_1","equal","flags","normalizeHtml","_default","ContentEditable","_this","lastHtml","el","innerRef","createRef","getEl","emitChange","originalEvt","render","onInput","onBlur","onKeyUp","onKeyDown","contentEditable","dangerouslySetInnerHTML","__html","shouldComponentUpdate","nextProps","componentDidUpdate","createTextNode","appendChild","isTargetFocused","activeElement","createRange","setStart","collapse","removeAllRanges","addRange","HTMLElement","replaceCaret","propTypes","Component","StyledCreatePostTitle","StyledTopicSelectList","neutral100","StyledCreateNewPost","StyledPopupFrame","PopupFrame","heading","IconClose","StyledPopupDanger","StyledInputCommentBar","sizes","fwRegular","MainInputTriggerContext","StyledShare","ShareBox","shareUrl","copied","setCopied","copyToClipboard","select","execCommand","removeChild","navigator","share","catch","socialList","getSocialList","social","readOnly","onFocus","StyledSharePopup","StyledSubmitReportForm","StyledPostContent","StyledPostImagePreview","StyledImagePreviewPopup","StyledImagePreviewContainer","StyledImagePreviewTopbar","StyledImagePreviewWrapper","StyledArrowWrapper","StyledCircleArrow","runningOnBrowser","isBot","userAgent","supportsIntersectionObserver","supportsClassList","isHiDpi","devicePixelRatio","defaultSettings","elements_selector","threshold","thresholds","data_src","data_srcset","data_sizes","data_bg","data_bg_hidpi","data_bg_multi","data_bg_multi_hidpi","data_poster","class_applied","class_loading","class_loaded","class_error","class_entered","class_exited","unobserve_completed","unobserve_entered","cancel_on_exit","callback_enter","callback_exit","callback_applied","callback_loading","callback_loaded","callback_error","callback_finish","callback_cancel","use_native","getExtendedSettings","customSettings","createInstance","classObj","event","eventString","instance","CustomEvent","detail","createEvent","initCustomEvent","dispatchEvent","SRC","ORIGINALS","getData","attribute","getStatus","setStatus","attrName","removeAttribute","setData","resetStatus","hasEmptyStatus","hasStatusNative","statusesAfterLoading","safeCallback","callback","arg1","arg2","arg3","addClass","classList","add","removeClass","getTempImage","llTempImage","unobserve","observer","_observer","updateLoadingCount","delta","loadingCount","setToLoadCount","toLoadCount","getSourceTags","parentTag","sourceTags","childTag","forEachPictureSource","fn","parentNode","forEachVideoSource","attrsSrc","attrsSrcPoster","attrsSrcSrcsetSizes","attrsData","hasOriginalAttrs","getOriginalAttrs","deleteOriginalAttrs","setOriginalsObject","attributes","originals","restoreOriginalAttrs","setOrResetAttribute","manageLoading","settings","setAttributeIfValue","setImageAttributes","setMultiBackground","bg1xValue","bgHiDpiValue","bgDataValue","backgroundImage","manageApplied","setSourcesFunctions","IMG","imgEl","sourceTag","iframe","VIDEO","videoEl","sourceEl","load","OBJECT","elementsWithLoadEvent","checkFinish","isSomethingLoading","haveElementsToLoad","eventName","handler","llEvLisnrs","hasEventListeners","removeEventListeners","eventListeners","doneHandler","deleteTempImage","decreaseToLoadCount","addOneShotEventListeners","elementToListenTo","loadHandler","errorHandler","loadEventName","addEventListeners","goingNative","loadBackground","addTempImage","saveOriginalBackgroundStyle","setBackground","loadRegular","setSourcesFunction","setSources","hasLoadEvent","loadNative","setSourcesNative","removeImageAttributes","restoreImg","restoreFunctions","iframeEl","objectEl","restoreAttributes","restoreFunction","restoreOriginalBgImage","restore","resetClasses","cancelLoading","hasStatusLoading","resetSourcesImg","onEnter","dontLoad","hadStartedLoading","unobserveEntered","tagsWithNativeLazy","HTMLImageElement","intersectionHandler","isIntersecting","intersectionRatio","onExit","setObserver","IntersectionObserver","root","rootMargin","getObserverSettings","toArray","nodeSet","queryElements","querySelectorAll","hasError","hasStatusError","getElementsToLoad","elements","excludeManagedElements","retryLazyLoad","update","LazyLoad","_settings","setOnlineCheck","givenNodeset","elementsToLoad","elementsToObserve","loadAllNative","disconnect","resetObserver","observe","observeElements","loadAll","destroy","restoreAll","optionsItem","autoInitialize","lazyLoadOptions","lazyLoadInstance","StyledSocialLinkPreview","StyledCardPost","miniIcon","hasQuickBooking","handleMakeAppointment","matchedRole","allRoles","find","looselyMatchRole","cleanedTimeDate","getTime","timeText","formatDistanceToNow","timeTextTitle","format","openPopupExpert","setOpenPopupExpert","currentUrl","onAuthorClick","toggleNoScroll","objectFit","lineHeight","loveCount","replyCount","replyPadding","isReplied","onCommentClick","onLikeClick","onCommentCountClick","onShareClick","hideCommentIcon","showingMostEngaging","isMarryBabyReply","reply","marginRight","leftLabel","choices","alignSelf","onImagePickerClick","onInvalidUrlsChange","onPreviewUrlChange","setEditorRef","isReplying","bannedWordsRef","setInvalidUrls","setPreviewUrl","bannedString","currHTML","reactQuillRef","getEditor","debounceInputModify","fetchPreviewData","isFetching","fetchPreviewDataRef","useCallback","debounce","processedInput","_invalidUrls","_previewUrl","imageHandlerRef","toolbarIdRef","random","cachedModules","toolbar","handlers","preserveWhiteSpace","contentEditableCaretPos","handleSelectionChange","newCaretPos","searchData","endText","lastAnchorSymbolIndex","name_1","replaceRange","rect","getBoundingClientRect","getSearchName","searchUser","replaceRangeRef","setFoundUsers","foundUsers","top","left","searchUserPosition","setSearchUserPosition","excludeIds","DOMRect","setSelectTagUserIndex","users","textNodeRect","containerRect","containerRef","styleConfig","bottom","maxHeight","right","setSelectUser","deleteContents","newMention","newPostText","insertNode","foundUsersListRef","selectTagUserIndex","childElement","childRect","offsetTop","scrollTop","onKeyDownCapture","preventKey","insertIndex","newHTML","onChangeSelection","modules","foundUser","onMouseEnter","setIsOpen","setTimeout","ReactDOM","createPortal","defaultParams","Provider","userInfo","togetherUserId","setTogetherUserId","urlData","backupUrl","messages","err_2","err_3","tempName_1","_p1","encodePostUrl","encodeMention","_i","file","isAdmin","resolve","imageFormData","append","require","maxSizeMB","maxWidthOrHeight","useWebWorker","compressed","imageRes","propsParams","isLoggedIn","isFirstInteract","communities_interacted","authActionWrapper","extraParams","deleteCookie","_joinCommunityIds","localStorage","setItem","getItem","_joinTopicIds","_location"],"mappings":"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CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,QAAS,CAAC,MAAO,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAU,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,WAAY,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,aAAc,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,OAAQ,CAAC,UAAW,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,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CAAC,OAAQ,CAAC,OAAQ,CAAC,KAAM,OAAQ,CAAC,OAAQ,CAAC,GAAI,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,OAAQ,CAAC,KAAM,OAAQ,CAAC,OAAQ,CAAC,GAAI,OAAQ,CAAC,UAAW,CAAC,KAAM,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,UAAW,CAAC,KAAM,OAAQ,CAAC,QAAS,CAAC,KAAM,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,QAAS,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,MAAO,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,MAAO,CAAC,QAAS,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,UAAW,CAAC,MAAO,CAAC,UAAW,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,uBAAwB,CAAC,OAAQ,CAAC,iBAAkB,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,KAAM,CAAC,QAAS,CAAC,KAAM,CAAC,OAAQ,CAAC,MAAO,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,KAAM,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,WAAY,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,QAAS,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,YAAa,CAAC,OAAQ,CAAC,cAAe,CAAC,OAAQ,CAAC,kBAAmB,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,WAAY,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,SAAU,CAAC,KAAM,CAAC,SAAU,CAAC,KAAM,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,KAAM,CAAC,MAAO,CAAC,KAAM,CAAC,MAAO,CAAC,YAAa,CAAC,OAAQ,CAAC,MAAO,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,WAAY,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,UAAW,CAAC,QAAS,CAAC,OAAQ,CAAC,KAAM,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,YAAa,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,UAAW,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,KAAM,CAAC,MAAO,CAAC,gBAAiB,CAAC,OAAQ,CAAC,WAAY,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,KAAM,CAAC,QAAS,CAAC,KAAM,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,aAAc,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,cAAe,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,gBAAiB,CAAC,QAAS,CAAC,qBAAsB,CAAC,OAAQ,CAAC,gBAAiB,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,cAAe,CAAC,QAAS,CAAC,WAAY,CAAC,QAAS,CAAC,WAAY,CAAC,OAAQ,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,UAAW,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,eAAgB,CAAC,OAAQ,CAAC,aAAc,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,cAAe,CAAC,OAAQ,CAAC,UAAW,CAAC,QAAS,CAAC,QAAS,CAAC,KAAM,CAAC,UAAW,CAAC,OAAQ,CAAC,OAAQ,CAAC,KAAM,CAAC,OAAQ,CAAC,KAAM,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,KAAM,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,QAAS,CAAC,OAAQ,CAAC,WAAY,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,MAAO,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,UAAW,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,YAAa,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,KAAM,CAAC,QAAS,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,wBAAyB,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,KAAM,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC,iBAAkB,CAAC,OAAQ,CAAC,qBAAsB,CAAC,OAAQ,CAAC,uBAAwB,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,oBAAqB,CAAC,QAAS,CAAC,gBAAiB,CAAC,OAAQ,CAAC,aAAc,CAAC,OAAQ,CAAC,aAAc,CAAC,OAAQ,CAAC,aAAc,CAAC,OAAQ,CAAC,sBAAuB,CAAC,OAAQ,CAAC,iBAAkB,CAAC,OAAQ,CAAC,eAAgB,CAAC,OAAQ,CAAC,qBAAsB,CAAC,QAAS,CAAC,qBAAsB,CAAC,QAAS,CAAC,qBAAsB,CAAC,QAAS,CAAC,kBAAmB,CAAC,OAAQ,CAAC,aAAc,CAAC,OAAQ,CAAC,mBAAoB,CAAC,OAAQ,CAAC,iBAAkB,CAAC,OAAQ,CAAC,kBAAmB,CAAC,OAAQ,CAAC,oBAAqB,CAAC,OAAQ,CAAC,mBAAoB,CAAC,OAAQ,CAAC,kBAAmB,CAAC,OAAQ,CAAC,gBAAiB,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,iBAAkB,CAAC,QAAS,CAAC,kBAAmB,CAAC,OAAQ,CAAC,mBAAoB,CAAC,QAAS,CAAC,gBAAiB,CAAC,OAAQ,CAAC,qBAAsB,CAAC,OAAQ,CAAC,oBAAqB,CAAC,QAAS,CAAC,mBAAoB,CAAC,QAAS,CAAC,mBAAoB,CAAC,QAAS,CAAC,gBAAiB,CAAC,OAAQ,CAAC,iBAAkB,CAAC,QAAS,CAAC,cAAe,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,eAAgB,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,aAAc,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,eAAgB,CAAC,QAAS,CAAC,OAAQ,CAAC,KAAM,CAAC,SAAU,CAAC,QAAS,CAAC,WAAY,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,cAAe,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,KAAM,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,kBAAmB,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,WAAY,CAAC,QAAS,CAAC,cAAe,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,KAAM,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,KAAM,CAAC,QAAS,CAAC,KAAM,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,WAAY,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,KAAM,CAAC,SAAU,CAAC,QAAS,CAAC,WAAY,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,iBAAkB,CAAC,OAAQ,CAAC,iBAAkB,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,gBAAiB,CAAC,OAAQ,CAAC,kBAAmB,CAAC,OAAQ,CAAC,eAAgB,CAAC,OAAQ,CAAC,MAAO,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,UAAW,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,cAAe,CAAC,OAAQ,CAAC,gBAAiB,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,WAAY,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,MAAO,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,MAAO,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,KAAM,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,SAAU,CAAC,OAAQ,CAAC,YAAa,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,KAAM,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,KAAM,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,aAAc,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,aAAc,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,qBAAsB,CAAC,OAAQ,CAAC,eAAgB,CAAC,OAAQ,CAAC,oBAAqB,CAAC,OAAQ,CAAC,iBAAkB,CAAC,OAAQ,CAAC,sBAAuB,CAAC,OAAQ,CAAC,cAAe,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,kBAAmB,CAAC,OAAQ,CAAC,cAAe,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,UAAW,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,UAAW,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,YAAa,CAAC,QAAS,CAAC,cAAe,CAAC,OAAQ,CAAC,YAAa,CAAC,OAAQ,CAAC,aAAc,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,aAAc,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,cAAe,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,gBAAiB,CAAC,QAAS,CAAC,qBAAsB,CAAC,OAAQ,CAAC,gBAAiB,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,cAAe,CAAC,QAAS,CAAC,WAAY,CAAC,QAAS,CAAC,WAAY,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,UAAW,CAAC,QAAS,CAAC,WAAY,CAAC,OAAQ,CAAC,gBAAiB,CAAC,OAAQ,CAAC,UAAW,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,UAAW,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,YAAa,CAAC,QAAS,CAAC,YAAa,CAAC,OAAQ,CAAC,aAAc,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,MAAO,CAAC,MAAO,CAAC,IAAK,CAAC,SAAU,CAAC,OAAQ,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,SAAU,CAAC,OAAQ,CAAC,YAAa,CAAC,OAAQ,CAAC,YAAa,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,WAAY,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,cAAe,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,aAAc,CAAC,KAAM,OAAQ,CAAC,YAAa,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,OAAQ,CAAC,aAAc,CAAC,OAAQ,CAAC,iBAAkB,CAAC,OAAQ,CAAC,aAAc,CAAC,OAAQ,CAAC,WAAY,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,SAAU,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,UAAW,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,eAAgB,CAAC,OAAQ,CAAC,eAAgB,CAAC,OAAQ,CAAC,iBAAkB,CAAC,OAAQ,CAAC,YAAa,CAAC,OAAQ,CAAC,gBAAiB,CAAC,OAAQ,CAAC,kBAAmB,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,WAAY,CAAC,QAAS,CAAC,YAAa,CAAC,OAAQ,CAAC,UAAW,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,UAAW,CAAC,QAAS,CAAC,WAAY,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,QAAS,CAAC,OAAQ,CAAC,mBAAoB,CAAC,OAAQ,CAAC,oBAAqB,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,WAAY,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,QAAS,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC,WAAY,CAAC,KAAM,CAAC,aAAc,CAAC,OAAQ,CAAC,eAAgB,CAAC,OAAQ,CAAC,mBAAoB,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,YAAa,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,aAAc,CAAC,QAAS,CAAC,UAAW,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,mBAAoB,CAAC,OAAQ,CAAC,cAAe,CAAC,OAAQ,CAAC,cAAe,CAAC,OAAQ,CAAC,cAAe,CAAC,OAAQ,CAAC,gBAAiB,CAAC,QAAS,CAAC,gBAAiB,CAAC,OAAQ,CAAC,iBAAkB,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,iBAAkB,CAAC,OAAQ,CAAC,kBAAmB,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,UAAW,CAAC,MAAO,CAAC,UAAW,CAAC,MAAO,CAAC,aAAc,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,aAAc,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,UAAW,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,aAAc,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,aAAc,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,YAAa,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,WAAY,CAAC,MAAO,CAAC,eAAgB,CAAC,KAAM,QAAS,CAAC,gBAAiB,CAAC,MAAO,QAAS,CAAC,eAAgB,CAAC,KAAM,QAAS,CAAC,gBAAiB,CAAC,MAAO,QAAS,CAAC,WAAY,CAAC,MAAO,CAAC,kBAAmB,CAAC,OAAQ,CAAC,mBAAoB,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,cAAe,CAAC,OAAQ,CAAC,eAAgB,CAAC,MAAO,CAAC,oBAAqB,CAAC,QAAS,CAAC,gBAAiB,CAAC,OAAQ,CAAC,gBAAiB,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,KAAM,OAAQ,CAAC,QAAS,CAAC,KAAM,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,SAAU,CAAC,MAAO,QAAS,CAAC,SAAU,CAAC,KAAM,QAAS,CAAC,SAAU,CAAC,MAAO,QAAS,CAAC,SAAU,CAAC,KAAM,QAAS,CAAC,SAAU,CAAC,OAAQ,CAAC,UAAW,CAAC,QAAS,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,KAAM,CAAC,OAAQ,CAAC,KAAM,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,KAAM,CAAC,MAAO,CAAC,KAAM,CAAC,MAAO,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,SAAU,CAAC,OAAQ,CAAC,iBAAkB,CAAC,OAAQ,CAAC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"}
|