フレームワークアダプター

React、Vue、Angular、Svelte、SolidJSからSixtyfold Chartsのラインおよび株価チャートを使用できます。

Sixtyfoldのフレームワークパッケージは同じLineChartおよびStockChartエンジンの周りにある薄いライフサイクルアダプターです。これらはレンダリングロジックを重複させたり、データを再形成したり、ランタイムテレメトリを追加したり、すべてのチャートをアプリケーションに組み込んだりしません。

使用するエンジンとアダプターを1つインストールしてください。/lineまたは/stockのエントリポイントのみをインポートします。

pnpm add @sixtyfold/react@1 @sixtyfold/line@1
import { SixtyfoldLineChart } from "@sixtyfold/react/line";

react を vue、angular、svelte、または solid に置き換えてください。株価チャートには @sixtyfold/stock をインストールし、/stock をインポートしてください。チャートエンジンはアダプターのオプショナルなピア依存関係であるため、ラインチャートをインストールしても株価チャートはインストールされません。

共有アダプター契約

すべてのアダプターはコンポーネントのマウント後にチャートを作成し、initialize() を待機し、リアクティブ入力を適用し、アンマウント時に destroy() を呼び出します。これによりチャートWorkerが終了し、オブザーバー、リスナー、大きなバッファ参照が解放されます。SSR中はコンポーネントはキャンバスホストのみを出力するため、サーバーでチャートピクセルを描画する必要がある場合は @sixtyfold/ssr を使用してください。

プロップ/入力ライン種別株価種別挙動
optionsLineChartOptionsStockChartOptionsコンストラクション時のスナップショット。アダプターを差し替えるには再マウントしてください。ライブな視覚変更には appearance を使用してください。
dataTimeSeriesData | MultiSeriesDataOHLCVData単発で転送可能なバルクデータ。オブジェクト識別によってリアクティブです。常に新しいオブジェクトで新しいバッファを割り当ててください。
dataUpdateOptionsLineDataUpdateOptions—アニメーションされたラインデータ置換のためのリアクティブな設定。preservePreviousFrame を含みます;これらだけを変更してもインストール済みデータは再転送されません。
appearanceDeepPartial<LineAppearanceOptions>DeepPartial<StockAppearanceOptions>チャートを再作成したりデータを置換したりせずに適用される深い視覚パッチ。
viewportPartial<Viewport>Partial<Viewport>リアクティブX範囲。チャートの X 単位に xMin、xMax、または両方を指定してください。
viewportAnimatedbooleanboolean対応するビューポート更新のアニメーションを上書きします。未定義のままにするとチャートのオプションを継承します。
statsIntervalMsnumbernumberミリ秒単位の最小テレメトリコールバック間隔;リスナーがない場合テレメトリは無効のままです。
readiness コールバック/イベントLineChartStockChart初期化と最初の成功したデータ、外観、およびビューポートプロップのバッチ後にチャートインスタンスごとに1回発火します;ペイントされたフレームを待ちません。
error callback/eventunknownunknownは構築および反応性のプロップ取り付けエラー、レンダラーの初期化/実行時の失敗、オーバーレイの解決または配信失敗を報告します。
stats callback/eventLineChartStatsStockChartStatsはstatsIntervalMsでレンダラーとデータのテレメトリを報告します。
series-visibility callback/eventSeriesVisibilityChangeEvent—は初期化、API呼び出し、対話型凡例からの可視性変化を報告します。

各アダプターは、準備完了、構築およびプロップ取り付けエラー、レンダラーおよびオーバーレイのエラー、加えてレンダー統計を報告します。ラインアダプターはSeriesVisibilityChangeEventも報告します。各フレームワークは慣例的なrefまたはコンポーネントAPIを通じて基礎となるLineChartまたはStockChartインスタンスを公開するため、まれな命令的操作も引き続き利用可能です。

Readiness は初期 props が受理されたことを意味し、最初のキャンバスフレームが描画されたことを意味するものではありません。ready コールバック内で行われた命令的変更は、保留された初期 prop バッチによって上書きされません。

チャートの障害を処理する

アダプターのエラーフックは unknown を受け入れます。なぜなら JavaScript の構築エラーは特定のクラスを使用することを要求しないためです。Sixtyfold レンダラーから発生する故障は ChartRendererError のインスタンスです。オーバーレイ解決またはレンダラー配信の失敗は ChartOverlayError のインスタンスです。構造化されたフィールドを読む前に値の型を絞ってください:

