// src/calendars/EconomicCalendar.tsx
import { loadScript } from "@dschz/load-script";
import { tryCatch } from "@dschz/try-catch";
import { createEffect, mergeProps, onCleanup } from "solid-js";
var CountryMap = {
  // North America
  "United States": "us",
  Canada: "ca",
  // Europe
  Austria: "at",
  Belgium: "be",
  Cyprus: "cy",
  "Czech Republic": "cz",
  Denmark: "dk",
  Estonia: "ee",
  "European Union": "eu",
  // Not standard ISO, but accepted by TradingView
  Finland: "fi",
  France: "fr",
  Germany: "de",
  Greece: "gr",
  Hungary: "hu",
  Iceland: "is",
  Ireland: "ie",
  Italy: "it",
  Latvia: "lv",
  Lithuania: "lt",
  Luxembourg: "lu",
  Netherlands: "nl",
  Norway: "no",
  Poland: "pl",
  Portugal: "pt",
  Romania: "ro",
  Russia: "ru",
  Serbia: "rs",
  Slovakia: "sk",
  Spain: "es",
  Sweden: "se",
  Switzerland: "ch",
  Ukraine: "ua",
  "United Kingdom": "gb",
  // Middle East / Africa
  Angola: "ao",
  Bahrain: "bh",
  Botswana: "bw",
  Egypt: "eg",
  Ethiopia: "et",
  Ghana: "gh",
  Israel: "il",
  Kenya: "ke",
  Kuwait: "kw",
  Malawi: "mw",
  Mauritius: "mu",
  Morocco: "ma",
  Mozambique: "mz",
  Namibia: "na",
  Nigeria: "ng",
  Oman: "om",
  Qatar: "qa",
  Rwanda: "rw",
  "Saudi Arabia": "sa",
  Seychelles: "sc",
  "South Africa": "za",
  Tanzania: "tz",
  Tunisia: "tn",
  Turkey: "tr",
  Uganda: "ug",
  "United Arab Emirates": "ae",
  Zambia: "zm",
  Zimbabwe: "zw",
  // Mexico and South America
  Argentina: "ar",
  Brazil: "br",
  Chile: "cl",
  Colombia: "co",
  Mexico: "mx",
  Peru: "pe",
  Venezuela: "ve",
  // Asia / Pacific
  Australia: "au",
  Bangladesh: "bd",
  China: "cn",
  "Hong Kong": "hk",
  India: "in",
  Indonesia: "id",
  Japan: "jp",
  "South Korea": "kr",
  "Sri Lanka": "lk",
  Malaysia: "my",
  "New Zealand": "nz",
  Pakistan: "pk",
  Philippines: "ph",
  Singapore: "sg",
  Taiwan: "tw",
  Thailand: "th",
  Vietnam: "vn"
};
var EconomicCalendar = (props) => {
  let container;
  const _props = mergeProps(
    {
      width: "full",
      height: "full",
      locale: "en",
      colorTheme: "light",
      countries: [],
      autosize: true,
      showHighImportanceOnly: false,
      isTransparent: false
    },
    props
  );
  const countries = () => new Array(...new Set(_props.countries));
  createEffect(() => {
    const widgetRoot = document.createElement("div");
    widgetRoot.classList.add("tradingview-widget-container__widget");
    container.appendChild(widgetRoot);
    const fullWidth = _props.autosize || _props.width === "full";
    container.style.width = fullWidth ? "100%" : `${_props.width}px`;
    widgetRoot.style.width = fullWidth ? "100%" : `${_props.width}px`;
    const fullHeight = _props.autosize || _props.height === "full";
    container.style.height = fullHeight ? "100%" : `${_props.height}px`;
    widgetRoot.style.height = fullHeight ? "100%" : `${_props.height}px`;
    const downloadScript = async () => {
      const [error] = await tryCatch(
        loadScript(
          "https://s3.tradingview.com/external-embedding/embed-widget-events.js",
          {
            textContent: JSON.stringify({
              autosize: _props.autosize,
              width: fullWidth ? "100%" : _props.width,
              height: fullHeight ? "100%" : _props.height,
              locale: _props.locale,
              colorTheme: _props.colorTheme,
              importanceFilter: _props.showHighImportanceOnly ? "0,1" : "-1,0,1",
              isTransparent: _props.isTransparent,
              countryFilter: countries().map((country) => CountryMap[country]).join(",")
            })
          },
          widgetRoot
        )
      );
      if (error) _props.onError?.(error);
    };
    void downloadScript();
    onCleanup(() => {
      widgetRoot.remove();
    });
  });
  return <div class="tradingview-widget-container" ref={container} />;
};

