@deck.gl-community/infovis-layers 9.3.5 → 9.3.7

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 (126) hide show
  1. package/dist/index.cjs +2998 -114
  2. package/dist/index.cjs.map +4 -4
  3. package/dist/index.d.ts +11 -2
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +9 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/layers/animation-layer/animation-layer.d.ts +30 -0
  8. package/dist/layers/animation-layer/animation-layer.d.ts.map +1 -0
  9. package/dist/layers/animation-layer/animation-layer.js +53 -0
  10. package/dist/layers/animation-layer/animation-layer.js.map +1 -0
  11. package/dist/layers/animation-layer/animation.d.ts +86 -0
  12. package/dist/layers/animation-layer/animation.d.ts.map +1 -0
  13. package/dist/layers/animation-layer/animation.js +214 -0
  14. package/dist/layers/animation-layer/animation.js.map +1 -0
  15. package/dist/layers/block-layer/block-layer-fragment.glsl.d.ts +3 -0
  16. package/dist/layers/block-layer/block-layer-fragment.glsl.d.ts.map +1 -0
  17. package/dist/layers/block-layer/block-layer-fragment.glsl.js +41 -0
  18. package/dist/layers/block-layer/block-layer-fragment.glsl.js.map +1 -0
  19. package/dist/layers/block-layer/block-layer-uniforms.d.ts +27 -0
  20. package/dist/layers/block-layer/block-layer-uniforms.d.ts.map +1 -0
  21. package/dist/layers/block-layer/block-layer-uniforms.js +26 -0
  22. package/dist/layers/block-layer/block-layer-uniforms.js.map +1 -0
  23. package/dist/layers/block-layer/block-layer-vertex.glsl.d.ts +3 -0
  24. package/dist/layers/block-layer/block-layer-vertex.glsl.d.ts.map +1 -0
  25. package/dist/layers/block-layer/block-layer-vertex.glsl.js +67 -0
  26. package/dist/layers/block-layer/block-layer-vertex.glsl.js.map +1 -0
  27. package/dist/layers/block-layer/block-layer.d.ts +71 -0
  28. package/dist/layers/block-layer/block-layer.d.ts.map +1 -0
  29. package/dist/layers/block-layer/block-layer.js +108 -0
  30. package/dist/layers/block-layer/block-layer.js.map +1 -0
  31. package/dist/layers/fast-text-layer/fast-text-layer.d.ts +148 -0
  32. package/dist/layers/fast-text-layer/fast-text-layer.d.ts.map +1 -0
  33. package/dist/layers/fast-text-layer/fast-text-layer.js +862 -0
  34. package/dist/layers/fast-text-layer/fast-text-layer.js.map +1 -0
  35. package/dist/layers/fast-text-layer/fast-text-layer.test.d.ts +2 -0
  36. package/dist/layers/fast-text-layer/fast-text-layer.test.d.ts.map +1 -0
  37. package/dist/layers/fast-text-layer/fast-text-layer.test.js +300 -0
  38. package/dist/layers/fast-text-layer/fast-text-layer.test.js.map +1 -0
  39. package/dist/layers/fast-text-layer/fast-text-layout.d.ts +179 -0
  40. package/dist/layers/fast-text-layer/fast-text-layout.d.ts.map +1 -0
  41. package/dist/layers/fast-text-layer/fast-text-layout.js +665 -0
  42. package/dist/layers/fast-text-layer/fast-text-layout.js.map +1 -0
  43. package/dist/layers/fast-text-layer/font-atlas.d.ts +98 -0
  44. package/dist/layers/fast-text-layer/font-atlas.d.ts.map +1 -0
  45. package/dist/layers/fast-text-layer/font-atlas.js +337 -0
  46. package/dist/layers/fast-text-layer/font-atlas.js.map +1 -0
  47. package/dist/layers/fast-text-layer/index.d.ts +4 -0
  48. package/dist/layers/fast-text-layer/index.d.ts.map +1 -0
  49. package/dist/layers/fast-text-layer/index.js +4 -0
  50. package/dist/layers/fast-text-layer/index.js.map +1 -0
  51. package/dist/layers/time-delta-layer.d.ts +22 -60
  52. package/dist/layers/time-delta-layer.d.ts.map +1 -1
  53. package/dist/layers/time-delta-layer.js +23 -45
  54. package/dist/layers/time-delta-layer.js.map +1 -1
  55. package/dist/synchronized-views/synchronized-views.js +1 -1
  56. package/dist/synchronized-views/synchronized-views.js.map +1 -1
  57. package/dist/utils/format-utils.d.ts +27 -3
  58. package/dist/utils/format-utils.d.ts.map +1 -1
  59. package/dist/utils/format-utils.js +72 -40
  60. package/dist/utils/format-utils.js.map +1 -1
  61. package/dist/utils/utf8-string-view.d.ts +53 -0
  62. package/dist/utils/utf8-string-view.d.ts.map +1 -0
  63. package/dist/utils/utf8-string-view.js +169 -0
  64. package/dist/utils/utf8-string-view.js.map +1 -0
  65. package/dist/utils/utf8-string-view.test.d.ts +2 -0
  66. package/dist/utils/utf8-string-view.test.d.ts.map +1 -0
  67. package/dist/utils/utf8-string-view.test.js +88 -0
  68. package/dist/utils/utf8-string-view.test.js.map +1 -0
  69. package/dist/views/bounds-utils.d.ts +23 -0
  70. package/dist/views/bounds-utils.d.ts.map +1 -0
  71. package/dist/views/bounds-utils.js +65 -0
  72. package/dist/views/bounds-utils.js.map +1 -0
  73. package/dist/views/layer-bounds-filter.d.ts +48 -0
  74. package/dist/views/layer-bounds-filter.d.ts.map +1 -0
  75. package/dist/views/layer-bounds-filter.js +99 -0
  76. package/dist/views/layer-bounds-filter.js.map +1 -0
  77. package/dist/views/orthographic-utils.d.ts +30 -2
  78. package/dist/views/orthographic-utils.d.ts.map +1 -1
  79. package/dist/views/orthographic-utils.js +33 -14
  80. package/dist/views/orthographic-utils.js.map +1 -1
  81. package/dist/views/view-layout/build-views-from-view-layout.d.ts +37 -0
  82. package/dist/views/view-layout/build-views-from-view-layout.d.ts.map +1 -0
  83. package/dist/views/view-layout/build-views-from-view-layout.js +413 -0
  84. package/dist/views/view-layout/build-views-from-view-layout.js.map +1 -0
  85. package/dist/views/view-layout/index.d.ts +3 -0
  86. package/dist/views/view-layout/index.d.ts.map +1 -0
  87. package/dist/views/view-layout/index.js +3 -0
  88. package/dist/views/view-layout/index.js.map +1 -0
  89. package/dist/views/view-layout/view-layout-item.d.ts +74 -0
  90. package/dist/views/view-layout/view-layout-item.d.ts.map +1 -0
  91. package/dist/views/view-layout/view-layout-item.js +48 -0
  92. package/dist/views/view-layout/view-layout-item.js.map +1 -0
  93. package/dist/views/view-layout/view-layout.test.d.ts +2 -0
  94. package/dist/views/view-layout/view-layout.test.d.ts.map +1 -0
  95. package/dist/views/view-layout/view-layout.test.js +112 -0
  96. package/dist/views/view-layout/view-layout.test.js.map +1 -0
  97. package/dist/views/viewport-bounds-utils.d.ts +55 -0
  98. package/dist/views/viewport-bounds-utils.d.ts.map +1 -0
  99. package/dist/views/viewport-bounds-utils.js +70 -0
  100. package/dist/views/viewport-bounds-utils.js.map +1 -0
  101. package/package.json +11 -4
  102. package/src/index.ts +91 -2
  103. package/src/layers/animation-layer/animation-layer.ts +92 -0
  104. package/src/layers/animation-layer/animation.ts +328 -0
  105. package/src/layers/block-layer/block-layer-fragment.glsl.ts +41 -0
  106. package/src/layers/block-layer/block-layer-uniforms.ts +43 -0
  107. package/src/layers/block-layer/block-layer-vertex.glsl.ts +67 -0
  108. package/src/layers/block-layer/block-layer.ts +199 -0
  109. package/src/layers/fast-text-layer/fast-text-layer.test.ts +359 -0
  110. package/src/layers/fast-text-layer/fast-text-layer.ts +1208 -0
  111. package/src/layers/fast-text-layer/fast-text-layout.ts +1124 -0
  112. package/src/layers/fast-text-layer/font-atlas.ts +574 -0
  113. package/src/layers/fast-text-layer/index.ts +37 -0
  114. package/src/layers/time-delta-layer.ts +47 -62
  115. package/src/synchronized-views/synchronized-views.ts +1 -1
  116. package/src/utils/format-utils.ts +90 -40
  117. package/src/utils/utf8-string-view.test.ts +119 -0
  118. package/src/utils/utf8-string-view.ts +273 -0
  119. package/src/views/bounds-utils.ts +88 -0
  120. package/src/views/layer-bounds-filter.ts +160 -0
  121. package/src/views/orthographic-utils.ts +65 -18
  122. package/src/views/view-layout/build-views-from-view-layout.ts +547 -0
  123. package/src/views/view-layout/index.ts +18 -0
  124. package/src/views/view-layout/view-layout-item.ts +125 -0
  125. package/src/views/view-layout/view-layout.test.ts +129 -0
  126. package/src/views/viewport-bounds-utils.ts +104 -0
