react-cheminfo 0.16.0 → 0.17.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.
Files changed (91) hide show
  1. package/lib/parallel/core/index.d.ts +7 -5
  2. package/lib/parallel/core/index.d.ts.map +1 -1
  3. package/lib/parallel/core/index.js +5 -3
  4. package/lib/parallel/core/index.js.map +1 -1
  5. package/lib/parallel/core/parallelBrush.d.ts +22 -1
  6. package/lib/parallel/core/parallelBrush.d.ts.map +1 -1
  7. package/lib/parallel/core/parallelBrush.js +53 -3
  8. package/lib/parallel/core/parallelBrush.js.map +1 -1
  9. package/lib/parallel/core/parallelFilter.d.ts +14 -1
  10. package/lib/parallel/core/parallelFilter.d.ts.map +1 -1
  11. package/lib/parallel/core/parallelFilter.js +44 -11
  12. package/lib/parallel/core/parallelFilter.js.map +1 -1
  13. package/lib/parallel/core/parallelOrder.d.ts +36 -0
  14. package/lib/parallel/core/parallelOrder.d.ts.map +1 -0
  15. package/lib/parallel/core/parallelOrder.js +65 -0
  16. package/lib/parallel/core/parallelOrder.js.map +1 -0
  17. package/lib/parallel/core/parallelPaint.d.ts +4 -0
  18. package/lib/parallel/core/parallelPaint.d.ts.map +1 -1
  19. package/lib/parallel/core/parallelPaint.js +15 -6
  20. package/lib/parallel/core/parallelPaint.js.map +1 -1
  21. package/lib/parallel/core/parallelPalette.d.ts +10 -1
  22. package/lib/parallel/core/parallelPalette.d.ts.map +1 -1
  23. package/lib/parallel/core/parallelPalette.js +14 -1
  24. package/lib/parallel/core/parallelPalette.js.map +1 -1
  25. package/lib/parallel/core/parallelSelection.d.ts +43 -0
  26. package/lib/parallel/core/parallelSelection.d.ts.map +1 -0
  27. package/lib/parallel/core/parallelSelection.js +87 -0
  28. package/lib/parallel/core/parallelSelection.js.map +1 -0
  29. package/lib/parallel/core/parallelTicks.d.ts.map +1 -1
  30. package/lib/parallel/core/parallelTicks.js +7 -4
  31. package/lib/parallel/core/parallelTicks.js.map +1 -1
  32. package/lib/parallel/core/parallelTypes.d.ts +12 -1
  33. package/lib/parallel/core/parallelTypes.d.ts.map +1 -1
  34. package/lib/parallel/core/parallelTypes.js.map +1 -1
  35. package/lib/parallel/ui/ParallelAxesLayer.d.ts +2 -2
  36. package/lib/parallel/ui/ParallelAxesLayer.d.ts.map +1 -1
  37. package/lib/parallel/ui/ParallelAxesLayer.js +2 -2
  38. package/lib/parallel/ui/ParallelAxesLayer.js.map +1 -1
  39. package/lib/parallel/ui/ParallelCoordinates.d.ts.map +1 -1
  40. package/lib/parallel/ui/ParallelCoordinates.js +10 -5
  41. package/lib/parallel/ui/ParallelCoordinates.js.map +1 -1
  42. package/lib/parallel/ui/ParallelLabels.d.ts +6 -0
  43. package/lib/parallel/ui/ParallelLabels.d.ts.map +1 -1
  44. package/lib/parallel/ui/ParallelLabels.js +14 -2
  45. package/lib/parallel/ui/ParallelLabels.js.map +1 -1
  46. package/lib/parallel/ui/index.d.ts +4 -0
  47. package/lib/parallel/ui/index.d.ts.map +1 -1
  48. package/lib/parallel/ui/index.js +2 -0
  49. package/lib/parallel/ui/index.js.map +1 -1
  50. package/lib/parallel/ui/parallelCoordinatesProps.d.ts +26 -8
  51. package/lib/parallel/ui/parallelCoordinatesProps.d.ts.map +1 -1
  52. package/lib/parallel/ui/parallelGestureModel.d.ts +37 -6
  53. package/lib/parallel/ui/parallelGestureModel.d.ts.map +1 -1
  54. package/lib/parallel/ui/parallelGestureModel.js +42 -12
  55. package/lib/parallel/ui/parallelGestureModel.js.map +1 -1
  56. package/lib/parallel/ui/parallelPlotModel.d.ts +1 -1
  57. package/lib/parallel/ui/parallelPlotModel.d.ts.map +1 -1
  58. package/lib/parallel/ui/parallelPlotModel.js +3 -3
  59. package/lib/parallel/ui/parallelPlotModel.js.map +1 -1
  60. package/lib/parallel/ui/parallelStyles.d.ts +26 -3
  61. package/lib/parallel/ui/parallelStyles.d.ts.map +1 -1
  62. package/lib/parallel/ui/parallelStyles.js +26 -4
  63. package/lib/parallel/ui/parallelStyles.js.map +1 -1
  64. package/lib/parallel/ui/useParallelAxisDrag.d.ts +60 -0
  65. package/lib/parallel/ui/useParallelAxisDrag.d.ts.map +1 -0
  66. package/lib/parallel/ui/useParallelAxisDrag.js +96 -0
  67. package/lib/parallel/ui/useParallelAxisDrag.js.map +1 -0
  68. package/lib/parallel/ui/useParallelGesture.d.ts +10 -5
  69. package/lib/parallel/ui/useParallelGesture.d.ts.map +1 -1
  70. package/lib/parallel/ui/useParallelGesture.js +46 -21
  71. package/lib/parallel/ui/useParallelGesture.js.map +1 -1
  72. package/package.json +1 -1
  73. package/src/parallel/core/index.ts +16 -0
  74. package/src/parallel/core/parallelBrush.ts +69 -3
  75. package/src/parallel/core/parallelFilter.ts +52 -15
  76. package/src/parallel/core/parallelOrder.ts +73 -0
  77. package/src/parallel/core/parallelPaint.ts +16 -5
  78. package/src/parallel/core/parallelPalette.ts +14 -1
  79. package/src/parallel/core/parallelSelection.ts +99 -0
  80. package/src/parallel/core/parallelTicks.ts +7 -3
  81. package/src/parallel/core/parallelTypes.ts +13 -1
  82. package/src/parallel/ui/ParallelAxesLayer.tsx +10 -4
  83. package/src/parallel/ui/ParallelCoordinates.tsx +22 -3
  84. package/src/parallel/ui/ParallelLabels.tsx +23 -2
  85. package/src/parallel/ui/index.ts +15 -0
  86. package/src/parallel/ui/parallelCoordinatesProps.ts +26 -8
  87. package/src/parallel/ui/parallelGestureModel.ts +63 -13
  88. package/src/parallel/ui/parallelPlotModel.ts +3 -3
  89. package/src/parallel/ui/parallelStyles.ts +46 -4
  90. package/src/parallel/ui/useParallelAxisDrag.ts +147 -0
  91. package/src/parallel/ui/useParallelGesture.ts +61 -28