// src/charts/AdvancedChart.tsx
import { loadScript as loadScript2 } from "@dschz/load-script";
import { tryCatch as tryCatch2 } from "@dschz/try-catch";
import { createEffect as createEffect2, mergeProps as mergeProps2, onCleanup as onCleanup2 } from "solid-js";
var IndicatorMap = {
  volume24h: "STD;24h%Volume",
  accumulationDistribution: "STD;Accumulation_Distribution",
  advanceDeclineLine: "STD;Advance%1Decline%1Line",
  advanceDeclineRatio: "STD;Advance%1Decline%1Ratio",
  advanceDeclineRatioBars: "STD;Advance_Decline_Ratio_Bars",
  arnaudLegouxMovingAverage: "STD;Arnaud%1Legoux%1Moving%1Average",
  aroon: "STD;Aroon",
  averageDayRange: "STD;Average%Day%Range",
  averageDirectionalIndex: "STD;Average%1Directional%1Index",
  averageTrueRange: "STD;Average_True_Range",
  awesomeOscillator: "STD;Awesome_Oscillator",
  balanceOfPower: "STD;Balance%1of%1Power",
  bbTrend: "STD;BBTrend",
  bollingerBands: "STD;Bollinger_Bands",
  bollingerBandsPercentB: "STD;Bollinger_Bands_B",
  bollingerBandwidth: "STD;Bollinger_Bands_Width",
  bollingerBars: "STD;Bollinger%1Bars",
  bullBearPower: "STD;Bull%Bear%Power",
  chaikinMoneyFlow: "STD;Chaikin_Money_Flow",
  chaikinOscillator: "STD;Chaikin_Oscillator",
  chandeKrollStop: "STD;Chande%1Kroll%1Stop",
  chandeMomentumOscillator: "STD;Chande_Momentum_Oscillator",
  chopZone: "STD;Chop%1Zone",
  choppinessIndex: "STD;Choppiness_Index",
  commodityChannelIndex: "STD;CCI",
  connorsRsi: "STD;Connors_RSI",
  coppockCurve: "STD;Coppock%1Curve",
  correlationCoefficientBasic: "CorrelationCoefficient@tv-basicstudies",
  correlationCoefficient: "STD;Correlation_Coeff",
  cumulativeVolumeDelta: "STD;Cumulative%1Volume%1Delta",
  cumulativeVolumeIndex: "STD;Cumulative%1Volume%1Index",
  detrendedPriceOscillator: "STD;DPO",
  directionalMovementIndex: "STD;DMI",
  donchianChannels: "STD;Donchian_Channels",
  doubleEma: "STD;DEMA",
  easeOfMovement: "STD;EOM",
  elderForceIndex: "STD;EFI",
  envelope: "STD;ENV",
  fisherTransform: "STD;Fisher_Transform",
  gaps: "STD;Gaps",
  historicalVolatility: "STD;Historical_Volatility",
  hullMovingAverage: "STD;Hull%1MA",
  ichimokuCloud: "STD;Ichimoku%1Cloud",
  keltnerChannels: "STD;Keltner_Channels",
  klingerOscillator: "STD;Klinger%1Oscillator",
  knowSureThing: "STD;Know_Sure_Thing",
  leastSquaresMovingAverage: "STD;Least%1Squares%1Moving%1Average",
  linearRegressionChannel: "STD;Linear_Regression",
  maCross: "STD;MA%1Cross",
  massIndex: "STD;Mass%1Index",
  mcginleyDynamic: "STD;McGinley%1Dynamic",
  median: "STD;Median",
  momentum: "STD;Momentum",
  moneyFlowIndex: "STD;Money_Flow",
  moonPhases: "MoonPhases@tv-basicstudies",
  // not the same as STD
  movingAverageConvergenceDivergence: "STD;MACD",
  movingAverageExponential: "STD;EMA",
  movingAverageRibbon: "STD;MA%Ribbon",
  movingAverageSimple: "STD;SMA",
  movingAverageWeighted: "STD;WMA",
  multiTimePeriodCharts: "STD;Multi-Time%Period%Charts",
  netVolume: "STD;Net%1Volume",
  onBalanceVolume: "STD;On_Balance_Volume",
  openInterest: "STD;Open%Interest",
  parabolicSar: "STD;PSAR",
  performance: "STD;Performance",
  pivotPointsHighLow: "STD;Pivot%1Points%1High%1Low",
  pivotPointsStandard: "STD;Pivot%1Points%1Standard",
  priceOscillator: "STD;Price_Oscillator",
  priceTarget: "STD;Price%1Target",
  priceVolumeTrendBasic: "PriceVolumeTrend@tv-basicstudies",
  priceVolumeTrend: "STD;Price_Volume_Trend",
  rankCorrelationIndex: "STD;Rank_Correlation_Index",
  rateOfChange: "STD;ROC",
  rciRibbon: "STD;RCI_Ribbon",
  relativeStrengthIndex: "STD;RSI",
  relativeVigorIndex: "STD;Relative_Vigor_Index",
  relativeVolatilityIndex: "STD;Relative_Volatility_Index",
  relativeVolumeAtTime: "STD;Relative%1Volume%1at%1Time",
  robBookerIntradayPivotPoints: "BookerIntradayPivots@tv-basicstudies",
  robBookerKnoxvilleDivergence: "BookerKnoxvilleDivergence@tv-basicstudies",
  robBookerMissedPivotPoints: "BookerMissedPivots@tv-basicstudies",
  robBookerReversal: "BookerReversal@tv-basicstudies",
  robBookerZivGhostPivots: "STD;Rob%1Booker%1Ghost%1Pivots%1v2",
  rsiDivergenceIndicator: "STD;Divergence%1Indicator",
  seasonality: "STD;Seasonality",
  smiErgodicIndicator: "STD;SMI_Ergodic_Indicator_Oscillator",
  smiErgodicOscillator: "STD;SMI_Ergodic_Oscillator",
  smoothedMovingAverage: "STD;Smoothed%1Moving%1Average",
  stochastic: "STD;Stochastic",
  stochasticMomentumIndex: "STD;SMI",
  stochasticRsi: "STD;Stochastic_RSI",
  supertrend: "STD;Supertrend",
  technicalRatings: "STD;Technical%1Ratings",
  timeWeightedAveragePrice: "STD;Time%1Weighted%1Average%1Price",
  tradingSessions: "STD;Trading%1Sessions",
  trendStrengthIndex: "STD;Trend%1Strength%1Index",
  tripleEma: "STD;TEMA",
  trix: "STD;TRIX",
  trueStrengthIndex: "STD;True%1Strength%1Indicator",
  ultimateOscillator: "STD;Ultimate_Oscillator",
  upDownVolume: "STD;UP_DOWN_Volume",
  visibleAveragePrice: "STD;Visible%1Average%1Price",
  volatilityStop: "STD;Volatility_Stop",
  volume: "Volume@tv-basicstudies",
  volumeDelta: "STD;Volume%1Delta",
  volumeOscillator: "STD;Volume%1Oscillator",
  volumeWeightedAveragePrice: "STD;VWAP",
  volumeWeightedMovingAverage: "STD;VWMA",
  vortexIndicator: "STD;Vortex%1Indicator",
  williamsAlligator: "STD;Williams_Alligator",
  williamsFractals: "STD;Whilliams_Fractals",
  williamsPercentRange: "STD;Willams_R",
  woodiesCci: "STD;Woodies%1CCI",
  zigZag: "STD;Zig_Zag"
};
var AdvancedChart = (props) => {
  let container;
  const _props = mergeProps2(
    {
      width: 400,
      height: 300,
      locale: "en",
      colorTheme: "light",
      interval: "1",
      timezone: "Etc/UTC",
      chartStyle: "candles",
      indicators: [],
      watchlist: [],
      compareSymbols: [],
      autosize: true,
      allowSymbolChange: true,
      showBottomToolbar: false,
      showDetails: false,
      showDrawingToolsBar: true,
      showHotlist: false,
      showSaveImageButton: false,
      showSymbolDescription: true,
      showTopToolbar: true,
      showVolume: true
    },
    props
  );
  createEffect2(() => {
    const widgetRoot = document.createElement("div");
    widgetRoot.classList.add("tradingview-widget-container__widget");
    container.appendChild(widgetRoot);
    container.style.width = _props.autosize ? "100%" : `${_props.width}px`;
    container.style.height = _props.autosize ? "100%" : `${_props.height}px`;
    widgetRoot.style.width = _props.autosize ? "100%" : `${_props.width}px`;
    widgetRoot.style.height = _props.autosize ? "100%" : `${_props.height}px`;
    const downloadScript = async () => {
      const [error] = await tryCatch2(
        loadScript2(
          "https://s3.tradingview.com/external-embedding/embed-widget-advanced-chart.js",
          {
            textContent: JSON.stringify({
              symbol: _props.symbol,
              width: _props.autosize ? "100%" : _props.width,
              height: _props.autosize ? "100%" : _props.height,
              interval: _props.interval,
              locale: _props.locale,
              theme: _props.colorTheme,
              timezone: _props.timezone,
              style: _props.chartStyle,
              backgroundColor: _props.backgroundColor,
              gridColor: _props.gridColor,
              studies: _props.indicators.map((indicator) => IndicatorMap[indicator]),
              watchlist: _props.watchlist,
              compare_symbols: _props.compareSymbols,
              allow_symbol_change: _props.allowSymbolChange,
              withdateranges: _props.showBottomToolbar,
              details: _props.showDetails,
              hide_side_toolbar: !_props.showDrawingToolsBar,
              hotlist: _props.showHotlist,
              save_image: _props.showSaveImageButton,
              hide_legend: !_props.showSymbolDescription,
              hide_top_toolbar: !_props.showTopToolbar,
              hide_volume: !_props.showVolume,
              support_host: "https://www.tradingview.com"
            })
          },
          widgetRoot
        )
      );
      if (error) _props.onError?.(error);
    };
    void downloadScript();
    onCleanup2(() => {
      widgetRoot.remove();
    });
  });
  return <div class="tradingview-widget-container" ref={container} />;
};

