@forgecharts/sdk 1.5.78 → 1.5.80

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.
@@ -1 +1 @@
1
- {"version":3,"file":"packageFeatures.d.ts","sourceRoot":"","sources":["../../src/licensing/packageFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqCtE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAGlD,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,MAAM,CAE1D,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,EAC/C,UAAU,EAAE,MAAM,GACjB,OAAO,CAIT"}
1
+ {"version":3,"file":"packageFeatures.d.ts","sourceRoot":"","sources":["../../src/licensing/packageFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwCtE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAGlD,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,MAAM,CAE1D,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,EAC/C,UAAU,EAAE,MAAM,GACjB,OAAO,CAIT"}
@@ -22,6 +22,8 @@ export type ChartCanvasHandle = {
22
22
  loadLayoutSnapshot: (layout: ChartLayout) => void;
23
23
  /** Adds an indicator to the live chart and returns its id. */
24
24
  addIndicator: (config: IndicatorConfig) => string | null;
25
+ /** Switch the primary series' render style (gated by candle_types). */
26
+ setSeriesType: (type: import('@forgecharts/types').SeriesType) => void;
25
27
  /** Removes an indicator from the live chart by id. */
26
28
  removeIndicator: (id: string) => void;
27
29
  /** Moves an indicator to the price overlay layer. */
@@ -121,6 +123,8 @@ export type ChartCanvasProps = {
121
123
  * tool back without reaching for the imperative handle.
122
124
  */
123
125
  initialPointerTool?: PointerToolType;
126
+ /** Series render style applied once after init (host-persisted preference). */
127
+ initialSeriesType?: import('@forgecharts/types').SeriesType;
124
128
  /**
125
129
  * Initial magnet snap mode. Defaults to `'snap-x'` ("Snap to bar").
126
130
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ChartCanvas.d.ts","sourceRoot":"","sources":["../../../src/react/canvas/ChartCanvas.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChartCanvas.d.ts","sourceRoot":"","sources":["../../../src/react/canvas/ChartCanvas.tsx"],"names":[],"mappings":"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"}
@@ -11124,6 +11124,9 @@ var KIT_FEATURE_TO_CAPABILITY = {
11124
11124
  extended_drawing_tools: "extendedDrawings",
11125
11125
  indicators: "indicators",
11126
11126
  multi_pane: "multiPane",
11127
+ // Renamed candle_types in migration 050 (it gates the series-style picker);
11128
+ // the legacy key stays mapped so an un-migrated catalog keeps working.
11129
+ candle_types: "chartTypes",
11127
11130
  chart_types: "chartTypes",
11128
11131
  bar_replay: "barReplay",
11129
11132
  custom_timeframes: "customTimeframes",
@@ -11580,6 +11583,7 @@ var ChartRuntimeResolver = class _ChartRuntimeResolver {
11580
11583
  }
11581
11584
  };
11582
11585
  var resolver = () => ChartRuntimeResolver.getInstance();
11586
+ var canUseChartTypes = () => resolver().canUseChartTypes();
11583
11587
  var canUseExtendedDrawings = () => resolver().canUseExtendedDrawings();
11584
11588
  var canUseMultiPane = () => resolver().canUseMultiPane();
11585
11589
  var canUseDraggableOrders = () => resolver().canUseDraggableOrders();
@@ -12210,6 +12214,30 @@ var TChart = class _TChart {
12210
12214
  this._series.applyOptions(options);
12211
12215
  this._core.markDirty();
12212
12216
  }
12217
+ /**
12218
+ * Switch the primary series' render style (candlestick, heikinashi, line,
12219
+ * area, histogram). The renderers have always supported every style — the
12220
+ * draw pass branches on the series' type option — this is the missing
12221
+ * public switch, gated by the candle_types package feature (capability
12222
+ * `chartTypes`). Ungated attempts warn and keep the current style rather
12223
+ * than throwing: the toolbar hides the picker when ungated, so a call
12224
+ * landing here is a host integration slip, not a user action.
12225
+ */
12226
+ setSeriesType(type) {
12227
+ this._assertAlive();
12228
+ if (!canUseChartTypes()) {
12229
+ console.warn("[ForgeCharts] Series-style switching (candle_types) is not enabled on the active plan.");
12230
+ return;
12231
+ }
12232
+ this._series.applyOptions({ type });
12233
+ this._core.markDirty();
12234
+ this._bus.emit("seriesTypeChanged", { type });
12235
+ }
12236
+ /** The primary series' current render style. */
12237
+ getSeriesType() {
12238
+ this._assertAlive();
12239
+ return this._series.options().type;
12240
+ }
12213
12241
  /** Scrolls the viewport so the latest bar is visible at the right edge. */
12214
12242
  scrollToEnd() {
12215
12243
  this._assertAlive();
@@ -18108,7 +18136,7 @@ var DEMONSTRATION_STROKE = "rgba(255, 200, 50, 0.7)";
18108
18136
  var DEMONSTRATION_COLOR = "var(--crosshair-overlay, rgba(255,255,255,0.75))";
18109
18137
 
18110
18138
  // src/version.ts
18111
- var FORGECHARTS_VERSION = "1.5.78" ;
18139
+ var FORGECHARTS_VERSION = "1.5.80" ;
18112
18140
  function applyRuntimeConfig(caps, config) {
18113
18141
  if (!config) return caps;
18114
18142
  const orderEntry = config.enableOrderEntry === false ? false : caps.orderEntry;
@@ -22952,6 +22980,7 @@ var ChartCanvas = forwardRef(
22952
22980
  initialActiveTool,
22953
22981
  onPointerToolChange,
22954
22982
  initialPointerTool,
22983
+ initialSeriesType,
22955
22984
  initialMagnetMode,
22956
22985
  onMagnetModeChange,
22957
22986
  drawingFavorites: drawingFavoritesProp,
@@ -23070,6 +23099,7 @@ var ChartCanvas = forwardRef(
23070
23099
  chartRef.current?.loadLayout(layout);
23071
23100
  },
23072
23101
  addIndicator: (config) => chartRef.current?.addIndicator(config) ?? null,
23102
+ setSeriesType: (type) => chartRef.current?.setSeriesType(type),
23073
23103
  removeIndicator: (id) => chartRef.current?.removeIndicator(id),
23074
23104
  moveIndicatorToOverlay: (id) => chartRef.current?.moveIndicatorToOverlay(id),
23075
23105
  moveIndicatorToPane: (id, targetPaneId) => chartRef.current?.moveIndicatorToPane(id, targetPaneId),
@@ -24089,7 +24119,12 @@ var ChartCanvas = forwardRef(
24089
24119
  handleToolSelectRef.current = handleToolSelect;
24090
24120
  selectPointerToolRef.current = handleToolSelect;
24091
24121
  const initialPointerAppliedRef = useRef(false);
24122
+ const initialSeriesAppliedRef = useRef(false);
24092
24123
  useEffect(() => {
24124
+ if (!initialSeriesAppliedRef.current && initialSeriesType && chartRef.current) {
24125
+ initialSeriesAppliedRef.current = true;
24126
+ chartRef.current.setSeriesType(initialSeriesType);
24127
+ }
24093
24128
  if (initialPointerAppliedRef.current || !initialPointerTool) return;
24094
24129
  initialPointerAppliedRef.current = true;
24095
24130
  selectPointerToolRef.current(initialPointerTool);
@@ -26230,6 +26265,28 @@ function RollRuleDropdown({
26230
26265
  ))
26231
26266
  ] });
26232
26267
  }
26268
+ var SERIES_STYLES = [
26269
+ { id: "candlestick", label: "Candles", icon: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 16 16", width: "13", height: "13", fill: "currentColor", children: [
26270
+ /* @__PURE__ */ jsx("rect", { x: "3", y: "5", width: "3", height: "6", rx: "0.5" }),
26271
+ /* @__PURE__ */ jsx("line", { x1: "4.5", y1: "2", x2: "4.5", y2: "14", stroke: "currentColor", strokeWidth: "1" }),
26272
+ /* @__PURE__ */ jsx("rect", { x: "10", y: "3", width: "3", height: "7", rx: "0.5" }),
26273
+ /* @__PURE__ */ jsx("line", { x1: "11.5", y1: "1", x2: "11.5", y2: "13", stroke: "currentColor", strokeWidth: "1" })
26274
+ ] }) },
26275
+ { id: "heikinashi", label: "Heikin Ashi", icon: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 16 16", width: "13", height: "13", fill: "currentColor", children: [
26276
+ /* @__PURE__ */ jsx("rect", { x: "2.5", y: "6", width: "3.4", height: "6", rx: "1.6" }),
26277
+ /* @__PURE__ */ jsx("rect", { x: "9.5", y: "3", width: "3.4", height: "6", rx: "1.6" })
26278
+ ] }) },
26279
+ { id: "line", label: "Line", icon: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", width: "13", height: "13", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", children: /* @__PURE__ */ jsx("polyline", { points: "2,12 6,7 10,10 14,4" }) }) },
26280
+ { id: "area", label: "Area", icon: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 16 16", width: "13", height: "13", children: [
26281
+ /* @__PURE__ */ jsx("polyline", { points: "2,12 6,7 10,10 14,4", fill: "none", stroke: "currentColor", strokeWidth: "1.4" }),
26282
+ /* @__PURE__ */ jsx("polygon", { points: "2,12 6,7 10,10 14,4 14,14 2,14", fill: "currentColor", opacity: "0.35" })
26283
+ ] }) },
26284
+ { id: "histogram", label: "Histogram", icon: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 16 16", width: "13", height: "13", fill: "currentColor", children: [
26285
+ /* @__PURE__ */ jsx("rect", { x: "2", y: "9", width: "2.6", height: "5" }),
26286
+ /* @__PURE__ */ jsx("rect", { x: "6.5", y: "5", width: "2.6", height: "9" }),
26287
+ /* @__PURE__ */ jsx("rect", { x: "11", y: "7", width: "2.6", height: "7" })
26288
+ ] }) }
26289
+ ];
26233
26290
  function TopToolbar({
26234
26291
  symbol,
26235
26292
  timeframe,
@@ -26241,6 +26298,8 @@ function TopToolbar({
26241
26298
  onAddCustomTimeframe,
26242
26299
  onRemoveCustomTimeframe,
26243
26300
  onFavoritesChange,
26301
+ seriesType,
26302
+ onSeriesTypeChange,
26244
26303
  onAddIndicator,
26245
26304
  maxIndicators,
26246
26305
  indicatorsOpen,
@@ -26281,6 +26340,16 @@ function TopToolbar({
26281
26340
  showMultiChartLayout
26282
26341
  }) {
26283
26342
  const [tfOpen, setTfOpen] = useState(false);
26343
+ const [styleOpen, setStyleOpen] = useState(false);
26344
+ const styleRef = useRef(null);
26345
+ useEffect(() => {
26346
+ if (!styleOpen) return;
26347
+ const handler = (e) => {
26348
+ if (styleRef.current && !styleRef.current.contains(e.target)) setStyleOpen(false);
26349
+ };
26350
+ document.addEventListener("mousedown", handler);
26351
+ return () => document.removeEventListener("mousedown", handler);
26352
+ }, [styleOpen]);
26284
26353
  const [symOpen, setSymOpen] = useState(false);
26285
26354
  const [ssOpen, setSsOpen] = useState(false);
26286
26355
  const [rollOpen, setRollOpen] = useState(false);
@@ -26416,6 +26485,39 @@ function TopToolbar({
26416
26485
  }
26417
26486
  )
26418
26487
  ] }),
26488
+ seriesType !== void 0 && onSeriesTypeChange !== void 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
26489
+ /* @__PURE__ */ jsx("div", { className: "toolbar-sep" }),
26490
+ /* @__PURE__ */ jsxs("div", { style: { position: "relative" }, ref: styleRef, children: [
26491
+ /* @__PURE__ */ jsxs(
26492
+ "button",
26493
+ {
26494
+ className: `ind-trigger${styleOpen ? " active" : ""}`,
26495
+ onClick: () => setStyleOpen((o) => !o),
26496
+ title: "Chart style",
26497
+ children: [
26498
+ (SERIES_STYLES.find((s) => s.id === seriesType) ?? SERIES_STYLES[0]).icon,
26499
+ (SERIES_STYLES.find((s) => s.id === seriesType) ?? SERIES_STYLES[0]).label
26500
+ ]
26501
+ }
26502
+ ),
26503
+ styleOpen && /* @__PURE__ */ jsx("div", { className: "tf-dropdown", style: { minWidth: 150 }, children: SERIES_STYLES.map((style) => /* @__PURE__ */ jsx(
26504
+ "button",
26505
+ {
26506
+ className: "tf-dropdown-row",
26507
+ style: style.id === seriesType ? { fontWeight: 600 } : void 0,
26508
+ onClick: () => {
26509
+ onSeriesTypeChange(style.id);
26510
+ setStyleOpen(false);
26511
+ },
26512
+ children: /* @__PURE__ */ jsxs("span", { style: { display: "inline-flex", alignItems: "center", gap: 8 }, children: [
26513
+ style.icon,
26514
+ style.label
26515
+ ] })
26516
+ },
26517
+ style.id
26518
+ )) })
26519
+ ] })
26520
+ ] }),
26419
26521
  /* @__PURE__ */ jsx("div", { className: "toolbar-sep" }),
