@deck.gl-community/infovis-layers 9.3.2 → 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 (129) 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 +31 -53
  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/layer-filter.js +4 -4
  78. package/dist/views/layer-filter.js.map +1 -1
  79. package/dist/views/orthographic-utils.d.ts +30 -2
  80. package/dist/views/orthographic-utils.d.ts.map +1 -1
  81. package/dist/views/orthographic-utils.js +33 -14
  82. package/dist/views/orthographic-utils.js.map +1 -1
  83. package/dist/views/view-layout/build-views-from-view-layout.d.ts +37 -0
  84. package/dist/views/view-layout/build-views-from-view-layout.d.ts.map +1 -0
  85. package/dist/views/view-layout/build-views-from-view-layout.js +413 -0
  86. package/dist/views/view-layout/build-views-from-view-layout.js.map +1 -0
  87. package/dist/views/view-layout/index.d.ts +3 -0
  88. package/dist/views/view-layout/index.d.ts.map +1 -0
  89. package/dist/views/view-layout/index.js +3 -0
  90. package/dist/views/view-layout/index.js.map +1 -0
  91. package/dist/views/view-layout/view-layout-item.d.ts +74 -0
  92. package/dist/views/view-layout/view-layout-item.d.ts.map +1 -0
  93. package/dist/views/view-layout/view-layout-item.js +48 -0
  94. package/dist/views/view-layout/view-layout-item.js.map +1 -0
  95. package/dist/views/view-layout/view-layout.test.d.ts +2 -0
  96. package/dist/views/view-layout/view-layout.test.d.ts.map +1 -0
  97. package/dist/views/view-layout/view-layout.test.js +112 -0
  98. package/dist/views/view-layout/view-layout.test.js.map +1 -0
  99. package/dist/views/viewport-bounds-utils.d.ts +55 -0
  100. package/dist/views/viewport-bounds-utils.d.ts.map +1 -0
  101. package/dist/views/viewport-bounds-utils.js +70 -0
  102. package/dist/views/viewport-bounds-utils.js.map +1 -0
  103. package/package.json +15 -5
  104. package/src/index.ts +91 -2
  105. package/src/layers/animation-layer/animation-layer.ts +92 -0
  106. package/src/layers/animation-layer/animation.ts +328 -0
  107. package/src/layers/block-layer/block-layer-fragment.glsl.ts +41 -0
  108. package/src/layers/block-layer/block-layer-uniforms.ts +43 -0
  109. package/src/layers/block-layer/block-layer-vertex.glsl.ts +67 -0
  110. package/src/layers/block-layer/block-layer.ts +199 -0
  111. package/src/layers/fast-text-layer/fast-text-layer.test.ts +359 -0
  112. package/src/layers/fast-text-layer/fast-text-layer.ts +1208 -0
  113. package/src/layers/fast-text-layer/fast-text-layout.ts +1124 -0
  114. package/src/layers/fast-text-layer/font-atlas.ts +574 -0
  115. package/src/layers/fast-text-layer/index.ts +37 -0
  116. package/src/layers/time-delta-layer.ts +55 -70
  117. package/src/synchronized-views/synchronized-views.ts +1 -1
  118. package/src/utils/format-utils.ts +90 -40
  119. package/src/utils/utf8-string-view.test.ts +119 -0
  120. package/src/utils/utf8-string-view.ts +273 -0
  121. package/src/views/bounds-utils.ts +88 -0
  122. package/src/views/layer-bounds-filter.ts +160 -0
  123. package/src/views/layer-filter.ts +4 -4
  124. package/src/views/orthographic-utils.ts +65 -18
  125. package/src/views/view-layout/build-views-from-view-layout.ts +547 -0
  126. package/src/views/view-layout/index.ts +18 -0
  127. package/src/views/view-layout/view-layout-item.ts +125 -0
  128. package/src/views/view-layout/view-layout.test.ts +129 -0
  129. package/src/views/viewport-bounds-utils.ts +104 -0