import {
  ChartOverlayError,
  ChartRendererError,
} from "@sixtyfold/line";

export function reportChartError(error: unknown) {
  if (error instanceof ChartRendererError) {
    console.error(error.phase, error.message);
    return;
  }
  if (error instanceof ChartOverlayError) {
    console.error("Overlay sources failed:", error.sources);
    return;
  }
  console.error(error);
}

ストック専用アプリケーションでは @sixtyfold/stock から同じインポートを使用してください。error.phase は "initialization" または "runtime" のいずれかです。レンダラーの障害は当該チャートインスタンスを破壊します;アプリケーションが回復を選ぶ場合はアダプターを再マウントしてください。オーバーレイの障害は致命的ではありません:正常に取得された項目はそのままインストールされたままです;要求されたすべての項目が失敗した場合は、以前に描画されたオーバーレイが残ります。

拒否されたリアクティブプロップの設定はエラーを報告し、初期の ready 通知を保留します。再マウントせずに再試行するには訂正済みのプロップを渡してください。後のプロップが失敗した場合でも、既に正常に設定済みのデータは再度転送されません。この回復は、再マウントを必要とする回復不能なレンダラーエラーには適用されません。

バルクの型付き配列は Worker に転送されます。各データオブジェクトをワンショットとして扱ってください:インプレースで変更せず、各更新で新しいバッファを持つ新しいオブジェクトを割り当ててください。これにより数百万点規模のデータセットに対するゼロコピー経路が維持されます。

React

import { useMemo, useRef } from "react";
import {
  SixtyfoldLineChart,
  type LineChartHandle,
} from "@sixtyfold/react/line";

export function Signals() {
  const chartRef = useRef<LineChartHandle>(null);
  const data = useMemo(() => ({
    x: new Float64Array([0, 1, 2, 3]),
    y: new Float64Array([3, 7, 4, 9]),
    length: 4,
  }), []);

  return (
    <SixtyfoldLineChart
      ref={chartRef}
      data={data}
      aria-label="Signal history"
      onError={console.error}
    />
  );
}

コンポーネントは通常の canvas 属性を受け入れます。ref は ref.current?.chart を公開します。初期構築はマイクロタスクで遅延されるため、React Strict Mode の開発ライフサイクル検査が初期データを二重に転送することはありません。

React 19.2+ Activity はレンダラーを再作成したりデータを再転送したりせずにチャートを隠したり再表示したりできます。プロップの設定および準備完了/エラー通知は再表示まで待機し、統計とシリーズ可視性のコールバックは非表示中は切断されます。保持されたWorkerとバッファはコンポーネントが実際にアンマウントされたとき(非表示状態でのアンマウントを含む)に解放されます。

Reactは非表示中に転送されたrefを切断します。以前にキャプチャされたハンドルは再表示されるまでnullを.chartから返します。React 18およびそれ以前のReact 19リリースは、再サスペンドされたSuspense境界によって非表示になったチャートを含め、パッシブクリーンアップを通じてアンマウント時にチャートを破棄します。

React専用サーフェス型説明
refRef<LineChartHandle | StockChartHandle>転送されたハンドルで、そのchartフィールドはマウントされた命令的インスタンスまたはnullを含みます。
ネイティブなキャンバス属性CanvasHTMLAttributes<HTMLCanvasElement>は children を除いてキャンバスに渡されます。これらは aria-label、クラス名、インラインスタイル、テスト、およびポインタメタデータに使用してください。
onReady(chart) => voidは初期化後および最初の成功したリアクティブプロップバッチの後に一度だけ呼び出されます。
onError(error: unknown) => voidは構築時、リアクティブプロップの設定時、レンダラーの初期化/ランタイム中、またはオーバーレイの解決/配信失敗時に呼び出されます。
onStats(stats) => voidはレンダラーのテレメトリを有効にし受信します。
onSeriesVisibilityChange(event) => void線のみの系列可視性コールバック。

Vue

<script setup lang="ts">
import { shallowRef } from "vue";
import { SixtyfoldLineChart } from "@sixtyfold/vue/line";

