svelteplot 0.3.1 → 0.3.2-pr-113.1

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 (172) hide show
  1. package/dist/Mark.svelte +25 -27
  2. package/dist/Mark.svelte.d.ts +87 -17
  3. package/dist/Plot.svelte +1 -2
  4. package/dist/Plot.svelte.d.ts +1 -1
  5. package/dist/core/Facet.svelte +1 -1
  6. package/dist/core/Facet.svelte.d.ts +1 -1
  7. package/dist/core/FacetAxes.svelte +1 -1
  8. package/dist/core/FacetGrid.svelte +1 -1
  9. package/dist/core/FacetGrid.svelte.d.ts +1 -1
  10. package/dist/core/Plot.svelte +1 -1
  11. package/dist/core/Plot.svelte.d.ts +1 -1
  12. package/dist/helpers/autoTicks.js +1 -1
  13. package/dist/helpers/colors.d.ts +1 -1
  14. package/dist/helpers/getBaseStyles.d.ts +2 -0
  15. package/dist/helpers/getBaseStyles.js +8 -0
  16. package/dist/helpers/index.d.ts +2 -2
  17. package/dist/helpers/projection.d.ts +1 -1
  18. package/dist/helpers/resolve.d.ts +1 -1
  19. package/dist/helpers/scales.d.ts +1 -1
  20. package/dist/helpers/typeChecks.d.ts +4 -4
  21. package/dist/marks/Area.svelte +14 -17
  22. package/dist/marks/Area.svelte.d.ts +91 -19
  23. package/dist/marks/AreaX.svelte +15 -12
  24. package/dist/marks/AreaX.svelte.d.ts +94 -3
  25. package/dist/marks/AreaY.svelte +15 -15
  26. package/dist/marks/AreaY.svelte.d.ts +94 -3
  27. package/dist/marks/Arrow.svelte +16 -19
  28. package/dist/marks/Arrow.svelte.d.ts +110 -38
  29. package/dist/marks/AxisX.svelte +41 -41
  30. package/dist/marks/AxisX.svelte.d.ts +97 -25
  31. package/dist/marks/AxisY.svelte +40 -40
  32. package/dist/marks/AxisY.svelte.d.ts +98 -27
  33. package/dist/marks/BarX.svelte +28 -30
  34. package/dist/marks/BarX.svelte.d.ts +89 -17
  35. package/dist/marks/BarY.svelte +27 -27
  36. package/dist/marks/BarY.svelte.d.ts +88 -16
  37. package/dist/marks/BollingerX.svelte +21 -16
  38. package/dist/marks/BollingerX.svelte.d.ts +17 -16
  39. package/dist/marks/BollingerY.svelte +21 -16
  40. package/dist/marks/BollingerY.svelte.d.ts +17 -16
  41. package/dist/marks/BoxX.svelte +5 -7
  42. package/dist/marks/BoxX.svelte.d.ts +5 -3
  43. package/dist/marks/BoxY.svelte +13 -16
  44. package/dist/marks/BoxY.svelte.d.ts +41 -28
  45. package/dist/marks/Brush.svelte +27 -30
  46. package/dist/marks/Brush.svelte.d.ts +20 -15
  47. package/dist/marks/BrushX.svelte +9 -7
  48. package/dist/marks/BrushX.svelte.d.ts +5 -2
  49. package/dist/marks/BrushY.svelte +9 -7
  50. package/dist/marks/BrushY.svelte.d.ts +5 -2
  51. package/dist/marks/Cell.svelte +17 -18
  52. package/dist/marks/Cell.svelte.d.ts +80 -8
  53. package/dist/marks/CellX.svelte +12 -8
  54. package/dist/marks/CellX.svelte.d.ts +5 -2
  55. package/dist/marks/CellY.svelte +12 -8
  56. package/dist/marks/CellY.svelte.d.ts +5 -2
  57. package/dist/marks/ColorLegend.svelte +5 -8
  58. package/dist/marks/ColorLegend.svelte.d.ts +2 -2
  59. package/dist/marks/CustomMark.svelte +23 -16
  60. package/dist/marks/CustomMark.svelte.d.ts +17 -14
  61. package/dist/marks/CustomMarkHTML.svelte +20 -18
  62. package/dist/marks/CustomMarkHTML.svelte.d.ts +29 -15
  63. package/dist/marks/DifferenceY.svelte +54 -18
  64. package/dist/marks/DifferenceY.svelte.d.ts +59 -28
  65. package/dist/marks/Dot.svelte +13 -14
  66. package/dist/marks/Dot.svelte.d.ts +84 -12
  67. package/dist/marks/DotX.svelte +9 -9
  68. package/dist/marks/DotX.svelte.d.ts +86 -4
  69. package/dist/marks/DotY.svelte +10 -9
  70. package/dist/marks/DotY.svelte.d.ts +87 -5
  71. package/dist/marks/Frame.svelte +20 -27
  72. package/dist/marks/Frame.svelte.d.ts +24 -10
  73. package/dist/marks/Geo.svelte +22 -15
  74. package/dist/marks/Geo.svelte.d.ts +97 -13
  75. package/dist/marks/Graticule.svelte +16 -19
  76. package/dist/marks/Graticule.svelte.d.ts +3 -3
  77. package/dist/marks/GridX.svelte +5 -8
  78. package/dist/marks/GridX.svelte.d.ts +79 -7
  79. package/dist/marks/GridY.svelte +5 -8
  80. package/dist/marks/GridY.svelte.d.ts +79 -7
  81. package/dist/marks/HTMLTooltip.svelte +9 -14
  82. package/dist/marks/HTMLTooltip.svelte.d.ts +25 -12
  83. package/dist/marks/Line.svelte +24 -29
  84. package/dist/marks/Line.svelte.d.ts +97 -25
  85. package/dist/marks/LineX.svelte +9 -4
  86. package/dist/marks/LineX.svelte.d.ts +99 -3
  87. package/dist/marks/LineY.svelte +11 -5
  88. package/dist/marks/LineY.svelte.d.ts +100 -4
  89. package/dist/marks/Link.svelte +35 -19
  90. package/dist/marks/Link.svelte.d.ts +107 -18
  91. package/dist/marks/Pointer.svelte +13 -18
  92. package/dist/marks/Pointer.svelte.d.ts +34 -21
  93. package/dist/marks/Rect.svelte +19 -19
  94. package/dist/marks/Rect.svelte.d.ts +86 -13
  95. package/dist/marks/RectX.svelte +10 -9
  96. package/dist/marks/RectX.svelte.d.ts +22 -6
  97. package/dist/marks/RectY.svelte +9 -10
  98. package/dist/marks/RectY.svelte.d.ts +22 -6
  99. package/dist/marks/RegressionX.svelte +1 -1
  100. package/dist/marks/RegressionX.svelte.d.ts +1 -1
  101. package/dist/marks/RegressionY.svelte +1 -1
  102. package/dist/marks/RegressionY.svelte.d.ts +1 -1
  103. package/dist/marks/RuleX.svelte +14 -16
  104. package/dist/marks/RuleX.svelte.d.ts +84 -12
  105. package/dist/marks/RuleY.svelte +12 -15
  106. package/dist/marks/RuleY.svelte.d.ts +84 -12
  107. package/dist/marks/Sphere.svelte +6 -7
  108. package/dist/marks/Sphere.svelte.d.ts +3 -2
  109. package/dist/marks/Spike.svelte +17 -9
  110. package/dist/marks/Spike.svelte.d.ts +94 -4
  111. package/dist/marks/SymbolLegend.svelte +1 -1
  112. package/dist/marks/Text.svelte +36 -125
  113. package/dist/marks/Text.svelte.d.ts +101 -20
  114. package/dist/marks/TickX.svelte +12 -13
  115. package/dist/marks/TickX.svelte.d.ts +92 -20
  116. package/dist/marks/TickY.svelte +11 -14
  117. package/dist/marks/TickY.svelte.d.ts +92 -20
  118. package/dist/marks/Vector.svelte +19 -23
  119. package/dist/marks/Vector.svelte.d.ts +93 -21
  120. package/dist/marks/helpers/AreaCanvas.svelte +1 -1
  121. package/dist/marks/helpers/AreaCanvas.svelte.d.ts +1 -1
  122. package/dist/marks/helpers/BaseAxisX.svelte +1 -2
  123. package/dist/marks/helpers/BaseAxisX.svelte.d.ts +1 -1
  124. package/dist/marks/helpers/BaseAxisY.svelte +2 -3
  125. package/dist/marks/helpers/BaseAxisY.svelte.d.ts +1 -1
  126. package/dist/marks/helpers/CanvasLayer.svelte +1 -1
  127. package/dist/marks/helpers/DotCanvas.svelte +1 -1
  128. package/dist/marks/helpers/DotCanvas.svelte.d.ts +1 -1
  129. package/dist/marks/helpers/GeoCanvas.svelte +1 -1
  130. package/dist/marks/helpers/GeoCanvas.svelte.d.ts +1 -1
  131. package/dist/marks/helpers/LineCanvas.svelte +1 -1
  132. package/dist/marks/helpers/LineCanvas.svelte.d.ts +1 -1
  133. package/dist/marks/helpers/LinearGradientX.svelte +1 -1
  134. package/dist/marks/helpers/LinearGradientX.svelte.d.ts +1 -1
  135. package/dist/marks/helpers/LinearGradientY.svelte +1 -1
  136. package/dist/marks/helpers/LinearGradientY.svelte.d.ts +1 -1
  137. package/dist/marks/helpers/MarkerPath.svelte +1 -1
  138. package/dist/marks/helpers/MarkerPath.svelte.d.ts +1 -41
  139. package/dist/marks/helpers/MultilineText.svelte +158 -0
  140. package/dist/marks/helpers/MultilineText.svelte.d.ts +12 -0
  141. package/dist/marks/helpers/RectPath.svelte +29 -26
  142. package/dist/marks/helpers/RectPath.svelte.d.ts +39 -26
  143. package/dist/marks/helpers/Regression.svelte +7 -2
  144. package/dist/marks/helpers/Regression.svelte.d.ts +2 -5
  145. package/dist/transforms/bollinger.d.ts +1 -66
  146. package/dist/transforms/centroid.d.ts +7 -65
  147. package/dist/transforms/centroid.js +10 -7
  148. package/dist/transforms/group.d.ts +4 -12
  149. package/dist/transforms/interval.d.ts +2 -122
  150. package/dist/transforms/map.d.ts +4 -184
  151. package/dist/transforms/normalize.d.ts +3 -123
  152. package/dist/transforms/select.d.ts +7 -427
  153. package/dist/transforms/sort.d.ts +3 -242
  154. package/dist/transforms/window.d.ts +2 -130
  155. package/dist/types/channel.d.ts +11 -0
  156. package/dist/types/channel.js +1 -0
  157. package/dist/types/colorScheme.d.ts +1 -0
  158. package/dist/types/colorScheme.js +1 -0
  159. package/dist/types/data.d.ts +13 -0
  160. package/dist/types/data.js +1 -0
  161. package/dist/types/facet.d.ts +50 -0
  162. package/dist/types/facet.js +1 -0
  163. package/dist/types/index.d.ts +58 -0
  164. package/dist/types/index.js +7 -0
  165. package/dist/types/mark.d.ts +123 -0
  166. package/dist/types/mark.js +1 -0
  167. package/dist/types/plot.d.ts +459 -0
  168. package/dist/types/plot.js +1 -0
  169. package/dist/types/scale.d.ts +143 -0
  170. package/dist/types/scale.js +1 -0
  171. package/dist/types.d.ts +120 -127
  172. package/package.json +125 -120