// src/charts/MiniChart.tsx
import { loadScript as loadScript3 } from "@dschz/load-script";
import { tryCatch as tryCatch3 } from "@dschz/try-catch";
import { createEffect as createEffect3, mergeProps as mergeProps3, onCleanup as onCleanup3 } from "solid-js";
var MiniChart = (props) => {
  let container;
  const _props = mergeProps3(
    {
      width: "full",
      height: "full",
      locale: "en",
      colorTheme: "light",
      dateRange: "1M",
      autosize: true,
      isTransparent: false,
      chartOnly: false,
      noTimeScale: false
    },
    props
  );
  createEffect3(() => {
    const widgetRoot = document.createElement("div");
    widgetRoot.classList.add("tradingview-widget-container__widget");
    container.appendChild(widgetRoot);
    const fullWidth = _props.autosize || _props.width === "full";
    container.style.width = fullWidth ? "100%" : `${_props.width}px`;
    widgetRoot.style.width = fullWidth ? "100%" : `${_props.width}px`;
    const fullHeight = _props.autosize || _props.height === "full";
    container.style.height = fullHeight ? "100%" : `${_props.height}px`;
    widgetRoot.style.height = fullHeight ? "100%" : `${_props.height}px`;
    const downloadScript = async () => {
      const [error] = await tryCatch3(
        loadScript3(
          "https://s3.tradingview.com/external-embedding/embed-widget-mini-symbol-overview.js",
          {
            textContent: JSON.stringify({
              symbol: _props.symbol,
              autosize: _props.autosize,
              width: fullWidth ? "100%" : _props.width,
              height: fullHeight ? "100%" : _props.height,
              locale: _props.locale,
              colorTheme: _props.colorTheme,
              dateRange: _props.dateRange,
              trendLineColor: _props.trendLineColor,
              underLineColor: _props.underLineColor,
              underLineBottomColor: _props.underLineBottomColor,
              isTransparent: _props.isTransparent,
              chartOnly: _props.chartOnly,
              noTimeScale: _props.noTimeScale
            })
          },
          widgetRoot
        )
      );
      if (error) _props.onError?.(error);
    };
    void downloadScript();
    onCleanup3(() => {
      widgetRoot.remove();
    });
  });
  return <div class="tradingview-widget-container" ref={container} />;
};

