@expofp/floorplan 3.10.0 → 3.10.2

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 (135) hide show
  1. package/dist/browser/{Button-CbNlJYq-.js → Button-Bj5GinNb.js} +6 -6
  2. package/dist/browser/{CookieConsent-BVLqsKtm.js → CookieConsent-vekYv-WL.js} +7 -7
  3. package/dist/browser/{Debug-DniNgMUO.js → Debug-B8Z6UAk7.js} +7 -7
  4. package/dist/browser/{Demo-BXOuVfdG.js → Demo-DxKBQPXs.js} +10 -10
  5. package/dist/browser/{Free-DbDrs1SH.js → Free-xJ581Tn5.js} +10 -10
  6. package/dist/browser/{Gallery-CK2yO-rS.js → Gallery-BCLvsYMq.js} +10 -10
  7. package/dist/browser/{GpsLoader-B5WB_xlb.js → GpsLoader-D8b4YGWa.js} +25 -25
  8. package/dist/browser/{KioskStore-CzIrPa11.js → KioskStore-iac7BFkc.js} +28 -28
  9. package/dist/browser/{MaplibreAdapter-CSa9XGJa.js → MaplibreAdapter-hBzzKWxy.js} +2597 -2462
  10. package/dist/browser/{ModalContainer-CduduGaw.js → ModalContainer-CNFkEgVO.js} +11 -11
  11. package/dist/browser/{PermissionNotice-B62dyKda.js → PermissionNotice-BjNUzq-I.js} +7 -7
  12. package/dist/browser/{SetKioskMode-DvbL360U.js → SetKioskMode-rZPgTzX2.js} +11 -11
  13. package/dist/browser/{ShowKiosk-CK47Q2V7.js → ShowKiosk-C0-HDdLS.js} +11 -11
  14. package/dist/browser/{TouchHand-BHu7qEu9.js → TouchHand-BpAIvJuD.js} +4 -4
  15. package/dist/browser/{ViewerMenuPanel-TTUNLqUt.js → ViewerMenuPanel-B8HWceZY.js} +10 -10
  16. package/dist/browser/{add-debug-secret-listener-DN1tIBbN.js → add-debug-secret-listener-DrG0zrQz.js} +1 -1
  17. package/dist/browser/{boolean-editor-CcJuEdkU.js → boolean-editor-CksHtQqy.js} +45 -45
  18. package/dist/browser/{bootIntercom-DyEAiiah.js → bootIntercom-DIY2vGKD.js} +2 -2
  19. package/dist/browser/booth-by-xy-CB4TcAKe.js +1067 -0
  20. package/dist/browser/{browser-Ctb0x-hW.js → browser-BJI7T84p.js} +2 -2
  21. package/dist/browser/bundle.json +62 -62
  22. package/dist/browser/{classnames-CeriETl9.js → classnames-DY5QZHM2.js} +2 -2
  23. package/dist/browser/{client-hS_SUT9J.js → client-BKj8O-3N.js} +10 -10
  24. package/dist/browser/{components-CcIkwnTn.js → components-C9T4gWSC.js} +1674 -1674
  25. package/dist/browser/{debug-overlay-DBRVNju-.js → debug-overlay-oxl07sGQ.js} +355 -355
  26. package/dist/browser/{debug-ui-Vy_hMYMs.js → debug-ui-vcgITEra.js} +6 -6
  27. package/dist/browser/{dist-CyHdGr2I.js → dist-B6a_6LWa.js} +64 -63
  28. package/dist/browser/{dist-Bimiy1i5.js → dist-BD71uIJa.js} +5 -5
  29. package/dist/browser/{dist-D3O88lUU.js → dist-DQ-MzacE.js} +3 -3
  30. package/dist/browser/{efp-debug-init-C0HXaTIA.js → efp-debug-init-DeppnUIb.js} +2 -2
  31. package/dist/browser/{enum-editor-DkQTyshB.js → enum-editor-CeBF-egH.js} +478 -478
  32. package/dist/browser/{es5-BI29YLB7.js → es5-DyEOE9h8.js} +2 -2
  33. package/dist/browser/{event-not-found-C45GofSi.js → event-not-found--rNrnsfb.js} +1 -1
  34. package/dist/browser/{exports-B2fVUjK8.js → exports-CQRMT27z.js} +449 -443
  35. package/dist/browser/{favicon-CZB9txqZ.js → favicon-Y_DfJIgc.js} +1 -1
  36. package/dist/browser/{fetch-retry.umd-C_1YSqZv.js → fetch-retry.umd-mDEk7YNi.js} +2 -2
  37. package/dist/browser/{flex-C4nAB--c.js → flex-gMXInosq.js} +7 -7
  38. package/dist/browser/{floorplan.loader-D9ci7TWk.js → floorplan.loader-CKHHfoqW.js} +1284 -1282
  39. package/dist/browser/{floorplan.ready-Cou1AYpA.js → floorplan.ready-Dk5rTB4-.js} +291 -291
  40. package/dist/browser/{fuse-DLH3KYAO.js → fuse-C0XgkQam.js} +4 -4
  41. package/dist/browser/{i18n-C0K3C5Jv.js → i18n-DDp2WKLS.js} +19 -20
  42. package/dist/browser/index.js +12 -12
  43. package/dist/browser/{index.module-BMETmKP4.js → index.module-DJ1o-lSs.js} +4 -4
  44. package/dist/browser/{is-webview-CxvtAxIZ.js → is-webview-DSeLj16c.js} +1 -1
  45. package/dist/browser/{jsx-runtime-B9nB58Uq.js → jsx-runtime-4SB5tKoZ.js} +2 -2
  46. package/dist/browser/{lib-CcxG8Udi.js → lib-CNsibyKE.js} +4 -4
  47. package/dist/browser/{loadImage-B-fxupzg.js → loadImage-m5qxmKm8.js} +4 -4
  48. package/dist/browser/{logDeviceInfo-kZTVPeyv.js → logDeviceInfo-DJbQFFfl.js} +9 -9
  49. package/dist/browser/{main-B_62LzEM.js → main-Ci70zd7U.js} +1 -1
  50. package/dist/browser/{mobx-CUQ-tbco.js → mobx-85FEI3nE.js} +4 -4
  51. package/dist/browser/{particles.min-Csuxu9yr.js → particles.min-Cjclve40.js} +2 -2
  52. package/dist/browser/{prop-types-B7Gun2Sn.js → prop-types-O5uO9swn.js} +2 -2
  53. package/dist/browser/{react-ZKXuYPAa.js → react-938H1sny.js} +2 -2
  54. package/dist/browser/{react-dom-D82ielqJ.js → react-dom-BB5-5CwA.js} +3 -3
  55. package/dist/browser/{reset-all-settings-BwbmLw6_.js → reset-all-settings-C3UGYA7h.js} +7 -7
  56. package/dist/browser/{rolldown-runtime-75nnKCA3.js → rolldown-runtime-D_bOcK0P.js} +1 -1
  57. package/dist/browser/{settings-CfbArDtc.js → settings-CuvIoKLw.js} +2 -2
  58. package/dist/browser/{settings-item-R9UibMb5.js → settings-item-jhTAtSrk.js} +15 -15
  59. package/dist/browser/{store-DANngpFy.js → store-g-LcmXc-.js} +7024 -6098
  60. package/dist/browser/{string-editor-CURRcjvv.js → string-editor-CjVQpF6U.js} +22 -22
  61. package/dist/browser/{theme-Nw3wi1eA.js → theme-DxKuEQUA.js} +927 -930
  62. package/dist/browser/{ui-CzHA_XVw.js → ui-BMAImlSF.js} +8 -8
  63. package/dist/browser/{useRenderTarget-KMx97ZHc.js → useRenderTarget-DL0u3FKy.js} +4 -4
  64. package/dist/esm/components/Map/Map.js +1 -1
  65. package/dist/esm/components/Maplibre/MaplibreAdapter.js +1 -1
  66. package/dist/esm/components/Maplibre/MaplibreWrapper.js +1 -1
  67. package/dist/esm/components/Maplibre/styles/mapbox-streets-bright.d.ts +3 -0
  68. package/dist/esm/components/Maplibre/styles/mapbox-streets-bright.js +16 -0
  69. package/dist/esm/components/Maplibre/styles/mapbox-streets.d.ts +3 -0
  70. package/dist/esm/components/Maplibre/styles/mapbox-streets.js +16 -0
  71. package/dist/esm/components/Maplibre/useCameraReactions.d.ts +4 -3
  72. package/dist/esm/components/Maplibre/useCameraReactions.js +1 -1
  73. package/dist/esm/components/Maplibre/useWayfindingAndMarkers.js +1 -1
  74. package/dist/esm/components/Maplibre/utils/geo-config.d.ts +5 -8
  75. package/dist/esm/components/Maplibre/utils/geo-config.js +1 -1
  76. package/dist/esm/components/Maplibre/utils/map-helpers.js +1 -1
  77. package/dist/esm/components/Maplibre/utils/solver.d.ts +6 -7
  78. package/dist/esm/components/Maplibre/utils/solver.js +1 -1
  79. package/dist/esm/data/svg.d.ts +2 -1
  80. package/dist/esm/data/svg.js +1 -1
  81. package/dist/esm/renderer/RendererService.d.ts +2 -1
  82. package/dist/esm/renderer/RendererService.js +1 -1
  83. package/dist/esm/store/LayerStore.d.ts +1 -0
  84. package/dist/esm/store/LayerStore.js +1 -1
  85. package/dist/esm/store/RouteStore.d.ts +1 -2
  86. package/dist/esm/store/RouteStore.js +1 -1
  87. package/dist/esm/store/UIState.js +1 -1
  88. package/dist/esm/utils/gps.js +1 -1
  89. package/dist/esm/utils/planBearing.d.ts +14 -0
  90. package/dist/esm/utils/planBearing.js +1 -0
  91. package/dist/esm/utils/scene-bounds.d.ts +57 -0
  92. package/dist/esm/utils/scene-bounds.js +1 -0
  93. package/dist/esm/wayfinding/adapters/canvasIconProvider.d.ts +1 -1
  94. package/dist/esm/wayfinding/adapters/canvasIconProvider.js +1 -1
  95. package/dist/esm/wayfinding/adapters/graphDataSource.d.ts +2 -1
  96. package/dist/esm/wayfinding/adapters/graphDataSource.js +1 -1
  97. package/dist/esm/wayfinding/adapters/index.d.ts +3 -4
  98. package/dist/esm/wayfinding/adapters/index.js +1 -1
  99. package/dist/esm/wayfinding/bindMobxReactions.d.ts +6 -0
  100. package/dist/esm/wayfinding/bindMobxReactions.js +1 -1
  101. package/dist/esm/wayfinding/core/__tests__/helpers.d.ts +4 -4
  102. package/dist/esm/wayfinding/core/createWayfindingEngine.js +1 -1
  103. package/dist/esm/wayfinding/core/graph/buildGraph.d.ts +1 -1
  104. package/dist/esm/wayfinding/core/graph/buildNGraph.d.ts +2 -2
  105. package/dist/esm/wayfinding/core/graph/findShortestPath.d.ts +2 -2
  106. package/dist/esm/wayfinding/core/graph/graphHelpers.d.ts +4 -4
  107. package/dist/esm/wayfinding/core/graph/graphHelpers.js +1 -1
  108. package/dist/esm/wayfinding/core/graph/linkCost.d.ts +2 -2
  109. package/dist/esm/wayfinding/core/index.d.ts +8 -8
  110. package/dist/esm/wayfinding/core/index.js +1 -1
  111. package/dist/esm/wayfinding/core/position/gpsThreshold.d.ts +2 -2
  112. package/dist/esm/wayfinding/core/routing/getRouteLength.d.ts +1 -1
  113. package/dist/esm/wayfinding/core/types.d.ts +19 -9
  114. package/dist/esm/wayfinding/createWayfinding.d.ts +15 -1
  115. package/dist/esm/wayfinding/createWayfinding.js +1 -1
  116. package/dist/esm/wayfinding/handlers/yahHandler.d.ts +3 -3
  117. package/dist/esm/wayfinding/handlers/yahHandler.js +1 -1
  118. package/dist/esm/wayfinding/index.d.ts +13 -0
  119. package/dist/esm/wayfinding/index.js +1 -0
  120. package/dist/esm/wayfinding/renderer/createWayfindingRenderer.js +1 -1
  121. package/dist/esm/wayfinding/renderer/iconManager.d.ts +3 -3
  122. package/dist/esm/wayfinding/renderer/routeLineManager.d.ts +5 -5
  123. package/dist/esm/wayfinding/renderer/trailManager.d.ts +2 -2
  124. package/dist/esm/wayfinding/runtime/createWayfindingRuntime.js +1 -1
  125. package/dist/esm/wayfinding/runtime/endpointView.d.ts +1 -2
  126. package/dist/esm/wayfinding/runtime/positionTrailView.d.ts +5 -6
  127. package/dist/esm/wayfinding/runtime/positionView.d.ts +2 -3
  128. package/dist/esm/wayfinding/runtime/routeUpdate.d.ts +3 -3
  129. package/dist/esm/wayfinding/runtime/trailView.d.ts +1 -2
  130. package/dist/esm/wayfinding/runtime/transitionView.d.ts +2 -3
  131. package/dist/esm/wayfinding/runtime/types.d.ts +10 -2
  132. package/package.json +8 -8
  133. package/dist/browser/createWayfinding-D3oRCnRo.js +0 -1892
  134. package/dist/esm/wayfinding/adapters/iconProvider.d.ts +0 -15
  135. package/dist/esm/wayfinding/adapters/iconProvider.js +0 -1
@@ -1,17 +1,17 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.10.0" };
4
+ e.SENTRY_RELEASE = { id: "3.10.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "43912113-9328-4069-8890-5091c8745c34", e._sentryDebugIdIdentifier = "sentry-dbid-43912113-9328-4069-8890-5091c8745c34");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-75nnKCA3.js";
10
- import { a as t, r as n } from "./reset-all-settings-BwbmLw6_.js";
11
- import { t as r } from "./jsx-runtime-B9nB58Uq.js";
12
- import "./settings-CfbArDtc.js";
13
- import { t as i } from "./browser-Ctb0x-hW.js";
14
- import { t as a } from "./add-debug-secret-listener-DN1tIBbN.js";
9
+ import { r as e } from "./rolldown-runtime-D_bOcK0P.js";
10
+ import { a as t, r as n } from "./reset-all-settings-C3UGYA7h.js";
11
+ import { t as r } from "./jsx-runtime-4SB5tKoZ.js";
12
+ import "./settings-CuvIoKLw.js";
13
+ import { t as i } from "./browser-BJI7T84p.js";
14
+ import { t as a } from "./add-debug-secret-listener-DrG0zrQz.js";
15
15
  //#region ../debug/src/lib/ui/render-debug-ui.tsx
16
16
  var o = /* @__PURE__ */ e(i(), 1), s = r(), c = !1;
17
17
  function l() {
@@ -26,7 +26,7 @@ function l() {
26
26
  }
27
27
  });
