@sentropic/dataviz-svelte 0.2.1 → 0.3.0

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.
package/dist/index.d.ts CHANGED
@@ -34,4 +34,6 @@ export { default as ValueSlicer } from './lib/ValueSlicer.svelte';
34
34
  export type { ValueSlicerProps } from './lib/ValueSlicer.svelte';
35
35
  export { default as ExportMenu, rowsToCsv } from './lib/ExportMenu.svelte';
36
36
  export type { ExportMenuProps } from './lib/ExportMenu.svelte';
37
+ export { default as DateRangeFilter, dateRangeToSpec } from './lib/DateRangeFilter.svelte';
38
+ export type { DateRangeFilterProps } from './lib/DateRangeFilter.svelte';
37
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAChF,YAAY,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AACtF,YAAY,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC3E,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAChF,YAAY,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AACtF,YAAY,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC3E,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC3F,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC"}
package/dist/index.js CHANGED
@@ -23,3 +23,4 @@ export { default as DrillBreadcrumb } from './lib/DrillBreadcrumb.svelte';
23
23
  export { default as TopNFilter } from './lib/TopNFilter.svelte';
24
24
  export { default as ValueSlicer } from './lib/ValueSlicer.svelte';
25
25
  export { default as ExportMenu, rowsToCsv } from './lib/ExportMenu.svelte';
26
+ export { default as DateRangeFilter, dateRangeToSpec } from './lib/DateRangeFilter.svelte';
@@ -0,0 +1,39 @@
1
+ <script lang="ts" module>
2
+ import type { DashboardStore, FilterSpec } from '@sentropic/dataviz-core';
3
+
4
+ export type DateRangeFilterProps = {
5
+ /** The dashboard store to bind to. */
6
+ store: DashboardStore;
7
+ /** Date dimension to filter (its cells must be epoch-millisecond numbers). */
8
+ dimension: string;
9
+ label?: string;
10
+ class?: string;
11
+ };
12
+
13
+ /**
14
+ * Pure: a DatePicker `{ start, end }` range → a core `range` {@link FilterSpec}
15
+ * in epoch milliseconds (bounds optional), or `null` when the range is empty.
16
+ */
17
+ export function dateRangeToSpec(range: { start: Date | null; end: Date | null }): FilterSpec | null {
18
+ const min = range.start ? range.start.getTime() : undefined;
19
+ const max = range.end ? range.end.getTime() : undefined;
20
+ if (min === undefined && max === undefined) return null;
21
+ return { kind: 'range', min, max };
22
+ }
23
+ </script>
24
+
25
+ <script lang="ts">
26
+ import { DatePicker, type DatePickerRange } from '@sentropic/design-system-svelte';
27
+
28
+ let { store, dimension, label = 'Période', class: className }: DateRangeFilterProps = $props();
29
+
30
+ let range = $state<DatePickerRange>({ start: null, end: null });
31
+
32
+ $effect(() => {
33
+ const spec = dateRangeToSpec(range);
34
+ if (spec) store.setFilter(dimension, spec);
35
+ else store.clearFilter(dimension);
36
+ });
37
+ </script>
38
+
39
+ <DatePicker mode="range" {label} bind:value={range} class={className} />
@@ -0,0 +1,21 @@
1
+ import type { DashboardStore, FilterSpec } from '@sentropic/dataviz-core';
2
+ export type DateRangeFilterProps = {
3
+ /** The dashboard store to bind to. */
4
+ store: DashboardStore;
5
+ /** Date dimension to filter (its cells must be epoch-millisecond numbers). */
6
+ dimension: string;
7
+ label?: string;
8
+ class?: string;
9
+ };
10
+ /**
11
+ * Pure: a DatePicker `{ start, end }` range → a core `range` {@link FilterSpec}
12
+ * in epoch milliseconds (bounds optional), or `null` when the range is empty.
13
+ */
14
+ export declare function dateRangeToSpec(range: {
15
+ start: Date | null;
16
+ end: Date | null;
17
+ }): FilterSpec | null;
18
+ declare const DateRangeFilter: import("svelte").Component<DateRangeFilterProps, {}, "">;
19
+ type DateRangeFilter = ReturnType<typeof DateRangeFilter>;
20
+ export default DateRangeFilter;
21
+ //# sourceMappingURL=DateRangeFilter.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateRangeFilter.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/DateRangeFilter.svelte.ts"],"names":[],"mappings":"AAGE,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1E,MAAM,MAAM,oBAAoB,GAAG;IACjC,sCAAsC;IACtC,KAAK,EAAE,cAAc,CAAC;IACtB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,GAAG,UAAU,GAAG,IAAI,CAKlG;AAyBH,QAAA,MAAM,eAAe,0DAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -61,16 +61,20 @@
61
61
  keys.push(k);
62
62
  }
63
63
  }
64
+ let min = 0;
64
65
  let max = 0;
65
66
  const panels = keys.map((k) => {
66
67
  const facetRows = rows.filter((row) => key(row[facetBy]) === k);
67
68
  const data = groupAggregate(facetRows, dimension, m).map(({ key: barKey, value }) => {
69
+ if (value < min) min = value;
68
70
  if (value > max) max = value;
69
71
  return tone ? { label: barKey, value, tone } : { label: barKey, value };
70
72
  });
71
73
  return { key: k, data };
72
74
  });
73
- return { panels, domain: panels.length ? [0, max] : undefined };
75
+ // Shared domain anchored at 0 so positive-only facets get [0, max] and mixed
76
+ // facets keep negatives in view.
77
+ return { panels, domain: panels.length ? [min, max] : undefined };
74
78
  });
75
79
  </script>
76
80
 
@@ -1 +1 @@
1
- {"version":3,"file":"SmallMultiples.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/SmallMultiples.svelte.ts"],"names":[],"mappings":"AAGE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,MAAM,MAAM,mBAAmB,GAAG;IAChC,sCAAsC;IACtC,KAAK,EAAE,cAAc,CAAC;IACtB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAoEJ,QAAA,MAAM,cAAc,yDAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"SmallMultiples.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/SmallMultiples.svelte.ts"],"names":[],"mappings":"AAGE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,MAAM,MAAM,mBAAmB,GAAG;IAChC,sCAAsC;IACtC,KAAK,EAAE,cAAc,CAAC;IACtB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAwEJ,QAAA,MAAM,cAAc,yDAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentropic/dataviz-svelte",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "Svelte 5 adapter + dashboard components for @sentropic/dataviz-core, built on @sentropic/design-system-svelte.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -30,7 +30,7 @@
30
30
  "test": "vitest run src"
31
31
  },
32
32
  "dependencies": {
33
- "@sentropic/dataviz-core": "0.2.1",
33
+ "@sentropic/dataviz-core": "0.3.0",
34
34
  "@sentropic/design-system-svelte": "0.23.0",
35
35
  "@sentropic/design-system-themes": "0.11.0"
36
36
  },