maplibre-gl 3.1.0 → 3.2.0-pre.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 (337) hide show
  1. package/build/generate-doc-images.ts +73 -0
  2. package/build/generate-docs.ts +100 -0
  3. package/build/generate-struct-arrays.ts +9 -12
  4. package/dist/maplibre-gl-csp-worker.js +1 -1
  5. package/dist/maplibre-gl-csp-worker.js.map +1 -1
  6. package/dist/maplibre-gl-csp.js +1 -1
  7. package/dist/maplibre-gl-csp.js.map +1 -1
  8. package/dist/maplibre-gl-dev.js +3233 -3328
  9. package/dist/maplibre-gl-dev.js.map +1 -1
  10. package/dist/maplibre-gl.d.ts +3828 -3460
  11. package/dist/maplibre-gl.js +3 -3
  12. package/dist/maplibre-gl.js.map +1 -1
  13. package/package.json +28 -25
  14. package/src/data/array_types.g.ts +14 -48
  15. package/src/data/bucket/circle_bucket.ts +11 -14
  16. package/src/data/bucket/fill_bucket.test.ts +6 -6
  17. package/src/data/bucket/fill_bucket.ts +10 -12
  18. package/src/data/bucket/fill_extrusion_bucket.ts +11 -13
  19. package/src/data/bucket/heatmap_bucket.ts +3 -6
  20. package/src/data/bucket/line_attributes.ts +1 -2
  21. package/src/data/bucket/line_attributes_ext.ts +1 -2
  22. package/src/data/bucket/line_bucket.test.ts +5 -5
  23. package/src/data/bucket/line_bucket.ts +18 -21
  24. package/src/data/bucket/pattern_attributes.ts +1 -3
  25. package/src/data/bucket/pattern_bucket_features.ts +3 -3
  26. package/src/data/bucket/symbol_bucket.test.ts +5 -5
  27. package/src/data/bucket/symbol_bucket.ts +12 -15
  28. package/src/data/bucket.ts +7 -11
  29. package/src/data/dem_data.test.ts +1 -1
  30. package/src/data/dem_data.ts +1 -1
  31. package/src/data/evaluation_feature.ts +4 -5
  32. package/src/data/extent.ts +1 -4
  33. package/src/data/feature_index.ts +14 -13
  34. package/src/data/feature_position_map.test.ts +4 -4
  35. package/src/data/feature_position_map.ts +1 -1
  36. package/src/data/index_array_type.ts +0 -1
  37. package/src/data/load_geometry.test.ts +1 -1
  38. package/src/data/load_geometry.ts +3 -4
  39. package/src/data/program_configuration.ts +6 -11
  40. package/src/data/segment.ts +9 -6
  41. package/src/geo/edge_insets.test.ts +1 -1
  42. package/src/geo/edge_insets.ts +34 -24
  43. package/src/geo/lng_lat.test.ts +1 -1
  44. package/src/geo/lng_lat.ts +58 -41
  45. package/src/geo/lng_lat_bounds.test.ts +2 -2
  46. package/src/geo/lng_lat_bounds.ts +88 -68
  47. package/src/geo/mercator_coordinate.test.ts +2 -2
  48. package/src/geo/mercator_coordinate.ts +33 -26
  49. package/src/geo/transform.test.ts +3 -3
  50. package/src/geo/transform.ts +58 -79
  51. package/src/gl/color_mode.ts +1 -3
  52. package/src/gl/context.ts +12 -11
  53. package/src/gl/cull_face_mode.ts +1 -3
  54. package/src/gl/depth_mode.ts +1 -3
  55. package/src/gl/framebuffer.ts +5 -4
  56. package/src/gl/index_buffer.ts +5 -4
  57. package/src/gl/render_pool.test.ts +2 -2
  58. package/src/gl/render_pool.ts +5 -5
  59. package/src/gl/state.test.ts +1 -1
  60. package/src/gl/stencil_mode.ts +1 -3
  61. package/src/gl/value.ts +1 -1
  62. package/src/gl/vertex_buffer.test.ts +2 -2
  63. package/src/gl/vertex_buffer.ts +8 -14
  64. package/src/index.test.ts +2 -2
  65. package/src/index.ts +121 -113
  66. package/src/render/draw_background.ts +7 -9
  67. package/src/render/draw_circle.ts +13 -15
  68. package/src/render/draw_collision_debug.ts +11 -13
  69. package/src/render/draw_custom.ts +6 -8
  70. package/src/render/draw_debug.test.ts +4 -4
  71. package/src/render/draw_debug.ts +8 -10
  72. package/src/render/draw_fill.test.ts +13 -13
  73. package/src/render/draw_fill.ts +9 -11
  74. package/src/render/draw_fill_extrusion.ts +10 -12
  75. package/src/render/draw_heatmap.ts +12 -14
  76. package/src/render/draw_hillshade.ts +10 -12
  77. package/src/render/draw_line.ts +9 -9
  78. package/src/render/draw_raster.ts +9 -11
  79. package/src/render/draw_symbol.test.ts +16 -16
  80. package/src/render/draw_symbol.ts +15 -16
  81. package/src/render/draw_terrain.ts +11 -11
  82. package/src/render/glyph_atlas.ts +10 -1
  83. package/src/render/glyph_manager.test.ts +3 -3
  84. package/src/render/glyph_manager.ts +7 -7
  85. package/src/render/image_atlas.ts +6 -3
  86. package/src/render/image_manager.ts +3 -5
  87. package/src/render/line_atlas.test.ts +1 -1
  88. package/src/render/line_atlas.ts +19 -14
  89. package/src/render/painter.ts +85 -65
  90. package/src/render/program/background_program.ts +2 -2
  91. package/src/render/program/circle_program.ts +5 -5
  92. package/src/render/program/clipping_mask_program.ts +1 -1
  93. package/src/render/program/collision_program.ts +4 -4
  94. package/src/render/program/debug_program.ts +1 -1
  95. package/src/render/program/fill_extrusion_program.ts +3 -3
  96. package/src/render/program/fill_program.ts +3 -3
  97. package/src/render/program/heatmap_program.ts +5 -5
  98. package/src/render/program/hillshade_program.ts +7 -7
  99. package/src/render/program/line_program.ts +6 -6
  100. package/src/render/program/pattern.ts +3 -3
  101. package/src/render/program/raster_program.ts +2 -2
  102. package/src/render/program/symbol_program.ts +2 -2
  103. package/src/render/program/terrain_program.ts +1 -1
  104. package/src/render/program.ts +18 -16
  105. package/src/render/render_to_texture.test.ts +15 -15
  106. package/src/render/render_to_texture.ts +10 -10
  107. package/src/render/terrain.test.ts +38 -7
  108. package/src/render/terrain.ts +103 -67
  109. package/src/render/texture.ts +5 -4
  110. package/src/render/uniform_binding.test.ts +1 -1
  111. package/src/render/uniform_binding.ts +7 -1
  112. package/src/render/update_pattern_positions_in_program.ts +5 -5
  113. package/src/render/vertex_array_object.ts +9 -8
  114. package/src/shaders/encode_attribute.ts +0 -2
  115. package/src/shaders/shaders.ts +1 -3
  116. package/src/source/canvas_source.test.ts +6 -6
  117. package/src/source/canvas_source.ts +46 -60
  118. package/src/source/geojson_source.test.ts +5 -5
  119. package/src/source/geojson_source.ts +71 -55
  120. package/src/source/geojson_source_diff.ts +39 -2
  121. package/src/source/geojson_worker_source.test.ts +3 -3
  122. package/src/source/geojson_worker_source.ts +20 -26
  123. package/src/source/geojson_wrapper.test.ts +3 -3
  124. package/src/source/geojson_wrapper.ts +2 -4
  125. package/src/source/image_source.test.ts +9 -8
  126. package/src/source/image_source.ts +49 -35
  127. package/src/source/load_tilejson.ts +2 -2
  128. package/src/source/pixels_to_tile_units.ts +2 -3
  129. package/src/source/query_features.test.ts +3 -3
  130. package/src/source/query_features.ts +50 -19
  131. package/src/source/raster_dem_tile_source.test.ts +3 -3
  132. package/src/source/raster_dem_tile_source.ts +23 -10
  133. package/src/source/raster_dem_tile_worker_source.test.ts +2 -2
  134. package/src/source/raster_dem_tile_worker_source.ts +3 -5
  135. package/src/source/raster_tile_source.test.ts +3 -3
  136. package/src/source/raster_tile_source.ts +38 -11
  137. package/src/source/rtl_text_plugin.ts +4 -1
  138. package/src/source/source.ts +67 -59
  139. package/src/source/source_cache.test.ts +7 -7
  140. package/src/source/source_cache.ts +17 -38
  141. package/src/source/source_state.ts +2 -5
  142. package/src/source/terrain_source_cache.test.ts +8 -8
  143. package/src/source/terrain_source_cache.ts +42 -27
  144. package/src/source/tile.test.ts +3 -3
  145. package/src/source/tile.ts +32 -38
  146. package/src/source/tile_bounds.ts +2 -4
  147. package/src/source/tile_cache.test.ts +2 -2
  148. package/src/source/tile_cache.ts +20 -30
  149. package/src/source/tile_id.ts +11 -2
  150. package/src/source/vector_tile_source.test.ts +3 -3
  151. package/src/source/vector_tile_source.ts +32 -22
  152. package/src/source/vector_tile_worker_source.test.ts +4 -4
  153. package/src/source/vector_tile_worker_source.ts +11 -23
  154. package/src/source/video_source.test.ts +5 -5
  155. package/src/source/video_source.ts +20 -27
  156. package/src/source/worker.ts +6 -8
  157. package/src/source/worker_source.ts +6 -8
  158. package/src/source/worker_tile.test.ts +5 -5
  159. package/src/source/worker_tile.ts +13 -16
  160. package/src/style/create_style_layer.ts +31 -26
  161. package/src/style/evaluation_parameters.ts +5 -4
  162. package/src/style/format_section_override.test.ts +2 -2
  163. package/src/style/format_section_override.ts +1 -1
  164. package/src/style/light.test.ts +2 -2
  165. package/src/style/light.ts +3 -5
  166. package/src/style/load_glyph_range.test.ts +1 -1
  167. package/src/style/load_glyph_range.ts +3 -3
  168. package/src/style/load_sprite.test.ts +1 -1
  169. package/src/style/load_sprite.ts +3 -3
  170. package/src/style/parse_glyph_pbf.ts +1 -1
  171. package/src/style/pauseable_placement.ts +7 -9
  172. package/src/style/properties.ts +4 -53
  173. package/src/style/query_utils.ts +3 -3
  174. package/src/style/style.test.ts +22 -19
  175. package/src/style/style.ts +118 -84
  176. package/src/style/style_glyph.ts +6 -0
  177. package/src/style/style_image.ts +38 -32
  178. package/src/style/style_layer/background_style_layer.ts +2 -4
  179. package/src/style/style_layer/circle_style_layer.ts +7 -6
  180. package/src/style/style_layer/custom_style_layer.ts +23 -48
  181. package/src/style/style_layer/fill_extrusion_style_layer.ts +4 -6
  182. package/src/style/style_layer/fill_style_layer.ts +5 -7
  183. package/src/style/style_layer/heatmap_style_layer.ts +8 -7
  184. package/src/style/style_layer/hillshade_style_layer.ts +2 -4
  185. package/src/style/style_layer/line_style_layer.ts +6 -8
  186. package/src/style/style_layer/overlap_mode.test.ts +3 -3
  187. package/src/style/style_layer/overlap_mode.ts +3 -0
  188. package/src/style/style_layer/raster_style_layer.ts +2 -4
  189. package/src/style/style_layer/symbol_style_layer.ts +6 -8
  190. package/src/style/style_layer/typed_style_layer.ts +7 -7
  191. package/src/style/style_layer.test.ts +5 -5
  192. package/src/style/style_layer.ts +7 -6
  193. package/src/style/style_layer_index.test.ts +1 -1
  194. package/src/style/style_layer_index.ts +3 -5
  195. package/src/style/zoom_history.ts +1 -3
  196. package/src/symbol/anchor.test.ts +1 -1
  197. package/src/symbol/anchor.ts +1 -3
  198. package/src/symbol/check_max_angle.test.ts +8 -2
  199. package/src/symbol/check_max_angle.ts +10 -13
  200. package/src/symbol/clip_line.test.ts +1 -1
  201. package/src/symbol/clip_line.ts +6 -9
  202. package/src/symbol/collision_feature.test.ts +2 -2
  203. package/src/symbol/collision_feature.ts +7 -12
  204. package/src/symbol/collision_index.test.ts +2 -2
  205. package/src/symbol/collision_index.ts +5 -11
  206. package/src/symbol/cross_tile_symbol_index.test.ts +2 -2
  207. package/src/symbol/cross_tile_symbol_index.ts +5 -7
  208. package/src/symbol/get_anchors.ts +2 -2
  209. package/src/symbol/grid_index.test.ts +1 -1
  210. package/src/symbol/grid_index.ts +4 -5
  211. package/src/symbol/merge_lines.test.ts +1 -1
  212. package/src/symbol/merge_lines.ts +1 -1
  213. package/src/symbol/opacity_state.ts +1 -3
  214. package/src/symbol/path_interpolator.test.ts +1 -1
  215. package/src/symbol/path_interpolator.ts +1 -3
  216. package/src/symbol/placement.ts +9 -9
  217. package/src/symbol/projection.ts +61 -34
  218. package/src/symbol/quads.ts +7 -11
  219. package/src/symbol/shaping.ts +1 -1
  220. package/src/symbol/symbol_layout.ts +9 -12
  221. package/src/symbol/symbol_size.ts +1 -1
  222. package/src/symbol/symbol_style_layer.test.ts +4 -4
  223. package/src/symbol/transform_text.ts +2 -2
  224. package/src/types/callback.ts +14 -14
  225. package/src/types/cancelable.ts +3 -0
  226. package/src/types/transferable.ts +3 -0
  227. package/src/ui/anchor.ts +4 -0
  228. package/src/ui/camera.test.ts +6 -6
  229. package/src/ui/camera.ts +378 -347
  230. package/src/ui/control/attribution_control.test.ts +1 -1
  231. package/src/ui/control/attribution_control.ts +34 -30
  232. package/src/ui/control/control.ts +14 -20
  233. package/src/ui/control/fullscreen_control.test.ts +1 -1
  234. package/src/ui/control/fullscreen_control.ts +20 -25
  235. package/src/ui/control/geolocate_control.test.ts +5 -5
  236. package/src/ui/control/geolocate_control.ts +180 -193
  237. package/src/ui/control/logo_control.ts +20 -16
  238. package/src/ui/control/navigation_control.test.ts +1 -1
  239. package/src/ui/control/navigation_control.ts +44 -40
  240. package/src/ui/control/scale_control.test.ts +1 -1
  241. package/src/ui/control/scale_control.ts +30 -21
  242. package/src/ui/control/terrain_control.test.ts +1 -1
  243. package/src/ui/control/terrain_control.ts +14 -18
  244. package/src/ui/default_locale.ts +1 -3
  245. package/src/ui/events.ts +544 -1255
  246. package/src/ui/handler/box_zoom.test.ts +2 -2
  247. package/src/ui/handler/box_zoom.ts +16 -11
  248. package/src/ui/handler/click_zoom.ts +11 -3
  249. package/src/ui/handler/cooperative_gestures.test.ts +3 -3
  250. package/src/ui/handler/dblclick_zoom.test.ts +1 -1
  251. package/src/ui/handler/drag_handler.ts +30 -22
  252. package/src/ui/handler/drag_move_state_manager.ts +1 -1
  253. package/src/ui/handler/drag_pan.test.ts +2 -2
  254. package/src/ui/handler/drag_rotate.test.ts +3 -3
  255. package/src/ui/handler/keyboard.test.ts +2 -2
  256. package/src/ui/handler/keyboard.ts +22 -13
  257. package/src/ui/handler/map_event.test.ts +2 -2
  258. package/src/ui/handler/map_event.ts +1 -1
  259. package/src/ui/handler/mouse.ts +1 -1
  260. package/src/ui/handler/mouse_rotate.test.ts +3 -3
  261. package/src/ui/handler/scroll_zoom.test.ts +3 -3
  262. package/src/ui/handler/scroll_zoom.ts +45 -52
  263. package/src/ui/handler/shim/dblclick_zoom.ts +12 -6
  264. package/src/ui/handler/shim/drag_pan.ts +34 -14
  265. package/src/ui/handler/shim/drag_rotate.ts +20 -12
  266. package/src/ui/handler/shim/two_fingers_touch.ts +24 -18
  267. package/src/ui/handler/tap_drag_zoom.test.ts +113 -0
  268. package/src/ui/handler/tap_drag_zoom.ts +18 -10
  269. package/src/ui/handler/tap_recognizer.ts +1 -1
  270. package/src/ui/handler/tap_zoom.ts +4 -3
  271. package/src/ui/handler/touch_pan.ts +3 -2
  272. package/src/ui/handler/transform-provider.ts +4 -6
  273. package/src/ui/handler/two_fingers_touch.test.ts +3 -3
  274. package/src/ui/handler/two_fingers_touch.ts +64 -47
  275. package/src/ui/handler_inertia.ts +4 -4
  276. package/src/ui/handler_manager.ts +86 -52
  277. package/src/ui/hash.test.ts +1 -1
  278. package/src/ui/hash.ts +21 -28
  279. package/src/ui/map/isMoving.test.ts +3 -3
  280. package/src/ui/map/isRotating.test.ts +3 -3
  281. package/src/ui/map/isZooming.test.ts +3 -3
  282. package/src/ui/map.test.ts +97 -8
  283. package/src/ui/map.ts +825 -671
  284. package/src/ui/map_events.test.ts +1 -1
  285. package/src/ui/marker.test.ts +35 -15
  286. package/src/ui/marker.ts +214 -135
  287. package/src/ui/popup.test.ts +2 -2
  288. package/src/ui/popup.ts +167 -135
  289. package/src/util/actor.test.ts +7 -7
  290. package/src/util/actor.ts +25 -22
  291. package/src/util/ajax.ts +37 -17
  292. package/src/util/browser.test.ts +1 -1
  293. package/src/util/browser.ts +2 -6
  294. package/src/util/classify_rings.test.ts +1 -1
  295. package/src/util/classify_rings.ts +1 -1
  296. package/src/util/color_ramp.ts +0 -2
  297. package/src/util/config.ts +6 -3
  298. package/src/util/debug.ts +0 -2
  299. package/src/util/dictionary_coder.ts +1 -4
  300. package/src/util/dispatcher.test.ts +3 -3
  301. package/src/util/dispatcher.ts +4 -9
  302. package/src/util/dom.ts +1 -1
  303. package/src/util/evented.ts +23 -18
  304. package/src/util/find_pole_of_inaccessibility.test.ts +1 -1
  305. package/src/util/find_pole_of_inaccessibility.ts +4 -5
  306. package/src/util/global_worker_pool.ts +2 -3
  307. package/src/util/image.ts +10 -4
  308. package/src/util/image_request.test.ts +3 -3
  309. package/src/util/image_request.ts +15 -14
  310. package/src/util/is_char_in_unicode_block.ts +1 -3
  311. package/src/util/offscreen_canvas_supported.ts +1 -1
  312. package/src/util/performance.ts +1 -2
  313. package/src/util/request_manager.ts +4 -0
  314. package/src/util/resolve_tokens.test.ts +1 -1
  315. package/src/util/resolve_tokens.ts +3 -6
  316. package/src/util/script_detection.ts +1 -4
  317. package/src/util/smart_wrap.ts +3 -5
  318. package/src/util/struct_array.ts +18 -14
  319. package/src/util/style.ts +2 -2
  320. package/src/util/task_queue.test.ts +1 -1
  321. package/src/util/task_queue.ts +1 -3
  322. package/src/util/test/mock_webgl.ts +6 -0
  323. package/src/util/test/util.ts +2 -2
  324. package/src/util/throttle.test.ts +1 -1
  325. package/src/util/throttle.ts +1 -2
  326. package/src/util/throttled_invoker.ts +1 -5
  327. package/src/util/transferable_grid_index.test.ts +1 -1
  328. package/src/util/transferable_grid_index.ts +1 -3
  329. package/src/util/util.test.ts +1 -14
  330. package/src/util/util.ts +44 -107
  331. package/src/util/vectortile_to_geojson.ts +13 -3
  332. package/src/util/verticalize_punctuation.ts +1 -1
  333. package/src/util/web_worker.ts +2 -2
  334. package/src/util/web_worker_transfer.ts +11 -8
  335. package/src/util/webp_supported.ts +2 -4
  336. package/src/util/worker_pool.test.ts +1 -1
  337. package/src/util/worker_pool.ts +4 -5
