{"version":3,"sources":["static/session.ts","i18n.ts","static/routes.ts","svg.tsx","components/common/Loader.tsx","components/tours/assets/featured_tour/EN/featured_tour_01.png","components/tours/assets/featured_tour/EN/featured_tour_02.png","components/tours/assets/featured_tour/EN/featured_tour_03.png","components/tours/assets/featured_tour/EN/featured_tour_04.png","components/tours/assets/featured_tour/EN/featured_tour_05.png","components/tours/assets/featured_tour/EN/featured_tour_06.png","components/tours/assets/featured_tour/EN/featured_tour_07.png","components/tours/assets/featured_tour/EN/featured_tour_08.png","components/tours/assets/featured_tour/EN/featured_tour_09.png","components/tours/assets/featured_tour/EN/featured_tour_10.png","components/tours/assets/trade_hk_tour/EN/trade_hk_01.png","components/tours/assets/trade_hk_tour/EN/trade_hk_02.png","components/tours/assets/trade_hk_tour/EN/trade_hk_03.png","components/tours/assets/trade_hk_tour/EN/trade_hk_04.png","components/tours/assets/trade_hk_tour/EN/trade_hk_05.png","components/tours/assets/trade_hk_tour/EN/trade_hk_06.png","components/tours/assets/trade_hk_tour/EN/trade_hk_07.png","components/tours/assets/trade_hk_tour/EN/trade_hk_08.png","components/tours/assets/trade_hk_tour/EN/trade_hk_09.png","components/tours/assets/trade_tour/EN/trade_01.png","components/tours/assets/trade_tour/EN/trade_02.png","components/tours/assets/trade_tour/EN/trade_03.png","components/tours/assets/trade_tour/EN/trade_04.png","components/tours/assets/trade_tour/EN/trade_05.png","components/tours/assets/trade_tour/EN/trade_06.png","components/tours/assets/trade_tour/EN/trade_07.png","components/tours/assets/trade_tour/EN/trade_08.png","components/tours/assets/trade_tour/EN/trade_09.png","components/tours/assets/investing_pref_tour/EN/investing_pref_01.png","components/tours/assets/investing_pref_tour/EN/investing_pref_02.png","components/tours/assets/investing_pref_tour/EN/investing_pref_03.png","components/tours/assets/investing_pref_tour/EN/investing_pref_04.png","components/tours/assets/investing_pref_tour/EN/investing_pref_05.png","components/tours/assets/research_tour/EN/research_01.png","components/tours/assets/research_tour/EN/research_02.png","components/tours/assets/research_tour/EN/research_03.png","components/tours/assets/research_tour/EN/research_04.png","components/tours/assets/research_tour/EN/research_05.png","components/tours/assets/research_tour/EN/research_06.png","components/tours/assets/income_proj_tour/EN/income_proj_01.png","components/tours/assets/income_proj_tour/EN/income_proj_02.png","components/tours/assets/income_proj_tour/EN/income_proj_03.png","components/tours/assets/income_proj_tour/EN/income_proj_04.png","components/tours/assets/income_proj_tour/EN/income_proj_05.png","components/tours/assets/account_mgmt_tour/EN/account_01.png","components/tours/assets/account_mgmt_tour/EN/account_02.png","components/tours/assets/account_mgmt_tour/EN/account_03.png","components/tours/assets/account_mgmt_tour/EN/account_04.png","components/tours/assets/account_mgmt_tour/EN/account_05.png","components/tours/assets/account_mgmt_tour/EN/account_06.png","components/tours/assets/featured_tour/FR/featured_tour_01.png","components/tours/assets/featured_tour/FR/featured_tour_02.png","components/tours/assets/featured_tour/FR/featured_tour_03.png","components/tours/assets/featured_tour/FR/featured_tour_04.png","components/tours/assets/featured_tour/FR/featured_tour_05.png","components/tours/assets/featured_tour/FR/featured_tour_06.png","components/tours/assets/featured_tour/FR/featured_tour_07.png","components/tours/assets/featured_tour/FR/featured_tour_08.png","components/tours/assets/featured_tour/FR/featured_tour_09.png","components/tours/assets/featured_tour/FR/featured_tour_10.png","components/tours/assets/trade_hk_tour/FR/trade_hk_01.png","components/tours/assets/trade_hk_tour/FR/trade_hk_02.png","components/tours/assets/trade_hk_tour/FR/trade_hk_03.png","components/tours/assets/trade_hk_tour/FR/trade_hk_04.png","components/tours/assets/trade_hk_tour/FR/trade_hk_05.png","components/tours/assets/trade_hk_tour/FR/trade_hk_06.png","components/tours/assets/trade_hk_tour/FR/trade_hk_07.png","components/tours/assets/trade_hk_tour/FR/trade_hk_08.png","components/tours/assets/trade_hk_tour/FR/trade_hk_09.png","components/tours/assets/trade_tour/FR/trade_01.png","components/tours/assets/trade_tour/FR/trade_02.png","components/tours/assets/trade_tour/FR/trade_03.png","components/tours/assets/trade_tour/FR/trade_04.png","components/tours/assets/trade_tour/FR/trade_05.png","components/tours/assets/trade_tour/FR/trade_06.png","components/tours/assets/trade_tour/FR/trade_07.png","components/tours/assets/trade_tour/FR/trade_08.png","components/tours/assets/trade_tour/FR/trade_09.png","components/tours/assets/investing_pref_tour/FR/investing_pref_01.png","components/tours/assets/investing_pref_tour/FR/investing_pref_02.png","components/tours/assets/investing_pref_tour/FR/investing_pref_03.png","components/tours/assets/investing_pref_tour/FR/investing_pref_04.png","components/tours/assets/investing_pref_tour/FR/investing_pref_05.png","components/tours/assets/research_tour/FR/research_01.png","components/tours/assets/research_tour/FR/research_02.png","components/tours/assets/research_tour/FR/research_03.png","components/tours/assets/research_tour/FR/research_04.png","components/tours/assets/research_tour/FR/research_05.png","components/tours/assets/research_tour/FR/research_06.png","components/tours/assets/income_proj_tour/FR/income_proj_01.png","components/tours/assets/income_proj_tour/FR/income_proj_02.png","components/tours/assets/income_proj_tour/FR/income_proj_03.png","components/tours/assets/income_proj_tour/FR/income_proj_04.png","components/tours/assets/income_proj_tour/FR/income_proj_05.png","components/tours/assets/account_mgmt_tour/FR/account_01.png","components/tours/assets/account_mgmt_tour/FR/account_02.png","components/tours/assets/account_mgmt_tour/FR/account_03.png","components/tours/assets/account_mgmt_tour/FR/account_04.png","components/tours/assets/account_mgmt_tour/FR/account_05.png","components/tours/assets/account_mgmt_tour/FR/account_06.png","static/utils.ts","static/enums.ts","static/types.ts","static/markit.ts","api.ts","components/tours/Tours.tsx","components/tours/assets/generic/AO_Header.png","components/tours/assets/generic/DI_Header.png","components/tours/assets/generic/tour_footer.png","App.Tours.tsx","index.tours.tsx"],"names":["cookieName","rbcDict","document","cookie","split","find","includes","trim","slice","length","reduce","acc","kv","key","val","STORAGE_KEY","getStorage","storedState","JSON","parse","localStorage","getItem","modExpiry","moment","setStorage","state","setItem","stringify","SGID","didSessionUpdate","resources","en","translation","enJSON","fr","frJSON","paramLng","URLSearchParams","window","location","search","get","lng","toLowerCase","language","documentElement","lang","locale","i18next","use","initReactI18next","init","keySeparator","interpolation","escapeValue","format","value","opts","minimumFractionDigits","maximumFractionDigits","Number","toLocaleString","notation","style","currency","currencyDisplay","Math","abs","replace","msg","t","useTranslation","toString","forEach","el","otismsgs","momentDate","isValid","react","transKeepBasicHtmlNodesFor","RoutePath","TourRoutePath","tourRouteNames","Tours","Tours_Featured","Tours_Trade","Tours_TradeHK","Tours_AccountManagement","Tours_InvestingPreferences","Tours_Research","Tours_IncomeProjection","Not_Found","Activity","OrderStatus","RRIF","RRIF_Edit","RRIF_Edit_1","RRIF_Edit_2","RRIF_Edit_3_Success","RRIF_Edit_3_Error","Profile","Trade_MF","Trade_MF_1","Trade_MF_1_Switch","Trade_MF_2","Trade_MF_2_Switch","Trade_MF_3_Success","Trade_MF_3_Error","Trade_Search","Trade_EQ","Trade_EQ_1","Trade_EQ_1_Modify","Trade_EQ_2","Trade_EQ_2_Cancel","Trade_EQ_2_Modify","Trade_EQ_3_Success","Trade_EQ_3_Success_Cancel","Trade_EQ_3_Success_Modify","Trade_EQ_3_Error","Trade_EQ_3_Error_Cancel","Trade_EQ_3_Error_Modify","CashToMargin","OptionsTrading","IncomeProjection","TradingAuthorization","ThirdPartyDetermination","TASupplemental","UpdateClientInfo","Trade_OP","Trade_OP_1","Onboarding","Onboarding_Welcome","Onboarding_ExchangeAgreements","Onboarding_Education","Onboarding_CEG","Onboarding_HK","Onboarding_OPRA","Onboarding_NYSE","Onboarding_NASDAQ","ExchangeAgreements","Agreement_CEG","Agreement_HK","Agreement_OPRA","Agreement_NYSE","Agreement_NASDAQ","Education","Repapering","Repapering_Review","Repapering_Review_Profile","Repapering_Review_Accounts","Repapering_Review_Accounts_Edit","Repapering_Review_Confirm","Repapering_Review_Download","Object","values","Loading","xmlns","viewBox","height","width","preserveAspectRatio","focusable","fill","id","stroke","strokeWidth","fillRule","transform","d","strokeOpacity","strokeLinecap","Loader","className","shouldFocus","a11y","small","classNames","role","tabIndex","ref","focus","prototype","toFixedChkPennyStock","lastPrice","fractionDigits","this","toFixed","SortOrder","ActivityType","CurrencyCode","SecurityType","SecurityCategory","OrderType","SubmittedStatus","EquityModal","HSBCStatus","ExchangeAgreementEnum","NASDAQSubscriber","NASDAQStatus","EmeraldPhase","TourKind","RepaperingPhase","AccountRelationshipType","MaritalStatus","Language","AccountType","AccountPurposeDetail","PhysicalMail","PensionLegislation","FormID","FormType","FormStatus","RepaperingTypes","isISAM","TourRedirect","api","axios","create","xsrfCookieName","withCredentials","sanitize","data","reactBaseMeta","head","querySelector","envParam","content","baseURI","href","test","host","process","Date","now","parseApiResponse","nonModel","res","apiStatusCode","Error","apiResponse","digTourData","Featured","Trade","TradeHK","AccountManagement","InvestingPreferences","Research","Tooltip","title","digTitle","description","placement","showPrev","isLast","onNextClick","onPrevClick","isPublicTour","redirectPath","tourId","step","history","useHistory","btn1","useRef","btn2","btn3","findFirstFocusable","current","redirect","push","onboarding","digIndex","digTourName","btnClick","btn","cb","e","dataLayer","dataLayerPush","event","details","data_dig_id","onFocus","direction","Trans","horizontalAlignment","verticalAlignment","priority","mode","onClick","spacingBetweenItems","size","env","i18n","useParams","tourParam","stepParam","redirectParam","parseInt","useState","imageLoaded","setImageLoaded","useEffect","preventScroll","scrollTo","top","offsetTop","behavior","TourContent","tooltipDescription","nubbinPosition","left","image","FeaturedTourImages","Featured01","FeaturedTourImagesFR","Featured02","Featured03","Featured04","Featured05","Featured06","Featured07","Featured08","Featured09","Featured10","TradeTourImages","Trade01","TradeTourImagesFR","Trade02","Trade03","Trade04","Trade05","Trade06","Trade07","Trade08","Trade09","AccMngTourImages","AccMng01","AccMngTourImagesFR","AccMng02","isAO","AccMng03","AccMng04","AccMng05","AccMng06","TradeHKTourImages","TradeHK01","TradeHKTourImagesFR","TradeHK02","TradeHK03","TradeHK04","TradeHK05","TradeHK06","TradeHK07","TradeHK08","TradeHK09","InvestingPrefTourImages","InvestingPref01","InvestingPrefTourImagesFR","InvestingPref02","InvestingPref03","InvestingPref04","InvestingPref05","IncomeProjTourImages","IncomeProj01","IncomeProjTourImagesFR","IncomeProj02","IncomeProj03","IncomeProj04","IncomeProj05","ResearchTourImages","Research01","ResearchTourImagesFR","Research02","Research03","Research04","Research05","Research06","APITourProp","status","interactiveTour","post","then","curTourContent","basePath","curStep","map","i","src","alt","backgroundImage","img","complete","onLoad","pathname","samePage","to","RouteController","children","useLocation","matchedPaths","filter","RegExp","sort","a","b","path","toUpperCase","ToursApp","type","assetPath","rootElement","getElementById","ReactDOM","render","config","refetchAllOnWindowFocus","viewportMeta"],"mappings":"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,G,SAjLAT,K,kBAAAA,E,sCAAAA,E,4BAAAA,E,gCAAAA,E,4CAAAA,E,sCAAAA,E,0BAAAA,E,uCAAAA,M,0CAUAC,K,gBAAAA,E,kBAAAA,E,oBAAAA,E,sBAAAA,E,mBAAAA,M,gCAOAC,K,kBAAAA,E,gBAAAA,E,mBAAAA,M,2BAKAC,K,YAAAA,E,iBAAAA,M,8BAIAC,K,kBAAAA,E,UAAAA,E,0BAAAA,E,sBAAAA,E,sCAAAA,E,YAAAA,E,YAAAA,E,UAAAA,E,0BAAAA,E,YAAAA,E,UAAAA,E,YAAAA,E,YAAAA,E,kCAAAA,E,0BAAAA,E,YAAAA,E,wBAAAA,E,8CAAAA,E,wBAAAA,E,sCAAAA,E,wBAAAA,E,sCAAAA,E,wCAAAA,E,oCAAAA,E,kDAAAA,E,sDAAAA,E,4CAAAA,E,gCAAAA,E,4BAAAA,E,wCAAAA,E,qCAAAA,M,uCAkCAC,K,QAAAA,E,gBAAAA,E,oBAAAA,E,mBAAAA,M,+BAOAC,K,YAAAA,E,kBAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,SAAAA,M,qCAsBAC,K,kBAAAA,E,gCAAAA,E,YAAAA,E,kBAAAA,E,gBAAAA,E,gBAAAA,E,sCAAAA,E,gBAAAA,E,sBAAAA,E,4BAAAA,E,kCAAAA,E,sBAAAA,E,4BAAAA,E,kCAAAA,E,QAAAA,E,oBAAAA,E,YAAAA,E,cAAAA,E,QAAAA,E,cAAAA,E,oBAAAA,E,sBAAAA,E,8BAAAA,E,8BAAAA,E,kCAAAA,E,0BAAAA,E,YAAAA,E,YAAAA,E,YAAAA,E,YAAAA,E,8BAAAA,E,wBAAAA,E,YAAAA,E,oBAAAA,E,wBAAAA,E,UAAAA,E,YAAAA,E,YAAAA,E,YAAAA,E,0BAAAA,E,8BAAAA,E,8BAAAA,E,wBAAAA,E,0BAAAA,E,wBAAAA,E,wBAAAA,E,wBAAAA,E,wBAAAA,E,wBAAAA,E,wBAAAA,E,0BAAAA,E,0BAAAA,E,0BAAAA,E,0BAAAA,E,0BAAAA,E,0BAAAA,E,0BAAAA,E,0BAAAA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","file":"static/js/main.51639d4a.chunk.js","sourcesContent":["import moment, { Moment } from 'moment';\r\nimport { FilterState, SortState as ActivitySortState } from '../components/transactions/activity/Activity';\r\nimport { OrderFilters, SortState as OrderStatusSortState } from '../components/transactions/orderstatus/OrderStatus';\r\nimport { Features, ProfileClient, RBCDict } from './types';\r\n\r\nconst cookieName = 'RBCDict';\r\nconst rbcDict: RBCDict = document.cookie.split(';')\r\n .find((cookie) => cookie.includes(cookieName))?.trim()\r\n .slice(`${cookieName}=`.length)\r\n .split('&')\r\n .reduce((acc, kv) => {\r\n const [key, val] = kv.split('=');\r\n return { ...acc, [key]: val };\r\n }, {} as RBCDict) || {} as RBCDict;\r\n\r\n\r\n// Session Storage\r\n\r\ntype StoredState = {\r\n activity?: {\r\n filterState: FilterState,\r\n sortState: ActivitySortState,\r\n showCount: number,\r\n },\r\n orderStatus?: {\r\n filterState: OrderFilters,\r\n sortState: OrderStatusSortState,\r\n showCount: number,\r\n expandedStates: { [key: string]: boolean }\r\n },\r\n profileClient?: ProfileClient,\r\n features?: Features,\r\n showInterceptModal?: {emailAddress?: string, showIntercept: boolean},\r\n SGID?: string\r\n};\r\n\r\nconst SESSION_KEY = 'rbc_di_session';\r\n\r\nconst getStoredState: () => StoredState = () => {\r\n const storedState = JSON.parse(sessionStorage.getItem(SESSION_KEY)) || {}\r\n if (storedState.activity) {\r\n storedState.activity.filterState.startDate = moment(storedState.activity.filterState.startDate);\r\n storedState.activity.filterState.endDate = moment(storedState.activity.filterState.endDate);\r\n }\r\n return storedState;\r\n};\r\n\r\nconst setStoredState = (state: StoredState) =>\r\n sessionStorage.setItem(SESSION_KEY, JSON.stringify({ ...getStoredState(), ...state }));\r\n\r\n\r\n// Local Storage\r\n\r\ntype Storage = {\r\n modExpiry?: Moment,\r\n SGID?: string\r\n};\r\n\r\nconst STORAGE_KEY = 'rbc_di_storage';\r\n\r\nconst getStorage: () => Storage = () => {\r\n const storedState: Storage = JSON.parse(localStorage.getItem(STORAGE_KEY)) || {};\r\n if (storedState.modExpiry) storedState.modExpiry = moment(storedState.modExpiry);\r\n return storedState;\r\n};\r\n\r\nconst setStorage = (state: Storage) =>\r\n localStorage.setItem(STORAGE_KEY, JSON.stringify({ ...getStorage(), ...state }));\r\n\r\nconst SGID = rbcDict.SGID?.slice(-18);\r\nconst didSessionUpdate = getStorage().SGID !== SGID;\r\nif (didSessionUpdate) setStorage({ SGID });\r\n\r\nexport { rbcDict, getStoredState, setStoredState, getStorage, setStorage, didSessionUpdate };\r\n","import i18next from 'i18next';\r\nimport { initReactI18next, useTranslation } from 'react-i18next';\r\nimport moment from 'moment';\r\nimport 'moment/locale/en-ca';\r\nimport 'moment/locale/fr-ca';\r\nimport enJSON from './translations/en.json';\r\nimport frJSON from './translations/fr.json';\r\nimport { rbcDict } from './static/session';\r\n\r\nconst resources = {\r\n en: { translation: enJSON },\r\n fr: { translation: frJSON }\r\n};\r\n\r\nconst params = new URLSearchParams(window.location.search);\r\nconst paramLng = params.get('LANGUAGE');\r\nlet lng = 'en';\r\nif (paramLng && ['fr', 'french'].includes(paramLng.toLowerCase().trim()) ||\r\n !paramLng && rbcDict.language?.toLowerCase().trim() === 'french') {\r\n lng = 'fr';\r\n}\r\n\r\ndocument.documentElement.lang = lng;\r\nmoment.locale(lng);\r\n\r\ni18next.use(initReactI18next)\r\n .init({\r\n resources,\r\n lng,\r\n keySeparator: false, // Not nesting keys\r\n interpolation: {\r\n escapeValue: false, // React already safe from xss,\r\n format: (value, format, lng) => {\r\n if (['number', 'compact', 'percent', 'percentfloat', 'currency', 'dollars', 'quoteprice', 'OtisMultiMsg'].includes(format)) {\r\n let opts: Intl.NumberFormatOptions = { minimumFractionDigits: 2, maximumFractionDigits: 4 };\r\n if (format === 'compact') {\r\n return Number(value).toLocaleString(`${lng}-ca`, { notation: 'compact', maximumFractionDigits: 1} as any);\r\n }\r\n if (format === 'number') {\r\n opts.minimumFractionDigits = 0;\r\n }\r\n else if (['percent', 'percentfloat'].includes(format)) {\r\n opts.style = 'percent';\r\n opts.maximumFractionDigits = 2;\r\n if (format === 'percent') {\r\n opts.minimumFractionDigits = 0;\r\n }\r\n }\r\n else if (['dollars', 'quoteprice'].includes(format)) {\r\n opts.style = 'currency';\r\n opts.currency = 'CAD';\r\n opts.currencyDisplay = 'symbol';\r\n if (format === 'quoteprice' && Math.abs(value) > 2) {\r\n opts.maximumFractionDigits = 2;\r\n }\r\n return Number(value).toLocaleString(`${lng}-ca`, opts).replace(/C(AD?)?/, '').trim();\r\n }\r\n else if (format === 'OtisMultiMsg') {\r\n let msg = '';\r\n return (() => {\r\n const { t } = useTranslation();\r\n value.toString().split(' ').forEach(el => {\r\n msg += t(`eq_error.${el}`);\r\n });\r\n return t('fmt_OtisMultiMsg', {otismsgs: msg});\r\n })();\r\n }\r\n return Number(value).toLocaleString(`${lng}-ca`, opts);\r\n }\r\n const momentDate = moment(value);\r\n if (momentDate.isValid()) return momentDate.format(format);\r\n return value;\r\n }\r\n },\r\n react: {\r\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'b', 'i', 'p']\r\n }\r\n });\r\n\r\nexport default i18next;\r\nexport { lng };\r\n","export enum RoutePath {\r\n Not_Found = '/404',\r\n Activity = '/Activity',\r\n OrderStatus = '/OrderStatus',\r\n RRIF = '/RRIF',\r\n RRIF_Edit = '/RRIF/Edit',\r\n RRIF_Edit_1 = '/RRIF/Edit/1',\r\n RRIF_Edit_2 = '/RRIF/Edit/2',\r\n RRIF_Edit_3_Success = '/RRIF/Edit/3/Success',\r\n RRIF_Edit_3_Error = '/RRIF/Edit/3/Error',\r\n Profile = '/Profile',\r\n Trade_MF = '/Trade/MF',\r\n Trade_MF_1 = '/Trade/MF/1',\r\n Trade_MF_1_Switch = '/Trade/MF/1/Switch',\r\n Trade_MF_2 = '/Trade/MF/2',\r\n Trade_MF_2_Switch = '/Trade/MF/2/Switch',\r\n Trade_MF_3_Success = '/Trade/MF/3/Success',\r\n Trade_MF_3_Error = '/Trade/MF/3/Error',\r\n Trade_Search = \"/Trade/Search\",\r\n Trade_EQ = '/Trade/EQ',\r\n Trade_EQ_1 = '/Trade/EQ/1',\r\n // Trade_EQ_2 = '/Trade/EQ/2',\r\n Trade_EQ_1_Modify = '/Trade/EQ/1/Modify',\r\n Trade_EQ_2 = '/Trade/EQ/2',\r\n Trade_EQ_2_Cancel = '/Trade/EQ/2/Cancel',\r\n Trade_EQ_2_Modify = '/Trade/EQ/2/Modify',\r\n Trade_EQ_3_Success = '/Trade/EQ/3/Success',\r\n Trade_EQ_3_Success_Cancel = '/Trade/EQ/3/Success/Cancel',\r\n Trade_EQ_3_Success_Modify = '/Trade/EQ/3/Success/Modify',\r\n Trade_EQ_3_Error = '/Trade/EQ/3/Error',\r\n Trade_EQ_3_Error_Cancel = '/Trade/EQ/3/Error/Cancel',\r\n Trade_EQ_3_Error_Modify = '/Trade/EQ/3/Error/Modify',\r\n CashToMargin = '/CashToMargin',\r\n OptionsTrading = '/OptionsTrading',\r\n IncomeProjection = '/IncomeProjection',\r\n TradingAuthorization = '/TradingAuthorization',\r\n ThirdPartyDetermination = '/ThirdPartyDetermination',\r\n TASupplemental = '/TASupplemental',\r\n UpdateClientInfo = '/UpdateClientInfo',\r\n Trade_OP = '/Trade/OP',\r\n Trade_OP_1 = '/Trade/OP/1',\r\n Onboarding = '/Onboarding',\r\n Onboarding_Welcome = '/Onboarding/Welcome',\r\n Onboarding_ExchangeAgreements = '/Onboarding/ExchangeAgreements',\r\n Onboarding_Education = '/Onboarding/Education',\r\n Onboarding_CEG = '/Onboarding/Forms/CEG',\r\n Onboarding_HK = '/Onboarding/Forms/HK',\r\n Onboarding_OPRA = '/Onboarding/Forms/OPRA',\r\n Onboarding_NYSE = '/Onboarding/Forms/NYSE',\r\n Onboarding_NASDAQ = '/Onboarding/Forms/NASDAQ',\r\n ExchangeAgreements = '/ExchangeAgreements',\r\n Agreement_CEG = '/Forms/CEG',\r\n Agreement_HK = '/Forms/HK',\r\n Agreement_OPRA = '/Forms/OPRA',\r\n Agreement_NYSE = '/Forms/NYSE',\r\n Agreement_NASDAQ = '/Forms/NASDAQ',\r\n Education = '/Education',\r\n Repapering = '/Repapering',\r\n Repapering_Review = '/Repapering/Review',\r\n Repapering_Review_Profile = '/Repapering/Review/Profile',\r\n Repapering_Review_Accounts = '/Repapering/Review/Accounts',\r\n Repapering_Review_Accounts_Edit = '/Repapering/Review/Accounts/Edit',\r\n Repapering_Review_Confirm = '/Repapering/Review/Confirm',\r\n Repapering_Review_Download = '/Repapering/Review/Download',\r\n};\r\n\r\nexport enum TourRoutePath {\r\n Tours = '/Tours',\r\n Tours_Featured = '/Tours/Featured',\r\n Tours_Trade = '/Tours/Trade',\r\n Tours_TradeHK = '/Tours/TradeHK',\r\n Tours_AccountManagement = '/Tours/AccountManagement',\r\n Tours_InvestingPreferences = '/Tours/InvestingPreferences',\r\n Tours_Research = '/Tours/Research',\r\n Tours_IncomeProjection = '/Tours/IncomeProjection',\r\n}\r\n\r\nexport const tourRouteNames: { [key in TourRoutePath]: string } = {\r\n [TourRoutePath.Tours]: 'Tours',\r\n [TourRoutePath.Tours_Featured]: 'Tour - Featured',\r\n [TourRoutePath.Tours_Trade]: 'Tour - Trade',\r\n [TourRoutePath.Tours_TradeHK]: 'Tour - Hong Kong Trade',\r\n [TourRoutePath.Tours_AccountManagement]: 'Tour - Account Management',\r\n [TourRoutePath.Tours_InvestingPreferences]: 'Tour - Investing Preferences',\r\n [TourRoutePath.Tours_Research]: 'Tour - Research',\r\n [TourRoutePath.Tours_IncomeProjection]: 'Tour - Income Projection',\r\n}\r\n\r\nexport const routeNames: { [key in RoutePath | TourRoutePath]: string } = {\r\n [RoutePath.Not_Found]: '404 Not Found',\r\n [RoutePath.Activity]: 'Activity',\r\n [RoutePath.OrderStatus]: 'Order Status',\r\n [RoutePath.RRIF]: 'RRIF Details',\r\n [RoutePath.RRIF_Edit]: null,\r\n [RoutePath.RRIF_Edit_1]: 'RRIF Edit Step 1',\r\n [RoutePath.RRIF_Edit_2]: 'RRIF Edit Step 2',\r\n [RoutePath.RRIF_Edit_3_Success]: 'RRIF Edit Step 3 Success',\r\n [RoutePath.RRIF_Edit_3_Error]: 'RRIF Edit Step 3 Error',\r\n [RoutePath.Profile]: 'Profile Settings',\r\n [RoutePath.Trade_MF]: null,\r\n [RoutePath.Trade_MF_1]: 'Trade - Mutual Funds Step 1',\r\n [RoutePath.Trade_MF_1_Switch]: 'Trade - Mutual Fund Switch Step 1',\r\n [RoutePath.Trade_MF_2]: 'Trade - Mutual Funds Step 2',\r\n [RoutePath.Trade_MF_2_Switch]: 'Trade - Mutual Fund Switch Step 2',\r\n [RoutePath.Trade_MF_3_Success]: 'Trade - Mutual Funds Step 3 Success',\r\n [RoutePath.Trade_MF_3_Error]: 'Trade - Mutual Funds Step 3 Error',\r\n [RoutePath.Trade_Search]: 'Trade - Search',\r\n [RoutePath.Trade_EQ]: null,\r\n // [RoutePath.Trade_EQ_1]: 'Trade - Equity Search',\r\n [RoutePath.Trade_EQ_1]: 'Trade - Equity Form',\r\n [RoutePath.Trade_EQ_1_Modify]: 'Trade - Modify Order Form',\r\n [RoutePath.Trade_EQ_2]: 'Trade - Equity Review',\r\n [RoutePath.Trade_EQ_2_Cancel]: 'Trade - Cancel Order',\r\n [RoutePath.Trade_EQ_2_Modify]: 'Trade - Modify Order Review',\r\n [RoutePath.Trade_EQ_3_Success]: 'Trade - Equity Success',\r\n [RoutePath.Trade_EQ_3_Success_Cancel]: 'Trade - Cancel Order Success',\r\n [RoutePath.Trade_EQ_3_Success_Modify]: 'Trade - Modify Order Success',\r\n [RoutePath.Trade_EQ_3_Error]: 'Trade - Equity Error',\r\n [RoutePath.Trade_EQ_3_Error_Cancel]: 'Trade - Cancel Order Error',\r\n [RoutePath.Trade_EQ_3_Error_Modify]: 'Trade - Modify Order Error',\r\n [RoutePath.CashToMargin]: 'Cash To Margin',\r\n [RoutePath.OptionsTrading]: 'Options Trading',\r\n [RoutePath.IncomeProjection]: 'Income Projection',\r\n [RoutePath.TradingAuthorization]: 'Trading Authorization',\r\n [RoutePath.ThirdPartyDetermination]: 'Third Party Determination',\r\n [RoutePath.TASupplemental]: 'Trading Authorization - Supplemental Form',\r\n [RoutePath.UpdateClientInfo]: 'Update/Change Client Information',\r\n [RoutePath.Trade_OP]: null,\r\n [RoutePath.Trade_OP_1]: 'Trade - Options Form',\r\n [RoutePath.Onboarding]: 'Onboarding',\r\n [RoutePath.Onboarding_Welcome]: 'Onboarding - Welcome',\r\n [RoutePath.Onboarding_ExchangeAgreements]: 'Onboarding - Exchange Agreements',\r\n [RoutePath.Onboarding_Education]: 'Onboarding - Education',\r\n [RoutePath.Onboarding_CEG]: 'Onboarding - CEG',\r\n [RoutePath.Onboarding_HK]: 'Onboarding - HK',\r\n [RoutePath.Onboarding_OPRA]: 'Onboarding - OPRA',\r\n [RoutePath.Onboarding_NYSE]: 'Onboarding - NYSE',\r\n [RoutePath.Onboarding_NASDAQ]: 'Onboarding - NASDAQ',\r\n [RoutePath.ExchangeAgreements]: 'Exchange Agreements',\r\n [RoutePath.Agreement_CEG]: 'CEG',\r\n [RoutePath.Agreement_HK]: 'HK',\r\n [RoutePath.Agreement_OPRA]: 'OPRA',\r\n [RoutePath.Agreement_NYSE]: 'NYSE',\r\n [RoutePath.Agreement_NASDAQ]: 'NASDAQ',\r\n [RoutePath.Education]: 'Education',\r\n [RoutePath.Repapering]: 'Repapering - Dashboard',\r\n [RoutePath.Repapering_Review]: null,\r\n [RoutePath.Repapering_Review_Profile]: 'Repapering - Review Profile',\r\n [RoutePath.Repapering_Review_Accounts]: 'Repapering - Review Accounts',\r\n [RoutePath.Repapering_Review_Accounts_Edit]: 'Repapering - Review Accounts Edit',\r\n [RoutePath.Repapering_Review_Confirm]: 'Repapering - Review Confirm',\r\n [RoutePath.Repapering_Review_Download]: 'Repapering - Review Download',\r\n ...tourRouteNames\r\n};\r\n\r\nexport const responsiveRoutes: (RoutePath | TourRoutePath)[] = [\r\n RoutePath.Onboarding,\r\n RoutePath.Onboarding_Welcome,\r\n RoutePath.Onboarding_ExchangeAgreements,\r\n RoutePath.Onboarding_Education,\r\n RoutePath.Onboarding_CEG,\r\n RoutePath.Onboarding_HK,\r\n RoutePath.Onboarding_OPRA,\r\n RoutePath.Onboarding_NYSE,\r\n RoutePath.Onboarding_NASDAQ,\r\n RoutePath.ExchangeAgreements,\r\n RoutePath.Agreement_CEG,\r\n RoutePath.Agreement_HK,\r\n RoutePath.Agreement_OPRA,\r\n RoutePath.Agreement_NYSE,\r\n RoutePath.Agreement_NASDAQ,\r\n RoutePath.Education,\r\n RoutePath.Repapering,\r\n ...Object.values(TourRoutePath)\r\n];\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport const Help = () => <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n;\r\n\r\nexport const HelpIcon = () => <>\r\n \r\n \r\n \r\n \r\n \r\n;\r\n\r\nexport const Info_sm = () =>\r\n ;\r\n\r\nexport const Export = () => <>\r\n \r\n \r\n \r\n \r\n;\r\n\r\nexport const StatusClock = () =>\r\n \r\n \r\n \r\n ;\r\n\r\nexport const StatusTimes = () =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n\r\nexport const StatusOpen = () =>\r\n \r\n \r\n ;\r\n\r\nexport const StatusFilled = () =>\r\n \r\n \r\n ;\r\n\r\nexport const StatusPartFilled = () =>\r\n \r\n \r\n ;\r\n\r\nexport const Times = () =>\r\n \r\n \r\n ;\r\n\r\nexport const Kebab = () =>\r\n \r\n \r\n \r\n \r\n ;\r\n\r\nexport const Practice = () =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\nexport const Error = () =>\r\n \r\n \r\n ;\r\n\r\nexport const ErrorWarning = () =>\r\n ;\r\n\r\nexport const Error_sm = () =>\r\n \r\n \r\n ;\r\n\r\nexport const Warning = () =>\r\n \r\n \r\n \r\n \r\n ;\r\n\r\nexport const Info = () =>\r\n ;\r\n\r\nexport const Info_alt = () =>\r\n \r\n \r\n ;\r\n\r\nexport const Info_grey_sm = () =>\r\n \r\n \r\n ;\r\n\r\n\r\nexport const Info_quote = () =>\r\n \r\n \r\n ;\r\n\r\nexport const InfoGrey = () =>\r\n ;\r\n\r\nexport const Success = () =>\r\n \r\n \r\n ;\r\n\r\nexport const Loading = () =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n\r\nexport const Sliders = () =>\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n\r\nexport const CA = () => {\r\n return \r\n \r\n \r\n \r\n}\r\nexport const Canada = CA;\r\nexport const US = () => {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\nexport const HK = () => {\r\n return \r\n \r\n \r\n \r\n};\r\nexport const GB = () => {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\nexport const FR = () => {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\nexport const DE = () => {\r\n return \r\n \r\n \r\n \r\n \r\n}\r\n\r\nexport const ExternalLink = () =>\r\n \r\n \r\n \r\n ;\r\n\r\nexport const InternalLink = () =>\r\n \r\n \r\n \r\n\r\nexport const Laptop = () =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n\r\nexport const LaptopProfile = () =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n\r\nexport const LaptopCheck = () =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n\r\nexport const LaptopWarning = () =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n\r\nexport const LaptopError = () =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n\r\nexport const Refresh = () =>\r\n \r\n \r\n ;\r\n\r\nexport const SwitchArrow = () =>\r\n \r\n \r\n ;\r\n\r\nexport const CurrentArrow = () => \r\n \r\n \r\n;\r\n\r\nexport const ComputerDesk = () =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n\r\nlet printId = 0;\r\nexport const Print = () => {\r\n printId += 2;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const CheckMark = () =>\r\n \r\n \r\n ;\r\n\r\nexport const SuccessIcon = () =>\r\n \r\n {useTranslation().t('icon.success')}\r\n \r\n ;\r\nexport const SuccessIconX = () =>\r\n\r\n {useTranslation().t('icon.success')}\r\n \r\n;\r\n\r\nexport const ErrorIcon = () =>\r\n \r\n {useTranslation().t('icon.error')}\r\n \r\n ;\r\n\r\nexport const TableChat = () =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n\r\nexport const Documents = () =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n\r\nexport const Download = () =>\r\n \r\n \r\n ;\r\n\r\nexport const ExchangeIcon = () =>\r\n \r\n \r\n ;\r\n\r\nexport const QuestionEQ = () =>\r\n \r\n \r\n ;\r\n\r\nexport const FaqLink = () =>\r\n \r\n \r\n ;\r\n\r\nexport const InfoEQ = () =>\r\n \r\n \r\n ;\r\n\r\nexport const WarningEQ = () =>\r\n\r\n\r\n\r\n\r\n;\r\n\r\nexport const DelayedIcon = ({ ariaHidden = false }) =>\r\n \r\n {useTranslation().t('quote_equity_delayed')}\r\n \r\n \r\n ;\r\n\r\nexport const NoCash = () =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\nexport const HomeImg = () =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\nexport const EditSection = () =>\r\n \r\n \r\n \r\n\r\nexport const Separator = () =>\r\n \r\n \r\n \r\n\r\nexport const MoneyPig = () =>\r\n \r\n \r\n \r\n\r\nexport const MoneyIcon = () =>\r\n \r\n \r\n \r\n\r\n\r\nexport const UpdateInfo = () =>\r\n \r\n \r\n \r\n\r\nexport const CheckCircle = () =>\r\n \r\n \r\n \r\n\r\nexport const Divider = () =>\r\n \r\n \r\n \r\n\r\nexport const RightArrowLink = () =>\r\n \r\n \r\n \r\n\r\nexport const LeftArrowLink = () =>\r\n \r\n \r\n \r\n\r\nexport const DividerMedium = () =>\r\n \r\n \r\n \r\n\r\nexport const DividerSmall = () =>\r\n \r\n \r\n \r\n\r\nexport const PreMarketIcon = () =>\r\n \r\n \r\n \r\n\r\nexport const BulbIcon = () =>\r\n\r\n\r\n;\r\n\r\nexport const OnboardingLg = ({width, height}: {width?: string, height?: string} = {}) =>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport const OnboardingMd = ({width, height}: {width?: string, height?: string} = {}) =>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport const OnboardingSm = ({width, height}: {width?: string, height?: string} = {}) =>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport const EducationDashboardHero = () => \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport const ClientUIHero = () => \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport const ClientUICompletedHero = () => \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { Loading } from '../../svg';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\ntype LoaderProps = {\r\n className?: string,\r\n shouldFocus?: boolean,\r\n a11y?: string,\r\n small?: boolean\r\n};\r\n\r\nexport const Loader = ({ className, shouldFocus, a11y, small }: LoaderProps) => {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n
\r\n \r\n shouldFocus && ref?.focus()}\r\n >\r\n {t('loading')}\r\n {a11y && {a11y}}\r\n \r\n
\r\n );\r\n};\r\n","export default __webpack_public_path__ + \"static/media/featured_tour_01.cbcd22c8.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_02.0e50a9e2.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_03.70771fee.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_04.c573e741.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_05.6defa598.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_06.aeb9331b.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_07.c8fb890a.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_08.085ee001.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_09.a1337cff.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_10.700819c6.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_01.f0ee2f0a.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_02.4a7a9ce9.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_03.a9bc8334.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_04.f398c39a.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_05.a4107a3b.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_06.73458eb0.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_07.1f7ed929.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_08.748cbec9.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_09.7350c604.png\";","export default __webpack_public_path__ + \"static/media/trade_01.d9cc0a8c.png\";","export default __webpack_public_path__ + \"static/media/trade_02.77080e7d.png\";","export default __webpack_public_path__ + \"static/media/trade_03.334b33a5.png\";","export default __webpack_public_path__ + \"static/media/trade_04.6044edad.png\";","export default __webpack_public_path__ + \"static/media/trade_05.2dc79a1d.png\";","export default __webpack_public_path__ + \"static/media/trade_06.423d6ae8.png\";","export default __webpack_public_path__ + \"static/media/trade_07.47dca4ac.png\";","export default __webpack_public_path__ + \"static/media/trade_08.0826aaa2.png\";","export default __webpack_public_path__ + \"static/media/trade_09.16daa270.png\";","export default __webpack_public_path__ + \"static/media/investing_pref_01.85cca106.png\";","export default __webpack_public_path__ + \"static/media/investing_pref_02.82aa6807.png\";","export default __webpack_public_path__ + \"static/media/investing_pref_03.0f49ff8f.png\";","export default __webpack_public_path__ + \"static/media/investing_pref_04.123353ad.png\";","export default __webpack_public_path__ + \"static/media/investing_pref_05.c51f8864.png\";","export default __webpack_public_path__ + \"static/media/research_01.e0beb492.png\";","export default __webpack_public_path__ + \"static/media/research_02.53992172.png\";","export default __webpack_public_path__ + \"static/media/research_03.6d003cae.png\";","export default __webpack_public_path__ + \"static/media/research_04.2d9a6caa.png\";","export default __webpack_public_path__ + \"static/media/research_05.b7d55d07.png\";","export default __webpack_public_path__ + \"static/media/research_06.fb353a2e.png\";","export default __webpack_public_path__ + \"static/media/income_proj_01.897fa3ed.png\";","export default __webpack_public_path__ + \"static/media/income_proj_02.ced5e4ac.png\";","export default __webpack_public_path__ + \"static/media/income_proj_03.ea3ff4ba.png\";","export default __webpack_public_path__ + \"static/media/income_proj_04.a196f56e.png\";","export default __webpack_public_path__ + \"static/media/income_proj_05.69e0454d.png\";","export default __webpack_public_path__ + \"static/media/account_01.7f7db7f6.png\";","export default __webpack_public_path__ + \"static/media/account_02.8eb491cc.png\";","export default __webpack_public_path__ + \"static/media/account_03.583d207b.png\";","export default __webpack_public_path__ + \"static/media/account_04.15dc793d.png\";","export default __webpack_public_path__ + \"static/media/account_05.c08c49ed.png\";","export default __webpack_public_path__ + \"static/media/account_06.c75b6778.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_01.17055923.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_02.6fd5f2e8.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_03.9b2c14e7.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_04.cad81d2a.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_05.405533be.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_06.82782112.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_07.ad35ed5c.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_08.3208eb32.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_09.4fae6a32.png\";","export default __webpack_public_path__ + \"static/media/featured_tour_10.2936c339.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_01.98ca1ae5.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_02.8049096e.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_03.b7901994.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_04.58ba6819.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_05.531cd455.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_06.ef3107ee.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_07.95fb89fd.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_08.f2c0b276.png\";","export default __webpack_public_path__ + \"static/media/trade_hk_09.51eec891.png\";","export default __webpack_public_path__ + \"static/media/trade_01.6d838f72.png\";","export default __webpack_public_path__ + \"static/media/trade_02.432a303b.png\";","export default __webpack_public_path__ + \"static/media/trade_03.081011a9.png\";","export default __webpack_public_path__ + \"static/media/trade_04.ddd287ad.png\";","export default __webpack_public_path__ + \"static/media/trade_05.6b8f434d.png\";","export default __webpack_public_path__ + \"static/media/trade_06.8d7a39d3.png\";","export default __webpack_public_path__ + \"static/media/trade_07.70b9d607.png\";","export default __webpack_public_path__ + \"static/media/trade_08.1149d6cf.png\";","export default __webpack_public_path__ + \"static/media/trade_09.47f41eb8.png\";","export default __webpack_public_path__ + \"static/media/investing_pref_01.8d9bebca.png\";","export default __webpack_public_path__ + \"static/media/investing_pref_02.6ca7a98f.png\";","export default __webpack_public_path__ + \"static/media/investing_pref_03.9dadcbde.png\";","export default __webpack_public_path__ + \"static/media/investing_pref_04.a91a1449.png\";","export default __webpack_public_path__ + \"static/media/investing_pref_05.9537c0f9.png\";","export default __webpack_public_path__ + \"static/media/research_01.fc94050a.png\";","export default __webpack_public_path__ + \"static/media/research_02.352363d2.png\";","export default __webpack_public_path__ + \"static/media/research_03.36f5d823.png\";","export default __webpack_public_path__ + \"static/media/research_04.046350b3.png\";","export default __webpack_public_path__ + \"static/media/research_05.0f44c718.png\";","export default __webpack_public_path__ + \"static/media/research_06.210e1645.png\";","export default __webpack_public_path__ + \"static/media/income_proj_01.3f17996f.png\";","export default __webpack_public_path__ + \"static/media/income_proj_02.c54c9b61.png\";","export default __webpack_public_path__ + \"static/media/income_proj_03.49c0bf70.png\";","export default __webpack_public_path__ + \"static/media/income_proj_04.0e06baea.png\";","export default __webpack_public_path__ + \"static/media/income_proj_05.0e301421.png\";","export default __webpack_public_path__ + \"static/media/account_01.d09d5674.png\";","export default __webpack_public_path__ + \"static/media/account_02.ee89a91c.png\";","export default __webpack_public_path__ + \"static/media/account_03.86370c2d.png\";","export default __webpack_public_path__ + \"static/media/account_04.6f4f71f2.png\";","export default __webpack_public_path__ + \"static/media/account_05.4f101c3e.png\";","export default __webpack_public_path__ + \"static/media/account_06.642fa385.png\";","import { FormikContextType } from 'formik';\r\nimport { Moment, isMoment } from 'moment';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { RoutePath, TourRoutePath } from './routes';\r\n\r\nexport const addBusinessDays = (originalDate: Moment, daysToAdd: number) => {\r\n const Sunday = 0;\r\n const Saturday = 6;\r\n const newDate = originalDate.clone();\r\n\r\n while (daysToAdd > 0) {\r\n newDate.add(1, 'days');\r\n if (![Saturday, Sunday].includes(newDate.day())) {\r\n daysToAdd--;\r\n }\r\n }\r\n\r\n return newDate;\r\n};\r\n\r\nexport const trim = (value: any) => {\r\n if (typeof value === 'string') return value.trim();\r\n if (isMoment(value)) return value;\r\n if (value instanceof Object) {\r\n return Object.entries(value).reduce((acc, [key, val]) => ({\r\n ...acc,\r\n [key]: trim(val)\r\n }), {});\r\n }\r\n return value;\r\n};\r\n\r\nexport const objectsDiffer = (obj1: object, obj2: object) => {\r\n if (!obj1 && !obj2) return false;\r\n if (!obj1 || !obj2) return true;\r\n if (isMoment(obj1)) return !obj1.isSame(obj2);\r\n return Object.entries(obj1).some(([key, val]) => {\r\n if (val instanceof Object) return objectsDiffer(val, obj2[key]);\r\n return (val || obj2[key]) && val != obj2[key];\r\n });\r\n};\r\n\r\nexport const scrollTo = (el: string | HTMLElement, focus: boolean = true) => {\r\n if (typeof el === 'string') el = document.querySelector(el) as HTMLElement;\r\n if (!el) return;\r\n if (focus) el.focus({ preventScroll: true });\r\n if ('scrollBehavior' in document.documentElement.style) {\r\n window.scrollTo({ top: el.offsetTop, behavior: 'smooth' });\r\n }\r\n else window.scrollTo(0, el.offsetTop);\r\n};\r\n\r\nexport const popupLink = (href, name) =>\r\n `javascript:window.open('${href}', '${name}', 'resizable=yes,scrollbars=yes,width=600,height=500,left=50,top=50')`;\r\n\r\nlet viewportContent: string;\r\nlet responsiveEnabled = false;\r\nlet locked = false;\r\nexport const toggleResponsive = (enable = !responsiveEnabled, andLock?: boolean) => {\r\n if (locked || enable === responsiveEnabled) return;\r\n locked = andLock;\r\n const viewportMeta = document.querySelector('meta[name=\"viewport\"]') as HTMLMetaElement;\r\n if (enable) {\r\n viewportContent = viewportMeta.content;\r\n viewportMeta.content = viewportMeta.content.replace(/width=[^,]*/, 'width=device-width');\r\n document.getElementById('N600wrapper').classList.add('responsive');\r\n }\r\n else {\r\n viewportMeta.content = viewportContent;\r\n document.getElementById('N600wrapper').classList.remove('responsive');\r\n }\r\n responsiveEnabled = enable;\r\n};\r\n\r\nexport const dataLayerPush = (data = {}) => {\r\n if (process.env.NODE_ENV === 'production') {\r\n window.dataLayer.push({\r\n 'event': 'dig-custom-event',\r\n ...data\r\n });\r\n }\r\n};\r\n\r\nexport const NumberDisplayFormat = ({num}) => {\r\n const { t } = useTranslation();\r\n if (num >= 1000000000 || num >= 100000000) return t('fmt_number', { val: (num / 1000000000).toFixed(1) }) + 'B';\r\n if (num >= 1000000 || num >= 100000) return t('fmt_number', { val: (num / 1000000).toFixed(1) }) + 'M';\r\n if (num >= 1000) return t('fmt_number', { val: (num / 1000).toFixed(1) }) + 'K';\r\n return num\r\n}\r\n\r\nexport const asBool = (val: any) => !!val && val !== 'false';\r\n\r\nexport const mockFormikError = (fieldName: string, submitCount: number): FormikContextType => submitCount ?\r\n { errors: { [fieldName]: true }, touched: { [fieldName]: true }, submitCount } as any : {};\r\n\r\nexport const valuesWithFormat = = any>(valuesMap: T) => {\r\n type Values = { [key in keyof T]: any };\r\n\r\n const initialValues = Object.entries(valuesMap)\r\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v[0] }), {}) as Values;\r\n\r\n const formatValues = (values: Values) => Object.entries(values)\r\n .reduce((acc, [k, v]) => ({ ...acc, [k]: valuesMap[k][1] ? valuesMap[k][1](v) : v }), {}) as F & Values;\r\n\r\n return { initialValues, formatValues };\r\n};\r\n\r\nexport const mapObjectValues = any>(map: F) =>\r\n (obj: T): { [key in keyof T]: ReturnType } =>\r\n obj && Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, map(v)])) as any;\r\n\r\nexport const ariaHeading = (level: number) => ({ role: 'heading', 'aria-level': level });\r\n\r\ndeclare global {\r\n interface Number {\r\n toFixedChkPennyStock(lastPrice?:number, fractionDigits?: number): number;\r\n }\r\n }\r\n Number.prototype.toFixedChkPennyStock = function(lastPrice, fractionDigits): number {\r\n return (lastPrice ?? this) <= 5 ? this.toFixed(4) : this.toFixed(fractionDigits ?? 2);\r\n}\r\n\r\nexport const changeTimezone = (date, ianatz) => {\r\n\r\n // suppose the date is 12:00 UTC\r\n var invdate = new Date(date.toLocaleString('en-US', {\r\n timeZone: ianatz\r\n }));\r\n\r\n // then invdate will be 07:00 in Toronto\r\n // and the diff is 5 hours\r\n var diff = date.getTime() - invdate.getTime();\r\n // so 12:00 in Toronto is 17:00 UTC\r\n return new Date(date.getTime() - diff); // needs to substract\r\n\r\n}\r\n\r\nexport const generateRelativeReactPath = (path: RoutePath | TourRoutePath) => `${window.location.search}#${path}`\r\n\r\nexport const isMobile = {\r\n isIpad: () => {\r\n return !!navigator.userAgent.match(/ipad/i) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);\r\n },\r\n isTablet: () => {\r\n return !!navigator.userAgent.match(/Tablet|Android|IEMobile|Windows Phone|PlayBook/i);\r\n },\r\n isIphone: () => {\r\n return !!navigator.userAgent.match(/iphone/i);\r\n },\r\n isSamsungBrowser: () => {\r\n return !!navigator.userAgent.match(/SamsungBrowser/i);\r\n },\r\n isIOSChrome: () => {\r\n return !!navigator.userAgent.match('CriOS');\r\n },\r\n isAny: () => {\r\n return (isMobile.isIOSChrome() || isMobile.isSamsungBrowser() || isMobile.isIpad() || isMobile.isTablet() || isMobile.isIphone());\r\n }\r\n}","export enum SortOrder { ASC = 1, DESC };\r\n\r\nexport enum ActivityType {\r\n Buy = 'Buy',\r\n Sell = 'Sell',\r\n Dividend = 'Dividend',\r\n Distribution = 'Distribution',\r\n Interest = 'Interest',\r\n ReturnOfCapital = 'ReturnOfCapital',\r\n Reorganization = 'Reorganization',\r\n Contribution = 'Contribution',\r\n Withdrawal = 'Withdrawal',\r\n Transfers = 'Transfers',\r\n Fees = 'Fees',\r\n Taxes = 'Taxes',\r\n Unknown = 'Unknown'\r\n};\r\n\r\nexport enum CurrencyCode {\r\n CAD = 'CAD',\r\n USD = 'USD'\r\n};\r\n\r\nexport enum SecurityType {\r\n FixedIncome = 'FixedIncome',\r\n MutualFund = 'MutualFund',\r\n CommonShare = 'CommonShare',\r\n PreferredShare = 'PreferredShare',\r\n Option = 'Option',\r\n Unknown = 'Unknown'\r\n};\r\n\r\nexport enum SecurityCategory {\r\n Equity = 'Equity',\r\n Option = 'Option',\r\n MutualFund = 'MutualFund',\r\n FixedIncome = 'FixedIncome',\r\n Other = 'Other'\r\n};\r\n\r\nexport enum OrderType {\r\n MarketPrice = 'MarketPrice',\r\n LimitPrice = 'LimitPrice',\r\n StopPrice = 'StopPrice',\r\n StopLimit = 'StopLimit',\r\n MFUnitAmount = 'MFUnitAmount',\r\n MFDollarAmount = 'MFDollarAmount',\r\n MFAllUnits ='MFAllUnits',\r\n Unknown = 'Unknown'\r\n};\r\n\r\nexport enum SubmittedStatus {\r\n Pending = 'pending',\r\n Queued = 'queued',\r\n Booked = 'booked',\r\n Received = 'received',\r\n Rejected_se = 'rejected_se',\r\n Rejected_if = 'rejected_if',\r\n Rejected = 'rejected',\r\n Processed = 'processed',\r\n Completed = 'completed',\r\n Killed = 'killed',\r\n Cancelled = 'cancelled',\r\n Unavailable = 'unavailable'\r\n};\r\n\r\nexport const reduceStatus = (status: SubmittedStatus): SubmittedStatus => {\r\n if ([SubmittedStatus.Queued, SubmittedStatus.Booked].includes(status)) {\r\n return SubmittedStatus.Received;\r\n }\r\n if ([SubmittedStatus.Rejected_se, SubmittedStatus.Rejected_if].includes(status)) {\r\n return SubmittedStatus.Rejected;\r\n }\r\n if (status === SubmittedStatus.Processed) {\r\n return SubmittedStatus.Completed;\r\n }\r\n if (status === SubmittedStatus.Killed) {\r\n return SubmittedStatus.Cancelled;\r\n }\r\n return status;\r\n};\r\n\r\nexport enum OrderStatus {\r\n Undefined = 'Undefined',\r\n Received = 'Received',\r\n Pending = 'Pending',\r\n Open = 'Open',\r\n Expired = 'Expired',\r\n Rejected = 'Rejected',\r\n Filled = 'Filled',\r\n PartFilled = 'PartFilled',\r\n ModifyPending = 'ModifyPending',\r\n ModifySubmitted = 'ModifySubmitted',\r\n ModifyRejected = 'ModifyRejected',\r\n CancelSubmitted = 'CancelSubmitted',\r\n CancelModify = 'CancelModify',\r\n CancelModifySubmitted = 'CancelModifySubmitted'\r\n};\r\n\r\nexport enum EquityModal {\r\n BuyingMargin = 'BuyingMargin',\r\n OrderType = 'OrderType',\r\n PayWithPoints = 'PayWithPoints',\r\n OrderDuration = 'OrderDuration',\r\n ImportantEquityA1 = 'ImportantEquityA1',\r\n ImportantEquityA2 = 'ImportantEquityA2',\r\n ImportantEquityB1 = 'ImportantEquityB1',\r\n PositionHeld = 'PositionHeld',\r\n ExtendedHrsPM = 'ExtendedHrsPM',\r\n ExtendedHrsAH = 'ExtendedHrsAH',\r\n PreMarketTrading = 'PreMarketTrading',\r\n PostMarketTrading = 'PostMarketTrading',\r\n GemSecurityRisk = 'GemSecurityRisk',\r\n GlobalTradingFees = 'GlobalTradingFees',\r\n};\r\n\r\nexport enum HSBCStatus {\r\n Unknown = 'Unknown',\r\n RBCClient = 'RBCClient',\r\n HSBCClient = 'HSBCClient',\r\n RBCandHSBCClient = 'RBCandHSBCClient'\r\n};\r\n\r\nexport enum ExchangeAgreementEnum {\r\n UNKNOWN = 'UNKNOWN',\r\n CEG = 'CEG',\r\n ME = 'ME',\r\n NASDAQ = 'NASDAQ',\r\n NYSE = 'NYSE',\r\n OPRA = 'OPRA',\r\n AMEX = 'AMEX',\r\n HKG ='HKG'\r\n};\r\n\r\nexport enum NASDAQSubscriber {\r\n UNKNOWN = 'UNKNOWN',\r\n Individual = 'Individual',\r\n Firm = 'Firm'\r\n};\r\n\r\nexport enum NASDAQStatus {\r\n UNKNOWN = 'UNKNOWN',\r\n US = 'US',\r\n NonUS = 'NonUS',\r\n};\r\n\r\nexport enum EmeraldPhase {\r\n PreT70,\r\n T70,\r\n T0\r\n};\r\n\r\nexport enum TourKind {\r\n Featured = 'featured', \r\n Trade = 'trade',\r\n TradeHK = 'tradehk',\r\n AccountManagement = 'accountmanagement',\r\n InvestingPreferences = 'investingpreferences',\r\n Research = 'research',\r\n IncomeProjection = 'incomeprojection',\r\n}\r\n\r\nexport enum RepaperingPhase {\r\n Inactive,\r\n PreTranche,\r\n TrancheActive,\r\n TrancheEndApproach,\r\n TrancheEndAlmostUp,\r\n Completed\r\n}\r\n\r\nexport namespace Repapering {\r\n export enum AccountRelationshipType {\r\n UNKNOWN = \"UNKNOWN\",\r\n PRIMARY_APPLICANT = \"PRIMARY_APPLICANT\",\r\n CO_APPLICANT = \"CO_APPLICANT\",\r\n CO_APPLICANT_2 = \"CO_APPLICANT_2\",\r\n ADDITIONAL_APPLICANT = \"ADDITIONAL_APPLICANT\",\r\n TRADING_AUTHORITY = \"TRADING_AUTHORITY\",\r\n THIRD_PARTY = \"THIRD_PARTY\",\r\n POWER_OF_ATTORNEY = \"POWER_OF_ATTORNEY\",\r\n }\r\n export enum MaritalStatus {\r\n SINGLE = \"SINGLE\",\r\n MARRIED = \"MARRIED\",\r\n DIVORCED = \"DIVORCED\",\r\n COMMONLAW = \"COMMONLAW\",\r\n UNKNOWN = \"UNKNOWN\",\r\n }\r\n export enum Language {\r\n English = \"English\",\r\n French = \"French\",\r\n Unknown = \"Unknown\"\r\n }\r\n export enum AccountType {\r\n Cash = \"Cash\",\r\n Margin = \"Margin\"\r\n }\r\n export enum AccountPurposeDetail\r\n {\r\n UNKNOWN = \"UNKNOWN\",\r\n RSP = \"RSP\",\r\n RSP_SPOUSAL = \"RSP_SPOUSAL\",\r\n RSP_GROUP = \"RSP_GROUP\",\r\n RSP_GROUP_SPOUSAL = \"RSP_GROUP_SPOUSAL\",\r\n LIRA = \"LIRA\",\r\n RLSP = \"RLSP\",\r\n RIF = \"RIF\",\r\n RIF_SPOUSAL = \"RIF_SPOUSAL\",\r\n LRIF = \"LRIF\",\r\n LIF = \"LIF\",\r\n RLIF = \"RLIF\",\r\n PRIF = \"PRIF\",\r\n RESP_INDIVIDUAL = \"RESP_INDIVIDUAL\",\r\n RESP_FAMILY = \"RESP_FAMILY\",\r\n TFSA = \"TFSA\",\r\n TFSA_GROUP = \"TFSA_GROUP\",\r\n TFSA_RESTRICTED_GROUP = \"TFSA_RESTRICTED_GROUP\",\r\n RESP_JOINT = \"RESP_JOINT\",\r\n RESP_JOINT_FAMILY = \"RESP_JOINT_FAMILY\",\r\n INVESTMENT = \"INVESTMENT\",\r\n COLLATERAL_PLEDGE = \"COLLATERAL_PLEDGE\",\r\n INVESTMENT_3RD_APP = \"INVESTMENT_3RD_APP\",\r\n INVESTMENT_GROUP = \"INVESTMENT_GROUP\",\r\n COLLATERAL_PLEDGE_JOINT = \"COLLATERAL_PLEDGE_JOINT\",\r\n COLLATERAL_PLEDGE_3RD_APP = \"COLLATERAL_PLEDGE_3RD_APP\",\r\n INFORMAL_TRUST_JOINT = \"INFORMAL_TRUST_JOINT\",\r\n INFORMAL_TRUST = \"INFORMAL_TRUST\",\r\n FORMAL_TRUST = \"FORMAL_TRUST\",\r\n INVESTMENT_CONTROL = \"INVESTMENT_CONTROL\",\r\n INVESTMENT_JOINT = \"INVESTMENT_JOINT\"\r\n }\r\n export enum PhysicalMail\r\n {\r\n NO = \"NO\",\r\n YESALL = \"YESALL\",\r\n YESPROXY = \"YESPROXY\",\r\n UNKNOWN = \"UNKNOWN\"\r\n }\r\n export enum PensionLegislation\r\n {\r\n None = \"None\",\r\n FEDERAL = \"FEDERAL\",\r\n AB = \"AB\",\r\n BC = \"BC\",\r\n MB = \"MB\",\r\n NB = \"NB\",\r\n NL = \"NL\",\r\n NT = \"NT\",\r\n NS = \"NS\",\r\n NU = \"NU\",\r\n ON = \"ON\",\r\n PE = \"PE\",\r\n QC = \"QC\",\r\n SK = \"SK\",\r\n YT = \"YT\",\r\n FN = \"FN\",\r\n NO = \"NO\",\r\n PQ = \"PQ\",\r\n FD = \"FD\"\r\n }\r\n export enum FormID\r\n {\r\n Unknown = \"Unknown\",\r\n CLIENT_PROFILE = \"CLIENT_PROFILE\",\r\n RRSP = \"RRSP\",\r\n COI_OAA = \"COI_OAA\",\r\n DT_RSP = \"DT_RSP\",\r\n DT_RIF = \"DT_RIF\",\r\n OPTIONS_TR_MARGIN = \"OPTIONS_TR_MARGIN\",\r\n MARGIN = \"MARGIN\",\r\n PERS_GUAR = \"PERS_GUAR\",\r\n PERS_GUAR_QC = \"PERS_GUAR_QC\",\r\n CORP_RES_MARGIN = \"CORP_RES_MARGIN\",\r\n NAKED_PUT = \"NAKED_PUT\",\r\n NAKED_PUT_QC = \"NAKED_PUT_QC\",\r\n CORP_RES_OPTION = \"CORP_RES_OPTION\",\r\n TA = \"TA\",\r\n TA_SUPPL = \"TA_SUPPL\",\r\n TFSA = \"TFSA\",\r\n W8BEN = \"W8BEN\",\r\n W9 = \"W9\",\r\n RC520 = \"RC520\",\r\n INV_SOLE = \"INV_SOLE\",\r\n INV_JOINT = \"INV_JOINT\",\r\n INV_JOINT_3_4 = \"INV_JOINT_3_4\",\r\n COAPP_PROFILE = \"COAPP_PROFILE\",\r\n THIRD_PARTY_DET = \"THIRD_PARTY_DET\",\r\n CO_MINGLING = \"CO_MINGLING\",\r\n RRIF = \"RRIF\",\r\n LIRA = \"LIRA\",\r\n RESP = \"RESP\",\r\n CESG = \"CESG\",\r\n CA_LEARN_BOND = \"CA_LEARN_BOND\",\r\n ANNEX_B_CG = \"ANNEX_B_CG\",\r\n LRIF = \"LRIF\",\r\n LRIF_ADD = \"LRIF_ADD\",\r\n SP_CONSENT = \"SP_CONSENT\",\r\n LIF = \"LIF\",\r\n PRIF = \"PRIF\",\r\n RLIF = \"RLIF\",\r\n RLSP = \"RLSP\",\r\n RESP_FAMILY = \"RESP_FAMILY\",\r\n SP_CONSENT_MB = \"SP_CONSENT_MB\",\r\n SP_CONSENT_SK = \"SP_CONSENT_SK\",\r\n LIA_LIF_AB = \"LIA_LIF_AB\",\r\n LIA_LIF_FED = \"LIA_LIF_FED\",\r\n LIA_LIF_MB = \"LIA_LIF_MB\",\r\n LIA_LIF_NB = \"LIA_LIF_NB\",\r\n LIA_LIF_NL = \"LIA_LIF_NL\",\r\n LIA_LIF_NS = \"LIA_LIF_NS\",\r\n LIA_LIF_ON = \"LIA_LIF_ON\",\r\n LIA_LIF_QC = \"LIA_LIF_QC\",\r\n LIA_LIRA_AB = \"LIA_LIRA_AB\",\r\n LIA_LIRA_BC = \"LIA_LIRA_BC\",\r\n LIA_LIRA_MB = \"LIA_LIRA_MB\",\r\n LIA_LIRA_NB = \"LIA_LIRA_NB\",\r\n LIA_LIRA_NL = \"LIA_LIRA_NL\",\r\n LIA_LIRA_NS = \"LIA_LIRA_NS\",\r\n LIA_LIRA_ON = \"LIA_LIRA_ON\",\r\n LIA_LIRA_QC = \"LIA_LIRA_QC\",\r\n LIA_LIRA_SK = \"LIA_LIRA_SK\",\r\n LIA_LRIF_NL = \"LIA_LRIF_NL\",\r\n LIA_LRSP_FED = \"LIA_LRSP_FED\",\r\n LIA_PRIF_MB = \"LIA_PRIF_MB\",\r\n LIA_PRIF_SK = \"LIA_PRIF_SK\",\r\n LIA_RIF_BC = \"LIA_RIF_BC\",\r\n LIA_RLIF_FED = \"LIA_RLIF_FED\",\r\n LIA_RLSP_FED = \"LIA_RLSP_FED\",\r\n SP_CONSENT_AB_FORM10 = \"SP_CONSENT_AB_FORM10\",\r\n SP_CONSENT_AB_FORM15 = \"SP_CONSENT_AB_FORM15\",\r\n SP_CONSENT_ON = \"SP_CONSENT_ON\",\r\n SP_CONSENT_BC = \"SP_CONSENT_BC\",\r\n SP_CONSENT_NL = \"SP_CONSENT_NL\",\r\n SP_CONSENT_LIF_MB = \"SP_CONSENT_LIF_MB\",\r\n SP_CONSENT_NS = \"SP_CONSENT_NS\",\r\n LIA_LIF_BC = \"LIA_LIF_BC\",\r\n EDELIVERY_CONSENT = \"EDELIVERY_CONSENT\",\r\n TRUST_AGRMT_TFSA = \"TRUST_AGRMT_TFSA\",\r\n PLAN_TEXT_RESP_FAMILY = \"PLAN_TEXT_RESP_FAMILY\",\r\n INFORMAL_TRUST = \"INFORMAL_TRUST\"\r\n }\r\n export enum FormType\r\n {\r\n DIGITAL = \"DIGITAL\",\r\n DIGITAL2MAIL = \"DIGITAL2MAIL\",\r\n PAPER = \"PAPER\",\r\n STATIC = \"STATIC\"\r\n }\r\n export enum FormStatus {\r\n INCOMPLETE = \"incomplete\",\r\n RECEIVED = \"received\",\r\n ACTION_REQUIRED = \"action_required\",\r\n APPROVED = \"approved\",\r\n }; \r\n}","import moment, { Moment } from 'moment';\r\nimport { SecurityCategory, CurrencyCode, SubmittedStatus, OrderStatus, ExchangeAgreementEnum, HSBCStatus, Repapering as RepaperingEnum } from './enums';\r\n\r\nexport type RBCDict = {\r\n '7AServer': string,\r\n DSOL: string,\r\n HOME: string,\r\n IB: string,\r\n LOGICALSESSID: string,\r\n NETA: string,\r\n RBCAPI: string,\r\n SGID: string,\r\n WM: string,\r\n language: string,\r\n rbPath: string,\r\n refId: string,\r\n requestTime: string,\r\n rollover: string,\r\n showlevel2: string,\r\n siteNavCss: string,\r\n siteNavJs: string,\r\n system: string,\r\n titleFooter: string,\r\n titleHeader: string,\r\n titleMenu: string,\r\n xbrand: string,\r\n xtid: string\r\n};\r\n\r\nexport type Env = {\r\n RBA_DOMAIN: string,\r\n RBA_7ASERVER: string,\r\n RBA_URL: string,\r\n PUBLIC_URL: string,\r\n MOD_URL: string,\r\n API_URL: string,\r\n WEBUI_URL: string,\r\n ENVIRONMENT: string,\r\n ENABLE_ORDERSTATUS: boolean,\r\n ENABLE_RRIF: boolean,\r\n ENABLE_RRIFEDIT: boolean,\r\n RBA_SESSION_URL: string,\r\n IS_ISAM: string,\r\n ISAM_URL: string,\r\n ENABLE_MF_PRACTICE: boolean,\r\n ENABLE_EQ_MODIFY: boolean,\r\n ENABLE_EQ_CANCEL: boolean,\r\n MOD_TOKEN_REFETCH_INTERVAL: number,\r\n ENABLE_EQ_ETH: boolean,\r\n ENABLE_SYMBOLDETAILS_CHART: boolean,\r\n ENABLE_ISTRADABLE_FLAG_CHECK: boolean\r\n};\r\n\r\nexport const defaultFeatures = {\r\n whatsnewalert: false,\r\n whatsnewversion: 0,\r\n // mindeventsvariant: 1\r\n emeraldphase: 0,\r\n onboarding: false,\r\n tours: false,\r\n globaltrading: false,\r\n globaltrading_hk: false,\r\n globaltrading_fr: false,\r\n globaltrading_de: false,\r\n globaltrading_gb: false,\r\n tranches: undefined,\r\n optionswebcomponent: false,\r\n gtmconsentscript: false\r\n};\r\nexport type Features = typeof defaultFeatures;\r\n\r\nexport type NavigationOptions = {\r\n ReactEnabled: boolean\r\n};\r\n\r\nexport type ServerDate = {\r\n serverDate: string\r\n};\r\n\r\nexport type Account = {\r\n accountNumber: string,\r\n accountToken: string,\r\n accountName: string,\r\n accountCurrency: string,\r\n activeTrader: boolean,\r\n nickName: string,\r\n class: string,\r\n type: string,\r\n displayOrder: number,\r\n isSticky: boolean,\r\n isAllPractice: boolean,\r\n isAnyPractice: boolean,\r\n purpose: string,\r\n accountRelation: string,\r\n cashBalance: number,\r\n isVisible: boolean,\r\n supportedMarket: string[]\r\n};\r\n\r\nexport type Tradecount = {\r\n tradeCounts: {\r\n [key: string]: number\r\n },\r\n asOfDate: string\r\n};\r\n\r\nexport type SummaryAccountModel = {\r\n account: Account,\r\n balances: Array<{\r\n currency: string\r\n total: number\r\n }>,\r\n tradeCount: number,\r\n combinedTotalCad: number,\r\n combinedTotalUsd: number,\r\n exchangeRateUsd: number\r\n};\r\n\r\nexport type BalanceSummary = {\r\n asOfDate: Moment,\r\n balanceSummaryModels: Array,\r\n combineTotalOfAllAccountsinCad: number,\r\n combineTotalOfAllAccountsinUsd: number\r\n};\r\n\r\nexport type SubTransaction = {\r\n orderDate: Moment,\r\n referenceId: string,\r\n status: SubmittedStatus,\r\n transferType: string,\r\n transferAmount: number,\r\n transferCurrency: string,\r\n toAccountNumber: string,\r\n toAccountCurrency: string,\r\n fromAccountNumber: string,\r\n fromAccountCurrency: string\r\n};\r\n\r\nexport type ProcTransaction = {\r\n tradeDate: Moment,\r\n processingDate: Moment,\r\n settlementDate: Moment,\r\n activityType: string,\r\n symbol: string,\r\n accountNumber: string,\r\n amount: number,\r\n currency: string,\r\n companyName: string,\r\n quantity: number,\r\n unitPrice: number,\r\n nickName: string,\r\n accountName: string,\r\n accountClass: string,\r\n description: string,\r\n entryCodeWithDescription: string,\r\n market: string,\r\n adpSecurityNumber: string\r\n};\r\n\r\nexport type Security = {\r\n descriptionEnglish: string,\r\n descriptionFrench: string,\r\n callOrPut?: 'Call' | 'Put',\r\n isOptionExpired?: boolean,\r\n securityId: {\r\n symbol: string,\r\n market: string,\r\n securityCategory: SecurityCategory\r\n }\r\n};\r\n\r\nexport type Order = {\r\n orderId: string,\r\n action: string,\r\n status: OrderStatus,\r\n amount: number,\r\n quantity: number,\r\n filledQuantity: number,\r\n totalQuantity: number,\r\n orderType: string,\r\n transactionType: string,\r\n orderDate: Moment,\r\n lastChangeDate: Moment,\r\n goodThrough: Moment,\r\n duration: string,\r\n fillPrice: number,\r\n settlementCurrency: CurrencyCode,\r\n stopPrice: number,\r\n limitPrice: number,\r\n price: number,\r\n payCommissionWithPoints: boolean,\r\n specialInstruction: string,\r\n rejectCode: string,\r\n canEdit: boolean,\r\n canModify: boolean,\r\n canCancel: boolean,\r\n security: Security,\r\n switchSecurity?: Security,\r\n partialFills?: Array<{\r\n date: string | Moment,\r\n quantity: number,\r\n status: OrderStatus,\r\n fillPrice: number\r\n }>\r\n};\r\n\r\nexport type OrderDetails = {\r\n asOfDate: Moment,\r\n orderDetailsModels: Array,\r\n account: Account & {\r\n tokens: {\r\n cad: string,\r\n usd: string\r\n }\r\n }\r\n};\r\n\r\nexport type Quote = {\r\n name: string,\r\n market: string,\r\n symbol: string,\r\n lasttrade: Moment,\r\n lastprice: number,\r\n volume: number,\r\n changedollars: number,\r\n changepercent: number,\r\n currency: string,\r\n exchangename: string,\r\n exchangecode: string,\r\n previousCloseDate: Moment,\r\n isHoliday: boolean,\r\n askprice: number,\r\n asksize: number,\r\n bidprice: number,\r\n bidsize: number,\r\n isRealtime: boolean,\r\n isTradable: boolean,\r\n securityCategory: string,\r\n securityType: string,\r\n isoption: boolean,\r\n assetclass: string,\r\n issuetype: string,\r\n asOfDate: Moment,\r\n markethoursflag: 'InSession'| 'Before'|'After',\r\n symbolClass: string,\r\n extendedHoursQuote: {\r\n date: Date,\r\n price: number,\r\n volume: number,\r\n askDate: Date,\r\n askPrice: number,\r\n askSize: number,\r\n bidDate: Date,\r\n bidPrice: number,\r\n bidSize: number,\r\n todaysChange: number,\r\n todaysChangePercent: number,\r\n isRealtime: boolean,\r\n marketStatus: string,\r\n dataSource: string\r\n },\r\n option: {\r\n symbol: string,\r\n lastprice: number,\r\n changedollars: number,\r\n changepercent: number,\r\n askprice: number,\r\n asksize: number,\r\n bidprice: number,\r\n bidsize: number,\r\n date: string,\r\n strikeprice: number,\r\n callput: 'Call' | 'Put',\r\n isRealtime: boolean\r\n },\r\n mutualFund: {\r\n nav: string,\r\n yield: number,\r\n fiftyTwoWeekHigh: number,\r\n fiftyTwoWeekLow: number,\r\n minInitial: number,\r\n minSubsequent: number,\r\n load: string,\r\n rspEligible: string,\r\n rspMinInitial: number,\r\n rspMinSubsequent: number,\r\n totalAssets: number,\r\n category: string,\r\n merDate: string | Moment,\r\n mer: number,\r\n managementFee: number,\r\n turnoverRatio: number,\r\n sellOnly: boolean,\r\n closedToNewInvestors: boolean\r\n },\r\n optionExpiration?: boolean,\r\n boardLotSize?: number,\r\n isGemSecurity?:boolean,\r\n};\r\n\r\nexport type CaseDetails = {\r\n caseID: string,\r\n createdDate: string,\r\n status: 'Received' | 'Pending' | 'Processed' | 'Rejected' | 'Unknown' | 'Error'\r\n};\r\n\r\nexport type Rrif = {\r\n planYear: number,\r\n marketValueDate: Moment,\r\n marketValue: number,\r\n minAnnualPymnt: number,\r\n maxAnnualPymnt: number,\r\n eligibleAnnualPymnt: number,\r\n requestedAnnualPymnt: number,\r\n accntLegislation: string,\r\n federalTaxPerc: number,\r\n federalTaxAmt: number,\r\n provincialTaxPerc: number,\r\n provincialTaxAmt: number,\r\n nonResTaxPerc: number,\r\n nonResTaxAmt: number,\r\n paymentFrequency: string,\r\n altPaymentFrequency: Array,\r\n firstPaymentDate: Moment,\r\n accountDetails: string,\r\n methodOfPayment: string,\r\n accountDetails2: string,\r\n methodOfPayment2: string,\r\n ytdPaymentGrossAmt: number,\r\n ytdExcessAmt: number,\r\n ytdFederalTaxAmt: number,\r\n ytdProvincialTaxAmt: number,\r\n ytdNonResTaxAmt: number,\r\n ytdPaymentNetAmt: number,\r\n displayInfoMsg: boolean,\r\n accountPurpose: string,\r\n canEdit: boolean,\r\n nickName: string,\r\n accountName: string,\r\n accountNumber: string,\r\n grossNetIndicator: 'G' | 'N',\r\n nextPaymentAmt: number,\r\n caseDetails?: CaseDetails,\r\n recentlySubmitted: boolean,\r\n isPaymentCompleted: boolean,\r\n enableElectedAnnualAmt: boolean\r\n};\r\n\r\nexport type Address = {\r\n streetNoAndName: string,\r\n aptSuite: string,\r\n city: string,\r\n province: string,\r\n postalCode: string,\r\n country: string\r\n};\r\n\r\nexport type AddressDetails = Address & { suite: string, streetNoOrName: string }\r\n\r\nexport type FormProfile = {\r\n FormTemplate: string,\r\n ProfileRequest: Profile\r\n};\r\n\r\nexport type Profile = {\r\n firstName: string,\r\n lastName: string,\r\n middleInitial: string,\r\n dateOfBirth: Moment,\r\n maritalStatusCD: number & string,\r\n maritalStatus: string,\r\n isMarriedOrCommonLaw: boolean & string,\r\n primaryPhone: string,\r\n secondaryPhone: string,\r\n busPhone: string,\r\n ext: string,\r\n attorneyPrimaryPhone: string,\r\n attorneySecondaryPhone: string,\r\n attorneySecondaryPhoneExt: string,\r\n email: string,\r\n confirmEmail: string,\r\n homeAddress: Address,\r\n isMailingAddressSameAsHome: boolean & string,\r\n mailingAddress: Address,\r\n employerAddress: Address,\r\n attorneyHomeAddress: Address,\r\n coApplicantFirstName: string,\r\n coApplicantInitial: string,\r\n coApplicantLastName: string,\r\n attorneyFirstName: string,\r\n attorneyInitial: string,\r\n attorneyLastName: string,\r\n attorneyDateOfBirth: Moment,\r\n attorneyIsMarriedOrCommonLaw: boolean & string,\r\n attorneyRelationship: string,\r\n signingOfficerRelationship: string,\r\n isFamilyMember: boolean & string,\r\n specifyFamilyMember: string,\r\n specifyRelationship: string,\r\n isChargingFee: boolean & string,\r\n hasFinancialInterest: boolean & string,\r\n isLicensedToProvideAdvice: boolean & string,\r\n generalPowerAttorney: boolean & string,\r\n beneficialOwnerCountry: string,\r\n clientAuth: boolean & string,\r\n attorneyAuth: boolean & string,\r\n isRBCClient: boolean & string,\r\n financialInstitution: string,\r\n rbcClientCard: number & string,\r\n transitNumber: number & string,\r\n hasTradingAuthority: boolean & string,\r\n tradingAuthorityAccount: number & string,\r\n bankAccountNumber: number & string,\r\n spouseFirstName: string,\r\n spouseInitial: string,\r\n spouseLastName: string,\r\n annualIncome: string,\r\n annualIncomeCD: number & string,\r\n netLiquidAssets: number & string,\r\n netFixedAssets: number & string,\r\n totalAssets: number & string,\r\n occupation: string,\r\n occupationCD: number,\r\n employmentStatusCD: number & string,\r\n employmentStatus: string,\r\n spouseEmploymentStatusCD: number & string,\r\n spouseEmploymentStatus: string,\r\n attorneyEmploymentStatusCD: number & string,\r\n attorneyEmploymentStatus: string,\r\n attorneyOccupation: string,\r\n attorneyOccupationCD: number & string,\r\n attorneyOccupationOtherDesc: string,\r\n occupationOtherDesc: string,\r\n businessType: string,\r\n businessTypeCD: number & string,\r\n businessTypeOtherDesc: string,\r\n employerName: string,\r\n attorneyEmployerName: string,\r\n isHavingTAAccount: boolean & string,\r\n isDueForKYC: boolean & string,\r\n spouseOccupation: string,\r\n spouseOccupationCD: number & string,\r\n spouseOccupationOtherDesc: string,\r\n spouseBusinessType: string,\r\n spouseBusinessTypeCD: number & string,\r\n spouseBusinessTypeOtherDesc: string,\r\n spouseEmployerName: string,\r\n transit: string,\r\n accountNo: string,\r\n isCanadianCitizen: boolean & string,\r\n sin: string,\r\n isUSCitizen: boolean & string,\r\n ssn: string,\r\n proTraderStatus: boolean & string,\r\n memberFirmName: string,\r\n applicantInsiderIndicator: boolean & string,\r\n applicantInsiderText: string,\r\n spouseInsiderIndicator: 'yes' | 'no' | 'na',\r\n spouseInsiderText: string,\r\n applicantControlIndicator: boolean & string,\r\n applicantControlText: string,\r\n caseDetails: CaseDetails,\r\n hasActiveEligibleAccount: boolean & string,\r\n hasCanadianAddress: boolean & string,\r\n isValidSin: boolean & string,\r\n eligibleAccounts: Array,\r\n accountSelected: string,\r\n ackOaa: boolean & string,\r\n ackConsent: boolean & string,\r\n ackOma: boolean & string,\r\n ackNoChange: boolean & string,\r\n ackBorrow: boolean & string,\r\n ackInfoChange: boolean & string,\r\n hasPastTrading: boolean & string,\r\n hasPlanTrading: boolean & string,\r\n isConvertAccount: boolean,\r\n IsAddressUpdated: boolean,\r\n IsSINUpdated: boolean,\r\n IsFinancialUpdated: boolean,\r\n IsEmploymentUpdated: boolean,\r\n IsThirdPartyIndividual: boolean & string,\r\n thirdPartyFirstName: string,\r\n thirdPartyInitial: string,\r\n thirdPartyLastName:string,\r\n thirdPartyDateOfBirth: Moment,\r\n thirdPartyRelationship: string,\r\n thirdPartyAddress: Address,\r\n thirdPartyPhone: string,\r\n thirdPartyPhoneExt: string,\r\n thirdPartyOccupation: string,\r\n thirdPartyBusinessName: string,\r\n thirdPartyPlaceOfIncorporation: string,\r\n thirdPartyIncorporationNumber: string,\r\n tpAcknowledgement: boolean & string,\r\n thirdPartyEmploymentStatus: string,\r\n thirdPartyEmploymentStatusCD: number & string,\r\n thirdPartyOccupationCD: number & string,\r\n thirdPartyEmployerName: string,\r\n formTemplate: string,\r\n isNameChange: boolean & string,\r\n isAddressChange: boolean & string,\r\n};\r\n\r\nexport type ProfileClient = {\r\n firstName: string,\r\n lastName: string,\r\n middleInitial: string,\r\n linkedServices: LinkedService,\r\n royalCircle: boolean,\r\n hashId: string,\r\n hsbcStatusId: HSBCStatus,\r\n activeTrader: string,\r\n isHVC: boolean\r\n}\r\n\r\nexport type TrancheMetadata = {\r\n trancheID: string,\r\n startDate: Moment | string,\r\n isSubmitted: boolean,\r\n currentTime: Moment | string\r\n}\r\n\r\nexport type Documentdata = {\r\n id: string,\r\n code: string,\r\n nameEn: string,\r\n nameFr: string\r\n}\r\n\r\nexport type DocumentRequest = {\r\n id: string,\r\n documents: Documentdata[]\r\n}\r\n\r\nexport type LinkedService = {\r\n investing?: boolean,\r\n banking?: boolean,\r\n investEase?: boolean,\r\n ds?: boolean,\r\n wm?: boolean\r\n phn?: boolean,\r\n et?: boolean\r\n}\r\n\r\nexport type LinkedServiceMapping = {\r\n [Item in keyof LinkedService]: [string, string?, string?];\r\n} & {\r\n gam: [string, string?, string?];\r\n};\r\n\r\nexport type Option = {\r\n code: string,\r\n description: string\r\n};\r\n\r\nexport type eligibleAccountsDetails = {\r\n accountNumber: string,\r\n accountType: string,\r\n prodCat: string,\r\n caseDetails: CaseDetails\r\n}\r\n\r\nexport type AvailableFunds = {\r\n timestamp: string | Moment,\r\n accountNumber: string,\r\n usd: number,\r\n cad: number,\r\n type: string\r\n};\r\n\r\nexport type Holdings = {\r\n account: Account,\r\n positions: Array<{\r\n currency: string,\r\n adpCode: string,\r\n symbol: string,\r\n underlyingSymbol: string,\r\n market: string,\r\n description: string,\r\n descriptionFrench: string,\r\n adpSecurityNumber: string,\r\n quantity: number,\r\n previousDayQuantity: number,\r\n marketValue: number,\r\n marketValueInCAD: number,\r\n bookValue: number,\r\n bookValueInCAD: number,\r\n investmentCategory: string,\r\n errorSupCode: number,\r\n quotePreviousPrice: number,\r\n changeInDollars: number,\r\n changeInPercent: number,\r\n loadType: string,\r\n rspEligibility: string,\r\n automaticInvestmentPlan: string,\r\n annualDividendAmount: number,\r\n openInterest: number,\r\n couponRate: number,\r\n maturityDate: Date,\r\n divExDate: Date,\r\n expirationDate: Date,\r\n isDripEligible: boolean,\r\n securitySize: number,\r\n settledQuantity: number,\r\n memoHolderCode1: string,\r\n memoHolderCode2: string,\r\n memoHolderCode3: string,\r\n securityToken: string,\r\n nonNegotiable: boolean,\r\n isIntraday: boolean,\r\n isIntradayQuoteAvailable: boolean,\r\n isRealTimeQuotable: boolean,\r\n valuationDate: null,\r\n lastPrice: number,\r\n exchangeRateUsd: number,\r\n realTime: boolean,\r\n averageCost: number,\r\n unrealizedGainLoss: number,\r\n unrealizedGainLossPercent: number\r\n }>,\r\n asOfDate: string | Moment\r\n};\r\n\r\nexport type TradeCommission = {\r\n securityCategory: string,\r\n actionType: string,\r\n amountType: string,\r\n amount: number,\r\n market: string,\r\n symbol: string,\r\n accountToken: string,\r\n dollarsIncludingCommission: number,\r\n dollarsExcludingCommission: number,\r\n commission: number,\r\n estimated: boolean,\r\n fundCurrency: string,\r\n estimatedCost: number,\r\n quantity: number,\r\n stockActionType: string,\r\n optionActionType: string,\r\n priceType: string,\r\n limitPriceValue: number,\r\n stopPriceValue: number\r\n};\r\n\r\nexport type TradeOrder = {\r\n state: string,\r\n status: string,\r\n transactionId: string,\r\n orderId: string,\r\n currentDateTime: string,\r\n orderDateTime: string,\r\n currency: string,\r\n symbolDescription?: string,\r\n symbolDescriptionFrench?: string,\r\n fromSymbolDescription?: string,\r\n fromSymbolDescriptionFrench?: string,\r\n toSymbolDescription?: string,\r\n toSymbolDescriptionFrench?: string,\r\n load: 'FrontLoad' | 'BackLoad' | 'NoLoad' | 'NotApplicable',\r\n minimumInitial: number,\r\n minimumSubsequent: number,\r\n market: string,\r\n estimatedCost: number,\r\n commission: number,\r\n dollarsIncludingCommission: number,\r\n dollarsExcludingCommission: number,\r\n estimated: false,\r\n isFundFactDelivered: boolean,\r\n notes1: string,\r\n notes1French: string,\r\n notes2: string,\r\n notes3: string,\r\n toSymbolNotes1?: string,\r\n toSymbolNotes1French?: string\r\n request: {\r\n currentOrder: {\r\n actionType: string,\r\n quantity: number,\r\n amount: number,\r\n amountType: string,\r\n symbol: string,\r\n fromAccount: string,\r\n selectedAccountCurrency: string,\r\n contactNumber: string,\r\n duration: string,\r\n selectedSwitchSecuritySymbol?: string\r\n },\r\n transactionId: string,\r\n state: string,\r\n channel: string,\r\n device: string\r\n },\r\n fundFactDetails: {\r\n fundFactURL: string,\r\n fundPreviewURL: string,\r\n fundFactDocId: string,\r\n isFundFactDelivered: false,\r\n isFundFactAcknowledged: false\r\n },\r\n existingOrder: {\r\n orderId: string,\r\n orderDate: string,\r\n referenceKey: string,\r\n status: OrderStatus,\r\n order: TradeOrder['request']['currentOrder']\r\n },\r\n hasWarning: false,\r\n hasError: true,\r\n validationResult: Array<{\r\n id: number,\r\n severity: string,\r\n key: string,\r\n errorMessage: string,\r\n tag: string,\r\n description: string,\r\n priority: number\r\n }>,\r\n errors: Array<{\r\n id: string,\r\n message: string,\r\n translations: {\r\n Online: {\r\n en: string,\r\n fr: string\r\n }, Mobile: {\r\n en: string,\r\n fr: string\r\n }\r\n } | null\r\n }>,\r\n translations?: {\r\n Online?: {\r\n en: string,\r\n fr: string\r\n }, Mobile?: {\r\n en: string,\r\n fr: string\r\n }\r\n } | null\r\n};\r\n\r\nexport type EquityOrder = TradeOrder & {\r\n estimatedPoints: number,\r\n estimatedCost: number,\r\n request: {\r\n currentOrder: {\r\n quantity: number,\r\n priceType: string,\r\n stopPriceValue: number,\r\n market: string,\r\n specialInstruction: string,\r\n isPayWithPoints: boolean,\r\n pointsAccount: string,\r\n goodThroughType: string,\r\n goodThroughDate: Date,\r\n limitPriceValue: number\r\n }\r\n },\r\n symbolDescription: string\r\n};\r\n\r\ntype TradeFilterBase = {\r\n isEnabledForMarketPrice: boolean,\r\n isEnabledForStopPrice: boolean,\r\n isEnabledForStopLimitPrice: boolean,\r\n isEnabledForAllOrNoneSpecialInstruction: boolean,\r\n isEnabledForGoodThrough: boolean,\r\n isEnabled: boolean,\r\n isEnabledForCancel: boolean\r\n};\r\n\r\nexport type TradeFilters = {\r\n equityFilter: {\r\n equityFilters: Record<'CA'|'US', TradeFilterBase & {\r\n isEnabledForBuy: boolean,\r\n isEnabledForSell: boolean,\r\n isEnabledForShortSell: boolean,\r\n isEnabledForCoverShort: boolean,\r\n }>,\r\n },\r\n optionFilter: {\r\n optionFilters: Record<'CA'|'US', TradeFilterBase & {\r\n isEnabledForBuyToOpen: boolean,\r\n isEnabledForSellToClose: boolean,\r\n isEnabledForBuyToClose: boolean,\r\n isEnabledForSellToOpen: boolean,\r\n }>,\r\n },\r\n mutualFundFilters: {\r\n isMFOrderEntryEnabled: boolean,\r\n isMFBuyEnabled: boolean,\r\n isMFSaleEnabled: boolean,\r\n isMFSwitchEnabled: boolean\r\n }\r\n};\r\n\r\nexport type SwitchSecurityList = {\r\n securityList: Array<{\r\n symbol: string,\r\n descriptionEnglish: string,\r\n descriptionFrench: string,\r\n market: string\r\n }>\r\n};\r\n\r\nexport type PredictiveSearchList = {\r\n security: {\r\n country: string,\r\n securityCategory: string,\r\n securityType: string,\r\n issueType: string,\r\n symbol: string,\r\n name: string,\r\n exchangeDisplay: string,\r\n exchangeName: string\r\n },\r\n quote: Quote,\r\n trendChart: {\r\n url: string,\r\n isValid: boolean,\r\n chartDimensions: {\r\n x: string,\r\n y: string,\r\n width: string,\r\n height: string\r\n }\r\n },\r\n symbolClass: string\r\n};\r\n\r\nexport type RecentSymbolList = PredictiveSearchList & {\r\n insertDateTime: Date\r\n};\r\n\r\nexport type GoodThroughDates = {\r\n CA: Array,\r\n US: Array\r\n};\r\n\r\nexport type RewardPoints = {\r\n accountId: string,\r\n rewardAccountId: string,\r\n productNameEN: string,\r\n productNameFR: string,\r\n pointsBalance: number,\r\n conversionRate: number\r\n};\r\n\r\nexport type LevelTwo = {\r\n ask: Array<{\r\n marketMaker: string,\r\n price: number,\r\n size: number,\r\n time: string\r\n }>,\r\n bid: Array<{\r\n marketMaker: string,\r\n price: number,\r\n size: number,\r\n time: string\r\n }>\r\n};\r\n\r\nexport type StockOrder = {\r\n items: Array<{\r\n fillPrice: number,\r\n rejectCode: string,\r\n orderDate: Date,\r\n orderId: string,\r\n descriptionEnglish: string,\r\n descriptionFrench: string,\r\n status: string,\r\n orderDetails: {\r\n actionType: string,\r\n quantity: number,\r\n priceType: string,\r\n stopPriceValue: number,\r\n market: string,\r\n specialInstruction: string,\r\n isPayWithPoints: boolean,\r\n pointsAccount: number,\r\n goodThroughType: string,\r\n goodThroughDate: string,\r\n limitPriceValue: number\r\n symbol: string,\r\n fromAccount: string,\r\n selectedAccountCurrency: string,\r\n contactNumber: string,\r\n estimatedVal: number,\r\n duration: string\r\n }\r\n }>\r\n};\r\n\r\nexport type Overview = {\r\n security:{\r\n country: string,\r\n issueType: string,\r\n symbol: string,\r\n name: string,\r\n exchangeDisplay: string,\r\n exchangeName: string\r\n },\r\n quoteDetails:{\r\n boardLotSize: number;\r\n currency: string,\r\n priceLast: number,\r\n priceLastClose: number,\r\n priceChange: number,\r\n priceChangePercent: number,\r\n priceAsk: number,\r\n priceBid: number,\r\n sizeAsk: number,\r\n sizeBid: number,\r\n priceOpen: number,\r\n volume: number,\r\n volumeAverage: number,\r\n volumePaceTick: number,\r\n priceFiftyTwoWeekHigh: number,\r\n priceFiftyTwoWeekLow: number,\r\n priceOneDayHigh: number,\r\n priceOneDayLow: number,\r\n marketCap: number,\r\n peRatio: number,\r\n priceDividendLast: number,\r\n dripEligible: boolean,\r\n dividendYieldPercent: number,\r\n dividendFrequencyName: string,\r\n dividendCurrency: string,\r\n dividendFrequency: number,\r\n dateDividendEx: Date,\r\n dateDividendNext: Date,\r\n dateEarningsNext: Date,\r\n dateLastClose: Date,\r\n datePriceLast: Date,\r\n totalNetAssets: number,\r\n category: string,\r\n inSession: number,\r\n realTime: number,\r\n netAssetValue: number,\r\n navAsOfDate: Date,\r\n navFiftyTwoWeekHigh: number,\r\n navFiftyTwoWeekLow: number,\r\n totalAssets: number,\r\n load: string,\r\n inception: Date,\r\n minInitial: number,\r\n minSubsequent: number,\r\n rspEligible: boolean,\r\n rspMinInitial: number,\r\n rspMinSubsequent: number\r\n },\r\n feesAndExpense:{\r\n smartText: string,\r\n mer: number,\r\n merDate: Date,\r\n merType: string,\r\n managementFee: number,\r\n turnoverRatio: number\r\n },\r\n companyInfo:{\r\n industryName: string,\r\n sectorName: string\r\n }\r\n};\r\n\r\nexport type ClientDetails = {\r\n level2Quotes: boolean,\r\n lineOfBusiness: string,\r\n activeTrader: boolean,\r\n userTier: string,\r\n timeStamp: string\r\n};\r\n\r\nexport type OptionsExpirations = {\r\n underlyingSecurity: {\r\n country: string,\r\n securityCategory: string,\r\n securityType: string,\r\n symbol: string,\r\n name: string,\r\n exchangeDisplay: string,\r\n exchangeName: string,\r\n exchangeCode: string\r\n },\r\n optionExpirations: Array<{\r\n adjusted: boolean,\r\n dateExpiration: Date,\r\n period: string,\r\n type: string\r\n }>\r\n};\r\n\r\nexport type ExtTradingHoursUSCA = {\r\n US:{\r\n PreMarket:\r\n Array<{\r\n exchangeCode : {\r\n isEnabled: string,\r\n openTime: number,\r\n closeTime: number\r\n }\r\n }>,\r\n PostMarket: Array<{\r\n exchangeCode: {\r\n isEnabled: string,\r\n openTime: number,\r\n closeTime: number\r\n }\r\n }>,\r\n },\r\n CA:{\r\n PostMarket:{\r\n ALL:{\r\n isEnabled: string,\r\n openTime: number,\r\n closeTime: number\r\n }\r\n }\r\n }\r\n}\r\nexport type ExtTradingHours = {\r\n PreMarket:{\r\n isEnabled: boolean,\r\n openTime: number,\r\n closeTime: number\r\n },\r\n PostMarket:{\r\n isEnabled: boolean,\r\n openTime: number,\r\n closeTime: number\r\n }\r\n}\r\nexport type MODTokenDetails = boolean;\r\n\r\nexport type UserEmailPreference = {\r\n email: string,\r\n preferenceInvestmentProducts: boolean,\r\n preferenceDirectInvestingUpdates: boolean,\r\n preferenceProgramOffers: boolean,\r\n preferenceNewsKnowledge: boolean\r\n};\r\n\r\nexport type showIntercept = {\r\n showIntercept: boolean,\r\n emailAddress?: string\r\n};\r\n\r\nexport type ExchangeAgreement = {\r\n agreementType: ExchangeAgreementEnum,\r\n isAccepted: boolean,\r\n isNewAgreement: boolean\r\n};\r\n\r\nexport type ExchangeAgreementOPRA = {\r\n isNonProfessional: boolean,\r\n acceptTermsandConditions: boolean\r\n};\r\n\r\nexport type ExchangeAgreementNYSE = {\r\n subscriberTitle: string,\r\n subscriberEmployerFunction: string,\r\n answer_A: boolean,\r\n answer_B: boolean,\r\n answer_C: boolean,\r\n answer_D: boolean,\r\n answer_E: boolean,\r\n answer_F: boolean,\r\n answer_G: boolean,\r\n answer_H: boolean,\r\n answer_I: boolean,\r\n answer_J: boolean,\r\n answer_K: boolean,\r\n isNonProfessional: boolean,\r\n isAcceptTCNonProfessinal: boolean,\r\n acceptTermsandConditions: boolean\r\n};\r\n\r\nexport type ExchangeAgreementNASDAQ = {\r\n typeOfSubscriber: number,\r\n subscriberStatus: number,\r\n isProfessional?: boolean,\r\n isBusiness?: boolean,\r\n firmName: string,\r\n individualSubscriberInfo?: string,\r\n firmNameOfSignatory?: string,\r\n firmTitle: string,\r\n subscriberSign: string,\r\n address: string,\r\n date: string,\r\n acceptTermsandConditions: boolean\r\n};\r\n\r\nexport type OnboardingStatus = {\r\n status: {\r\n interactiveTour: {\r\n featuredTour: boolean,\r\n learntoTrade: boolean,\r\n accountManagement: boolean,\r\n investingPreferences: boolean,\r\n research: boolean,\r\n incomeProjection: boolean\r\n }\r\n }\r\n};\r\n\r\nexport namespace RepaperingTypes {\r\n export type ClientAccountRelationship =\r\n {\r\n ctUserID: string,\r\n firstName: string,\r\n lastName: string,\r\n companyName: string,\r\n clientTypeId: string,\r\n relationshipType: RepaperingEnum.AccountRelationshipType,\r\n }\r\n export type Address =\r\n {\r\n streetNoAndName: string,\r\n aptSuite: string,\r\n city: string,\r\n province: string,\r\n country: string,\r\n countryCode: string,\r\n postalCode: string,\r\n }\r\n export type SupplementFormInfo =\r\n {\r\n trackingID: string,\r\n countryOfResidence1: string,\r\n countryOfResidence2: string,\r\n countryOfResidence3: string,\r\n iSOCountryOfResidence1: string,\r\n iSOCountryOfResidence2: string,\r\n iSOCountryOfResidence3: string,\r\n taxIdNumber1: string,\r\n taxIdNumber2: string,\r\n taxIdNumber3: string,\r\n taxTreatyCountry: string,\r\n taxTreatyISOCountry: string,\r\n agreementAccepted: boolean,\r\n }\r\n export type Form =\r\n {\r\n formID: RepaperingEnum.FormID,\r\n formName: LocalizedProperty,\r\n formUrl: LocalizedProperty,\r\n formType: RepaperingEnum.FormType,\r\n caseDetails: CaseDetails,\r\n }\r\n\r\n export type CaseDetails =\r\n {\r\n caseId: string,\r\n caseStatus: string,\r\n }\r\n\r\n export type LocalizedProperty =\r\n {\r\n en: string,\r\n fr: string,\r\n }\r\n\r\n export type SLUIStatus = {\r\n status: {\r\n digital?: RepaperingEnum.FormStatus,\r\n paper?: RepaperingEnum.FormStatus\r\n }\r\n }\r\n\r\n export type RawCustomerInfo =\r\n {\r\n firstName: string,\r\n middleInitial: string,\r\n lastName: string,\r\n ctUserID: string,\r\n loginClientCard: string,\r\n diClientCard: string,\r\n bankClientCard: string,\r\n dateOfBirthString: string,\r\n dateOfBirth: string,\r\n emailAddress: string,\r\n telephoneNo: string,\r\n phoneTypeCode: string,\r\n phoneDeviceType: string,\r\n phoneExtension: string,\r\n isMailingAddressSameAsHome: boolean,\r\n homeAddress: Address,\r\n mailingAddress: Address,\r\n maritalStatus: RepaperingEnum.MaritalStatus,\r\n isMarriedOrCommonLaw: boolean,\r\n isCoApplicantMySpouse?: boolean,\r\n canadianCitizenIndicator: boolean | string,\r\n usCitizenIndicator: boolean | string,\r\n sin: string | null,\r\n spousalSIN: string,\r\n spousalDateOfBirthString: string,\r\n spousalDateOfBirth?: string,\r\n countryOfBirth: string,\r\n ssn: string | null,\r\n sinExpiryDateString: string,\r\n sinExpiryDate?: string,\r\n language: RepaperingEnum.Language,\r\n spouseFirstName: string,\r\n spouseLastName: string,\r\n occupationCD: number,\r\n occupationDesc: string,\r\n employerName: string,\r\n employmentStatusCD: string,\r\n employmentStatusDesc: string,\r\n spouseOccupationCD: number,\r\n spouseOccupationDesc: string,\r\n spouseEmployerName: string,\r\n spouseEmploymentStatusCD: string,\r\n spouseEmploymentStatusDesc: string,\r\n netLiquidAssets?: number,\r\n netFixedAssets?: number,\r\n totalAssets?: number,\r\n annualIncome?: number | string,\r\n annualIncomeDesc: string,\r\n proTraderStatus: boolean | string,\r\n memberFirmName: string,\r\n applicantInsiderIndicator: boolean | string,\r\n applicantInsiderInfo: string,\r\n applicantControlIndicator: boolean | string,\r\n applicantControlInfo: string,\r\n consentToProfile: boolean,\r\n consentToShare: boolean,\r\n agreedToPrepop: boolean,\r\n consentToETax: boolean | string,\r\n docRequestId: string,\r\n documentType: DocumentType,\r\n consentToETaxAccepted: boolean,\r\n forms: Array
,\r\n supplementFormInfo: RepaperingTypes.SupplementFormInfo,\r\n hasPastTrading?: boolean,\r\n hasPlanTrading?: boolean\r\n }\r\n\r\n export type CustomerInfo = RawCustomerInfo & SLUIStatus\r\n\r\n export type RawAccountInfo =\r\n {\r\n accountNumber: string,\r\n digitallySignedDateString: string,\r\n digitallySignedDate?: string,\r\n trackingID: string,\r\n accountType: RepaperingEnum.AccountType,\r\n accountPurposeDetail: RepaperingEnum.AccountPurposeDetail,\r\n prodCat: string,\r\n sourceOfFundsCD: number,\r\n sourceOfFundsDesc: string,\r\n coApplicantSourceOfFundsCD: number,\r\n coApplicantSourceOfFundsDesc: string,\r\n coApplicantClientCardNumber: string,\r\n dRIPIndicator: boolean,\r\n physicalMail: RepaperingEnum.PhysicalMail,\r\n disclosure: boolean,\r\n mailingCost: boolean,\r\n optionTrading: boolean,\r\n nakedPut: boolean,\r\n financialInterest: boolean,\r\n clientAccountAgreementAccepted: boolean,\r\n pensionLegislation: RepaperingEnum.PensionLegislation,\r\n pensionLegislationDesc: string,\r\n pensionOnSex?: boolean,\r\n clientTypeId: string,\r\n clientAccountRelationships: Array,\r\n forms: Array,\r\n }\r\n\r\n export type AccountInfo = RawAccountInfo & SLUIStatus & {\r\n accountName: string,\r\n coApps: ClientAccountRelationship[];\r\n }\r\n}\r\n\r\nexport type RepaperingRaw =\r\n{\r\n repaperingDetails: {\r\n customerInfo: RepaperingTypes.RawCustomerInfo,\r\n accountInfo: Array,\r\n },\r\n isSubmitted: boolean\r\n}\r\n\r\nexport type Repapering =\r\n{\r\n repaperingDetails: {\r\n customerInfo: RepaperingTypes.CustomerInfo,\r\n accountInfo: Array,\r\n isDigitalComplete?: boolean;\r\n isPaperComplete?: boolean;\r\n isPaperReceived?: boolean;\r\n isDigitalNigo?: boolean;\r\n isPaperNigo?: boolean;\r\n },\r\n isSubmitted: boolean\r\n}\r\n\r\nexport type DestinationsControls = {\r\n tours: boolean,\r\n emeraldalert: boolean,\r\n olbcardlogin: boolean\r\n}\r\n","import moment from 'moment';\r\nimport { getMODToken } from '../api';\r\nimport { didSessionUpdate, getStorage, setStorage } from './session';\r\n\r\nlet refetchInterval;\r\n\r\nexport const pingMod = () => {\r\n getMODToken().then((isRefreshed) => {\r\n if (isRefreshed) {\r\n setStorage({ modExpiry: moment().add(refetchInterval, 'ms') });\r\n setTimeout(pingMod, refetchInterval);\r\n }\r\n else pingMod();\r\n })\r\n .catch(pingMod);\r\n};\r\n\r\nexport const initializeMarkitSession = (_refetchInterval: number) => {\r\n refetchInterval = _refetchInterval;\r\n\r\n const expiry = getStorage().modExpiry;\r\n const now = moment();\r\n if (!expiry || now > expiry || didSessionUpdate) pingMod();\r\n else setTimeout(pingMod, expiry.diff(now));\r\n};\r\n","import axios from 'axios';\r\nimport mock from 'di-mock';\r\nimport { Account, AddressDetails, BalanceSummary, Env, OrderDetails, ProcTransaction,\r\n Profile, Quote, Rrif, ServerDate, SubTransaction, Tradecount, Option, TradeCommission,\r\n AvailableFunds, Holdings, TradeFilters, SwitchSecurityList, RecentSymbolList,GoodThroughDates, RewardPoints, LevelTwo, StockOrder, Overview, ClientDetails, NavigationOptions, ProfileClient, OptionsExpirations, MODTokenDetails, ExtTradingHoursUSCA, ExtTradingHours, Features, defaultFeatures, UserEmailPreference, showIntercept, ExchangeAgreement, ExchangeAgreementOPRA, ExchangeAgreementNYSE, ExchangeAgreementNASDAQ, OnboardingStatus, TrancheMetadata, RepaperingRaw, DocumentRequest } from './static/types';\r\nimport { FilterParams } from './components/transactions/activity/Activity';\r\nimport { OrderFilters } from './components/transactions/orderstatus/OrderStatus';\r\nimport { lng } from './i18n';\r\nimport { initializeMarkitSession } from './static/markit';\r\nimport { ExchangeAgreementEnum } from './static/enums';\r\n\r\nconst xsrfCookieName = 'RBCXsrf';\r\nconst xsrfToken = () => document.cookie.split(';')\r\n .find((cookie) => cookie.includes(xsrfCookieName))?.trim()\r\n .slice(`${xsrfCookieName}=`.length);\r\n\r\nexport { xsrfToken };\r\n\r\nexport const axiosConfig = {\r\n xsrfCookieName: null,\r\n withCredentials: true\r\n};\r\n\r\nconst api = axios.create(axiosConfig);\r\n\r\nconst locale = lng === 'en' ? 'English' : 'French';\r\n\r\nconst setInterceptor = (API_URL) => {\r\n const getFullUrl = (url, method) =>\r\n (['get','post'].includes(method) || isISAM ? [API_URL, url] : [API_URL, method, url]).join('/');\r\n\r\n api.interceptors.request.use((config) => {\r\n config.url = /^https?:\\/\\//.test(config.url) ? config.url : getFullUrl(config.url, config.method);\r\n if (config.method !== 'get') {\r\n config.xsrfCookieName = xsrfCookieName;\r\n if (config.method === 'delete' && !config.data) config.data = {}; // To resolve issue with RBAccess and post requests\r\n if(!isISAM) config.url += encodeURIComponent(`?xsrf=${xsrfToken()}`); // Fallback because RBAccess strips the header\r\n config.method = isISAM ? config.method : 'post'; // Reduce to post (RBAccess crap again, blocks other methods)\r\n }\r\n // Only when same origin to prevent CORS preflight\r\n if (rbaDomain.includes(window.location.host)) {\r\n config.headers['Locale'] = locale;\r\n config.headers['Language'] = lng;\r\n }\r\n makeRBAccessRequest();\r\n return config;\r\n });\r\n\r\n api.interceptors.response.use((response) => {\r\n return response;\r\n }, (error) => {\r\n if (error.response.status === 403) window.location.href = `${rbaUrl}/WebUI/Error/` + (error?.response?.data?.id === 1030 ? 'MultipleSessions' : 'SessionExpiry');\r\n });\r\n};\r\n\r\ntype ApiModel = {\r\n apiStatusCode: number,\r\n apiResponse: any\r\n};\r\n\r\nconst sanitize = (data: object | string) => {\r\n if (typeof data !== 'string' || process.env.NODE_ENV === 'development') return data;\r\n return data && JSON.parse(data.slice(0, data.length - 1));\r\n};\r\n\r\nlet rbaUrl, webuiUrl, rbAccessSessionUrl, isISAM, rbaDomain, querySeperator, overrides;\r\n\r\nconst parseOverrides = (env: Env) =>\r\n Object.keys(env).filter((k) => k.startsWith('OVERRIDES.')).reduce((acc, k) => ({ ...acc, [k.split('.')[1]]: env[k] }), {});\r\n\r\nexport const reactBaseMeta: HTMLMetaElement = document.head.querySelector('meta[name=\"reactBaseURI\"]');\r\nconst basePath = reactBaseMeta?.content ||\r\n document.baseURI ||\r\n document.querySelector('base')?.href;\r\n// Force cache bust when CORS\r\nconst envParam = /^www1\\./i.test(window.location.host) ? process.env.REACT_APP_BUILD_ID : Date.now();\r\nconst envFile = process.env.NODE_ENV === 'development' ? 'local.json' : `prod.json?id=${envParam}`;\r\n\r\nexport const getEnv = (): Promise =>\r\n api.get(`${basePath}env/${envFile}`)\r\n .then((res) => sanitize(res.data))\r\n .then((env: Env) => {\r\n isISAM = env.IS_ISAM?.toLowerCase().trim() === 'true' ? true : false;\r\n querySeperator = isISAM ? '?' : '&';\r\n if (lng === 'fr') env.RBA_URL = env.RBA_URL.replace('LANGUAGE=ENGLISH', 'LANGUAGE=FRENCH');\r\n rbAccessSessionUrl = env.RBA_SESSION_URL;\r\n rbaDomain = env.RBA_DOMAIN;\r\n rbaUrl = env.RBA_URL;\r\n webuiUrl = env.WEBUI_URL;\r\n overrides = parseOverrides(env);\r\n setInterceptor(env.API_URL);\r\n initializeMarkitSession(env.MOD_TOKEN_REFETCH_INTERVAL);\r\n return env;\r\n });\r\n\r\nconst parseApiResponse = (data: ApiModel | string, nonModel?: boolean) => {\r\n if (isISAM) return data;\r\n const res: ApiModel = sanitize(data);\r\n if (nonModel) return res;\r\n if (res.apiStatusCode !== 200) throw new Error();\r\n return res.apiResponse;\r\n};\r\n\r\nexport const getNavigationOptions = (key, transform?: Function): Promise =>\r\n api.get(`${webuiUrl}/Navigation/Options`)\r\n .then((res) => sanitize(res.data))\r\n .then((opts: NavigationOptions) => transform?.(opts) || opts);\r\n\r\nconst applyOverrides = (features: Features) =>\r\n Object.entries(overrides).reduce((acc, [k, v]) => v == null ? acc : { ...acc, [k]: v }, features);\r\n\r\nexport const getFeatures = (key, transform?: Function): Promise =>\r\n api.get(`featuretoggleapi/v1/features/${Object.keys(defaultFeatures).join(',')}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then(applyOverrides)\r\n .then((features: Features) => transform ? transform(features) : features)\r\n .catch(() => defaultFeatures);\r\n\r\nconst toParamString = (paramObj = {}) =>\r\n Object.keys(paramObj).reduce(\r\n (string, key) => paramObj[key] ? `${string}${key}=${paramObj[key]}&` : string,\r\n querySeperator).slice(0, -1);\r\n\r\nexport const getDate = (key, transform?: Function): Promise =>\r\n api.get('date')\r\n .then((res) => parseApiResponse(res.data, true))\r\n .then((date: ServerDate) => transform?.(date) || date);\r\n\r\nexport const getAccounts = (key, paramObj: object, accToken: string, transform?: Function): Promise =>\r\n api.get(`portfolioapi/v1/accounts${toParamString(paramObj)}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((accounts: Account[]) => transform?.(accounts) || accounts);\r\n\r\nexport const setSticky = (accountToken: string) =>\r\n api.post(`Preferenceapi/v1/Preferences/sticky`, { accountToken });\r\n\r\nexport const getMODToken = (): Promise =>\r\n api.get(`MarkitAPI/v1/markittoken`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((MODTokenDetails) => MODTokenDetails);\r\n\r\nexport const getTradeCount = (key, accountToken, transform?: Function): Promise =>\r\n api.get(`portfolioapi/v1/tradecount/accounts/${accountToken}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((tradecount: Tradecount) => transform?.(tradecount) || tradecount);\r\n\r\nexport const getBalanceSummary = (key, accountToken, transform?: Function): Promise =>\r\n api.get(`portfolioapi/v1/balances/groups/${accountToken}${querySeperator}timePeriod=IntraDay`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((summary: BalanceSummary) => transform?.(summary) || summary);\r\n\r\nexport const getSubmitted =\r\n (key, accountToken, transform?: Function): Promise =>\r\n api.get(`FundsTransferapi/v1/client/FundTransfer/history/${accountToken}${querySeperator}excludeStatus=Completed&excludeStatus=Processed`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((transactions: SubTransaction[]) => transform?.(transactions) || transactions);\r\n\r\nexport const cancelTransaction = (referenceId: string) =>\r\n api.delete(`FundsTransferapi/v1/client/ForeignExchange/${referenceId}`)\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getProcessed =\r\n (key, accountToken: string, params: FilterParams, transform?: Function): Promise =>\r\n api.get(`activityapi/v1/activities/groups/${accountToken}${toParamString(params)}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((transactions: ProcTransaction[]) => transform?.(transactions) || transactions);\r\n\r\nconst toOrdersParamString = (paramObj: OrderFilters) =>\r\n Object.keys(paramObj).every((key) => !paramObj[key]) ? `${querySeperator}orderStatusFilter=None` :\r\n Object.keys(paramObj).reduce(\r\n (string, key) => paramObj[key] ? `${string}orderStatusFilter=${key}&` : string,\r\n querySeperator).slice(0, -1);\r\n\r\nexport const getOrders =\r\n (key, accountToken: string, params: OrderFilters, transform?: Function): Promise =>\r\n api.get(`orderstatusapi/v1/orderstatus/accounts/${accountToken}${toOrdersParamString(params)}&groupByOrderId=true`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((orderDetails: OrderDetails) => transform?.(orderDetails) || orderDetails);\r\n\r\nexport const getQuote = (key, symbol: string, market: string, transform?: Function): Promise =>\r\n api.get(`MarkitAPI/v1/quote/${market}/${symbol}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((quote: Quote) => transform?.(quote) || quote);\r\n\r\nexport const getRrif = (key, accountToken: string, isPilot: boolean, transform?: Function): Promise =>\r\n api.get(`rrifapi/v1/rrif/${accountToken}${isPilot ? `${querySeperator}allowTA=true` : ''}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((rrif: Rrif) => transform?.(rrif) || rrif);\r\n\r\nexport const postRrif = (data: object) =>\r\n api.post('rrifapi/v1/rrif', data)\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getHolidays = > (key, transform?: Function): Promise =>\r\n api.get('rrifapi/v1/rrif/holidays')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((date: Array) => transform?.(date) || date);\r\n\r\nexport const getProfile = (key, transform?: Function): Promise =>\r\n api.get('profileapi/v1/profile')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((profile: Profile) => transform?.(profile) || profile);\r\n\r\nexport const getProfileClient = (key, transform?: Function): Promise =>\r\n api.get('profileapi/v1/profile/client')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((client: T) => transform?.(client) || client);\r\n\r\nexport const getTrancheMetadata = (key, transform?: Function): Promise =>\r\n api.get('ePaperingAPI/v1/Tranche/client')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((tranche: T) => transform?.(tranche) || tranche);\r\n\r\nexport const postDocuments = (data: string[], transform?: Function): Promise =>\r\n api.post('documentUploadAPI/v1/Document/RequestID', data)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((docReq: T) => transform?.(docReq) || docReq);\r\n\r\nexport const postDocumentFile = (\r\n docRequestId: string,\r\n documentId: string,\r\n file: File\r\n )=> {\r\n const formdata = new FormData();\r\n formdata.append('FileName',file.name);\r\n formdata.append('File',file);\r\n\r\n return api.post(`documentUploadAPI/v1/Document/${docRequestId}/document/${documentId}/file`, formdata, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n })\r\n .then((res) => parseApiResponse(res.data));\r\n }\r\n\r\nexport const deleteDocumentFile = (docRequestId: string, documentId: string, fileId: string) =>\r\n api.delete(`documentUploadAPI/v1/Document/${docRequestId}/document/${documentId}/file/${fileId}`)\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getRepapering = (key, transform?: Function): Promise =>\r\n api.get('ePaperingAPI/v1/Repapering')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((repapering: T) => transform?.(repapering) || repapering);\r\n\r\nexport const getMessageCount = (key, transform?: Function): Promise =>\r\n api.get('profileapi/v1/profile/messagecount')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((count: T) => transform?.(count) || count);\r\n\r\nexport const getProfileForCashAndOptions = (key, requestType?: string, transform?: Function): Promise =>\r\n api.get('profileapi/v1/profile?inputFlow=' + requestType)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((profile: Profile) => transform?.(profile) || profile);\r\n\r\nexport const getExchangeAgreements = (key, transform?: Function): Promise =>\r\n api.get('profileapi/v1/Onboarding/ExchangeAgreements')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((exchangeAgreements: ExchangeAgreement[]) => transform?.(exchangeAgreements) || exchangeAgreements);\r\n\r\nexport const postProfile = (data: object) =>\r\n api.post('profileapi/v1/profile', data)\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const postCashAndOptionsProfile = (data: object, requestType: string) =>\r\n api.post('profileapi/v1/profile/' + requestType, data)\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const downloadCashAndOptionsPDF = (data: object, requestType: string) =>\r\n api.post('profileapi/v1/RenderPDF/' + requestType, data, {responseType: 'blob'})\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const postProfileConfirm = () =>\r\n api.post('profileapi/v1/profile/confirm')\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getAddressSuggestions = (address: string) =>\r\n api.get(`profileapi/v1/addresslookup/suggestions${querySeperator}address=${address}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((suggestions: Array) => suggestions);\r\n\r\nexport const getAddressDetails = (address: string) =>\r\n api.get(`profileapi/v1/addresslookup/details${querySeperator}address=${address}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((addressDetails: AddressDetails) => addressDetails);\r\n\r\nexport const getCountries = > (): Promise =>\r\n api.get(`profileapi/v1/country`)\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getProvinces = > (): Promise =>\r\n api.get(`profileapi/v1/province${querySeperator}countrycode=CA`)\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getStates = > (): Promise =>\r\n api.get(`profileapi/v1/province${querySeperator}countrycode=US`)\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getOccupations = > (): Promise =>\r\n api.get('profileapi/v1/profile/occupations')\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getEmploymentStatus = > (): Promise =>\r\n api.get('profileapi/v1/profile/employmentStatus')\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getBusinessTypes = > (): Promise =>\r\n api.get('profileapi/v1/profile/businesstypes')\r\n .then((res) => parseApiResponse(res.data))\r\n\r\nexport const getTradeFilters = (key, transform?: Function): Promise =>\r\n api.get(`tradingapi/v1/filters`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((filters) => transform?.(filters) || filters);\r\n\r\nexport const getAvailableFunds = (key, accountToken: string, transform?: Function): Promise =>\r\n api.get(`availablefundsapi/v1/availablefunds/accounts/${accountToken}/type/Purchase`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((availableFunds) => transform?.(availableFunds) || availableFunds);\r\n\r\nexport const getHoldings = (key, accountToken: string, params: object, transform?: Function): Promise =>\r\n api.get(`portfolioapi/v1/holdings/accounts/${accountToken}${toParamString(params)}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((holdings) => transform?.(holdings) || holdings);\r\n\r\nexport const getTradeCommission = (key, params: object, transform?: Function): Promise =>\r\n api.get(`tradingapi/v1/tradecommission${toParamString(params)}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((tradeCommission) => transform?.(tradeCommission) || tradeCommission);\r\n\r\nexport const getEstimatedPoints = (key, params: object, transform?: Function): Promise =>\r\n api.get(`tradingapi/v1/tradecommission/points${toParamString(params)}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((estPoints) => transform?.(estPoints) || estPoints);\r\n\r\nexport const postMfNew = (data: object, isSwitch?: boolean, practiceAcknowledgement=false) =>\r\n api.post(`tradingapi/v1/mutualfunds/${isSwitch ? 'switch' : ''}order${practiceAcknowledgement ? '?hideAck=true' : ''}`, data)\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const postFundFactAcknowledgement = (accountToken: string, data: object) =>\r\n api.post(`tradingapi/v1/mutualfunds/fundfacts/acknowledgement/${accountToken}`, data)\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const postEQNew = (data: object, practiceAcknowledgement=false) =>\r\n api.post(`tradingapi/v1/stocks/order${practiceAcknowledgement ? '?hideAck=true' : ''}`, data)\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getSwitchSecurities = (key, symbol, transform?: Function): Promise =>\r\n api.get(`tradingapi/v1/mutualfunds/switchtosymbol/${symbol}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((securityList) => transform?.(securityList) || securityList);\r\n\r\nexport const getContactPhone = (key, transform?: Function): Promise =>\r\n api.get('Preferenceapi/v1/Preferences/ContactPhone')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((phone) => transform?.(phone) || phone);\r\n\r\nexport const getRecentSymbols = (key, transform?: Function): Promise =>\r\n api.get(`MarkitAPI/v1/RecentSymbols${querySeperator}limit=6&getQuote=true&getChart=true`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((recentSymbolList: RecentSymbolList[]) => transform?.(recentSymbolList) || recentSymbolList);\r\n\r\nexport const postRecentSymbols = (market, symbol) =>\r\n api.post(`MarkitAPI/v1/RecentSymbols/${market}/${symbol}`);\r\n\r\nexport const getPredictiveSearch = (key, symbol, transform?: Function): Promise =>\r\n api.get(`MarkitAPI/v1/predictiveSearch/${encodeURIComponent(symbol)}${querySeperator}limit=6&getQuote=true&getChart=true`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((predictiveSearchList: RecentSymbolList[]) => transform?.(predictiveSearchList) || predictiveSearchList);\r\n\r\nexport const getGoodThroughDates = (key, transform?: Function): Promise =>\r\n api.get(`tradingapi/v1/goodthroughdates`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((goodThroughDates: GoodThroughDates) => transform?.(goodThroughDates) || goodThroughDates);\r\n\r\nexport const getRewardPoints = (key, transform?: Function): Promise =>\r\n api.get(`portfolioapi/v1/rewardpoints`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((rewardPoints : RewardPoints[]) => transform?.(rewardPoints) || rewardPoints);\r\n\r\nexport const getLevelTwo = (key, symbol: string, market: string,transform?: Function): Promise =>\r\n api.get(`MarkitAPI/v1/detailedQuote/levelTwo/${market}/${symbol}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((levelTwo : LevelTwo) => transform?.(levelTwo) || levelTwo);\r\n\r\nexport const getOverview = (key, type: string, symbol: string, market: string,transform?: Function): Promise =>\r\n api.get(`MarkitAPI/v1/detailedQuote/overview/${type}/${market}/${symbol}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((overview: Overview) => transform?.(overview) || overview);\r\n\r\nexport const getStockOrder = (key, orderId: string, accountToken: string, transform?: Function): Promise =>\r\n api.get(`tradingapi/v1/stocks/order/${orderId}/accounts/${accountToken}${querySeperator}filter=OpenPending`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((stockOrder : StockOrder) => transform?.(stockOrder) || stockOrder);\r\n\r\nexport const putModifyOrder = (data: object, orderId: string, practiceAcknowledgement=false) =>\r\n api.put(`tradingapi/v1/stocks/order/${orderId}${practiceAcknowledgement ? '?hideAck=true' : ''}`, data)\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const deleteCancelOrder = (data: object, orderId: string) =>\r\n api.delete(`tradingapi/v1/stocks/order/${orderId}`, {data})\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getClientDetails = (key, transform?: Function): Promise =>\r\n api.get(`portfolioapi/v1/clients`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((clientDetails: ClientDetails) => transform?.(clientDetails) || clientDetails);\r\n\r\nexport const getOptionsExpirations = (ey, symbol: string, market: string,transform?: Function): Promise =>\r\napi.get(`MarkitAPI/v1/detailedQuote/options/expirations/${market}/${symbol}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((optionsExpirations: OptionsExpirations) => transform?.(optionsExpirations) || optionsExpirations);\r\n\r\nexport const getEHTradingWindow = (key, transform?: Function): Promise =>\r\n api.get(`tradingapi/v1/extendedhour/details`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((tradinghours: ExtTradingHoursUSCA) => {\r\n console.log(transform?.(tradinghours));\r\n return transform?.(tradinghours) || tradinghours\r\n });\r\n\r\nexport const getEHTradingWindowForExchange = (key, exchangeCode: string, transform?: Function): Promise =>\r\n api.get(`tradingapi/v1/extendedhour/details/${exchangeCode}`)\r\n .then((res) => parseApiResponse(res.data))\r\n .then((tradinghours: ExtTradingHours) => {\r\n console.log(transform?.(tradinghours));\r\n return transform?.(tradinghours) || tradinghours\r\n });\r\n\r\nexport const getShowIntercept = (key, transform?: Function): Promise =>\r\n api.get('Preferenceapi/v1/EmailPreferences/ShowIntercept')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((showIntercept) => transform?.(showIntercept) || showIntercept)\r\n\r\nexport const getUserEmailPreferences = (key, transform?: Function): Promise =>\r\n api.get('Preferenceapi/v1/EmailPreferences/UserEmailPreferences')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((userEmailPref) => transform?.(userEmailPref) || userEmailPref);\r\n\r\nexport const confirmEmail = () =>\r\n api.post('Preferenceapi/v1/EmailPreferences/ConfirmPreference')\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const acceptCEG = () =>\r\n api.post('profileapi/v1/Onboarding/ExchangeAgreementCEG',\r\n { AgreementType: ExchangeAgreementEnum.CEG, AcceptTermsandConditions: true })\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const acceptHK = () =>\r\n api.post('profileapi/v1/Onboarding/ExchangeAgreementHKG',\r\n { AgreementType: ExchangeAgreementEnum.HKG, AcceptTermsandConditions: true })\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getOPRA = (key, transform?: Function): Promise =>\r\n api.get('profileapi/v1/Onboarding/ExchangeSignature/OPRA')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((agr) => transform?.(agr) || agr);\r\n\r\nexport const acceptOPRA = (data: object) =>\r\n api.post('profileapi/v1/Onboarding/ExchangeAgreementOPRA',\r\n { AgreementType: ExchangeAgreementEnum.OPRA, ...data })\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getNASDAQ = (key, transform?: Function): Promise =>\r\n api.get('profileapi/v1/Onboarding/ExchangeSignature/NASDAQ')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((agr) => transform?.(agr) || agr);\r\n\r\nexport const acceptNASDAQ = (data: object) =>\r\n api.post('profileapi/v1/Onboarding/ExchangeAgreementNASDAQ',\r\n { AgreementType: ExchangeAgreementEnum.NASDAQ, AcceptTermsandConditions: true, ...data })\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getNYSE = (key, transform?: Function): Promise =>\r\n api.get('profileapi/v1/Onboarding/ExchangeSignature/NYSE')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((agr) => transform?.(agr) || agr);\r\n\r\nexport const acceptNYSE = (data: object) =>\r\n api.post('profileapi/v1/Onboarding/ExchangeAgreementNYSE',\r\n { AgreementType: ExchangeAgreementEnum.NYSE, ...data })\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const postOnboardingStatus = (data?: object) =>\r\n api.post('profileapi/v1/Onboarding', data)\r\n .then((res) => parseApiResponse(res.data));\r\n\r\nexport const getOnboardingStatus = (key, transform?: Function): Promise =>\r\napi.get('profileapi/v1/Onboarding')\r\n .then((res) => parseApiResponse(res.data))\r\n .then((agr) => transform?.(agr) || agr);\r\n/* ISAM/RBAccess logic */\r\n\r\nexport const makeRBAccessRequest = () => {\r\n if (isISAM && process.env.NODE_ENV !== 'development') {\r\n executeHeartbeat();\r\n }\r\n};\r\n\r\nconst executeHeartbeat = () =>\r\n axios.get(rbAccessSessionUrl, {\r\n timeout: 30000\r\n })\r\n .then((res) => {\r\n handleRequestTimeout(res);\r\n return res.data;\r\n })\r\n .catch(handleRequestError);\r\n\r\nconst handleRequestTimeout = (res) => {\r\n if (res !== undefined) {\r\n const isIsamHtml = typeof res.data === 'string' && res.data.includes('/cgi-bin/rbaccess/rbunxcgi?F22=HTSSOINET');\r\n // Some weird response. Refresh to try re-establishing session\r\n if (isIsamHtml) {\r\n window.location.reload();\r\n return;\r\n }\r\n\r\n const didUserSignOut = res.data && res.data.operation && res.data.operation === 'login';\r\n\r\n // Isam timed out or user signed out\r\n if (didUserSignOut) {\r\n terminateSession();\r\n return;\r\n }\r\n }\r\n};\r\n\r\nconst handleRequestError = (err) => {\r\n if (err.response?.status === 401) {\r\n terminateSession();\r\n }\r\n};\r\n\r\nconst terminateSession = () => {\r\n let logoutPath = rbaDomain + '/' + locale.toLowerCase() + '/netaction/expmsg.htm';\r\n window.location.href = logoutPath;\r\n};\r\n","import { CTA, FlexItem, FlexLayout } from \"@rig/rw-core-components\";\r\nimport classNames from \"classnames\";\r\nimport { MouseEvent, useEffect, useRef, useState } from \"react\";\r\nimport { useTranslation, Trans } from \"react-i18next\";\r\nimport { Redirect, useHistory, useParams } from \"react-router\";\r\nimport { RoutePath, TourRoutePath } from \"../../static/routes\";\r\nimport { Env } from \"../../static/types\";\r\nimport { Loader } from \"../common/Loader\";\r\nimport \"./Tours.scss\";\r\nimport {\r\n AOHeaderBackground,\r\n AccMngTourImages,\r\n DIHeaderBackground,\r\n FeaturedTourImages,\r\n IncomeProjTourImages,\r\n InvestingPrefTourImages,\r\n ResearchTourImages,\r\n TradeHKTourImages,\r\n TradeTourImages,\r\n FeaturedTourImagesFR,\r\n TradeHKTourImagesFR,\r\n TradeTourImagesFR,\r\n AccMngTourImagesFR,\r\n InvestingPrefTourImagesFR,\r\n IncomeProjTourImagesFR,\r\n ResearchTourImagesFR,\r\n TourFooter,\r\n} from \"./assets\";\r\nimport { dataLayerPush, scrollTo } from \"../../static/utils\";\r\nimport { TourKind } from \"../../static/enums\";\r\nimport { postOnboardingStatus } from \"../../api\";\r\n\r\nconst baseDigId = 'di-Authenticated-pkm4S4wL1ec3';\r\n\r\nconst digTourData: Partial> = {\r\n [TourKind.Featured]: [10, 'featured'],\r\n [TourKind.Trade]: [14, 'trade'],\r\n [TourKind.TradeHK]: [14, 'trade'],\r\n [TourKind.AccountManagement]: [18, 'account management'],\r\n [TourKind.InvestingPreferences]: [22, 'investing preferences'],\r\n [TourKind.Research]: [26, 'research'],\r\n [TourKind.IncomeProjection]: [30, 'income projection'],\r\n};\r\n\r\ntype TooltipPlacement = \"top\" | \"left\" | \"right\" | \"bottom\";\r\n\r\nenum TourRedirect {\r\n onboarding = \"onboarding\",\r\n}\r\n\r\ninterface TooltipProps {\r\n title: string;\r\n digTitle: string;\r\n description: string;\r\n placement?: TooltipPlacement;\r\n showPrev?: boolean;\r\n isLast?: boolean;\r\n onNextClick: () => void;\r\n onPrevClick: () => void;\r\n isPublicTour?: boolean;\r\n redirectPath?: string;\r\n tourId: TourKind;\r\n step: number;\r\n}\r\n\r\nconst Tooltip = ({\r\n title,\r\n digTitle,\r\n description,\r\n placement = \"top\",\r\n showPrev = true,\r\n isLast = false,\r\n onNextClick,\r\n onPrevClick,\r\n isPublicTour = false,\r\n redirectPath,\r\n tourId,\r\n step\r\n}: TooltipProps) => {\r\n const { t } = useTranslation();\r\n const history = useHistory();\r\n\r\n const btn1 = useRef(null);\r\n const btn2 = useRef(null);\r\n const btn3 = useRef(null);\r\n\r\n const findFirstFocusable = () => {\r\n const btnRefs = [btn1, btn2, btn3];\r\n for (const ref of btnRefs) {\r\n if (ref.current) {\r\n return ref;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n const redirect = () =>\r\n history.push(\r\n redirectPath === TourRedirect.onboarding\r\n ? RoutePath.Onboarding_Education\r\n : RoutePath.Education\r\n );\r\n\r\n const digIndex = digTourData[tourId][0];\r\n const digTourName = digTourData[tourId][1];\r\n\r\n const btnClick = (digIndex: number, btn: string, cb: Function) => (e: MouseEvent) => {\r\n dataLayerPush({\r\n event: 'click',\r\n details: `onboarding education - ${digTourName} - step ${step} - ${digTitle} - ${btn}`,\r\n data_dig_id: `${baseDigId}-${digIndex}`\r\n });\r\n cb(e);\r\n };\r\n\r\n return (\r\n
\r\n
findFirstFocusable().current?.focus()} />\r\n
\r\n \r\n \r\n

{title}

\r\n
\r\n \r\n

\r\n {description}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {isPublicTour || (\r\n \r\n \r\n {t(\"tours.tooltip.cancel\")}\r\n \r\n \r\n )}\r\n \r\n \r\n {showPrev && (\r\n \r\n \r\n {t(\"tours.tooltip.previous\")}\r\n \r\n \r\n )}\r\n {(isPublicTour && isLast) || (\r\n \r\n \r\n {isLast\r\n ? t(\"tours.tooltip.complete\")\r\n : t(\"tours.tooltip.next\")}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n
\r\n
findFirstFocusable().current?.focus()} />\r\n
\r\n );\r\n};\r\n\r\ntype TourInfo = {\r\n tooltipDescription: string;\r\n title: string;\r\n digTitle: string;\r\n nubbinPosition: TooltipPlacement;\r\n top: string;\r\n left: string;\r\n image: string;\r\n isAO?: boolean;\r\n};\r\n\r\nexport const Tours = ({\r\n env,\r\n isPublicTour = false,\r\n}: {\r\n env?: Env;\r\n isPublicTour?: boolean;\r\n}) => {\r\n const {\r\n t,\r\n i18n: { language },\r\n } = useTranslation();\r\n const history = useHistory();\r\n const {\r\n tourId: tourParam,\r\n step: stepParam,\r\n redirect: redirectParam,\r\n } = useParams();\r\n const step = parseInt(stepParam);\r\n const tourId = tourParam?.toLowerCase();\r\n const redirect = redirectParam?.toLowerCase();\r\n const [imageLoaded, setImageLoaded] = useState(false);\r\n\r\n useEffect(() => {\r\n setImageLoaded(false);\r\n if (\r\n (tourId === TourKind.IncomeProjection && step === 4) ||\r\n (tourId === TourKind.IncomeProjection && step === 5) ||\r\n (tourId === TourKind.AccountManagement && step === 6) ||\r\n (tourId === TourKind.TradeHK && step === 2) ||\r\n (tourId === TourKind.Trade && step === 2)\r\n ) {\r\n scrollTo(\".education_tour__tooltip_container\");\r\n } else {\r\n window.scrollTo(0, 0);\r\n }\r\n }, [tourId, step]);\r\n\r\n const TourContent: Partial> = {\r\n [TourKind.Featured]: [\r\n {\r\n tooltipDescription: t(\"tours.featured.1.step\"),\r\n title: t(\"tours.featured.1.step.header\"),\r\n digTitle: \"your home\",\r\n nubbinPosition: \"top\",\r\n top: \"31rem\",\r\n left: \"4rem\",\r\n image:\r\n language === \"en\"\r\n ? FeaturedTourImages.Featured01\r\n : FeaturedTourImagesFR.Featured01,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.featured.2.step\"),\r\n title: t(\"tours.featured.2.step.header\"),\r\n digTitle: \"monitor\",\r\n nubbinPosition: \"left\",\r\n top: \"7rem\",\r\n left: \"30.5rem\",\r\n image:\r\n language === \"en\"\r\n ? FeaturedTourImages.Featured02\r\n : FeaturedTourImagesFR.Featured02,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.featured.3.step\"),\r\n title: t(\"tours.featured.3.step.header\"),\r\n digTitle: \"managing funds\",\r\n nubbinPosition: \"left\",\r\n top: \"7rem\",\r\n left: language === \"en\" ? \"37rem\" : \"36rem\",\r\n image:\r\n language === \"en\"\r\n ? FeaturedTourImages.Featured03\r\n : FeaturedTourImagesFR.Featured03,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.featured.4.step\"),\r\n title: t(\"tours.featured.4.step.header\"),\r\n digTitle: \"trade & transfer\",\r\n nubbinPosition: \"top\",\r\n top: \"33.5rem\",\r\n left: language === \"en\" ? \"36.2rem\" : \"35rem\",\r\n image:\r\n language === \"en\"\r\n ? FeaturedTourImages.Featured04\r\n : FeaturedTourImagesFR.Featured04,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.featured.5.step\"),\r\n title: t(\"tours.featured.5.step.header\"),\r\n digTitle: \"research\",\r\n nubbinPosition: \"left\",\r\n top: \"7rem\",\r\n left: language === \"en\" ? \"47rem\" : \"48.5rem\",\r\n image:\r\n language === \"en\"\r\n ? FeaturedTourImages.Featured05\r\n : FeaturedTourImagesFR.Featured05,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.featured.6.step\"),\r\n title: t(\"tours.featured.6.step.header\"),\r\n digTitle: \"explore\",\r\n nubbinPosition: \"left\",\r\n top: \"7rem\",\r\n left: language === \"en\" ? \"54rem\" : \"56rem\",\r\n image:\r\n language === \"en\"\r\n ? FeaturedTourImages.Featured06\r\n : FeaturedTourImagesFR.Featured06,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.featured.7.step\"),\r\n title: t(\"tours.featured.7.step.header\"),\r\n digTitle: \"find\",\r\n nubbinPosition: \"right\",\r\n top: \"7rem\",\r\n left: language === \"en\" ? \"17.5rem\" : \"15.5rem\",\r\n image:\r\n language === \"en\"\r\n ? FeaturedTourImages.Featured07\r\n : FeaturedTourImagesFR.Featured07,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.featured.8.step\"),\r\n title: t(\"tours.featured.8.step.header\"),\r\n digTitle: \"watchlist\",\r\n nubbinPosition: \"right\",\r\n top: \"6.6rem\",\r\n left: \"18rem\",\r\n image:\r\n language === \"en\"\r\n ? FeaturedTourImages.Featured08\r\n : FeaturedTourImagesFR.Featured08,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.featured.9.step\"),\r\n title: t(\"tours.featured.9.step.header\"),\r\n digTitle: \"control centre\",\r\n nubbinPosition: \"right\",\r\n top: \"5.5rem\",\r\n left: \"30.5rem\",\r\n image:\r\n language === \"en\"\r\n ? FeaturedTourImages.Featured09\r\n : FeaturedTourImagesFR.Featured09,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.featured.10.step\"),\r\n title: t(\"tours.featured.10.step.header\"),\r\n digTitle: \"switch profile\",\r\n nubbinPosition: \"right\",\r\n top: \"6rem\",\r\n left: \"25.5rem\",\r\n image:\r\n language === \"en\"\r\n ? FeaturedTourImages.Featured10\r\n : FeaturedTourImagesFR.Featured10,\r\n },\r\n ],\r\n [TourKind.Trade]: [\r\n {\r\n tooltipDescription: t(\"tours.trade.1.step\"),\r\n title: t(\"tours.trade.1.step.header\"),\r\n digTitle: \"trade & transfer\",\r\n nubbinPosition: \"left\",\r\n top: language === \"en\" ? \"6.9rem\" : \"7rem\",\r\n left: language === \"en\" ? \"37rem\" : \"36.5rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeTourImages.Trade01\r\n : TradeTourImagesFR.Trade01,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade.2.step\"),\r\n title: t(\"tours.trade.2.step.header\"),\r\n digTitle: \"toolbox\",\r\n nubbinPosition: \"bottom\",\r\n top: language === \"en\" ? \"32.6rem\" : \"29.6rem\",\r\n left: \"13rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeTourImages.Trade02\r\n : TradeTourImagesFR.Trade02,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade.3.step\"),\r\n title: t(\"tours.trade.3.step.header\"),\r\n digTitle: \"dive into details\",\r\n nubbinPosition: \"bottom\",\r\n top: language === \"en\" ? \"11.8rem\" : \"10rem\",\r\n left: language === \"en\" ? \"12rem\" : \"11.9rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeTourImages.Trade03\r\n : TradeTourImagesFR.Trade03,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade.4.step\"),\r\n title: t(\"tours.trade.4.step.header\"),\r\n digTitle: \"find your\",\r\n nubbinPosition: \"top\",\r\n top: \"25.7rem\",\r\n left: \"12.2rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeTourImages.Trade04\r\n : TradeTourImagesFR.Trade04,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade.5.step\"),\r\n title: t(\"tours.trade.5.step.header\"),\r\n digTitle: \"placing an order\",\r\n nubbinPosition: \"left\",\r\n top: \"11rem\",\r\n left: \"45.6rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeTourImages.Trade05\r\n : TradeTourImagesFR.Trade05,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade.6.step\"),\r\n title: t(\"tours.trade.6.step.header\"),\r\n digTitle: \"current values\",\r\n nubbinPosition: \"right\",\r\n top: \"11rem\",\r\n left: \"13rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeTourImages.Trade06\r\n : TradeTourImagesFR.Trade06,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade.7.step\"),\r\n title: t(\"tours.trade.7.step.header\"),\r\n digTitle: \"review your order\",\r\n nubbinPosition: \"left\",\r\n top: \"11rem\",\r\n left: \"45.5rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeTourImages.Trade07\r\n : TradeTourImagesFR.Trade07,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade.8.step\"),\r\n title: t(\"tours.trade.8.step.header\"),\r\n digTitle: \"order confirmation\",\r\n nubbinPosition: \"left\",\r\n top: \"11rem\",\r\n left: \"45.5rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeTourImages.Trade08\r\n : TradeTourImagesFR.Trade08,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade.9.step\"),\r\n title: t(\"tours.trade.9.step.header\"),\r\n digTitle: \"overview\",\r\n nubbinPosition: \"bottom\",\r\n top: \"23.2rem\",\r\n left: \"12.3rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeTourImages.Trade09\r\n : TradeTourImagesFR.Trade09,\r\n },\r\n ],\r\n [TourKind.AccountManagement]: [\r\n {\r\n tooltipDescription: t(\"tours.acc_mng.1.step\"),\r\n title: t(\"tours.acc_mng.1.step.header\"),\r\n digTitle: \"profile\",\r\n nubbinPosition: \"right\",\r\n top: \"9rem\",\r\n left: \"30rem\",\r\n image:\r\n language === \"en\"\r\n ? AccMngTourImages.AccMng01\r\n : AccMngTourImagesFR.AccMng01,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.acc_mng.2.step\"),\r\n title: t(\"tours.acc_mng.2.step.header\"),\r\n digTitle: \"investment solutions\",\r\n nubbinPosition: \"left\",\r\n top: \"17.75rem\",\r\n left: language === \"en\" ? \"41.5rem\" : \"47.6rem\",\r\n image:\r\n language === \"en\"\r\n ? AccMngTourImages.AccMng02\r\n : AccMngTourImagesFR.AccMng02,\r\n isAO: true,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.acc_mng.3.step\"),\r\n title: t(\"tours.acc_mng.3.step.header\"),\r\n digTitle: \"learn to trade\",\r\n nubbinPosition: \"bottom\",\r\n top: language === \"en\" ? \"15rem\" : \"15.5rem\",\r\n left: \"13rem\",\r\n image:\r\n language === \"en\"\r\n ? AccMngTourImages.AccMng03\r\n : AccMngTourImagesFR.AccMng03,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.acc_mng.4.step\"),\r\n title: t(\"tours.acc_mng.4.step.header\"),\r\n digTitle: \"easy doc\",\r\n nubbinPosition: \"top\",\r\n top: language === \"en\" ? \"31.5rem\" : \"32.5rem\",\r\n left: \"20.47rem\",\r\n image:\r\n language === \"en\"\r\n ? AccMngTourImages.AccMng04\r\n : AccMngTourImagesFR.AccMng04,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.acc_mng.5.step\"),\r\n title: t(\"tours.acc_mng.5.step.header\"),\r\n digTitle: \"used forms\",\r\n nubbinPosition: \"bottom\",\r\n top: \"11rem\",\r\n left: \"20.3rem\",\r\n image:\r\n language === \"en\"\r\n ? AccMngTourImages.AccMng05\r\n : AccMngTourImagesFR.AccMng05,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.acc_mng.6.step\"),\r\n title: t(\"tours.acc_mng.6.step.header\"),\r\n digTitle: \"beneficiary\",\r\n nubbinPosition: \"bottom\",\r\n top: language === \"en\" ? \"46.5rem\" : \"49rem\",\r\n left: \"10.9rem\",\r\n image:\r\n language === \"en\"\r\n ? AccMngTourImages.AccMng06\r\n : AccMngTourImagesFR.AccMng06,\r\n },\r\n ],\r\n [TourKind.TradeHK]: [\r\n {\r\n tooltipDescription: t(\"tours.trade_hk.1.step\"),\r\n title: t(\"tours.trade_hk.1.step.header\"),\r\n digTitle: \"trade & transfer\",\r\n nubbinPosition: \"left\",\r\n top: language === \"en\" ? \"6.9rem\" : \"7rem\",\r\n left: language === \"en\" ? \"37rem\" : \"36.5rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeHKTourImages.TradeHK01\r\n : TradeHKTourImagesFR.TradeHK01,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade_hk.2.step\"),\r\n title: t(\"tours.trade_hk.2.step.header\"),\r\n digTitle: \"toolbox\",\r\n nubbinPosition: \"bottom\",\r\n top: language === \"en\" ? \"34.4rem\" : \"32.5rem\",\r\n left: \"13rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeHKTourImages.TradeHK02\r\n : TradeHKTourImagesFR.TradeHK02,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade_hk.3.step\"),\r\n title: t(\"tours.trade_hk.3.step.header\"),\r\n digTitle: \"dive into details\",\r\n nubbinPosition: \"bottom\",\r\n top: language === \"en\" ? \"11.8rem\" : \"10rem\",\r\n left: \"12rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeHKTourImages.TradeHK03\r\n : TradeHKTourImagesFR.TradeHK03,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade_hk.4.step\"),\r\n title: t(\"tours.trade_hk.4.step.header\"),\r\n digTitle: \"find your\",\r\n nubbinPosition: \"top\",\r\n top: \"25.7rem\",\r\n left: \"12.2rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeHKTourImages.TradeHK04\r\n : TradeHKTourImagesFR.TradeHK04,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade_hk.5.step\"),\r\n title: t(\"tours.trade_hk.5.step.header\"),\r\n digTitle: \"placing an order\",\r\n nubbinPosition: \"left\",\r\n top: \"11rem\",\r\n left: \"45.6rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeHKTourImages.TradeHK05\r\n : TradeHKTourImagesFR.TradeHK05,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade_hk.6.step\"),\r\n title: t(\"tours.trade_hk.6.step.header\"),\r\n digTitle: \"current values\",\r\n nubbinPosition: \"right\",\r\n top: \"11rem\",\r\n left: \"13rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeHKTourImages.TradeHK06\r\n : TradeHKTourImagesFR.TradeHK06,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade_hk.7.step\"),\r\n title: t(\"tours.trade_hk.7.step.header\"),\r\n digTitle: \"review your order\",\r\n nubbinPosition: \"left\",\r\n top: \"11rem\",\r\n left: \"45.5rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeHKTourImages.TradeHK07\r\n : TradeHKTourImagesFR.TradeHK07,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade_hk.8.step\"),\r\n title: t(\"tours.trade_hk.8.step.header\"),\r\n digTitle: \"order confirmation\",\r\n nubbinPosition: \"left\",\r\n top: \"11rem\",\r\n left: \"45.5rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeHKTourImages.TradeHK08\r\n : TradeHKTourImagesFR.TradeHK08,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.trade_hk.9.step\"),\r\n title: t(\"tours.trade_hk.9.step.header\"),\r\n digTitle: \"overview\",\r\n nubbinPosition: \"bottom\",\r\n top: \"23.2rem\",\r\n left: \"12.3rem\",\r\n image:\r\n language === \"en\"\r\n ? TradeHKTourImages.TradeHK09\r\n : TradeHKTourImagesFR.TradeHK09,\r\n },\r\n ],\r\n [TourKind.InvestingPreferences]: [\r\n {\r\n tooltipDescription: t(\"tours.investing_pref.1.step\"),\r\n title: t(\"tours.investing_pref.1.step.header\"),\r\n digTitle: \"profile\",\r\n nubbinPosition: \"right\",\r\n top: \"5.4rem\",\r\n left: \"30.2rem\",\r\n image:\r\n language === \"en\"\r\n ? InvestingPrefTourImages.InvestingPref01\r\n : InvestingPrefTourImagesFR.InvestingPref01,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.investing_pref.2.step\"),\r\n title: t(\"tours.investing_pref.2.step.header\"),\r\n digTitle: \"update profile\",\r\n nubbinPosition: \"top\",\r\n top: language === \"en\" ? \"37.5rem\" : \"40.5rem\",\r\n left: \"21.3rem\",\r\n image:\r\n language === \"en\"\r\n ? InvestingPrefTourImages.InvestingPref02\r\n : InvestingPrefTourImagesFR.InvestingPref02,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.investing_pref.3.step\"),\r\n title: t(\"tours.investing_pref.3.step.header\"),\r\n digTitle: \"notifications\",\r\n nubbinPosition: \"bottom\",\r\n top: language === \"en\" ? \"13.3rem\" : \"8.5rem\",\r\n left: \"14.3rem\",\r\n image:\r\n language === \"en\"\r\n ? InvestingPrefTourImages.InvestingPref03\r\n : InvestingPrefTourImagesFR.InvestingPref03,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.investing_pref.4.step\"),\r\n title: t(\"tours.investing_pref.4.step.header\"),\r\n digTitle: \"experience\",\r\n nubbinPosition: \"bottom\",\r\n top: language === \"en\" ? \"2.4rem\" : \"18rem\",\r\n left: \"21.3rem\",\r\n image:\r\n language === \"en\"\r\n ? InvestingPrefTourImages.InvestingPref04\r\n : InvestingPrefTourImagesFR.InvestingPref04,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.investing_pref.5.step\"),\r\n title: t(\"tours.investing_pref.5.step.header\"),\r\n digTitle: \"create watchlist\",\r\n nubbinPosition: \"bottom\",\r\n top: language === \"en\" ? \"0.5rem\" : \"-0.5rem\",\r\n left: \"13.7rem\",\r\n image:\r\n language === \"en\"\r\n ? InvestingPrefTourImages.InvestingPref05\r\n : InvestingPrefTourImagesFR.InvestingPref05,\r\n },\r\n ],\r\n [TourKind.IncomeProjection]: [\r\n {\r\n tooltipDescription: t(\"tours.income_proj.1.step\"),\r\n title: t(\"tours.income_proj.1.step.header\"),\r\n digTitle: \"visualize\",\r\n nubbinPosition: \"top\",\r\n top: \"44rem\",\r\n left: \"13.6rem\",\r\n image:\r\n language === \"en\"\r\n ? IncomeProjTourImages.IncomeProj01\r\n : IncomeProjTourImagesFR.IncomeProj01,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.income_proj.2.step\"),\r\n title: t(\"tours.income_proj.2.step.header\"),\r\n digTitle: \"insights\",\r\n nubbinPosition: \"bottom\",\r\n top: language === \"en\" ? \"26.7rem\" : \"25.3rem\",\r\n left: \"14.4rem\",\r\n image:\r\n language === \"en\"\r\n ? IncomeProjTourImages.IncomeProj02\r\n : IncomeProjTourImagesFR.IncomeProj02,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.income_proj.3.step\"),\r\n title: t(\"tours.income_proj.3.step.header\"),\r\n digTitle: \"earning\",\r\n nubbinPosition: \"bottom\",\r\n top: language === \"en\" ? \"44.2rem\" : \"41.3rem\",\r\n left: \"14.4rem\",\r\n image:\r\n language === \"en\"\r\n ? IncomeProjTourImages.IncomeProj03\r\n : IncomeProjTourImagesFR.IncomeProj03,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.income_proj.4.step\"),\r\n title: t(\"tours.income_proj.4.step.header\"),\r\n digTitle: \"symbol view\",\r\n nubbinPosition: \"bottom\",\r\n top: \"56rem\",\r\n left: \"14.4rem\",\r\n image:\r\n language === \"en\"\r\n ? IncomeProjTourImages.IncomeProj04\r\n : IncomeProjTourImagesFR.IncomeProj04,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.income_proj.5.step\"),\r\n title: t(\"tours.income_proj.5.step.header\"),\r\n digTitle: \"expand view\",\r\n nubbinPosition: \"bottom\",\r\n top: \"56rem\",\r\n left: \"14.4rem\",\r\n image:\r\n language === \"en\"\r\n ? IncomeProjTourImages.IncomeProj05\r\n : IncomeProjTourImagesFR.IncomeProj05,\r\n },\r\n ],\r\n [TourKind.Research]: [\r\n {\r\n tooltipDescription: t(\"tours.research.1.step\"),\r\n title: t(\"tours.research.1.step.header\"),\r\n digTitle: \"stay informed\",\r\n nubbinPosition: \"top\",\r\n top: \"38rem\",\r\n left: \"13rem\",\r\n image:\r\n language === \"en\"\r\n ? ResearchTourImages.Research01\r\n : ResearchTourImagesFR.Research01,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.research.2.step\"),\r\n title: t(\"tours.research.2.step.header\"),\r\n digTitle: \"discover\",\r\n nubbinPosition: \"left\",\r\n top: \"14.1rem\",\r\n left: \"46rem\",\r\n image:\r\n language === \"en\"\r\n ? ResearchTourImages.Research02\r\n : ResearchTourImagesFR.Research02,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.research.3.step\"),\r\n title: t(\"tours.research.3.step.header\"),\r\n digTitle: \"explore\",\r\n nubbinPosition: \"bottom\",\r\n top: language === \"en\" ? \"12.8rem\" : \"11.3rem\",\r\n left: \"15.6rem\",\r\n image:\r\n language === \"en\"\r\n ? ResearchTourImages.Research03\r\n : ResearchTourImagesFR.Research03,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.research.4.step\"),\r\n title: t(\"tours.research.4.step.header\"),\r\n digTitle: \"track\",\r\n nubbinPosition: \"top\",\r\n top: language === \"en\" ? \"43.5rem\" : \"44rem\",\r\n left: \"26.6rem\",\r\n image:\r\n language === \"en\"\r\n ? ResearchTourImages.Research04\r\n : ResearchTourImagesFR.Research04,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.research.5.step\"),\r\n title: t(\"tours.research.5.step.header\"),\r\n digTitle: \"tools\",\r\n nubbinPosition: \"top\",\r\n top: \"39.4rem\",\r\n left: \"13.9rem\",\r\n image:\r\n language === \"en\"\r\n ? ResearchTourImages.Research05\r\n : ResearchTourImagesFR.Research05,\r\n },\r\n {\r\n tooltipDescription: t(\"tours.research.6.step\"),\r\n title: t(\"tours.research.6.step.header\"),\r\n digTitle: \"dive into details\",\r\n nubbinPosition: \"bottom\",\r\n top: language === \"en\" ? \"11.9rem\" : \"10.3rem\",\r\n left: \"11.9rem\",\r\n image:\r\n language === \"en\"\r\n ? ResearchTourImages.Research06\r\n : ResearchTourImagesFR.Research06,\r\n },\r\n ],\r\n };\r\n\r\n useEffect(() => {\r\n const APITourProp = {\r\n [TourKind.Featured]: \"featuredTour\",\r\n [TourKind.Trade]: \"learntoTrade\",\r\n [TourKind.TradeHK]: \"learntoTrade\",\r\n [TourKind.AccountManagement]: \"accountManagement\",\r\n [TourKind.InvestingPreferences]: \"investingPreferences\",\r\n [TourKind.Research]: \"research\",\r\n [TourKind.IncomeProjection]: \"incomeProjection\",\r\n };\r\n\r\n if (\r\n !isPublicTour &&\r\n Object.values(TourKind).includes(tourId) &&\r\n TourContent[tourId] &&\r\n step === TourContent[tourId].length\r\n ) {\r\n postOnboardingStatus({\r\n status: {\r\n interactiveTour: {\r\n [APITourProp[tourId]]: true,\r\n },\r\n },\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isPublicTour, tourId, step]);\r\n\r\n if (Object.values(TourKind).includes(tourId) && TourContent[tourId]) {\r\n const curTourContent = TourContent[tourId];\r\n const basePath = `/Tours/${tourParam}${\r\n redirect ? `/${redirectParam}` : ``\r\n }`;\r\n\r\n const nextPage = () =>\r\n !!curTourContent[step] ? history.push({ pathname: `${basePath}/${step + 1}`, state: { samePage: true }}) : null;\r\n const prevPage = () =>\r\n step > 1 ? history.push({ pathname: `${basePath}/${step - 1}`, state: { samePage: true }}) : null;\r\n\r\n if (step < curTourContent?.length + 1 && step > 0) {\r\n const curStep = curTourContent[step - 1] as TourInfo;\r\n\r\n return (\r\n \r\n
\r\n {Object.values(TourContent[tourId]).map(\r\n ({ image }: TourInfo, i) => {\r\n return (\r\n \r\n );\r\n }\r\n )}\r\n
\r\n \r\n
\r\n
\r\n
\r\n img?.complete && setImageLoaded(true)}\r\n onLoad={() => setImageLoaded(true)}\r\n />\r\n {imageLoaded ? (\r\n \r\n 1}\r\n isLast={!curTourContent[step]}\r\n onNextClick={nextPage}\r\n onPrevClick={prevPage}\r\n isPublicTour={isPublicTour}\r\n redirectPath={redirect}\r\n tourId={tourId}\r\n step={step}\r\n />\r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n );\r\n }\r\n return ;\r\n }\r\n return (\r\n \r\n );\r\n};\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAABQCAYAAAADfLX5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAUAAAAAB5jAsmAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAAAcklEQVRYCe3SwQnAIBQFQWMLNpWC0n8EG5iTt/X8+MKwz3q/f1x88+Ltc7oPKBxRRBTgoIoiogAHVRQRBTiooogowEEVRUQBDqooIgpwUEURUYCDKoqIAhxUUUQU4KCKIqIAB1UUEQU4qKKIKMBBFZFoA0l1Am66e+3OAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD0AAABwCAYAAACtpHhbAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAPaADAAQAAAABAAAAcAAAAABiQPpUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAABLklEQVR4Ae3bsQ0CQRQDUY4WaIqCqOQaBonA0rQwOxd9h/bb9K77vr+Pw77nYX3/dSt9inrSSYsX6HmLcVEtacwhDkmLcVEtacwhDkmLcVEtacwhDkmLcVEtacwhDkmLcVEtacwhDkmLcVEtacwhDkmLcVEtacwhDkmLcVEtacwhDkmLcVEtacwhDkmLcVEtacwhDkmLcVEtacwhDkmLcVEtacwhDkmLcVEtacwhDkmLcVEtacwhDkdKX6/3p/+nxa961Y583pWev/xIWg68eklvCvmRtBx49ZLeFPIjaTnw6iW9KeRH0nLg1Ut6U8iPpOXAq5f0ppAfScuBVy/pTSE/kpYDr17Sm0J+JC0HXr2kN4X8SFoOvHpJbwr5kbQcePWS3hTyI2k58OodKf0DPYkFYse2zk4AAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","import './styles/app.scss';\r\nimport { useEffect } from 'react';\r\nimport { HashRouter, Switch, Route, Redirect, useLocation } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IconRegistryProvider } from '@rig/rw-core-components';\r\nimport { tourRouteNames, TourRoutePath } from './static/routes';\r\nimport { Tours } from './components/tours/Tours';\r\n\r\nconst RouteController = ({ children }) => {\r\n const { t, i18n } = useTranslation();\r\n const location = useLocation<{ samePage: boolean }>();\r\n\r\n useEffect(() => {\r\n if (location.state?.samePage) return;\r\n const matchedPaths = Object.values(TourRoutePath).filter((val) =>\r\n tourRouteNames[val] && new RegExp(`${val}(/|$)`, 'i').test(location.pathname));\r\n if (!matchedPaths.length) return;\r\n matchedPaths.sort((a, b) => b.length - a.length);\r\n const path = matchedPaths[0];\r\n\r\n if (process.env.NODE_ENV === 'production') {\r\n window.dataLayer.push({\r\n 'event': 'VirtualPageview',\r\n 'vpvURL': `/vpv/ReactUI${path}`,\r\n 'vpvName': tourRouteNames[path],\r\n 'language': i18n.language.toUpperCase()\r\n });\r\n }\r\n\r\n document.title = `${t(`title.${path.slice(1).toLowerCase().replace(/\\//g, '.')}`)} - ${t('direct_investing')}`;\r\n }, [location]);\r\n\r\n return {children};\r\n};\r\n\r\nexport const ToursApp = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport ReactDOM from 'react-dom';\r\nimport './i18n';\r\nimport { ReactQueryConfigProvider } from 'react-query';\r\nimport { ToursApp } from './App.Tours';\r\n// import registerServiceWorker from './registerServiceWorker';\r\n\r\nif (process.env.NODE_ENV === 'production') window.dataLayer = window.dataLayer || [];\r\n\r\nconst rootElement = document.getElementById('react-container');\r\n\r\nReactDOM.render(\r\n \r\n \r\n , rootElement);\r\n\r\n// registerServiceWorker();\r\n\r\nconst viewportMeta = document.querySelector('meta[name=\"viewport\"]') as HTMLMetaElement;\r\nviewportMeta.content = viewportMeta.content.replace(/width=[^,]*/, 'width=device-width');\r\n"],"sourceRoot":""}