@pibbl/core 0.0.1 → 0.0.2

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 (167) hide show
  1. package/README.md +1 -1
  2. package/dist/features/machines/animation.d.ts +64 -0
  3. package/dist/features/machines/animation.js +55 -0
  4. package/dist/features/machines/animation.js.map +7 -0
  5. package/dist/features/machines/animation.mjs +1 -0
  6. package/dist/features/machines/assign.d.ts +16 -0
  7. package/dist/features/machines/assign.js +15 -0
  8. package/dist/features/machines/assign.js.map +7 -0
  9. package/dist/features/machines/callback.d.ts +9 -0
  10. package/dist/features/machines/callback.js +7 -0
  11. package/dist/features/machines/callback.js.map +7 -0
  12. package/dist/features/machines/hook.d.ts +30 -0
  13. package/dist/features/machines/hook.js +37 -0
  14. package/dist/features/machines/hook.js.map +7 -0
  15. package/dist/features/machines/index.d.ts +6 -0
  16. package/dist/features/machines/index.js +12 -0
  17. package/dist/features/machines/index.js.map +7 -0
  18. package/dist/features/machines/index.mjs +1 -0
  19. package/dist/features/machines/runtime.d.ts +18 -0
  20. package/dist/features/machines/runtime.js +363 -0
  21. package/dist/features/machines/runtime.js.map +7 -0
  22. package/dist/features/machines/types.d.ts +164 -0
  23. package/dist/features/physics/2d-geometry.d.ts +3 -3
  24. package/dist/features/physics/2d-geometry.js.map +1 -1
  25. package/dist/features/physics/2d.d.ts +115 -62
  26. package/dist/features/physics/2d.js +59 -28
  27. package/dist/features/physics/2d.js.map +2 -2
  28. package/dist/features/physics/lib/2d/query-types.d.ts +6 -0
  29. package/dist/features/physics/lib/2d/runtime/controller.d.ts +7 -6
  30. package/dist/features/physics/lib/2d/runtime/controller.js.map +2 -2
  31. package/dist/features/physics/lib/2d/types.d.ts +8 -30
  32. package/dist/features/physics/lib/2d/world/queries.d.ts +7 -6
  33. package/dist/features/physics/lib/2d/world/queries.js.map +2 -2
  34. package/dist/features/sprites/formats/aseprite.d.ts +5 -0
  35. package/dist/features/sprites/formats/texture-packer.d.ts +5 -0
  36. package/dist/features/sprites/index.d.ts +6 -0
  37. package/dist/features/sprites/loader.d.ts +25 -0
  38. package/dist/features/sprites/model.d.ts +75 -0
  39. package/dist/features/sprites/sprite.d.ts +22 -0
  40. package/dist/features/viz/index.d.ts +28 -3
  41. package/dist/features/viz/index.js +40 -4
  42. package/dist/features/viz/index.js.map +2 -2
  43. package/dist/features/viz/lib/axis-labels.d.ts +2 -0
  44. package/dist/features/viz/lib/axis-labels.js +41 -0
  45. package/dist/features/viz/lib/axis-labels.js.map +7 -0
  46. package/dist/features/viz/lib/axis-title.d.ts +23 -0
  47. package/dist/features/viz/lib/axis-title.js +23 -0
  48. package/dist/features/viz/lib/axis-title.js.map +7 -0
  49. package/dist/features/viz/lib/axis.d.ts +1 -1
  50. package/dist/features/viz/lib/axis.js +50 -50
  51. package/dist/features/viz/lib/axis.js.map +2 -2
  52. package/dist/features/viz/lib/bar-scale.d.ts +7 -0
  53. package/dist/features/viz/lib/bar-scale.js +34 -0
  54. package/dist/features/viz/lib/bar-scale.js.map +7 -0
  55. package/dist/features/viz/lib/bar-series.js +5 -4
  56. package/dist/features/viz/lib/bar-series.js.map +2 -2
  57. package/dist/features/viz/lib/chart-lines.d.ts +41 -0
  58. package/dist/features/viz/lib/chart-lines.js +32 -0
  59. package/dist/features/viz/lib/chart-lines.js.map +7 -0
  60. package/dist/features/viz/lib/hover-data.js +2 -2
  61. package/dist/features/viz/lib/hover-data.js.map +2 -2
  62. package/dist/features/viz/lib/hover-types.d.ts +5 -5
  63. package/dist/features/viz/lib/line-series.js +3 -3
  64. package/dist/features/viz/lib/line-series.js.map +2 -2
  65. package/dist/features/viz/lib/linear-scale-component.d.ts +7 -0
  66. package/dist/features/viz/lib/linear-scale-component.js +18 -0
  67. package/dist/features/viz/lib/linear-scale-component.js.map +7 -0
  68. package/dist/features/viz/lib/linear-scale.js +1 -1
  69. package/dist/features/viz/lib/linear-scale.js.map +2 -2
  70. package/dist/features/viz/lib/log-scale-component.d.ts +7 -0
  71. package/dist/features/viz/lib/log-scale-component.js +19 -0
  72. package/dist/features/viz/lib/log-scale-component.js.map +7 -0
  73. package/dist/features/viz/lib/log-scale.d.ts +2 -0
  74. package/dist/features/viz/lib/log-scale.js +53 -0
  75. package/dist/features/viz/lib/log-scale.js.map +7 -0
  76. package/dist/features/viz/lib/nearest.d.ts +9 -9
  77. package/dist/features/viz/lib/nearest.js.map +1 -1
  78. package/dist/features/viz/lib/numeric-ticks.d.ts +38 -0
  79. package/dist/features/viz/lib/numeric-ticks.js +54 -0
  80. package/dist/features/viz/lib/numeric-ticks.js.map +7 -0
  81. package/dist/features/viz/lib/plot-series.js +2 -2
  82. package/dist/features/viz/lib/plot-series.js.map +2 -2
  83. package/dist/features/viz/lib/point-scale-component.d.ts +7 -0
  84. package/dist/features/viz/lib/point-scale-component.js +19 -0
  85. package/dist/features/viz/lib/point-scale-component.js.map +7 -0
  86. package/dist/features/viz/lib/point-scale.d.ts +2 -0
  87. package/dist/features/viz/lib/point-scale.js +45 -0
  88. package/dist/features/viz/lib/point-scale.js.map +7 -0
  89. package/dist/features/viz/lib/point-series.js +2 -2
  90. package/dist/features/viz/lib/point-series.js.map +2 -2
  91. package/dist/features/viz/lib/reference-band.d.ts +16 -0
  92. package/dist/features/viz/lib/reference-band.js +27 -0
  93. package/dist/features/viz/lib/reference-band.js.map +7 -0
  94. package/dist/features/viz/lib/scale-adjust.js +9 -4
  95. package/dist/features/viz/lib/scale-adjust.js.map +2 -2
  96. package/dist/features/viz/lib/scale-context.d.ts +5 -4
  97. package/dist/features/viz/lib/scale-context.js +15 -11
  98. package/dist/features/viz/lib/scale-context.js.map +2 -2
  99. package/dist/features/viz/lib/scale-provider.d.ts +2 -0
  100. package/dist/features/viz/lib/scale-provider.js +13 -0
  101. package/dist/features/viz/lib/scale-provider.js.map +7 -0
  102. package/dist/features/viz/lib/scale-ticks.d.ts +5 -0
  103. package/dist/features/viz/lib/scale-ticks.js +49 -0
  104. package/dist/features/viz/lib/scale-ticks.js.map +7 -0
  105. package/dist/features/viz/lib/scale-view.d.ts +4 -0
  106. package/dist/features/viz/lib/scale-view.js +21 -0
  107. package/dist/features/viz/lib/scale-view.js.map +7 -0
  108. package/dist/features/viz/lib/symlog-scale-component.d.ts +7 -0
  109. package/dist/features/viz/lib/symlog-scale-component.js +19 -0
  110. package/dist/features/viz/lib/symlog-scale-component.js.map +7 -0
  111. package/dist/features/viz/lib/symlog-scale.d.ts +2 -0
  112. package/dist/features/viz/lib/symlog-scale.js +38 -0
  113. package/dist/features/viz/lib/symlog-scale.js.map +7 -0
  114. package/dist/features/viz/lib/types.d.ts +95 -18
  115. package/dist/features/viz/lib/use-bar-scale.d.ts +8 -0
  116. package/dist/features/viz/lib/use-bar-scale.js +9 -0
  117. package/dist/features/viz/lib/use-bar-scale.js.map +7 -0
  118. package/dist/features/viz/lib/use-continuous-scale.d.ts +8 -0
  119. package/dist/features/viz/lib/use-continuous-scale.js +9 -0
  120. package/dist/features/viz/lib/use-continuous-scale.js.map +7 -0
  121. package/dist/features/viz/lib/use-linear-scale.d.ts +8 -0
  122. package/dist/features/viz/lib/use-linear-scale.js +9 -0
  123. package/dist/features/viz/lib/use-linear-scale.js.map +7 -0
  124. package/dist/features/viz/lib/use-log-scale.d.ts +8 -0
  125. package/dist/features/viz/lib/use-log-scale.js +9 -0
  126. package/dist/features/viz/lib/use-log-scale.js.map +7 -0
  127. package/dist/features/viz/lib/use-point-scale.d.ts +8 -0
  128. package/dist/features/viz/lib/use-point-scale.js +9 -0
  129. package/dist/features/viz/lib/use-point-scale.js.map +7 -0
  130. package/dist/features/viz/lib/use-symlog-scale.d.ts +8 -0
  131. package/dist/features/viz/lib/use-symlog-scale.js +9 -0
  132. package/dist/features/viz/lib/use-symlog-scale.js.map +7 -0
  133. package/dist/features/viz/lib/use-utc-scale.d.ts +8 -0
  134. package/dist/features/viz/lib/use-utc-scale.js +9 -0
  135. package/dist/features/viz/lib/use-utc-scale.js.map +7 -0
  136. package/dist/features/viz/lib/utc-labels.d.ts +12 -0
  137. package/dist/features/viz/lib/utc-labels.js +27 -0
  138. package/dist/features/viz/lib/utc-labels.js.map +7 -0
  139. package/dist/features/viz/lib/utc-scale-component.d.ts +7 -0
  140. package/dist/features/viz/lib/utc-scale-component.js +18 -0
  141. package/dist/features/viz/lib/utc-scale-component.js.map +7 -0
  142. package/dist/features/viz/lib/utc-scale.d.ts +21 -0
  143. package/dist/features/viz/lib/utc-scale.js +123 -0
  144. package/dist/features/viz/lib/utc-scale.js.map +7 -0
  145. package/dist/index.d.ts +1 -1
  146. package/dist/index.js.map +1 -1
  147. package/dist/lib/animation/definition.d.ts +5 -3
  148. package/dist/lib/animation/definition.js +29 -4
  149. package/dist/lib/animation/definition.js.map +2 -2
  150. package/dist/lib/animation/playback.d.ts +8 -0
  151. package/dist/lib/animation/playback.js +33 -11
  152. package/dist/lib/animation/playback.js.map +2 -2
  153. package/dist/lib/animation/spring.d.ts +3 -1
  154. package/dist/lib/animation/spring.js.map +2 -2
  155. package/dist/lib/animation/types.d.ts +29 -73
  156. package/dist/lib/hooks/use-animated-value.d.ts +11 -21
  157. package/dist/lib/hooks/use-animated-value.js +23 -70
  158. package/dist/lib/hooks/use-animated-value.js.map +3 -3
  159. package/dist/lib/hooks/use-playback.js +1 -0
  160. package/dist/lib/hooks/use-playback.js.map +2 -2
  161. package/package.json +18 -4
  162. package/dist/features/viz/lib/scale.d.ts +0 -11
  163. package/dist/features/viz/lib/scale.js +0 -80
  164. package/dist/features/viz/lib/scale.js.map +0 -7
  165. package/dist/features/viz/lib/use-scale.d.ts +0 -20
  166. package/dist/features/viz/lib/use-scale.js +0 -10
  167. package/dist/features/viz/lib/use-scale.js.map +0 -7
