@mapwhit/tilerenderer 0.52.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/README.md +7 -0
  2. package/build/min/package.json +2 -1
  3. package/build/min/src/shaders/_prelude.fragment.glsl.js +2 -2
  4. package/build/min/src/shaders/_prelude.vertex.glsl.js +2 -2
  5. package/build/min/src/shaders/background.fragment.glsl.js +2 -2
  6. package/build/min/src/shaders/background.vertex.glsl.js +1 -1
  7. package/build/min/src/shaders/background_pattern.fragment.glsl.js +2 -2
  8. package/build/min/src/shaders/background_pattern.vertex.glsl.js +1 -1
  9. package/build/min/src/shaders/circle.fragment.glsl.js +2 -2
  10. package/build/min/src/shaders/circle.vertex.glsl.js +2 -2
  11. package/build/min/src/shaders/clipping_mask.fragment.glsl.js +1 -1
  12. package/build/min/src/shaders/clipping_mask.vertex.glsl.js +1 -1
  13. package/build/min/src/shaders/collision_box.fragment.glsl.js +1 -1
  14. package/build/min/src/shaders/collision_box.vertex.glsl.js +1 -1
  15. package/build/min/src/shaders/collision_circle.fragment.glsl.js +1 -1
  16. package/build/min/src/shaders/collision_circle.vertex.glsl.js +1 -1
  17. package/build/min/src/shaders/debug.fragment.glsl.js +1 -1
  18. package/build/min/src/shaders/debug.vertex.glsl.js +1 -1
  19. package/build/min/src/shaders/fill.fragment.glsl.js +2 -2
  20. package/build/min/src/shaders/fill.vertex.glsl.js +2 -2
  21. package/build/min/src/shaders/fill_extrusion.fragment.glsl.js +2 -2
  22. package/build/min/src/shaders/fill_extrusion.vertex.glsl.js +2 -2
  23. package/build/min/src/shaders/fill_extrusion_pattern.fragment.glsl.js +2 -2
  24. package/build/min/src/shaders/fill_extrusion_pattern.vertex.glsl.js +2 -2
  25. package/build/min/src/shaders/fill_outline.fragment.glsl.js +2 -2
  26. package/build/min/src/shaders/fill_outline.vertex.glsl.js +2 -2
  27. package/build/min/src/shaders/fill_outline_pattern.fragment.glsl.js +2 -2
  28. package/build/min/src/shaders/fill_outline_pattern.vertex.glsl.js +2 -2
  29. package/build/min/src/shaders/fill_pattern.fragment.glsl.js +2 -2
  30. package/build/min/src/shaders/fill_pattern.vertex.glsl.js +2 -2
  31. package/build/min/src/shaders/heatmap.fragment.glsl.js +2 -2
  32. package/build/min/src/shaders/heatmap.vertex.glsl.js +2 -2
  33. package/build/min/src/shaders/heatmap_texture.fragment.glsl.js +2 -2
  34. package/build/min/src/shaders/heatmap_texture.vertex.glsl.js +1 -1
  35. package/build/min/src/shaders/hillshade.fragment.glsl.js +2 -2
  36. package/build/min/src/shaders/hillshade.vertex.glsl.js +1 -1
  37. package/build/min/src/shaders/hillshade_prepare.fragment.glsl.js +2 -2
  38. package/build/min/src/shaders/hillshade_prepare.vertex.glsl.js +1 -1
  39. package/build/min/src/shaders/line.fragment.glsl.js +2 -2
  40. package/build/min/src/shaders/line.vertex.glsl.js +2 -2
  41. package/build/min/src/shaders/line_gradient.fragment.glsl.js +2 -2
  42. package/build/min/src/shaders/line_gradient.vertex.glsl.js +2 -2
  43. package/build/min/src/shaders/line_pattern.fragment.glsl.js +2 -2
  44. package/build/min/src/shaders/line_pattern.vertex.glsl.js +2 -2
  45. package/build/min/src/shaders/line_sdf.fragment.glsl.js +2 -2
  46. package/build/min/src/shaders/line_sdf.vertex.glsl.js +2 -2
  47. package/build/min/src/shaders/raster.fragment.glsl.js +2 -2
  48. package/build/min/src/shaders/raster.vertex.glsl.js +1 -1
  49. package/build/min/src/shaders/symbol_icon.fragment.glsl.js +2 -2
  50. package/build/min/src/shaders/symbol_icon.vertex.glsl.js +2 -2
  51. package/build/min/src/shaders/symbol_sdf.fragment.glsl.js +2 -2
  52. package/build/min/src/shaders/symbol_sdf.vertex.glsl.js +2 -2
  53. package/package.json +5 -4
  54. package/src/data/array_types.js +55 -117
  55. package/src/data/bucket/circle_attributes.js +2 -4
  56. package/src/data/bucket/circle_bucket.js +19 -16
  57. package/src/data/bucket/fill_attributes.js +2 -4
  58. package/src/data/bucket/fill_bucket.js +38 -27
  59. package/src/data/bucket/fill_extrusion_attributes.js +2 -4
  60. package/src/data/bucket/fill_extrusion_bucket.js +56 -37
  61. package/src/data/bucket/heatmap_bucket.js +2 -11
  62. package/src/data/bucket/line_attributes.js +2 -4
  63. package/src/data/bucket/line_bucket.js +208 -163
  64. package/src/data/bucket/pattern_attributes.js +2 -4
  65. package/src/data/bucket/pattern_bucket_features.js +7 -9
  66. package/src/data/bucket/symbol_attributes.js +12 -26
  67. package/src/data/bucket/symbol_bucket.js +174 -323
  68. package/src/data/bucket/symbol_buffers.js +62 -0
  69. package/src/data/bucket/symbol_collision_buffers.js +33 -0
  70. package/src/data/bucket.js +26 -25
  71. package/src/data/dem_data.js +11 -10
  72. package/src/data/extent.js +1 -1
  73. package/src/data/feature_index.js +38 -28
  74. package/src/data/index_array_type.js +1 -6
  75. package/src/data/load_geometry.js +6 -9
  76. package/src/data/pos_attributes.js +2 -3
  77. package/src/data/program_configuration.js +47 -38
  78. package/src/data/raster_bounds_attributes.js +2 -2
  79. package/src/data/segment.js +4 -7
  80. package/src/geo/coordinate.js +1 -1
  81. package/src/geo/lng_lat.js +3 -3
  82. package/src/geo/lng_lat_bounds.js +8 -4
  83. package/src/geo/transform.js +69 -30
  84. package/src/gl/color_mode.js +2 -2
  85. package/src/gl/context.js +28 -29
  86. package/src/gl/cull_face_mode.js +1 -1
  87. package/src/gl/depth_mode.js +1 -1
  88. package/src/gl/framebuffer.js +8 -4
  89. package/src/gl/index_buffer.js +2 -2
  90. package/src/gl/stencil_mode.js +1 -1
  91. package/src/gl/value.js +33 -68
  92. package/src/gl/vertex_buffer.js +2 -2
  93. package/src/index.js +49 -25
  94. package/src/render/draw_background.js +17 -12
  95. package/src/render/draw_circle.js +15 -12
  96. package/src/render/draw_collision_debug.js +11 -8
  97. package/src/render/draw_debug.js +16 -14
  98. package/src/render/draw_fill.js +27 -20
  99. package/src/render/draw_fill_extrusion.js +20 -17
  100. package/src/render/draw_heatmap.js +21 -16
  101. package/src/render/draw_hillshade.js +12 -9
  102. package/src/render/draw_line.js +36 -22
  103. package/src/render/draw_raster.js +22 -18
  104. package/src/render/draw_symbol.js +38 -33
  105. package/src/render/glyph_atlas.js +9 -8
  106. package/src/render/glyph_manager.js +2 -3
  107. package/src/render/image_atlas.js +4 -11
  108. package/src/render/image_manager.js +39 -28
  109. package/src/render/line_atlas.js +2 -2
  110. package/src/render/painter.js +78 -61
  111. package/src/render/program/background_program.js +6 -13
  112. package/src/render/program/circle_program.js +8 -10
  113. package/src/render/program/clipping_mask_program.js +3 -5
  114. package/src/render/program/collision_program.js +4 -6
  115. package/src/render/program/debug_program.js +3 -5
  116. package/src/render/program/fill_extrusion_program.js +9 -15
  117. package/src/render/program/fill_program.js +10 -21
  118. package/src/render/program/heatmap_program.js +9 -15
  119. package/src/render/program/hillshade_program.js +16 -22
  120. package/src/render/program/line_program.js +14 -25
  121. package/src/render/program/pattern.js +5 -7
  122. package/src/render/program/program_uniforms.js +13 -20
  123. package/src/render/program/raster_program.js +9 -11
  124. package/src/render/program/symbol_program.js +5 -7
  125. package/src/render/program.js +5 -6
  126. package/src/render/texture.js +1 -1
  127. package/src/render/tile_mask.js +6 -4
  128. package/src/render/uniform_binding.js +9 -20
  129. package/src/render/vertex_array_object.js +5 -3
  130. package/src/shaders/encode_attribute.js +2 -6
  131. package/src/shaders/index.js +103 -51
  132. package/src/source/geojson_source.js +25 -30
  133. package/src/source/geojson_worker_source.js +46 -74
  134. package/src/source/geojson_wrapper.js +13 -5
  135. package/src/source/image_source.js +17 -28
  136. package/src/source/load_tilejson.js +3 -3
  137. package/src/source/pixels_to_tile_units.js +3 -3
  138. package/src/source/query_features.js +17 -15
  139. package/src/source/raster_dem_tile_source.js +54 -71
  140. package/src/source/raster_tile_source.js +14 -15
  141. package/src/source/resources/glyphs.js +4 -5
  142. package/src/source/resources/index.js +4 -12
  143. package/src/source/rtl_text_plugin.js +62 -35
  144. package/src/source/source.js +14 -22
  145. package/src/source/source_cache.js +221 -179
  146. package/src/source/source_state.js +125 -13
  147. package/src/source/tile.js +67 -66
  148. package/src/source/tile_bounds.js +36 -29
  149. package/src/source/tile_cache.js +2 -2
  150. package/src/source/tile_id.js +30 -26
  151. package/src/source/vector_tile_source.js +23 -21
  152. package/src/source/vector_tile_worker_source.js +22 -26
  153. package/src/source/worker_tile.js +139 -134
  154. package/src/style/create_style_layer.js +11 -11
  155. package/src/style/evaluation_parameters.js +4 -6
  156. package/src/style/light.js +5 -5
  157. package/src/style/load_sprite.js +6 -6
  158. package/src/style/parse_glyph_pbf.js +21 -17
  159. package/src/style/pauseable_placement.js +7 -9
  160. package/src/style/properties.js +21 -51
  161. package/src/style/query_utils.js +7 -13
  162. package/src/style/style.js +314 -221
  163. package/src/style/style_layer/background_style_layer.js +3 -4
  164. package/src/style/style_layer/background_style_layer_properties.js +2 -2
  165. package/src/style/style_layer/circle_style_layer.js +25 -20
  166. package/src/style/style_layer/circle_style_layer_properties.js +2 -2
  167. package/src/style/style_layer/fill_extrusion_style_layer.js +55 -37
  168. package/src/style/style_layer/fill_extrusion_style_layer_properties.js +2 -2
  169. package/src/style/style_layer/fill_style_layer.js +11 -12
  170. package/src/style/style_layer/fill_style_layer_properties.js +2 -2
  171. package/src/style/style_layer/heatmap_style_layer.js +6 -7
  172. package/src/style/style_layer/heatmap_style_layer_properties.js +2 -2
  173. package/src/style/style_layer/hillshade_style_layer.js +4 -5
  174. package/src/style/style_layer/hillshade_style_layer_properties.js +2 -2
  175. package/src/style/style_layer/line_style_layer.js +33 -30
  176. package/src/style/style_layer/line_style_layer_properties.js +5 -5
  177. package/src/style/style_layer/raster_style_layer.js +3 -4
  178. package/src/style/style_layer/raster_style_layer_properties.js +2 -2
  179. package/src/style/style_layer/symbol_style_layer.js +20 -21
  180. package/src/style/style_layer/symbol_style_layer_properties.js +2 -2
  181. package/src/style/style_layer.js +66 -47
  182. package/src/style/style_layer_index.js +17 -42
  183. package/src/style/zoom_history.js +1 -1
  184. package/src/style-spec/error/parsing_error.js +1 -1
  185. package/src/style-spec/error/validation_error.js +5 -3
  186. package/src/style-spec/feature_filter/convert.js +17 -9
  187. package/src/style-spec/feature_filter/index.js +13 -9
  188. package/src/style-spec/util/eval_support.js +2 -2
  189. package/src/style-spec/util/ref_properties.js +1 -1
  190. package/src/symbol/anchor.js +2 -6
  191. package/src/symbol/check_max_angle.js +13 -5
  192. package/src/symbol/clip_line.js +2 -3
  193. package/src/symbol/collision_feature.js +8 -4
  194. package/src/symbol/collision_index.js +5 -7
  195. package/src/symbol/cross_tile_symbol_index.js +7 -10
  196. package/src/symbol/get_anchors.js +15 -8
  197. package/src/symbol/grid_index.js +5 -3
  198. package/src/symbol/mergelines.js +2 -2
  199. package/src/symbol/opacity_state.js +1 -5
  200. package/src/symbol/placement.js +28 -23
  201. package/src/symbol/projection.js +29 -28
  202. package/src/symbol/quads.js +14 -16
  203. package/src/symbol/shaping.js +27 -19
  204. package/src/symbol/symbol_layout.js +24 -28
  205. package/src/symbol/symbol_size.js +13 -12
  206. package/src/symbol/transform_text.js +4 -4
  207. package/src/ui/camera.js +34 -18
  208. package/src/ui/map.js +102 -44
  209. package/src/util/async.js +11 -5
  210. package/src/util/browser.js +1 -1
  211. package/src/util/callback.js +3 -9
  212. package/src/util/classify_rings.js +13 -8
  213. package/src/util/color_ramp.js +3 -3
  214. package/src/util/config.js +4 -4
  215. package/src/util/dictionary_coder.js +2 -3
  216. package/src/util/dom.js +7 -3
  217. package/src/util/find_pole_of_inaccessibility.js +29 -14
  218. package/src/util/group_layers.js +41 -0
  219. package/src/util/image.js +3 -13
  220. package/src/util/interpolate.js +1 -1
  221. package/src/util/intersection_tests.js +80 -42
  222. package/src/util/is_char_in_unicode_block.js +1 -1
  223. package/src/util/key.js +25 -0
  224. package/src/util/loader/image.js +1 -1
  225. package/src/util/object.js +33 -76
  226. package/src/util/script_detection.js +212 -91
  227. package/src/util/struct_array.js +8 -40
  228. package/src/util/task_queue.js +11 -7
  229. package/src/util/throttle.js +2 -2
  230. package/src/util/tile_cover.js +8 -5
  231. package/src/util/token.js +1 -1
  232. package/src/util/unique_id.js +2 -2
  233. package/src/util/util.js +21 -29
  234. package/src/util/vectortile_to_geojson.js +4 -2
  235. package/src/util/verticalize_punctuation.js +3 -7
  236. package/src/util/warn.js +4 -4
  237. package/src/util/web_worker.js +3 -3
  238. package/src/worker.js +1 -4
  239. package/src/source/resources/images.js +0 -68
  240. package/src/source/worker.js +0 -110
  241. package/src/source/worker_source.js +0 -14
  242. package/src/style-spec/deref.js +0 -51
  243. package/src/style-spec/group_by_layout.js +0 -46
  244. package/src/util/actor.js +0 -108
  245. package/src/util/dispatcher.js +0 -65
  246. package/src/util/global_worker_pool.js +0 -15
  247. package/src/util/transfer_registry.js +0 -168
  248. package/src/util/web_worker_transfer.js +0 -43
  249. package/src/util/worker_pool.js +0 -41