26420
26522
  showIndicators !== false && /* @__PURE__ */ jsxs(Fragment, { children: [
26421
26523
  /* @__PURE__ */ jsxs(
@@ -31281,6 +31383,9 @@ function ChartWorkspace({
31281
31383
  onRollRuleChange,
31282
31384
  quotesWsUrl,
31283
31385
  getQuotesAuthToken,
31386
+ seriesType,
31387
+ onSeriesTypeChange,
31388
+ showSeriesTypes,
31284
31389
  extraTfGroups,
31285
31390
  // RightToolbar
31286
31391
  watchlistOpen,
@@ -31390,6 +31495,7 @@ function ChartWorkspace({
31390
31495
  const effShowDataExport = gate(showDataExport, capabilities.dataExport);
31391
31496
  const effShowMultiChartLayout = gate(showMultiChartLayout, capabilities.multiChartLayout);
31392
31497
  const effShowMultipleTabs = gate(showMultipleTabs, capabilities.multipleWorkspaces);
31498
+ const effShowSeriesTypes = gate(showSeriesTypes, capabilities.chartTypes) && onSeriesTypeChange !== void 0;
31393
31499
  const tabItems = tabs.map((t) => ({
31394
31500
  id: t.id,
31395
31501
  label: t.label,
@@ -31467,6 +31573,7 @@ function ChartWorkspace({
31467
31573
  favorites: favoriteTfs,
31468
31574
  onSymbolChange,
31469
31575
  onTimeframeChange,
31576
+ ...effShowSeriesTypes ? { seriesType: seriesType ?? "candlestick", onSeriesTypeChange } : {},
31470
31577
  onAddCustomTimeframe,
31471
31578
  onRemoveCustomTimeframe,
31472
31579
  onFavoritesChange: onFavoriteTfsChange,