{"version":3,"file":"351.24e914c3102f05303317.js","mappings":"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","sources":["webpack://data-library-mf-app/./src/components/compare/FundMiniDetail/FundMiniDetail.scss?f3fc","webpack://data-library-mf-app/./src/components/compare/FundMiniDetail/FundMiniDetail.tsx","webpack://data-library-mf-app/./src/components/compare/CompareAllocations/CompareAllocations.tsx","webpack://data-library-mf-app/./src/shared/parser/parseCompareAllocations.ts","webpack://data-library-mf-app/./src/pages/Compare/Compare.tsx","webpack://data-library-mf-app/./src/components/compare/FundMiniDetail/FundMiniDetail.scss"],"sourcesContent":["\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./FundMiniDetail.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./FundMiniDetail.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport {\n formatNumber,\n formatPercentageWithColor,\n formatDateToYearMonthDay,\n} from 'shared/utils/format.util';\nimport { Typography } from '@newwealth/component-library';\nimport './FundMiniDetail.scss';\n\ntype IFundMiniDetailProps = {\n children: React.ReactNode;\n currency: string;\n nav: string;\n navPercentage: number | string;\n navDate?: string;\n index?: number;\n strokeColors?: string[];\n};\n\nconst FundMiniDetail: React.FunctionComponent = ({\n children,\n currency,\n nav,\n navPercentage,\n navDate,\n index = 0,\n strokeColors = [],\n}: IFundMiniDetailProps) => {\n const intl = useIntl();\n return (\n \n {children}\n
\n \n {`${intl.formatMessage({ id: 'compare.NAV' })} `}\n {`(as of ${formatDateToYearMonthDay(\n navDate\n )}) : `}\n {`${currency} ${formatNumber(nav)}`}\n \n }\n />\n {formatPercentageWithColor(navPercentage)}\n
\n \n );\n};\n\nexport default FundMiniDetail;\n","import React, { useState } from 'react';\nimport { useIntl } from 'react-intl';\n// import { Button } from '@newwealth/component-library';\n\nimport SectionHeader from 'components/common/SectionHeader/SectionHeader';\nimport DonutChart from 'components/common/Graphs/DonutChart';\nimport type { IComparePortfolioResults } from 'shared/parser/parseCompareAllocations';\n\ninterface ICompareAllocationsProps {\n data: IComparePortfolioResults[]; // @todo finalise type/format\n currentTab?: 'asset' | 'sector' | 'geographical';\n themeConfig?: any;\n fundCount: number;\n}\n\nexport default function CompareAllocations({\n data,\n currentTab = 'asset',\n themeConfig,\n fundCount,\n}: ICompareAllocationsProps) {\n const intl = useIntl();\n const [current, setCurrent] = useState(currentTab);\n\n const tabMenu = [\n {\n id: 'asset',\n label: intl.formatMessage({ id: 'allocations.tab.asset' }),\n },\n {\n id: 'geographical',\n label: intl.formatMessage({ id: 'allocations.tab.geographical' }),\n },\n {\n id: 'sector',\n label: intl.formatMessage({ id: 'allocations.tab.sector' }),\n },\n ];\n\n const onHandleTab = (e: React.BaseSyntheticEvent) => {\n const { id } = e.target;\n setCurrent(id);\n };\n\n const disabledAllocationList = React.useMemo(() => {\n const disabledList = [];\n const isAssetsDataAllEmpty = Array.from([...data])\n .filter((entry) => entry.id === 'asset')\n .every((entry) => !entry.data.length);\n if (isAssetsDataAllEmpty) disabledList.push('asset');\n\n const isSectorsDataAllEmpty = Array.from([...data])\n .filter((entry) => entry.id === 'sector')\n .every((entry) => !entry.data.length);\n if (isSectorsDataAllEmpty) disabledList.push('sector');\n\n const isGeosDataAllEmpty = Array.from([...data])\n .filter((entry) => entry.id === 'geographical')\n .every((entry) => !entry.data.length);\n if (isGeosDataAllEmpty) disabledList.push('geographical');\n\n return disabledList;\n }, [data]);\n\n const renderButtonTabs = (\n \n {tabMenu.map((item, idx) => (\n \n {item.label}\n \n ))}\n \n );\n\n const renderDonutChart = data\n .filter((entry) => entry.id !== 'topHoldings')\n .map((entry: IComparePortfolioResults, idx: number) => (\n \n \n \n ));\n\n const renderTopHoldings = data\n .filter((entry) => entry.id === 'topHoldings')\n .map((entry, idx) => (\n \n \n \n ));\n\n return (\n
\n \n \n {renderButtonTabs}\n \n \n
\n
\n {/* @todo populate charts for each fund being compared */}\n {renderDonutChart}\n
\n
{renderTopHoldings}
\n
\n
\n );\n}\n","// import type { IAllocation } from 'components/common/Allocations/Allocations';\nimport type { IPortfolios } from './parseAllocations';\n// import { parseValueFromField } from 'shared/utils/helper.util';\nimport { get } from 'lodash';\nimport type { IChartDataProps } from 'components/common/Graphs/DonutChart';\n\nexport interface IComparePortfolios {\n portfolios: IPortfolios;\n fundId?: string; // isin, secId or fund code\n}\n\nexport interface IComparePortfolioResults {\n data: IChartDataProps[];\n fundId: string;\n fundName?: string;\n id: string;\n updateDate?: number | string;\n}\n\nconst parseCompareAllocation = (data: IComparePortfolios[] | undefined) => {\n if (!data) return [];\n\n const defaultVal = { data: [], updateDate: '', id: '' };\n const parsedData: IComparePortfolioResults[] = [];\n\n Array.from([...data]).forEach((item: any) => {\n const getId = get(item, 'fundId');\n const fundName = get(item, 'fundName');\n\n const assetAllocation = get(item.portfolios, 'AssetAllocation', defaultVal);\n assetAllocation.data = assetAllocation?.data.map((entry: IChartDataProps) => ({\n ...entry,\n value: Number(entry.value),\n type: 'asset',\n }));\n assetAllocation.id = 'asset';\n parsedData.push({\n fundId: getId,\n fundName,\n ...assetAllocation,\n });\n\n const geographicAllocation = get(item.portfolios, 'GeographicalAllocation', defaultVal);\n geographicAllocation.data = geographicAllocation?.data.map((entry: IChartDataProps) => ({\n ...entry,\n value: Number(entry.value),\n type: 'geographical',\n }));\n geographicAllocation.id = 'geographical';\n parsedData.push({\n fundId: getId,\n fundName,\n ...geographicAllocation,\n });\n\n const sectorAllocation = get(item.portfolios, 'SectorAllocation', defaultVal);\n sectorAllocation.data = sectorAllocation?.data.map((entry: IChartDataProps) => ({\n ...entry,\n value: Number(entry.value),\n type: 'sector',\n }));\n sectorAllocation.id = 'sector';\n parsedData.push({\n fundId: getId,\n fundName,\n ...sectorAllocation,\n });\n\n const topHoldings = get(item.portfolios, 'TopHolding', defaultVal);\n topHoldings.id = 'topHoldings';\n topHoldings.data = topHoldings?.data.slice(0, 5); // show only 5\n parsedData.push({\n fundId: getId,\n fundName,\n ...topHoldings,\n });\n });\n\n return parsedData;\n};\n\nexport default parseCompareAllocation;\n","import React, { useEffect, useState, memo } from 'react';\nimport { LayoutCompare } from 'layouts';\n// import { compareConfig } from 'shared/constant/config';\nimport { useIntl } from 'react-intl';\nimport { useCompare, useQuery as useQueryString } from 'shared/customHooks';\nimport RestClient from 'shared/services/rest.svc';\nimport { get, compact, values } from 'lodash';\nimport { tagsBuilder } from 'shared/utils/helper.util';\nimport { parseValueType } from 'shared/utils/format.util';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { useContext as useContextFl } from 'use-context-selector';\nimport { FlContext } from 'shared/context';\nimport { ISharedProps } from 'shared/interfaces';\nimport type { IComparePortfolios } from 'shared/parser/parseCompareAllocations';\nimport {\n initLanguage,\n // storeIsTokenValid,\n // validateTokenAccess,\n saveIsComingFromOtherPage,\n saveSelectedFund,\n} from 'shared/context/actions';\nimport {\n // calculateStartDateAndEndDateFn,\n parseTimeseriesPeriodsOfCompare,\n} from 'shared/utils/chart.util';\n\nimport { FundMiniDetail, CompareAllocations } from 'components/compare';\nimport {\n SectionHeader,\n DataList,\n FundInfo,\n PerformanceChart,\n ErrorDisplay,\n PageLoader,\n Disclaimer,\n ErrorBoundary,\n} from 'components/common';\nimport { ThemeContext } from '@newwealth/component-library';\nimport parseCompareAllocation from 'shared/parser/parseCompareAllocations';\n// import CompareTable from 'components/common/PerformanceTableModal/CompareTable';\nimport PerformanceTableModal from 'components/common/PerformanceTableModal';\nimport {countSymbols} from \"../../shared/utils/string.utils\";\n\n// import './Compare.scss';\n\ninterface IComparePageProps {\n config: any;\n // includeRouterRoot?: boolean;\n}\n\nconst TIMESERIES_DEFAULT_STATE = [\n { id: '1M', noOfMonth: 1, data: [], isLoaded: false, isDataMonthsValid: false },\n { id: '3M', noOfMonth: 3, data: [], isLoaded: false, isDataMonthsValid: false },\n { id: '6M', noOfMonth: 6, data: [], isLoaded: false, isDataMonthsValid: false },\n { id: '1Y', noOfMonth: 12, data: [], isLoaded: false, isDataMonthsValid: false },\n { id: '3Y', noOfMonth: 36, data: [], isLoaded: false, isDataMonthsValid: false },\n { id: '5Y', noOfMonth: 60, data: [], isLoaded: false, isDataMonthsValid: false },\n { id: 'YTD', noOfMonth: 0, data: [], isLoaded: false, isDataMonthsValid: false },\n { id: 'MAXIMUM', noOfMonth: 0, data: [], isLoaded: false, isDataMonthsValid: false },\n];\n\nfunction Compare({\n compareConfig,\n includeRouterRoot,\n appInitConfig,\n ...props\n}: IComparePageProps & ISharedProps) {\n const config = compareConfig;\n const themeConfig = React.useContext(ThemeContext);\n const location = useLocation();\n const navigate = useNavigate();\n const intl = useIntl();\n const queryString = useQueryString();\n // const accessToken = queryString.get('token');\n const getIds: any = queryString.get('ids') || [];\n const compareEndpoint = get(appInitConfig, 'compareUrl');\n const tsEndpoint = get(appInitConfig, 'timeseriesUrl');\n const identifier = get(appInitConfig, 'identifier');\n const compareIds = getIds?.split(',');\n const { state, dispatch } = useContextFl(FlContext);\n // const isAccessTokenValid = get(state.commonReducer, 'isAuthenticated', false);\n const mutation = useCompare(compareEndpoint);\n const [compareTimeSeries, setCompareTimeSeries] = useState(TIMESERIES_DEFAULT_STATE);\n // console.log('compare', props, state, isAccessTokenValid);\n\n useEffect(() => {\n document.title = 'Compare Funds | ILP Fund Center';\n }, []);\n\n // initialise language & auth\n useEffect(() => {\n saveIsComingFromOtherPage(true)(dispatch);\n if (props?.language) {\n initLanguage(props?.language)(dispatch);\n }\n // if (!includeRouterRoot) {\n // // if for linx platform, dispatch isAuth prop\n // storeIsTokenValid(props?.isAuthenticated)(dispatch);\n // } else if (accessToken) {\n // // if for demo, get access token in the search query then validate\n // validateTokenAccess(accessToken)(dispatch);\n // } else {\n // // otherwise, dispatch false to isAuth to restrict user\n // storeIsTokenValid(false)(dispatch);\n // }\n }, [props?.language, props?.isAuthenticated, includeRouterRoot]);\n\n useEffect(() => {\n if (compareIds.length && compareIds.length >= 2) {\n mutation.mutate(compareIds);\n }\n }, [compareIds?.length]);\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [location]);\n\n // API func for NAV timeseries\n const onGetNavTSFn = async (arrIDs: Array, startDate: string, endDate: string) => {\n // const url = process.env.REACT_APP_COMPARE_TIMESERIES_URL;\n // const url = tsEndpoint;\n // const queryParams = new URLSearchParams({\n // from_date: startDate,\n // to_date: endDate,\n // currency_id: 'BAS',\n // // frequency: 'daily',\n // start_value: '100',\n // ts_type: 'ts',\n // // tsType: 'nav',\n // });\n if (arrIDs.length && startDate && endDate) {\n const modifiedCodeEndpoint = tsEndpoint.replace('CODE', arrIDs[0]);\n const modifiedStartDateEndpoint = modifiedCodeEndpoint.replace('START_DATE', startDate);\n const modifiedEndDateEndpoint = modifiedStartDateEndpoint.replace('END_DATE', endDate);\n const modifiedCurrencyEndpoint = modifiedEndDateEndpoint.replace('CURRENCY', 'BAS');\n const modifiedStartValEndpoint = modifiedCurrencyEndpoint.replace('START_VALUE', '100');\n const url = modifiedStartValEndpoint.replace('TS_TYPE', 'ts');\n const queryParams = new URLSearchParams({});\n\n arrIDs\n .filter((n, i) => i !== 0)\n .map((item) => {\n queryParams.append('code', item.toString());\n });\n\n return await RestClient.get(url + `&${queryParams.toString()}`);\n }\n };\n\n const hash = (result: any[], record: any, fundIndex: number) => {\n if (!result[record.EndDate]) {\n result[record.EndDate] = {};\n result[record.EndDate]['EndDate'] = record.EndDate;\n }\n result[record.EndDate][`Fund ${fundIndex + 1}`] = Number(record.Value);\n };\n\n const parseTimeseriesDataAndSave = (response: any, timePeriods: any) => {\n const tsDataArr: any = [...TIMESERIES_DEFAULT_STATE];\n response.forEach((res: any, idx: number) => {\n // console.log('res >>> ', res, idx);\n if (res.status === 200 && res.data) {\n const dataTS: any = {};\n for (const fund in res.data) {\n dataTS[fund] = get(\n res.data[fund],\n 'TimeSeries.Security[0].HistoryDetail', //'TimeSeries.Security[0].GrowthSeries[0].HistoryDetail'\n []\n );\n\n const tempData = Object.entries(dataTS).map((entry: any) => {\n if (entry[1] === undefined) return [];\n return compact(\n entry[1].map((item: any) => ({\n ...item,\n isin: entry[0],\n }))\n );\n });\n\n // format data to be in the same row e.g. [{ EndDate, Fund 1, Fund 2, etc... }]\n const parsingResult: any = {};\n tempData.forEach((fund, fundIndex) => {\n return fund.forEach((record) => hash(parsingResult, record, fundIndex));\n });\n\n const filteredData = values(parsingResult);\n\n // @Note activate below if we want to remove inconsistent data\n // remove invalid data where it is missing comparison key\n // const filteredData = [...values(parsingResult)].filter(\n // (x) => Object.keys(x).length === compareIds.length + 1\n // );\n\n const index = Array.from(tsDataArr).findIndex((item, i) => i === idx);\n tsDataArr[index].data = filteredData;\n tsDataArr[index].isLoaded = true;\n tsDataArr[index].isDataMonthsValid = timePeriods[idx].isDataMonthsValid;\n }\n }\n });\n\n return tsDataArr;\n };\n\n const fetchCompareTSNAV = async () => {\n if (mutation.isSuccess) {\n const reqArray: Array> = [];\n const fixedPeriods = compareTimeSeries\n .filter((item: any) => item.noOfMonth !== 0)\n .map((item) => item.noOfMonth);\n const funds: any = get(mutation.data, 'data');\n const filteredFunds = Object.keys(funds).map((fund) => ({\n isin: get(funds[fund], `ProductOverview.${identifier}`),\n inceptionDate: get(funds[fund], 'ProductOverview.InceptionDate'),\n lastPriceDate: get(funds[fund], 'Price.NAV.Date'),\n }));\n\n const timePeriods = parseTimeseriesPeriodsOfCompare(filteredFunds, fixedPeriods);\n if (timePeriods?.length) {\n timePeriods.map((period) =>\n reqArray.push(onGetNavTSFn(compareIds, period.startDate, period.endDate))\n );\n try {\n const resTimeseries = await Promise.all(reqArray);\n // console.log('resTimeseries +++', resTimeseries);\n if (resTimeseries.length) {\n const dataTS = parseTimeseriesDataAndSave(resTimeseries, timePeriods);\n setCompareTimeSeries(dataTS);\n }\n } catch (err) {\n console.error(err);\n setCompareTimeSeries([\n { id: '1M', noOfMonth: 1, data: [], isLoaded: true, isDataMonthsValid: false },\n { id: '3M', noOfMonth: 3, data: [], isLoaded: true, isDataMonthsValid: false },\n { id: '6M', noOfMonth: 6, data: [], isLoaded: true, isDataMonthsValid: false },\n { id: '1Y', noOfMonth: 12, data: [], isLoaded: true, isDataMonthsValid: false },\n { id: '3Y', noOfMonth: 36, data: [], isLoaded: true, isDataMonthsValid: false },\n { id: '5Y', noOfMonth: 60, data: [], isLoaded: true, isDataMonthsValid: false },\n { id: 'YTD', noOfMonth: 0, data: [], isLoaded: true, isDataMonthsValid: false },\n {\n id: 'MAXIMUM',\n noOfMonth: 0,\n data: [],\n isLoaded: false,\n isDataMonthsValid: false,\n },\n ]);\n }\n }\n }\n };\n\n useEffect(() => {\n if (compareIds.length) fetchCompareTSNAV();\n\n // clear or revert TS data back to default\n return () => {\n setCompareTimeSeries([\n { id: '1M', noOfMonth: 1, data: [], isLoaded: false, isDataMonthsValid: false },\n { id: '3M', noOfMonth: 3, data: [], isLoaded: false, isDataMonthsValid: false },\n { id: '6M', noOfMonth: 6, data: [], isLoaded: false, isDataMonthsValid: false },\n { id: '1Y', noOfMonth: 12, data: [], isLoaded: false, isDataMonthsValid: false },\n { id: '3Y', noOfMonth: 36, data: [], isLoaded: false, isDataMonthsValid: false },\n { id: '5Y', noOfMonth: 60, data: [], isLoaded: false, isDataMonthsValid: false },\n { id: 'YTD', noOfMonth: 0, data: [], isLoaded: false, isDataMonthsValid: false },\n {\n id: 'MAXIMUM',\n noOfMonth: 0,\n data: [],\n isLoaded: false,\n isDataMonthsValid: false,\n },\n ]);\n };\n }, [mutation.isSuccess, mutation.data, compareIds.length]);\n\n const dataListBuilder = (data: Array, source: any) => {\n return data.map((item) => {\n const isCalendarPerf = item.label.includes('cp_y');\n const isCompositeBenchmark = item.label.includes('Fund benchmark');\n\n const val = item.accessor;\n const newAccessor = isCalendarPerf ? get(source, val.replace('value', 'name')) : item.label;\n let value = isCalendarPerf\n ? `${get(source, item.accessor) ? get(source, item.accessor) : '-'}${\n get(source, item.accessor) ? get(source, item.otherAccessor) : ''\n }`\n : parseValueType(item.type, get(source, item.accessor), get(source, item.otherAccessor));\n if (isCompositeBenchmark) {\n const countRs = countSymbols(get(source, item.accessor), ' + ', '%');\n const tooLong = countRs[' + '] >= 2 && countRs['%'] >= 3;\n value = tooLong\n ? parseValueType(\n item.type,\n `Composite benchmark___${get(source, item.accessor)}`,\n get(source, item.otherAccessor)\n )\n : value;\n }\n return {\n label: item.isTranslate ? intl.formatMessage({ id: item.label }) : newAccessor,\n value: value,\n };\n });\n };\n\n /**\n * Populate/parse allocation charts and list\n */\n const allocationBuilder = React.useMemo(() => {\n const mutationData = get(mutation.data, 'data');\n if (!mutationData) return;\n const data = Array.from([...mutationData]).map((entry) => ({\n portfolios: get(entry, 'Portfolios', ''),\n fundId: get(entry, 'ProductOverview.SecId', ''),\n fundName: get(entry, 'ProductOverview.LegalName.EN_SG', ''),\n }));\n return data as IComparePortfolios[];\n }, [mutation.data]);\n\n /**\n * remove sepecific fund from compare\n * @param code fund id, secId or ISIN\n */\n const onHandleRemoveFund = (code: string) => {\n const currentSelection = Array.from([...compareIds]);\n const payload = currentSelection.filter((item) => item !== code);\n const linkUrl = includeRouterRoot\n ? `/compare?ids=${payload}`\n : `${location.pathname}/compare?ids=${payload}`;\n\n saveSelectedFund(payload)(dispatch); // save from the store\n window.location.replace(linkUrl); // update url & reload the page to populate new list\n };\n\n if (mutation.error)\n return ;\n\n if (mutation?.isFetching) return ;\n\n // if (!isAccessTokenValid) return
This is a restricted page!
;\n // console.log('compareTimeSeries ', compareTimeSeries);\n return (\n \n \n {mutation.isLoading ? (\n \n ) : (\n <>\n {mutation.isError ? (\n
An error occurred: {get(mutation.error, 'message')}
\n ) : null}\n {mutation.isSuccess ? (\n <>\n
\n
\n {Object.keys(get(mutation.data, 'data', [])).map((fund: any, idx: number) => (\n \n \n \n\n {compareIds.length > 2 ? (\n {\n const code = get(\n get(mutation.data?.data, fund),\n get(config?.fundData, 'id')\n );\n onHandleRemoveFund(code);\n }}\n style={{\n appearance: 'none',\n border: 'none',\n background: 'unset',\n }}\n >\n \n \n ) : null}\n \n \n ))}\n
\n
\n\n
\n {/* Graph Performance (Fund Performance (NAV)) */}\n {get(config, 'showFundPerformance') && compareTimeSeries ? (\n \n ) : null}\n\n {compareTimeSeries.length ? (\n \n get(mutation.data?.data, `${fund}.ProductOverview.LegalName.EN_SG`)\n )}\n tsData={compareTimeSeries}\n ctaElement=\"Comparison of Funds Table View\"\n />\n ) : null}\n\n {/* \n get(mutation.data?.data, fund)\n )}\n tsData={compareTimeSeries}\n /> */}\n\n \n\n {get(config, 'data_list').map((item: any, idx: number) => (\n \n \n \n \n
\n \n {/* {console.log('>>>>>>>>>>>>>>>>>>>> ', get(mutation.data, 'data', []), idx)} */}\n {Array.from([...mutation.data?.data]).map((fund: any, index: number) => (\n \n \n
\n ))}\n \n
\n \n ))}\n \n \n ) : null}\n \n )}\n\n {/* */}\n \n
\n );\n}\n\n/** Separate footer instead of inside the content */\nconst Footer = ({ appInitConfig }: ISharedProps) => {\n return ;\n};\n\nexport default memo(LayoutCompare(Compare, Footer));\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Thin.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Thin.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Thin.otf\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Light.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Light.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Light.otf\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Regular.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Regular.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_8___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Regular.otf\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_9___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Medium.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_10___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Medium.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_11___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Medium.otf\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_12___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Bold.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_13___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Bold.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_14___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-Bold.otf\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_15___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-BoldTwo.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_16___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-BoldTwo.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_17___ = new URL(\"/src/assets/fonts/UniversNextforHSBC-BoldTwo.otf\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___);\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___);\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@font-face{font-family:\"UniversNextforHSBC\";src:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_1___}) format(\"woff\"),url(${___CSS_LOADER_URL_REPLACEMENT_2___}) format(\"opentype\");font-weight:200;font-display:swap}@font-face{font-family:\"UniversNextforHSBC\";src:url(${___CSS_LOADER_URL_REPLACEMENT_3___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_4___}) format(\"woff\"),url(${___CSS_LOADER_URL_REPLACEMENT_5___}) format(\"opentype\");font-weight:300;font-display:swap}@font-face{font-family:\"UniversNextforHSBC\";src:url(${___CSS_LOADER_URL_REPLACEMENT_6___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_7___}) format(\"woff\"),url(${___CSS_LOADER_URL_REPLACEMENT_8___}) format(\"opentype\");font-weight:400;font-display:swap}@font-face{font-family:\"UniversNextforHSBC\";src:url(${___CSS_LOADER_URL_REPLACEMENT_9___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_10___}) format(\"woff\"),url(${___CSS_LOADER_URL_REPLACEMENT_11___}) format(\"opentype\");font-weight:500;font-display:swap}@font-face{font-family:\"UniversNextforHSBC\";src:url(${___CSS_LOADER_URL_REPLACEMENT_12___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_13___}) format(\"woff\"),url(${___CSS_LOADER_URL_REPLACEMENT_14___}) format(\"opentype\");font-weight:600;font-display:swap}@font-face{font-family:\"UniversNextforHSBC\";src:url(${___CSS_LOADER_URL_REPLACEMENT_15___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_16___}) format(\"woff\"),url(${___CSS_LOADER_URL_REPLACEMENT_17___}) format(\"opentype\");font-weight:700;font-display:swap}@font-face{font-family:\"UniversNextforHSBC\";src:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_1___}) format(\"woff\"),url(${___CSS_LOADER_URL_REPLACEMENT_2___}) format(\"opentype\");font-weight:200;font-display:swap}@font-face{font-family:\"UniversNextforHSBC\";src:url(${___CSS_LOADER_URL_REPLACEMENT_3___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_4___}) format(\"woff\"),url(${___CSS_LOADER_URL_REPLACEMENT_5___}) format(\"opentype\");font-weight:300;font-display:swap}@font-face{font-family:\"UniversNextforHSBC\";src:url(${___CSS_LOADER_URL_REPLACEMENT_6___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_7___}) format(\"woff\"),url(${___CSS_LOADER_URL_REPLACEMENT_8___}) format(\"opentype\");font-weight:400;font-display:swap}@font-face{font-family:\"UniversNextforHSBC\";src:url(${___CSS_LOADER_URL_REPLACEMENT_9___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_10___}) format(\"woff\"),url(${___CSS_LOADER_URL_REPLACEMENT_11___}) format(\"opentype\");font-weight:500;font-display:swap}@font-face{font-family:\"UniversNextforHSBC\";src:url(${___CSS_LOADER_URL_REPLACEMENT_12___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_13___}) format(\"woff\"),url(${___CSS_LOADER_URL_REPLACEMENT_14___}) format(\"opentype\");font-weight:600;font-display:swap}@font-face{font-family:\"UniversNextforHSBC\";src:url(${___CSS_LOADER_URL_REPLACEMENT_15___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_16___}) format(\"woff\"),url(${___CSS_LOADER_URL_REPLACEMENT_17___}) format(\"opentype\");font-weight:700;font-display:swap}.fund-mini-detail{height:100%;background:#fff;padding:.6666666667rem;position:relative;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;flex-direction:column;border:1px solid #ededed;-webkit-border-radius:0px;-moz-border-radius:0px;-ms-border-radius:0px;border-radius:0px;-o-border-radius:0px}@media only screen and (min-width: 1144px){.fund-mini-detail{padding:1rem}}.fund-mini-detail--1{border-top:5px solid #00ccd9}.fund-mini-detail--2{border-top:5px solid #d400d9}.fund-mini-detail--3{border-top:5px solid #004ad9}.fund-mini-detail--4{border-top:5px solid #e58a04}.fund-mini-detail__navInfo{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;flex-wrap:wrap;min-height:36px;border-top:1px solid #ededed;padding-top:1rem}@media print{.fund-mini-detail__navInfo{font-size:75%}.fund-mini-detail__navInfo span{display:inline-block}}.fund-mini-detail .fund-info{padding-bottom:1rem;padding-right:1rem;height:calc(100% - 36px)}.fund-mini-detail .fund-info .spacer{flex-grow:1}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/styles/_fonts.scss\",\"webpack://./src/components/compare/FundMiniDetail/FundMiniDetail.scss\",\"webpack://./src/styles/_colors.scss\",\"webpack://./src/styles/_mixin.scss\",\"webpack://./src/styles/_variables.scss\"],\"names\":[],\"mappings\":\"AACA,WACI,gCAAA,CACA,6KAAA,CAGA,eAAA,CAEA,iBAAA,CAGJ,WACI,gCAAA,CACA,6KAAA,CAGA,eAAA,CAEA,iBAAA,CAGJ,WACI,gCAAA,CACA,6KAAA,CAGA,eAAA,CAEA,iBAAA,CAGJ,WACI,gCAAA,CACA,+KAAA,CAGA,eAAA,CAEA,iBAAA,CAGJ,WACI,gCAAA,CACA,gLAAA,CAGA,eAAA,CAEA,iBAAA,CAGJ,WACI,gCAAA,CACA,gLAAA,CAGA,eAAA,CAEA,iBAAA,CAzDJ,WACI,gCAAA,CACA,6KAAA,CAGA,eAAA,CAEA,iBAAA,CAGJ,WACI,gCAAA,CACA,6KAAA,CAGA,eAAA,CAEA,iBAAA,CAGJ,WACI,gCAAA,CACA,6KAAA,CAGA,eAAA,CAEA,iBAAA,CAGJ,WACI,gCAAA,CACA,+KAAA,CAGA,eAAA,CAEA,iBAAA,CAGJ,WACI,gCAAA,CACA,gLAAA,CAGA,eAAA,CAEA,iBAAA,CAGJ,WACI,gCAAA,CACA,gLAAA,CAGA,eAAA,CAEA,iBAAA,CCxDJ,kBACI,WAAA,CACA,eCJI,CDKJ,sBAAA,CACA,iBAAA,CEwDF,mBAAA,CACA,gBAAA,CACA,mBAAA,CACA,oBAAA,CACA,YAAA,CF1DE,qBAAA,CACA,wBAAA,CAAA,yBGsBa,CDrBf,sBCqBe,CDpBf,qBCoBe,CDnBf,iBCmBe,CDlBf,oBCkBe,CD8Ef,2CF3GF,kBAWQ,YGmBU,CAAA,CHhBd,qBACI,4BAAA,CAEJ,qBACI,4BAAA,CAEJ,qBACI,4BAAA,CAEJ,qBACI,4BAAA,CAGJ,2BEiCF,mBAAA,CACA,gBAAA,CACA,mBAAA,CACA,oBAAA,CACA,YAAA,CFnCM,cAAA,CAEA,eAAA,CACA,4BAAA,CACA,gBGHU,CHWV,aAdJ,2BAeQ,aAAA,CACA,gCACI,oBAAA,CAAA,CAKZ,6BACI,mBGpBU,CHqBV,kBGrBU,CHsBV,wBAAA,CACA,qCACI,WAAA\",\"sourcesContent\":[\"\\n@font-face {\\n font-family: 'UniversNextforHSBC';\\n src: url('/src/assets/fonts/UniversNextforHSBC-Thin.woff2') format('woff2'), \\n url('/src/assets/fonts/UniversNextforHSBC-Thin.woff') format('woff'),\\n url('/src/assets/fonts/UniversNextforHSBC-Thin.otf') format('opentype');\\n font-weight: 200;\\n // font-style: normal;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: 'UniversNextforHSBC';\\n src: url('/src/assets/fonts/UniversNextforHSBC-Light.woff2') format('woff2'), \\n url('/src/assets/fonts/UniversNextforHSBC-Light.woff') format('woff'),\\n url('/src/assets/fonts/UniversNextforHSBC-Light.otf') format('opentype');\\n font-weight: 300;\\n // font-style: normal;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: 'UniversNextforHSBC';\\n src: url('/src/assets/fonts/UniversNextforHSBC-Regular.woff2') format('woff2'), \\n url('/src/assets/fonts/UniversNextforHSBC-Regular.woff') format('woff'),\\n url('/src/assets/fonts/UniversNextforHSBC-Regular.otf') format('opentype');\\n font-weight: 400;\\n // font-style: normal;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: 'UniversNextforHSBC';\\n src: url('/src/assets/fonts/UniversNextforHSBC-Medium.woff2') format('woff2'), \\n url('/src/assets/fonts/UniversNextforHSBC-Medium.woff') format('woff'),\\n url('/src/assets/fonts/UniversNextforHSBC-Medium.otf') format('opentype');\\n font-weight: 500;\\n // font-style: normal;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: 'UniversNextforHSBC';\\n src: url('/src/assets/fonts/UniversNextforHSBC-Bold.woff2') format('woff2'), \\n url('/src/assets/fonts/UniversNextforHSBC-Bold.woff') format('woff'),\\n url('/src/assets/fonts/UniversNextforHSBC-Bold.otf') format('opentype');\\n font-weight: 600;\\n // font-style: normal;\\n font-display: swap;\\n}\\n\\n@font-face {\\n font-family: 'UniversNextforHSBC';\\n src: url('/src/assets/fonts/UniversNextforHSBC-BoldTwo.woff2') format('woff2'), \\n url('/src/assets/fonts/UniversNextforHSBC-BoldTwo.woff') format('woff'),\\n url('/src/assets/fonts/UniversNextforHSBC-BoldTwo.otf') format('opentype');\\n font-weight: 700;\\n // font-style: normal;\\n font-display: swap;\\n}\\n\\n\\n$HsbcFont: 'UniversNextforHSBC', sans-serif;\",\"@import '/src/styles/shared.scss';\\n\\n.fund-mini-detail {\\n height: 100%;\\n background: $color-bg;\\n padding: calc($app-baseSpacing / 1.5);\\n position: relative;\\n @include displayFlex;\\n flex-direction: column;\\n border: 1px solid $color-border;\\n @include border-radius($app-baseRadius);\\n\\n @include desktop {\\n padding: $app-baseSpacing;\\n }\\n\\n &--1 {\\n border-top: 5px solid $color-compare1;\\n }\\n &--2 {\\n border-top: 5px solid $color-compare2;\\n }\\n &--3 {\\n border-top: 5px solid $color-compare3;\\n }\\n &--4 {\\n border-top: 5px solid $color-compare4;\\n }\\n\\n &__navInfo {\\n @include displayFlex;\\n flex-wrap: wrap;\\n // align-items: flex-end;\\n min-height: 36px;\\n border-top: 1px solid $color-border;\\n padding-top: $app-baseSpacing;\\n\\n // span + div {\\n // margin-left: 8px;\\n // span {\\n // font-weight: 500;\\n // }\\n // }\\n @media print {\\n font-size: 75%;\\n span {\\n display: inline-block;\\n }\\n }\\n }\\n\\n .fund-info {\\n padding-bottom: $app-baseSpacing;\\n padding-right: $app-baseSpacing;\\n height: calc(100% - 36px);\\n .spacer {\\n flex-grow: 1;\\n }\\n }\\n}\",\"$white: #ffffff;\\n$black: #000000;\\n$black-light: #333333;\\n$sky-blue: #5D87A9;\\n$navyBlue: #2F3A3E;\\n$light-navyBlue: #899EA2; // sub 2\\n$violet: #743169;\\n$dark-green: #1F4C2A;\\n$light-green: #D7F7D7;\\n$green: #00A546;\\n$gray: #D8D8D8;\\n$dark-gray: #757575; // sub\\n$light-gray: #EDEDED; // border\\n$lighter-gray: #F3F3F3;\\n$lightest-gray: #FAFAFA;\\n$mid-gray: #374247;\\n$dr-gray: #767676;\\n$mint-green: #6fb497;\\n$cherry-red: #F61010;\\n$dark-red: #D0021B;\\n$neonBlue: #00CCD9;\\n$neonViolet: #D400D9;\\n$realBlue: #004AD9;\\n$neonYellowGreen: #D4D900;\\n$sky-lightBlue: #6F91B4;\\n$orange: #e58a04;\\n$linx-green: #6FB496;\\n\\n$hsbc-red: #DB0011;\\n$hsbc-green: #00847F;\\n\\n$color-placholder: #454545; // #D7D8D6;\\n\\n$color-tag-text: #4A4A4A;\\n$color-tag-bg: #EDEDED;\\n\\n// Body colors\\n$color-dirtyBg: $lighter-gray !default;\\n$color-bg: $white !default;\\n$color-overlay: rgba(35,35,35,0.35);\\n$color-popup-bg: $lightest-gray !default;\\n\\n// theme colors\\n$color-primary: $hsbc-red !default;\\n$color-secondary: $black !default;\\n$color-tertiary: $white !default;\\n\\n$color-focus: rgb(37,77,235) !default;\\n\\n$color-link: $color-primary !default;\\n$color-text: $black-light !default;\\n$color-text-inverted: $white !default;\\n$color-textSub: $dark-gray !default;\\n$color-textSub2: $mid-gray !default;\\n$color-text-date: $dr-gray !default;\\n$color-textHeading: $black !default;\\n// $color-text-transparent: rgba(255,255,255, 0.725);\\n\\n// Border colros\\n$color-border: $light-gray !default;\\n$color-border-light: $lighter-gray !default;\\n$color-border-dark: $black-light !default;\\n\\n// plus/ negative colros\\n$color-negative: #B22222 !default;\\n$color-positive: #006400 !default;\\n\\n$color-header-bg: $gray !default;\\n\\n// table colors\\n$color-table-header-bg: $gray !default;\\n$color-table-header-text: $black !default;\\n$color-table-tr: $white !default;\\n$color-table-tr-alternate: $lighter-gray !default;\\n$color-table-border: $light-gray !default;\\n\\n// upload component colors\\n$color-upload-bg: $light-green !default;\\n$color-upload-border: $dark-green !default;\\n$color-upload: $dark-green !default;\\n\\n// compare colors\\n$color-compare1: $neonBlue !default;\\n$color-compare2: $neonViolet !default;\\n$color-compare3: $realBlue !default;\\n$color-compare4: $orange !default;\\n\\n$color-tbg: $lighter-gray !default;\\n\\n$color-form-border: $dr-gray !default;\",\"@import './variables';\\n\\n@mixin text-size-adjust($size) {\\n -webkit-text-size-adjust: $size;\\n -ms-text-size-adjust: $size;\\n}\\n\\n// Curvy edges\\n@mixin border-radius($radius) {\\n -webkit-border-radius: $radius;\\n -moz-border-radius: $radius;\\n -ms-border-radius: $radius;\\n border-radius: $radius;\\n -o-border-radius: $radius;\\n}\\n\\n//appearance\\n@mixin appearance($value) {\\n -webkit-appearance: $value;\\n -moz-appearance: $value;\\n appearance: $value;\\n}\\n\\n// Background Size (cover, 100%)\\n@mixin bg-size($size) {\\n -webkit-background-size: $size;\\n -moz-background-size: $size;\\n -o-background-size: $size;\\n background-size: $size;\\n}\\n\\n// Box Sizing (border-box, content-box, initial)\\n@mixin box-sizing($sizing) {\\n -webkit-box-sizing: $sizing;\\n -moz-box-sizing: $sizing;\\n box-sizing: $sizing;\\n}\\n\\n// Box shadow\\n@mixin box-shadow($value) {\\n -webkit-box-shadow: $value;\\n -moz-box-shadow: $value;\\n box-shadow: $value;\\n}\\n\\n// Order of element (which element you want to go first)\\n@mixin element-order($value) {\\n -webkit-order: $value;\\n order: $value;\\n}\\n\\n// animation\\n@mixin animation($value) {\\n -webkit-animation: $value;\\n -moz-animation: $value;\\n -ms-animation: $value;\\n -o-animation: $value;\\n animation: $value;\\n}\\n\\n// use this when using display: flex;\\n@mixin displayFlex() {\\n display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */\\n display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */\\n display: -ms-flexbox; /* TWEENER - IE 10 */\\n display: -webkit-flex; /* NEW - Chrome */\\n display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */\\n}\\n\\n// User select\\n@mixin user-select() {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n -o-user-select: none;\\n user-select: none;\\n}\\n\\n// to center child elements\\n@mixin center-elements() {\\n display: flex;\\n flex-direction: row;\\n flex-wrap: nowrap;\\n justify-content: center;\\n align-content: stretch;\\n align-items: center;\\n // background-position: center;\\n}\\n\\n// to vertical align a child elements and align text to left\\n@mixin valign-elements() {\\n display: flex;\\n flex-direction: row;\\n flex-wrap: nowrap;\\n align-items: center;\\n}\\n\\n//e.g. @include calc(width, \\\"25% - 1em\\\");\\n@mixin calc($property, $expression) {\\n #{$property}: -webkit-calc(#{$expression});\\n #{$property}: calc(#{$expression});\\n}\\n\\n// Calculate line-height\\n@mixin line-height($font-size, $line-height) {\\n line-height: $line-height / $font-size;\\n}\\n\\n@mixin desktop {\\n @media only screen and (min-width: $app-minDesktop) {\\n @content;\\n }\\n}\\n\\n@mixin tablet() {\\n @media only screen and (min-width: $app-minTablet){\\n @content;\\n }\\n}\\n\\n// transition-property: transform\\n@mixin transition-property-transform() {\\n transition-property: -webkit-transform;\\n transition-property: transform;\\n transition-property: transform, -webkit-transform;\\n}\\n\\n// Transform (values: scale, skew, translate, rotate, matrix, perspective)\\n@mixin transform($val) {\\n -webkit-transform: $val;\\n transform: $val;\\n}\\n\\n// transition (prop seconds animation) eg. @include transition(background-color 2s ease-out)\\n@mixin transition($values) {\\n -webkit-transition: $values;\\n -moz-transition: $values;\\n -o-transition: $values;\\n transition: $values;\\n}\\n\\n// Keyframe\\n@mixin keyframes($name) {\\n @-webkit-keyframes #{$name} {\\n @content;\\n }\\n @-moz-keyframes #{$name} {\\n @content;\\n }\\n @-ms-keyframes #{$name} {\\n @content;\\n }\\n @-o-keyframes #{$name} {\\n @content;\\n }\\n @keyframes #{$name} {\\n @content;\\n }\\n}\\n\\n@mixin hideScrollbar {\\n &::-webkit-scrollbar {\\n // display: none;\\n width: 0 !important;\\n }\\n -ms-overflow-style: none;\\n scrollbar-width: none;\\n}\",\"@import \\\"/src/styles/fonts\\\";\\n\\n\\n/** Add only variables for controlling layouts or containers **/\\n\\n$app-minDesktop: 1144px !default; // 1025px !default;\\n$app-minTablet: 667px !default;\\n$app-maxTablet: 812px !default;\\n$app-maxDesktopHeight: 94vh !default;\\n$app-maxDesktop: 83.25rem; // 1332px / 16\\n$app-maxWidth: 103.125rem; // 1650px / 16\\n\\n$app-fontFamily: $HsbcFont !default;\\n$app-fontTextSize: 0.9375rem; /* 15px / 16 */\\n$app-fontH1Size: 2.0625rem; /* 33px / 16 */\\n$app-fontH2Size: 1.4375rem; /* 23px / 16 */\\n$app-fontH3Size: 1.1875rem; /* 19px / 16 */\\n$app-fontH4Size: 1.125rem; /* 18px / 16 */\\n$app-fontH5Size: 1rem; /* 16px / 16 */\\n$app-fontSmallSize: 0.875rem; /* 14px / 16 */\\n$app-fontSmallerSize: 0.8125rem; /* 13px / 16 */\\n\\n$app-lineHeightText: 1.5; /* 22.5px */\\n$app-lineHeightH1: 1.2; /* 39.6px */\\n$app-lineHeightH2: 1.3; /* 29.9px */\\n$app-lineHeightH3: 1.4; /* 26.6px */\\n$app-lineHeightH4: 1.4; /* 25.2px */\\n$app-lineHeightH5: 1.5; /* 24px */\\n$app-lineHeightSmall: 1.5; /* 21px */\\n$app-lineHeightSmaller: 1.5; /* 19.5px */\\n\\n$app-baseRadius: 0px;\\n$app-baseSpacing: 1rem; // 16px / 16\\n$app-smallSpacing: 0.25rem; // 4px / 16\\n\\n\\n$app-elementHeight: 2.75rem; //2.75rem // 44px / 16\\n$app-elementHeightBig: 3rem;; //3rem; // 48px / 16\\n$app-elementHeightBigger: 3.5rem; //3.5rem; // 56px / 16\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_ref","children","currency","nav","navPercentage","navDate","index","strokeColors","intl","useIntl","React","className","style","borderTop","Typography","type","value","marginRight","formatMessage","id","fontWeight","formatDateToYearMonthDay","formatNumber","formatPercentageWithColor","CompareAllocations","data","currentTab","themeConfig","fundCount","current","setCurrent","useState","tabMenu","label","onHandleTab","e","target","disabledAllocationList","disabledList","Array","from","filter","entry","every","length","push","renderButtonTabs","map","item","idx","key","onClick","disabled","includes","renderDonutChart","display","DonutChart","fundName","updateDate","title","withTitle","withList","putListOnTheRight","innerRadius","outerRadius","minChartSize","renderTopHoldings","withChart","isChart","borderBottom","borderColor","SectionHeader","withStyle","fitButtons","defaultVal","parsedData","forEach","getId","get","assetAllocation","portfolios","Number","fundId","geographicAllocation","sectorAllocation","topHoldings","slice","TIMESERIES_DEFAULT_STATE","noOfMonth","isLoaded","isDataMonthsValid","memo","LayoutCompare","compareConfig","includeRouterRoot","appInitConfig","props","config","ThemeContext","location","useLocation","useNavigate","getIds","useQueryString","compareEndpoint","tsEndpoint","identifier","compareIds","split","state","dispatch","useContextFl","FlContext","mutation","useCompare","compareTimeSeries","setCompareTimeSeries","useEffect","document","saveIsComingFromOtherPage","language","initLanguage","isAuthenticated","mutate","window","scrollTo","hash","result","record","fundIndex","EndDate","Value","async","isSuccess","reqArray","fixedPeriods","funds","filteredFunds","Object","keys","fund","isin","inceptionDate","lastPriceDate","timePeriods","parseTimeseriesPeriodsOfCompare","period","arrIDs","startDate","endDate","url","replace","queryParams","URLSearchParams","n","i","append","toString","RestClient","onGetNavTSFn","resTimeseries","Promise","all","dataTS","parseTimeseriesDataAndSave","response","tsDataArr","res","status","tempData","entries","undefined","compact","parsingResult","filteredData","values","findIndex","err","console","error","fetchCompareTSNAV","allocationBuilder","mutationData","ErrorDisplay","message","isFetching","PageLoader","ErrorBoundary","errorMessage","isLoading","isError","FundMiniDetail","graphStrokeColors","fundData","FundInfo","fundHouse","tags","tagsBuilder","isRebateEligible","isReadyToTrade","esgRating","desc","code","payload","linkUrl","pathname","saveSelectedFund","onHandleRemoveFund","appearance","border","background","src","width","height","alt","PerformanceChart","graphId","isNAV","isDetail","keyLines","PerformanceTableModal","isCompare","fundsList","tsData","ctaElement","parseCompareAllocation","tabIndex","role","DataList","heading","source","isCalendarPerf","isCompositeBenchmark","val","accessor","newAccessor","otherAccessor","parseValueType","countRs","countSymbols","isTranslate","dataListBuilder","_ref2","Disclaimer","content","disclaimer","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_URL_IMPORT_5___","___CSS_LOADER_URL_IMPORT_6___","___CSS_LOADER_URL_IMPORT_7___","___CSS_LOADER_URL_IMPORT_8___","___CSS_LOADER_URL_IMPORT_9___","___CSS_LOADER_URL_IMPORT_10___","___CSS_LOADER_URL_IMPORT_11___","___CSS_LOADER_URL_IMPORT_12___","___CSS_LOADER_URL_IMPORT_13___","___CSS_LOADER_URL_IMPORT_14___","___CSS_LOADER_URL_IMPORT_15___","___CSS_LOADER_URL_IMPORT_16___","___CSS_LOADER_URL_IMPORT_17___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","___CSS_LOADER_URL_REPLACEMENT_5___","___CSS_LOADER_URL_REPLACEMENT_6___","___CSS_LOADER_URL_REPLACEMENT_7___","___CSS_LOADER_URL_REPLACEMENT_8___","___CSS_LOADER_URL_REPLACEMENT_9___","___CSS_LOADER_URL_REPLACEMENT_10___","___CSS_LOADER_URL_REPLACEMENT_11___","___CSS_LOADER_URL_REPLACEMENT_12___","___CSS_LOADER_URL_REPLACEMENT_13___","___CSS_LOADER_URL_REPLACEMENT_14___","___CSS_LOADER_URL_REPLACEMENT_15___","___CSS_LOADER_URL_REPLACEMENT_16___","___CSS_LOADER_URL_REPLACEMENT_17___","module"],"sourceRoot":""}