@@ -1,17 +1,17 @@
1
- const { FillLayoutArray } = require('../array_types');
2
-
3
- const { members: layoutAttributes } = require('./fill_attributes');
4
- const SegmentVector = require('../segment');
5
- const { ProgramConfigurationSet } = require('../program_configuration');
6
- const { LineIndexArray, TriangleIndexArray } = require('../index_array_type');
7
- const { default: earcut } = require('earcut');
8
- const classifyRings = require('../../util/classify_rings');
9
- const assert = require('assert');
1
+ import assert from 'assert';
2
+ import earcut from 'earcut';
3
+ import EvaluationParameters from '../../style/evaluation_parameters.js';
4
+ import classifyRings from '../../util/classify_rings.js';
5
+ import { FillLayoutArray } from '../array_types.js';
6
+ import { LineIndexArray, TriangleIndexArray } from '../index_array_type.js';
7
+ import loadGeometry from '../load_geometry.js';
8
+ import { ProgramConfigurationSet } from '../program_configuration.js';
9
+ import SegmentVector from '../segment.js';
10
+ import layout from './fill_attributes.js';
11
+ import { addPatternDependencies, hasPattern } from './pattern_bucket_features.js';
12
+
10
13
  const EARCUT_MAX_RINGS = 500;
11
- const { register } = require('../../util/transfer_registry');
12
- const { hasPattern, addPatternDependencies } = require('./pattern_bucket_features');
13
- const loadGeometry = require('../load_geometry');
14
- const EvaluationParameters = require('../../style/evaluation_parameters');
14
+ const layoutAttributes = layout.members;
15
15
 
