Skip to content

Commit 0bc8bda

Browse files
committed
fix(docs): dynamically import mathjs to avoid Cloudflare Workers deploy failure
1 parent 1d9bb45 commit 0bc8bda

1 file changed

Lines changed: 17 additions & 7 deletions

File tree

docs/src/examples/components/Spline/math-formula.svelte

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { defaultChartPadding, LineChart, Raster, Spline, Tooltip } from 'layerchart';
33
import { Field, MenuField, Switch, TextField } from 'svelte-ux';
44
import { format } from '@layerstack/utils';
5-
import { evaluate } from 'mathjs';
5+
import { browser } from '$app/environment';
66
import { scaleSequential } from 'd3-scale';
77
import {
88
interpolateRainbow,
@@ -37,6 +37,15 @@
3737
let selected = $state('x^2');
3838
let customFormula = $state('');
3939
let showRaster = $state(false);
40+
let evaluateFn: ((expr: string, scope?: object) => any) | null = $state(null);
41+
42+
$effect(() => {
43+
if (browser) {
44+
import('mathjs').then((m) => {
45+
evaluateFn = m.evaluate;
46+
});
47+
}
48+
});
4049
4150
const interpolators = [
4251
{ label: 'Viridis', value: 'viridis', fn: interpolateViridis },
@@ -58,28 +67,29 @@
5867
let interp = $derived(interpolators.find((i) => i.value === selectedInterp)!);
5968
6069
const formula = $derived(selected === 'custom' ? customFormula : selected);
61-
const { data, error } = $derived(computeGraph(formula));
70+
const { data, error } = $derived(computeGraph(formula, evaluateFn));
6271
6372
const rasterValue = $derived.by(() => {
6473
const f = formula;
65-
if (!f?.trim()) return (_x: number, _y: number) => 0;
74+
const eval_ = evaluateFn;
75+
if (!f?.trim() || !eval_) return (_x: number, _y: number) => 0;
6676
return (x: number, _y: number) => {
6777
try {
68-
const y = evaluate(f, { x });
78+
const y = eval_(f, { x });
6979
return isFinite(y) ? y : NaN;
7080
} catch {
7181
return NaN;
7282
}
7383
};
7484
});
7585
76-
function computeGraph(formula: string) {
77-
if (!formula?.trim()) return { data: [], error: null };
86+
function computeGraph(formula: string, eval_: typeof evaluateFn) {
87+
if (!formula?.trim() || !eval_) return { data: [], error: null };
7888
7989
try {
8090
const data = xs.flatMap((x) => {
8191
try {
82-
const y = evaluate(formula, { x });
92+
const y = eval_(formula, { x });
8393
return isFinite(y) && Math.abs(y) < 1e6 ? [{ x, y }] : [];
8494
} catch {
8595
return [];

0 commit comments

Comments
 (0)