smartxtrader 3.8.1-xm.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1270) hide show
  1. package/.babelrc +20 -0
  2. package/.dockerignore +5 -0
  3. package/.eslintignore +6 -0
  4. package/.eslintrc.js +81 -0
  5. package/.gitattributes +6 -0
  6. package/.stylelintrc.js +33 -0
  7. package/Dockerfile +14 -0
  8. package/Gruntfile.js +38 -0
  9. package/LICENSE +201 -0
  10. package/README.md +191 -0
  11. package/api/_lib/http_utils.js +150 -0
  12. package/api/_lib/legal_consent_store.js +108 -0
  13. package/api/_lib/telegram_session_store.js +182 -0
  14. package/api/_lib/telegram_subscription.js +507 -0
  15. package/api/deriv/auth.js +501 -0
  16. package/api/legal/accept.js +99 -0
  17. package/api/legal/delete.js +77 -0
  18. package/api/legal/status.js +71 -0
  19. package/api/logout.js +58 -0
  20. package/api/session-status.js +74 -0
  21. package/api/telegram/auth.js +117 -0
  22. package/api/telegram/control.js +10 -0
  23. package/api/telegram/logout.js +69 -0
  24. package/api/telegram/notify-login.js +79 -0
  25. package/api/telegram/status.js +153 -0
  26. package/api/telegram/webhook.js +1361 -0
  27. package/binary.com.conf +22 -0
  28. package/build/aliases.yaml +66 -0
  29. package/build/babel.js +19 -0
  30. package/build/checkDependencies.js +10 -0
  31. package/build/clean.js +5 -0
  32. package/build/concurrent.js +8 -0
  33. package/build/config/constants.js +54 -0
  34. package/build/config/helpers.js +37 -0
  35. package/build/config/init.js +48 -0
  36. package/build/connect.js +103 -0
  37. package/build/copy.js +30 -0
  38. package/build/cssmin.js +20 -0
  39. package/build/eslint.js +15 -0
  40. package/build/gh-pages.js +27 -0
  41. package/build/hashres.js +17 -0
  42. package/build/mochaTest.js +20 -0
  43. package/build/postcss.js +20 -0
  44. package/build/sass.js +17 -0
  45. package/build/shell.js +194 -0
  46. package/build/stylelint.js +13 -0
  47. package/build/watch.js +21 -0
  48. package/build/webpack/config_app.js +23 -0
  49. package/build/webpack/config_common.js +77 -0
  50. package/build/webpack/helpers.js +19 -0
  51. package/build/webpack/paths.js +11 -0
  52. package/build/webpack/plugins.js +84 -0
  53. package/build/webpack.js +23 -0
  54. package/crowdin.yaml +6 -0
  55. package/cyberpunk-ui/index.html +14 -0
  56. package/cyberpunk-ui/package-lock.json +6321 -0
  57. package/cyberpunk-ui/package.json +37 -0
  58. package/cyberpunk-ui/public/icons/icon-192.svg +21 -0
  59. package/cyberpunk-ui/public/icons/icon-512.svg +21 -0
  60. package/cyberpunk-ui/public/manifest.webmanifest +22 -0
  61. package/cyberpunk-ui/src/App.jsx +49 -0
  62. package/cyberpunk-ui/src/api/client.js +53 -0
  63. package/cyberpunk-ui/src/api/session.ts +42 -0
  64. package/cyberpunk-ui/src/components/chart/DigitDistributionTable.jsx +522 -0
  65. package/cyberpunk-ui/src/components/chart/TradingChart.jsx +45 -0
  66. package/cyberpunk-ui/src/components/common/InstrumentBadge.jsx +28 -0
  67. package/cyberpunk-ui/src/components/common/KeyboardShortcuts.jsx +47 -0
  68. package/cyberpunk-ui/src/components/common/NotificationsCenter.jsx +24 -0
  69. package/cyberpunk-ui/src/components/common/SubscriptionGate.jsx +388 -0
  70. package/cyberpunk-ui/src/components/layout/SplitLayout.jsx +65 -0
  71. package/cyberpunk-ui/src/components/layout/TradingBackground.jsx +210 -0
  72. package/cyberpunk-ui/src/components/legal/LegalGate.jsx +250 -0
  73. package/cyberpunk-ui/src/components/navigation/BottomNav.jsx +45 -0
  74. package/cyberpunk-ui/src/components/navigation/TopBar.jsx +98 -0
  75. package/cyberpunk-ui/src/components/panels/ChartPanel.jsx +92 -0
  76. package/cyberpunk-ui/src/components/panels/PositionsHistory.jsx +94 -0
  77. package/cyberpunk-ui/src/components/panels/TradePanel.jsx +450 -0
  78. package/cyberpunk-ui/src/components/panels/TransformerRangeModal.jsx +184 -0
  79. package/cyberpunk-ui/src/components/panels/Watchlist.jsx +81 -0
  80. package/cyberpunk-ui/src/components/settings/ChartSettingsPortal.jsx +66 -0
  81. package/cyberpunk-ui/src/components/settings/SettingsSheet.jsx +76 -0
  82. package/cyberpunk-ui/src/config/legal.js +104 -0
  83. package/cyberpunk-ui/src/config/smartanalizer.js +128 -0
  84. package/cyberpunk-ui/src/hooks/useAppLayout.js +34 -0
  85. package/cyberpunk-ui/src/main.jsx +21 -0
  86. package/cyberpunk-ui/src/pages/AuthPage.tsx +265 -0
  87. package/cyberpunk-ui/src/pages/Dashboard.jsx +55 -0
  88. package/cyberpunk-ui/src/pages/Markets.jsx +15 -0
  89. package/cyberpunk-ui/src/pages/RegisterPage.tsx +202 -0
  90. package/cyberpunk-ui/src/pages/SettingsPage.jsx +180 -0
  91. package/cyberpunk-ui/src/pages/Trades.jsx +12 -0
  92. package/cyberpunk-ui/src/routes/AppRouter.jsx +21 -0
  93. package/cyberpunk-ui/src/store/sessionSlice.js +94 -0
  94. package/cyberpunk-ui/src/store/settingsSlice.js +68 -0
  95. package/cyberpunk-ui/src/store/store.js +18 -0
  96. package/cyberpunk-ui/src/store/symbolsSlice.js +93 -0
  97. package/cyberpunk-ui/src/store/uiSlice.js +80 -0
  98. package/cyberpunk-ui/src/styles/global.css +1404 -0
  99. package/cyberpunk-ui/src/theme/ThemeProvider.jsx +47 -0
  100. package/cyberpunk-ui/src/utils/authToken.ts +99 -0
  101. package/cyberpunk-ui/src/utils/instrumentIcons.js +24 -0
  102. package/cyberpunk-ui/src/utils/persist.js +24 -0
  103. package/cyberpunk-ui/src/vite-env.d.ts +9 -0
  104. package/cyberpunk-ui/tsconfig.json +21 -0
  105. package/cyberpunk-ui/tsconfig.node.json +9 -0
  106. package/cyberpunk-ui/vite.config.js +34 -0
  107. package/docker-compose.portainer.yml +13 -0
  108. package/docker-compose.yml +13 -0
  109. package/docs/canvasjs-candlesticks.md +138 -0
  110. package/docs/portainer-deployment.md +22 -0
  111. package/docs/telegram-bridge.md +207 -0
  112. package/docs/telegram_bot_integration.md +172 -0
  113. package/docs/value-distribution-scheme.ru.md +35 -0
  114. package/favicon.ico +0 -0
  115. package/mobile/App.js +138 -0
  116. package/mobile/chartHtml.js +147 -0
  117. package/mobile/components/AnimatedBackground.js +145 -0
  118. package/mobile/components/ChartWebView.js +113 -0
  119. package/mobile/components/Controls.js +245 -0
  120. package/mobile/metro.config.js +17 -0
  121. package/mobile/theme.js +57 -0
  122. package/package.json +181 -0
  123. package/packages/canvasjs-runtime/LICENSE +201 -0
  124. package/packages/canvasjs-runtime/README.md +7 -0
  125. package/packages/canvasjs-runtime/index.js +18 -0
  126. package/packages/canvasjs-runtime/package.json +18 -0
  127. package/packages/webtrader-charts/.gitattributes +3 -0
  128. package/packages/webtrader-charts/LICENSE +201 -0
  129. package/packages/webtrader-charts/README.md +154 -0
  130. package/packages/webtrader-charts/package.json +17 -0
  131. package/packages/webtrader-charts/rollup.config.iife.mjs +6 -0
  132. package/packages/webtrader-charts/rollup.config.mjs +144 -0
  133. package/packages/webtrader-charts/src/chartDraw.js +171 -0
  134. package/packages/webtrader-charts/src/chartOptions.html +173 -0
  135. package/packages/webtrader-charts/src/chartOptions.js +412 -0
  136. package/packages/webtrader-charts/src/chartOptions.scss +368 -0
  137. package/packages/webtrader-charts/src/chartTemplateManager.html +74 -0
  138. package/packages/webtrader-charts/src/chartTemplateManager.js +305 -0
  139. package/packages/webtrader-charts/src/chartWindow.html +12 -0
  140. package/packages/webtrader-charts/src/chartWindow.js +224 -0
  141. package/packages/webtrader-charts/src/charts.js +689 -0
  142. package/packages/webtrader-charts/src/charts.scss +128 -0
  143. package/packages/webtrader-charts/src/common/chartingRequestMap.js +381 -0
  144. package/packages/webtrader-charts/src/common/currentprice.js +155 -0
  145. package/packages/webtrader-charts/src/common/globals.js +15 -0
  146. package/packages/webtrader-charts/src/common/highchartsMousewheel.js +50 -0
  147. package/packages/webtrader-charts/src/common/indicators.js +340 -0
  148. package/packages/webtrader-charts/src/common/liveapi.js +194 -0
  149. package/packages/webtrader-charts/src/common/notification.js +37 -0
  150. package/packages/webtrader-charts/src/common/ohlc_handler.js +160 -0
  151. package/packages/webtrader-charts/src/common/rivetsExtra.js +163 -0
  152. package/packages/webtrader-charts/src/common/stream_handler.js +164 -0
  153. package/packages/webtrader-charts/src/common/utils.js +121 -0
  154. package/packages/webtrader-charts/src/crosshair.js +24 -0
  155. package/packages/webtrader-charts/src/draw/horizontal_line.js +124 -0
  156. package/packages/webtrader-charts/src/draw/properties_selector.html +4 -0
  157. package/packages/webtrader-charts/src/draw/properties_selector.js +87 -0
  158. package/packages/webtrader-charts/src/draw/vertical_line.js +123 -0
  159. package/packages/webtrader-charts/src/i18n/ach.json +102 -0
  160. package/packages/webtrader-charts/src/i18n/ar.json +96 -0
  161. package/packages/webtrader-charts/src/i18n/build.js +35 -0
  162. package/packages/webtrader-charts/src/i18n/de.json +102 -0
  163. package/packages/webtrader-charts/src/i18n/dictionary.json +1 -0
  164. package/packages/webtrader-charts/src/i18n/en.json +102 -0
  165. package/packages/webtrader-charts/src/i18n/es.json +102 -0
  166. package/packages/webtrader-charts/src/i18n/fr.json +102 -0
  167. package/packages/webtrader-charts/src/i18n/id.json +102 -0
  168. package/packages/webtrader-charts/src/i18n/it.json +102 -0
  169. package/packages/webtrader-charts/src/i18n/ja.json +102 -0
  170. package/packages/webtrader-charts/src/i18n/pl.json +102 -0
  171. package/packages/webtrader-charts/src/i18n/pt.json +102 -0
  172. package/packages/webtrader-charts/src/i18n/ru.json +102 -0
  173. package/packages/webtrader-charts/src/i18n/th.json +102 -0
  174. package/packages/webtrader-charts/src/i18n/vi.json +102 -0
  175. package/packages/webtrader-charts/src/i18n/zh_cn.json +102 -0
  176. package/packages/webtrader-charts/src/i18n/zh_tw.json +102 -0
  177. package/packages/webtrader-charts/src/images/Dash.svg +1 -0
  178. package/packages/webtrader-charts/src/images/DashDot.svg +1 -0
  179. package/packages/webtrader-charts/src/images/Dot.svg +1 -0
  180. package/packages/webtrader-charts/src/images/LongDash.svg +1 -0
  181. package/packages/webtrader-charts/src/images/LongDashDot.svg +1 -0
  182. package/packages/webtrader-charts/src/images/LongDashDotDot.svg +1 -0
  183. package/packages/webtrader-charts/src/images/ShortDash.svg +1 -0
  184. package/packages/webtrader-charts/src/images/ShortDashDot.svg +1 -0
  185. package/packages/webtrader-charts/src/images/ShortDashDotDot.svg +1 -0
  186. package/packages/webtrader-charts/src/images/ShortDot.svg +1 -0
  187. package/packages/webtrader-charts/src/images/Solid.svg +1 -0
  188. package/packages/webtrader-charts/src/images/back-arrow-w.svg +1 -0
  189. package/packages/webtrader-charts/src/images/back-arrow.svg +1 -0
  190. package/packages/webtrader-charts/src/images/blogger.svg +1 -0
  191. package/packages/webtrader-charts/src/images/blue_up_arrow.svg +1 -0
  192. package/packages/webtrader-charts/src/images/circle-close.svg +1 -0
  193. package/packages/webtrader-charts/src/images/close-blue.svg +1 -0
  194. package/packages/webtrader-charts/src/images/close-white.svg +1 -0
  195. package/packages/webtrader-charts/src/images/close.svg +1 -0
  196. package/packages/webtrader-charts/src/images/favorite-active.svg +1 -0
  197. package/packages/webtrader-charts/src/images/favorite-normal.svg +1 -0
  198. package/packages/webtrader-charts/src/images/fb.svg +1 -0
  199. package/packages/webtrader-charts/src/images/g-plus.svg +1 -0
  200. package/packages/webtrader-charts/src/images/horizontal_line.svg +1 -0
  201. package/packages/webtrader-charts/src/images/ic-edit.svg +1 -0
  202. package/packages/webtrader-charts/src/images/ic-search.svg +1 -0
  203. package/packages/webtrader-charts/src/images/ic-tip.svg +1 -0
  204. package/packages/webtrader-charts/src/images/images.js +33 -0
  205. package/packages/webtrader-charts/src/images/indicators/Abandoned_baby.svg +1 -0
  206. package/packages/webtrader-charts/src/images/indicators/Advance_block.svg +1 -0
  207. package/packages/webtrader-charts/src/images/indicators/Bet_hold.svg +1 -0
  208. package/packages/webtrader-charts/src/images/indicators/Bullish Piercing.svg +1 -0
  209. package/packages/webtrader-charts/src/images/indicators/Dark_cloud_cover.svg +1 -0
  210. package/packages/webtrader-charts/src/images/indicators/Doji.svg +1 -0
  211. package/packages/webtrader-charts/src/images/indicators/Doji_star.svg +1 -0
  212. package/packages/webtrader-charts/src/images/indicators/Download.svg +1 -0
  213. package/packages/webtrader-charts/src/images/indicators/Dragonfly_doji.svg +1 -0
  214. package/packages/webtrader-charts/src/images/indicators/Engulfing_pattern.svg +1 -0
  215. package/packages/webtrader-charts/src/images/indicators/Inverted-hammer.svg +1 -0
  216. package/packages/webtrader-charts/src/images/indicators/breakaway_pattern.svg +1 -0
  217. package/packages/webtrader-charts/src/images/indicators/closing_marubozu.svg +1 -0
  218. package/packages/webtrader-charts/src/images/indicators/counterattack.svg +1 -0
  219. package/packages/webtrader-charts/src/images/indicators/down_fractal.svg +1 -0
  220. package/packages/webtrader-charts/src/images/indicators/evening_doji_star.svg +1 -0
  221. package/packages/webtrader-charts/src/images/indicators/evening_star.svg +1 -0
  222. package/packages/webtrader-charts/src/images/indicators/gap_three_methods.svg +1 -0
  223. package/packages/webtrader-charts/src/images/indicators/gravestone_doji.svg +1 -0
  224. package/packages/webtrader-charts/src/images/indicators/hammer.svg +1 -0
  225. package/packages/webtrader-charts/src/images/indicators/hanging_man.svg +1 -0
  226. package/packages/webtrader-charts/src/images/indicators/harami_cross.svg +1 -0
  227. package/packages/webtrader-charts/src/images/indicators/harami_pattern.svg +1 -0
  228. package/packages/webtrader-charts/src/images/indicators/high_wave.svg +1 -0
  229. package/packages/webtrader-charts/src/images/indicators/hikkake.svg +1 -0
  230. package/packages/webtrader-charts/src/images/indicators/homing_pigeon.svg +1 -0
  231. package/packages/webtrader-charts/src/images/indicators/identical_three_crows.svg +1 -0
  232. package/packages/webtrader-charts/src/images/indicators/in-neck.svg +1 -0
  233. package/packages/webtrader-charts/src/images/indicators/indicatorImages.js +126 -0
  234. package/packages/webtrader-charts/src/images/indicators/kicking.svg +1 -0
  235. package/packages/webtrader-charts/src/images/indicators/ladder-bottom.svg +1 -0
  236. package/packages/webtrader-charts/src/images/indicators/long-legged-doji.svg +1 -0
  237. package/packages/webtrader-charts/src/images/indicators/long-line-candles.svg +1 -0
  238. package/packages/webtrader-charts/src/images/indicators/marubozu.svg +1 -0
  239. package/packages/webtrader-charts/src/images/indicators/mat-hold.svg +1 -0
  240. package/packages/webtrader-charts/src/images/indicators/matching-low.svg +1 -0
  241. package/packages/webtrader-charts/src/images/indicators/morning-doji-start.svg +1 -0
  242. package/packages/webtrader-charts/src/images/indicators/morning-star.svg +1 -0
  243. package/packages/webtrader-charts/src/images/indicators/on-neck.svg +1 -0
  244. package/packages/webtrader-charts/src/images/indicators/rickshaw man.svg +1 -0
  245. package/packages/webtrader-charts/src/images/indicators/rising falling three methods.svg +1 -0
  246. package/packages/webtrader-charts/src/images/indicators/salled pattern.svg +1 -0
  247. package/packages/webtrader-charts/src/images/indicators/separating lines.svg +1 -0
  248. package/packages/webtrader-charts/src/images/indicators/shooting star.svg +1 -0
  249. package/packages/webtrader-charts/src/images/indicators/short line candle.svg +1 -0
  250. package/packages/webtrader-charts/src/images/indicators/side by side white line.svg +1 -0
  251. package/packages/webtrader-charts/src/images/indicators/spinning top.svg +1 -0
  252. package/packages/webtrader-charts/src/images/indicators/stick sandwich.svg +1 -0
  253. package/packages/webtrader-charts/src/images/indicators/takuri line.svg +1 -0
  254. package/packages/webtrader-charts/src/images/indicators/tasuki gap.svg +1 -0
  255. package/packages/webtrader-charts/src/images/indicators/three_black_crows.svg +1 -0
  256. package/packages/webtrader-charts/src/images/indicators/three_inside_up_down.svg +1 -0
  257. package/packages/webtrader-charts/src/images/indicators/three_line_strike.svg +1 -0
  258. package/packages/webtrader-charts/src/images/indicators/three_outside_up_down.svg +1 -0
  259. package/packages/webtrader-charts/src/images/indicators/three_river.svg +1 -0
  260. package/packages/webtrader-charts/src/images/indicators/three_stars_in_the_south.svg +1 -0
  261. package/packages/webtrader-charts/src/images/indicators/three_white_soldiers.svg +1 -0
  262. package/packages/webtrader-charts/src/images/indicators/thrusting_pattern.svg +1 -0
  263. package/packages/webtrader-charts/src/images/indicators/tristar.svg +1 -0
  264. package/packages/webtrader-charts/src/images/indicators/two_crows.svg +1 -0
  265. package/packages/webtrader-charts/src/images/indicators/typprice.svg +1 -0
  266. package/packages/webtrader-charts/src/images/indicators/up_fractal.svg +1 -0
  267. package/packages/webtrader-charts/src/images/indicators/upside_gap_two_crows.svg +1 -0
  268. package/packages/webtrader-charts/src/images/maximize.svg +1 -0
  269. package/packages/webtrader-charts/src/images/minimize.svg +1 -0
  270. package/packages/webtrader-charts/src/images/orange_down_arrow.svg +1 -0
  271. package/packages/webtrader-charts/src/images/twitter.svg +1 -0
  272. package/packages/webtrader-charts/src/images/vertical_line.svg +1 -0
  273. package/packages/webtrader-charts/src/images/vk.svg +1 -0
  274. package/packages/webtrader-charts/src/index.js +61 -0
  275. package/packages/webtrader-charts/src/index.scss +5 -0
  276. package/packages/webtrader-charts/src/indicatorBuilder.html +141 -0
  277. package/packages/webtrader-charts/src/indicatorBuilder.js +157 -0
  278. package/packages/webtrader-charts/src/indicatorBuilder.scss +386 -0
  279. package/packages/webtrader-charts/src/indicatorManagement.html +123 -0
  280. package/packages/webtrader-charts/src/indicatorManagement.js +217 -0
  281. package/packages/webtrader-charts/src/indicatorManagement.scss +264 -0
  282. package/packages/webtrader-charts/src/indicators/ATR.js +130 -0
  283. package/packages/webtrader-charts/src/indicators/BOP.js +86 -0
  284. package/packages/webtrader-charts/src/indicators/IndicatorBase.js +119 -0
  285. package/packages/webtrader-charts/src/indicators/NATR.js +63 -0
  286. package/packages/webtrader-charts/src/indicators/ROCP.js +64 -0
  287. package/packages/webtrader-charts/src/indicators/ROCR.js +64 -0
  288. package/packages/webtrader-charts/src/indicators/STDDEV.js +107 -0
  289. package/packages/webtrader-charts/src/indicators/WILLR.js +64 -0
  290. package/packages/webtrader-charts/src/indicators/adx.js +115 -0
  291. package/packages/webtrader-charts/src/indicators/adxr.js +53 -0
  292. package/packages/webtrader-charts/src/indicators/alligator.js +140 -0
  293. package/packages/webtrader-charts/src/indicators/alma.js +80 -0
  294. package/packages/webtrader-charts/src/indicators/ao.js +119 -0
  295. package/packages/webtrader-charts/src/indicators/apo.js +57 -0
  296. package/packages/webtrader-charts/src/indicators/aroon.js +173 -0
  297. package/packages/webtrader-charts/src/indicators/aroonosc.js +75 -0
  298. package/packages/webtrader-charts/src/indicators/bbands.js +204 -0
  299. package/packages/webtrader-charts/src/indicators/cc.js +51 -0
  300. package/packages/webtrader-charts/src/indicators/cci.js +97 -0
  301. package/packages/webtrader-charts/src/indicators/cdl-mangled-props.js +1135 -0
  302. package/packages/webtrader-charts/src/indicators/cdl.js +1694 -0
  303. package/packages/webtrader-charts/src/indicators/chop.js +79 -0
  304. package/packages/webtrader-charts/src/indicators/cks.js +190 -0
  305. package/packages/webtrader-charts/src/indicators/cmo.js +104 -0
  306. package/packages/webtrader-charts/src/indicators/dc.js +175 -0
  307. package/packages/webtrader-charts/src/indicators/dema.js +70 -0
  308. package/packages/webtrader-charts/src/indicators/dx.js +162 -0
  309. package/packages/webtrader-charts/src/indicators/ema.js +66 -0
  310. package/packages/webtrader-charts/src/indicators/fractal.js +162 -0
  311. package/packages/webtrader-charts/src/indicators/hma.js +74 -0
  312. package/packages/webtrader-charts/src/indicators/ichimoku.js +246 -0
  313. package/packages/webtrader-charts/src/indicators/index.js +73 -0
  314. package/packages/webtrader-charts/src/indicators/kama.js +83 -0
  315. package/packages/webtrader-charts/src/indicators/lsma.js +71 -0
  316. package/packages/webtrader-charts/src/indicators/lwma.js +75 -0
  317. package/packages/webtrader-charts/src/indicators/macd.js +188 -0
  318. package/packages/webtrader-charts/src/indicators/mama.js +178 -0
  319. package/packages/webtrader-charts/src/indicators/mass.js +93 -0
  320. package/packages/webtrader-charts/src/indicators/max.js +61 -0
  321. package/packages/webtrader-charts/src/indicators/min.js +61 -0
  322. package/packages/webtrader-charts/src/indicators/mom.js +63 -0
  323. package/packages/webtrader-charts/src/indicators/ppo.js +200 -0
  324. package/packages/webtrader-charts/src/indicators/roc.js +63 -0
  325. package/packages/webtrader-charts/src/indicators/rsi.js +75 -0
  326. package/packages/webtrader-charts/src/indicators/sar.js +216 -0
  327. package/packages/webtrader-charts/src/indicators/sma.js +71 -0
  328. package/packages/webtrader-charts/src/indicators/smma.js +81 -0
  329. package/packages/webtrader-charts/src/indicators/stoch.js +169 -0
  330. package/packages/webtrader-charts/src/indicators/stochf.js +140 -0
  331. package/packages/webtrader-charts/src/indicators/stochrsi.js +70 -0
  332. package/packages/webtrader-charts/src/indicators/stochs.js +141 -0
  333. package/packages/webtrader-charts/src/indicators/sum.js +60 -0
  334. package/packages/webtrader-charts/src/indicators/t3.js +119 -0
  335. package/packages/webtrader-charts/src/indicators/tema.js +81 -0
  336. package/packages/webtrader-charts/src/indicators/trange.js +75 -0
  337. package/packages/webtrader-charts/src/indicators/trima.js +73 -0
  338. package/packages/webtrader-charts/src/indicators/typprice.js +50 -0
  339. package/packages/webtrader-charts/src/indicators/ultosc.js +103 -0
  340. package/packages/webtrader-charts/src/indicators/var.js +96 -0
  341. package/packages/webtrader-charts/src/indicators/wclprice.js +51 -0
  342. package/packages/webtrader-charts/src/indicators/wma.js +79 -0
  343. package/packages/webtrader-charts/src/indicators-config.js +2138 -0
  344. package/packages/webtrader-charts/src/lib/jquery.ddslick.js +361 -0
  345. package/packages/webtrader-charts/src/lib/leanModal.js +81 -0
  346. package/packages/webtrader-charts/src/lib/leanModal.scss +52 -0
  347. package/packages/webtrader-charts/src/lib/spectrum.js +2323 -0
  348. package/packages/webtrader-charts/src/lib/spectrum.scss +507 -0
  349. package/packages/webtrader-charts/src/lib/toastr.js +380 -0
  350. package/packages/webtrader-charts/src/lib/toastr.scss +161 -0
  351. package/packages/webtrader-charts/src/mobileview.scss +29 -0
  352. package/packages/webtrader-charts/src/overlayManagement.html +30 -0
  353. package/packages/webtrader-charts/src/overlayManagement.js +297 -0
  354. package/packages/webtrader-charts/src/overlayManagement.scss +77 -0
  355. package/packages/webtrader-charts/src/tableView.html +28 -0
  356. package/packages/webtrader-charts/src/tableView.js +166 -0
  357. package/packages/webtrader-charts/src/tableView.scss +15 -0
  358. package/scripts/README.md +68 -0
  359. package/scripts/__tests__/static_strings.js +32 -0
  360. package/scripts/__tests__/svg_test.js +47 -0
  361. package/scripts/common.js +93 -0
  362. package/scripts/config/pages.js +124 -0
  363. package/scripts/config/sitemap_urls.js +56 -0
  364. package/scripts/extract_js_texts.js +180 -0
  365. package/scripts/gettext.js +155 -0
  366. package/scripts/js_texts/extracted_strings_app.js +520 -0
  367. package/scripts/js_texts/static_strings_app.js +62 -0
  368. package/scripts/js_translation.js +99 -0
  369. package/scripts/render.js +406 -0
  370. package/scripts/sitemap.js +68 -0
  371. package/scripts/ssr-scriptjs-shim.js +5 -0
  372. package/scripts/update_translations.sh +76 -0
  373. package/src/download/fonts/binary_symbols.woff +0 -0
  374. package/src/download/fonts/guide/casino_hand-webfont.eot +0 -0
  375. package/src/download/fonts/guide/casino_hand-webfont.svg +243 -0
  376. package/src/download/fonts/guide/casino_hand-webfont.ttf +0 -0
  377. package/src/download/fonts/guide/casino_hand-webfont.woff +0 -0
  378. package/src/images/common/authenticated.svg +1 -0
  379. package/src/images/common/close_icon.svg +1 -0
  380. package/src/images/common/email_sent.svg +1 -0
  381. package/src/images/common/globe-with_logo.svg +1 -0
  382. package/src/images/common/ic-anchor.svg +1 -0
  383. package/src/images/common/livechat.svg +1 -0
  384. package/src/images/common/logos/ic-brand-binarybot (2).svg +18 -0
  385. package/src/images/common/logos/ic-brand-binarybot.svg +21 -0
  386. package/src/images/common/logos/ic-brand-dbot.svg +1 -0
  387. package/src/images/common/logos/ic-brand-dmt5.svg +1 -0
  388. package/src/images/common/logos/ic-brand-dtrade2.svg +1 -0
  389. package/src/images/common/logos/ic-brand-dtrader.svg +36 -0
  390. package/src/images/common/logos/ic-brand-dxtrade.svg +1 -0
  391. package/src/images/common/logos/icon_smarttrader.svg +1 -0
  392. package/src/images/common/logos/xxhdpi.png +0 -0
  393. package/src/images/common/og_image.gif +0 -0
  394. package/src/images/common/plus.svg +1 -0
  395. package/src/images/common/scrollup_icon.svg +1 -0
  396. package/src/images/languages/ic-flag-de.svg +1 -0
  397. package/src/images/languages/ic-flag-en.svg +1 -0
  398. package/src/images/languages/ic-flag-es.svg +1 -0
  399. package/src/images/languages/ic-flag-fr.svg +1 -0
  400. package/src/images/languages/ic-flag-id.svg +1 -0
  401. package/src/images/languages/ic-flag-it.svg +1 -0
  402. package/src/images/languages/ic-flag-pl.svg +1 -0
  403. package/src/images/languages/ic-flag-pt.svg +1 -0
  404. package/src/images/languages/ic-flag-ru.svg +1 -0
  405. package/src/images/languages/ic-flag-th.svg +1 -0
  406. package/src/images/languages/ic-flag-uk.svg +1 -0
  407. package/src/images/languages/ic-flag-vi.svg +1 -0
  408. package/src/images/languages/ic-flag-zh_cn.svg +1 -0
  409. package/src/images/languages/ic-flag-zh_tw.svg +1 -0
  410. package/src/images/pages/contact/chat-icon.svg +1 -0
  411. package/src/images/pages/contact/search-icon.svg +1 -0
  412. package/src/images/pages/footer/ic-fullscreen.svg +1 -0
  413. package/src/images/pages/footer/ic-help-centre.svg +66 -0
  414. package/src/images/pages/footer/ic-livechat.svg +4 -0
  415. package/src/images/pages/footer/ic-whatsapp.svg +6 -0
  416. package/src/images/pages/header/copytrader.png +0 -0
  417. package/src/images/pages/header/copytrader.svg +8 -0
  418. package/src/images/pages/header/deriv-com-logo.svg +1 -0
  419. package/src/images/pages/header/deriv-com-logo1.svg +1 -0
  420. package/src/images/pages/header/deriv-logo.svg +8 -0
  421. package/src/images/pages/header/header.svg +63 -0
  422. package/src/images/pages/header/ic-add-account.svg +1 -0
  423. package/src/images/pages/header/ic-alert-danger.svg +1 -0
  424. package/src/images/pages/header/ic-alert-info.svg +1 -0
  425. package/src/images/pages/header/ic-alert-success.svg +1 -0
  426. package/src/images/pages/header/ic-alert-warning.svg +1 -0
  427. package/src/images/pages/header/ic-appstore-home.svg +1 -0
  428. package/src/images/pages/header/ic-bell.svg +1 -0
  429. package/src/images/pages/header/ic-box.svg +1 -0
  430. package/src/images/pages/header/ic-brand-binarybot.svg +21 -0
  431. package/src/images/pages/header/ic-brand-dbot.svg +31 -0
  432. package/src/images/pages/header/ic-brand-dtrader.svg +25 -0
  433. package/src/images/pages/header/ic-cashier.svg +1 -0
  434. package/src/images/pages/header/ic-chevron-down.svg +1 -0
  435. package/src/images/pages/header/ic-chevron-left.svg +1 -0
  436. package/src/images/pages/header/ic-chevron-right.svg +1 -0
  437. package/src/images/pages/header/ic-close.svg +1 -0
  438. package/src/images/pages/header/ic-currency-aud.svg +1 -0
  439. package/src/images/pages/header/ic-currency-bch.svg +1 -0
  440. package/src/images/pages/header/ic-currency-btc.svg +1 -0
  441. package/src/images/pages/header/ic-currency-dai.svg +1 -0
  442. package/src/images/pages/header/ic-currency-eth.svg +1 -0
  443. package/src/images/pages/header/ic-currency-eur.svg +1 -0
  444. package/src/images/pages/header/ic-currency-eusdt.svg +1 -0
  445. package/src/images/pages/header/ic-currency-gbp.svg +1 -0
  446. package/src/images/pages/header/ic-currency-ltc.svg +1 -0
  447. package/src/images/pages/header/ic-currency-tusdt.svg +1 -0
  448. package/src/images/pages/header/ic-currency-unknown.svg +1 -0
  449. package/src/images/pages/header/ic-currency-usd.svg +1 -0
  450. package/src/images/pages/header/ic-currency-usdc.svg +1 -0
  451. package/src/images/pages/header/ic-currency-ust.svg +1 -0
  452. package/src/images/pages/header/ic-currency-virtual.svg +1 -0
  453. package/src/images/pages/header/ic-hamburger.svg +1 -0
  454. package/src/images/pages/header/ic-help-centre.svg +66 -0
  455. package/src/images/pages/header/ic-livechat.svg +1 -0
  456. package/src/images/pages/header/ic-logout.svg +1 -0
  457. package/src/images/pages/header/ic-portfolio.svg +1 -0
  458. package/src/images/pages/header/ic-profit-table.svg +1 -0
  459. package/src/images/pages/header/ic-reports.svg +1 -0
  460. package/src/images/pages/header/ic-statement.svg +1 -0
  461. package/src/images/pages/header/ic-trade.svg +23 -0
  462. package/src/images/pages/header/ic-user-outline.svg +1 -0
  463. package/src/images/pages/header/ic-whatsapp.svg +1 -0
  464. package/src/images/pages/header/logo_smart_trader.svg +1811 -0
  465. package/src/images/pages/header/mobile-menu/mobile-menu-appstore.svg +5 -0
  466. package/src/images/pages/header/mobile-menu/mobile-menu-arrow-down.svg +3 -0
  467. package/src/images/pages/header/mobile-menu/mobile-menu-arrow-left.svg +3 -0
  468. package/src/images/pages/header/mobile-menu/mobile-menu-arrow-right.svg +3 -0
  469. package/src/images/pages/header/mobile-menu/mobile-menu-gmail.svg +4 -0
  470. package/src/images/pages/header/mobile-menu/mobile-menu-kodxyz.svg +5 -0
  471. package/src/images/pages/header/mobile-menu/mobile-menu-livechat.svg +6 -0
  472. package/src/images/pages/header/mobile-menu/mobile-menu-logo.svg +5 -0
  473. package/src/images/pages/header/mobile-menu/mobile-menu-logout.svg +5 -0
  474. package/src/images/pages/header/mobile-menu/mobile-menu-platform-dbot.svg +6 -0
  475. package/src/images/pages/header/mobile-menu/mobile-menu-platform-dtrader.svg +4 -0
  476. package/src/images/pages/header/mobile-menu/mobile-menu-platform-smarttrader.svg +4 -0
  477. package/src/images/pages/header/mobile-menu/mobile-menu-portfolio.svg +4 -0
  478. package/src/images/pages/header/mobile-menu/mobile-menu-profit.svg +4 -0
  479. package/src/images/pages/header/mobile-menu/mobile-menu-reports.svg +4 -0
  480. package/src/images/pages/header/mobile-menu/mobile-menu-statement.svg +6 -0
  481. package/src/images/pages/header/mobile-menu/mobile-menu-trade.svg +5 -0
  482. package/src/images/pages/header/wallets/ic-wallets-combined-aud.svg +1 -0
  483. package/src/images/pages/header/wallets/ic-wallets-combined-btc.svg +1 -0
  484. package/src/images/pages/header/wallets/ic-wallets-combined-eth.svg +1 -0
  485. package/src/images/pages/header/wallets/ic-wallets-combined-eur.svg +1 -0
  486. package/src/images/pages/header/wallets/ic-wallets-combined-eusdt.svg +1 -0
  487. package/src/images/pages/header/wallets/ic-wallets-combined-gbp.svg +1 -0
  488. package/src/images/pages/header/wallets/ic-wallets-combined-ltc.svg +1 -0
  489. package/src/images/pages/header/wallets/ic-wallets-combined-tusdt.svg +1 -0
  490. package/src/images/pages/header/wallets/ic-wallets-combined-usd.svg +1 -0
  491. package/src/images/pages/header/wallets/ic-wallets-combined-usdc.svg +1 -0
  492. package/src/images/pages/header/wallets/ic-wallets-combined-virtual.svg +1 -0
  493. package/src/images/pages/header/wallets/ic-wallets-currency-aud.svg +1 -0
  494. package/src/images/pages/header/wallets/ic-wallets-currency-btc.svg +1 -0
  495. package/src/images/pages/header/wallets/ic-wallets-currency-eth.svg +1 -0
  496. package/src/images/pages/header/wallets/ic-wallets-currency-eur.svg +1 -0
  497. package/src/images/pages/header/wallets/ic-wallets-currency-eusdt.svg +1 -0
  498. package/src/images/pages/header/wallets/ic-wallets-currency-gbp.svg +1 -0
  499. package/src/images/pages/header/wallets/ic-wallets-currency-ltc.svg +1 -0
  500. package/src/images/pages/header/wallets/ic-wallets-currency-tusdt.svg +1 -0
  501. package/src/images/pages/header/wallets/ic-wallets-currency-usd.svg +1 -0
  502. package/src/images/pages/header/wallets/ic-wallets-currency-usdc.svg +1 -0
  503. package/src/images/pages/header/wallets/ic-wallets-currency-virtual.svg +1 -0
  504. package/src/images/pages/header/wallets/ic-wallets-deriv-apps.svg +8 -0
  505. package/src/images/pages/header/wallets/wallet-apps-logo.svg +1 -0
  506. package/src/images/pages/header/wallets/wallet-deriv-logo.svg +8 -0
  507. package/src/images/pages/home/arrow_left.svg +1 -0
  508. package/src/images/pages/home/arrow_right.svg +1 -0
  509. package/src/images/pages/set_currency/aud.svg +1 -0
  510. package/src/images/pages/set_currency/bch.svg +1 -0
  511. package/src/images/pages/set_currency/btc.svg +1 -0
  512. package/src/images/pages/set_currency/busd.svg +1 -0
  513. package/src/images/pages/set_currency/dai.svg +1 -0
  514. package/src/images/pages/set_currency/etc.svg +1 -0
  515. package/src/images/pages/set_currency/eth.svg +1 -0
  516. package/src/images/pages/set_currency/eur.svg +1 -0
  517. package/src/images/pages/set_currency/eurs.svg +1 -0
  518. package/src/images/pages/set_currency/eusdt.svg +1 -0
  519. package/src/images/pages/set_currency/gbp.svg +1 -0
  520. package/src/images/pages/set_currency/idk.svg +1 -0
  521. package/src/images/pages/set_currency/ltc.svg +1 -0
  522. package/src/images/pages/set_currency/pax.svg +1 -0
  523. package/src/images/pages/set_currency/tick-normal.svg +1 -0
  524. package/src/images/pages/set_currency/tick-selected.svg +1 -0
  525. package/src/images/pages/set_currency/tusd.svg +1 -0
  526. package/src/images/pages/set_currency/usb.svg +1 -0
  527. package/src/images/pages/set_currency/usd.svg +1 -0
  528. package/src/images/pages/set_currency/usdc.svg +1 -0
  529. package/src/images/pages/set_currency/usdk.svg +1 -0
  530. package/src/images/pages/set_currency/ust.svg +1 -0
  531. package/src/images/pages/trade/call_spread.svg +1 -0
  532. package/src/images/pages/trade/chart_payout_range.svg +1 -0
  533. package/src/images/pages/trade/ic_arrow_dropdown_light.svg +1 -0
  534. package/src/images/pages/trade/put_spread.svg +1 -0
  535. package/src/images/pages/trade-explanation/de/close-low.svg +1 -0
  536. package/src/images/pages/trade-explanation/de/differs.svg +1 -0
  537. package/src/images/pages/trade-explanation/de/down.svg +1 -0
  538. package/src/images/pages/trade-explanation/de/ends-between.svg +1 -0
  539. package/src/images/pages/trade-explanation/de/ends-outside.svg +1 -0
  540. package/src/images/pages/trade-explanation/de/even.svg +1 -0
  541. package/src/images/pages/trade-explanation/de/falls.svg +1 -0
  542. package/src/images/pages/trade-explanation/de/goes-outside.svg +1 -0
  543. package/src/images/pages/trade-explanation/de/high-close.svg +1 -0
  544. package/src/images/pages/trade-explanation/de/high-low.svg +1 -0
  545. package/src/images/pages/trade-explanation/de/high-tick.svg +1 -0
  546. package/src/images/pages/trade-explanation/de/higher.svg +1 -0
  547. package/src/images/pages/trade-explanation/de/low-tick.svg +1 -0
  548. package/src/images/pages/trade-explanation/de/lower.svg +1 -0
  549. package/src/images/pages/trade-explanation/de/matches.svg +1 -0
  550. package/src/images/pages/trade-explanation/de/no-touch.svg +1 -0
  551. package/src/images/pages/trade-explanation/de/odd.svg +1 -0
  552. package/src/images/pages/trade-explanation/de/only-downs.svg +1 -0
  553. package/src/images/pages/trade-explanation/de/only-ups.svg +1 -0
  554. package/src/images/pages/trade-explanation/de/over.svg +1 -0
  555. package/src/images/pages/trade-explanation/de/reset-call.svg +1 -0
  556. package/src/images/pages/trade-explanation/de/reset-put.svg +1 -0
  557. package/src/images/pages/trade-explanation/de/rises.svg +1 -0
  558. package/src/images/pages/trade-explanation/de/stays-between.svg +1 -0
  559. package/src/images/pages/trade-explanation/de/touch.svg +1 -0
  560. package/src/images/pages/trade-explanation/de/under.svg +1 -0
  561. package/src/images/pages/trade-explanation/de/up.svg +1 -0
  562. package/src/images/pages/trade-explanation/en/call-spread.svg +1 -0
  563. package/src/images/pages/trade-explanation/en/close-low.svg +1 -0
  564. package/src/images/pages/trade-explanation/en/differs.svg +1 -0
  565. package/src/images/pages/trade-explanation/en/down.svg +1 -0
  566. package/src/images/pages/trade-explanation/en/ends-between.svg +1 -0
  567. package/src/images/pages/trade-explanation/en/ends-outside.svg +1 -0
  568. package/src/images/pages/trade-explanation/en/even.svg +1 -0
  569. package/src/images/pages/trade-explanation/en/falls.svg +1 -0
  570. package/src/images/pages/trade-explanation/en/goes-outside.svg +1 -0
  571. package/src/images/pages/trade-explanation/en/high-close.svg +1 -0
  572. package/src/images/pages/trade-explanation/en/high-low.svg +1 -0
  573. package/src/images/pages/trade-explanation/en/high-tick.svg +1 -0
  574. package/src/images/pages/trade-explanation/en/higher.svg +1 -0
  575. package/src/images/pages/trade-explanation/en/low-tick.svg +1 -0
  576. package/src/images/pages/trade-explanation/en/lower.svg +1 -0
  577. package/src/images/pages/trade-explanation/en/matches.svg +1 -0
  578. package/src/images/pages/trade-explanation/en/no-touch.svg +1 -0
  579. package/src/images/pages/trade-explanation/en/odd.svg +1 -0
  580. package/src/images/pages/trade-explanation/en/only-downs.svg +1 -0
  581. package/src/images/pages/trade-explanation/en/only-ups.svg +1 -0
  582. package/src/images/pages/trade-explanation/en/over.svg +1 -0
  583. package/src/images/pages/trade-explanation/en/put-spread.svg +1 -0
  584. package/src/images/pages/trade-explanation/en/reset-call.svg +1 -0
  585. package/src/images/pages/trade-explanation/en/reset-put.svg +1 -0
  586. package/src/images/pages/trade-explanation/en/rises.svg +1 -0
  587. package/src/images/pages/trade-explanation/en/stays-between.svg +1 -0
  588. package/src/images/pages/trade-explanation/en/touch.svg +1 -0
  589. package/src/images/pages/trade-explanation/en/under.svg +1 -0
  590. package/src/images/pages/trade-explanation/en/up.svg +1 -0
  591. package/src/images/pages/trade-explanation/es/close-low.svg +1 -0
  592. package/src/images/pages/trade-explanation/es/differs.svg +1 -0
  593. package/src/images/pages/trade-explanation/es/down.svg +1 -0
  594. package/src/images/pages/trade-explanation/es/ends-between.svg +1 -0
  595. package/src/images/pages/trade-explanation/es/ends-outside.svg +1 -0
  596. package/src/images/pages/trade-explanation/es/even.svg +1 -0
  597. package/src/images/pages/trade-explanation/es/falls.svg +1 -0
  598. package/src/images/pages/trade-explanation/es/goes-outside.svg +1 -0
  599. package/src/images/pages/trade-explanation/es/high-close.svg +1 -0
  600. package/src/images/pages/trade-explanation/es/high-low.svg +1 -0
  601. package/src/images/pages/trade-explanation/es/high-tick.svg +1 -0
  602. package/src/images/pages/trade-explanation/es/higher.svg +1 -0
  603. package/src/images/pages/trade-explanation/es/low-tick.svg +1 -0
  604. package/src/images/pages/trade-explanation/es/lower.svg +1 -0
  605. package/src/images/pages/trade-explanation/es/matches.svg +1 -0
  606. package/src/images/pages/trade-explanation/es/no-touch.svg +1 -0
  607. package/src/images/pages/trade-explanation/es/odd.svg +1 -0
  608. package/src/images/pages/trade-explanation/es/only-downs.svg +1 -0
  609. package/src/images/pages/trade-explanation/es/only-ups.svg +1 -0
  610. package/src/images/pages/trade-explanation/es/over.svg +1 -0
  611. package/src/images/pages/trade-explanation/es/reset-call.svg +1 -0
  612. package/src/images/pages/trade-explanation/es/reset-put.svg +1 -0
  613. package/src/images/pages/trade-explanation/es/rises.svg +1 -0
  614. package/src/images/pages/trade-explanation/es/stays-between.svg +1 -0
  615. package/src/images/pages/trade-explanation/es/touch.svg +1 -0
  616. package/src/images/pages/trade-explanation/es/under.svg +1 -0
  617. package/src/images/pages/trade-explanation/es/up.svg +1 -0
  618. package/src/images/pages/trade-explanation/fr/close-low.svg +1 -0
  619. package/src/images/pages/trade-explanation/fr/differs.svg +1 -0
  620. package/src/images/pages/trade-explanation/fr/down.svg +1 -0
  621. package/src/images/pages/trade-explanation/fr/ends-between.svg +1 -0
  622. package/src/images/pages/trade-explanation/fr/ends-outside.svg +1 -0
  623. package/src/images/pages/trade-explanation/fr/even.svg +1 -0
  624. package/src/images/pages/trade-explanation/fr/falls.svg +1 -0
  625. package/src/images/pages/trade-explanation/fr/goes-outside.svg +1 -0
  626. package/src/images/pages/trade-explanation/fr/high-close.svg +1 -0
  627. package/src/images/pages/trade-explanation/fr/high-low.svg +1 -0
  628. package/src/images/pages/trade-explanation/fr/high-tick.svg +1 -0
  629. package/src/images/pages/trade-explanation/fr/higher.svg +1 -0
  630. package/src/images/pages/trade-explanation/fr/low-tick.svg +1 -0
  631. package/src/images/pages/trade-explanation/fr/lower.svg +1 -0
  632. package/src/images/pages/trade-explanation/fr/matches.svg +1 -0
  633. package/src/images/pages/trade-explanation/fr/no-touch.svg +1 -0
  634. package/src/images/pages/trade-explanation/fr/odd.svg +1 -0
  635. package/src/images/pages/trade-explanation/fr/only-downs.svg +1 -0
  636. package/src/images/pages/trade-explanation/fr/only-ups.svg +1 -0
  637. package/src/images/pages/trade-explanation/fr/over.svg +1 -0
  638. package/src/images/pages/trade-explanation/fr/reset-call.svg +1 -0
  639. package/src/images/pages/trade-explanation/fr/reset-put.svg +1 -0
  640. package/src/images/pages/trade-explanation/fr/rises.svg +1 -0
  641. package/src/images/pages/trade-explanation/fr/stays-between.svg +1 -0
  642. package/src/images/pages/trade-explanation/fr/touch.svg +1 -0
  643. package/src/images/pages/trade-explanation/fr/under.svg +1 -0
  644. package/src/images/pages/trade-explanation/fr/up.svg +1 -0
  645. package/src/images/pages/trade-explanation/id/close-low.svg +1 -0
  646. package/src/images/pages/trade-explanation/id/differs.svg +1 -0
  647. package/src/images/pages/trade-explanation/id/down.svg +1 -0
  648. package/src/images/pages/trade-explanation/id/ends-between.svg +1 -0
  649. package/src/images/pages/trade-explanation/id/ends-outside.svg +1 -0
  650. package/src/images/pages/trade-explanation/id/even.svg +1 -0
  651. package/src/images/pages/trade-explanation/id/falls.svg +1 -0
  652. package/src/images/pages/trade-explanation/id/goes-outside.svg +1 -0
  653. package/src/images/pages/trade-explanation/id/high-close.svg +1 -0
  654. package/src/images/pages/trade-explanation/id/high-low.svg +1 -0
  655. package/src/images/pages/trade-explanation/id/high-tick.svg +1 -0
  656. package/src/images/pages/trade-explanation/id/higher.svg +1 -0
  657. package/src/images/pages/trade-explanation/id/low-tick.svg +1 -0
  658. package/src/images/pages/trade-explanation/id/lower.svg +1 -0
  659. package/src/images/pages/trade-explanation/id/matches.svg +1 -0
  660. package/src/images/pages/trade-explanation/id/no-touch.svg +1 -0
  661. package/src/images/pages/trade-explanation/id/odd.svg +1 -0
  662. package/src/images/pages/trade-explanation/id/only-downs.svg +1 -0
  663. package/src/images/pages/trade-explanation/id/only-ups.svg +1 -0
  664. package/src/images/pages/trade-explanation/id/over.svg +1 -0
  665. package/src/images/pages/trade-explanation/id/reset-call.svg +1 -0
  666. package/src/images/pages/trade-explanation/id/reset-put.svg +1 -0
  667. package/src/images/pages/trade-explanation/id/rises.svg +1 -0
  668. package/src/images/pages/trade-explanation/id/stays-between.svg +1 -0
  669. package/src/images/pages/trade-explanation/id/touch.svg +1 -0
  670. package/src/images/pages/trade-explanation/id/under.svg +1 -0
  671. package/src/images/pages/trade-explanation/id/up.svg +1 -0
  672. package/src/images/pages/trade-explanation/it/close-low.svg +1 -0
  673. package/src/images/pages/trade-explanation/it/differs.svg +1 -0
  674. package/src/images/pages/trade-explanation/it/down.svg +1 -0
  675. package/src/images/pages/trade-explanation/it/ends-between.svg +1 -0
  676. package/src/images/pages/trade-explanation/it/ends-outside.svg +1 -0
  677. package/src/images/pages/trade-explanation/it/even.svg +1 -0
  678. package/src/images/pages/trade-explanation/it/falls.svg +1 -0
  679. package/src/images/pages/trade-explanation/it/goes-outside.svg +1 -0
  680. package/src/images/pages/trade-explanation/it/high-close.svg +1 -0
  681. package/src/images/pages/trade-explanation/it/high-low.svg +1 -0
  682. package/src/images/pages/trade-explanation/it/high-tick.svg +1 -0
  683. package/src/images/pages/trade-explanation/it/higher.svg +1 -0
  684. package/src/images/pages/trade-explanation/it/low-tick.svg +1 -0
  685. package/src/images/pages/trade-explanation/it/lower.svg +1 -0
  686. package/src/images/pages/trade-explanation/it/matches.svg +1 -0
  687. package/src/images/pages/trade-explanation/it/no-touch.svg +1 -0
  688. package/src/images/pages/trade-explanation/it/odd.svg +1 -0
  689. package/src/images/pages/trade-explanation/it/only-downs.svg +1 -0
  690. package/src/images/pages/trade-explanation/it/only-ups.svg +1 -0
  691. package/src/images/pages/trade-explanation/it/over.svg +1 -0
  692. package/src/images/pages/trade-explanation/it/reset-call.svg +1 -0
  693. package/src/images/pages/trade-explanation/it/reset-put.svg +1 -0
  694. package/src/images/pages/trade-explanation/it/rises.svg +1 -0
  695. package/src/images/pages/trade-explanation/it/stays-between.svg +1 -0
  696. package/src/images/pages/trade-explanation/it/touch.svg +1 -0
  697. package/src/images/pages/trade-explanation/it/under.svg +1 -0
  698. package/src/images/pages/trade-explanation/it/up.svg +1 -0
  699. package/src/images/pages/trade-explanation/pl/close-low.svg +1 -0
  700. package/src/images/pages/trade-explanation/pl/differs.svg +1 -0
  701. package/src/images/pages/trade-explanation/pl/down.svg +1 -0
  702. package/src/images/pages/trade-explanation/pl/ends-between.svg +1 -0
  703. package/src/images/pages/trade-explanation/pl/ends-outside.svg +1 -0
  704. package/src/images/pages/trade-explanation/pl/even.svg +1 -0
  705. package/src/images/pages/trade-explanation/pl/falls.svg +1 -0
  706. package/src/images/pages/trade-explanation/pl/goes-outside.svg +1 -0
  707. package/src/images/pages/trade-explanation/pl/high-close.svg +1 -0
  708. package/src/images/pages/trade-explanation/pl/high-low.svg +1 -0
  709. package/src/images/pages/trade-explanation/pl/high-tick.svg +1 -0
  710. package/src/images/pages/trade-explanation/pl/higher.svg +1 -0
  711. package/src/images/pages/trade-explanation/pl/low-tick.svg +1 -0
  712. package/src/images/pages/trade-explanation/pl/lower.svg +1 -0
  713. package/src/images/pages/trade-explanation/pl/matches.svg +1 -0
  714. package/src/images/pages/trade-explanation/pl/no-touch.svg +1 -0
  715. package/src/images/pages/trade-explanation/pl/odd.svg +1 -0
  716. package/src/images/pages/trade-explanation/pl/only-downs.svg +1 -0
  717. package/src/images/pages/trade-explanation/pl/only-ups.svg +1 -0
  718. package/src/images/pages/trade-explanation/pl/over.svg +1 -0
  719. package/src/images/pages/trade-explanation/pl/reset-call.svg +1 -0
  720. package/src/images/pages/trade-explanation/pl/reset-put.svg +1 -0
  721. package/src/images/pages/trade-explanation/pl/rises.svg +1 -0
  722. package/src/images/pages/trade-explanation/pl/stays-between.svg +1 -0
  723. package/src/images/pages/trade-explanation/pl/touch.svg +1 -0
  724. package/src/images/pages/trade-explanation/pl/under.svg +1 -0
  725. package/src/images/pages/trade-explanation/pl/up.svg +1 -0
  726. package/src/images/pages/trade-explanation/pt/close-low.svg +1 -0
  727. package/src/images/pages/trade-explanation/pt/differs.svg +1 -0
  728. package/src/images/pages/trade-explanation/pt/down.svg +1 -0
  729. package/src/images/pages/trade-explanation/pt/ends-between.svg +1 -0
  730. package/src/images/pages/trade-explanation/pt/ends-outside.svg +1 -0
  731. package/src/images/pages/trade-explanation/pt/even.svg +1 -0
  732. package/src/images/pages/trade-explanation/pt/falls.svg +1 -0
  733. package/src/images/pages/trade-explanation/pt/goes-outside.svg +1 -0
  734. package/src/images/pages/trade-explanation/pt/high-close.svg +1 -0
  735. package/src/images/pages/trade-explanation/pt/high-low.svg +1 -0
  736. package/src/images/pages/trade-explanation/pt/high-tick.svg +1 -0
  737. package/src/images/pages/trade-explanation/pt/higher.svg +1 -0
  738. package/src/images/pages/trade-explanation/pt/low-tick.svg +1 -0
  739. package/src/images/pages/trade-explanation/pt/lower.svg +1 -0
  740. package/src/images/pages/trade-explanation/pt/matches.svg +1 -0
  741. package/src/images/pages/trade-explanation/pt/no-touch.svg +1 -0
  742. package/src/images/pages/trade-explanation/pt/odd.svg +1 -0
  743. package/src/images/pages/trade-explanation/pt/only-downs.svg +1 -0
  744. package/src/images/pages/trade-explanation/pt/only-ups.svg +1 -0
  745. package/src/images/pages/trade-explanation/pt/over.svg +1 -0
  746. package/src/images/pages/trade-explanation/pt/reset-call.svg +1 -0
  747. package/src/images/pages/trade-explanation/pt/reset-put.svg +1 -0
  748. package/src/images/pages/trade-explanation/pt/rises.svg +1 -0
  749. package/src/images/pages/trade-explanation/pt/stays-between.svg +1 -0
  750. package/src/images/pages/trade-explanation/pt/touch.svg +1 -0
  751. package/src/images/pages/trade-explanation/pt/under.svg +1 -0
  752. package/src/images/pages/trade-explanation/pt/up.svg +1 -0
  753. package/src/images/pages/trade-explanation/ru/close-low.svg +1 -0
  754. package/src/images/pages/trade-explanation/ru/differs.svg +1 -0
  755. package/src/images/pages/trade-explanation/ru/down.svg +1 -0
  756. package/src/images/pages/trade-explanation/ru/ends-between.svg +1 -0
  757. package/src/images/pages/trade-explanation/ru/ends-outside.svg +1 -0
  758. package/src/images/pages/trade-explanation/ru/even.svg +1 -0
  759. package/src/images/pages/trade-explanation/ru/falls.svg +1 -0
  760. package/src/images/pages/trade-explanation/ru/goes-outside.svg +1 -0
  761. package/src/images/pages/trade-explanation/ru/high-close.svg +1 -0
  762. package/src/images/pages/trade-explanation/ru/high-low.svg +1 -0
  763. package/src/images/pages/trade-explanation/ru/high-tick.svg +1 -0
  764. package/src/images/pages/trade-explanation/ru/higher.svg +1 -0
  765. package/src/images/pages/trade-explanation/ru/low-tick.svg +1 -0
  766. package/src/images/pages/trade-explanation/ru/lower.svg +1 -0
  767. package/src/images/pages/trade-explanation/ru/matches.svg +1 -0
  768. package/src/images/pages/trade-explanation/ru/no-touch.svg +1 -0
  769. package/src/images/pages/trade-explanation/ru/odd.svg +1 -0
  770. package/src/images/pages/trade-explanation/ru/only-downs.svg +1 -0
  771. package/src/images/pages/trade-explanation/ru/only-ups.svg +1 -0
  772. package/src/images/pages/trade-explanation/ru/over.svg +1 -0
  773. package/src/images/pages/trade-explanation/ru/reset-call.svg +1 -0
  774. package/src/images/pages/trade-explanation/ru/reset-put.svg +1 -0
  775. package/src/images/pages/trade-explanation/ru/rises.svg +1 -0
  776. package/src/images/pages/trade-explanation/ru/stays-between.svg +1 -0
  777. package/src/images/pages/trade-explanation/ru/touch.svg +1 -0
  778. package/src/images/pages/trade-explanation/ru/under.svg +1 -0
  779. package/src/images/pages/trade-explanation/ru/up.svg +1 -0
  780. package/src/images/pages/trade-explanation/th/close-low.svg +1 -0
  781. package/src/images/pages/trade-explanation/th/differs.svg +1 -0
  782. package/src/images/pages/trade-explanation/th/down.svg +1 -0
  783. package/src/images/pages/trade-explanation/th/ends-between.svg +1 -0
  784. package/src/images/pages/trade-explanation/th/ends-outside.svg +1 -0
  785. package/src/images/pages/trade-explanation/th/even.svg +1 -0
  786. package/src/images/pages/trade-explanation/th/falls.svg +1 -0
  787. package/src/images/pages/trade-explanation/th/goes-outside.svg +1 -0
  788. package/src/images/pages/trade-explanation/th/high-close.svg +1 -0
  789. package/src/images/pages/trade-explanation/th/high-low.svg +1 -0
  790. package/src/images/pages/trade-explanation/th/high-tick.svg +1 -0
  791. package/src/images/pages/trade-explanation/th/higher.svg +1 -0
  792. package/src/images/pages/trade-explanation/th/low-tick.svg +1 -0
  793. package/src/images/pages/trade-explanation/th/lower.svg +1 -0
  794. package/src/images/pages/trade-explanation/th/matches.svg +1 -0
  795. package/src/images/pages/trade-explanation/th/no-touch.svg +1 -0
  796. package/src/images/pages/trade-explanation/th/odd.svg +1 -0
  797. package/src/images/pages/trade-explanation/th/only-downs.svg +1 -0
  798. package/src/images/pages/trade-explanation/th/only-ups.svg +1 -0
  799. package/src/images/pages/trade-explanation/th/over.svg +1 -0
  800. package/src/images/pages/trade-explanation/th/reset-call.svg +1 -0
  801. package/src/images/pages/trade-explanation/th/reset-put.svg +1 -0
  802. package/src/images/pages/trade-explanation/th/rises.svg +1 -0
  803. package/src/images/pages/trade-explanation/th/stays-between.svg +1 -0
  804. package/src/images/pages/trade-explanation/th/touch.svg +1 -0
  805. package/src/images/pages/trade-explanation/th/under.svg +1 -0
  806. package/src/images/pages/trade-explanation/th/up.svg +1 -0
  807. package/src/images/pages/trade-explanation/vi/close-low.svg +1 -0
  808. package/src/images/pages/trade-explanation/vi/differs.svg +1 -0
  809. package/src/images/pages/trade-explanation/vi/down.svg +1 -0
  810. package/src/images/pages/trade-explanation/vi/ends-between.svg +1 -0
  811. package/src/images/pages/trade-explanation/vi/ends-outside.svg +1 -0
  812. package/src/images/pages/trade-explanation/vi/even.svg +1 -0
  813. package/src/images/pages/trade-explanation/vi/falls.svg +1 -0
  814. package/src/images/pages/trade-explanation/vi/goes-outside.svg +1 -0
  815. package/src/images/pages/trade-explanation/vi/high-close.svg +1 -0
  816. package/src/images/pages/trade-explanation/vi/high-low.svg +1 -0
  817. package/src/images/pages/trade-explanation/vi/high-tick.svg +1 -0
  818. package/src/images/pages/trade-explanation/vi/higher.svg +1 -0
  819. package/src/images/pages/trade-explanation/vi/low-tick.svg +1 -0
  820. package/src/images/pages/trade-explanation/vi/lower.svg +1 -0
  821. package/src/images/pages/trade-explanation/vi/matches.svg +1 -0
  822. package/src/images/pages/trade-explanation/vi/no-touch.svg +1 -0
  823. package/src/images/pages/trade-explanation/vi/odd.svg +1 -0
  824. package/src/images/pages/trade-explanation/vi/only-downs.svg +1 -0
  825. package/src/images/pages/trade-explanation/vi/only-ups.svg +1 -0
  826. package/src/images/pages/trade-explanation/vi/over.svg +1 -0
  827. package/src/images/pages/trade-explanation/vi/reset-call.svg +1 -0
  828. package/src/images/pages/trade-explanation/vi/reset-put.svg +1 -0
  829. package/src/images/pages/trade-explanation/vi/rises.svg +1 -0
  830. package/src/images/pages/trade-explanation/vi/stays-between.svg +1 -0
  831. package/src/images/pages/trade-explanation/vi/touch.svg +1 -0
  832. package/src/images/pages/trade-explanation/vi/under.svg +1 -0
  833. package/src/images/pages/trade-explanation/vi/up.svg +1 -0
  834. package/src/images/pages/trade-explanation/zh_cn/close-low.svg +1 -0
  835. package/src/images/pages/trade-explanation/zh_cn/differs.svg +1 -0
  836. package/src/images/pages/trade-explanation/zh_cn/down.svg +1 -0
  837. package/src/images/pages/trade-explanation/zh_cn/ends-between.svg +1 -0
  838. package/src/images/pages/trade-explanation/zh_cn/ends-outside.svg +1 -0
  839. package/src/images/pages/trade-explanation/zh_cn/even.svg +1 -0
  840. package/src/images/pages/trade-explanation/zh_cn/falls.svg +1 -0
  841. package/src/images/pages/trade-explanation/zh_cn/goes-outside.svg +1 -0
  842. package/src/images/pages/trade-explanation/zh_cn/high-close.svg +1 -0
  843. package/src/images/pages/trade-explanation/zh_cn/high-low.svg +1 -0
  844. package/src/images/pages/trade-explanation/zh_cn/high-tick.svg +1 -0
  845. package/src/images/pages/trade-explanation/zh_cn/higher.svg +1 -0
  846. package/src/images/pages/trade-explanation/zh_cn/low-tick.svg +1 -0
  847. package/src/images/pages/trade-explanation/zh_cn/lower.svg +1 -0
  848. package/src/images/pages/trade-explanation/zh_cn/matches.svg +1 -0
  849. package/src/images/pages/trade-explanation/zh_cn/no-touch.svg +1 -0
  850. package/src/images/pages/trade-explanation/zh_cn/odd.svg +1 -0
  851. package/src/images/pages/trade-explanation/zh_cn/only-downs.svg +1 -0
  852. package/src/images/pages/trade-explanation/zh_cn/only-ups.svg +1 -0
  853. package/src/images/pages/trade-explanation/zh_cn/over.svg +1 -0
  854. package/src/images/pages/trade-explanation/zh_cn/reset-call.svg +1 -0
  855. package/src/images/pages/trade-explanation/zh_cn/reset-put.svg +1 -0
  856. package/src/images/pages/trade-explanation/zh_cn/rises.svg +1 -0
  857. package/src/images/pages/trade-explanation/zh_cn/stays-between.svg +1 -0
  858. package/src/images/pages/trade-explanation/zh_cn/touch.svg +1 -0
  859. package/src/images/pages/trade-explanation/zh_cn/under.svg +1 -0
  860. package/src/images/pages/trade-explanation/zh_cn/up.svg +1 -0
  861. package/src/images/pages/trade-explanation/zh_tw/close-low.svg +1 -0
  862. package/src/images/pages/trade-explanation/zh_tw/differs.svg +1 -0
  863. package/src/images/pages/trade-explanation/zh_tw/down.svg +1 -0
  864. package/src/images/pages/trade-explanation/zh_tw/ends-between.svg +1 -0
  865. package/src/images/pages/trade-explanation/zh_tw/ends-outside.svg +1 -0
  866. package/src/images/pages/trade-explanation/zh_tw/even.svg +1 -0
  867. package/src/images/pages/trade-explanation/zh_tw/falls.svg +1 -0
  868. package/src/images/pages/trade-explanation/zh_tw/goes-outside.svg +1 -0
  869. package/src/images/pages/trade-explanation/zh_tw/high-close.svg +1 -0
  870. package/src/images/pages/trade-explanation/zh_tw/high-low.svg +1 -0
  871. package/src/images/pages/trade-explanation/zh_tw/high-tick.svg +1 -0
  872. package/src/images/pages/trade-explanation/zh_tw/higher.svg +1 -0
  873. package/src/images/pages/trade-explanation/zh_tw/low-tick.svg +1 -0
  874. package/src/images/pages/trade-explanation/zh_tw/lower.svg +1 -0
  875. package/src/images/pages/trade-explanation/zh_tw/matches.svg +1 -0
  876. package/src/images/pages/trade-explanation/zh_tw/no-touch.svg +1 -0
  877. package/src/images/pages/trade-explanation/zh_tw/odd.svg +1 -0
  878. package/src/images/pages/trade-explanation/zh_tw/only-downs.svg +1 -0
  879. package/src/images/pages/trade-explanation/zh_tw/only-ups.svg +1 -0
  880. package/src/images/pages/trade-explanation/zh_tw/over.svg +1 -0
  881. package/src/images/pages/trade-explanation/zh_tw/reset-call.svg +1 -0
  882. package/src/images/pages/trade-explanation/zh_tw/reset-put.svg +1 -0
  883. package/src/images/pages/trade-explanation/zh_tw/rises.svg +1 -0
  884. package/src/images/pages/trade-explanation/zh_tw/stays-between.svg +1 -0
  885. package/src/images/pages/trade-explanation/zh_tw/touch.svg +1 -0
  886. package/src/images/pages/trade-explanation/zh_tw/under.svg +1 -0
  887. package/src/images/pages/trade-explanation/zh_tw/up.svg +1 -0
  888. package/src/javascript/README.md +147 -0
  889. package/src/javascript/_autogenerated/ach.js +2 -0
  890. package/src/javascript/_autogenerated/app_2/ach.js +2 -0
  891. package/src/javascript/_autogenerated/app_2/de.js +2 -0
  892. package/src/javascript/_autogenerated/app_2/en.js +2 -0
  893. package/src/javascript/_autogenerated/app_2/es.js +2 -0
  894. package/src/javascript/_autogenerated/app_2/fr.js +2 -0
  895. package/src/javascript/_autogenerated/app_2/id.js +2 -0
  896. package/src/javascript/_autogenerated/app_2/it.js +2 -0
  897. package/src/javascript/_autogenerated/app_2/ja.js +2 -0
  898. package/src/javascript/_autogenerated/app_2/ko.js +2 -0
  899. package/src/javascript/_autogenerated/app_2/pl.js +2 -0
  900. package/src/javascript/_autogenerated/app_2/pt.js +2 -0
  901. package/src/javascript/_autogenerated/app_2/ru.js +2 -0
  902. package/src/javascript/_autogenerated/app_2/th.js +2 -0
  903. package/src/javascript/_autogenerated/app_2/vi.js +2 -0
  904. package/src/javascript/_autogenerated/app_2/zh_cn.js +2 -0
  905. package/src/javascript/_autogenerated/app_2/zh_tw.js +2 -0
  906. package/src/javascript/_autogenerated/de.js +2 -0
  907. package/src/javascript/_autogenerated/en.js +2 -0
  908. package/src/javascript/_autogenerated/es.js +2 -0
  909. package/src/javascript/_autogenerated/fr.js +2 -0
  910. package/src/javascript/_autogenerated/id.js +2 -0
  911. package/src/javascript/_autogenerated/it.js +2 -0
  912. package/src/javascript/_autogenerated/ko.js +2 -0
  913. package/src/javascript/_autogenerated/pl.js +2 -0
  914. package/src/javascript/_autogenerated/pt.js +2 -0
  915. package/src/javascript/_autogenerated/ru.js +2 -0
  916. package/src/javascript/_autogenerated/th.js +2 -0
  917. package/src/javascript/_autogenerated/vi.js +2 -0
  918. package/src/javascript/_autogenerated/zh_cn.js +2 -0
  919. package/src/javascript/_autogenerated/zh_tw.js +2 -0
  920. package/src/javascript/_common/__tests__/check_new_release.js +16 -0
  921. package/src/javascript/_common/__tests__/common_functions.js +90 -0
  922. package/src/javascript/_common/__tests__/language.js +68 -0
  923. package/src/javascript/_common/__tests__/string_util.js +80 -0
  924. package/src/javascript/_common/__tests__/tests_common.js +22 -0
  925. package/src/javascript/_common/__tests__/url.js +142 -0
  926. package/src/javascript/_common/__tests__/utility.js +175 -0
  927. package/src/javascript/_common/analytics.js +21 -0
  928. package/src/javascript/_common/auth.js +174 -0
  929. package/src/javascript/_common/base/__tests__/client_base.js +299 -0
  930. package/src/javascript/_common/base/__tests__/currency_base.js +126 -0
  931. package/src/javascript/_common/base/client_base.js +517 -0
  932. package/src/javascript/_common/base/currency_base.js +182 -0
  933. package/src/javascript/_common/base/elevio.js +148 -0
  934. package/src/javascript/_common/base/gtm.js +13 -0
  935. package/src/javascript/_common/base/livechat.js +136 -0
  936. package/src/javascript/_common/base/login.js +64 -0
  937. package/src/javascript/_common/base/network_monitor_base.js +151 -0
  938. package/src/javascript/_common/base/server_time.js +66 -0
  939. package/src/javascript/_common/base/socket_base.js +325 -0
  940. package/src/javascript/_common/base/socket_cache.js +132 -0
  941. package/src/javascript/_common/base/subscription_manager.js +248 -0
  942. package/src/javascript/_common/chat.js +57 -0
  943. package/src/javascript/_common/check_new_release.js +35 -0
  944. package/src/javascript/_common/check_password.js +103 -0
  945. package/src/javascript/_common/common_functions.js +104 -0
  946. package/src/javascript/_common/crowdin.js +34 -0
  947. package/src/javascript/_common/gtm.js +7 -0
  948. package/src/javascript/_common/language.js +98 -0
  949. package/src/javascript/_common/lib/guide.enjoyhint.js +1034 -0
  950. package/src/javascript/_common/lib/jquery.sparkline.js +3085 -0
  951. package/src/javascript/_common/lib/loadCSS.js +32 -0
  952. package/src/javascript/_common/lib/loadJS.js +13 -0
  953. package/src/javascript/_common/lib/mmenu/jquery.mmenu.min.all.js +84 -0
  954. package/src/javascript/_common/lib/plugins.js +55 -0
  955. package/src/javascript/_common/lib/polyfills/array.includes.js +28 -0
  956. package/src/javascript/_common/lib/polyfills/element.closest.js +11 -0
  957. package/src/javascript/_common/lib/polyfills/element.matches.js +14 -0
  958. package/src/javascript/_common/lib/polyfills/nodelist.foreach.js +8 -0
  959. package/src/javascript/_common/lib/polyfills/string.includes.js +6 -0
  960. package/src/javascript/_common/lib/zxcvbn/zxcvbn.js +30 -0
  961. package/src/javascript/_common/lib/zxcvbn/zxcvbn.js.map +27 -0
  962. package/src/javascript/_common/localize.js +55 -0
  963. package/src/javascript/_common/menu_selector.js +69 -0
  964. package/src/javascript/_common/os_detect.js +72 -0
  965. package/src/javascript/_common/remote_config.json +2 -0
  966. package/src/javascript/_common/scroll.js +124 -0
  967. package/src/javascript/_common/scroll_to_anchor.js +99 -0
  968. package/src/javascript/_common/storage.js +274 -0
  969. package/src/javascript/_common/string_util.js +50 -0
  970. package/src/javascript/_common/tab_selector.js +196 -0
  971. package/src/javascript/_common/third_party_links.js +96 -0
  972. package/src/javascript/_common/url.js +199 -0
  973. package/src/javascript/_common/utility.js +317 -0
  974. package/src/javascript/app/base/__tests__/client.js +49 -0
  975. package/src/javascript/app/base/binary_loader.js +290 -0
  976. package/src/javascript/app/base/binary_pages.js +151 -0
  977. package/src/javascript/app/base/binary_pjax.js +231 -0
  978. package/src/javascript/app/base/callback.js +16 -0
  979. package/src/javascript/app/base/client.js +207 -0
  980. package/src/javascript/app/base/clock.js +53 -0
  981. package/src/javascript/app/base/contents.js +16 -0
  982. package/src/javascript/app/base/header.js +1572 -0
  983. package/src/javascript/app/base/logged_in.js +338 -0
  984. package/src/javascript/app/base/menu.js +66 -0
  985. package/src/javascript/app/base/network_monitor.js +32 -0
  986. package/src/javascript/app/base/page.js +307 -0
  987. package/src/javascript/app/base/redirect.js +27 -0
  988. package/src/javascript/app/base/socket.js +4 -0
  989. package/src/javascript/app/base/socket_general.js +181 -0
  990. package/src/javascript/app/common/__tests__/active_symbols.js +166 -0
  991. package/src/javascript/app/common/__tests__/content_visibility.js +127 -0
  992. package/src/javascript/app/common/__tests__/get_app_details.js +29 -0
  993. package/src/javascript/app/common/account_opening.js +333 -0
  994. package/src/javascript/app/common/active_symbols.js +273 -0
  995. package/src/javascript/app/common/attach_dom/birth_date_picker.js +25 -0
  996. package/src/javascript/app/common/attach_dom/date_to.js +87 -0
  997. package/src/javascript/app/common/attach_dom/dialog.js +97 -0
  998. package/src/javascript/app/common/attach_dom/flextable.js +71 -0
  999. package/src/javascript/app/common/attach_dom/language_dropdown.js +36 -0
  1000. package/src/javascript/app/common/attach_dom/popup.js +77 -0
  1001. package/src/javascript/app/common/attach_dom/table.js +120 -0
  1002. package/src/javascript/app/common/cashier_modal.js +795 -0
  1003. package/src/javascript/app/common/chart_settings.js +254 -0
  1004. package/src/javascript/app/common/content_visibility.js +194 -0
  1005. package/src/javascript/app/common/contract_type_icons.js +76 -0
  1006. package/src/javascript/app/common/country_base.js +36 -0
  1007. package/src/javascript/app/common/currency.js +46 -0
  1008. package/src/javascript/app/common/data_manager.js +165 -0
  1009. package/src/javascript/app/common/deriv_banner.js +67 -0
  1010. package/src/javascript/app/common/deriv_cashier_service.js +124 -0
  1011. package/src/javascript/app/common/disclaimer.js +74 -0
  1012. package/src/javascript/app/common/event_handler.js +16 -0
  1013. package/src/javascript/app/common/form_manager.js +164 -0
  1014. package/src/javascript/app/common/form_validation.js +397 -0
  1015. package/src/javascript/app/common/getFeatureFlag.js +18 -0
  1016. package/src/javascript/app/common/get_app_details.js +37 -0
  1017. package/src/javascript/app/common/guide.js +136 -0
  1018. package/src/javascript/app/common/helpers.js +151 -0
  1019. package/src/javascript/app/common/open_positions_modal.js +160 -0
  1020. package/src/javascript/app/common/request_middleware.js +89 -0
  1021. package/src/javascript/app/common/session_duration_limit.js +66 -0
  1022. package/src/javascript/app/common/statements_modal.js +197 -0
  1023. package/src/javascript/app/common/telegram_auth.js +682 -0
  1024. package/src/javascript/app/common/trade_reports_modal.js +665 -0
  1025. package/src/javascript/app/common/traffic_source.js +88 -0
  1026. package/src/javascript/app/components/date_picker.js +156 -0
  1027. package/src/javascript/app/components/loading-spinner.js +46 -0
  1028. package/src/javascript/app/components/time_picker.js +146 -0
  1029. package/src/javascript/app/hooks/events.js +88 -0
  1030. package/src/javascript/app/hooks/useFreshChat.js +42 -0
  1031. package/src/javascript/app/hooks/useGrowthbookGetFeatureValue.js +36 -0
  1032. package/src/javascript/app/hooks/useInterComChat.js +22 -0
  1033. package/src/javascript/app/hooks/useRemoteConfig.js +59 -0
  1034. package/src/javascript/app/pages/bottom/data/explanation.js +347 -0
  1035. package/src/javascript/app/pages/bottom/explanation.jsx +231 -0
  1036. package/src/javascript/app/pages/bottom/graph.jsx +35 -0
  1037. package/src/javascript/app/pages/bottom/tabs.jsx +71 -0
  1038. package/src/javascript/app/pages/callback/callback.jsx +145 -0
  1039. package/src/javascript/app/pages/endpoint.js +32 -0
  1040. package/src/javascript/app/pages/form/barrier-fields.jsx +136 -0
  1041. package/src/javascript/app/pages/form/contract-form-wrapper.jsx +10 -0
  1042. package/src/javascript/app/pages/form/currency-dropdown.jsx +49 -0
  1043. package/src/javascript/app/pages/form/dropdown-component.jsx +47 -0
  1044. package/src/javascript/app/pages/form/form-component.jsx +786 -0
  1045. package/src/javascript/app/pages/form/numbers-dropdown.jsx +75 -0
  1046. package/src/javascript/app/pages/form/time-selection.jsx +102 -0
  1047. package/src/javascript/app/pages/livechat.jsx +61 -0
  1048. package/src/javascript/app/pages/loader.jsx +15 -0
  1049. package/src/javascript/app/pages/portal.jsx +24 -0
  1050. package/src/javascript/app/pages/trade/__tests__/common.test.js +244 -0
  1051. package/src/javascript/app/pages/trade/analysis.js +231 -0
  1052. package/src/javascript/app/pages/trade/barriers.js +244 -0
  1053. package/src/javascript/app/pages/trade/callputspread.js +241 -0
  1054. package/src/javascript/app/pages/trade/charts/digit_info.js +274 -0
  1055. package/src/javascript/app/pages/trade/charts/highchart.js +781 -0
  1056. package/src/javascript/app/pages/trade/charts/highchart.ui.js +66 -0
  1057. package/src/javascript/app/pages/trade/charts/webtrader_chart.js +278 -0
  1058. package/src/javascript/app/pages/trade/common.js +4501 -0
  1059. package/src/javascript/app/pages/trade/common_independent.js +160 -0
  1060. package/src/javascript/app/pages/trade/contract.js +263 -0
  1061. package/src/javascript/app/pages/trade/contracts.jsx +195 -0
  1062. package/src/javascript/app/pages/trade/currency.js +29 -0
  1063. package/src/javascript/app/pages/trade/defaults.js +108 -0
  1064. package/src/javascript/app/pages/trade/digit_grid.js +119 -0
  1065. package/src/javascript/app/pages/trade/digit_ticker.js +457 -0
  1066. package/src/javascript/app/pages/trade/digit_trade.js +174 -0
  1067. package/src/javascript/app/pages/trade/duration.js +799 -0
  1068. package/src/javascript/app/pages/trade/event.js +475 -0
  1069. package/src/javascript/app/pages/trade/get_active_tab.js +25 -0
  1070. package/src/javascript/app/pages/trade/get_ticks.js +88 -0
  1071. package/src/javascript/app/pages/trade/guide.jsx +43 -0
  1072. package/src/javascript/app/pages/trade/last_digit.jsx +39 -0
  1073. package/src/javascript/app/pages/trade/lookback.js +59 -0
  1074. package/src/javascript/app/pages/trade/markets/contracts-dropdown.jsx +114 -0
  1075. package/src/javascript/app/pages/trade/markets/market-selector.jsx +97 -0
  1076. package/src/javascript/app/pages/trade/markets/markets-dropdown.jsx +671 -0
  1077. package/src/javascript/app/pages/trade/markets.jsx +705 -0
  1078. package/src/javascript/app/pages/trade/notifications.js +58 -0
  1079. package/src/javascript/app/pages/trade/price.js +521 -0
  1080. package/src/javascript/app/pages/trade/process.js +454 -0
  1081. package/src/javascript/app/pages/trade/purchase/contract-details.jsx +280 -0
  1082. package/src/javascript/app/pages/trade/purchase/contract-table.jsx +256 -0
  1083. package/src/javascript/app/pages/trade/purchase/purchase.jsx +1806 -0
  1084. package/src/javascript/app/pages/trade/purchase.js +429 -0
  1085. package/src/javascript/app/pages/trade/reset.js +87 -0
  1086. package/src/javascript/app/pages/trade/starttime.js +146 -0
  1087. package/src/javascript/app/pages/trade/symbols.js +116 -0
  1088. package/src/javascript/app/pages/trade/tick.js +218 -0
  1089. package/src/javascript/app/pages/trade/tick_trade.js +415 -0
  1090. package/src/javascript/app/pages/trade/tradepage.js +125 -0
  1091. package/src/javascript/app/pages/trade/update_values.js +78 -0
  1092. package/src/javascript/app/pages/user/account/__tests__/portfolio.js +91 -0
  1093. package/src/javascript/app/pages/user/account/portfolio/portfolio.init.js +243 -0
  1094. package/src/javascript/app/pages/user/account/portfolio/portfolio.js +57 -0
  1095. package/src/javascript/app/pages/user/account/settings/professional_client.js +140 -0
  1096. package/src/javascript/app/pages/user/account/settings/self_exclusion.js +408 -0
  1097. package/src/javascript/app/pages/user/account/top_up_virtual/pop_up.js +118 -0
  1098. package/src/javascript/app/pages/user/account/top_up_virtual/top_up_virtual.js +44 -0
  1099. package/src/javascript/app/pages/user/get_currency.js +110 -0
  1100. package/src/javascript/app/pages/user/reality_check/reality_check.data.js +87 -0
  1101. package/src/javascript/app/pages/user/reality_check/reality_check.js +43 -0
  1102. package/src/javascript/app/pages/user/reality_check/reality_check.ui.js +144 -0
  1103. package/src/javascript/app/pages/user/update_balance.js +109 -0
  1104. package/src/javascript/app/pages/user/update_total.js +39 -0
  1105. package/src/javascript/app/pages/user/view_popup/view_popup.js +1155 -0
  1106. package/src/javascript/app/pages/user/view_popup/view_popup.ui.js +194 -0
  1107. package/src/javascript/app/theme/palette.ts +71 -0
  1108. package/src/javascript/config.js +162 -0
  1109. package/src/javascript/index.js +114 -0
  1110. package/src/javascript/landing_pages/.eslintrc.js +11 -0
  1111. package/src/javascript/landing_pages/common.js +205 -0
  1112. package/src/javascript/manifest.json +66 -0
  1113. package/src/root_files/_common/404.html +105 -0
  1114. package/src/root_files/_common/robots.txt +2 -0
  1115. package/src/root_files/app/index.html +97 -0
  1116. package/src/root_files/app/sitemap.id.xml +37 -0
  1117. package/src/root_files/app/sitemap.xml +14 -0
  1118. package/src/sass/README.md +120 -0
  1119. package/src/sass/_common/base/animations.scss +48 -0
  1120. package/src/sass/_common/base/constants-deriv.scss +139 -0
  1121. package/src/sass/_common/base/constants.scss +66 -0
  1122. package/src/sass/_common/base/functions.scss +64 -0
  1123. package/src/sass/_common/base/language_base.scss +202 -0
  1124. package/src/sass/_common/base/media-queries.scss +72 -0
  1125. package/src/sass/_common/base/mixin.scss +175 -0
  1126. package/src/sass/_common/base/reset.scss +46 -0
  1127. package/src/sass/_common/base/theme.scss +348 -0
  1128. package/src/sass/_common/common.scss +1155 -0
  1129. package/src/sass/_common/common_import.scss +7 -0
  1130. package/src/sass/_common/components.scss +562 -0
  1131. package/src/sass/_common/external/_grid-settings-flex.scss +57 -0
  1132. package/src/sass/_common/external/_grid-settings.scss +60 -0
  1133. package/src/sass/_common/external/_variables.scss +28 -0
  1134. package/src/sass/_common/external/grid-flex.scss +42 -0
  1135. package/src/sass/_common/external/grid-mixins.scss +64 -0
  1136. package/src/sass/_common/external/grid.scss +63 -0
  1137. package/src/sass/_common/external/gridle/_api.scss +814 -0
  1138. package/src/sass/_common/external/gridle/_default-states.scss +37 -0
  1139. package/src/sass/_common/external/gridle/_driver-default.scss +432 -0
  1140. package/src/sass/_common/external/gridle/_driver-flex.scss +378 -0
  1141. package/src/sass/_common/external/gridle/_flexbox.scss +422 -0
  1142. package/src/sass/_common/external/gridle/_functions.scss +1108 -0
  1143. package/src/sass/_common/external/gridle/_generate-mixins.scss +645 -0
  1144. package/src/sass/_common/external/gridle/_gridle-flex.scss +60 -0
  1145. package/src/sass/_common/external/gridle/_gridle.scss +59 -0
  1146. package/src/sass/_common/external/gridle/_init.scss +147 -0
  1147. package/src/sass/_common/external/gridle/_mixins.scss +469 -0
  1148. package/src/sass/_common/external/gridle/_settings-mixins.scss +387 -0
  1149. package/src/sass/_common/external/gridle/_settings.scss +127 -0
  1150. package/src/sass/_common/external/mmenu/jquery.mmenu.all.scss +1276 -0
  1151. package/src/sass/_common/external/style.scss +361 -0
  1152. package/src/sass/_common/external/tests.scss +519 -0
  1153. package/src/sass/_common/external/third-party.scss +57 -0
  1154. package/src/sass/_common/external/tools/_reset.scss +47 -0
  1155. package/src/sass/_common/footer.scss +188 -0
  1156. package/src/sass/_common/header.scss +1799 -0
  1157. package/src/sass/_common/icons.scss +29 -0
  1158. package/src/sass/_common/img_lightbox.scss +59 -0
  1159. package/src/sass/_common/jquery_elements.scss +117 -0
  1160. package/src/sass/_common/reskin.scss +3928 -0
  1161. package/src/sass/_common/table.scss +104 -0
  1162. package/src/sass/_common/wallet_header.scss +224 -0
  1163. package/src/sass/app/components/account_transfer.scss +93 -0
  1164. package/src/sass/app/components/cashier-modal.scss +614 -0
  1165. package/src/sass/app/components/contract.scss +166 -0
  1166. package/src/sass/app/components/market.scss +442 -0
  1167. package/src/sass/app/components/peek_box.scss +391 -0
  1168. package/src/sass/app/components/stats-dialog.scss +46 -0
  1169. package/src/sass/app/components/trade-reports-modal.scss +771 -0
  1170. package/src/sass/app/reality_check.scss +99 -0
  1171. package/src/sass/app/sell_popup.scss +387 -0
  1172. package/src/sass/app/trade.scss +5012 -0
  1173. package/src/sass/app/trading.scss +127 -0
  1174. package/src/sass/app/websocket_pages.scss +210 -0
  1175. package/src/sass/app.scss +16 -0
  1176. package/src/sass/common.scss +27 -0
  1177. package/src/sass/reset.scss +27 -0
  1178. package/src/sass/static/animate-ui.css +215 -0
  1179. package/src/sass/static/guide.enjoyhint.scss +308 -0
  1180. package/src/sass/static/guide.scss +31 -0
  1181. package/src/sass/static/pages.scss +299 -0
  1182. package/src/sass/static.scss +5 -0
  1183. package/src/templates/.eslintrc.js +6 -0
  1184. package/src/templates/README.md +105 -0
  1185. package/src/templates/_common/_layout/head.jsx +61 -0
  1186. package/src/templates/_common/_layout/header.jsx +182 -0
  1187. package/src/templates/_common/_layout/layout.jsx +212 -0
  1188. package/src/templates/_common/_layout/wallet-header.jsx +121 -0
  1189. package/src/templates/_common/brand.config.js +25 -0
  1190. package/src/templates/_common/components/box_row.jsx +45 -0
  1191. package/src/templates/_common/components/cashier_modal.jsx +486 -0
  1192. package/src/templates/_common/components/elements.jsx +294 -0
  1193. package/src/templates/_common/components/forms.jsx +241 -0
  1194. package/src/templates/_common/components/html_comment.jsx +7 -0
  1195. package/src/templates/_common/components/language-menu-modal.jsx +17 -0
  1196. package/src/templates/_common/components/list_multiline.jsx +22 -0
  1197. package/src/templates/_common/components/list_nested.jsx +17 -0
  1198. package/src/templates/_common/components/loading.jsx +28 -0
  1199. package/src/templates/_common/components/mobile_menu.jsx +164 -0
  1200. package/src/templates/_common/components/notification.jsx +26 -0
  1201. package/src/templates/_common/components/open_positions_modal.jsx +55 -0
  1202. package/src/templates/_common/components/separator_line.jsx +27 -0
  1203. package/src/templates/_common/components/sidebar.jsx +42 -0
  1204. package/src/templates/_common/components/statements_modal.jsx +65 -0
  1205. package/src/templates/_common/components/step.jsx +15 -0
  1206. package/src/templates/_common/components/tabs.jsx +67 -0
  1207. package/src/templates/_common/components/title.jsx +8 -0
  1208. package/src/templates/_common/components/trade_reports_modal.jsx +213 -0
  1209. package/src/templates/_common/includes/anti_clickjack.jsx +20 -0
  1210. package/src/templates/_common/includes/elevio.jsx +23 -0
  1211. package/src/templates/_common/includes/favicons.jsx +42 -0
  1212. package/src/templates/_common/includes/google_optimizer.jsx +7 -0
  1213. package/src/templates/_common/includes/gtm.jsx +8 -0
  1214. package/src/templates/_common/includes/livechat.jsx +21 -0
  1215. package/src/templates/app/callback.jsx +30 -0
  1216. package/src/templates/app/dialog.jsx +23 -0
  1217. package/src/templates/app/endpoint.jsx +50 -0
  1218. package/src/templates/app/logged_in.jsx +337 -0
  1219. package/src/templates/app/trade/analysis.jsx +51 -0
  1220. package/src/templates/app/trade/explanation.jsx +336 -0
  1221. package/src/templates/app/trade/price-chart.jsx +103 -0
  1222. package/src/templates/app/trade/trading.jsx +1829 -0
  1223. package/src/templates/app/user/portfolio.jsx +59 -0
  1224. package/src/templates/app/user/reality_check/deriv_summary.jsx +77 -0
  1225. package/src/templates/app/user/reality_check/form.jsx +22 -0
  1226. package/src/templates/app/user/reality_check/frequency.jsx +13 -0
  1227. package/src/templates/app/user/reality_check/summary.jsx +53 -0
  1228. package/src/templates/app/user/reality_check/wrapper.jsx +15 -0
  1229. package/src/templates/static/404.jsx +22 -0
  1230. package/src/translations/ach_UG.po +1860 -0
  1231. package/src/translations/ar_SA.po +1860 -0
  1232. package/src/translations/bn_BD.po +1860 -0
  1233. package/src/translations/de_DE.po +1860 -0
  1234. package/src/translations/en.po +14817 -0
  1235. package/src/translations/es_ES.po +1860 -0
  1236. package/src/translations/fr_FR.po +1860 -0
  1237. package/src/translations/id_ID.po +3069 -0
  1238. package/src/translations/it_IT.po +1860 -0
  1239. package/src/translations/km_KH.po +1860 -0
  1240. package/src/translations/ko_KR.po +1860 -0
  1241. package/src/translations/messages.pot +1901 -0
  1242. package/src/translations/mn_MN.po +1860 -0
  1243. package/src/translations/pl_PL.po +1860 -0
  1244. package/src/translations/pt_PT.po +1860 -0
  1245. package/src/translations/ru_RU.po +1917 -0
  1246. package/src/translations/si_LK.po +1860 -0
  1247. package/src/translations/sw_KE.po +1860 -0
  1248. package/src/translations/th_TH.po +1860 -0
  1249. package/src/translations/tr_TR.po +1860 -0
  1250. package/src/translations/uz_UZ.po +1860 -0
  1251. package/src/translations/vi_VN.po +1860 -0
  1252. package/src/translations/zh_CN.po +1860 -0
  1253. package/src/translations/zh_TW.po +1860 -0
  1254. package/stagewise.json +6 -0
  1255. package/styles.scss +8 -0
  1256. package/vendor/deriv-com-analytics/LICENSE +21 -0
  1257. package/vendor/deriv-com-analytics/README.md +112 -0
  1258. package/vendor/deriv-com-analytics/lib/analytics.d.ts +58 -0
  1259. package/vendor/deriv-com-analytics/lib/analytics.js +258 -0
  1260. package/vendor/deriv-com-analytics/lib/growthbook.d.ts +29 -0
  1261. package/vendor/deriv-com-analytics/lib/growthbook.js +144 -0
  1262. package/vendor/deriv-com-analytics/lib/index.d.ts +2 -0
  1263. package/vendor/deriv-com-analytics/lib/index.js +5 -0
  1264. package/vendor/deriv-com-analytics/lib/rudderstack.d.ts +52 -0
  1265. package/vendor/deriv-com-analytics/lib/rudderstack.js +162 -0
  1266. package/vendor/deriv-com-analytics/lib/types.d.ts +334 -0
  1267. package/vendor/deriv-com-analytics/lib/types.js +2 -0
  1268. package/vendor/deriv-com-analytics/package.json +42 -0
  1269. package/vercel.dr.json +5 -0
  1270. package/vercel.json +8 -0