@@ -1,19 +1,16 @@
1
1
  <!-- @component
2
2
  Renders horizontal rule lines at specified y positions with customizable horizontal range
3
3
  -->
4
- <script module lang="ts">
5
- export type RuleYMarkProps = Omit<BaseMarkProps, 'fill' | 'fillOpacity'> & {
6
- data: DataRecord[];
7
- y?: ChannelAccessor;
8
- x1?: ChannelAccessor;
9
- x2?: ChannelAccessor;
10
- inset?: ConstantAccessor<number>;
11
- insetLeft?: ConstantAccessor<number>;
12
- insetRight?: ConstantAccessor<number>;
13
- };
14
- </script>
15
-
16
- <script lang="ts">
4
+ <script lang="ts" generics="Datum = DataRecord">
5
+ interface RuleYMarkProps extends Omit<BaseMarkProps<Datum>, 'fill' | 'fillOpacity'> {
6
+ data?: Datum[];
7
+ y?: ChannelAccessor<Datum>;
8
+ x1?: ChannelAccessor<Datum>;
9
+ x2?: ChannelAccessor<Datum>;
10
+ inset?: ConstantAccessor<number, Datum>;
11
+ insetLeft?: ConstantAccessor<number, Datum>;
12
+ insetRight?: ConstantAccessor<number, Datum>;
13
+ }
17
14
  import Mark from '../Mark.svelte';