@@ -1,7 +1,7 @@
1
1
  import type { BarCategoryAccessor } from "./bar-series.js";
2
- import type { Scale } from "./scale.js";
2
+ import type { LinearScale } from "./linear-scale-component.js";
3
3
  import type { nearestDomainValue } from "./nearest.js";
4
- import type { useScale } from "./use-scale.js";
4
+ import type { useLinearScale } from "./use-linear-scale.js";
5
5
  import type { Axis } from "./axis.js";
6
6
  import type { PointAccessor } from "./point-types.js";
7
7
  import type { ScaleAdjust } from "./scale-adjust.js";
@@ -34,7 +34,7 @@ export type ScaleRange = "width" | "height" | readonly [number, number];
34
34
  *
35
35
  * @see {@link ScaleRange}
36
36
  * @see {@link ScaleId}
37
- * @see {@link BandScaleProps}
37
+ * @see {@link BarScaleProps}
38
38
  */
39
39
  export type BandScaleRange = ScaleRange | {
40
40
  /** Identifier of a parent band scale whose bandwidth supplies this range. See {@link ScaleId}. */
@@ -58,13 +58,11 @@ export type ScaleLayoutStyle = Pick<BoxStyle, "width" | "height"> & LayoutItemSt
58
58
  * @see {@link SignalStyle}
59
59
  * @see {@link ScaleLayoutStyle}
60
60
  * @see {@link PibblNode}
61
- * @see {@link BandScaleProps}
61
+ * @see {@link BarScaleProps}
62
62
  */
63
63
  export interface LinearScaleProps {
64
64
  /** Stable identifier of this resource or connection. See {@link ScaleId}. */
65
65
  readonly id: ScaleId;
66
- /** The literal "linear" identifying this variant. See {@link LinearScaleProps}. */
67
- readonly type: "linear";
68
66
  /**
69
67
  * Data values or endpoints accepted by the scale. See {@link SignalValue}, {@link LinearDomain}
70
68
  * .
@@ -97,7 +95,7 @@ export type BandCategory = string | number;
97
95
  * The ordered categories allocated by a band scale.
98
96
  *
99
97
  * @see {@link BandCategory}
100
- * @see {@link BandScaleProps}
98
+ * @see {@link BarScaleProps}
101
99
  * @see {@link ResolvedBandScale}
102
100
  */
103
101
  export type BandDomain = readonly BandCategory[];
@@ -108,11 +106,9 @@ export type BandDomain = readonly BandCategory[];
108
106
  * @see {@link SignalValue}
109
107
  * @see {@link BandDomain}
110
108
  * @see {@link BandScaleRange}
111
- * @see {@link ScaleProps}
109
+ * @see {@link LinearScaleProps}
112
110
  */
113
- export interface BandScaleProps extends Omit<LinearScaleProps, "type" | "domain" | "range"> {
114
- /** The literal "band" identifying this variant. See {@link BandScaleProps}. */
115
- readonly type: "band";
111
+ export interface BarScaleProps extends Omit<LinearScaleProps, "domain" | "range"> {
116
112
  /**
117
113
  * Data values or endpoints accepted by the scale. See {@link SignalValue}, {@link BandDomain}.
118
114
  */
@@ -131,10 +127,15 @@ export interface BandScaleProps extends Omit<LinearScaleProps, "type" | "domain"
131
127
  * Authored inputs for Scale, including the declared data and presentation options.
132
128
  *
133
129
  * @see {@link LinearScaleProps}
134
- * @see {@link BandScaleProps}
135
- * @see {@link Scale}
130
+ * @see {@link BarScaleProps}
131
+ * @see {@link LinearScale}
136
132
  */
137
- export type ScaleProps = LinearScaleProps | BandScaleProps;
133
+ /** UTC timestamps use numeric epoch milliseconds. See {@link LinearDomain}. */
134
+ export type UtcDomain = LinearDomain;
135
+ /** Numeric endpoints shared by continuous scales. See {@link LinearDomain}. */
136
+ export type NumericDomain = LinearDomain;
137
+ /** Calendar-aware UTC scale inputs. See {@link LinearScaleProps}. */
138
+ export type UTCScaleProps = LinearScaleProps;
138
139
  /**
139
140
  * A resolved categorical mapping with its frame, bandwidth, and step.
140
141
  *
@@ -207,9 +208,73 @@ export interface ResolvedLinearScale {
207
208
  *
208
209
  * @see {@link ResolvedLinearScale}
209
210
  * @see {@link ResolvedBandScale}
210
- * @see {@link useScale}
211
+ * @see {@link useLinearScale}
211
212
  */
212
- export type ResolvedScale = ResolvedLinearScale | ResolvedBandScale;
213
+ /** UTC continuous mapping with stateless ISO formatting. See {@link ResolvedLinearScale}. */
214
+ export interface ResolvedUtcScale extends Omit<ResolvedLinearScale, "type"> {
215
+ /** UTC calendar scale discriminant. See {@link UTCScaleProps}. */
216
+ readonly type: "utc";
217
+ /**
218
+ * Formats a timestamp as full UTC ISO text without changing tick geometry.
219
+ * @param value - Finite epoch milliseconds inside the Date range.
220
+ * @returns ISO text with millisecond precision. See {@link ResolvedUtcScale}.
221
+ */
222
+ formatTick(value: number): string;
223
+ }
224
+ /** Any supported numeric mapping. See {@link ResolvedUtcScale}. */
225
+ export type ResolvedContinuousScale = ResolvedLinearScale | ResolvedUtcScale | ResolvedLogScale | ResolvedSymlogScale;
226
+ /** Positive logarithmic provider inputs. See {@link LinearScaleProps}. */
227
+ export interface LogScaleProps extends LinearScaleProps {
228
+ /** Base for power ticks; finite and greater than one, default 10. Mapping is base-independent. */
229
+ readonly base?: SignalValue<number>;
230
+ }
231
+ /** Positive logarithmic mapping with numeric inverse. See {@link ResolvedLinearScale}. */
232
+ export interface ResolvedLogScale extends Omit<ResolvedLinearScale, "type"> {
233
+ /** Logarithmic mapping discriminant. See {@link LogScaleProps}. */
234
+ readonly type: "log";
235
+ /** Resolved base used for power ticks. See {@link LogScaleProps}. */
236
+ readonly base: number;
237
+ }
238
+ /** A numeric or categorical mapping snapshot. See {@link ResolvedContinuousScale}. */
239
+ export type ResolvedScale = ResolvedContinuousScale | ResolvedBandScale | ResolvedPointScale;
240
+ /** Signed logarithmic scale inputs. See {@link LinearScaleProps}. */
241
+ export interface SymlogScaleProps extends LinearScaleProps {
242
+ /** Positive linear-to-log transition constant in domain units, default 1. */
243
+ readonly constant?: SignalValue<number>;
244
+ }
245
+ /** Signed logarithmic mapping through zero. See {@link ResolvedLinearScale}. */
246
+ export interface ResolvedSymlogScale extends Omit<ResolvedLinearScale, "type"> {
247
+ /** Signed logarithmic discriminant. See {@link SymlogScaleProps}. */
248
+ readonly type: "symlog";
249
+ /** Positive transition constant. See {@link SymlogScaleProps}. */
250
+ readonly constant: number;
251
+ }
252
+ /** Equally spaced categorical positions. See {@link LinearScaleProps}. */
253
+ export interface PointScaleProps extends Omit<LinearScaleProps, "domain"> {
254
+ /** Ordered unique string or finite numeric categories; accepts signals. See {@link BandDomain}. */
255
+ readonly domain: SignalValue<BandDomain>;
256
+ /** Nonnegative outer padding in step units, default 0. */
257
+ readonly padding?: SignalValue<number>;
258
+ }
259
+ /** Zero-width categorical point positions. See {@link ResolvedBandScale}. */
260
+ export interface ResolvedPointScale extends Omit<ResolvedBandScale, "type" | "bandwidth"> {
261
+ /** Categorical point discriminant. See {@link PointScaleProps}. */
262
+ readonly type: "point";
263
+ /** Resolved outer padding. See {@link PointScaleProps}. */
264
+ readonly padding: number;
265
+ /**
266
+ * Finds the nearest category, clamping outside coordinates; ties choose first domain order.
267
+ * @param pixel - Finite range coordinate.
268
+ * @returns Category or undefined for an empty domain. See {@link BandCategory}.
269
+ */
270
+ invert(pixel: number): BandCategory | undefined;
271
+ /**
272
+ * Selects evenly spaced categories including endpoints when count permits.
273
+ * @param count - Integer maximum count 0–100, default 5.
274
+ * @returns Frozen categories in domain order. See {@link BandDomain}.
275
+ */
276
+ ticks(count?: number): BandDomain;
277
+ }
213
278
  import type { PibblEventHandlers, PibblEventParticipationOptions, FillStyle, StrokeStyle } from "@pibbl/core";
214
279
  /**
215
280
  * Supported geometry and presentation properties for Axis.
@@ -247,6 +312,18 @@ interface AxisBaseProps {
247
312
  * @returns Text to draw for the tick label.
248
313
  */
249
314
  readonly tickFormat?: (value: number | string, index: number) => string;
315
+ /** Label collision policy; allow preserves all labels (default), skip measures and omits overlaps without removing ticks. */
316
+ readonly labelOverlap?: SignalValue<"allow" | "skip">;
317
+ /** Minimum distance between visible labels in logical pixels; defaults to 8. */
318
+ readonly labelGap?: SignalValue<number>;
319
+ /** Long-label policy, default allow. Wrap/truncate require labelMaxWidth; coordinates remain unchanged. */
320
+ readonly labelOverflow?: SignalValue<"allow" | "wrap" | "truncate">;
321
+ /** Maximum measured line width in logical pixels, positive and finite. Required for wrap/truncate. */
322
+ readonly labelMaxWidth?: SignalValue<number>;
323
+ /** Maximum wrapped lines, integer 1–20; default 2. Excess text receives an ellipsis. */
324
+ readonly labelMaxLines?: SignalValue<number>;
325
+ /** Positive line advance in logical pixels; default is measured font height plus 4. */
326
+ readonly labelLineHeight?: SignalValue<number>;
250
327
  /**
251
328
  * Declared presentation and layout properties. See {@link SignalValue}, {@link SignalStyle},
252
329
  * {@link AxisStyle}.
@@ -372,7 +449,7 @@ type ScaleAdjustX = {
372
449
  * Horizontal coordinate or displacement in the containing coordinate system. See
373
450
  * {@link SignalValue}.
374
451
  */
375
- readonly x: SignalValue<number>;
452
+ readonly x: SignalValue<BandCategory>;
376
453
  /** The scale used to map horizontal data coordinates. See {@link ScaleId}. */
377
454
  readonly xScale: ScaleId;
378
455
  } | {
@@ -392,7 +469,7 @@ type ScaleAdjustY = {
392
469
  * Vertical coordinate or displacement in the containing coordinate system. See
393
470
  * {@link SignalValue}.
394
471
  */
395
- readonly y: SignalValue<number>;
472
+ readonly y: SignalValue<BandCategory>;
396
473
  /** The scale used to map vertical data coordinates. See {@link ScaleId}. */
397
474
  readonly yScale: ScaleId;
398
475
  } | {
@@ -0,0 +1,8 @@
1
+ import type { Signal } from "@pibbl/core";
2
+ import type { ResolvedBandScale, ScaleId } from "./types.js";
3
+ /**
4
+ * Reads an ancestor band scale as a stable, shared readonly signal.
5
+ * @param id - Ancestor scale identity. See {@link ScaleId}.
6
+ * @returns The reactive mapping. See {@link ResolvedBandScale} and {@link Signal}.
7
+ */
8
+ export declare function useBarScale(id: ScaleId): Signal<ResolvedBandScale>;
@@ -0,0 +1,9 @@
1
+ import { scaleView } from "./scale-view.js";
2
+ const views = /* @__PURE__ */ new WeakMap();
3
+ function useBarScale(id) {
4
+ return scaleView(views, id, "useBarScale", (kind) => kind === "band");
5
+ }
6
+ export {
7
+ useBarScale
8
+ };
9
+ //# sourceMappingURL=use-bar-scale.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/use-bar-scale.ts"],
4
+ "sourcesContent": ["import type { Signal } from \"@pibbl/core\";\nimport type { ResolvedBandScale, ResolvedScale, ScaleId } from \"./types.js\";\nimport { scaleView } from \"./scale-view.js\";\nconst views = new WeakMap<Signal<ResolvedScale>, Signal<ResolvedBandScale>>();\n/**\n * Reads an ancestor band scale as a stable, shared readonly signal.\n * @param id - Ancestor scale identity. See {@link ScaleId}.\n * @returns The reactive mapping. See {@link ResolvedBandScale} and {@link Signal}.\n */\nexport function useBarScale(id: ScaleId): Signal<ResolvedBandScale> {\n return scaleView(views, id, \"useBarScale\", (kind) => kind === \"band\");\n}\n"],
5
+ "mappings": "AAEA,SAAS,iBAAiB;AAC1B,MAAM,QAAQ,oBAAI,QAA0D;AAMrE,SAAS,YAAY,IAAwC;AAClE,SAAO,UAAU,OAAO,IAAI,eAAe,CAAC,SAAS,SAAS,MAAM;AACtE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,8 @@
1
+ import type { Signal } from "@pibbl/core";
2
+ import type { ResolvedContinuousScale, ScaleId } from "./types.js";
3
+ /**
4
+ * Reads an ancestor continuous scale as a stable, shared readonly signal.
5
+ * @param id - Ancestor scale identity. See {@link ScaleId}.
6
+ * @returns The reactive mapping. See {@link ResolvedContinuousScale} and {@link Signal}.
7
+ */
8
+ export declare function useContinuousScale(id: ScaleId): Signal<ResolvedContinuousScale>;
@@ -0,0 +1,9 @@
1
+ import { scaleView } from "./scale-view.js";
2
+ const views = /* @__PURE__ */ new WeakMap();
3
+ function useContinuousScale(id) {
4
+ return scaleView(views, id, "useContinuousScale", (kind) => kind !== "band" && kind !== "point");
5
+ }
6
+ export {
7
+ useContinuousScale
8
+ };
9
+ //# sourceMappingURL=use-continuous-scale.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/use-continuous-scale.ts"],
4
+ "sourcesContent": ["import type { Signal } from \"@pibbl/core\";\nimport type { ResolvedContinuousScale, ResolvedScale, ScaleId } from \"./types.js\";\nimport { scaleView } from \"./scale-view.js\";\nconst views = new WeakMap<Signal<ResolvedScale>, Signal<ResolvedContinuousScale>>();\n/**\n * Reads an ancestor continuous scale as a stable, shared readonly signal.\n * @param id - Ancestor scale identity. See {@link ScaleId}.\n * @returns The reactive mapping. See {@link ResolvedContinuousScale} and {@link Signal}.\n */\nexport function useContinuousScale(id: ScaleId): Signal<ResolvedContinuousScale> {\n return scaleView(views, id, \"useContinuousScale\", (kind) => kind !== \"band\" && kind !== \"point\");\n}\n"],
5
+ "mappings": "AAEA,SAAS,iBAAiB;AAC1B,MAAM,QAAQ,oBAAI,QAAgE;AAM3E,SAAS,mBAAmB,IAA8C;AAC/E,SAAO,UAAU,OAAO,IAAI,sBAAsB,CAAC,SAAS,SAAS,UAAU,SAAS,OAAO;AACjG;",
6
+ "names": []
7
+ }
@@ -0,0 +1,8 @@
1
+ import type { Signal } from "@pibbl/core";
2
+ import type { ResolvedLinearScale, ScaleId } from "./types.js";
3
+ /**
4
+ * Reads an ancestor linear scale as a stable, shared readonly signal.
5
+ * @param id - Ancestor scale identity. See {@link ScaleId}.
6
+ * @returns The reactive mapping. See {@link ResolvedLinearScale} and {@link Signal}.
7
+ */
8
+ export declare function useLinearScale(id: ScaleId): Signal<ResolvedLinearScale>;
@@ -0,0 +1,9 @@
1
+ import { scaleView } from "./scale-view.js";
2
+ const views = /* @__PURE__ */ new WeakMap();
3
+ function useLinearScale(id) {
4
+ return scaleView(views, id, "useLinearScale", (kind) => kind === "linear");
5
+ }
6
+ export {
7
+ useLinearScale
8
+ };
9
+ //# sourceMappingURL=use-linear-scale.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/use-linear-scale.ts"],
4
+ "sourcesContent": ["import type { Signal } from \"@pibbl/core\";\nimport type { ResolvedLinearScale, ResolvedScale, ScaleId } from \"./types.js\";\nimport { scaleView } from \"./scale-view.js\";\nconst views = new WeakMap<Signal<ResolvedScale>, Signal<ResolvedLinearScale>>();\n/**\n * Reads an ancestor linear scale as a stable, shared readonly signal.\n * @param id - Ancestor scale identity. See {@link ScaleId}.\n * @returns The reactive mapping. See {@link ResolvedLinearScale} and {@link Signal}.\n */\nexport function useLinearScale(id: ScaleId): Signal<ResolvedLinearScale> {\n return scaleView(views, id, \"useLinearScale\", (kind) => kind === \"linear\");\n}\n"],
5
+ "mappings": "AAEA,SAAS,iBAAiB;AAC1B,MAAM,QAAQ,oBAAI,QAA4D;AAMvE,SAAS,eAAe,IAA0C;AACvE,SAAO,UAAU,OAAO,IAAI,kBAAkB,CAAC,SAAS,SAAS,QAAQ;AAC3E;",
6
+ "names": []
7
+ }
@@ -0,0 +1,8 @@
1
+ import type { Signal } from "@pibbl/core";
2
+ import type { ResolvedLogScale, ScaleId } from "./types.js";
3
+ /**
4
+ * Reads an ancestor logarithmic scale as a stable shared readonly signal.
5
+ * @param id - Ancestor scale identity. See {@link ScaleId}.
6
+ * @returns The reactive logarithmic mapping. See {@link ResolvedLogScale}.
7
+ */
8
+ export declare function useLogScale(id: ScaleId): Signal<ResolvedLogScale>;
@@ -0,0 +1,9 @@
1
+ import { scaleView } from "./scale-view.js";
2
+ const views = /* @__PURE__ */ new WeakMap();
3
+ function useLogScale(id) {
4
+ return scaleView(views, id, "useLogScale", (kind) => kind === "log");
5
+ }
6
+ export {
7
+ useLogScale
8
+ };
9
+ //# sourceMappingURL=use-log-scale.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/use-log-scale.ts"],
4
+ "sourcesContent": ["import type { Signal } from \"@pibbl/core\";\nimport type { ResolvedLogScale, ResolvedScale, ScaleId } from \"./types.js\";\nimport { scaleView } from \"./scale-view.js\";\nconst views = new WeakMap<Signal<ResolvedScale>, Signal<ResolvedLogScale>>();\n/**\n * Reads an ancestor logarithmic scale as a stable shared readonly signal.\n * @param id - Ancestor scale identity. See {@link ScaleId}.\n * @returns The reactive logarithmic mapping. See {@link ResolvedLogScale}.\n */\nexport function useLogScale(id: ScaleId): Signal<ResolvedLogScale> {\n return scaleView(views, id, \"useLogScale\", kind => kind === \"log\");\n}\n"],
5
+ "mappings": "AAEA,SAAS,iBAAiB;AAC1B,MAAM,QAAQ,oBAAI,QAAyD;AAMpE,SAAS,YAAY,IAAuC;AACjE,SAAO,UAAU,OAAO,IAAI,eAAe,UAAQ,SAAS,KAAK;AACnE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,8 @@
1
+ import type { Signal } from "@pibbl/core";
2
+ import type { ResolvedPointScale, ScaleId } from "./types.js";
3
+ /**
4
+ * Reads an ancestor point scale as a stable shared readonly signal.
5
+ * @param id - Ancestor scale identity. See {@link ScaleId}.
6
+ * @returns The reactive mapping. See {@link ResolvedPointScale}.
7
+ */
8
+ export declare function usePointScale(id: ScaleId): Signal<ResolvedPointScale>;
@@ -0,0 +1,9 @@
1
+ import { scaleView } from "./scale-view.js";
2
+ const views = /* @__PURE__ */ new WeakMap();
3
+ function usePointScale(id) {
4
+ return scaleView(views, id, "usePointScale", (kind) => kind === "point");
5
+ }
6
+ export {
7
+ usePointScale
8
+ };
9
+ //# sourceMappingURL=use-point-scale.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/use-point-scale.ts"],
4
+ "sourcesContent": ["import type { Signal } from \"@pibbl/core\";\nimport type { ResolvedPointScale, ResolvedScale, ScaleId } from \"./types.js\";\nimport { scaleView } from \"./scale-view.js\";\nconst views = new WeakMap<Signal<ResolvedScale>, Signal<ResolvedPointScale>>();\n/**\n * Reads an ancestor point scale as a stable shared readonly signal.\n * @param id - Ancestor scale identity. See {@link ScaleId}.\n * @returns The reactive mapping. See {@link ResolvedPointScale}.\n */\nexport function usePointScale(id: ScaleId): Signal<ResolvedPointScale> {\n return scaleView(views, id, \"usePointScale\", kind => kind === \"point\");\n}\n"],
5
+ "mappings": "AAEA,SAAS,iBAAiB;AAC1B,MAAM,QAAQ,oBAAI,QAA2D;AAMtE,SAAS,cAAc,IAAyC;AACrE,SAAO,UAAU,OAAO,IAAI,iBAAiB,UAAQ,SAAS,OAAO;AACvE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,8 @@
1
+ import type { Signal } from "@pibbl/core";
2
+ import type { ResolvedSymlogScale, ScaleId } from "./types.js";
3
+ /**
4
+ * Reads an ancestor symlog scale as a stable shared readonly signal.
5
+ * @param id - Ancestor scale identity. See {@link ScaleId}.
6
+ * @returns The reactive mapping. See {@link ResolvedSymlogScale}.
7
+ */
8
+ export declare function useSymlogScale(id: ScaleId): Signal<ResolvedSymlogScale>;
@@ -0,0 +1,9 @@
1
+ import { scaleView } from "./scale-view.js";
2
+ const views = /* @__PURE__ */ new WeakMap();
3
+ function useSymlogScale(id) {
4
+ return scaleView(views, id, "useSymlogScale", (kind) => kind === "symlog");
5
+ }
6
+ export {
7
+ useSymlogScale
8
+ };
9
+ //# sourceMappingURL=use-symlog-scale.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/use-symlog-scale.ts"],
4
+ "sourcesContent": ["import type { Signal } from \"@pibbl/core\";\nimport type { ResolvedSymlogScale, ResolvedScale, ScaleId } from \"./types.js\";\nimport { scaleView } from \"./scale-view.js\";\nconst views = new WeakMap<Signal<ResolvedScale>, Signal<ResolvedSymlogScale>>();\n/**\n * Reads an ancestor symlog scale as a stable shared readonly signal.\n * @param id - Ancestor scale identity. See {@link ScaleId}.\n * @returns The reactive mapping. See {@link ResolvedSymlogScale}.\n */\nexport function useSymlogScale(id: ScaleId): Signal<ResolvedSymlogScale> {\n return scaleView(views, id, \"useSymlogScale\", kind => kind === \"symlog\");\n}\n"],
5
+ "mappings": "AAEA,SAAS,iBAAiB;AAC1B,MAAM,QAAQ,oBAAI,QAA4D;AAMvE,SAAS,eAAe,IAA0C;AACvE,SAAO,UAAU,OAAO,IAAI,kBAAkB,UAAQ,SAAS,QAAQ;AACzE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,8 @@
1
+ import type { Signal } from "@pibbl/core";
2
+ import type { ResolvedUtcScale, ScaleId } from "./types.js";
3
+ /**
4
+ * Reads an ancestor utc scale as a stable, shared readonly signal.
5
+ * @param id - Ancestor scale identity. See {@link ScaleId}.
6
+ * @returns The reactive mapping. See {@link ResolvedUtcScale} and {@link Signal}.
7
+ */
8
+ export declare function useUTCScale(id: ScaleId): Signal<ResolvedUtcScale>;
@@ -0,0 +1,9 @@
1
+ import { scaleView } from "./scale-view.js";
2
+ const views = /* @__PURE__ */ new WeakMap();
3
+ function useUTCScale(id) {
4
+ return scaleView(views, id, "useUTCScale", (kind) => kind === "utc");
5
+ }
6
+ export {
7
+ useUTCScale
8
+ };
9
+ //# sourceMappingURL=use-utc-scale.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/use-utc-scale.ts"],
4
+ "sourcesContent": ["import type { Signal } from \"@pibbl/core\";\nimport type { ResolvedUtcScale, ResolvedScale, ScaleId } from \"./types.js\";\nimport { scaleView } from \"./scale-view.js\";\nconst views = new WeakMap<Signal<ResolvedScale>, Signal<ResolvedUtcScale>>();\n/**\n * Reads an ancestor utc scale as a stable, shared readonly signal.\n * @param id - Ancestor scale identity. See {@link ScaleId}.\n * @returns The reactive mapping. See {@link ResolvedUtcScale} and {@link Signal}.\n */\nexport function useUTCScale(id: ScaleId): Signal<ResolvedUtcScale> {\n return scaleView(views, id, \"useUTCScale\", (kind) => kind === \"utc\");\n}\n"],
5
+ "mappings": "AAEA,SAAS,iBAAiB;AAC1B,MAAM,QAAQ,oBAAI,QAAyD;AAMpE,SAAS,YAAY,IAAuC;AACjE,SAAO,UAAU,OAAO,IAAI,eAAe,CAAC,SAAS,SAAS,KAAK;AACrE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,12 @@
1
+ /** Locale used for compact UTC tick text. See {@link utcTickLabels}. */
2
+ export interface UTCTickLabelOptions {
3
+ /** BCP 47 locale, default en-US. Calendar is always Gregorian; time zone is UTC. */
4
+ readonly locale?: string;
5
+ }
6
+ /**
7
+ * Creates compact labels with calendar context retained on every tick.
8
+ * @param values - At most 100 safe integer epoch milliseconds within Date range, in any order.
9
+ * @param options - Explicit locale; default en-US.
10
+ * @returns Frozen labels in input order. No geometry or scale state changes. See {@link UTCTickLabelOptions}.
11
+ */
12
+ export declare function utcTickLabels(values: readonly number[], options?: UTCTickLabelOptions): readonly string[];
@@ -0,0 +1,27 @@
1
+ function utcTickLabels(values, options = {}) {
2
+ if (!Array.isArray(values) || values.length > 100 || values.some((v) => !Number.isSafeInteger(v) || Math.abs(v) > 864e13))
3
+ throw new RangeError("utcTickLabels requires at most 100 integer timestamps within Date range.");
4
+ const dates = values.map((value) => new Date(value));
5
+ const midnight = (date) => date.getUTCHours() === 0 && date.getUTCMinutes() === 0 && date.getUTCSeconds() === 0 && date.getUTCMilliseconds() === 0;
6
+ const months = dates.every((date) => midnight(date) && date.getUTCDate() === 1);
7
+ const years = months && dates.every((date) => date.getUTCMonth() === 0);
8
+ const days = dates.every(midnight);
9
+ const milliseconds = dates.some((date) => date.getUTCMilliseconds() !== 0);
10
+ const seconds = milliseconds || dates.some((date) => date.getUTCSeconds() !== 0);
11
+ const formatter = new Intl.DateTimeFormat(options.locale ?? "en-US", {
12
+ timeZone: "UTC",
13
+ calendar: "gregory",
14
+ year: "numeric",
15
+ ...years ? {} : { month: "short" },
16
+ ...months ? {} : { day: "numeric" },
17
+ ...days ? {} : { hour: "2-digit", minute: "2-digit", hourCycle: "h23" },
18
+ ...seconds ? { second: "2-digit" } : {},
19
+ ...milliseconds ? { fractionalSecondDigits: 3 } : {},
20
+ ...dates.some((date) => date.getUTCFullYear() <= 0) ? { era: "short" } : {}
21
+ });
22
+ return Object.freeze(dates.map((date) => formatter.format(date)));
23
+ }
24
+ export {
25
+ utcTickLabels
26
+ };
27
+ //# sourceMappingURL=utc-labels.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/utc-labels.ts"],
4
+ "sourcesContent": ["/** Locale used for compact UTC tick text. See {@link utcTickLabels}. */\nexport interface UTCTickLabelOptions {\n /** BCP 47 locale, default en-US. Calendar is always Gregorian; time zone is UTC. */\n readonly locale?: string;\n}\n/**\n * Creates compact labels with calendar context retained on every tick.\n * @param values - At most 100 safe integer epoch milliseconds within Date range, in any order.\n * @param options - Explicit locale; default en-US.\n * @returns Frozen labels in input order. No geometry or scale state changes. See {@link UTCTickLabelOptions}.\n */\nexport function utcTickLabels(values: readonly number[], options: UTCTickLabelOptions = {}): readonly string[] {\n if (!Array.isArray(values) || values.length > 100 || values.some(v => !Number.isSafeInteger(v) || Math.abs(v) > 8_640_000_000_000_000))\n throw new RangeError(\"utcTickLabels requires at most 100 integer timestamps within Date range.\");\n const dates = values.map(value => new Date(value));\n const midnight = (date: Date) => date.getUTCHours() === 0 && date.getUTCMinutes() === 0 && date.getUTCSeconds() === 0 && date.getUTCMilliseconds() === 0;\n const months = dates.every(date => midnight(date) && date.getUTCDate() === 1);\n const years = months && dates.every(date => date.getUTCMonth() === 0);\n const days = dates.every(midnight);\n const milliseconds = dates.some(date => date.getUTCMilliseconds() !== 0);\n const seconds = milliseconds || dates.some(date => date.getUTCSeconds() !== 0);\n const formatter = new Intl.DateTimeFormat(options.locale ?? \"en-US\", {\n timeZone: \"UTC\", calendar: \"gregory\", year: \"numeric\",\n ...(years ? {} : { month: \"short\" as const }),\n ...(months ? {} : { day: \"numeric\" as const }),\n ...(days ? {} : { hour: \"2-digit\" as const, minute: \"2-digit\" as const, hourCycle: \"h23\" as const }),\n ...(seconds ? { second: \"2-digit\" as const } : {}),\n ...(milliseconds ? { fractionalSecondDigits: 3 as const } : {}),\n ...(dates.some(date => date.getUTCFullYear() <= 0) ? { era: \"short\" as const } : {}),\n });\n return Object.freeze(dates.map(date => formatter.format(date)));\n}\n"],
5
+ "mappings": "AAWO,SAAS,cAAc,QAA2B,UAA+B,CAAC,GAAsB;AAC7G,MAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,SAAS,OAAO,OAAO,KAAK,OAAK,CAAC,OAAO,cAAc,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,MAAqB;AACnI,UAAM,IAAI,WAAW,0EAA0E;AACjG,QAAM,QAAQ,OAAO,IAAI,WAAS,IAAI,KAAK,KAAK,CAAC;AACjD,QAAM,WAAW,CAAC,SAAe,KAAK,YAAY,MAAM,KAAK,KAAK,cAAc,MAAM,KAAK,KAAK,cAAc,MAAM,KAAK,KAAK,mBAAmB,MAAM;AACvJ,QAAM,SAAS,MAAM,MAAM,UAAQ,SAAS,IAAI,KAAK,KAAK,WAAW,MAAM,CAAC;AAC5E,QAAM,QAAQ,UAAU,MAAM,MAAM,UAAQ,KAAK,YAAY,MAAM,CAAC;AACpE,QAAM,OAAO,MAAM,MAAM,QAAQ;AACjC,QAAM,eAAe,MAAM,KAAK,UAAQ,KAAK,mBAAmB,MAAM,CAAC;AACvE,QAAM,UAAU,gBAAgB,MAAM,KAAK,UAAQ,KAAK,cAAc,MAAM,CAAC;AAC7E,QAAM,YAAY,IAAI,KAAK,eAAe,QAAQ,UAAU,SAAS;AAAA,IACnE,UAAU;AAAA,IAAO,UAAU;AAAA,IAAW,MAAM;AAAA,IAC5C,GAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,QAAiB;AAAA,IAC3C,GAAI,SAAS,CAAC,IAAI,EAAE,KAAK,UAAmB;AAAA,IAC5C,GAAI,OAAO,CAAC,IAAI,EAAE,MAAM,WAAoB,QAAQ,WAAoB,WAAW,MAAe;AAAA,IAClG,GAAI,UAAU,EAAE,QAAQ,UAAmB,IAAI,CAAC;AAAA,IAChD,GAAI,eAAe,EAAE,wBAAwB,EAAW,IAAI,CAAC;AAAA,IAC7D,GAAI,MAAM,KAAK,UAAQ,KAAK,eAAe,KAAK,CAAC,IAAI,EAAE,KAAK,QAAiB,IAAI,CAAC;AAAA,EACpF,CAAC;AACD,SAAO,OAAO,OAAO,MAAM,IAAI,UAAQ,UAAU,OAAO,IAAI,CAAC,CAAC;AAChE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ import type { UTCScaleProps } from "./types.js";
2
+ /**
3
+ * Provides a named utc mapping to descendant visualization components.
4
+ * @param props - Identity, domain, range, and children. See {@link UTCScaleProps}.
5
+ * @returns Descendant content within the scale scope.
6
+ */
7
+ export declare function UTCScale(props: UTCScaleProps): import("@pibbl/core").PibblNode;
@@ -0,0 +1,18 @@
1
+ import { resolveSignalValue, useLayoutBox } from "@pibbl/core";
2
+ import { resolveUtcScale } from "./utc-scale.js";
3
+ import { useScaleProvider } from "./scale-provider.js";
4
+ function UTCScale(props) {
5
+ const { width, height } = useLayoutBox();
6
+ useScaleProvider(props.id, "utc", () => resolveUtcScale(
7
+ resolveSignalValue(props.domain),
8
+ resolveSignalValue(props.range),
9
+ resolveSignalValue(props.reverse ?? false),
10
+ width,
11
+ height
12
+ ), [props.domain, props.range, props.reverse, width, height]);
13
+ return props.children;
14
+ }
15
+ export {
16
+ UTCScale
17
+ };
18
+ //# sourceMappingURL=utc-scale-component.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/utc-scale-component.ts"],
4
+ "sourcesContent": ["import { resolveSignalValue, useLayoutBox } from \"@pibbl/core\";\nimport type { UTCScaleProps } from \"./types.js\";\nimport { resolveUtcScale } from \"./utc-scale.js\";\nimport { useScaleProvider } from \"./scale-provider.js\";\n/**\n * Provides a named utc mapping to descendant visualization components.\n * @param props - Identity, domain, range, and children. See {@link UTCScaleProps}.\n * @returns Descendant content within the scale scope.\n */\nexport function UTCScale(props: UTCScaleProps) {\n const { width, height } = useLayoutBox();\n useScaleProvider(props.id, \"utc\", () => resolveUtcScale(\n resolveSignalValue(props.domain), resolveSignalValue(props.range),\n resolveSignalValue(props.reverse ?? false), width, height,\n ), [props.domain, props.range, props.reverse, width, height]);\n return props.children;\n}\n"],
5
+ "mappings": "AAAA,SAAS,oBAAoB,oBAAoB;AAEjD,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AAM1B,SAAS,SAAS,OAAsB;AAC7C,QAAM,EAAE,OAAO,OAAO,IAAI,aAAa;AACvC,mBAAiB,MAAM,IAAI,OAAO,MAAM;AAAA,IACtC,mBAAmB,MAAM,MAAM;AAAA,IAAG,mBAAmB,MAAM,KAAK;AAAA,IAChE,mBAAmB,MAAM,WAAW,KAAK;AAAA,IAAG;AAAA,IAAO;AAAA,EACrD,GAAG,CAAC,MAAM,QAAQ,MAAM,OAAO,MAAM,SAAS,OAAO,MAAM,CAAC;AAC5D,SAAO,MAAM;AACf;",
6
+ "names": []
7
+ }
@@ -0,0 +1,21 @@
1
+ import type { UTCScale } from "./utc-scale-component.js";
2
+ import type { LinearDomain, ResolvedUtcScale, ScaleRange } from "./types.js";
3
+ export declare function resolveUtcScale(domain: LinearDomain, range: ScaleRange, reverse: boolean, width: number, height: number): ResolvedUtcScale;
4
+ /**
5
+ * Expands a numeric timestamp domain to enclosing UTC calendar boundaries.
6
+ * @param domain - Safe integer epoch-millisecond endpoints, possibly equal or descending.
7
+ * @param options - Optional bounded target tick count (default 5).
8
+ * @returns A frozen outward-rounded domain preserving its direction. See {@link LinearDomain}.
9
+ * @see {@link UTCScale}
10
+ */
11
+ export declare function niceUTCDomain(domain: LinearDomain, options?: {
12
+ readonly count?: number;
13
+ }): LinearDomain;
14
+ /**
15
+ * Computes a finite numeric extent in source order, skipping only null and undefined.
16
+ * @param data - Source rows, which are never sorted or mutated.
17
+ * @param value - Accessor called once per row with its index and original array.
18
+ * @returns A frozen minimum/maximum pair, or undefined when every row is missing.
19
+ * @see {@link niceUTCDomain}
20
+ */
21
+ export declare function extent<D>(data: readonly D[], value: (datum: D, index: number, data: readonly D[]) => number | null | undefined): LinearDomain | undefined;