@@ -0,0 +1,1572 @@
1
+ // const BinaryPjax = require('./binary_pjax');
2
+ const requestOidcAuthentication = require('@deriv-com/auth-client').requestOidcAuthentication;
3
+ const Client = require('./client');
4
+ const BinarySocket = require('./socket');
5
+ const AuthClient = require('../../_common/auth');
6
+ const showHidePulser = require('../common/account_opening').showHidePulser;
7
+ const updateTotal = require('../pages/user/update_total');
8
+ const isAuthenticationAllowed = require('../../_common/base/client_base').isAuthenticationAllowed;
9
+ const GTM = require('../../_common/base/gtm');
10
+ const Login = require('../../_common/base/login');
11
+ const SocketCache = require('../../_common/base/socket_cache');
12
+ // const elementInnerHtml = require('../../_common/common_functions').elementInnerHtml;
13
+ const getElementById = require('../../_common/common_functions').getElementById;
14
+ const localize = require('../../_common/localize').localize;
15
+ const localizeKeepPlaceholders = require('../../_common/localize').localizeKeepPlaceholders;
16
+ const State = require('../../_common/storage').State;
17
+ const Url = require('../../_common/url');
18
+ const applyToAllElements = require('../../_common/utility').applyToAllElements;
19
+ const createElement = require('../../_common/utility').createElement;
20
+ const findParent = require('../../_common/utility').findParent;
21
+ const getTopLevelDomain = require('../../_common/utility').getTopLevelDomain;
22
+ const getPlatformSettings = require('../../../templates/_common/brand.config').getPlatformSettings;
23
+ const template = require('../../_common/utility').template;
24
+ const Language = require('../../_common/language');
25
+ const mapCurrencyName = require('../../_common/base/currency_base').mapCurrencyName;
26
+ const isEuCountry = require('../common/country_base').isEuCountry;
27
+ const DerivLiveChat = require('../pages/livechat.jsx');
28
+ const Chat = require('../../_common/chat.js').default;
29
+ const TelegramAuth = require('../common/telegram_auth');
30
+ const { getTelegramBotUsername } = require('../../config');
31
+ const getRemoteConfig = require('../hooks/useRemoteConfig').getRemoteConfig;
32
+ const OpenPositionsModal = require('../common/open_positions_modal');
33
+ const TradeReportsModal = require('../common/trade_reports_modal');
34
+ const StatementsModal = require('../common/statements_modal');
35
+ const CashierModal = require('../common/cashier_modal');
36
+
37
+ const header_icon_base_path = '/images/pages/header/';
38
+ const wallet_header_icon_base_path = '/images/pages/header/wallets/';
39
+ const whatsapp_email = 'oleglr@mail.ru';
40
+ const mailru_compose_url = `https://e.mail.ru/compose/?to=${encodeURIComponent(whatsapp_email)}`;
41
+
42
+ const Header = (() => {
43
+ const notifications = [];
44
+ let is_language_popup_on = false;
45
+ let is_full_screen = false;
46
+ const ext_platform_url = encodeURIComponent(window.location.href);
47
+ const fullscreen_map = {
48
+ event : ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'],
49
+ element : ['fullscreenElement', 'webkitFullscreenElement', 'mozFullScreenElement', 'msFullscreenElement'],
50
+ fnc_enter: ['requestFullscreen', 'webkitRequestFullscreen', 'mozRequestFullScreen', 'msRequestFullscreen'],
51
+ fnc_exit : ['exitFullscreen', 'webkitExitFullscreen', 'mozCancelFullScreen', 'msExitFullscreen'],
52
+ };
53
+
54
+ const onLoad = () => {
55
+ populateAccountsList();
56
+ populateWalletAccounts();
57
+ bindSvg();
58
+ switchHeaders();
59
+ BinarySocket.wait('authorize','landing_company').then(() => {
60
+ setHeaderUrls();
61
+ bindPlatform();
62
+ bindClick();
63
+ });
64
+ if (Client.isLoggedIn()) {
65
+ const wallet_divider = getElementById('wallet-divider');
66
+ if (wallet_divider) wallet_divider.style.display = 'none';
67
+ displayAccountStatus();
68
+ }
69
+ fullscreen_map.event.forEach(event => {
70
+ document.addEventListener(event, onFullScreen, false);
71
+ });
72
+
73
+ applyFeatureFlags();
74
+ OpenPositionsModal.init();
75
+ TradeReportsModal.init();
76
+ StatementsModal.init();
77
+ CashierModal.init();
78
+ };
79
+
80
+ const applyFeatureFlags = () => {
81
+ getRemoteConfig(true)
82
+ .then(data => {
83
+ const { cs_chat_livechat, cs_chat_whatsapp } = data.data;
84
+
85
+ const topbar_whatsapp = getElementById('topbar-whatsapp');
86
+ const whatsapp_mobile_drawer = getElementById('whatsapp-mobile-drawer');
87
+
88
+ if (document.getElementById('deriv_livechat')) { DerivLiveChat.init(cs_chat_livechat); }
89
+
90
+ topbar_whatsapp.style.display = cs_chat_whatsapp ? 'inline-flex' : 'none';
91
+ whatsapp_mobile_drawer.style.display = cs_chat_whatsapp ? 'flex' : 'none';
92
+ })
93
+
94
+ .catch(error => {
95
+ if (document.getElementById('deriv_livechat')) { DerivLiveChat.init(); }
96
+ // eslint-disable-next-line no-console
97
+ console.error('Error fetching feature flags:', error);
98
+ });
99
+ };
100
+
101
+ const switchHeaders = () => {
102
+ const regular_header = getElementById('regular__header');
103
+ const wallet_header = getElementById('wallet__header');
104
+ if (regular_header) regular_header.style.visibility = 'hidden';
105
+ if (wallet_header) wallet_header.style.visibility = 'hidden';
106
+
107
+ if (Client.hasWalletsAccount()) {
108
+ if (regular_header) regular_header.remove();
109
+ if (wallet_header) wallet_header.style.visibility = 'visible';
110
+ } else {
111
+ if (wallet_header) wallet_header.remove();
112
+ if (regular_header) regular_header.style.visibility = 'visible';
113
+ }
114
+ };
115
+
116
+ const setHeaderUrls = () => {
117
+ const url_add_account_dynamic = document.getElementById('url-add-account-dynamic');
118
+ const btn__signup = getElementById('btn__signup');
119
+ const static_url = Url.getStaticUrl();
120
+ const signup_url = `${static_url}/signup/`;
121
+ btn__signup.href = signup_url;
122
+
123
+ if (isEuCountry()) {
124
+ url_add_account_dynamic.classList.remove('url-add-account');
125
+ url_add_account_dynamic.classList.add('url-add-account-multiplier');
126
+ }
127
+
128
+ applyToAllElements('.url-wallet-apps', (el) => {
129
+ el.href = Url.urlForDeriv('', `ext_platform_url=${ext_platform_url}`);
130
+ });
131
+ applyToAllElements('.url-appstore', (el) => {
132
+ el.href = Url.urlForDeriv('', `ext_platform_url=${ext_platform_url}`);
133
+ });
134
+ applyToAllElements('.url-reports-positions', (el) => {
135
+ el.href = Url.urlForDeriv('reports/positions', `ext_platform_url=${ext_platform_url}`);
136
+ });
137
+ applyToAllElements('.url-reports-profit', (el) => {
138
+ el.href = Url.urlForDeriv('reports/profit', `ext_platform_url=${ext_platform_url}`);
139
+ });
140
+ applyToAllElements('.url-reports-statement', el => {
141
+ el.href = Url.urlForDeriv('reports/statement', `ext_platform_url=${ext_platform_url}`);
142
+ });
143
+ applyToAllElements('.url-cashier-deposit', el => {
144
+ el.href = '#cashier-modal';
145
+ el.setAttribute('role', 'button');
146
+ el.setAttribute('aria-controls', 'cashier-modal');
147
+ });
148
+ applyToAllElements('.url-account-details', el => {
149
+ el.href = Url.urlForDeriv('account/personal-details', `ext_platform_url=${ext_platform_url}`);
150
+ });
151
+ applyToAllElements('.url-add-account', el => {
152
+ el.href = Url.urlForDeriv('redirect', `action=add_account&ext_platform_url=${ext_platform_url}`);
153
+ });
154
+ applyToAllElements('.url-add-account-multiplier', el => {
155
+ el.href = Url.urlForDeriv('redirect', `action=add_account_multiplier&ext_platform_url=${ext_platform_url}`);
156
+ });
157
+ applyToAllElements('.url-manage-account', el => {
158
+ el.href = Url.urlForDeriv('redirect', `action=manage_account&ext_platform_url=${ext_platform_url}`);
159
+ });
160
+ applyToAllElements('.url-wallets-deposit', el => {
161
+ el.href = Url.urlForDeriv('redirect', `action=payment_transfer&ext_platform_url=${ext_platform_url}`);
162
+ });
163
+ };
164
+
165
+ const onUnload = () => {
166
+ fullscreen_map.event.forEach(event => {
167
+ document.removeEventListener(event, onFullScreen);
168
+ });
169
+ };
170
+
171
+ const onFullScreen = () => {
172
+ is_full_screen = fullscreen_map.element.some(el => document[el]);
173
+ };
174
+
175
+ const bindSvg = () => {
176
+
177
+ applyToAllElements('#add-account-icon', (el) => {
178
+ el.src = Url.urlForStatic(`${header_icon_base_path}ic-add-account.svg?${process.env.BUILD_HASH}`);
179
+ });
180
+
181
+ applyToAllElements('#appstore-icon', (el) => {
182
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-appstore.svg?${process.env.BUILD_HASH}`);
183
+ });
184
+
185
+ applyToAllElements('.header__expand', (el) => {
186
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-arrow-down.svg?${process.env.BUILD_HASH}`);
187
+ });
188
+ // TODO : Change to light arrow down icon
189
+ applyToAllElements('.header__expand-light', (el) => {
190
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-arrow-down.svg?${process.env.BUILD_HASH}`);
191
+ });
192
+
193
+ applyToAllElements('.header__logo', (el) => {
194
+ el.src = Url.urlForStatic(`${header_icon_base_path}header.svg?${process.env.BUILD_HASH}`);
195
+ });
196
+
197
+ applyToAllElements('#mobile__platform-switcher-current .header__logo', (el) => {
198
+ el.src = Url.urlForStatic(`/images/common/logos/ic-brand-dtrader.svg?${process.env.BUILD_HASH}`);
199
+ });
200
+
201
+ applyToAllElements('.logout-icon', (el) => {
202
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-logout.svg?${process.env.BUILD_HASH}`);
203
+ });
204
+
205
+ applyToAllElements('.reports-icon', (el) => {
206
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-reports.svg?${process.env.BUILD_HASH}`);
207
+ });
208
+
209
+ applyToAllElements('.whatsapp-icon', (el) => {
210
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-gmail.svg?${process.env.BUILD_HASH}`);
211
+ });
212
+
213
+ applyToAllElements('.livechat-icon', (el) => {
214
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-livechat.svg?${process.env.BUILD_HASH}`);
215
+ });
216
+
217
+ applyToAllElements('.btn__close', (el) => {
218
+ el.src = Url.urlForStatic(`${header_icon_base_path}ic-close.svg?${process.env.BUILD_HASH}`);
219
+ });
220
+
221
+ applyToAllElements('#header__notification-icon', (el) => {
222
+ el.src = Url.urlForStatic(`${header_icon_base_path}ic-bell.svg?${process.env.BUILD_HASH}`);
223
+ });
224
+
225
+ applyToAllElements('#header__notification-empty-img', (el) => {
226
+ el.src = Url.urlForStatic(`${header_icon_base_path}ic-box.svg?${process.env.BUILD_HASH}`);
227
+ });
228
+
229
+ applyToAllElements('#header__account-settings', (el) => {
230
+ el.src = Url.urlForStatic(`${header_icon_base_path}ic-user-outline.svg?${process.env.BUILD_HASH}`);
231
+ });
232
+
233
+ applyToAllElements('#header__hamburger', (el) => {
234
+ el.src = Url.urlForStatic(`${header_icon_base_path}ic-hamburger.svg?${process.env.BUILD_HASH}`);
235
+ });
236
+
237
+ applyToAllElements('.wallet-apps-logo', (el) => {
238
+ el.src = Url.urlForStatic(`${wallet_header_icon_base_path}wallet-apps-logo.svg?${process.env.BUILD_HASH}`);
239
+ });
240
+
241
+ applyToAllElements('.deriv-com-logo', (el) => {
242
+ el.src = Url.urlForStatic(`${wallet_header_icon_base_path}ic-wallets-deriv-apps.svg?${process.env.BUILD_HASH}`);
243
+ });
244
+
245
+ applyToAllElements('.deriv-com-logo-mobile', (el) => {
246
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-kodxyz.svg?${process.env.BUILD_HASH}`);
247
+ });
248
+
249
+ applyToAllElements('#mobile__platform-switcher-icon-trade', (el) => {
250
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-trade.svg?${process.env.BUILD_HASH}`);
251
+ });
252
+
253
+ applyToAllElements('#cashier-icon', (el) => {
254
+ el.src = Url.urlForStatic(`${header_icon_base_path}ic-cashier.svg?${process.env.BUILD_HASH}`);
255
+ });
256
+
257
+ applyToAllElements('#mobile__platform-switcher-icon-arrowright', (el) => {
258
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-arrow-right.svg?${process.env.BUILD_HASH}`);
259
+ });
260
+
261
+ applyToAllElements('#mobile__menu-content-submenu-icon-back', (el) => {
262
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-arrow-left.svg?${process.env.BUILD_HASH}`);
263
+ });
264
+
265
+ applyToAllElements('#mobile__menu-content-submenu-icon-open', (el) => {
266
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-portfolio.svg?${process.env.BUILD_HASH}`);
267
+ });
268
+
269
+ applyToAllElements('#mobile__menu-content-submenu-icon-profit', (el) => {
270
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-profit.svg?${process.env.BUILD_HASH}`);
271
+ });
272
+
273
+ applyToAllElements('#mobile__menu-content-submenu-icon-statement', (el) => {
274
+ el.src = Url.urlForStatic(`${header_icon_base_path}mobile-menu/mobile-menu-statement.svg?${process.env.BUILD_HASH}`);
275
+ });
276
+ };
277
+
278
+ const bindPlatform = () => {
279
+ // Web
280
+ const platform_list = getElementById('platform__list');
281
+
282
+ // Mobile
283
+ const mobile_platform_list = getElementById('mobile__platform-switcher-dropdown-content');
284
+ if (platform_list.hasChildNodes()) {
285
+ return;
286
+ }
287
+ const is_logged_in = Client.isLoggedIn();
288
+ const should_show_bots_when_logged_in = Client.isAccountOfType('virtual') ? !Client.isMultipliersOnly() : !Client.isMF() && !Client.isOptionsBlocked();
289
+ const should_show_bots = is_logged_in ? should_show_bots_when_logged_in : !isEuCountry();
290
+
291
+ const dtrader_settings = getPlatformSettings('dtrader');
292
+ const dbot_settings = getPlatformSettings('dbot');
293
+ const smarttrader_settings = getPlatformSettings('smarttrader');
294
+
295
+ const platforms = {
296
+ dtrader: {
297
+ name : dtrader_settings.name,
298
+ desc : localize('A whole new trading experience on a powerful yet easy to use platform.'),
299
+ link : 'https://xyztrading.vercel.app/',
300
+ icon : dtrader_settings.icon,
301
+ on_mobile: true,
302
+ target : '_self',
303
+ },
304
+ ...(should_show_bots ? {
305
+ dbot: {
306
+ name : dbot_settings.name,
307
+ desc : localize('Automated trading at your fingertips. No coding needed.'),
308
+ link : 'https://xyzautobot.vercel.app/',
309
+ icon : dbot_settings.icon,
310
+ on_mobile: true,
311
+ target : '_self',
312
+ },
313
+ } : {}),
314
+ smarttrader: {
315
+ name : smarttrader_settings.name,
316
+ desc : localize('Trade the world\'s markets with our popular user-friendly platform.'),
317
+ link : '#',
318
+ icon : smarttrader_settings.icon,
319
+ on_mobile: true,
320
+ target : '_self',
321
+ },
322
+ };
323
+
324
+ Object.keys(platforms).forEach(key => {
325
+ const platform = platforms[key];
326
+ const platform_div = createElement('a', { class: `platform__list-item ${key === 'smarttrader' ? 'platform__list-item--active' : ''}`, href: platform.link });
327
+ const platform_icon = createElement('img', { src: `${Url.urlForStatic(`${header_icon_base_path}${platform.icon}?${process.env.BUILD_HASH}`)}`, class: 'platform__list-item-icon' });
328
+ const platform_text_container = createElement('div', { class: 'platform__list-item-text ' });
329
+ const platform_name = createElement('div', { text: platform.name, class: 'platform__list-item-name' });
330
+ const platform_desc = createElement('div', { text: platform.desc, class: 'platform__list-item-desc' });
331
+ const icon_container = createElement('span', { class: 'platform__list-item-icon-container' });
332
+
333
+ icon_container.appendChild(platform_icon);
334
+ platform_div.appendChild(icon_container);
335
+ platform_text_container.appendChild(platform_name);
336
+ platform_text_container.appendChild(platform_desc);
337
+ platform_div.appendChild(platform_text_container);
338
+
339
+ if (platform.on_mobile) {
340
+ mobile_platform_list.appendChild(platform_div.cloneNode(true));
341
+ }
342
+ platform_list.appendChild(platform_div);
343
+ });
344
+
345
+ // Make cta link in dropdown dynamic depending on account type (wallet or non-wallet)
346
+ const traders_hub_link = 'https://vk.com/kodxyzclub';
347
+ const platform_dropdown_cta_container = createElement('div', { class: 'platform__dropdown-cta' });
348
+ const platform_dropdown_cta_link = createElement('a', { text: localize('Find out about the latest information on XYZSTRATTEGY'), class: ' platform__dropdown-cta--link', href: traders_hub_link });
349
+
350
+ platform_dropdown_cta_container.appendChild(platform_dropdown_cta_link);
351
+ platform_list.appendChild(platform_dropdown_cta_container.cloneNode(true));
352
+ // Add traders hub cta link to mobile platform switcher dropdown as well
353
+ mobile_platform_list.appendChild(platform_dropdown_cta_container);
354
+ };
355
+
356
+ const bindClick = () => {
357
+ const btn_login = getElementById('btn__login');
358
+ btn_login.removeEventListener('click', loginOnClick);
359
+ btn_login.addEventListener('click', loginOnClick);
360
+
361
+ const btn_login_telegram = getElementById('btn__login-telegram');
362
+ if (btn_login_telegram) {
363
+ btn_login_telegram.removeEventListener('click', loginWithTelegramOnClick);
364
+ btn_login_telegram.addEventListener('click', loginWithTelegramOnClick);
365
+ }
366
+
367
+ applyToAllElements('.logout', (el) => {
368
+ el.removeEventListener('click', logoutOnClick);
369
+ el.addEventListener('click', logoutOnClick);
370
+ });
371
+ // Mobile menu
372
+ const mobile_menu_overlay = getElementById('mobile__container');
373
+ const mobile_menu = getElementById('mobile__menu');
374
+ const mobile_menu_close = getElementById('mobile__menu-close');
375
+ const hamburger_menu = getElementById('header__hamburger');
376
+ const mobile_menu__livechat_logo = getElementById('mobile__menu-header-livechat__logo');
377
+ const mobile_menu_active = 'mobile__container--active';
378
+ const showMobileMenu = (shouldShow) => {
379
+ if (shouldShow) {
380
+ mobile_menu_overlay.classList.add(mobile_menu_active);
381
+ document.body.classList.add('stop-scrolling');
382
+ } else {
383
+ mobile_menu_overlay.classList.remove(mobile_menu_active);
384
+ document.body.classList.remove('stop-scrolling');
385
+ }
386
+ };
387
+
388
+ hamburger_menu.addEventListener('click', () => showMobileMenu(true));
389
+ mobile_menu_close.addEventListener('click', () => showMobileMenu(false));
390
+
391
+ // Mobile Menu Livechat Icon
392
+ mobile_menu__livechat_logo.src = Url.urlForStatic(`images/common/livechat.svg?${process.env.BUILD_HASH}`);
393
+
394
+ // Notification Event
395
+ const notification_bell = getElementById('header__notification-icon-container');
396
+ const notification_container = getElementById('header__notification-container');
397
+ const notification_close = getElementById('header__notification-close');
398
+ const notification_active = 'header__notification-container--show';
399
+ const showNotification = (should_open) => {
400
+ notification_container.toggleClass(notification_active, should_open);
401
+ };
402
+
403
+ notification_bell.addEventListener('click', (event) => {
404
+ if (notification_container.classList.contains(notification_active)
405
+ && !notification_container.contains(event.target)) {
406
+ showNotification(false);
407
+ } else {
408
+ showNotification(true);
409
+ }
410
+ });
411
+
412
+ notification_close.addEventListener('click', () => showNotification(false));
413
+
414
+ // Platform Switcher Event
415
+ const platform_switcher_arrow = getElementById('platform__switcher-expand');
416
+ const platform_switcher = getElementById('platform__switcher');
417
+ const platform_dropdown = getElementById('platform__dropdown');
418
+ const platform__list = getElementById('platform__list');
419
+ const platform_dropdown_active = 'platform__dropdown--show';
420
+
421
+ const showPlatformSwitcher = (should_open) => {
422
+ if (should_open) {
423
+ platform_dropdown.classList.add(platform_dropdown_active);
424
+ platform_switcher_arrow.classList.add('rotated');
425
+ document.body.classList.add('stop-scrolling');
426
+ } else {
427
+ platform_dropdown.classList.remove(platform_dropdown_active);
428
+ platform_switcher_arrow.classList.remove('rotated');
429
+ document.body.classList.remove('stop-scrolling');
430
+ }
431
+ };
432
+
433
+ applyToAllElements('.platform__list-item', (el) => {
434
+ el.addEventListener('click', () => {
435
+ showPlatformSwitcher(false);
436
+ showMobileMenu(false);
437
+ });
438
+ });
439
+
440
+ platform_switcher.addEventListener('click', () => {
441
+ if (platform_dropdown.classList.contains(platform_dropdown_active)) {
442
+ showPlatformSwitcher(false);
443
+ } else {
444
+ showPlatformSwitcher(true);
445
+ }
446
+ });
447
+
448
+ // Mobile Platform Switcher Event
449
+ const mobile_platform_switcher_current = getElementById('mobile__platform-switcher-current');
450
+ const mobile_platform_switcher = getElementById('mobile__platform-switcher-expand');
451
+ const mobile_platform_switcher_dropdown = getElementById('mobile__platform-switcher-dropdown');
452
+ const mobile_platform_switcher_active = 'mobile__platform-switcher-dropdown--show';
453
+ const showMobilePlatformSwitcher = (shouldShow) => {
454
+ if (shouldShow) {
455
+ mobile_platform_switcher.classList.add('rotated');
456
+ mobile_platform_switcher_dropdown.classList.add(mobile_platform_switcher_active);
457
+ } else {
458
+ mobile_platform_switcher.classList.remove('rotated');
459
+ mobile_platform_switcher_dropdown.classList.remove(mobile_platform_switcher_active);
460
+ }
461
+ };
462
+
463
+ mobile_platform_switcher_current.addEventListener('click', () => {
464
+ if (mobile_platform_switcher_dropdown.classList.contains(mobile_platform_switcher_active)) {
465
+ showMobilePlatformSwitcher(false);
466
+ } else {
467
+ showMobilePlatformSwitcher(true);
468
+ }
469
+ });
470
+
471
+ mobile_platform_switcher_dropdown.addEventListener('click', (event) => {
472
+ if (event.target === mobile_platform_switcher_dropdown) {
473
+ showMobilePlatformSwitcher(false);
474
+ }
475
+ });
476
+
477
+ // Dynamic link for trader's hub cta for mobile menu
478
+ const mobile_platform_appstore_link = getElementById('url-appstore');
479
+ const traders_hub_link = 'https://vk.com/kodxyzclub';
480
+ mobile_platform_appstore_link.href = traders_hub_link;
481
+
482
+ // Account Switcher Event
483
+ const acc_switcher = Client.hasWalletsAccount() ? getElementById('wallet_switcher') : getElementById('acc_switcher');
484
+ const account_switcher = Client.hasWalletsAccount() ? getElementById('wallet__switcher') : getElementById('account__switcher');
485
+ const account_switcher_dropdown = Client.hasWalletsAccount() ? getElementById('wallet__switcher-dropdown') : getElementById('account__switcher-dropdown');
486
+ const account_switcher_active = Client.hasWalletsAccount() ? 'wallet__switcher-dropdown--show' : 'account__switcher-dropdown--show';
487
+ const wallet_switcher_close = getElementById('wallet__switcher-close');
488
+ const acc_expand = getElementById('header__acc-expand');
489
+ const current_active_login = Client.get('loginid');
490
+ const all_login_ids = Client.getAllLoginids();
491
+ const has_real_account = all_login_ids.some((loginid) => !/^VRT/.test(loginid));
492
+ const is_virtual = current_active_login && current_active_login.startsWith('VRTC');
493
+ const add_account_text_normal = document.getElementById('add-account-text-normal');
494
+ const add_account_text_eu_country = document.getElementById('add-account-text-eu');
495
+ const showAccDropdown = (should_open) => {
496
+ if (!account_switcher_dropdown || !acc_expand) return;
497
+
498
+ if (should_open) {
499
+ account_switcher_dropdown.classList.add(account_switcher_active);
500
+ acc_expand.classList.add('rotated');
501
+
502
+ if (!Client.hasWalletsAccount()) {
503
+ $('#acc_tabs').tabs({ active: is_virtual ? 1 : 0 });
504
+ if (isEuCountry()) {
505
+ add_account_text_normal.style.display = 'none';
506
+ } else {
507
+ add_account_text_eu_country.style.display = 'none';
508
+ }
509
+ if (isEuCountry() && has_real_account) {
510
+ add_account_text_eu_country.parentElement.style.display = 'none';
511
+ }
512
+ }
513
+ } else {
514
+ account_switcher_dropdown.classList.remove(account_switcher_active);
515
+ acc_expand.classList.remove('rotated');
516
+ }
517
+ };
518
+
519
+ const account_toggle_elements = [acc_switcher, ...document.querySelectorAll('.header__acc-info, #header__acc-expand')]
520
+ .filter((el) => el);
521
+
522
+ const handleAccountToggle = (event) => {
523
+ if (!account_switcher_dropdown || !account_switcher) return;
524
+
525
+ if (!account_switcher_dropdown.contains(event.target)) {
526
+ if (account_switcher_dropdown.classList.contains(account_switcher_active)) {
527
+ showAccDropdown(false);
528
+ } else {
529
+ showAccDropdown(true);
530
+ }
531
+
532
+ if (platform_dropdown.classList.contains(platform_dropdown_active)) {
533
+ showPlatformSwitcher(false);
534
+ }
535
+ }
536
+ };
537
+
538
+ account_toggle_elements.forEach((el) => el.addEventListener('click', handleAccountToggle));
539
+
540
+ wallet_switcher_close.addEventListener('click', () => showAccDropdown(false));
541
+
542
+ // Mobile account switcher click outside
543
+ if (account_switcher_dropdown) {
544
+ account_switcher_dropdown.addEventListener('click', (event) => {
545
+ if (!account_switcher.contains(event.target)) {
546
+ showAccDropdown(false);
547
+ }
548
+ });
549
+ }
550
+
551
+ // Mobile reports menu
552
+ const appstore_menu = getElementById('mobile__platform-switcher-item-appstore');
553
+ const report_menu = getElementById('mobile__platform-switcher-item-reports');
554
+ const menu = getElementById('mobile_menu-content');
555
+ const submenu = getElementById('mobile__menu-content-submenu');
556
+ const back = getElementById('mobile__menu-content-submenu-header');
557
+ const submenu_active = 'mobile__menu-content-submenu--active';
558
+ const menu_active = 'mobile__menu-content--active';
559
+ const showMobileSubmenu = (shouldShow) => {
560
+ if (shouldShow) {
561
+ submenu.classList.add(submenu_active);
562
+ menu.classList.remove(menu_active);
563
+ } else {
564
+ submenu.classList.remove(submenu_active);
565
+ menu.classList.add(menu_active);
566
+ }
567
+ };
568
+
569
+ // Some note here
570
+ appstore_menu.addEventListener('click', () => {
571
+ showMobileSubmenu(false);
572
+ });
573
+
574
+ report_menu.addEventListener('click', () => {
575
+ showMobileSubmenu(true);
576
+ });
577
+
578
+ back.addEventListener('click', () => {
579
+ showMobileSubmenu(false);
580
+ });
581
+
582
+ // OnClickOutisde Event Handle
583
+ document.addEventListener('click', (event) => {
584
+ // Platform Switcher
585
+ if (!platform_switcher.contains(event.target)
586
+ && !platform__list.contains(event.target)
587
+ && platform_dropdown.classList.contains(platform_dropdown_active)) {
588
+ showPlatformSwitcher(false);
589
+ }
590
+
591
+ // Account Switcher
592
+ if (account_switcher_dropdown
593
+ && acc_switcher
594
+ && !account_switcher_dropdown.contains(event.target)
595
+ && !acc_switcher.contains(event.target)
596
+ && account_switcher_dropdown.classList.contains(account_switcher_active)) {
597
+ showAccDropdown(false);
598
+ }
599
+
600
+ // Mobile Menu
601
+ if (!mobile_menu.contains(event.target)
602
+ && !hamburger_menu.contains(event.target)
603
+ && mobile_menu_overlay.classList.contains(mobile_menu_active)) {
604
+ showMobilePlatformSwitcher(false);
605
+ showMobileMenu(false);
606
+ }
607
+
608
+ // Notification
609
+ if (!notification_container.contains(event.target)
610
+ && !notification_bell.contains(event.target)
611
+ && notification_container.classList.contains(notification_active)) {
612
+ showNotification(false);
613
+ }
614
+ });
615
+
616
+ // whatsapp mobile menu
617
+ const whatsapp_mobile_drawer = getElementById('whatsapp-mobile-drawer');
618
+ whatsapp_mobile_drawer.addEventListener('click', () => {
619
+ window.location.href = mailru_compose_url;
620
+ });
621
+
622
+ const livechat_mobile_link = getElementById('mobile__livechat-link');
623
+ if (livechat_mobile_link) {
624
+ livechat_mobile_link.addEventListener('click', (event) => {
625
+ event.preventDefault();
626
+ window.open('https://t.me/+QC5h7pc4UzplZTA6', '_blank');
627
+ });
628
+ }
629
+
630
+ // Livechat Logo
631
+ const livechat_img = getElementById('livechat__logo');
632
+ livechat_img.src = Url.urlForStatic(`images/common/livechat.svg?${process.env.BUILD_HASH}`);
633
+ livechat_img.addEventListener('click', (e) => {
634
+ e.preventDefault(); // Предотвращаем любые стандартные действия
635
+ e.stopPropagation(); // Останавливаем всплытие события
636
+ window.open('https://t.me/+d3YwcBNhmC9lYWI6', '_blank');
637
+ });
638
+
639
+ // Language Popup.
640
+ const current_language = Language.get();
641
+ const available_languages = Object.entries(Language.getAll()).filter(language => !(/ACH/.test(language[0])));
642
+
643
+ const el_language_select_img = getElementById('language-select__logo');
644
+ el_language_select_img.src = Url.urlForStatic(`images/languages/ic-flag-${current_language.toLowerCase()}.svg?${process.env.BUILD_HASH}`);
645
+
646
+ getElementById('language-select').addEventListener('click', toggleLanguagePopup);
647
+
648
+ const el_language_menu_modal = getElementById('language-menu-modal');
649
+ el_language_menu_modal.addEventListener('click', (e) => {
650
+ if ($(e.target).is(el_language_menu_modal)) {
651
+ toggleLanguagePopup();
652
+ }
653
+ });
654
+
655
+ available_languages.map((language) => {
656
+ const language_menu_item = createElement('div', {
657
+ class: `language-menu-item${ current_language === language[0] ? ' language-menu-item__active' : '' }`,
658
+ id : language[0],
659
+ });
660
+ language_menu_item.appendChild(createElement('img', { src: Url.urlForStatic(`images/languages/ic-flag-${language[0].toLowerCase()}.svg?${process.env.BUILD_HASH}`) }));
661
+ language_menu_item.appendChild(createElement('span', { text: language[1] }));
662
+ getElementById('language-menu-list').appendChild(language_menu_item);
663
+ });
664
+
665
+ applyToAllElements('.language-menu-item', (el) => {
666
+ el.addEventListener('click', () => {
667
+ const item_language = el.getAttribute('id');
668
+ if (item_language === current_language) return;
669
+ SocketCache.clear();
670
+
671
+ document.location = Language.urlFor(item_language);
672
+ });
673
+ }, '', getElementById('language-menu-list'));
674
+
675
+ const el_language_menu_close_btn = getElementById('language-menu-close_btn');
676
+ el_language_menu_close_btn.addEventListener('click', toggleLanguagePopup);
677
+
678
+ const topbar_help_center = document.getElementById('topbar-help-centre'); // Исправлено на document.getElementById
679
+ const topbar_help_center_clone = topbar_help_center.cloneNode(true);
680
+ topbar_help_center.replaceWith(topbar_help_center_clone);
681
+ topbar_help_center_clone.addEventListener('click', () => {
682
+ window.open('https://t.me/+ir5qkE03DxM2MGVi', '_blank');
683
+ });
684
+ const topbar_whatsapp = document.getElementById('topbar-whatsapp'); // Исправлено на document.getElementById
685
+ topbar_whatsapp.replaceWith(topbar_whatsapp.cloneNode(true));
686
+ // Topbar fullscreen events.
687
+ const topbar_fullscreen = getElementById('topbar-fullscreen');
688
+ topbar_fullscreen.addEventListener('click', toggleFullscreen);
689
+ };
690
+
691
+ const toggleLanguagePopup = () => {
692
+ is_language_popup_on = !is_language_popup_on;
693
+ getElementById('language-menu-modal').setVisibility(is_language_popup_on);
694
+ };
695
+
696
+ const toggleFullscreen = () => {
697
+ const to_exit = is_full_screen;
698
+ const el = to_exit ? document : document.documentElement;
699
+ const fncToCall = fullscreen_map[to_exit ? 'fnc_exit' : 'fnc_enter'].find(fnc => el[fnc]);
700
+
701
+ if (fncToCall) {
702
+ el[fncToCall]();
703
+ }
704
+ };
705
+
706
+ // const logoOnClick = () => {
707
+ // if (Client.isLoggedIn()) {
708
+ // const url = Client.isAccountOfType('financial') ? Url.urlFor('user/metatrader') : Client.defaultRedirectUrl();
709
+ // BinaryPjax.load(url);
710
+ // } else {
711
+ // BinaryPjax.load(Url.urlFor(''));
712
+ // }
713
+ // };
714
+
715
+ const loginOnClick = async (e) => {
716
+ e.preventDefault();
717
+ if (!e?.telegram_login) {
718
+ TelegramAuth.clear();
719
+ }
720
+ const isOAuth2Enabled = AuthClient.isOAuth2Enabled();
721
+
722
+ if (isOAuth2Enabled) {
723
+ const currentLanguage = Language.get();
724
+ const redirectCallbackUri = `${window.location.origin}/${currentLanguage}/callback`;
725
+ const postLoginRedirectUri = window.location.origin;
726
+ const postLogoutRedirectUri = `${window.location.origin}/${currentLanguage}/trading`;
727
+ // Test commit
728
+ await requestOidcAuthentication({
729
+ redirectCallbackUri,
730
+ postLoginRedirectUri,
731
+ postLogoutRedirectUri,
732
+ });
733
+ } else {
734
+ Login.redirectToLogin();
735
+ }
736
+ };
737
+
738
+ const loginWithTelegramOnClick = (e) => {
739
+ const event = e || { preventDefault: () => {} };
740
+
741
+ if (typeof event.preventDefault === 'function') {
742
+ event.preventDefault();
743
+ }
744
+
745
+ const intent = TelegramAuth.start({
746
+ source : 'header_button',
747
+ metadata: {
748
+ action : 'telegram_login',
749
+ redirect_url: window.location.href,
750
+ },
751
+ });
752
+
753
+ if (!TelegramAuth.isWebApp()) {
754
+ const bot_username = getTelegramBotUsername && getTelegramBotUsername();
755
+ const open_options = {
756
+ mode: 'start',
757
+ bot_username,
758
+ };
759
+
760
+ if (!open_options.payload) {
761
+ open_options.payload = intent?.id ? `auth:${intent.id}` : 'auth';
762
+ }
763
+
764
+ const opened = TelegramAuth.openBot(intent, open_options);
765
+
766
+ if (!opened && bot_username) {
767
+ const deep_link = `https://t.me/${bot_username}`;
768
+ try {
769
+ const win = window.open(deep_link, '_blank', 'noopener');
770
+ if (!win) {
771
+ window.location.href = deep_link;
772
+ }
773
+ } catch (error) {
774
+ window.location.href = deep_link;
775
+ }
776
+ }
777
+
778
+ return;
779
+ }
780
+
781
+ event.telegram_login = true;
782
+ loginOnClick(event);
783
+ };
784
+
785
+ const logoutOnClick = async () => {
786
+ await Chat.clear();
787
+
788
+ // This will wrap the logout call Client.sendLogoutRequest with our own logout iframe, which is to inform Hydra that the user is logging out
789
+ // and the session should be cleared on Hydra's side. Once this is done, it will call the passed-in logout handler Client.sendLogoutRequest.
790
+ // If Hydra authentication is not enabled, the logout handler Client.sendLogoutRequest will just be called instead.
791
+ await AuthClient.requestOauth2Logout(
792
+ Client.sendLogoutRequest
793
+ );
794
+ };
795
+
796
+ const populateWalletAccounts = () => {
797
+ if (!Client.isLoggedIn() || !Client.hasWalletsAccount()) return;
798
+ const account_list = getElementById('wallet__switcher-accounts-list');
799
+ BinarySocket.wait('authorize', 'website_status', 'balance', 'landing_company', 'get_account_status').then(() => {
800
+ Client.getAllLoginids().forEach((loginid) => {
801
+ const is_wallet_account = Client.isWalletsAccount(loginid);
802
+ if (!Client.get('is_disabled', loginid) && Client.get('token', loginid) && !is_wallet_account) {
803
+ const is_real = loginid.startsWith('CR');
804
+ const currency = Client.get('currency', loginid);
805
+
806
+ const getIcon = () => {
807
+ if (is_real) return currency ? currency.toLowerCase() : 'unknown';
808
+ return 'virtual';
809
+ };
810
+
811
+ const icon = Url.urlForStatic(`${wallet_header_icon_base_path}ic-wallets-currency-${getIcon()}.svg?${process.env.BUILD_HASH}`);
812
+ const combined_icon = Url.urlForStatic(`${wallet_header_icon_base_path}ic-wallets-combined-${getIcon()}.svg?${process.env.BUILD_HASH}`);
813
+ const current_active_login = Client.get('loginid');
814
+ const is_current = loginid === current_active_login;
815
+
816
+ if (is_current) { // default account
817
+ applyToAllElements('#header__acc-icon--currency', (el) => {
818
+ el.src = icon;
819
+ });
820
+ applyToAllElements('#header__acc-icon-mobile-currency', (el) => {
821
+ el.src = combined_icon;
822
+ });
823
+ }
824
+ // start of wallet switcher dropdown
825
+ const account = createElement('div', { class: `wallet__switcher-acc ${is_current ? 'wallet__switcher-acc--active' : ''}`, 'data-value': loginid });
826
+ const icon_container = createElement('div', { class: 'wallet__switcher-icon--container' });
827
+ const account_icon = createElement('img', { src: combined_icon, class: 'wallet__switcher-icon--currency' });
828
+ const account_content = createElement('div', { class: 'wallet__switcher--content' });
829
+ const account_text = createElement('span', { text: localize('XYZSTRATEGY Apps') });
830
+ const account_currency = createElement('span', { text: `${is_real ? currency : localize('Demo')} Wallet` });
831
+ const account_balance = createElement('span', { class: `wallet__switcher-balance account__switcher-balance-${loginid}` });
832
+ const demo_batch1 = createElement('span', { text: localize('Demo'), class: 'wallet__header-demo-batch' });
833
+ const demo_batch2 = createElement('span', { text: localize('Demo'), class: 'wallet__header-demo-batch' });
834
+
835
+ if (!currency) {
836
+ $('#header__acc-balance').html(createElement('p', { text: localize('No currency assigned') }));
837
+ account_balance.html(createElement('span', { text: localize('No currency selected'), class: 'no-currency' }));
838
+ $('.account__switcher-select_currencies').css('display', 'block');
839
+
840
+ const header_deposit = $('.header__deposit');
841
+ header_deposit.text('Set currency');
842
+ header_deposit.attr('href', Url.urlForDeriv('redirect', `action=add_account&ext_platform_url=${ext_platform_url}`));
843
+ }
844
+
845
+ if (is_current && !is_real) {
846
+ $(demo_batch1).insertAfter('.header__acc-display');
847
+ }
848
+
849
+ // append icons
850
+ icon_container.appendChild(account_icon);
851
+ // append content
852
+ account_content.appendChild(account_text);
853
+ account_content.appendChild(account_currency);
854
+ account_content.appendChild(account_balance);
855
+ // append icons and content
856
+ account.appendChild(icon_container);
857
+ account.appendChild(account_content);
858
+
859
+ if (!is_real) account.appendChild(demo_batch2);
860
+
861
+ account_list.appendChild(account);
862
+ }
863
+
864
+ applyToAllElements('.wallet__switcher-acc', (el) => {
865
+ el.removeEventListener('click', loginIDOnClick);
866
+ el.addEventListener('click', loginIDOnClick);
867
+ });
868
+ });
869
+ });
870
+ };
871
+
872
+ const bindHeaders = () => {
873
+ const high_risk_accounts_accordion_header = getElementById('high_risk_accounts');
874
+ const low_risk_non_eu_accordion_header = getElementById('low_risk_accounts_non_eu');
875
+ const low_risk_eu_accordion_header = getElementById('low_risk_accounts_eu');
876
+ const low_risk_eu_container = getElementById('account__switcher-accordion-eu');
877
+ const is_mf_account = Client.get('loginid').startsWith('MF');
878
+ const all_login_ids = Client.getAllLoginids();
879
+ const has_mf_account = all_login_ids.some(loginid => loginid.startsWith('MF'));
880
+
881
+ if (Client.isHighRisk() && is_mf_account) {
882
+ high_risk_accounts_accordion_header.style.display = 'none';
883
+ low_risk_eu_accordion_header.style.display = 'flex';
884
+ low_risk_eu_container.style.display = 'block';
885
+ $('<div class="account__switcher-seperator" />').insertBefore('#account__switcher-accordion-eu');
886
+ } else if (Client.isHighRisk() || isEuCountry()) {
887
+ high_risk_accounts_accordion_header.style.display = 'flex';
888
+ low_risk_non_eu_accordion_header.style.display = 'none';
889
+ low_risk_eu_accordion_header.style.display = 'none';
890
+ low_risk_eu_container.style.display = 'none';
891
+ } else if (Client.isLowRisk() && !has_mf_account) {
892
+ low_risk_non_eu_accordion_header.style.display = 'none';
893
+ high_risk_accounts_accordion_header.style.display = 'flex';
894
+ low_risk_eu_container.style.display = 'none';
895
+ } else if (Client.isLowRisk()) {
896
+ high_risk_accounts_accordion_header.style.display = 'none';
897
+ low_risk_non_eu_accordion_header.style.display = 'flex';
898
+ low_risk_eu_accordion_header.style.display = 'flex';
899
+ $('<div class="account__switcher-seperator" />').insertBefore('#account__switcher-accordion-eu');
900
+ }
901
+ };
902
+
903
+ const populateAccountsList = () => {
904
+ if (!Client.isLoggedIn() || Client.hasWalletsAccount()) return;
905
+ BinarySocket.wait('authorize', 'website_status', 'balance', 'landing_company', 'get_account_status').then(() => {
906
+ bindHeaders();
907
+ const loginid_non_eu_real_select = createElement('div');
908
+ const loginid_eu_real_select = createElement('div');
909
+ const loginid_demo_select = createElement('div');
910
+ Client.getAllLoginids().forEach((loginid) => {
911
+ if (!Client.get('is_disabled', loginid) && Client.get('token', loginid)) {
912
+ const is_mf_account = loginid.startsWith('MF');
913
+ const is_non_eu = loginid.startsWith('CR');
914
+ const is_real = /undefined|gaming|financial/.test(Client.getAccountType(loginid)); // this function only returns virtual/gaming/financial types
915
+ const currency = Client.get('currency', loginid);
916
+ let currencyName = mapCurrencyName(currency);
917
+
918
+ const getIcon = (() => {
919
+ if (is_real) return currency ? currency.toLowerCase() : 'unknown';
920
+ return 'virtual';
921
+ });
922
+ const icon = Url.urlForStatic(`${header_icon_base_path}ic-currency-${getIcon()}.svg?${process.env.BUILD_HASH}`);
923
+ const current_active_login = Client.get('loginid');
924
+ const is_current = loginid === current_active_login;
925
+
926
+ if (is_current) { // default account
927
+ // applyToAllElements('.account-type', (el) => { elementInnerHtml(el, localized_type); });
928
+ // applyToAllElements('.account-id', (el) => { elementInnerHtml(el, loginid); });
929
+ applyToAllElements('#header__acc-icon', (el) => {
930
+ el.src = icon;
931
+ });
932
+ }
933
+ if (current_active_login.startsWith('MF') && currency === 'EUR'){
934
+ currencyName = localize('Multipliers');
935
+ }
936
+
937
+ const account = createElement('div', { class: `account__switcher-acc ${is_current ? 'account__switcher-acc--active' : ''}`, 'data-value': loginid });
938
+ const account_icon = createElement('img', { src: icon });
939
+ const account_detail = createElement('span', { text: is_real ? (currencyName || localize('Real')) : localize('Demo') });
940
+ const account_loginid = createElement('div', { class: 'account__switcher-loginid', text: loginid });
941
+ const account_balance = createElement('span', { class: `account__switcher-balance account__switcher-balance-${loginid}` });
942
+
943
+ if (!currency) {
944
+ $('#header__acc-balance').html(createElement('p', { text: localize('No currency assigned') }));
945
+ account_balance.html(createElement('span', { text: localize('No currency selected'), class: 'no-currency' }));
946
+ $('.account__switcher-select_currencies').css('display', 'block');
947
+
948
+ const header_deposit = $('.header__deposit');
949
+ header_deposit.text('Set currency');
950
+ header_deposit.attr('href', Url.urlForDeriv('redirect', `action=add_account&ext_platform_url=${ext_platform_url}`));
951
+ }
952
+
953
+ account_detail.appendChild(account_loginid);
954
+ account.appendChild(account_icon);
955
+ account.appendChild(account_detail);
956
+ account.appendChild(account_balance);
957
+
958
+ if (is_non_eu) {
959
+ loginid_non_eu_real_select.appendChild(account);
960
+ } else if (is_mf_account && !isEuCountry()) {
961
+ loginid_eu_real_select.appendChild(account);
962
+ } else if (is_mf_account && isEuCountry()){
963
+ loginid_non_eu_real_select.appendChild(account);
964
+ } else {
965
+ loginid_demo_select.appendChild(account);
966
+ }
967
+ // const link = createElement('a', { 'data-value': loginid });
968
+ // const li_type = createElement('li', { text: localized_type });
969
+
970
+ // li_type.appendChild(createElement('div', { text: loginid }));
971
+ // link.appendChild(li_type);
972
+ // loginid_select.appendChild(link).appendChild(createElement('div', { class: 'separator-line-thin-gray' }));
973
+ }
974
+
975
+ applyToAllElements('#account__switcher-non-eu-list', (el) => {
976
+ el.insertBefore(loginid_non_eu_real_select, el.firstChild);
977
+ applyToAllElements('div.account__switcher-acc', (ele) => {
978
+ ele.removeEventListener('click', loginIDOnClick);
979
+ ele.addEventListener('click', loginIDOnClick);
980
+ }, '', el);
981
+ bindAccordion('#account__switcher-accordion-non-eu');
982
+ });
983
+ applyToAllElements('#account__switcher-eu-list', (el) => {
984
+ el.insertBefore(loginid_eu_real_select, el.firstChild);
985
+ applyToAllElements('div.account__switcher-acc', (ele) => {
986
+ ele.removeEventListener('click', loginIDOnClick);
987
+ ele.addEventListener('click', loginIDOnClick);
988
+ }, '', el);
989
+ bindAccordion('#account__switcher-accordion-eu');
990
+ });
991
+ applyToAllElements('#account__switcher-demo-list', (el) => {
992
+ el.insertBefore(loginid_demo_select, el.firstChild);
993
+ applyToAllElements('div.account__switcher-acc', (ele) => {
994
+ ele.removeEventListener('click', loginIDOnClick);
995
+ ele.addEventListener('click', loginIDOnClick);
996
+ }, '', el);
997
+ bindAccordion('#account__switcher-accordion-demo');
998
+ });
999
+ });
1000
+ });
1001
+ bindTabs();
1002
+ };
1003
+
1004
+ const bindTabs = () => {
1005
+ const all_login_ids = Client.getAllLoginids();
1006
+ const real_accounts = all_login_ids.filter((loginid) => !/^VRT/.test(loginid));
1007
+ const has_real_account = real_accounts.length > 0;
1008
+ const has_mf_account = all_login_ids.some(loginid => loginid.startsWith('MF'));
1009
+ const has_non_eu_account = all_login_ids.some(loginid => loginid.startsWith('CR'));
1010
+ const has_multiple_CR_accounts = all_login_ids.filter(loginid => loginid.startsWith('CR')).length > 1;
1011
+ const current_active_login = Client.get('loginid');
1012
+ const manage_acc_btn = document.getElementById('account__switcher-manage');
1013
+ const new_account_adder_deriv = document.getElementById('account__switcher-new-account-deriv');
1014
+ const new_account_adder_eu = document.getElementById('account__switcher-new-account-eu');
1015
+ const multiplier_text = localize('Multipliers');
1016
+ const account_header = document.querySelectorAll('.header__accounts-multiple');
1017
+ const is_callback_page = window.location.pathname.includes('callback');
1018
+ let is_virtual;
1019
+ if (current_active_login) {
1020
+ is_virtual = current_active_login.startsWith('VRTC');
1021
+ }
1022
+ account_header.forEach(header => {
1023
+ header.innerText += has_multiple_CR_accounts ? localize('accounts') : localize('account');
1024
+ });
1025
+
1026
+ if (current_active_login.startsWith('MF')) {
1027
+ $(`<span class="header__acc-display-text">${multiplier_text}</span>`).insertAfter('#header__acc-balance');
1028
+ }
1029
+
1030
+ if (is_virtual || !has_real_account) {
1031
+ manage_acc_btn.style.visibility = 'hidden';
1032
+ }
1033
+ if (has_real_account && !is_virtual) {
1034
+ manage_acc_btn.style.visibility = 'visible';
1035
+ }
1036
+ // Account adder logic
1037
+ new_account_adder_deriv.style.display = 'flex';
1038
+ new_account_adder_eu.style.display = 'flex';
1039
+ if (has_real_account) {
1040
+ if (has_mf_account && has_non_eu_account) {
1041
+ new_account_adder_deriv.style.display = 'none';
1042
+ new_account_adder_eu.style.display = 'none';
1043
+ } else if (has_mf_account && !has_non_eu_account) {
1044
+ new_account_adder_eu.style.display = 'none';
1045
+ } else if (!has_mf_account && has_non_eu_account) {
1046
+ new_account_adder_deriv.style.display = 'none';
1047
+ }
1048
+ }
1049
+
1050
+ $('#acc_tabs').tabs({
1051
+ active: is_virtual ? 1 : 0,
1052
+ event : 'click',
1053
+ activate(ui) {
1054
+ updateTotal();
1055
+ const defaultOpenedTab = is_virtual ? '#demo_tab' : '#real_tab';
1056
+ const currentTab = ui.currentTarget ? ui.currentTarget.hash : defaultOpenedTab;
1057
+ if (currentTab === '#demo_tab') {
1058
+ manage_acc_btn.style.visibility = 'hidden';
1059
+ } else if (currentTab === '#real_tab' && has_real_account && !is_virtual) {
1060
+ manage_acc_btn.style.visibility = 'visible';
1061
+ }
1062
+ },
1063
+ });
1064
+ };
1065
+
1066
+ const bindAccordion = (selector) => {
1067
+ $(selector).accordion({
1068
+ heightStyle: 'content',
1069
+ collapsible: true,
1070
+ active : 0,
1071
+ });
1072
+ };
1073
+
1074
+ const loginIDOnClick = (e) => {
1075
+ e.preventDefault();
1076
+ const el_loginid = findParent(e.target, Client.hasWalletsAccount() ? 'div.wallet__switcher-acc' : 'div.account__switcher-acc');
1077
+ const acc_switcher_active = el_loginid.classList.contains('account__switcher-acc--active');
1078
+ const wallet_switcher_active = el_loginid.classList.contains('wallet__switcher-acc--active');
1079
+
1080
+ if (el_loginid && !(acc_switcher_active || wallet_switcher_active)) {
1081
+ el_loginid.setAttribute('disabled', 'disabled');
1082
+ switchLoginid(el_loginid.getAttribute('data-value'));
1083
+ } else {
1084
+ const wallet_switcher_dropdown = getElementById('wallet__switcher-dropdown');
1085
+ const account_switcher_dropdown = getElementById('account__switcher-dropdown');
1086
+ wallet_switcher_dropdown.classList.remove('wallet__switcher-dropdown--show');
1087
+ account_switcher_dropdown.classList.remove('account__switcher-dropdown--show');
1088
+ }
1089
+ };
1090
+
1091
+ const switchLoginid = (loginid) => {
1092
+ if (!loginid || loginid.length === 0) return;
1093
+ const token = Client.get('token', loginid);
1094
+ if (!token || token.length === 0) {
1095
+ Client.sendLogoutRequest(true);
1096
+ return;
1097
+ }
1098
+
1099
+ sessionStorage.setItem('active_tab', '1');
1100
+ // set local storage
1101
+ GTM.setLoginFlag('account_switch');
1102
+ Client.set('loginid', loginid);
1103
+ SocketCache.clear();
1104
+ setTimeout(() => window.location.reload(), 0);
1105
+ };
1106
+
1107
+ const upgradeMessageVisibility = () => {
1108
+ BinarySocket.wait('authorize', 'landing_company', 'get_settings', 'get_account_status').then(() => {
1109
+ const upgrade_msg = document.getElementsByClassName('upgrademessage');
1110
+
1111
+ if (!upgrade_msg) {
1112
+ return;
1113
+ }
1114
+
1115
+ const showUpgrade = (url, localized_text) => {
1116
+ applyToAllElements(upgrade_msg, (el) => {
1117
+ el.setVisibility(1);
1118
+ applyToAllElements('a', (ele) => {
1119
+ ele.html(createElement('span', { text: localized_text })).setVisibility(1).setAttribute('href', Url.urlFor(url));
1120
+ }, '', el);
1121
+ });
1122
+ };
1123
+
1124
+ const showUpgradeBtn = (url, localized_text) => {
1125
+ applyToAllElements(upgrade_msg, (el) => {
1126
+ el.setVisibility(1);
1127
+ applyToAllElements('a.button', (ele) => {
1128
+ ele.html(createElement('span', { text: localized_text })).setVisibility(1).setAttribute('href', Url.urlFor(url));
1129
+ }, '', el);
1130
+ });
1131
+ };
1132
+
1133
+ const upgrade_info = Client.getUpgradeInfo();
1134
+ const show_upgrade_msg = upgrade_info.can_upgrade;
1135
+ let upgrade_link_txt = '';
1136
+ let upgrade_btn_txt = '';
1137
+
1138
+ if (upgrade_info.can_upgrade_to.length > 1) {
1139
+ upgrade_link_txt = localize('Click here to open a Real Account');
1140
+ upgrade_btn_txt = localize('Open a Real Account');
1141
+ } else if (upgrade_info.can_upgrade_to.length === 1) {
1142
+ upgrade_link_txt = (() => {
1143
+ if (upgrade_info.type[0] === 'financial') return localize('Click here to open a Financial Account');
1144
+ return upgrade_info.can_upgrade_to[0] === 'malta' ?
1145
+ localize('Click here to open a Gaming account') :
1146
+ localize('Click here to open a Real Account');
1147
+ });
1148
+ upgrade_btn_txt = upgrade_info.type[0] === 'financial'
1149
+ ? localize('Open a Financial Account')
1150
+ : localize('Open a Real Account');
1151
+ }
1152
+
1153
+ if (Client.get('is_virtual')) {
1154
+ applyToAllElements(upgrade_msg, (el) => {
1155
+ el.setVisibility(1);
1156
+ const span = el.getElementsByTagName('span')[0];
1157
+ if (span) {
1158
+ span.setVisibility(1);
1159
+ }
1160
+ applyToAllElements('a', (ele) => { ele.setVisibility(0); }, '', el);
1161
+ });
1162
+
1163
+ if (show_upgrade_msg) {
1164
+ const upgrade_url = upgrade_info.can_upgrade_to.length > 1
1165
+ ? 'user/accounts'
1166
+ : Object.values(upgrade_info.upgrade_links)[0];
1167
+ showUpgrade(upgrade_url, upgrade_link_txt);
1168
+ showUpgradeBtn(upgrade_url, upgrade_btn_txt);
1169
+ } else {
1170
+ applyToAllElements(upgrade_msg, (el) => {
1171
+ applyToAllElements('a', (ele) => {
1172
+ ele.setVisibility(0).innerHTML = '';
1173
+ }, '', el);
1174
+ });
1175
+ }
1176
+ if (/accounts/.test(window.location.href)) {
1177
+ showHidePulser(0);
1178
+ }
1179
+ } else if (show_upgrade_msg) {
1180
+ getElementById('virtual-wrapper').setVisibility(0);
1181
+ const upgrade_url = upgrade_info.can_upgrade_to.length > 1
1182
+ ? 'user/accounts'
1183
+ : Object.values(upgrade_info.upgrade_links)[0];
1184
+ showUpgrade(upgrade_url, upgrade_link_txt);
1185
+ showUpgradeBtn(upgrade_url, upgrade_btn_txt);
1186
+
1187
+ if (/new_account/.test(window.location.href)) {
1188
+ showHidePulser(0);
1189
+ }
1190
+ } else {
1191
+ applyToAllElements(upgrade_msg, (el) => { el.setVisibility(0); });
1192
+ }
1193
+ showHideNewAccount(upgrade_info);
1194
+ });
1195
+ };
1196
+
1197
+ const showHideNewAccount = (upgrade_info) => {
1198
+ if (upgrade_info.can_upgrade || upgrade_info.can_open_multi) {
1199
+ $('#account__switcher-add').addClass('account__switcher-add--active');
1200
+ // changeAccountsText(1, localize('Create Account'));
1201
+ } else {
1202
+ $('#account__switcher-add').removeClass('account__switcher-add--active');
1203
+ // changeAccountsText(0, localize('Accounts List'));
1204
+ }
1205
+ };
1206
+
1207
+ // const changeAccountsText = (add_new_style, localized_text) => {
1208
+ // const user_accounts = getElementById('user_accounts');
1209
+ // user_accounts.classList[add_new_style ? 'add' : 'remove']('create_new_account');
1210
+ // applyToAllElements('li', (el) => { elementTextContent(el, localized_text); }, '', user_accounts);
1211
+ // };
1212
+
1213
+ const displayNotification = ({ key, type, title, message, button_text, button_link }) => {
1214
+ // const msg_notification = getElementById('msg_notification');
1215
+ // const platform_switcher = getElementById('platform__dropdown');
1216
+ // if (msg_notification.getAttribute('data-code') === 'STORAGE_NOT_SUPPORTED') return;
1217
+
1218
+ // msg_notification.html(message);
1219
+ // msg_notification.setAttribute('data-message', message);
1220
+ // msg_notification.setAttribute('data-code', msg_code);
1221
+
1222
+ // if (msg_notification.offsetParent) {
1223
+ // msg_notification.toggleClass('error', is_error);
1224
+ // } else {
1225
+ // $(msg_notification).slideDown(500, () => { if (is_error) msg_notification.classList.add('error'); });
1226
+ // }
1227
+
1228
+ // // Removed once notification feature is implemented
1229
+ // platform_switcher.style.top = `${51 + 26}px`;
1230
+
1231
+ if (notifications.some(notification => notification === key)) return;
1232
+
1233
+ const notification_content = getElementById('header__notification-content');
1234
+ const notification_item = createElement('div', { class: 'header__notification-content-item', 'notification-key': key });
1235
+ const notification_icon = createElement('img', { src: Url.urlForStatic(`${header_icon_base_path}ic-alert-${type || 'info'}.svg?${process.env.BUILD_HASH}`) });
1236
+ const notification_message = createElement('div', { class: 'header__notification-content-message' });
1237
+ const notification_title = createElement('div', { text: title, class: 'header__notification-content-title' });
1238
+ const notification_text = createElement('div', { html: message, class: 'header__notification-content-desc' });
1239
+
1240
+ notification_message.appendChild(notification_title);
1241
+ notification_message.appendChild(notification_text);
1242
+ notification_item.appendChild(notification_icon);
1243
+ if (button_text && button_link) {
1244
+ const notification_button = createElement('a', { text: button_text, class: 'btn btn--secondary header__notification-btn', href: button_link });
1245
+ notification_message.appendChild(notification_button);
1246
+ }
1247
+ notification_item.appendChild(notification_message);
1248
+ notification_content.appendChild(notification_item);
1249
+ notifications.push(key);
1250
+ updateNotificationCount();
1251
+ };
1252
+
1253
+ const hideNotification = (key) => {
1254
+ // const msg_notification = getElementById('msg_notification');
1255
+ // const platform_switcher = getElementById('platform__dropdown');
1256
+ // if (/^(STORAGE_NOT_SUPPORTED|MFSA_MESSAGE)$/.test(msg_notification.getAttribute('data-code')) ||
1257
+ // msg_code && msg_notification.getAttribute('data-code') !== msg_code) {
1258
+ // return;
1259
+ // }
1260
+
1261
+ // if (msg_notification.offsetParent) {
1262
+ // msg_notification.classList.remove('error');
1263
+ // $(msg_notification).slideUp(500, () => {
1264
+ // elementInnerHtml(msg_notification, '');
1265
+ // msg_notification.removeAttribute('data-message data-code');
1266
+ // });
1267
+ // }
1268
+
1269
+ // // Removed once notification feature is implemented
1270
+ // platform_switcher.style.top = '51px';
1271
+
1272
+ if (!notifications.some(notification => notification === key)) return;
1273
+
1274
+ notifications.splice(notifications.indexOf(key), 1);
1275
+
1276
+ const removed_item = document.querySelector(`div[notification-key="${key}"]`);
1277
+ applyToAllElements('#header__notification-content', (el) => {
1278
+ el.removeChild(removed_item);
1279
+ });
1280
+ updateNotificationCount();
1281
+ };
1282
+
1283
+ const updateNotificationCount = () => {
1284
+ applyToAllElements('#header__notification-count', (el) => {
1285
+ const notification_length = notifications.length;
1286
+ el.html(notification_length);
1287
+ if (notifications.length) {
1288
+ el.style.display = 'flex';
1289
+ el.html(notifications.length);
1290
+ } else {
1291
+ el.style.display = 'none';
1292
+
1293
+ }
1294
+ });
1295
+
1296
+ applyToAllElements('#header__notification-empty', (el) => {
1297
+ if (notifications.length) {
1298
+ el.style.display = 'none';
1299
+ } else {
1300
+ el.style.display = 'block';
1301
+ }
1302
+ });
1303
+ };
1304
+
1305
+ const displayAccountStatus = () => {
1306
+ BinarySocket.wait('get_account_status', 'authorize', 'landing_company').then(() => {
1307
+ let authentication,
1308
+ get_account_status,
1309
+ is_fully_authenticated,
1310
+ status;
1311
+
1312
+ const buildMessage = (string, path) => template(string, [`<a class="header__notification-link" href="${path}">`, '</a>']);
1313
+ const buildSpecificMessage = (string, additional) => template(string, [...additional]);
1314
+ const hasStatus = (string) => status &&
1315
+ (status.findIndex(s => s === string) < 0 ? Boolean(false) : Boolean(true));
1316
+ const hasVerification = (string) => {
1317
+ // const { prompt_client_to_authenticate } = get_account_status;
1318
+ const { identity, document, needs_verification } = authentication;
1319
+ if (!identity || !document || !needs_verification || !isAuthenticationAllowed()) {
1320
+ return false;
1321
+ }
1322
+ const verification_length = needs_verification.length || 0;
1323
+ let result = false;
1324
+
1325
+ switch (string) {
1326
+ case 'authenticate': {
1327
+ result = verification_length && document.status === 'none' && identity.status === 'none';
1328
+ break;
1329
+ }
1330
+ case 'needs_poi': {
1331
+ result = verification_length
1332
+ && needs_verification.includes('identity')
1333
+ && !needs_verification.includes('document')
1334
+ && identity.status !== 'rejected'
1335
+ && identity.status !== 'expired';
1336
+ break;
1337
+ }
1338
+ case 'needs_poa': {
1339
+ result = verification_length
1340
+ && needs_verification.includes('document')
1341
+ && !needs_verification.includes('identity')
1342
+ && document.status !== 'rejected'
1343
+ && document.status !== 'expired';
1344
+ break;
1345
+ }
1346
+ case 'poi_expired': {
1347
+ result = identity.status === 'expired';
1348
+ break;
1349
+ }
1350
+ case 'poa_expired': {
1351
+ result = document.status === 'expired';
1352
+ break;
1353
+ }
1354
+ /* case 'unsubmitted': {
1355
+ result = verification_length === 2 && identity.status === 'none' && document.status === 'none';
1356
+ break;
1357
+ }
1358
+ case 'expired': {
1359
+ result = verification_length === 2 && (identity.status === 'expired' && document.status === 'expired');
1360
+ break;
1361
+ }
1362
+ case 'expired_identity': {
1363
+ result = verification_length && identity.status === 'expired';
1364
+ break;
1365
+ }
1366
+ case 'expired_document': {
1367
+ result = verification_length && document.status === 'expired';
1368
+ break;
1369
+ }
1370
+ case 'rejected': {
1371
+ result = verification_length === 2 && (identity.status !== 'none' || document.status !== 'none') && prompt_client_to_authenticate;
1372
+ break;
1373
+ }
1374
+ case 'rejected_identity': {
1375
+ result = verification_length && (identity.status === 'rejected' || identity.status === 'suspected');
1376
+ break;
1377
+ }
1378
+ case 'rejected_document': {
1379
+ result = verification_length && (document.status === 'rejected' || document.status === 'suspected');
1380
+ break;
1381
+ }
1382
+ case 'identity': {
1383
+ result = verification_length && identity.status === 'none';
1384
+ break;
1385
+ }
1386
+ case 'document': {
1387
+ result = verification_length && document.status === 'none';
1388
+ break;
1389
+ } */
1390
+ default:
1391
+ break;
1392
+ }
1393
+
1394
+ return result;
1395
+ };
1396
+
1397
+ // const has_no_tnc_limit = is_svg;
1398
+
1399
+ const formatDate = (date) => {
1400
+ const date_obj = new Date(date * 1000);
1401
+ return `${String(date_obj.getDate()).padStart(2, '0')}/${String(date_obj.getMonth() + 1).padStart(2, '0')}/${date_obj.getFullYear()}`;
1402
+ };
1403
+
1404
+ const messages = {
1405
+ cashier_locked : () => ({ key: 'cashier_locked', title: localize('Cashier disabled'), message: localize('Deposits and withdrawals have been disabled on your account. Please check your email for more details.'), type: 'warning' }),
1406
+ currency : () => ({ key: 'currency', title: localize('Set account currency'), message: localize('Please set the currency of your account.'), type: 'danger', button_text: 'Set currency', button_link: Url.urlForDeriv('redirect', `action=add_account&ext_platform_url=${ext_platform_url}`) }),
1407
+ // unsubmitted : () => ({ title: localize('Set account currency'), message: localize('Please set the currency of your account to enable trading.'), type: 'danger', button_text: 'Click test', button_link: 'https://app.deriv.com/account/proof-of-identity' }),
1408
+ // expired : () => buildSpecificMessage(localizeKeepPlaceholders('Your [_1]proof of identity[_3] and [_2]proof of address[_3] have expired.'), ['<a href=\'https://app.deriv.com/account/proof-of-identity\'>', '<a href=\'https://app.deriv.com/account/proof-of-address\'>', '</a>']),
1409
+ // expired_identity : () => buildMessage(localizeKeepPlaceholders('Your [_1]proof of identity[_2] has expired.'), 'https://app.deriv.com/account/proof-of-identity'),
1410
+ // expired_document : () => buildMessage(localizeKeepPlaceholders('Your [_1]proof of address[_2] has expired.'), 'https://app.deriv.com/account/proof-of-address'),
1411
+ // rejected : () => buildSpecificMessage(localizeKeepPlaceholders('Your [_1]proof of identity[_3] and [_2]proof of address[_3] have not been verified. Please check your email for details.'), ['<a href=\'https://app.deriv.com/account/proof-of-identity\'>', '<a href=\'https://app.deriv.com/account/proof-of-address\'>', '</a>']),
1412
+ // rejected_identity : () => buildMessage(localizeKeepPlaceholders('Your [_1]proof of identity[_2] has not been verified. Please check your email for details.'), 'https://app.deriv.com/account/proof-of-identity'),
1413
+ // rejected_document : () => buildMessage(localizeKeepPlaceholders('Your [_1]proof of address[_2] has not been verified. Please check your email for details.'), 'https://app.deriv.com/account/proof-of-address'),
1414
+ // identity : () => buildMessage(localizeKeepPlaceholders('Please submit your [_1]proof of identity[_2].'), 'https://app.deriv.com/account/proof-of-identity'),
1415
+ // document : () => buildMessage(localizeKeepPlaceholders('Please submit your [_1]proof of address[_2].'), 'https://app.deriv.com/account/proof-of-address'),
1416
+ excluded_until : () => ({ key: 'exluded_until', title: localize('Self-exclusion'), message: buildSpecificMessage(localizeKeepPlaceholders('Your account is restricted. Kindly [_1]contact customer support[_2] for assistance.'), [`${formatDate(Client.get('excluded_until') || new Date())}`, `<a class="header__notification-link" href="https://www.deriv.${getTopLevelDomain()}/contact-us/">`, '</a>']), type: 'danger' }),
1417
+ financial_limit : () => ({ key: 'financial_limit', title: localize('Remove deposit limits'), message: buildMessage(localizeKeepPlaceholders('Please set your [_1]30-day turnover limit[_2] to remove deposit limits.'), Url.urlForDeriv('cashier/deposit', `ext_platform_url=${ext_platform_url}`)), type: 'warning' }), // TODO: handle this when self exclusion is available
1418
+ mt5_withdrawal_locked: () => ({ key: 'mt5_withdrawal_locked', title: localize('MT5 withdrawal disabled'), message: localize('MT5 withdrawals have been disabled on your account. Please check your email for more details.'), type: 'warning' }),
1419
+ // no_withdrawal_or_trading: () => buildMessage(localizeKeepPlaceholders('Trading and withdrawals have been disabled on your account. Kindly [_1]contact customer support[_2] for assistance.'), 'contact'), 'user/settings/detailsws'),
1420
+ // residence : () => buildMessage(localizeKeepPlaceholders('Please set [_1]country of residence[_2] before upgrading to a real-money account.'), 'user/settings/detailsws'),
1421
+ risk : () => ({ key: 'risk', title: localize('Withdrawal and trading limits'), message: buildMessage(localizeKeepPlaceholders('Please complete the [_1]financial assessment form[_2] to lift your withdrawal and trading limits.'), `https://app.deriv.${getTopLevelDomain()}/account/financial-assessment`), type: 'warning' }),
1422
+ tax : () => ({ key: 'tax', title: localize('Complete details'), message: buildMessage(localizeKeepPlaceholders('Please [_1]complete your account profile[_2] to lift your withdrawal and trading limits.'), `https://app.deriv.${getTopLevelDomain()}/account/personal-details`), type: 'danger' }),
1423
+ unwelcome : () => ({ key: 'unwelcome', title: localize('Trading and deposit disabled'), message: buildMessage(localizeKeepPlaceholders('Trading and deposits have been disabled on your account. Kindly [_1]contact customer support[_2] for assistance.'), `https://www.deriv.${getTopLevelDomain()}/contact-us/`), type: 'danger' }),
1424
+ // withdrawal_locked_review: () => localize('Withdrawals have been disabled on your account. Please wait until your uploaded documents are verified.'),
1425
+ withdrawal_locked : () => ({ key: 'withdrawal_locked', title: localize('Withdrawal disabled'), message: localize('Withdrawals have been disabled on your account. Please check your email for more details.'), type: 'warning' }),
1426
+ // tnc : () => buildMessage(has_no_tnc_limit
1427
+ // ? localizeKeepPlaceholders('Please [_1]accept the updated Terms and Conditions[_2].')
1428
+ // : localizeKeepPlaceholders('Please [_1]accept the updated Terms and Conditions[_2] to lift your deposit and trading limits.'), 'user/tnc_approvalws'),
1429
+
1430
+ // XYZSTRATEGY specific below.
1431
+ authenticate: () => ({ key: 'authenticate', title: localize('Account authentication'), message: localize('Authenticate your account now to take full advantage of all payment methods available.'), type: 'info', button_text: 'Authenticate', button_link: `https://app.deriv.${getTopLevelDomain()}/account/proof-of-identity` }),
1432
+ needs_poi : () => ({ key: 'needs_poi', title: localize('Proof of identity required'), message: localize('Please submit your proof of identity.'), type: 'warning' }),
1433
+ needs_poa : () => ({ key: 'needs_poa', title: localize('Proof of address required'), message: localize('Please submit your proof of address.'), type: 'warning' }),
1434
+ poi_expired : () => ({ key: 'needs_poi', title: localize('Proof of identity'), message: localize('Proof of identity expired'), type: 'danger' }),
1435
+ poa_expired : () => ({ key: 'needs_poa', title: localize('Proof of address'), message: localize('Proof of address expired'), type: 'danger' }),
1436
+ };
1437
+
1438
+ const validations = {
1439
+ authenticate : () => hasVerification('authenticate'), // XYZSTRATEGY specific.
1440
+ cashier_locked : () => hasStatus('cashier_locked'),
1441
+ currency : () => !Client.get('currency'),
1442
+ // unsubmitted : () => hasVerification('unsubmitted'),
1443
+ // expired : () => hasVerification('expired'),
1444
+ // expired_identity : () => hasVerification('expired_identity'),
1445
+ // expired_document : () => hasVerification('expired_document'),
1446
+ // rejected : () => hasVerification('rejected'),
1447
+ // rejected_identity : () => hasVerification('rejected_identity'),
1448
+ // rejected_document : () => hasVerification('rejected_document'),
1449
+ // identity : () => hasVerification('identity'),
1450
+ // document : () => hasVerification('document'),
1451
+ document_needs_action : () => hasStatus('document_needs_action'), // XYZSTRATEGY specific.
1452
+ excluded_until : () => Client.get('excluded_until'),
1453
+ financial_limit : () => hasStatus('max_turnover_limit_not_set'),
1454
+ mt5_withdrawal_locked : () => hasStatus('mt5_withdrawal_locked'),
1455
+ no_withdrawal_or_trading: () => hasStatus('no_withdrawal_or_trading'),
1456
+ residence : () => !Client.get('residence'),
1457
+ risk : () => Client.getRiskAssessment(),
1458
+ tax : () => Client.shouldCompleteTax(),
1459
+ tnc : () => Client.shouldAcceptTnc(),
1460
+ unwelcome : () => hasStatus('unwelcome'),
1461
+ withdrawal_locked_review: () => hasStatus('withdrawal_locked') && get_account_status.risk_classification === 'high' && !is_fully_authenticated && authentication.document.status === 'pending',
1462
+ withdrawal_locked : () => hasStatus('withdrawal_locked'),
1463
+ mf_retail : () => Client.get('landing_company_shortcode') === 'maltainvest' && hasStatus('professional'), // XYZSTRATEGY specific.
1464
+ needs_poi : () => hasVerification('needs_poi'), // XYZSTRATEGY specific.
1465
+ needs_poa : () => hasVerification('needs_poa'), // XYZSTRATEGY specific.
1466
+ poi_expired : () => hasVerification('poi_expired'), // XYZSTRATEGY specific.
1467
+ poa_expired : () => hasVerification('poa_expired'), // XYZSTRATEGY specific.
1468
+ // poa_rejected : () => hasVerification('poa_rejected'),
1469
+ };
1470
+
1471
+ // real account checks in order
1472
+ const check_statuses_real = [
1473
+ 'currency',
1474
+ 'excluded_until',
1475
+ 'authenticate',
1476
+ 'cashier_locked',
1477
+ 'withdrawal_locked',
1478
+ 'mt5_withdrawal_locked',
1479
+ 'document_needs_action',
1480
+ 'unwelcome',
1481
+ 'mf_retail',
1482
+ 'financial_limit',
1483
+ 'risk',
1484
+ 'tax',
1485
+ 'tnc',
1486
+ 'needs_poi',
1487
+ 'needs_poa',
1488
+ 'poi_expired',
1489
+ 'poa_expired',
1490
+ /* 'poa_rejected',
1491
+ 'unsubmitted',
1492
+ 'expired',
1493
+ 'expired_identity',
1494
+ 'expired_document',
1495
+ 'rejected',
1496
+ 'rejected_identity',
1497
+ 'rejected_document',
1498
+ 'identity',
1499
+ 'document', */
1500
+ ];
1501
+
1502
+ /* const check_statuses_mf_mlt = [
1503
+ 'excluded_until',
1504
+ 'tnc',
1505
+ 'required_fields',
1506
+ 'financial_limit',
1507
+ 'risk',
1508
+ 'tax',
1509
+ 'unsubmitted',
1510
+ 'expired',
1511
+ 'expired_identity',
1512
+ 'expired_document',
1513
+ 'rejected',
1514
+ 'rejected_identity',
1515
+ 'rejected_document',
1516
+ 'identity',
1517
+ 'document',
1518
+ 'unwelcome',
1519
+ 'no_withdrawal_or_trading',
1520
+ 'cashier_locked',
1521
+ 'withdrawal_locked_review',
1522
+ 'withdrawal_locked',
1523
+ 'mt5_withdrawal_locked',
1524
+ 'authenticate',
1525
+ ]; */
1526
+
1527
+ // virtual checks
1528
+ // const check_statuses_virtual = [
1529
+ // 'residence',
1530
+ // ];
1531
+
1532
+ const checkStatus = (check_statuses) => {
1533
+ const notified = check_statuses.some((check_type) => {
1534
+ if (validations[check_type]() && messages[check_type]) {
1535
+ displayNotification(messages[check_type]());
1536
+ // return true;
1537
+ }
1538
+ // return false;
1539
+ });
1540
+ if (!notified) hideNotification();
1541
+ };
1542
+
1543
+ if (!Client.get('is_virtual')) {
1544
+ // checkStatus(check_statuses_virtual);
1545
+ // } else {
1546
+ const el_account_status = createElement('span', { class: 'authenticated', 'data-balloon': localize('Account Authenticated'), 'data-balloon-pos': 'down' });
1547
+ BinarySocket.wait('website_status', 'get_account_status', 'get_settings', 'balance').then(() => {
1548
+ authentication = State.getResponse('get_account_status.authentication') || {};
1549
+ get_account_status = State.getResponse('get_account_status') || {};
1550
+ status = get_account_status.status;
1551
+ checkStatus(check_statuses_real);
1552
+ is_fully_authenticated = hasStatus('authenticated') && !+get_account_status.prompt_client_to_authenticate;
1553
+ $('.account-id')[is_fully_authenticated ? 'append' : 'remove'](el_account_status);
1554
+ });
1555
+ }
1556
+ });
1557
+ };
1558
+
1559
+ return {
1560
+ onLoad,
1561
+ onUnload,
1562
+ populateAccountsList,
1563
+ populateWalletAccounts,
1564
+ upgradeMessageVisibility,
1565
+ displayNotification,
1566
+ hideNotification,
1567
+ displayAccountStatus,
1568
+ loginOnClick,
1569
+ };
1570
+ })();
1571
+
1572
+ module.exports = Header;