const data = shallowRef({
  x: new Float64Array([0, 1, 2, 3]),
  y: new Float64Array([3, 7, 4, 9]),
  length: 4,
});
</script>

<template>
  <SixtyfoldLineChart
    :data="data"
    aria-label="Signal history"
    @error="console.error"
  />
</template>

大量データには Vue のディーププロキシではなく shallowRef または markRaw を使用してください。コンポーネントは ready、error、stats を発行します;折れ線チャートは seriesVisibilityChange も発行します。テンプレート ref はその浅い chart ref を公開します。

統計収集はリアクティブリスナーに従います。単独の @stats.once リスナーは最初のイベント後に収集を無効にします;通常の @stats リスナーは有効のままにします。消費された .once リスナーはそのコンポーネントのライフタイム中、消費済みのままです。

Vue サーフェス種別説明
共通 propsフレームワークの prop インデックスを参照Vue の props は共通契約と同じ名前と型を使用します。
ready イベントLineChart | StockChart初期化後および最初の正常なリアクティブ prop バッチの後にチャートを送出します。
error イベントunknown構築、リアクティブ prop の設定、レンダラーの初期化/実行時、またはオーバーレイの解決/配信失敗を送出します。
stats イベントLineChartStats | StockChartStatsテレメトリを有効化し発行します。
seriesVisibilityChange イベントSeriesVisibilityChangeEventラインのみ可視性のイベント。
継承属性ネイティブなCanvas属性aria-label、class、style のような未認識の属性はキャンバスへ転送されます。
テンプレートref chartShallowRef<LineChart | StockChart | null>マウントされた命令型チャートを深いプロキシを介さずに公開します。

Angular

Angular 20〜22 パッケージは、スタンドアロンコンポーネントと Angular Package Format の二次エントリポイントを使用します。

import { Component } from "@angular/core";
import { SixtyfoldLineChartComponent } from "@sixtyfold/angular/line";

@Component({
  standalone: true,
  imports: [SixtyfoldLineChartComponent],
  template: `
    <sixtyfold-line-chart
      [data]="data"
      ariaLabel="Signal history"
      (chartError)="reportError($event)"
    />
  `,
})
export class Signals {
  data = {
    x: new Float64Array([0, 1, 2, 3]),
    y: new Float64Array([3, 7, 4, 9]),
    length: 4,
  };

  reportError(error: unknown) {
    console.error(error);
  }
}

入力は共有テーブルとアクセシビリティに重点を置いたフィールドおよび canvasAttributes に従います。出力は chartReady、chartError、stats で、ラインコンポーネントは seriesVisibilityChange も発行します。コンポーネント参照はその公開 chart を公開します。

統計収集は、アクティブな購読者が stats 出力を受信できる間のみ有効です。最後の購読者が購読解除した時点で(take(1) を含む)停止し、出力が完了、エラー、またはクローズされた場合にも停止します。

Angular のアプリケーションビルダーはパッケージ管理下の Vite Worker URL を変換しません。アプリケーションで使用するエンジンをビルドターゲットの assets 配列に angular.json に追加してください:

[
  { "glob": "**/*", "input": "node_modules/@sixtyfold/line/dist/assets", "output": "assets" },
  { "glob": "**/*", "input": "node_modules/@sixtyfold/stock/dist/assets", "output": "assets" }
]

チャートの構築は isPlatformBrowser で保護されているため、Angular の SSR はブラウザグローバルを変更しません。