16
16
  class FillBucket {
17
17
  constructor(options) {
@@ -19,7 +19,6 @@ class FillBucket {
19
19
  this.globalState = options.globalState;
20
20
  this.overscaling = options.overscaling;
21
21
  this.layers = options.layers;
22
- this.layerIds = this.layers.map(layer => layer.id);
23
22
  this.index = options.index;
24
23
  this.hasPattern = false;
25
24
 
@@ -38,8 +37,9 @@ class FillBucket {
38
37
  for (const { feature, index, sourceLayerIndex } of features) {
39
38
  if (
40
39
  !this.layers[0]._featureFilter(new EvaluationParameters(this.zoom, { globalState: this.globalState }), feature)
41
- )
40
+ ) {
42
41
  continue;
42
+ }
43
43
 
44
44
  const geometry = loadGeometry(feature);
45
45
 
@@ -57,7 +57,15 @@ class FillBucket {
57
57
  }
58
58
 
59
59
  if (this.hasPattern) {
60
- this.features.push(addPatternDependencies('fill', this.layers, patternFeature, this.zoom, options));
60
+ this.features.push(
61
+ addPatternDependencies(
62
+ 'fill',
63
+ this.layers,
64
+ patternFeature,
65
+ { zoom: this.zoom, globalState: this.globalState },
66
+ options
67
+ )
68
+ );
61
69
  } else {
62
70
  this.addFeature(patternFeature, geometry, index, {});
63
71
  }
@@ -67,7 +75,9 @@ class FillBucket {
67
75
  }
68
76
 
69
77
  update(states, vtLayer, imagePositions) {
70
- if (!this.stateDependentLayers.length) return;
78
+ if (!this.stateDependentLayers.length) {
79
+ return;
80
+ }
71
81
  this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, {
72
82
  imagePositions,
73
83
  globalState: this.globalState
@@ -88,6 +98,7 @@ class FillBucket {
88
98
  uploadPending() {
89
99
  return !this.uploaded || this.programConfigurations.needsUpload;
90
100
  }
101
+
91
102
  upload(context) {
92
103
  if (!this.uploaded) {
93
104
  this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, layoutAttributes);
@@ -99,7 +110,9 @@ class FillBucket {
99
110
  }
100
111
 
101
112
  destroy() {
102
- if (!this.layoutVertexBuffer) return;
113
+ if (!this.layoutVertexBuffer) {
114
+ return;
115
+ }
103
116
  this.layoutVertexBuffer.destroy();
104
117
  this.indexBuffer.destroy();
105
118
  this.indexBuffer2.destroy();
@@ -133,16 +146,16 @@ class FillBucket {
133
146
  const lineSegment = this.segments2.prepareSegment(ring.length, this.layoutVertexArray, this.indexArray2);
134
147
  const lineIndex = lineSegment.vertexLength;
135
148
 
136
- this.layoutVertexArray.emplaceBack(ring[0].x, ring[0].y);
149
+ const { x, y } = ring[0];
150
+ this.layoutVertexArray.emplaceBack(x, y);
137
151
  this.indexArray2.emplaceBack(lineIndex + ring.length - 1, lineIndex);
138
- flattened.push(ring[0].x);
139
- flattened.push(ring[0].y);
152
+ flattened.push(x, y);
140
153
 
141
154
  for (let i = 1; i < ring.length; i++) {
142
- this.layoutVertexArray.emplaceBack(ring[i].x, ring[i].y);
155
+ const { x, y } = ring[i];
156
+ this.layoutVertexArray.emplaceBack(x, y);
143
157
  this.indexArray2.emplaceBack(lineIndex + i - 1, lineIndex + i);
144
- flattened.push(ring[i].x);
145
- flattened.push(ring[i].y);
158
+ flattened.push(x, y);
146
159
  }
147
160
 
148
161
  lineSegment.vertexLength += ring.length;
@@ -171,6 +184,4 @@ class FillBucket {
171
184
  }
172
185
  }
173
186
 
174
- register('FillBucket', FillBucket, { omit: ['layers', 'features'] });
175
-
176
- module.exports = FillBucket;
187
+ export default FillBucket;
@@ -1,11 +1,9 @@
1
- const { createLayout } = require('../../util/struct_array');
1
+ import { createLayout } from '../../util/struct_array.js';
2
2
 
3
- const layout = createLayout(
3
+ export default createLayout(
4
4
  [
5
5
  { name: 'a_pos', components: 2, type: 'Int16' },
6
6
  { name: 'a_normal_ed', components: 4, type: 'Int16' }
7
7
  ],
8
8
  4
9
9
  );
10
-
11
- module.exports = layout;
@@ -1,21 +1,22 @@
1
- const { FillExtrusionLayoutArray } = require('../array_types');
2
-
3
- const { members: layoutAttributes } = require('./fill_extrusion_attributes');
4
- const SegmentVector = require('../segment');
5
- const { ProgramConfigurationSet } = require('../program_configuration');
6
- const { TriangleIndexArray } = require('../index_array_type');
7
- const EXTENT = require('../extent');
8
- const { default: earcut } = require('earcut');
9
- const {
10
- VectorTileFeature: { types: vectorTileFeatureTypes }
11
- } = require('@mapwhit/vector-tile');
12
- const classifyRings = require('../../util/classify_rings');
13
- const assert = require('assert');
1
+ import { VectorTileFeature } from '@mapwhit/vector-tile';
2
+ import assert from 'assert';
3
+ import earcut from 'earcut';
4
+ import classifyRings from '../../util/classify_rings.js';
5
+ import { FillExtrusionLayoutArray } from '../array_types.js';
6
+ import EXTENT from '../extent.js';
7
+ import { TriangleIndexArray } from '../index_array_type.js';
8
+ import { ProgramConfigurationSet } from '../program_configuration.js';
9
+ import SegmentVector from '../segment.js';
10
+ import layout from './fill_extrusion_attributes.js';
11
+
14
12
  const EARCUT_MAX_RINGS = 500;
15
- const { register } = require('../../util/transfer_registry');
16
- const { hasPattern, addPatternDependencies } = require('./pattern_bucket_features');
17
- const loadGeometry = require('../load_geometry');
18
- const EvaluationParameters = require('../../style/evaluation_parameters');
13
+
14
+ import EvaluationParameters from '../../style/evaluation_parameters.js';
15
+ import loadGeometry from '../load_geometry.js';
16
+ import { addPatternDependencies, hasPattern } from './pattern_bucket_features.js';
17
+
18
+ const { types: vectorTileFeatureTypes } = VectorTileFeature;
19
+ const layoutAttributes = layout.members;
19
20
 
20
21
  const FACTOR = 2 ** 13;
21
22
 
@@ -39,7 +40,6 @@ class FillExtrusionBucket {
39
40
  this.globalState = options.globalState;
40
41
  this.overscaling = options.overscaling;
41
42
  this.layers = options.layers;
42
- this.layerIds = this.layers.map(layer => layer.id);
43
43
  this.index = options.index;
44
44
  this.hasPattern = false;
45
45
 
@@ -56,8 +56,9 @@ class FillExtrusionBucket {
56
56
  for (const { feature, index, sourceLayerIndex } of features) {
57
57
  if (
58
58
  !this.layers[0]._featureFilter(new EvaluationParameters(this.zoom, { globalState: this.globalState }), feature)
59
- )
59
+ ) {
60
60
  continue;
61
+ }
61
62
 
62
63
  const geometry = loadGeometry(feature);
63
64
 
@@ -75,7 +76,15 @@ class FillExtrusionBucket {
75
76
  }
76
77
 
77
78
  if (this.hasPattern) {
78
- this.features.push(addPatternDependencies('fill-extrusion', this.layers, patternFeature, this.zoom, options));
79
+ this.features.push(
80
+ addPatternDependencies(
81
+ 'fill-extrusion',
82
+ this.layers,
83
+ patternFeature,
84
+ { zoom: this.zoom, globalState: this.globalState },
85
+ options
86
+ )
87
+ );
79
88
  } else {
80
89
  this.addFeature(patternFeature, geometry, index, {});
81
90
  }
@@ -92,7 +101,9 @@ class FillExtrusionBucket {
92
101
  }
93
102
 
94
103
  update(states, vtLayer, imagePositions) {
95
- if (!this.stateDependentLayers.length) return;
104
+ if (!this.stateDependentLayers.length) {
105
+ return;
106
+ }
96
107
  this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, {
97
108
  imagePositions,
98
109
  globalState: this.globalState
@@ -117,7 +128,9 @@ class FillExtrusionBucket {
117
128
  }
118
129
 
119
130
  destroy() {
120
- if (!this.layoutVertexBuffer) return;
131
+ if (!this.layoutVertexBuffer) {
132
+ return;
133
+ }
121
134
  this.layoutVertexBuffer.destroy();
122
135
  this.indexBuffer.destroy();
123
136
  this.programConfigurations.destroy();
@@ -156,7 +169,9 @@ class FillExtrusionBucket {
156
169
 
157
170
  const perp = p1.sub(p2)._perp()._unit();
158
171
  const dist = p2.dist(p1);
159
- if (edgeDistance + dist > 32768) edgeDistance = 0;
172
+ if (edgeDistance + dist > 32768) {
173
+ edgeDistance = 0;
174
+ }
160
175
 
161
176
  addVertex(this.layoutVertexArray, p1.x, p1.y, perp.x, perp.y, 0, 0, edgeDistance);
162
177
  addVertex(this.layoutVertexArray, p1.x, p1.y, perp.x, perp.y, 0, 1, edgeDistance);
@@ -207,12 +222,10 @@ class FillExtrusionBucket {
207
222
  }
208
223
 
209
224
  for (let i = 0; i < ring.length; i++) {
210
- const p = ring[i];
211
-
212
- addVertex(this.layoutVertexArray, p.x, p.y, 0, 0, 1, 1, 0);
225
+ const { x, y } = ring[i];
213
226
 
214
- flattened.push(p.x);
215
- flattened.push(p.y);
227
+ addVertex(this.layoutVertexArray, x, y, 0, 0, 1, 1, 0);
228
+ flattened.push(x, y);
216
229
  }
217
230
  }
218
231
 
@@ -239,19 +252,25 @@ class FillExtrusionBucket {
239
252
  }
240
253
  }
241
254
 
242
- register('FillExtrusionBucket', FillExtrusionBucket, { omit: ['layers', 'features'] });
243
-
244
- module.exports = FillExtrusionBucket;
255
+ export default FillExtrusionBucket;
245
256
 
246
257
  function isBoundaryEdge(p1, p2) {
247
258
  return (p1.x === p2.x && (p1.x < 0 || p1.x > EXTENT)) || (p1.y === p2.y && (p1.y < 0 || p1.y > EXTENT));
248
259
  }
249
260
 
250
261
  function isEntirelyOutside(ring) {
251
- return (
252
- ring.every(p => p.x < 0) ||
253
- ring.every(p => p.x > EXTENT) ||
254
- ring.every(p => p.y < 0) ||
255
- ring.every(p => p.y > EXTENT)
256
- );
262
+ let left = true;
263
+ let right = true;
264
+ let top = true;
265
+ let bottom = true;
266
+ for (const { x, y } of ring) {
267
+ left &&= x < 0;
268
+ right &&= x > EXTENT;
269
+ top &&= y < 0;
270
+ bottom &&= y > EXTENT;
271
+ if (!(left || right || top || bottom)) {
272
+ return false;
273
+ }
274
+ }
275
+ return true;
257
276
  }
@@ -1,12 +1,3 @@
1
- const CircleBucket = require('./circle_bucket');
1
+ import CircleBucket from './circle_bucket.js';
2
2
 
3
- const { register } = require('../../util/transfer_registry');
4
-
5
- class HeatmapBucket extends CircleBucket {
6
- // Needed for flow to accept omit: ['layers'] below, due to
7
- // https://github.com/facebook/flow/issues/4262
8
- }
9
-
10
- register('HeatmapBucket', HeatmapBucket, { omit: ['layers'] });
11
-
12
- module.exports = HeatmapBucket;
3
+ export default class HeatmapBucket extends CircleBucket {}
@@ -1,11 +1,9 @@
1
- const { createLayout } = require('../../util/struct_array');
1
+ import { createLayout } from '../../util/struct_array.js';
2
2
 
3
- const layout = createLayout(
3
+ export default createLayout(
4
4
  [
5
5
  { name: 'a_pos_normal', components: 4, type: 'Int16' },
6
6
  { name: 'a_data', components: 4, type: 'Uint8' }
7
7
  ],
8
8
  4
9
9
  );
10
-
11
- module.exports = layout;