@@ -14,6 +14,14 @@ import { DEFAULT_COLOR_SCALE_ID } from "../../color/core/scales.js";
14
14
  import { parallelExtent } from "./parallelExtent.js";
15
15
  /** How many steps the ramp is quantised into; there is one more colour than steps. */
16
16
  export const PARALLEL_PALETTE_STEPS = 120;
17
+ /**
18
+ * The step a row whose colouring quantity is unknown takes.
19
+ *
20
+ * Past the end of the ramp on purpose: no colour indexes it, so the painter
21
+ * leaves such a row in the neutral ink rather than claiming for it the ink of
22
+ * the smallest value in the set.
23
+ */
24
+ export const PARALLEL_PALETTE_UNKNOWN = PARALLEL_PALETTE_STEPS + 1;
17
25
  /**
18
26
  * The ramp, sampled into the steps a line's colour is looked up by.
19
27
  * @param scale - The ramp, as the registry hands it over or as a plain list of colours. Defaults to viridis.
@@ -30,10 +38,13 @@ export function parallelPalette(scale) {
30
38
  * loop reads an integer instead of placing a value on a ramp.
31
39
  * @param color - The quantity the lines are coloured by.
32
40
  * @param count - How many rows there are.
33
- * @returns One step per row, from `0` to {@link PARALLEL_PALETTE_STEPS}.
41
+ * @returns One step per row, from `0` to {@link PARALLEL_PALETTE_STEPS}, or
42
+ * {@link PARALLEL_PALETTE_UNKNOWN} for a row whose value is not a number.
34
43
  */
