@hhgtech/hhg-components 1.19.0-beta-2 → 1.19.0-beta-3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/care.js +1 -1
- package/build/components.js +1 -1
- package/build/{useTranslations-5afc8996.js → cookieHelper-dda8dbe1.js} +2 -2
- package/build/cookieHelper-dda8dbe1.js.map +1 -0
- package/build/core.d.ts +6 -0
- package/build/core.js +2 -0
- package/build/core.js.map +1 -0
- package/build/esm/care.js +1 -1
- package/build/esm/components.js +1 -1
- package/build/esm/{constants-ca5de3b0.js → constants-dc22740c.js} +2 -2
- package/build/esm/{constants-ca5de3b0.js.map → constants-dc22740c.js.map} +1 -1
- package/build/esm/cookieHelper-6f220950.js +2 -0
- package/build/esm/cookieHelper-6f220950.js.map +1 -0
- package/build/esm/core.d.ts +6 -0
- package/build/esm/core.js +2 -0
- package/build/esm/core.js.map +1 -0
- package/build/esm/ecom.js +1 -1
- package/build/esm/i18n.js +1 -1
- package/build/esm/index-19ea8cf0.js +2 -0
- package/build/esm/index-19ea8cf0.js.map +1 -0
- package/build/esm/index-2e9c7339.js +2 -0
- package/build/esm/index-2e9c7339.js.map +1 -0
- package/build/esm/index-d055a48d.js +2 -0
- package/build/esm/index-d055a48d.js.map +1 -0
- package/build/esm/{index-75d1e7f4.js → index-e3983194.js} +2 -2
- package/build/esm/{index-75d1e7f4.js.map → index-e3983194.js.map} +1 -1
- package/build/esm/index.js +1 -1
- package/build/esm/index.styled-1585c8b9.js +2 -0
- package/build/esm/index.styled-1585c8b9.js.map +1 -0
- package/build/esm/navigation.js +2 -0
- package/build/esm/navigation.js.map +1 -0
- package/build/esm/together.js +1 -1
- package/build/esm/{translationsProvider-ba085038.js → translationsProvider-94e1d5d1.js} +2 -2
- package/build/esm/{translationsProvider-ba085038.js.map → translationsProvider-94e1d5d1.js.map} +1 -1
- package/build/esm/{tslib.es6-77763d30.js → tslib.es6-fd0a5c98.js} +2 -2
- package/build/esm/{tslib.es6-77763d30.js.map → tslib.es6-fd0a5c98.js.map} +1 -1
- package/build/esm/types-4a772485.js +2 -0
- package/build/esm/types-4a772485.js.map +1 -0
- package/build/esm/types-9b8cf2f7.js +2 -0
- package/build/esm/{types-429a22fe.js.map → types-9b8cf2f7.js.map} +1 -1
- package/build/esm/{types-12be8f90.js → types-dd4dd7f7.js} +2 -2
- package/build/esm/{types-12be8f90.js.map → types-dd4dd7f7.js.map} +1 -1
- package/build/esm/types-f59e54c0.js +2 -0
- package/build/esm/{types-a2c1b603.js.map → types-f59e54c0.js.map} +1 -1
- package/build/esm/useScrollbarSize-99db33e1.js +2 -0
- package/build/esm/useScrollbarSize-99db33e1.js.map +1 -0
- package/build/esm/useTranslations-824bc4ba.js +2 -0
- package/build/esm/useTranslations-824bc4ba.js.map +1 -0
- package/build/{index-3414ede1.js → index-1db4ad2d.js} +2 -2
- package/build/{index-3414ede1.js.map → index-1db4ad2d.js.map} +1 -1
- package/build/index-23709986.js +2 -0
- package/build/index-23709986.js.map +1 -0
- package/build/index-467d1dc9.js +2 -0
- package/build/index-467d1dc9.js.map +1 -0
- package/build/index-c75ec8f5.js +2 -0
- package/build/index-c75ec8f5.js.map +1 -0
- package/build/index.js +1 -1
- package/build/index.styled-86510d9f.js +2 -0
- package/build/index.styled-86510d9f.js.map +1 -0
- package/build/navigation.js +2 -0
- package/build/navigation.js.map +1 -0
- package/build/together.js +1 -1
- package/build/types-105cb1d7.js +2 -0
- package/build/{types-5cdfbea1.js.map → types-105cb1d7.js.map} +1 -1
- package/build/types-521f641a.js +2 -0
- package/build/types-521f641a.js.map +1 -0
- package/build/types-9741aa58.js +2 -0
- package/build/{types-34bc953a.js.map → types-9741aa58.js.map} +1 -1
- package/build/useScrollbarSize-586f6706.js +2 -0
- package/build/useScrollbarSize-586f6706.js.map +1 -0
- package/build/useTranslations-0aa60f65.js +2 -0
- package/build/useTranslations-0aa60f65.js.map +1 -0
- package/package.json +15 -1
- package/build/esm/index-302ef9fa.js +0 -2
- package/build/esm/index-302ef9fa.js.map +0 -1
- package/build/esm/index.styled-fe838f56.js +0 -2
- package/build/esm/index.styled-fe838f56.js.map +0 -1
- package/build/esm/types-429a22fe.js +0 -2
- package/build/esm/types-a2c1b603.js +0 -2
- package/build/esm/useTranslations-bd25b99b.js +0 -2
- package/build/esm/useTranslations-bd25b99b.js.map +0 -1
- package/build/index-1022b302.js +0 -2
- package/build/index-1022b302.js.map +0 -1
- package/build/index.styled-2fb2dbba.js +0 -2
- package/build/index.styled-2fb2dbba.js.map +0 -1
- package/build/types-34bc953a.js +0 -2
- package/build/types-5cdfbea1.js +0 -2
- package/build/useTranslations-5afc8996.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types-12be8f90.js","sources":["../../src/ecom/interfaces/constants.ts","../../src/ecom/dataFormatter/lib/utils.ts","../../src/ecom/dataFormatter/index.ts","../../src/ecom/interfaces/types.ts"],"sourcesContent":["import { isProduction } from 'src/interfaces/constants'\n\nimport {\n CategoriesLayout,\n LocaleType,\n LocalisedSlugsType,\n LogoType,\n} from './types'\n\nexport const isDevelopment =\n process.env.NEXT_PUBLIC_DEPLOY_ENV === 'development'\nexport const IS_SSR = typeof window === 'undefined'\nexport const locale: LocaleType = process.env.NEXT_PUBLIC_DEPLOY_LOCALE\n ? (process.env.NEXT_PUBLIC_DEPLOY_LOCALE as LocaleType)\n : 'vi-VN'\n\nexport const BEARER_TOKEN_COOKIE = 'hhg_user_token'\nexport const BEARER_ADMIN_TOKEN_COOKIE = 'hhg_admin_token'\nexport const GUEST_CART_ID_COOKIE = 'hhg_guest_cart_id'\n\nexport const GOOGLE_MAP_KEY = process.env.NEXT_PUBLIC_GOOGLE_MAP_KEY || ''\nexport const GOOGLE_ADMIN_LOCATION_KEY =\n process.env.NEXT_PUBLIC_ADMIN_GOOGLE_LOCATION_KEY\nexport const GOOGLE_CLIENT_ID =\n process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID ||\n '289442006438-cihobuq1h3r4426pur7u0e43fqdnep59.apps.googleusercontent.com'\nexport const GOOGLE_CALENDAR_API_KEY = ''\n\nexport const basePath = 'shop'\nexport const SSO_USER_BASE_PATH = 'user'\nexport const CARE_BASE_PATH = 'care'\nexport const COMMUNITY_BASE_PATH = 'community'\nexport const HEALTH_TOOLs_BASE_PATH = 'health-tools'\nexport const NOTIFICATION_TIME_OUT = 3000\n\nexport const DOMAIN_LOCALES: { [key in LocaleType]: string } = {\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}\n\nexport const DISCOVER_URL_FE = isDevelopment\n ? 'http://localhost:3001'\n : isProduction\n ? `https://${DOMAIN_LOCALES[locale]}`\n : `https://discover.${DOMAIN_LOCALES[locale]}`\n\nexport const DISCOVER_URL_BE = isProduction\n ? `https://wp.${DOMAIN_LOCALES[locale]}/`\n : `https://staging.${DOMAIN_LOCALES[locale]}/`\n\nexport const TOGETHER_URL_BE =\n process.env.NEXT_PUBLIC_TOGETHER_API_URL &&\n process.env.NEXT_PUBLIC_TOGETHER_API_URL !== ''\n ? process.env.NEXT_PUBLIC_TOGETHER_API_URL\n : `https://together.${DOMAIN_LOCALES[locale]}/`\n\nexport const TOGETHER_URL_FE = `${DISCOVER_URL_FE}/community`\n\nexport const SSO_URL =\n process.env.NEXT_PUBLIC_SSO_URL || 'http://staging-id.hellobacsi.com/'\n\nexport const DISCOVERY_FOOTER_URL = '#'\nexport const HEALTH_CARE_FOOTER_URL = '#'\nexport const HEALTH_TOOLS_FOOTER_URL = '#'\nexport const HEALTH_TOGETHER_FOOTER_URL = '#'\nexport const POLICIES_FOOTER_URL = '#'\nexport const FAQ_FOOTER_URL = '#'\nexport const SITEMAP_FOOTER_URL = '#'\nexport const ABOUT_US_FOOTER_URL = '#'\nexport const EXECUTIVE_BIOS_FOOTER_URL = '#'\nexport const ADVERTISING_FOOTER_URL = '#'\nexport const CONTACT_US_FOOTER_URL = '#'\nexport const ABOUT_GO_CARE_FOOTER_URL = '#'\n\nexport enum Gender {\n FEMALE = 0,\n MALE = 1,\n ANY = 2,\n}\n\nexport const EMAIL_REGEX =\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\nexport const COUNTRY_SITENAME: { [id: string]: string } = {\n ID: 'Hello Sehat',\n TH: 'Hello Khunmor',\n MY: 'Hello Doktor',\n KH: 'Hello Krupet',\n TW: 'Hello Yishi',\n MM: 'Hello Sayarwon',\n IN: 'Hello Swasthya',\n VN: 'Hello Bacsi',\n PH: 'Hello Doctor',\n}\n\nexport const LOCALE_SPECS: {\n [key in LocaleType]: { [key: string]: string }\n} = {\n 'vi-VN': {\n LOGO_TYPE: 'hellobacsi' as LogoType,\n SITE_NAME: 'HelloBacsi',\n SITE_NAME_FORMATTED: 'Hello Bacsi',\n HOMEPAGE_IMAGE: 'https://hellobacsi.com/images/country-thumbnails/VN.png',\n SITE_ID: '1',\n INSIDER_TAG: '//hellobacsivn.api.useinsider.com/ins.js?id=10003798',\n TOOLTIP_IMAGE: '/images/tooltips-vn.png',\n },\n 'en-PH': {\n LOGO_TYPE: 'hellodoctor' as LogoType,\n SITE_NAME: 'HelloDoctor',\n HOMEPAGE_IMAGE:\n 'https://hellodoctor.com.ph/images/country-thumbnails/PH.png',\n SITE_NAME_FORMATTED: 'Hello Doctor',\n SITE_ID: '9',\n CATEGORIES_TYPE: 'short' as CategoriesLayout,\n INSIDER_TAG: '//hellodoctorph.api.useinsider.com/ins.js?id=10004527',\n TOOLTIP_IMAGE: '/images/tooltips-ph.png',\n },\n 'th-TH': {\n LOGO_TYPE: 'hellokhunmor' as LogoType,\n SITE_NAME: 'HelloKhunmor',\n HOMEPAGE_IMAGE: 'https://hellokhunmor.com/images/country-thumbnails/TH.png',\n SITE_NAME_FORMATTED: 'Hello Khunmor',\n SITE_ID: '3',\n CATEGORIES_TYPE: 'long' as CategoriesLayout,\n INSIDER_TAG: '//hellokhunmor.api.useinsider.com/ins.js?id=10004524',\n TOOLTIP_IMAGE: '/images/tooltips-th.png',\n },\n 'km-KH': {\n LOGO_TYPE: 'hellokrupet' as LogoType,\n SITE_NAME: 'HelloKrupet',\n HOMEPAGE_IMAGE: 'https://hellokrupet.com/images/country-thumbnails/KH.JPG',\n SITE_NAME_FORMATTED: 'Hello Krupet',\n SITE_ID: '4',\n CATEGORIES_TYPE: 'long' as CategoriesLayout,\n INSIDER_TAG: '//hellokrupet.api.useinsider.com/ins.js?id=10004523',\n TOOLTIP_IMAGE: '/images/tooltips-kh.png',\n },\n 'my-MM': {\n LOGO_TYPE: 'hellosayarwon' as LogoType,\n SITE_NAME: 'HelloSayarwon',\n HOMEPAGE_IMAGE:\n 'https://hellosayarwon.com/images/country-thumbnails/PH.png',\n SITE_NAME_FORMATTED: 'Hello Sayarwon',\n SITE_ID: '7',\n INSIDER_TAG: '//hellosayarwon.api.useinsider.com/ins.js?id=10004522',\n },\n 'zh-TW': {\n LOGO_TYPE: 'helloyishi' as LogoType,\n SITE_NAME: 'HelloYishi',\n HOMEPAGE_IMAGE:\n 'https://helloyishi.com.tw/images/country-thumbnails/TW.png',\n SITE_NAME_FORMATTED: 'Hello Yishi',\n SITE_ID: '6',\n INSIDER_TAG: '//helloyishi.api.useinsider.com/ins.js?id=10004526',\n TOOLTIP_IMAGE: '/images/tooltips-tw.png',\n },\n 'id-ID': {\n LOGO_TYPE: 'hellosehat' as LogoType,\n SITE_NAME: 'HelloSehat',\n HOMEPAGE_IMAGE: 'https://hellosehat.com/images/country-thumbnails/ID.png',\n SITE_NAME_FORMATTED: 'Hello Sehat',\n SITE_ID: '2',\n INSIDER_TAG: '//hellosehat.api.useinsider.com/ins.js?id=10003799',\n TOOLTIP_IMAGE: '/images/tooltips-id.png',\n },\n 'hi-IN': {\n LOGO_TYPE: 'helloswasthya' as LogoType,\n SITE_NAME: 'HelloSwasthya',\n HOMEPAGE_IMAGE:\n 'https://helloswasthya.com/images/country-thumbnails/IN.png',\n SITE_NAME_FORMATTED: 'हैलो स्वास्थ्य',\n SITE_ID: '8',\n CATEGORIES_TYPE: 'long' as CategoriesLayout,\n INSIDER_TAG: '//helloswasthya.api.useinsider.com/ins.js?id=10004498',\n TOOLTIP_IMAGE: '/images/tooltips-in.png',\n },\n 'ms-MY': {\n LOGO_TYPE: 'hellodoktor' as LogoType,\n SITE_NAME: 'HelloDoktor',\n HOMEPAGE_IMAGE: 'https://hellodoktor.com/images/country-thumbnails/MY.png',\n SITE_NAME_FORMATTED: 'Hello Doktor',\n SITE_ID: '5',\n INSIDER_TAG: '//hellodoktor.api.useinsider.com/ins.js?id=10004525',\n TOOLTIP_IMAGE: '/images/tooltips-my.png',\n },\n}\n\nexport const SOCIAL_MEDIA: {\n [key in LocaleType]: { [key: string]: string | null }\n} = {\n 'vi-VN': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/hellobacsi/',\n INSTAGRAM: 'https://www.instagram.com/hellobacsi/',\n TWITTER: null,\n YOUTUBE: 'https://www.youtube.com/channel/UCYHzHDXngnB7jkmcQgXwE0w',\n },\n 'en-PH': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/HelloDoctorPH/',\n INSTAGRAM: 'https://www.instagram.com/hellodoctor_ph/',\n TWITTER: null,\n },\n 'km-KH': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/hellokrupet/',\n INSTAGRAM: 'https://www.instagram.com/hellokrupetofficial/',\n TWITTER: null,\n YOUTUBE: 'https://www.youtube.com/channel/UCVK4p9YPIMkmoerk3X-y-TQ',\n },\n 'ms-MY': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/HelloDoktorMY/',\n INSTAGRAM: 'https://www.instagram.com/_hellodoktor_/',\n TWITTER: null,\n },\n 'id-ID': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-sehat/',\n FACEBOOK: 'https://www.facebook.com/hellosehat',\n INSTAGRAM: 'https://www.instagram.com/hellosehat/',\n TWITTER: 'https://twitter.com/HelloSehat',\n },\n 'my-MM': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/hellosayarwon/',\n INSTAGRAM: 'https://www.facebook.com/hellosayarwon/',\n TWITTER: null,\n },\n 'zh-TW': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/helloyishi/',\n INSTAGRAM: 'https://www.instagram.com/helloyishi/',\n TWITTER: null,\n },\n 'hi-IN': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/HelloSwasthya/',\n INSTAGRAM: 'https://www.instagram.com/hello_swasthya/',\n TWITTER: null,\n },\n 'th-TH': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/hellokhunmor/',\n INSTAGRAM: 'https://www.instagram.com/hellokhunmor/',\n TWITTER: null,\n YOUTUBE: 'https://www.youtube.com/channel/UCbdbow4UhKfa7rqIhclNPIQ/',\n },\n}\n\nexport const FLAG_LINKS: { [id: string]: string } = {\n ID: 'https://hellosehat.com/',\n TH: 'https://hellokhunmor.com/',\n MY: 'https://hellodoktor.com/',\n KH: 'https://hellokrupet.com/',\n TW: 'https://helloyishi.com.tw/',\n MM: 'https://hellosayarwon.com/',\n IN: 'https://helloswasthya.com/',\n VN: 'https://hellobacsi.com/',\n PH: 'https://hellodoctor.com.ph/',\n}\n\nexport const STATIC_PAGES: {\n [key in LocaleType]: { [key: string]: string | null }\n} = {\n 'vi-VN': {\n PRIVACY: '/privacy',\n TERM_OF_USE: '/dieu-khoan-su-dung',\n PRIVACY_POLICY: '/chinh-sach-quyen-rieng-tu',\n EDITORIAL_CORRECTIONS_POLICY: '/chinh-sach-bien-tap-chinh-sua',\n ADVERTISING_SPONSOR_POLICY: '/chinh-sach-quang-cao-tai-tro',\n POLICIES: '/chinh-sach',\n FAQS: '/thong-tin-quan-trong',\n SITEMAP: '/sitemap',\n ABOUT_US: '/about-us',\n ADVERTISEMENT: '/quang-cao-voi-chung-toi',\n CONTACT_US: '/lien-he',\n ABOUT_GO_CARE: '/about-go-care',\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: 'https://hellohealthgroup.com/hello-bacsi/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'km-KH': {\n POLICIES: '/policies',\n TERM_OF_USE: '/ខនិងលក្ខខណ្ឌ',\n PRIVACY_POLICY: '/គោលការណ៍ឯកជនភាព',\n EDITORIAL_CORRECTIONS_POLICY: '/គោលការណ៍ខ្លឹមសារមាតិកា',\n ADVERTISING_SPONSOR_POLICY: '/គោលការណ៍ផ្សាយពាណិជ្ជកម',\n FAQS: '/faqs',\n SITEMAP: '/sitemap',\n ABOUT_US: '/about-us',\n ADVERTISEMENT: '/advertisement',\n CONTACT_US: '/contact-us',\n ABOUT_GO_CARE: '/about-go-care',\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: '/#',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'en-PH': {\n POLICIES: '/policies',\n TERM_OF_USE: '/terms-of-use',\n PRIVACY_POLICY: '/privacy-policy',\n EDITORIAL_CORRECTIONS_POLICY: '/editorial-and-corrections-policy',\n ADVERTISING_SPONSOR_POLICY: '/advertising-and-sponsor-policy',\n FAQS: null,\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: null,\n CONTACT_US: '/contact-us',\n ABOUT_GO_CARE: null,\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: 'https://hellohealthgroup.com/management-team/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'my-MM': {\n POLICIES: '/polisi-terma-syarat',\n TERM_OF_USE: '/terms-of-use',\n PRIVACY_POLICY: '/privacy-policy',\n EDITORIAL_CORRECTIONS_POLICY: '/editorial-policy',\n ADVERTISING_SPONSOR_POLICY: '/advertising-policy',\n FAQS: null,\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: '/pengiklanan',\n CONTACT_US: '/hubungi-kami',\n ABOUT_GO_CARE: null,\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: ' https://hellohealthgroup.com/hello-doktor/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'zh-TW': {\n POLICIES: '/policies',\n TERM_OF_USE: '/terms-of-use',\n PRIVACY_POLICY: '/privacy-policy',\n EDITORIAL_CORRECTIONS_POLICY: '/editorial-and-corrections-policy',\n ADVERTISING_SPONSOR_POLICY: '/advertising-and-sponsor-policy',\n FAQS: null,\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: '/advertising',\n CONTACT_US: '/contact-us',\n ABOUT_GO_CARE: null,\n FACILITY: '/facility',\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: 'https://hellohealthgroup.com/management-team/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'id-ID': {\n POLICIES_EN: '/policies',\n TERM_OF_USE: '/kebijakan-pengguna',\n PRIVACY_POLICY: '/kebijakan-privasi',\n EDITORIAL_CORRECTIONS_POLICY: '/kebijakan-editorial',\n ADVERTISING_SPONSOR_POLICY: '/kebijakan-iklan',\n POLICIES: '/kebijakan',\n FAQS: null,\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: null,\n CONTACT_US: '/kontak-kami',\n CONTACT_EN: '/contact',\n ABOUT_GO_CARE: null,\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: 'https://hellohealthgroup.com/hello-sehat/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n EDITORIAL_POLICY: '/edit-id',\n EDITORIAL_POLICY_EN: '/edit-en',\n },\n 'hi-IN': {\n POLICIES: '/policies',\n TERM_OF_USE: '/terms-of-use',\n PRIVACY_POLICY: '/privacy-policy',\n EDITORIAL_CORRECTIONS_POLICY: '/editorial-and-corrections-policy',\n ADVERTISING_SPONSOR_POLICY: '/advertising-and-sponsor-policy',\n FAQS: null,\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: null,\n CONTACT_US: '/contact-us',\n ABOUT_GO_CARE: null,\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: 'https://hellohealthgroup.com/management-team/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'ms-MY': {\n POLICIES: '/polisi-terma-syarat',\n TERM_OF_USE: '/terma-dan-syarat',\n PRIVACY_POLICY: '/polisi-privasi',\n EDITORIAL_CORRECTIONS_POLICY: '/polisi-editorial',\n ADVERTISING_SPONSOR_POLICY: '/polisi-pengiklanan',\n FAQS: null,\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: '/pengiklanan',\n CONTACT_US: '/hubungi-kami',\n ABOUT_GO_CARE: null,\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: ' https://hellohealthgroup.com/hello-doktor/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'th-TH': {\n POLICIES_EN: '/policies',\n TERM_OF_USE: '/เงื่อนใขการใช้งาน',\n PRIVACY_POLICY: '/นโยบายความเป็นส่วนตัว',\n EDITORIAL_CORRECTIONS_POLICY: '/นโยบายบรรณธิการ',\n ADVERTISING_SPONSOR_POLICY: '/นโยบายการโฆษณาและผู้สนับสนุน',\n POLICIES: '/นโยบาย',\n FAQS: '/คำถามที่พบบ่อย',\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: '/ลงโฆษณากับเรา',\n CONTACT_US: '/contact-us',\n ABOUT_GO_CARE: null,\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: 'https://hellohealthgroup.com/management-team/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n}\n\nexport const FAVICONS: {\n [key in LocaleType]: (\n | {\n type: 'link'\n rel: string\n href: string\n sizes?: string\n }\n | {\n type: 'meta'\n name: string\n content: string\n }\n )[]\n} = {\n 'vi-VN': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n 'km-KH': [\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/km-KH/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/km-KH/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/km-KH/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/km-KH/icon-270x270.png',\n },\n ],\n 'en-PH': [\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/en-PH/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/en-PH/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon',\n href: '/by-locales/en-PH/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/en-PH/icon-270x270.png',\n },\n ],\n 'id-ID': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n 'ms-MY': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n 'th-TH': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n 'my-MM': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n 'zh-TW': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n 'hi-IN': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n}\n\nexport const LOCALE_COUNTRY: {\n [key in LocaleType]: {\n [key: string]: string | number\n }\n} = {\n 'vi-VN': { id: 1, name: 'Vietnam' },\n 'id-ID': { id: 2, name: 'Indonesia' },\n 'ms-MY': { id: 3, name: 'Malaysia' },\n 'km-KH': { id: 4, name: 'Cambodia' },\n 'en-PH': { id: 5, name: 'Philippines' },\n 'th-TH': { id: 6, name: 'Thai Lan' },\n 'my-MM': { id: 7, name: 'Myanmar' },\n 'zh-TW': { id: 8, name: 'Taiwan' },\n 'hi-IN': { id: 9, name: 'India' },\n}\n\nexport const MAX_ALLOWED_IMG_SIZE = 20 * 1024 * 1024\n\nexport const COUNTRY_CODE_BY_LOCALE: {\n [key in LocaleType]: string\n} = {\n 'vi-VN': 'vn',\n 'id-ID': 'id',\n 'ms-MY': 'my',\n 'km-KH': 'kh',\n 'en-PH': 'ph',\n 'th-TH': 'th',\n 'my-MM': 'mm',\n 'zh-TW': 'tw',\n 'hi-IN': 'in',\n}\n\nexport const COUNTRY_CURRENCY_SYMBOL: { [key in LocaleType]: string } = {\n 'vi-VN': '₫',\n 'id-ID': 'Rp',\n 'ms-MY': 'RM',\n 'km-KH': '៛',\n 'en-PH': '₱',\n 'th-TH': '฿',\n 'my-MM': 'K',\n 'zh-TW': '$', // New Taiwan Dollar can be written as NTD$ or $\n 'hi-IN': '₹',\n}\n\nexport const CURRENCY_PREFIX: Record<string, string> = {\n IDR: 'Dimulai dari', // Dimulai dari IDR 800,000\n}\n\nexport type LOCALISED_SLUGS_VALUE = {\n [key in LocalisedSlugsType]?: string\n}\nexport const LOCALISED_SLUGS: {\n [key in LocaleType]?: LOCALISED_SLUGS_VALUE\n} = {\n 'en-PH': {\n PRODUCT: 'product',\n CATEGORY: 'category',\n BRAND: 'brand',\n SEARCH: 'search',\n PROFILE: 'profile',\n PROFILE_MANAGE_ORDERS: 'profile/manage-orders',\n PROFILE_MANAGE_ADDRESS: 'profile/deliver-address',\n PROFILE_VOUCHER: 'profile/voucher',\n PROFILE_MEMBER_CARD: 'profile/member-card',\n CART: 'cart',\n CART_CHECKOUT: 'cart/checkout',\n ORDER_CONFIRMATION: 'order-confirmation',\n PROMOTION: 'promotion',\n },\n 'vi-VN': {\n PRODUCT: 'san-pham',\n CATEGORY: 'danh-muc',\n BRAND: 'thuong-hieu',\n SEARCH: 'tim-kiem',\n PROFILE: 'ho-so',\n PROFILE_MANAGE_ORDERS: 'ho-so/quan-li-don-hang',\n PROFILE_MANAGE_ADDRESS: 'ho-so/dia-chi-giao-hang',\n PROFILE_VOUCHER: 'ho-so/khuyen-mai',\n PROFILE_MEMBER_CARD: 'ho-so/the-thanh-vien',\n CART: 'gio-hang',\n CART_CHECKOUT: 'gio-hang/thanh-toan',\n ORDER_CONFIRMATION: 'kiem-tra-don-hang',\n PROMOTION: 'khuyen-mai',\n },\n}\n\nexport const HEADER_LOGO_ALIGNMENT = '188px'\n\nexport const globalFontFamily = 'Inter'\n\nexport const ENABLE_COMMUNITY_LOCALES: LocaleType[] = [\n 'vi-VN',\n 'id-ID',\n 'ms-MY',\n 'en-PH',\n 'th-TH',\n]\n\nexport const ENABLE_CARE_LOCALES: LocaleType[] = ['vi-VN', 'id-ID', 'en-PH']\n\nexport const ENABLE_HEALTH_PARENTING_LOCALES: LocaleType[] = [\n 'vi-VN',\n 'en-PH',\n 'id-ID',\n 'ms-MY',\n 'km-KH',\n 'th-TH',\n 'my-MM',\n 'zh-TW',\n]\n\nexport const SEO_SCHEMA: {\n [key in LocaleType]?: {\n HOME?: () => string\n CATEGORY?: (\n urlWithParams: string,\n itemCount?: number,\n itemList?: {\n '@type': 'Product'\n image: string\n url: string\n name: string\n }[],\n ) => string\n BRAND?: (\n urlWithParams: string,\n itemCount?: number,\n itemList?: {\n '@type': 'Brand'\n name: string\n image: string\n url: string\n }[],\n ) => string\n BRAND_DETAIL?: (\n urlWithParams: string,\n itemCount?: number,\n itemList?: {\n '@type': 'Brand_Detail'\n name: string\n image: string\n url: string\n },\n ) => string\n PRODUCT_DETAIL?: (\n urlWithParams: string,\n itemCount?: number,\n itemList?: {\n '@type': 'Product_Detail'\n name: string\n image: string\n url: string\n },\n ) => string\n }\n} = {\n 'vi-VN': {\n HOME: () =>\n JSON.stringify({\n '@context': 'https://schema.org',\n '@graph': [\n {\n '@id': 'https://hellobacsi.com/shop/#website',\n '@type': 'WebSite',\n description: 'Hello Bacsi - Health Information',\n inLanguage: 'vi-VN',\n name: 'Hello Bacsi',\n potentialAction: [\n {\n '@type': 'SearchAction',\n 'query-input': 'required name=search_term_string',\n target:\n 'https://hellobacsi.com/shop/tim-kiem/?keyword={search_term_string}',\n },\n ],\n url: 'https://hellobacsi.com/shop/',\n },\n ],\n }),\n CATEGORY: (urlWithParams = '', itemCount = 0, itemList = []) =>\n JSON.stringify({\n '@context': 'https://schema.org',\n '@graph': [\n {\n '@id': 'https://hellobacsi.com/shop/#breadcrumb',\n '@type': 'BreadcrumbList',\n itemListElement: [\n {\n '@type': 'ListItem',\n item: {\n '@id': 'https://hellobacsi.com/shop/',\n '@type': 'WebPage',\n name: 'Hello Bacsi',\n url: 'https://hellobacsi.com/shop/',\n },\n },\n {\n '@type': 'ListItem',\n item: {\n '@id': 'https://hellobacsi.com/shop/danh-muc',\n '@type': 'WebPage',\n name: 'Hello Bacsi - Danh Muc',\n url: 'https://hellobacsi.com/shop/danh-muc',\n },\n },\n ],\n },\n {\n '@type': 'ItemList',\n url: urlWithParams,\n numberOfItems: itemCount,\n itemListElement: itemList,\n },\n ],\n }),\n BRAND: (urlWithParams = '', itemCount = 0, itemList = []) =>\n JSON.stringify({\n '@context': 'https://schema.org',\n '@graph': [\n {\n '@id': 'https://hellobacsi.com/shop/#breadcrumb',\n '@type': 'BreadcrumbList',\n itemListElement: [\n {\n '@type': 'ListItem',\n item: {\n '@id': 'https://hellobacsi.com/shop/',\n '@type': 'WebPage',\n name: 'Hello Bacsi',\n url: 'https://hellobacsi.com/shop/',\n },\n },\n {\n '@type': 'ListItem',\n item: {\n '@id': 'https://hellobacsi.com/shop/thuong-hieu',\n '@type': 'WebPage',\n name: 'Hello Bacsi - Thuong Hieu',\n url: 'https://hellobacsi.com/shop/thuong-hieu',\n },\n },\n ],\n },\n {\n '@type': 'ItemList',\n url: urlWithParams,\n numberOfItems: itemCount,\n itemListElement: itemList,\n },\n ],\n }),\n BRAND_DETAIL: (urlWithParams = '', itemCount = 0, itemList) =>\n JSON.stringify({\n '@context': 'https://schema.org',\n '@graph': [\n {\n '@id': 'https://hellobacsi.com/shop/thuong-hieu/#brand',\n '@type': 'BrandDetail',\n itemListElement: [\n {\n '@type': 'Item',\n item: {\n '@id': `https://hellobacsi.com/shop${urlWithParams}`,\n '@type': 'WebPage',\n name: 'Hello Bacsi - Thuong Hieu',\n url: `https://hellobacsi.com/shop${urlWithParams}`,\n },\n },\n ],\n },\n {\n '@type': 'BrandDetail',\n url: `https://hellobacsi.com/shop${urlWithParams}`,\n numberOfItems: itemCount,\n itemListElement: itemList ?? {},\n },\n ],\n }),\n PRODUCT_DETAIL: (urlWithParams = '', itemCount = 0, itemList) =>\n JSON.stringify({\n '@context': 'https://schema.org',\n '@graph': [\n {\n '@id': 'https://hellobacsi.com/shop/san-pham/#product',\n '@type': 'ProductDetail',\n itemListElement: [\n {\n '@type': 'Item',\n item: {\n '@id': `https://hellobacsi.com/shop/san-pham/${urlWithParams}`,\n '@type': 'WebPage',\n name: 'Hello Bacsi - Thuong Hieu',\n url: `https://hellobacsi.com/shop/san-pham/${urlWithParams}`,\n },\n },\n ],\n },\n {\n '@type': 'BrandDetail',\n url: urlWithParams,\n numberOfItems: itemCount,\n itemListElement: itemList ?? {},\n },\n ],\n }),\n },\n}\n","import { LocaleType } from 'interfaces/types'\n\nimport { COUNTRY_CURRENCY_SYMBOL } from '../../interfaces/constants'\n\nexport function isDefined<T>(argument: T | undefined | null): argument is T {\n return argument !== undefined && argument !== null\n}\n\nexport function isNullOrUndefinedOrEmptyString<T>(\n argument: T | null | undefined | '',\n): argument is T {\n return argument === undefined || argument === null || argument === ''\n}\n\nexport function trimObjectForQuery(object: {\n [k: string]: string | number | null | undefined\n}) {\n Object.keys(object).forEach((k) => {\n if (isNullOrUndefinedOrEmptyString(object[k])) delete object[k]\n })\n return object\n}\n\nexport function numberWithCommas(x: number | string) {\n if (!x) return ''\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.')\n}\n\nexport function currencyFormat(\n x: number | string,\n locale: LocaleType,\n currency: string,\n) {\n if (!x || !locale) return `0 ${COUNTRY_CURRENCY_SYMBOL['vi-VN'] || ''}`\n\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currency,\n }).format(Number(x))\n}\n","import { theme } from 'src/misc/theme'\n\nimport {\n AutoCompleteAddressApi,\n CategoryApi,\n HelpfulUrlApi,\n HotSearchKeywordApi,\n NavigationApi,\n FooterInfoApi,\n PriceInfoApi,\n BlogPostApi,\n BannerApi,\n BlogPostDataReviewedUserApi,\n BrandApi,\n HomePageApi,\n ProductApi,\n CategoryPageApi,\n PaginationApi,\n BrandPageApi,\n ProductDetailPageApi,\n ProductReviewApi,\n PromotionApi,\n AddressApi,\n OrderApi,\n ProvinceApi,\n DistrictApi,\n CommuneApi,\n ProvinceListApi,\n DistrictListApi,\n CommuneListApi,\n CustomAttributesApi,\n StatisticApi,\n CartItemApi,\n CartAddressApi,\n CartLoggedInCustomerApi,\n CartApi,\n CartTotalApi,\n EstimatedShippingApi,\n OrderConfirmationApi,\n ProductPromotionApi,\n CouponListApi,\n CouponApi,\n ShippingApi,\n PaymentMethodsApi,\n ShippingInformation,\n} from './lib/apiTypes'\nimport {\n Address,\n AutoCompleteAddress,\n Banner,\n BlogPost,\n BlogPostDataReviewedUser,\n Brand,\n BrandPage,\n Category,\n CategoryPage,\n HelpfulUrl,\n HomePage,\n Navigation,\n Pagination,\n PopularSearchType,\n PriceInfo,\n Product,\n ProductDetailPage,\n ProductReview,\n Promotion,\n Order,\n Province,\n District,\n Commune,\n Statistic,\n CartItem,\n CartAddress,\n EstimatedShipping,\n CartLoggedInCustomer,\n Cart,\n CartTotal,\n PaymentInformation,\n OrderConfirmation,\n ProductPromotion,\n Coupon,\n Shipping,\n PaymentMethodInfo,\n} from './lib/dataTypes'\nimport { isDefined } from './lib/utils'\n\nexport const dataFormatter = {\n formatAutoCompleteAddress: (\n address: AutoCompleteAddressApi,\n ): AutoCompleteAddress | null => {\n if (!address || !address.place_id) return null\n return {\n placeId: address.place_id,\n description: address.description || '',\n }\n },\n formatPrice: (price: string | number, locale?: string) => {\n const formattedPrice = typeof price === 'string' ? parseInt(price) : price\n\n return new Intl.NumberFormat(locale || 'vi-VN').format(formattedPrice)\n },\n formatHotSearchKeyword: (data: HotSearchKeywordApi): PopularSearchType => {\n return {\n text: data?.name || '',\n }\n },\n formatHelpfulUrl: (data: HelpfulUrlApi): HelpfulUrl => {\n return {\n name: data?.name || '',\n featuredImage: data?.featured_image || '',\n url: data?.url || '',\n }\n },\n formatCategory: function (\n data: CategoryApi,\n parentId?: number,\n parentFullSlug?: string,\n ): Category {\n const currentFullSlug = parentFullSlug\n ? parentFullSlug + '/' + data.slug\n : data.slug\n const children =\n data?.children?.map?.((childCategory) => {\n return dataFormatter.formatCategory(\n childCategory,\n data.id,\n currentFullSlug,\n )\n }) || []\n return {\n id: data?.id,\n name: data?.name || '',\n logo: data?.logo || '',\n slug: data?.slug || '',\n fullSlug: currentFullSlug || '',\n children,\n backgroundColor: data.color || theme.colors.teal50,\n parentId: parentId || 0,\n products:\n (data.products?.map(dataFormatter.formatProduct) as Product[]) || [],\n }\n },\n formatFooterInfo: (data: FooterInfoApi | undefined): FooterInfoApi => {\n const branches: { flag: string; name: string; url: string }[] =\n data?.branch?.branch?.map?.((branch) => {\n return {\n flag: branch.flag || '',\n name: branch.name || '',\n url: branch.url || '',\n }\n }) || []\n\n const verified: {\n image: string\n url: string\n }[] =\n data?.general?.verified?.map?.((verifiedItem) => {\n return {\n image: verifiedItem.image || '',\n url: verifiedItem.url || '',\n }\n }) || []\n\n const menu: {\n menu_title: string\n items: {\n title: string\n url: string\n }[]\n }[] =\n data?.menu?.map?.((menuItem) => {\n return {\n menu_title: menuItem.menu_title,\n items: menuItem.items?.map?.((item) => {\n return {\n title: item.title,\n url: item.url,\n }\n }),\n }\n }) || []\n\n const socials: {\n icon: string\n name: string\n url: string\n }[] =\n data?.social?.socials?.map?.((social) => {\n return {\n icon: social.icon || '',\n name: social.name || '',\n url: social.url || '',\n }\n }) || []\n\n return {\n branch: {\n title: data?.branch?.title || '',\n branch: branches,\n },\n general: {\n logo: data?.general?.logo ?? '',\n content: data?.general?.content ?? '',\n copyright: data?.general?.copyright ?? '',\n verified,\n },\n menu,\n social: {\n title: data?.social?.title || '',\n socials,\n },\n }\n },\n formatNavigation: function (\n data: NavigationApi | null | undefined,\n ): Navigation {\n return {\n hotSearchKeywords:\n data?.hot_search_keywords?.map?.(\n dataFormatter.formatHotSearchKeyword,\n ) || [],\n helpfulUrls:\n data?.helpful_urls?.map?.(dataFormatter.formatHelpfulUrl) || [],\n categories:\n data?.categories?.map?.((category) =>\n dataFormatter.formatCategory(category),\n ) || [],\n footer: dataFormatter.formatFooterInfo(data?.footer),\n storeId: data?.store_id || 0,\n customerId: data?.customer_id || 0,\n cartItemsQty:\n typeof data?.cart_items_qty === 'number' ? data.cart_items_qty : null,\n }\n },\n\n // === ECOM TYPES FORMAT ===\n formatPriceInfo: (priceInfoApi?: PriceInfoApi): PriceInfo | null => {\n if (!priceInfoApi) return null\n return {\n final: priceInfoApi.final || 0,\n regular: priceInfoApi.regular || 0,\n discountPercent: priceInfoApi.discount_percent || 0,\n }\n },\n formatProduct: function (productApi?: ProductApi): Product | null {\n if (!productApi) return null\n const defaultPriceInfo = {\n final: 0,\n regular: 0,\n discountPercent: 0,\n }\n return {\n id: productApi.id || 0,\n price: productApi.price\n ? dataFormatter.formatPriceInfo(productApi.price) || defaultPriceInfo\n : defaultPriceInfo,\n thumbnail: productApi.thumbnail || '',\n name: productApi.name || '',\n averageRating: Number((productApi.average_rating || 0).toFixed(2)),\n reviewsCount: productApi.reviews_count || 0,\n tag: productApi.tag || null,\n sku: productApi.sku || '',\n slug: productApi.slug || '',\n images: productApi.images || [],\n tags: productApi.tags || [],\n unit: productApi.unit || '',\n brand: productApi.brand\n ? {\n name: productApi.brand.name || '',\n image: productApi.brand.image || '',\n slug: productApi.brand.slug || '',\n productsCount: productApi.brand.products_count || 0,\n }\n : null,\n description: productApi.description || '',\n productPromotions:\n productApi.product_promotions\n ?.map?.(dataFormatter.formatProductPromotion)\n .filter(isDefined) || [],\n categories:\n productApi.categories\n ?.map?.((c) => dataFormatter.formatCategory(c))\n .filter(isDefined) || [],\n isInStock: productApi?.is_in_stock || false,\n }\n },\n formatBanner: (bannerApi?: BannerApi): Banner | null => {\n if (!bannerApi) return null\n return {\n name: bannerApi.name || '',\n url: bannerApi.url || '',\n featuredImage: bannerApi.featured_image || '',\n alt: bannerApi.image_alt,\n }\n },\n formatBlogPost: (blogPostApi?: BlogPostApi): BlogPost | null => {\n if (!blogPostApi) return null\n return {\n title: blogPostApi.title || '',\n image: blogPostApi.image || '',\n link: blogPostApi.link || '',\n postData: blogPostApi.post_data\n ? {\n reviewed: blogPostApi.post_data.reviewed\n ? {\n author: dataFormatter.formatBlogPostDataReviewedUser(\n blogPostApi.post_data.reviewed.author || undefined,\n ),\n editor: dataFormatter.formatBlogPostDataReviewedUser(\n blogPostApi.post_data.reviewed.editor || undefined,\n ),\n expert: dataFormatter.formatBlogPostDataReviewedUser(\n blogPostApi.post_data.reviewed.expert || undefined,\n ),\n factCheck: dataFormatter.formatBlogPostDataReviewedUser(\n blogPostApi.post_data.reviewed.fact_check || undefined,\n ),\n isAuthor: Boolean(blogPostApi.post_data.reviewed.is_author),\n }\n : null,\n categories: blogPostApi.post_data.categories\n ? blogPostApi.post_data.categories.map?.((item) => ({\n termId: item.term_id || 0,\n name: item.name || '',\n permalink: item.permalink || '',\n textColor: item.text_color || '',\n }))\n : [],\n postDate: blogPostApi.post_data.post_date || '',\n postModified: blogPostApi.post_data.post_modified || '',\n modifiedTime: blogPostApi.post_data.modified_time || '',\n }\n : null,\n }\n },\n formatBlogPostDataReviewedUser: (\n blogPostDataReviewedUserApi?: BlogPostDataReviewedUserApi,\n ): BlogPostDataReviewedUser | null => {\n if (!blogPostDataReviewedUserApi) return null\n return {\n id: blogPostDataReviewedUserApi.ID || 0,\n userId: blogPostDataReviewedUserApi.user_id || 0,\n formerRole: blogPostDataReviewedUserApi.former_role || '',\n role: blogPostDataReviewedUserApi.role || '',\n slug: blogPostDataReviewedUserApi.slug || '',\n displayName: blogPostDataReviewedUserApi.display_name || '',\n description: blogPostDataReviewedUserApi.description || '',\n profileUrl: blogPostDataReviewedUserApi.profile_url || '',\n avatar: blogPostDataReviewedUserApi.avatar || '',\n avatarThumbnail: blogPostDataReviewedUserApi.avatar_thumbnail || '',\n turnOffProfile: Boolean(blogPostDataReviewedUserApi.turn_off_profile),\n }\n },\n formatBrand: function (brandApi?: BrandApi): Brand | null {\n if (!brandApi) return null\n return {\n id: brandApi.id || 0,\n image: brandApi.image || '',\n position: brandApi.position || '',\n isPopular: brandApi.is_popular || false,\n summary: brandApi.summary || '',\n name: brandApi.name || '',\n slug: brandApi.slug || '',\n description: brandApi.description || null,\n banners:\n brandApi.banners?.map?.(dataFormatter.formatBanner).filter(isDefined) ||\n [],\n bestsellerProducts:\n brandApi.bestseller_products\n ?.map?.(dataFormatter.formatProduct)\n .filter(isDefined) || [],\n } as Brand\n },\n formatHomePage: (homePageApi?: HomePageApi): HomePage | null => {\n if (!homePageApi) return null\n return {\n brands: homePageApi.brands\n ? homePageApi.brands.map?.(dataFormatter.formatBrand).filter(isDefined)\n : [],\n hotDeals: homePageApi.hot_deals\n ? homePageApi.hot_deals\n .map?.(dataFormatter.formatProduct)\n .filter(isDefined)\n : [],\n newProducts: homePageApi.new_products\n ? homePageApi.new_products\n .map?.(dataFormatter.formatProduct)\n .filter(isDefined)\n : [],\n slideBanners: homePageApi.slide_banners\n ? homePageApi.slide_banners\n .map?.(dataFormatter.formatBanner)\n .filter(isDefined)\n : [],\n subBanners: homePageApi.sub_banners\n ? homePageApi.sub_banners\n .map?.(dataFormatter.formatBanner)\n .filter(isDefined)\n : [],\n footerBanners: homePageApi.footer_banners\n ? homePageApi.footer_banners\n .map?.(dataFormatter.formatBanner)\n .filter(isDefined)\n : [],\n blogPosts: homePageApi.blog_posts\n ? homePageApi.blog_posts\n .map?.(dataFormatter.formatBlogPost)\n .filter(isDefined)\n : [],\n popularCategories: homePageApi.popular_categories\n ? homePageApi.popular_categories\n .map?.((c) => dataFormatter.formatCategory(c))\n .filter(isDefined)\n : [],\n suggestProducts: homePageApi.suggest_products\n ? homePageApi.suggest_products\n .map?.((c) => dataFormatter.formatCategory(c))\n .filter(isDefined)\n : [],\n promotions: homePageApi.promotions\n ? homePageApi.promotions\n .map?.((c) => dataFormatter.formatPromotion(c))\n .filter(isDefined)\n : [],\n }\n },\n formatCategoryPage: function (\n categoryPageApi?: CategoryPageApi,\n ): CategoryPage | null {\n if (!categoryPageApi) return null\n return {\n id: categoryPageApi.id || 0,\n name: categoryPageApi.name || '',\n slug: categoryPageApi.slug || '',\n description: categoryPageApi.description || null,\n banners:\n categoryPageApi.banners\n ?.map?.(dataFormatter.formatBanner)\n .filter(isDefined) || [],\n bestsellerProducts:\n categoryPageApi.bestseller_products\n ?.map?.(dataFormatter.formatProduct)\n .filter(isDefined) || [],\n }\n },\n formatBrandPage: function (brandPageApi?: BrandPageApi): BrandPage | null {\n if (!brandPageApi) return null\n return dataFormatter.formatBrand(brandPageApi)\n },\n formatPagination: (paginationApi?: PaginationApi): Pagination | null => {\n if (!paginationApi) return null\n return {\n current: paginationApi.current || 0,\n first: paginationApi.first || 0,\n itemsPerPage: paginationApi.items_per_page || 0,\n last: paginationApi.last || 0,\n next: paginationApi.next || 0,\n prev: paginationApi.prev || 0,\n totalItems: paginationApi.total_items || 0,\n }\n },\n formatProductDetailPage: function (\n productDetailPageApi?: ProductDetailPageApi,\n ): ProductDetailPage | null {\n if (!productDetailPageApi) return null\n return {\n ...(dataFormatter.formatProduct(productDetailPageApi) as Product),\n relatedProducts:\n productDetailPageApi.related_products\n ?.map?.(dataFormatter.formatProduct)\n .filter(isDefined) || [],\n bestsellerProducts:\n productDetailPageApi.bestseller_products\n ?.map?.(dataFormatter.formatProduct)\n .filter(isDefined) || [],\n viewedProducts:\n productDetailPageApi.viewed_products\n ?.map?.(dataFormatter.formatProduct)\n .filter(isDefined) || [],\n promotions:\n productDetailPageApi.promotions\n ?.map?.(dataFormatter.formatPromotion)\n .filter(isDefined) || [],\n }\n },\n formatProductReview: (\n productReview?: ProductReviewApi,\n ): ProductReview | null => {\n if (!productReview) return null\n\n // TODO: avatar, images\n return {\n reviewId: productReview.review_id || '',\n createdAt: productReview.created_at || '',\n title: productReview.title || '',\n detail: productReview.detail || '',\n nickname: productReview.nick_name || '',\n avatar: productReview.avatar || '',\n ratingVotes:\n productReview.rating_votes?.map?.((vote) => {\n return {\n ratingCode: vote.rating_code || '',\n value: Number(vote.value) || 0,\n percent: Number(vote.percent) || 0,\n }\n }) || [],\n images: productReview.images || [],\n }\n },\n formatProductPromotion: (\n productPromotionApi?: ProductPromotionApi,\n ): ProductPromotion | null => {\n if (!productPromotionApi) return null\n\n return {\n id: productPromotionApi.id || 0,\n name: productPromotionApi.name || '',\n thumbnail: productPromotionApi.thumbnail || '',\n expirationDate: productPromotionApi.expiration_date || '',\n }\n },\n formatPromotion: (promotionApi?: PromotionApi): Promotion | null => {\n if (!promotionApi) return null\n\n return {\n id: promotionApi.id || 0,\n name: promotionApi.name || '',\n slug: promotionApi.slug || '',\n thumbnail: promotionApi.thumbnail || '',\n expiredDate: promotionApi.expired_date || '',\n banners: promotionApi.banners || [],\n points: 0,\n description: promotionApi.description || '',\n metaTitle: promotionApi.meta_title || '',\n metaKeywords: promotionApi.meta_keywords || '',\n metaDescription: promotionApi.meta_description || '',\n }\n },\n formatCustomAttributes: (\n customAttributesApi: CustomAttributesApi[],\n type: string,\n ): string | '' => {\n if (!customAttributesApi?.length) return ''\n return (\n customAttributesApi?.find(\n (item: CustomAttributesApi) => item.attribute_code === type,\n )?.value || ''\n )\n },\n\n formatAddress: (addressApi?: AddressApi): Address | null => {\n if (!addressApi) return null\n return {\n id: addressApi.id || 0,\n fullName: addressApi.firstname || '',\n telephone: addressApi.telephone || '',\n province:\n {\n value: addressApi.region?.region_id,\n label: addressApi.region?.region,\n } || null,\n district: {\n value: dataFormatter.formatCustomAttributes(\n addressApi.custom_attributes,\n 'district_id',\n ),\n label: dataFormatter.formatCustomAttributes(\n addressApi.custom_attributes,\n 'district',\n ),\n },\n commune: {\n value: dataFormatter.formatCustomAttributes(\n addressApi.custom_attributes,\n 'ward_id',\n ),\n label: dataFormatter.formatCustomAttributes(\n addressApi.custom_attributes,\n 'ward',\n ),\n },\n street: addressApi?.street?.length ? addressApi?.street[0] : '',\n isDefault:\n (addressApi.default_billing && addressApi.default_shipping) || false,\n fullAddress: addressApi?.extension_attributes?.full_address || '',\n }\n },\n\n formatProvince: (provinceApi?: ProvinceListApi): Province[] | [] => {\n if (!provinceApi?.available_regions) return []\n\n return provinceApi.available_regions.map((province: ProvinceApi) => ({\n value: province.id || '',\n label: province.name || '',\n }))\n },\n\n formatDistrict: (districtApi?: DistrictListApi): District[] | [] => {\n if (!districtApi?.districts) return []\n\n return districtApi.districts.map((district: DistrictApi) => ({\n value: district.id || '',\n label: district.name || '',\n }))\n },\n\n formatCommune: (communeApi?: CommuneListApi): Commune[] | [] => {\n if (!communeApi?.communes) return []\n\n return communeApi.communes.map((commune: CommuneApi) => ({\n value: commune.id || '',\n label: commune.name || '',\n }))\n },\n\n formatOrder: (orderApi?: OrderApi): Order | null => {\n if (!orderApi) return null\n return {\n orderNumber: orderApi?.order_number || '',\n shippingData: orderApi?.shipping_data\n ? {\n shippingMethod: orderApi.shipping_data.shipping_method || '',\n shippingDescription:\n orderApi.shipping_data.shipping_description || '',\n shippingAddress: orderApi.shipping_data.shipping_address\n ? {\n fullName:\n orderApi.shipping_data.shipping_address.firstname || '',\n fullAddress:\n orderApi.shipping_data.shipping_address.full_address || '',\n telephone:\n orderApi.shipping_data.shipping_address.telephone || '',\n }\n : null,\n storeAddress: null,\n }\n : null,\n orderedDate: orderApi?.ordered_date || '',\n status: orderApi?.status || null,\n totals: orderApi?.totals\n ? {\n subtotal: orderApi.totals.subtotal || 0,\n shippingAmount: orderApi.totals.shipping_amount || 0,\n discountAmount: orderApi.totals.discount_amount || 0,\n grandTotal: orderApi.totals.grand_total || 0,\n }\n : null,\n products:\n orderApi?.products?.map?.((p) => ({\n sku: p.sku || '',\n name: p.name || '',\n price: p.price || 0,\n rowTotal: p.row_total || 0,\n image: p.image || '',\n qty: p.qty || 0,\n })) || [],\n\n paymentMethod: orderApi?.payment_method || '',\n }\n },\n formatStatistic: (statistic?: StatisticApi[]): Statistic => {\n if (!statistic) return {} as Statistic\n return {\n pending:\n Number(\n statistic?.find((stt: StatisticApi) => stt.status === 'pending')\n ?.amount,\n ) || 0,\n processing:\n Number(\n statistic?.find((stt: StatisticApi) => stt.status === 'processing')\n ?.amount,\n ) || 0,\n delivering:\n Number(\n statistic?.find((stt: StatisticApi) => stt.status === 'delivering')\n ?.amount,\n ) || 0,\n complete:\n Number(\n statistic?.find((stt: StatisticApi) => stt.status === 'complete')\n ?.amount,\n ) || 0,\n canceled:\n Number(\n statistic?.find((stt: StatisticApi) => stt.status === 'canceled')\n ?.amount,\n ) || 0,\n } as Statistic\n },\n formatCartItem: (cartItemApi?: CartItemApi): CartItem | null => {\n if (!cartItemApi) return null\n return {\n itemId: cartItemApi.item_id || 0,\n sku: cartItemApi.sku || '',\n qty: cartItemApi.qty || 0,\n name: cartItemApi.name || '',\n price: cartItemApi.price || 0,\n basePrice: cartItemApi.extension_attributes?.base_price || 0,\n productType: cartItemApi.product_type || '',\n quoteId: cartItemApi.quote_id || '',\n thumbnail: cartItemApi.extension_attributes?.thumbnail || '',\n rowTotal: cartItemApi.extension_attributes?.row_total || 0,\n promotions: (cartItemApi.extension_attributes?.promotions?.map?.(\n dataFormatter.formatProductPromotion,\n ) || []) as ProductPromotion[],\n isInStock: cartItemApi.extension_attributes?.is_in_stock || false,\n urlProduct: cartItemApi.extension_attributes?.url_key || '',\n }\n },\n formatCartAddress: (cartAddressApi?: CartAddressApi): CartAddress | null => {\n if (!cartAddressApi) return null\n return {\n customerAddressId: cartAddressApi?.customer_address_id || 0,\n id: cartAddressApi.id || 0,\n region: cartAddressApi.region || '',\n regionId: cartAddressApi.region_id || 0,\n regionCode: cartAddressApi.region_code || '',\n countryId: cartAddressApi.country_id || '',\n street: cartAddressApi.street || [],\n postcode: cartAddressApi.postcode || '',\n city: cartAddressApi.city || '',\n firstname: cartAddressApi.firstname || '',\n lastname: cartAddressApi.lastname || '',\n customerId: cartAddressApi.customer_id || 0,\n email: cartAddressApi.email || '',\n telephone: cartAddressApi.telephone || '',\n sameAsBilling: cartAddressApi.same_as_billing || 0,\n saveInAddressBook: cartAddressApi.save_in_address_book || 0,\n fullAddress: cartAddressApi.extension_attributes?.full_address || '',\n }\n },\n formatEstimatedShipping: (\n estimatedShippingApi?: EstimatedShippingApi,\n ): EstimatedShipping | null => {\n if (!estimatedShippingApi) return null\n return {\n carrierCode: estimatedShippingApi.carrier_code || '',\n methodCode: estimatedShippingApi.method_code || '',\n carrierTitle: estimatedShippingApi.carrier_title || '',\n methodTitle: estimatedShippingApi.method_title || '',\n amount: estimatedShippingApi.amount || 0,\n baseAmount: estimatedShippingApi.base_amount || 0,\n available: estimatedShippingApi.available || false,\n errorMessage: estimatedShippingApi.error_message || '',\n priceExclTax: estimatedShippingApi.price_excl_tax || 0,\n priceInclTax: estimatedShippingApi.price_incl_tax || 0,\n }\n },\n formatCartLoggedInCustomer: (\n cartLoggedInCustomerApi?: Partial<CartLoggedInCustomerApi>,\n ): CartLoggedInCustomer | null => {\n if (!cartLoggedInCustomerApi) return null\n return {\n email: cartLoggedInCustomerApi.email || '',\n firstname: cartLoggedInCustomerApi.firstname || '',\n lastname: cartLoggedInCustomerApi.lastname || '',\n id: cartLoggedInCustomerApi.id || 0,\n groupId: cartLoggedInCustomerApi.group_id || 0,\n createdAt: cartLoggedInCustomerApi.created_at || '',\n updatedAt: cartLoggedInCustomerApi.updated_at || '',\n createdIn: cartLoggedInCustomerApi.created_in || '',\n storeId: cartLoggedInCustomerApi.store_id || 0,\n websiteId: cartLoggedInCustomerApi.website_id || 0,\n addresses: (cartLoggedInCustomerApi.addresses?.map?.(\n dataFormatter.formatCartAddress,\n ) || []) as CartAddress[],\n disableAutoGroupChange:\n cartLoggedInCustomerApi.disable_auto_group_change || 0,\n isSubscribed:\n cartLoggedInCustomerApi.extension_attributes?.is_subscribed || false,\n }\n },\n formatCart: (cartApi?: CartApi): Cart | null => {\n if (!cartApi) return null\n return {\n id: cartApi.id || 0,\n createdAt: cartApi.created_at || '',\n updatedAt: cartApi.updated_at || '',\n isActive: cartApi.is_active || false,\n isVirtual: cartApi.is_virtual || false,\n items: (cartApi.items\n ?.map?.(dataFormatter.formatCartItem)\n ?.sort((a, b) => Number(b?.isInStock) - Number(a?.isInStock)) ||\n []) as CartItem[],\n itemsCount: cartApi.items_count || 0,\n itemsQty: cartApi.items_qty || 0,\n customer: cartApi.customer\n ? dataFormatter.formatCartLoggedInCustomer(cartApi.customer)\n : null,\n billingAddress: cartApi.billing_address\n ? dataFormatter.formatCartAddress(cartApi.billing_address)\n : null,\n origOrderId: cartApi.orig_order_id || 0,\n currency: {\n globalCurrencyCode: cartApi.currency?.global_currency_code || '',\n baseCurrencyCode: cartApi.currency?.base_currency_code || '',\n storeCurrencyCode: cartApi.currency?.store_currency_code || '',\n quoteCurrencyCode: cartApi.currency?.quote_currency_code || '',\n storeToBaseRate: cartApi.currency?.store_to_base_rate || 0,\n storeToQuoteRate: cartApi.currency?.store_to_quote_rate || 0,\n baseToGlobalRate: cartApi.currency?.base_to_global_rate || 0,\n baseToQuoteRate: cartApi.currency?.base_to_quote_rate || 0,\n },\n customerIsGuest: cartApi.customer_is_guest || false,\n customerNoteNotify: cartApi.customer_note_notify || false,\n customerTaxClassId: cartApi.customer_tax_class_id || 0,\n storeId: cartApi.store_id || 0,\n shippingAssignments:\n cartApi.extension_attributes?.shipping_assignments?.map?.((s) => ({\n shipping: {\n address: s.shipping.address\n ? dataFormatter.formatCartAddress(s.shipping.address)\n : null,\n method: s.shipping?.method || '',\n },\n items: (s.items.map?.(dataFormatter.formatCartItem) ||\n []) as CartItem[],\n })),\n }\n },\n formatCartTotal: (cartTotalApi?: CartTotalApi): CartTotal | null => {\n if (!cartTotalApi) return null\n return {\n grandTotal: cartTotalApi.grand_total || 0,\n baseGrandTotal: cartTotalApi.base_grand_total || 0,\n subtotal: cartTotalApi.subtotal || 0,\n baseSubtotal: cartTotalApi.base_subtotal || 0,\n discountAmount: cartTotalApi.discount_amount || 0,\n baseDiscountAmount: cartTotalApi.base_discount_amount || 0,\n subtotalWithDiscount: cartTotalApi.subtotal_with_discount || 0,\n baseSubtotalWithDiscount: cartTotalApi.base_subtotal_with_discount || 0,\n shippingAmount: cartTotalApi.shipping_amount || 0,\n baseShippingAmount: cartTotalApi.base_shipping_amount || 0,\n shippingDiscountAmount: cartTotalApi.shipping_discount_amount || 0,\n baseShippingDiscountAmount:\n cartTotalApi.base_shipping_discount_amount || 0,\n taxAmount: cartTotalApi.tax_amount || 0,\n baseTaxAmount: cartTotalApi.base_tax_amount || 0,\n weeeTaxAppliedAmount: cartTotalApi.weee_tax_applied_amount || 0,\n shippingTaxAmount: cartTotalApi.shipping_tax_amount || 0,\n baseShippingTaxAmount: cartTotalApi.base_shipping_tax_amount || 0,\n subtotalInclTax: cartTotalApi.subtotal_incl_tax || 0,\n shippingInclTax: cartTotalApi.shipping_incl_tax || 0,\n baseShippingInclTax: cartTotalApi.base_shipping_incl_tax || 0,\n baseCurrencyCode: cartTotalApi.base_currency_code || '',\n quoteCurrencyCode: cartTotalApi.quote_currency_code || '',\n itemsQty: cartTotalApi.items_qty || 0,\n coupon: {\n couponCode: cartTotalApi.coupon_code || '',\n couponDescription:\n cartTotalApi?.extension_attributes?.coupon_description_text || '',\n },\n items:\n cartTotalApi.items?.map?.((item) => ({\n itemId: item.item_id || 0,\n price: item.price || 0,\n basePrice: item.base_price || 0,\n qty: item.qty || 0,\n rowTotal: item.row_total || 0,\n baseRowTotal: item.base_row_total || 0,\n rowTotalWithDiscount: item.row_total_with_discount || 0,\n taxAmount: item.tax_amount || 0,\n baseTaxAmount: item.base_tax_amount || 0,\n taxPercent: item.tax_percent || 0,\n discountAmount: item.discount_amount || 0,\n baseDiscountAmount: item.base_discount_amount || 0,\n discountPercent: item.discount_percent || 0,\n priceInclTax: item.price_incl_tax || 0,\n basePriceInclTax: item.base_price_incl_tax || 0,\n rowTotalInclTax: item.row_total_incl_tax || 0,\n baseRowTotalInclTax: item.base_row_total_incl_tax || 0,\n options: item.options || '',\n weeeTaxAppliedAmount: item.weee_tax_applied_amount || 0,\n weeeTaxApplied: item.weee_tax_applied || 0,\n name: item.name || '',\n })) || [],\n totalSegments: cartTotalApi.total_segments || [],\n }\n },\n formatPaymentMethod: (\n methods?: PaymentMethodsApi[],\n ): PaymentMethodInfo[] | null => {\n if (!methods) return null\n return methods?.map((method: PaymentMethodsApi) => ({\n code: method?.payment_code || '',\n title: method?.payment_title || '',\n thumbnail: method?.payment_thumbnail || '',\n }))\n },\n formatPaymentInformation: (\n paymentInformationApi?: ShippingInformation,\n ): PaymentInformation | null => {\n if (!paymentInformationApi) return null\n return {\n paymentMethods:\n dataFormatter.formatPaymentMethod(\n paymentInformationApi?.extension_attributes?.payment_detail_info,\n ) || [],\n totals: dataFormatter.formatCartTotal(paymentInformationApi.totals),\n }\n },\n formatOrderConfirmation: (\n orderConfirmationApi?: OrderConfirmationApi,\n ): OrderConfirmation | null => {\n if (!orderConfirmationApi) return null\n return {\n isSuccess: orderConfirmationApi.is_success || false,\n orderInfo: dataFormatter.formatOrder(orderConfirmationApi.order_info),\n }\n },\n formatCoupons: (couponListApi?: CouponListApi): Coupon[] | null => {\n if (!couponListApi?.items?.length) return null\n return couponListApi.items.map((couponApi: CouponApi) => ({\n code: couponApi?.code || '',\n name: couponApi?.name || '',\n thumbnail: couponApi?.thumbnail || '',\n description: couponApi?.expired_date || '',\n }))\n },\n formatShippings: (shippingsApi?: ShippingApi[]): Shipping[] => {\n if (!shippingsApi) return [] as Shipping[]\n\n return shippingsApi.map((shippingApi: ShippingApi) => ({\n carrierCode: shippingApi.carrier_code || '',\n methodCode: shippingApi.method_code || '',\n title: shippingApi.carrier_title || '',\n description: shippingApi.method_title || '',\n price: shippingApi?.base_amount || 0,\n thumbnail: shippingApi?.extension_attributes?.thumbnail || '',\n }))\n },\n}\n","// You can include shared interfaces/types in a separate file\n// and then use them in any component by importing them. For\n// example, to import the interface below do:\n//\n\n// import User from 'path/to/interfaces';\n\nimport { UserRole } from 'interfaces/types'\n\nimport {\n basePath,\n CARE_BASE_PATH,\n COMMUNITY_BASE_PATH,\n HEALTH_TOOLs_BASE_PATH,\n SSO_USER_BASE_PATH,\n} from './constants'\n\nexport type LocaleType =\n | 'vi-VN'\n | 'id-ID'\n | 'ms-MY'\n | 'km-KH'\n | 'en-PH'\n | 'th-TH'\n | 'my-MM'\n | 'zh-TW'\n | 'hi-IN'\n\nexport type PushNotificationPayloadType = {\n message: string\n type: 'success' | 'danger' | 'info' | 'warning'\n title?: string\n}\n\nexport type LogoType =\n | 'hellobacsi'\n | 'hellosehat'\n | 'hellohealth'\n | 'hellotogether'\n | 'hellocare'\n | 'logomark'\n | 'hellodoctor'\n | 'hellokrupet'\n | 'hellswasthya'\n | 'hellokhunmor'\n | 'hellodoktor'\n\nexport type CategoriesLayout = 'short' | 'long'\n\nexport type CountryInitial =\n | 'VN'\n | 'ID'\n | 'TH'\n | 'KH'\n | 'MY'\n | 'MM'\n | 'PH'\n | 'IN'\n | 'TW'\n\nexport type Flag = {\n country: CountryInitial\n link: string\n}\n\nexport type Role = UserRole | ('branch' | 'facility' | 'doctor')\n\nexport type UserInfo = {\n name?: string\n phone?: string\n username?: string\n avatar?: string\n email?: string\n role?: Role\n phone_verified_at?: string\n birthday?: string\n gender?: number\n id?: number\n bookmarks?: Array<string | number>\n coralToken?: {\n token?: string\n isTemp?: boolean\n }\n total_bookmark?: number\n first_time_bookmark?: boolean\n phone_verified?: boolean\n provider?: string\n verify_phone_code?: string\n city_id?: string\n type_of_pass?: string\n is_new?: 0 | 1\n communities_interacted?: 0 | 1\n}\n\nexport enum GenderLabel {\n MALE = 'gender.male',\n FEMALE = 'gender.female',\n OTHER = 'gender.other',\n}\n\nexport type DesktopMenuPopup =\n | 'categories'\n | 'tools'\n | 'care'\n | 'communities'\n | 'profile'\n | 'none'\n\nexport type MobileMenuPopup = 'categories' | 'profile' | 'none'\n\nexport type HealthTool = {\n title: string\n subtitle: string\n icon: string\n link: string\n}\n\nexport type UrlSourceType =\n | 'first_login'\n | 'welcome_back'\n | 'comment'\n | 'care_phone'\n | 'care_onboarding'\n | 'new_admin'\n | 'ecom'\n\nexport type UrlPostActionType = 'call' | 'redirect'\n\nexport type UrlQueryType = 'source' | 'post_action' | 'params'\n\nexport type Coordinate = {\n lat: number\n lng: number\n}\n\n/**\n * default props types\n */\nexport type ElementDataProps = 'data-event-action' | 'data-event-label'\n\nexport type ExtendingDataProps<K> = {\n [key in K extends string ? K | ElementDataProps : ElementDataProps]?:\n | string\n | number\n | boolean\n | ((e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void)\n | React.CSSProperties\n} & {\n style?: React.CSSProperties\n}\n\n/**\n * localised slugs\n */\nexport type LocalisedSlugsType =\n | 'PRODUCT'\n | 'CATEGORY'\n | 'BRAND'\n | 'SEARCH'\n | 'BRANDS'\n | 'PROFILE'\n | 'PROFILE_MANAGE_ORDERS'\n | 'PROFILE_MANAGE_ADDRESS'\n | 'PROFILE_VOUCHER'\n | 'PROFILE_MEMBER_CARD'\n | 'CART'\n | 'CART_CHECKOUT'\n | 'PROMOTION'\n | 'PROMOTION_DETAIL'\n | 'ORDER_CONFIRMATION'\n\n/**\n * base path type\n */\nexport type BasePathType =\n | typeof basePath\n | typeof SSO_USER_BASE_PATH\n | typeof CARE_BASE_PATH\n | typeof COMMUNITY_BASE_PATH\n | typeof HEALTH_TOOLs_BASE_PATH\n\nexport type SortType = 'price' | 'updated_at'\nexport type SortOrder = 'asc' | 'desc'\n\n// xác nhận, đang giao, đã giao, hoàn thành, huỷ\nexport type OrderStatus =\n | 'pending'\n | 'processing'\n | 'delivering'\n | 'complete'\n | 'canceled'\n\nexport const DATE_FORMAT_API = 'yyyy-MM-dd'\nexport const DATE_FORMAT = 'dd-MM-yyyy'\n"],"names":["Gender","isDevelopment","process","env","NEXT_PUBLIC_DEPLOY_ENV","IS_SSR","window","locale","NEXT_PUBLIC_DEPLOY_LOCALE","GOOGLE_MAP_KEY","NEXT_PUBLIC_GOOGLE_MAP_KEY","GOOGLE_ADMIN_LOCATION_KEY","NEXT_PUBLIC_ADMIN_GOOGLE_LOCATION_KEY","GOOGLE_CLIENT_ID","NEXT_PUBLIC_GOOGLE_CLIENT_ID","DOMAIN_LOCALES","DISCOVER_URL_FE","isProduction","concat","DISCOVER_URL_BE","TOGETHER_URL_BE","NEXT_PUBLIC_TOGETHER_API_URL","TOGETHER_URL_FE","SSO_URL","NEXT_PUBLIC_SSO_URL","SEO_SCHEMA","HOME","JSON","stringify","description","inLanguage","name","potentialAction","target","url","CATEGORY","urlWithParams","itemCount","itemList","itemListElement","item","numberOfItems","BRAND","BRAND_DETAIL","PRODUCT_DETAIL","ID","TH","MY","KH","TW","MM","IN","VN","PH","LOGO_TYPE","SITE_NAME","SITE_NAME_FORMATTED","HOMEPAGE_IMAGE","SITE_ID","INSIDER_TAG","TOOLTIP_IMAGE","CATEGORIES_TYPE","LINKEDIN","FACEBOOK","INSTAGRAM","TWITTER","YOUTUBE","PRIVACY","TERM_OF_USE","PRIVACY_POLICY","EDITORIAL_CORRECTIONS_POLICY","ADVERTISING_SPONSOR_POLICY","POLICIES","FAQS","SITEMAP","ABOUT_US","ADVERTISEMENT","CONTACT_US","ABOUT_GO_CARE","HEALTH_TOOLS","EXECUTIVE_BIOS","RECRUITMENT","FACILITY","POLICIES_EN","CONTACT_EN","EDITORIAL_POLICY","EDITORIAL_POLICY_EN","type","rel","href","sizes","content","id","IDR","PRODUCT","SEARCH","PROFILE","PROFILE_MANAGE_ORDERS","PROFILE_MANAGE_ADDRESS","PROFILE_VOUCHER","PROFILE_MEMBER_CARD","CART","CART_CHECKOUT","ORDER_CONFIRMATION","PROMOTION","isDefined","argument","GenderLabel","dataFormatter","formatAutoCompleteAddress","address","place_id","placeId","formatPrice","price","formattedPrice","parseInt","Intl","NumberFormat","format","formatHotSearchKeyword","data","text","formatHelpfulUrl","featuredImage","featured_image","formatCategory","parentId","parentFullSlug","currentFullSlug","slug","children","_b","_a","map","call","childCategory","logo","fullSlug","backgroundColor","color","theme","colors","teal50","products","_c","formatProduct","formatFooterInfo","branches","branch","flag","verified","_e","_d","general","_f","verifiedItem","image","menu","_h","_g","menuItem","menu_title","items","title","socials","_k","_j","social","_l","icon","_m","_p","_o","_r","_q","copyright","_t","_s","_u","formatNavigation","hotSearchKeywords","hot_search_keywords","helpfulUrls","helpful_urls","categories","category","footer","storeId","store_id","customerId","customer_id","cartItemsQty","cart_items_qty","formatPriceInfo","priceInfoApi","final","regular","discountPercent","discount_percent","productApi","defaultPriceInfo","thumbnail","averageRating","Number","average_rating","toFixed","reviewsCount","reviews_count","tag","sku","images","tags","unit","brand","productsCount","products_count","productPromotions","product_promotions","formatProductPromotion","filter","c","isInStock","is_in_stock","formatBanner","bannerApi","alt","image_alt","formatBlogPost","blogPostApi","link","postData","post_data","reviewed","author","formatBlogPostDataReviewedUser","undefined","editor","expert","factCheck","fact_check","isAuthor","Boolean","is_author","termId","term_id","permalink","textColor","text_color","postDate","post_date","postModified","post_modified","modifiedTime","modified_time","blogPostDataReviewedUserApi","userId","user_id","formerRole","former_role","role","displayName","display_name","profileUrl","profile_url","avatar","avatarThumbnail","avatar_thumbnail","turnOffProfile","turn_off_profile","formatBrand","brandApi","position","isPopular","is_popular","summary","banners","bestsellerProducts","bestseller_products","formatHomePage","homePageApi","brands","hotDeals","hot_deals","newProducts","new_products","slideBanners","slide_banners","subBanners","sub_banners","footerBanners","footer_banners","blogPosts","blog_posts","popularCategories","popular_categories","suggestProducts","suggest_products","promotions","_v","formatPromotion","formatCategoryPage","categoryPageApi","formatBrandPage","brandPageApi","formatPagination","paginationApi","current","first","itemsPerPage","items_per_page","last","next","prev","totalItems","total_items","formatProductDetailPage","productDetailPageApi","__assign","relatedProducts","related_products","viewedProducts","viewed_products","formatProductReview","productReview","reviewId","review_id","createdAt","created_at","detail","nickname","nick_name","ratingVotes","rating_votes","vote","ratingCode","rating_code","value","percent","productPromotionApi","expirationDate","expiration_date","promotionApi","expiredDate","expired_date","points","metaTitle","meta_title","metaKeywords","meta_keywords","metaDescription","meta_description","formatCustomAttributes","customAttributesApi","length","find","attribute_code","formatAddress","addressApi","fullName","firstname","telephone","province","region","region_id","label","district","custom_attributes","commune","street","isDefault","default_billing","default_shipping","fullAddress","extension_attributes","full_address","formatProvince","provinceApi","available_regions","formatDistrict","districtApi","districts","formatCommune","communeApi","communes","formatOrder","orderApi","orderNumber","order_number","shippingData","shipping_data","shippingMethod","shipping_method","shippingDescription","shipping_description","shippingAddress","shipping_address","storeAddress","orderedDate","ordered_date","status","totals","subtotal","shippingAmount","shipping_amount","discountAmount","discount_amount","grandTotal","grand_total","p","rowTotal","row_total","qty","paymentMethod","payment_method","formatStatistic","statistic","pending","stt","amount","processing","delivering","complete","canceled","formatCartItem","cartItemApi","itemId","item_id","basePrice","base_price","productType","product_type","quoteId","quote_id","urlProduct","url_key","formatCartAddress","cartAddressApi","customerAddressId","customer_address_id","regionId","regionCode","region_code","countryId","country_id","postcode","city","lastname","email","sameAsBilling","same_as_billing","saveInAddressBook","save_in_address_book","formatEstimatedShipping","estimatedShippingApi","carrierCode","carrier_code","methodCode","method_code","carrierTitle","carrier_title","methodTitle","method_title","baseAmount","base_amount","available","errorMessage","error_message","priceExclTax","price_excl_tax","priceInclTax","price_incl_tax","formatCartLoggedInCustomer","cartLoggedInCustomerApi","groupId","group_id","updatedAt","updated_at","createdIn","created_in","websiteId","website_id","addresses","disableAutoGroupChange","disable_auto_group_change","isSubscribed","is_subscribed","formatCart","cartApi","isActive","is_active","isVirtual","is_virtual","sort","a","b","itemsCount","items_count","itemsQty","items_qty","customer","billingAddress","billing_address","origOrderId","orig_order_id","currency","globalCurrencyCode","global_currency_code","baseCurrencyCode","base_currency_code","storeCurrencyCode","store_currency_code","quoteCurrencyCode","quote_currency_code","storeToBaseRate","store_to_base_rate","storeToQuoteRate","store_to_quote_rate","baseToGlobalRate","base_to_global_rate","baseToQuoteRate","base_to_quote_rate","customerIsGuest","customer_is_guest","customerNoteNotify","customer_note_notify","customerTaxClassId","customer_tax_class_id","shippingAssignments","shipping_assignments","s","shipping","method","formatCartTotal","cartTotalApi","baseGrandTotal","base_grand_total","baseSubtotal","base_subtotal","baseDiscountAmount","base_discount_amount","subtotalWithDiscount","subtotal_with_discount","baseSubtotalWithDiscount","base_subtotal_with_discount","baseShippingAmount","base_shipping_amount","shippingDiscountAmount","shipping_discount_amount","baseShippingDiscountAmount","base_shipping_discount_amount","taxAmount","tax_amount","baseTaxAmount","base_tax_amount","weeeTaxAppliedAmount","weee_tax_applied_amount","shippingTaxAmount","shipping_tax_amount","baseShippingTaxAmount","base_shipping_tax_amount","subtotalInclTax","subtotal_incl_tax","shippingInclTax","shipping_incl_tax","baseShippingInclTax","base_shipping_incl_tax","coupon","couponCode","coupon_code","couponDescription","coupon_description_text","baseRowTotal","base_row_total","rowTotalWithDiscount","row_total_with_discount","taxPercent","tax_percent","basePriceInclTax","base_price_incl_tax","rowTotalInclTax","row_total_incl_tax","baseRowTotalInclTax","base_row_total_incl_tax","options","weeeTaxApplied","weee_tax_applied","totalSegments","total_segments","formatPaymentMethod","methods","code","payment_code","payment_title","payment_thumbnail","formatPaymentInformation","paymentInformationApi","paymentMethods","payment_detail_info","formatOrderConfirmation","orderConfirmationApi","isSuccess","is_success","orderInfo","order_info","formatCoupons","couponListApi","couponApi","formatShippings","shippingsApi","shippingApi"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types-dd4dd7f7.js","sources":["../../src/ecom/interfaces/constants.ts","../../src/ecom/dataFormatter/lib/utils.ts","../../src/ecom/dataFormatter/index.ts","../../src/ecom/interfaces/types.ts"],"sourcesContent":["import { isProduction } from 'src/interfaces/constants'\n\nimport {\n CategoriesLayout,\n LocaleType,\n LocalisedSlugsType,\n LogoType,\n} from './types'\n\nexport const isDevelopment =\n process.env.NEXT_PUBLIC_DEPLOY_ENV === 'development'\nexport const IS_SSR = typeof window === 'undefined'\nexport const locale: LocaleType = process.env.NEXT_PUBLIC_DEPLOY_LOCALE\n ? (process.env.NEXT_PUBLIC_DEPLOY_LOCALE as LocaleType)\n : 'vi-VN'\n\nexport const BEARER_TOKEN_COOKIE = 'hhg_user_token'\nexport const BEARER_ADMIN_TOKEN_COOKIE = 'hhg_admin_token'\nexport const GUEST_CART_ID_COOKIE = 'hhg_guest_cart_id'\n\nexport const GOOGLE_MAP_KEY = process.env.NEXT_PUBLIC_GOOGLE_MAP_KEY || ''\nexport const GOOGLE_ADMIN_LOCATION_KEY =\n process.env.NEXT_PUBLIC_ADMIN_GOOGLE_LOCATION_KEY\nexport const GOOGLE_CLIENT_ID =\n process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID ||\n '289442006438-cihobuq1h3r4426pur7u0e43fqdnep59.apps.googleusercontent.com'\nexport const GOOGLE_CALENDAR_API_KEY = ''\n\nexport const basePath = 'shop'\nexport const SSO_USER_BASE_PATH = 'user'\nexport const CARE_BASE_PATH = 'care'\nexport const COMMUNITY_BASE_PATH = 'community'\nexport const HEALTH_TOOLs_BASE_PATH = 'health-tools'\nexport const NOTIFICATION_TIME_OUT = 3000\n\nexport const DOMAIN_LOCALES: { [key in LocaleType]: string } = {\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}\n\nexport const DISCOVER_URL_FE = isDevelopment\n ? 'http://localhost:3001'\n : isProduction\n ? `https://${DOMAIN_LOCALES[locale]}`\n : `https://discover.${DOMAIN_LOCALES[locale]}`\n\nexport const DISCOVER_URL_BE = isProduction\n ? `https://wp.${DOMAIN_LOCALES[locale]}/`\n : `https://staging.${DOMAIN_LOCALES[locale]}/`\n\nexport const TOGETHER_URL_BE =\n process.env.NEXT_PUBLIC_TOGETHER_API_URL &&\n process.env.NEXT_PUBLIC_TOGETHER_API_URL !== ''\n ? process.env.NEXT_PUBLIC_TOGETHER_API_URL\n : `https://together.${DOMAIN_LOCALES[locale]}/`\n\nexport const TOGETHER_URL_FE = `${DISCOVER_URL_FE}/community`\n\nexport const SSO_URL =\n process.env.NEXT_PUBLIC_SSO_URL || 'http://staging-id.hellobacsi.com/'\n\nexport const DISCOVERY_FOOTER_URL = '#'\nexport const HEALTH_CARE_FOOTER_URL = '#'\nexport const HEALTH_TOOLS_FOOTER_URL = '#'\nexport const HEALTH_TOGETHER_FOOTER_URL = '#'\nexport const POLICIES_FOOTER_URL = '#'\nexport const FAQ_FOOTER_URL = '#'\nexport const SITEMAP_FOOTER_URL = '#'\nexport const ABOUT_US_FOOTER_URL = '#'\nexport const EXECUTIVE_BIOS_FOOTER_URL = '#'\nexport const ADVERTISING_FOOTER_URL = '#'\nexport const CONTACT_US_FOOTER_URL = '#'\nexport const ABOUT_GO_CARE_FOOTER_URL = '#'\n\nexport enum Gender {\n FEMALE = 0,\n MALE = 1,\n ANY = 2,\n}\n\nexport const EMAIL_REGEX =\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\nexport const COUNTRY_SITENAME: { [id: string]: string } = {\n ID: 'Hello Sehat',\n TH: 'Hello Khunmor',\n MY: 'Hello Doktor',\n KH: 'Hello Krupet',\n TW: 'Hello Yishi',\n MM: 'Hello Sayarwon',\n IN: 'Hello Swasthya',\n VN: 'Hello Bacsi',\n PH: 'Hello Doctor',\n}\n\nexport const LOCALE_SPECS: {\n [key in LocaleType]: { [key: string]: string }\n} = {\n 'vi-VN': {\n LOGO_TYPE: 'hellobacsi' as LogoType,\n SITE_NAME: 'HelloBacsi',\n SITE_NAME_FORMATTED: 'Hello Bacsi',\n HOMEPAGE_IMAGE: 'https://hellobacsi.com/images/country-thumbnails/VN.png',\n SITE_ID: '1',\n INSIDER_TAG: '//hellobacsivn.api.useinsider.com/ins.js?id=10003798',\n TOOLTIP_IMAGE: '/images/tooltips-vn.png',\n },\n 'en-PH': {\n LOGO_TYPE: 'hellodoctor' as LogoType,\n SITE_NAME: 'HelloDoctor',\n HOMEPAGE_IMAGE:\n 'https://hellodoctor.com.ph/images/country-thumbnails/PH.png',\n SITE_NAME_FORMATTED: 'Hello Doctor',\n SITE_ID: '9',\n CATEGORIES_TYPE: 'short' as CategoriesLayout,\n INSIDER_TAG: '//hellodoctorph.api.useinsider.com/ins.js?id=10004527',\n TOOLTIP_IMAGE: '/images/tooltips-ph.png',\n },\n 'th-TH': {\n LOGO_TYPE: 'hellokhunmor' as LogoType,\n SITE_NAME: 'HelloKhunmor',\n HOMEPAGE_IMAGE: 'https://hellokhunmor.com/images/country-thumbnails/TH.png',\n SITE_NAME_FORMATTED: 'Hello Khunmor',\n SITE_ID: '3',\n CATEGORIES_TYPE: 'long' as CategoriesLayout,\n INSIDER_TAG: '//hellokhunmor.api.useinsider.com/ins.js?id=10004524',\n TOOLTIP_IMAGE: '/images/tooltips-th.png',\n },\n 'km-KH': {\n LOGO_TYPE: 'hellokrupet' as LogoType,\n SITE_NAME: 'HelloKrupet',\n HOMEPAGE_IMAGE: 'https://hellokrupet.com/images/country-thumbnails/KH.JPG',\n SITE_NAME_FORMATTED: 'Hello Krupet',\n SITE_ID: '4',\n CATEGORIES_TYPE: 'long' as CategoriesLayout,\n INSIDER_TAG: '//hellokrupet.api.useinsider.com/ins.js?id=10004523',\n TOOLTIP_IMAGE: '/images/tooltips-kh.png',\n },\n 'my-MM': {\n LOGO_TYPE: 'hellosayarwon' as LogoType,\n SITE_NAME: 'HelloSayarwon',\n HOMEPAGE_IMAGE:\n 'https://hellosayarwon.com/images/country-thumbnails/PH.png',\n SITE_NAME_FORMATTED: 'Hello Sayarwon',\n SITE_ID: '7',\n INSIDER_TAG: '//hellosayarwon.api.useinsider.com/ins.js?id=10004522',\n },\n 'zh-TW': {\n LOGO_TYPE: 'helloyishi' as LogoType,\n SITE_NAME: 'HelloYishi',\n HOMEPAGE_IMAGE:\n 'https://helloyishi.com.tw/images/country-thumbnails/TW.png',\n SITE_NAME_FORMATTED: 'Hello Yishi',\n SITE_ID: '6',\n INSIDER_TAG: '//helloyishi.api.useinsider.com/ins.js?id=10004526',\n TOOLTIP_IMAGE: '/images/tooltips-tw.png',\n },\n 'id-ID': {\n LOGO_TYPE: 'hellosehat' as LogoType,\n SITE_NAME: 'HelloSehat',\n HOMEPAGE_IMAGE: 'https://hellosehat.com/images/country-thumbnails/ID.png',\n SITE_NAME_FORMATTED: 'Hello Sehat',\n SITE_ID: '2',\n INSIDER_TAG: '//hellosehat.api.useinsider.com/ins.js?id=10003799',\n TOOLTIP_IMAGE: '/images/tooltips-id.png',\n },\n 'hi-IN': {\n LOGO_TYPE: 'helloswasthya' as LogoType,\n SITE_NAME: 'HelloSwasthya',\n HOMEPAGE_IMAGE:\n 'https://helloswasthya.com/images/country-thumbnails/IN.png',\n SITE_NAME_FORMATTED: 'हैलो स्वास्थ्य',\n SITE_ID: '8',\n CATEGORIES_TYPE: 'long' as CategoriesLayout,\n INSIDER_TAG: '//helloswasthya.api.useinsider.com/ins.js?id=10004498',\n TOOLTIP_IMAGE: '/images/tooltips-in.png',\n },\n 'ms-MY': {\n LOGO_TYPE: 'hellodoktor' as LogoType,\n SITE_NAME: 'HelloDoktor',\n HOMEPAGE_IMAGE: 'https://hellodoktor.com/images/country-thumbnails/MY.png',\n SITE_NAME_FORMATTED: 'Hello Doktor',\n SITE_ID: '5',\n INSIDER_TAG: '//hellodoktor.api.useinsider.com/ins.js?id=10004525',\n TOOLTIP_IMAGE: '/images/tooltips-my.png',\n },\n}\n\nexport const SOCIAL_MEDIA: {\n [key in LocaleType]: { [key: string]: string | null }\n} = {\n 'vi-VN': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/hellobacsi/',\n INSTAGRAM: 'https://www.instagram.com/hellobacsi/',\n TWITTER: null,\n YOUTUBE: 'https://www.youtube.com/channel/UCYHzHDXngnB7jkmcQgXwE0w',\n },\n 'en-PH': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/HelloDoctorPH/',\n INSTAGRAM: 'https://www.instagram.com/hellodoctor_ph/',\n TWITTER: null,\n },\n 'km-KH': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/hellokrupet/',\n INSTAGRAM: 'https://www.instagram.com/hellokrupetofficial/',\n TWITTER: null,\n YOUTUBE: 'https://www.youtube.com/channel/UCVK4p9YPIMkmoerk3X-y-TQ',\n },\n 'ms-MY': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/HelloDoktorMY/',\n INSTAGRAM: 'https://www.instagram.com/_hellodoktor_/',\n TWITTER: null,\n },\n 'id-ID': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-sehat/',\n FACEBOOK: 'https://www.facebook.com/hellosehat',\n INSTAGRAM: 'https://www.instagram.com/hellosehat/',\n TWITTER: 'https://twitter.com/HelloSehat',\n },\n 'my-MM': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/hellosayarwon/',\n INSTAGRAM: 'https://www.facebook.com/hellosayarwon/',\n TWITTER: null,\n },\n 'zh-TW': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/helloyishi/',\n INSTAGRAM: 'https://www.instagram.com/helloyishi/',\n TWITTER: null,\n },\n 'hi-IN': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/HelloSwasthya/',\n INSTAGRAM: 'https://www.instagram.com/hello_swasthya/',\n TWITTER: null,\n },\n 'th-TH': {\n LINKEDIN: 'https://www.linkedin.com/company/hello-health-group/',\n FACEBOOK: 'https://www.facebook.com/hellokhunmor/',\n INSTAGRAM: 'https://www.instagram.com/hellokhunmor/',\n TWITTER: null,\n YOUTUBE: 'https://www.youtube.com/channel/UCbdbow4UhKfa7rqIhclNPIQ/',\n },\n}\n\nexport const FLAG_LINKS: { [id: string]: string } = {\n ID: 'https://hellosehat.com/',\n TH: 'https://hellokhunmor.com/',\n MY: 'https://hellodoktor.com/',\n KH: 'https://hellokrupet.com/',\n TW: 'https://helloyishi.com.tw/',\n MM: 'https://hellosayarwon.com/',\n IN: 'https://helloswasthya.com/',\n VN: 'https://hellobacsi.com/',\n PH: 'https://hellodoctor.com.ph/',\n}\n\nexport const STATIC_PAGES: {\n [key in LocaleType]: { [key: string]: string | null }\n} = {\n 'vi-VN': {\n PRIVACY: '/privacy',\n TERM_OF_USE: '/dieu-khoan-su-dung',\n PRIVACY_POLICY: '/chinh-sach-quyen-rieng-tu',\n EDITORIAL_CORRECTIONS_POLICY: '/chinh-sach-bien-tap-chinh-sua',\n ADVERTISING_SPONSOR_POLICY: '/chinh-sach-quang-cao-tai-tro',\n POLICIES: '/chinh-sach',\n FAQS: '/thong-tin-quan-trong',\n SITEMAP: '/sitemap',\n ABOUT_US: '/about-us',\n ADVERTISEMENT: '/quang-cao-voi-chung-toi',\n CONTACT_US: '/lien-he',\n ABOUT_GO_CARE: '/about-go-care',\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: 'https://hellohealthgroup.com/hello-bacsi/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'km-KH': {\n POLICIES: '/policies',\n TERM_OF_USE: '/ខនិងលក្ខខណ្ឌ',\n PRIVACY_POLICY: '/គោលការណ៍ឯកជនភាព',\n EDITORIAL_CORRECTIONS_POLICY: '/គោលការណ៍ខ្លឹមសារមាតិកា',\n ADVERTISING_SPONSOR_POLICY: '/គោលការណ៍ផ្សាយពាណិជ្ជកម',\n FAQS: '/faqs',\n SITEMAP: '/sitemap',\n ABOUT_US: '/about-us',\n ADVERTISEMENT: '/advertisement',\n CONTACT_US: '/contact-us',\n ABOUT_GO_CARE: '/about-go-care',\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: '/#',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'en-PH': {\n POLICIES: '/policies',\n TERM_OF_USE: '/terms-of-use',\n PRIVACY_POLICY: '/privacy-policy',\n EDITORIAL_CORRECTIONS_POLICY: '/editorial-and-corrections-policy',\n ADVERTISING_SPONSOR_POLICY: '/advertising-and-sponsor-policy',\n FAQS: null,\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: null,\n CONTACT_US: '/contact-us',\n ABOUT_GO_CARE: null,\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: 'https://hellohealthgroup.com/management-team/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'my-MM': {\n POLICIES: '/polisi-terma-syarat',\n TERM_OF_USE: '/terms-of-use',\n PRIVACY_POLICY: '/privacy-policy',\n EDITORIAL_CORRECTIONS_POLICY: '/editorial-policy',\n ADVERTISING_SPONSOR_POLICY: '/advertising-policy',\n FAQS: null,\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: '/pengiklanan',\n CONTACT_US: '/hubungi-kami',\n ABOUT_GO_CARE: null,\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: ' https://hellohealthgroup.com/hello-doktor/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'zh-TW': {\n POLICIES: '/policies',\n TERM_OF_USE: '/terms-of-use',\n PRIVACY_POLICY: '/privacy-policy',\n EDITORIAL_CORRECTIONS_POLICY: '/editorial-and-corrections-policy',\n ADVERTISING_SPONSOR_POLICY: '/advertising-and-sponsor-policy',\n FAQS: null,\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: '/advertising',\n CONTACT_US: '/contact-us',\n ABOUT_GO_CARE: null,\n FACILITY: '/facility',\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: 'https://hellohealthgroup.com/management-team/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'id-ID': {\n POLICIES_EN: '/policies',\n TERM_OF_USE: '/kebijakan-pengguna',\n PRIVACY_POLICY: '/kebijakan-privasi',\n EDITORIAL_CORRECTIONS_POLICY: '/kebijakan-editorial',\n ADVERTISING_SPONSOR_POLICY: '/kebijakan-iklan',\n POLICIES: '/kebijakan',\n FAQS: null,\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: null,\n CONTACT_US: '/kontak-kami',\n CONTACT_EN: '/contact',\n ABOUT_GO_CARE: null,\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: 'https://hellohealthgroup.com/hello-sehat/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n EDITORIAL_POLICY: '/edit-id',\n EDITORIAL_POLICY_EN: '/edit-en',\n },\n 'hi-IN': {\n POLICIES: '/policies',\n TERM_OF_USE: '/terms-of-use',\n PRIVACY_POLICY: '/privacy-policy',\n EDITORIAL_CORRECTIONS_POLICY: '/editorial-and-corrections-policy',\n ADVERTISING_SPONSOR_POLICY: '/advertising-and-sponsor-policy',\n FAQS: null,\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: null,\n CONTACT_US: '/contact-us',\n ABOUT_GO_CARE: null,\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: 'https://hellohealthgroup.com/management-team/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'ms-MY': {\n POLICIES: '/polisi-terma-syarat',\n TERM_OF_USE: '/terma-dan-syarat',\n PRIVACY_POLICY: '/polisi-privasi',\n EDITORIAL_CORRECTIONS_POLICY: '/polisi-editorial',\n ADVERTISING_SPONSOR_POLICY: '/polisi-pengiklanan',\n FAQS: null,\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: '/pengiklanan',\n CONTACT_US: '/hubungi-kami',\n ABOUT_GO_CARE: null,\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: ' https://hellohealthgroup.com/hello-doktor/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n 'th-TH': {\n POLICIES_EN: '/policies',\n TERM_OF_USE: '/เงื่อนใขการใช้งาน',\n PRIVACY_POLICY: '/นโยบายความเป็นส่วนตัว',\n EDITORIAL_CORRECTIONS_POLICY: '/นโยบายบรรณธิการ',\n ADVERTISING_SPONSOR_POLICY: '/นโยบายการโฆษณาและผู้สนับสนุน',\n POLICIES: '/นโยบาย',\n FAQS: '/คำถามที่พบบ่อย',\n SITEMAP: null,\n ABOUT_US: '/about-us',\n ADVERTISEMENT: '/ลงโฆษณากับเรา',\n CONTACT_US: '/contact-us',\n ABOUT_GO_CARE: null,\n HEALTH_TOOLS: '/health-tools',\n EXECUTIVE_BIOS: 'https://hellohealthgroup.com/management-team/',\n RECRUITMENT: 'https://hellohealthgroup.com/careers/',\n },\n}\n\nexport const FAVICONS: {\n [key in LocaleType]: (\n | {\n type: 'link'\n rel: string\n href: string\n sizes?: string\n }\n | {\n type: 'meta'\n name: string\n content: string\n }\n )[]\n} = {\n 'vi-VN': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n 'km-KH': [\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/km-KH/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/km-KH/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/km-KH/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/km-KH/icon-270x270.png',\n },\n ],\n 'en-PH': [\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/en-PH/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/en-PH/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon',\n href: '/by-locales/en-PH/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/en-PH/icon-270x270.png',\n },\n ],\n 'id-ID': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n 'ms-MY': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n 'th-TH': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n 'my-MM': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n 'zh-TW': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n 'hi-IN': [\n {\n type: 'link',\n rel: 'shortcut icon',\n href: '/by-locales/vi-VN/favicon.ico',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-32x32.png',\n sizes: '32x32',\n },\n {\n type: 'link',\n rel: 'icon',\n href: '/by-locales/vi-VN/icon-192x192.png',\n sizes: '192x192',\n },\n {\n type: 'link',\n rel: 'apple-touch-icon-precomposed',\n href: '/by-locales/vi-VN/icon-180x180.png',\n },\n {\n type: 'meta',\n name: 'msapplication-TileImage',\n content: '/by-locales/vi-VN/icon-270x270.png',\n },\n ],\n}\n\nexport const LOCALE_COUNTRY: {\n [key in LocaleType]: {\n [key: string]: string | number\n }\n} = {\n 'vi-VN': { id: 1, name: 'Vietnam' },\n 'id-ID': { id: 2, name: 'Indonesia' },\n 'ms-MY': { id: 3, name: 'Malaysia' },\n 'km-KH': { id: 4, name: 'Cambodia' },\n 'en-PH': { id: 5, name: 'Philippines' },\n 'th-TH': { id: 6, name: 'Thai Lan' },\n 'my-MM': { id: 7, name: 'Myanmar' },\n 'zh-TW': { id: 8, name: 'Taiwan' },\n 'hi-IN': { id: 9, name: 'India' },\n}\n\nexport const MAX_ALLOWED_IMG_SIZE = 20 * 1024 * 1024\n\nexport const COUNTRY_CODE_BY_LOCALE: {\n [key in LocaleType]: string\n} = {\n 'vi-VN': 'vn',\n 'id-ID': 'id',\n 'ms-MY': 'my',\n 'km-KH': 'kh',\n 'en-PH': 'ph',\n 'th-TH': 'th',\n 'my-MM': 'mm',\n 'zh-TW': 'tw',\n 'hi-IN': 'in',\n}\n\nexport const COUNTRY_CURRENCY_SYMBOL: { [key in LocaleType]: string } = {\n 'vi-VN': '₫',\n 'id-ID': 'Rp',\n 'ms-MY': 'RM',\n 'km-KH': '៛',\n 'en-PH': '₱',\n 'th-TH': '฿',\n 'my-MM': 'K',\n 'zh-TW': '$', // New Taiwan Dollar can be written as NTD$ or $\n 'hi-IN': '₹',\n}\n\nexport const CURRENCY_PREFIX: Record<string, string> = {\n IDR: 'Dimulai dari', // Dimulai dari IDR 800,000\n}\n\nexport type LOCALISED_SLUGS_VALUE = {\n [key in LocalisedSlugsType]?: string\n}\nexport const LOCALISED_SLUGS: {\n [key in LocaleType]?: LOCALISED_SLUGS_VALUE\n} = {\n 'en-PH': {\n PRODUCT: 'product',\n CATEGORY: 'category',\n BRAND: 'brand',\n SEARCH: 'search',\n PROFILE: 'profile',\n PROFILE_MANAGE_ORDERS: 'profile/manage-orders',\n PROFILE_MANAGE_ADDRESS: 'profile/deliver-address',\n PROFILE_VOUCHER: 'profile/voucher',\n PROFILE_MEMBER_CARD: 'profile/member-card',\n CART: 'cart',\n CART_CHECKOUT: 'cart/checkout',\n ORDER_CONFIRMATION: 'order-confirmation',\n PROMOTION: 'promotion',\n },\n 'vi-VN': {\n PRODUCT: 'san-pham',\n CATEGORY: 'danh-muc',\n BRAND: 'thuong-hieu',\n SEARCH: 'tim-kiem',\n PROFILE: 'ho-so',\n PROFILE_MANAGE_ORDERS: 'ho-so/quan-li-don-hang',\n PROFILE_MANAGE_ADDRESS: 'ho-so/dia-chi-giao-hang',\n PROFILE_VOUCHER: 'ho-so/khuyen-mai',\n PROFILE_MEMBER_CARD: 'ho-so/the-thanh-vien',\n CART: 'gio-hang',\n CART_CHECKOUT: 'gio-hang/thanh-toan',\n ORDER_CONFIRMATION: 'kiem-tra-don-hang',\n PROMOTION: 'khuyen-mai',\n },\n}\n\nexport const HEADER_LOGO_ALIGNMENT = '188px'\n\nexport const globalFontFamily = 'Inter'\n\nexport const ENABLE_COMMUNITY_LOCALES: LocaleType[] = [\n 'vi-VN',\n 'id-ID',\n 'ms-MY',\n 'en-PH',\n 'th-TH',\n]\n\nexport const ENABLE_CARE_LOCALES: LocaleType[] = ['vi-VN', 'id-ID', 'en-PH']\n\nexport const ENABLE_HEALTH_PARENTING_LOCALES: LocaleType[] = [\n 'vi-VN',\n 'en-PH',\n 'id-ID',\n 'ms-MY',\n 'km-KH',\n 'th-TH',\n 'my-MM',\n 'zh-TW',\n]\n\nexport const SEO_SCHEMA: {\n [key in LocaleType]?: {\n HOME?: () => string\n CATEGORY?: (\n urlWithParams: string,\n itemCount?: number,\n itemList?: {\n '@type': 'Product'\n image: string\n url: string\n name: string\n }[],\n ) => string\n BRAND?: (\n urlWithParams: string,\n itemCount?: number,\n itemList?: {\n '@type': 'Brand'\n name: string\n image: string\n url: string\n }[],\n ) => string\n BRAND_DETAIL?: (\n urlWithParams: string,\n itemCount?: number,\n itemList?: {\n '@type': 'Brand_Detail'\n name: string\n image: string\n url: string\n },\n ) => string\n PRODUCT_DETAIL?: (\n urlWithParams: string,\n itemCount?: number,\n itemList?: {\n '@type': 'Product_Detail'\n name: string\n image: string\n url: string\n },\n ) => string\n }\n} = {\n 'vi-VN': {\n HOME: () =>\n JSON.stringify({\n '@context': 'https://schema.org',\n '@graph': [\n {\n '@id': 'https://hellobacsi.com/shop/#website',\n '@type': 'WebSite',\n description: 'Hello Bacsi - Health Information',\n inLanguage: 'vi-VN',\n name: 'Hello Bacsi',\n potentialAction: [\n {\n '@type': 'SearchAction',\n 'query-input': 'required name=search_term_string',\n target:\n 'https://hellobacsi.com/shop/tim-kiem/?keyword={search_term_string}',\n },\n ],\n url: 'https://hellobacsi.com/shop/',\n },\n ],\n }),\n CATEGORY: (urlWithParams = '', itemCount = 0, itemList = []) =>\n JSON.stringify({\n '@context': 'https://schema.org',\n '@graph': [\n {\n '@id': 'https://hellobacsi.com/shop/#breadcrumb',\n '@type': 'BreadcrumbList',\n itemListElement: [\n {\n '@type': 'ListItem',\n item: {\n '@id': 'https://hellobacsi.com/shop/',\n '@type': 'WebPage',\n name: 'Hello Bacsi',\n url: 'https://hellobacsi.com/shop/',\n },\n },\n {\n '@type': 'ListItem',\n item: {\n '@id': 'https://hellobacsi.com/shop/danh-muc',\n '@type': 'WebPage',\n name: 'Hello Bacsi - Danh Muc',\n url: 'https://hellobacsi.com/shop/danh-muc',\n },\n },\n ],\n },\n {\n '@type': 'ItemList',\n url: urlWithParams,\n numberOfItems: itemCount,\n itemListElement: itemList,\n },\n ],\n }),\n BRAND: (urlWithParams = '', itemCount = 0, itemList = []) =>\n JSON.stringify({\n '@context': 'https://schema.org',\n '@graph': [\n {\n '@id': 'https://hellobacsi.com/shop/#breadcrumb',\n '@type': 'BreadcrumbList',\n itemListElement: [\n {\n '@type': 'ListItem',\n item: {\n '@id': 'https://hellobacsi.com/shop/',\n '@type': 'WebPage',\n name: 'Hello Bacsi',\n url: 'https://hellobacsi.com/shop/',\n },\n },\n {\n '@type': 'ListItem',\n item: {\n '@id': 'https://hellobacsi.com/shop/thuong-hieu',\n '@type': 'WebPage',\n name: 'Hello Bacsi - Thuong Hieu',\n url: 'https://hellobacsi.com/shop/thuong-hieu',\n },\n },\n ],\n },\n {\n '@type': 'ItemList',\n url: urlWithParams,\n numberOfItems: itemCount,\n itemListElement: itemList,\n },\n ],\n }),\n BRAND_DETAIL: (urlWithParams = '', itemCount = 0, itemList) =>\n JSON.stringify({\n '@context': 'https://schema.org',\n '@graph': [\n {\n '@id': 'https://hellobacsi.com/shop/thuong-hieu/#brand',\n '@type': 'BrandDetail',\n itemListElement: [\n {\n '@type': 'Item',\n item: {\n '@id': `https://hellobacsi.com/shop${urlWithParams}`,\n '@type': 'WebPage',\n name: 'Hello Bacsi - Thuong Hieu',\n url: `https://hellobacsi.com/shop${urlWithParams}`,\n },\n },\n ],\n },\n {\n '@type': 'BrandDetail',\n url: `https://hellobacsi.com/shop${urlWithParams}`,\n numberOfItems: itemCount,\n itemListElement: itemList ?? {},\n },\n ],\n }),\n PRODUCT_DETAIL: (urlWithParams = '', itemCount = 0, itemList) =>\n JSON.stringify({\n '@context': 'https://schema.org',\n '@graph': [\n {\n '@id': 'https://hellobacsi.com/shop/san-pham/#product',\n '@type': 'ProductDetail',\n itemListElement: [\n {\n '@type': 'Item',\n item: {\n '@id': `https://hellobacsi.com/shop/san-pham/${urlWithParams}`,\n '@type': 'WebPage',\n name: 'Hello Bacsi - Thuong Hieu',\n url: `https://hellobacsi.com/shop/san-pham/${urlWithParams}`,\n },\n },\n ],\n },\n {\n '@type': 'BrandDetail',\n url: urlWithParams,\n numberOfItems: itemCount,\n itemListElement: itemList ?? {},\n },\n ],\n }),\n },\n}\n","import { LocaleType } from 'interfaces/types'\n\nimport { COUNTRY_CURRENCY_SYMBOL } from '../../interfaces/constants'\n\nexport function isDefined<T>(argument: T | undefined | null): argument is T {\n return argument !== undefined && argument !== null\n}\n\nexport function isNullOrUndefinedOrEmptyString<T>(\n argument: T | null | undefined | '',\n): argument is T {\n return argument === undefined || argument === null || argument === ''\n}\n\nexport function trimObjectForQuery(object: {\n [k: string]: string | number | null | undefined\n}) {\n Object.keys(object).forEach((k) => {\n if (isNullOrUndefinedOrEmptyString(object[k])) delete object[k]\n })\n return object\n}\n\nexport function numberWithCommas(x: number | string) {\n if (!x) return ''\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.')\n}\n\nexport function currencyFormat(\n x: number | string,\n locale: LocaleType,\n currency: string,\n) {\n if (!x || !locale) return `0 ${COUNTRY_CURRENCY_SYMBOL['vi-VN'] || ''}`\n\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currency,\n }).format(Number(x))\n}\n","import { theme } from 'src/misc/theme'\n\nimport {\n AutoCompleteAddressApi,\n CategoryApi,\n HelpfulUrlApi,\n HotSearchKeywordApi,\n NavigationApi,\n FooterInfoApi,\n PriceInfoApi,\n BlogPostApi,\n BannerApi,\n BlogPostDataReviewedUserApi,\n BrandApi,\n HomePageApi,\n ProductApi,\n CategoryPageApi,\n PaginationApi,\n BrandPageApi,\n ProductDetailPageApi,\n ProductReviewApi,\n PromotionApi,\n AddressApi,\n OrderApi,\n ProvinceApi,\n DistrictApi,\n CommuneApi,\n ProvinceListApi,\n DistrictListApi,\n CommuneListApi,\n CustomAttributesApi,\n StatisticApi,\n CartItemApi,\n CartAddressApi,\n CartLoggedInCustomerApi,\n CartApi,\n CartTotalApi,\n EstimatedShippingApi,\n OrderConfirmationApi,\n ProductPromotionApi,\n CouponListApi,\n CouponApi,\n ShippingApi,\n PaymentMethodsApi,\n ShippingInformation,\n} from './lib/apiTypes'\nimport {\n Address,\n AutoCompleteAddress,\n Banner,\n BlogPost,\n BlogPostDataReviewedUser,\n Brand,\n BrandPage,\n Category,\n CategoryPage,\n HelpfulUrl,\n HomePage,\n Navigation,\n Pagination,\n PopularSearchType,\n PriceInfo,\n Product,\n ProductDetailPage,\n ProductReview,\n Promotion,\n Order,\n Province,\n District,\n Commune,\n Statistic,\n CartItem,\n CartAddress,\n EstimatedShipping,\n CartLoggedInCustomer,\n Cart,\n CartTotal,\n PaymentInformation,\n OrderConfirmation,\n ProductPromotion,\n Coupon,\n Shipping,\n PaymentMethodInfo,\n} from './lib/dataTypes'\nimport { isDefined } from './lib/utils'\n\nexport const dataFormatter = {\n formatAutoCompleteAddress: (\n address: AutoCompleteAddressApi,\n ): AutoCompleteAddress | null => {\n if (!address || !address.place_id) return null\n return {\n placeId: address.place_id,\n description: address.description || '',\n }\n },\n formatPrice: (price: string | number, locale?: string) => {\n const formattedPrice = typeof price === 'string' ? parseInt(price) : price\n\n return new Intl.NumberFormat(locale || 'vi-VN').format(formattedPrice)\n },\n formatHotSearchKeyword: (data: HotSearchKeywordApi): PopularSearchType => {\n return {\n text: data?.name || '',\n }\n },\n formatHelpfulUrl: (data: HelpfulUrlApi): HelpfulUrl => {\n return {\n name: data?.name || '',\n featuredImage: data?.featured_image || '',\n url: data?.url || '',\n }\n },\n formatCategory: function (\n data: CategoryApi,\n parentId?: number,\n parentFullSlug?: string,\n ): Category {\n const currentFullSlug = parentFullSlug\n ? parentFullSlug + '/' + data.slug\n : data.slug\n const children =\n data?.children?.map?.((childCategory) => {\n return dataFormatter.formatCategory(\n childCategory,\n data.id,\n currentFullSlug,\n )\n }) || []\n return {\n id: data?.id,\n name: data?.name || '',\n logo: data?.logo || '',\n slug: data?.slug || '',\n fullSlug: currentFullSlug || '',\n children,\n backgroundColor: data.color || theme.colors.teal50,\n parentId: parentId || 0,\n products:\n (data.products?.map(dataFormatter.formatProduct) as Product[]) || [],\n }\n },\n formatFooterInfo: (data: FooterInfoApi | undefined): FooterInfoApi => {\n const branches: { flag: string; name: string; url: string }[] =\n data?.branch?.branch?.map?.((branch) => {\n return {\n flag: branch.flag || '',\n name: branch.name || '',\n url: branch.url || '',\n }\n }) || []\n\n const verified: {\n image: string\n url: string\n }[] =\n data?.general?.verified?.map?.((verifiedItem) => {\n return {\n image: verifiedItem.image || '',\n url: verifiedItem.url || '',\n }\n }) || []\n\n const menu: {\n menu_title: string\n items: {\n title: string\n url: string\n }[]\n }[] =\n data?.menu?.map?.((menuItem) => {\n return {\n menu_title: menuItem.menu_title,\n items: menuItem.items?.map?.((item) => {\n return {\n title: item.title,\n url: item.url,\n }\n }),\n }\n }) || []\n\n const socials: {\n icon: string\n name: string\n url: string\n }[] =\n data?.social?.socials?.map?.((social) => {\n return {\n icon: social.icon || '',\n name: social.name || '',\n url: social.url || '',\n }\n }) || []\n\n return {\n branch: {\n title: data?.branch?.title || '',\n branch: branches,\n },\n general: {\n logo: data?.general?.logo ?? '',\n content: data?.general?.content ?? '',\n copyright: data?.general?.copyright ?? '',\n verified,\n },\n menu,\n social: {\n title: data?.social?.title || '',\n socials,\n },\n }\n },\n formatNavigation: function (\n data: NavigationApi | null | undefined,\n ): Navigation {\n return {\n hotSearchKeywords:\n data?.hot_search_keywords?.map?.(\n dataFormatter.formatHotSearchKeyword,\n ) || [],\n helpfulUrls:\n data?.helpful_urls?.map?.(dataFormatter.formatHelpfulUrl) || [],\n categories:\n data?.categories?.map?.((category) =>\n dataFormatter.formatCategory(category),\n ) || [],\n footer: dataFormatter.formatFooterInfo(data?.footer),\n storeId: data?.store_id || 0,\n customerId: data?.customer_id || 0,\n cartItemsQty:\n typeof data?.cart_items_qty === 'number' ? data.cart_items_qty : null,\n }\n },\n\n // === ECOM TYPES FORMAT ===\n formatPriceInfo: (priceInfoApi?: PriceInfoApi): PriceInfo | null => {\n if (!priceInfoApi) return null\n return {\n final: priceInfoApi.final || 0,\n regular: priceInfoApi.regular || 0,\n discountPercent: priceInfoApi.discount_percent || 0,\n }\n },\n formatProduct: function (productApi?: ProductApi): Product | null {\n if (!productApi) return null\n const defaultPriceInfo = {\n final: 0,\n regular: 0,\n discountPercent: 0,\n }\n return {\n id: productApi.id || 0,\n price: productApi.price\n ? dataFormatter.formatPriceInfo(productApi.price) || defaultPriceInfo\n : defaultPriceInfo,\n thumbnail: productApi.thumbnail || '',\n name: productApi.name || '',\n averageRating: Number((productApi.average_rating || 0).toFixed(2)),\n reviewsCount: productApi.reviews_count || 0,\n tag: productApi.tag || null,\n sku: productApi.sku || '',\n slug: productApi.slug || '',\n images: productApi.images || [],\n tags: productApi.tags || [],\n unit: productApi.unit || '',\n brand: productApi.brand\n ? {\n name: productApi.brand.name || '',\n image: productApi.brand.image || '',\n slug: productApi.brand.slug || '',\n productsCount: productApi.brand.products_count || 0,\n }\n : null,\n description: productApi.description || '',\n productPromotions:\n productApi.product_promotions\n ?.map?.(dataFormatter.formatProductPromotion)\n .filter(isDefined) || [],\n categories:\n productApi.categories\n ?.map?.((c) => dataFormatter.formatCategory(c))\n .filter(isDefined) || [],\n isInStock: productApi?.is_in_stock || false,\n }\n },\n formatBanner: (bannerApi?: BannerApi): Banner | null => {\n if (!bannerApi) return null\n return {\n name: bannerApi.name || '',\n url: bannerApi.url || '',\n featuredImage: bannerApi.featured_image || '',\n alt: bannerApi.image_alt,\n }\n },\n formatBlogPost: (blogPostApi?: BlogPostApi): BlogPost | null => {\n if (!blogPostApi) return null\n return {\n title: blogPostApi.title || '',\n image: blogPostApi.image || '',\n link: blogPostApi.link || '',\n postData: blogPostApi.post_data\n ? {\n reviewed: blogPostApi.post_data.reviewed\n ? {\n author: dataFormatter.formatBlogPostDataReviewedUser(\n blogPostApi.post_data.reviewed.author || undefined,\n ),\n editor: dataFormatter.formatBlogPostDataReviewedUser(\n blogPostApi.post_data.reviewed.editor || undefined,\n ),\n expert: dataFormatter.formatBlogPostDataReviewedUser(\n blogPostApi.post_data.reviewed.expert || undefined,\n ),\n factCheck: dataFormatter.formatBlogPostDataReviewedUser(\n blogPostApi.post_data.reviewed.fact_check || undefined,\n ),\n isAuthor: Boolean(blogPostApi.post_data.reviewed.is_author),\n }\n : null,\n categories: blogPostApi.post_data.categories\n ? blogPostApi.post_data.categories.map?.((item) => ({\n termId: item.term_id || 0,\n name: item.name || '',\n permalink: item.permalink || '',\n textColor: item.text_color || '',\n }))\n : [],\n postDate: blogPostApi.post_data.post_date || '',\n postModified: blogPostApi.post_data.post_modified || '',\n modifiedTime: blogPostApi.post_data.modified_time || '',\n }\n : null,\n }\n },\n formatBlogPostDataReviewedUser: (\n blogPostDataReviewedUserApi?: BlogPostDataReviewedUserApi,\n ): BlogPostDataReviewedUser | null => {\n if (!blogPostDataReviewedUserApi) return null\n return {\n id: blogPostDataReviewedUserApi.ID || 0,\n userId: blogPostDataReviewedUserApi.user_id || 0,\n formerRole: blogPostDataReviewedUserApi.former_role || '',\n role: blogPostDataReviewedUserApi.role || '',\n slug: blogPostDataReviewedUserApi.slug || '',\n displayName: blogPostDataReviewedUserApi.display_name || '',\n description: blogPostDataReviewedUserApi.description || '',\n profileUrl: blogPostDataReviewedUserApi.profile_url || '',\n avatar: blogPostDataReviewedUserApi.avatar || '',\n avatarThumbnail: blogPostDataReviewedUserApi.avatar_thumbnail || '',\n turnOffProfile: Boolean(blogPostDataReviewedUserApi.turn_off_profile),\n }\n },\n formatBrand: function (brandApi?: BrandApi): Brand | null {\n if (!brandApi) return null\n return {\n id: brandApi.id || 0,\n image: brandApi.image || '',\n position: brandApi.position || '',\n isPopular: brandApi.is_popular || false,\n summary: brandApi.summary || '',\n name: brandApi.name || '',\n slug: brandApi.slug || '',\n description: brandApi.description || null,\n banners:\n brandApi.banners?.map?.(dataFormatter.formatBanner).filter(isDefined) ||\n [],\n bestsellerProducts:\n brandApi.bestseller_products\n ?.map?.(dataFormatter.formatProduct)\n .filter(isDefined) || [],\n } as Brand\n },\n formatHomePage: (homePageApi?: HomePageApi): HomePage | null => {\n if (!homePageApi) return null\n return {\n brands: homePageApi.brands\n ? homePageApi.brands.map?.(dataFormatter.formatBrand).filter(isDefined)\n : [],\n hotDeals: homePageApi.hot_deals\n ? homePageApi.hot_deals\n .map?.(dataFormatter.formatProduct)\n .filter(isDefined)\n : [],\n newProducts: homePageApi.new_products\n ? homePageApi.new_products\n .map?.(dataFormatter.formatProduct)\n .filter(isDefined)\n : [],\n slideBanners: homePageApi.slide_banners\n ? homePageApi.slide_banners\n .map?.(dataFormatter.formatBanner)\n .filter(isDefined)\n : [],\n subBanners: homePageApi.sub_banners\n ? homePageApi.sub_banners\n .map?.(dataFormatter.formatBanner)\n .filter(isDefined)\n : [],\n footerBanners: homePageApi.footer_banners\n ? homePageApi.footer_banners\n .map?.(dataFormatter.formatBanner)\n .filter(isDefined)\n : [],\n blogPosts: homePageApi.blog_posts\n ? homePageApi.blog_posts\n .map?.(dataFormatter.formatBlogPost)\n .filter(isDefined)\n : [],\n popularCategories: homePageApi.popular_categories\n ? homePageApi.popular_categories\n .map?.((c) => dataFormatter.formatCategory(c))\n .filter(isDefined)\n : [],\n suggestProducts: homePageApi.suggest_products\n ? homePageApi.suggest_products\n .map?.((c) => dataFormatter.formatCategory(c))\n .filter(isDefined)\n : [],\n promotions: homePageApi.promotions\n ? homePageApi.promotions\n .map?.((c) => dataFormatter.formatPromotion(c))\n .filter(isDefined)\n : [],\n }\n },\n formatCategoryPage: function (\n categoryPageApi?: CategoryPageApi,\n ): CategoryPage | null {\n if (!categoryPageApi) return null\n return {\n id: categoryPageApi.id || 0,\n name: categoryPageApi.name || '',\n slug: categoryPageApi.slug || '',\n description: categoryPageApi.description || null,\n banners:\n categoryPageApi.banners\n ?.map?.(dataFormatter.formatBanner)\n .filter(isDefined) || [],\n bestsellerProducts:\n categoryPageApi.bestseller_products\n ?.map?.(dataFormatter.formatProduct)\n .filter(isDefined) || [],\n }\n },\n formatBrandPage: function (brandPageApi?: BrandPageApi): BrandPage | null {\n if (!brandPageApi) return null\n return dataFormatter.formatBrand(brandPageApi)\n },\n formatPagination: (paginationApi?: PaginationApi): Pagination | null => {\n if (!paginationApi) return null\n return {\n current: paginationApi.current || 0,\n first: paginationApi.first || 0,\n itemsPerPage: paginationApi.items_per_page || 0,\n last: paginationApi.last || 0,\n next: paginationApi.next || 0,\n prev: paginationApi.prev || 0,\n totalItems: paginationApi.total_items || 0,\n }\n },\n formatProductDetailPage: function (\n productDetailPageApi?: ProductDetailPageApi,\n ): ProductDetailPage | null {\n if (!productDetailPageApi) return null\n return {\n ...(dataFormatter.formatProduct(productDetailPageApi) as Product),\n relatedProducts:\n productDetailPageApi.related_products\n ?.map?.(dataFormatter.formatProduct)\n .filter(isDefined) || [],\n bestsellerProducts:\n productDetailPageApi.bestseller_products\n ?.map?.(dataFormatter.formatProduct)\n .filter(isDefined) || [],\n viewedProducts:\n productDetailPageApi.viewed_products\n ?.map?.(dataFormatter.formatProduct)\n .filter(isDefined) || [],\n promotions:\n productDetailPageApi.promotions\n ?.map?.(dataFormatter.formatPromotion)\n .filter(isDefined) || [],\n }\n },\n formatProductReview: (\n productReview?: ProductReviewApi,\n ): ProductReview | null => {\n if (!productReview) return null\n\n // TODO: avatar, images\n return {\n reviewId: productReview.review_id || '',\n createdAt: productReview.created_at || '',\n title: productReview.title || '',\n detail: productReview.detail || '',\n nickname: productReview.nick_name || '',\n avatar: productReview.avatar || '',\n ratingVotes:\n productReview.rating_votes?.map?.((vote) => {\n return {\n ratingCode: vote.rating_code || '',\n value: Number(vote.value) || 0,\n percent: Number(vote.percent) || 0,\n }\n }) || [],\n images: productReview.images || [],\n }\n },\n formatProductPromotion: (\n productPromotionApi?: ProductPromotionApi,\n ): ProductPromotion | null => {\n if (!productPromotionApi) return null\n\n return {\n id: productPromotionApi.id || 0,\n name: productPromotionApi.name || '',\n thumbnail: productPromotionApi.thumbnail || '',\n expirationDate: productPromotionApi.expiration_date || '',\n }\n },\n formatPromotion: (promotionApi?: PromotionApi): Promotion | null => {\n if (!promotionApi) return null\n\n return {\n id: promotionApi.id || 0,\n name: promotionApi.name || '',\n slug: promotionApi.slug || '',\n thumbnail: promotionApi.thumbnail || '',\n expiredDate: promotionApi.expired_date || '',\n banners: promotionApi.banners || [],\n points: 0,\n description: promotionApi.description || '',\n metaTitle: promotionApi.meta_title || '',\n metaKeywords: promotionApi.meta_keywords || '',\n metaDescription: promotionApi.meta_description || '',\n }\n },\n formatCustomAttributes: (\n customAttributesApi: CustomAttributesApi[],\n type: string,\n ): string | '' => {\n if (!customAttributesApi?.length) return ''\n return (\n customAttributesApi?.find(\n (item: CustomAttributesApi) => item.attribute_code === type,\n )?.value || ''\n )\n },\n\n formatAddress: (addressApi?: AddressApi): Address | null => {\n if (!addressApi) return null\n return {\n id: addressApi.id || 0,\n fullName: addressApi.firstname || '',\n telephone: addressApi.telephone || '',\n province:\n {\n value: addressApi.region?.region_id,\n label: addressApi.region?.region,\n } || null,\n district: {\n value: dataFormatter.formatCustomAttributes(\n addressApi.custom_attributes,\n 'district_id',\n ),\n label: dataFormatter.formatCustomAttributes(\n addressApi.custom_attributes,\n 'district',\n ),\n },\n commune: {\n value: dataFormatter.formatCustomAttributes(\n addressApi.custom_attributes,\n 'ward_id',\n ),\n label: dataFormatter.formatCustomAttributes(\n addressApi.custom_attributes,\n 'ward',\n ),\n },\n street: addressApi?.street?.length ? addressApi?.street[0] : '',\n isDefault:\n (addressApi.default_billing && addressApi.default_shipping) || false,\n fullAddress: addressApi?.extension_attributes?.full_address || '',\n }\n },\n\n formatProvince: (provinceApi?: ProvinceListApi): Province[] | [] => {\n if (!provinceApi?.available_regions) return []\n\n return provinceApi.available_regions.map((province: ProvinceApi) => ({\n value: province.id || '',\n label: province.name || '',\n }))\n },\n\n formatDistrict: (districtApi?: DistrictListApi): District[] | [] => {\n if (!districtApi?.districts) return []\n\n return districtApi.districts.map((district: DistrictApi) => ({\n value: district.id || '',\n label: district.name || '',\n }))\n },\n\n formatCommune: (communeApi?: CommuneListApi): Commune[] | [] => {\n if (!communeApi?.communes) return []\n\n return communeApi.communes.map((commune: CommuneApi) => ({\n value: commune.id || '',\n label: commune.name || '',\n }))\n },\n\n formatOrder: (orderApi?: OrderApi): Order | null => {\n if (!orderApi) return null\n return {\n orderNumber: orderApi?.order_number || '',\n shippingData: orderApi?.shipping_data\n ? {\n shippingMethod: orderApi.shipping_data.shipping_method || '',\n shippingDescription:\n orderApi.shipping_data.shipping_description || '',\n shippingAddress: orderApi.shipping_data.shipping_address\n ? {\n fullName:\n orderApi.shipping_data.shipping_address.firstname || '',\n fullAddress:\n orderApi.shipping_data.shipping_address.full_address || '',\n telephone:\n orderApi.shipping_data.shipping_address.telephone || '',\n }\n : null,\n storeAddress: null,\n }\n : null,\n orderedDate: orderApi?.ordered_date || '',\n status: orderApi?.status || null,\n totals: orderApi?.totals\n ? {\n subtotal: orderApi.totals.subtotal || 0,\n shippingAmount: orderApi.totals.shipping_amount || 0,\n discountAmount: orderApi.totals.discount_amount || 0,\n grandTotal: orderApi.totals.grand_total || 0,\n }\n : null,\n products:\n orderApi?.products?.map?.((p) => ({\n sku: p.sku || '',\n name: p.name || '',\n price: p.price || 0,\n rowTotal: p.row_total || 0,\n image: p.image || '',\n qty: p.qty || 0,\n })) || [],\n\n paymentMethod: orderApi?.payment_method || '',\n }\n },\n formatStatistic: (statistic?: StatisticApi[]): Statistic => {\n if (!statistic) return {} as Statistic\n return {\n pending:\n Number(\n statistic?.find((stt: StatisticApi) => stt.status === 'pending')\n ?.amount,\n ) || 0,\n processing:\n Number(\n statistic?.find((stt: StatisticApi) => stt.status === 'processing')\n ?.amount,\n ) || 0,\n delivering:\n Number(\n statistic?.find((stt: StatisticApi) => stt.status === 'delivering')\n ?.amount,\n ) || 0,\n complete:\n Number(\n statistic?.find((stt: StatisticApi) => stt.status === 'complete')\n ?.amount,\n ) || 0,\n canceled:\n Number(\n statistic?.find((stt: StatisticApi) => stt.status === 'canceled')\n ?.amount,\n ) || 0,\n } as Statistic\n },\n formatCartItem: (cartItemApi?: CartItemApi): CartItem | null => {\n if (!cartItemApi) return null\n return {\n itemId: cartItemApi.item_id || 0,\n sku: cartItemApi.sku || '',\n qty: cartItemApi.qty || 0,\n name: cartItemApi.name || '',\n price: cartItemApi.price || 0,\n basePrice: cartItemApi.extension_attributes?.base_price || 0,\n productType: cartItemApi.product_type || '',\n quoteId: cartItemApi.quote_id || '',\n thumbnail: cartItemApi.extension_attributes?.thumbnail || '',\n rowTotal: cartItemApi.extension_attributes?.row_total || 0,\n promotions: (cartItemApi.extension_attributes?.promotions?.map?.(\n dataFormatter.formatProductPromotion,\n ) || []) as ProductPromotion[],\n isInStock: cartItemApi.extension_attributes?.is_in_stock || false,\n urlProduct: cartItemApi.extension_attributes?.url_key || '',\n }\n },\n formatCartAddress: (cartAddressApi?: CartAddressApi): CartAddress | null => {\n if (!cartAddressApi) return null\n return {\n customerAddressId: cartAddressApi?.customer_address_id || 0,\n id: cartAddressApi.id || 0,\n region: cartAddressApi.region || '',\n regionId: cartAddressApi.region_id || 0,\n regionCode: cartAddressApi.region_code || '',\n countryId: cartAddressApi.country_id || '',\n street: cartAddressApi.street || [],\n postcode: cartAddressApi.postcode || '',\n city: cartAddressApi.city || '',\n firstname: cartAddressApi.firstname || '',\n lastname: cartAddressApi.lastname || '',\n customerId: cartAddressApi.customer_id || 0,\n email: cartAddressApi.email || '',\n telephone: cartAddressApi.telephone || '',\n sameAsBilling: cartAddressApi.same_as_billing || 0,\n saveInAddressBook: cartAddressApi.save_in_address_book || 0,\n fullAddress: cartAddressApi.extension_attributes?.full_address || '',\n }\n },\n formatEstimatedShipping: (\n estimatedShippingApi?: EstimatedShippingApi,\n ): EstimatedShipping | null => {\n if (!estimatedShippingApi) return null\n return {\n carrierCode: estimatedShippingApi.carrier_code || '',\n methodCode: estimatedShippingApi.method_code || '',\n carrierTitle: estimatedShippingApi.carrier_title || '',\n methodTitle: estimatedShippingApi.method_title || '',\n amount: estimatedShippingApi.amount || 0,\n baseAmount: estimatedShippingApi.base_amount || 0,\n available: estimatedShippingApi.available || false,\n errorMessage: estimatedShippingApi.error_message || '',\n priceExclTax: estimatedShippingApi.price_excl_tax || 0,\n priceInclTax: estimatedShippingApi.price_incl_tax || 0,\n }\n },\n formatCartLoggedInCustomer: (\n cartLoggedInCustomerApi?: Partial<CartLoggedInCustomerApi>,\n ): CartLoggedInCustomer | null => {\n if (!cartLoggedInCustomerApi) return null\n return {\n email: cartLoggedInCustomerApi.email || '',\n firstname: cartLoggedInCustomerApi.firstname || '',\n lastname: cartLoggedInCustomerApi.lastname || '',\n id: cartLoggedInCustomerApi.id || 0,\n groupId: cartLoggedInCustomerApi.group_id || 0,\n createdAt: cartLoggedInCustomerApi.created_at || '',\n updatedAt: cartLoggedInCustomerApi.updated_at || '',\n createdIn: cartLoggedInCustomerApi.created_in || '',\n storeId: cartLoggedInCustomerApi.store_id || 0,\n websiteId: cartLoggedInCustomerApi.website_id || 0,\n addresses: (cartLoggedInCustomerApi.addresses?.map?.(\n dataFormatter.formatCartAddress,\n ) || []) as CartAddress[],\n disableAutoGroupChange:\n cartLoggedInCustomerApi.disable_auto_group_change || 0,\n isSubscribed:\n cartLoggedInCustomerApi.extension_attributes?.is_subscribed || false,\n }\n },\n formatCart: (cartApi?: CartApi): Cart | null => {\n if (!cartApi) return null\n return {\n id: cartApi.id || 0,\n createdAt: cartApi.created_at || '',\n updatedAt: cartApi.updated_at || '',\n isActive: cartApi.is_active || false,\n isVirtual: cartApi.is_virtual || false,\n items: (cartApi.items\n ?.map?.(dataFormatter.formatCartItem)\n ?.sort((a, b) => Number(b?.isInStock) - Number(a?.isInStock)) ||\n []) as CartItem[],\n itemsCount: cartApi.items_count || 0,\n itemsQty: cartApi.items_qty || 0,\n customer: cartApi.customer\n ? dataFormatter.formatCartLoggedInCustomer(cartApi.customer)\n : null,\n billingAddress: cartApi.billing_address\n ? dataFormatter.formatCartAddress(cartApi.billing_address)\n : null,\n origOrderId: cartApi.orig_order_id || 0,\n currency: {\n globalCurrencyCode: cartApi.currency?.global_currency_code || '',\n baseCurrencyCode: cartApi.currency?.base_currency_code || '',\n storeCurrencyCode: cartApi.currency?.store_currency_code || '',\n quoteCurrencyCode: cartApi.currency?.quote_currency_code || '',\n storeToBaseRate: cartApi.currency?.store_to_base_rate || 0,\n storeToQuoteRate: cartApi.currency?.store_to_quote_rate || 0,\n baseToGlobalRate: cartApi.currency?.base_to_global_rate || 0,\n baseToQuoteRate: cartApi.currency?.base_to_quote_rate || 0,\n },\n customerIsGuest: cartApi.customer_is_guest || false,\n customerNoteNotify: cartApi.customer_note_notify || false,\n customerTaxClassId: cartApi.customer_tax_class_id || 0,\n storeId: cartApi.store_id || 0,\n shippingAssignments:\n cartApi.extension_attributes?.shipping_assignments?.map?.((s) => ({\n shipping: {\n address: s.shipping.address\n ? dataFormatter.formatCartAddress(s.shipping.address)\n : null,\n method: s.shipping?.method || '',\n },\n items: (s.items.map?.(dataFormatter.formatCartItem) ||\n []) as CartItem[],\n })),\n }\n },\n formatCartTotal: (cartTotalApi?: CartTotalApi): CartTotal | null => {\n if (!cartTotalApi) return null\n return {\n grandTotal: cartTotalApi.grand_total || 0,\n baseGrandTotal: cartTotalApi.base_grand_total || 0,\n subtotal: cartTotalApi.subtotal || 0,\n baseSubtotal: cartTotalApi.base_subtotal || 0,\n discountAmount: cartTotalApi.discount_amount || 0,\n baseDiscountAmount: cartTotalApi.base_discount_amount || 0,\n subtotalWithDiscount: cartTotalApi.subtotal_with_discount || 0,\n baseSubtotalWithDiscount: cartTotalApi.base_subtotal_with_discount || 0,\n shippingAmount: cartTotalApi.shipping_amount || 0,\n baseShippingAmount: cartTotalApi.base_shipping_amount || 0,\n shippingDiscountAmount: cartTotalApi.shipping_discount_amount || 0,\n baseShippingDiscountAmount:\n cartTotalApi.base_shipping_discount_amount || 0,\n taxAmount: cartTotalApi.tax_amount || 0,\n baseTaxAmount: cartTotalApi.base_tax_amount || 0,\n weeeTaxAppliedAmount: cartTotalApi.weee_tax_applied_amount || 0,\n shippingTaxAmount: cartTotalApi.shipping_tax_amount || 0,\n baseShippingTaxAmount: cartTotalApi.base_shipping_tax_amount || 0,\n subtotalInclTax: cartTotalApi.subtotal_incl_tax || 0,\n shippingInclTax: cartTotalApi.shipping_incl_tax || 0,\n baseShippingInclTax: cartTotalApi.base_shipping_incl_tax || 0,\n baseCurrencyCode: cartTotalApi.base_currency_code || '',\n quoteCurrencyCode: cartTotalApi.quote_currency_code || '',\n itemsQty: cartTotalApi.items_qty || 0,\n coupon: {\n couponCode: cartTotalApi.coupon_code || '',\n couponDescription:\n cartTotalApi?.extension_attributes?.coupon_description_text || '',\n },\n items:\n cartTotalApi.items?.map?.((item) => ({\n itemId: item.item_id || 0,\n price: item.price || 0,\n basePrice: item.base_price || 0,\n qty: item.qty || 0,\n rowTotal: item.row_total || 0,\n baseRowTotal: item.base_row_total || 0,\n rowTotalWithDiscount: item.row_total_with_discount || 0,\n taxAmount: item.tax_amount || 0,\n baseTaxAmount: item.base_tax_amount || 0,\n taxPercent: item.tax_percent || 0,\n discountAmount: item.discount_amount || 0,\n baseDiscountAmount: item.base_discount_amount || 0,\n discountPercent: item.discount_percent || 0,\n priceInclTax: item.price_incl_tax || 0,\n basePriceInclTax: item.base_price_incl_tax || 0,\n rowTotalInclTax: item.row_total_incl_tax || 0,\n baseRowTotalInclTax: item.base_row_total_incl_tax || 0,\n options: item.options || '',\n weeeTaxAppliedAmount: item.weee_tax_applied_amount || 0,\n weeeTaxApplied: item.weee_tax_applied || 0,\n name: item.name || '',\n })) || [],\n totalSegments: cartTotalApi.total_segments || [],\n }\n },\n formatPaymentMethod: (\n methods?: PaymentMethodsApi[],\n ): PaymentMethodInfo[] | null => {\n if (!methods) return null\n return methods?.map((method: PaymentMethodsApi) => ({\n code: method?.payment_code || '',\n title: method?.payment_title || '',\n thumbnail: method?.payment_thumbnail || '',\n }))\n },\n formatPaymentInformation: (\n paymentInformationApi?: ShippingInformation,\n ): PaymentInformation | null => {\n if (!paymentInformationApi) return null\n return {\n paymentMethods:\n dataFormatter.formatPaymentMethod(\n paymentInformationApi?.extension_attributes?.payment_detail_info,\n ) || [],\n totals: dataFormatter.formatCartTotal(paymentInformationApi.totals),\n }\n },\n formatOrderConfirmation: (\n orderConfirmationApi?: OrderConfirmationApi,\n ): OrderConfirmation | null => {\n if (!orderConfirmationApi) return null\n return {\n isSuccess: orderConfirmationApi.is_success || false,\n orderInfo: dataFormatter.formatOrder(orderConfirmationApi.order_info),\n }\n },\n formatCoupons: (couponListApi?: CouponListApi): Coupon[] | null => {\n if (!couponListApi?.items?.length) return null\n return couponListApi.items.map((couponApi: CouponApi) => ({\n code: couponApi?.code || '',\n name: couponApi?.name || '',\n thumbnail: couponApi?.thumbnail || '',\n description: couponApi?.expired_date || '',\n }))\n },\n formatShippings: (shippingsApi?: ShippingApi[]): Shipping[] => {\n if (!shippingsApi) return [] as Shipping[]\n\n return shippingsApi.map((shippingApi: ShippingApi) => ({\n carrierCode: shippingApi.carrier_code || '',\n methodCode: shippingApi.method_code || '',\n title: shippingApi.carrier_title || '',\n description: shippingApi.method_title || '',\n price: shippingApi?.base_amount || 0,\n thumbnail: shippingApi?.extension_attributes?.thumbnail || '',\n }))\n },\n}\n","// You can include shared interfaces/types in a separate file\n// and then use them in any component by importing them. For\n// example, to import the interface below do:\n//\n\n// import User from 'path/to/interfaces';\n\nimport { UserRole } from 'interfaces/types'\n\nimport {\n basePath,\n CARE_BASE_PATH,\n COMMUNITY_BASE_PATH,\n HEALTH_TOOLs_BASE_PATH,\n SSO_USER_BASE_PATH,\n} from './constants'\n\nexport type LocaleType =\n | 'vi-VN'\n | 'id-ID'\n | 'ms-MY'\n | 'km-KH'\n | 'en-PH'\n | 'th-TH'\n | 'my-MM'\n | 'zh-TW'\n | 'hi-IN'\n\nexport type PushNotificationPayloadType = {\n message: string\n type: 'success' | 'danger' | 'info' | 'warning'\n title?: string\n}\n\nexport type LogoType =\n | 'hellobacsi'\n | 'hellosehat'\n | 'hellohealth'\n | 'hellotogether'\n | 'hellocare'\n | 'logomark'\n | 'hellodoctor'\n | 'hellokrupet'\n | 'hellswasthya'\n | 'hellokhunmor'\n | 'hellodoktor'\n\nexport type CategoriesLayout = 'short' | 'long'\n\nexport type CountryInitial =\n | 'VN'\n | 'ID'\n | 'TH'\n | 'KH'\n | 'MY'\n | 'MM'\n | 'PH'\n | 'IN'\n | 'TW'\n\nexport type Flag = {\n country: CountryInitial\n link: string\n}\n\nexport type Role = UserRole | ('branch' | 'facility' | 'doctor')\n\nexport type UserInfo = {\n name?: string\n phone?: string\n username?: string\n avatar?: string\n email?: string\n role?: Role\n phone_verified_at?: string\n birthday?: string\n gender?: number\n id?: number\n bookmarks?: Array<string | number>\n coralToken?: {\n token?: string\n isTemp?: boolean\n }\n total_bookmark?: number\n first_time_bookmark?: boolean\n phone_verified?: boolean\n provider?: string\n verify_phone_code?: string\n city_id?: string\n type_of_pass?: string\n is_new?: 0 | 1\n communities_interacted?: 0 | 1\n}\n\nexport enum GenderLabel {\n MALE = 'gender.male',\n FEMALE = 'gender.female',\n OTHER = 'gender.other',\n}\n\nexport type DesktopMenuPopup =\n | 'categories'\n | 'tools'\n | 'care'\n | 'communities'\n | 'profile'\n | 'none'\n\nexport type MobileMenuPopup = 'categories' | 'profile' | 'none'\n\nexport type HealthTool = {\n title: string\n subtitle: string\n icon: string\n link: string\n}\n\nexport type UrlSourceType =\n | 'first_login'\n | 'welcome_back'\n | 'comment'\n | 'care_phone'\n | 'care_onboarding'\n | 'new_admin'\n | 'ecom'\n\nexport type UrlPostActionType = 'call' | 'redirect'\n\nexport type UrlQueryType = 'source' | 'post_action' | 'params'\n\nexport type Coordinate = {\n lat: number\n lng: number\n}\n\n/**\n * default props types\n */\nexport type ElementDataProps = 'data-event-action' | 'data-event-label'\n\nexport type ExtendingDataProps<K> = {\n [key in K extends string ? K | ElementDataProps : ElementDataProps]?:\n | string\n | number\n | boolean\n | ((e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void)\n | React.CSSProperties\n} & {\n style?: React.CSSProperties\n}\n\n/**\n * localised slugs\n */\nexport type LocalisedSlugsType =\n | 'PRODUCT'\n | 'CATEGORY'\n | 'BRAND'\n | 'SEARCH'\n | 'BRANDS'\n | 'PROFILE'\n | 'PROFILE_MANAGE_ORDERS'\n | 'PROFILE_MANAGE_ADDRESS'\n | 'PROFILE_VOUCHER'\n | 'PROFILE_MEMBER_CARD'\n | 'CART'\n | 'CART_CHECKOUT'\n | 'PROMOTION'\n | 'PROMOTION_DETAIL'\n | 'ORDER_CONFIRMATION'\n\n/**\n * base path type\n */\nexport type BasePathType =\n | typeof basePath\n | typeof SSO_USER_BASE_PATH\n | typeof CARE_BASE_PATH\n | typeof COMMUNITY_BASE_PATH\n | typeof HEALTH_TOOLs_BASE_PATH\n\nexport type SortType = 'price' | 'updated_at'\nexport type SortOrder = 'asc' | 'desc'\n\n// xác nhận, đang giao, đã giao, hoàn thành, huỷ\nexport type OrderStatus =\n | 'pending'\n | 'processing'\n | 'delivering'\n | 'complete'\n | 'canceled'\n\nexport const DATE_FORMAT_API = 'yyyy-MM-dd'\nexport const DATE_FORMAT = 'dd-MM-yyyy'\n"],"names":["Gender","isDevelopment","process","env","NEXT_PUBLIC_DEPLOY_ENV","IS_SSR","window","locale","NEXT_PUBLIC_DEPLOY_LOCALE","GOOGLE_MAP_KEY","NEXT_PUBLIC_GOOGLE_MAP_KEY","GOOGLE_ADMIN_LOCATION_KEY","NEXT_PUBLIC_ADMIN_GOOGLE_LOCATION_KEY","GOOGLE_CLIENT_ID","NEXT_PUBLIC_GOOGLE_CLIENT_ID","DOMAIN_LOCALES","DISCOVER_URL_FE","isProduction","concat","DISCOVER_URL_BE","TOGETHER_URL_BE","NEXT_PUBLIC_TOGETHER_API_URL","TOGETHER_URL_FE","SSO_URL","NEXT_PUBLIC_SSO_URL","SEO_SCHEMA","HOME","JSON","stringify","description","inLanguage","name","potentialAction","target","url","CATEGORY","urlWithParams","itemCount","itemList","itemListElement","item","numberOfItems","BRAND","BRAND_DETAIL","PRODUCT_DETAIL","ID","TH","MY","KH","TW","MM","IN","VN","PH","LOGO_TYPE","SITE_NAME","SITE_NAME_FORMATTED","HOMEPAGE_IMAGE","SITE_ID","INSIDER_TAG","TOOLTIP_IMAGE","CATEGORIES_TYPE","LINKEDIN","FACEBOOK","INSTAGRAM","TWITTER","YOUTUBE","PRIVACY","TERM_OF_USE","PRIVACY_POLICY","EDITORIAL_CORRECTIONS_POLICY","ADVERTISING_SPONSOR_POLICY","POLICIES","FAQS","SITEMAP","ABOUT_US","ADVERTISEMENT","CONTACT_US","ABOUT_GO_CARE","HEALTH_TOOLS","EXECUTIVE_BIOS","RECRUITMENT","FACILITY","POLICIES_EN","CONTACT_EN","EDITORIAL_POLICY","EDITORIAL_POLICY_EN","type","rel","href","sizes","content","id","IDR","PRODUCT","SEARCH","PROFILE","PROFILE_MANAGE_ORDERS","PROFILE_MANAGE_ADDRESS","PROFILE_VOUCHER","PROFILE_MEMBER_CARD","CART","CART_CHECKOUT","ORDER_CONFIRMATION","PROMOTION","isDefined","argument","GenderLabel","dataFormatter","formatAutoCompleteAddress","address","place_id","placeId","formatPrice","price","formattedPrice","parseInt","Intl","NumberFormat","format","formatHotSearchKeyword","data","text","formatHelpfulUrl","featuredImage","featured_image","formatCategory","parentId","parentFullSlug","currentFullSlug","slug","children","_b","_a","map","call","childCategory","logo","fullSlug","backgroundColor","color","theme","colors","teal50","products","_c","formatProduct","formatFooterInfo","branches","branch","flag","verified","_e","_d","general","_f","verifiedItem","image","menu","_h","_g","menuItem","menu_title","items","title","socials","_k","_j","social","_l","icon","_m","_p","_o","_r","_q","copyright","_t","_s","_u","formatNavigation","hotSearchKeywords","hot_search_keywords","helpfulUrls","helpful_urls","categories","category","footer","storeId","store_id","customerId","customer_id","cartItemsQty","cart_items_qty","formatPriceInfo","priceInfoApi","final","regular","discountPercent","discount_percent","productApi","defaultPriceInfo","thumbnail","averageRating","Number","average_rating","toFixed","reviewsCount","reviews_count","tag","sku","images","tags","unit","brand","productsCount","products_count","productPromotions","product_promotions","formatProductPromotion","filter","c","isInStock","is_in_stock","formatBanner","bannerApi","alt","image_alt","formatBlogPost","blogPostApi","link","postData","post_data","reviewed","author","formatBlogPostDataReviewedUser","undefined","editor","expert","factCheck","fact_check","isAuthor","Boolean","is_author","termId","term_id","permalink","textColor","text_color","postDate","post_date","postModified","post_modified","modifiedTime","modified_time","blogPostDataReviewedUserApi","userId","user_id","formerRole","former_role","role","displayName","display_name","profileUrl","profile_url","avatar","avatarThumbnail","avatar_thumbnail","turnOffProfile","turn_off_profile","formatBrand","brandApi","position","isPopular","is_popular","summary","banners","bestsellerProducts","bestseller_products","formatHomePage","homePageApi","brands","hotDeals","hot_deals","newProducts","new_products","slideBanners","slide_banners","subBanners","sub_banners","footerBanners","footer_banners","blogPosts","blog_posts","popularCategories","popular_categories","suggestProducts","suggest_products","promotions","_v","formatPromotion","formatCategoryPage","categoryPageApi","formatBrandPage","brandPageApi","formatPagination","paginationApi","current","first","itemsPerPage","items_per_page","last","next","prev","totalItems","total_items","formatProductDetailPage","productDetailPageApi","__assign","relatedProducts","related_products","viewedProducts","viewed_products","formatProductReview","productReview","reviewId","review_id","createdAt","created_at","detail","nickname","nick_name","ratingVotes","rating_votes","vote","ratingCode","rating_code","value","percent","productPromotionApi","expirationDate","expiration_date","promotionApi","expiredDate","expired_date","points","metaTitle","meta_title","metaKeywords","meta_keywords","metaDescription","meta_description","formatCustomAttributes","customAttributesApi","length","find","attribute_code","formatAddress","addressApi","fullName","firstname","telephone","province","region","region_id","label","district","custom_attributes","commune","street","isDefault","default_billing","default_shipping","fullAddress","extension_attributes","full_address","formatProvince","provinceApi","available_regions","formatDistrict","districtApi","districts","formatCommune","communeApi","communes","formatOrder","orderApi","orderNumber","order_number","shippingData","shipping_data","shippingMethod","shipping_method","shippingDescription","shipping_description","shippingAddress","shipping_address","storeAddress","orderedDate","ordered_date","status","totals","subtotal","shippingAmount","shipping_amount","discountAmount","discount_amount","grandTotal","grand_total","p","rowTotal","row_total","qty","paymentMethod","payment_method","formatStatistic","statistic","pending","stt","amount","processing","delivering","complete","canceled","formatCartItem","cartItemApi","itemId","item_id","basePrice","base_price","productType","product_type","quoteId","quote_id","urlProduct","url_key","formatCartAddress","cartAddressApi","customerAddressId","customer_address_id","regionId","regionCode","region_code","countryId","country_id","postcode","city","lastname","email","sameAsBilling","same_as_billing","saveInAddressBook","save_in_address_book","formatEstimatedShipping","estimatedShippingApi","carrierCode","carrier_code","methodCode","method_code","carrierTitle","carrier_title","methodTitle","method_title","baseAmount","base_amount","available","errorMessage","error_message","priceExclTax","price_excl_tax","priceInclTax","price_incl_tax","formatCartLoggedInCustomer","cartLoggedInCustomerApi","groupId","group_id","updatedAt","updated_at","createdIn","created_in","websiteId","website_id","addresses","disableAutoGroupChange","disable_auto_group_change","isSubscribed","is_subscribed","formatCart","cartApi","isActive","is_active","isVirtual","is_virtual","sort","a","b","itemsCount","items_count","itemsQty","items_qty","customer","billingAddress","billing_address","origOrderId","orig_order_id","currency","globalCurrencyCode","global_currency_code","baseCurrencyCode","base_currency_code","storeCurrencyCode","store_currency_code","quoteCurrencyCode","quote_currency_code","storeToBaseRate","store_to_base_rate","storeToQuoteRate","store_to_quote_rate","baseToGlobalRate","base_to_global_rate","baseToQuoteRate","base_to_quote_rate","customerIsGuest","customer_is_guest","customerNoteNotify","customer_note_notify","customerTaxClassId","customer_tax_class_id","shippingAssignments","shipping_assignments","s","shipping","method","formatCartTotal","cartTotalApi","baseGrandTotal","base_grand_total","baseSubtotal","base_subtotal","baseDiscountAmount","base_discount_amount","subtotalWithDiscount","subtotal_with_discount","baseSubtotalWithDiscount","base_subtotal_with_discount","baseShippingAmount","base_shipping_amount","shippingDiscountAmount","shipping_discount_amount","baseShippingDiscountAmount","base_shipping_discount_amount","taxAmount","tax_amount","baseTaxAmount","base_tax_amount","weeeTaxAppliedAmount","weee_tax_applied_amount","shippingTaxAmount","shipping_tax_amount","baseShippingTaxAmount","base_shipping_tax_amount","subtotalInclTax","subtotal_incl_tax","shippingInclTax","shipping_incl_tax","baseShippingInclTax","base_shipping_incl_tax","coupon","couponCode","coupon_code","couponDescription","coupon_description_text","baseRowTotal","base_row_total","rowTotalWithDiscount","row_total_with_discount","taxPercent","tax_percent","basePriceInclTax","base_price_incl_tax","rowTotalInclTax","row_total_incl_tax","baseRowTotalInclTax","base_row_total_incl_tax","options","weeeTaxApplied","weee_tax_applied","totalSegments","total_segments","formatPaymentMethod","methods","code","payment_code","payment_title","payment_thumbnail","formatPaymentInformation","paymentInformationApi","paymentMethods","payment_detail_info","formatOrderConfirmation","orderConfirmationApi","isSuccess","is_success","orderInfo","order_info","formatCoupons","couponListApi","couponApi","formatShippings","shippingsApi","shippingApi"],"mappings":"0FAiFYA,sEAxECC,EAC4B,gBAAvCC,QAAQC,IAAIC,uBACDC,EAA2B,oBAAXC,OAChBC,EAAqBL,QAAQC,IAAIK,0BACzCN,QAAQC,IAAIK,0BACb,QAMSC,EAAiBP,QAAQC,IAAIO,4BAA8B,GAC3DC,EACXT,QAAQC,IAAIS,sCACDC,EACXX,QAAQC,IAAIW,8BACZ,2EAUWC,EAAkD,CAC7D,QAAS,iBACT,QAAS,iBACT,QAAS,kBACT,QAAS,kBACT,QAAS,qBACT,QAAS,mBACT,QAAS,oBACT,QAAS,oBACT,QAAS,qBAGEC,EAAkBf,EAC3B,wBACAgB,EACA,WAAWC,OAAAH,EAAeR,IAC1B,oBAAoBW,OAAAH,EAAeR,IAE1BY,EAAkBF,EAC3B,cAAcC,OAAAH,EAAeR,GAAU,KACvC,mBAAmBW,OAAAH,EAAeR,QAEzBa,EACXlB,QAAQC,IAAIkB,8BACiC,KAA7CnB,QAAQC,IAAIkB,6BACRnB,QAAQC,IAAIkB,6BACZ,oBAAoBH,OAAAH,EAAeR,QAE5Be,EAAkB,GAAGJ,OAAAF,gBAErBO,EACXrB,QAAQC,IAAIqB,qBAAuB,qCAerC,SAAYxB,GACVA,EAAAA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,IAAA,GAAA,MAHF,CAAYA,IAAAA,EAIX,KAEM,IA6sBMyB,EA4CT,CACF,QAAS,CACPC,KAAM,WACJ,OAAAC,KAAKC,UAAU,CACb,WAAY,qBACZ,SAAU,CACR,CACE,MAAO,uCACP,QAAS,UACTC,YAAa,mCACbC,WAAY,QACZC,KAAM,cACNC,gBAAiB,CACf,CACE,QAAS,eACT,cAAe,mCACfC,OACE,uEAGNC,IAAK,oCAIbC,SAAU,SAACC,EAAoBC,EAAeC,GAC5C,YADS,IAAAF,IAAAA,EAAkB,SAAE,IAAAC,IAAAA,EAAa,QAAE,IAAAC,IAAAA,EAAa,IACzDX,KAAKC,UAAU,CACb,WAAY,qBACZ,SAAU,CACR,CACE,MAAO,0CACP,QAAS,iBACTW,gBAAiB,CACf,CACE,QAAS,WACTC,KAAM,CACJ,MAAO,+BACP,QAAS,UACTT,KAAM,cACNG,IAAK,iCAGT,CACE,QAAS,WACTM,KAAM,CACJ,MAAO,uCACP,QAAS,UACTT,KAAM,yBACNG,IAAK,2CAKb,CACE,QAAS,WACTA,IAAKE,EACLK,cAAeJ,EACfE,gBAAiBD,OAIzBI,MAAO,SAACN,EAAoBC,EAAeC,GACzC,YADM,IAAAF,IAAAA,EAAkB,SAAE,IAAAC,IAAAA,EAAa,QAAE,IAAAC,IAAAA,EAAa,IACtDX,KAAKC,UAAU,CACb,WAAY,qBACZ,SAAU,CACR,CACE,MAAO,0CACP,QAAS,iBACTW,gBAAiB,CACf,CACE,QAAS,WACTC,KAAM,CACJ,MAAO,+BACP,QAAS,UACTT,KAAM,cACNG,IAAK,iCAGT,CACE,QAAS,WACTM,KAAM,CACJ,MAAO,0CACP,QAAS,UACTT,KAAM,4BACNG,IAAK,8CAKb,CACE,QAAS,WACTA,IAAKE,EACLK,cAAeJ,EACfE,gBAAiBD,OAIzBK,aAAc,SAACP,EAAoBC,EAAeC,GAChD,YADa,IAAAF,IAAAA,EAAkB,SAAE,IAAAC,IAAAA,EAAa,GAC9CV,KAAKC,UAAU,CACb,WAAY,qBACZ,SAAU,CACR,CACE,MAAO,iDACP,QAAS,cACTW,gBAAiB,CACf,CACE,QAAS,OACTC,KAAM,CACJ,MAAO,8BAA8BtB,OAAAkB,GACrC,QAAS,UACTL,KAAM,4BACNG,IAAK,8BAA8BhB,OAAAkB,OAK3C,CACE,QAAS,cACTF,IAAK,8BAA8BhB,OAAAkB,GACnCK,cAAeJ,EACfE,gBAAiBD,QAAAA,EAAY,QAIrCM,eAAgB,SAACR,EAAoBC,EAAeC,GAClD,YADe,IAAAF,IAAAA,EAAkB,SAAE,IAAAC,IAAAA,EAAa,GAChDV,KAAKC,UAAU,CACb,WAAY,qBACZ,SAAU,CACR,CACE,MAAO,gDACP,QAAS,gBACTW,gBAAiB,CACf,CACE,QAAS,OACTC,KAAM,CACJ,MAAO,wCAAwCtB,OAAAkB,GAC/C,QAAS,UACTL,KAAM,4BACNG,IAAK,wCAAwChB,OAAAkB,OAKrD,CACE,QAAS,cACTF,IAAKE,EACLK,cAAeJ,EACfE,gBAAiBD,QAAAA,EAAY,gGAl9BN,2CACM,uCACL,4GAQG,YAEf,0BACU,sBACJ,2BACK,mCACG,qCACD,4HAmCD,2BACE,4BACC,+BACG,wBACP,mBACL,uBACI,wBACC,8BACM,2BACH,0BACD,6BACG,uCAStC,2KAEwD,CACxDO,GAAI,cACJC,GAAI,gBACJC,GAAI,eACJC,GAAI,eACJC,GAAI,cACJC,GAAI,iBACJC,GAAI,iBACJC,GAAI,cACJC,GAAI,6BAKF,CACF,QAAS,CACPC,UAAW,aACXC,UAAW,aACXC,oBAAqB,cACrBC,eAAgB,0DAChBC,QAAS,IACTC,YAAa,uDACbC,cAAe,2BAEjB,QAAS,CACPN,UAAW,cACXC,UAAW,cACXE,eACE,8DACFD,oBAAqB,eACrBE,QAAS,IACTG,gBAAiB,QACjBF,YAAa,wDACbC,cAAe,2BAEjB,QAAS,CACPN,UAAW,eACXC,UAAW,eACXE,eAAgB,4DAChBD,oBAAqB,gBACrBE,QAAS,IACTG,gBAAiB,OACjBF,YAAa,uDACbC,cAAe,2BAEjB,QAAS,CACPN,UAAW,cACXC,UAAW,cACXE,eAAgB,2DAChBD,oBAAqB,eACrBE,QAAS,IACTG,gBAAiB,OACjBF,YAAa,sDACbC,cAAe,2BAEjB,QAAS,CACPN,UAAW,gBACXC,UAAW,gBACXE,eACE,6DACFD,oBAAqB,iBACrBE,QAAS,IACTC,YAAa,yDAEf,QAAS,CACPL,UAAW,aACXC,UAAW,aACXE,eACE,6DACFD,oBAAqB,cACrBE,QAAS,IACTC,YAAa,qDACbC,cAAe,2BAEjB,QAAS,CACPN,UAAW,aACXC,UAAW,aACXE,eAAgB,0DAChBD,oBAAqB,cACrBE,QAAS,IACTC,YAAa,qDACbC,cAAe,2BAEjB,QAAS,CACPN,UAAW,gBACXC,UAAW,gBACXE,eACE,6DACFD,oBAAqB,iBACrBE,QAAS,IACTG,gBAAiB,OACjBF,YAAa,wDACbC,cAAe,2BAEjB,QAAS,CACPN,UAAW,cACXC,UAAW,cACXE,eAAgB,2DAChBD,oBAAqB,eACrBE,QAAS,IACTC,YAAa,sDACbC,cAAe,yCAMf,CACF,QAAS,CACPE,SAAU,uDACVC,SAAU,uCACVC,UAAW,wCACXC,QAAS,KACTC,QAAS,4DAEX,QAAS,CACPJ,SAAU,uDACVC,SAAU,0CACVC,UAAW,4CACXC,QAAS,MAEX,QAAS,CACPH,SAAU,uDACVC,SAAU,wCACVC,UAAW,iDACXC,QAAS,KACTC,QAAS,4DAEX,QAAS,CACPJ,SAAU,uDACVC,SAAU,0CACVC,UAAW,2CACXC,QAAS,MAEX,QAAS,CACPH,SAAU,gDACVC,SAAU,sCACVC,UAAW,wCACXC,QAAS,kCAEX,QAAS,CACPH,SAAU,uDACVC,SAAU,0CACVC,UAAW,0CACXC,QAAS,MAEX,QAAS,CACPH,SAAU,uDACVC,SAAU,uCACVC,UAAW,wCACXC,QAAS,MAEX,QAAS,CACPH,SAAU,uDACVC,SAAU,0CACVC,UAAW,4CACXC,QAAS,MAEX,QAAS,CACPH,SAAU,uDACVC,SAAU,yCACVC,UAAW,0CACXC,QAAS,KACTC,QAAS,yEAIuC,CAClDrB,GAAI,0BACJC,GAAI,4BACJC,GAAI,2BACJC,GAAI,2BACJC,GAAI,6BACJC,GAAI,6BACJC,GAAI,6BACJC,GAAI,0BACJC,GAAI,4CAKF,CACF,QAAS,CACPc,QAAS,WACTC,YAAa,sBACbC,eAAgB,6BAChBC,6BAA8B,iCAC9BC,2BAA4B,gCAC5BC,SAAU,cACVC,KAAM,wBACNC,QAAS,WACTC,SAAU,YACVC,cAAe,2BACfC,WAAY,WACZC,cAAe,iBACfC,aAAc,gBACdC,eAAgB,4CAChBC,YAAa,yCAEf,QAAS,CACPT,SAAU,YACVJ,YAAa,gBACbC,eAAgB,mBAChBC,6BAA8B,0BAC9BC,2BAA4B,0BAC5BE,KAAM,QACNC,QAAS,WACTC,SAAU,YACVC,cAAe,iBACfC,WAAY,cACZC,cAAe,iBACfC,aAAc,gBACdC,eAAgB,KAChBC,YAAa,yCAEf,QAAS,CACPT,SAAU,YACVJ,YAAa,gBACbC,eAAgB,kBAChBC,6BAA8B,oCAC9BC,2BAA4B,kCAC5BE,KAAM,KACNC,QAAS,KACTC,SAAU,YACVC,cAAe,KACfC,WAAY,cACZC,cAAe,KACfC,aAAc,gBACdC,eAAgB,gDAChBC,YAAa,yCAEf,QAAS,CACPT,SAAU,uBACVJ,YAAa,gBACbC,eAAgB,kBAChBC,6BAA8B,oBAC9BC,2BAA4B,sBAC5BE,KAAM,KACNC,QAAS,KACTC,SAAU,YACVC,cAAe,eACfC,WAAY,gBACZC,cAAe,KACfC,aAAc,gBACdC,eAAgB,8CAChBC,YAAa,yCAEf,QAAS,CACPT,SAAU,YACVJ,YAAa,gBACbC,eAAgB,kBAChBC,6BAA8B,oCAC9BC,2BAA4B,kCAC5BE,KAAM,KACNC,QAAS,KACTC,SAAU,YACVC,cAAe,eACfC,WAAY,cACZC,cAAe,KACfI,SAAU,YACVH,aAAc,gBACdC,eAAgB,gDAChBC,YAAa,yCAEf,QAAS,CACPE,YAAa,YACbf,YAAa,sBACbC,eAAgB,qBAChBC,6BAA8B,uBAC9BC,2BAA4B,mBAC5BC,SAAU,aACVC,KAAM,KACNC,QAAS,KACTC,SAAU,YACVC,cAAe,KACfC,WAAY,eACZO,WAAY,WACZN,cAAe,KACfC,aAAc,gBACdC,eAAgB,4CAChBC,YAAa,wCACbI,iBAAkB,WAClBC,oBAAqB,YAEvB,QAAS,CACPd,SAAU,YACVJ,YAAa,gBACbC,eAAgB,kBAChBC,6BAA8B,oCAC9BC,2BAA4B,kCAC5BE,KAAM,KACNC,QAAS,KACTC,SAAU,YACVC,cAAe,KACfC,WAAY,cACZC,cAAe,KACfC,aAAc,gBACdC,eAAgB,gDAChBC,YAAa,yCAEf,QAAS,CACPT,SAAU,uBACVJ,YAAa,oBACbC,eAAgB,kBAChBC,6BAA8B,oBAC9BC,2BAA4B,sBAC5BE,KAAM,KACNC,QAAS,KACTC,SAAU,YACVC,cAAe,eACfC,WAAY,gBACZC,cAAe,KACfC,aAAc,gBACdC,eAAgB,8CAChBC,YAAa,yCAEf,QAAS,CACPE,YAAa,YACbf,YAAa,qBACbC,eAAgB,yBAChBC,6BAA8B,mBAC9BC,2BAA4B,gCAC5BC,SAAU,UACVC,KAAM,kBACNC,QAAS,KACTC,SAAU,YACVC,cAAe,iBACfC,WAAY,cACZC,cAAe,KACfC,aAAc,gBACdC,eAAgB,gDAChBC,YAAa,mDAkBb,CACF,QAAS,CACP,CACEM,KAAM,OACNC,IAAK,gBACLC,KAAM,iCAER,CACEF,KAAM,OACNC,IAAK,OACLC,KAAM,mCACNC,MAAO,SAET,CACEH,KAAM,OACNC,IAAK,OACLC,KAAM,qCACNC,MAAO,WAET,CACEH,KAAM,OACNC,IAAK,+BACLC,KAAM,sCAER,CACEF,KAAM,OACNxD,KAAM,0BACN4D,QAAS,uCAGb,QAAS,CACP,CACEJ,KAAM,OACNC,IAAK,OACLC,KAAM,mCACNC,MAAO,SAET,CACEH,KAAM,OACNC,IAAK,OACLC,KAAM,qCACNC,MAAO,WAET,CACEH,KAAM,OACNC,IAAK,+BACLC,KAAM,sCAER,CACEF,KAAM,OACNxD,KAAM,0BACN4D,QAAS,uCAGb,QAAS,CACP,CACEJ,KAAM,OACNC,IAAK,OACLC,KAAM,mCACNC,MAAO,SAET,CACEH,KAAM,OACNC,IAAK,OACLC,KAAM,qCACNC,MAAO,WAET,CACEH,KAAM,OACNC,IAAK,mBACLC,KAAM,sCAER,CACEF,KAAM,OACNxD,KAAM,0BACN4D,QAAS,uCAGb,QAAS,CACP,CACEJ,KAAM,OACNC,IAAK,gBACLC,KAAM,iCAER,CACEF,KAAM,OACNC,IAAK,OACLC,KAAM,mCACNC,MAAO,SAET,CACEH,KAAM,OACNC,IAAK,OACLC,KAAM,qCACNC,MAAO,WAET,CACEH,KAAM,OACNC,IAAK,+BACLC,KAAM,sCAER,CACEF,KAAM,OACNxD,KAAM,0BACN4D,QAAS,uCAGb,QAAS,CACP,CACEJ,KAAM,OACNC,IAAK,gBACLC,KAAM,iCAER,CACEF,KAAM,OACNC,IAAK,OACLC,KAAM,mCACNC,MAAO,SAET,CACEH,KAAM,OACNC,IAAK,OACLC,KAAM,qCACNC,MAAO,WAET,CACEH,KAAM,OACNC,IAAK,+BACLC,KAAM,sCAER,CACEF,KAAM,OACNxD,KAAM,0BACN4D,QAAS,uCAGb,QAAS,CACP,CACEJ,KAAM,OACNC,IAAK,gBACLC,KAAM,iCAER,CACEF,KAAM,OACNC,IAAK,OACLC,KAAM,mCACNC,MAAO,SAET,CACEH,KAAM,OACNC,IAAK,OACLC,KAAM,qCACNC,MAAO,WAET,CACEH,KAAM,OACNC,IAAK,+BACLC,KAAM,sCAER,CACEF,KAAM,OACNxD,KAAM,0BACN4D,QAAS,uCAGb,QAAS,CACP,CACEJ,KAAM,OACNC,IAAK,gBACLC,KAAM,iCAER,CACEF,KAAM,OACNC,IAAK,OACLC,KAAM,mCACNC,MAAO,SAET,CACEH,KAAM,OACNC,IAAK,OACLC,KAAM,qCACNC,MAAO,WAET,CACEH,KAAM,OACNC,IAAK,+BACLC,KAAM,sCAER,CACEF,KAAM,OACNxD,KAAM,0BACN4D,QAAS,uCAGb,QAAS,CACP,CACEJ,KAAM,OACNC,IAAK,gBACLC,KAAM,iCAER,CACEF,KAAM,OACNC,IAAK,OACLC,KAAM,mCACNC,MAAO,SAET,CACEH,KAAM,OACNC,IAAK,OACLC,KAAM,qCACNC,MAAO,WAET,CACEH,KAAM,OACNC,IAAK,+BACLC,KAAM,sCAER,CACEF,KAAM,OACNxD,KAAM,0BACN4D,QAAS,uCAGb,QAAS,CACP,CACEJ,KAAM,OACNC,IAAK,gBACLC,KAAM,iCAER,CACEF,KAAM,OACNC,IAAK,OACLC,KAAM,mCACNC,MAAO,SAET,CACEH,KAAM,OACNC,IAAK,OACLC,KAAM,qCACNC,MAAO,WAET,CACEH,KAAM,OACNC,IAAK,+BACLC,KAAM,sCAER,CACEF,KAAM,OACNxD,KAAM,0BACN4D,QAAS,uDASX,CACF,QAAS,CAAEC,GAAI,EAAG7D,KAAM,WACxB,QAAS,CAAE6D,GAAI,EAAG7D,KAAM,aACxB,QAAS,CAAE6D,GAAI,EAAG7D,KAAM,YACxB,QAAS,CAAE6D,GAAI,EAAG7D,KAAM,YACxB,QAAS,CAAE6D,GAAI,EAAG7D,KAAM,eACxB,QAAS,CAAE6D,GAAI,EAAG7D,KAAM,YACxB,QAAS,CAAE6D,GAAI,EAAG7D,KAAM,WACxB,QAAS,CAAE6D,GAAI,EAAG7D,KAAM,UACxB,QAAS,CAAE6D,GAAI,EAAG7D,KAAM,+BAGU,gCAIhC,CACF,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,8BAG6D,CACtE,QAAS,IACT,QAAS,KACT,QAAS,KACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,qBAG4C,CACrD8D,IAAK,gCAQH,CACF,QAAS,CACPC,QAAS,UACT3D,SAAU,WACVO,MAAO,QACPqD,OAAQ,SACRC,QAAS,UACTC,sBAAuB,wBACvBC,uBAAwB,0BACxBC,gBAAiB,kBACjBC,oBAAqB,sBACrBC,KAAM,OACNC,cAAe,gBACfC,mBAAoB,qBACpBC,UAAW,aAEb,QAAS,CACPV,QAAS,WACT3D,SAAU,WACVO,MAAO,cACPqD,OAAQ,WACRC,QAAS,QACTC,sBAAuB,yBACvBC,uBAAwB,0BACxBC,gBAAiB,mBACjBC,oBAAqB,uBACrBC,KAAM,WACNC,cAAe,sBACfC,mBAAoB,oBACpBC,UAAW,qCAIsB,yBAEL,iCAEsB,CACpD,QACA,QACA,QACA,QACA,6BAG+C,CAAC,QAAS,QAAS,yCAEP,CAC3D,QACA,QACA,QACA,QACA,QACA,QACA,QACA,wBC7xBI,SAAUC,EAAaC,GAC3B,OAAOA,QCiFF,ICQKC,EDRCC,EAAgB,CAC3BC,0BAA2B,SACzBC,GAEA,OAAKA,GAAYA,EAAQC,SAClB,CACLC,QAASF,EAAQC,SACjBlF,YAAaiF,EAAQjF,aAAe,IAHI,MAM5CoF,YAAa,SAACC,EAAwB3G,GACpC,IAAM4G,EAAkC,iBAAVD,EAAqBE,SAASF,GAASA,EAErE,OAAO,IAAIG,KAAKC,aAAa/G,GAAU,SAASgH,OAAOJ,IAEzDK,uBAAwB,SAACC,GACvB,MAAO,CACLC,MAAMD,eAAAA,EAAM1F,OAAQ,KAGxB4F,iBAAkB,SAACF,GACjB,MAAO,CACL1F,MAAM0F,eAAAA,EAAM1F,OAAQ,GACpB6F,eAAeH,eAAAA,EAAMI,iBAAkB,GACvC3F,KAAKuF,eAAAA,EAAMvF,MAAO,KAGtB4F,eAAgB,SACdL,EACAM,EACAC,aAEMC,EAAkBD,EACpBA,EAAiB,IAAMP,EAAKS,KAC5BT,EAAKS,KACHC,GACe,QAAnBC,EAAc,QAAdC,EAAAZ,aAAA,EAAAA,EAAMU,gBAAQ,IAAAE,OAAA,EAAAA,EAAEC,WAAG,IAAAF,OAAA,EAAAA,EAAAG,KAAAF,GAAG,SAACG,GACrB,OAAO5B,EAAckB,eACnBU,EACAf,EAAK7B,GACLqC,QAEE,GACR,MAAO,CACLrC,GAAI6B,aAAA,EAAAA,EAAM7B,GACV7D,MAAM0F,eAAAA,EAAM1F,OAAQ,GACpB0G,MAAMhB,eAAAA,EAAMgB,OAAQ,GACpBP,MAAMT,eAAAA,EAAMS,OAAQ,GACpBQ,SAAUT,GAAmB,GAC7BE,SAAQA,EACRQ,gBAAiBlB,EAAKmB,OAASC,EAAMC,OAAOC,OAC5ChB,SAAUA,GAAY,EACtBiB,UACgB,QAAbC,EAAAxB,EAAKuB,gBAAQ,IAAAC,OAAA,EAAAA,EAAEX,IAAI1B,EAAcsC,iBAAgC,KAGxEC,iBAAkB,SAAC1B,6CACX2B,GACqB,kBAAzBhB,EAAc,QAAdC,EAAAZ,eAAAA,EAAM4B,cAAQ,IAAAhB,OAAA,EAAAA,EAAAgB,6BAAQf,WAAG,IAAAW,OAAA,EAAAA,EAAAV,KAAAH,GAAG,SAACiB,GAC3B,MAAO,CACLC,KAAMD,EAAOC,MAAQ,GACrBvH,KAAMsH,EAAOtH,MAAQ,GACrBG,IAAKmH,EAAOnH,KAAO,SAEjB,GAEFqH,GAIwB,kBAA5BC,EAAe,QAAfC,EAAAhC,eAAAA,EAAMiC,eAAS,IAAAD,OAAA,EAAAA,EAAAF,+BAAUjB,WAAG,IAAAqB,OAAA,EAAAA,EAAApB,KAAAiB,GAAG,SAACI,GAC9B,MAAO,CACLC,MAAOD,EAAaC,OAAS,GAC7B3H,IAAK0H,EAAa1H,KAAO,SAEvB,GAEF4H,GAOW,QAAfC,EAAU,QAAVC,EAAAvC,aAAA,EAAAA,EAAMqC,YAAI,IAAAE,OAAA,EAAAA,EAAE1B,WAAG,IAAAyB,OAAA,EAAAA,EAAAxB,KAAAyB,GAAG,SAACC,WACjB,MAAO,CACLC,WAAYD,EAASC,WACrBC,MAA6B,QAAtB/B,EAAgB,QAAhBC,EAAA4B,EAASE,aAAO,IAAA9B,OAAA,EAAAA,EAAAC,WAAM,IAAAF,OAAA,EAAAA,EAAAG,KAAAF,GAAA,SAAC7F,GAC5B,MAAO,CACL4H,MAAO5H,EAAK4H,MACZlI,IAAKM,EAAKN,cAIZ,GAEFmI,GAKsB,kBAA1BC,EAAc,QAAdC,EAAA9C,eAAAA,EAAM+C,cAAQ,IAAAD,OAAA,EAAAA,EAAAF,8BAAS/B,WAAG,IAAAmC,OAAA,EAAAA,EAAAlC,KAAA+B,GAAG,SAACE,GAC5B,MAAO,CACLE,KAAMF,EAAOE,MAAQ,GACrB3I,KAAMyI,EAAOzI,MAAQ,GACrBG,IAAKsI,EAAOtI,KAAO,SAEjB,GAER,MAAO,CACLmH,OAAQ,CACNe,OAAqB,QAAdO,EAAAlD,aAAA,EAAAA,EAAM4B,cAAQ,IAAAsB,OAAA,EAAAA,EAAAP,QAAS,GAC9Bf,OAAQD,GAEVM,QAAS,CACPjB,aAAMmC,EAAe,QAAfC,EAAApD,aAAA,EAAAA,EAAMiC,eAAS,IAAAmB,OAAA,EAAAA,EAAApC,oBAAQ,GAC7B9C,gBAASmF,EAAe,QAAfC,EAAAtD,aAAA,EAAAA,EAAMiC,eAAS,IAAAqB,OAAA,EAAAA,EAAApF,uBAAW,GACnCqF,kBAAWC,EAAe,QAAfC,EAAAzD,aAAA,EAAAA,EAAMiC,eAAS,IAAAwB,OAAA,EAAAA,EAAAF,yBAAa,GACvCzB,SAAQA,GAEVO,KAAIA,EACJU,OAAQ,CACNJ,OAAqB,QAAde,EAAA1D,aAAA,EAAAA,EAAM+C,cAAQ,IAAAW,OAAA,EAAAA,EAAAf,QAAS,GAC9BC,QAAOA,KAIbe,iBAAkB,SAChB3D,mBAEA,MAAO,CACL4D,mBAEI,QADFjD,EAAyB,UAAzBX,aAAA,EAAAA,EAAM6D,2BAAmB,IAAAjD,OAAA,EAAAA,EAAEC,WACzB,IAAAF,OAAA,EAAAA,EAAAG,KAAAF,EAAAzB,EAAcY,0BACX,GACP+D,aAC4B,QAA1B9B,EAAkB,UAAlBhC,aAAA,EAAAA,EAAM+D,oBAAY,IAAAvC,OAAA,EAAAA,EAAEX,WAAM,IAAAmB,OAAA,EAAAA,EAAAlB,KAAAU,EAAArC,EAAce,oBAAqB,GAC/D8D,YACuB,QAArB9B,EAAgB,QAAhBH,EAAA/B,aAAA,EAAAA,EAAMgE,kBAAU,IAAAjC,OAAA,EAAAA,EAAElB,WAAG,IAAAqB,OAAA,EAAAA,EAAApB,KAAAiB,GAAG,SAACkC,GACvB,OAAA9E,EAAckB,eAAe4D,QAC1B,GACPC,OAAQ/E,EAAcuC,iBAAiB1B,aAAA,EAAAA,EAAMkE,QAC7CC,SAASnE,eAAAA,EAAMoE,WAAY,EAC3BC,YAAYrE,eAAAA,EAAMsE,cAAe,EACjCC,aACkC,iBAAzBvE,aAAI,EAAJA,EAAMwE,gBAA8BxE,EAAKwE,eAAiB,OAKvEC,gBAAiB,SAACC,GAChB,OAAKA,EACE,CACLC,MAAOD,EAAaC,OAAS,EAC7BC,QAASF,EAAaE,SAAW,EACjCC,gBAAiBH,EAAaI,kBAAoB,GAJ1B,MAO5BrD,cAAe,SAAUsD,eACvB,IAAKA,EAAY,OAAO,KACxB,IAAMC,EAAmB,CACvBL,MAAO,EACPC,QAAS,EACTC,gBAAiB,GAEnB,MAAO,CACL1G,GAAI4G,EAAW5G,IAAM,EACrBsB,MAAOsF,EAAWtF,OACdN,EAAcsF,gBAAgBM,EAAWtF,QACzCuF,EACJC,UAAWF,EAAWE,WAAa,GACnC3K,KAAMyK,EAAWzK,MAAQ,GACzB4K,cAAeC,QAAQJ,EAAWK,gBAAkB,GAAGC,QAAQ,IAC/DC,aAAcP,EAAWQ,eAAiB,EAC1CC,IAAKT,EAAWS,KAAO,KACvBC,IAAKV,EAAWU,KAAO,GACvBhF,KAAMsE,EAAWtE,MAAQ,GACzBiF,OAAQX,EAAWW,QAAU,GAC7BC,KAAMZ,EAAWY,MAAQ,GACzBC,KAAMb,EAAWa,MAAQ,GACzBC,MAAOd,EAAWc,MACd,CACEvL,KAAMyK,EAAWc,MAAMvL,MAAQ,GAC/B8H,MAAO2C,EAAWc,MAAMzD,OAAS,GACjC3B,KAAMsE,EAAWc,MAAMpF,MAAQ,GAC/BqF,cAAef,EAAWc,MAAME,gBAAkB,GAEpD,KACJ3L,YAAa2K,EAAW3K,aAAe,GACvC4L,2BACErF,EACI,UADJoE,EAAWkB,0BACP,IAAArF,OAAA,EAAAA,EAAAC,iCAAM1B,EAAc+G,wBACrBC,OAAOnH,KAAc,GAC1BgF,YAES,QADPhC,EAAqB,QAArBR,EAAAuD,EAAWf,kBAAU,IAAAxC,OAAA,EAAAA,EACjBX,WAAG,IAAAmB,OAAA,EAAAA,EAAAlB,KAAAU,GAAG,SAAC4E,GAAM,OAAAjH,EAAckB,eAAe+F,MAC3CD,OAAOnH,KAAc,GAC1BqH,WAAWtB,eAAAA,EAAYuB,eAAe,IAG1CC,aAAc,SAACC,GACb,OAAKA,EACE,CACLlM,KAAMkM,EAAUlM,MAAQ,GACxBG,IAAK+L,EAAU/L,KAAO,GACtB0F,cAAeqG,EAAUpG,gBAAkB,GAC3CqG,IAAKD,EAAUE,WALM,MAQzBC,eAAgB,SAACC,WACf,OAAKA,EACE,CACLjE,MAAOiE,EAAYjE,OAAS,GAC5BP,MAAOwE,EAAYxE,OAAS,GAC5ByE,KAAMD,EAAYC,MAAQ,GAC1BC,SAAUF,EAAYG,UAClB,CACEC,SAAUJ,EAAYG,UAAUC,SAC5B,CACEC,OAAQ9H,EAAc+H,+BACpBN,EAAYG,UAAUC,SAASC,aAAUE,GAE3CC,OAAQjI,EAAc+H,+BACpBN,EAAYG,UAAUC,SAASI,aAAUD,GAE3CE,OAAQlI,EAAc+H,+BACpBN,EAAYG,UAAUC,SAASK,aAAUF,GAE3CG,UAAWnI,EAAc+H,+BACvBN,EAAYG,UAAUC,SAASO,iBAAcJ,GAE/CK,SAAUC,QAAQb,EAAYG,UAAUC,SAASU,YAEnD,KACJ1D,WAAY4C,EAAYG,UAAU/C,WACS,QAAvCrD,GAAAC,EAAAgG,EAAYG,UAAU/C,YAAWnD,WAAM,IAAAF,OAAA,EAAAA,EAAAG,KAAAF,GAAA,SAAC7F,GAAS,MAAC,CAChD4M,OAAQ5M,EAAK6M,SAAW,EACxBtN,KAAMS,EAAKT,MAAQ,GACnBuN,UAAW9M,EAAK8M,WAAa,GAC7BC,UAAW/M,EAAKgN,YAAc,OAEhC,GACJC,SAAUpB,EAAYG,UAAUkB,WAAa,GAC7CC,aAActB,EAAYG,UAAUoB,eAAiB,GACrDC,aAAcxB,EAAYG,UAAUsB,eAAiB,IAEvD,MApCmB,MAuC3BnB,+BAAgC,SAC9BoB,GAEA,OAAKA,EACE,CACLnK,GAAImK,EAA4BlN,IAAM,EACtCmN,OAAQD,EAA4BE,SAAW,EAC/CC,WAAYH,EAA4BI,aAAe,GACvDC,KAAML,EAA4BK,MAAQ,GAC1ClI,KAAM6H,EAA4B7H,MAAQ,GAC1CmI,YAAaN,EAA4BO,cAAgB,GACzDzO,YAAakO,EAA4BlO,aAAe,GACxD0O,WAAYR,EAA4BS,aAAe,GACvDC,OAAQV,EAA4BU,QAAU,GAC9CC,gBAAiBX,EAA4BY,kBAAoB,GACjEC,eAAgB1B,QAAQa,EAA4Bc,mBAZb,MAe3CC,YAAa,SAAUC,eACrB,OAAKA,EACE,CACLnL,GAAImL,EAASnL,IAAM,EACnBiE,MAAOkH,EAASlH,OAAS,GACzBmH,SAAUD,EAASC,UAAY,GAC/BC,UAAWF,EAASG,aAAc,EAClCC,QAASJ,EAASI,SAAW,GAC7BpP,KAAMgP,EAAShP,MAAQ,GACvBmG,KAAM6I,EAAS7I,MAAQ,GACvBrG,YAAakP,EAASlP,aAAe,KACrCuP,SACuB,QAArBhJ,EAAgB,QAAhBC,EAAA0I,EAASK,eAAO,IAAA/I,OAAA,EAAAA,EAAEC,WAAG,IAAAF,OAAA,EAAAA,EAAAG,KAAAF,EAAGzB,EAAcoH,cAAcJ,OAAOnH,KAC3D,GACF4K,4BACE5H,EACI,UADJsH,EAASO,2BACL,IAAArI,OAAA,EAAAA,EAAAX,iCAAM1B,EAAcsC,eACrB0E,OAAOnH,KAAc,IAhBN,MAmBxB8K,eAAgB,SAACC,+CACf,OAAKA,EACE,CACLC,OAAQD,EAAYC,OACS,QAAzBrJ,GAAAC,EAAAmJ,EAAYC,QAAOnJ,WAAM,IAAAF,OAAA,EAAAA,EAAAG,KAAAF,EAAAzB,EAAckK,aAAalD,OAAOnH,GAC3D,GACJiL,SAAUF,EAAYG,UAET,QADTlI,GAAAR,EAAAuI,EAAYG,WACTrJ,WAAM,IAAAmB,OAAA,EAAAA,EAAAlB,KAAAU,EAAArC,EAAcsC,eACpB0E,OAAOnH,GACV,GACJmL,YAAaJ,EAAYK,aAEZ,QADTlI,GAAAH,EAAAgI,EAAYK,cACTvJ,WAAM,IAAAqB,OAAA,EAAAA,EAAApB,KAAAiB,EAAA5C,EAAcsC,eACpB0E,OAAOnH,GACV,GACJqL,aAAcN,EAAYO,cAEb,QADThI,GAAAC,EAAAwH,EAAYO,eACTzJ,WAAM,IAAAyB,OAAA,EAAAA,EAAAxB,KAAAyB,EAAApD,EAAcoH,cACpBJ,OAAOnH,GACV,GACJuL,WAAYR,EAAYS,YAEX,QADT3H,GAAAC,EAAAiH,EAAYS,aACT3J,WAAM,IAAAgC,OAAA,EAAAA,EAAA/B,KAAAgC,EAAA3D,EAAcoH,cACpBJ,OAAOnH,GACV,GACJyL,cAAeV,EAAYW,eAEd,QADTxH,GAAAF,EAAA+G,EAAYW,gBACT7J,WAAM,IAAAqC,OAAA,EAAAA,EAAApC,KAAAkC,EAAA7D,EAAcoH,cACpBJ,OAAOnH,GACV,GACJ2L,UAAWZ,EAAYa,WAEV,QADTzH,GAAAC,EAAA2G,EAAYa,YACT/J,WAAM,IAAAsC,OAAA,EAAAA,EAAArC,KAAAsC,EAAAjE,EAAcwH,gBACpBR,OAAOnH,GACV,GACJ6L,kBAAmBd,EAAYe,mBAElB,QADTzH,GAAAC,EAAAyG,EAAYe,oBACTjK,WAAM,IAAAwC,OAAA,EAAAA,EAAAvC,KAAAwC,GAAA,SAAC8C,GAAM,OAAAjH,EAAckB,eAAe+F,MAC1CD,OAAOnH,GACV,GACJ+L,gBAAiBhB,EAAYiB,iBAEhB,QADTxH,GAAAC,EAAAsG,EAAYiB,kBACTnK,WAAM,IAAA2C,OAAA,EAAAA,EAAA1C,KAAA2C,GAAA,SAAC2C,GAAM,OAAAjH,EAAckB,eAAe+F,MAC1CD,OAAOnH,GACV,GACJiM,WAAYlB,EAAYkB,WAEX,QADTC,GAAAxH,EAAAqG,EAAYkB,YACTpK,WAAM,IAAAqK,OAAA,EAAAA,EAAApK,KAAA4C,GAAA,SAAC0C,GAAM,OAAAjH,EAAcgM,gBAAgB/E,MAC3CD,OAAOnH,GACV,IAjDmB,MAoD3BoM,mBAAoB,SAClBC,eAEA,OAAKA,EACE,CACLlN,GAAIkN,EAAgBlN,IAAM,EAC1B7D,KAAM+Q,EAAgB/Q,MAAQ,GAC9BmG,KAAM4K,EAAgB5K,MAAQ,GAC9BrG,YAAaiR,EAAgBjR,aAAe,KAC5CuP,iBACEhJ,EACI,UADJ0K,EAAgB1B,eACZ,IAAA/I,OAAA,EAAAA,EAAAC,iCAAM1B,EAAcoH,cACrBJ,OAAOnH,KAAc,GAC1B4K,4BACE5H,EACI,UADJqJ,EAAgBxB,2BACZ,IAAArI,OAAA,EAAAA,EAAAX,iCAAM1B,EAAcsC,eACrB0E,OAAOnH,KAAc,IAbC,MAgB/BsM,gBAAiB,SAAUC,GACzB,OAAKA,EACEpM,EAAckK,YAAYkC,GADP,MAG5BC,iBAAkB,SAACC,GACjB,OAAKA,EACE,CACLC,QAASD,EAAcC,SAAW,EAClCC,MAAOF,EAAcE,OAAS,EAC9BC,aAAcH,EAAcI,gBAAkB,EAC9CC,KAAML,EAAcK,MAAQ,EAC5BC,KAAMN,EAAcM,MAAQ,EAC5BC,KAAMP,EAAcO,MAAQ,EAC5BC,WAAYR,EAAcS,aAAe,GARhB,MAW7BC,wBAAyB,SACvBC,uBAEA,OAAKA,EAECC,EAAAA,EAAA,GAAAlN,EAAcsC,cAAc2K,IAAiC,CACjEE,iBAEY,UAD2B,QAArC1L,EAAAwL,EAAqBG,wBAAgB,IAAA3L,OAAA,EAAAA,EACjCC,WAAM,IAAAF,OAAA,EAAAA,EAAAG,KAAAF,EAAAzB,EAAcsC,eACrB0E,OAAOnH,KAAc,GAC1B4K,oBAES,QADP5H,UAAAR,EAAA4K,EAAqBvC,0CACjBhJ,WAAG,IAAAmB,OAAA,EAAAA,EAAAlB,KAAAU,EAAGrC,EAAcsC,eACrB0E,OAAOnH,KAAc,GAC1BwN,gBAES,QADPtK,UAAAH,EAAAqK,EAAqBK,sCACjB5L,WAAG,IAAAqB,OAAA,EAAAA,EAAApB,KAAAiB,EAAG5C,EAAcsC,eACrB0E,OAAOnH,KAAc,GAC1BiM,oBACE3I,EACI,UADJ8J,EAAqBnB,kBACjB,IAAA1I,OAAA,EAAAA,EAAA1B,iCAAM1B,EAAcgM,iBACrBhF,OAAOnH,KAAc,KAlBM,MAqBpC0N,oBAAqB,SACnBC,WAEA,OAAKA,EAGE,CACLC,SAAUD,EAAcE,WAAa,GACrCC,UAAWH,EAAcI,YAAc,GACvCpK,MAAOgK,EAAchK,OAAS,GAC9BqK,OAAQL,EAAcK,QAAU,GAChCC,SAAUN,EAAcO,WAAa,GACrClE,OAAQ2D,EAAc3D,QAAU,GAChCmE,aACoC,QAAlCxM,EAA4B,QAA5BC,EAAA+L,EAAcS,oBAAc,IAAAxM,OAAA,EAAAA,EAAAC,WAAM,IAAAF,OAAA,EAAAA,EAAAG,KAAAF,GAAA,SAACyM,GACjC,MAAO,CACLC,WAAYD,EAAKE,aAAe,GAChCC,MAAOrI,OAAOkI,EAAKG,QAAU,EAC7BC,QAAStI,OAAOkI,EAAKI,UAAY,QAE/B,GACR/H,OAAQiH,EAAcjH,QAAU,IAlBP,MAqB7BQ,uBAAwB,SACtBwH,GAEA,OAAKA,EAEE,CACLvP,GAAIuP,EAAoBvP,IAAM,EAC9B7D,KAAMoT,EAAoBpT,MAAQ,GAClC2K,UAAWyI,EAAoBzI,WAAa,GAC5C0I,eAAgBD,EAAoBE,iBAAmB,IANxB,MASnCzC,gBAAiB,SAAC0C,GAChB,OAAKA,EAEE,CACL1P,GAAI0P,EAAa1P,IAAM,EACvB7D,KAAMuT,EAAavT,MAAQ,GAC3BmG,KAAMoN,EAAapN,MAAQ,GAC3BwE,UAAW4I,EAAa5I,WAAa,GACrC6I,YAAaD,EAAaE,cAAgB,GAC1CpE,QAASkE,EAAalE,SAAW,GACjCqE,OAAQ,EACR5T,YAAayT,EAAazT,aAAe,GACzC6T,UAAWJ,EAAaK,YAAc,GACtCC,aAAcN,EAAaO,eAAiB,GAC5CC,gBAAiBR,EAAaS,kBAAoB,IAb1B,MAgB5BC,uBAAwB,SACtBC,EACA1Q,SAEA,OAAK0Q,aAAA,EAAAA,EAAqBC,UAIvB,QAFD7N,EAAA4N,aAAA,EAAAA,EAAqBE,MACnB,SAAC3T,GAA8B,OAAAA,EAAK4T,iBAAmB7Q,YACxD,IAAA8C,OAAA,EAAAA,EAAE4M,QAJoC,IAQ3CoB,cAAe,SAACC,eACd,OAAKA,EACE,CACL1Q,GAAI0Q,EAAW1Q,IAAM,EACrB2Q,SAAUD,EAAWE,WAAa,GAClCC,UAAWH,EAAWG,WAAa,GACnCC,SACE,CACEzB,cAAO5M,EAAAiO,EAAWK,6BAAQC,UAC1BC,cAAOzO,EAAAkO,EAAWK,6BAAQA,SACvB,KACPG,SAAU,CACR7B,MAAOrO,EAAcoP,uBACnBM,EAAWS,kBACX,eAEFF,MAAOjQ,EAAcoP,uBACnBM,EAAWS,kBACX,aAGJC,QAAS,CACP/B,MAAOrO,EAAcoP,uBACnBM,EAAWS,kBACX,WAEFF,MAAOjQ,EAAcoP,uBACnBM,EAAWS,kBACX,SAGJE,QAA4B,QAApBhO,EAAAqN,aAAA,EAAAA,EAAYW,cAAQ,IAAAhO,OAAA,EAAAA,EAAAiN,QAASI,aAAA,EAAAA,EAAYW,OAAO,GAAK,GAC7DC,UACGZ,EAAWa,iBAAmBb,EAAWc,mBAAqB,EACjEC,aAA+C,QAAlC5N,EAAA6M,aAAA,EAAAA,EAAYgB,4BAAsB,IAAA7N,OAAA,EAAAA,EAAA8N,eAAgB,IAjCzC,MAqC1BC,eAAgB,SAACC,GACf,OAAKA,aAAA,EAAAA,EAAaC,mBAEXD,EAAYC,kBAAkBpP,KAAI,SAACoO,GAA0B,MAAC,CACnEzB,MAAOyB,EAAS9Q,IAAM,GACtBiR,MAAOH,EAAS3U,MAAQ,OAJkB,IAQ9C4V,eAAgB,SAACC,GACf,OAAKA,aAAA,EAAAA,EAAaC,WAEXD,EAAYC,UAAUvP,KAAI,SAACwO,GAA0B,MAAC,CAC3D7B,MAAO6B,EAASlR,IAAM,GACtBiR,MAAOC,EAAS/U,MAAQ,OAJU,IAQtC+V,cAAe,SAACC,GACd,OAAKA,aAAA,EAAAA,EAAYC,UAEVD,EAAWC,SAAS1P,KAAI,SAAC0O,GAAwB,MAAC,CACvD/B,MAAO+B,EAAQpR,IAAM,GACrBiR,MAAOG,EAAQjV,MAAQ,OAJS,IAQpCkW,YAAa,SAACC,WACZ,OAAKA,EACE,CACLC,aAAaD,eAAAA,EAAUE,eAAgB,GACvCC,cAAcH,aAAA,EAAAA,EAAUI,eACpB,CACEC,eAAgBL,EAASI,cAAcE,iBAAmB,GAC1DC,oBACEP,EAASI,cAAcI,sBAAwB,GACjDC,gBAAiBT,EAASI,cAAcM,iBACpC,CACErC,SACE2B,EAASI,cAAcM,iBAAiBpC,WAAa,GACvDa,YACEa,EAASI,cAAcM,iBAAiBrB,cAAgB,GAC1Dd,UACEyB,EAASI,cAAcM,iBAAiBnC,WAAa,IAEzD,KACJoC,aAAc,MAEhB,KACJC,aAAaZ,eAAAA,EAAUa,eAAgB,GACvCC,QAAQd,eAAAA,EAAUc,SAAU,KAC5BC,QAAQf,aAAA,EAAAA,EAAUe,QACd,CACEC,SAAUhB,EAASe,OAAOC,UAAY,EACtCC,eAAgBjB,EAASe,OAAOG,iBAAmB,EACnDC,eAAgBnB,EAASe,OAAOK,iBAAmB,EACnDC,WAAYrB,EAASe,OAAOO,aAAe,GAE7C,KACJxQ,UACyB,QAAvBZ,YAAA8P,aAAA,EAAAA,EAAUlP,+BAAUV,WAAG,IAAAF,OAAA,EAAAA,EAAAG,KAAAF,GAAG,SAACoR,GAAM,MAAC,CAChCvM,IAAKuM,EAAEvM,KAAO,GACdnL,KAAM0X,EAAE1X,MAAQ,GAChBmF,MAAOuS,EAAEvS,OAAS,EAClBwS,SAAUD,EAAEE,WAAa,EACzB9P,MAAO4P,EAAE5P,OAAS,GAClB+P,IAAKH,EAAEG,KAAO,QACT,GAETC,eAAe3B,eAAAA,EAAU4B,iBAAkB,IAzCvB,MA4CxBC,gBAAiB,SAACC,iBAChB,OAAKA,EACE,CACLC,QACErN,OAEM,QADJvE,EAAA2R,aAAS,EAATA,EAAW7D,MAAK,SAAC+D,GAAsB,MAAe,YAAfA,EAAIlB,iBACvC,IAAA3Q,OAAA,EAAAA,EAAA8R,SACD,EACPC,WACExN,OAEM,QADJxE,EAAA4R,aAAS,EAATA,EAAW7D,MAAK,SAAC+D,GAAsB,MAAe,eAAfA,EAAIlB,iBACvC,IAAA5Q,OAAA,EAAAA,EAAA+R,SACD,EACPE,WACEzN,OAEM,QADJ3D,EAAA+Q,aAAS,EAATA,EAAW7D,MAAK,SAAC+D,GAAsB,MAAe,eAAfA,EAAIlB,iBACvC,IAAA/P,OAAA,EAAAA,EAAAkR,SACD,EACPG,SACE1N,OAEM,QADJnD,EAAAuQ,aAAS,EAATA,EAAW7D,MAAK,SAAC+D,GAAsB,MAAe,aAAfA,EAAIlB,iBACvC,IAAAvP,OAAA,EAAAA,EAAA0Q,SACD,EACPI,SACE3N,OAEM,QADJpD,EAAAwQ,aAAS,EAATA,EAAW7D,MAAK,SAAC+D,GAAsB,MAAe,aAAfA,EAAIlB,iBACvC,IAAAxP,OAAA,EAAAA,EAAA2Q,SACD,GA1Bc,IA6BzBK,eAAgB,SAACC,uBACf,OAAKA,EACE,CACLC,OAAQD,EAAYE,SAAW,EAC/BzN,IAAKuN,EAAYvN,KAAO,GACxB0M,IAAKa,EAAYb,KAAO,EACxB7X,KAAM0Y,EAAY1Y,MAAQ,GAC1BmF,MAAOuT,EAAYvT,OAAS,EAC5B0T,WAA2C,QAAhCvS,EAAAoS,EAAYnD,4BAAoB,IAAAjP,OAAA,EAAAA,EAAEwS,aAAc,EAC3DC,YAAaL,EAAYM,cAAgB,GACzCC,QAASP,EAAYQ,UAAY,GACjCvO,WAA2C,QAAhCtE,EAAAqS,EAAYnD,4BAAoB,IAAAlP,OAAA,EAAAA,EAAEsE,YAAa,GAC1DgN,UAA0C,QAAhCzQ,EAAAwR,EAAYnD,4BAAoB,IAAArO,OAAA,EAAAA,EAAE0Q,YAAa,EACzDjH,oBAAa/I,EAA8C,UAAd,QAAhCF,EAAAgR,EAAYnD,4BAAoB,IAAA7N,OAAA,EAAAA,EAAEiJ,kBAAY,IAAAlJ,OAAA,EAAAA,EAAAlB,iCACzD1B,EAAc+G,0BACX,GACLG,WAA2C,QAAhC9D,EAAAyQ,EAAYnD,4BAAoB,IAAAtN,OAAA,EAAAA,EAAE+D,eAAe,EAC5DmN,YAA4C,QAAhCnR,EAAA0Q,EAAYnD,4BAAoB,IAAAvN,OAAA,EAAAA,EAAEoR,UAAW,IAhBlC,MAmB3BC,kBAAmB,SAACC,SAClB,OAAKA,EACE,CACLC,mBAAmBD,eAAAA,EAAgBE,sBAAuB,EAC1D3V,GAAIyV,EAAezV,IAAM,EACzB+Q,OAAQ0E,EAAe1E,QAAU,GACjC6E,SAAUH,EAAezE,WAAa,EACtC6E,WAAYJ,EAAeK,aAAe,GAC1CC,UAAWN,EAAeO,YAAc,GACxC3E,OAAQoE,EAAepE,QAAU,GACjC4E,SAAUR,EAAeQ,UAAY,GACrCC,KAAMT,EAAeS,MAAQ,GAC7BtF,UAAW6E,EAAe7E,WAAa,GACvCuF,SAAUV,EAAeU,UAAY,GACrCjQ,WAAYuP,EAAetP,aAAe,EAC1CiQ,MAAOX,EAAeW,OAAS,GAC/BvF,UAAW4E,EAAe5E,WAAa,GACvCwF,cAAeZ,EAAea,iBAAmB,EACjDC,kBAAmBd,EAAee,sBAAwB,EAC1D/E,aAAgD,QAAnChP,EAAAgT,EAAe/D,4BAAoB,IAAAjP,OAAA,EAAAA,EAAEkP,eAAgB,IAlBxC,MAqB9B8E,wBAAyB,SACvBC,GAEA,OAAKA,EACE,CACLC,YAAaD,EAAqBE,cAAgB,GAClDC,WAAYH,EAAqBI,aAAe,GAChDC,aAAcL,EAAqBM,eAAiB,GACpDC,YAAaP,EAAqBQ,cAAgB,GAClD3C,OAAQmC,EAAqBnC,QAAU,EACvC4C,WAAYT,EAAqBU,aAAe,EAChDC,UAAWX,EAAqBW,YAAa,EAC7CC,aAAcZ,EAAqBa,eAAiB,GACpDC,aAAcd,EAAqBe,gBAAkB,EACrDC,aAAchB,EAAqBiB,gBAAkB,GAXrB,MAcpCC,2BAA4B,SAC1BC,aAEA,OAAKA,EACE,CACLzB,MAAOyB,EAAwBzB,OAAS,GACxCxF,UAAWiH,EAAwBjH,WAAa,GAChDuF,SAAU0B,EAAwB1B,UAAY,GAC9CnW,GAAI6X,EAAwB7X,IAAM,EAClC8X,QAASD,EAAwBE,UAAY,EAC7CpJ,UAAWkJ,EAAwBjJ,YAAc,GACjDoJ,UAAWH,EAAwBI,YAAc,GACjDC,UAAWL,EAAwBM,YAAc,GACjDnS,QAAS6R,EAAwB5R,UAAY,EAC7CmS,UAAWP,EAAwBQ,YAAc,EACjDC,mBAAY9V,EAAmC,QAAnCC,EAAAoV,EAAwBS,iBAAW,IAAA7V,OAAA,EAAAA,EAAAC,iCAC7C1B,EAAcwU,qBACX,GACL+C,uBACEV,EAAwBW,2BAA6B,EACvDC,cAC8C,QAA5CpV,EAAAwU,EAAwBnG,4BAAoB,IAAArO,OAAA,EAAAA,EAAEqV,iBAAiB,GAlB9B,MAqBvCC,WAAY,SAACC,mCACX,OAAKA,EACE,CACL5Y,GAAI4Y,EAAQ5Y,IAAM,EAClB2O,UAAWiK,EAAQhK,YAAc,GACjCoJ,UAAWY,EAAQX,YAAc,GACjCY,SAAUD,EAAQE,YAAa,EAC/BC,UAAWH,EAAQI,aAAc,EACjCzU,OACuC,QAD/BlB,YACJ,QADIZ,EAAAmW,EAAQrU,aACZ,IAAA9B,OAAA,EAAAA,EAAAC,iCAAM1B,EAAc4T,uBAAe,IAAAvR,OAAA,EAAAA,EACnC4V,MAAK,SAACC,EAAGC,GAAM,OAAAnS,OAAOmS,eAAAA,EAAGjR,WAAalB,OAAOkS,aAAA,EAAAA,EAAGhR,gBAClD,GACFkR,WAAYR,EAAQS,aAAe,EACnCC,SAAUV,EAAQW,WAAa,EAC/BC,SAAUZ,EAAQY,SACdxY,EAAc4W,2BAA2BgB,EAAQY,UACjD,KACJC,eAAgBb,EAAQc,gBACpB1Y,EAAcwU,kBAAkBoD,EAAQc,iBACxC,KACJC,YAAaf,EAAQgB,eAAiB,EACtCC,SAAU,CACRC,oBAAoC,QAAhBjW,EAAA+U,EAAQiB,gBAAQ,IAAAhW,OAAA,EAAAA,EAAEkW,uBAAwB,GAC9DC,kBAAkC,QAAhBpW,EAAAgV,EAAQiB,gBAAQ,IAAAjW,OAAA,EAAAA,EAAEqW,qBAAsB,GAC1DC,mBAAmC,QAAhBnW,EAAA6U,EAAQiB,gBAAQ,IAAA9V,OAAA,EAAAA,EAAEoW,sBAAuB,GAC5DC,mBAAmC,QAAhBhW,EAAAwU,EAAQiB,gBAAQ,IAAAzV,OAAA,EAAAA,EAAEiW,sBAAuB,GAC5DC,iBAAiC,QAAhBnW,EAAAyU,EAAQiB,gBAAQ,IAAA1V,OAAA,EAAAA,EAAEoW,qBAAsB,EACzDC,kBAAkC,QAAhB7V,EAAAiU,EAAQiB,gBAAQ,IAAAlV,OAAA,EAAAA,EAAE8V,sBAAuB,EAC3DC,kBAAkC,QAAhBhW,EAAAkU,EAAQiB,gBAAQ,IAAAnV,OAAA,EAAAA,EAAEiW,sBAAuB,EAC3DC,iBAAiC,QAAhB/V,EAAA+T,EAAQiB,gBAAQ,IAAAhV,OAAA,EAAAA,EAAEgW,qBAAsB,GAE3DC,gBAAiBlC,EAAQmC,oBAAqB,EAC9CC,mBAAoBpC,EAAQqC,uBAAwB,EACpDC,mBAAoBtC,EAAQuC,uBAAyB,EACrDnV,QAAS4S,EAAQ3S,UAAY,EAC7BmV,oBACyD,QAAvDpW,EAAkD,QAAlDC,EAA4B,QAA5BF,EAAA6T,EAAQlH,4BAAoB,IAAA3M,OAAA,EAAAA,EAAEsW,4BAAoB,IAAApW,OAAA,EAAAA,EAAEvC,WAAG,IAAAsC,OAAA,EAAAA,EAAArC,KAAAsC,GAAG,SAACqW,aAAM,MAAC,CAChEC,SAAU,CACRra,QAASoa,EAAEC,SAASra,QAChBF,EAAcwU,kBAAkB8F,EAAEC,SAASra,SAC3C,KACJsa,QAAkB,QAAV/Y,EAAA6Y,EAAEC,gBAAQ,IAAA9Y,OAAA,EAAAA,EAAE+Y,SAAU,IAEhCjX,OAAmB,QAAXlB,KAAAiY,EAAE/W,OAAM7B,WAAG,IAAAW,OAAA,EAAAA,EAAAV,KAAAH,EAAGxB,EAAc4T,kBAClC,QA3Ca,MA+CvB6G,gBAAiB,SAACC,aAChB,OAAKA,EACE,CACL/H,WAAY+H,EAAa9H,aAAe,EACxC+H,eAAgBD,EAAaE,kBAAoB,EACjDtI,SAAUoI,EAAapI,UAAY,EACnCuI,aAAcH,EAAaI,eAAiB,EAC5CrI,eAAgBiI,EAAahI,iBAAmB,EAChDqI,mBAAoBL,EAAaM,sBAAwB,EACzDC,qBAAsBP,EAAaQ,wBAA0B,EAC7DC,yBAA0BT,EAAaU,6BAA+B,EACtE7I,eAAgBmI,EAAalI,iBAAmB,EAChD6I,mBAAoBX,EAAaY,sBAAwB,EACzDC,uBAAwBb,EAAac,0BAA4B,EACjEC,2BACEf,EAAagB,+BAAiC,EAChDC,UAAWjB,EAAakB,YAAc,EACtCC,cAAenB,EAAaoB,iBAAmB,EAC/CC,qBAAsBrB,EAAasB,yBAA2B,EAC9DC,kBAAmBvB,EAAawB,qBAAuB,EACvDC,sBAAuBzB,EAAa0B,0BAA4B,EAChEC,gBAAiB3B,EAAa4B,mBAAqB,EACnDC,gBAAiB7B,EAAa8B,mBAAqB,EACnDC,oBAAqB/B,EAAagC,wBAA0B,EAC5D1D,iBAAkB0B,EAAazB,oBAAsB,GACrDG,kBAAmBsB,EAAarB,qBAAuB,GACvDf,SAAUoC,EAAanC,WAAa,EACpCoE,OAAQ,CACNC,WAAYlC,EAAamC,aAAe,GACxCC,mBACsC,QAApCrb,EAAAiZ,aAAA,EAAAA,EAAchK,4BAAsB,IAAAjP,OAAA,EAAAA,EAAAsb,0BAA2B,IAEnExZ,OAC4B,QAA1BlB,EAAoB,QAApBb,EAAAkZ,EAAanX,aAAO,IAAA/B,OAAA,EAAAA,EAAAE,WAAM,IAAAW,OAAA,EAAAA,EAAAV,KAAAH,GAAA,SAAC5F,GAAS,MAAC,CACnCkY,OAAQlY,EAAKmY,SAAW,EACxBzT,MAAO1E,EAAK0E,OAAS,EACrB0T,UAAWpY,EAAKqY,YAAc,EAC9BjB,IAAKpX,EAAKoX,KAAO,EACjBF,SAAUlX,EAAKmX,WAAa,EAC5BiK,aAAcphB,EAAKqhB,gBAAkB,EACrCC,qBAAsBthB,EAAKuhB,yBAA2B,EACtDxB,UAAW/f,EAAKggB,YAAc,EAC9BC,cAAejgB,EAAKkgB,iBAAmB,EACvCsB,WAAYxhB,EAAKyhB,aAAe,EAChC5K,eAAgB7W,EAAK8W,iBAAmB,EACxCqI,mBAAoBnf,EAAKof,sBAAwB,EACjDtV,gBAAiB9J,EAAK+J,kBAAoB,EAC1C+Q,aAAc9a,EAAK+a,gBAAkB,EACrC2G,iBAAkB1hB,EAAK2hB,qBAAuB,EAC9CC,gBAAiB5hB,EAAK6hB,oBAAsB,EAC5CC,oBAAqB9hB,EAAK+hB,yBAA2B,EACrDC,QAAShiB,EAAKgiB,SAAW,GACzB7B,qBAAsBngB,EAAKogB,yBAA2B,EACtD6B,eAAgBjiB,EAAKkiB,kBAAoB,EACzC3iB,KAAMS,EAAKT,MAAQ,SACd,GACT4iB,cAAerD,EAAasD,gBAAkB,IAvDtB,MA0D5BC,oBAAqB,SACnBC,GAEA,OAAKA,EACEA,aAAO,EAAPA,EAASxc,KAAI,SAAC8Y,GAA8B,MAAC,CAClD2D,MAAM3D,eAAAA,EAAQ4D,eAAgB,GAC9B5a,OAAOgX,eAAAA,EAAQ6D,gBAAiB,GAChCvY,WAAW0U,eAAAA,EAAQ8D,oBAAqB,OAJrB,MAOvBC,yBAA0B,SACxBC,SAEA,OAAKA,EACE,CACLC,eACEze,EAAcie,8BACZO,aAAqB,EAArBA,EAAuB9N,2CAAsBgO,sBAC1C,GACPrM,OAAQrS,EAAcya,gBAAgB+D,EAAsBnM,SAN3B,MASrCsM,wBAAyB,SACvBC,GAEA,OAAKA,EACE,CACLC,UAAWD,EAAqBE,aAAc,EAC9CC,UAAW/e,EAAcqR,YAAYuN,EAAqBI,aAH1B,MAMpCC,cAAe,SAACC,SACd,OAA2B,QAAtBzd,EAAAyd,aAAA,EAAAA,EAAe3b,aAAO,IAAA9B,OAAA,EAAAA,EAAA6N,QACpB4P,EAAc3b,MAAM7B,KAAI,SAACyd,GAAyB,MAAC,CACxDhB,MAAMgB,eAAAA,EAAWhB,OAAQ,GACzBhjB,MAAMgkB,eAAAA,EAAWhkB,OAAQ,GACzB2K,WAAWqZ,eAAAA,EAAWrZ,YAAa,GACnC7K,aAAakkB,eAAAA,EAAWvQ,eAAgB,OALA,MAQ5CwQ,gBAAiB,SAACC,GAChB,OAAKA,EAEEA,EAAa3d,KAAI,SAAC4d,SAA6B,MAAC,CACrD3J,YAAa2J,EAAY1J,cAAgB,GACzCC,WAAYyJ,EAAYxJ,aAAe,GACvCtS,MAAO8b,EAAYtJ,eAAiB,GACpC/a,YAAaqkB,EAAYpJ,cAAgB,GACzC5V,OAAOgf,eAAAA,EAAalJ,cAAe,EACnCtQ,WAA8C,QAAnCrE,EAAA6d,aAAA,EAAAA,EAAa5O,4BAAsB,IAAAjP,OAAA,EAAAA,EAAAqE,YAAa,OARnC,wDC3zB9B,SAAY/F,GACVA,EAAA,KAAA,cACAA,EAAA,OAAA,gBACAA,EAAA,MAAA,eAHF,CAAYA,IAAAA,EAIX,KA8FM,gFAAwB,yBACJ"}
|