marketmyna 0.2.0__py3-none-any.whl
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.
- marketmyna/__init__.py +14 -0
- marketmyna/agent/__init__.py +8 -0
- marketmyna/agent/agents.py +543 -0
- marketmyna/agent/context.py +69 -0
- marketmyna/agent/dashboard.py +55 -0
- marketmyna/agent/orchestrator.py +153 -0
- marketmyna/agent/sentiment.py +150 -0
- marketmyna/agent/skills.py +119 -0
- marketmyna/ai/__init__.py +1 -0
- marketmyna/ai/portfolio_optimizer.py +330 -0
- marketmyna/analysis/__init__.py +6 -0
- marketmyna/analysis/fundamental.py +329 -0
- marketmyna/analysis/sip_optimizer.py +81 -0
- marketmyna/analysis/technical.py +321 -0
- marketmyna/api/__init__.py +1 -0
- marketmyna/api/app.py +209 -0
- marketmyna/api/deps.py +63 -0
- marketmyna/api/middlewares/__init__.py +0 -0
- marketmyna/api/middlewares/auth.py +116 -0
- marketmyna/api/middlewares/csrf.py +66 -0
- marketmyna/api/middlewares/error_handler.py +38 -0
- marketmyna/api/middlewares/slashes.py +27 -0
- marketmyna/api/v1/__init__.py +0 -0
- marketmyna/api/v1/endpoints/__init__.py +0 -0
- marketmyna/api/v1/endpoints/account.py +166 -0
- marketmyna/api/v1/endpoints/agent.py +114 -0
- marketmyna/api/v1/endpoints/bot.py +38 -0
- marketmyna/api/v1/endpoints/calendar.py +269 -0
- marketmyna/api/v1/endpoints/data_sources.py +174 -0
- marketmyna/api/v1/endpoints/health.py +10 -0
- marketmyna/api/v1/endpoints/listings.py +564 -0
- marketmyna/api/v1/endpoints/macro.py +163 -0
- marketmyna/api/v1/endpoints/portfolio.py +530 -0
- marketmyna/api/v1/endpoints/push.py +119 -0
- marketmyna/api/v1/endpoints/reports.py +49 -0
- marketmyna/api/v1/endpoints/scheduler.py +219 -0
- marketmyna/api/v1/endpoints/stocks.py +400 -0
- marketmyna/api/v1/endpoints/system_config.py +157 -0
- marketmyna/api/v1/endpoints/thesis.py +112 -0
- marketmyna/api/v1/endpoints/trade.py +709 -0
- marketmyna/api/v1/endpoints/updates.py +394 -0
- marketmyna/api/v1/endpoints/watchlists.py +179 -0
- marketmyna/api/v1/router.py +43 -0
- marketmyna/bot/__init__.py +14 -0
- marketmyna/bot/commands/__init__.py +0 -0
- marketmyna/bot/commands/analyze.py +40 -0
- marketmyna/bot/commands/ask.py +51 -0
- marketmyna/bot/commands/base.py +35 -0
- marketmyna/bot/commands/batch.py +53 -0
- marketmyna/bot/commands/common.py +84 -0
- marketmyna/bot/commands/help.py +43 -0
- marketmyna/bot/commands/markets.py +153 -0
- marketmyna/bot/commands/portfolio.py +145 -0
- marketmyna/bot/commands/research.py +323 -0
- marketmyna/bot/commands/status.py +48 -0
- marketmyna/bot/commands/trade.py +176 -0
- marketmyna/bot/dispatcher.py +95 -0
- marketmyna/bot/formatting.py +25 -0
- marketmyna/bot/models.py +27 -0
- marketmyna/bot/registry.py +50 -0
- marketmyna/bot/telegram_listener.py +227 -0
- marketmyna/cli/__init__.py +1 -0
- marketmyna/cli/scheduled_run.py +292 -0
- marketmyna/core/__init__.py +6 -0
- marketmyna/core/compliance.py +53 -0
- marketmyna/core/config.py +377 -0
- marketmyna/core/constants.py +69 -0
- marketmyna/core/home.py +22 -0
- marketmyna/core/numbers.py +28 -0
- marketmyna/core/secret_store.py +104 -0
- marketmyna/core/tenant.py +130 -0
- marketmyna/data/__init__.py +8 -0
- marketmyna/data/base.py +36 -0
- marketmyna/data/categories.py +272 -0
- marketmyna/data/china.py +360 -0
- marketmyna/data/crypto.py +200 -0
- marketmyna/data/ecb_fx.py +131 -0
- marketmyna/data/extra_sources.py +569 -0
- marketmyna/data/india.py +241 -0
- marketmyna/data/india_filings.py +343 -0
- marketmyna/data/listings.py +1314 -0
- marketmyna/data/mutual_funds.py +34 -0
- marketmyna/data/news.py +98 -0
- marketmyna/data/news_search.py +346 -0
- marketmyna/data/nse_deals.py +138 -0
- marketmyna/data/resilience.py +173 -0
- marketmyna/data/sec_facts.py +252 -0
- marketmyna/data/shariah.py +283 -0
- marketmyna/data/social/__init__.py +9 -0
- marketmyna/data/social/base.py +100 -0
- marketmyna/data/social/browser.py +92 -0
- marketmyna/data/social/hackernews.py +53 -0
- marketmyna/data/social/reddit.py +397 -0
- marketmyna/data/social/stocktwits.py +63 -0
- marketmyna/data/social/valuepickr.py +53 -0
- marketmyna/data/stocks.py +197 -0
- marketmyna/data/yahoo_price.py +48 -0
- marketmyna/launcher.py +71 -0
- marketmyna/llm/__init__.py +33 -0
- marketmyna/llm/backend_factory.py +51 -0
- marketmyna/llm/backend_registry.py +19 -0
- marketmyna/llm/channels.py +447 -0
- marketmyna/llm/json_reply.py +63 -0
- marketmyna/llm/litellm_backend.py +197 -0
- marketmyna/llm/model_catalog.py +166 -0
- marketmyna/llm/model_health.py +193 -0
- marketmyna/llm/protocol.py +111 -0
- marketmyna/llm/providers.py +128 -0
- marketmyna/llm/store.py +128 -0
- marketmyna/notifiers/__init__.py +35 -0
- marketmyna/notifiers/apprise_sender.py +43 -0
- marketmyna/notifiers/astrbot.py +47 -0
- marketmyna/notifiers/bark.py +24 -0
- marketmyna/notifiers/base.py +80 -0
- marketmyna/notifiers/dingtalk.py +54 -0
- marketmyna/notifiers/discord.py +39 -0
- marketmyna/notifiers/dispatcher.py +153 -0
- marketmyna/notifiers/email.py +99 -0
- marketmyna/notifiers/feishu.py +57 -0
- marketmyna/notifiers/googlechat.py +24 -0
- marketmyna/notifiers/gotify.py +36 -0
- marketmyna/notifiers/matrix.py +28 -0
- marketmyna/notifiers/ntfy.py +36 -0
- marketmyna/notifiers/pushbullet.py +24 -0
- marketmyna/notifiers/pushover.py +41 -0
- marketmyna/notifiers/pushplus.py +41 -0
- marketmyna/notifiers/serverchan3.py +40 -0
- marketmyna/notifiers/settings_schema.py +119 -0
- marketmyna/notifiers/signal_messenger.py +25 -0
- marketmyna/notifiers/slack.py +36 -0
- marketmyna/notifiers/teams.py +37 -0
- marketmyna/notifiers/telegram.py +81 -0
- marketmyna/notifiers/twilio.py +33 -0
- marketmyna/notifiers/webhook.py +44 -0
- marketmyna/notifiers/webpush.py +222 -0
- marketmyna/notifiers/wechat.py +40 -0
- marketmyna/notifiers/whatsapp.py +27 -0
- marketmyna/portfolio/__init__.py +6 -0
- marketmyna/portfolio/analytics.py +336 -0
- marketmyna/portfolio/manager.py +383 -0
- marketmyna/portfolio/models.py +155 -0
- marketmyna/portfolio/optimizers.py +88 -0
- marketmyna/portfolio/review.py +411 -0
- marketmyna/services/__init__.py +1 -0
- marketmyna/services/accounts.py +278 -0
- marketmyna/services/ai_access.py +94 -0
- marketmyna/services/analysis_run.py +491 -0
- marketmyna/services/big_trades.py +335 -0
- marketmyna/services/brokers/__init__.py +0 -0
- marketmyna/services/brokers/angel.py +271 -0
- marketmyna/services/brokers/finnhub.py +209 -0
- marketmyna/services/byok_detect.py +196 -0
- marketmyna/services/calendar.py +748 -0
- marketmyna/services/central_banks.py +202 -0
- marketmyna/services/commodities.py +134 -0
- marketmyna/services/compare.py +307 -0
- marketmyna/services/cot.py +148 -0
- marketmyna/services/country_macro.py +135 -0
- marketmyna/services/crude_sensitivity.py +239 -0
- marketmyna/services/crypto_mood.py +135 -0
- marketmyna/services/crypto_screens.py +226 -0
- marketmyna/services/data_export.py +91 -0
- marketmyna/services/dcf.py +220 -0
- marketmyna/services/dcf_model.py +194 -0
- marketmyna/services/delivery.py +142 -0
- marketmyna/services/discovery.py +146 -0
- marketmyna/services/dividends.py +95 -0
- marketmyna/services/earnings.py +305 -0
- marketmyna/services/econ_calendar.py +495 -0
- marketmyna/services/eia_stocks.py +115 -0
- marketmyna/services/estimates.py +109 -0
- marketmyna/services/etf.py +236 -0
- marketmyna/services/etf_rotation.py +193 -0
- marketmyna/services/etf_screens.py +196 -0
- marketmyna/services/financials.py +639 -0
- marketmyna/services/fund_ai.py +181 -0
- marketmyna/services/fund_analytics.py +371 -0
- marketmyna/services/fund_cost.py +147 -0
- marketmyna/services/fund_holdings.py +664 -0
- marketmyna/services/fund_peers.py +247 -0
- marketmyna/services/fund_rotation.py +206 -0
- marketmyna/services/fund_style.py +179 -0
- marketmyna/services/funds.py +70 -0
- marketmyna/services/hot_stocks.py +358 -0
- marketmyna/services/india_flows.py +263 -0
- marketmyna/services/india_rates.py +258 -0
- marketmyna/services/investor_lenses.py +271 -0
- marketmyna/services/leadership.py +165 -0
- marketmyna/services/live_market.py +497 -0
- marketmyna/services/live_quotes.py +295 -0
- marketmyna/services/macro.py +182 -0
- marketmyna/services/market_calendar.py +399 -0
- marketmyna/services/market_mood.py +168 -0
- marketmyna/services/market_valuation.py +231 -0
- marketmyna/services/mf_holdings.py +199 -0
- marketmyna/services/mf_insights.py +132 -0
- marketmyna/services/mf_lumpsum.py +587 -0
- marketmyna/services/mf_portfolio_ai.py +195 -0
- marketmyna/services/nse_events.py +98 -0
- marketmyna/services/overview.py +366 -0
- marketmyna/services/ownership.py +143 -0
- marketmyna/services/quality_scores.py +199 -0
- marketmyna/services/rates.py +335 -0
- marketmyna/services/reconcile.py +343 -0
- marketmyna/services/report.py +584 -0
- marketmyna/services/report_i18n.py +678 -0
- marketmyna/services/rotation.py +224 -0
- marketmyna/services/runtime_scheduler.py +548 -0
- marketmyna/services/schedule_config.py +251 -0
- marketmyna/services/schedule_time.py +39 -0
- marketmyna/services/screens.py +398 -0
- marketmyna/services/sec_mdna.py +173 -0
- marketmyna/services/shariah.py +246 -0
- marketmyna/services/sip.py +148 -0
- marketmyna/services/sip_days.py +362 -0
- marketmyna/services/smart_file.py +595 -0
- marketmyna/services/smart_pdf.py +425 -0
- marketmyna/services/smart_report.py +370 -0
- marketmyna/services/social_sentiment.py +511 -0
- marketmyna/services/thesis.py +328 -0
- marketmyna/services/translate.py +146 -0
- marketmyna/services/valuation.py +173 -0
- marketmyna/services/worker_pool.py +149 -0
- marketmyna/services/world_markets.py +208 -0
- marketmyna/storage.py +722 -0
- marketmyna/strategies/README.md +51 -0
- marketmyna/strategies/bottom_volume.yaml +49 -0
- marketmyna/strategies/box_oscillation.yaml +69 -0
- marketmyna/strategies/bull_trend.yaml +49 -0
- marketmyna/strategies/chan_theory.yaml +58 -0
- marketmyna/strategies/dragon_head.yaml +44 -0
- marketmyna/strategies/emotion_cycle.yaml +79 -0
- marketmyna/strategies/event_driven.yaml +54 -0
- marketmyna/strategies/expectation_repricing.yaml +54 -0
- marketmyna/strategies/growth_quality.yaml +54 -0
- marketmyna/strategies/hot_theme.yaml +54 -0
- marketmyna/strategies/ma_golden_cross.yaml +46 -0
- marketmyna/strategies/one_yang_three_yin.yaml +37 -0
- marketmyna/strategies/shrink_pullback.yaml +46 -0
- marketmyna/strategies/volume_breakout.yaml +47 -0
- marketmyna/strategies/wave_theory.yaml +64 -0
- marketmyna/trading/__init__.py +2 -0
- marketmyna/trading/alerts.py +356 -0
- marketmyna/trading/backtest.py +317 -0
- marketmyna/trading/charges.py +82 -0
- marketmyna/trading/chart.py +197 -0
- marketmyna/trading/indicators.py +303 -0
- marketmyna/trading/journal.py +74 -0
- marketmyna/trading/knn.py +164 -0
- marketmyna/trading/lots.py +109 -0
- marketmyna/trading/market_hours.py +66 -0
- marketmyna/trading/options.py +554 -0
- marketmyna/trading/pairs.py +94 -0
- marketmyna/trading/risk.py +170 -0
- marketmyna/trading/scanner.py +500 -0
- marketmyna/trading/volatility.py +163 -0
- marketmyna/utils/__init__.py +1 -0
- marketmyna/utils/deadline.py +36 -0
- marketmyna/utils/log_redact.py +52 -0
- marketmyna/utils/yahoo_gate.py +183 -0
- marketmyna/utils/yf_lock.py +12 -0
- marketmyna/web/apple-touch-icon.png +0 -0
- marketmyna/web/assets/Account-CA9NFDKO.js +1 -0
- marketmyna/web/assets/Analyze-uM0srB_U.js +7 -0
- marketmyna/web/assets/AreaChart-2i67V6Jf.js +1 -0
- marketmyna/web/assets/BarChart-_yngarVl.js +3 -0
- marketmyna/web/assets/Bot-E4gpf1qZ.js +1 -0
- marketmyna/web/assets/CandleChart-CioqTqMV.js +1 -0
- marketmyna/web/assets/Compare-D6_2CPl4.js +1 -0
- marketmyna/web/assets/ExportMenu-DaZ1xVmW.js +1 -0
- marketmyna/web/assets/LineChart-BaOkD1Ta.js +57 -0
- marketmyna/web/assets/Markets-BMw_M1sJ.js +1 -0
- marketmyna/web/assets/Portfolio-DQEdHVc2.js +1 -0
- marketmyna/web/assets/ReportView-BzhdcqSh.js +1 -0
- marketmyna/web/assets/Scheduler-I9PDKxTd.js +1 -0
- marketmyna/web/assets/Settings-DpXfHolW.js +3 -0
- marketmyna/web/assets/SipDays-C9q3bNSx.js +1 -0
- marketmyna/web/assets/SymbolSearch-CBOVPEk1.js +1 -0
- marketmyna/web/assets/Trade-_CM7HC4H.js +2 -0
- marketmyna/web/assets/TradeChart-ZjsycacC.js +1 -0
- marketmyna/web/assets/WatchButton-ComYW56_.js +1 -0
- marketmyna/web/assets/Watchlist-DAjLb0jd.js +1 -0
- marketmyna/web/assets/app-BP1o7WZS.js +1 -0
- marketmyna/web/assets/app-BkIUKdld.js +1 -0
- marketmyna/web/assets/app-CKeSYhEt.js +1 -0
- marketmyna/web/assets/app-CN1OERYX.js +1 -0
- marketmyna/web/assets/app-DIQllha5.js +1 -0
- marketmyna/web/assets/app-DeiAW0tX.js +1 -0
- marketmyna/web/assets/br-Cu5YU29T.svg +45 -0
- marketmyna/web/assets/browser-CR-ks2Fp.js +19 -0
- marketmyna/web/assets/browser-D5K_K_gj.js +1 -0
- marketmyna/web/assets/common-0wvpAVpd.js +1 -0
- marketmyna/web/assets/common-3ghy53Us.js +1 -0
- marketmyna/web/assets/common-Bib2unjX.js +1 -0
- marketmyna/web/assets/common-BvSJP0w_.js +1 -0
- marketmyna/web/assets/common-CSfyC0Sp.js +1 -0
- marketmyna/web/assets/common-C_t-iZPf.js +1 -0
- marketmyna/web/assets/compare-DMcsx70H.js +1 -0
- marketmyna/web/assets/es-d5m8M5h8.svg +544 -0
- marketmyna/web/assets/exporter-DiMg2O5d.js +3 -0
- marketmyna/web/assets/files-CpgiZRbN.js +1 -0
- marketmyna/web/assets/format-d8InM0Zw.js +9 -0
- marketmyna/web/assets/html2canvas-Bw0OShmD.js +5 -0
- marketmyna/web/assets/index-CKAnq-Or.js +12 -0
- marketmyna/web/assets/index-D4U8E6LH.css +2 -0
- marketmyna/web/assets/index.es-iBEw7jOv.js +5 -0
- marketmyna/web/assets/ir-cCIgaNf6.svg +219 -0
- marketmyna/web/assets/jspdf.es.min-C4285IdL.js +79 -0
- marketmyna/web/assets/jspdf.plugin.autotable-2eOJeXl-.js +2 -0
- marketmyna/web/assets/lightweight-charts.production-BF2noug5.js +1 -0
- marketmyna/web/assets/listings-BefgXpb1.js +1 -0
- marketmyna/web/assets/liveQuotes-CtSmCUFA.js +1 -0
- marketmyna/web/assets/markets-BI4AhI9W.js +1 -0
- marketmyna/web/assets/markets-BUHUdYpT.js +1 -0
- marketmyna/web/assets/markets-BqvN1Bvf.js +1 -0
- marketmyna/web/assets/markets-DPO40TTe.js +1 -0
- marketmyna/web/assets/markets-bsiPo-Tk.js +1 -0
- marketmyna/web/assets/markets-ff1e792u.js +1 -0
- marketmyna/web/assets/montecarlo-BsNlH2qe.js +1 -0
- marketmyna/web/assets/options-BYAZnwzW.js +1 -0
- marketmyna/web/assets/preload-helper-BLdHbfdN.js +1 -0
- marketmyna/web/assets/purify.es-Dqk5qvad.js +3 -0
- marketmyna/web/assets/rolldown-runtime-XKyaHtl9.js +1 -0
- marketmyna/web/assets/sa-Dh79zbT9.svg +25 -0
- marketmyna/web/assets/toast-DDradTZw.js +1 -0
- marketmyna/web/assets/trade-fndw1Ql3.js +1 -0
- marketmyna/web/assets/ui-gsFb8B2m.js +1 -0
- marketmyna/web/assets/watchlists-B6YqwUIk.js +1 -0
- marketmyna/web/brand/logo-mark.webp +0 -0
- marketmyna/web/favicon.png +0 -0
- marketmyna/web/icon-192.png +0 -0
- marketmyna/web/icon-512.png +0 -0
- marketmyna/web/index.html +34 -0
- marketmyna/web/manifest.webmanifest +28 -0
- marketmyna/web/robots.txt +2 -0
- marketmyna/web/sw.js +40 -0
- marketmyna/web/theme-init.js +37 -0
- marketmyna-0.2.0.dist-info/METADATA +345 -0
- marketmyna-0.2.0.dist-info/RECORD +344 -0
- marketmyna-0.2.0.dist-info/WHEEL +5 -0
- marketmyna-0.2.0.dist-info/entry_points.txt +2 -0
- marketmyna-0.2.0.dist-info/licenses/LICENSE +202 -0
- marketmyna-0.2.0.dist-info/licenses/NOTICE +22 -0
- marketmyna-0.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={title:`市场`,intro:`所有股票、ETF 和基金,可搜索、可排序。`,listings_other:`{{n}} 个品种`,dataUpdated:`数据更新于 {{ago}}`,refresh:`刷新数据`,refreshed:`列表已刷新`,searchSubtitle:`搜索“{{q}}”`,exportNote:`共 {{total}} 条结果,仅导出前 {{first}} 条;缩小筛选范围以导出其余部分。`,ethical:{only:`仅看道德投资`,count_other:`{{n}} 个符合`,onDescription:`正在显示通过道德筛选的公司和基金。打开个股可查看负债、现金和利息收入占比,以及应捐给慈善的股息比例。`,offDescription:`隐藏银行、保险、酒类、烟草、博彩等被排除的行业,以及传统基金。`},marketTabs:{india:{label:`印度`,hint:`NSE 全部股票和 ETF + AMFI 全部基金`},us:{label:`美国`,hint:`NYSE / NASDAQ / AMEX 全部股票和 ETF`},china_a:{label:`A 股`,hint:`沪 / 深 / 北交所全部股票`},hong_kong:{label:`香港`,hint:`港交所全部股票、ETF 和 REIT`},crypto:{label:`加密货币`,hint:`主要 USDT 交易对`},all:{label:`全部市场`,hint:`以上全部合并为一个列表`}},types:{all:`全部`,stock:`股票`,etf:`ETF`,mf:`基金`,crypto:`加密货币`},fund:`基金`,allIndustries:`全部行业`,allSubCategories:`全部子类`,searchStocks:`按代码或公司名称搜索`,searchFunds:`按基金名称、基金公司或代码搜索`,filtersButton:`筛选`,clear:`清除筛选`,clearTitle:`清除搜索、行业和所有筛选条件`,plan:{both:`直销 + 普通`,direct:`直销`,regular:`普通`},option:{any:`任意方式`,growth:`成长型`},unavailable:`{{market}}列表暂不可用`,partial:`{{market}}:显示的是缓存或部分数据`,retrying:`正在自动重试。`,loadError:`无法加载列表`,categoryGuessed:`类别根据公司名称推断`,badge:{halal:`符合道德`,doubtful:`存疑`,haram:`不符合`,unknown:`未筛选`},empty:{title:`没有匹配的结果`,noData:`该市场暂无数据,请看上方提示。`,tryAgain:`试试更短的关键词,或清除筛选。`},pager:{range:`{{from}}–{{to}},共 {{total}}`,first:`首页`,prev:`上一页`,next:`下一页`,page:`第 {{page}} / {{pages}} 页`},col:{watch:`关注`,name:`名称`,market:`市场`,category:`类别`,price:`价格`,nav:`净值`,sipDay:`定投日`,navDate:`净值日期`,change:`涨跌 %`,marketCap:`市值`,volume:`成交量`,range:`52 周区间`},filter:{any:`不限`,changeHint:`今日涨跌幅 %,如最小 2 或最大 -3`,capHint:`如最小 2B,最大 10B`,capHintIndia:`如最小 5000cr,最大 20000cr`,volumeHint:`今日成交股数,如最小 1M`},filters:{category:`类别`,fundType:`基金类型`,pickAny:`可多选`,noCategories:`此视图没有类别。`,ethical:`道德`,ethicalHint:`道德投资筛选`,shariah:{halal:`符合道德`,halalHint:`基金:投资范围经过道德筛选。股票:业务通过筛选 - 打开个股查看负债 / 现金 / 利息收入比率`,doubtful:`存疑`,doubtfulHint:`业务混合(酒店、媒体、REIT 等)- 请查看收入来源`,haram:`不符合`,haramHint:`基于利息的金融或保险、酒类、烟草、博彩、猪肉、武器、成人内容 - 或计息 / 传统基金`,unknown:`未分类`,unknownHint:`没有行业数据 - 打开个股进行完整筛选`},sip:`最佳定投日`,sipHint:`近 3 / 5 / 10 年`,sipEdge:{consistent:`日期稳定`,consistentHint:`近 3、5、10 年的最佳定投日都落在相近的日期`,no_edge:`没有可靠优势`,no_edgeHint:`最佳日期在不同时期之间变化:哪天都一样`,negligible:`差距太小`,negligibleHint:`最好和最差的日期每年相差不到 0.1 个百分点(多数债券基金)`,short:`不足 5 年`,shortHint:`只有 3-5 年价格数据,不足以判断是否稳定`},nav:`净值`,price:{label:`价格`,in:`单位 {{symbol}}`,eachCurrency:`按各品种的货币`,under:`低于 {{n}}`,above:`高于 {{n}}`},min:`最小`,max:`最大`,minPrice:`最低价格`,maxPrice:`最高价格`,marketCap:`市值`,cap:{mega:`超大盘`,large:`大盘`,mid:`中盘`,small:`小盘`,micro:`微盘`},today:`今日`,change:{gainers:`上涨`,losers:`下跌`,up5:`涨幅 ≥ 5%`,down5:`跌幅 ≥ 5%`},w52:{label:`52 周`,high:`接近 52 周高点`,highHint:`距 52 周高点 5% 以内`,low:`接近 52 周低点`,lowHint:`距 52 周低点 5% 以内`},volume:`成交量`,volumeHint:`今日成交股数`,clearAll:`清除全部筛选`},insights:{title:`市场洞察`,list:`全部列表`,groups:{stocks:`股票`,markets:`市场`,economy:`经济`},tabs:{hot_trade:{label:`热门股票`,inline:`热门股票`},hot_invest:{label:`趋势`,inline:`趋势`},pulse:{label:`市场脉搏`,inline:`市场脉搏`},rotation:{label:`行业轮动`,inline:`行业轮动`},funds:{label:`基金轮动`,inline:`基金轮动`},deals:{label:`大宗交易`,inline:`大宗交易`},screens:{label:`选股方案`,inline:`选股方案`},rates:{label:`利率与贵金属`,inline:`利率与贵金属`},mood:{label:`市场情绪`,inline:`市场情绪`},flows:{label:`FII / DII 资金流`,inline:`FII / DII 资金流`},world:{label:`全球市场`,inline:`全球市场`},valuation:{label:`市场估值`,inline:`市场估值`},macro:{label:`宏观`,inline:`宏观`},countries:{label:`国家`,inline:`国家`},commodities:{label:`大宗商品`,inline:`大宗商品`},oil:{label:`油价敏感度`,inline:`油价敏感度`}}}};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={title:`Mercados`,intro:`Todas as ações, ETFs e fundos de investimento, com busca e ordenação.`,listings_one:`{{n}} ativo`,listings_many:`{{n}} ativos`,listings_other:`{{n}} ativos`,dataUpdated:`dados atualizados {{ago}}`,refresh:`Atualizar dados`,refreshed:`Lista atualizada`,searchSubtitle:`Busca "{{q}}"`,exportNote:`Primeiros {{first}} de {{total}} resultados; refine os filtros para exportar o restante.`,ethical:{only:`Só éticos`,count_one:`{{n}} ético`,count_many:`{{n}} éticos`,count_other:`{{n}} éticos`,onDescription:`Mostrando empresas e fundos aprovados no filtro ético. Abra uma ação para ver os índices de dívida, caixa e receita de juros e a parte dos dividendos a doar para caridade.`,offDescription:`Oculta bancos, seguradoras, álcool, tabaco, jogos de azar e outros negócios excluídos, além de fundos convencionais.`},marketTabs:{india:{label:`Índia`,hint:`Todas as ações e ETFs da NSE + todos os fundos da AMFI`},us:{label:`EUA`,hint:`Todas as ações e ETFs da NYSE / NASDAQ / AMEX`},china_a:{label:`China A`,hint:`Todas as ações de Xangai / Shenzhen / Pequim`},hong_kong:{label:`Hong Kong`,hint:`Todas as ações, ETFs e REITs da HKEX`},crypto:{label:`Cripto`,hint:`Principais pares com USDT`},all:{label:`Todos os mercados`,hint:`Tudo acima em uma lista`}},types:{all:`Todos`,stock:`Ações`,etf:`ETFs`,mf:`Fundos`,crypto:`Cripto`},fund:`Fundo`,allIndustries:`Todos os setores`,allSubCategories:`Todas as subcategorias`,searchStocks:`Buscar por código ou nome da empresa`,searchFunds:`Buscar por nome do fundo, gestora ou código`,filtersButton:`Filtros`,clear:`Limpar filtros`,clearTitle:`Remover a busca, o setor e todos os filtros`,plan:{both:`Direct + Regular`,direct:`Direct`,regular:`Regular`},option:{any:`Qualquer opção`,growth:`Growth`},unavailable:`{{market}}: lista indisponível`,partial:`{{market}}: mostrando dados em cache ou parciais`,retrying:`Tentando de novo automaticamente.`,loadError:`Não foi possível carregar a lista`,categoryGuessed:`Categoria deduzida pelo nome da empresa`,badge:{halal:`Ético`,doubtful:`Duvidoso`,haram:`Não ético`,unknown:`Não filtrado`},empty:{title:`Nenhum resultado`,noData:`Este mercado ainda não tem dados - veja o aviso acima.`,tryAgain:`Tente uma busca mais curta ou limpe os filtros.`},pager:{range:`{{from}}–{{to}} de {{total}}`,first:`Primeira`,prev:`Anterior`,next:`Próxima`,page:`Página {{page}} / {{pages}}`},col:{watch:`Observar`,name:`Nome`,market:`Mercado`,category:`Categoria`,price:`Preço`,nav:`Cota`,sipDay:`Dia do SIP`,navDate:`Data da cota`,change:`Var. %`,marketCap:`Valor merc.`,volume:`Volume`,range:`Faixa 52 sem.`},filter:{any:`Qualquer`,changeHint:`Variação de hoje em %, ex.: mín. 2 ou máx. -3`,capHint:`ex.: mín. 2B, máx. 10B`,capHintIndia:`ex.: mín. 5000cr, máx. 20000cr`,volumeHint:`Ações negociadas hoje, ex.: mín. 1M`},filters:{category:`Categoria`,fundType:`Tipo de fundo`,pickAny:`escolha quantas quiser`,noCategories:`Sem categorias nesta visão.`,ethical:`Ético`,ethicalHint:`filtro de investimento ético`,shariah:{halal:`Éticos`,halalHint:`Fundos: mandato com filtro ético. Ações: o negócio passa no filtro - abra a ação para ver os índices de dívida / caixa / receita de juros`,doubtful:`Duvidosos`,doubtfulHint:`Atividade mista (hotéis, mídia, REITs…) - confira as fontes de receita`,haram:`Não conformes`,haramHint:`Finanças ou seguros com juros, álcool, tabaco, jogos de azar, carne suína, armas, conteúdo adulto - ou um fundo convencional / com juros`,unknown:`Sem classificação`,unknownHint:`Sem dados de setor - abra a ação para uma análise completa`},sip:`Melhor dia do SIP`,sipHint:`últimos 3 / 5 / 10 anos`,sipEdge:{consistent:`Dia consistente`,consistentHint:`O melhor dia do SIP caiu em datas próximas em 3, 5 e 10 anos`,no_edge:`Sem vantagem confiável`,no_edgeHint:`O melhor dia mudou entre os períodos: qualquer dia serve`,negligible:`Diferença pequena demais`,negligibleHint:`Melhor e pior dia diferem menos de 0,1 ponto por ano (maioria dos fundos de renda fixa)`,short:`Menos de 5 anos`,shortHint:`Só 3-5 anos de preços, pouco para checar a consistência`},nav:`Cota`,price:{label:`Preço`,in:`em {{symbol}}`,eachCurrency:`na moeda de cada ativo`,under:`Abaixo de {{n}}`,above:`Acima de {{n}}`},min:`Mín.`,max:`Máx.`,minPrice:`Preço mínimo`,maxPrice:`Preço máximo`,marketCap:`Valor de mercado`,cap:{mega:`Mega cap`,large:`Large cap`,mid:`Mid cap`,small:`Small cap`,micro:`Micro cap`},today:`Hoje`,change:{gainers:`Em alta`,losers:`Em baixa`,up5:`Alta ≥ 5%`,down5:`Queda ≥ 5%`},w52:{label:`52 semanas`,high:`Perto da máx. 52 sem.`,highHint:`a até 5% da máxima de 52 semanas`,low:`Perto da mín. 52 sem.`,lowHint:`a até 5% da mínima de 52 semanas`},volume:`Volume`,volumeHint:`ações negociadas hoje`,clearAll:`Limpar todos os filtros`},insights:{title:`Panorama do mercado`,list:`Todas as listagens`,groups:{stocks:`Ações`,markets:`Mercados`,economy:`Economia`},tabs:{hot_trade:{label:`Ações em alta`,inline:`ações em alta`},hot_invest:{label:`Em destaque`,inline:`em destaque`},pulse:{label:`Pulso do mercado`,inline:`pulso do mercado`},rotation:{label:`Rotação setorial`,inline:`rotação setorial`},funds:{label:`Rotação de fundos`,inline:`rotação de fundos`},deals:{label:`Grandes negócios`,inline:`grandes negócios`},screens:{label:`Filtros prontos`,inline:`filtros prontos`},rates:{label:`Juros e metais`,inline:`juros e metais`},mood:{label:`Humor do mercado`,inline:`humor do mercado`},flows:{label:`Fluxos FII / DII`,inline:`fluxos FII / DII`},world:{label:`Mercados mundiais`,inline:`mercados mundiais`},valuation:{label:`Valuation do mercado`,inline:`valuation do mercado`},macro:{label:`Macro`,inline:`macro`},countries:{label:`Países`,inline:`países`},commodities:{label:`Commodities`,inline:`commodities`},oil:{label:`Sensibilidade ao petróleo`,inline:`sensibilidade ao petróleo`}}}};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={title:`بازارها`,intro:`همهٔ سهام، ETFها و صندوقهای سرمایهگذاری، با جستوجو و مرتبسازی.`,listings_one:`{{n}} نماد`,listings_other:`{{n}} نماد`,dataUpdated:`دادهها {{ago}} بهروز شد`,refresh:`بهروزرسانی دادهها`,refreshed:`فهرست بهروز شد`,searchSubtitle:`جستوجوی «{{q}}»`,exportNote:`{{first}} مورد اول از {{total}} نتیجه؛ برای خروجی بقیه، فیلترها را محدودتر کنید.`,ethical:{only:`فقط اخلاقی`,count_one:`{{n}} اخلاقی`,count_other:`{{n}} اخلاقی`,onDescription:`شرکتها و صندوقهایی نشان داده میشوند که از غربال اخلاقی رد میشوند. سهم را باز کنید تا نسبت بدهی، نقد و درآمد بهره و سهمی از سود نقدی که باید به خیریه داد را ببینید.`,offDescription:`پنهان کردن بانکها، بیمهها، الکل، دخانیات، قمار و دیگر کسبوکارهای کنارگذاشتهشده، و صندوقهای متعارف.`},marketTabs:{india:{label:`هند`,hint:`همهٔ سهام و ETFهای NSE + همهٔ صندوقهای AMFI`},us:{label:`آمریکا`,hint:`همهٔ سهام و ETFهای NYSE / NASDAQ / AMEX`},china_a:{label:`چین A`,hint:`همهٔ سهام شانگهای / شنژن / پکن`},hong_kong:{label:`هنگکنگ`,hint:`همهٔ سهام، ETFها و REITهای HKEX`},crypto:{label:`رمزارز`,hint:`جفتارزهای اصلی با USDT`},all:{label:`همهٔ بازارها`,hint:`همهٔ موارد بالا در یک فهرست`}},types:{all:`همه`,stock:`سهام`,etf:`ETFها`,mf:`صندوقها`,crypto:`رمزارز`},fund:`صندوق`,allIndustries:`همهٔ صنایع`,allSubCategories:`همهٔ زیرگروهها`,searchStocks:`جستوجو با نماد یا نام شرکت`,searchFunds:`جستوجو با نام صندوق، شرکت مدیریت یا کد`,filtersButton:`فیلترها`,clear:`پاک کردن فیلترها`,clearTitle:`حذف جستوجو، صنعت و همهٔ فیلترها`,plan:{both:`Direct + Regular`,direct:`Direct`,regular:`Regular`},option:{any:`هر گزینه`,growth:`Growth`},unavailable:`فهرست {{market}} در دسترس نیست`,partial:`{{market}}: دادههای ذخیرهشده یا ناقص نمایش داده میشود`,retrying:`بهطور خودکار دوباره تلاش میکنیم.`,loadError:`بارگیری فهرست ممکن نشد`,categoryGuessed:`گروه از روی نام شرکت حدس زده شده است`,badge:{halal:`اخلاقی`,doubtful:`مشکوک`,haram:`غیراخلاقی`,unknown:`غربالنشده`},empty:{title:`نتیجهای پیدا نشد`,noData:`این بازار هنوز دادهای ندارد - هشدار بالا را ببینید.`,tryAgain:`جستوجوی کوتاهتری امتحان کنید یا فیلترها را پاک کنید.`},pager:{range:`{{from}}–{{to}} از {{total}}`,first:`اول`,prev:`قبلی`,next:`بعدی`,page:`صفحهٔ {{page}} / {{pages}}`},col:{watch:`دنبال کردن`,name:`نام`,market:`بازار`,category:`گروه`,price:`قیمت`,nav:`NAV`,sipDay:`روز SIP`,navDate:`تاریخ NAV`,change:`تغییر %`,marketCap:`ارزش بازار`,volume:`حجم`,range:`بازهٔ 52 هفته`},filter:{any:`هر`,changeHint:`تغییر امروز به درصد، مثلاً حداقل 2 یا حداکثر -3`,capHint:`مثلاً حداقل 2B، حداکثر 10B`,capHintIndia:`مثلاً حداقل 5000cr، حداکثر 20000cr`,volumeHint:`سهام معاملهشدهٔ امروز، مثلاً حداقل 1M`},filters:{category:`گروه`,fundType:`نوع صندوق`,pickAny:`هر تعداد را انتخاب کنید`,noCategories:`این نما گروهی ندارد.`,ethical:`اخلاقی`,ethicalHint:`غربال سرمایهگذاری اخلاقی`,shariah:{halal:`اخلاقی`,halalHint:`صندوقها: سیاست سرمایهگذاری با غربال اخلاقی. سهام: کسبوکار از غربال رد میشود - سهم را باز کنید تا نسبتهای بدهی / نقد / درآمد بهره را ببینید`,doubtful:`مشکوک`,doubtfulHint:`فعالیت مختلط (هتل، رسانه، REIT و…) - منابع درآمد را بررسی کنید`,haram:`ناسازگار`,haramHint:`مالی یا بیمهٔ مبتنی بر بهره، الکل، دخانیات، قمار، گوشت خوک، سلاح، محتوای بزرگسالان - یا صندوق متعارف / بهرهدار`,unknown:`طبقهبندینشده`,unknownHint:`دادهٔ صنعت نیست - سهم را برای غربال کامل باز کنید`},sip:`بهترین روز SIP`,sipHint:`3 / 5 / 10 سال گذشته`,sipEdge:{consistent:`روز ثابت`,consistentHint:`بهترین روز SIP در 3، 5 و 10 سال در روزهای نزدیک به هم بوده است`,no_edge:`مزیت قابلاعتمادی نیست`,no_edgeHint:`بهترین روز در دورههای مختلف جابهجا شده: هر روزی مثل روز دیگر است`,negligible:`تفاوت خیلی کم`,negligibleHint:`بهترین و بدترین روز کمتر از 0.1 واحد در سال فرق دارند (بیشتر صندوقهای بدهی)`,short:`کمتر از 5 سال`,shortHint:`فقط 3 تا 5 سال قیمت، برای سنجش ثبات کافی نیست`},nav:`NAV`,price:{label:`قیمت`,in:`به {{symbol}}`,eachCurrency:`به ارز هر نماد`,under:`کمتر از {{n}}`,above:`بیشتر از {{n}}`},min:`حداقل`,max:`حداکثر`,minPrice:`حداقل قیمت`,maxPrice:`حداکثر قیمت`,marketCap:`ارزش بازار`,cap:{mega:`خیلی بزرگ`,large:`بزرگ`,mid:`متوسط`,small:`کوچک`,micro:`خیلی کوچک`},today:`امروز`,change:{gainers:`صعودیها`,losers:`نزولیها`,up5:`رشد ≥ 5%`,down5:`افت ≥ 5%`},w52:{label:`52 هفته`,high:`نزدیک سقف 52 هفته`,highHint:`در فاصلهٔ 5% از سقف 52 هفته`,low:`نزدیک کف 52 هفته`,lowHint:`در فاصلهٔ 5% از کف 52 هفته`},volume:`حجم`,volumeHint:`سهام معاملهشدهٔ امروز`,clearAll:`پاک کردن همهٔ فیلترها`},insights:{title:`نمای کلی بازار`,list:`همهٔ نمادها`,groups:{stocks:`سهام`,markets:`بازارها`,economy:`اقتصاد`},tabs:{hot_trade:{label:`سهام داغ`,inline:`سهام داغ`},hot_invest:{label:`پرطرفدار`,inline:`پرطرفدار`},pulse:{label:`نبض بازار`,inline:`نبض بازار`},rotation:{label:`چرخش صنایع`,inline:`چرخش صنایع`},funds:{label:`چرخش صندوقها`,inline:`چرخش صندوقها`},deals:{label:`معاملات بزرگ`,inline:`معاملات بزرگ`},screens:{label:`غربالهای آماده`,inline:`غربالهای آماده`},rates:{label:`نرخها و فلزات`,inline:`نرخها و فلزات`},mood:{label:`حالوهوای بازار`,inline:`حالوهوای بازار`},flows:{label:`جریان FII / DII`,inline:`جریان FII / DII`},world:{label:`بازارهای جهانی`,inline:`بازارهای جهانی`},valuation:{label:`ارزشگذاری بازار`,inline:`ارزشگذاری بازار`},macro:{label:`کلان`,inline:`کلان`},countries:{label:`کشورها`,inline:`کشورها`},commodities:{label:`کالاها`,inline:`کالاها`},oil:{label:`حساسیت به نفت`,inline:`حساسیت به نفت`}}}};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{b as t,p as n}from"./format-d8InM0Zw.js";import{D as r,i,o as a}from"./ui-gsFb8B2m.js";import{n as o,z as s}from"./LineChart-BaOkD1Ta.js";var c=e(t()),l=[`axis`],u=(0,c.forwardRef)((e,t)=>c.createElement(o,{chartName:`ComposedChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:l,tooltipPayloadSearcher:s,categoricalChartProps:e,ref:t})),d=n(),f=120;function p(e){return Array.from(e.querySelectorAll(`[data-section][id]`)).map(e=>({id:e.id,label:e.dataset.section??e.id}))}function m(e,t){return e.length===t.length&&e.every((e,n)=>e.id===t[n].id&&e.label===t[n].label)}function h({root:e,fill:t=!1}){let[n,o]=(0,c.useState)([]),[s,l]=(0,c.useState)(null);return(0,c.useEffect)(()=>{let t=e.current;if(!t)return;let n=()=>o(e=>{let n=p(t);return m(e,n)?e:n});n();let r=new MutationObserver(n);return r.observe(t,{childList:!0,subtree:!0}),()=>r.disconnect()},[e]),(0,c.useEffect)(()=>{if(!n.length)return;let e=0,t=()=>{e=0;let t=n[0].id;for(let e of n){let n=document.getElementById(e.id);n&&n.getBoundingClientRect().top<=f&&(t=e.id)}window.innerHeight+window.scrollY>=document.documentElement.scrollHeight-4&&(t=n[n.length-1].id),l(t)},r=()=>{e||=requestAnimationFrame(t)};return t(),window.addEventListener(`scroll`,r,{passive:!0}),window.addEventListener(`resize`,r),()=>{window.removeEventListener(`scroll`,r),window.removeEventListener(`resize`,r),e&&cancelAnimationFrame(e)}},[n]),n.length?(0,d.jsxs)(i,{className:t?`hidden max-h-full min-h-0 flex-col lg:flex`:`hidden lg:block`,children:[(0,d.jsx)(a,{title:`On this page`,description:`${n.length} sections`}),(0,d.jsx)(`nav`,{"aria-label":`Sections on this page`,className:r(`px-3 py-3`,t&&`min-h-0 flex-1 overflow-y-auto`),children:(0,d.jsx)(`ol`,{className:`space-y-0.5`,children:n.map(e=>{let t=e.id===s;return(0,d.jsx)(`li`,{children:(0,d.jsxs)(`button`,{type:`button`,onClick:()=>{document.getElementById(e.id)?.scrollIntoView({behavior:`smooth`,block:`start`}),l(e.id)},"aria-current":t?`location`:void 0,className:r(`relative flex w-full items-center rounded-md py-1.5 pe-2 ps-4 text-start text-sm transition-colors`,t?`bg-accent-soft font-medium text-accent-fg`:`text-muted hover:bg-raised hover:text-fg`),children:[(0,d.jsx)(`span`,{className:r(`absolute top-1.5 bottom-1.5 start-1.5 w-0.5 rounded-full transition-colors`,t?`bg-accent`:`bg-transparent`)}),(0,d.jsx)(`span`,{className:`truncate`,children:e.label})]})},e.id)})})})]}):null}function g({title:e,tone:t,items:n}){return n.length?(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`div`,{className:`mb-1.5 text-xs font-semibold ${t}`,children:e}),(0,d.jsx)(`ul`,{className:`list-disc space-y-1 ps-4 text-sm text-fg/90`,children:n.map(e=>(0,d.jsx)(`li`,{children:e},e))})]}):null}function _(e){let t=e>>>0;return()=>{t=t+1831565813>>>0;let e=t;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}}var v=(e,t)=>e[Math.min(e.length-1,Math.max(0,Math.floor(t*(e.length-1))))];function y(e){let t=e.paths??2e3,n=Math.round(e.years*12),r=(Math.log(1+e.expectedReturn)-e.volatility*e.volatility/2)/12,i=e.volatility/Math.sqrt(12),a=_(e.seed??42),o=Array.from({length:e.years+1},()=>[]),s=[];for(let c=0;c<t;c++){let t=e.start;o[0].push(t);for(let s=1;s<=n;s++){let n=Math.max(a(),1e-12),c=Math.sqrt(-2*Math.log(n))*Math.cos(2*Math.PI*a());t=(t+e.monthly)*Math.exp(r+i*c),s%12==0&&o[s/12].push(t)}s.push(t)}return s.sort((e,t)=>e-t),{bands:o.map((t,n)=>{let r=[...t].sort((e,t)=>e-t);return{year:n,p10:v(r,.1),p50:v(r,.5),p90:v(r,.9),invested:e.start+e.monthly*12*n}}),finals:s}}function b(e,t){if(!e.length)return 0;let n=0,r=e.length;for(;n<r;){let i=n+r>>1;e[i]<t?n=i+1:r=i}return(e.length-n)/e.length}function x(e,t,n=.8){let r=e.paths??2e3,i=Math.round(e.years*12),a=(Math.log(1+e.expectedReturn)-e.volatility*e.volatility/2)/12,o=e.volatility/Math.sqrt(12),s=_(e.seed??42),c=[];for(let n=0;n<r;n++){let n=e.start,r=0;for(let e=1;e<=i;e++){let e=Math.max(s(),1e-12),t=Math.exp(a+o*Math.sqrt(-2*Math.log(e))*Math.cos(2*Math.PI*s()));n*=t,r=(r+1)*t}c.push(n>=t?0:r>0?(t-n)/r:1/0)}c.sort((e,t)=>e-t);let l=c[Math.max(0,Math.ceil(n*r)-1)];return Number.isFinite(l)?l:null}export{h as a,g as i,x as n,u as o,y as r,b as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=[{value:`us`,label:`US`,hint:`NYSE / NASDAQ`},{value:`india`,label:`India`,hint:`NSE / BSE`},{value:`china_a`,label:`China A`,hint:`Shanghai / Shenzhen`},{value:`hong_kong`,label:`Hong Kong`,hint:`HKEX`},{value:`crypto`,label:`Crypto`,hint:`e.g. BTC-USD`},{value:`global`,label:`Global`,hint:`Any global ticker, e.g. SHEL.L or 7203.T`}],t=[{value:`quick`,label:`Quick`,hint:`Fastest. Chart only: Technical → AI summary`},{value:`standard`,label:`Standard`,hint:`Adds risk and recent news: Technical → Risk → News → AI summary`},{value:`full`,label:`Full`,hint:`Adds the business: Technical → Risk → News → Fundamentals (filings, valuation vs sector, analyst estimates) → AI summary`},{value:`specialist`,label:`Specialist`,hint:`Slowest, most thorough. Full plus up to 3 strategy agents before the AI summary`}],n=[{value:`1mo`,label:`1M`},{value:`3mo`,label:`3M`},{value:`6mo`,label:`6M`},{value:`ytd`,label:`YTD`},{value:`1y`,label:`1Y`},{value:`5y`,label:`5Y`}],r=[`USD`,`INR`,`EUR`,`GBP`,`CNY`,`HKD`,`JPY`];function i(e,t){return e.find(e=>e.value===t)?.label??t}export{i as a,n as i,e as n,t as r,r as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=function(e){return`/`+e},t={},n=function(e){return e.pathname.endsWith(`.css`)},r=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},i=function(i,a,o){let s=Promise.resolve();if(a&&a.length>0){let i,c=document.querySelector(`meta[property=csp-nonce]`),l=c?.nonce||c?.getAttribute(`nonce`);function u(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function d(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}s=u(a.map(a=>{a=e(a,o);let s=d(a),c=n(s);return r(t,s.href,()=>{if(i===void 0){i={all:new Set,styles:new Set};let e=document.getElementsByTagName(`link`);for(let t=e.length-1;t>=0;t--){let n=e[t];i.all.add(n.href),n.rel===`stylesheet`&&i.styles.add(n.href)}}if((c?i.styles:i.all).has(s.href))return;let e=document.createElement(`link`);if(e.rel=c?`stylesheet`:`modulepreload`,c||(e.as=`script`),e.crossOrigin=``,e.href=s.href,l&&e.setAttribute(`nonce`,l),document.head.appendChild(e),c)return new Promise((t,n)=>{e.addEventListener(`load`,t),e.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${s}`)))})})}).filter(e=>e!==void 0))}function c(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return s.then(e=>{for(let t of e||[])t.status===`rejected`&&c(t.reason);return i().catch(c)})};export{i as t};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
function e(e,t){this.v=e,this.k=t}function t(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function n(e){if(Array.isArray(e))return e}function r(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function i(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
2
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function a(e,t){return n(e)||r(e,t)||o(e,t)||i()}function o(e,n){if(e){if(typeof e==`string`)return t(e,n);var r={}.toString.call(e).slice(8,-1);return r===`Object`&&e.constructor&&(r=e.constructor.name),r===`Map`||r===`Set`?Array.from(e):r===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}function s(t){var n,r;function i(n,r){try{var o=t[n](r),s=o.value,c=s instanceof e;Promise.resolve(c?s.v:s).then(function(e){if(c){var r=n===`return`&&s.k?n:`next`;if(!s.k||e.done)return i(r,e);e=t[r](e).value}a(!!o.done,e)},function(e){i(`throw`,e)})}catch(e){a(2,e)}}function a(e,t){e===2?n.reject(t):n.resolve({value:t,done:e}),(n=n.next)?i(n.key,n.arg):r=null}this._invoke=function(e,t){return new Promise(function(a,o){var s={key:e,arg:t,resolve:a,reject:o,next:null};r?r=r.next=s:(n=r=s,i(e,t))})},typeof t.return!=`function`&&(this.return=void 0)}s.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},s.prototype.next=function(e){return this._invoke(`next`,e)},s.prototype.throw=function(e){return this._invoke(`throw`,e)},s.prototype.return=function(e){return this._invoke(`return`,e)};var c=Object.entries,l=Object.setPrototypeOf,u=Object.isFrozen,d=Object.getPrototypeOf,f=Object.getOwnPropertyDescriptor,p=Object.freeze,m=Object.seal,h=Object.create,ee=typeof Reflect<`u`&&Reflect,te=ee.apply,ne=ee.construct;p||=function(e){return e},m||=function(e){return e},te||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},ne||=function(e){return new e(...[...arguments].slice(1))};var g=T(Array.prototype.forEach);Array.prototype.indexOf;var re=T(Array.prototype.lastIndexOf),ie=T(Array.prototype.pop),ae=T(Array.prototype.push),oe=T(Array.prototype.slice),se=T(Array.prototype.splice),_=Array.isArray,ce=E(Set),le=T(Set.prototype.add),ue=T(Set.prototype.has),v=T(String.prototype.toLowerCase),de=T(String.prototype.toString),fe=T(String.prototype.match),pe=T(String.prototype.replace),me=T(String.prototype.indexOf),he=T(String.prototype.trim),ge=T(Number.prototype.toString),y=T(Boolean.prototype.toString),b=typeof BigInt>`u`?null:T(BigInt.prototype.toString),_e=typeof Symbol>`u`?null:T(Symbol.prototype.toString),x=T(Object.prototype.hasOwnProperty),S=T(Object.prototype.toString),C=T(RegExp.prototype.test),w=E(TypeError);function T(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return te(e,t,n)}}function E(e){return function(){return ne(e,[...arguments])}}function D(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:v;if(l&&l(e,null),!_(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(u(t)||(t[r]=e),i=e)}e[i]=!0}return e}function ve(e){for(let t=0;t<e.length;t++)x(e,t)||(e[t]=null);return e}function O(e){let t=h(null);for(let r of c(e)){var n=a(r,2);let i=n[0],o=n[1];x(e,i)&&(t[i]=_(o)?ve(o):o&&typeof o==`object`&&o.constructor===Object?O(o):o)}return t}function ye(e){switch(typeof e){case`string`:return e;case`number`:return ge(e);case`boolean`:return y(e);case`bigint`:return b?b(e):`0`;case`symbol`:return _e?_e(e):`Symbol()`;case`undefined`:return S(e);case`function`:case`object`:{if(e===null)return S(e);let t=e,n=k(t,`toString`);if(typeof n==`function`){let e=n(t);return typeof e==`string`?e:S(e)}return S(e)}default:return S(e)}}function k(e,t){for(;e!==null;){let n=f(e,t);if(n){if(n.get)return T(n.get);if(typeof n.value==`function`)return T(n.value)}e=d(e)}function n(){return null}return n}function be(e,t){for(;e!==null;){let n=f(e,t);if(n)return n.get?T(n.get):null;e=d(e)}return null}function xe(e){try{return C(e,``),!0}catch{return!1}}var Se=p(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),Ce=p(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),we=p([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),Te=p([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),Ee=p(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),De=p([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),Oe=p([`#text`]),ke=p(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.command.commandfor.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns`.split(`.`)),Ae=p(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dominant-baseline.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.pointer-events.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-orientation.text-rendering.textlength.type.u1.u2.unicode.values.vector-effect.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),je=p(`accent.accentunder.align.bevelled.close.columnalign.columnlines.columnspacing.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lquote.lspace.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),Me=p([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),Ne=m(/{{[\w\W]*|^[\w\W]*}}/g),Pe=m(/<%[\w\W]*|^[\w\W]*%>/g),Fe=m(/\${[\w\W]*/g),Ie=m(/^data-[\-\w.\u00B7-\uFFFF]+$/),Le=m(/^aria-[\-\w]+$/),Re=m(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ze=m(/^(?:\w+script|data):/i),Be=m(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Ve=m(/^html$/i),He=m(/^[a-z][.\w]*(-[.\w]+)+$/i),Ue=m(/<[/\w!]/g),We=m(/<[/\w]/g),Ge=m(/<\/no(script|embed|frames)/i),Ke=m(/\/>/i),A={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},qe=p(D({},[`style`,`script`,`xmp`,`iframe`,`noembed`,`noframes`,`plaintext`,`noscript`])),Je=function(){return typeof window>`u`?null:window},Ye=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},Xe=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},j=function(e,t,n,r){return x(e,t)&&_(e[t])?D(r.base?O(r.base):{},e[t],r.transform):n},Ze=function(e,t,n){let r=x(e,t)?e[t]:void 0;return r&&typeof r==`object`?O(r):n()};function Qe(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Je(),t=e=>Qe(e);if(t.version=`3.4.17`,t.removed=[],!e||!e.document||e.document.nodeType!==A.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript;e.DocumentFragment;let a=e.HTMLTemplateElement,o=e.Node,s=e.Element,l=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let u=e.DOMParser,d=e.trustedTypes,f=s.prototype,ee=k(f,`cloneNode`),te=k(f,`remove`),ne=k(f,`removeAttributeNode`),ge=k(f,`nextSibling`),y=k(f,`childNodes`),b=k(f,`parentNode`),_e=k(f,`shadowRoot`),S=k(f,`attributes`),T=o&&o.prototype?k(o.prototype,`nodeType`):null,E=o&&o.prototype?k(o.prototype,`nodeName`):null,ve=o&&o.prototype?k(o.prototype,`ownerDocument`):null,M=function(e){return T?T(e):e.nodeType},$e=function(e){return E?E(e):e.nodeName},et=be(f,`namespaceURI`),tt=function(e){return et?et(e):e.namespaceURI};if(typeof a==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let N,P=``,nt,rt=!1,it=0,at=function(){if(it>0)throw w(`A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.`)},F=function(e){at(),it++;try{return N.createHTML(e)}finally{it--}},ot=function(e){at(),it++;try{return N.createScriptURL(e)}finally{it--}},st=function(){return rt||=(nt=Ye(d,i),!0),nt},ct=n,lt=ct.implementation,ut=ct.createNodeIterator,dt=ct.createDocumentFragment,ft=ct.getElementsByTagName,pt=r.importNode,I=Xe();t.isSupported=typeof c==`function`&&typeof b==`function`&<&<.createHTMLDocument!==void 0;let mt=Ne,ht=Pe,gt=Fe,_t=Ie,vt=Le,yt=ze,bt=Be,xt=He,St=Re,L=null,Ct=D({},[...Se,...Ce,...we,...Ee,...Oe]),R=null,wt=D({},[...ke,...Ae,...je,...Me]),z=Object.seal(h(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Tt=null,Et=null,B=Object.seal(h(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Dt=!0,Ot=!0,kt=!1,At=!0,V=!1,H=!0,U=!1,jt=!1,Mt=null,Nt=null,Pt=!1,W=!1,Ft=!1,It=!1,Lt=!0,Rt=!1,zt=`user-content-`,Bt=!0,Vt=!1,G=null,K={},q=null,Ht=D({},`annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp`.split(`.`)),Ut=null,Wt=D({},[`audio`,`video`,`img`,`source`,`image`,`track`]),Gt=null,Kt=D({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),qt=`http://www.w3.org/1998/Math/MathML`,Jt=`http://www.w3.org/2000/svg`,J=`http://www.w3.org/1999/xhtml`,Y=J,Yt=!1,Xt=null,Zt=D({},[qt,Jt,J],de),Qt=p([`mi`,`mo`,`mn`,`ms`,`mtext`]),$t=D({},Qt),en=p([`annotation-xml`]),tn=D({},en),nn=D({},[`title`,`style`,`font`,`a`,`script`]),rn=null,an=[`application/xhtml+xml`,`text/html`],X=null,on=null,sn=n.createElement(`form`),cn=function(e){return e instanceof RegExp||e instanceof Function},ln=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(on&&on===e)return;e&&typeof e==`object`||(e={}),e=O(e),rn=an.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,X=rn===`application/xhtml+xml`?de:v,L=j(e,`ALLOWED_TAGS`,Ct,{transform:X}),R=j(e,`ALLOWED_ATTR`,wt,{transform:X}),Xt=j(e,`ALLOWED_NAMESPACES`,Zt,{transform:de}),Gt=j(e,`ADD_URI_SAFE_ATTR`,Kt,{transform:X,base:Kt}),Ut=j(e,`ADD_DATA_URI_TAGS`,Wt,{transform:X,base:Wt}),q=j(e,`FORBID_CONTENTS`,Ht,{transform:X}),Tt=j(e,`FORBID_TAGS`,O({}),{transform:X}),Et=j(e,`FORBID_ATTR`,O({}),{transform:X}),K=x(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?O(e.USE_PROFILES):e.USE_PROFILES:!1,Dt=e.ALLOW_ARIA_ATTR!==!1,Ot=e.ALLOW_DATA_ATTR!==!1,kt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,At=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,V=e.SAFE_FOR_TEMPLATES||!1,H=e.SAFE_FOR_XML!==!1,U=e.WHOLE_DOCUMENT||!1,W=e.RETURN_DOM||!1,Ft=e.RETURN_DOM_FRAGMENT||!1,It=e.RETURN_TRUSTED_TYPE||!1,Pt=e.FORCE_BODY||!1,Lt=e.SANITIZE_DOM!==!1,Rt=e.SANITIZE_NAMED_PROPS||!1,Bt=e.KEEP_CONTENT!==!1,Vt=e.IN_PLACE||!1,St=xe(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:Re,Y=typeof e.NAMESPACE==`string`?e.NAMESPACE:J,$t=Ze(e,`MATHML_TEXT_INTEGRATION_POINTS`,()=>D({},Qt)),tn=Ze(e,`HTML_INTEGRATION_POINTS`,()=>D({},en));let t=Ze(e,`CUSTOM_ELEMENT_HANDLING`,()=>h(null));if(z=h(null),x(t,`tagNameCheck`)&&cn(t.tagNameCheck)&&(z.tagNameCheck=t.tagNameCheck),x(t,`attributeNameCheck`)&&cn(t.attributeNameCheck)&&(z.attributeNameCheck=t.attributeNameCheck),x(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(z.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),m(z),V&&(Ot=!1),Ft&&(W=!0),K&&(L=D({},Oe),R=h(null),K.html===!0&&(D(L,Se),D(R,ke)),K.svg===!0&&(D(L,Ce),D(R,Ae),D(R,Me)),K.svgFilters===!0&&(D(L,we),D(R,Ae),D(R,Me)),K.mathMl===!0&&(D(L,Ee),D(R,je),D(R,Me))),B.tagCheck=null,B.attributeCheck=null,x(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?B.tagCheck=e.ADD_TAGS:_(e.ADD_TAGS)&&(L===Ct&&(L=O(L)),D(L,e.ADD_TAGS,X))),x(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?B.attributeCheck=e.ADD_ATTR:_(e.ADD_ATTR)&&(R===wt&&(R=O(R)),D(R,e.ADD_ATTR,X))),x(e,`ADD_FORBID_CONTENTS`)&&_(e.ADD_FORBID_CONTENTS)&&(q===Ht&&(q=O(q)),D(q,e.ADD_FORBID_CONTENTS,X)),Bt&&(L[`#text`]=!0),U&&D(L,[`html`,`head`,`body`]),L.table&&(D(L,[`tbody`]),delete Tt.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw w(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw w(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);let t=N;N=e.TRUSTED_TYPES_POLICY;try{P=F(``)}catch(e){throw N=t,e}}else e.TRUSTED_TYPES_POLICY===null?(N=void 0,P=``):(N===void 0&&(N=st()),N&&typeof P==`string`&&(P=F(``)));p&&p(e),on=e},un=D({},[...Ce,...we,...Te]),dn=D({},[...Ee,...De]),fn=function(e,t,n){return t.namespaceURI===J?e===`svg`:t.namespaceURI===qt?e===`svg`&&(n===`annotation-xml`||$t[n]):!!un[e]},pn=function(e,t,n){return t.namespaceURI===J?e===`math`:t.namespaceURI===Jt?e===`math`&&tn[n]:!!dn[e]},mn=function(e,t,n){return t.namespaceURI===Jt&&!tn[n]||t.namespaceURI===qt&&!$t[n]?!1:!dn[e]&&(nn[e]||!un[e])},hn=function(e){let t=tt(e),n=v($e(e)),r=b(e),i,a;return r&&M(r)===A.element?(i={namespaceURI:tt(r)},a=v($e(r))):(i={namespaceURI:Y},a=`template`),Xt[t]?t===Jt?fn(n,i,a):t===qt?pn(n,i,a):t===J?mn(n,i,a):!!(rn===`application/xhtml+xml`&&Xt[t]):!1},Z=function(e){ae(t.removed,{element:e});try{b(e).removeChild(e)}catch{if(te(e),!b(e))throw w(`a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place`)}},gn=function(e,t,n){try{ne(e,t)}catch{try{e.removeAttribute(n)}catch{}}},_n=function(e){xn(e);let t=y(e);t&&g(oe(t),e=>{try{te(e)}catch{}});let n=M(e)===A.element?S(e):null;if(n)for(let t=n.length-1;t>=0;--t){let r=n[t],i=r&&r.name;typeof i==`string`&&gn(e,r,i)}},vn=function(e,n,r){if(!r)try{r=n.getAttributeNode(e)}catch{r=null}ae(t.removed,{attribute:r||null,from:n});try{r?ne(n,r):n.removeAttribute(e)}catch{try{n.removeAttribute(e)}catch{}}if(e===`is`){if(W||Ft)try{Z(n)}catch{}else try{n.setAttribute(e,``)}catch{}}},yn=function(e){let t=S(e);if(t)for(let n=t.length-1;n>=0;--n){let r=t[n],i=r&&r.name;typeof i!=`string`||R[X(i)]||gn(e,r,i)}},bn=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0&&arguments[2],r=[e];for(;r.length>0;){let e=r.pop();if(t(e)===!1)continue;if(n&&M(e)===A.element){let t=_e(e);Q(t)&&r.push(t)}let i=y(e);if(i)for(let e=i.length-1;e>=0;--e)r.push(i[e])}},xn=function(e){bn(e,e=>{M(e)===A.element&&yn(e)})},Sn=function(e){let t=[];return bn(e,e=>{t.push(e)},!0),t},Cn=function(e,t){let n=ce();g(Sn(e),e=>{M(e)===A.element&&le(n,e)}),g(t,e=>{M(e)===A.element&&!ue(n,e)&&yn(e)})},wn=function(e,n){let r=!1;return g(t.removed,t=>{t.element&&(r||=t.element===e,xn(t.element))}),Cn(e,n),r},Tn=function(e,t){let n=G,r=null,i=()=>(r||(r=ce(),g(t,e=>{le(r,e)})),r);for(let t=0;;t++){let r=Sn(e),a=[e],o=!1;if(g(r,e=>{M(e)===A.documentFragment?ae(a,e):!o&&!ue(n,e)&&(o=ue(i(),e))}),!o)return;if(t>=8)throw w(`the tree kept changing during in-place sanitization; refusing to return it`);g(a,(t,n)=>{En(t,n>0,e,i())})}},En=function(e,t,n,r){let i=jn(e),a;for(;a=i.nextNode();)ue(r,a)&&!ue(G,a)&&(t&&$(I.uponSanitizeShadowNode,a,null),Hn(a,n),Yn(a,n),Q(a.content)&&Xn(a.content))},Dn=function(e){G&&le(G,e)},On=function(e,t){return H?e===`patchsrc`||e===`for`&&t!==`label`&&t!==`output`:!1},kn=function(e){H&&bn(e,e=>{let t=M(e);if(t===A.processingInstruction||t===A.comment&&C(We,e.data)){try{te(e)}catch{}return!1}if(t===A.element){let t=e,n=X($e(e));try{t.hasAttribute&&t.hasAttribute(`patchsrc`)&&t.removeAttribute(`patchsrc`),t.hasAttribute&&t.hasAttribute(`for`)&&On(`for`,n)&&t.removeAttribute(`for`)}catch{}}return!0})},An=function(e){let t=null,r=null;if(Pt)e=`<remove></remove>`+e;else{let t=fe(e,/^[\r\n\t ]+/);r=t&&t[0]}rn===`application/xhtml+xml`&&Y===J&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=N?F(e):e;if(Y===J)try{t=new u().parseFromString(i,rn)}catch{}if(!t||!t.documentElement){t=lt.createDocument(Y,`template`,null);try{t.documentElement.innerHTML=Yt?P:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),Y===J?ft.call(t,U?`html`:`body`)[0]:U?t.documentElement:a},jn=function(e){let t=ve?ve(e):e.ownerDocument;return ut.call(t||e,e,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},Mn=function(e){return e=pe(e,mt,` `),e=pe(e,ht,` `),e=pe(e,gt,` `),e},Nn=function(e){Pn(e);let t=e.querySelectorAll?.call(e,`template`);t&&g(t,e=>{Q(e.content)&&Nn(e.content)})},Pn=function(e){e.normalize();let t=ve?ve(e):e.ownerDocument,n=ut.call(t||e,e,l.SHOW_TEXT|l.SHOW_COMMENT|l.SHOW_CDATA_SECTION|l.SHOW_PROCESSING_INSTRUCTION,null),r=n.nextNode();for(;r;)r.data=Mn(r.data),r=n.nextNode()},Fn=function(e){let t=E?E(e):null;return typeof t!=`string`||X(t)!==`form`?!1:typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||e.attributes!==S(e)||typeof e.removeAttribute!=`function`||typeof e.removeAttributeNode!=`function`||typeof e.getAttributeNode!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`||e.nodeType!==T(e)||e.childNodes!==y(e)},Q=function(e){if(!T||typeof e!=`object`||!e)return!1;try{return T(e)===A.documentFragment}catch{return!1}},In=function(e){if(!T||typeof e!=`object`||!e)return!1;try{return typeof T(e)==`number`}catch{return!1}};function $(e,n,r){e.length!==0&&g(e,e=>{e.call(t,n,r,on)})}let Ln=function(e,t){return!!(H&&e.hasChildNodes()&&!In(e.firstElementChild)&&C(Ue,e.textContent)&&C(Ue,e.innerHTML)||H&&qe[t]&&M(e)===A.element&&tt(e)===J&&(In(e.firstElementChild)||typeof e.textContent==`string`&&C(Ue,e.textContent))||e.nodeType===A.processingInstruction||H&&e.nodeType===A.comment&&C(We,e.data))},Rn=function(e,t){return e instanceof RegExp?C(e,t):e instanceof Function&&!!e(t,...[...arguments].slice(2))},zn=function(e,t,n){if(!Tt[t]&&Gn(t)&&Rn(z.tagNameCheck,t))return!1;if(Bt&&!q[t]&&!q[v(t)]){let t=b(e),r=y(e);if(r&&t){let i=r.length;for(let a=i-1;a>=0;--a){let i=e===n?ee(r[a],!0):r[a];t.insertBefore(i,ge(e))}}}return Z(e),!0},Bn=function(e,t,n,r){return e.length===0?t:t===n||t===r?O(t):t},Vn=function(e,t){return e===t||b(e)!==null?!1:(Vt&&xn(e),!0)},Hn=function(e,n){if(Dn(e),$(I.beforeSanitizeElements,e,null),Vn(e,n))return!0;if(Fn(e))return Z(e),!0;let r=X($e(e));if(L=Bn(I.uponSanitizeElement,L,Ct,Mt),$(I.uponSanitizeElement,e,{tagName:r,allowedTags:L}),Vn(e,n))return!0;if(Ln(e,r))return Z(e),!0;if(Tt[r]||!(B.tagCheck instanceof Function&&B.tagCheck(r))&&!L[r]){let t=zn(e,r,n);return t===!1&&($(I.afterSanitizeElements,e,null),Vn(e,n))?!0:t}if(M(e)===A.element&&!hn(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&C(Ge,e.innerHTML))return Z(e),!0;if(V&&e.nodeType===A.text){let n=Mn(e.textContent);e.textContent!==n&&(ae(t.removed,{element:e.cloneNode()}),e.textContent=n)}return $(I.afterSanitizeElements,e,null),Vn(e,n)},Un=function(e,t,r){if(Et[t]||On(t,e)||Lt&&(t===`id`||t===`name`)&&(r in n||r in sn))return!1;let i=R[t]||B.attributeCheck instanceof Function&&B.attributeCheck(t,e);return Ot&&C(_t,t)||Dt&&C(vt,t)?!0:i?Gt[t]||C(St,pe(r,bt,``))||(t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&me(r,`data:`)===0&&Ut[e]||kt&&!C(yt,pe(r,bt,``))?!0:!r:Gn(e)&&Rn(z.tagNameCheck,e)&&Rn(z.attributeNameCheck,t,e)||t===`is`&&z.allowCustomizedBuiltInElements&&Rn(z.tagNameCheck,r)},Wn=D({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),Gn=function(e){return!Wn[v(e)]&&C(xt,e)},Kn=function(e,t,n,r){if(N&&typeof d==`object`&&typeof d.getAttributeType==`function`&&!n)switch(d.getAttributeType(e,t)){case`TrustedHTML`:return F(r);case`TrustedScriptURL`:return ot(r)}return r},qn=function(e,t,n,r){try{return n?e.setAttributeNS(n,t,r):e.setAttribute(t,r),!Fn(e)||(Z(e),!1)}catch{return vn(t,e),!1}},Jn=function(e,t){return H&&C(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,t)?!0:v(e)===`attributename`&&fe(t,`href`)!==null},Yn=function(e,n){if($(I.beforeSanitizeAttributes,e,null),Vn(e,n))return;let r=e.attributes;if(!r||Fn(e))return;R=Bn(I.uponSanitizeAttribute,R,wt,Nt);let i={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:R,forceKeepAttr:void 0},a=r.length,o=X(e.nodeName);for(;a--;){let n=r[a],s=n.name,c=n.namespaceURI,l=n.value,u=X(s),d=l,f=s===`value`?d:he(d),p=!1;i.attrName=u,i.attrValue=f,i.keepAttr=!0,i.forceKeepAttr=void 0,$(I.uponSanitizeAttribute,e,i),f=i.attrValue,Rt&&(u===`id`||u===`name`)&&me(f,zt)!==0&&(vn(s,e,n),f=zt+f,p=!0),Jn(s,f)?vn(s,e,n):i.forceKeepAttr||(i.keepAttr?!At&&C(Ke,f)?vn(s,e,n):(V&&(f=Mn(f)),Un(o,u,f)?(f=Kn(o,u,c,f),f!==d&&qn(e,s,c,f)&&p&&ie(t.removed)):vn(s,e,n)):vn(s,e,n))}$(I.afterSanitizeAttributes,e,null),Vn(e,n)},Xn=function(e){let t=null,n=jn(e);for($(I.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if($(I.uponSanitizeShadowNode,t,null),Hn(t,e),Yn(t,e),Q(t.content)&&Xn(t.content),M(t)===A.element){let e=_e(t);Q(e)&&(Zn(e),Xn(e))}V&&Pn(e),$(I.afterSanitizeShadowDOM,e,null)},Zn=function(e){let t=[{node:e,shadow:null}];for(;t.length>0;){let e=t.pop();if(e.shadow){Xn(e.shadow);continue}let n=e.node,r=M(n)===A.element,i=y(n);if(i)for(let e=i.length-1;e>=0;--e)t.push({node:i[e],shadow:null});if(r){let e=E?E(n):null;if(typeof e==`string`&&X(e)===`template`){let e=n.content;Q(e)&&t.push({node:e,shadow:null})}}if(r){let e=_e(n);Q(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,a=null,o=null,s=null;if(Yt=!e,Yt&&(e=`<!-->`),typeof e!=`string`&&!In(e)&&(e=ye(e),typeof e!=`string`))throw w(`dirty is not a string, aborting`);if(!t.isSupported)return e;jt?(L=Mt,R=Nt):ln(n),(I.uponSanitizeElement.length>0||I.uponSanitizeAttribute.length>0)&&(L=O(L)),I.uponSanitizeAttribute.length>0&&(R=O(R)),t.removed=[];let c=Vt&&typeof e!=`string`&&In(e),l=[],u=G;if(c){kn(e);let t=$e(e);if(typeof t==`string`){let n=X(t);if(!L[n]||Tt[n])throw _n(e),w(`root node is forbidden and cannot be sanitized in-place`)}if(Fn(e))throw _n(e),w(`root node is clobbered and cannot be sanitized in-place`);l=Sn(e),G=ce()}else if(In(e))i=An(`<!---->`),a=i.ownerDocument.importNode(e,!0),a.nodeType===A.element&&a.nodeName===`BODY`||a.nodeName===`HTML`?i=a:i.appendChild(a),Zn(i);else{if(!W&&!V&&!U&&e.indexOf(`<`)===-1)return N&&It?F(e):e;if(i=An(e),!i)return W?null:It?P:``}i&&Pt&&Z(i.firstChild);let d=c?e:i;try{c&&Zn(e);let t=jn(d);for(;o=t.nextNode();)Hn(o,d),Yn(o,d),Q(o.content)&&Xn(o.content);c&&Tn(e,l)}catch(t){throw c&&(_n(e),wn(e,l)),t}finally{G=u}if(c){if(wn(e,l))throw w(`a node selected for removal could not be safely returned; refusing to sanitize in place`);return V&&Nn(e),e}if(W){if(V&&Nn(i),Ft)for(s=dt.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return(R.shadowroot||R.shadowrootmode)&&(s=pt.call(r,s,!0)),s}let f=U?i.outerHTML:i.innerHTML;return U&&L[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&C(Ve,i.ownerDocument.doctype.name)&&(f=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
|
|
3
|
+
`+f),V&&(f=Mn(f)),N&&It?F(f):f},t.setConfig=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};ln(e),jt=!0,Mt=L,Nt=R},t.clearConfig=function(){on=null,jt=!1,Mt=null,Nt=null,N=nt,P=``},t.isValidAttribute=function(e,t,n){on||ln({});let r=X(e),i=X(t);return typeof n==`string`&&(Jn(t,n)||!At&&C(Ke,n))?!1:Un(r,i,n)},t.addHook=function(e,t){typeof t==`function`&&x(I,e)&&ae(I[e],t)},t.removeHook=function(e,t){if(x(I,e)){if(t!==void 0){let n=re(I[e],t);return n===-1?void 0:se(I[e],n,1)[0]}return ie(I[e])}},t.removeHooks=function(e){x(I,e)&&(I[e]=[])},t.removeAllHooks=function(){I=Xe()},t}var M=Qe();export{M as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));export{s as n,l as r,o as t};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-sa" viewBox="0 0 640 480">
|
|
2
|
+
<defs>
|
|
3
|
+
<clipPath id="sa-a">
|
|
4
|
+
<path fill-opacity=".7" d="M-85.3 0h682.6v512H-85.3z"/>
|
|
5
|
+
</clipPath>
|
|
6
|
+
</defs>
|
|
7
|
+
<g fill-rule="evenodd" clip-path="url(#sa-a)" transform="translate(80)scale(.9375)">
|
|
8
|
+
<path fill="#165d31" d="M-128 0h768v512h-768z"/>
|
|
9
|
+
<path fill="#fff" d="M65.5 145.1c-.8 12-2 33 8.3 35.2 12.3 1.2 5.5-20.8 10-24.8.8-2 2.3-2 2.4.5v18.7c0 6 4 7.8 7 9 3.2-.2 5.4 0 6.6 3l1.6 32.3s7.4 2.2 7.8-18.1c.3-12-2.4-21.9-.8-24.2 0-2.3 3-2.4 5-1.3 3.2 2.2 4.6 5 9.6 4 7.6-2.2 12.2-5.9 12.3-11.7a47 47 0 0 0-3.5-16.6c.4-1-1.4-3.7-1-4.7 1.3 2.2 3.4 2 3.8 0-1.3-4.2-3.3-8.3-6.5-10-2.7-2.4-6.7-2-8 3-.8 5.7 2 12.4 6.1 18 .9 2.1 2.1 5.7 1.6 8.9q-3.4 1.8-6.3-1.2s-6-4.5-6-5.6c1.6-10.2.3-11.4-.6-14.3-.6-3.9-2.5-5.2-4-7.8-1.5-1.6-3.5-1.6-4.5 0-2.7 4.6-1.4 14.5.5 19 1.4 4.1 3.5 6.7 2.5 6.7-.8 2.3-2.5 1.7-3.8-1a67 67 0 0 1-2.1-17.4c-.5-4.6-1.1-14.4-4.2-17-1.8-2.4-4.5-1.2-5.5 1a82 82 0 0 0 .3 13.4c2 7.4 2.7 14 3.7 21.5.3 10.1-5.8 4.4-5.5-.7a45 45 0 0 0-.3-19.4c-1-2.6-2.1-3.2-4.6-2.8-1.9 0-6.8 5.3-8.2 14.3 0 0-1.2 4.6-1.7 8.7-.7 4.6-3.7 8-5.9-.6-1.8-6.3-3-21.6-6-18z"/>
|
|
10
|
+
<path fill="#fff" d="m99 194.2-32 15.4c.3-7.3 15.1-20.4 25.3-20.5 6.5.1 4.9 2.5 6.6 5.1z"/>
|
|
11
|
+
<path fill="#fff" d="M93.3 204.2c-16.8 43.5 39.5 49.6 45.8 1.8.6-2 3-3.9 3.4-.7-1.3 43.3-43.6 46.2-50.8 32.6a42 42 0 0 1-2.5-14.6c-1-8.5-5.5-5.2-6.2 3.2-.7 4.7-.5 6-.5 10.5 2.2 34.2 56.7 19.5 65.6-8.7 4.7-15.6-.8-27.1 1.7-27.1 5.4 5.8 13 .8 14.7-1.2.7-1 2.5-1.7 3.7-.4 4.2 3 11.6 1.6 13.2-3.7q1.4-8 1.8-16.2c-3.5 1-6 1.7-6.3 3.2l-.7 4.6c-.3 1.5-3.2 1.5-3.4-.4-1.3-6-6.7-6.7-10 2.5-2.1 1.8-6.1 2.2-6.5-.5.5-6.2-2-7-7-4.1l-4.8-36.2c2 0 4 1.5 5.9-.9-2-6.5-6.5-19.7-9-20.7-1.1-1.4-2.1-.5-3.7-.1-2.6.8-5 3-4.2 7.4 3 18.8 5 33.1 8.1 52 .5 2.1-1.3 5-3.7 4.7-4-2.7-5-8.2-12-8-5 0-10.6 5.5-11.3 10.7-.9 4.2-1.2 8.7 0 12.3 3.5 4.2 7.7 3.8 11.4 2.9 3-1.3 5.5-4.3 6.6-3.6.7.9.1 10.9-14.3 18.5-8.7 4-15.7 4.8-19.4-2.3-2.3-4.5.2-21.4-5.6-17.5"/>
|
|
12
|
+
<path fill="#fff" d="M165 160c3.3-1.2 19.3-19.6 19.3-19.6l-2.4-2q-1.3-1.1 0-2.2c4-2.4 2.7-7.4.7-9.8a10 10 0 0 0-8.7.1c-2.8 2.7-3.4 7-1.2 9.6 2.1 1 4.2 3.2 2.8 4.4-6.6 7-24.5 19.1-22.4 19.5.4.6 11.5.6 11.8 0zm-97 65c-6 9.6-6.5 23.9-3.2 28.2 1.8 2 4.7 2.9 6.8 2.2 3.8-1.6 5.5-9.3 4.6-12q-1.8-3-3.6-.7c-2.6 5.4-3.7 1.7-4-1.3a70 70 0 0 1 .8-15.2c.7-4.2 0-3-1.4-1.2m257.1-15.3c-5.8-12.6-13.9-25-16.4-29.7a558 558 0 0 0-24.8-36c-6.2-7.4 10.2 3.1-2-11.7l-8.9-7.5c-2-1.4-6.8-4-7.6.2-.4 3.8-.2 5.8.4 8.9.5 2 3.5 5.5 5 7.5a565 565 0 0 1 53.8 86.5c2.6-1.3 2-16.1.5-18.2"/>
|
|
13
|
+
<path fill="#fff" d="M299.6 251.5c-1.2 1.3 2.8 6.8 8 6.8 8.6-1 16.2-5.8 23.2-18.6a33 33 0 0 0 5.3-14.2 317 317 0 0 0-5.8-72.4c-.3-2 0-4.4.2-5 .6-.7 2.5 0 3.5-1.7 1.5-1.5-4-14-7-18.7-1-2.2-1.5-3.6-3.3.2a27 27 0 0 0-3 13.6c4.1 28.5 5.4 53.4 8 81.9.3 2.8-.1 6.8-2 8.4a80 80 0 0 1-27.1 19.7m116.5-.1c-6.2 3.6-6.2 7.7-1.2 7.8 8.6-1 18.8-1.7 25.8-12.3a41 41 0 0 0 4.2-16 303 303 0 0 0-4.7-71.4c-.2-2-1.1-6.7-.8-7.3.6-1.4 3.4.1 4.4-1.5 1.4-1.5-7.3-12.7-10.4-17.5-1-2.2-1.4-3.6-3.3.2a22 22 0 0 0-1.8 13.6c4.6 31 8 54.2 8.7 81.6-.4 2.6-.5 4-1.7 7.3-2.7 3.4-5.7 7.8-8.5 9.9-2.8 2-8.8 4-10.7 5.6"/>
|
|
14
|
+
<path fill="#fff" d="M420.7 223.7q.1-10.9-.1-19a34 34 0 0 0-3-13.5c-1.8-4.1-.7-7.4-1.6-11.8-.8-4.4-.6-11-1.8-16.1-.4-2-1.4-8.5-1.1-9.2.5-1.4 2.4 0 3.4-1.6 1.4-1.5-5-18-8.2-22.7-1.1-2.1-3.3-1.4-5.8 2-2.5 2.3-1.6 7.4-.6 12.3 6.1 32.3 10.8 61.6 9.8 92.3-.4 2.6 9-7.8 9-12.7m-45.7-40c-3.9-.2-12-7.7-14.4-12a8 8 0 0 1 .4-6.5c1.5-1 3.7-2 5.4-1 0 0 1.7 2.4 1.4 2.7 2 1 3 .5 3.2-.4.1-1.5-.6-2.4-.6-4 .9-4.6 6-5.3 8-2.4 1.4 1.8 2 5.5 2.1 8 0 1.3-2-.2-3.3 0-1.1.4-1.4 1.8-1.5 3-.2 3.3-.6 8.6-.7 12.5zm-71.8 48c1-9.8-.4-27.3-.5-33.1A477 477 0 0 0 299 154c-1.2-8.4 3.4.9 2.8-4-1.5-8.3-6.1-14-11.6-21.5-1.7-2.5-1.7-3-4.4.6-3 6.7-.4 11.4.4 16.7 3.9 17.2 6.2 33 7.3 48.7a393 393 0 0 1 .4 49c3 .1 7.6-4.7 9.3-11.8"/>
|
|
15
|
+
<path fill="#fff" d="M434 216c-6.9-11.6-17.2-24-20-28.7a658 658 0 0 0-29.2-37.8c-8.5-9 4-1.5-1.6-8.5-4.7-5.1-6-6.8-10.1-9.9-2-1.3-3.2-3.8-4 .5a83 83 0 0 0-.2 11.2c0 1.7 1.8 5 3.4 7 20.7 25.5 43.4 51.5 61.6 84.2 2.6-1.3 1.7-16 0-18z"/>
|
|
16
|
+
<path fill="#165d31" d="M122.6 194.7c-.5.9-1.6 2-1.2 3.1q1 1.4 2.6 1.3c1.1 0 2.7.3 3-.3q1-1.2.6-3.3c-1.2-3-4.4-1.8-5-.8"/>
|
|
17
|
+
<path fill="#fff" d="M354.2 362.5c9.2.4 15.2.5 23.3 1.4l9.6-1c10.6-1 11 15.1 11 15.1 0 9.5-3.7 10-8.4 11-2.7.4-4-1.6-5.5-3.6a14 14 0 0 1-7 .4l-11.5-.5c-4-.3-6.2.5-10.3.1-.8 1.3-2 3.1-4.4 2.6-2-.3-4.5-6-3.8-10.5 1.5-3.2 1-2.1 1-3.5-37.6-1-75.5-2.7-112.3-2.2-28.8.1-57.2 1.3-85.7 2.5-15.2-.2-26.8-2.6-34.8-14.3.8 0 38.8 2.1 49.9 1.4 20.5-.2 39.3-1.9 60.2-2.5 41.2.7 82.1.7 123.3 3.6-4-2.7-4-9 2-10.6.5-.4.8 3.1 1.7 3 4.9-.3 2.7 6.3 1.7 7.6M188.6 135.3c-6.2 17.8 3.6 37.4 10.4 35.5 5 2 8-7.4 10-17.6 1.5-2.9 2.5-3.2 3.2-1.7-.2 13.6 1 16.7 4.5 20.8 7.8 6 14.3.8 14.8.3l6-6.1q2.2-2.2 5.1-.3c1.9 1.7 1.6 4.6 5.6 6.6 3.4 1.4 10.5.4 12.2-2.5 2.2-3.9 2.8-5.2 3.8-6.6 1.6-2.1 4.3-1.2 4.3-.5-.3 1.2-1.9 2.3-.8 4.5 2 1.4 2.4.5 3.5.2 4-2 7-10.6 7-10.6.1-3.2-1.7-3-2.9-2.2l-3.1 2.1c-2 .3-5.7 1.6-7.6-1.3-1.9-3.4-1.9-8.3-3.3-11.8 0-.2-2.6-5.5-.2-5.8 1.2.2 3.7.9 4.1-1.2 1.2-2.1-2.6-8-5.3-11-2.3-2.5-5.5-2.8-8.6-.2-2.2 2-1.9 4.2-2.3 6.3a10 10 0 0 0 2 8.7c2.2 4.2 6.1 9.7 4.8 17.5 0 0-2.3 3.6-6.3 3.1-1.7-.3-4.4-1-5.8-11.8-1.1-8 .2-19.4-3.2-24.7-1.3-3.3-2.2-6.4-5.2-.9-.8 2.2-4.3 5.5-1.8 12.2a36 36 0 0 1 2 19c-1.5 2.2-1.8 2.9-3.7 5-2.6 3-5.5 2.2-7.7 1.1-2-1.3-3.6-2-4.6-6.5.2-7 .6-18.5-.7-20.9-1.9-3.8-5-2.4-6.3-1.2a48 48 0 0 0-11.5 23.5c-1.8 5.8-3.7 4.1-5 1.8-3.2-3-3.5-26.7-7.4-22.8"/>
|
|
18
|
+
<path fill="#fff" d="M207.4 174.1c2.9-2 1.6-3.4 5.8.8a72 72 0 0 1 9.2 31.3c-.2 2.6 1.6 4.2 2.5 3.6.4-6 15.1-14.4 28.6-15.6 2-.5 1-4.4 1.3-6.4-.8-7.5 4.2-14.3 11.2-14.8 9.6 1.4 12.8 6.5 13 14.2-1.1 15-16.7 17.5-25.4 18.7-1.3.5-1.9 1.1 0 1.8l36.6.2 1.9 1c.2 1-.6.2-2 2.6a30 30 0 0 0-3.7 11.5c-10.9 3.6-22.2 5-33.6 6.5-4 2-6 4.7-5.2 7.7 1.4 3.3 10.2 6.7 10.2 6.8 1.7 1 3.6 3.5-.5 8.6-17.8-.8-31.7-8.4-36.5-19.1-1.4-1.1-3 0-4 1.4-7 9-13.8 17-25.7 21.4-7 1.8-14.3-1.1-17.7-5.7-2.3-2.7-2.2-5.6-3-6.2-3.9 1.7-36.9 15.7-32.7 9.1 8-8.5 22-14.9 34.2-23.3.9-2.9 2.5-12.5 7.3-15.6.3 0-.7 5.6-.6 8 0 2-.2 2.7.2 2.2.9-.5 15.7-12.2 17-15.8 1.4-2 .3-7.2.3-7.4-2.8-7.2-6.7-7.8-8.1-11.4-1.3-4.7-.7-10.1 2-11.7q3.7-3.1 7.9.5c3 2.7 5.6 8 6.4 11.9-.5 1.5-4-1-5-.3a16 16 0 0 1 3.7 7.8c2 8.2 1.4 11.4-.6 16.7-6.6 13.9-15 18-22.4 23.2-.2 0-.3 3.5 2.4 5.4 1 1 4.9 1.5 9.4 0a55 55 0 0 0 22.3-23.3 51 51 0 0 0-2.4-22.2c-2.9-6.7-6.3-16.2-6.3-16.4-.1-4.2.2-5.6 2-7.7m-95.8-38.6c4.2 2 12.2 1.1 11.8-5.7l-.2-3.1c-.8-2-3.2-1.5-3.7.5-.2.7.3 1.8-.3 2.1-.4.4-1.7.2-1.7-1.7q-.1-1-.7-1.6-.2-.2-.9-.2c-.6 0-.6.1-.9.6l-.3 1.6q-.1.9-.8 1c-.6 0-.5 0-1-.2q-.4-.3-.5-1l-.3-1.6q-.3-.4-1-.6c-2.3 0-2.5 2.7-2.3 3.7-.2.2-.3 4.9 2.8 6.2"/>
|
|
19
|
+
<path fill="#fff" d="M235.1 187.7c4.2 2 14.3.9 11.8-5.6l-.2-3.2c-.9-2-3.2-1.5-3.7.6-.2.6.3 1.7-.4 2-.3.4-1.7.2-1.6-1.6q-.1-1-.7-1.7-.3-.2-1-.2c-.5 0-.5.2-.8.7q-.3.7-.3 1.6-.2.8-.9 1c-.5 0-.4 0-.8-.3q-.5-.3-.6-.9l-.3-1.6q-.3-.5-1-.6c-2.3 0-2.5 2.6-2.4 3.6-.1.2-.2 5 3 6.2zm72-21.6c4.2 2 12.1 1.1 11.8-5.6l-.2-3.2c-.9-2-3.2-1.5-3.7.5-.2.7.3 1.8-.4 2.2-.3.3-1.7.1-1.6-1.8q-.1-1-.7-1.6-.3-.2-1-.2t-.8.7l-.3 1.5q-.1 1-.9 1c-.8 0-.4 0-.8-.2q-.5-.3-.6-.9 0-1-.3-1.7-.4-.4-1-.5c-2.3 0-2.5 2.6-2.4 3.6-.1.2-.2 4.9 3 6.2zm37.3 54.3c-7.3 8.3-4.1 22-2.4 25 2.4 4.8 4.3 7.9 9 10.3 4.3 3.1 7.7 1.2 9.5-1 4.3-4.5 4.4-16 6.4-18.2 1.4-4.2 5-3.5 6.7-1.6a17 17 0 0 0 6.2 5.3c4 3.5 8.8 4.2 13.6 1 3.2-1.9 5.3-4.2 7.2-8.9 2-5.6 1-31.6.5-47l-4.2-21.5c0-.2-.5-10.2-1-12.5 0-1-.3-1.3.7-1.2 1.1 1 1.2 1 2 1.3 1 .2 2-1.7 1.3-3.3l-10-18.6c-.8-.8-1.9-1.6-3.2.2a7 7 0 0 0-2.4 5.5l1.3 13.3 4 22.6c1.3 16 1.6 29.2 2.9 45.3-.2 6.8-2.3 12.7-4.3 13.6 0 0-3 1.7-5-.2-1.5-.6-7.4-9.9-7.4-9.9-3-2.7-5-2-7.1 0-6 5.8-8.6 16.4-12.7 23.8-1 1.7-4 3-7.2-.1-8.2-11.3-3.4-27.3-4.4-23.2M309 126.7c3.8 1.5 6.4 9.2 5.6 13-.8 4.5-2.8 9.5-4.2 8.9-1.6-.6 1-4.6-.5-8.8-.8-2.8-6-7.8-5.4-9.2-1-3.1 2.2-4.5 4.5-4z"/>
|
|
20
|
+
<path fill="#fff" d="M356.6 225c.7-9.2-.6-14.8-.8-20.2s-6.1-46.6-7.3-50.6c-1.5-7.8 5.7-1 4.9-5.6-2.5-5.6-8.6-13.9-10.5-18.8-1.2-2-.7-4-3.3-.5a42 42 0 0 0-2.3 19.2c6.2 32.3 12.5 59.1 11.5 89.8 3 0 6.3-6.7 7.8-13.3m64.4-85.3c3.5 1.7 5.5 11.3 5.1 14-.7 5-2.5 10.4-3.8 9.7-1.5-.6.3-7.4-.4-9.5-.8-3-5.5-8.4-5-10-1-3.4 2-4.8 4.1-4.2m-255.7 67.9c3.3 1.3 5.3 8.3 5 10.3-.8 3.7-2.5 7.7-3.8 7.1-1.3-.4.3-5.4-.3-7-.3-3.7-4.9-5.7-4.8-7.3-.8-3 2-3.5 4-3.1z"/>
|
|
21
|
+
<path fill="#165d31" d="M244.9 218.2c4.2.2 6.3 3.6 2.4 5-4 1.3-7.7 2.4-7.8 8 1.5 8-2 5.2-4 4.2-2.4-1.8-9.2-6-10.2-15-.1-2.1 1.6-4 4.3-4 4 1.1 10 1.2 15.3 1.8"/>
|
|
22
|
+
<path fill="#fff" d="M77.4 124.4c4.8 1.4 5.1 8.6 4.8 10.7-.7 3.8-2.4 7.9-3.6 7.4-1.4-.5 0-5.7-.7-7.3-.7-2.2-4.8-6.4-4.4-7.6-.9-2.5 2-3.7 3.9-3.2m95.9 33.6c-3.8 2-5.2 8-2.9 11.6 2.2 3 5.6 1.9 6 1.9 3.7.4 5.9-6.9 5.9-6.9s.1-2-4.2 1.9c-1.9.3-2-.4-2.5-1.4a9 9 0 0 1 .5-5.7c.7-1.8-.7-2.6-2.8-1.4m28-36.4c-2 1.3-5.7 5.2-5.8 9.6-.1 2.5-.6 2.5 1 4 1.3 1.8 2.4 1.7 4.8.4a5 5 0 0 0 2.3-3.4c.6-2.8-3 1.4-3.4-1.8-.8-3 1.5-4.2 3.7-7 0-2 0-3.3-2.7-1.8zm22.4 4a60 60 0 0 0-1.6 11.1c-.6 2.8 3 4 4.5.4 2.4-6.5 2.4-9.3 2.6-12-.7-4.3-3.6-4.2-5.5.5m142 72.3c.4-.5 20-14.4 20-14.4 2-.7 1.5 7.2.6 7.1a78 78 0 0 1-20.7 14.3c-1 .7-1.9-5.3 0-7zm17.7-.2c3.5 1.7 4.9 11.8 4.5 14.5 0 5.4-3.3 9.6-4.7 9-1.4-.7.2-6.7-.5-8.8-.8-3-3.7-8.5-3.2-10.1-1-3.4 1.8-5.2 4-4.6zm-116 43.4a26 26 0 0 1 5.6-4.9c2-1 3.8.8 3.7.7.3 2-1.2 3.7-.7 6.3.4 1 .7 2.2 2.6 1.8 3.1-2.5 6-2.7 9-2.8 2.5.1 2.6 4.2 1 4.2-5.7 1.2-8.2 2.8-12.3 4.3-2 1.2-3.6-.3-3.6-.4s-1.1-1.1-.4-3.7q.3-3.2-2.4-3c-1.2.8-2.4 1.2-3-.3q-.6-1.4.5-2.2m136.6 5.4c.8 1 1.4 2-.1 3.8l-3.7 3.2c-.6 1-1 2.8 1 3.3 3.6 1 12-4.5 12-4.6 1.4-1 1-3 .8-3-.8-.9-2.6-.3-3.8-.5-.6 0-2.5-.2-1.6-2a11 11 0 0 0 1.6-2.9q.9-1.7-2-2.7c-2.1-.4-3-.2-5.3 0q-1.6.2-1.9 2.3c.1 2.3 1.5 2.2 3 3z"/>
|
|
23
|
+
<path fill="#165d31" d="M268.1 189.7c-.5 1-2.3 1-4 0s-2.7-2.6-2.1-3.5 2.3-.9 4 0 2.6 2.6 2.1 3.5m-89-53.6c-1 .3-2.4-.6-3-2s-.3-2.6.7-2.9 2.3.7 3 2 .3 2.7-.8 3zM355.2 375c9.4.4 18.2 0 27.5.5 1.7 1.5.5 5-.6 4.8l-7.8-.3c-.1-3-7.7-2.5-7.5.1-4.1.5-7.8-.1-12-.3-1.2-1.5-1-4.2.4-4.8"/>
|
|
24
|
+
</g>
|
|
25
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{b as t}from"./format-d8InM0Zw.js";var n=e(t(),1),r=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},i=(e=>e?r(e):r),a=e=>e;function o(e,t=a){let r=n.useSyncExternalStore(e.subscribe,n.useCallback(()=>t(e.getState()),[e,t]),()=>t(e.getInitialState()));return n.useDebugValue(r),r}var s=e=>{let t=i(e),n=e=>o(t,e);return Object.assign(n,t),n},c=(e=>e?s(e):s),l=1,u=c(e=>({toasts:[],push:(t,n)=>{let r=l++;e(e=>({toasts:[...e.toasts,{id:r,tone:t,message:n}]})),setTimeout(()=>e(e=>({toasts:e.toasts.filter(e=>e.id!==r)})),t===`error`?7e3:3500)},dismiss:t=>e(e=>({toasts:e.toasts.filter(e=>e.id!==t)}))})),d={success:e=>u.getState().push(`success`,e),error:e=>u.getState().push(`error`,e),info:e=>u.getState().push(`info`,e)};export{u as n,c as r,d as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{O as e}from"./ui-gsFb8B2m.js";async function t(t,n,r,i,a){return(await e.get(`/trade/chart`,{params:{symbol:t,market:n,interval:r,period:i,indicators:a.join(`,`)}})).data}async function n(t,n){return(await e.get(`/trade/levels`,{params:{symbol:t,market:n}})).data}async function r(){return(await e.get(`/trade/alert-kinds`)).data}async function i(){return(await e.get(`/trade/alerts`)).data}async function a(t){return(await e.post(`/trade/alerts`,t)).data}async function o(t,n){return(await e.patch(`/trade/alerts/${t}`,n)).data}async function s(t){await e.delete(`/trade/alerts/${t}`)}async function c(t=50){return(await e.get(`/trade/alerts/events`,{params:{limit:t}})).data}async function l(){return(await e.post(`/trade/alerts/check`)).data}async function u(){return(await e.get(`/trade/alerts/status`)).data}async function d(t){return(await e.get(`/trade/journal`,{params:t?{market:t}:{}})).data}async function f(t){return(await e.post(`/trade/journal`,t)).data}async function p(t,n){return(await e.patch(`/trade/journal/${t}`,n)).data}async function m(t){await e.delete(`/trade/journal/${t}`)}async function h(){return(await e.get(`/trade/scans/catalog`)).data}async function g(t){return(await e.post(`/trade/scan`,t,{timeout:18e4})).data}async function _(){return(await e.get(`/trade/scans/saved`)).data}async function v(t){return(await e.post(`/trade/scans/saved`,t)).data}async function y(t,n){return(await e.patch(`/trade/scans/saved/${t}`,n)).data}async function b(t){await e.delete(`/trade/scans/saved/${t}`)}async function x(){return(await e.get(`/trade/backtest/strategies`)).data}async function S(t){return(await e.post(`/trade/backtest`,t,{timeout:18e4})).data}async function C(t,n,r){return(await e.get(`/trade/options/chain`,{params:{symbol:t,market:n,expiry:r}})).data}async function w(t){return(await e.post(`/trade/options/payoff`,t)).data}async function T(){return(await e.get(`/trade/risk`)).data}async function E(t){return(await e.put(`/trade/risk/settings`,t)).data}async function D(t){return(await e.post(`/trade/charges`,t)).data}async function O(t){return(await e.get(`/trade/lot-size`,{params:{symbol:t}})).data.lot_size}async function k(t){return(await e.get(`/trade/market-status`,{params:{market:t}})).data}async function A(t){return(await e.get(`/trade/pairs`,{params:t,timeout:6e4})).data}export{p as A,_ as C,v as D,E,o as O,i as S,g as T,T as _,b as a,t as b,r as c,n as d,O as f,w as g,A as h,s as i,y as k,u as l,C as m,l as n,m as o,k as p,a as r,D as s,f as t,d as u,h as v,S as w,c as x,x as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{b as t,m as n,p as r}from"./format-d8InM0Zw.js";var i=n.create({baseURL:`/api/auth`,timeout:15e3});async function a(){return(await i.get(`/status`)).data}var o=`marketmyna:unauthorized`,s=n.create({baseURL:`/api/v1`});s.interceptors.response.use(void 0,e=>(n.isAxiosError(e)&&e.response?.status===401&&window.dispatchEvent(new Event(o)),Promise.reject(e)));var c=e(t(),1);function l(...e){return e.filter(Boolean).join(` `)}var u={"Quote & chart":{about:`The latest price, today's move and the price history for the period you pick.`,read:`Line shows the closing price; Candles show each day’s open, high, low and close. "Period change" is the move over the chosen period. For Indian shares you can switch between the NSE and BSE listing.`,note:`Prices can be a few minutes delayed.`},"Trade setup":{about:`Where the price sits for the next days to weeks, computed from daily prices (no AI).`,read:`The bar shows today’s price inside its normal range (the 20-day Bollinger band) and the expected 1-week range. ATR is the average daily move; RSI and volume show momentum and interest.`,note:`Ranges are estimates from past prices, not buy or sell levels.`},"AI analysis":{about:`An AI explanation of what the figures on this page show, with the outlook they point to.`,read:`The badge is the outlook: bullish, neutral or bearish. The paragraph describes the data (trend, valuation, risks, upcoming events) and the questions worth checking next.`,note:`A direction from the data, not a recommendation to buy, sell or hold. AI can be wrong.`},"Agent opinions":{about:`What each step of the AI analysis reported, one by one.`,read:`Open a step to read its full note. Technical reads the chart, Risk the volatility, News the headlines, Sentiment the online chatter, Fundamentals the filings; at Full depth a bull and a bear argue, and a risk team and a portfolio manager review the plan.`},"Agent pipeline":{about:`The AI analysis steps, shown live while the AI runs.`,read:`Each step turns green when done. A skipped step (e.g. a data source was down) does not stop the others; the final decision uses whatever finished.`},"Valuation meter":{about:`How expensive today's price is compared with similar companies in the same sector.`,read:`It compares P/E (price to earnings), P/B (price to book value) and P/S (price to sales) with the sector median. Below the median is cheaper than peers, above is dearer.`,note:`Cheaper than peers can be deserved (slower growth, more debt). It is a comparison, not a verdict.`},"DCF & Graham":{about:`Two classic ways to estimate a company's value from its cash flows and earnings.`,read:`DCF adds up future cash flows (under the growth and discount rates you set) in today’s money. It also shows what growth today’s price already assumes. Graham’s formula is a quick check from earnings and growth.`,note:`Small changes in the assumptions move the result a lot.`},"Investor checklists":{about:`The company’s filings run through the published rules of five investing styles: Graham, Buffett-style quality, Lynch, Greenblatt and a Howard Marks-style risk check.`,read:`Each rule passes or fails with its number, so you can see which styles the company fits.`,note:`These are public rules applied to published figures. They do not say what these investors would do.`},"Social sentiment":{about:`What people are saying about the stock on Reddit, StockTwits, ValuePickr and Hacker News over the last 7 days.`,read:`The score runs from -100 (very negative) to +100 (very positive), from words and tags in the posts. Look at the themes and the top posts for why. Buzz compares the last 24 hours with a normal day.`,note:`Chatter is noisy, easy to manipulate and often just follows the price. Long-term investors should use it mainly to spot red flags (fraud, lawsuits, dilution).`},"My thesis":{about:`Your own written reason for owning or watching this stock.`,read:`Write what has to go right, what would prove you wrong and the price that breaks it. MarketMyna checks it against live prices and results, and reminds you to review it every quarter.`},Earnings:{about:`The next results date, what to watch in this kind of company’s results, and how past results compared with forecasts.`,read:`"Beat" or "missed" compares reported earnings per share (EPS) with the analysts’ estimate. Stock move shows how the price reacted.`,note:`Past reactions do not predict the next one.`},"ETF holdings":{about:`What this exchange-traded fund owns.`,read:`The biggest holdings and their weights show where your money actually goes.`},Estimates:{about:`Analysts’ forecasts for revenue and earnings, and how those forecasts have changed.`,read:`Rising estimates mean analysts expect more than before; a record of beats means the company has tended to report above forecasts.`},Dividends:{about:`The company’s dividend payments over the years.`,read:`Yield is the yearly dividend as a % of today’s price. Growth shows whether the payout has been rising.`,note:`A very high yield can mean the price has fallen because the dividend is at risk.`},Peers:{about:`Companies in the same industry and of similar size.`,read:`Compare growth, margins and valuation side by side; one click opens a full comparison.`},"Mutual funds holding this":{about:`Indian mutual fund schemes that hold this stock, from their monthly portfolio disclosures.`,read:`More schemes and a bigger total amount mean more professional money in the stock.`,note:`Disclosures are monthly, so holdings can be weeks old.`},"Ethical screen":{about:`An ethical check: whether the business and the balance sheet meet common ethical-investing rules.`,read:`The business must not be on the excluded list (e.g. interest-based banking, alcohol, gambling). Debt, cash and interest income must stay under the limits shown (the standard index limit, with a stricter line where standards differ).`,note:`A screening aid, not a final ruling. Standards differ at the edges.`},"Financial statements":{about:`The income statement, balance sheet and cash flow, yearly or quarterly.`,read:`Each statement gets a verdict with the findings behind it: growth, margins, debt, and whether profit turns into cash.`},Fundamentals:{about:`A quick score of the business from its key ratios.`,read:`The score out of 100 combines valuation, profitability (e.g. return on equity), financial health (debt) and growth. 60+ is strong, under 40 weak.`},Technical:{about:`Chart indicators computed from daily prices.`,read:`Each row explains its indicator; "neutral" means it gives no clear signal. The moving-average chips show how far the price is above or below its 20-, 50-, 100- and 200-day averages.`,note:`Indicators describe the past and often disagree.`},Risk:{about:`How much the price swings and how far it has fallen before.`,read:`Volatility is the typical yearly swing; max drawdown the deepest fall from a high in the last year. Beta of 1 moves with the market, above 1 moves more. The forecast shows whether swings are expected to grow or calm.`},"Analysts & events":{about:`What brokers think and the dates coming up.`,read:`Broker consensus and average target summarise third-party analysts. Next earnings and ex-dividend dates often move the price.`,note:`Broker views are third-party opinions, not MarketMyna’s.`},"Company profile":{about:`What the company does, its sector and size.`,read:`A summary of the business: what it sells, where, and how big it is.`},"Latest news":{about:`Recent headlines about the company from news sites.`,read:`Click a headline to read the full story at its source. The time shows how old it is.`}};function d(e){return e?u[e]:void 0}var f=r(),p={analyze:`M3 17l6-6 4 4 8-8M15 7h6v6`,candles:`M7 4v3M7 17v3M5 7h4v10H5zM17 3v5M17 15v4M15 8h4v7h-4z`,portfolio:`M4 7h16v12H4zM9 7V5h6v2`,clock:`M12 7v5l3 2M12 21a9 9 0 110-18 9 9 0 010 18z`,chat:`M4 5h16v11H8l-4 4z`,settings:`M12 15a3 3 0 100-6 3 3 0 000 6zM19.4 15a1.7 1.7 0 00.3 1.8l.1.1a2 2 0 11-2.8 2.8l-.1-.1a1.7 1.7 0 00-1.8-.3 1.7 1.7 0 00-1 1.5V21a2 2 0 11-4 0v-.1a1.7 1.7 0 00-1.1-1.5 1.7 1.7 0 00-1.8.3l-.1.1a2 2 0 11-2.8-2.8l.1-.1a1.7 1.7 0 00.3-1.8 1.7 1.7 0 00-1.5-1H3a2 2 0 110-4h.1a1.7 1.7 0 001.5-1.1 1.7 1.7 0 00-.3-1.8l-.1-.1a2 2 0 112.8-2.8l.1.1a1.7 1.7 0 001.8.3H9a1.7 1.7 0 001-1.5V3a2 2 0 114 0v.1a1.7 1.7 0 001 1.5 1.7 1.7 0 001.8-.3l.1-.1a2 2 0 112.8 2.8l-.1.1a1.7 1.7 0 00-.3 1.8V9a1.7 1.7 0 001.5 1H21a2 2 0 110 4h-.1a1.7 1.7 0 00-1.5 1z`,plus:`M12 5v14M5 12h14`,check:`M5 12l5 5L20 7`,x:`M6 6l12 12M18 6L6 18`,play:`M7 5l12 7-12 7z`,stop:`M7 7h10v10H7z`,send:`M4 12l16-8-6 16-2-6z`,refresh:`M20 11a8 8 0 10-2.3 5.7M20 5v6h-6`,bell:`M6 16V11a6 6 0 1112 0v5l2 2H4zM10 20h4`,cpu:`M7 7h10v10H7zM9 3v4M15 3v4M9 17v4M15 17v4M3 9h4M3 15h4M17 9h4M17 15h4`,lock:`M6 11h12v9H6zM8 11V8a4 4 0 118 0v3`,alert:`M12 8v5M12 16.5v.5M10.3 3.9L2.4 18a2 2 0 001.7 3h15.8a2 2 0 001.7-3L13.7 3.9a2 2 0 00-3.4 0z`,chevron:`M9 6l6 6-6 6`,trash:`M4 7h16M9 7V4h6v3M6 7l1 13h10l1-13`,download:`M12 3v12M7 10l5 5 5-5M5 21h14`,search:`M11 18a7 7 0 110-14 7 7 0 010 14zM20 20l-4-4`,globe:`M12 21a9 9 0 100-18 9 9 0 000 18zM3 12h18M12 3c2.5 2.7 3.8 5.7 3.8 9s-1.3 6.3-3.8 9c-2.5-2.7-3.8-5.7-3.8-9s1.3-6.3 3.8-9z`,sort:`M8 9l4-4 4 4M8 15l4 4 4-4`,filter:`M4 5h16l-6 8v5l-4 2v-7z`,sun:`M12 16a4 4 0 100-8 4 4 0 000 8zM12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4`,moon:`M20 14.5A8 8 0 019.5 4a8 8 0 1010.5 10.5z`,star:`M12 3.5l2.6 5.3 5.9.9-4.3 4.1 1 5.8-5.2-2.7-5.2 2.7 1-5.8-4.3-4.1 5.9-.9z`,pencil:`M4 20h4L19 9l-4-4L4 16zM13.5 6.5l4 4`,compare:`M4 20V10M10 20V4M16 20v-7M22 20H2`,home:`M3 11l9-7 9 7M5 10v10h5v-6h4v6h5V10`,grid:`M4 4h6v6H4zM14 4h6v6h-6zM4 14h6v6H4zM14 14h6v6h-6z`,logout:`M14 4h5v16h-5M10 8l-4 4 4 4M6 12h10`,user:`M12 12a4 4 0 100-8 4 4 0 000 8zM4 21a8 8 0 0116 0`,shield:`M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6z`,radar:`M12 21a9 9 0 110-18 9 9 0 010 18zM12 16a4 4 0 110-8M12 12l6-6`};function m({name:e,className:t=`h-4 w-4`}){return(0,f.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:1.8,strokeLinecap:`round`,strokeLinejoin:`round`,className:l(`shrink-0`,t),"aria-hidden":!0,children:(0,f.jsx)(`path`,{d:p[e]})})}function h({className:e=`h-4 w-4`}){return(0,f.jsxs)(`svg`,{viewBox:`0 0 24 24`,className:l(`animate-spin`,e),"aria-hidden":!0,children:[(0,f.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`,fill:`none`,stroke:`currentColor`,strokeOpacity:`0.25`,strokeWidth:`3`}),(0,f.jsx)(`path`,{d:`M21 12a9 9 0 00-9-9`,fill:`none`,stroke:`currentColor`,strokeWidth:`3`,strokeLinecap:`round`})]})}function g({title:e,description:t,actions:n}){return(0,f.jsxs)(`div`,{className:`mb-6 flex flex-wrap items-end justify-between gap-4`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`h1`,{className:`text-xl font-semibold tracking-tight`,children:e}),t&&(0,f.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:t})]}),n&&(0,f.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:n})]})}var _=(0,c.createContext)(void 0);function v({children:e,className:t,id:n,section:r,help:i}){return(0,f.jsx)(`section`,{id:n,"data-section":r,className:l(`rounded-xl border border-line bg-surface shadow-card`,n&&`scroll-mt-6`,t),children:(0,f.jsx)(_.Provider,{value:i??r,children:e})})}function y({topic:e,open:t,onToggle:n,panelId:r}){return(0,f.jsx)(`button`,{type:`button`,onClick:n,"aria-expanded":t,"aria-controls":r,"aria-label":`What is ${e}?`,title:`What is ${e}?`,className:l(`grid h-[18px] w-[18px] shrink-0 place-items-center rounded-full border font-serif text-[11px] font-semibold italic leading-none transition-colors`,t?`border-accent bg-accent text-white`:`border-line-strong text-muted hover:border-accent hover:text-accent-fg`),children:`i`})}function b({topic:e,open:t,onClose:n,id:r}){let i=d(e);return(0,c.useEffect)(()=>{if(!t)return;let e=e=>e.key===`Escape`&&n();return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[t,n]),!i||!t?null:(0,f.jsxs)(`div`,{id:r,role:`region`,"aria-label":`About ${e}`,className:`mt-3 rounded-lg border border-line bg-canvas p-3 text-xs leading-relaxed`,children:[(0,f.jsx)(`p`,{className:`text-fg`,children:i.about}),(0,f.jsxs)(`p`,{className:`mt-1.5 text-muted`,children:[(0,f.jsx)(`span`,{className:`font-medium text-fg`,children:`How to read it: `}),i.read]}),i.note&&(0,f.jsx)(`p`,{className:`mt-1.5 text-warn`,children:i.note})]})}function x(e){let[t,n]=(0,c.useState)(!1),r=(0,c.useId)();return{has:!!d(e),open:t,toggle:(0,c.useCallback)(()=>n(e=>!e),[]),close:(0,c.useCallback)(()=>n(!1),[]),panelId:r}}function S({title:e,description:t,actions:n,icon:r}){let i=(0,c.useContext)(_),a=x(i);return(0,f.jsxs)(`header`,{className:`border-b border-line px-5 py-4`,children:[(0,f.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,f.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[r&&(0,f.jsx)(`span`,{className:`mt-0.5 rounded-md bg-raised p-1.5 text-muted`,children:(0,f.jsx)(m,{name:r})}),(0,f.jsxs)(`div`,{className:`min-w-0`,children:[(0,f.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,f.jsx)(`h2`,{className:`text-sm font-semibold`,children:e}),a.has&&i&&(0,f.jsx)(y,{topic:i,open:a.open,onToggle:a.toggle,panelId:a.panelId})]}),t&&(0,f.jsx)(`p`,{className:`mt-0.5 text-xs text-muted`,children:t})]})]}),n&&(0,f.jsx)(`div`,{className:`flex shrink-0 items-center gap-2`,children:n})]}),i&&(0,f.jsx)(b,{topic:i,open:a.open,onClose:a.close,id:a.panelId})]})}function C({children:e,className:t}){return(0,f.jsx)(`div`,{className:l(`p-5`,t),children:e})}var w={primary:`bg-cta text-on-cta hover:bg-cta-hover`,secondary:`border border-line-strong bg-raised text-fg hover:border-faint`,ghost:`text-muted hover:bg-raised hover:text-fg`,danger:`border border-down/40 bg-down-soft text-down hover:bg-down/20`,custom:``};function T({variant:e=`primary`,size:t=`md`,loading:n=!1,icon:r,children:i,className:a,disabled:o,type:s=`button`,...c}){return(0,f.jsxs)(`button`,{type:s,disabled:o||n,className:l(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg font-medium transition-colors`,`focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent`,`disabled:cursor-not-allowed disabled:opacity-50`,t===`sm`?`h-8 px-3 text-xs`:`h-9 px-4 text-sm`,w[e],a),...c,children:[n?(0,f.jsx)(h,{}):r?(0,f.jsx)(m,{name:r}):null,i]})}var E=`rounded-lg border border-line bg-canvas px-3 text-sm text-fg placeholder:text-faint focus:border-accent focus:outline-none focus:ring-2 focus:ring-accent-soft disabled:opacity-50`;function D(e){return/(^|\s)(\w+:)?w-/.test(e??``)?null:`w-full`}function O({className:e,...t}){return(0,f.jsx)(`input`,{className:l(E,D(e),`h-9`,e),...t})}function k({className:e,...t}){return(0,f.jsx)(O,{type:`text`,autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`off`,spellCheck:!1,"data-1p-ignore":``,"data-lpignore":`true`,"data-bwignore":`true`,"data-form-type":`other`,className:l(`[-webkit-text-security:disc]`,e),...t})}function A({className:e,...t}){return(0,f.jsx)(`textarea`,{className:l(E,D(e),`py-2 font-mono text-xs`,e),...t})}function j({options:e,className:t,...n}){return(0,f.jsx)(`select`,{className:l(E,D(t),`h-9 pe-8`,t),...n,children:e.map(e=>(0,f.jsx)(`option`,{value:e.value,disabled:e.disabled,children:e.label},e.value))})}function M({label:e,hint:t,children:n,className:r}){return(0,f.jsxs)(`label`,{className:l(`block`,r),children:[(0,f.jsx)(`span`,{className:`mb-1.5 block text-xs font-medium text-muted`,children:e}),n,t&&(0,f.jsx)(`span`,{className:`mt-1 block text-xs text-faint`,children:t})]})}function N({checked:e,onChange:t,label:n,description:r}){return(0,f.jsxs)(`label`,{className:`flex cursor-pointer items-start justify-between gap-4`,children:[(0,f.jsxs)(`span`,{children:[(0,f.jsx)(`span`,{className:`block text-sm font-medium`,children:n}),r&&(0,f.jsx)(`span`,{className:`mt-0.5 block text-xs text-muted`,children:r})]}),(0,f.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":e,onClick:()=>t(!e),className:l(`relative mt-0.5 h-5 w-9 shrink-0 rounded-full transition-colors`,e?`bg-accent`:`bg-line-strong`),children:(0,f.jsx)(`span`,{className:l(`absolute top-0.5 start-0 h-4 w-4 rounded-full bg-white transition-transform`,e?`translate-x-4.5`:`translate-x-0.5`)})})]})}function P({options:e,value:t,onChange:n,size:r=`md`,showHint:i=!1}){let a=e.find(e=>e.value===t);return(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`div`,{className:`inline-flex flex-wrap gap-1 rounded-lg border border-line bg-canvas p-1`,children:e.map(e=>(0,f.jsxs)(`button`,{type:`button`,title:e.hint,"aria-pressed":e.value===t,disabled:e.disabled,onClick:()=>n(e.value),className:l(`inline-flex items-center gap-1.5 rounded-md font-medium transition-colors`,r===`sm`?`px-2.5 py-1 text-xs`:`px-3 py-1.5 text-sm`,e.disabled?`cursor-not-allowed text-faint`:e.value===t?`cursor-default bg-raised text-fg shadow-sm ring-1 ring-line-strong`:`cursor-pointer text-muted hover:text-fg`),children:[e.label,e.badge&&(0,f.jsx)(`span`,{className:`rounded bg-accent-soft px-1.5 py-0.5 text-[10px] font-semibold leading-none text-accent-fg`,children:e.badge})]},e.value))}),i&&a?.hint&&(0,f.jsx)(`p`,{className:`mt-1.5 text-xs text-faint`,children:a.hint})]})}var F={neutral:`bg-raised text-muted ring-line-strong`,up:`bg-up-soft text-up ring-up/30`,down:`bg-down-soft text-down ring-down/30`,warn:`bg-warn-soft text-warn ring-warn/30`,accent:`bg-accent-soft text-accent-fg ring-accent/30`};function I({tone:e=`neutral`,children:t}){return(0,f.jsx)(`span`,{className:l(`inline-flex items-center gap-1 rounded-md px-2 py-0.5 text-xs font-semibold uppercase tracking-wide ring-1 ring-inset`,F[e]),children:t})}var L={buy:`up`,strong_buy:`up`,bullish:`up`,low:`up`,hold:`warn`,neutral:`warn`,medium:`warn`,sell:`down`,strong_sell:`down`,bearish:`down`,high:`down`,low_risk:`up`,medium_risk:`warn`,high_risk:`down`,positive:`up`,negative:`down`};function R({value:e}){return e?(0,f.jsx)(I,{tone:L[e.toLowerCase()]??`neutral`,children:e.replace(/_/g,` `)}):(0,f.jsx)(`span`,{className:`text-faint`,children:`—`})}function z({tone:e}){let t={neutral:`bg-faint`,up:`bg-up`,down:`bg-down`,warn:`bg-warn`,accent:`bg-accent`}[e];return(0,f.jsx)(`span`,{className:l(`inline-block h-2 w-2 shrink-0 rounded-full`,t)})}function B({tone:e=`down`,title:t,children:n,onDismiss:r}){return(0,f.jsxs)(`div`,{className:l(`flex items-start gap-3 rounded-lg px-4 py-3 text-sm ring-1 ring-inset`,F[e]),children:[(0,f.jsx)(m,{name:`alert`,className:`mt-0.5 h-4 w-4`}),(0,f.jsxs)(`div`,{className:`min-w-0 flex-1 normal-case`,children:[t&&(0,f.jsx)(`div`,{className:`font-semibold`,children:t}),n&&(0,f.jsx)(`div`,{className:`break-words text-fg/80`,children:n})]}),r&&(0,f.jsx)(`button`,{type:`button`,onClick:r,className:`opacity-70 hover:opacity-100`,"aria-label":`Dismiss`,children:(0,f.jsx)(m,{name:`x`})})]})}function V({label:e,value:t,sub:n,subClassName:r}){return(0,f.jsxs)(`div`,{className:`min-w-0`,children:[(0,f.jsx)(`div`,{className:`text-xs font-medium text-muted`,children:e}),(0,f.jsx)(`div`,{className:`tabular mt-1 truncate text-lg font-semibold`,children:t}),n!=null&&(0,f.jsx)(`div`,{className:l(`tabular mt-0.5 text-xs`,r??`text-muted`),children:n})]})}function H({icon:e,title:t,description:n,action:r}){return(0,f.jsxs)(`div`,{className:`flex flex-col items-center justify-center px-6 py-12 text-center`,children:[(0,f.jsx)(`span`,{className:`rounded-full bg-raised p-3 text-muted`,children:(0,f.jsx)(m,{name:e,className:`h-5 w-5`})}),(0,f.jsx)(`h3`,{className:`mt-3 text-sm font-semibold`,children:t}),n&&(0,f.jsx)(`p`,{className:`mt-1 max-w-sm text-xs text-muted`,children:n}),r&&(0,f.jsx)(`div`,{className:`mt-4`,children:r})]})}function U({children:e,className:t,maxHeight:n=`27rem`}){return(0,f.jsx)(`div`,{"data-scrollbox":!0,style:{maxHeight:n},className:l(`overflow-y-auto overscroll-contain [&_thead]:sticky [&_thead]:top-0 [&_thead]:z-[1] [&_thead]:bg-surface`,t),children:e})}function W({className:e}){return(0,f.jsx)(`div`,{className:l(`animate-pulse rounded-md bg-raised`,e)})}function G({values:e,onChange:t,placeholder:n}){function r(n){let r=n.split(/[,\s]+/).map(e=>e.trim().toUpperCase()).filter(Boolean),i=[...e];for(let e of r)i.includes(e)||i.push(e);t(i)}return(0,f.jsxs)(`div`,{className:`flex min-h-9 flex-wrap items-center gap-1.5 rounded-lg border border-line bg-canvas px-2 py-1.5 focus-within:border-accent focus-within:ring-2 focus-within:ring-accent-soft`,children:[e.map(n=>(0,f.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-md bg-raised px-2 py-0.5 font-mono text-xs`,children:[n,(0,f.jsx)(`button`,{type:`button`,onClick:()=>t(e.filter(e=>e!==n)),className:`text-faint hover:text-down`,"aria-label":`Remove ${n}`,children:(0,f.jsx)(m,{name:`x`,className:`h-3 w-3`})})]},n)),(0,f.jsx)(`input`,{className:`min-w-24 flex-1 bg-transparent px-1 text-sm outline-none placeholder:text-faint`,placeholder:e.length?``:n,onKeyDown:n=>{let i=n.currentTarget;(n.key===`Enter`||n.key===`,`)&&i.value.trim()?(n.preventDefault(),r(i.value),i.value=``):n.key===`Backspace`&&!i.value&&e.length&&t(e.slice(0,-1))},onBlur:e=>{e.currentTarget.value.trim()&&(r(e.currentTarget.value),e.currentTarget.value=``)}})]})}export{a as A,N as C,l as D,x as E,s as O,z as S,A as T,j as _,C as a,h as b,M as c,b as d,O as f,P as g,k as h,v as i,o as k,m as l,U as m,I as n,S as o,g as p,T as r,H as s,B as t,y as u,R as v,G as w,V as x,W as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./format-d8InM0Zw.js";import{r as t,t as n}from"./toast-DDradTZw.js";import{O as r}from"./ui-gsFb8B2m.js";async function i(){return(await r.get(`/watchlists`)).data}async function a(e){return(await r.get(`/watchlists/${e}`)).data}async function o(e){return(await r.post(`/watchlists`,{name:e})).data}async function s(e,t){return(await r.patch(`/watchlists/${e}`,{name:t})).data}async function c(e){await r.delete(`/watchlists/${e}`)}async function l(){return(await r.get(`/watchlists/items`)).data}async function u(e,t){return(await r.post(`/watchlists/${e}/items`,t)).data}async function d(e,t){await r.delete(`/watchlists/${e}/items/${t}`)}function f(e){return`${e.market}:${e.type}:${e.symbol}`}var p=t((t,r)=>{async function a(){let[e,n]=await Promise.all([i(),l()]);t(t=>({lists:e,members:n,loaded:!0,version:t.version+1}))}async function p(t,r){try{await t(),await a(),r&&n.success(r)}catch(t){n.error(e(t))}}let m=null;return{lists:[],members:[],loaded:!1,loadError:null,version:0,load:()=>(m??=a().then(()=>t({loadError:null})).catch(n=>{t({loadError:e(n)})}).finally(()=>{m=null}),m),add:(e,t)=>{let n=r().lists.find(t=>t.id===e);return p(()=>u(e,t),`${t.symbol} added to ${n?.name??`watchlist`}`)},remove:(e,t)=>{let n=r().members.find(n=>n.watchlist_id===e&&f(n)===f(t));if(!n)return Promise.resolve();let i=r().lists.find(t=>t.id===e);return p(()=>d(e,n.id),`${t.symbol} removed from ${i?.name??`watchlist`}`)},create:async t=>{try{let e=await o(t);return await a(),e}catch(t){return n.error(e(t)),null}},rename:(e,t)=>p(()=>s(e,t)),destroy:e=>p(()=>c(e),`Watchlist deleted`)}});export{p as n,a as r,f as t};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en-IN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
|
6
|
+
<link rel="icon" type="image/png" href="/favicon.png" />
|
|
7
|
+
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
|
8
|
+
<link rel="manifest" href="/manifest.webmanifest" />
|
|
9
|
+
<meta name="theme-color" content="#002b36" />
|
|
10
|
+
<!-- Theme before first paint (no flash). A file, not inline, so the
|
|
11
|
+
Content-Security-Policy can forbid inline scripts. -->
|
|
12
|
+
<script src="/theme-init.js"></script>
|
|
13
|
+
<meta name="mobile-web-app-capable" content="yes" />
|
|
14
|
+
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
15
|
+
<meta name="apple-mobile-web-app-title" content="MarketMyna" />
|
|
16
|
+
<meta name="application-name" content="MarketMyna" />
|
|
17
|
+
|
|
18
|
+
<title>MarketMyna</title>
|
|
19
|
+
<meta name="description" content="Self-hosted stock analysis, screening, portfolios and alerts." />
|
|
20
|
+
<!-- A private, self-hosted app: keep it out of search engines. -->
|
|
21
|
+
<meta name="robots" content="noindex, nofollow" />
|
|
22
|
+
<script type="module" crossorigin src="/assets/index-CKAnq-Or.js"></script>
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-XKyaHtl9.js">
|
|
24
|
+
<link rel="modulepreload" crossorigin href="/assets/preload-helper-BLdHbfdN.js">
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/format-d8InM0Zw.js">
|
|
26
|
+
<link rel="modulepreload" crossorigin href="/assets/toast-DDradTZw.js">
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assets/ui-gsFb8B2m.js">
|
|
28
|
+
<link rel="modulepreload" crossorigin href="/assets/files-CpgiZRbN.js">
|
|
29
|
+
<link rel="stylesheet" crossorigin href="/assets/index-D4U8E6LH.css">
|
|
30
|
+
</head>
|
|
31
|
+
<body>
|
|
32
|
+
<div id="root"></div>
|
|
33
|
+
</body>
|
|
34
|
+
</html>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "MarketMyna: AI Stock Analysis & Shariah Screener",
|
|
3
|
+
"short_name": "MarketMyna",
|
|
4
|
+
"description": "AI stock analysis, Shariah (halal) stock screening, screeners, charts, mutual fund tracking and alerts for India, US, China, Hong Kong and crypto.",
|
|
5
|
+
"lang": "en-IN",
|
|
6
|
+
"categories": [
|
|
7
|
+
"finance",
|
|
8
|
+
"business",
|
|
9
|
+
"productivity"
|
|
10
|
+
],
|
|
11
|
+
"start_url": "/",
|
|
12
|
+
"display": "standalone",
|
|
13
|
+
"background_color": "#0b0d12",
|
|
14
|
+
"theme_color": "#0b0d12",
|
|
15
|
+
"icons": [
|
|
16
|
+
{
|
|
17
|
+
"src": "/icon-192.png",
|
|
18
|
+
"sizes": "192x192",
|
|
19
|
+
"type": "image/png"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"src": "/icon-512.png",
|
|
23
|
+
"sizes": "512x512",
|
|
24
|
+
"type": "image/png",
|
|
25
|
+
"purpose": "any maskable"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
marketmyna/web/sw.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// MarketMyna service worker: shows server push notifications (reports,
|
|
2
|
+
// alerts) even when no MarketMyna tab is open, and opens the app on click.
|
|
3
|
+
|
|
4
|
+
self.addEventListener('install', () => self.skipWaiting())
|
|
5
|
+
self.addEventListener('activate', (event) => event.waitUntil(self.clients.claim()))
|
|
6
|
+
|
|
7
|
+
self.addEventListener('push', (event) => {
|
|
8
|
+
let data = {}
|
|
9
|
+
try {
|
|
10
|
+
data = event.data ? event.data.json() : {}
|
|
11
|
+
} catch {
|
|
12
|
+
data = { body: event.data ? event.data.text() : '' }
|
|
13
|
+
}
|
|
14
|
+
const title = data.title || 'MarketMyna'
|
|
15
|
+
event.waitUntil(
|
|
16
|
+
self.registration.showNotification(title, {
|
|
17
|
+
body: data.body || '',
|
|
18
|
+
tag: data.tag || 'marketmyna',
|
|
19
|
+
icon: '/icon-192.png',
|
|
20
|
+
badge: '/favicon.png',
|
|
21
|
+
data: { url: data.url || '/' },
|
|
22
|
+
}),
|
|
23
|
+
)
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
self.addEventListener('notificationclick', (event) => {
|
|
27
|
+
event.notification.close()
|
|
28
|
+
const target = new URL(event.notification.data?.url || '/', self.location.origin).href
|
|
29
|
+
event.waitUntil(
|
|
30
|
+
self.clients.matchAll({ type: 'window', includeUncontrolled: true }).then((clients) => {
|
|
31
|
+
for (const client of clients) {
|
|
32
|
+
if (client.url.startsWith(self.location.origin) && 'focus' in client) {
|
|
33
|
+
client.navigate(target)
|
|
34
|
+
return client.focus()
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return self.clients.openWindow(target)
|
|
38
|
+
}),
|
|
39
|
+
)
|
|
40
|
+
})
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Apply the saved theme before first paint - no flash. Dark is the default;
|
|
2
|
+
// light only when the user picked it with the header toggle. Loaded as a
|
|
3
|
+
// plain blocking script from index.html (kept out of the bundle on purpose).
|
|
4
|
+
document.documentElement.classList.add('js')
|
|
5
|
+
try {
|
|
6
|
+
var t = localStorage.getItem('marketmyna.theme')
|
|
7
|
+
if (t !== 'light') t = 'dark'
|
|
8
|
+
document.documentElement.dataset.theme = t
|
|
9
|
+
} catch {
|
|
10
|
+
document.documentElement.dataset.theme = 'dark'
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Same for the language: set lang and dir before first paint, so Arabic and
|
|
14
|
+
// Persian open right-to-left without a flash. Mirrors detectLanguage() in
|
|
15
|
+
// src/i18n/languages.ts (saved choice, else browser language, else English).
|
|
16
|
+
;(function () {
|
|
17
|
+
var codes = { en: 'en-IN', es: 'es', pt: 'pt-BR', ru: 'ru', zh: 'zh-CN', ar: 'ar', fa: 'fa' }
|
|
18
|
+
var code = null
|
|
19
|
+
try {
|
|
20
|
+
code = localStorage.getItem('marketmyna.lang')
|
|
21
|
+
} catch {
|
|
22
|
+
// storage unavailable
|
|
23
|
+
}
|
|
24
|
+
if (!codes[code]) {
|
|
25
|
+
code = 'en'
|
|
26
|
+
var tags = navigator.languages || [navigator.language]
|
|
27
|
+
for (var i = 0; i < tags.length; i++) {
|
|
28
|
+
var c = String(tags[i] || '').toLowerCase().split('-')[0]
|
|
29
|
+
if (codes[c]) {
|
|
30
|
+
code = c
|
|
31
|
+
break
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
document.documentElement.lang = codes[code]
|
|
36
|
+
document.documentElement.dir = code === 'ar' || code === 'fa' ? 'rtl' : 'ltr'
|
|
37
|
+
})()
|