// src/charts/SymbolOverview.tsx
import { loadScript as loadScript4 } from "@dschz/load-script";
import { tryCatch as tryCatch4 } from "@dschz/try-catch";
import { createEffect as createEffect4, mergeProps as mergeProps4, onCleanup as onCleanup4 } from "solid-js";
var ScaleModeMap = {
  normal: "Normal",
  percentage: "Percentage",
  logarithmic: "Logarithmic"
};
var ChartTypeMap = {
  area: "area",
  line: "line",
  bar: "bars",
  candlestick: "candlesticks"
};
var ValueTrackingModeMap = {
  floating_tooltip: "1",
  colored_tooltip: "2",
  legend: "3",
  scale_labels: "0"
};
var LineTypeMap = {
  simple: 0,
  curved: 2,
  stepLine: 1
};
var TimeFormatMap = {
  "12h": "12-hours",
  "24h": "24-hours"
};
var SymbolOverview = (props) => {
  let container;
  const _props = mergeProps4(
    {
      width: "full",
      height: "full",
      locale: "en",
      scaleMode: "normal",
      scalePosition: "right",
      colorTheme: "light",
      chartType: "line",
      valueTrackingMode: "floating_tooltip",
      lineType: "simple",
      headerFontSize: "small",
      changeMode: "price-and-percent",
      timeFormat: "12h",
      lineWidth: 2,
      showHeader: true,
      showSymbolLogo: true,
      showMarketStatus: true,
      showDateRanges: true,
      fontSize: 10,
      autosize: true,
      showTimeScale: true,
      isTransparent: false,
      chartOnly: false,
      showVolume: false,
      showMA: false,
      maLineColor: "blue",
      maLineWidth: 1,
      maLength: 9
    },
    props
  );
  createEffect4(() => {
    const widgetRoot = document.createElement("div");
    widgetRoot.classList.add("tradingview-widget-container__widget");
    container.appendChild(widgetRoot);
    const fullWidth = _props.autosize || _props.width === "full";
    container.style.width = fullWidth ? "100%" : `${_props.width}px`;
    widgetRoot.style.width = fullWidth ? "100%" : `${_props.width}px`;
    const fullHeight = _props.autosize || _props.height === "full";
    container.style.height = fullHeight ? "100%" : `${_props.height}px`;
    widgetRoot.style.height = fullHeight ? "100%" : `${_props.height}px`;
    const downloadScript = async () => {
      const [error] = await tryCatch4(
        loadScript4(
          "https://s3.tradingview.com/external-embedding/embed-widget-symbol-overview.js",
          {
            textContent: JSON.stringify({
              autosize: _props.autosize,
              width: fullWidth ? "100%" : _props.width,
              height: fullHeight ? "100%" : _props.height,
              locale: _props.locale,
              noTimeScale: !_props.showTimeScale,
              colorTheme: _props.colorTheme,
              scalePosition: _props.scalePosition,
              scaleMode: ScaleModeMap[_props.scaleMode],
              lineWidth: _props.lineWidth,
              lineType: LineTypeMap[_props.lineType],
              chartType: ChartTypeMap[_props.chartType],
              valuesTracking: ValueTrackingModeMap[_props.valueTrackingMode],
              timeHoursFormat: TimeFormatMap[_props.timeFormat],
              headerFontSize: _props.headerFontSize,
              hideDateRanges: !_props.showDateRanges,
              hideMarketStatus: !_props.showMarketStatus,
              hideSymbolLogo: !_props.showSymbolLogo,
              fontSize: _props.fontSize,
              fontColor: _props.fontColor,
              showVolume: _props.showVolume,
              volumeUpColor: _props.volumeUpColor,
              volumeDownColor: _props.volumeDownColor,
              showMA: _props.showMA,
              maLineColor: _props.maLineColor,
              maLineWidth: _props.maLineWidth,
              maLength: _props.maLength,
              symbols: _props.symbols.map((symbol) => {
                const parts = symbol.split(":");
                const displayName = parts.length > 1 ? parts[1] : symbol;
                return [displayName, `${symbol}|1D`];
              }),
              chartOnly: !_props.showHeader,
              trendLineColor: _props.trendLineColor,
              underLineColor: _props.underLineColor,
              underLineBottomColor: _props.underLineBottomColor,
              isTransparent: _props.isTransparent,
              color: _props.color,
              lineColor: _props.lineColor,
              topColor: _props.topColor,
              bottomColor: _props.bottomColor,
              upColor: _props.upColor,
              downColor: _props.downColor,
              borderUpColor: _props.borderUpColor,
              borderDownColor: _props.borderDownColor,
              wickUpColor: _props.wickUpColor,
              wickDownColor: _props.wickDownColor,
              gridLineColor: _props.gridLineColor,
              widgetFontColor: _props.widgetFontColor,
              backgroundColor: _props.backgroundColor,
              changeMode: _props.changeMode,
              // TODO: Make this configurable
              dateRanges: ["1d|1", "1m|30", "3m|60", "12m|1D", "60m|1W", "all|1M"]
            })
          },
          widgetRoot
        )
      );
      if (error) _props.onError?.(error);
    };
    void downloadScript();
    onCleanup4(() => {
      widgetRoot.remove();
    });
  });
  return <div class="tradingview-widget-container" ref={container} />;
};