35
44
  export function parallelColorSteps(color, count) {
36
45
  const steps = new Uint8Array(count);
46
+ // A row the column does not reach is as unknown as one holding no number.
47
+ steps.fill(PARALLEL_PALETTE_UNKNOWN);
37
48
  const extent = parallelExtent(color.values, count);
38
49
  const min = color.min ?? extent.min;
39
50
  const max = color.max ?? extent.max;
@@ -42,6 +53,8 @@ export function parallelColorSteps(color, count) {
42
53
  const rows = Math.min(count, color.values.length);
43
54
  for (let row = 0; row < rows; row++) {
44
55
  const value = color.values[row];
56
+ if (!Number.isFinite(value))
57
+ continue;
45
58
  steps[row] = logarithmic
46
59
  ? Math.round(positionInRange(value, min, max, { logarithmic: true }) *
47
60
  PARALLEL_PALETTE_STEPS)
@@ -1 +1 @@
1
- {"version":3,"file":"parallelPalette.js","sourceRoot":"","sources":["../../../src/parallel/core/parallelPalette.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,sFAAsF;AACtF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAsC;IAEtC,OAAO,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,sBAAsB,GAAG,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAsB,EACtB,KAAa;IAEb,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC;IACpC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC;IACpC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC;IAC/C,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAW,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW;YACtB,CAAC,CAAC,IAAI,CAAC,KAAK,CACR,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;gBACrD,sBAAsB,CACzB;YACH,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,KAAsC;IACzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC;IACzD,CAAC;IACD,OAAO,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,GAAW,EAAE,IAAY;IACzD,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACxB,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,sBAAsB,CAAC;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,sBAAsB,CAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"parallelPalette.js","sourceRoot":"","sources":["../../../src/parallel/core/parallelPalette.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * What an axis keeps, when it keeps more than one interval.
3
+ *
4
+ * The figure reports a list and accepts either a list or a bare interval, so a
5
+ * caller that only ever keeps one is not made to write `[[0, 1]]`. Everything
6
+ * downstream — the filter, the bands, the gesture — reads the list, which is
7
+ * what {@link parallelRangeList} is for: one normalisation, at the edge, and
8
+ * no `Array.isArray` scattered through the painter.
9
+ *
10
+ * Intervals on one axis are held sorted and disjoint. Two that touch are one
11
+ * interval drawn twice, and a reader dragging a band across its neighbour means
12
+ * to widen it rather than to stack two bands nobody can then take hold of.
13
+ */
14
+ import type { ParallelRange, ParallelSelection } from './parallelTypes.ts';
15
+ /**
16
+ * The intervals one axis keeps, however the caller wrote them.
17
+ * @param selection - One interval, several, or nothing at all.
18
+ * @returns The intervals, in the order given. Read in place — the caller's own
19
+ * array comes back when it gave one.
20
+ */
21
+ export declare function parallelRangeList(selection: ParallelSelection | undefined): readonly ParallelRange[];
22
+ /**
23
+ * Whether an axis keeps anything at all.
24
+ * @param selection - What that axis keeps.
25
+ * @returns Whether any interval is in force.
26
+ */
27
+ export declare function parallelHasRange(selection: ParallelSelection | undefined): boolean;
28
+ /**
29
+ * The same intervals, sorted low to high and with the overlapping ones joined.
30
+ * @param ranges - The intervals, in any order, each low value first.
31
+ * @returns One list, sorted and disjoint. Intervals that touch at a point are
32
+ * joined too: a reader who dragged one band onto another meant one band.
33
+ */
34
+ export declare function parallelMergeRanges(ranges: readonly ParallelRange[]): ParallelRange[];
35
+ /**
36
+ * The intervals an axis keeps once one of them is replaced, removed or added.
37
+ * @param ranges - The intervals in force.
38
+ * @param index - Which one is being written, or `-1` to add one.
39
+ * @param range - The interval it becomes, or `null` to take it away.
40
+ * @returns The new list, sorted and disjoint. Never the same array.
41
+ */
42
+ export declare function parallelWriteRange(ranges: readonly ParallelRange[], index: number, range: ParallelRange | null): ParallelRange[];
43
+ //# sourceMappingURL=parallelSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallelSelection.d.ts","sourceRoot":"","sources":["../../../src/parallel/core/parallelSelection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAK3E;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,iBAAiB,GAAG,SAAS,GACvC,SAAS,aAAa,EAAE,CAO1B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,iBAAiB,GAAG,SAAS,GACvC,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,aAAa,EAAE,GAC/B,aAAa,EAAE,CAsBjB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,aAAa,GAAG,IAAI,GAC1B,aAAa,EAAE,CAQjB"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * What an axis keeps, when it keeps more than one interval.
3
+ *
4
+ * The figure reports a list and accepts either a list or a bare interval, so a
5
+ * caller that only ever keeps one is not made to write `[[0, 1]]`. Everything
6
+ * downstream — the filter, the bands, the gesture — reads the list, which is
7
+ * what {@link parallelRangeList} is for: one normalisation, at the edge, and
8
+ * no `Array.isArray` scattered through the painter.
9
+ *
10
+ * Intervals on one axis are held sorted and disjoint. Two that touch are one
11
+ * interval drawn twice, and a reader dragging a band across its neighbour means
12
+ * to widen it rather than to stack two bands nobody can then take hold of.
13
+ */
14
+ /** Nothing kept, shared so a normalisation never allocates for the common case. */
15
+ const NONE = [];
16
+ /**
17
+ * The intervals one axis keeps, however the caller wrote them.
18
+ * @param selection - One interval, several, or nothing at all.
19
+ * @returns The intervals, in the order given. Read in place — the caller's own
20
+ * array comes back when it gave one.
21
+ */
22
+ export function parallelRangeList(selection) {
23
+ if (selection === null || selection === undefined)
24
+ return NONE;
25
+ if (selection.length === 0)
26
+ return NONE;
27
+ // A bare interval is two numbers; a list of them holds arrays.
28
+ return typeof selection[0] === 'number'
29
+ ? [selection]
30
+ : selection;
31
+ }
32
+ /**
33
+ * Whether an axis keeps anything at all.
34
+ * @param selection - What that axis keeps.
35
+ * @returns Whether any interval is in force.
36
+ */
37
+ export function parallelHasRange(selection) {
38
+ return parallelRangeList(selection).length > 0;
39
+ }
40
+ /**
41
+ * The same intervals, sorted low to high and with the overlapping ones joined.
42
+ * @param ranges - The intervals, in any order, each low value first.
43
+ * @returns One list, sorted and disjoint. Intervals that touch at a point are
44
+ * joined too: a reader who dragged one band onto another meant one band.
45
+ */
46
+ export function parallelMergeRanges(ranges) {
47
+ if (ranges.length === 0)
48
+ return [];
49
+ const sorted = ranges
50
+ .map((range) => range[0] <= range[1] ? range : [range[1], range[0]])
51
+ .toSorted((left, right) => left[0] - right[0]);
52
+ const merged = [];
53
+ let low = sorted[0][0];
54
+ let high = sorted[0][1];
55
+ for (let index = 1; index < sorted.length; index++) {
56
+ const range = sorted[index];
57
+ if (range[0] > high) {
58
+ merged.push([low, high]);
59
+ low = range[0];
60
+ high = range[1];
61
+ continue;
62
+ }
63
+ if (range[1] > high)
64
+ high = range[1];
65
+ }
66
+ merged.push([low, high]);
67
+ return merged;
68
+ }
69
+ /**
70
+ * The intervals an axis keeps once one of them is replaced, removed or added.
71
+ * @param ranges - The intervals in force.
72
+ * @param index - Which one is being written, or `-1` to add one.
73
+ * @param range - The interval it becomes, or `null` to take it away.
74
+ * @returns The new list, sorted and disjoint. Never the same array.
75
+ */
76
+ export function parallelWriteRange(ranges, index, range) {
77
+ const kept = [];
78
+ for (let at = 0; at < ranges.length; at++) {
79
+ if (at === index)
80
+ continue;
81
+ kept.push(ranges[at]);
82
+ }
83
+ if (range !== null)
84
+ kept.push(range);
85
+ return parallelMergeRanges(kept);
86
+ }
87
+ //# sourceMappingURL=parallelSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallelSelection.js","sourceRoot":"","sources":["../../../src/parallel/core/parallelSelection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,mFAAmF;AACnF,MAAM,IAAI,GAA6B,EAAE,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAwC;IAExC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,+DAA+D;IAC/D,OAAO,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ;QACrC,CAAC,CAAC,CAAC,SAA0B,CAAC;QAC9B,CAAC,CAAE,SAAsC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAwC;IAExC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAgC;IAEhC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM;SAClB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAmB,CACvE;SACA,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,IAAI,GAAG,GAAI,MAAM,CAAC,CAAC,CAAmB,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,IAAI,GAAI,MAAM,CAAC,CAAC,CAAmB,CAAC,CAAC,CAAC,CAAC;IAC3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAkB,CAAC;QAC7C,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACzB,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAgC,EAChC,KAAa,EACb,KAA2B;IAE3B,MAAM,IAAI,GAAoB,EAAE,CAAC;IACjC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QAC1C,IAAI,EAAE,KAAK,KAAK;YAAE,SAAS;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAkB,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,KAAK,KAAK,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parallelTicks.d.ts","sourceRoot":"","sources":["../../../src/parallel/core/parallelTicks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAErE,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAQrC,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,+DAA+D;IAC/D,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,kBAAkB,CAWpB"}
1
+ {"version":3,"file":"parallelTicks.d.ts","sourceRoot":"","sources":["../../../src/parallel/core/parallelTicks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAErE,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAQrC,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,+DAA+D;IAC/D,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,kBAAkB,CAWpB"}
@@ -6,7 +6,7 @@
6
6
  * compare rows against each other must end exactly where the data does. A
7
7
  * caller who wants round numbers asks for them with `nice`, per axis.
8
8
  */
9
- import { chartAxisScale, chartTickDecimals, } from "../../chart/core/chartAxisScale.js";
9
+ import { chartAxisScale, chartTickDecimals, chartTickLabel, } from "../../chart/core/chartAxisScale.js";
10
10
  import { formatDecimal } from "../../format/core/numbers.js";
11
11
  import { roundTo } from "../../format/core/roundTo.js";
12
12
  /** How many graduations an axis carries when the caller asks for no number. */
@@ -42,11 +42,14 @@ export function parallelTicks(axis, min, max) {
42
42
  }
43
43
  function nicedGraduation(axis, min, max, wanted) {
44
44
  const scale = chartAxisScale(min, max, { count: wanted, nice: true });
45
+ // Not `scale.labels`: those have a common power of ten lifted out of them,
46
+ // on the understanding that the caller writes it beside the axis name, and
47
+ // this figure writes only the name. Each graduation carries its own value.
48
+ const decimals = chartTickDecimals(scale.step);
45
49
  const ticks = [];
46
- for (let index = 0; index < scale.values.length; index++) {
47
- const value = scale.values[index];
50
+ for (const value of scale.values) {
48
51
  const label = axis.format === undefined
49
- ? (scale.labels[index] ?? formatDecimal(value, scale.decimals))
52
+ ? chartTickLabel(value, decimals)
50
53
  : axis.format(value);
51
54
  if (ticks.at(-1)?.label === label)
52
55
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"parallelTicks.js","sourceRoot":"","sources":["../../../src/parallel/core/parallelTicks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parallelTicks.js","sourceRoot":"","sources":["../../../src/parallel/core/parallelTicks.ts"],"names":[],"mappings":"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"}
@@ -80,8 +80,19 @@ export interface ParallelAxis {
80
80
  }
81
81
  /** An interval kept on one axis, in that axis's own units, low first. */
82
82
  export type ParallelRange = readonly [number, number];
83
+ /**
84
+ * What one axis keeps: nothing, one interval, or several disjoint ones.
85
+ *
86
+ * A reader comparing molecules wants the light ones *and* the heavy ones, with
87
+ * nothing in between, which one interval cannot say. Several are read as a
88
+ * union — a row is kept when it falls in any of them — while the axes are
89
+ * still read as an intersection, so each axis narrows what the ones before it
90
+ * left. A bare interval means the same as a list holding only it, so a caller
91
+ * that only ever keeps one writes one.
92
+ */
93
+ export type ParallelSelection = ParallelRange | readonly ParallelRange[] | null;
83
94
  /** Which rows a set of brushes keeps, keyed by axis id. */
84
- export type ParallelRanges = Readonly<Record<string, ParallelRange | null>>;
95
+ export type ParallelRanges = Readonly<Record<string, ParallelSelection>>;
85
96
  /** How the lines are coloured. */
86
97
  export interface ParallelColorBy {
87
98
  /** The quantity read for each row, in the figure's row order. */
@@ -1 +1 @@
1
- {"version":3,"file":"parallelTypes.d.ts","sourceRoot":"","sources":["../../../src/parallel/core/parallelTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,2CAA2C;AAC3C,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEjD,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;;OAIG;IACH,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtD,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;AAE5E,kCAAkC;AAClC,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE,CAAC;IACvC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,sFAAsF;AACtF,MAAM,MAAM,kBAAkB,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG;IACnE;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;CACtC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAChC,IAAI,EAAE,SAAS,GAAG,EAAE,EACpB,IAAI,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAC5B,YAAY,CAOd"}
1
+ {"version":3,"file":"parallelTypes.d.ts","sourceRoot":"","sources":["../../../src/parallel/core/parallelTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,2CAA2C;AAC3C,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEjD,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;;OAIG;IACH,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,SAAS,aAAa,EAAE,GAAG,IAAI,CAAC;AAEhF,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAEzE,kCAAkC;AAClC,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE,CAAC;IACvC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,sFAAsF;AACtF,MAAM,MAAM,kBAAkB,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG;IACnE;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;CACtC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAChC,IAAI,EAAE,SAAS,GAAG,EAAE,EACpB,IAAI,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAC5B,YAAY,CAOd"}
@@ -1 +1 @@
1
- {"version":3,"file":"parallelTypes.js","sourceRoot":"","sources":["../../../src/parallel/core/parallelTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqHH;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAoB,EACpB,IAA6B;IAE7B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAQ,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"parallelTypes.js","sourceRoot":"","sources":["../../../src/parallel/core/parallelTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiIH;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAoB,EACpB,IAA6B;IAE7B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAQ,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC"}
@@ -7,8 +7,8 @@ export interface ParallelAxesLayerProps {
7
7
  layouts: readonly ParallelAxisLayout[];
8
8
  /** Height of the drawing area, in pixels. */
9
9
  innerHeight: number;
10
- /** The band each axis carries right now, the one being dragged included. */
11
- bands: ReadonlyMap<string, ParallelBand>;
10
+ /** The bands each axis carries right now, the one being dragged included. */
11
+ bands: ReadonlyMap<string, ParallelBand[]>;
12
12
  /** The ink the axes, their ticks and their labels are drawn in. */
13
13
  axisInk: string;
14
14
  /** The ink a band is filled and outlined in. */
@@ -1 +1 @@
1
- {"version":3,"file":"ParallelAxesLayer.d.ts","sourceRoot":"","sources":["../../../src/parallel/ui/ParallelAxesLayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAY7D,4CAA4C;AAC5C,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvC,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CAmD7E"}
1
+ {"version":3,"file":"ParallelAxesLayer.d.ts","sourceRoot":"","sources":["../../../src/parallel/ui/ParallelAxesLayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAY7D,4CAA4C;AAC5C,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvC,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAC3C,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CAyD7E"}
@@ -16,8 +16,8 @@ export function ParallelAxesLayer(props) {
16
16
  const { layouts, innerHeight, bands, axisInk, bandInk } = props;
17
17
  const stroke = { stroke: axisInk };
18
18
  return (_jsx("g", { transform: `translate(${PARALLEL_MARGIN.left},${PARALLEL_MARGIN.top})`, style: { fill: axisInk }, textAnchor: "middle", children: layouts.map((layout) => {
19
- const band = bands.get(layout.id) ?? null;
20
- return (_jsxs("g", { className: "parallel-axis", "data-parallel-axis": layout.id, transform: `translate(${layout.x},0)`, children: [_jsx("line", { y2: innerHeight, style: stroke }), layout.ticks.map((tick) => (_jsxs("g", { transform: `translate(0,${parallelValueToY(tick.value, layout)})`, children: [_jsx("line", { x1: -PARALLEL_TICK_LENGTH, style: stroke }), _jsx("text", { x: -PARALLEL_TICK_LABEL_INSET, dy: "0.32em", textAnchor: "end", style: PARALLEL_TICK_LABEL_STYLE, children: tick.label })] }, tick.value))), _jsx("rect", { "data-parallel-brush": layout.id, x: -PARALLEL_BRUSH_HALF_WIDTH, y: 0, width: PARALLEL_BRUSH_HALF_WIDTH * 2, height: Math.max(0, innerHeight), fill: "transparent", pointerEvents: "none" }), band === null ? null : _jsx(BrushBand, { band: band, ink: bandInk })] }, layout.id));
19
+ const drawn = bands.get(layout.id);
20
+ return (_jsxs("g", { className: "parallel-axis", "data-parallel-axis": layout.id, transform: `translate(${layout.x},0)`, children: [_jsx("line", { y2: innerHeight, style: stroke }), layout.ticks.map((tick) => (_jsxs("g", { transform: `translate(0,${parallelValueToY(tick.value, layout)})`, children: [_jsx("line", { x1: -PARALLEL_TICK_LENGTH, style: stroke }), _jsx("text", { x: -PARALLEL_TICK_LABEL_INSET, dy: "0.32em", textAnchor: "end", style: PARALLEL_TICK_LABEL_STYLE, children: tick.label })] }, tick.value))), _jsx("rect", { "data-parallel-brush": layout.id, x: -PARALLEL_BRUSH_HALF_WIDTH, y: 0, width: PARALLEL_BRUSH_HALF_WIDTH * 2, height: Math.max(0, innerHeight), fill: "transparent", pointerEvents: "none" }), drawn?.map((band) => (_jsx(BrushBand, { band: band, ink: bandInk }, `${band.top}:${band.bottom}`)))] }, layout.id));
21
21
  }) }));
22
22
  }
23
23
  function BrushBand(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"ParallelAxesLayer.js","sourceRoot":"","sources":["../../../src/parallel/ui/ParallelAxesLayer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ParallelAxesLayer.js","sourceRoot":"","sources":["../../../src/parallel/ui/ParallelAxesLayer.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ParallelCoordinates.d.ts","sourceRoot":"","sources":["../../../src/parallel/ui/ParallelCoordinates.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAoB1C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AA0B9E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAiKd"}
1
+ {"version":3,"file":"ParallelCoordinates.d.ts","sourceRoot":"","sources":["../../../src/parallel/ui/ParallelCoordinates.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAoB1C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AA4B9E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAkLd"}
@@ -10,7 +10,8 @@ import { ParallelLabels } from "./ParallelLabels.js";
10
10
  import { ParallelTooltip } from "./ParallelTooltip.js";
11
11
  import { useParallelInk } from "./parallelInk.js";
12
12
  import { parallelColorOf, parallelFigureLabel, parallelHighlightsOf, parallelIsBrushed, parallelRowCount, } from "./parallelPlotModel.js";
13
- import { PARALLEL_SVG_STYLE, parallelCanvasStyle, parallelFigureStyle, } from "./parallelStyles.js";
13
+ import { PARALLEL_SVG_STYLE, parallelCanvasStyle, parallelDropMarkStyle, parallelFigureStyle, } from "./parallelStyles.js";
14
+ import { useParallelAxisDrag } from "./useParallelAxisDrag.js";
14
15
  import { useParallelCanvas } from "./useParallelCanvas.js";
15
16
  import { useParallelGesture } from "./useParallelGesture.js";
16
17
  /** Height the figure takes when the caller names none. */
@@ -43,6 +44,7 @@ export function ParallelCoordinates(props) {
43
44
  const { ranges: ownedRanges, defaultRanges, included: givenMask } = props;
44
45
  const { color: givenColor, colorAxis, onRangeChange: report } = props;
45
46
  const { onRangePreview, hovered, onHoverChange, onRowClick } = props;
47
+ const { several = false, onAxisOrder } = props;
46
48
  const count = parallelRowCount(axes, props.count);
47
49
  const innerWidth = Math.max(width - PARALLEL_MARGIN.left - PARALLEL_MARGIN.right, SMALLEST_SIDE);
48
50
  const innerHeight = Math.max(height - PARALLEL_MARGIN.top - PARALLEL_MARGIN.bottom, SMALLEST_SIDE);
@@ -61,11 +63,11 @@ export function ParallelCoordinates(props) {
61
63
  return null;
62
64
  return parallelIncludedMask(axes, ranges, count);
63
65
  }, [givenMask, axes, ranges, count]);
64
- function commitRange(axisId, range) {
66
+ function commitRange(axisId, kept) {
65
67
  if (ownedRanges === undefined) {
66
- setOwnRanges((previous) => ({ ...previous, [axisId]: range }));
68
+ setOwnRanges((previous) => ({ ...previous, [axisId]: kept }));
67
69
  }
68
- report?.(axisId, range);
70
+ report?.(axisId, kept);
69
71
  }
70
72
  const gesture = useParallelGesture({
71
73
  layouts,
@@ -74,6 +76,7 @@ export function ParallelCoordinates(props) {
74
76
  innerHeight,
75
77
  included,
76
78
  ranges,
79
+ several,
77
80
  onRangeChange: commitRange,
78
81
  onRangePreview,
79
82
  hovered,
@@ -93,12 +96,14 @@ export function ParallelCoordinates(props) {
93
96
  highlights,
94
97
  ink,
95
98
  });
99
+ const axisDrag = useParallelAxisDrag({ layouts, onAxisOrder });
100
+ const dropAt = axisDrag.active === null ? undefined : layouts[axisDrag.active.to];
96
101
  const label = given ?? parallelFigureLabel(axes, count);
97
102
  const canvasStyle = parallelCanvasStyle(height);
98
103
  const hover = gesture.pointer === null || gesture.hovered < 0
99
104
  ? null
100
105
  : { index: gesture.hovered, ...gesture.pointer };
101
- return (_jsxs("div", { ref: figure, className: joinClassNames('parallel-coordinates', className), style: parallelFigureStyle(height), "data-testid": testId, children: [count === 0 || layouts.length === 0 ? (empty) : (_jsxs(_Fragment, { children: [_jsx("canvas", { ref: lineCanvas, className: "parallel-coordinates-canvas", style: canvasStyle }), _jsx("canvas", { ref: markCanvas, className: "parallel-coordinates-canvas", style: canvasStyle }), _jsxs("svg", { width: Math.max(0, width), height: Math.max(0, height), style: PARALLEL_SVG_STYLE, role: "img", "aria-label": label, children: [_jsx(ParallelAxesLayer, { layouts: layouts, innerHeight: innerHeight, bands: gesture.bands, axisInk: ink.axis, bandInk: ink.selection }), _jsx("rect", { x: 0, y: 0, width: Math.max(0, width), height: Math.max(0, height), fill: "transparent", onClick: gesture.onClick, ...gesture.surface })] }), _jsx(ParallelLabels, { axes: axes, layouts: layouts, render: renderAxisLabel }), hover === null || renderTooltip === undefined ? null : (_jsx(ParallelTooltip, { x: hover.x, y: hover.y, boxWidth: width, boxHeight: height, children: renderTooltip(hover) }))] })), overlay === undefined ? null : (_jsx(OverlayLayer, { width: width, busy: gesture.brushing, children: overlay }))] }));
106
+ return (_jsxs("div", { ref: figure, className: joinClassNames('parallel-coordinates', className), style: parallelFigureStyle(height), "data-testid": testId, children: [count === 0 || layouts.length === 0 ? (empty) : (_jsxs(_Fragment, { children: [_jsx("canvas", { ref: lineCanvas, className: "parallel-coordinates-canvas", style: canvasStyle }), _jsx("canvas", { ref: markCanvas, className: "parallel-coordinates-canvas", style: canvasStyle }), _jsxs("svg", { width: Math.max(0, width), height: Math.max(0, height), style: PARALLEL_SVG_STYLE, role: "img", "aria-label": label, children: [_jsx(ParallelAxesLayer, { layouts: layouts, innerHeight: innerHeight, bands: gesture.bands, axisInk: ink.axis, bandInk: ink.selection }), _jsx("rect", { x: 0, y: 0, width: Math.max(0, width), height: Math.max(0, height), fill: "transparent", onClick: gesture.onClick, ...gesture.surface }), dropAt === undefined ? null : (_jsx("line", { "data-parallel-drop": dropAt.id, x1: PARALLEL_MARGIN.left + dropAt.x, x2: PARALLEL_MARGIN.left + dropAt.x, y1: PARALLEL_MARGIN.top, y2: PARALLEL_MARGIN.top + innerHeight, style: parallelDropMarkStyle(ink.selection) }))] }), _jsx(ParallelLabels, { axes: axes, layouts: layouts, render: renderAxisLabel, drag: axisDrag }), hover === null || renderTooltip === undefined ? null : (_jsx(ParallelTooltip, { x: hover.x, y: hover.y, boxWidth: width, boxHeight: height, children: renderTooltip(hover) }))] })), overlay === undefined ? null : (_jsx(OverlayLayer, { width: width, busy: gesture.brushing, children: overlay }))] }));
102
107
  }
103
108
  function columnsOf(axes) {
104
109
  const columns = [];
@@ -1 +1 @@
1
- {"version":3,"file":"ParallelCoordinates.js","sourceRoot":"","sources":["../../../src/parallel/ui/ParallelCoordinates.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ParallelCoordinates.js","sourceRoot":"","sources":["../../../src/parallel/ui/ParallelCoordinates.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { ReactElement, ReactNode } from 'react';
2
2
  import type { ParallelAxisLayout } from '../core/parallelAxes.ts';
3
3
  import type { ParallelAxis } from '../core/parallelTypes.ts';
4
+ import type { ParallelAxisDrag } from './useParallelAxisDrag.ts';
4
5
  /** What {@link ParallelLabels} writes. */
5
6
  export interface ParallelLabelsProps {
6
7
  /** The axes as the caller described them, for a caller's own renderer. */
@@ -12,6 +13,11 @@ export interface ParallelLabelsProps {
12
13
  * @default undefined
13
14
  */
14
15
  render?: ((axis: ParallelAxis, index: number) => ReactNode) | undefined;
16
+ /**
17
+ * The gesture that moves an axis by its name.
18
+ * @default undefined — the axes are fixed
19
+ */
20
+ drag?: ParallelAxisDrag | undefined;
15
21
  }
16
22
  /**
17
23
  * The axis names, as HTML over the figure.
@@ -1 +1 @@
1
- {"version":3,"file":"ParallelLabels.d.ts","sourceRoot":"","sources":["../../../src/parallel/ui/ParallelLabels.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAI7D,0CAA0C;AAC1C,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,IAAI,EAAE,SAAS,YAAY,EAAE,CAAC;IAC9B,kEAAkE;IAClE,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,GAAG,SAAS,CAAC;CACzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAqBvE"}
1
+ {"version":3,"file":"ParallelLabels.d.ts","sourceRoot":"","sources":["../../../src/parallel/ui/ParallelLabels.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,0CAA0C;AAC1C,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,IAAI,EAAE,SAAS,YAAY,EAAE,CAAC;IAC9B,kEAAkE;IAClE,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,GAAG,SAAS,CAAC;IACxE;;;OAGG;IACH,IAAI,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAoCvE"}
@@ -11,10 +11,22 @@ import { PARALLEL_LABELS_STYLE, parallelLabelStyle } from "./parallelStyles.js";
11
11
  * @returns The names.
12
12
  */
13
13
  export function ParallelLabels(props) {
14
- const { axes, layouts, render } = props;
14
+ const { axes, layouts, render, drag } = props;
15
+ const draggable = drag?.enabled ?? false;
16
+ const active = drag?.active ?? null;
15
17
  return (_jsx("div", { className: "parallel-coordinates-labels", style: PARALLEL_LABELS_STYLE, children: layouts.map((layout, index) => {
16
18
  const axis = axes[index];
17
- return (_jsx("div", { className: "parallel-axis-label", style: parallelLabelStyle(PARALLEL_MARGIN.left + layout.x), children: axis !== undefined && render !== undefined
19
+ const moving = active !== null && active.from === index;
20
+ return (_jsx("div", { className: "parallel-axis-label", "data-parallel-label": layout.id, style: parallelLabelStyle({
21
+ left: PARALLEL_MARGIN.left + layout.x,
22
+ draggable,
23
+ dx: moving ? active.dx : null,
24
+ }), ...drag?.propsFor(index), ...(draggable
25
+ ? {
26
+ role: 'button',
27
+ 'aria-label': `${layout.label}: move this axis with the left and right arrow keys`,
28
+ }
29
+ : null), children: axis !== undefined && render !== undefined
18
30
  ? render(axis, index)
19
31
  : defaultLabel(layout) }, layout.id));
20
32
  }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"ParallelLabels.js","sourceRoot":"","sources":["../../../src/parallel/ui/ParallelLabels.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAehF;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAExC,OAAO,CACL,cAAK,SAAS,EAAC,6BAA6B,EAAC,KAAK,EAAE,qBAAqB,YACtE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO,CACL,cAEE,SAAS,EAAC,qBAAqB,EAC/B,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,YAEzD,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;oBACzC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;oBACrB,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IANnB,MAAM,CAAC,EAAE,CAOV,CACP,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAA0B;IAC9C,OAAO,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"ParallelLabels.js","sourceRoot":"","sources":["../../../src/parallel/ui/ParallelLabels.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAqBhF;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC;IAEpC,OAAO,CACL,cAAK,SAAS,EAAC,6BAA6B,EAAC,KAAK,EAAE,qBAAqB,YACtE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;YACxD,OAAO,CACL,cAEE,SAAS,EAAC,qBAAqB,yBACV,MAAM,CAAC,EAAE,EAC9B,KAAK,EAAE,kBAAkB,CAAC;oBACxB,IAAI,EAAE,eAAe,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;oBACrC,SAAS;oBACT,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;iBAC9B,CAAC,KACE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,KACrB,CAAC,SAAS;oBACZ,CAAC,CAAC;wBACE,IAAI,EAAE,QAAQ;wBACd,YAAY,EAAE,GAAG,MAAM,CAAC,KAAK,qDAAqD;qBACnF;oBACH,CAAC,CAAC,IAAI,CAAC,YAER,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;oBACzC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;oBACrB,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAlBnB,MAAM,CAAC,EAAE,CAmBV,CACP,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAA0B;IAC9C,OAAO,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC;AAChF,CAAC"}
@@ -15,11 +15,15 @@ export type { ParallelInkBinding, ParallelInkValues, ParallelTokenInk, } from '.
15
15
  export { parallelInkFrom, readParallelInk, readParallelTokens, useParallelInk, } from './parallelInk.ts';
16
16
  export { ParallelLabels } from './ParallelLabels.tsx';
17
17
  export type { ParallelLabelsProps } from './ParallelLabels.tsx';
18
+ export type { ParallelCommit, ParallelDraft } from './parallelGestureModel.ts';
19
+ export { parallelAxisById, parallelAxisNear, parallelBandsOf, parallelCommitOf, parallelPointOf, } from './parallelGestureModel.ts';
18
20
  export { parallelColorOf, parallelFigureLabel, parallelHighlightsOf, parallelIsBrushed, parallelRowCount, } from './parallelPlotModel.ts';
19
21
  export { ParallelTooltip } from './ParallelTooltip.tsx';
20
22
  export type { ParallelTooltipProps } from './ParallelTooltip.tsx';
21
23
  export type { ParallelCanvasOptions, ParallelCanvases, } from './useParallelCanvas.ts';
22
24
  export { useParallelCanvas } from './useParallelCanvas.ts';
25
+ export type { ParallelAxisDrag, ParallelAxisDragOptions, ParallelAxisDragState, ParallelAxisHandleProps, } from './useParallelAxisDrag.ts';
26
+ export { useParallelAxisDrag } from './useParallelAxisDrag.ts';
23
27
  export type { ParallelGesture, ParallelGestureOptions, } from './useParallelGesture.ts';
24
28
  export { useParallelGesture } from './useParallelGesture.ts';
25
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/parallel/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EACV,wBAAwB,EACxB,aAAa,EACb,WAAW,GACZ,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,YAAY,EACV,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EACV,eAAe,EACf,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/parallel/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EACV,wBAAwB,EACxB,aAAa,EACb,WAAW,GACZ,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,YAAY,EACV,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EACV,eAAe,EACf,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -11,8 +11,10 @@ export { ParallelAxesLayer } from "./ParallelAxesLayer.js";
11
11
  export { ParallelCoordinates } from "./ParallelCoordinates.js";
12
12
  export { parallelInkFrom, readParallelInk, readParallelTokens, useParallelInk, } from "./parallelInk.js";
13
13
  export { ParallelLabels } from "./ParallelLabels.js";
14
+ export { parallelAxisById, parallelAxisNear, parallelBandsOf, parallelCommitOf, parallelPointOf, } from "./parallelGestureModel.js";
14
15
  export { parallelColorOf, parallelFigureLabel, parallelHighlightsOf, parallelIsBrushed, parallelRowCount, } from "./parallelPlotModel.js";
15
16
  export { ParallelTooltip } from "./ParallelTooltip.js";
16
17
  export { useParallelCanvas } from "./useParallelCanvas.js";
18
+ export { useParallelAxisDrag } from "./useParallelAxisDrag.js";
17
19
  export { useParallelGesture } from "./useParallelGesture.js";
18
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parallel/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC;AAWhE,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AAEtD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AAMxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAK3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parallel/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC;AAWhE,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AAGtD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AAMxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAO3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAK/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}