@mapwhit/tilerenderer 0.47.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/LICENSE.txt +87 -0
  2. package/README.md +25 -0
  3. package/build/min/.dir +0 -0
  4. package/build/min/package.json +3 -0
  5. package/build/min/src/shaders/_prelude.fragment.glsl.txt +13 -0
  6. package/build/min/src/shaders/_prelude.vertex.glsl.txt +14 -0
  7. package/build/min/src/shaders/background.fragment.glsl.txt +5 -0
  8. package/build/min/src/shaders/background.vertex.glsl.txt +1 -0
  9. package/build/min/src/shaders/background_pattern.fragment.glsl.txt +5 -0
  10. package/build/min/src/shaders/background_pattern.vertex.glsl.txt +1 -0
  11. package/build/min/src/shaders/circle.fragment.glsl.txt +20 -0
  12. package/build/min/src/shaders/circle.vertex.glsl.txt +17 -0
  13. package/build/min/src/shaders/clipping_mask.fragment.glsl.txt +1 -0
  14. package/build/min/src/shaders/clipping_mask.vertex.glsl.txt +1 -0
  15. package/build/min/src/shaders/collision_box.fragment.glsl.txt +1 -0
  16. package/build/min/src/shaders/collision_box.vertex.glsl.txt +1 -0
  17. package/build/min/src/shaders/collision_circle.fragment.glsl.txt +1 -0
  18. package/build/min/src/shaders/collision_circle.vertex.glsl.txt +1 -0
  19. package/build/min/src/shaders/debug.fragment.glsl.txt +1 -0
  20. package/build/min/src/shaders/debug.vertex.glsl.txt +1 -0
  21. package/build/min/src/shaders/fill.fragment.glsl.txt +10 -0
  22. package/build/min/src/shaders/fill.vertex.glsl.txt +7 -0
  23. package/build/min/src/shaders/fill_extrusion.fragment.glsl.txt +13 -0
  24. package/build/min/src/shaders/fill_extrusion.vertex.glsl.txt +9 -0
  25. package/build/min/src/shaders/fill_extrusion_pattern.fragment.glsl.txt +15 -0
  26. package/build/min/src/shaders/fill_extrusion_pattern.vertex.glsl.txt +11 -0
  27. package/build/min/src/shaders/fill_outline.fragment.glsl.txt +10 -0
  28. package/build/min/src/shaders/fill_outline.vertex.glsl.txt +7 -0
  29. package/build/min/src/shaders/fill_outline_pattern.fragment.glsl.txt +13 -0
  30. package/build/min/src/shaders/fill_outline_pattern.vertex.glsl.txt +9 -0
  31. package/build/min/src/shaders/fill_pattern.fragment.glsl.txt +13 -0
  32. package/build/min/src/shaders/fill_pattern.vertex.glsl.txt +9 -0
  33. package/build/min/src/shaders/heatmap.fragment.glsl.txt +10 -0
  34. package/build/min/src/shaders/heatmap.vertex.glsl.txt +8 -0
  35. package/build/min/src/shaders/heatmap_texture.fragment.glsl.txt +5 -0
  36. package/build/min/src/shaders/heatmap_texture.vertex.glsl.txt +1 -0
  37. package/build/min/src/shaders/hillshade.fragment.glsl.txt +7 -0
  38. package/build/min/src/shaders/hillshade.vertex.glsl.txt +1 -0
  39. package/build/min/src/shaders/hillshade_prepare.fragment.glsl.txt +8 -0
  40. package/build/min/src/shaders/hillshade_prepare.vertex.glsl.txt +1 -0
  41. package/build/min/src/shaders/line.fragment.glsl.txt +12 -0
  42. package/build/min/src/shaders/line.vertex.glsl.txt +17 -0
  43. package/build/min/src/shaders/line_gradient.fragment.glsl.txt +10 -0
  44. package/build/min/src/shaders/line_gradient.vertex.glsl.txt +16 -0
  45. package/build/min/src/shaders/line_pattern.fragment.glsl.txt +15 -0
  46. package/build/min/src/shaders/line_pattern.vertex.glsl.txt +20 -0
  47. package/build/min/src/shaders/line_sdf.fragment.glsl.txt +17 -0
  48. package/build/min/src/shaders/line_sdf.vertex.glsl.txt +20 -0
  49. package/build/min/src/shaders/raster.fragment.glsl.txt +5 -0
  50. package/build/min/src/shaders/raster.vertex.glsl.txt +1 -0
  51. package/build/min/src/shaders/symbol_icon.fragment.glsl.txt +9 -0
  52. package/build/min/src/shaders/symbol_icon.vertex.glsl.txt +5 -0
  53. package/build/min/src/shaders/symbol_sdf.fragment.glsl.txt +19 -0
  54. package/build/min/src/shaders/symbol_sdf.vertex.glsl.txt +13 -0
  55. package/package.json +44 -0
  56. package/src/css/mapbox-gl.css +506 -0
  57. package/src/css/svg/mapboxgl-ctrl-attrib.svg +3 -0
  58. package/src/css/svg/mapboxgl-ctrl-compass.svg +4 -0
  59. package/src/css/svg/mapboxgl-ctrl-fullscreen.svg +3 -0
  60. package/src/css/svg/mapboxgl-ctrl-geolocate-background.svg +3 -0
  61. package/src/css/svg/mapboxgl-ctrl-geolocate.svg +3 -0
  62. package/src/css/svg/mapboxgl-ctrl-logo-compact.svg +2 -0
  63. package/src/css/svg/mapboxgl-ctrl-logo.svg +1 -0
  64. package/src/css/svg/mapboxgl-ctrl-shrink.svg +3 -0
  65. package/src/css/svg/mapboxgl-ctrl-zoom-in.svg +3 -0
  66. package/src/css/svg/mapboxgl-ctrl-zoom-out.svg +3 -0
  67. package/src/data/array_types.js +1138 -0
  68. package/src/data/bucket/circle_attributes.js +5 -0
  69. package/src/data/bucket/circle_bucket.js +118 -0
  70. package/src/data/bucket/fill_attributes.js +5 -0
  71. package/src/data/bucket/fill_bucket.js +166 -0
  72. package/src/data/bucket/fill_extrusion_attributes.js +11 -0
  73. package/src/data/bucket/fill_extrusion_bucket.js +247 -0
  74. package/src/data/bucket/heatmap_bucket.js +12 -0
  75. package/src/data/bucket/line_attributes.js +11 -0
  76. package/src/data/bucket/line_bucket.js +625 -0
  77. package/src/data/bucket/pattern_attributes.js +9 -0
  78. package/src/data/bucket/pattern_bucket_features.js +44 -0
  79. package/src/data/bucket/symbol_attributes.js +95 -0
  80. package/src/data/bucket/symbol_bucket.js +697 -0
  81. package/src/data/bucket.js +53 -0
  82. package/src/data/dem_data.js +126 -0
  83. package/src/data/extent.js +17 -0
  84. package/src/data/feature_index.js +254 -0
  85. package/src/data/index_array_type.js +14 -0
  86. package/src/data/load_geometry.js +42 -0
  87. package/src/data/pos_attributes.js +3 -0
  88. package/src/data/program_configuration.js +782 -0
  89. package/src/data/raster_bounds_attributes.js +6 -0
  90. package/src/data/segment.js +63 -0
  91. package/src/geo/coordinate.js +78 -0
  92. package/src/geo/lng_lat.js +129 -0
  93. package/src/geo/lng_lat_bounds.js +253 -0
  94. package/src/geo/transform.js +605 -0
  95. package/src/gl/color_mode.js +21 -0
  96. package/src/gl/context.js +193 -0
  97. package/src/gl/cull_face_mode.js +22 -0
  98. package/src/gl/depth_mode.js +18 -0
  99. package/src/gl/framebuffer.js +28 -0
  100. package/src/gl/index_buffer.js +52 -0
  101. package/src/gl/stencil_mode.js +17 -0
  102. package/src/gl/types.js +0 -0
  103. package/src/gl/value.js +676 -0
  104. package/src/gl/vertex_buffer.js +101 -0
  105. package/src/index.js +50 -0
  106. package/src/render/draw_background.js +60 -0
  107. package/src/render/draw_circle.js +55 -0
  108. package/src/render/draw_collision_debug.js +45 -0
  109. package/src/render/draw_debug.js +429 -0
  110. package/src/render/draw_fill.js +143 -0
  111. package/src/render/draw_fill_extrusion.js +101 -0
  112. package/src/render/draw_heatmap.js +159 -0
  113. package/src/render/draw_hillshade.js +144 -0
  114. package/src/render/draw_line.js +99 -0
  115. package/src/render/draw_raster.js +151 -0
  116. package/src/render/draw_symbol.js +231 -0
  117. package/src/render/glyph_atlas.js +55 -0
  118. package/src/render/glyph_manager.js +145 -0
  119. package/src/render/image_atlas.js +97 -0
  120. package/src/render/image_manager.js +183 -0
  121. package/src/render/line_atlas.js +139 -0
  122. package/src/render/painter.js +483 -0
  123. package/src/render/program/background_program.js +46 -0
  124. package/src/render/program/circle_program.js +40 -0
  125. package/src/render/program/clipping_mask_program.js +11 -0
  126. package/src/render/program/collision_program.js +28 -0
  127. package/src/render/program/debug_program.js +13 -0
  128. package/src/render/program/fill_extrusion_program.js +76 -0
  129. package/src/render/program/fill_program.js +60 -0
  130. package/src/render/program/heatmap_program.js +46 -0
  131. package/src/render/program/hillshade_program.js +77 -0
  132. package/src/render/program/line_program.js +119 -0
  133. package/src/render/program/pattern.js +57 -0
  134. package/src/render/program/program_uniforms.js +46 -0
  135. package/src/render/program/raster_program.js +50 -0
  136. package/src/render/program/symbol_program.js +112 -0
  137. package/src/render/program.js +133 -0
  138. package/src/render/texture.js +88 -0
  139. package/src/render/tile_mask.js +108 -0
  140. package/src/render/uniform_binding.js +129 -0
  141. package/src/render/vertex_array_object.js +155 -0
  142. package/src/shaders/README.md +42 -0
  143. package/src/shaders/_prelude.fragment.glsl +17 -0
  144. package/src/shaders/_prelude.vertex.glsl +73 -0
  145. package/src/shaders/background.fragment.glsl +10 -0
  146. package/src/shaders/background.vertex.glsl +7 -0
  147. package/src/shaders/background_pattern.fragment.glsl +28 -0
  148. package/src/shaders/background_pattern.vertex.glsl +20 -0
  149. package/src/shaders/circle.fragment.glsl +39 -0
  150. package/src/shaders/circle.vertex.glsl +63 -0
  151. package/src/shaders/clipping_mask.fragment.glsl +3 -0
  152. package/src/shaders/clipping_mask.vertex.glsl +7 -0
  153. package/src/shaders/collision_box.fragment.glsl +21 -0
  154. package/src/shaders/collision_box.vertex.glsl +26 -0
  155. package/src/shaders/collision_circle.fragment.glsl +34 -0
  156. package/src/shaders/collision_circle.vertex.glsl +36 -0
  157. package/src/shaders/debug.fragment.glsl +5 -0
  158. package/src/shaders/debug.vertex.glsl +7 -0
  159. package/src/shaders/encode_attribute.js +19 -0
  160. package/src/shaders/fill.fragment.glsl +13 -0
  161. package/src/shaders/fill.vertex.glsl +13 -0
  162. package/src/shaders/fill_extrusion.fragment.glsl +16 -0
  163. package/src/shaders/fill_extrusion.vertex.glsl +66 -0
  164. package/src/shaders/fill_extrusion_pattern.fragment.glsl +41 -0
  165. package/src/shaders/fill_extrusion_pattern.vertex.glsl +76 -0
  166. package/src/shaders/fill_outline.fragment.glsl +17 -0
  167. package/src/shaders/fill_outline.vertex.glsl +17 -0
  168. package/src/shaders/fill_outline_pattern.fragment.glsl +43 -0
  169. package/src/shaders/fill_outline_pattern.vertex.glsl +41 -0
  170. package/src/shaders/fill_pattern.fragment.glsl +36 -0
  171. package/src/shaders/fill_pattern.vertex.glsl +36 -0
  172. package/src/shaders/heatmap.fragment.glsl +21 -0
  173. package/src/shaders/heatmap.vertex.glsl +53 -0
  174. package/src/shaders/heatmap_texture.fragment.glsl +14 -0
  175. package/src/shaders/heatmap_texture.vertex.glsl +11 -0
  176. package/src/shaders/hillshade.fragment.glsl +52 -0
  177. package/src/shaders/hillshade.vertex.glsl +11 -0
  178. package/src/shaders/hillshade_prepare.fragment.glsl +72 -0
  179. package/src/shaders/hillshade_prepare.vertex.glsl +15 -0
  180. package/src/shaders/index.js +194 -0
  181. package/src/shaders/line.fragment.glsl +28 -0
  182. package/src/shaders/line.vertex.glsl +84 -0
  183. package/src/shaders/line_gradient.fragment.glsl +34 -0
  184. package/src/shaders/line_gradient.vertex.glsl +84 -0
  185. package/src/shaders/line_pattern.fragment.glsl +69 -0
  186. package/src/shaders/line_pattern.vertex.glsl +88 -0
  187. package/src/shaders/line_sdf.fragment.glsl +44 -0
  188. package/src/shaders/line_sdf.vertex.glsl +95 -0
  189. package/src/shaders/raster.fragment.glsl +52 -0
  190. package/src/shaders/raster.vertex.glsl +21 -0
  191. package/src/shaders/symbol_icon.fragment.glsl +17 -0
  192. package/src/shaders/symbol_icon.vertex.glsl +91 -0
  193. package/src/shaders/symbol_sdf.fragment.glsl +50 -0
  194. package/src/shaders/symbol_sdf.vertex.glsl +117 -0
  195. package/src/source/geojson_source.js +267 -0
  196. package/src/source/geojson_worker_source.js +210 -0
  197. package/src/source/geojson_wrapper.js +67 -0
  198. package/src/source/image_source.js +213 -0
  199. package/src/source/load_tilejson.js +40 -0
  200. package/src/source/pixels_to_tile_units.js +17 -0
  201. package/src/source/query_features.js +198 -0
  202. package/src/source/raster_dem_tile_source.js +140 -0
  203. package/src/source/raster_dem_tile_worker_source.js +26 -0
  204. package/src/source/raster_tile_source.js +126 -0
  205. package/src/source/rtl_text_plugin.js +63 -0
  206. package/src/source/source.js +75 -0
  207. package/src/source/source_cache.js +794 -0
  208. package/src/source/source_state.js +55 -0
  209. package/src/source/tile.js +332 -0
  210. package/src/source/tile_bounds.js +40 -0
  211. package/src/source/tile_cache.js +122 -0
  212. package/src/source/tile_id.js +150 -0
  213. package/src/source/vector_tile_source.js +144 -0
  214. package/src/source/vector_tile_worker_source.js +126 -0
  215. package/src/source/worker.js +175 -0
  216. package/src/source/worker_source.js +14 -0
  217. package/src/source/worker_tile.js +199 -0
  218. package/src/style/create_style_layer.js +25 -0
  219. package/src/style/evaluation_parameters.js +45 -0
  220. package/src/style/light.js +112 -0
  221. package/src/style/load_glyph_range.js +17 -0
  222. package/src/style/load_sprite.js +26 -0
  223. package/src/style/parse_glyph_pbf.js +45 -0
  224. package/src/style/pauseable_placement.js +88 -0
  225. package/src/style/properties.js +691 -0
  226. package/src/style/query_utils.js +39 -0
  227. package/src/style/style.js +955 -0
  228. package/src/style/style_layer/background_style_layer.js +11 -0
  229. package/src/style/style_layer/background_style_layer_properties.js +25 -0
  230. package/src/style/style_layer/circle_style_layer.js +93 -0
  231. package/src/style/style_layer/circle_style_layer_properties.js +76 -0
  232. package/src/style/style_layer/fill_extrusion_style_layer.js +194 -0
  233. package/src/style/style_layer/fill_extrusion_style_layer_properties.js +56 -0
  234. package/src/style/style_layer/fill_style_layer.js +46 -0
  235. package/src/style/style_layer/fill_style_layer_properties.js +45 -0
  236. package/src/style/style_layer/heatmap_style_layer.js +51 -0
  237. package/src/style/style_layer/heatmap_style_layer_properties.js +52 -0
  238. package/src/style/style_layer/hillshade_style_layer.js +15 -0
  239. package/src/style/style_layer/hillshade_style_layer_properties.js +43 -0
  240. package/src/style/style_layer/line_style_layer.js +129 -0
  241. package/src/style/style_layer/line_style_layer_properties.js +104 -0
  242. package/src/style/style_layer/raster_style_layer.js +11 -0
  243. package/src/style/style_layer/raster_style_layer_properties.js +55 -0
  244. package/src/style/style_layer/symbol_style_layer.js +66 -0
  245. package/src/style/style_layer/symbol_style_layer_properties.js +288 -0
  246. package/src/style/style_layer.js +183 -0
  247. package/src/style/style_layer_index.js +61 -0
  248. package/src/style/zoom_history.js +36 -0
  249. package/src/style-spec/deref.js +51 -0
  250. package/src/style-spec/error/parsing_error.js +8 -0
  251. package/src/style-spec/error/validation_error.js +10 -0
  252. package/src/style-spec/expression/compound_expression.js +118 -0
  253. package/src/style-spec/expression/definitions/array.js +82 -0
  254. package/src/style-spec/expression/definitions/assertion.js +69 -0
  255. package/src/style-spec/expression/definitions/at.js +57 -0
  256. package/src/style-spec/expression/definitions/case.js +73 -0
  257. package/src/style-spec/expression/definitions/coalesce.js +68 -0
  258. package/src/style-spec/expression/definitions/coercion.js +96 -0
  259. package/src/style-spec/expression/definitions/collator.js +102 -0
  260. package/src/style-spec/expression/definitions/equals.js +93 -0
  261. package/src/style-spec/expression/definitions/index.js +407 -0
  262. package/src/style-spec/expression/definitions/interpolate.js +235 -0
  263. package/src/style-spec/expression/definitions/length.js +54 -0
  264. package/src/style-spec/expression/definitions/let.js +60 -0
  265. package/src/style-spec/expression/definitions/literal.js +64 -0
  266. package/src/style-spec/expression/definitions/match.js +142 -0
  267. package/src/style-spec/expression/definitions/step.js +116 -0
  268. package/src/style-spec/expression/definitions/var.js +38 -0
  269. package/src/style-spec/expression/evaluation_context.js +35 -0
  270. package/src/style-spec/expression/index.js +329 -0
  271. package/src/style-spec/expression/is_constant.js +63 -0
  272. package/src/style-spec/expression/parsing_context.js +213 -0
  273. package/src/style-spec/expression/parsing_error.js +9 -0
  274. package/src/style-spec/expression/runtime_error.js +12 -0
  275. package/src/style-spec/expression/scope.js +34 -0
  276. package/src/style-spec/expression/stops.js +37 -0
  277. package/src/style-spec/expression/types.js +77 -0
  278. package/src/style-spec/expression/values.js +126 -0
  279. package/src/style-spec/feature_filter/README.md +55 -0
  280. package/src/style-spec/feature_filter/index.js +158 -0
  281. package/src/style-spec/function/convert.js +256 -0
  282. package/src/style-spec/function/index.js +299 -0
  283. package/src/style-spec/group_by_layout.js +68 -0
  284. package/src/style-spec/reference/v8.json +5356 -0
  285. package/src/style-spec/util/color.js +73 -0
  286. package/src/style-spec/util/color_spaces.js +128 -0
  287. package/src/style-spec/util/eval_support.js +8 -0
  288. package/src/style-spec/util/get_type.js +18 -0
  289. package/src/style-spec/util/interpolate.js +21 -0
  290. package/src/style-spec/util/properties.js +17 -0
  291. package/src/style-spec/util/ref_properties.js +1 -0
  292. package/src/style-spec/util/result.js +19 -0
  293. package/src/symbol/anchor.js +21 -0
  294. package/src/symbol/check_max_angle.js +75 -0
  295. package/src/symbol/clip_line.js +73 -0
  296. package/src/symbol/collision_feature.js +230 -0
  297. package/src/symbol/collision_index.js +379 -0
  298. package/src/symbol/cross_tile_symbol_index.js +270 -0
  299. package/src/symbol/get_anchors.js +177 -0
  300. package/src/symbol/grid_index.js +318 -0
  301. package/src/symbol/mergelines.js +75 -0
  302. package/src/symbol/opacity_state.js +21 -0
  303. package/src/symbol/placement.js +563 -0
  304. package/src/symbol/projection.js +601 -0
  305. package/src/symbol/quads.js +173 -0
  306. package/src/symbol/shaping.js +347 -0
  307. package/src/symbol/symbol_layout.js +519 -0
  308. package/src/symbol/symbol_size.js +110 -0
  309. package/src/symbol/transform_text.js +16 -0
  310. package/src/ui/anchor.js +24 -0
  311. package/src/ui/bind_handlers.js +199 -0
  312. package/src/ui/camera.js +954 -0
  313. package/src/ui/events.js +210 -0
  314. package/src/ui/handler/box_zoom.js +151 -0
  315. package/src/ui/handler/dblclick_zoom.js +91 -0
  316. package/src/ui/handler/drag_pan.js +285 -0
  317. package/src/ui/handler/drag_rotate.js +290 -0
  318. package/src/ui/handler/frame.js +28 -0
  319. package/src/ui/handler/inertia.js +45 -0
  320. package/src/ui/handler/keyboard.js +148 -0
  321. package/src/ui/handler/scroll_zoom.js +284 -0
  322. package/src/ui/handler/touch_zoom_rotate.js +263 -0
  323. package/src/ui/map.js +1645 -0
  324. package/src/util/actor.js +104 -0
  325. package/src/util/async.js +23 -0
  326. package/src/util/browser.js +61 -0
  327. package/src/util/callback.js +26 -0
  328. package/src/util/classify_rings.js +43 -0
  329. package/src/util/color_ramp.js +24 -0
  330. package/src/util/config.js +24 -0
  331. package/src/util/dictionary_coder.js +25 -0
  332. package/src/util/dispatcher.js +68 -0
  333. package/src/util/dom.js +102 -0
  334. package/src/util/evented.js +182 -0
  335. package/src/util/find_pole_of_inaccessibility.js +129 -0
  336. package/src/util/global_worker_pool.js +15 -0
  337. package/src/util/image.js +124 -0
  338. package/src/util/interpolate.js +5 -0
  339. package/src/util/intersection_tests.js +207 -0
  340. package/src/util/is_char_in_unicode_block.js +287 -0
  341. package/src/util/loader/image.js +32 -0
  342. package/src/util/object.js +178 -0
  343. package/src/util/script_detection.js +337 -0
  344. package/src/util/struct_array.js +197 -0
  345. package/src/util/task_queue.js +57 -0
  346. package/src/util/throttle.js +26 -0
  347. package/src/util/tile_cover.js +114 -0
  348. package/src/util/token.js +13 -0
  349. package/src/util/unique_id.js +12 -0
  350. package/src/util/util.js +192 -0
  351. package/src/util/vectortile_to_geojson.js +44 -0
  352. package/src/util/verticalize_punctuation.js +112 -0
  353. package/src/util/warn.js +21 -0
  354. package/src/util/web_worker.js +5 -0
  355. package/src/util/web_worker_transfer.js +228 -0
  356. package/src/util/worker_pool.js +41 -0