// src/news/TopStories.tsx
import { loadScript as loadScript5 } from "@dschz/load-script";
import { tryCatch as tryCatch5 } from "@dschz/try-catch";
import { createEffect as createEffect5, mergeProps as mergeProps5, onCleanup as onCleanup5 } from "solid-js";
var TopStories = (props) => {
  let container;
  const _props = mergeProps5(
    {
      width: "full",
      height: "full",
      locale: "en",
      colorTheme: "light",
      feedMode: "all_symbols",
      displayMode: "adaptive",
      autosize: true,
      isTransparent: false
    },
    props
  );
  createEffect5(() => {
    const widgetRoot = document.createElement("div");
    widgetRoot.classList.add("tradingview-widget-container__widget");
    container.appendChild(widgetRoot);
    const fullWidth = _props.autosize || _props.width === "full";
    container.style.width = fullWidth ? "100%" : `${_props.width}px`;
    widgetRoot.style.width = fullWidth ? "100%" : `${_props.width}px`;
    const fullHeight = _props.autosize || _props.height === "full";
    container.style.height = fullHeight ? "100%" : `${_props.height}px`;
    widgetRoot.style.height = fullHeight ? "100%" : `${_props.height}px`;
    const widgetConfig = {
      width: fullWidth ? "100%" : _props.width,
      height: fullHeight ? "100%" : _props.height,
      locale: _props.locale,
      colorTheme: _props.colorTheme,
      feedMode: _props.feedMode,
      displayMode: _props.displayMode,
      isTransparent: _props.isTransparent
    };
    if (_props.feedMode === "symbol") {
      widgetConfig.symbol = _props.symbol;
    }
    const downloadScript = async () => {
      const [error] = await tryCatch5(
        loadScript5(
          "https://s3.tradingview.com/external-embedding/embed-widget-timeline.js",
          {
            textContent: JSON.stringify(widgetConfig)
          },
          widgetRoot
        )
      );
      if (error) _props.onError?.(error);
    };
    void downloadScript();
    onCleanup5(() => {
      widgetRoot.remove();
    });
  });
  return <div class="tradingview-widget-container" ref={container} />;
};