@@ -1 +1 @@
1
- {"version":3,"file":"time-delta-layer.d.ts","sourceRoot":"","sources":["../../src/layers/time-delta-layer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,cAAc,EAAE,KAAK,UAAU,EAAC,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAC,SAAS,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAMrD,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG;IAC7C,IAAI,EAAE,WAAW,GAAG,cAAc,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAEhB,wEAAwE;IACxE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,yFAAyF;IACzF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yFAAyF;IACzF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,cAAe,SAAQ,cAAc,CAAC,mBAAmB,CAAC;IACrE,OAAgB,SAAS,SAAoB;IAC7C,OAAgB,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,UAAU,CAAC,CAAC,CAWjF;IAEO,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2HtB"}
1
+ {"version":3,"file":"time-delta-layer.d.ts","sourceRoot":"","sources":["../../src/layers/time-delta-layer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAC,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAuB,KAAK,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAM1E,sDAAsD;AACtD,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,oBAAoB,CAAC;AAEpE,KAAK,oBAAoB,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,cAAc,GAAG,YAAY,CAAC,GAAG;IAC/F,mFAAmF;IACnF,IAAI,EAAE,WAAW,GAAG,cAAc,CAAC;IACnC,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,yGAAyG;IACzG,MAAM,EAAE,OAAO,CAAC;IAEhB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,0EAA0E;AAC1E,qBAAa,cAAe,SAAQ,cAAc,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAChF,OAAgB,SAAS,SAAoB;IAC7C,OAAgB,YAAY,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAe9D;IAEO,YAAY,IAAI,KAAK,EAAE;CA6FjC"}
@@ -5,6 +5,7 @@ import { CompositeLayer } from '@deck.gl/core';
5
5
  import { LineLayer, TextLayer } from '@deck.gl/layers';
6
6
  // import {PathStyleExtension} from '@deck.gl/extensions';
7
7
  import { formatTimeMs } from "../utils/format-utils.js";
8
+ /** Renders a selected time interval as header or viewport guide lines. */
8
9
  export class TimeDeltaLayer extends CompositeLayer {
9
10
  static layerName = 'TimeDeltaLayer';
10
11
  static defaultProps = {
@@ -17,13 +18,14 @@ export class TimeDeltaLayer extends CompositeLayer {
17
18
  color: [0, 0, 0, 255],
18
19
  unit: 'timestamp',
19
20
  yMin: -1e6, // Should cover full viewport height in most cases
20
- yMax: 1e6 // Should cover full viewport height in most cases
21
+ yMax: 1e6, // Should cover full viewport height in most cases
22
+ fontSize: 12,
23
+ fontFamily: TextLayer.defaultProps.fontFamily,
24
+ fontSettings: TextLayer.defaultProps.fontSettings,
25
+ fontWeight: TextLayer.defaultProps.fontWeight
21
26
  };
22
27
  renderLayers() {
23
28
  const { startTimeMs, endTimeMs, color = [0, 0, 0, 255], yMin, yMax } = this.props;
24
- const timeDeltaPosition = [(startTimeMs + endTimeMs) / 2, 10];
25
- const timeDeltaMs = Math.abs(endTimeMs - startTimeMs);
26
- const timeDeltaLabel = formatTimeMs(timeDeltaMs, false);
27
29
  if (!this.props.header) {
28
30
  const timeLines = [
29
31
  {
@@ -48,46 +50,18 @@ export class TimeDeltaLayer extends CompositeLayer {
48
50
  })
49
51
  ];
50
52
  }
51
- // // Tick marks
52
- // new LineLayer({
53
- // id: 'time-delta-marks',
54
- // data: tickLines,
55
- // getSourcePosition: (d) => d.sourcePosition,
56
- // getTargetPosition: (d) => d.targetPosition,
57
- // getColor: color,
58
- // getWidth: 1,
59
- // }),
60
- // TODO - triggers broader root-level file updates
61
- // new PathLayer({
62
- // id: 'dotted-path',
63
- // data: route,
64
- // getPath: d => d.path,
65
- // getWidth: 4,
66
- // getColor: [255, 0, 0],
67
- // // Enable rounded caps on each dash
68
- // rounded: true,
69
- // // Add the dash extension
70
- // extensions: [
71
- // new PathStyleExtension({
72
- // dash: true,
73
- // // highPrecisionDash: true, // uncomment for finer control at low zoom
74
- // capRounded: true // draw dash ends as semicircles
75
- // })
76
- // ],
77
- // // [dashLength, gapLength] in pixels
78
- // // small dash + equal or larger gap = dotted effect
79
- // getDashArray: () => [2, 6]
80
- // })
81
- // ]
82
- const HEADER_Y = 12;
53
+ const { y, fontSize, fontFamily, fontSettings, fontWeight } = this.props;
54
+ const timeDeltaPosition = [(startTimeMs + endTimeMs) / 2, y - 10];
55
+ const timeDeltaMs = Math.abs(endTimeMs - startTimeMs);
56
+ const timeDeltaLabel = formatTimeMs(timeDeltaMs, { space: false });
83
57
  const timeLines = [
84
58
  {
85
- sourcePosition: [startTimeMs, -100],
86
- targetPosition: [startTimeMs, HEADER_Y]
59
+ sourcePosition: [startTimeMs, y],
60
+ targetPosition: [startTimeMs, y - 7]
87
61
  },
88
62
  {
89
- sourcePosition: [endTimeMs, -100],
90
- targetPosition: [endTimeMs, HEADER_Y]
63
+ sourcePosition: [endTimeMs, y],
64
+ targetPosition: [endTimeMs, y - 7]
91
65
  }
92
66
  ];
93
67
  return [
@@ -106,8 +80,8 @@ export class TimeDeltaLayer extends CompositeLayer {
106
80
  id: 'header-time-delta-dotted-line',
107
81
  data: [
108
82
  {
109
- sourcePosition: [startTimeMs, HEADER_Y - 7],
110
- targetPosition: [endTimeMs, HEADER_Y - 7]
83
+ sourcePosition: [startTimeMs, y - 7],
84
+ targetPosition: [endTimeMs, y - 7]
111
85
  }
112
86
  ],
113
87
  getSourcePosition: d => d.sourcePosition,
@@ -122,12 +96,16 @@ export class TimeDeltaLayer extends CompositeLayer {
122
96
  data: [{ position: timeDeltaPosition, text: timeDeltaLabel }],
123
97
  getPosition: d => d.position,
124
98
  getText: d => d.text,
125
- getSize: 12,
99
+ characterSet: '-0123456789.dhmsµ',
100
+ getSize: fontSize,
101
+ fontFamily,
102
+ fontSettings,
103
+ fontWeight,
126
104
  getColor: color,
127
105
  getTextAnchor: 'middle',
128
- getAlignmentBaseline: 'top',
106
+ getAlignmentBaseline: 'center',
129
107
  background: true,
130
- getBackgroundColor: [255, 255, 255, 255], // Solid green background
108
+ getBackgroundColor: [255 - color[0], 255 - color[1], 255 - color[2], 255],
131
109
  backgroundPadding: [4, 2] // Horizontal and vertical padding
132
110
  })
133
111
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"time-delta-layer.js","sourceRoot":"","sources":["../../src/layers/time-delta-layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"time-delta-layer.js","sourceRoot":"","sources":["../../src/layers/time-delta-layer.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ export const SYNCHRONIZED_VIEWS = [
12
12
  flipY: false,
13
13
  clear: true, // [1, 1, 1, 1],
14
14
  x: LEGEND_VIEW_WIDTH,
15
- width: `calc(100% - ${LEGEND_VIEW_WIDTH}px`,
15
+ width: `calc(100% - ${LEGEND_VIEW_WIDTH}px)`,
16
16
  y: HEADER_VIEW_HEIGHT,
17
17
  height: `calc(100% - ${HEADER_VIEW_HEIGHT}px)`,
18
18
  controller: {
@@ -1 +1 @@
1
- {"version":3,"file":"synchronized-views.js","sourceRoot":"","sources":["../../src/synchronized-views/synchronized-views.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"synchronized-views.js","sourceRoot":"","sources":["../../src/synchronized-views/synchronized-views.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,31 @@
1
1
  /**
2
- * Convert a time in microseconds to a human-readable string
3
- * @param us Time in microseconds
2
+ * Options for formatting millisecond duration labels.
3
+ */
4
+ export type FormatTimeMsOptions = {
5
+ /** Whether to include a space between the value and unit. @defaultValue true */
6
+ space?: boolean;
7
+ /** Number of significant digits used for fractional values. @defaultValue 5 */
8
+ roundDigits?: number;
9
+ };
10
+ /**
11
+ * Convert a time in milliseconds to a human-readable string.
12
+ * @param timeMs Time in milliseconds.
13
+ * @param options Formatting options, or the legacy `space` boolean argument.
14
+ * @returns Human-readable duration label.
15
+ */
16
+ export declare function formatTimeMs(timeMs: number, options?: boolean | FormatTimeMsOptions): string;
17
+ /**
18
+ * Convert a millisecond time range to a human-readable string.
19
+ * @param startMs Range start in milliseconds.
20
+ * @param endMs Range end in milliseconds.
21
+ * @returns Human-readable start and end labels joined by a separator.
4
22
  */
5
- export declare function formatTimeMs(timeMs: number, space?: boolean): string;
6
23
  export declare function formatTimeRangeMs(startMs: number, endMs: number): string;
24
+ /**
25
+ * Convert a float to a string with a specified number of significant digits.
26
+ * @param f The float to convert.
27
+ * @param roundDigits The number of significant digits to round to (default is 5).
28
+ * @returns The float as a string, rounded to the specified precision.
29
+ */
30
+ export declare function floatToStr(f: number, roundDigits?: number): string;
7
31
  //# sourceMappingURL=format-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-utils.d.ts","sourceRoot":"","sources":["../../src/utils/format-utils.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,OAAc,GAAG,MAAM,CA2B1E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAExE"}
1
+ {"version":3,"file":"format-utils.d.ts","sourceRoot":"","sources":["../../src/utils/format-utils.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,GAAG,mBAAwB,GAAG,MAAM,CA6BhG;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAExE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,GAAE,MAAU,GAAG,MAAM,CAQrE"}
@@ -2,74 +2,106 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  /**
5
- * Convert a time in microseconds to a human-readable string
6
- * @param us Time in microseconds
5
+ * Convert a time in milliseconds to a human-readable string.
6
+ * @param timeMs Time in milliseconds.
7
+ * @param options Formatting options, or the legacy `space` boolean argument.
8
+ * @returns Human-readable duration label.
7
9
  */
8
- export function formatTimeMs(timeMs, space = true) {
10
+ export function formatTimeMs(timeMs, options = {}) {
11
+ const normalizedOptions = typeof options === 'boolean' ? { space: options } : options;
12
+ const { space = true, roundDigits = 5 } = normalizedOptions;
9
13
  const sep = space ? ' ' : '';
10
14
  const us = timeMs * 1000;
11
15
  if (us === 0) {
12
16
  return '0s';
13
17
  }
14
18
  if (Math.abs(us) < 1000) {
15
- return `${floatToStr(us)}${sep}µs`;
19
+ return `${floatToStr(us, roundDigits)}${sep}µs`;
16
20
  }
17
21
  const ms = us / 1000;
18
22
  if (Math.abs(ms) < 1000) {
19
- return `${floatToStr(ms)}${sep} ms`;
23
+ return `${floatToStr(ms, roundDigits)}${sep}ms`;
20
24
  }
21
25
  const s = ms / 1000;
22
26
  if (Math.abs(s) < 60) {
23
- return `${floatToStr(s)}${sep} s`;
27
+ return `${floatToStr(s, roundDigits)}${sep}s`;
24
28
  }
25
29
  const m = s / 60;
26
30
  if (Math.abs(m) < 60) {
27
- return `${floatToStr(m)}${sep} min`;
31
+ return formatMinuteDuration(s);
28
32
  }
29
33
  const h = m / 60;
30
34
  if (Math.abs(h) < 24) {
31
- return `${floatToStr(h)}${sep} hrs`;
35
+ return formatHourDuration(s);
32
36
  }
33
- const d = h / 24;
34
- return `${floatToStr(d)}${sep} days`;
37
+ return formatDayDuration(s);
35
38
  }
39
+ /**
40
+ * Convert a millisecond time range to a human-readable string.
41
+ * @param startMs Range start in milliseconds.
42
+ * @param endMs Range end in milliseconds.
43
+ * @returns Human-readable start and end labels joined by a separator.
44
+ */
36
45
  export function formatTimeRangeMs(startMs, endMs) {
37
46
  return `${formatTimeMs(startMs)} - ${formatTimeMs(endMs)}`;
38
47
  }
39
48
  /**
40
- * Convert a float to a string
49
+ * Convert a float to a string with a specified number of significant digits.
50
+ * @param f The float to convert.
51
+ * @param roundDigits The number of significant digits to round to (default is 5).
52
+ * @returns The float as a string, rounded to the specified precision.
41
53
  */
42
- function floatToStr(f, roundDigits = 5) {
43
- if (Number.isInteger(f)) {
54
+ export function floatToStr(f, roundDigits = 5) {
55
+ if (roundDigits < 1 || Number.isInteger(f)) {
44
56
  return f.toString();
45
57
  }
46
- for (let i = 1; i < roundDigits - 1; i++) {
47
- const rounded = parseFloat(f.toPrecision(i));
48
- if (rounded === f) {
49
- return rounded.toPrecision(i);
50
- }
58
+ // Round the float to the specified precision
59
+ const precision = f.toPrecision(roundDigits);
60
+ return parseFloat(precision).toString();
61
+ }
62
+ /**
63
+ * Format a duration between one minute and one hour with whole seconds.
64
+ * @param seconds Duration in seconds.
65
+ * @returns A compact minutes-and-seconds duration label.
66
+ */
67
+ function formatMinuteDuration(seconds) {
68
+ const sign = seconds < 0 ? '-' : '';
69
+ const totalSeconds = Math.floor(Math.abs(seconds));
70
+ const minutes = Math.floor(totalSeconds / 60);
71
+ const remainingSeconds = totalSeconds % 60;
72
+ if (remainingSeconds === 0) {
73
+ return `${sign}${minutes}m`;
74
+ }
75
+ return `${sign}${minutes}m${remainingSeconds}s`;
76
+ }
77
+ /**
78
+ * Format a duration between one hour and one day with whole minutes.
79
+ * @param seconds Duration in seconds.
80
+ * @returns A compact hours-and-minutes duration label.
81
+ */
82
+ function formatHourDuration(seconds) {
83
+ const sign = seconds < 0 ? '-' : '';
84
+ const totalMinutes = Math.floor(Math.abs(seconds) / 60);
85
+ const hours = Math.floor(totalMinutes / 60);
86
+ const remainingMinutes = totalMinutes % 60;
87
+ if (remainingMinutes === 0) {
88
+ return `${sign}${hours}h`;
89
+ }
90
+ return `${sign}${hours}h${remainingMinutes}m`;
91
+ }
92
+ /**
93
+ * Format a duration of at least one day with whole hours.
94
+ * @param seconds Duration in seconds.
95
+ * @returns A compact days-and-hours duration label.
96
+ */
97
+ function formatDayDuration(seconds) {
98
+ const sign = seconds < 0 ? '-' : '';
99
+ const totalHours = Math.floor(Math.abs(seconds) / 3600);
100
+ const days = Math.floor(totalHours / 24);
101
+ const remainingHours = totalHours % 24;
102
+ if (remainingHours === 0) {
103
+ return `${sign}${days}d`;
51
104
  }
52
- return f.toPrecision(roundDigits);
105
+ return `${sign}${days}d${remainingHours}h`;
53
106
  }
54
- // export function formatTimesUs(ticks: number[]): string {
55
- // // Try from 0 up to a reasonable max (e.g. 20)
56
- // for (let d = 0; d <= 20; d++) {
57
- // const seen = new Set<string>();
58
- // let allDistinct = true;
59
- // for (const t of ticks) {
60
- // // Format each tick with d decimals
61
- // const str = t.toFixed(d);
62
- // if (seen.has(str)) {
63
- // allDistinct = false;
64
- // break;
65
- // }
66
- // seen.add(str);
67
- // }
68
- // if (allDistinct) {
69
- // return d;
70
- // }
71
- // }
72
- // // Fallback if somehow not distinct even at 20 decimals
73
- // return 20;
74
- // }
75
107
  //# sourceMappingURL=format-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-utils.js","sourceRoot":"","sources":["../../src/utils/format-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format-utils.js","sourceRoot":"","sources":["../../src/utils/format-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type * as arrow from 'apache-arrow';
2
+ /** Byte-range view for one UTF-8 encoded string. */
3
+ export type Utf8StringView = {
4
+ /** Backing UTF-8 bytes. */
5
+ data: Uint8Array;
6
+ /** Inclusive byte offset where the string starts. */
7
+ start: number;
8
+ /** Exclusive byte offset where the string ends. */
9
+ end: number;
10
+ };
11
+ /** Normalized direct-buffer source for one Arrow Utf8 vector. */
12
+ export type Utf8ColumnSource = {
13
+ /** Number of logical rows in the column. */
14
+ readonly rowCount: number;
15
+ /** Direct-buffer chunks that make up the column. */
16
+ readonly chunks: readonly Utf8ColumnSourceChunk[];
17
+ /** Returns whether one logical row is valid. */
18
+ readonly isValid: (rowIndex: number) => boolean;
19
+ };
20
+ /** One direct-buffer chunk in a normalized Arrow Utf8 column source. */
21
+ export type Utf8ColumnSourceChunk = {
22
+ /** Logical row index where this chunk starts. */
23
+ readonly rowOffset: number;
24
+ /** Number of logical rows in this chunk. */
25
+ readonly rowCount: number;
26
+ /** Row offset inside the chunk's value-offset buffer. */
27
+ readonly valueOffsetIndex: number;
28
+ /** UTF-8 value-offset buffer. */
29
+ readonly valueOffsets: Int32Array | Uint32Array;
30
+ /** Contiguous UTF-8 value bytes. */
31
+ readonly values: Uint8Array;
32
+ };
33
+ /**
34
+ * Encodes one JavaScript string into a reusable UTF-8 byte view.
35
+ */
36
+ export declare function makeUtf8StringView(value: string): Utf8StringView;
37
+ /**
38
+ * Builds a direct-buffer source from an Arrow Utf8 vector without copying UTF-8 bytes.
39
+ */
40
+ export declare function getArrowUtf8ColumnSource(utf8Column: arrow.Vector<arrow.Utf8>): Utf8ColumnSource | null;
41
+ /**
42
+ * Fills a reusable UTF-8 view for one Arrow Utf8 row without decoding the row to a string.
43
+ */
44
+ export declare function getArrowUtf8RowView(utf8Column: arrow.Vector<arrow.Utf8>, rowIndex: number, out: Utf8StringView): boolean;
45
+ /**
46
+ * Fills a reusable UTF-8 view for one normalized Utf8 column row.
47
+ */
48
+ export declare function getUtf8ColumnSourceRowView(source: Utf8ColumnSource, rowIndex: number, out: Utf8StringView): boolean;
49
+ /**
50
+ * Finds the first row in an Arrow Utf8 column whose bytes equal the requested string view.
51
+ */
52
+ export declare function arrowFindUtf8(utf8Column: arrow.Vector<arrow.Utf8>, value: Utf8StringView, startRow?: number): number;
53
+ //# sourceMappingURL=utf8-string-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utf8-string-view.d.ts","sourceRoot":"","sources":["../../src/utils/utf8-string-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAE3C,oDAAoD;AACpD,MAAM,MAAM,cAAc,GAAG;IAC3B,2BAA2B;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAClD,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CACjD,CAAC;AAEF,wEAAwE;AACxE,MAAM,MAAM,qBAAqB,GAAG;IAClC,iDAAiD;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,yDAAyD;IACzD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,iCAAiC;IACjC,QAAQ,CAAC,YAAY,EAAE,UAAU,GAAG,WAAW,CAAC;IAChD,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B,CAAC;AAKF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAGhE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GACnC,gBAAgB,GAAG,IAAI,CA6BzB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EACpC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,cAAc,GAClB,OAAO,CA4BT;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,cAAc,GAClB,OAAO,CAuBT;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EACpC,KAAK,EAAE,cAAc,EACrB,QAAQ,SAAI,GACX,MAAM,CAcR"}
@@ -0,0 +1,169 @@
1
+ const textEncoder = new TextEncoder();
2
+ const textDecoder = new TextDecoder();
3
+ /**
4
+ * Encodes one JavaScript string into a reusable UTF-8 byte view.
5
+ */
6
+ export function makeUtf8StringView(value) {
7
+ const data = textEncoder.encode(value);
8
+ return { data, start: 0, end: data.length };
9
+ }
10
+ /**
11
+ * Builds a direct-buffer source from an Arrow Utf8 vector without copying UTF-8 bytes.
12
+ */
13
+ export function getArrowUtf8ColumnSource(utf8Column) {
14
+ const chunks = getArrowUtf8DataChunks(utf8Column);
15
+ if (!chunks || chunks.length === 0) {
16
+ return null;
17
+ }
18
+ const sourceChunks = [];
19
+ let rowOffset = 0;
20
+ for (const chunk of chunks) {
21
+ const valueOffsets = chunk.valueOffsets;
22
+ const values = chunk.values;
23
+ if (!valueOffsets || !values) {
24
+ return null;
25
+ }
26
+ sourceChunks.push({
27
+ rowOffset,
28
+ rowCount: chunk.length,
29
+ valueOffsetIndex: 0,
30
+ valueOffsets,
31
+ values
32
+ });
33
+ rowOffset += chunk.length;
34
+ }
35
+ return {
36
+ rowCount: utf8Column.length,
37
+ chunks: sourceChunks,
38
+ isValid: rowIndex => utf8Column.isValid(rowIndex)
39
+ };
40
+ }
41
+ /**
42
+ * Fills a reusable UTF-8 view for one Arrow Utf8 row without decoding the row to a string.
43
+ */
44
+ export function getArrowUtf8RowView(utf8Column, rowIndex, out) {
45
+ if (!Number.isInteger(rowIndex) || rowIndex < 0 || rowIndex >= utf8Column.length) {
46
+ return false;
47
+ }
48
+ if (!utf8Column.isValid(rowIndex)) {
49
+ return false;
50
+ }
51
+ const chunks = getArrowUtf8DataChunks(utf8Column);
52
+ if (!chunks || chunks.length === 0) {
53
+ return false;
54
+ }
55
+ let rowOffset = 0;
56
+ for (const chunk of chunks) {
57
+ const chunkEnd = rowOffset + chunk.length;
58
+ if (rowIndex >= rowOffset && rowIndex < chunkEnd) {
59
+ const valueOffsets = chunk.valueOffsets;
60
+ const values = chunk.values;
61
+ if (!valueOffsets || !values) {
62
+ return false;
63
+ }
64
+ return fillUtf8StringView(valueOffsets, values, rowIndex - rowOffset, out);
65
+ }
66
+ rowOffset = chunkEnd;
67
+ }
68
+ return false;
69
+ }
70
+ /**
71
+ * Fills a reusable UTF-8 view for one normalized Utf8 column row.
72
+ */
73
+ export function getUtf8ColumnSourceRowView(source, rowIndex, out) {
74
+ if (!Number.isInteger(rowIndex) || rowIndex < 0 || rowIndex >= source.rowCount) {
75
+ return false;
76
+ }
77
+ if (!source.isValid(rowIndex)) {
78
+ return false;
79
+ }
80
+ for (const chunk of source.chunks) {
81
+ const chunkEnd = chunk.rowOffset + chunk.rowCount;
82
+ if (rowIndex < chunk.rowOffset || rowIndex >= chunkEnd) {
83
+ continue;
84
+ }
85
+ return fillUtf8StringView(chunk.valueOffsets, chunk.values, chunk.valueOffsetIndex + rowIndex - chunk.rowOffset, out);
86
+ }
87
+ return false;
88
+ }
89
+ /**
90
+ * Finds the first row in an Arrow Utf8 column whose bytes equal the requested string view.
91
+ */
92
+ export function arrowFindUtf8(utf8Column, value, startRow = 0) {
93
+ const normalizedStartRow = Math.max(0, startRow);
94
+ const fastResult = arrowFindUtf8InDataChunks(utf8Column, value, normalizedStartRow);
95
+ if (fastResult !== null) {
96
+ return fastResult;
97
+ }
98
+ const expected = decodeUtf8StringView(value);
99
+ for (let rowIndex = normalizedStartRow; rowIndex < utf8Column.length; rowIndex += 1) {
100
+ if (utf8Column.get(rowIndex) === expected) {
101
+ return rowIndex;
102
+ }
103
+ }
104
+ return -1;
105
+ }
106
+ /**
107
+ * Scans Arrow's contiguous Utf8 buffers directly when the vector exposes them.
108
+ */
109
+ function arrowFindUtf8InDataChunks(utf8Column, value, startRow) {
110
+ const chunks = getArrowUtf8DataChunks(utf8Column);
111
+ if (!chunks || chunks.length === 0) {
112
+ return null;
113
+ }
114
+ let globalRowOffset = 0;
115
+ for (const chunk of chunks) {
116
+ const valueOffsets = chunk.valueOffsets;
117
+ const values = chunk.values;
118
+ if (!valueOffsets || !values) {
119
+ return null;
120
+ }
121
+ const chunkStartRow = Math.max(0, startRow - globalRowOffset);
122
+ for (let chunkRow = chunkStartRow; chunkRow < chunk.length; chunkRow += 1) {
123
+ const globalRow = globalRowOffset + chunkRow;
124
+ if (!utf8Column.isValid(globalRow)) {
125
+ continue;
126
+ }
127
+ const start = valueOffsets[chunkRow];
128
+ const end = valueOffsets[chunkRow + 1];
129
+ if (start !== undefined && end !== undefined && utf8BytesEqual(values, start, end, value)) {
130
+ return globalRow;
131
+ }
132
+ }
133
+ globalRowOffset += chunk.length;
134
+ }
135
+ return -1;
136
+ }
137
+ function getArrowUtf8DataChunks(utf8Column) {
138
+ return utf8Column.data;
139
+ }
140
+ function fillUtf8StringView(valueOffsets, values, offsetIndex, out) {
141
+ const start = valueOffsets[offsetIndex];
142
+ const end = valueOffsets[offsetIndex + 1];
143
+ if (start === undefined || end === undefined) {
144
+ return false;
145
+ }
146
+ out.data = values;
147
+ out.start = start;
148
+ out.end = end;
149
+ return true;
150
+ }
151
+ /**
152
+ * Returns whether a UTF-8 byte range equals one target UTF-8 view.
153
+ */
154
+ function utf8BytesEqual(data, start, end, value) {
155
+ const valueLength = value.end - value.start;
156
+ if (end - start !== valueLength) {
157
+ return false;
158
+ }
159
+ for (let index = 0; index < valueLength; index += 1) {
160
+ if (data[start + index] !== value.data[value.start + index]) {
161
+ return false;
162
+ }
163
+ }
164
+ return true;
165
+ }
166
+ function decodeUtf8StringView(value) {
167
+ return textDecoder.decode(value.data.subarray(value.start, value.end));
168
+ }
169
+ //# sourceMappingURL=utf8-string-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utf8-string-view.js","sourceRoot":"","sources":["../../src/utils/utf8-string-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utf8-string-view.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utf8-string-view.test.d.ts","sourceRoot":"","sources":["../../src/utils/utf8-string-view.test.ts"],"names":[],"mappings":""}