@@ -0,0 +1,73 @@
1
+ import path from 'path';
2
+ import fs from 'fs';
3
+ import puppeteer from 'puppeteer';
4
+ import packageJson from '../package.json' assert { type: 'json' };
5
+
6
+ const exampleName = process.argv[2];
7
+ const examplePath = path.resolve('test', 'examples');
8
+
9
+ const browser = await puppeteer.launch({headless: exampleName === 'all'});
10
+
11
+ const page = await browser.newPage();
12
+ // set viewport and double deviceScaleFactor to get a closer shot of the map
13
+ await page.setViewport({
14
+ width: 600,
15
+ height: 250,
16
+ deviceScaleFactor: 2
17
+ });
18
+
19
+ async function createImage(exampleName) {
20
+ // get the example contents
21
+ const html = fs.readFileSync(path.resolve(examplePath, `${exampleName}.html`), 'utf-8');
22
+
23
+ await page.setContent(html.replaceAll('../../dist', `https://unpkg.com/maplibre-gl@${packageJson.version}/dist`));
24
+
25
+ // Wait for map to load, then wait two more seconds for images, etc. to load.
26
+ await page
27
+ .waitForFunction('map.loaded()')
28
+ .then(async () => {
29
+ // Wait for 5 seconds on 3d model examples, since this takes longer to load.
30
+ const waitTime = exampleName.includes('3d-model') ? 5000 : 1500;
31
+ await new Promise((resolve) => {
32
+ console.log(`waiting for ${waitTime} ms`);
33
+ setTimeout(resolve, waitTime);
34
+ });
35
+ })
36
+ // map.loaded() does not evaluate to true within 3 seconds, it's probably an animated example.
37
+ // In this case we take the screenshot immediately.
38
+ .catch(() => {
39
+ console.log(`Timed out waiting for map load on ${exampleName}.`);
40
+ });
41
+
42
+ await page
43
+ .screenshot({
44
+ path: `./docs/assets/examples/${exampleName}.png`,
45
+ type: 'png',
46
+ clip: {
47
+ x: 0,
48
+ y: 0,
49
+ width: 600,
50
+ height: 250
51
+ }
52
+ })
53
+ .then(() => console.log(`Created ./docs/assets/examples/${exampleName}.png`))
54
+ .catch((err) => {
55
+ console.log(err);
56
+ });
57
+ }
58
+
59
+ if (exampleName === 'all') {
60
+ const allFiles = fs.readdirSync(examplePath).filter(f => f.endsWith('html'));
61
+ console.log(`Generating ${allFiles.length} images.`);
62
+ for (const file of allFiles) {
63
+ await createImage(file);
64
+ }
65
+ } else if (exampleName) {
66
+ await createImage(exampleName);
67
+ } else {
68
+ throw new Error(
69
+ '\n Usage: npm run generate-images <file-name|all>\nExample: npm run generate-images 3d-buildings'
70
+ );
71
+ }
72
+
73
+ await browser.close();
@@ -0,0 +1,100 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import typedocConfig from '../typedoc.json' assert {type: 'json'};
4
+ import packageJson from '../package.json' assert {type: 'json'};
5
+
6
+ type HtmlDoc = {
7
+ title: string;
8
+ description: string;
9
+ mdFileName: string;
10
+ }
11
+
12
+ function generateAPIIntroMarkdown(lines: string[]): string {
13
+ let intro = `# Intro
14
+
15
+ This file is intended as a reference for the important and public classes of this API.
16
+ We reccomend looking at the [expamples](../example/index.md) as they will help you the most to start with MapLibre.
17
+
18
+ Most of the classes wirtten here have an "Options" object for initialization, it is recommended to check which options exist.
19
+
20
+ `;
21
+ intro += lines.map(l => l.replace('../', './')).join('\n');
22
+ return intro;
23
+ }
24
+
25
+ function generateMarkdownForExample(title: string, description: string, file: string, htmlContent: string): string {
26
+ return `
27
+ # ${title}
28
+
29
+ ${description}
30
+
31
+ <iframe src="../${file}" width="100%" style="border:none; height:400px"></iframe>
32
+
33
+ \`\`\`html
34
+ ${htmlContent}
35
+ \`\`\`
36
+ `;
37
+ }
38
+
39
+ function generateMarkdownIndexFileOfAllExamples(indexArray: HtmlDoc[]): string {
40
+ let indexMarkdown = '# Overview \n\n';
41
+ for (const indexArrayItem of indexArray) {
42
+ indexMarkdown += `
43
+ ## [${indexArrayItem.title}](./${indexArrayItem.mdFileName})
44
+
45
+ ![${indexArrayItem.description}](../assets/examples/${indexArrayItem.mdFileName!.replace('.md', '.png')})
46
+
47
+ ${indexArrayItem.description}
48
+ `;
49
+ }
50
+ return indexMarkdown;
51
+ }
52
+
53
+ if (!fs.existsSync(typedocConfig.out)) {
54
+ throw new Error('Please run typedoc generation first!');
55
+ }
56
+
57
+ fs.rmSync(path.join(typedocConfig.out, 'README.md'));
58
+ fs.rmSync(path.join(typedocConfig.out, 'modules.md'));
59
+ // Intro file for the API
60
+ const modulesFolder = path.join(typedocConfig.out, 'modules');
61
+ const content = fs.readFileSync(path.join(modulesFolder, `${typedocConfig.internalModule}.md`), 'utf-8');
62
+ let lines = content.split('\n');
63
+ const classesLineIndex = lines.indexOf(lines.find(l => l.endsWith('Classes')) as string);
64
+ lines = lines.splice(2, classesLineIndex - 2);
65
+ const contentString = generateAPIIntroMarkdown(lines);
66
+ fs.writeFileSync(path.join(typedocConfig.out, 'README.md'), contentString);
67
+
68
+ // Examples manupilation
69
+ const examplesDocsFolder = path.join('docs', 'examples');
70
+ if (fs.existsSync(examplesDocsFolder)) {
71
+ fs.rmSync(examplesDocsFolder, {recursive: true, force: true});
72
+ }
73
+ fs.mkdirSync(examplesDocsFolder);
74
+ const examplesFolder = path.join('test', 'examples');
75
+ const files = fs.readdirSync(examplesFolder).filter(f => f.endsWith('html'));
76
+ const maplibreUnpgk = `https://unpkg.com/maplibre-gl@${packageJson.version}/`;
77
+ const indexArray = [] as HtmlDoc[];
78
+ for (const file of files) {
79
+ const htmlFile = path.join(examplesFolder, file);
80
+ let htmlContent = fs.readFileSync(htmlFile, 'utf-8');
81
+ htmlContent = htmlContent.replace(/\.\.\/\.\.\//g, maplibreUnpgk);
82
+ htmlContent = htmlContent.replace(/-dev.js/g, '.js');
83
+ const htmlContentLines = htmlContent.split('\n');
84
+ const title = htmlContentLines.find(l => l.includes('<title'))?.replace('<title>', '').replace('</title>', '').trim();
85
+ const description = htmlContentLines.find(l => l.includes('og:description'))?.replace(/.*content=\"(.*)\".*/, '$1');
86
+ fs.writeFileSync(path.join(examplesDocsFolder, file), htmlContent);
87
+ const mdFileName = file.replace('.html', '.md');
88
+ indexArray.push({
89
+ title: title!,
90
+ description: description!,
91
+ mdFileName
92
+ });
93
+ const exampleMarkdown = generateMarkdownForExample(title, description, file, htmlContent);
94
+ fs.writeFileSync(path.join(examplesDocsFolder, mdFileName), exampleMarkdown);
95
+ }
96
+
97
+ const indexMarkdown = generateMarkdownIndexFileOfAllExamples(indexArray);
98
+ fs.writeFileSync(path.join(examplesDocsFolder, 'index.md'), indexMarkdown);
99
+
100
+ console.log('Docs generation completed, to see it in action run\n docker run --rm -it -p 8000:8000 -v ${PWD}:/docs squidfunk/mkdocs-material');
@@ -19,9 +19,9 @@ import rasterBoundsAttributes from '../src/data/raster_bounds_attributes';
19
19
  import circleAttributes from '../src/data/bucket/circle_attributes';
20
20
  import fillAttributes from '../src/data/bucket/fill_attributes';
21
21
  import fillExtrusionAttributes from '../src/data/bucket/fill_extrusion_attributes';
22
- import lineAttributes from '../src/data/bucket/line_attributes';
23
- import lineAttributesExt from '../src/data/bucket/line_attributes_ext';
24
- import patternAttributes from '../src/data/bucket/pattern_attributes';
22
+ import {lineLayoutAttributes} from '../src/data/bucket/line_attributes';
23
+ import {lineLayoutAttributesExt} from '../src/data/bucket/line_attributes_ext';
24
+ import {patternAttributes} from '../src/data/bucket/pattern_attributes';
25
25
  // symbol layer specific arrays
26
26
  import {
27
27
  symbolLayoutAttributes,
@@ -144,8 +144,8 @@ const layoutAttributes = {
144
144
  fill: fillAttributes,
145
145
  'fill-extrusion': fillExtrusionAttributes,
146
146
  heatmap: circleAttributes,
147
- line: lineAttributes,
148
- lineExt: lineAttributesExt,
147
+ line: lineLayoutAttributes,
148
+ lineExt: lineLayoutAttributesExt,
149
149
  pattern: patternAttributes
150
150
  };
151
151
  for (const name in layoutAttributes) {
@@ -236,7 +236,6 @@ function emitStructArrayLayout(locals) {
236
236
 
237
237
  output.push(
238
238
  ` *
239
- * @private
240
239
  */
241
240
  class ${structArrayLayoutClass} extends StructArray {`);
242
241
 
@@ -349,7 +348,8 @@ function emitStructArray(locals) {
349
348
 
350
349
  if (includeStructAccessors && !useComponentGetters) {
351
350
  output.push(
352
- `class ${structTypeClass} extends Struct {
351
+ `/** */
352
+ class ${structTypeClass} extends Struct {
353
353
  _structArray: ${structArrayClass};`);
354
354
 
355
355
  for (const {name, member, component} of components) {
@@ -384,9 +384,7 @@ export type ${structTypeClass.replace('Struct', '')} = ${structTypeClass};
384
384
  } // end 'if (includeStructAccessors)'
385
385
 
386
386
  output.push(
387
- `/**
388
- * @private
389
- */
387
+ `/** */
390
388
  export class ${structArrayClass} extends ${structArrayLayoutClass} {`);
391
389
 
392
390
  if (useComponentGetters) {
@@ -407,8 +405,7 @@ export class ${structArrayClass} extends ${structArrayLayoutClass} {`);
407
405
  output.push(
408
406
  ` /**
409
407
  * Return the ${structTypeClass} at the given location in the array.
410
- * @param {number} index The index of the element.
411
- * @private
408
+ * @param index The index of the element.
412
409
  */
413
410
  get(index: number): ${structTypeClass} {
414
411
  return new ${structTypeClass}(this, index);