28
28
  let i = async (t) => {
29
- let { DebugUi: n } = await import("./debug-ui-Vy_hMYMs.js"), { createRoot: i } = await import("./client-hS_SUT9J.js").then((t) => /* @__PURE__ */ e(t.default, 1)), a = document.createElement("div");
29
+ let { DebugUi: n } = await import("./debug-ui-vcgITEra.js"), { createRoot: i } = await import("./client-BKj8O-3N.js").then((t) => /* @__PURE__ */ e(t.default, 1)), a = document.createElement("div");
30
30
  document.body.appendChild(a), i(a).render(/* @__PURE__ */ (0, s.jsx)(n, {
31
31
  useDebugButtonState: r.useState,
32
32
  open: t
@@ -1,14 +1,14 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.10.0" };
4
+ e.SENTRY_RELEASE = { id: "3.10.2" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "d4febe97-784c-4cf8-93f1-f2e3b29f8347", e._sentryDebugIdIdentifier = "sentry-dbid-d4febe97-784c-4cf8-93f1-f2e3b29f8347");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-75nnKCA3.js";
10
- import { t } from "./react-ZKXuYPAa.js";
11
- import { s as n } from "./store-DANngpFy.js";
9
+ import { r as e } from "./rolldown-runtime-D_bOcK0P.js";
10
+ import { t } from "./react-938H1sny.js";
11
+ import { s as n } from "./store-g-LcmXc-.js";
12
12
  //#region src/utils/getRenderTargetFromRoot.ts
13
13
  var r = /* @__PURE__ */ e(t(), 1);
14
14
  function i(e) {
@@ -1 +1 @@
1
- import{jsx as C,jsxs as N,Fragment as oe}from"react/jsx-runtime";import{Box as k}from"@expofp/geometry";import te from"classnames";import re from"color";import{observable as ne,reaction as ie}from"mobx";import{useObserver as ae}from"mobx-react-lite";import{useEffect as se,useMemo as le,useRef as S,useState as me}from"react";import{DEBUG_STORAGE_KEY as O}from"../../constants";import ce from"../../data";import{fpGeo as fe}from"../../data/fpGeo";import{svgArea as X}from"../../data/svg";import{boxToRenderer as L,createSceneDef as de,mapRollSetting as U}from"../../renderer";import{pickDefaultScene as A,pickDefaultScenePoint as ue}from"../../renderer/engine-core/defs";import a,{boothStore as pe,layersStore as h,uiState as o}from"../../store";import{BoothBase as j}from"../../store/BoothStore";import{Category as he}from"../../store/CategoryStore";import{Exhibitor as Z}from"../../store/ExhibitorStore";import{LayerMode as R}from"../../store/LayerStore";import{CurrentPosition as ve,Route as ye}from"../../store/RouteStore";import B from"../../tools/logger";import p from"../../tools/settings";import be from"../../ui/Draggable";import{areLayersEnabled as ge}from"../../utils/areLayersEnabled";import{applyVenueDimValue as we,createDimmingAnimator as Se}from"../../utils/dimming";import{convertGpsToLocal as Re}from"../../utils/gps";import y from"../../utils/is-debug";import{isPathwayLayer as $}from"../../utils/is-pathway-layer";import{useReaction as d}from"../../utils/mobx";import{createWayfinding as xe}from"../../wayfinding/createWayfinding";import K from"./booth-by-xy";import Te from"./drawing/config/config-all";import{configMarkers as Ce,getMarkerFromClick as ke}from"./drawing/config/config-markers";import{loadLayersImages as Le}from"./drawing/config/loadBoothsImages";import{useBuildRoute as Be}from"./traffic/useBuildRoute";import{useManageTraffic as Ee}from"./traffic/useManageTraffic";const V=Number.isFinite(p.maxZoom);export default function Me(){let E={};const W="#ebebeb",v=S(),b=le(()=>ne({moving:!1,prevLevel:a.layerStore.layers.find(e=>!e.frozen&&e.visible)}),[]),l=a.rendererService,x=S(Se(e=>we(l,e)));let s;const g=S(null),M=S(null);let P=null,z=null,I=!1;function _(){h.layers.forEach(e=>{e.configured=!1,e.children=[],e.loaded=!1})}const[H,q]=me(()=>typeof window<"u"&&window.localStorage?localStorage.getItem(O)!=="false":!0);d(()=>a.routeStore.currentRouteLayer,()=>{if(!l.scene||b.prevLevel===a.routeStore.currentRouteLayer)return;const e=l.scene.rootLayer.children.filter(t=>a.layerStore.floors.some(n=>t.name.includes(n.name)));let r=a.routeStore.currentRouteLayer.name;if(!e.find(t=>t.name===r))return;const i=e?.map(t=>(t.name===r&&(t.hidden=!1),t.name===b.prevLevel?.name&&(t.hidden=!0),t));b.prevLevel=a.routeStore.currentRouteLayer,l.update(...i)}),d(()=>o.centerMap,()=>{!o.centerMap||a.maplibreStore.showMaplibre||(s.controls.resetCamera({zoom:!!(o.list.type==="search"&&o.list.text)}),o.centerMap=!1)}),se(()=>{if(!v.current)return;async function e(){_(),h.layersLoaded=!1;let r={};try{if(y){const t=document.createElement("canvas").getContext("webgl2"),n=t&&t.getExtension("EXT_disjoint_timer_query_webgl2"),m=(await import("stats-gl")).default,f=new m({trackGPU:n,horizontal:!0}),u=M.current;if(!u)throw new Error("memoryInfoPanel not found.");f.dom.style.position="relative",u.style.width=`${90*(n?3:2)}px`,u.style.height="48px",u.appendChild(f.dom),r={stats:f,memoryInfoPanel:u}}}catch(i){console.error(i)}s=l.create({canvas:v.current,ui:r}),g.current=s,ie(()=>o.canvasVisibleRectPx,(i,t)=>{i&&(s.visibleRect=L(i)),t.dispose()},{fireImmediately:!0}),Te(l).then(i=>{if(I||g.current!==s)return;y&&console.log("Renderer settings",s);const t=re(p.backgroundColor==="none"?W:p.backgroundColor).string();E=de(i,X,t),l.start(E),x.current.setTarget(o.dimmed,{immediate:!0}),U(s,a.fp.enableRotation?1:0),V&&s.viewport.setMaxZoom(p.maxZoom),h.layersLoaded=!0,a.fp.onFpConfigured&&a.fp?.onFpConfigured(),P=xe(l),z=Ce(l),Le(l)}),s.events.addEventListener("pointer:move",({data:i})=>{if(o.setKioskModeEnabled)return;const{point:t,defs:n}=A(i),c=K(t.x,t.y),m=D(n[0]);o.hoveredBooth=c||m}),s.events.addEventListener("pointer:out",()=>{o.setKioskModeEnabled||(o.hoveredBooth=null)}),s.events.addEventListener("pointer:click",({data:i})=>{if(!o?.rootElement)return;window.__resett&&window.__resett(),o.overlayPosition==="bottom"&&o.overlaySize==="full"&&a.showMap();const{point:t,defs:n}=A(i),{x:c,y:m}=t;if(o.onGetCoordsClick){const w=a.layerStore.layers.find(T=>T.visible&&(T.mode===R.TurnedOn||T.mode===R.TurnedOff));o.onGetCoordsClick({x:c,y:m,z:w?.name||null})}if(o.setKioskModeEnabled)return;if(o.onMarkerClick){const w=ke(c,m,l.scale);y&&console.log("marker",w),o.onMarkerClick(w)}const f=K(t.x,t.y),u=D(n[0]);y&&console.log("boothIdFromClientXy",f,"boothByShape",u,"pointer:click point",t),a.clickBooth(f||u)}),s.events.addEventListener("navigation:change",()=>window.__resett&&window.__resett())}return e(),a.fp.getCenterCoordinates=Q,()=>J()},[]);function J(){I=!0,x.current.stop(),P?.(),z?.(),_(),h.layersLoaded=!1,l.disposeIfCurrent(g.current),g.current=null}function Q(){const e=v.current;if(!v.current)throw new Error("Canvas not ready");const r=ue(s.viewport.canvasToSvg({x:e.clientWidth/2,y:e.clientHeight/2})),t=a.layerStore.visible.find(n=>n.mode===R.TurnedOff||n.mode===R.TurnedOn)?.name||null;return{...r,z:t}}function D(e){return!e||!e.shape?null:pe.booths.find(r=>r.shapes?.find(i=>i.shape==e.shape))}d(()=>o.zoomBy,()=>{if(!o.zoomBy||a.maplibreStore.showMaplibre)return;const e=o.zoomBy;s.controls.zoomBy(e),o.zoomBy=null}),d(()=>o.dimmed,e=>{x.current.setTarget(e)}),d(()=>o.details,()=>{if(!o.onDetails)return;if(!o.details){o.onDetails(null);return}var e=o.details;if(p.EXPO==="wineparis"&&(e instanceof Z&&(e=e.booths[0]),!e))return;let r=null,i=[];e instanceof Z?(r="exhibitor",i=e.booths.map(n=>n.name).sort((n,c)=>n==a.routeStore.tempToBooth?.name?-1:c==a.routeStore.tempToBooth?.name?1:0)):e instanceof j?(r="booth",i=[e.name]):e instanceof ye?(r="route",i=[e.from?.name,e.to?.name].filter(n=>!!n)):e instanceof he&&(r="category",i=e.exhibitors.map(n=>n.booths.map(c=>c.name)).flat());var t={type:r,name:e?.name,id:e?.id,externalId:e?.externalId,boothsNames:i};o.onDetails({...t,...r==="route"?{routeInfo:a.routeStore.routeInfo}:{}})}),d(()=>o.canvasVisibleRectPx,e=>{l.renderer&&(l.renderer.visibleRect=L(e))},{fireImmediately:!0}),d(()=>o.moveToRect,()=>{!o.moveToRect||a.maplibreStore.showMaplibre||(o.moveToRect&&o.moveToRect.size.height!==1/0&&o.moveToRect.size.width!==1/0&&o.moveToRect.size.height>0&&o.moveToRect.size.width>0&&G(o.moveToRect),o.moveToRect=null)}),d(()=>o.rollReset,e=>{e&&(s.controls.resetCamera({roll:!0}),o.rollReset=!1)}),d(()=>o.moveToBooths,()=>{if(B.log("this.moveToBooths",o.moveToBooths),!o.moveToBooths||a.maplibreStore.showMaplibre)return;B.log("watched moveToBooths",o.moveToBooths);const e=o.moveToBooths.filter(r=>r.rect).map(r=>r.rect);e.length!==0&&(G(k.fromUnion(...e)),o.moveToBooths=null)}),d(()=>o.mapSettings,({zoomtime:e,center:r,centerxy:i,bearing:t,roll:n,z:c})=>{if(!(a.maplibreStore.showMaplibre||!l.renderer))try{e&&e!==o.defaultMapSettings.zoomtime&&l.renderer.controls.configure({zoomTime:e/1e3}),a.fp.enableRotation&&U(s,n);let m;if(r){const f=r.split(",").map(Number),u=new ve(void 0,void 0,void 0,void 0,f[0],f[1]);m=Re(u,fe.properties.config)}else if(i){const f=i.split(",").map(Number);m={x:f[0],y:f[1]}}c&&a.fp.activateFloor({name:c}),(m?.x||m?.y)&&l.renderer.controls.panTo(m.x,m.y),Number.isFinite(t)&&l.renderer.controls.rollTo(t)}catch(m){B.error("Error in mapSettings reaction",m)}}),Be({enabled:h.layersLoaded&&o.buildRoute,rendererService:l});const F="routes-api.expofp.com",Y=ce.flags?.busRoutes??!1;Ee({permission:h.layersLoaded&&Y,rendererService:l,dataJsonUrl:`https://${F}/v1/routes?expo=${p.EXPO}`,websocketUrl:`wss://${F}/locations?expo=${p.EXPO}`}),d(()=>a.layerStore.visible,e=>{if(!l.scene)return;const r=e.filter(n=>$(n.name)),t=l.scene.rootLayer.children.filter(n=>$(n.name));t.forEach(n=>{n.hidden=!r.find(c=>c.name===n.name)}),l.update(...t)});function G(e){let r=e;const i=ee(e,X),t=o.selectedRoute?.from,n=t instanceof j?t.layer?.name:t?.layer;o.kioskData&&(!ge()||n===a.routeStore.currentRouteLayer?.name)&&(r=k.fromUnion(e,new k(o.kioskData.x,o.kioskData.y,1,1)));const c=L(r),m={paddingPercent:i,maxZoom:V?void 0:10};if(o.shouldShiftMapRect){s.visibleRect.min={...s.visibleRect.min,x:s.visibleRect.min.x+o.overlayWidthPx},s.visibleRect=s.visibleRect;try{s.controls.zoomTo(c,m)}finally{s.visibleRect.min={...s.visibleRect.min,x:s.visibleRect.min.x-o.overlayWidthPx}}}else s.controls.zoomTo(c,m)}function ee(e,r){return!e||!r?0:(e.area/r.area>.1?15:25)/100}return ae(()=>N(oe,{children:[C("canvas",{style:{width:"100%",height:"100%"},ref:v,className:te({map:!0,moving:b.moving,hidden:a.maplibreStore.showMaplibre}),children:"ExpoFP.com"}),y&&H&&N(be,{className:"debug-fps",children:[C("div",{ref:M}),C("button",{onClick:()=>{typeof window<"u"&&window.localStorage&&localStorage.setItem(O,"false"),q(!1)},style:{padding:"4px 8px",fontSize:"11px",cursor:"pointer",backgroundColor:"#333",color:"#fff",border:"1px solid #555",width:"100%"},children:"Hide debug"})]})]}))}
1
+ import{jsx as C,jsxs as N,Fragment as oe}from"react/jsx-runtime";import{Box as k}from"@expofp/geometry";import te from"classnames";import re from"color";import{observable as ne,reaction as ie}from"mobx";import{useObserver as ae}from"mobx-react-lite";import{useEffect as se,useMemo as le,useRef as S,useState as me}from"react";import{DEBUG_STORAGE_KEY as O}from"../../constants";import ce from"../../data";import{fpGeo as fe}from"../../data/fpGeo";import{svgArea as X}from"../../data/svg";import{boxToRenderer as L,createSceneDef as de,mapRollSetting as U}from"../../renderer";import{pickDefaultScene as A,pickDefaultScenePoint as ue}from"../../renderer/engine-core/defs";import a,{boothStore as pe,layersStore as h,uiState as o}from"../../store";import{BoothBase as j}from"../../store/BoothStore";import{Category as he}from"../../store/CategoryStore";import{Exhibitor as Z}from"../../store/ExhibitorStore";import{LayerMode as R}from"../../store/LayerStore";import{CurrentPosition as ve,Route as ye}from"../../store/RouteStore";import B from"../../tools/logger";import p from"../../tools/settings";import be from"../../ui/Draggable";import{areLayersEnabled as ge}from"../../utils/areLayersEnabled";import{applyVenueDimValue as we,createDimmingAnimator as Se}from"../../utils/dimming";import{convertGpsToLocal as Re}from"../../utils/gps";import y from"../../utils/is-debug";import{isPathwayLayer as $}from"../../utils/is-pathway-layer";import{useReaction as d}from"../../utils/mobx";import{createWayfinding as xe}from"../../wayfinding";import K from"./booth-by-xy";import Te from"./drawing/config/config-all";import{configMarkers as Ce,getMarkerFromClick as ke}from"./drawing/config/config-markers";import{loadLayersImages as Le}from"./drawing/config/loadBoothsImages";import{useBuildRoute as Be}from"./traffic/useBuildRoute";import{useManageTraffic as Ee}from"./traffic/useManageTraffic";const V=Number.isFinite(p.maxZoom);export default function Me(){let E={};const W="#ebebeb",v=S(),b=le(()=>ne({moving:!1,prevLevel:a.layerStore.layers.find(e=>!e.frozen&&e.visible)}),[]),l=a.rendererService,x=S(Se(e=>we(l,e)));let s;const g=S(null),M=S(null);let P=null,z=null,I=!1;function _(){h.layers.forEach(e=>{e.configured=!1,e.children=[],e.loaded=!1})}const[H,q]=me(()=>typeof window<"u"&&window.localStorage?localStorage.getItem(O)!=="false":!0);d(()=>a.routeStore.currentRouteLayer,()=>{if(!l.scene||b.prevLevel===a.routeStore.currentRouteLayer)return;const e=l.scene.rootLayer.children.filter(t=>a.layerStore.floors.some(n=>t.name.includes(n.name)));let r=a.routeStore.currentRouteLayer.name;if(!e.find(t=>t.name===r))return;const i=e?.map(t=>(t.name===r&&(t.hidden=!1),t.name===b.prevLevel?.name&&(t.hidden=!0),t));b.prevLevel=a.routeStore.currentRouteLayer,l.update(...i)}),d(()=>o.centerMap,()=>{!o.centerMap||a.maplibreStore.showMaplibre||(s.controls.resetCamera({zoom:!!(o.list.type==="search"&&o.list.text)}),o.centerMap=!1)}),se(()=>{if(!v.current)return;async function e(){_(),h.layersLoaded=!1;let r={};try{if(y){const t=document.createElement("canvas").getContext("webgl2"),n=t&&t.getExtension("EXT_disjoint_timer_query_webgl2"),m=(await import("stats-gl")).default,f=new m({trackGPU:n,horizontal:!0}),u=M.current;if(!u)throw new Error("memoryInfoPanel not found.");f.dom.style.position="relative",u.style.width=`${90*(n?3:2)}px`,u.style.height="48px",u.appendChild(f.dom),r={stats:f,memoryInfoPanel:u}}}catch(i){console.error(i)}s=l.create({canvas:v.current,ui:r}),g.current=s,ie(()=>o.canvasVisibleRectPx,(i,t)=>{i&&(s.visibleRect=L(i)),t.dispose()},{fireImmediately:!0}),Te(l).then(i=>{if(I||g.current!==s)return;y&&console.log("Renderer settings",s);const t=re(p.backgroundColor==="none"?W:p.backgroundColor).string();E=de(i,X,t),l.start(E),x.current.setTarget(o.dimmed,{immediate:!0}),U(s,a.fp.enableRotation?1:0),V&&s.viewport.setMaxZoom(p.maxZoom),h.layersLoaded=!0,a.fp.onFpConfigured&&a.fp?.onFpConfigured(),P=xe(l,a),z=Ce(l),Le(l)}),s.events.addEventListener("pointer:move",({data:i})=>{if(o.setKioskModeEnabled)return;const{point:t,defs:n}=A(i),c=K(t.x,t.y),m=D(n[0]);o.hoveredBooth=c||m}),s.events.addEventListener("pointer:out",()=>{o.setKioskModeEnabled||(o.hoveredBooth=null)}),s.events.addEventListener("pointer:click",({data:i})=>{if(!o?.rootElement)return;window.__resett&&window.__resett(),o.overlayPosition==="bottom"&&o.overlaySize==="full"&&a.showMap();const{point:t,defs:n}=A(i),{x:c,y:m}=t;if(o.onGetCoordsClick){const w=a.layerStore.layers.find(T=>T.visible&&(T.mode===R.TurnedOn||T.mode===R.TurnedOff));o.onGetCoordsClick({x:c,y:m,z:w?.name||null})}if(o.setKioskModeEnabled)return;if(o.onMarkerClick){const w=ke(c,m,l.scale);y&&console.log("marker",w),o.onMarkerClick(w)}const f=K(t.x,t.y),u=D(n[0]);y&&console.log("boothIdFromClientXy",f,"boothByShape",u,"pointer:click point",t),a.clickBooth(f||u)}),s.events.addEventListener("navigation:change",()=>window.__resett&&window.__resett())}return e(),a.fp.getCenterCoordinates=Q,()=>J()},[]);function J(){I=!0,x.current.stop(),P?.(),z?.(),_(),h.layersLoaded=!1,l.disposeIfCurrent(g.current),g.current=null}function Q(){const e=v.current;if(!v.current)throw new Error("Canvas not ready");const r=ue(s.viewport.canvasToSvg({x:e.clientWidth/2,y:e.clientHeight/2})),t=a.layerStore.visible.find(n=>n.mode===R.TurnedOff||n.mode===R.TurnedOn)?.name||null;return{...r,z:t}}function D(e){return!e||!e.shape?null:pe.booths.find(r=>r.shapes?.find(i=>i.shape==e.shape))}d(()=>o.zoomBy,()=>{if(!o.zoomBy||a.maplibreStore.showMaplibre)return;const e=o.zoomBy;s.controls.zoomBy(e),o.zoomBy=null}),d(()=>o.dimmed,e=>{x.current.setTarget(e)}),d(()=>o.details,()=>{if(!o.onDetails)return;if(!o.details){o.onDetails(null);return}var e=o.details;if(p.EXPO==="wineparis"&&(e instanceof Z&&(e=e.booths[0]),!e))return;let r=null,i=[];e instanceof Z?(r="exhibitor",i=e.booths.map(n=>n.name).sort((n,c)=>n==a.routeStore.tempToBooth?.name?-1:c==a.routeStore.tempToBooth?.name?1:0)):e instanceof j?(r="booth",i=[e.name]):e instanceof ye?(r="route",i=[e.from?.name,e.to?.name].filter(n=>!!n)):e instanceof he&&(r="category",i=e.exhibitors.map(n=>n.booths.map(c=>c.name)).flat());var t={type:r,name:e?.name,id:e?.id,externalId:e?.externalId,boothsNames:i};o.onDetails({...t,...r==="route"?{routeInfo:a.routeStore.routeInfo}:{}})}),d(()=>o.canvasVisibleRectPx,e=>{l.renderer&&(l.renderer.visibleRect=L(e))},{fireImmediately:!0}),d(()=>o.moveToRect,()=>{!o.moveToRect||a.maplibreStore.showMaplibre||(o.moveToRect&&o.moveToRect.size.height!==1/0&&o.moveToRect.size.width!==1/0&&o.moveToRect.size.height>0&&o.moveToRect.size.width>0&&G(o.moveToRect),o.moveToRect=null)}),d(()=>o.rollReset,e=>{e&&(s.controls.resetCamera({roll:!0}),o.rollReset=!1)}),d(()=>o.moveToBooths,()=>{if(B.log("this.moveToBooths",o.moveToBooths),!o.moveToBooths||a.maplibreStore.showMaplibre)return;B.log("watched moveToBooths",o.moveToBooths);const e=o.moveToBooths.filter(r=>r.rect).map(r=>r.rect);e.length!==0&&(G(k.fromUnion(...e)),o.moveToBooths=null)}),d(()=>o.mapSettings,({zoomtime:e,center:r,centerxy:i,bearing:t,roll:n,z:c})=>{if(!(a.maplibreStore.showMaplibre||!l.renderer))try{e&&e!==o.defaultMapSettings.zoomtime&&l.renderer.controls.configure({zoomTime:e/1e3}),a.fp.enableRotation&&U(s,n);let m;if(r){const f=r.split(",").map(Number),u=new ve(void 0,void 0,void 0,void 0,f[0],f[1]);m=Re(u,fe.properties.config)}else if(i){const f=i.split(",").map(Number);m={x:f[0],y:f[1]}}c&&a.fp.activateFloor({name:c}),(m?.x||m?.y)&&l.renderer.controls.panTo(m.x,m.y),Number.isFinite(t)&&l.renderer.controls.rollTo(t)}catch(m){B.error("Error in mapSettings reaction",m)}}),Be({enabled:h.layersLoaded&&o.buildRoute,rendererService:l});const F="routes-api.expofp.com",Y=ce.flags?.busRoutes??!1;Ee({permission:h.layersLoaded&&Y,rendererService:l,dataJsonUrl:`https://${F}/v1/routes?expo=${p.EXPO}`,websocketUrl:`wss://${F}/locations?expo=${p.EXPO}`}),d(()=>a.layerStore.visible,e=>{if(!l.scene)return;const r=e.filter(n=>$(n.name)),t=l.scene.rootLayer.children.filter(n=>$(n.name));t.forEach(n=>{n.hidden=!r.find(c=>c.name===n.name)}),l.update(...t)});function G(e){let r=e;const i=ee(e,X),t=o.selectedRoute?.from,n=t instanceof j?t.layer?.name:t?.layer;o.kioskData&&(!ge()||n===a.routeStore.currentRouteLayer?.name)&&(r=k.fromUnion(e,new k(o.kioskData.x,o.kioskData.y,1,1)));const c=L(r),m={paddingPercent:i,maxZoom:V?void 0:10};if(o.shouldShiftMapRect){s.visibleRect.min={...s.visibleRect.min,x:s.visibleRect.min.x+o.overlayWidthPx},s.visibleRect=s.visibleRect;try{s.controls.zoomTo(c,m)}finally{s.visibleRect.min={...s.visibleRect.min,x:s.visibleRect.min.x-o.overlayWidthPx}}}else s.controls.zoomTo(c,m)}function ee(e,r){return!e||!r?0:(e.area/r.area>.1?15:25)/100}return ae(()=>N(oe,{children:[C("canvas",{style:{width:"100%",height:"100%"},ref:v,className:te({map:!0,moving:b.moving,hidden:a.maplibreStore.showMaplibre}),children:"ExpoFP.com"}),y&&H&&N(be,{className:"debug-fps",children:[C("div",{ref:M}),C("button",{onClick:()=>{typeof window<"u"&&window.localStorage&&localStorage.setItem(O,"false"),q(!1)},style:{padding:"4px 8px",fontSize:"11px",cursor:"pointer",backgroundColor:"#333",color:"#fff",border:"1px solid #555",width:"100%"},children:"Hide debug"})]})]}))}
@@ -1 +1 @@
1
- import{jsx as J}from"react/jsx-runtime";import{degToRad as E}from"@expofp/geometry";import W from"color";import{runInAction as X}from"mobx";import{observer as H}from"mobx-react-lite";import{useCallback as P,useEffect as _,useMemo as d,useRef as p,useState as k}from"react";import K from"../../data";import{getLayerSvg as Z,svgArea as x}from"../../data/svg";import{createSceneDef as Q}from"../../renderer";import a,{uiState as g}from"../../store";import M from"../../tools/settings";import Y from"../Map/drawing/config/config-all";import{loadLayersImages as q}from"../Map/drawing/config/loadBoothsImages";import{useBuildRoute as ee}from"../Map/traffic/useBuildRoute";import{useManageTraffic as re}from"../Map/traffic/useManageTraffic";import oe from"./MaplibreWrapper";import{useCameraReactions as te}from"./useCameraReactions";import{useDimming as ne}from"./useDimming";import{useLayerVisibilitySync as ae}from"./useLayerVisibilitySync";import{useRendererEvents as ie}from"./useRendererEvents";import{useWayfindingAndMarkers as se}from"./useWayfindingAndMarkers";import{deriveGeoConfig as le,deriveVenueMapBounds as ce,getLocalRectGeoBounds as ue,getVisibleRectFitPadding as fe,INITIAL_FIT_ZOOM_ADJUSTMENT as me}from"./utils/geo-config";import{applyMapOptions as I,DEFAULT_MAP_OPTIONS as de,getTileSource as pe,MAP_2D_OPTIONS as ge}from"./utils/map-helpers";import{calculateTransformMatrix as ye}from"./utils/solver";const $="routes-api.expofp.com";function B(){X(()=>{a.layerStore.layers.forEach(i=>{i.configured=!1,i.children=[],i.loaded=!1}),a.layerStore.layersLoaded=!1})}function F(i,y){const s=[];for(const c of i.rollRegistry.invoke(y))Array.isArray(c)?s.push(...c):s.push(c);s.length&&i.update(...s)}const Re=H(function({viewMode:y}){const[s,c]=k(null),[T,h]=k(null),e=a.rendererService,D=p(null),l=p(null),R=p(null),L=p(null),r=d(()=>le(),[]),u=d(()=>r?{center:r.center,bearing:r.bearing,zoom:r.zoom,bounds:ue(x,r.gpsConfig),fitPadding:fe(0),zoomAdjustment:me}:null,[r]),v=d(()=>r?ye(r.gpsConfig,Z()?.getAttribute("units")):null,[r]),f=d(()=>({...y==="map2d"?ge:de,maxBounds:r?ce(r.gpsConfig):void 0}),[r,y]),O=p(f),j=d(()=>pe(),[]),{mapDimAnimatorRef:b,venueDimAnimatorRef:S,handleMapDimLayerReady:z}=ne(l,e);_(()=>{if(!r)return;let n=!1;B();const o=Y(e).then(t=>{if(n)return;const A=W(M.backgroundColor==="none"?"#ebebeb":M.backgroundColor).string(),V=Q(t,x,A);c(V)}).catch(t=>{n||console.warn("Maplibre scene configuration failed.",t)}),C=b.current,m=S.current;return()=>{n=!0,B();const t=D.current;o.finally(()=>e.disposeIfCurrent(t)),R.current?.(),R.current=null,D.current=null,l.current=null,L.current=null,h(null),C?.stop(),m?.stop(),g.sceneDefReady=!1}},[r,b,e,S]);const N=P((n,o,C,m)=>{D.current=n,l.current=o,L.current=m,h(n),e.attach(n,C,m),I(o,O.current),b.current?.setTarget(g.dimmed,{immediate:!0}),S.current?.setTarget(g.dimmed,{immediate:!0}),R.current?.();const t=()=>F(e,E(o.getBearing()));o.on("rotate",t),o.on("rotateend",t),R.current=()=>{o.off("rotate",t),o.off("rotateend",t)},q(e);const A=e.ptScaleRegistry.invoke(e.scale||1);A.length&&e.update(...A),F(e,E(o.getBearing())),a.layerStore.layersLoaded=!0,a.fp.onFpConfigured&&a.fp.onFpConfigured(),g.sceneDefReady=!0,m()},[e,b,S]);_(()=>{O.current=f,I(l.current,f,!0)},[f]),ie(T,e),se(T,e),ae(e,l,r),te(l,r),ee({enabled:a.layerStore.layersLoaded&&g.buildRoute,rendererService:e});const U=K.flags?.busRoutes??!1;re({permission:a.layerStore.layersLoaded&&U,rendererService:e,dataJsonUrl:`https://${$}/v1/routes?expo=${M.EXPO}`,websocketUrl:`wss://${$}/locations?expo=${M.EXPO}`});const w=P(n=>{console.warn("Maplibre map failed to load; falling back to floorplan mode.",n),a.maplibreStore.deactivateMaplibre()},[]);if(!r||!u||!v||!s)return null;const G=`${u.center.join(",")}:${u.bearing}:${u.zoom}`;return J(oe,{sceneDef:s,geoConfig:u,staticTransform:v,tileSource:j,mapOptions:f,onRendererReady:N,onMapDimLayerReady:z,onMapLoadError:w},G)});export default Re;
1
+ import{jsx as J}from"react/jsx-runtime";import{degToRad as _}from"@expofp/geometry";import W from"color";import{runInAction as H}from"mobx";import{observer as K}from"mobx-react-lite";import{useCallback as k,useEffect as I,useMemo as u,useRef as y,useState as F}from"react";import Z from"../../data";import{getLayerSvg as Q,svgArea as L,svgAreaExplicit as Y}from"../../data/svg";import{createSceneDef as q}from"../../renderer";import a,{uiState as R}from"../../store";import D from"../../tools/settings";import{resolveVenueFitRect as ee}from"../../utils/scene-bounds";import re from"../Map/drawing/config/config-all";import{loadLayersImages as oe}from"../Map/drawing/config/loadBoothsImages";import{useBuildRoute as te}from"../Map/traffic/useBuildRoute";import{useManageTraffic as ne}from"../Map/traffic/useManageTraffic";import ae from"./MaplibreWrapper";import{useCameraReactions as ie}from"./useCameraReactions";import{useDimming as se}from"./useDimming";import{useLayerVisibilitySync as le}from"./useLayerVisibilitySync";import{useRendererEvents as ce}from"./useRendererEvents";import{useWayfindingAndMarkers as ue}from"./useWayfindingAndMarkers";import{deriveGeoConfig as fe,getLocalRectGeoBounds as me,getVisibleRectFitPadding as pe,INITIAL_FIT_ZOOM_ADJUSTMENT as de}from"./utils/geo-config";import{applyMapOptions as $,DEFAULT_MAP_OPTIONS as ge,getTileSource as ye,MAP_2D_OPTIONS as Re}from"./utils/map-helpers";import{calculateTransformMatrix as be}from"./utils/solver";const w="routes-api.expofp.com";function j(){H(()=>{a.layerStore.layers.forEach(t=>{t.configured=!1,t.children=[],t.loaded=!1}),a.layerStore.layersLoaded=!1})}function z(t,l){const o=[];for(const f of t.rollRegistry.invoke(l))Array.isArray(f)?o.push(...f):o.push(f);o.length&&t.update(...o)}function Se(t){const l=Math.abs(t[0]??0),o=Math.hypot(t[0]??0,t[1]??0);return l<=0||o<=0?1:l/o}const Ae=K(function({viewMode:l}){const[o,f]=F(null),[T,O]=F(null),e=a.rendererService,h=y(null),c=y(null),b=y(null),x=y(null),r=u(()=>fe(),[]),E=u(()=>{const{rect:n}=ee({layerViewbox:a.layerStore.viewboxRectangle,explicitArea:Y?L:null,layerRectangle:a.layerStore.rectangle,sceneDef:o,svgArea:L});return n},[o]),m=u(()=>r?{center:r.center,bearing:r.bearing,zoom:r.zoom,bounds:me(E,r.gpsConfig),fitPadding:pe(0),zoomAdjustment:de}:null,[r,E]),p=u(()=>r?be(r.gpsConfig,Q()?.getAttribute("units")):null,[r]),d=u(()=>({...l==="map2d"?Re:ge}),[l]),P=y(d),B=u(()=>ye(),[]),{mapDimAnimatorRef:S,venueDimAnimatorRef:A,handleMapDimLayerReady:N}=se(c,e);I(()=>{if(!r)return;let n=!1;j();const i=re(e).then(s=>{if(n)return;const M=W(D.backgroundColor==="none"?"#ebebeb":D.backgroundColor).string(),C=q(s,L,M);f(C)}).catch(s=>{n||console.warn("Maplibre scene configuration failed.",s)}),v=S.current,g=A.current;return()=>{n=!0,j();const s=h.current;i.finally(()=>e.disposeIfCurrent(s)),b.current?.(),b.current=null,h.current=null,c.current=null,x.current=null,O(null),v?.stop(),g?.stop(),R.sceneDefReady=!1}},[r,S,e,A]);const U=k((n,i,v,g)=>{h.current=n,c.current=i,x.current=g,O(n),e.attach(n,v,g,p?Se(p):1),$(i,P.current),S.current?.setTarget(R.dimmed,{immediate:!0}),A.current?.setTarget(R.dimmed,{immediate:!0}),b.current?.();const s=()=>{const C=i.getBearing()-(r?.bearing??0);z(e,_(C))};i.on("rotate",s),i.on("rotateend",s),b.current=()=>{i.off("rotate",s),i.off("rotateend",s)},oe(e);const M=e.ptScaleRegistry.invoke(e.scale||1);M.length&&e.update(...M),z(e,_(i.getBearing()-(r?.bearing??0))),a.layerStore.layersLoaded=!0,a.fp.onFpConfigured&&a.fp.onFpConfigured(),R.sceneDefReady=!0,g()},[e,S,p,A]);I(()=>{P.current=d,$(c.current,d,!0)},[d]),ce(T,e),ue(T,e),le(e,c,r),ie(c,r,o),te({enabled:a.layerStore.layersLoaded&&R.buildRoute,rendererService:e});const V=Z.flags?.busRoutes??!1;ne({permission:a.layerStore.layersLoaded&&V,rendererService:e,dataJsonUrl:`https://${w}/v1/routes?expo=${D.EXPO}`,websocketUrl:`wss://${w}/locations?expo=${D.EXPO}`});const G=k(n=>{console.warn("Maplibre map failed to load; falling back to floorplan mode.",n),a.maplibreStore.deactivateMaplibre()},[]);if(!r||!m||!p||!o)return null;const X=`${m.center.join(",")}:${m.bearing}:${m.zoom}`;return J(ae,{sceneDef:o,geoConfig:m,staticTransform:p,tileSource:B,mapOptions:d,onRendererReady:U,onMapDimLayerReady:N,onMapLoadError:G},X)});export default Ae;
@@ -1 +1 @@
1
- import{jsx as T}from"react/jsx-runtime";import"maplibre-gl/dist/maplibre-gl.css";import{Renderer as Z}from"@expofp/renderer";import{addProtocol as B,Map as N}from"maplibre-gl";import{Protocol as G}from"pmtiles";import{useEffect as R,useRef as s}from"react";export const MAP_DIM_LAYER_ID="expofp-map-dim";const y="expofp-map-dim-source",U="3d-expofp";let g=null;const Y=["coalesce",["get","name:en"],["get","name_en"],["get","name:latin"],["get","name"]],k={type:"Feature",geometry:{type:"Polygon",coordinates:[[[-180,-85],[180,-85],[180,85],[-180,85],[-180,-85]]]},properties:{}};function S(e){if(!e||typeof e!="object")return!1;const r=e.length;if(typeof r!="number"||r<16)return!1;const o=e[0];return typeof o=="number"&&Number.isFinite(o)}function H(e){if(S(e))return Array.from(e);const o=e?.defaultProjectionData?.mainMatrix;return S(o)?Array.from(o):(console.warn("Maplibre custom layer received an unsupported projection matrix payload.",e),null)}function b(e){return typeof e=="string"?e.includes("name"):Array.isArray(e)?e.some(r=>b(r)):!e||typeof e!="object"?!1:Object.values(e).some(r=>b(r))}function J(e){return e.type!=="symbol"||!e.id||!e.layout?!1:b(e.layout["text-field"])}function V(e){const r=e.getStyle();for(const o of r.layers??[])J(o)&&e.setLayoutProperty(o.id,"text-field",Y)}function W(){if(!g){g=new G;try{B("pmtiles",g.tile)}catch(e){console.warn("Maplibre PMTiles protocol registration failed.",e)}}}export default function X({sceneDef:e,geoConfig:r,staticTransform:o,tileSource:D,mapOptions:E,onRendererReady:x,onMapDimLayerReady:L,onMapLoadError:M}){const f=s(null),P=s(null),c=s(null),h=s(x),_=s(L),j=s(M),O=s({sceneDef:e,geoConfig:r,staticTransform:o,tileSource:D,mapOptions:E});return R(()=>{h.current=x,_.current=L,j.current=M}),R(()=>{if(!f.current)return;const{sceneDef:d,geoConfig:n,staticTransform:I,tileSource:w,mapOptions:u}=O.current;let p=!1;const l={...d};l.rootLayer={...d.rootLayer};const C=d.rootLayer.children;l.rootLayer.children=C.filter(i=>i?.name?.toString().toLowerCase()!=="areamap"),l.background=void 0,l.staticTransform=I,W();const F=n.bounds?{bounds:n.bounds,fitBoundsOptions:{padding:n.fitPadding,bearing:n.bearing}}:{center:n.center,zoom:n.zoom},t=new N({container:f.current,style:w.style,...F,bearing:n.bearing,pitch:u?.pitch??30,maxPitch:u?.maxPitch??70,minZoom:u?.minZoom,maxZoom:u?.maxZoom,maxBounds:u?.maxBounds,canvasContextAttributes:{antialias:!0}});n.zoomAdjustment&&t.jumpTo({zoom:t.getZoom()+n.zoomAdjustment}),P.current=t,t.once("error",i=>{t.isStyleLoaded()||j.current?.(i?.error??i)});const z={id:U,type:"custom",renderingMode:"3d",onAdd(i,m){if(p)return;const a=new Z({canvas:t.getCanvas(),gl:m});if(p){a.dispose();return}a.init(l),c.current=a,h.current?.(a,t,l,()=>t.triggerRepaint())},render(i,m){if(!c.current||c.current.isDisposed)return;const a=H(m??i);a&&c.current.render(a)}},A=()=>{V(t),t.getSource(y)||t.addSource(y,{type:"geojson",data:k}),t.getLayer(MAP_DIM_LAYER_ID)||t.addLayer({id:MAP_DIM_LAYER_ID,type:"fill",source:y,paint:{"fill-color":"#000000","fill-opacity":0,"fill-opacity-transition":{duration:0,delay:0}}}),_.current?.(t),t.addLayer(z)};return t.on("style.load",A),()=>{p=!0,t.off("style.load",A),c.current?.dispose(),c.current=null,t.remove(),P.current=null}},[]),T("div",{ref:f,style:{position:"absolute",top:0,left:0,width:"100%",height:"100%"}})}
1
+ import{jsx as Z}from"react/jsx-runtime";import"maplibre-gl/dist/maplibre-gl.css";import{Renderer as B}from"@expofp/renderer";import{addProtocol as N,Map as U}from"maplibre-gl";import{Protocol as G}from"pmtiles";import{useEffect as R,useRef as c}from"react";export const MAP_DIM_LAYER_ID="expofp-map-dim";const y="expofp-map-dim-source",Y="3d-expofp";let g=null;const k=["coalesce",["get","name:en"],["get","name_en"],["get","name:latin"],["get","name"]],H={type:"Feature",geometry:{type:"Polygon",coordinates:[[[-180,-85],[180,-85],[180,85],[-180,85],[-180,-85]]]},properties:{}};function D(e){if(!e||typeof e!="object")return!1;const r=e.length;if(typeof r!="number"||r<16)return!1;const o=e[0];return typeof o=="number"&&Number.isFinite(o)}function J(e){if(D(e))return Array.from(e);const o=e?.defaultProjectionData?.mainMatrix;return D(o)?Array.from(o):(console.warn("Maplibre custom layer received an unsupported projection matrix payload.",e),null)}function b(e){return typeof e=="string"?e.includes("name"):Array.isArray(e)?e.some(r=>b(r)):!e||typeof e!="object"?!1:Object.values(e).some(r=>b(r))}function V(e){return e.type!=="symbol"||!e.id||!e.layout?!1:b(e.layout["text-field"])}function W(e){const r=e.getStyle();for(const o of r.layers??[])V(o)&&e.setLayoutProperty(o.id,"text-field",k)}function X(){if(!g){g=new G;try{N("pmtiles",g.tile)}catch(e){console.warn("Maplibre PMTiles protocol registration failed.",e)}}}export default function q({sceneDef:e,geoConfig:r,staticTransform:o,tileSource:E,mapOptions:I,onRendererReady:h,onMapDimLayerReady:x,onMapLoadError:M}){const d=c(null),L=c(null),l=c(null),P=c(h),_=c(x),A=c(M),w=c({sceneDef:e,geoConfig:r,staticTransform:o,tileSource:E,mapOptions:I});return R(()=>{P.current=h,_.current=x,A.current=M}),R(()=>{if(!d.current)return;const{sceneDef:m,geoConfig:n,staticTransform:O,tileSource:C,mapOptions:f}=w.current;let p=!1;const u={...m};u.rootLayer={...m.rootLayer};const F=m.rootLayer.children;u.rootLayer.children=F.filter(i=>i?.name?.toString().toLowerCase()!=="areamap"),u.background=void 0,u.staticTransform=O,X();const z=n.bounds?{bounds:n.bounds,fitBoundsOptions:{padding:n.fitPadding,bearing:n.bearing}}:{center:n.center,zoom:n.zoom},t=new U({container:d.current,style:C.style,...z,bearing:n.bearing,pitch:f?.pitch??30,maxPitch:f?.maxPitch??70,minZoom:f?.minZoom,maxZoom:f?.maxZoom,maxBounds:f?.maxBounds,bearingSnap:0,canvasContextAttributes:{antialias:!0}});n.zoomAdjustment&&t.jumpTo({zoom:t.getZoom()+n.zoomAdjustment}),L.current=t,t.once("error",i=>{t.isStyleLoaded()||A.current?.(i?.error??i)});const j=i=>{const a=i?.id;!a||t.hasImage(a)||t.addImage(a,{width:1,height:1,data:new Uint8Array(4)})};t.on("styleimagemissing",j);const T={id:Y,type:"custom",renderingMode:"3d",onAdd(i,a){if(p)return;const s=new B({canvas:t.getCanvas(),gl:a});if(p){s.dispose();return}s.init(u),l.current=s,P.current?.(s,t,u,()=>t.triggerRepaint())},render(i,a){if(!l.current||l.current.isDisposed)return;const s=J(a??i);s&&l.current.render(s)}},S=()=>{W(t),t.getSource(y)||t.addSource(y,{type:"geojson",data:H}),t.getLayer(MAP_DIM_LAYER_ID)||t.addLayer({id:MAP_DIM_LAYER_ID,type:"fill",source:y,paint:{"fill-color":"#000000","fill-opacity":0,"fill-opacity-transition":{duration:0,delay:0}}}),_.current?.(t),t.addLayer(T)};return t.on("style.load",S),()=>{p=!0,t.off("style.load",S),t.off("styleimagemissing",j),l.current?.dispose(),l.current=null,t.remove(),L.current=null}},[]),Z("div",{ref:d,style:{position:"absolute",top:0,left:0,width:"100%",height:"100%"}})}
@@ -0,0 +1,3 @@
1
+ import type { StyleSpecification } from 'maplibre-gl';
2
+ export declare const mapboxStreetsBrightStyle: StyleSpecification;
3
+ //# sourceMappingURL=mapbox-streets-bright.d.ts.map
@@ -0,0 +1,16 @@
1
+ export const mapboxStreetsBrightStyle={version:8,sources:{ne2_shaded:{maxzoom:6,tileSize:256,tiles:["https://tiles.openfreemap.org/natural_earth/ne2sr/{z}/{x}/{y}.png"],type:"raster"},openmaptiles:{type:"vector",url:"https://tiles.openfreemap.org/planet"}},sprite:"https://tiles.openfreemap.org/sprites/ofm_f384/ofm",glyphs:"https://tiles.openfreemap.org/fonts/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":["interpolate",["linear"],["zoom"],9,"hsl(20, 20%, 95%)",11,"hsl(20, 18%, 91%)"]}},{id:"landcover-glacier",type:"fill",source:"openmaptiles","source-layer":"landcover",filter:["==",["get","subclass"],"glacier"],paint:{"fill-color":"#fff","fill-opacity":["interpolate",["linear"],["zoom"],0,.9,10,.3]}},{id:"landuse-residential",type:"fill",source:"openmaptiles","source-layer":"landuse",filter:["match",["get","class"],["neighbourhood","residential"],!0,!1],paint:{"fill-color":["interpolate",["linear"],["zoom"],12,"hsla(30,19%,90%,0.4)",16,"hsla(30,19%,90%,0.2)"]}},{id:"landuse-suburb",type:"fill",source:"openmaptiles","source-layer":"landuse",maxzoom:10,filter:["==",["get","class"],"suburb"],paint:{"fill-color":["interpolate",["linear"],["zoom"],8,"hsla(30,19%,90%,0.4)",10,"hsla(30,19%,90%,0.0)"]}},{id:"landuse-commercial",type:"fill",source:"openmaptiles","source-layer":"landuse",filter:["all",["match",["geometry-type"],["MultiPolygon","Polygon"],!0,!1],["==",["get","class"],"commercial"]],paint:{"fill-color":"hsla(0,60%,87%,0.23)"}},{id:"landuse-industrial",type:"fill",source:"openmaptiles","source-layer":"landuse",filter:["all",["match",["geometry-type"],["MultiPolygon","Polygon"],!0,!1],["match",["get","class"],["dam","garages","industrial"],!0,!1]],paint:{"fill-color":"hsla(49,100%,88%,0.34)"}},{id:"landuse-cemetery",type:"fill",source:"openmaptiles","source-layer":"landuse",filter:["==",["get","class"],"cemetery"],paint:{"fill-color":"#e0e4dd"}},{id:"landuse-hospital",type:"fill",source:"openmaptiles","source-layer":"landuse",filter:["==",["get","class"],"hospital"],paint:{"fill-color":"#fde"}},{id:"landuse-school",type:"fill",source:"openmaptiles","source-layer":"landuse",filter:["==",["get","class"],"school"],paint:{"fill-color":"#f0e8f8"}},{id:"landuse-railway",type:"fill",source:"openmaptiles","source-layer":"landuse",filter:["==",["get","class"],"railway"],paint:{"fill-color":"hsla(30,19%,90%,0.4)"}},{id:"park",type:"fill",source:"openmaptiles","source-layer":"park",filter:["match",["geometry-type"],["MultiPolygon","Polygon"],!0,!1],paint:{"fill-color":"hsl(110, 52%, 84%)","fill-opacity":["interpolate",["exponential",1.8],["zoom"],9,.5,12,.2]}},{id:"landcover-wood",type:"fill",source:"openmaptiles","source-layer":"landcover",filter:["==",["get","class"],"wood"],paint:{"fill-antialias":["step",["zoom"],!1,9,!0],"fill-color":"hsla(115, 55%, 74%, 0.7)","fill-opacity":.1,"fill-outline-color":"hsla(0,0%,0%,0.03)"}},{id:"landcover-grass",type:"fill",source:"openmaptiles","source-layer":"landcover",filter:["==",["get","class"],"grass"],paint:{"fill-color":"hsl(110, 52%, 84%)","fill-opacity":1}},{id:"landcover-grass-park",type:"fill",source:"openmaptiles","source-layer":"park",filter:["==",["get","class"],"public_park"],paint:{"fill-color":"hsl(110, 52%, 84%)","fill-opacity":.8}},{id:"waterway_tunnel",type:"line",source:"openmaptiles","source-layer":"waterway",minzoom:14,filter:["all",["match",["get","class"],["canal","river","stream"],!0,!1],["==",["get","brunnel"],"tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"hsl(200, 100%, 80%)","line-dasharray":[2,4],"line-width":["interpolate",["exponential",1.3],["zoom"],13,.5,20,6]}},{id:"waterway-other",type:"line",source:"openmaptiles","source-layer":"waterway",filter:["all",["match",["get","class"],["canal","river","stream"],!1,!0],["==",["get","intermittent"],0]],layout:{"line-cap":"round"},paint:{"line-color":"hsl(200, 100%, 80%)","line-width":["interpolate",["exponential",1.3],["zoom"],13,.5,20,2]}},{id:"waterway-other-intermittent",type:"line",source:"openmaptiles","source-layer":"waterway",filter:["all",["match",["get","class"],["canal","river","stream"],!1,!0],["==",["get","intermittent"],1]],layout:{"line-cap":"round"},paint:{"line-color":"hsl(200, 100%, 80%)","line-dasharray":[4,3],"line-width":["interpolate",["exponential",1.3],["zoom"],13,.5,20,2]}},{id:"waterway-stream-canal",type:"line",source:"openmaptiles","source-layer":"waterway",filter:["all",["match",["get","class"],["canal","stream"],!0,!1],["!=",["get","brunnel"],"tunnel"],["==",["get","intermittent"],0]],layout:{"line-cap":"round"},paint:{"line-color":"hsl(200, 100%, 80%)","line-width":["interpolate",["exponential",1.3],["zoom"],13,.5,20,6]}},{id:"waterway-stream-canal-intermittent",type:"line",source:"openmaptiles","source-layer":"waterway",filter:["all",["match",["get","class"],["canal","stream"],!0,!1],["!=",["get","brunnel"],"tunnel"],["==",["get","intermittent"],1]],layout:{"line-cap":"round"},paint:{"line-color":"hsl(200, 100%, 80%)","line-dasharray":[4,3],"line-width":["interpolate",["exponential",1.3],["zoom"],13,.5,20,6]}},{id:"waterway-river",type:"line",source:"openmaptiles","source-layer":"waterway",filter:["all",["==",["get","class"],"river"],["!=",["get","brunnel"],"tunnel"],["!=",["get","intermittent"],1]],layout:{"line-cap":"round"},paint:{"line-color":"hsl(200, 100%, 80%)","line-width":["interpolate",["exponential",1.2],["zoom"],10,.8,20,6]}},{id:"waterway-river-intermittent",type:"line",source:"openmaptiles","source-layer":"waterway",filter:["all",["==",["get","class"],"river"],["!=",["get","brunnel"],"tunnel"],["==",["get","intermittent"],1]],layout:{"line-cap":"round"},paint:{"line-color":"hsl(200, 100%, 80%)","line-dasharray":[3,2.5],"line-width":["interpolate",["exponential",1.2],["zoom"],10,.8,20,6]}},{id:"water",type:"fill",source:"openmaptiles","source-layer":"water",filter:["all",["!=",["get","intermittent"],1],["!=",["get","brunnel"],"tunnel"]],paint:{"fill-color":"hsl(200, 100%, 80%)"}},{id:"water-intermittent",type:"fill",source:"openmaptiles","source-layer":"water",filter:["==",["get","intermittent"],1],paint:{"fill-color":"hsl(200, 80%, 88%)","fill-opacity":.7}},{id:"landcover-ice-shelf",type:"fill",source:"openmaptiles","source-layer":"landcover",filter:["==",["get","subclass"],"ice_shelf"],paint:{"fill-color":"#fff","fill-opacity":["interpolate",["linear"],["zoom"],0,.9,10,.3]}},{id:"landcover-sand",type:"fill",source:"openmaptiles","source-layer":"landcover",filter:["==",["get","class"],"sand"],paint:{"fill-color":"rgba(245, 238, 188, 1)","fill-opacity":1}},{id:"building",type:"fill",source:"openmaptiles","source-layer":"building",paint:{"fill-antialias":!0,"fill-color":"hsl(20, 15%, 85%)"}},{id:"building-top",type:"fill",source:"openmaptiles","source-layer":"building",paint:{"fill-color":"hsl(20, 15%, 85%)","fill-opacity":["interpolate",["linear"],["zoom"],13,0,16,1],"fill-outline-color":"#dfdbd7","fill-translate":["interpolate",["linear"],["zoom"],14,["literal",[0,0]],16,["literal",[-2,-2]]]}},{id:"tunnel-service-track-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["service","track"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-dasharray":[.5,.25],"line-width":["interpolate",["exponential",1.2],["zoom"],15,1,16,4,20,11]}},{id:"tunnel-motorway-link-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["==",["get","class"],"motorway"],["==",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-dasharray":[.5,.25],"line-width":["interpolate",["exponential",1.2],["zoom"],12,1,13,3,14,4,20,15]}},{id:"tunnel-minor-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["==",["get","class"],"minor"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-dasharray":[.5,.25],"line-opacity":["interpolate",["linear"],["zoom"],12,0,12.5,1],"line-width":["interpolate",["exponential",1.2],["zoom"],12,.5,13,1,14,4,20,15]}},{id:"tunnel-link-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["primary","secondary","tertiary","trunk"],!0,!1],["==",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-dasharray":[.5,.25],"line-opacity":1,"line-width":["interpolate",["exponential",1.2],["zoom"],12,1,13,3,14,4,20,15]}},{id:"tunnel-secondary-tertiary-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["secondary","tertiary"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-dasharray":[.5,.25],"line-opacity":1,"line-width":["interpolate",["exponential",1.2],["zoom"],8,1.5,20,17]}},{id:"tunnel-trunk-primary-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["primary","trunk"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],5,.4,6,.6,7,1.5,20,22]}},{id:"tunnel-motorway-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["==",["get","class"],"motorway"],["!=",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-dasharray":[.5,.25],"line-width":["interpolate",["exponential",1.2],["zoom"],5,.4,6,.6,7,1.5,20,22]}},{id:"tunnel-path",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","brunnel"],"tunnel"],["==",["get","class"],"path"]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":["interpolate",["exponential",1.2],["zoom"],15,1.2,20,4]}},{id:"tunnel-motorway-link",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["==",["get","class"],"motorway"],["==",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"rgba(244, 209, 158, 1)","line-width":["interpolate",["exponential",1.2],["zoom"],12.5,0,13,1.5,14,2.5,20,11.5]}},{id:"tunnel-service-track",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["service","track"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-width":["interpolate",["exponential",1.2],["zoom"],15.5,0,16,2,20,7.5]}},{id:"tunnel-link",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["primary","secondary","tertiary","trunk"],!0,!1],["==",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(45, 90%, 72%)","line-width":["interpolate",["exponential",1.2],["zoom"],12.5,0,13,1.5,14,2.5,20,11.5]}},{id:"tunnel-minor",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["==",["get","class"],"minor"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-opacity":1,"line-width":["interpolate",["exponential",1.2],["zoom"],13.5,0,14,2.5,20,11.5]}},{id:"tunnel-secondary-tertiary",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["secondary","tertiary"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"#ffffff","line-width":["interpolate",["exponential",1.2],["zoom"],6.5,0,7,.5,20,10]}},{id:"tunnel-trunk-primary",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["primary","trunk"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"#ffffff","line-width":["interpolate",["exponential",1.2],["zoom"],6.5,0,7,.5,20,18]}},{id:"tunnel-motorway",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["==",["get","class"],"motorway"],["!=",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"#ffdaa6","line-width":["interpolate",["exponential",1.2],["zoom"],6.5,0,7,.5,20,18]}},{id:"tunnel-railway",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["==",["get","class"],"rail"]],paint:{"line-color":"#bbb","line-dasharray":[2,2],"line-width":["interpolate",["exponential",1.4],["zoom"],14,.4,15,.75,20,2]}},{id:"ferry",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["match",["get","class"],["ferry"],!0,!1],layout:{"line-join":"round"},paint:{"line-color":"rgba(108, 159, 182, 1)","line-dasharray":[2,2],"line-width":1.1}},{id:"aeroway-taxiway-casing",type:"line",source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["match",["get","class"],["taxiway"],!0,!1],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-opacity":1,"line-width":["interpolate",["exponential",1.5],["zoom"],11,2,17,12]}},{id:"aeroway-runway-casing",type:"line",source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["match",["get","class"],["runway"],!0,!1],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-opacity":1,"line-width":["interpolate",["exponential",1.5],["zoom"],11,5,17,55]}},{id:"aeroway-area",type:"fill",source:"openmaptiles","source-layer":"aeroway",minzoom:4,filter:["all",["match",["geometry-type"],["MultiPolygon","Polygon"],!0,!1],["match",["get","class"],["runway","taxiway"],!0,!1]],paint:{"fill-color":"rgba(255, 255, 255, 1)","fill-opacity":["interpolate",["linear"],["zoom"],13,0,14,1]}},{id:"aeroway-taxiway",type:"line",source:"openmaptiles","source-layer":"aeroway",minzoom:4,filter:["all",["match",["get","class"],["taxiway"],!0,!1],["match",["geometry-type"],["LineString","MultiLineString"],!0,!1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"rgba(255, 255, 255, 1)","line-opacity":["interpolate",["linear"],["zoom"],11,0,12,1],"line-width":["interpolate",["exponential",1.5],["zoom"],11,1,17,10]}},{id:"aeroway-runway",type:"line",source:"openmaptiles","source-layer":"aeroway",minzoom:4,filter:["all",["match",["get","class"],["runway"],!0,!1],["match",["geometry-type"],["LineString","MultiLineString"],!0,!1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"rgba(255, 255, 255, 1)","line-opacity":["interpolate",["linear"],["zoom"],11,0,12,1],"line-width":["interpolate",["exponential",1.5],["zoom"],11,4,17,50]}},{id:"road_area_pier",type:"fill",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["MultiPolygon","Polygon"],!0,!1],["==",["get","class"],"pier"]],paint:{"fill-antialias":!0,"fill-color":"#f8f4f0"}},{id:"road_pier",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","class"],["pier"],!0,!1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#f8f4f0","line-width":["interpolate",["exponential",1.2],["zoom"],15,1,17,4]}},{id:"highway-area",type:"fill",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["MultiPolygon","Polygon"],!0,!1],["match",["get","class"],["pier"],!1,!0]],paint:{"fill-antialias":!1,"fill-color":"hsla(0,0%,89%,0.56)","fill-opacity":.9,"fill-outline-color":"#cfcdca"}},{id:"highway-motorway-link-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"motorway"],["==",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":1,"line-width":["interpolate",["exponential",1.2],["zoom"],12,1,13,3,14,4,20,15]}},{id:"highway-link-casing",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["primary","secondary","tertiary","trunk"],!0,!1],["==",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":1,"line-width":["interpolate",["exponential",1.2],["zoom"],12,1,13,3,14,4,20,15]}},{id:"highway-minor-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["!=",["get","brunnel"],"tunnel"],["match",["get","class"],["minor","service","track"],!0,!1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":["interpolate",["linear"],["zoom"],12,0,12.5,1],"line-width":["interpolate",["exponential",1.2],["zoom"],12,.5,13,1,14,4,20,15]}},{id:"highway-secondary-tertiary-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["secondary","tertiary"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-cap":"butt","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":1,"line-width":["interpolate",["exponential",1.2],["zoom"],8,1.5,20,17]}},{id:"highway-primary-casing",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["primary"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-cap":"butt","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":["interpolate",["linear"],["zoom"],7,0,8,1],"line-width":["interpolate",["exponential",1.2],["zoom"],7,0,8,.6,9,1.5,20,22]}},{id:"highway-trunk-casing",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["trunk"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-cap":"butt","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":["interpolate",["linear"],["zoom"],5,0,6,1],"line-width":["interpolate",["exponential",1.2],["zoom"],5,0,6,.6,7,1.5,20,22]}},{id:"highway-motorway-casing",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:4,filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"motorway"],["!=",["get","ramp"],1]],layout:{"line-cap":"butt","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":["interpolate",["linear"],["zoom"],4,0,5,1],"line-width":["interpolate",["exponential",1.2],["zoom"],4,0,5,.4,6,.6,7,1.5,20,22]}},{id:"highway-path",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"path"]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":["interpolate",["exponential",1.2],["zoom"],15,1.2,20,4]}},{id:"highway-motorway-link",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"motorway"],["==",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fc8","line-width":["interpolate",["exponential",1.2],["zoom"],12.5,0,13,1.5,14,2.5,20,11.5]}},{id:"highway-link",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["primary","secondary","tertiary","trunk"],!0,!1],["==",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(45, 90%, 72%)","line-width":["interpolate",["exponential",1.2],["zoom"],12.5,0,13,1.5,14,2.5,20,11.5]}},{id:"highway-minor",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["!=",["get","brunnel"],"tunnel"],["match",["get","class"],["minor","service","track"],!0,!1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fff","line-opacity":1,"line-width":["interpolate",["exponential",1.2],["zoom"],13.5,0,14,2.5,20,11.5]}},{id:"highway-secondary-tertiary",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["secondary","tertiary"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#ffffff","line-width":["interpolate",["exponential",1.2],["zoom"],6.5,0,8,.5,20,13]}},{id:"highway-primary",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["primary"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#ffffff","line-width":["interpolate",["exponential",1.2],["zoom"],8.5,0,9,.5,20,18]}},{id:"highway-trunk",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["trunk"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#ffffff","line-width":["interpolate",["exponential",1.2],["zoom"],6.5,0,7,.5,20,18]}},{id:"highway-motorway",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"motorway"],["!=",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fc8","line-width":["interpolate",["exponential",1.2],["zoom"],6.5,0,7,.5,20,18]}},{id:"railway-transit",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","class"],"transit"],["match",["get","brunnel"],["tunnel"],!1,!0]],paint:{"line-color":"hsla(0,0%,73%,0.77)","line-width":["interpolate",["exponential",1.4],["zoom"],14,.4,20,1]}},{id:"railway-transit-hatching",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","class"],"transit"],["match",["get","brunnel"],["tunnel"],!1,!0]],paint:{"line-color":"hsla(0,0%,73%,0.68)","line-dasharray":[.2,8],"line-width":["interpolate",["exponential",1.4],["zoom"],14.5,0,15,2,20,6]}},{id:"railway-service",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","class"],"rail"],["has","service"]],paint:{"line-color":"hsla(0,0%,73%,0.77)","line-width":["interpolate",["exponential",1.4],["zoom"],14,.4,20,1]}},{id:"railway-service-hatching",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","class"],"rail"],["has","service"]],paint:{"line-color":"hsla(0,0%,73%,0.68)","line-dasharray":[.2,8],"line-width":["interpolate",["exponential",1.4],["zoom"],14.5,0,15,2,20,6]}},{id:"railway",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["!",["has","service"]],["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"rail"]],paint:{"line-color":"#bbb","line-width":["interpolate",["exponential",1.4],["zoom"],14,.4,15,.75,20,2]}},{id:"railway-hatching",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["!",["has","service"]],["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"rail"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":["interpolate",["exponential",1.4],["zoom"],14.5,0,15,3,20,8]}},{id:"bridge-motorway-link-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["==",["get","class"],"motorway"],["==",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":1,"line-width":["interpolate",["exponential",1.2],["zoom"],12,1,13,3,14,4,20,19]}},{id:"bridge-link-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["primary","secondary","tertiary","trunk"],!0,!1],["==",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":1,"line-width":["interpolate",["exponential",1.2],["zoom"],12,1,13,3,14,4,20,19]}},{id:"bridge-secondary-tertiary-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["secondary","tertiary"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":1,"line-width":["interpolate",["exponential",1.2],["zoom"],5,.4,7,.6,8,1.5,20,21]}},{id:"bridge-trunk-primary-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["primary","trunk"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],5,.4,6,.6,7,1.5,20,26]}},{id:"bridge-motorway-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["==",["get","class"],"motorway"],["!=",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],5,.4,6,.6,7,1.5,20,26]}},{id:"bridge-minor-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","brunnel"],"bridge"],["match",["get","class"],["minor","service","track"],!0,!1]],layout:{"line-cap":"butt","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":["interpolate",["linear"],["zoom"],12,0,12.5,1],"line-width":["interpolate",["exponential",1.2],["zoom"],12,.5,13,1,14,6,20,24]}},{id:"bridge-path-casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","brunnel"],"bridge"],["==",["get","class"],"path"]],paint:{"line-color":"#f8f4f0","line-width":["interpolate",["exponential",1.2],["zoom"],15,1.2,20,18]}},{id:"bridge-path",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","brunnel"],"bridge"],["==",["get","class"],"path"]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":["interpolate",["exponential",1.2],["zoom"],15,1.2,20,4]}},{id:"bridge-motorway-link",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["==",["get","class"],"motorway"],["==",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":["interpolate",["exponential",1.2],["zoom"],12.5,0,13,1.5,14,2.5,20,11.5]}},{id:"bridge-link",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["primary","secondary","tertiary","trunk"],!0,!1],["==",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(45, 90%, 72%)","line-width":["interpolate",["exponential",1.2],["zoom"],12.5,0,13,1.5,14,2.5,20,11.5]}},{id:"bridge-minor",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","brunnel"],"bridge"],["match",["get","class"],["minor","service","track"],!0,!1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fff","line-opacity":1,"line-width":["interpolate",["exponential",1.2],["zoom"],13.5,0,14,2.5,20,11.5]}},{id:"bridge-secondary-tertiary",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["secondary","tertiary"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"#ffffff","line-width":["interpolate",["exponential",1.2],["zoom"],6.5,0,8,.5,20,13]}},{id:"bridge-trunk-primary",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["primary","trunk"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"#ffffff","line-width":["interpolate",["exponential",1.2],["zoom"],6.5,0,7,.5,20,18]}},{id:"bridge-motorway",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["==",["get","class"],"motorway"],["!=",["get","ramp"],1]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":["interpolate",["exponential",1.2],["zoom"],6.5,0,7,.5,20,18]}},{id:"bridge-railway",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["==",["get","class"],"rail"]],paint:{"line-color":"#bbb","line-width":["interpolate",["exponential",1.4],["zoom"],14,.4,15,.75,20,2]}},{id:"bridge-railway-hatching",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["==",["get","class"],"rail"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":["interpolate",["exponential",1.4],["zoom"],14.5,0,15,3,20,8]}},{id:"cablecar",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==",["get","subclass"],"cable_car"],layout:{"line-cap":"round"},paint:{"line-color":"hsl(0,0%,70%)","line-width":["interpolate",["linear"],["zoom"],11,1,19,2.5]}},{id:"cablecar-dash",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==",["get","subclass"],"cable_car"],layout:{"line-cap":"round"},paint:{"line-color":"hsl(0,0%,70%)","line-dasharray":[2,3],"line-width":["interpolate",["linear"],["zoom"],11,3,19,5.5]}},{id:"boundary_3",type:"line",source:"openmaptiles","source-layer":"boundary",minzoom:5,filter:["all",["all",["has","admin_level"],[">=",["get","admin_level"],3]],["all",["has","admin_level"],["<=",["get","admin_level"],6]],["!=",["get","maritime"],1],["!=",["get","disputed"],1],["!",["has","claimed_by"]]],paint:{"line-color":"hsl(240, 40%, 72%)","line-dasharray":[1,1],"line-width":["interpolate",["linear",1],["zoom"],7,1,11,2]}},{id:"boundary_2",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["==",["get","admin_level"],2],["!=",["get","maritime"],1],["!=",["get","disputed"],1],["!",["has","claimed_by"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(240, 50%, 60%)","line-opacity":["interpolate",["linear"],["zoom"],0,.4,4,1],"line-width":["interpolate",["linear"],["zoom"],3,1,5,1.2,12,3]}},{id:"boundary_disputed",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["!=",["get","maritime"],1],["==",["get","disputed"],1]],paint:{"line-color":"hsl(240, 50%, 60%)","line-dasharray":[1,2],"line-width":["interpolate",["linear"],["zoom"],3,1,5,1.2,12,3]}},{id:"road_oneway",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:15,filter:["all",["==",["get","oneway"],1],["match",["get","class"],["minor","motorway","primary","secondary","service","tertiary","trunk"],!0,!1]],layout:{"icon-image":"oneway","icon-padding":2,"icon-rotate":90,"icon-rotation-alignment":"map","icon-size":["interpolate",["linear"],["zoom"],15,.5,19,1],"symbol-placement":"line","symbol-spacing":75},paint:{"icon-opacity":.5}},{id:"road_oneway_opposite",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:15,filter:["all",["==",["get","oneway"],-1],["match",["get","class"],["minor","motorway","primary","secondary","service","tertiary","trunk"],!0,!1]],layout:{"icon-image":"oneway","icon-padding":2,"icon-rotate":-90,"icon-rotation-alignment":"map","icon-size":["interpolate",["linear"],["zoom"],15,.5,19,1],"symbol-placement":"line","symbol-spacing":75},paint:{"icon-opacity":.5}},{id:"waterway_line_label",type:"symbol",source:"openmaptiles","source-layer":"waterway",minzoom:10,filter:["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],layout:{"symbol-placement":"line","symbol-spacing":350,"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"]," ",["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-letter-spacing":.2,"text-max-width":5,"text-size":14},paint:{"text-color":"#74aee9","text-halo-color":"rgba(255,255,255,0.7)","text-halo-width":1.5}},{id:"water_name_point_label",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["match",["geometry-type"],["MultiPoint","Point"],!0,!1],layout:{"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
2
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-letter-spacing":.2,"text-max-width":5,"text-size":["interpolate",["linear"],["zoom"],0,10,8,14]},paint:{"text-color":"#495e91","text-halo-color":"rgba(255,255,255,0.7)","text-halo-width":1.5}},{id:"water_name_line_label",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],layout:{"symbol-placement":"line","symbol-spacing":350,"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"]," ",["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-letter-spacing":.2,"text-max-width":5,"text-size":14},paint:{"text-color":"#495e91","text-halo-color":"rgba(255,255,255,0.7)","text-halo-width":1.5}},{id:"poi_r20",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:17,filter:["all",["match",["geometry-type"],["MultiPoint","Point"],!0,!1],["all",["has","rank"],[">=",["get","rank"],20]]],layout:{"icon-image":["match",["get","subclass"],["florist","furniture"],["get","subclass"],["get","class"]],"text-anchor":"top","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
3
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-max-width":9,"text-offset":[0,.6],"text-size":12},paint:{"text-color":"#666","text-halo-blur":.5,"text-halo-color":"#ffffff","text-halo-width":1}},{id:"poi_r7",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:16,filter:["all",["match",["geometry-type"],["MultiPoint","Point"],!0,!1],["all",["has","rank"],[">=",["get","rank"],7]],["all",["has","rank"],["<",["get","rank"],20]]],layout:{"icon-image":["match",["get","subclass"],["florist","furniture"],["get","subclass"],["get","class"]],"text-anchor":"top","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
4
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-max-width":9,"text-offset":[0,.6],"text-size":12},paint:{"text-color":"#666","text-halo-blur":.5,"text-halo-color":"#ffffff","text-halo-width":1}},{id:"poi_r1",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:15,filter:["all",["match",["geometry-type"],["MultiPoint","Point"],!0,!1],["all",["has","rank"],[">=",["get","rank"],1]],["all",["has","rank"],["<",["get","rank"],7]]],layout:{"icon-image":["match",["get","subclass"],["florist","furniture"],["get","subclass"],["get","class"]],"text-anchor":"top","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
5
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-max-width":9,"text-offset":[0,.6],"text-size":12},paint:{"text-color":"#666","text-halo-blur":.5,"text-halo-color":"#ffffff","text-halo-width":1}},{id:"poi_transit",type:"symbol",source:"openmaptiles","source-layer":"poi",filter:["match",["get","class"],["airport","bus","rail"],!0,!1],layout:{"icon-image":["to-string",["get","class"]],"icon-size":.7,"text-anchor":"left","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
6
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-max-width":9,"text-offset":[.9,0],"text-size":12},paint:{"text-color":"#2e5a80","text-halo-blur":.5,"text-halo-color":"#ffffff","text-halo-width":1}},{id:"highway-name-path",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15.5,filter:["==",["get","class"],"path"],layout:{"symbol-placement":"line","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"]," ",["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-rotation-alignment":"map","text-size":["interpolate",["linear"],["zoom"],13,12,14,13]},paint:{"text-color":"hsl(30,23%,62%)","text-halo-color":"#f8f4f0","text-halo-width":.5}},{id:"highway-name-minor",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15,filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","class"],["minor","service","track"],!0,!1]],layout:{"symbol-placement":"line","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"]," ",["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-rotation-alignment":"map","text-size":["interpolate",["linear"],["zoom"],13,12,14,13]},paint:{"text-color":"#666","text-halo-blur":.5,"text-halo-width":1}},{id:"highway-name-major",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:12.2,filter:["match",["get","class"],["primary","secondary","tertiary","trunk"],!0,!1],layout:{"symbol-placement":"line","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"]," ",["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-rotation-alignment":"map","text-size":["interpolate",["linear"],["zoom"],13,12,14,13]},paint:{"text-color":"#666","text-halo-blur":.5,"text-halo-width":1}},{id:"highway-shield-non-us",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:8,filter:["all",["all",["has","ref_length"],["<=",["get","ref_length"],6]],["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","network"],["us-highway","us-interstate","us-state"],!1,!0]],layout:{"icon-image":["concat","road_",["get","ref_length"]],"icon-rotation-alignment":"viewport","icon-size":1,"symbol-placement":["step",["zoom"],"point",11,"line"],"symbol-spacing":200,"text-field":["to-string",["get","ref"]],"text-font":["Noto Sans Regular"],"text-rotation-alignment":"viewport","text-size":10}},{id:"highway-shield-us-interstate",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:7,filter:["all",["all",["has","ref_length"],["<=",["get","ref_length"],6]],["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","network"],["us-interstate"],!0,!1]],layout:{"icon-image":["concat",["get","network"],"_",["get","ref_length"]],"icon-rotation-alignment":"viewport","icon-size":1,"symbol-placement":["step",["zoom"],"point",7,"line",8,"line"],"symbol-spacing":200,"text-field":["to-string",["get","ref"]],"text-font":["Noto Sans Regular"],"text-rotation-alignment":"viewport","text-size":10}},{id:"road_shield_us",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:9,filter:["all",["all",["has","ref_length"],["<=",["get","ref_length"],6]],["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","network"],["us-highway","us-state"],!0,!1]],layout:{"icon-image":["concat",["get","network"],"_",["get","ref_length"]],"icon-rotation-alignment":"viewport","icon-size":1,"symbol-placement":["step",["zoom"],"point",11,"line"],"symbol-spacing":200,"text-field":["to-string",["get","ref"]],"text-font":["Noto Sans Regular"],"text-rotation-alignment":"viewport","text-size":10}},{id:"airport",type:"symbol",source:"openmaptiles","source-layer":"aerodrome_label",minzoom:10,filter:["all",["has","iata"]],layout:{"icon-image":"airport_11","icon-size":1,"text-anchor":"top","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
7
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-max-width":9,"text-offset":[0,.6],"text-optional":!0,"text-padding":2,"text-size":12},paint:{"text-color":"#666","text-halo-blur":.5,"text-halo-color":"#ffffff","text-halo-width":1}},{id:"label_other",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:8,filter:["match",["get","class"],["city","continent","country","state","town","village"],!1,!0],layout:{"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
8
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-letter-spacing":.1,"text-max-width":9,"text-size":["interpolate",["linear"],["zoom"],8,9,12,10],"text-transform":"uppercase"},paint:{"text-color":"#333","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_village",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:9,filter:["==",["get","class"],"village"],layout:{"icon-allow-overlap":!0,"icon-image":["step",["zoom"],"circle_11_black",10,""],"icon-optional":!1,"icon-size":.2,"text-anchor":"bottom","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
9
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-max-width":8,"text-size":["interpolate",["exponential",1.2],["zoom"],7,10,11,12]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_town",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:6,filter:["==",["get","class"],"town"],layout:{"icon-allow-overlap":!0,"icon-image":["step",["zoom"],"circle_11_black",10,""],"icon-optional":!1,"icon-size":.2,"text-anchor":"bottom","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
10
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-max-width":8,"text-size":["interpolate",["exponential",1.2],["zoom"],7,12,11,14]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_state",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:5,maxzoom:8,filter:["==",["get","class"],"state"],layout:{"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
11
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-letter-spacing":.2,"text-max-width":9,"text-size":["interpolate",["linear"],["zoom"],5,10,8,14],"text-transform":"uppercase"},paint:{"text-color":"#333","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_city",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:3,filter:["all",["==",["get","class"],"city"],["!=",["get","capital"],2]],layout:{"icon-allow-overlap":!0,"icon-image":["step",["zoom"],"circle_11_black",9,""],"icon-optional":!1,"icon-size":.4,"text-anchor":"bottom","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
12
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-max-width":8,"text-offset":[0,-.1],"text-size":["interpolate",["exponential",1.2],["zoom"],4,11,7,13,11,18]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_city_capital",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:3,filter:["all",["==",["get","class"],"city"],["==",["get","capital"],2]],layout:{"icon-allow-overlap":!0,"icon-image":["step",["zoom"],"circle_11_black",9,""],"icon-optional":!1,"icon-size":.5,"text-anchor":"bottom","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
13
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Bold"],"text-max-width":8,"text-offset":[0,-.2],"text-size":["interpolate",["exponential",1.2],["zoom"],4,12,7,14,11,20]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_country_3",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:2,maxzoom:9,filter:["all",["==",["get","class"],"country"],["all",["has","rank"],[">=",["get","rank"],3]]],layout:{"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
14
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Bold"],"text-max-width":6.25,"text-size":["interpolate",["linear"],["zoom"],3,9,7,17]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_country_2",type:"symbol",source:"openmaptiles","source-layer":"place",maxzoom:9,filter:["all",["==",["get","class"],"country"],["==",["get","rank"],2]],layout:{"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
15
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Bold"],"text-max-width":6.25,"text-size":["interpolate",["linear"],["zoom"],2,9,5,17]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_country_1",type:"symbol",source:"openmaptiles","source-layer":"place",maxzoom:9,filter:["all",["==",["get","class"],"country"],["==",["get","rank"],1]],layout:{"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
16
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Bold"],"text-max-width":6.25,"text-size":["interpolate",["linear"],["zoom"],1,9,4,17]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}}],name:"ExpoFP Streets Bright (Mapbox-like)",metadata:{"expofp:base":"OpenFreeMap Bright (CC0)","expofp:tuned-to":"mapbox://styles/mapbox/streets-v12 palette"}};
@@ -0,0 +1,3 @@
1
+ import type { StyleSpecification } from 'maplibre-gl';
2
+ export declare const mapboxStreetsStyle: StyleSpecification;
3
+ //# sourceMappingURL=mapbox-streets.d.ts.map
@@ -0,0 +1,16 @@
1
+ export const mapboxStreetsStyle={version:8,sources:{ne2_shaded:{maxzoom:6,tileSize:256,tiles:["https://tiles.openfreemap.org/natural_earth/ne2sr/{z}/{x}/{y}.png"],type:"raster"},openmaptiles:{type:"vector",url:"https://tiles.openfreemap.org/planet"}},sprite:"https://tiles.openfreemap.org/sprites/ofm_f384/ofm",glyphs:"https://tiles.openfreemap.org/fonts/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":["interpolate",["linear"],["zoom"],9,"hsl(20, 20%, 95%)",11,"hsl(20, 18%, 91%)"]}},{id:"natural_earth",type:"raster",source:"ne2_shaded",maxzoom:7,paint:{"raster-opacity":["interpolate",["exponential",1.5],["zoom"],0,.6,6,.1]}},{id:"park",type:"fill",source:"openmaptiles","source-layer":"park",paint:{"fill-color":"hsl(110, 52%, 84%)","fill-opacity":.7,"fill-outline-color":"rgba(95, 208, 100, 1)"}},{id:"park_outline",type:"line",source:"openmaptiles","source-layer":"park",paint:{"line-color":"rgba(228, 241, 215, 1)","line-dasharray":[1,1.5]}},{id:"landuse_residential",type:"fill",source:"openmaptiles","source-layer":"landuse",maxzoom:12,filter:["==",["get","class"],"residential"],paint:{"fill-color":["interpolate",["linear"],["zoom"],9,"hsla(0,3%,85%,0.84)",12,"hsla(35,57%,88%,0.49)"]}},{id:"landcover_wood",type:"fill",source:"openmaptiles","source-layer":"landcover",filter:["==",["get","class"],"wood"],paint:{"fill-antialias":!1,"fill-color":"hsla(115, 55%, 74%, 0.7)","fill-opacity":.4}},{id:"landcover_grass",type:"fill",source:"openmaptiles","source-layer":"landcover",filter:["==",["get","class"],"grass"],paint:{"fill-antialias":!1,"fill-color":"hsl(110, 52%, 81%)","fill-opacity":.3}},{id:"landcover_ice",type:"fill",source:"openmaptiles","source-layer":"landcover",filter:["==",["get","class"],"ice"],paint:{"fill-antialias":!1,"fill-color":"rgba(224, 236, 236, 1)","fill-opacity":.8}},{id:"landcover_wetland",type:"fill",source:"openmaptiles","source-layer":"landcover",minzoom:12,filter:["==",["get","class"],"wetland"],paint:{"fill-antialias":!0,"fill-opacity":.8,"fill-pattern":"wetland_bg_11","fill-translate-anchor":"map"}},{id:"landuse_pitch",type:"fill",source:"openmaptiles","source-layer":"landuse",filter:["==",["get","class"],"pitch"],paint:{"fill-color":"#DEE3CD"}},{id:"landuse_track",type:"fill",source:"openmaptiles","source-layer":"landuse",filter:["==",["get","class"],"track"],paint:{"fill-color":"#DEE3CD"}},{id:"landuse_cemetery",type:"fill",source:"openmaptiles","source-layer":"landuse",filter:["==",["get","class"],"cemetery"],paint:{"fill-color":"hsl(75,37%,81%)"}},{id:"landuse_hospital",type:"fill",source:"openmaptiles","source-layer":"landuse",filter:["==",["get","class"],"hospital"],paint:{"fill-color":"#fde"}},{id:"landuse_school",type:"fill",source:"openmaptiles","source-layer":"landuse",filter:["==",["get","class"],"school"],paint:{"fill-color":"rgb(236,238,204)"}},{id:"waterway_tunnel",type:"line",source:"openmaptiles","source-layer":"waterway",filter:["==",["get","brunnel"],"tunnel"],paint:{"line-color":"hsl(200, 100%, 80%)","line-dasharray":[3,3],"line-gap-width":["interpolate",["linear"],["zoom"],12,0,20,6],"line-opacity":1,"line-width":["interpolate",["exponential",1.4],["zoom"],8,1,20,2]}},{id:"waterway_river",type:"line",source:"openmaptiles","source-layer":"waterway",filter:["all",["==",["get","class"],"river"],["!=",["get","brunnel"],"tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"hsl(200, 100%, 80%)","line-width":["interpolate",["exponential",1.2],["zoom"],11,.5,20,6]}},{id:"waterway_other",type:"line",source:"openmaptiles","source-layer":"waterway",filter:["all",["!=",["get","class"],"river"],["!=",["get","brunnel"],"tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"hsl(200, 100%, 80%)","line-width":["interpolate",["exponential",1.3],["zoom"],13,.5,20,6]}},{id:"water",type:"fill",source:"openmaptiles","source-layer":"water",filter:["!=",["get","brunnel"],"tunnel"],paint:{"fill-color":"hsl(200, 100%, 80%)"}},{id:"landcover_sand",type:"fill",source:"openmaptiles","source-layer":"landcover",filter:["==",["get","class"],"sand"],paint:{"fill-color":"rgba(247, 239, 195, 1)"}},{id:"aeroway_fill",type:"fill",source:"openmaptiles","source-layer":"aeroway",minzoom:11,filter:["match",["geometry-type"],["MultiPolygon","Polygon"],!0,!1],paint:{"fill-color":"rgba(229, 228, 224, 1)","fill-opacity":.7}},{id:"aeroway_runway",type:"line",source:"openmaptiles","source-layer":"aeroway",minzoom:11,filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","class"],"runway"]],paint:{"line-color":"#f0ede9","line-width":["interpolate",["exponential",1.2],["zoom"],11,3,20,16]}},{id:"aeroway_taxiway",type:"line",source:"openmaptiles","source-layer":"aeroway",minzoom:11,filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","class"],"taxiway"]],paint:{"line-color":"#f0ede9","line-width":["interpolate",["exponential",1.2],["zoom"],11,.5,20,6]}},{id:"tunnel_motorway_link_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"motorway"],["==",["get","ramp"],1],["==",["get","brunnel"],"tunnel"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-dasharray":[.5,.25],"line-width":["interpolate",["exponential",1.2],["zoom"],12,1,13,3,14,4,20,15]}},{id:"tunnel_service_track_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["service","track"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-dasharray":[.5,.25],"line-width":["interpolate",["exponential",1.2],["zoom"],15,1,16,4,20,11]}},{id:"tunnel_link_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","ramp"],1],["==",["get","brunnel"],"tunnel"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],12,1,13,3,14,4,20,15]}},{id:"tunnel_street_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["street","street_limited"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":["interpolate",["linear"],["zoom"],12,0,12.5,1],"line-width":["interpolate",["exponential",1.2],["zoom"],12,.5,13,1,14,4,20,15]}},{id:"tunnel_secondary_tertiary_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["secondary","tertiary"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],8,1.5,20,17]}},{id:"tunnel_trunk_primary_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["primary","trunk"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],5,.4,6,.7,7,1.75,20,22]}},{id:"tunnel_motorway_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"motorway"],["!=",["get","ramp"],1],["==",["get","brunnel"],"tunnel"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-dasharray":[.5,.25],"line-width":["interpolate",["exponential",1.2],["zoom"],5,.4,6,.7,7,1.75,20,22]}},{id:"tunnel_path_pedestrian",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","brunnel"],"tunnel"],["match",["get","class"],["path","pedestrian"],!0,!1]],paint:{"line-color":"hsl(0,0%,100%)","line-dasharray":[1,.75],"line-width":["interpolate",["exponential",1.2],["zoom"],14,.5,20,10]}},{id:"tunnel_motorway_link",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"motorway"],["==",["get","ramp"],1],["==",["get","brunnel"],"tunnel"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":["interpolate",["exponential",1.2],["zoom"],12.5,0,13,1.5,14,2.5,20,11.5]}},{id:"tunnel_service_track",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["service","track"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-width":["interpolate",["exponential",1.2],["zoom"],15.5,0,16,2,20,7.5]}},{id:"tunnel_link",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","ramp"],1],["==",["get","brunnel"],"tunnel"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(45, 90%, 72%)","line-width":["interpolate",["exponential",1.2],["zoom"],12.5,0,13,1.5,14,2.5,20,11.5]}},{id:"tunnel_minor",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["minor"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-width":["interpolate",["exponential",1.2],["zoom"],13.5,0,14,2.5,20,11.5]}},{id:"tunnel_secondary_tertiary",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["secondary","tertiary"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"#ffffff","line-width":["interpolate",["exponential",1.2],["zoom"],6.5,0,7,.5,20,10]}},{id:"tunnel_trunk_primary",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["primary","trunk"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"#ffffff","line-width":["interpolate",["exponential",1.2],["zoom"],5,0,7,1,20,18]}},{id:"tunnel_motorway",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"motorway"],["!=",["get","ramp"],1],["==",["get","brunnel"],"tunnel"]],layout:{"line-join":"round"},paint:{"line-color":"#ffdaa6","line-width":["interpolate",["exponential",1.2],["zoom"],5,0,7,1,20,18]}},{id:"tunnel_major_rail",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["rail"],!0,!1]],paint:{"line-color":"#bbb","line-width":["interpolate",["exponential",1.4],["zoom"],14,.4,15,.75,20,2]}},{id:"tunnel_major_rail_hatching",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["==",["get","class"],"rail"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":["interpolate",["exponential",1.4],["zoom"],14.5,0,15,3,20,8]}},{id:"tunnel_transit_rail",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["match",["get","class"],["transit"],!0,!1]],paint:{"line-color":"#bbb","line-width":["interpolate",["exponential",1.4],["zoom"],14,.4,15,.75,20,2]}},{id:"tunnel_transit_rail_hatching",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"tunnel"],["==",["get","class"],"transit"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":["interpolate",["exponential",1.4],["zoom"],14.5,0,15,3,20,8]}},{id:"road_area_pattern",type:"fill",source:"openmaptiles","source-layer":"transportation",filter:["match",["geometry-type"],["MultiPolygon","Polygon"],!0,!1],paint:{"fill-pattern":"pedestrian_polygon"}},{id:"road_motorway_link_casing",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"motorway"],["==",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],12,1,13,3,14,4,20,15]}},{id:"road_service_track_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["service","track"],!0,!1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],15,1,16,4,20,11]}},{id:"road_link_casing",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["motorway","path","pedestrian","service","track"],!1,!0],["==",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],12,1,13,3,14,4,20,15]}},{id:"road_minor_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["minor"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":["interpolate",["linear"],["zoom"],12,0,12.5,1],"line-width":["interpolate",["exponential",1.2],["zoom"],12,.5,13,1,14,4,20,20]}},{id:"road_secondary_tertiary_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["secondary","tertiary"],!0,!1],["!=",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],8,1.5,20,17]}},{id:"road_trunk_primary_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["primary","trunk"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],5,.4,6,.7,7,1.75,20,22]}},{id:"road_motorway_casing",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"motorway"],["!=",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],5,.4,6,.7,7,1.75,20,22]}},{id:"road_path_pedestrian",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:14,filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["path","pedestrian"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(0,0%,100%)","line-dasharray":[1,.7],"line-width":["interpolate",["exponential",1.2],["zoom"],14,1,20,10]}},{id:"road_motorway_link",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"motorway"],["==",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fc8","line-width":["interpolate",["exponential",1.2],["zoom"],12.5,0,13,1.5,14,2.5,20,11.5]}},{id:"road_service_track",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["service","track"],!0,!1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fff","line-width":["interpolate",["exponential",1.2],["zoom"],15.5,0,16,2,20,7.5]}},{id:"road_link",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","ramp"],1],["match",["get","class"],["motorway","path","pedestrian","service","track"],!1,!0]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(45, 90%, 72%)","line-width":["interpolate",["exponential",1.2],["zoom"],12.5,0,13,1.5,14,2.5,20,11.5]}},{id:"road_minor",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["minor"],!0,!1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fff","line-width":["interpolate",["exponential",1.2],["zoom"],13.5,0,14,2.5,20,18]}},{id:"road_secondary_tertiary",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["secondary","tertiary"],!0,!1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#ffffff","line-width":["interpolate",["exponential",1.2],["zoom"],6.5,0,8,.5,20,13]}},{id:"road_trunk_primary",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["match",["get","class"],["primary","trunk"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"#ffffff","line-width":["interpolate",["exponential",1.2],["zoom"],5,0,7,1,20,18]}},{id:"road_motorway",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"motorway"],["!=",["get","ramp"],1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":["interpolate",["linear"],["zoom"],5,"hsl(26,87%,62%)",6,"#fc8"],"line-width":["interpolate",["exponential",1.2],["zoom"],5,0,7,1,20,18]}},{id:"road_major_rail",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"rail"]],paint:{"line-color":"#bbb","line-width":["interpolate",["exponential",1.4],["zoom"],14,.4,15,.75,20,2]}},{id:"road_major_rail_hatching",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"rail"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":["interpolate",["exponential",1.4],["zoom"],14.5,0,15,3,20,8]}},{id:"road_transit_rail",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"transit"]],paint:{"line-color":"#bbb","line-width":["interpolate",["exponential",1.4],["zoom"],14,.4,15,.75,20,2]}},{id:"road_transit_rail_hatching",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["get","brunnel"],["bridge","tunnel"],!1,!0],["==",["get","class"],"transit"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":["interpolate",["exponential",1.4],["zoom"],14.5,0,15,3,20,8]}},{id:"road_one_way_arrow",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:16,filter:["==",["get","oneway"],1],layout:{"icon-image":"arrow","symbol-placement":"line"}},{id:"road_one_way_arrow_opposite",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:16,filter:["==",["get","oneway"],-1],layout:{"icon-image":"arrow","icon-rotate":180,"symbol-placement":"line"}},{id:"bridge_motorway_link_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"motorway"],["==",["get","ramp"],1],["==",["get","brunnel"],"bridge"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],12,1,13,3,14,4,20,15]}},{id:"bridge_service_track_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["service","track"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],15,1,16,4,20,11]}},{id:"bridge_link_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"link"],["==",["get","brunnel"],"bridge"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],12,1,13,3,14,4,20,15]}},{id:"bridge_street_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["street","street_limited"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-opacity":["interpolate",["linear"],["zoom"],12,0,12.5,1],"line-width":["interpolate",["exponential",1.2],["zoom"],12,.5,13,1,14,4,20,25]}},{id:"bridge_path_pedestrian_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","brunnel"],"bridge"],["match",["get","class"],["path","pedestrian"],!0,!1]],paint:{"line-color":"hsl(220, 20%, 85%)","line-dasharray":[1,0],"line-width":["interpolate",["exponential",1.2],["zoom"],14,1.5,20,18]}},{id:"bridge_secondary_tertiary_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["secondary","tertiary"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],8,1.5,20,17]}},{id:"bridge_trunk_primary_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["primary","trunk"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],5,.4,6,.7,7,1.75,20,22]}},{id:"bridge_motorway_casing",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"motorway"],["!=",["get","ramp"],1],["==",["get","brunnel"],"bridge"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(220, 20%, 85%)","line-width":["interpolate",["exponential",1.2],["zoom"],5,.4,6,.7,7,1.75,20,22]}},{id:"bridge_path_pedestrian",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["==",["get","brunnel"],"bridge"],["match",["get","class"],["path","pedestrian"],!0,!1]],paint:{"line-color":"hsl(0,0%,100%)","line-dasharray":[1,.3],"line-width":["interpolate",["exponential",1.2],["zoom"],14,.5,20,10]}},{id:"bridge_motorway_link",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"motorway"],["==",["get","ramp"],1],["==",["get","brunnel"],"bridge"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":["interpolate",["exponential",1.2],["zoom"],12.5,0,13,1.5,14,2.5,20,11.5]}},{id:"bridge_service_track",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["service","track"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-width":["interpolate",["exponential",1.2],["zoom"],15.5,0,16,2,20,7.5]}},{id:"bridge_link",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"link"],["==",["get","brunnel"],"bridge"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(45, 90%, 72%)","line-width":["interpolate",["exponential",1.2],["zoom"],12.5,0,13,1.5,14,2.5,20,11.5]}},{id:"bridge_street",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["minor"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-width":["interpolate",["exponential",1.2],["zoom"],13.5,0,14,2.5,20,18]}},{id:"bridge_secondary_tertiary",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["secondary","tertiary"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"#ffffff","line-width":["interpolate",["exponential",1.2],["zoom"],6.5,0,7,.5,20,10]}},{id:"bridge_trunk_primary",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","brunnel"],"bridge"],["match",["get","class"],["primary","trunk"],!0,!1]],layout:{"line-join":"round"},paint:{"line-color":"#ffffff","line-width":["interpolate",["exponential",1.2],["zoom"],5,0,7,1,20,18]}},{id:"bridge_motorway",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"motorway"],["!=",["get","ramp"],1],["==",["get","brunnel"],"bridge"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":["interpolate",["exponential",1.2],["zoom"],5,0,7,1,20,18]}},{id:"bridge_major_rail",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"rail"],["==",["get","brunnel"],"bridge"]],paint:{"line-color":"#bbb","line-width":["interpolate",["exponential",1.4],["zoom"],14,.4,15,.75,20,2]}},{id:"bridge_major_rail_hatching",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"rail"],["==",["get","brunnel"],"bridge"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":["interpolate",["exponential",1.4],["zoom"],14.5,0,15,3,20,8]}},{id:"bridge_transit_rail",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"transit"],["==",["get","brunnel"],"bridge"]],paint:{"line-color":"#bbb","line-width":["interpolate",["exponential",1.4],["zoom"],14,.4,15,.75,20,2]}},{id:"bridge_transit_rail_hatching",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["==",["get","class"],"transit"],["==",["get","brunnel"],"bridge"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":["interpolate",["exponential",1.4],["zoom"],14.5,0,15,3,20,8]}},{id:"building",type:"fill",source:"openmaptiles","source-layer":"building",minzoom:13,maxzoom:14,paint:{"fill-color":"hsl(20, 15%, 85%)","fill-outline-color":["interpolate",["linear"],["zoom"],13,"hsla(35,6%,79%,0.32)",14,"hsl(35,6%,79%)"]}},{id:"building-3d",type:"fill-extrusion",source:"openmaptiles","source-layer":"building",minzoom:14,paint:{"fill-extrusion-base":["get","render_min_height"],"fill-extrusion-color":"hsl(20, 15%, 85%)","fill-extrusion-height":["get","render_height"],"fill-extrusion-opacity":.8}},{id:"boundary_3",type:"line",source:"openmaptiles","source-layer":"boundary",minzoom:5,filter:["all",["all",["has","admin_level"],[">=",["get","admin_level"],3]],["all",["has","admin_level"],["<=",["get","admin_level"],6]],["!=",["get","maritime"],1],["!=",["get","disputed"],1],["!",["has","claimed_by"]]],paint:{"line-color":"hsl(240, 40%, 72%)","line-dasharray":[1,1],"line-width":["interpolate",["linear",1],["zoom"],7,1,11,2]}},{id:"boundary_2",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["==",["get","admin_level"],2],["!=",["get","maritime"],1],["!=",["get","disputed"],1],["!",["has","claimed_by"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(240, 50%, 60%)","line-opacity":["interpolate",["linear"],["zoom"],0,.4,4,1],"line-width":["interpolate",["linear"],["zoom"],3,1,5,1.2,12,3]}},{id:"boundary_disputed",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["!=",["get","maritime"],1],["==",["get","disputed"],1]],paint:{"line-color":"hsl(240, 50%, 60%)","line-dasharray":[1,2],"line-width":["interpolate",["linear"],["zoom"],3,1,5,1.2,12,3]}},{id:"waterway_line_label",type:"symbol",source:"openmaptiles","source-layer":"waterway",minzoom:10,filter:["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],layout:{"symbol-placement":"line","symbol-spacing":350,"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"]," ",["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-letter-spacing":.2,"text-max-width":5,"text-size":14},paint:{"text-color":"#74aee9","text-halo-color":"rgba(255,255,255,0.7)","text-halo-width":1.5}},{id:"water_name_point_label",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["match",["geometry-type"],["MultiPoint","Point"],!0,!1],layout:{"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
2
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-letter-spacing":.2,"text-max-width":5,"text-size":["interpolate",["linear"],["zoom"],0,10,8,14]},paint:{"text-color":"#495e91","text-halo-color":"rgba(255,255,255,0.7)","text-halo-width":1.5}},{id:"water_name_line_label",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],layout:{"symbol-placement":"line","symbol-spacing":350,"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"]," ",["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-letter-spacing":.2,"text-max-width":5,"text-size":14},paint:{"text-color":"#495e91","text-halo-color":"rgba(255,255,255,0.7)","text-halo-width":1.5}},{id:"poi_r20",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:17,filter:["all",["match",["geometry-type"],["MultiPoint","Point"],!0,!1],["all",["has","rank"],[">=",["get","rank"],20]]],layout:{"icon-image":["match",["get","subclass"],["florist","furniture"],["get","subclass"],["get","class"]],"text-anchor":"top","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
3
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-max-width":9,"text-offset":[0,.6],"text-size":12},paint:{"text-color":"#666","text-halo-blur":.5,"text-halo-color":"#ffffff","text-halo-width":1}},{id:"poi_r7",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:16,filter:["all",["match",["geometry-type"],["MultiPoint","Point"],!0,!1],["all",["has","rank"],[">=",["get","rank"],7]],["all",["has","rank"],["<",["get","rank"],20]]],layout:{"icon-image":["match",["get","subclass"],["florist","furniture"],["get","subclass"],["get","class"]],"text-anchor":"top","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
4
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-max-width":9,"text-offset":[0,.6],"text-size":12},paint:{"text-color":"#666","text-halo-blur":.5,"text-halo-color":"#ffffff","text-halo-width":1}},{id:"poi_r1",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:15,filter:["all",["match",["geometry-type"],["MultiPoint","Point"],!0,!1],["all",["has","rank"],[">=",["get","rank"],1]],["all",["has","rank"],["<",["get","rank"],7]]],layout:{"icon-image":["match",["get","subclass"],["florist","furniture"],["get","subclass"],["get","class"]],"text-anchor":"top","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
5
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-max-width":9,"text-offset":[0,.6],"text-size":12},paint:{"text-color":"#666","text-halo-blur":.5,"text-halo-color":"#ffffff","text-halo-width":1}},{id:"poi_transit",type:"symbol",source:"openmaptiles","source-layer":"poi",filter:["match",["get","class"],["airport","bus","rail"],!0,!1],layout:{"icon-image":["to-string",["get","class"]],"icon-size":.7,"text-anchor":"left","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
6
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-max-width":9,"text-offset":[.9,0],"text-size":12},paint:{"text-color":"#2e5a80","text-halo-blur":.5,"text-halo-color":"#ffffff","text-halo-width":1}},{id:"highway-name-path",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15.5,filter:["==",["get","class"],"path"],layout:{"symbol-placement":"line","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"]," ",["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-rotation-alignment":"map","text-size":["interpolate",["linear"],["zoom"],13,12,14,13]},paint:{"text-color":"hsl(30,23%,62%)","text-halo-color":"#f8f4f0","text-halo-width":.5}},{id:"highway-name-minor",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15,filter:["all",["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","class"],["minor","service","track"],!0,!1]],layout:{"symbol-placement":"line","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"]," ",["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-rotation-alignment":"map","text-size":["interpolate",["linear"],["zoom"],13,12,14,13]},paint:{"text-color":"#666","text-halo-blur":.5,"text-halo-width":1}},{id:"highway-name-major",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:12.2,filter:["match",["get","class"],["primary","secondary","tertiary","trunk"],!0,!1],layout:{"symbol-placement":"line","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"]," ",["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-rotation-alignment":"map","text-size":["interpolate",["linear"],["zoom"],13,12,14,13]},paint:{"text-color":"#666","text-halo-blur":.5,"text-halo-width":1}},{id:"highway-shield-non-us",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:8,filter:["all",["all",["has","ref_length"],["<=",["get","ref_length"],6]],["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","network"],["us-highway","us-interstate","us-state"],!1,!0]],layout:{"icon-image":["concat","road_",["get","ref_length"]],"icon-rotation-alignment":"viewport","icon-size":1,"symbol-placement":["step",["zoom"],"point",11,"line"],"symbol-spacing":200,"text-field":["to-string",["get","ref"]],"text-font":["Noto Sans Regular"],"text-rotation-alignment":"viewport","text-size":10}},{id:"highway-shield-us-interstate",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:7,filter:["all",["all",["has","ref_length"],["<=",["get","ref_length"],6]],["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","network"],["us-interstate"],!0,!1]],layout:{"icon-image":["concat",["get","network"],"_",["get","ref_length"]],"icon-rotation-alignment":"viewport","icon-size":1,"symbol-placement":["step",["zoom"],"point",7,"line",8,"line"],"symbol-spacing":200,"text-field":["to-string",["get","ref"]],"text-font":["Noto Sans Regular"],"text-rotation-alignment":"viewport","text-size":10}},{id:"road_shield_us",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:9,filter:["all",["all",["has","ref_length"],["<=",["get","ref_length"],6]],["match",["geometry-type"],["LineString","MultiLineString"],!0,!1],["match",["get","network"],["us-highway","us-state"],!0,!1]],layout:{"icon-image":["concat",["get","network"],"_",["get","ref_length"]],"icon-rotation-alignment":"viewport","icon-size":1,"symbol-placement":["step",["zoom"],"point",11,"line"],"symbol-spacing":200,"text-field":["to-string",["get","ref"]],"text-font":["Noto Sans Regular"],"text-rotation-alignment":"viewport","text-size":10}},{id:"airport",type:"symbol",source:"openmaptiles","source-layer":"aerodrome_label",minzoom:10,filter:["all",["has","iata"]],layout:{"icon-image":"airport_11","icon-size":1,"text-anchor":"top","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
7
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-max-width":9,"text-offset":[0,.6],"text-optional":!0,"text-padding":2,"text-size":12},paint:{"text-color":"#666","text-halo-blur":.5,"text-halo-color":"#ffffff","text-halo-width":1}},{id:"label_other",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:8,filter:["match",["get","class"],["city","continent","country","state","town","village"],!1,!0],layout:{"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
8
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-letter-spacing":.1,"text-max-width":9,"text-size":["interpolate",["linear"],["zoom"],8,9,12,10],"text-transform":"uppercase"},paint:{"text-color":"#333","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_village",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:9,filter:["==",["get","class"],"village"],layout:{"icon-allow-overlap":!0,"icon-image":["step",["zoom"],"circle_11_black",10,""],"icon-optional":!1,"icon-size":.2,"text-anchor":"bottom","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
9
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-max-width":8,"text-size":["interpolate",["exponential",1.2],["zoom"],7,10,11,12]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_town",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:6,filter:["==",["get","class"],"town"],layout:{"icon-allow-overlap":!0,"icon-image":["step",["zoom"],"circle_11_black",10,""],"icon-optional":!1,"icon-size":.2,"text-anchor":"bottom","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
10
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-max-width":8,"text-size":["interpolate",["exponential",1.2],["zoom"],7,12,11,14]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_state",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:5,maxzoom:8,filter:["==",["get","class"],"state"],layout:{"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
11
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Italic"],"text-letter-spacing":.2,"text-max-width":9,"text-size":["interpolate",["linear"],["zoom"],5,10,8,14],"text-transform":"uppercase"},paint:{"text-color":"#333","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_city",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:3,filter:["all",["==",["get","class"],"city"],["!=",["get","capital"],2]],layout:{"icon-allow-overlap":!0,"icon-image":["step",["zoom"],"circle_11_black",9,""],"icon-optional":!1,"icon-size":.4,"text-anchor":"bottom","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
12
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Regular"],"text-max-width":8,"text-offset":[0,-.1],"text-size":["interpolate",["exponential",1.2],["zoom"],4,11,7,13,11,18]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_city_capital",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:3,filter:["all",["==",["get","class"],"city"],["==",["get","capital"],2]],layout:{"icon-allow-overlap":!0,"icon-image":["step",["zoom"],"circle_11_black",9,""],"icon-optional":!1,"icon-size":.5,"text-anchor":"bottom","text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
13
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Bold"],"text-max-width":8,"text-offset":[0,-.2],"text-size":["interpolate",["exponential",1.2],["zoom"],4,12,7,14,11,20]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_country_3",type:"symbol",source:"openmaptiles","source-layer":"place",minzoom:2,maxzoom:9,filter:["all",["==",["get","class"],"country"],["all",["has","rank"],[">=",["get","rank"],3]]],layout:{"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
14
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Bold"],"text-max-width":6.25,"text-size":["interpolate",["linear"],["zoom"],3,9,7,17]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_country_2",type:"symbol",source:"openmaptiles","source-layer":"place",maxzoom:9,filter:["all",["==",["get","class"],"country"],["==",["get","rank"],2]],layout:{"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
15
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Bold"],"text-max-width":6.25,"text-size":["interpolate",["linear"],["zoom"],2,9,5,17]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}},{id:"label_country_1",type:"symbol",source:"openmaptiles","source-layer":"place",maxzoom:9,filter:["all",["==",["get","class"],"country"],["==",["get","rank"],1]],layout:{"text-field":["case",["has","name:nonlatin"],["concat",["get","name:latin"],`
16
+ `,["get","name:nonlatin"]],["coalesce",["get","name_en"],["get","name"]]],"text-font":["Noto Sans Bold"],"text-max-width":6.25,"text-size":["interpolate",["linear"],["zoom"],1,9,4,17]},paint:{"text-color":"#000","text-halo-blur":1,"text-halo-color":"#fff","text-halo-width":1}}],name:"ExpoFP Streets (Mapbox-like)",metadata:{"expofp:base":"OpenFreeMap Liberty (CC0)","expofp:tuned-to":"mapbox://styles/mapbox/streets-v12 palette"}};
@@ -1,10 +1,11 @@
1
- import type { Map as MaplibreMap } from 'maplibre-gl';
2
- import type { RefObject } from 'react';
1
+ import type { SceneDef } from '@expofp/renderer';
2
+ import { type Map as MaplibreMap } from 'maplibre-gl';
3
+ import { type RefObject } from 'react';
3
4
  import { type GeoConfig } from './utils/geo-config';
4
5
  /**
5
6
  * Bundles all camera-related MobX reactions: moveToBooths, moveToRect,
6
7
  * zoomBy, moveToLocation, and centerMap. Each watches a uiState trigger,
7
8
  * moves the camera, and clears the trigger.
8
9
  */
9
- export declare function useCameraReactions(mapRef: RefObject<MaplibreMap | null>, geoConfig: GeoConfig | null): void;
10
+ export declare function useCameraReactions(mapRef: RefObject<MaplibreMap | null>, geoConfig: GeoConfig | null, sceneDef: SceneDef | null): void;
10
11
  //# sourceMappingURL=useCameraReactions.d.ts.map
@@ -1 +1 @@
1
- import{Box as y}from"@expofp/geometry";import{svgArea as T}from"../../data/svg";import p,{uiState as i}from"../../store";import{convertLocalToGps as b}from"../../utils/gps";import{useReaction as m}from"../../utils/mobx";import{fitMapToLocalRect as l}from"./utils/geo-config";const s=i;export function useCameraReactions(a,e){m(()=>s.moveToBooths,r=>{const t=a.current;if(!r||!t||!e)return;const o=r.filter(c=>c.rect);if(o.length===0)return;const n=y.fromUnion(...o.map(c=>c.rect));l(t,n,e),s.moveToBooths=null}),m(()=>s.moveToRect,r=>{const t=a.current;!r||!t||!e||(l(t,r,e),s.moveToRect=null)}),m(()=>s.zoomBy,r=>{const t=a.current;!r||!t||(t.flyTo({zoom:t.getZoom()+(r>1?.5:-.5),animate:!0,duration:500}),s.zoomBy=null)}),m(()=>i.moveToLocation,r=>{const t=a.current,o=p.routeStore.currentPosition;if(!r||!t||!o)return;const{lng:n,lat:c}=o,f=typeof n=="number"&&Number.isFinite(n)&&typeof c=="number"&&Number.isFinite(c);let u;if(f)u=[n,c];else{if(!e)return;u=b(o.x,o.y,e.gpsConfig)}t.flyTo({center:u,animate:!0,duration:1e3}),t.once("moveend",()=>{i.moveToLocation=!1})}),m(()=>i.centerMap,r=>{const t=a.current;if(!r||!t||!e)return;if(!(i.list.type==="search"&&!i.list.text)){const n=p.layerStore.rectangle||T;l(t,n,e,{padding:0})}i.centerMap=!1})}
1
+ import{Box as b}from"@expofp/geometry";import{svgArea as l,svgAreaExplicit as x}from"../../data/svg";import p,{uiState as a}from"../../store";import{convertLocalToGps as h}from"../../utils/gps";import{useReaction as m}from"../../utils/mobx";import{expandRectByPercent as T,getVenueFitMarginPercent as S,resolveVenueFitRect as L}from"../../utils/scene-bounds";import{fitMapToLocalRect as f}from"./utils/geo-config";const s=a;function d(r){return T(r,S(r,l))}export function useCameraReactions(r,o,y){m(()=>s.moveToBooths,e=>{const t=r.current;if(!e||!t||!o)return;const n=e.filter(c=>c.rect);if(n.length===0)return;const i=b.fromUnion(...n.map(c=>c.rect));f(t,d(i),o),s.moveToBooths=null}),m(()=>s.moveToRect,e=>{const t=r.current;!e||!t||!o||(f(t,e,o),s.moveToRect=null)}),m(()=>s.zoomBy,e=>{const t=r.current;!e||!t||(t.flyTo({zoom:t.getZoom()+(e>1?.5:-.5),animate:!0,duration:500}),s.zoomBy=null)}),m(()=>a.moveToLocation,e=>{const t=r.current,n=p.routeStore.currentPosition;if(!e||!t||!n)return;const{lng:i,lat:c}=n,v=typeof i=="number"&&Number.isFinite(i)&&typeof c=="number"&&Number.isFinite(c);let u;if(v)u=[i,c];else{if(!o)return;u=h(n.x,n.y,o.gpsConfig)}t.flyTo({center:u,animate:!0,duration:1e3}),t.once("moveend",()=>{a.moveToLocation=!1})}),m(()=>a.centerMap,e=>{const t=r.current;if(!e||!t||!o)return;if(!(a.list.type==="search"&&!a.list.text)){const{rect:i}=L({layerViewbox:p.layerStore.viewboxRectangle,explicitArea:x?l:null,layerRectangle:p.layerStore.rectangle,sceneDef:y,svgArea:l});f(t,i,o)}a.centerMap=!1})}