18
15
  import GroupMultiple from './helpers/GroupMultiple.svelte';
19
16
  import { getContext } from 'svelte';
@@ -26,7 +23,7 @@
26
23
  ConstantAccessor,
27
24
  ChannelAccessor,
28
25
  PlotDefaults
29
- } from '../types.js';
26
+ } from '../types/index.js';
30
27
 
31
28
  let markProps: RuleYMarkProps = $props();
32
29
  const DEFAULTS = {
@@ -34,7 +31,7 @@
34
31
  ...getContext<PlotDefaults>('svelteplot/_defaults').ruleY
35
32
  };
36
33
  const {
37
- data = [{}],
34
+ data = [{} as Datum],
38
35
  class: className = '',
39
36
  ...options
40
37
  }: RuleYMarkProps = $derived({
@@ -1,14 +1,86 @@
1
- export type RuleYMarkProps = Omit<BaseMarkProps, 'fill' | 'fillOpacity'> & {
2
- data: DataRecord[];
3
- y?: ChannelAccessor;
4
- x1?: ChannelAccessor;
5
- x2?: ChannelAccessor;
6
- inset?: ConstantAccessor<number>;
7
- insetLeft?: ConstantAccessor<number>;
8
- insetRight?: ConstantAccessor<number>;
9
- };
10
- import type { DataRecord, BaseMarkProps, ConstantAccessor, ChannelAccessor } from '../types.js';
1
+ import type { DataRecord, ConstantAccessor, ChannelAccessor } from '../types/index.js';
2
+ declare class __sveltets_Render<Datum = DataRecord> {
3
+ props(): Omit<Partial<{
4
+ filter?: ConstantAccessor<boolean, Datum>;
5
+ facet?: "auto" | "include" | "exclude";
6
+ fx: ChannelAccessor<Datum>;
7
+ fy: ChannelAccessor<Datum>;
8
+ dx: ConstantAccessor<number, Datum>;
9
+ dy: ConstantAccessor<number, Datum>;
10
+ fill: ChannelAccessor<Datum>;
11
+ fillOpacity: ConstantAccessor<number, Datum>;
12
+ sort: {
13
+ channel: string;
14
+ order?: "ascending" | "descending";
15
+ } | ((a: import("../types/data").RawValue, b: import("../types/data").RawValue) => number) | ConstantAccessor<import("../types/data").RawValue, Datum>;
16
+ stroke: ChannelAccessor<Datum>;
17
+ strokeWidth: ConstantAccessor<number, Datum>;
18
+ strokeOpacity: ConstantAccessor<number, Datum>;
19
+ strokeLinejoin: ConstantAccessor<import("csstype").Property.StrokeLinejoin, Datum>;
20
+ strokeLinecap: ConstantAccessor<import("csstype").Property.StrokeLinecap, Datum>;
21
+ strokeMiterlimit: ConstantAccessor<number, Datum>;
22
+ opacity: ChannelAccessor<Datum>;
23
+ strokeDasharray: ConstantAccessor<string, Datum>;
24
+ strokeDashoffset: ConstantAccessor<number, Datum>;
25
+ mixBlendMode: ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
26
+ clipPath: string;
27
+ imageFilter: ConstantAccessor<string, Datum>;
28
+ shapeRendering: ConstantAccessor<import("csstype").Property.ShapeRendering, Datum>;
29
+ paintOrder: ConstantAccessor<string, Datum>;
30
+ onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
31
+ ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
32
+ onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
33
+ onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
34
+ onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
35
+ onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
36
+ onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
37
+ onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
38
+ onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
39
+ onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
40
+ onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
41
+ onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
42
+ onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
43
+ onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
44
+ onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
45
+ onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
46
+ onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
47
+ ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
48
+ ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
49
+ ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
50
+ ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
51
+ ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
52
+ ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
53
+ ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
54
+ ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
55
+ ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
56
+ ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
57
+ ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
58
+ oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
59
+ onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
60
+ class: string | null;
61
+ cursor: ConstantAccessor<import("csstype").Property.Cursor, Datum>;
62
+ }>, "fill" | "fillOpacity"> & {
63
+ data?: Datum[] | undefined;
64
+ y?: ChannelAccessor<Datum>;
65
+ x1?: ChannelAccessor<Datum>;
66
+ x2?: ChannelAccessor<Datum>;
67
+ inset?: ConstantAccessor<number, Datum>;
68
+ insetLeft?: ConstantAccessor<number, Datum>;
69
+ insetRight?: ConstantAccessor<number, Datum>;
70
+ };
71
+ events(): {};
72
+ slots(): {};
73
+ bindings(): "";
74
+ exports(): {};
75
+ }
76
+ interface $$IsomorphicComponent {
77
+ new <Datum = DataRecord>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Datum>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Datum>['props']>, ReturnType<__sveltets_Render<Datum>['events']>, ReturnType<__sveltets_Render<Datum>['slots']>> & {
78
+ $$bindings?: ReturnType<__sveltets_Render<Datum>['bindings']>;
79
+ } & ReturnType<__sveltets_Render<Datum>['exports']>;
80
+ <Datum = DataRecord>(internal: unknown, props: ReturnType<__sveltets_Render<Datum>['props']> & {}): ReturnType<__sveltets_Render<Datum>['exports']>;
81
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
82
+ }
11
83
  /** Renders horizontal rule lines at specified y positions with customizable horizontal range */
12
- declare const RuleY: import("svelte").Component<RuleYMarkProps, {}, "">;
13
- type RuleY = ReturnType<typeof RuleY>;
84
+ declare const RuleY: $$IsomorphicComponent;
85
+ type RuleY<Datum = DataRecord> = InstanceType<typeof RuleY<Datum>>;
14
86
  export default RuleY;
@@ -1,15 +1,14 @@
1
1
  <!-- @component
2
2
  Geo mark with Sphere geometry object -->
3
3
 
4
- <script module lang="ts">
5
- import { type BaseMarkProps, type LinkableMarkProps } from '../types.js';
6
- export type SphereMarkProps = BaseMarkProps & LinkableMarkProps;
7
- </script>
8
-
9
4
  <script lang="ts">
10
- import Geo from './Geo.svelte';
5
+ interface SphereMarkProps
6
+ extends BaseMarkProps<GeoJSON.GeoJsonObject>,
7
+ LinkableMarkProps<GeoJSON.GeoJsonObject> {}
8
+
11
9
  import { getContext } from 'svelte';
12
- import type { PlotDefaults } from '../types.js';
10
+ import Geo from './Geo.svelte';
11
+ import type { BaseMarkProps, LinkableMarkProps, PlotDefaults } from '../types/index.js';
13
12
 
14
13
  let markProps: SphereMarkProps = $props();
15
14
 
@@ -1,5 +1,6 @@
1
- import { type BaseMarkProps, type LinkableMarkProps } from '../types.js';
2
- export type SphereMarkProps = BaseMarkProps & LinkableMarkProps;
1
+ import type { BaseMarkProps, LinkableMarkProps } from '../types/index.js';
2
+ interface SphereMarkProps extends BaseMarkProps<GeoJSON.GeoJsonObject>, LinkableMarkProps<GeoJSON.GeoJsonObject> {
3
+ }
3
4
  /** Geo mark with Sphere geometry object */
4
5
  declare const Sphere: import("svelte").Component<SphereMarkProps, {}, "">;
5
6
  type Sphere = ReturnType<typeof Sphere>;
@@ -2,14 +2,22 @@
2
2
  @component
3
3
  Wrapper around the vector mark with presets suitable for spike maps
4
4
  -->
5
- <script module lang="ts">
6
- export type SpikeMarkProps = VectorMarkProps;
7
- </script>
8
-
9
- <script lang="ts">
10
- import Vector, { type VectorMarkProps } from './Vector.svelte';
11
- import type { PlotDefaults } from '../types.js';
12
- import { getContext } from 'svelte';
5
+ <script lang="ts" generics="Datum extends DataRecord">
6
+ interface SpikeMarkProps
7
+ extends Omit<
8
+ ComponentProps<typeof Vector>,
9
+ 'data' | 'x' | 'y' | 'r' | 'length' | 'rotate'
10
+ > {
11
+ data: Datum[];
12
+ x: ChannelAccessor<Datum>;
13
+ y: ChannelAccessor<Datum>;
14
+ r?: number;
15
+ length?: ChannelAccessor<Datum>;
16
+ rotate?: ChannelAccessor<Datum>;
17
+ }
18
+ import Vector from './Vector.svelte';
19
+ import type { ChannelAccessor, DataRecord, PlotDefaults } from '../types/index.js';
20
+ import { getContext, type ComponentProps } from 'svelte';
13
21
 
14
22
  let markProps: SpikeMarkProps = $props();
15
23
 
@@ -24,7 +32,7 @@
24
32
  ...getContext<PlotDefaults>('svelteplot/_defaults').spike
25
33
  };
26
34
 
27
- const { data = [{}], ...options }: SpikeMarkProps = $derived({
35
+ const { data = [{} as Datum], ...options }: SpikeMarkProps = $derived({
28
36
  ...DEFAULTS,
29
37
  ...markProps
30
38
  });
@@ -1,6 +1,96 @@
1
- export type SpikeMarkProps = VectorMarkProps;
2
- import { type VectorMarkProps } from './Vector.svelte';
1
+ import type { ChannelAccessor, DataRecord } from '../types/index.js';
2
+ declare class __sveltets_Render<Datum extends DataRecord> {
3
+ props(): Omit<Partial<{
4
+ filter?: import("../types/index.js").ConstantAccessor<boolean, DataRecord>;
5
+ facet?: "auto" | "include" | "exclude";
6
+ fx: ChannelAccessor<DataRecord>;
7
+ fy: ChannelAccessor<DataRecord>;
8
+ dx: import("../types/index.js").ConstantAccessor<number, DataRecord>;
9
+ dy: import("../types/index.js").ConstantAccessor<number, DataRecord>;
10
+ fill: ChannelAccessor<DataRecord>;
11
+ fillOpacity: import("../types/index.js").ConstantAccessor<number, DataRecord>;
12
+ sort: {
13
+ channel: string;
14
+ order?: "ascending" | "descending";
15
+ } | ((a: import("../types/data").RawValue, b: import("../types/data").RawValue) => number) | import("../types/index.js").ConstantAccessor<import("../types/data").RawValue, DataRecord>;
16
+ stroke: ChannelAccessor<DataRecord>;
17
+ strokeWidth: import("../types/index.js").ConstantAccessor<number, DataRecord>;
18
+ strokeOpacity: import("../types/index.js").ConstantAccessor<number, DataRecord>;
19
+ strokeLinejoin: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, DataRecord>;
20
+ strokeLinecap: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, DataRecord>;
21
+ strokeMiterlimit: import("../types/index.js").ConstantAccessor<number, DataRecord>;
22
+ opacity: ChannelAccessor<DataRecord>;
23
+ strokeDasharray: import("../types/index.js").ConstantAccessor<string, DataRecord>;
24
+ strokeDashoffset: import("../types/index.js").ConstantAccessor<number, DataRecord>;
25
+ mixBlendMode: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, DataRecord>;
26
+ clipPath: string;
27
+ imageFilter: import("../types/index.js").ConstantAccessor<string, DataRecord>;
28
+ shapeRendering: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, DataRecord>;
29
+ paintOrder: import("../types/index.js").ConstantAccessor<string, DataRecord>;
30
+ onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
31
+ ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
32
+ onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
33
+ onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
34
+ onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
35
+ onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
36
+ onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
37
+ onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
38
+ onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
39
+ onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
40
+ onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
41
+ onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
42
+ onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
43
+ onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
44
+ onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
45
+ onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
46
+ onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
47
+ ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
48
+ ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
49
+ ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
50
+ ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
51
+ ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
52
+ ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
53
+ ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
54
+ ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
55
+ ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
56
+ ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
57
+ ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
58
+ oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
59
+ onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement>;
60
+ class: string | null;
61
+ cursor: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, DataRecord>;
62
+ }> & {
63
+ data: DataRecord[];
64
+ x: ChannelAccessor<DataRecord>;
65
+ y: ChannelAccessor<DataRecord>;
66
+ r?: number;
67
+ length?: ChannelAccessor<DataRecord>;
68
+ rotate?: ChannelAccessor<DataRecord>;
69
+ anchor?: "start" | "middle" | "end";
70
+ shape?: "arrow" | "spike" | "arrow-filled" | import("./Vector.svelte").ShapeRenderer;
71
+ children?: import("svelte").Snippet;
72
+ canvas?: boolean;
73
+ }, "r" | "length" | "x" | "y" | "data" | "rotate"> & {
74
+ data: Datum[];
75
+ x: ChannelAccessor<Datum>;
76
+ y: ChannelAccessor<Datum>;
77
+ r?: number;
78
+ length?: ChannelAccessor<Datum>;
79
+ rotate?: ChannelAccessor<Datum>;
80
+ };
81
+ events(): {};
82
+ slots(): {};
83
+ bindings(): "";
84
+ exports(): {};
85
+ }
86
+ interface $$IsomorphicComponent {
87
+ new <Datum extends DataRecord>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Datum>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Datum>['props']>, ReturnType<__sveltets_Render<Datum>['events']>, ReturnType<__sveltets_Render<Datum>['slots']>> & {
88
+ $$bindings?: ReturnType<__sveltets_Render<Datum>['bindings']>;
89
+ } & ReturnType<__sveltets_Render<Datum>['exports']>;
90
+ <Datum extends DataRecord>(internal: unknown, props: ReturnType<__sveltets_Render<Datum>['props']> & {}): ReturnType<__sveltets_Render<Datum>['exports']>;
91
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
92
+ }
3
93
  /** Wrapper around the vector mark with presets suitable for spike maps */
4
- declare const Spike: import("svelte").Component<VectorMarkProps, {}, "">;
5
- type Spike = ReturnType<typeof Spike>;
94
+ declare const Spike: $$IsomorphicComponent;
95
+ type Spike<Datum extends DataRecord> = InstanceType<typeof Spike<Datum>>;
6
96
  export default Spike;
@@ -2,7 +2,7 @@
2
2
  import { getContext } from 'svelte';
3
3
  import { symbol as d3Symbol } from 'd3-shape';
4
4
  import { maybeSymbol } from '../helpers/symbols.js';
5
- import type { PlotContext } from '../types.js';
5
+ import type { PlotContext } from '../types/index.js';
6
6
 
7
7
  const { getPlotState } = getContext<PlotContext>('svelteplot');
8
8
  let plot = $derived(getPlotState());
@@ -2,22 +2,32 @@
2
2
  @component
3
3
  Useful for adding SVG text labels to your plot.
4
4
  -->
5
- <script module lang="ts">
6
- export type TextMarkProps = BaseMarkProps & {
7
- data: DataRecord[];
8
- x: ChannelAccessor;
9
- y: ChannelAccessor;
5
+
6
+ <script lang="ts" generics="Datum extends DataRecord">
7
+ interface TextMarkProps extends BaseMarkProps<Datum>, LinkableMarkProps<Datum> {
8
+ data: Datum[];
9
+ x: ChannelAccessor<Datum>;
10
+ y: ChannelAccessor<Datum>;
10
11
  children?: Snippet;
11
- text: ConstantAccessor<string>;
12
- title?: ConstantAccessor<string>;
12
+ text: ConstantAccessor<string | null | false | undefined, Datum>;
13
+ title?: ConstantAccessor<string, Datum>;
14
+ /**
15
+ * the font size of the text
16
+ */
17
+ fontSize?: ConstantAccessor<number, Datum>;
13
18
  /**
14
19
  * if you want to apply class names to individual text elements
15
20
  */
16
- textClass?: ConstantAccessor<string>;
21
+ textClass?: ConstantAccessor<string, Datum>;
17
22
  /**
18
23
  * the line anchor for vertical position; top, bottom, or middle
19
24
  */
20
25
  lineAnchor?: ConstantAccessor<'bottom' | 'top' | 'middle'>;
26
+ /**
27
+ * line height as multiplier of font size
28
+ * @default 1.2
29
+ */
30
+ lineHeight?: ConstantAccessor<number, Datum>;
21
31
  frameAnchor?: ConstantAccessor<
22
32
  | 'bottom'
23
33
  | 'top'
@@ -26,37 +36,43 @@
26
36
  | 'top-left'
27
37
  | 'bottom-left'
28
38
  | 'top-right'
29
- | 'bottom-right'
39
+ | 'bottom-right',
40
+ Datum
30
41
  >;
31
- };
32
- </script>
42
+ }
33
43
 
34
- <script lang="ts">
35
44
  import { getContext, type Snippet } from 'svelte';
36
45
  import GroupMultiple from './helpers/GroupMultiple.svelte';
37
46
  import type {
38
- PlotContext,
39
47
  DataRecord,
40
48
  BaseMarkProps,
41
49
  ConstantAccessor,
42
50
  ChannelAccessor,
43
- PlotDefaults
44
- } from '../types.js';
51
+ PlotDefaults,
52
+ TransformArg,
53
+ RawValue,
54
+ LinkableMarkProps
55
+ } from '../types/index.js';
45
56
  import { resolveProp, resolveStyles } from '../helpers/resolve.js';
46
57
  import Mark from '../Mark.svelte';
47
- import { sort } from '../index.js';
58
+ import { sort } from '..';
59
+ import Anchor from './helpers/Anchor.svelte';
60
+
61
+ import MultilineText from './helpers/MultilineText.svelte';
48
62
 
49
63
  const DEFAULTS = {
50
64
  fontSize: 12,
51
65
  fontWeight: 500,
52
66
  strokeWidth: 1.6,
67
+ frameAnchor: 'center',
68
+ lineHeight: 1.1,
53
69
  ...getContext<PlotDefaults>('svelteplot/_defaults').text
54
70
  };
55
71
 
56
72
  let markProps: TextMarkProps = $props();
57
73
 
58
74
  const {
59
- data = [{}],
75
+ data = [{} as Datum],
60
76
  class: className = '',
61
77
  ...options
62
78
  }: TextMarkProps = $derived({
@@ -64,21 +80,12 @@
64
80
  ...markProps
65
81
  });
66
82
 
67
- const { getPlotState } = getContext<PlotContext>('svelteplot');
68
- let plot = $derived(getPlotState());
69
-
70
- const LINE_ANCHOR = {
71
- bottom: 'auto',
72
- middle: 'central',
73
- top: 'hanging'
74
- } as const;
75
-
76
83
  const args = $derived(
77
84
  sort({
78
85
  data,
79
86
  ...options
80
87
  })
81
- );
88
+ ) as TextMarkProps;
82
89
  </script>
83
90
 
84
91
  <Mark
@@ -94,113 +101,17 @@
94
101
  'strokeOpacity',
95
102
  'fillOpacity'
96
103
  ]}
