@trailstash/ultra 3.0.0-dev

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 (415) hide show
  1. package/.gitlab-ci.yml +15 -0
  2. package/Examples/alt-bbox-format.ultra +9 -0
  3. package/Examples/atp-usps-dropboxes.ultra +68 -0
  4. package/Examples/bike-infra.ultra +111 -0
  5. package/Examples/contribution-heatmap.ultra +17 -0
  6. package/Examples/custom-style.ultra +114 -0
  7. package/Examples/glow-effect.ultra +27 -0
  8. package/Examples/index.md +7 -0
  9. package/Examples/landmarks-prototype.ultra +68 -0
  10. package/Examples/minimalist-ski-map.ultra +55 -0
  11. package/Examples/opentrailstash-3d.ultra +40 -0
  12. package/Examples/overture-landcover-plus-hillshade.ultra +45 -0
  13. package/Examples/overture-places-and-osm.ultra +29 -0
  14. package/Examples/trees.ultra +60 -0
  15. package/Examples/wikidata-photo.ultra +28 -0
  16. package/Examples/within-bounds.ultra +12 -0
  17. package/LICENSE +23 -0
  18. package/MapLibre-Examples/3d-buildings.ultra +43 -0
  19. package/MapLibre-Examples/3d-extrusion-floorplan.ultra +28 -0
  20. package/MapLibre-Examples/3d-terrain.ultra +39 -0
  21. package/MapLibre-Examples/add-image.ultra +26 -0
  22. package/MapLibre-Examples/attribution-position.ultra +12 -0
  23. package/MapLibre-Examples/change-case-of-labels.ultra +26 -0
  24. package/MapLibre-Examples/cluster.ultra +59 -0
  25. package/MapLibre-Examples/cooperative-gestures.ultra +11 -0
  26. package/MapLibre-Examples/custom-marker-icons.ultra +65 -0
  27. package/MapLibre-Examples/data-driven-lines.ultra +169 -0
  28. package/MapLibre-Examples/disable-rotation.ultra +11 -0
  29. package/MapLibre-Examples/disable-scroll-zoom.ultra +9 -0
  30. package/MapLibre-Examples/display-and-style-rich-text-labels.ultra +22 -0
  31. package/MapLibre-Examples/fill-pattern.ultra +43 -0
  32. package/MapLibre-Examples/fullscreen.ultra +10 -0
  33. package/MapLibre-Examples/geojson-layer-in-stack.ultra +23 -0
  34. package/MapLibre-Examples/geojson-line.ultra +114 -0
  35. package/MapLibre-Examples/geojson-markers.ultra +217 -0
  36. package/MapLibre-Examples/geojson-polygon.ultra +104 -0
  37. package/MapLibre-Examples/heatmap-layer.ultra +111 -0
  38. package/MapLibre-Examples/index.md +4 -0
  39. package/MapLibre-Examples/locate-user.ultra +14 -0
  40. package/MapLibre-Examples/map-tiles.ultra +9 -0
  41. package/MapLibre-Examples/pmtiles.ultra +25 -0
  42. package/MapLibre-Examples/wms.ultra +14 -0
  43. package/README.md +46 -0
  44. package/bin/dev.cmd +3 -0
  45. package/bin/dev.js +6 -0
  46. package/bin/run.cmd +3 -0
  47. package/bin/run.js +5 -0
  48. package/build-examples-docs.js +104 -0
  49. package/build-examples-images.js +87 -0
  50. package/build-sprites.sh +30 -0
  51. package/cli/build.js +53 -0
  52. package/cli/serve.js +34 -0
  53. package/components/button-modal.js +111 -0
  54. package/components/button.css +22 -0
  55. package/components/button.js +6 -0
  56. package/components/code-editor.js +87 -0
  57. package/components/download-button.js +69 -0
  58. package/components/fontawesome-icon.js +80 -0
  59. package/components/fs-button.js +52 -0
  60. package/components/help-modal.js +98 -0
  61. package/components/map-popup.js +57 -0
  62. package/components/nav-bar.js +76 -0
  63. package/components/run-button.js +78 -0
  64. package/components/share-button.js +35 -0
  65. package/components/share-modal.js +139 -0
  66. package/components/style-picker.js +47 -0
  67. package/components/ultra-ide.js +298 -0
  68. package/components/ultra-loader.js +60 -0
  69. package/components/ultra-map.js +312 -0
  70. package/configs/minimal.js +9 -0
  71. package/configs/overpass-ultra.js +185 -0
  72. package/docs/assets/Examples/alt-bbox-format.png +0 -0
  73. package/docs/assets/Examples/atp-usps-dropboxes.png +0 -0
  74. package/docs/assets/Examples/bike-infra.png +0 -0
  75. package/docs/assets/Examples/contribution-heatmap.png +0 -0
  76. package/docs/assets/Examples/custom-style.png +0 -0
  77. package/docs/assets/Examples/glow-effect.png +0 -0
  78. package/docs/assets/Examples/landmarks-prototype.png +0 -0
  79. package/docs/assets/Examples/minimalist-ski-map.png +0 -0
  80. package/docs/assets/Examples/opentrailstash-3d.png +0 -0
  81. package/docs/assets/Examples/overture-landcover-plus-hillshade.png +0 -0
  82. package/docs/assets/Examples/overture-places-and-osm.png +0 -0
  83. package/docs/assets/Examples/trees.png +0 -0
  84. package/docs/assets/Examples/wikidata-photo.png +0 -0
  85. package/docs/assets/Examples/within-bounds.png +0 -0
  86. package/docs/assets/MapLibre-Examples/3d-buildings.png +0 -0
  87. package/docs/assets/MapLibre-Examples/3d-extrusion-floorplan.png +0 -0
  88. package/docs/assets/MapLibre-Examples/3d-terrain.png +0 -0
  89. package/docs/assets/MapLibre-Examples/add-image.png +0 -0
  90. package/docs/assets/MapLibre-Examples/attribution-position.png +0 -0
  91. package/docs/assets/MapLibre-Examples/change-case-of-labels.png +0 -0
  92. package/docs/assets/MapLibre-Examples/cluster.png +0 -0
  93. package/docs/assets/MapLibre-Examples/cooperative-gestures.png +0 -0
  94. package/docs/assets/MapLibre-Examples/custom-marker-icons.png +0 -0
  95. package/docs/assets/MapLibre-Examples/data-driven-lines.png +0 -0
  96. package/docs/assets/MapLibre-Examples/disable-rotation.png +0 -0
  97. package/docs/assets/MapLibre-Examples/disable-scroll-zoom.png +0 -0
  98. package/docs/assets/MapLibre-Examples/display-and-style-rich-text-labels.png +0 -0
  99. package/docs/assets/MapLibre-Examples/fill-pattern.png +0 -0
  100. package/docs/assets/MapLibre-Examples/fullscreen.png +0 -0
  101. package/docs/assets/MapLibre-Examples/geojson-layer-in-stack.png +0 -0
  102. package/docs/assets/MapLibre-Examples/geojson-line.png +0 -0
  103. package/docs/assets/MapLibre-Examples/geojson-markers.png +0 -0
  104. package/docs/assets/MapLibre-Examples/geojson-polygon.png +0 -0
  105. package/docs/assets/MapLibre-Examples/heatmap-layer.png +0 -0
  106. package/docs/assets/MapLibre-Examples/locate-user.png +0 -0
  107. package/docs/assets/MapLibre-Examples/map-tiles.png +0 -0
  108. package/docs/assets/MapLibre-Examples/pmtiles.png +0 -0
  109. package/docs/assets/MapLibre-Examples/wms.png +0 -0
  110. package/docs/assets/data/Examples/atp_usps_collection_boxes.geojson +1 -0
  111. package/docs/further-reading.md +15 -0
  112. package/docs/index.md +55 -0
  113. package/docs/overrides/partials/integrations/analytics/custom.html +11 -0
  114. package/docs/query-shortcuts.md +21 -0
  115. package/docs/style.md +120 -0
  116. package/docs/url-parameters.md +45 -0
  117. package/docs/yaml.md +117 -0
  118. package/index.js +53 -0
  119. package/lib/base.css +12 -0
  120. package/lib/bounds.js +8 -0
  121. package/lib/dom.js +21 -0
  122. package/lib/glyphFallback.js +31 -0
  123. package/lib/localStorage.js +34 -0
  124. package/lib/normalize.js +5 -0
  125. package/lib/queryMap.js +50 -0
  126. package/lib/queryParams.js +142 -0
  127. package/lib/queryProviders/auto.js +47 -0
  128. package/lib/queryProviders/geojson.js +134 -0
  129. package/lib/queryProviders/gpx.js +101 -0
  130. package/lib/queryProviders/index.js +22 -0
  131. package/lib/queryProviders/kml.js +132 -0
  132. package/lib/queryProviders/osm.js +199 -0
  133. package/lib/queryProviders/overpass.js +162 -0
  134. package/lib/queryProviders/raster.js +23 -0
  135. package/lib/queryProviders/tcx.js +105 -0
  136. package/lib/queryProviders/vector.js +13 -0
  137. package/lib/settings.js +72 -0
  138. package/lib/sprites.js +18 -0
  139. package/lib/style.js +222 -0
  140. package/mkdocs.yml +26 -0
  141. package/package.json +80 -0
  142. package/screenshot.png +0 -0
  143. package/static/embed.js +18 -0
  144. package/static/font/0-255.pbf +0 -0
  145. package/static/font/1024-1279.pbf +0 -0
  146. package/static/font/10240-10495.pbf +3 -0
  147. package/static/font/10496-10751.pbf +0 -0
  148. package/static/font/10752-11007.pbf +3 -0
  149. package/static/font/11008-11263.pbf +0 -0
  150. package/static/font/11264-11519.pbf +0 -0
  151. package/static/font/11520-11775.pbf +0 -0
  152. package/static/font/11776-12031.pbf +0 -0
  153. package/static/font/12032-12287.pbf +0 -0
  154. package/static/font/12288-12543.pbf +0 -0
  155. package/static/font/12544-12799.pbf +0 -0
  156. package/static/font/1280-1535.pbf +0 -0
  157. package/static/font/12800-13055.pbf +0 -0
  158. package/static/font/13056-13311.pbf +0 -0
  159. package/static/font/13312-13567.pbf +0 -0
  160. package/static/font/13568-13823.pbf +0 -0
  161. package/static/font/13824-14079.pbf +0 -0
  162. package/static/font/14080-14335.pbf +0 -0
  163. package/static/font/14336-14591.pbf +0 -0
  164. package/static/font/14592-14847.pbf +0 -0
  165. package/static/font/14848-15103.pbf +0 -0
  166. package/static/font/15104-15359.pbf +0 -0
  167. package/static/font/1536-1791.pbf +0 -0
  168. package/static/font/15360-15615.pbf +0 -0
  169. package/static/font/15616-15871.pbf +0 -0
  170. package/static/font/15872-16127.pbf +0 -0
  171. package/static/font/16128-16383.pbf +0 -0
  172. package/static/font/16384-16639.pbf +0 -0
  173. package/static/font/16640-16895.pbf +0 -0
  174. package/static/font/16896-17151.pbf +0 -0
  175. package/static/font/17152-17407.pbf +0 -0
  176. package/static/font/17408-17663.pbf +0 -0
  177. package/static/font/17664-17919.pbf +0 -0
  178. package/static/font/1792-2047.pbf +0 -0
  179. package/static/font/17920-18175.pbf +0 -0
  180. package/static/font/18176-18431.pbf +0 -0
  181. package/static/font/18432-18687.pbf +0 -0
  182. package/static/font/18688-18943.pbf +0 -0
  183. package/static/font/18944-19199.pbf +0 -0
  184. package/static/font/19200-19455.pbf +0 -0
  185. package/static/font/19456-19711.pbf +0 -0
  186. package/static/font/19712-19967.pbf +0 -0
  187. package/static/font/19968-20223.pbf +0 -0
  188. package/static/font/20224-20479.pbf +0 -0
  189. package/static/font/2048-2303.pbf +0 -0
  190. package/static/font/20480-20735.pbf +0 -0
  191. package/static/font/20736-20991.pbf +0 -0
  192. package/static/font/20992-21247.pbf +0 -0
  193. package/static/font/21248-21503.pbf +0 -0
  194. package/static/font/21504-21759.pbf +0 -0
  195. package/static/font/21760-22015.pbf +0 -0
  196. package/static/font/22016-22271.pbf +0 -0
  197. package/static/font/22272-22527.pbf +192 -26
  198. package/static/font/22528-22783.pbf +0 -0
  199. package/static/font/22784-23039.pbf +0 -0
  200. package/static/font/2304-2559.pbf +0 -0
  201. package/static/font/23040-23295.pbf +0 -0
  202. package/static/font/23296-23551.pbf +0 -0
  203. package/static/font/23552-23807.pbf +0 -0
  204. package/static/font/23808-24063.pbf +0 -0
  205. package/static/font/24064-24319.pbf +0 -0
  206. package/static/font/24320-24575.pbf +0 -0
  207. package/static/font/24576-24831.pbf +0 -0
  208. package/static/font/24832-25087.pbf +0 -0
  209. package/static/font/25088-25343.pbf +0 -0
  210. package/static/font/25344-25599.pbf +0 -0
  211. package/static/font/256-511.pbf +0 -0
  212. package/static/font/2560-2815.pbf +0 -0
  213. package/static/font/25600-25855.pbf +0 -0
  214. package/static/font/25856-26111.pbf +0 -0
  215. package/static/font/26112-26367.pbf +0 -0
  216. package/static/font/26368-26623.pbf +0 -0
  217. package/static/font/26624-26879.pbf +0 -0
  218. package/static/font/26880-27135.pbf +0 -0
  219. package/static/font/27136-27391.pbf +0 -0
  220. package/static/font/27392-27647.pbf +0 -0
  221. package/static/font/27648-27903.pbf +0 -0
  222. package/static/font/27904-28159.pbf +0 -0
  223. package/static/font/2816-3071.pbf +0 -0
  224. package/static/font/28160-28415.pbf +0 -0
  225. package/static/font/28416-28671.pbf +0 -0
  226. package/static/font/28672-28927.pbf +0 -0
  227. package/static/font/28928-29183.pbf +0 -0
  228. package/static/font/29184-29439.pbf +0 -0
  229. package/static/font/29440-29695.pbf +0 -0
  230. package/static/font/29696-29951.pbf +0 -0
  231. package/static/font/29952-30207.pbf +0 -0
  232. package/static/font/30208-30463.pbf +0 -0
  233. package/static/font/30464-30719.pbf +0 -0
  234. package/static/font/3072-3327.pbf +0 -0
  235. package/static/font/30720-30975.pbf +0 -0
  236. package/static/font/30976-31231.pbf +0 -0
  237. package/static/font/31232-31487.pbf +0 -0
  238. package/static/font/31488-31743.pbf +0 -0
  239. package/static/font/31744-31999.pbf +0 -0
  240. package/static/font/32000-32255.pbf +0 -0
  241. package/static/font/32256-32511.pbf +0 -0
  242. package/static/font/32512-32767.pbf +0 -0
  243. package/static/font/32768-33023.pbf +0 -0
  244. package/static/font/33024-33279.pbf +0 -0
  245. package/static/font/3328-3583.pbf +0 -0
  246. package/static/font/33280-33535.pbf +0 -0
  247. package/static/font/33536-33791.pbf +0 -0
  248. package/static/font/33792-34047.pbf +0 -0
  249. package/static/font/34048-34303.pbf +0 -0
  250. package/static/font/34304-34559.pbf +0 -0
  251. package/static/font/34560-34815.pbf +0 -0
  252. package/static/font/34816-35071.pbf +0 -0
  253. package/static/font/35072-35327.pbf +0 -0
  254. package/static/font/35328-35583.pbf +0 -0
  255. package/static/font/35584-35839.pbf +0 -0
  256. package/static/font/3584-3839.pbf +0 -0
  257. package/static/font/35840-36095.pbf +0 -0
  258. package/static/font/36096-36351.pbf +0 -0
  259. package/static/font/36352-36607.pbf +0 -0
  260. package/static/font/36608-36863.pbf +0 -0
  261. package/static/font/36864-37119.pbf +0 -0
  262. package/static/font/37120-37375.pbf +0 -0
  263. package/static/font/37376-37631.pbf +0 -0
  264. package/static/font/37632-37887.pbf +0 -0
  265. package/static/font/37888-38143.pbf +0 -0
  266. package/static/font/38144-38399.pbf +0 -0
  267. package/static/font/3840-4095.pbf +0 -0
  268. package/static/font/38400-38655.pbf +45 -4
  269. package/static/font/38656-38911.pbf +0 -0
  270. package/static/font/38912-39167.pbf +0 -0
  271. package/static/font/39168-39423.pbf +0 -0
  272. package/static/font/39424-39679.pbf +0 -0
  273. package/static/font/39680-39935.pbf +0 -0
  274. package/static/font/39936-40191.pbf +0 -0
  275. package/static/font/40192-40447.pbf +0 -0
  276. package/static/font/40448-40703.pbf +0 -0
  277. package/static/font/40704-40959.pbf +0 -0
  278. package/static/font/4096-4351.pbf +0 -0
  279. package/static/font/40960-41215.pbf +3 -0
  280. package/static/font/41216-41471.pbf +3 -0
  281. package/static/font/41472-41727.pbf +3 -0
  282. package/static/font/41728-41983.pbf +3 -0
  283. package/static/font/41984-42239.pbf +3 -0
  284. package/static/font/42240-42495.pbf +3 -0
  285. package/static/font/42496-42751.pbf +3 -0
  286. package/static/font/42752-43007.pbf +0 -0
  287. package/static/font/43008-43263.pbf +0 -0
  288. package/static/font/43264-43519.pbf +0 -0
  289. package/static/font/4352-4607.pbf +0 -0
  290. package/static/font/43520-43775.pbf +0 -0
  291. package/static/font/43776-44031.pbf +0 -0
  292. package/static/font/44032-44287.pbf +0 -0
  293. package/static/font/44288-44543.pbf +0 -0
  294. package/static/font/44544-44799.pbf +0 -0
  295. package/static/font/44800-45055.pbf +0 -0
  296. package/static/font/45056-45311.pbf +0 -0
  297. package/static/font/45312-45567.pbf +0 -0
  298. package/static/font/45568-45823.pbf +0 -0
  299. package/static/font/45824-46079.pbf +0 -0
  300. package/static/font/4608-4863.pbf +0 -0
  301. package/static/font/46080-46335.pbf +0 -0
  302. package/static/font/46336-46591.pbf +0 -0
  303. package/static/font/46592-46847.pbf +0 -0
  304. package/static/font/46848-47103.pbf +0 -0
  305. package/static/font/47104-47359.pbf +0 -0
  306. package/static/font/47360-47615.pbf +0 -0
  307. package/static/font/47616-47871.pbf +0 -0
  308. package/static/font/47872-48127.pbf +0 -0
  309. package/static/font/48128-48383.pbf +0 -0
  310. package/static/font/48384-48639.pbf +0 -0
  311. package/static/font/4864-5119.pbf +0 -0
  312. package/static/font/48640-48895.pbf +0 -0
  313. package/static/font/48896-49151.pbf +0 -0
  314. package/static/font/49152-49407.pbf +0 -0
  315. package/static/font/49408-49663.pbf +0 -0
  316. package/static/font/49664-49919.pbf +0 -0
  317. package/static/font/49920-50175.pbf +0 -0
  318. package/static/font/50176-50431.pbf +0 -0
  319. package/static/font/50432-50687.pbf +0 -0
  320. package/static/font/50688-50943.pbf +0 -0
  321. package/static/font/50944-51199.pbf +0 -0
  322. package/static/font/512-767.pbf +0 -0
  323. package/static/font/5120-5375.pbf +3 -0
  324. package/static/font/51200-51455.pbf +0 -0
  325. package/static/font/51456-51711.pbf +0 -0
  326. package/static/font/51712-51967.pbf +0 -0
  327. package/static/font/51968-52223.pbf +0 -0
  328. package/static/font/52224-52479.pbf +0 -0
  329. package/static/font/52480-52735.pbf +0 -0
  330. package/static/font/52736-52991.pbf +0 -0
  331. package/static/font/52992-53247.pbf +0 -0
  332. package/static/font/53248-53503.pbf +0 -0
  333. package/static/font/53504-53759.pbf +0 -0
  334. package/static/font/5376-5631.pbf +3 -0
  335. package/static/font/53760-54015.pbf +0 -0
  336. package/static/font/54016-54271.pbf +0 -0
  337. package/static/font/54272-54527.pbf +0 -0
  338. package/static/font/54528-54783.pbf +0 -0
  339. package/static/font/54784-55039.pbf +0 -0
  340. package/static/font/55040-55295.pbf +0 -0
  341. package/static/font/55296-55551.pbf +3 -0
  342. package/static/font/55552-55807.pbf +3 -0
  343. package/static/font/55808-56063.pbf +3 -0
  344. package/static/font/56064-56319.pbf +3 -0
  345. package/static/font/5632-5887.pbf +3 -0
  346. package/static/font/56320-56575.pbf +3 -0
  347. package/static/font/56576-56831.pbf +3 -0
  348. package/static/font/56832-57087.pbf +3 -0
  349. package/static/font/57088-57343.pbf +3 -0
  350. package/static/font/57344-57599.pbf +3 -0
  351. package/static/font/57600-57855.pbf +3 -0
  352. package/static/font/57856-58111.pbf +3 -0
  353. package/static/font/58112-58367.pbf +3 -0
  354. package/static/font/58368-58623.pbf +3 -0
  355. package/static/font/58624-58879.pbf +3 -0
  356. package/static/font/5888-6143.pbf +0 -0
  357. package/static/font/58880-59135.pbf +3 -0
  358. package/static/font/59136-59391.pbf +3 -0
  359. package/static/font/59392-59647.pbf +3 -0
  360. package/static/font/59648-59903.pbf +3 -0
  361. package/static/font/59904-60159.pbf +3 -0
  362. package/static/font/60160-60415.pbf +3 -0
  363. package/static/font/60416-60671.pbf +3 -0
  364. package/static/font/60672-60927.pbf +3 -0
  365. package/static/font/60928-61183.pbf +3 -0
  366. package/static/font/61184-61439.pbf +3 -0
  367. package/static/font/6144-6399.pbf +0 -0
  368. package/static/font/61440-61695.pbf +3 -0
  369. package/static/font/61696-61951.pbf +3 -0
  370. package/static/font/61952-62207.pbf +3 -0
  371. package/static/font/62208-62463.pbf +3 -0
  372. package/static/font/62464-62719.pbf +3 -0
  373. package/static/font/62720-62975.pbf +3 -0
  374. package/static/font/62976-63231.pbf +3 -0
  375. package/static/font/63232-63487.pbf +3 -0
  376. package/static/font/63488-63743.pbf +3 -0
  377. package/static/font/63744-63999.pbf +0 -0
  378. package/static/font/6400-6655.pbf +0 -0
  379. package/static/font/64000-64255.pbf +0 -0
  380. package/static/font/64256-64511.pbf +0 -0
  381. package/static/font/64512-64767.pbf +0 -0
  382. package/static/font/64768-65023.pbf +0 -0
  383. package/static/font/65024-65279.pbf +0 -0
  384. package/static/font/65280-65535.pbf +0 -0
  385. package/static/font/6656-6911.pbf +3 -0
  386. package/static/font/6912-7167.pbf +0 -0
  387. package/static/font/7168-7423.pbf +0 -0
  388. package/static/font/7424-7679.pbf +0 -0
  389. package/static/font/768-1023.pbf +0 -0
  390. package/static/font/7680-7935.pbf +0 -0
  391. package/static/font/7936-8191.pbf +0 -0
  392. package/static/font/8192-8447.pbf +0 -0
  393. package/static/font/8448-8703.pbf +0 -0
  394. package/static/font/8704-8959.pbf +0 -0
  395. package/static/font/8960-9215.pbf +0 -0
  396. package/static/font/9216-9471.pbf +0 -0
  397. package/static/font/9472-9727.pbf +0 -0
  398. package/static/font/9728-9983.pbf +0 -0
  399. package/static/font/9984-10239.pbf +0 -0
  400. package/static/index.html +59 -0
  401. package/static/logo.png +0 -0
  402. package/static/logo.svg +78 -0
  403. package/static/mapbox-gl-rtl-text@0.2.3.js +9851 -0
  404. package/static/minimal.js +9 -0
  405. package/static/minimal.json +7 -0
  406. package/static/sprites/maki.json +1706 -0
  407. package/static/sprites/maki.license +116 -0
  408. package/static/sprites/maki.png +0 -0
  409. package/static/sprites/maki@2x.json +1706 -0
  410. package/static/sprites/maki@2x.png +0 -0
  411. package/static/sprites/temaki.json +4306 -0
  412. package/static/sprites/temaki.license +118 -0
  413. package/static/sprites/temaki.png +0 -0
  414. package/static/sprites/temaki@2x.json +4306 -0
  415. package/static/sprites/temaki@2x.png +0 -0