@@ -0,0 +1,67 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ export default `\
5
+ #version 300 es
6
+ #define SHADER_NAME block-layer-vertex-shader
7
+
8
+ in vec3 positions;
9
+ in vec3 instancePositions;
10
+ in vec3 instancePositions64Low;
11
+ in vec2 instanceSizes;
12
+ in float instanceLineWidths;
13
+ in vec4 instanceFillColors;
14
+ in vec4 instanceLineColors;
15
+ in vec3 instancePickingColors;
16
+
17
+ out vec2 unitPosition;
18
+ flat out vec4 vFillColor;
19
+ flat out vec4 vLineColor;
20
+ flat out float lineWidth;
21
+ flat out vec2 size;
22
+
23
+ // This needs to be added back to the project module
24
+ vec2 project_size_to_pixel(vec2 size, int unit) {
25
+ if (unit == UNIT_PIXELS) return size;
26
+ if (unit == UNIT_COMMON && project.projectionMode != PROJECTION_MODE_IDENTITY) {
27
+ return size * project.scale;
28
+ }
29
+ return project_size(size) * project.scale;
30
+ }
31
+
32
+ float clamp_signed_size(float size, float minPixels, float maxPixels) {
33
+ float clampedMagnitude = clamp(abs(size), minPixels, maxPixels);
34
+ if (size < 0.0) {
35
+ return -clampedMagnitude;
36
+ }
37
+ return clampedMagnitude;
38
+ }
39
+
40
+ void main(void) {
41
+ geometry.worldPosition = instancePositions;
42
+ geometry.pickingColor = instancePickingColors;
43
+ geometry.uv = positions.xy;
44
+
45
+ vec2 pixelSize = project_size_to_pixel(instanceSizes, block.sizeUnits);
46
+ pixelSize.x = clamp_signed_size(pixelSize.x, block.widthMinPixels, block.sizeMaxPixels);
47
+ pixelSize.y = clamp_signed_size(pixelSize.y, block.heightMinPixels, block.sizeMaxPixels);
48
+ unitPosition = positions.xy;
49
+ size = pixelSize;
50
+ lineWidth = project_size_to_pixel(vec2(instanceLineWidths, 0.0), block.lineWidthUnits).x;
51
+
52
+ // Find the center of the point and add the current vertex
53
+ vec3 offset = vec3(unitPosition * project_pixel_size(pixelSize), 0.0);
54
+ DECKGL_FILTER_SIZE(offset, geometry);
55
+
56
+ gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);
57
+ DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
58
+
59
+ // Apply opacity to instance color, or return instance picking color
60
+ vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * layer.opacity);
61
+ DECKGL_FILTER_COLOR(vFillColor, geometry);
62
+
63
+ vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * layer.opacity);
64
+ DECKGL_FILTER_COLOR(vLineColor, geometry);
65
+ }
66
+ `;
67
+ //# sourceMappingURL=block-layer-vertex.glsl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-layer-vertex.glsl.js","sourceRoot":"","sources":["../../../src/layers/block-layer/block-layer-vertex.glsl.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,+BAA+B;AAC/B,oCAAoC;AAEpC,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Dd,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { Accessor, AccessorFunction, Color, DefaultProps, Layer, LayerDataSource, LayerProps, Position, Unit, UpdateParameters } from '@deck.gl/core';
2
+ import { Model } from '@luma.gl/engine';
3
+ /** Properties supported by {@link BlockLayer}. */
4
+ export type BlockLayerProps<DataT = unknown> = _BlockLayerProps<DataT> & LayerProps;
5
+ /** Properties added by BlockLayer. */
6
+ type _BlockLayerProps<DataT> = {
7
+ /** Data objects rendered as rectangular blocks. */
8
+ data: LayerDataSource<DataT>;
9
+ /**
10
+ * The units of the block size, one of `'meters'`, `'common'`, and `'pixels'`.
11
+ * @defaultValue 'meters'
12
+ */
13
+ sizeUnits?: Unit;
14
+ /**
15
+ * The minimum width in pixels. This prop can be used to prevent the block from getting too small when zoomed out.
16
+ * @defaultValue 0
17
+ */
18
+ widthMinPixels?: number;
19
+ /**
20
+ * The minimum height in pixels. This prop can be used to prevent the block from getting too small when zoomed out.
21
+ * @defaultValue 0
22
+ */
23
+ heightMinPixels?: number;
24
+ /**
25
+ * The maximum width or height in pixels. This prop can be used to prevent the block from getting too big when zoomed in.
26
+ * @defaultValue Number.MAX_SAFE_INTEGER
27
+ */
28
+ sizeMaxPixels?: number;
29
+ /**
30
+ * The units of the stroke width, one of `'meters'`, `'common'`, and `'pixels'`.
31
+ * @defaultValue 'pixels'
32
+ */
33
+ lineWidthUnits?: Unit;
34
+ /**
35
+ * The outline width of each object.
36
+ * @defaultValue 1
37
+ */
38
+ getLineWidth?: Accessor<DataT, number>;
39
+ /**
40
+ * Method called to retrieve the position of each object.
41
+ * @defaultValue object => object.position
42
+ */
43
+ getPosition?: AccessorFunction<DataT, Position>;
44
+ /** Width and height of each block. @defaultValue [10, 10] */
45
+ getSize?: Accessor<DataT, [number, number]>;
46
+ /**
47
+ * The rgba color is in the format of `[r, g, b, [a]]`
48
+ * @defaultValue [0, 0, 0, 255]
49
+ */
50
+ getLineColor?: Accessor<DataT, Color>;
51
+ /**
52
+ * The rgba color is in the format of `[r, g, b, [a]]`
53
+ * @defaultValue [0, 0, 0, 255]
54
+ */
55
+ getFillColor?: Accessor<DataT, Color>;
56
+ };
57
+ /** Renders axis-aligned rectangular blocks with fill and outline colors. */
58
+ export declare class BlockLayer<DataT = any, ExtraPropsT extends {} = {}> extends Layer<ExtraPropsT & Required<_BlockLayerProps<DataT>>> {
59
+ static layerName: string;
60
+ static defaultProps: DefaultProps<BlockLayerProps<unknown>>;
61
+ state: {
62
+ model?: Model;
63
+ };
64
+ getShaders(): any;
65
+ initializeState(): void;
66
+ updateState(params: UpdateParameters<this>): void;
67
+ draw(): void;
68
+ protected _getModel(): Model;
69
+ }
70
+ export {};
71
+ //# sourceMappingURL=block-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-layer.d.ts","sourceRoot":"","sources":["../../../src/layers/block-layer/block-layer.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAEhB,KAAK,EACL,YAAY,EACZ,KAAK,EACL,eAAe,EACf,UAAU,EAEV,QAAQ,EAGR,IAAI,EACJ,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAW,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAuBhD,kDAAkD;AAClD,MAAM,MAAM,eAAe,CAAC,KAAK,GAAG,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;AAEpF,sCAAsC;AACtC,KAAK,gBAAgB,CAAC,KAAK,IAAI;IAC7B,mDAAmD;IACnD,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,cAAc,CAAC,EAAE,IAAI,CAAC;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEvC;;;OAGG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAChD,6DAA6D;IAC7D,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACvC,CAAC;AAEF,4EAA4E;AAC5E,qBAAa,UAAU,CAAC,KAAK,GAAG,GAAG,EAAE,WAAW,SAAS,EAAE,GAAG,EAAE,CAAE,SAAQ,KAAK,CAC7E,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAChD;IACC,OAAgB,SAAS,SAAgB;IACzC,OAAgB,YAAY,yCAAgB;IAEnC,KAAK,EAAE;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACf,CAAM;IAEE,UAAU;IAQnB,eAAe;IAoCN,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI;IAUjD,IAAI;IAcb,SAAS,CAAC,SAAS,IAAI,KAAK;CAgB7B"}
@@ -0,0 +1,108 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { color, Layer, picking, project32, UNIT } from '@deck.gl/core';
5
+ import { Geometry, Model } from '@luma.gl/engine';
6
+ import fs from './block-layer-fragment.glsl';
7
+ import { blockUniforms } from "./block-layer-uniforms.js";
8
+ import vs from './block-layer-vertex.glsl';
9
+ const DEFAULT_COLOR = [0, 0, 0, 255];
10
+ const defaultProps = {
11
+ sizeUnits: 'meters',
12
+ widthMinPixels: { type: 'number', min: 0, value: 0 },
13
+ heightMinPixels: { type: 'number', min: 0, value: 0 },
14
+ sizeMaxPixels: { type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER },
15
+ lineWidthUnits: 'pixels',
16
+ getPosition: { type: 'accessor', value: (x) => x.position },
17
+ getSize: { type: 'accessor', value: [10, 10] },
18
+ getLineWidth: { type: 'accessor', value: 1 },
19
+ getFillColor: { type: 'accessor', value: DEFAULT_COLOR },
20
+ getLineColor: { type: 'accessor', value: DEFAULT_COLOR }
21
+ };
22
+ /** Renders axis-aligned rectangular blocks with fill and outline colors. */
23
+ export class BlockLayer extends Layer {
24
+ static layerName = 'BlockLayer';
25
+ static defaultProps = defaultProps;
26
+ state = {};
27
+ getShaders() {
28
+ return super.getShaders({
29
+ vs,
30
+ fs,
31
+ modules: [project32, color, picking, blockUniforms]
32
+ });
33
+ }
34
+ initializeState() {
35
+ this.getAttributeManager().addInstanced({
36
+ instancePositions: {
37
+ size: 3,
38
+ type: 'float64',
39
+ fp64: this.use64bitPositions(),
40
+ transition: true,
41
+ accessor: 'getPosition'
42
+ },
43
+ instanceSizes: {
44
+ size: 2,
45
+ transition: true,
46
+ accessor: 'getSize'
47
+ },
48
+ instanceLineWidths: {
49
+ size: 1,
50
+ transition: true,
51
+ accessor: 'getLineWidth'
52
+ },
53
+ instanceLineColors: {
54
+ size: this.props.colorFormat.length,
55
+ type: 'unorm8',
56
+ transition: true,
57
+ accessor: 'getLineColor',
58
+ defaultValue: DEFAULT_COLOR
59
+ },
60
+ instanceFillColors: {
61
+ size: this.props.colorFormat.length,
62
+ type: 'unorm8',
63
+ transition: true,
64
+ accessor: 'getFillColor',
65
+ defaultValue: DEFAULT_COLOR
66
+ }
67
+ });
68
+ }
69
+ updateState(params) {
70
+ const { changeFlags } = params;
71
+ super.updateState(params);
72
+ if (changeFlags.extensionsChanged) {
73
+ this.state.model?.destroy();
74
+ this.state.model = this._getModel();
75
+ this.getAttributeManager().invalidateAll();
76
+ }
77
+ }
78
+ draw() {
79
+ const { sizeUnits, widthMinPixels, heightMinPixels, sizeMaxPixels, lineWidthUnits } = this.props;
80
+ const model = this.state.model;
81
+ const blockProps = {
82
+ sizeUnits: UNIT[sizeUnits],
83
+ widthMinPixels,
84
+ heightMinPixels,
85
+ sizeMaxPixels,
86
+ lineWidthUnits: UNIT[lineWidthUnits]
87
+ };
88
+ model.shaderInputs.setProps({ block: blockProps });
89
+ model.draw(this.context.renderPass);
90
+ }
91
+ _getModel() {
92
+ // a square
93
+ const positions = [0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0];
94
+ return new Model(this.context.device, {
95
+ ...this.getShaders(),
96
+ id: this.props.id,
97
+ bufferLayout: this.getAttributeManager().getBufferLayouts(),
98
+ geometry: new Geometry({
99
+ topology: 'triangle-strip',
100
+ attributes: {
101
+ positions: new Float32Array(positions)
102
+ }
103
+ }),
104
+ isInstanced: true
105
+ });
106
+ }
107
+ }
108
+ //# sourceMappingURL=block-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-layer.js","sourceRoot":"","sources":["../../../src/layers/block-layer/block-layer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ import { Layer } from '@deck.gl/core';
2
+ import { Buffer, Texture } from '@luma.gl/core';
3
+ import { Model } from '@luma.gl/engine';
4
+ import { FastTextFontAtlasManager } from "./font-atlas.js";
5
+ import type { FastTextAlignmentBaseline, FastTextAnchor, FastTextClipRect, FastTextContentAlign, FastTextGlyphData, FastTextUtf8Column, FastTextUtf8ViewAccessor } from "./fast-text-layout.js";
6
+ import type { FastTextCharacterMapping, FastTextFontAtlas, FastTextFontSettings } from "./font-atlas.js";
7
+ import type { Accessor, Color, DefaultProps, LayerContext, LayerDataSource, LayerProps, Position, Unit, UpdateParameters } from '@deck.gl/core';
8
+ /** Fast text layer props that intentionally cover dense Tracevis-style span labels. */
9
+ export type _FastTextLayerProps<DataT> = {
10
+ /** Source label rows. */
11
+ data: LayerDataSource<DataT>;
12
+ /** If true, labels face the camera in screen space. */
13
+ billboard?: boolean;
14
+ /** Text size multiplier. */
15
+ sizeScale?: number;
16
+ /** Units for `size`, matching deck.gl size units. */
17
+ sizeUnits?: Unit;
18
+ /** Minimum rendered text size in screen pixels. */
19
+ sizeMinPixels?: number;
20
+ /** Maximum rendered text size in screen pixels. */
21
+ sizeMaxPixels?: number;
22
+ /** Fragment alpha cutoff below which a glyph pixel is discarded. */
23
+ alphaCutoff?: number;
24
+ /** Character set to place in the generated atlas, or `auto` to scan `getText`. */
25
+ characterSet?: FastTextFontSettings['characterSet'] | 'auto';
26
+ /** CSS font family used for generated atlases. */
27
+ fontFamily?: FastTextFontSettings['fontFamily'];
28
+ /** CSS font weight used for generated atlases. */
29
+ fontWeight?: FastTextFontSettings['fontWeight'];
30
+ /** Unitless line-height multiplier. */
31
+ lineHeight?: number;
32
+ /** Layer-wide text size. */
33
+ size?: number;
34
+ /** Layer-wide pixel offset applied after glyph layout. */
35
+ pixelOffset?: readonly [number, number];
36
+ /** Compatibility alias for callers that still inspect TextLayer-style pixel offset props. */
37
+ getPixelOffset?: readonly [number, number];
38
+ /** Additional atlas rasterization settings. */
39
+ fontSettings?: FastTextFontSettings;
40
+ /** Optional prebuilt mapping, supplied together with `fontAtlas`. */
41
+ characterMapping?: FastTextCharacterMapping | null;
42
+ /** Optional prebuilt atlas, supplied together with `characterMapping`. */
43
+ fontAtlas?: FastTextFontAtlas | null;
44
+ /** Label text accessor. */
45
+ getText?: Accessor<DataT, string>;
46
+ /** Optional UTF-8 text column used instead of `getText`. */
47
+ textUtf8Column?: FastTextUtf8Column | null;
48
+ /** Row accessor into `textUtf8Column`. Defaults to the source row index. */
49
+ getTextUtf8Row?: Accessor<DataT, number | null>;
50
+ /** Optional accessor that fills a reused UTF-8 byte view instead of calling `getText`. */
51
+ getTextUtf8?: FastTextUtf8ViewAccessor<DataT> | null;
52
+ /** Whether labels are expected to contain one line with no newline handling. */
53
+ singleLine?: boolean;
54
+ /** Label anchor position accessor. */
55
+ getPosition?: Accessor<DataT, Position>;
56
+ /** Label color accessor. */
57
+ getColor?: Accessor<DataT, Color>;
58
+ /** Layer-wide horizontal alignment. */
59
+ textAnchor?: FastTextAnchor;
60
+ /** Layer-wide vertical alignment. */
61
+ alignmentBaseline?: FastTextAlignmentBaseline;
62
+ /** Per-row content clip rectangle accessor. */
63
+ getClipRect?: Accessor<DataT, FastTextClipRect>;
64
+ /** Compatibility alias for callers that still inspect TextLayer-style content boxes. */
65
+ getContentBox?: Accessor<DataT, FastTextClipRect>;
66
+ /** Minimum visible content box dimensions in screen pixels. */
67
+ contentCutoffPixels?: readonly [width: number, height: number];
68
+ /** Horizontal alignment mode inside the visible content box. */
69
+ contentAlignHorizontal?: FastTextContentAlign;
70
+ /** Vertical alignment mode inside the visible content box. */
71
+ contentAlignVertical?: FastTextContentAlign;
72
+ };
73
+ /** Props accepted by {@link FastTextLayer}. */
74
+ export type FastTextLayerProps<DataT = unknown> = _FastTextLayerProps<DataT> & LayerProps;
75
+ /** Lightweight bitmap text layer backed by one typed-array glyph instance stream. */
76
+ export declare class FastTextLayer<DataT = any, ExtraPropsT extends {} = {}> extends Layer<ExtraPropsT & Required<_FastTextLayerProps<DataT>>> {
77
+ static defaultProps: DefaultProps<FastTextLayerProps<unknown>>;
78
+ static layerName: string;
79
+ state: FastTextLayerState;
80
+ /** Return the shader set used by the direct glyph instance model. */
81
+ getShaders(): any;
82
+ /** Initialize the model and atlas manager. */
83
+ initializeState(): void;
84
+ /** Rebuild text layout or update dynamic glyph attributes when inputs change. */
85
+ updateState(params: UpdateParameters<this>): void;
86
+ /** Draw the glyph model when atlas texture and glyph buffers are ready. */
87
+ draw(): void;
88
+ /** Release GPU buffers, atlas texture, and the luma model. */
89
+ finalizeState(context: LayerContext): void;
90
+ /** Build a luma model for instanced glyph quads. */
91
+ private getModel;
92
+ /** Rebuild CPU glyph data, GPU vertex buffers, and the font atlas texture. */
93
+ private rebuildGlyphState;
94
+ /** Rewrite dynamic glyph attributes in place without rebuilding text layout. */
95
+ private updateDynamicGlyphState;
96
+ /** Return whether source data or UTF-8 column growth invalidated the current glyph layout. */
97
+ private hasMutableLayoutSourceChanged;
98
+ /** Resolve a caller-supplied atlas or rebuild the local generated atlas. */
99
+ private resolveFontAtlas;
100
+ /** Resolve the atlas pixel size used by glyph offsets. */
101
+ private resolveFontSize;
102
+ /** Resolve whether the current atlas should be sampled as SDF data. */
103
+ private resolveSdfEnabled;
104
+ /** Resolve the SDF smoothing width for the current atlas. */
105
+ private resolveSdfSmoothing;
106
+ /** Upload a new atlas texture when the atlas object changes. */
107
+ private syncAtlasTexture;
108
+ }
109
+ type FastTextLayerState = {
110
+ /** Atlas manager owned by this layer when no external atlas is supplied. */
111
+ fontAtlasManager: FastTextFontAtlasManager;
112
+ /** Luma model used to draw glyph quads. */
113
+ model?: Model;
114
+ /** Last expanded CPU glyph data. */
115
+ glyphData?: FastTextGlyphData;
116
+ /** Primitive source-shape values captured when `glyphData` was built. */
117
+ layoutSourceSignature?: FastTextLayoutSourceSignature;
118
+ /** GPU buffers for the current glyph data. */
119
+ buffers?: FastTextLayerBuffers;
120
+ /** Atlas object currently uploaded to `atlasTexture`. */
121
+ textureAtlas?: FastTextFontAtlas;
122
+ /** GPU texture for the current font atlas. */
123
+ atlasTexture?: Texture;
124
+ /** Atlas font size in pixels for the current glyph offsets. */
125
+ fontSize?: number;
126
+ };
127
+ type FastTextLayerBuffers = {
128
+ /** Packed glyph offsets, atlas frames, clip rectangles, and colors. */
129
+ instanceGlyphData: Buffer;
130
+ /** Repeated per-glyph anchor positions. */
131
+ instancePositions: Buffer;
132
+ };
133
+ type FastTextLayoutSourceSignature = {
134
+ /** Number of source rows visible through the data iterable. */
135
+ dataRowCount: number;
136
+ /** Whether source text comes from a row-level UTF-8 view accessor. */
137
+ hasTextUtf8Accessor: boolean;
138
+ /** Number of rows in the optional UTF-8 text column. */
139
+ textUtf8ColumnRowCount: number;
140
+ /** Number of chunks in the optional UTF-8 text column. */
141
+ textUtf8ColumnChunkCount: number;
142
+ /** Total entries across UTF-8 offset buffers. */
143
+ textUtf8ColumnOffsetCount: number;
144
+ /** Total bytes across UTF-8 value buffers. */
145
+ textUtf8ColumnValueByteLength: number;
146
+ };
147
+ export {};
148
+ //# sourceMappingURL=fast-text-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fast-text-layer.d.ts","sourceRoot":"","sources":["../../../src/layers/fast-text-layer/fast-text-layer.ts"],"names":[],"mappings":"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"}