Angular 入力型説明
optionsLineChartOptions | StockChartOptions構築時のスナップショット。
dataLineData | OHLCVDataワンショットで転送可能なリアクティブデータセット。
dataUpdateOptionsLineDataUpdateOptions線のみの置換アニメーションオプション。
appearanceDeepPartial<LineAppearanceOptions | StockAppearanceOptions>リアクティブなビジュアルパッチ。
viewportPartial<Viewport>リアクティブなXドメインパッチ。
viewportAnimatedboolean | undefinedビューポート入力のアニメーション上書き。
statsIntervalMsnumber | undefinedstats に購読者がいる場合の最小テレメトリ間隔。
canvasClassstring内部キャンバスに適用されるクラス。
ariaLabelstringアクセシブルなキャンバス名。
ariaDescribedBystringチャートを説明する隣接するテキストまたは表の代替のID。
canvasRolestring明示的なcanvasの役割;通常はチャートにapplicationまたはimgを選ばせます。
canvasTabIndexnumber明示的なタブ順序;閲覧専用のチャートはデフォルトで省略されます。
canvasAttributesRecord<string, string | number | boolean | null | undefined>テストフックやメタデータなどの追加のcanvas属性。Class、style、size、role、タブ順序、およびフォーカスされたアクセシビリティ入力は別途管理され続けます。
Angular 出力ペイロード説明
chartReadyLineChart | StockChart初期化と最初の成功したリアクティブプロップバッチの後にチャートを発行します。
chartErrorunknownコンストラクション、リアクティブプロップの設定、レンダラーの初期化/実行時、またはオーバーレイの解決/配信失敗を発行します。
statsLineChartStats | StockChartStatsレンダラーのテレメトリを有効にして発行します。
seriesVisibilityChangeSeriesVisibilityChangeEvent線のみの可視化出力。
public chartLineChart | StockChart | nullコンポーネント参照で公開される命令的インスタンス。

Svelte

<script lang="ts">
  import LineChart from "@sixtyfold/svelte/line";

  const data = {
    x: new Float64Array([0, 1, 2, 3]),
    y: new Float64Array([3, 7, 4, 9]),
    length: 4,
  };
</script>

<LineChart
  {data}
  ariaLabel="Signal history"
  onError={console.error}
/>

chart は命令的アクセスのためにバインド可能です。追加のSvelteプロップは線グラフ用に onReady、onError、onStats、onSeriesVisibilityChange、および canvasClass、canvasStyle、ariaLabel です。

Svelte プロップ/バインディング型説明
共有プロップフレームワークプロップ索引を参照共有の options、data、appearance、ビューポート、テレメトリ、およびコールバックプロップを使用します。
onReady(chart) => void初期化後および最初の成功したリアクティブプロップバッチの後にチャートを受け取ります。
onError(error: unknown) => void構築、リアクティブプロップの設定、レンダラーの初期化/実行時、またはオーバーレイの解決/配信の失敗を報告します。
onStats(stats) => voidテレメトリを有効化し受信します。
onSeriesVisibilityChange(event) => void線のみの可視性コールバック。
canvasClassstringcanvas に適用されるクラス。
canvasStylestringcanvas に適用される CSS 宣言テキスト。
ariaLabelstringアクセシブルな canvas 名。
bindable chartLineChart | StockChart | nullマウントされた命令型チャート;クリーンアップ時に null にリセットされます。

SolidJS

import { SixtyfoldLineChart } from "@sixtyfold/solid/line";

const data = {
  x: new Float64Array([0, 1, 2, 3]),
  y: new Float64Array([3, 7, 4, 9]),
  length: 4,
};

export function Signals() {
  return (
    <SixtyfoldLineChart
      data={data}
      canvasProps={{ "aria-label": "Signal history" }}
      chartRef={(chart) => console.log(chart)}
      onError={console.error}
    />
  );
}

chartRef はマウントされたチャートを受け取り、後にクリーンアップ中に null されます。canvasProps はネイティブの canvas 属性を渡します。他のすべての props は共有契約に従います。

SolidJS専用サーフェス型説明
chartRef(chart | null) => voidマウントされたインペラティブなチャートを受け取り、クリーンアップ時に後でnullします。
canvasPropsJSX.CanvasHTMLAttributes<HTMLCanvasElement>ネイティブのcanvas属性、アクセシビリティメタデータ、class、style、およびテストフック。
onReady(chart) => void初期化および最初の成功したリアクティブなpropsバッチ後に呼び出されます。
onError(error: unknown) => void構築呼び出し、リアクティブプロパティの設定、レンダラーの初期化/ランタイム、またはオーバーレイの解決/配信の失敗のために呼び出されます。
onStats(stats) => voidテレメトリを有効化し受信します。
onSeriesVisibilityChange(event) => void線のみの可視性コールバック。

完全な例

公開リポジトリには、サポートされている各フレームワーク向けの最小限のレスポンシブアプリケーションが含まれています。各アプリケーションは、⟦SF_packages⟧、データの形状、チャートのセットアップ、および両方のラインチャートとストックチャートを再現するために必要なクリーンアップを示します。