package/lib/style.js ADDED
@@ -0,0 +1,222 @@
1
+ import { validateStyleMin, v8 } from "@maplibre/maplibre-gl-style-spec";
2
+ import FallbackGlyphProtocol from "./glyphFallback.js";
3
+
4
+ const paintKeys = new Set(
5
+ Object.entries(v8)
6
+ .filter(([k]) => k.startsWith("paint_"))
7
+ .map(([, v]) => Object.keys(v))
8
+ .reduce((a, c) => [...a, ...c], []),
9
+ );
10
+ const layoutKeys = new Set(
11
+ Object.entries(v8)
12
+ .filter(([k]) => k.startsWith("layout_"))
13
+ .map(([, v]) => Object.keys(v))
14
+ .reduce((a, c) => [...a, ...c], []),
15
+ );
16
+
17
+ export function setBaseStyle(style, baseStyle, overwrite = false) {
18
+ if (!baseStyle) {
19
+ return style;
20
+ }
21
+ if (typeof style === "string") {
22
+ return overwrite ? baseStyle : style;
23
+ } else if (overwrite) {
24
+ return {
25
+ ...style,
26
+ extends: baseStyle,
27
+ };
28
+ } else {
29
+ return {
30
+ extends: baseStyle,
31
+ ...style,
32
+ };
33
+ }
34
+ }
35
+
36
+ export async function getStyle(style, source) {
37
+ if (typeof style === "string") {
38
+ // Style is just a string, fetch it, parse it, and add ultra source & layers if defined
39
+ const resp = await fetch(style);
40
+ const styleJSON = await resp.json();
41
+ return ensureSourceAndLayers(styleJSON, source);
42
+ } else if (style && !style.version) {
43
+ // extended style! Merge layers & sources
44
+ let parentStyle;
45
+ if (typeof style.extends === "string") {
46
+ const resp = await fetch(style.extends);
47
+ parentStyle = await resp.json();
48
+ } else {
49
+ parentStyle = style.extends;
50
+ }
51
+ const layers = [...parentStyle.layers];
52
+ for (const i in style.layers) {
53
+ const { beforeLayerId, ...layer } = style.layers[i];
54
+ // If the layer defines the ID, see if it belongs to an existing layer
55
+ const curLayerIdx = layers.findIndex(({ id }) => id === layer.id);
56
+ let layerIdx = -1;
57
+ let newLayer = movePaintAndLayoutKeys(ensureLayerProps({ ...layer }, i));
58
+ // If the layer exists, merge with defined layer, remove from layers, and default to
59
+ // reinserting it at the same index
60
+ if (curLayerIdx >= 0) {
61
+ newLayer = {
62
+ ...layers[curLayerIdx],
63
+ ...movePaintAndLayoutKeys({ ...layer }),
64
+ };
65
+ layerIdx = curLayerIdx;
66
+ layers.splice(curLayerIdx, 1);
67
+ }
68
+ // find insertion point if beforeLayerId is specified.
69
+ // If insertion point is not found, layer is appended instead.
70
+ // an intetional side-effect of this is that you can specify an non-existing layer to move an
71
+ // existing layer from a style to the top
72
+ if (beforeLayerId) {
73
+ layerIdx = layers.findIndex(({ id }) => id === beforeLayerId);
74
+ }
75
+ if (newLayer.source === "ultra" && !source) {
76
+ continue;
77
+ }
78
+ if (layerIdx >= 0) {
79
+ layers.splice(layerIdx, 0, newLayer);
80
+ } else {
81
+ layers.push(newLayer);
82
+ }
83
+ }
84
+ if (!parentStyle.sprite) {
85
+ parentStyle.sprite = [];
86
+ } else if (typeof parentStyle.sprite === "string") {
87
+ parentStyle.sprite = [{ id: "default", url: parentStyle.sprite }];
88
+ }
89
+ if (!style.sprite) {
90
+ style.sprite = [];
91
+ } else if (typeof style.sprite === "string") {
92
+ style.sprite = [{ id: "default", url: style.sprite }];
93
+ }
94
+ const extendedStyle = {
95
+ ...parentStyle,
96
+ ...style,
97
+ sources: { ...parentStyle.sources, ...(style.sources || {}) },
98
+ sprite: [...parentStyle.sprite, ...style.sprite],
99
+ layers,
100
+ };
101
+ return ensureSourceAndLayers(extendedStyle, source);
102
+ } else {
103
+ // "complete" style, process layers & add ultra source & layers if defined
104
+ return ensureSourceAndLayers(
105
+ {
106
+ ...style,
107
+ layers: style.layers
108
+ ?.map(ensureLayerProps)
109
+ .filter((l) => l.source !== "ultra" || source)
110
+ .map(movePaintAndLayoutKeys),
111
+ },
112
+ source,
113
+ );
114
+ }
115
+ }
116
+
117
+ function movePaintAndLayoutKeys(layer) {
118
+ for (const [key, value] of Object.entries(layer)) {
119
+ if (paintKeys.has(key)) {
120
+ if (!layer.paint) {
121
+ layer.paint = {};
122
+ }
123
+ layer.paint[key] = value;
124
+ delete layer[key];
125
+ }
126
+ if (layoutKeys.has(key)) {
127
+ if (!layer.layout) {
128
+ layer.layout = {};
129
+ }
130
+ layer.layout[key] = value;
131
+ delete layer[key];
132
+ }
133
+ }
134
+ return layer;
135
+ }
136
+
137
+ // ensureLayerProps generates a layer ID if one is not set and sets the source to `ultra` if
138
+ // not set
139
+ function ensureLayerProps(layer, i) {
140
+ if (!layer.id) {
141
+ layer.id = `ultra-${i}`;
142
+ }
143
+ if (!layer.source && layer.type !== "background") {
144
+ layer.source = "ultra";
145
+ }
146
+ return layer;
147
+ }
148
+
149
+ export function ensureSourceAndLayers(style, source) {
150
+ style.glyphs = FallbackGlyphProtocol.makeURL(style.glyphs);
151
+ if (!style.sources) {
152
+ style.sources = {};
153
+ }
154
+ if (!style.sprite) {
155
+ style.sprite = [];
156
+ } else if (typeof style.sprite === "string") {
157
+ style.sprite = [{ id: "default", url: style.sprite }];
158
+ }
159
+ const spritesheets = style.sprite.map(({ id }) => id);
160
+ if (!spritesheets.includes("maki")) {
161
+ style.sprite.push({
162
+ id: "maki",
163
+ url: window.location.origin + "/sprites/maki",
164
+ });
165
+ }
166
+ if (!spritesheets.includes("temaki")) {
167
+ style.sprite.push({
168
+ id: "temaki",
169
+ url: window.location.origin + "/sprites/temaki",
170
+ });
171
+ }
172
+ if (source && !style.sources.ultra) {
173
+ let foundAttribution = false;
174
+ for (const sourceName in style.sources) {
175
+ if (
176
+ style.sources[sourceName].attribution
177
+ ?.toLowerCase()
178
+ .includes("openstreetmap") ||
179
+ style.sources[sourceName].url?.startsWith("https://tile.ourmap.us")
180
+ ) {
181
+ foundAttribution = true;
182
+ }
183
+ }
184
+ style.sources.ultra = source.source;
185
+ if (foundAttribution) {
186
+ style.sources.ultra.attribution = "";
187
+ }
188
+ }
189
+ if (!style.layers) {
190
+ style.layers = [];
191
+ }
192
+ let hasUltraLayer = false;
193
+ for (const layer of style.layers) {
194
+ if (layer.source === "ultra") {
195
+ hasUltraLayer = true;
196
+ break;
197
+ }
198
+ }
199
+ if (source && source.layers && !hasUltraLayer) {
200
+ for (const layer of source.layers) {
201
+ style.layers.push(layer);
202
+ }
203
+ }
204
+ const errors = validateStyleMin(style, v8);
205
+ if (errors.length) {
206
+ throw new Error(
207
+ "Invalid style:\n\n" + errors.map(({ message }) => message).join("\n"),
208
+ );
209
+ }
210
+ return style;
211
+ }
212
+
213
+ export const handleStyleImageMissing = (ev) => {
214
+ if (ev.id.startsWith("https://") || ev.id.startsWith("data:")) {
215
+ ev.target.loadImage(ev.id, (error, image) => {
216
+ if (error) throw error;
217
+ if (!ev.target.hasImage(ev.id)) {
218
+ ev.target.addImage(ev.id, image);
219
+ }
220
+ });
221
+ }
222
+ };
package/mkdocs.yml ADDED
@@ -0,0 +1,26 @@
1
+ site_name: Overpass Ultra
2
+ site_url: https://overpass-ultra.us/docs/
3
+ repo_url: https://gitlab.com/trailstash/overpass-ultra/
4
+ copyright: '<a href="https://creativecommons.org/publicdomain/zero/1.0/deed.en">CC0 1.0 Universal</a>'
5
+ edit_uri: ''
6
+ site_dir: static/docs
7
+ theme:
8
+ name: material
9
+ custom_dir: docs/overrides
10
+ logo: assets/logo.svg
11
+ favicon: assets/logo.svg
12
+ features:
13
+ - content.code.copy
14
+ hide:
15
+ - footer
16
+ extra:
17
+ social:
18
+ - icon: fontawesome/brands/mastodon
19
+ link: https://mapstodon.space/@trailstash
20
+ - icon: fontawesome/brands/gitlab
21
+ link: https://gitlab.com/trailstash
22
+ - icon: fontawesome/brands/instagram
23
+ link: https://instagram.com/trailstashmaps
24
+ extra:
25
+ analytics:
26
+ provider: custom
package/package.json ADDED
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "@trailstash/ultra",
3
+ "publishConfig": {
4
+ "access": "public"
5
+ },
6
+ "version": "3.0.0-dev",
7
+ "description": "A web based tool for making MapLibre GL maps with data from souces such as Overpass, GeoJSON, GPX, KML, TCX, etc",
8
+ "main": "index.js",
9
+ "scripts": {
10
+ "build": "node ./bin/run.js build",
11
+ "build:icons": "bash ./build-icons.sh",
12
+ "build:examples-docs": "node ./build-examples-docs.js Examples",
13
+ "build:examples-images": "node ./build-examples-images.js",
14
+ "build:maplibre-examples-docs": "node ./build-examples-docs.js MapLibre-Examples",
15
+ "build:docs": "mkdocs build",
16
+ "start:docs": "mkdocs serve",
17
+ "build:pages": "mkdir -p public && cp -Lr static/* public/.",
18
+ "start": "node ./bin/run.js serve",
19
+ "format": "prettier --print-width=80 --write '**/*.js' '**/*.json' README.md static/index.html '**/*.css'",
20
+ "test": "echo \"Error: no test specified\" && exit 1"
21
+ },
22
+ "type": "module",
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://gitlab.com/trailstash/overpass-ultra.git"
26
+ },
27
+ "keywords": [
28
+ "maps",
29
+ "cartography",
30
+ "osm",
31
+ "overpass",
32
+ "mapbox-gl",
33
+ "mapbox-gl-js"
34
+ ],
35
+ "author": "Daniel Schep",
36
+ "bugs": {
37
+ "url": "https://gitlab.com/trailstash/overpass-ultra/issues"
38
+ },
39
+ "homepage": "https://overpass-ultra.us/",
40
+ "devDependencies": {
41
+ "@types/node": "^18.19.44",
42
+ "@unvt/sprite-one": "^0.1.1",
43
+ "esbuild": "^0.19.2",
44
+ "prettier": "^3.1.1",
45
+ "puppeteer": "^22.13.1",
46
+ "svg2png": "^4.1.1",
47
+ "ts-node": "^10.9.2"
48
+ },
49
+ "license": "ISC",
50
+ "dependencies": {
51
+ "@fortawesome/fontawesome-svg-core": "^6.5.1",
52
+ "@fortawesome/free-solid-svg-icons": "^6.5.1",
53
+ "@oclif/core": "^4.0.17",
54
+ "@tmcw/togeojson": "^5.8.1",
55
+ "@trailstash/maplibre-component": "^1.0.0",
56
+ "@turf/bbox": "^7.0.0",
57
+ "deep-equal": "^2.2.3",
58
+ "liquidjs": "^10.10.0",
59
+ "lodash.pick": "^4.4.0",
60
+ "lz-string": "^1.5.0",
61
+ "maplibre-gl": "^4.5.1",
62
+ "marked": "^13.0.2",
63
+ "normalize.css": "^8.0.1",
64
+ "osmtogeojson": "^3.0.0-beta.5",
65
+ "pmtiles": "^3.0.5",
66
+ "yaml": "^2.3.4"
67
+ },
68
+ "peerDependencies": {
69
+ "@maplibre/maplibre-gl-style-spec": "20.x"
70
+ },
71
+ "bin": {
72
+ "ultra": "./bin/run.js"
73
+ },
74
+ "oclif": {
75
+ "bin": "ultra",
76
+ "commands": "./cli",
77
+ "dirname": "ultra",
78
+ "topicSeparator": " "
79
+ }
80
+ }
package/screenshot.png ADDED
Binary file
@@ -0,0 +1,18 @@
1
+ const el = document.createElement("iframe");
2
+ el.setAttribute("style", document.currentScript.getAttribute("style"));
3
+ document.currentScript.style.display = "none";
4
+ const params = new URLSearchParams();
5
+ params.set("query", document.currentScript.text.trim());
6
+ el.src = new URL(
7
+ `/#map&${params.toString()}`,
8
+ document.currentScript.src,
9
+ ).toString();
10
+
11
+ if (document.currentScript.nextSibling) {
12
+ document.currentScript.parentElement.insertBefore(
13
+ el,
14
+ document.currentScript.nextSibling,
15
+ );
16
+ } else {
17
+ document.currentScript.parentElement.appendChild(el);
18
+ }
Binary file
Binary file
@@ -0,0 +1,3 @@
1
+
2
+ �
3
+ �Noto Sans Regular, Noto Naskh Arabic Regular, Noto Sans Armenian Regular, Noto Sans Balinese Regular, Noto Sans Bengali Regular, Noto Sans CJK TC Regular, Noto Sans Devanagari Regular, Noto Sans Ethiopic Regular, Noto Sans Georgian Regular, Noto Sans Gujarati Regular, Noto Sans Gurmukhi Regular, Noto Sans Hebrew Regular, Noto Sans Javanese Regular, Noto Sans Kannada Regular, Noto Sans Khmer Regular, Noto Sans Lao Regular, Noto Sans Mongolian Regular, Noto Sans Myanmar Regular, Noto Sans Oriya Regular, Noto Sans Sinhala Regular, Noto Sans Tamil Regular, Noto Sans Thai Regular, Noto Sans Tibetan Regular 10240-10495
Binary file
@@ -0,0 +1,3 @@
1
+
2
+ �
3
+ �Noto Sans Regular, Noto Naskh Arabic Regular, Noto Sans Armenian Regular, Noto Sans Balinese Regular, Noto Sans Bengali Regular, Noto Sans CJK TC Regular, Noto Sans Devanagari Regular, Noto Sans Ethiopic Regular, Noto Sans Georgian Regular, Noto Sans Gujarati Regular, Noto Sans Gurmukhi Regular, Noto Sans Hebrew Regular, Noto Sans Javanese Regular, Noto Sans Kannada Regular, Noto Sans Khmer Regular, Noto Sans Lao Regular, Noto Sans Mongolian Regular, Noto Sans Myanmar Regular, Noto Sans Oriya Regular, Noto Sans Sinhala Regular, Noto Sans Tamil Regular, Noto Sans Thai Regular, Noto Sans Tibetan Regular 10752-11007
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file