// src/screeners/CryptoMarket.tsx
import { loadScript as loadScript6 } from "@dschz/load-script";
import { tryCatch as tryCatch6 } from "@dschz/try-catch";
import { createEffect as createEffect6, mergeProps as mergeProps6, onCleanup as onCleanup6 } from "solid-js";
var CryptoMarket = (props) => {
  let container;
  const _props = mergeProps6(
    {
      width: "full",
      height: "full",
      locale: "en",
      colorTheme: "light",
      displayCurrency: "USD",
      autosize: true,
      isTransparent: false
    },
    props
  );
  createEffect6(() => {
    const widgetRoot = document.createElement("div");
    widgetRoot.classList.add("tradingview-widget-container__widget");
    container.appendChild(widgetRoot);
    const fullWidth = _props.autosize || _props.width === "full";
    container.style.width = fullWidth ? "100%" : `${_props.width}px`;
    widgetRoot.style.width = fullWidth ? "100%" : `${_props.width}px`;
    const fullHeight = _props.autosize || _props.height === "full";
    container.style.height = fullHeight ? "100%" : `${_props.height}px`;
    widgetRoot.style.height = fullHeight ? "100%" : `${_props.height}px`;
    const downloadScript = async () => {
      const [error] = await tryCatch6(
        loadScript6(
          "https://s3.tradingview.com/external-embedding/embed-widget-screener.js",
          {
            textContent: JSON.stringify({
              screener_type: "crypto_mkt",
              width: fullWidth ? "100%" : _props.width,
              height: fullHeight ? "100%" : _props.height,
              locale: _props.locale,
              colorTheme: _props.colorTheme,
              displayCurrency: _props.displayCurrency,
              isTransparent: _props.isTransparent
            })
          },
          widgetRoot
        )
      );
      if (error) _props.onError?.(error);
    };
    void downloadScript();
    onCleanup6(() => {
      widgetRoot.remove();
    });
  });
  return <div class="tradingview-widget-container" ref={container} />;
};

// src/screeners/Screener.tsx
import { loadScript as loadScript7 } from "@dschz/load-script";
import { tryCatch as tryCatch7 } from "@dschz/try-catch";
import { createEffect as createEffect7, mergeProps as mergeProps7, onCleanup as onCleanup7 } from "solid-js";
var Screener = (props) => {
  let container;
  const _props = mergeProps7(
    {
      width: "full",
      height: "full",
      locale: "en",
      colorTheme: "light",
      exchange: "america",
      defaultColumnView: "overview",
      defaultScreenView: "most_capitalized",
      autosize: true,
      isTransparent: false,
      showTopToolbar: true
    },
    props
  );
  createEffect7(() => {
    const widgetRoot = document.createElement("div");
    widgetRoot.classList.add("tradingview-widget-container__widget");
    container.appendChild(widgetRoot);
    const fullWidth = _props.autosize || _props.width === "full";
    container.style.width = fullWidth ? "100%" : `${_props.width}px`;
    widgetRoot.style.width = fullWidth ? "100%" : `${_props.width}px`;
    const fullHeight = _props.autosize || _props.height === "full";
    container.style.height = fullHeight ? "100%" : `${_props.height}px`;
    widgetRoot.style.height = fullHeight ? "100%" : `${_props.height}px`;
    const downloadScript = async () => {
      const [error] = await tryCatch7(
        loadScript7(
          "https://s3.tradingview.com/external-embedding/embed-widget-screener.js",
          {
            textContent: JSON.stringify({
              width: fullWidth ? "100%" : _props.width,
              height: fullHeight ? "100%" : _props.height,
              locale: _props.locale,
              colorTheme: _props.colorTheme,
              isTransparent: _props.isTransparent,
              showTopToolbar: _props.showTopToolbar,
              market: _props.exchange,
              defaultColumn: _props.defaultColumnView,
              defaultScreen: _props.defaultScreenView
            })
          },
          widgetRoot
        )
      );
      if (error) _props.onError?.(error);
    };
    void downloadScript();
    onCleanup7(() => {
      widgetRoot.remove();
    });
  });
  return <div class="tradingview-widget-container" ref={container} />;
};