@@ -0,0 +1,114 @@
1
+ const { OverscaledTileID } = require('../source/tile_id');
2
+
3
+ module.exports = tileCover;
4
+
5
+ function tileCover(z, bounds, actualZ, renderWorldCopies) {
6
+ if (renderWorldCopies === undefined) {
7
+ renderWorldCopies = true;
8
+ }
9
+ const tiles = 1 << z;
10
+ const t = {};
11
+
12
+ function scanLine(x0, x1, y) {
13
+ let x;
14
+ let w;
15
+ let wx;
16
+ let coord;
17
+ if (y >= 0 && y <= tiles) {
18
+ for (x = x0; x < x1; x++) {
19
+ w = Math.floor(x / tiles);
20
+ wx = ((x % tiles) + tiles) % tiles;
21
+ if (w === 0 || renderWorldCopies === true) {
22
+ coord = new OverscaledTileID(actualZ, w, z, wx, y);
23
+ t[coord.key] = coord;
24
+ }
25
+ }
26
+ }
27
+ }
28
+
29
+ // Divide the screen up in two triangles and scan each of them:
30
+ // +---/
31
+ // | / |
32
+ // /---+
33
+ scanTriangle(bounds[0], bounds[1], bounds[2], 0, tiles, scanLine);
34
+ scanTriangle(bounds[2], bounds[3], bounds[0], 0, tiles, scanLine);
35
+
36
+ return Object.keys(t).map(id => {
37
+ return t[id];
38
+ });
39
+ }
40
+
41
+ // Taken from polymaps src/Layer.js
42
+ // https://github.com/simplegeo/polymaps/blob/master/src/Layer.js#L333-L383
43
+
44
+ function edge(a, b) {
45
+ if (a.row > b.row) {
46
+ const t = a;
47
+ a = b;
48
+ b = t;
49
+ }
50
+ return {
51
+ x0: a.column,
52
+ y0: a.row,
53
+ x1: b.column,
54
+ y1: b.row,
55
+ dx: b.column - a.column,
56
+ dy: b.row - a.row
57
+ };
58
+ }
59
+
60
+ function scanSpans(e0, e1, ymin, ymax, scanLine) {
61
+ const y0 = Math.max(ymin, Math.floor(e1.y0));
62
+ const y1 = Math.min(ymax, Math.ceil(e1.y1));
63
+
64
+ // sort edges by x-coordinate
65
+ if (
66
+ e0.x0 === e1.x0 && e0.y0 === e1.y0
67
+ ? e0.x0 + (e1.dy / e0.dy) * e0.dx < e1.x1
68
+ : e0.x1 - (e1.dy / e0.dy) * e0.dx < e1.x0
69
+ ) {
70
+ const t = e0;
71
+ e0 = e1;
72
+ e1 = t;
73
+ }
74
+
75
+ // scan lines!
76
+ const m0 = e0.dx / e0.dy;
77
+ const m1 = e1.dx / e1.dy;
78
+ const d0 = e0.dx > 0; // use y + 1 to compute x0
79
+ const d1 = e1.dx < 0; // use y + 1 to compute x1
80
+ for (let y = y0; y < y1; y++) {
81
+ const x0 = m0 * Math.max(0, Math.min(e0.dy, y + d0 - e0.y0)) + e0.x0;
82
+ const x1 = m1 * Math.max(0, Math.min(e1.dy, y + d1 - e1.y0)) + e1.x0;
83
+ scanLine(Math.floor(x1), Math.ceil(x0), y);
84
+ }
85
+ }
86
+
87
+ function scanTriangle(a, b, c, ymin, ymax, scanLine) {
88
+ let ab = edge(a, b);
89
+ let bc = edge(b, c);
90
+ let ca = edge(c, a);
91
+
92
+ let t;
93
+
94
+ // sort edges by y-length
95
+ if (ab.dy > bc.dy) {
96
+ t = ab;
97
+ ab = bc;
98
+ bc = t;
99
+ }
100
+ if (ab.dy > ca.dy) {
101
+ t = ab;
102
+ ab = ca;
103
+ ca = t;
104
+ }
105
+ if (bc.dy > ca.dy) {
106
+ t = bc;
107
+ bc = ca;
108
+ ca = t;
109
+ }
110
+
111
+ // scan span! scan span!
112
+ if (ab.dy) scanSpans(ca, ab, ymin, ymax, scanLine);
113
+ if (bc.dy) scanSpans(ca, bc, ymin, ymax, scanLine);
114
+ }
@@ -0,0 +1,13 @@
1
+ module.exports = resolveTokens;
2
+
3
+ /**
4
+ * Replace tokens in a string template with values in an object
5
+ *
6
+ * @param properties a key/value relationship between tokens and replacements
7
+ * @param text the template string
8
+ * @returns the template with tokens replaced
9
+ * @private
10
+ */
11
+ function resolveTokens(properties, text) {
12
+ return text.replace(/{([^{}]+)}/g, (match, key) => String(properties[key] ?? ''));
13
+ }
@@ -0,0 +1,12 @@
1
+ let id = 1;
2
+
3
+ /**
4
+ * Return a unique numeric id, starting at 1 and incrementing with
5
+ * each call.
6
+ *
7
+ * @returns unique numeric id.
8
+ * @private
9
+ */
10
+ module.exports = function uniqueId() {
11
+ return id++;
12
+ };
@@ -0,0 +1,192 @@
1
+ const UnitBezier = require('@mapbox/unitbezier');
2
+
3
+ const Coordinate = require('../geo/coordinate');
4
+
5
+ /**
6
+ * @module util
7
+ * @private
8
+ */
9
+
10
+ /**
11
+ * Given a value `t` that varies between 0 and 1, return
12
+ * an interpolation function that eases between 0 and 1 in a pleasing
13
+ * cubic in-out fashion.
14
+ *
15
+ * @private
16
+ */
17
+ function easeCubicInOut(t) {
18
+ if (t <= 0) return 0;
19
+ if (t >= 1) return 1;
20
+ const t2 = t * t;
21
+ const t3 = t2 * t;
22
+ return 4 * (t < 0.5 ? t3 : 3 * (t - t2) + t3 - 0.75);
23
+ }
24
+
25
+ /**
26
+ * Given given (x, y), (x1, y1) control points for a bezier curve,
27
+ * return a function that interpolates along that curve.
28
+ *
29
+ * @param p1x control point 1 x coordinate
30
+ * @param p1y control point 1 y coordinate
31
+ * @param p2x control point 2 x coordinate
32
+ * @param p2y control point 2 y coordinate
33
+ * @private
34
+ */
35
+ function bezier(p1x, p1y, p2x, p2y) {
36
+ const bezier = new UnitBezier(p1x, p1y, p2x, p2y);
37
+ return function (t) {
38
+ return bezier.solve(t);
39
+ };
40
+ }
41
+
42
+ /**
43
+ * A default bezier-curve powered easing function with
44
+ * control points (0.25, 0.1) and (0.25, 1)
45
+ *
46
+ * @private
47
+ */
48
+ const ease = bezier(0.25, 0.1, 0.25, 1);
49
+
50
+ /**
51
+ * constrain n to the given range via min + max
52
+ *
53
+ * @param n value
54
+ * @param min the minimum value to be returned
55
+ * @param max the maximum value to be returned
56
+ * @returns the clamped value
57
+ * @private
58
+ */
59
+ function clamp(n, min, max) {
60
+ return Math.min(max, Math.max(min, n));
61
+ }
62
+
63
+ /**
64
+ * constrain n to the given range, excluding the minimum, via modular arithmetic
65
+ *
66
+ * @param n value
67
+ * @param min the minimum value to be returned, exclusive
68
+ * @param max the maximum value to be returned, inclusive
69
+ * @returns constrained number
70
+ * @private
71
+ */
72
+ function wrap(n, min, max) {
73
+ const d = max - min;
74
+ const w = ((((n - min) % d) + d) % d) + min;
75
+ return w === min ? max : w;
76
+ }
77
+
78
+ /**
79
+ * Given a list of coordinates, get their center as a coordinate.
80
+ *
81
+ * @returns centerpoint
82
+ * @private
83
+ */
84
+ function getCoordinatesCenter(coords) {
85
+ let minX = Number.POSITIVE_INFINITY;
86
+ let minY = Number.POSITIVE_INFINITY;
87
+ let maxX = Number.NEGATIVE_INFINITY;
88
+ let maxY = Number.NEGATIVE_INFINITY;
89
+
90
+ for (let i = 0; i < coords.length; i++) {
91
+ minX = Math.min(minX, coords[i].column);
92
+ minY = Math.min(minY, coords[i].row);
93
+ maxX = Math.max(maxX, coords[i].column);
94
+ maxY = Math.max(maxY, coords[i].row);
95
+ }
96
+
97
+ const dx = maxX - minX;
98
+ const dy = maxY - minY;
99
+ const dMax = Math.max(dx, dy);
100
+ const zoom = Math.max(0, Math.floor(-Math.log(dMax) / Math.LN2));
101
+ return new Coordinate((minX + maxX) / 2, (minY + maxY) / 2, 0).zoomTo(zoom);
102
+ }
103
+
104
+ /**
105
+ * Indicates if the provided Points are in a counter clockwise (true) or clockwise (false) order
106
+ *
107
+ * @private
108
+ * @returns true for a counter clockwise set of points
109
+ */
110
+ // http://bryceboe.com/2006/10/23/line-segment-intersection-algorithm/
111
+ function isCounterClockwise(a, b, c) {
112
+ return (c.y - a.y) * (b.x - a.x) > (b.y - a.y) * (c.x - a.x);
113
+ }
114
+
115
+ /**
116
+ * Returns the signed area for the polygon ring. Postive areas are exterior rings and
117
+ * have a clockwise winding. Negative areas are interior rings and have a counter clockwise
118
+ * ordering.
119
+ *
120
+ * @private
121
+ * @param ring Exterior or interior ring
122
+ */
123
+ function calculateSignedArea(ring) {
124
+ let sum = 0;
125
+ const len = ring.length;
126
+ let p2 = ring[len - 1]; // last point
127
+ for (const p1 of ring) {
128
+ sum += (p2.x - p1.x) * (p1.y + p2.y);
129
+ p2 = p1;
130
+ }
131
+ return sum;
132
+ }
133
+
134
+ /**
135
+ * Detects closed polygons, first + last point are equal
136
+ *
137
+ * @private
138
+ * @param points array of points
139
+ * @return true if the points are a closed polygon
140
+ */
141
+ function isClosedPolygon(points) {
142
+ // If it is 2 points that are the same then it is a point
143
+ // If it is 3 points with start and end the same then it is a line
144
+ if (points.length < 4) return false;
145
+
146
+ const p1 = points[0];
147
+ const p2 = points[points.length - 1];
148
+
149
+ if (Math.abs(p1.x - p2.x) > 0 || Math.abs(p1.y - p2.y) > 0) {
150
+ return false;
151
+ }
152
+
153
+ // polygon simplification can produce polygons with zero area and more than 3 points
154
+ return Math.abs(calculateSignedArea(points)) > 0.01;
155
+ }
156
+
157
+ /**
158
+ * Converts spherical coordinates to cartesian coordinates.
159
+ *
160
+ * @private
161
+ * @param spherical Spherical coordinates, in [radial, azimuthal, polar]
162
+ * @return cartesian coordinates in [x, y, z]
163
+ */
164
+
165
+ function sphericalToCartesian([r, azimuthal, polar]) {
166
+ // We abstract "north"/"up" (compass-wise) to be 0° when really this is 90° (π/2):
167
+ // correct for that here
168
+ azimuthal += 90;
169
+
170
+ // Convert azimuthal and polar angles to radians
171
+ azimuthal *= Math.PI / 180;
172
+ polar *= Math.PI / 180;
173
+
174
+ return {
175
+ x: r * Math.cos(azimuthal) * Math.sin(polar),
176
+ y: r * Math.sin(azimuthal) * Math.sin(polar),
177
+ z: r * Math.cos(polar)
178
+ };
179
+ }
180
+
181
+ module.exports = {
182
+ easeCubicInOut,
183
+ bezier,
184
+ ease,
185
+ clamp,
186
+ wrap,
187
+ getCoordinatesCenter,
188
+ isCounterClockwise,
189
+ calculateSignedArea,
190
+ isClosedPolygon,
191
+ sphericalToCartesian
192
+ };
@@ -0,0 +1,44 @@
1
+ class Feature {
2
+ constructor(vectorTileFeature, z, x, y) {
3
+ this.type = 'Feature';
4
+
5
+ this._vectorTileFeature = vectorTileFeature;
6
+ vectorTileFeature._z = z;
7
+ vectorTileFeature._x = x;
8
+ vectorTileFeature._y = y;
9
+
10
+ this.properties = vectorTileFeature.properties;
11
+
12
+ if (vectorTileFeature.id != null) {
13
+ this.id = vectorTileFeature.id;
14
+ }
15
+ }
16
+
17
+ get geometry() {
18
+ if (this._geometry === undefined) {
19
+ this._geometry = this._vectorTileFeature.toGeoJSON(
20
+ this._vectorTileFeature._x,
21
+ this._vectorTileFeature._y,
22
+ this._vectorTileFeature._z
23
+ ).geometry;
24
+ }
25
+ return this._geometry;
26
+ }
27
+
28
+ set geometry(g) {
29
+ this._geometry = g;
30
+ }
31
+
32
+ toJSON() {
33
+ const json = {
34
+ geometry: this.geometry
35
+ };
36
+ for (const i in this) {
37
+ if (i === '_geometry' || i === '_vectorTileFeature') continue;
38
+ json[i] = this[i];
39
+ }
40
+ return json;
41
+ }
42
+ }
43
+
44
+ module.exports = Feature;
@@ -0,0 +1,112 @@
1
+ const { charHasRotatedVerticalOrientation } = require('./script_detection');
2
+
3
+ const verticalizedCharacterMap = {
4
+ '!': '︕',
5
+ '#': '#',
6
+ $: '$',
7
+ '%': '%',
8
+ '&': '&',
9
+ '(': '︵',
10
+ ')': '︶',
11
+ '*': '*',
12
+ '+': '+',
13
+ ',': '︐',
14
+ '-': '︲',
15
+ '.': '・',
16
+ '/': '/',
17
+ ':': '︓',
18
+ ';': '︔',
19
+ '<': '︿',
20
+ '=': '=',
21
+ '>': '﹀',
22
+ '?': '︖',
23
+ '@': '@',
24
+ '[': '﹇',
25
+ '\\': '\',
26
+ ']': '﹈',
27
+ '^': '^',
28
+ _: '︳',
29
+ '`': '`',
30
+ '{': '︷',
31
+ '|': '―',
32
+ '}': '︸',
33
+ '~': '~',
34
+ '¢': '¢',
35
+ '£': '£',
36
+ '¥': '¥',
37
+ '¦': '¦',
38
+ '¬': '¬',
39
+ '¯': ' ̄',
40
+ '–': '︲',
41
+ '—': '︱',
42
+ '‘': '﹃',
43
+ '’': '﹄',
44
+ '“': '﹁',
45
+ '”': '﹂',
46
+ '…': '︙',
47
+ '‧': '・',
48
+ '₩': '₩',
49
+ '、': '︑',
50
+ '。': '︒',
51
+ '〈': '︿',
52
+ '〉': '﹀',
53
+ '《': '︽',
54
+ '》': '︾',
55
+ '「': '﹁',
56
+ '」': '﹂',
57
+ '『': '﹃',
58
+ '』': '﹄',
59
+ '【': '︻',
60
+ '】': '︼',
61
+ '〔': '︹',
62
+ '〕': '︺',
63
+ '〖': '︗',
64
+ '〗': '︘',
65
+ '!': '︕',
66
+ '(': '︵',
67
+ ')': '︶',
68
+ ',': '︐',
69
+ '-': '︲',
70
+ '.': '・',
71
+ ':': '︓',
72
+ ';': '︔',
73
+ '<': '︿',
74
+ '>': '﹀',
75
+ '?': '︖',
76
+ '[': '﹇',
77
+ ']': '﹈',
78
+ '_': '︳',
79
+ '{': '︷',
80
+ '|': '―',
81
+ '}': '︸',
82
+ '⦅': '︵',
83
+ '⦆': '︶',
84
+ '。': '︒',
85
+ '「': '﹁',
86
+ '」': '﹂'
87
+ };
88
+
89
+ function verticalizePunctuation(input) {
90
+ let output = '';
91
+
92
+ for (let i = 0; i < input.length; i++) {
93
+ const nextCharCode = input.charCodeAt(i + 1) || null;
94
+ const prevCharCode = input.charCodeAt(i - 1) || null;
95
+
96
+ const canReplacePunctuation =
97
+ (!nextCharCode || !charHasRotatedVerticalOrientation(nextCharCode) || verticalizedCharacterMap[input[i + 1]]) &&
98
+ (!prevCharCode || !charHasRotatedVerticalOrientation(prevCharCode) || verticalizedCharacterMap[input[i - 1]]);
99
+
100
+ if (canReplacePunctuation && verticalizedCharacterMap[input[i]]) {
101
+ output += verticalizedCharacterMap[input[i]];
102
+ } else {
103
+ output += input[i];
104
+ }
105
+ }
106
+
107
+ return output;
108
+ }
109
+
110
+ verticalizePunctuation.verticalizedCharacterMap = verticalizedCharacterMap;
111
+
112
+ module.exports = verticalizePunctuation;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Print a warning message to the console and ensure duplicate warning messages
3
+ * are not printed.
4
+ *
5
+ * @private
6
+ */
7
+ const warnOnceHistory = {};
8
+
9
+ function once(message) {
10
+ if (!warnOnceHistory[message]) {
11
+ console.warn(message);
12
+ warnOnceHistory[message] = true;
13
+ }
14
+ }
15
+
16
+ function noop() {}
17
+
18
+ // console isn't defined in some WebWorkers, see #2558
19
+ module.exports = {
20
+ once: typeof console !== 'undefined' ? once : noop
21
+ };
@@ -0,0 +1,5 @@
1
+ const config = require('./config');
2
+
3
+ module.exports = function () {
4
+ return new window.Worker(config.WORKER_URL);
5
+ };