@hhgtech/hhg-components 1.19.1 → 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.
Files changed (53) hide show
  1. package/build/care.js +1 -1
  2. package/build/components/atoms/button/index.d.ts +2 -1
  3. package/build/components/atoms/textArea/index.d.ts +2 -2
  4. package/build/components/organisms/userProfileNavigation/index.styled.d.ts +1 -1
  5. package/build/components.js +1 -1
  6. package/build/cookieHelper-2ca633b5.js +2 -0
  7. package/build/{cookieHelper-715ce012.js.map → cookieHelper-2ca633b5.js.map} +1 -1
  8. package/build/esm/care.js +1 -1
  9. package/build/esm/components/atoms/button/index.d.ts +2 -1
  10. package/build/esm/components/atoms/textArea/index.d.ts +2 -2
  11. package/build/esm/components/organisms/userProfileNavigation/index.styled.d.ts +1 -1
  12. package/build/esm/components.js +1 -1
  13. package/build/esm/{cookieHelper-7d235823.js → cookieHelper-c439e940.js} +2 -2
  14. package/build/esm/{cookieHelper-7d235823.js.map → cookieHelper-c439e940.js.map} +1 -1
  15. package/build/esm/{index-ce0d30d6.js → index-39602a38.js} +2 -2
  16. package/build/esm/{index-ce0d30d6.js.map → index-39602a38.js.map} +1 -1
  17. package/build/esm/{index-bca12612.js → index-68af11c4.js} +2 -2
  18. package/build/esm/{index-bca12612.js.map → index-68af11c4.js.map} +1 -1
  19. package/build/esm/{index-251808f6.js → index-784db743.js} +2 -2
  20. package/build/esm/{index-251808f6.js.map → index-784db743.js.map} +1 -1
  21. package/build/esm/{index-b96eff96.js → index-9b7d6029.js} +2 -2
  22. package/build/esm/{index-b96eff96.js.map → index-9b7d6029.js.map} +1 -1
  23. package/build/esm/index.js +1 -1
  24. package/build/esm/index.styled-94e62055.js +2 -0
  25. package/build/{index.styled-f7f39332.js.map → esm/index.styled-94e62055.js.map} +1 -1
  26. package/build/esm/navigation.js +1 -1
  27. package/build/esm/together.js +1 -1
  28. package/build/esm/{types-96975f82.js → types-355af28f.js} +2 -2
  29. package/build/esm/{types-96975f82.js.map → types-355af28f.js.map} +1 -1
  30. package/build/esm/{types-88470211.js → types-50e7bd36.js} +2 -2
  31. package/build/esm/{types-88470211.js.map → types-50e7bd36.js.map} +1 -1
  32. package/build/{index-706ef1ee.js → index-2fc58ef1.js} +2 -2
  33. package/build/{index-706ef1ee.js.map → index-2fc58ef1.js.map} +1 -1
  34. package/build/{index-e3c85851.js → index-47df1eaf.js} +2 -2
  35. package/build/{index-e3c85851.js.map → index-47df1eaf.js.map} +1 -1
  36. package/build/{index-f1d49e51.js → index-9e90ff46.js} +2 -2
  37. package/build/{index-f1d49e51.js.map → index-9e90ff46.js.map} +1 -1
  38. package/build/{index-11db6447.js → index-e8f5d7f5.js} +2 -2
  39. package/build/{index-11db6447.js.map → index-e8f5d7f5.js.map} +1 -1
  40. package/build/index.js +1 -1
  41. package/build/index.styled-e08dcf9a.js +2 -0
  42. package/build/index.styled-e08dcf9a.js.map +1 -0
  43. package/build/navigation.js +1 -1
  44. package/build/together.js +1 -1
  45. package/build/{types-cac53aad.js → types-3a885bbd.js} +2 -2
  46. package/build/{types-cac53aad.js.map → types-3a885bbd.js.map} +1 -1
  47. package/build/{types-b2449d3f.js → types-80aca43e.js} +2 -2
  48. package/build/{types-b2449d3f.js.map → types-80aca43e.js.map} +1 -1
  49. package/package.json +1 -1
  50. package/build/cookieHelper-715ce012.js +0 -2
  51. package/build/esm/index.styled-d0badf62.js +0 -2
  52. package/build/esm/index.styled-d0badf62.js.map +0 -1
  53. package/build/index.styled-f7f39332.js +0 -2
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.styled-d0badf62.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}\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 ...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 {...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 '&lt': '<',\n '&gt': '>',\n '&quot': '\"',\n '&apos': '\\'',\n '&amp': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&apos;': '\\'',\n '&amp;': '&'\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 '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n '\\'': '&apos;',\n '&': '&amp;'\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(/(\\&nbsp;)+/g, ' ')\n .replace(/(\\&amp;)+/g, '&')\n ?.replace(/(\\u200c|&zwnj;)+/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(/(\\&amp;)+/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(/(\\&nbsp;)+/g, ' ')\n // ?.replace(/(\\&amp;)+/g, '&')\n ?.replace(/(\\u200c|&zwnj;)+/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(/(\\&nbsp;)+/g, ' ')\n ?.replace(/(\\u200c|&zwnj;)+/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(/(\\&nbsp;)+/g, ' ')\n ?.replace(/(\\u200c|&zwnj;)+/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, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#039;').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(/&nbsp;|\\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,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAACXBIWXMAACxLAAAsSwGlPZapAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAzTSURBVHgB7Z0JdFTVGce/776ZCQkBElLCksga9kU2FQQRSlGo1AYUKwpuVA91xdZqtVTx1ONyrIpKBesC1AO1WHsiPQcsoIig1oNgEEEMKonsIQkhk2WWd+/X+96YTEK2+2beSJJ5v3Nyst25c9/3v/f7vru8NwAODg4ODg4ODg4ODg4ODvEEgt0sohTwQbb86VJZ+0gQ1Ft+Tzm7WNeOIJZeA/ya0eCGlkspIuYTQC5xvk3TtBz5eynYiH0CLJSGBrEICG9syOC1GZ4BYt0CgAHdgEFrA3GVbPSjhjBgA9ELYPR4PzwCRItUil82GPzrbgV3h3at0Pi1YIhLpQj3QpREJ4DZ62ErgPm9WeaMAv2NW0BzazFwfeeGfCnElGhGQ+S98FYaCRaMf+X54Ft5E7A2ZHyD3oJoa4BMW0REZMaw2POHdAf+yf3AkhPalPFrE/FIiHQEKBs/NQnEOwvbtPENzJFARClWX2hdgN/Qc6rGBwJ6dg5A3y5t2vjV9JZfj4BFrBnGdD10SLX45UNA/88doGkYFwKYSFfUx4orsjgCxBLVkjLNFM/PAYwn4xsIIZTS8WrUBTDyfZCTLEXmjgXq3xU0iDcQb7QSC9QFCC0vKOFiQH+cEV89vxYpnHNlW1lwQWKyasnZI0HPTG3dM91oQE27VLWsupEQz1ctuviKuO39JmhhYqYugDDTrGYZ0BX40O7ggjiGQM1WBhZGACgFloWTpFQOMQjCapXR1EHx7X6sYqsAQzNAHxbn7scqtgpw5QjH/VjFVgEu6QcecLCEbQKgXHgb2gM4OFjCNgHk/q7okeL4f6vYJsDwHkb662AV2wQY1iN+lx6iwTaXkZYMrYLTlURlPjTnKl2SgZI853beYpsA3TqYKWiTo6DcD4HMB7gLCC27q3njQV92LUuAKJm5TAR2FYBZz5OzMbhoKjunmZt9AnRqPgYwuTlTFTAnzGCVnqloS4YlhCF+ywlXtvnt9I7Nb77oIrIr92ggZgxD+zd3WoAOtowAue3IkxWcQ8d24PnwPhZobiv64CnCBatFzZnRx7JRDM9AW9oqpyvhN2/G+3MO5NNJJLgR5SZTTJIMWy7K4zJ3wZSC2UV9sUmfW+YDMf/1sJEWTET97qmswXZ+cgj4O7kE2/MEFFeg3IcmPiGL0bwLwd07DXHtTuIuTW6NpiNNGxyapSOEXVBjDd5zmPSVHxNu/RqgsJzI6AnDMyG4YCJj04chysBtmxi2CGD0Ds2GJgnZPW9fI0RBCZnt6tcF+DNzGDvbUEXlIJ56V9CLW6mWWzKNqu09KmDFNnNfQs87Gbq+SweAPm1wfQ+GWDcZCHIQ9/9L8OXbqN6J7fcOgPbeAQFjeqH+t/lMyFm/LbazRUmZ/hAX0XvUJeuFeGtXyPg9OoHYeDfTEt3123jnPwSva/z6VBvfoLaAdVxQ7b/L1s9/jTdo/NrsKiDX7OXclXeSbFl4tEXFoA5k9F6IQtA3d5L+1H9DxpcWEq/fxESvNKxX33NbKJiTGzbSrNFYMfcCoAHpLFDopeR1sp7XPqJEqm13bD7tfWaTCOTk/uCm0KyX5l+IMCQD4XQF0YcHARfnCAzoAAXFAHNfIX3XYnRDlAecbREgwIFVBiBi9h0jvmidqDH2n7OZPmVg/Vihy6D4xEaqKfeHGcz38BWYBD8YYUBXhIlZ6BnbW3gXrqFkUDSONCq9vD2cxd0+Gfnjs1jNQeLzUhFHZAKM66vRlcs4llaabfbk7CY9e3R0yYFdwQSLK0CHCCgsI3H1y4SnK0JtmXsB8//+soYD9eavgJf5Qq5nVE/UF//cLFfPyDeMZx3mj8OqmsY1knBWR+MtXwn9cEmo3mEZKJ6YzRo8xT22F+BdU8Ojae1n0bsh26L54RLrQ9Ho0Qv+Lvh3p0K9OksG3WXXN57v7/iWai7+Z4OAZHRutP2XDUblW58++S7888QsEE1ldDOGhieEXxwm7QfXGzG2CXDSC5Z5MEcEN+0P3SOWmgT6xns0luxp3C16q8ICdO3UtF/v1F5pZm5SGQgbNa190x0prX3433JpxcycIApsE6DIa62uV3eIwAvvkelq5EROvDyPiZ6dm7747p3CfjrvRNMz76+Pqx+L7JUWzqh2f9+0K80vDneCdLn+leCK7vilbQLsPaa+G/bpIdIf/Hf4ov80E+mXI7HZRbFpg7Gmt637TLATZxru5VVBgld2iGavjSiUkk7qz0D6fLOuHd+QO78Y/I295i+bqGas/3QQRm0/2wTYflCt3JHTRNe9KlDOeE0BZo7AwAPTmVI7xvZGtwySptClVYDTX+DwfUndMsfLCO5YC1zOAxRiUqjI8AzQRvcMdSCvD1j2MqF9X0J18jo5z9F/95bwbt5PnY3fjfOv88ZHbz7bVkNPeMF9pBT0zGa2Ja9aLviR0zVlSA5hce860WwSO3kg4iw5SlZcj3DJ07LvEqBh5HFPCLo4C2BQNxmHykB8cADY0TONT9JqL0VUOxM5i2dLr2U05Wkh135kvYXkmvAUBCb0E74hPZivpJzYhr2UIK+vQ3U9t01CPjIzevvZuof78bfArhnT+P83fEE890id98S3d1M7UEAaJiAFkKkgam/czII3rhQuLkUorSLcsFfWvdcs1qDhG5sJh1xQ6NdR56H2wnWs8rbVIsn4U3E5edbvAVi/R9Rr36/GYvDJq1jLWYqo5n+HINjU/7fXSiOtMjA9nPVcPQbd79/HhPTdupvVjQNGzp/VBfXHszEgFwnNmCEoPHnr3D7st89uzA3jMOnTh7SAdEd6Q9ElvSOKx7JZYPUtzOWx6W5P9UoWimaNNzAd/J8vBo90Kw3Wu/sw8E37BJdZDxnTfdUFvNQkxOxR6EpJrNthjAZ9Uwj6tjwQJ8rI0ymRguP7Io7piZqsHzfvI/3L48R7dUaaPRrNniwnXCJnD/iDnHDaYOaR/r/BVuwuIH3jl8SPlcpldPm+F2chTeqPrk6Jap1Wq7+G2CC2CiDfUux7xFiXicM7Y85CVQBbXZCUiL2TG9mSRLxi+y7PXz90TkdbwXYB5JqQZ2eBMwpUick+55PvOmdEVYmJABv2gbugpOmU1CFETASQGxxs8XrnrKgKMTvPKWeR7tzDTixojpgJINfK8c5/2rNZ35aJ6YlmudPkXrHdGQVNEfMj5et2gUMTxFwAufQc98sSTRFzAbp0iL909K1PK5TdbswFGJUZXyPgxU3e4HXLipSvOeYCzBweH7NiY5tNGl+/940SF1lYZY7pXY2y9+vTh7b9e4d1ueNz16oS8crWcsv2jJkASR7gz84BLjddGn2PknIhOiQiujVstSuoHx3089tfK6F9RwMR2VL9RQSlqk9MMXhoOvBJ/aHebRvGxGz97kp9w54qlvNZJY7s6daXzE7FCQMTWtU9xt4qTg+/XSZWbvNiua/eIQDlB3yrXzSDfCmC0oOIZK8XIlgplm/hPiF3ZU95uetoCZcpKYet+31M5+HTzVv3+9mOvJPiF6MS9UfnpMDg7u4WLcSZKkGvvl/OX9zshSPFemNtzQdFLGxJ8lVWHtoHJARWndSBB5RjQIIbxeUjkvhvZyTjxIHtWpQQ/iDRMxvKgi9t9monzvAmsxwCXAVret8MCli4SPaBrFpdAGSMEtMZVkoRRFDpfeRFsvW7Kowv6Jfu1n89pb2YOyGZZaZq50SMcj/RjgM+/tIWL23eW+UKcsWEgmgbKKI+AozHVlbRIStxwERwYySQFCHi+cDA7u7A7Iva07ShCS4pDGR01mIyt6gMEB0t1mF7nj9odIKNe/wuLshyqi4dbCqs6qMUByw+OZcvlS+5B6widC5FML5HbbgEF9KgHu7gRVkeNqZvAmWkuFhaMtKQzARon6A2omVcoiOlPPjNMZ2dLOPswPFAcOe3fu3zgiCekr9DFHe9WHE/YPmNLD66uA6GCJWFBBSMmTtJSWKB9I4MftJB0xI9yBkD0uQVcjkzqvARKyrnVHiG45kqYEQUk1FEHPrAm33yVctbVzrSUWDAg3IknJBmEW3y5ASReB7W9rP06GLrhgh9SM/nyk9QPxvSBVYck06A2tqzhfJpTZ8+YBHra0FLzU8RmiK1y4dIQBejpG5GltSWdsrypeuZAhEQ2WLcCml8DrMiFoF5XJTUVcYrbAsP+csnkraw4Pdr86N+iE89uE/GhCIZE3hrjQmhnh+h8Q2iW442RsIKlH6PnodI0Npp1C5NjoLW546MgEsVMCoa4xvY/UFuSywtV1QTrOToKzKeI9SyRwJCqVxhWQ2CLY3W8OEq7abmowzFZBloz2/sowzrEagIoL+oZe0dGAYnY2ENc+Ug3QZeyIGcPsornQ4ODg4ODg4ODg4ODg4ODmfzfz5w/2ZW/n9aAAAAAElFTkSuQmCC\";\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","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","TogetherComponentGlobalContextProvider","userInfo","_f","togetherUserId","setTogetherUserId","callApiWithAuth","getApiPath","_locale","then","res","Provider","DEFAULT_AVATAR_IMG","DEFAULT_IMG","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","MAX_IMAGE_UPLOADS","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","params","query","queryString","keys","map","join","togetherBaseApiUrl","formattedPath","formatString","website_url","String","includes","getCarePath","careBaseApiUrl","convertApiOptionsToRequestInit","opts","FormData","body","stringify","callApi","method","skipEncodeURI","fetch","encodeURI","json","sent","console","log","err_1","status","response","statusText","callApiWithOptionalAuth","urlData","reqCookie","backupUrl","parsedCookie","cookieParser","token","cookie","getCookie","headers","Authorization","_g","messages","find","m","err_2","err_3","__awaiter","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","username","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","TogetherAuthConfigContextProvider","defaultParams","useTogetherAuthRequiredAction","propsParams","useContext","isLoggedIn","isFirstInteract","communities_interacted","authActionWrapper","func","extraParams","deleteCookie","_joinCommunityIds","localStorage","setItem","Array","from","Set","getItem","filter","_joinTopicIds","_location","StyledLoading","circle","keyframes","CardReactionType","Loading","t","useTranslations","StyledUserAvatar","secondaryBase","mbColors","pink","UserAvatar","isMarryBabyProp","isMarryBabyContext","tempAvatar","setTempAvatar","Image","onerror","alt","onError","toUpperCase","StyledCardLink","abbreviateNumber","newValue","suffixNum","shortValue","precision","parseFloat","pow","toPrecision","toFixed","StyledCardReactions","lightGray","StyledLeftIcon","StyledRightIcon","StyledText","Text","LabelSortingValue","CardReactions","loveCount","replyCount","replyPadding","isReplied","onCommentClick","onLikeClick","onCommentCountClick","onShareClick","hideCommentIcon","showingMostEngaging","isMarryBabyReply","reply","marginRight","count","preventDefault","stopPropagation","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","setShow","TreePopoverMenu","popoverProps","Tree","setPath","currentData","useMemo","pathItems","forEach","pathItem","list","Number","subTree","getCurrentDataFromPath","isShowheader","p","gray600","jsxRenderer","isArray","item","selected","handleItemClick","LabelSorting","onChange","leftLabel","choices","c","alignSelf","blue50","StyledProfileImage","StyledTitleContainer","span","neutral300","gray400","templateObject_7","StyledExperienceList","templateObject_8","PopupDoctor","isMobile","doctorInfo","setDoctorInfo","setIsLoading","_data","doctor","error","experiences","specialtiesList","specialties","formattedExperiences","experience","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","tokenValue","addSuffix","weekStartsOn","firstWeekContainsDate","StyledCardAuthor","blue800","green400","red400","yellow800","teal400","cobalt","StyledAvatarContainer","AuthorLabelTextMapping","guide","influencer","vi","ms","enUS","th","zhTW","hi","CardAuthor","miniIcon","hasQuickBooking","handleMakeAppointment","matchedRole","allRoles","looselyMatchRole","cleanedTimeDate","getTime","timeText","formatDistanceToNow","timeTextTitle","format","openPopupExpert","setOpenPopupExpert","currentUrl","onAuthorClick","toggleNoScroll","objectFit","lineHeight","fromCodePoint","astralCodePoint","fromCharCode","getCodePoint","codePointAt","input","ALPHA_INDEX","CHAR_INDEX","CHAR_S_INDEX","XmlEntities","charAt","parseInt","substr","surrogate_pairs_1","encodeNonUTF","strLength","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","decodePostUrl","p1","p2","decodeMention","users","foundUser","u","tempName_1","_p1","getMentionIdsFromString","disableLimit","push","getUrlsFromEditorString","__spreadArray","getUrlsFromString","cleanUrl","escapeRegExp","removeBannedWordWrapper","encodePostContent","encodePostUrl","encodeMention","ALLOW_DOMAIN_URL","reformatUrl","highlightBadWords","bannedWords","filteredBanedWords","banned","m1","escape","innerText","outerHTML","youtubeVidIdGetter","_i","arguments","facebookVidIdGetter","uploadAndGetSrc","file","isAdmin","Promise","resolve","imageFormData","append","import","default","maxSizeMB","maxWidthOrHeight","useWebWorker","compressed","imageRes","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","n","QuillRes","Quill","PreserveWhiteSpace","quill","this","container","whiteSpace","register","Inline","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","invalidUrls","RichTextEditor","onImagePickerClick","onInvalidUrlsChange","onPreviewUrlChange","setEditorRef","isReplying","bannedWordsRef","setInvalidUrls","setPreviewUrl","bannedString","currHTML","reactQuillRef","getEditor","root","debounceInputModify","fetchPreviewData","isFetching","catch","fetchPreviewDataRef","useCallback","debounce","processedInput","_invalidUrls","_previewUrl","imageHandlerRef","toolbarIdRef","random","cachedModules","toolbar","handlers","preserveWhiteSpace","contentEditableCaretPos","handleSelectionChange","newCaretPos","searchData","endText","lastAnchorSymbolIndex","name_1","setStart","replaceRange","rect","getBoundingClientRect","getSearchName","searchUser","replaceRangeRef","setFoundUsers","foundUsers","top","left","searchUserPosition","setSearchUserPosition","excludeIds","DOMRect","setSelectTagUserIndex","textNodeRect","containerRect","containerRef","styleConfig","bottom","maxHeight","right","setSelectUser","deleteContents","newMention","newPostText","createTextNode","insertNode","foundUsersListRef","selectTagUserIndex","childElement","childRect","offsetTop","scrollTop","onKeyDownCapture","preventKey","CustomToolbar","onAddLink","insertIndex","newHTML","onChangeSelection","modules","onMouseEnter","LinkToolInputPopover","onAddUrl","URL_WARN_MAP","urlValue","setUrlValue","textValue","setTextValue","urlWarnType","setUrlWarnType","isValid","Input","placeholder","trimmedUrl","jsUrl_2","protocol","checkUrlValid","b","Symbol","for","f","g","h","l","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","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","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","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","appendChild","isTargetFocused","activeElement","createRange","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","socialList","getSocialList","social","readOnly","onFocus","SharePopup","setIsOpen","setTimeout","ReactDOM","createPortal","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","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"],"mappings":"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AAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,KAAM,CAAC,WAAY,CAAC,QAAS,CAAC,OAAQ,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,QAAS,CAAC,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,MAAO,CAAC,SAAU,CAAC,QAAS,CAAC,WAAY,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,SAAU,CAAC,QAAS,CAAC,SAAU,CAAC,QAAS,CAAC,uBAAwB,CAAC,OAAQ,CAAC,OAAQ,CAAC,KAAM,QAAS,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,MAAO,CAAC,UAAW,CAAC,OAAQ,CAAC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,QAAS,CAAC,MAAO,CAAC,QAAS,CAAC,MAAO,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC,QAAS,CAAC,QAAS,CAAC,SAAU,CAAC,MAAO,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,OAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,SAAU,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAQ,CAAC,KAAM,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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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,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"}