// src/symbol/CompanyProfile.tsx
import { loadScript as loadScript8 } from "@dschz/load-script";
import { tryCatch as tryCatch8 } from "@dschz/try-catch";
import { createEffect as createEffect8, mergeProps as mergeProps8, onCleanup as onCleanup8 } from "solid-js";
var CompanyProfile = (props) => {
  let container;
  const _props = mergeProps8(
    {
      width: "full",
      height: "full",
      locale: "en",
      colorTheme: "light",
      autosize: true,
      isTransparent: false
    },
    props
  );
  createEffect8(() => {
    const widgetRoot = document.createElement("div");
    widgetRoot.classList.add("tradingview-widget-container__widget");
    container.appendChild(widgetRoot);
    const fullWidth = _props.autosize || _props.width === "full";
    container.style.width = fullWidth ? "100%" : `${_props.width}px`;
    widgetRoot.style.width = fullWidth ? "100%" : `${_props.width}px`;
    const fullHeight = _props.autosize || _props.height === "full";
    container.style.height = fullHeight ? "100%" : `${_props.height}px`;
    widgetRoot.style.height = fullHeight ? "100%" : `${_props.height}px`;
    const downloadScript = async () => {
      const [error] = await tryCatch8(
        loadScript8(
          "https://s3.tradingview.com/external-embedding/embed-widget-symbol-profile.js",
          {
            textContent: JSON.stringify({
              symbol: _props.symbol,
              width: fullWidth ? "100%" : _props.width,
              height: fullHeight ? "100%" : _props.height,
              locale: _props.locale,
              colorTheme: _props.colorTheme,
              isTransparent: _props.isTransparent
            })
          },
          widgetRoot
        )
      );
      if (error) _props.onError?.(error);
    };
    void downloadScript();
    onCleanup8(() => {
      widgetRoot.remove();
    });
  });
  return <div class="tradingview-widget-container" ref={container} />;
};

// src/symbol/FundamentalData.tsx
import { loadScript as loadScript9 } from "@dschz/load-script";
import { tryCatch as tryCatch9 } from "@dschz/try-catch";
import { createEffect as createEffect9, mergeProps as mergeProps9, onCleanup as onCleanup9 } from "solid-js";
var FundamentalData = (props) => {
  let container;
  const _props = mergeProps9(
    {
      width: "full",
      height: "full",
      locale: "en",
      colorTheme: "light",
      displayMode: "regular",
      autosize: true,
      isTransparent: false
    },
    props
  );
  createEffect9(() => {
    const widgetRoot = document.createElement("div");
    widgetRoot.classList.add("tradingview-widget-container__widget");
    container.appendChild(widgetRoot);
    const fullWidth = _props.autosize || _props.width === "full";
    container.style.width = fullWidth ? "100%" : `${_props.width}px`;
    widgetRoot.style.width = fullWidth ? "100%" : `${_props.width}px`;
    const fullHeight = _props.autosize || _props.height === "full";
    container.style.height = fullHeight ? "100%" : `${_props.height}px`;
    widgetRoot.style.height = fullHeight ? "100%" : `${_props.height}px`;
    const downloadScript = async () => {
      const [error] = await tryCatch9(
        loadScript9(
          "https://s3.tradingview.com/external-embedding/embed-widget-financials.js",
          {
            textContent: JSON.stringify({
              symbol: _props.symbol,
              width: fullWidth ? "100%" : _props.width,
              height: fullHeight ? "100%" : _props.height,
              locale: _props.locale,
              colorTheme: _props.colorTheme,
              displayMode: _props.displayMode,
              isTransparent: _props.isTransparent
            })
          },
          widgetRoot
        )
      );
      if (error) _props.onError?.(error);
    };
    void downloadScript();
    onCleanup9(() => {
      widgetRoot.remove();
    });
  });
  return <div class="tradingview-widget-container" ref={container} />;
};

