svelteplot 0.12.0-pr-532.3 → 0.12.0-pr-532.4

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.
@@ -295,28 +295,45 @@
295
295
  */
296
296
  const extent = $derived.by(() => {
297
297
  if (!data?.length) return null;
298
- let xMin: number | Date = Infinity,
299
- xMax: number | Date = -Infinity,
300
- yMin: number | Date = Infinity,
301
- yMax: number | Date = -Infinity;
298
+ let xMin = Infinity,
299
+ xMax = -Infinity,
300
+ yMin = Infinity,
301
+ yMax = -Infinity;
302
+ let xUsesDate = false,
303
+ yUsesDate = false;
302
304
  for (const d of data as any[]) {
303
305
  const xv = resolveAcc(xAcc, d);
304
306
  const yv = resolveAcc(yAcc, d);
305
- if ((typeof xv === 'number' && isFinite(xv)) || xv instanceof Date) {
307
+ if (xv instanceof Date) {
308
+ xUsesDate = true;
309
+ const ms = xv.getTime();
310
+ if (isFinite(ms)) {
311
+ if (ms < xMin) xMin = ms;
312
+ if (ms > xMax) xMax = ms;
313
+ }
314
+ } else if (typeof xv === 'number' && isFinite(xv)) {
306
315
  if (xv < xMin) xMin = xv;
307
316
  if (xv > xMax) xMax = xv;
308
317
  }
309
- if ((typeof yv === 'number' && isFinite(yv)) || yv instanceof Date) {
318
+ if (yv instanceof Date) {
319
+ yUsesDate = true;
320
+ const ms = yv.getTime();
321
+ if (isFinite(ms)) {
322
+ if (ms < yMin) yMin = ms;
323
+ if (ms > yMax) yMax = ms;
324
+ }
325
+ } else if (typeof yv === 'number' && isFinite(yv)) {
310
326
  if (yv < yMin) yMin = yv;
311
327
  if (yv > yMax) yMax = yv;
312
328
  }
313
329
  }
314
- return (Number.isFinite(xMin as number) || xMin instanceof Date) &&
315
- (Number.isFinite(xMax as number) || xMax instanceof Date) &&
316
- (Number.isFinite(yMin as number) || yMin instanceof Date) &&
317
- (Number.isFinite(yMax as number) || yMax instanceof Date)
318
- ? { x1: xMin, x2: xMax, y1: yMin, y2: yMax }
319
- : null;
330
+ if (!isFinite(xMin) || !isFinite(xMax) || !isFinite(yMin) || !isFinite(yMax)) return null;
331
+ return {
332
+ x1: xUsesDate ? new Date(xMin) : xMin,
333
+ x2: xUsesDate ? new Date(xMax) : xMax,
334
+ y1: yUsesDate ? new Date(yMin) : yMin,
335
+ y2: yUsesDate ? new Date(yMax) : yMax
336
+ };
320
337
  });
321
338
 
322
339
  /**
@@ -334,7 +351,7 @@
334
351
  const markData = $derived.by((): DataRecord[] => {
335
352
  const ext = extent;
336
353
  const records: any[] = [];
337
-
354
+ console.log({ extent });
338
355
  // Bootstrap extent record(s) so x/y scales are available for density
339
356
  // computation on the first render pass. When faceted, emit one record
340
357
  // per unique (fxVal, fyVal) combination so no record carries an
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svelteplot",
3
- "version": "0.12.0-pr-532.3",
3
+ "version": "0.12.0-pr-532.4",
4
4
  "description": "A Svelte-native data visualization framework based on the layered grammar of graphics principles.",
5
5
  "keywords": [
6
6
  "svelte",