97
- required={['x', 'y']}
104
+ required={[]}
98
105
  {...args}>
99
106
  {#snippet children({ mark, scaledData, usedScales })}
100
107
  <GroupMultiple class="text {className}" length={className ? 2 : args.data.length}>
101
108
  {#each scaledData as d, i (i)}
102
109
  {#if d.valid}
103
- {@const title = resolveProp(args.title, d.datum, '')}
104
- {@const frameAnchor = resolveProp(args.frameAnchor, d.datum)}
105
- {@const isLeft =
106
- frameAnchor === 'left' ||
107
- frameAnchor === 'top-left' ||
108
- frameAnchor === 'bottom-left'}
109
- {@const isRight =
110
- frameAnchor === 'right' ||
111
- frameAnchor === 'top-right' ||
112
- frameAnchor === 'bottom-right'}
113
- {@const isTop =
114
- frameAnchor === 'top' ||
115
- frameAnchor === 'top-left' ||
116
- frameAnchor === 'top-right'}
117
- {@const isBottom =
118
- frameAnchor === 'bottom' ||
119
- frameAnchor === 'bottom-left' ||
120
- frameAnchor === 'bottom-right'}
121
- {@const [x, y] =
122
- args.x != null && args.y != null
123
- ? [d.x, d.y]
124
- : [
125
- args.x != null
126
- ? d.x
127
- : isLeft
128
- ? plot.options.marginLeft
129
- : isRight
130
- ? plot.options.marginLeft + plot.facetWidth
131
- : plot.options.marginLeft + plot.facetWidth * 0.5,
132
- args.y != null
133
- ? d.y
134
- : isTop
135
- ? plot.options.marginTop
136
- : isBottom
137
- ? plot.options.marginTop + plot.facetHeight
138
- : plot.options.marginTop + plot.facetHeight * 0.5
139
- ]}
140
-
141
- {@const dx = +resolveProp(args.dx, d.datum, 0)}
142
- {@const dy = +resolveProp(args.dy, d.datum, 0)}
143
110
  {@const textLines = String(resolveProp(args.text, d.datum, '')).split('\n')}
144
- {@const lineAnchor = resolveProp(
145
- args.lineAnchor,
146
- d.datum,
147
- args.y != null ? 'middle' : isTop ? 'top' : isBottom ? 'bottom' : 'middle'
148
- )}
149
- {@const textClassName = resolveProp(args.textClass, d.datum, null)}
150
111
 
151
- {@const [style, styleClass] = resolveStyles(
152
- plot,
153
- { ...d, __tspanIndex: 0 },
154
- {
155
- fontSize: 12,
156
- fontWeight: 500,
157
- strokeWidth: 1.6,
158
- textAnchor: isLeft ? 'start' : isRight ? 'end' : 'middle',
159
- ...args
160
- },
161
- 'fill',
162
- usedScales
163
- )}
164
-
165
- {#if textLines.length > 1}
166
- <!-- multiline text-->
167
- {@const fontSize = resolveProp(args.fontSize, d.datum) || 12}
168
- <text
169
- class={[textClassName]}
170
- dominant-baseline={LINE_ANCHOR[lineAnchor]}
171
- transform="translate({Math.round(x + dx)},{Math.round(
172
- y +
173
- dy -
174
- (lineAnchor === 'bottom'
175
- ? textLines.length - 1
176
- : lineAnchor === 'middle'
177
- ? (textLines.length - 1) * 0.5
178
- : 0) *
179
- fontSize
180
- )})"
181
- >{#each textLines as line, l (l)}<tspan
182
- x="0"
183
- dy={l ? fontSize : 0}
184
- class={styleClass}
185
- {style}>{line}</tspan
186
- >{/each}{#if title}<title>{title}</title>{/if}</text>
187
- {:else}
188
- <!-- singleline text-->
189
- <text
190
- class={[textClassName, styleClass]}
191
- dominant-baseline={LINE_ANCHOR[lineAnchor]}
192
- transform="translate({Math.round(x + dx)},{Math.round(y + dy)})"
193
- {style}
194
- >{textLines[0]}{#if title}<title>{title}</title>{/if}</text>
195
- {/if}
112
+ <MultilineText {textLines} {d} {args} {usedScales} />
196
113
  {/if}
197
114
  {/each}
198
115
  </GroupMultiple>
199
116
  {/snippet}
200
117
  </Mark>
201
-
202
- <style>
203
- text {
204
- paint-order: stroke fill;
205
- }
206
- </style>