// src/symbol/SymbolInfo.tsx
import { loadScript as loadScript10 } from "@dschz/load-script";
import { tryCatch as tryCatch10 } from "@dschz/try-catch";
import { createEffect as createEffect10, mergeProps as mergeProps10, onCleanup as onCleanup10 } from "solid-js";
var SymbolInfo = (props) => {
  let container;
  const _props = mergeProps10(
    {
      width: "full",
      locale: "en",
      colorTheme: "light",
      isTransparent: false
    },
    props
  );
  createEffect10(() => {
    const widgetRoot = document.createElement("div");
    widgetRoot.classList.add("tradingview-widget-container__widget");
    container.appendChild(widgetRoot);
    container.style.width = _props.width === "full" ? "100%" : `${_props.width}px`;
    widgetRoot.style.width = _props.width === "full" ? "100%" : `${_props.width}px`;
    const downloadScript = async () => {
      const [error] = await tryCatch10(
        loadScript10(
          "https://s3.tradingview.com/external-embedding/embed-widget-symbol-info.js",
          {
            textContent: JSON.stringify({
              symbol: _props.symbol,
              width: _props.width === "full" ? "100%" : _props.width,
              locale: _props.locale,
              colorTheme: _props.colorTheme,
              isTransparent: _props.isTransparent
            })
          },
          widgetRoot
        )
      );
      if (error) _props.onError?.(error);
    };
    void downloadScript();
    onCleanup10(() => {
      widgetRoot.remove();
    });
  });
  return <div class="tradingview-widget-container" ref={container} />;
};

// src/symbol/TechnicalAnalysis.tsx
import { loadScript as loadScript11 } from "@dschz/load-script";
import { tryCatch as tryCatch11 } from "@dschz/try-catch";
import { createEffect as createEffect11, mergeProps as mergeProps11, onCleanup as onCleanup11 } from "solid-js";
var TechnicalAnalysis = (props) => {
  let container;
  const _props = mergeProps11(
    {
      width: "full",
      height: "full",
      displayMode: "single",
      locale: "en",
      colorTheme: "light",
      interval: "5m",
      autosize: true,
      showIntervalTabs: false,
      isTransparent: false
    },
    props
  );
  createEffect11(() => {
    const widgetRoot = document.createElement("div");
    widgetRoot.classList.add("tradingview-widget-container__widget");
    container.appendChild(widgetRoot);
    const fullWidth = _props.autosize || _props.width === "full";
    container.style.width = fullWidth ? "100%" : `${_props.width}px`;
    widgetRoot.style.width = fullWidth ? "100%" : `${_props.width}px`;
    const fullHeight = _props.autosize || _props.height === "full";
    container.style.height = fullHeight ? "100%" : `${_props.height}px`;
    widgetRoot.style.height = fullHeight ? "100%" : `${_props.height}px`;
    const downloadScript = async () => {
      const [error] = await tryCatch11(
        loadScript11(
          "https://s3.tradingview.com/external-embedding/embed-widget-technical-analysis.js",
          {
            textContent: JSON.stringify({
              symbol: _props.symbol,
              width: fullWidth ? "100%" : _props.width,
              height: fullHeight ? "100%" : _props.height,
              interval: _props.interval,
              showIntervalTabs: _props.showIntervalTabs,
              displayMode: _props.displayMode,
              locale: _props.locale,
              colorTheme: _props.colorTheme,
              isTransparent: _props.isTransparent
            })
          },
          widgetRoot
        )
      );
      if (error) _props.onError?.(error);
    };
    void downloadScript();
    onCleanup11(() => {
      widgetRoot.remove();
    });
  });
  return <div class="tradingview-widget-container" ref={container} />;
};

// src/tickers/SingleTicker.tsx
import { loadScript as loadScript12 } from "@dschz/load-script";
import { tryCatch as tryCatch12 } from "@dschz/try-catch";
import { createEffect as createEffect12, mergeProps as mergeProps12, onCleanup as onCleanup12 } from "solid-js";
var SingleTicker = (props) => {
  let container;
  const _props = mergeProps12(
    {
      width: "full",
      locale: "en",
      colorTheme: "light",
      isTransparent: false
    },
    props
  );
  createEffect12(() => {
    const widgetRoot = document.createElement("div");
    widgetRoot.classList.add("tradingview-widget-container__widget");
    container.appendChild(widgetRoot);
    container.style.width = _props.width === "full" ? "100%" : `${_props.width}px`;
    widgetRoot.style.width = _props.width === "full" ? "100%" : `${_props.width}px`;
    const downloadScript = async () => {
      const [error] = await tryCatch12(
        loadScript12(
          "https://s3.tradingview.com/external-embedding/embed-widget-single-quote.js",
          {
            textContent: JSON.stringify({
              symbol: _props.symbol,
              width: _props.width === "full" ? "100%" : _props.width,
              locale: _props.locale,
              colorTheme: _props.colorTheme,
              isTransparent: _props.isTransparent
            })
          },
          widgetRoot
        )
      );
      if (error) _props.onError?.(error);
    };
    void downloadScript();
    onCleanup12(() => {
      widgetRoot.remove();
    });
  });
  return <div class="tradingview-widget-container" ref={container} />;
};
export {
  AdvancedChart,
  CompanyProfile,
  CryptoMarket,
  EconomicCalendar,
  FundamentalData,
  MiniChart,
  Screener,
  SingleTicker,
  SymbolInfo,
  SymbolOverview,
  TechnicalAnalysis,
  TopStories
};
