@deck.gl/mapbox 8.9.0-alpha.5 → 8.9.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.dev.js +1131 -6108
- package/dist/es5/deck-utils.js +26 -16
- package/dist/es5/deck-utils.js.map +1 -1
- package/dist/es5/mapbox-overlay.js +8 -4
- package/dist/es5/mapbox-overlay.js.map +1 -1
- package/dist/es5/resolve-layers.js.map +1 -1
- package/dist/esm/deck-utils.js +23 -16
- package/dist/esm/deck-utils.js.map +1 -1
- package/dist/esm/mapbox-overlay.js +8 -4
- package/dist/esm/mapbox-overlay.js.map +1 -1
- package/dist/esm/resolve-layers.js.map +1 -1
- package/dist.min.js +4 -1
- package/package.json +4 -4
- package/src/deck-utils.ts +29 -15
- package/src/mapbox-overlay.ts +14 -11
- package/src/resolve-layers.ts +1 -0
- package/typed/deck-utils.d.ts +2 -1
- package/typed/deck-utils.d.ts.map +1 -1
- package/typed/deck-utils.js +185 -0
- package/typed/index.js +2 -0
- package/typed/mapbox-layer.js +37 -0
- package/typed/mapbox-overlay.d.ts +4 -4
- package/typed/mapbox-overlay.d.ts.map +1 -1
- package/typed/mapbox-overlay.js +139 -0
- package/typed/resolve-layers.d.ts.map +1 -1
package/dist.min.js
CHANGED
|
@@ -1 +1,4 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("deck")):"function"==typeof define&&define.amd?define(["deck"],t):"object"==typeof exports?exports.deck=t(require("deck")):e.deck=t(e.deck)}(window,(function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=12)}([function(e,t){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}},function(e,t,r){var n=r(16),o=r(17),i=r(7),a=r(18);e.exports=function(e,t){return n(e)||o(e,t)||i(e,t)||a()},e.exports.default=e.exports,e.exports.__esModule=!0},function(t,r){t.exports=e},function(e,t,r){var n=r(13),o=r(14),i=r(7),a=r(15);e.exports=function(e){return n(e)||o(e)||i(e)||a()},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t){function r(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}e.exports=function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}},function(e,t){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){var n=r(6);e.exports=function(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function r(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}e.exports=function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){var n=r(19);e.exports=function(e,t){if(null==e)return{};var r,o,i=n(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}},function(e,t,r){var n=r(20),o=globalThis.deck||{};if(!o.Layer)throw new Error("@deck.gl/core is not found");e.exports=Object.assign(o,n)},function(e,t,r){var n=r(6);e.exports=function(e){if(Array.isArray(e))return n(e)},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e){if(Array.isArray(e))return e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i=[],a=!0,s=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(e){s=!0,o=e}finally{try{a||null==r.return||r.return()}finally{if(s)throw o}}return i}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}},function(e,t,r){"use strict";r.r(t);var n=r(4),o=r.n(n),i=r(5),a=r.n(i),s=r(0),u=r.n(s),l=r(2),c=(r(3),r(1)),p=r.n(c);r(8),r(9);var f="undefined"!=typeof Float32Array?Float32Array:Array;Math.random;Math.PI;Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var d,v;d=new f(4),f!=Float32Array&&(d[0]=0,d[1]=0,d[2]=0,d[3]=0),v=d;Math.log2;!function(){var e=function(){var e=new f(2);return f!=Float32Array&&(e[0]=0,e[1]=0),e}()}();!function(){var e=function(){var e=new f(3);return f!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}()}();function h(e,t){if(!e)throw new Error(t||"@math.gl/web-mercator: assertion failed.")}var y=Math.PI,b=y/4,_=y/180;function m(e){var t=p()(e,2),r=t[0],n=t[1];h(Number.isFinite(r)),h(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");var o=n*_;return[512*(r*_+y)/(2*y),512*(y+Math.log(Math.tan(b+.5*o)))/(2*y)]}function g(e){return 512/4003e4/Math.cos(e*_)}Math.PI;r(10);function x(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function k(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?x(Object(r),!0).forEach((function(t){u()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):x(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var O=Math.PI/180;function w(e){var t=e.map,r=e.gl,n=e.deck;if(t.__deck)return t.__deck;var o,i=null==n?void 0:n.props._customRender,a={useDevicePixels:!0,_customRender:function(){t.triggerRepaint(),null==i||i("")},parameters:{depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},views:n&&n.props.views||[new l.MapView({id:"mapbox"})]};return n&&n.props.gl!==r||(Object.assign(a,{gl:r,width:null,height:null,touchAction:"unset",viewState:j(t)}),t.on("move",(function(){return function(e,t){e.setProps({viewState:j(t)}),e.needsRedraw({clearRedrawFlags:!0})}(o,t)}))),n?(o=n,n.setProps(a),n.userData.isExternal=!0):(o=new l.Deck(a),t.on("remove",(function(){o.finalize(),t.__deck=null}))),o.userData.mapboxLayers=new Set,t.__deck=o,t.on("render",(function(){o.isInitialized&&function(e,t){var r=e.userData,n=r.mapboxLayers;if(r.isExternal){var o=Array.from(n,(function(e){return e.id})),i=Object(l._flatten)(e.props.layers,Boolean).some((function(e){return e&&!o.includes(e.id)})),a=e.getViewports(),s=a.findIndex((function(e){return"mapbox"===e.id})),u=a.length>1||s<0;(i||u)&&(s>=0&&((a=a.slice())[s]=M(e,t,!1)),e._drawLayers("mapbox-repaint",{viewports:a,layerFilter:function(t){return(!e.props.layerFilter||e.props.layerFilter(t))&&("mapbox"!==t.viewport.id||!o.includes(t.layer.id))},clearCanvas:!1}))}e.userData.currentViewport=null}(o,t)})),o}function j(e){var t,r=e.getCenter(),n={longitude:(r.lng+540)%360-180,latitude:r.lat,zoom:e.getZoom(),bearing:e.getBearing(),pitch:e.getPitch(),padding:e.getPadding(),repeat:e.getRenderWorldCopies()};return null!==(t=e.getTerrain)&&void 0!==t&&t.call(e)&&function(e,t){if(e.getFreeCameraOptions){var r=e.getFreeCameraOptions().position;if(!r||void 0===r.z)return;var n=e.transform.height,o=t.longitude,i=t.latitude,a=t.pitch,s=512*r.x,u=512*(1-r.y),l=512*r.z,c=m([o,i]),p=s-c[0],f=u-c[1],d=Math.sqrt(p*p+f*f),v=a*O,h=1.5*n,y=h*Math.sin(v)/d;t.zoom=Math.log2(y);var b=h*Math.cos(v)/y,_=l-b;t.position=[0,0,_/g(i)]}else"number"==typeof e.transform.elevation&&(t.position=[0,0,e.transform.elevation])}(e,n),n}function M(e,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return new l.WebMercatorViewport(k(k({id:"mapbox",x:0,y:0,width:e.width,height:e.height},j(t)),{},{nearZMultiplier:r?.02:.1}))}function P(e){if(!e.userData.isExternal){var t=[];e.userData.mapboxLayers.forEach((function(e){var r=new(0,e.props.type)(e.props);t.push(r)})),e.setProps({layers:t})}}var S=function(){function e(t){if(o()(this,e),u()(this,"id",void 0),u()(this,"type",void 0),u()(this,"renderingMode",void 0),u()(this,"map",void 0),u()(this,"deck",void 0),u()(this,"props",void 0),!t.id)throw new Error("Layer must have an unique id");this.id=t.id,this.type="custom",this.renderingMode=t.renderingMode||"3d",this.map=null,this.deck=null,this.props=t}return a()(e,[{key:"onAdd",value:function(e,t){var r,n;this.map=e,this.deck=w({map:e,gl:t,deck:this.props.deck}),r=this.deck,n=this,r.userData.mapboxLayers.add(n),P(r)}},{key:"onRemove",value:function(){var e,t;this.deck&&(e=this.deck,t=this,e.userData.mapboxLayers.delete(t),P(e))}},{key:"setProps",value:function(e){Object.assign(this.props,e,{id:this.id}),this.deck&&P(this.deck)}},{key:"render",value:function(){var e,t,r,n,o;e=this.deck,t=this.map,r=this,n=e.userData.currentViewport,o=!1,n||(n=M(e,t,!0),e.userData.currentViewport=n,o=!0),e.isInitialized&&e._drawLayers("mapbox-repaint",{viewports:[n],layerFilter:function(e){var t=e.layer;return r.id===t.id},clearStack:o,clearCanvas:!1})}}]),e}(),E=r(11),D=r.n(E);function A(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return I(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return I(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function I(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function C(e,t,r,n){if(e&&t&&e.style&&e.style._loaded){var o=Object(l._flatten)(n,Boolean);if(r!==n){var i,a=Object(l._flatten)(r,Boolean),s=new Set(a.map((function(e){return e.id}))),u=A(o);try{for(u.s();!(i=u.n()).done;){var c=i.value;s.delete(c.id)}}catch(e){u.e(e)}finally{u.f()}var p,f=A(s);try{for(f.s();!(p=f.n()).done;){var d=p.value;e.getLayer(d)&&e.removeLayer(d)}}catch(e){f.e(e)}finally{f.f()}}var v,h=A(o);try{for(h.s();!(v=h.n()).done;){var y=v.value,b=e.getLayer(y.id);b?b.implementation.setProps(y.props):e.addLayer(new S({id:y.id,deck:t}),y.props.beforeId)}}catch(e){h.e(e)}finally{h.f()}var _,m=e.style._order,g={},x=A(o);try{for(x.s();!(_=x.n()).done;){var k=_.value,O=k.props.beforeId;O&&m.includes(O)||(O="__UNDEFINED__"),g[O]=g[O]||[],g[O].push(k.id)}}catch(e){x.e(e)}finally{x.f()}for(var w in g)for(var j=g[w],M="__UNDEFINED__"===w?m.length:m.indexOf(w),P="__UNDEFINED__"===w?void 0:w,E=j.length-1;E>=0;E--){var D=j[E],I=m.indexOf(D);I!==M-1&&(e.moveLayer(D,P),I>M&&M++),M--,P=D}}}var F=["interleaved"];function z(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function L(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?z(Object(r),!0).forEach((function(t){u()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):z(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var R=function(){function e(t){var r=this;o()(this,e),u()(this,"_props",void 0),u()(this,"_deck",void 0),u()(this,"_map",void 0),u()(this,"_container",void 0),u()(this,"_interleaved",void 0),u()(this,"_handleStyleChange",(function(){C(r._map,r._deck,r._props.layers,r._props.layers)})),u()(this,"_updateContainerSize",(function(){if(r._map&&r._container){var e=r._map.getContainer(),t=e.clientWidth,n=e.clientHeight;Object.assign(r._container.style,{width:"".concat(t,"px"),height:"".concat(n,"px")})}})),u()(this,"_updateViewState",(function(){var e=r._deck;e&&(e.setProps({viewState:j(r._map)}),e.redraw())})),u()(this,"_handleMouseEvent",(function(e){var t=r._deck;if(t){var n={type:e.type,offsetCenter:e.point,srcEvent:e};switch(e.type){case"click":n.tapCount=1,t._onPointerDown(n),t._onEvent(n);break;case"dblclick":n.type="click",n.tapCount=2,t._onEvent(n);break;case"mousemove":n.type="pointermove",t._onPointerMove(n);break;case"mouseout":n.type="pointerleave",t._onPointerMove(n);break;default:return}}}));var n=t.interleaved,i=void 0!==n&&n,a=D()(t,F);this._interleaved=i,this._props=a}return a()(e,[{key:"setProps",value:function(e){this._interleaved&&e.layers&&C(this._map,this._deck,this._props.layers,e.layers),Object.assign(this._props,e),this._deck&&this._deck.setProps(this._props)}},{key:"onAdd",value:function(e){return this._map=e,this._interleaved?this._onAddInterleaved(e):this._onAddOverlaid(e)}},{key:"_onAddOverlaid",value:function(e){var t=document.createElement("div");return Object.assign(t.style,{position:"absolute",left:0,top:0,pointerEvents:"none"}),this._container=t,this._deck=new l.Deck(L(L({},this._props),{},{parent:t,viewState:j(e)})),e.on("resize",this._updateContainerSize),e.on("render",this._updateViewState),e.on("mousemove",this._handleMouseEvent),e.on("mouseout",this._handleMouseEvent),e.on("click",this._handleMouseEvent),e.on("dblclick",this._handleMouseEvent),this._updateContainerSize(),t}},{key:"_onAddInterleaved",value:function(e){return this._deck=new l.Deck(L(L({},this._props),{},{gl:e.painter.context.gl})),e.on("styledata",this._handleStyleChange),C(e,this._deck,[],this._props.layers),document.createElement("div")}},{key:"onRemove",value:function(){var e,t=this._map;t&&(this._interleaved?this._onRemoveInterleaved(t):this._onRemoveOverlaid(t)),null===(e=this._deck)||void 0===e||e.finalize(),this._deck=void 0,this._map=void 0,this._container=void 0}},{key:"_onRemoveOverlaid",value:function(e){e.off("resize",this._updateContainerSize),e.off("render",this._updateViewState),e.off("mousemove",this._handleMouseEvent),e.off("mouseout",this._handleMouseEvent),e.off("click",this._handleMouseEvent),e.off("dblclick",this._handleMouseEvent)}},{key:"_onRemoveInterleaved",value:function(e){e.off("styledata",this._handleStyleChange),C(e,this._deck,this._props.layers,[])}},{key:"getDefaultPosition",value:function(){return"top-left"}},{key:"pickObject",value:function(e){return Object(l.assert)(this._deck),this._deck.pickObject(e)}},{key:"pickMultipleObjects",value:function(e){return Object(l.assert)(this._deck),this._deck.pickMultipleObjects(e)}},{key:"pickObjects",value:function(e){return Object(l.assert)(this._deck),this._deck.pickObjects(e)}},{key:"finalize",value:function(){this._map&&this._map.removeControl(this)}}]),e}();r.d(t,"MapboxLayer",(function(){return S})),r.d(t,"MapboxOverlay",(function(){return R}))}])}));
|
|
1
|
+
"use strict";var deck=(()=>{var nt=Object.create;var mr=Object.defineProperty;var at=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var st=Object.getPrototypeOf,ot=Object.prototype.hasOwnProperty;var J=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),vt=(r,e)=>{for(var t in e)mr(r,t,{get:e[t],enumerable:!0})},Mr=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of it(e))!ot.call(r,a)&&a!==t&&mr(r,a,{get:()=>e[a],enumerable:!(n=at(e,a))||n.enumerable});return r},B=(r,e,t)=>(Mr(r,e,"default"),t&&Mr(t,e,"default")),I=(r,e,t)=>(t=r!=null?nt(st(r)):{},Mr(e||!r||!r.__esModule?mr(t,"default",{value:r,enumerable:!0}):t,r)),lt=r=>Mr(mr({},"__esModule",{value:!0}),r);var rr=J((St,ve)=>{ve.exports=globalThis.deck});var kr=J((Rt,fe)=>{function ft(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}fe.exports=ft});var Nr=J((Dt,he)=>{function ce(r,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,n.key,n)}}function ct(r,e,t){return e&&ce(r.prototype,e),t&&ce(r,t),r}he.exports=ct});var gr=J((It,pe)=>{function ht(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}pe.exports=ht});var $e=J((va,qe)=>{function bt(r,e){if(r==null)return{};var t={},n=Object.keys(r),a,i;for(i=0;i<n.length;i++)a=n[i],!(e.indexOf(a)>=0)&&(t[a]=r[a]);return t}qe.exports=bt});var We=J((la,Ve)=>{var At=$e();function zt(r,e){if(r==null)return{};var t=At(r,e),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(r);for(a=0;a<i.length;a++)n=i[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(r,n)&&(t[n]=r[n])}return t}Ve.exports=zt});var dr={};vt(dr,{MapboxLayer:()=>Lr,MapboxOverlay:()=>Qe});var V={},le=I(rr());B(V,I(rr()));if(!le.Layer)throw new Error("@deck.gl/core is not found");B(dr,V);var Ye=I(kr()),Ze=I(Nr()),G=I(gr());var De=I(gr()),X=I(rr());function er(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t<e;t++)n[t]=r[t];return n}function Fr(r){if(Array.isArray(r))return er(r)}function Cr(r){if(typeof Symbol<"u"&&r[Symbol.iterator]!=null||r["@@iterator"]!=null)return Array.from(r)}function fr(r,e){if(r){if(typeof r=="string")return er(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);if(t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set")return Array.from(r);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return er(r,e)}}function Yr(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
|
2
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function tr(r){return Fr(r)||Cr(r)||fr(r)||Yr()}function Zr(r){if(Array.isArray(r))return r}function qr(r,e){var t=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(t!=null){var n=[],a=!0,i=!1,s,o;try{for(t=t.call(r);!(a=(s=t.next()).done)&&(n.push(s.value),!(e&&n.length===e));a=!0);}catch(v){i=!0,o=v}finally{try{!a&&t.return!=null&&t.return()}finally{if(i)throw o}}return n}}function $r(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
3
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function j(r,e){return Zr(r)||qr(r,e)||fr(r,e)||$r()}function Vr(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function de(r,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,n.key,n)}}function Wr(r,e,t){return e&&de(r.prototype,e),t&&de(r,t),r}function b(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var T=1e-6,W=typeof Float32Array<"u"?Float32Array:Array;var sn=Math.PI/180;Math.hypot||(Math.hypot=function(){for(var r=0,e=arguments.length;e--;)r+=arguments[e]*arguments[e];return Math.sqrt(r)});function pt(){var r=new W(4);return W!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0,r[3]=0),r}function Me(r,e,t){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r}function me(r,e,t){var n=e[0],a=e[1],i=e[2],s=e[3];return r[0]=t[0]*n+t[4]*a+t[8]*i+t[12]*s,r[1]=t[1]*n+t[5]*a+t[9]*i+t[13]*s,r[2]=t[2]*n+t[6]*a+t[10]*i+t[14]*s,r[3]=t[3]*n+t[7]*a+t[11]*i+t[15]*s,r}var on=function(){var r=pt();return function(e,t,n,a,i,s){var o,v;for(t||(t=4),n||(n=0),a?v=Math.min(a*t+n,e.length):v=e.length,o=n;o<v;o+=t)r[0]=e[o],r[1]=e[o+1],r[2]=e[o+2],r[3]=e[o+3],i(r,r,s),e[o]=r[0],e[o+1]=r[1],e[o+2]=r[2],e[o+3]=r[3];return e}}();function nr(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function U(r,e){var t=me([],e,r);return Me(t,t,1/t[3]),t}function cr(r,e,t){return r<e?e:r>t?t:r}function dt(r){return Math.log(r)*Math.LOG2E}var ur=Math.log2||dt;function ge(r,e){var t=e[0],n=e[1],a=e[2],i=e[3],s=e[4],o=e[5],v=e[6],l=e[7],c=e[8],f=e[9],h=e[10],y=e[11],u=e[12],_=e[13],w=e[14],M=e[15],P=t*o-n*s,p=t*v-a*s,g=t*l-i*s,m=n*v-a*o,x=n*l-i*o,A=a*l-i*v,R=c*_-f*u,L=c*w-h*u,S=c*M-y*u,z=f*w-h*_,O=f*M-y*_,E=h*M-y*w,d=P*E-p*O+g*z+m*S-x*L+A*R;return d?(d=1/d,r[0]=(o*E-v*O+l*z)*d,r[1]=(a*O-n*E-i*z)*d,r[2]=(_*A-w*x+M*m)*d,r[3]=(h*x-f*A-y*m)*d,r[4]=(v*S-s*E-l*L)*d,r[5]=(t*E-a*S+i*L)*d,r[6]=(w*g-u*A-M*p)*d,r[7]=(c*A-h*g+y*p)*d,r[8]=(s*O-o*S+l*R)*d,r[9]=(n*S-t*O-i*R)*d,r[10]=(u*x-_*g+M*P)*d,r[11]=(f*g-c*x-y*P)*d,r[12]=(o*L-s*z-v*R)*d,r[13]=(t*z-n*L+a*R)*d,r[14]=(_*p-u*m-w*P)*d,r[15]=(c*m-f*p+h*P)*d,r):null}function _r(r,e,t){var n=e[0],a=e[1],i=e[2],s=e[3],o=e[4],v=e[5],l=e[6],c=e[7],f=e[8],h=e[9],y=e[10],u=e[11],_=e[12],w=e[13],M=e[14],P=e[15],p=t[0],g=t[1],m=t[2],x=t[3];return r[0]=p*n+g*o+m*f+x*_,r[1]=p*a+g*v+m*h+x*w,r[2]=p*i+g*l+m*y+x*M,r[3]=p*s+g*c+m*u+x*P,p=t[4],g=t[5],m=t[6],x=t[7],r[4]=p*n+g*o+m*f+x*_,r[5]=p*a+g*v+m*h+x*w,r[6]=p*i+g*l+m*y+x*M,r[7]=p*s+g*c+m*u+x*P,p=t[8],g=t[9],m=t[10],x=t[11],r[8]=p*n+g*o+m*f+x*_,r[9]=p*a+g*v+m*h+x*w,r[10]=p*i+g*l+m*y+x*M,r[11]=p*s+g*c+m*u+x*P,p=t[12],g=t[13],m=t[14],x=t[15],r[12]=p*n+g*o+m*f+x*_,r[13]=p*a+g*v+m*h+x*w,r[14]=p*i+g*l+m*y+x*M,r[15]=p*s+g*c+m*u+x*P,r}function hr(r,e,t){var n=t[0],a=t[1],i=t[2],s,o,v,l,c,f,h,y,u,_,w,M;return e===r?(r[12]=e[0]*n+e[4]*a+e[8]*i+e[12],r[13]=e[1]*n+e[5]*a+e[9]*i+e[13],r[14]=e[2]*n+e[6]*a+e[10]*i+e[14],r[15]=e[3]*n+e[7]*a+e[11]*i+e[15]):(s=e[0],o=e[1],v=e[2],l=e[3],c=e[4],f=e[5],h=e[6],y=e[7],u=e[8],_=e[9],w=e[10],M=e[11],r[0]=s,r[1]=o,r[2]=v,r[3]=l,r[4]=c,r[5]=f,r[6]=h,r[7]=y,r[8]=u,r[9]=_,r[10]=w,r[11]=M,r[12]=s*n+c*a+u*i+e[12],r[13]=o*n+f*a+_*i+e[13],r[14]=v*n+h*a+w*i+e[14],r[15]=l*n+y*a+M*i+e[15]),r}function wr(r,e,t){var n=t[0],a=t[1],i=t[2];return r[0]=e[0]*n,r[1]=e[1]*n,r[2]=e[2]*n,r[3]=e[3]*n,r[4]=e[4]*a,r[5]=e[5]*a,r[6]=e[6]*a,r[7]=e[7]*a,r[8]=e[8]*i,r[9]=e[9]*i,r[10]=e[10]*i,r[11]=e[11]*i,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r}function ye(r,e,t){var n=Math.sin(t),a=Math.cos(t),i=e[4],s=e[5],o=e[6],v=e[7],l=e[8],c=e[9],f=e[10],h=e[11];return e!==r&&(r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[4]=i*a+l*n,r[5]=s*a+c*n,r[6]=o*a+f*n,r[7]=v*a+h*n,r[8]=l*a-i*n,r[9]=c*a-s*n,r[10]=f*a-o*n,r[11]=h*a-v*n,r}function ue(r,e,t){var n=Math.sin(t),a=Math.cos(t),i=e[0],s=e[1],o=e[2],v=e[3],l=e[4],c=e[5],f=e[6],h=e[7];return e!==r&&(r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[0]=i*a+l*n,r[1]=s*a+c*n,r[2]=o*a+f*n,r[3]=v*a+h*n,r[4]=l*a-i*n,r[5]=c*a-s*n,r[6]=f*a-o*n,r[7]=h*a-v*n,r}function xt(r,e,t,n,a){var i=1/Math.tan(e/2),s;return r[0]=i/t,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=i,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[11]=-1,r[12]=0,r[13]=0,r[15]=0,a!=null&&a!==1/0?(s=1/(n-a),r[10]=(a+n)*s,r[14]=2*a*n*s):(r[10]=-1,r[14]=-2*n),r}var _e=xt;function Br(r,e){var t=r[0],n=r[1],a=r[2],i=r[3],s=r[4],o=r[5],v=r[6],l=r[7],c=r[8],f=r[9],h=r[10],y=r[11],u=r[12],_=r[13],w=r[14],M=r[15],P=e[0],p=e[1],g=e[2],m=e[3],x=e[4],A=e[5],R=e[6],L=e[7],S=e[8],z=e[9],O=e[10],E=e[11],d=e[12],$=e[13],N=e[14],D=e[15];return Math.abs(t-P)<=T*Math.max(1,Math.abs(t),Math.abs(P))&&Math.abs(n-p)<=T*Math.max(1,Math.abs(n),Math.abs(p))&&Math.abs(a-g)<=T*Math.max(1,Math.abs(a),Math.abs(g))&&Math.abs(i-m)<=T*Math.max(1,Math.abs(i),Math.abs(m))&&Math.abs(s-x)<=T*Math.max(1,Math.abs(s),Math.abs(x))&&Math.abs(o-A)<=T*Math.max(1,Math.abs(o),Math.abs(A))&&Math.abs(v-R)<=T*Math.max(1,Math.abs(v),Math.abs(R))&&Math.abs(l-L)<=T*Math.max(1,Math.abs(l),Math.abs(L))&&Math.abs(c-S)<=T*Math.max(1,Math.abs(c),Math.abs(S))&&Math.abs(f-z)<=T*Math.max(1,Math.abs(f),Math.abs(z))&&Math.abs(h-O)<=T*Math.max(1,Math.abs(h),Math.abs(O))&&Math.abs(y-E)<=T*Math.max(1,Math.abs(y),Math.abs(E))&&Math.abs(u-d)<=T*Math.max(1,Math.abs(u),Math.abs(d))&&Math.abs(_-$)<=T*Math.max(1,Math.abs(_),Math.abs($))&&Math.abs(w-N)<=T*Math.max(1,Math.abs(w),Math.abs(N))&&Math.abs(M-D)<=T*Math.max(1,Math.abs(M),Math.abs(D))}function Mt(){var r=new W(2);return W!=Float32Array&&(r[0]=0,r[1]=0),r}function Ur(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r}function Pe(r,e){return r[0]=-e[0],r[1]=-e[1],r}function Pr(r,e,t,n){var a=e[0],i=e[1];return r[0]=a+n*(t[0]-a),r[1]=i+n*(t[1]-i),r}var cn=function(){var r=Mt();return function(e,t,n,a,i,s){var o,v;for(t||(t=2),n||(n=0),a?v=Math.min(a*t+n,e.length):v=e.length,o=n;o<v;o+=t)r[0]=e[o],r[1]=e[o+1],i(r,r,s),e[o]=r[0],e[o+1]=r[1];return e}}();function mt(){var r=new W(3);return W!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Oe(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r}function gt(r,e,t){return r[0]=e[0]*t[0],r[1]=e[1]*t[1],r[2]=e[2]*t[2],r}function be(r,e){return r[0]=-e[0],r[1]=-e[1],r[2]=-e[2],r}var Ae=gt;var hn=function(){var r=mt();return function(e,t,n,a,i,s){var o,v;for(t||(t=3),n||(n=0),a?v=Math.min(a*t+n,e.length):v=e.length,o=n;o<v;o+=t)r[0]=e[o],r[1]=e[o+1],r[2]=e[o+2],i(r,r,s),e[o]=r[0],e[o+1]=r[1],e[o+2]=r[2];return e}}();function F(r,e){if(!r)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var C=Math.PI,Ee=C/4,Y=C/180,Hr=180/C,ar=512,Gr=4003e4,sr=85.051129,Qr=1.5;function Or(r){return Math.pow(2,r)}function k(r){var e=j(r,2),t=e[0],n=e[1];F(Number.isFinite(t)),F(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");var a=t*Y,i=n*Y,s=ar*(a+C)/(2*C),o=ar*(C+Math.log(Math.tan(Ee+i*.5)))/(2*C);return[s,o]}function Z(r){var e=j(r,2),t=e[0],n=e[1],a=t/ar*(2*C)-C,i=2*(Math.atan(Math.exp(n/ar*(2*C)-C))-Ee);return[a*Hr,i*Hr]}function Kr(r){var e=Math.cos(r*Y);return ar/Gr/e}function Jr(r){var e=r.latitude,t=r.longitude,n=r.highPrecision,a=n===void 0?!1:n;F(Number.isFinite(e)&&Number.isFinite(t));var i=ar,s=Math.cos(e*Y),o=i/360,v=o/s,l=i/Gr/s,c={unitsPerMeter:[l,l,l],metersPerUnit:[1/l,1/l,1/l],unitsPerDegree:[o,v,l],degreesPerUnit:[1/o,1/v,1/l]};if(a){var f=Y*Math.tan(e*Y)/s,h=o*f/2,y=i/Gr*f,u=y/v*l;c.unitsPerDegree2=[0,h,y],c.unitsPerMeter2=[u,0,u]}return c}function re(r){var e=r.height,t=r.pitch,n=r.bearing,a=r.altitude,i=r.scale,s=r.center,o=nr();hr(o,o,[0,0,-a]),ye(o,o,-t*Y),ue(o,o,n*Y);var v=i/e;return wr(o,o,[v,v,v]),s&&hr(o,o,be([],s)),o}function Te(r){var e=r.width,t=r.height,n=r.altitude,a=r.pitch,i=a===void 0?0:a,s=r.offset,o=r.center,v=r.scale,l=r.nearZMultiplier,c=l===void 0?1:l,f=r.farZMultiplier,h=f===void 0?1:f,y=r.fovy,u=y===void 0?ir(Qr):y;n!==void 0&&(u=ir(n));var _=u*Y,w=i*Y,M=br(u),P=M;o&&(P+=o[2]*v/Math.cos(w)/t);var p=_*(.5+(s?s[1]:0)/t),g=Math.sin(p)*P/Math.sin(cr(Math.PI/2-w-p,.01,Math.PI-.01)),m=Math.sin(w)*g+P,x=P*10,A=Math.min(m*h,x);return{fov:_,aspect:e/t,focalDistance:M,near:c,far:A}}function ee(r){var e=Te(r),t=e.fov,n=e.aspect,a=e.near,i=e.far,s=_e([],t,n,a,i);return s}function ir(r){return 2*Math.atan(.5/r)*Hr}function br(r){return .5/Math.tan(.5*r*Y)}function te(r,e){var t=j(r,3),n=t[0],a=t[1],i=t[2],s=i===void 0?0:i;return F(Number.isFinite(n)&&Number.isFinite(a)&&Number.isFinite(s)),U(e,[n,a,s,1])}function Ar(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=j(r,3),a=n[0],i=n[1],s=n[2];if(F(Number.isFinite(a)&&Number.isFinite(i),"invalid pixel coordinate"),Number.isFinite(s)){var o=U(e,[a,i,s,1]);return o}var v=U(e,[a,i,0,1]),l=U(e,[a,i,1,1]),c=v[2],f=l[2],h=c===f?0:((t||0)-c)/(f-c);return Pr([],v,l,h)}function zr(r){var e=r.width,t=r.height,n=r.bounds,a=r.minExtent,i=a===void 0?0:a,s=r.maxZoom,o=s===void 0?24:s,v=r.offset,l=v===void 0?[0,0]:v,c=j(n,2),f=j(c[0],2),h=f[0],y=f[1],u=j(c[1],2),_=u[0],w=u[1],M=yt(r.padding),P=k([h,cr(w,-sr,sr)]),p=k([_,cr(y,-sr,sr)]),g=[Math.max(Math.abs(p[0]-P[0]),i),Math.max(Math.abs(p[1]-P[1]),i)],m=[e-M.left-M.right-Math.abs(l[0])*2,t-M.top-M.bottom-Math.abs(l[1])*2];F(m[0]>0&&m[1]>0);var x=m[0]/g[0],A=m[1]/g[1],R=(M.right-M.left)/2/x,L=(M.bottom-M.top)/2/A,S=[(p[0]+P[0])/2+R,(p[1]+P[1])/2+L],z=Z(S),O=Math.min(o,ur(Math.abs(Math.min(x,A))));return F(Number.isFinite(O)),{longitude:z[0],latitude:z[1],zoom:O}}function yt(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return typeof r=="number"?{top:r,bottom:r,left:r,right:r}:(F(Number.isFinite(r.top)&&Number.isFinite(r.bottom)&&Number.isFinite(r.left)&&Number.isFinite(r.right)),r)}var Le=Math.PI/180;function Er(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=r.width,n=r.height,a=r.unproject,i={targetZ:e},s=a([0,n],i),o=a([t,n],i),v,l,c=r.fovy?.5*r.fovy*Le:Math.atan(.5/r.altitude),f=(90-r.pitch)*Le;return c>f-.01?(v=Se(r,0,e),l=Se(r,t,e)):(v=a([0,0],i),l=a([t,0],i)),[s,o,l,v]}function Se(r,e,t){var n=r.pixelUnprojectionMatrix,a=U(n,[e,0,1,1]),i=U(n,[e,r.height,1,1]),s=t*r.distanceScales.unitsPerMeter[2],o=(s-a[2])/(i[2]-a[2]),v=Pr([],a,i,o),l=Z(v);return l.push(t),l}var je=function(){function r(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{width:1,height:1};Vr(this,r),b(this,"latitude",void 0),b(this,"longitude",void 0),b(this,"zoom",void 0),b(this,"pitch",void 0),b(this,"bearing",void 0),b(this,"altitude",void 0),b(this,"fovy",void 0),b(this,"meterOffset",void 0),b(this,"center",void 0),b(this,"width",void 0),b(this,"height",void 0),b(this,"scale",void 0),b(this,"distanceScales",void 0),b(this,"viewMatrix",void 0),b(this,"projectionMatrix",void 0),b(this,"viewProjectionMatrix",void 0),b(this,"pixelProjectionMatrix",void 0),b(this,"pixelUnprojectionMatrix",void 0),b(this,"equals",function(O){return O instanceof r?O.width===e.width&&O.height===e.height&&Br(O.projectionMatrix,e.projectionMatrix)&&Br(O.viewMatrix,e.viewMatrix):!1}),b(this,"project",function(O){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=E.topLeft,$=d===void 0?!0:d,N=e.projectPosition(O),D=te(N,e.pixelProjectionMatrix),K=j(D,2),xr=K[0],vr=K[1],lr=$?vr:e.height-vr;return O.length===2?[xr,lr]:[xr,lr,D[2]]}),b(this,"unproject",function(O){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=E.topLeft,$=d===void 0?!0:d,N=E.targetZ,D=N===void 0?void 0:N,K=j(O,3),xr=K[0],vr=K[1],lr=K[2],Ke=$?vr:e.height-vr,Je=D&&D*e.distanceScales.unitsPerMeter[2],rt=Ar([xr,Ke,lr],e.pixelUnprojectionMatrix,Je),et=e.unprojectPosition(rt),Rr=j(et,3),Dr=Rr[0],Ir=Rr[1],tt=Rr[2];return Number.isFinite(lr)?[Dr,Ir,tt]:Number.isFinite(D)?[Dr,Ir,D]:[Dr,Ir]}),b(this,"projectPosition",function(O){var E=k(O),d=j(E,2),$=d[0],N=d[1],D=(O[2]||0)*e.distanceScales.unitsPerMeter[2];return[$,N,D]}),b(this,"unprojectPosition",function(O){var E=Z(O),d=j(E,2),$=d[0],N=d[1],D=(O[2]||0)*e.distanceScales.metersPerUnit[2];return[$,N,D]});var n=t.width,a=t.height,i=t.altitude,s=i===void 0?null:i,o=t.fovy,v=o===void 0?null:o,l=t.latitude,c=l===void 0?0:l,f=t.longitude,h=f===void 0?0:f,y=t.zoom,u=y===void 0?0:y,_=t.pitch,w=_===void 0?0:_,M=t.bearing,P=M===void 0?0:M,p=t.position,g=p===void 0?null:p,m=t.nearZMultiplier,x=m===void 0?.02:m,A=t.farZMultiplier,R=A===void 0?1.01:A;n=n||1,a=a||1,v===null&&s===null?(s=Qr,v=ir(s)):v===null?v=ir(s):s===null&&(s=br(v));var L=Or(u);s=Math.max(.75,s);var S=Jr({longitude:h,latitude:c}),z=k([h,c]);z.push(0),g&&Oe(z,z,Ae([],g,S.unitsPerMeter)),this.projectionMatrix=ee({width:n,height:a,scale:L,center:z,pitch:w,fovy:v,nearZMultiplier:x,farZMultiplier:R}),this.viewMatrix=re({height:a,scale:L,center:z,pitch:w,bearing:P,altitude:s}),this.width=n,this.height=a,this.scale=L,this.latitude=c,this.longitude=h,this.zoom=u,this.pitch=w,this.bearing=P,this.altitude=s,this.fovy=v,this.center=z,this.meterOffset=g||[0,0,0],this.distanceScales=S,this._initMatrices(),Object.freeze(this)}return Wr(r,[{key:"_initMatrices",value:function(){var t=this.width,n=this.height,a=this.projectionMatrix,i=this.viewMatrix,s=nr();_r(s,s,a),_r(s,s,i),this.viewProjectionMatrix=s;var o=nr();wr(o,o,[t/2,-n/2,1]),hr(o,o,[1,-1,0]),_r(o,o,s);var v=ge(nr(),o);if(!v)throw new Error("Pixel project matrix not invertible");this.pixelProjectionMatrix=o,this.pixelUnprojectionMatrix=v}},{key:"projectFlat",value:function(t){return k(t)}},{key:"unprojectFlat",value:function(t){return Z(t)}},{key:"getMapCenterByLngLatPosition",value:function(t){var n=t.lngLat,a=t.pos,i=Ar(a,this.pixelUnprojectionMatrix),s=k(n),o=Ur([],s,Pe([],i)),v=Ur([],this.center,o);return Z(v)}},{key:"fitBounds",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=this.width,i=this.height,s=zr(Object.assign({width:a,height:i,bounds:t},n)),o=s.longitude,v=s.latitude,l=s.zoom;return new r({width:a,height:i,longitude:o,latitude:v,zoom:l})}},{key:"getBounds",value:function(t){var n=this.getBoundingRegion(t),a=Math.min.apply(Math,tr(n.map(function(v){return v[0]}))),i=Math.max.apply(Math,tr(n.map(function(v){return v[0]}))),s=Math.min.apply(Math,tr(n.map(function(v){return v[1]}))),o=Math.max.apply(Math,tr(n.map(function(v){return v[1]})));return[[a,s],[i,o]]}},{key:"getBoundingRegion",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Er(this,t.z||0)}},{key:"getLocationAtPoint",value:function(t){var n=t.lngLat,a=t.pos;return this.getMapCenterByLngLatPosition({lngLat:n,pos:a})}}]),r}();function Re(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(r,a).enumerable})),t.push.apply(t,n)}return t}function H(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Re(Object(t),!0).forEach(function(n){(0,De.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):Re(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var ne=512,_t=Math.PI/180;function Tr(r){var e=r.map,t=r.gl,n=r.deck;if(e.__deck)return e.__deck;var a=n?.props._customRender,i=ae(H(H({},n?.props),{},{_customRender:function(){e.triggerRepaint(),a?.("")}})),s;return(!n||n.props.gl===t)&&(Object.assign(i,{gl:t,width:null,height:null,touchAction:"unset",viewState:or(e)}),e.on("move",function(){return Ot(s,e)})),n?(s=n,n.setProps(i),n.userData.isExternal=!0):(s=new X.Deck(i),e.on("remove",function(){s.finalize(),e.__deck=null})),s.userData.mapboxLayers=new Set,e.__deck=s,e.on("render",function(){s.isInitialized&&Pt(s,e)}),s}function ae(r){var e="useDevicePixels"in r?r.useDevicePixels:!0,t=H(H({},r),{},{useDevicePixels:e,parameters:H({depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},r.parameters),views:r.views||[new X.MapView({id:"mapbox"})]});return t}function Ie(r,e){r.userData.mapboxLayers.add(e),ie(r)}function ke(r,e){r.userData.mapboxLayers.delete(e),ie(r)}function Ne(r,e){ie(r)}function Fe(r,e,t){var n=r.userData,a=n.currentViewport,i=!1;a||(a=Ce(r,e,!0),r.userData.currentViewport=a,i=!0),r.isInitialized&&r._drawLayers("mapbox-repaint",{viewports:[a],layerFilter:function(o){var v=o.layer;return t.id===v.id},clearStack:i,clearCanvas:!1})}function or(r){var e,t=r.getCenter(),n=t.lng,a=t.lat,i={longitude:(n+540)%360-180,latitude:a,zoom:r.getZoom(),bearing:r.getBearing(),pitch:r.getPitch(),padding:r.getPadding(),repeat:r.getRenderWorldCopies()};return(e=r.getTerrain)!==null&&e!==void 0&&e.call(r)&&wt(r,i),i}function wt(r,e){if(r.getFreeCameraOptions){var t=r.getFreeCameraOptions(),n=t.position;if(!n||n.z===void 0)return;var a=r.transform.height,i=e.longitude,s=e.latitude,o=e.pitch,v=n.x*ne,l=(1-n.y)*ne,c=n.z*ne,f=k([i,s]),h=v-f[0],y=l-f[1],u=Math.sqrt(h*h+y*y),_=o*_t,w=1.5*a,M=w*Math.sin(_)/u;e.zoom=Math.log2(M);var P=w*Math.cos(_)/M,p=c-P;e.position=[0,0,p/Kr(s)]}else typeof r.transform.elevation=="number"&&(e.position=[0,0,r.transform.elevation])}function Ce(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return new X.WebMercatorViewport(H(H({id:"mapbox",x:0,y:0,width:r.width,height:r.height},or(e)),{},{nearZMultiplier:t?.02:.1}))}function Pt(r,e){var t=r.userData,n=t.mapboxLayers,a=t.isExternal;if(a){var i=Array.from(n,function(f){return f.id}),s=(0,X._flatten)(r.props.layers,Boolean),o=s.some(function(f){return f&&!i.includes(f.id)}),v=r.getViewports(),l=v.findIndex(function(f){return f.id==="mapbox"}),c=v.length>1||l<0;(o||c)&&(l>=0&&(v=v.slice(),v[l]=Ce(r,e,!1)),r._drawLayers("mapbox-repaint",{viewports:v,layerFilter:function(h){return(!r.props.layerFilter||r.props.layerFilter(h))&&(h.viewport.id!=="mapbox"||!i.includes(h.layer.id))},clearCanvas:!1}))}r.userData.currentViewport=null}function Ot(r,e){r.setProps({viewState:or(e)}),r.needsRedraw({clearRedrawFlags:!0})}function ie(r){if(!r.userData.isExternal){var e=[];r.userData.mapboxLayers.forEach(function(t){var n=t.props.type,a=new n(t.props);e.push(a)}),r.setProps({layers:e})}}var Lr=function(){function r(e){if((0,Ye.default)(this,r),(0,G.default)(this,"id",void 0),(0,G.default)(this,"type",void 0),(0,G.default)(this,"renderingMode",void 0),(0,G.default)(this,"map",void 0),(0,G.default)(this,"deck",void 0),(0,G.default)(this,"props",void 0),!e.id)throw new Error("Layer must have an unique id");this.id=e.id,this.type="custom",this.renderingMode=e.renderingMode||"3d",this.map=null,this.deck=null,this.props=e}return(0,Ze.default)(r,[{key:"onAdd",value:function(t,n){this.map=t,this.deck=Tr({map:t,gl:n,deck:this.props.deck}),Ie(this.deck,this)}},{key:"onRemove",value:function(){this.deck&&ke(this.deck,this)}},{key:"setProps",value:function(t){Object.assign(this.props,t,{id:this.id}),this.deck&&Ne(this.deck,this)}},{key:"render",value:function(){Fe(this.deck,this.map,this)}}]),r}();var Xe=I(We()),He=I(kr()),Ge=I(Nr()),q=I(gr()),Q=I(rr());var oe=I(rr());function Sr(r,e){var t=typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=Et(r))||e&&r&&typeof r.length=="number"){t&&(r=t);var n=0,a=function(){};return{s:a,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(l){throw l},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
4
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i=!0,s=!1,o;return{s:function(){t=t.call(r)},n:function(){var l=t.next();return i=l.done,l},e:function(l){s=!0,o=l},f:function(){try{!i&&t.return!=null&&t.return()}finally{if(s)throw o}}}}function Et(r,e){if(r){if(typeof r=="string")return Be(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);if(t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set")return Array.from(r);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Be(r,e)}}function Be(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t<e;t++)n[t]=r[t];return n}var se="__UNDEFINED__";function pr(r,e,t,n){if(!(!r||!e||!r.style||!r.style._loaded)){var a=(0,oe._flatten)(n,Boolean);if(t!==n){var i=(0,oe._flatten)(t,Boolean),s=new Set(i.map(function(d){return d.id})),o=Sr(a),v;try{for(o.s();!(v=o.n()).done;){var l=v.value;s.delete(l.id)}}catch(d){o.e(d)}finally{o.f()}var c=Sr(s),f;try{for(c.s();!(f=c.n()).done;){var h=f.value;r.getLayer(h)&&r.removeLayer(h)}}catch(d){c.e(d)}finally{c.f()}}var y=Sr(a),u;try{for(y.s();!(u=y.n()).done;){var _=u.value,w=r.getLayer(_.id);w?w.implementation.setProps(_.props):r.addLayer(new Lr({id:_.id,deck:e}),_.props.beforeId)}}catch(d){y.e(d)}finally{y.f()}var M=r.style._order,P={},p=Sr(a),g;try{for(p.s();!(g=p.n()).done;){var m=g.value,x=m.props.beforeId;(!x||!M.includes(x))&&(x=se),P[x]=P[x]||[],P[x].push(m.id)}}catch(d){p.e(d)}finally{p.f()}for(var A in P)for(var R=P[A],L=A===se?M.length:M.indexOf(A),S=A===se?void 0:A,z=R.length-1;z>=0;z--){var O=R[z],E=M.indexOf(O);E!==L-1&&(r.moveLayer(O,S),E>L&&L++),L--,S=O}}}var Tt=["interleaved"];function Ue(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(r,a).enumerable})),t.push.apply(t,n)}return t}function jr(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Ue(Object(t),!0).forEach(function(n){(0,q.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):Ue(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var Qe=function(){function r(e){var t=this;(0,He.default)(this,r),(0,q.default)(this,"_props",void 0),(0,q.default)(this,"_deck",void 0),(0,q.default)(this,"_map",void 0),(0,q.default)(this,"_container",void 0),(0,q.default)(this,"_interleaved",void 0),(0,q.default)(this,"_handleStyleChange",function(){pr(t._map,t._deck,t._props.layers,t._props.layers)}),(0,q.default)(this,"_updateContainerSize",function(){if(t._map&&t._container){var s=t._map.getContainer(),o=s.clientWidth,v=s.clientHeight;Object.assign(t._container.style,{width:"".concat(o,"px"),height:"".concat(v,"px")})}}),(0,q.default)(this,"_updateViewState",function(){var s=t._deck;s&&(s.setProps({viewState:or(t._map)}),s.redraw())}),(0,q.default)(this,"_handleMouseEvent",function(s){var o=t._deck;if(o){var v={type:s.type,offsetCenter:s.point,srcEvent:s};switch(s.type){case"click":v.tapCount=1,o._onPointerDown(v),o._onEvent(v);break;case"dblclick":v.type="click",v.tapCount=2,o._onEvent(v);break;case"mousemove":v.type="pointermove",o._onPointerMove(v);break;case"mouseout":v.type="pointerleave",o._onPointerMove(v);break;default:return}}});var n=e.interleaved,a=n===void 0?!1:n,i=(0,Xe.default)(e,Tt);this._interleaved=a,this._props=i}return(0,Ge.default)(r,[{key:"setProps",value:function(t){this._interleaved&&t.layers&&pr(this._map,this._deck,this._props.layers,t.layers),Object.assign(this._props,t),this._deck&&this._deck.setProps(this._interleaved?ae(this._props):this._props)}},{key:"onAdd",value:function(t){return this._map=t,this._interleaved?this._onAddInterleaved(t):this._onAddOverlaid(t)}},{key:"_onAddOverlaid",value:function(t){var n=document.createElement("div");return Object.assign(n.style,{position:"absolute",left:0,top:0,pointerEvents:"none"}),this._container=n,this._deck=new Q.Deck(jr(jr({},this._props),{},{parent:n,viewState:or(t)})),t.on("resize",this._updateContainerSize),t.on("render",this._updateViewState),t.on("mousemove",this._handleMouseEvent),t.on("mouseout",this._handleMouseEvent),t.on("click",this._handleMouseEvent),t.on("dblclick",this._handleMouseEvent),this._updateContainerSize(),n}},{key:"_onAddInterleaved",value:function(t){return this._deck=Tr({map:t,gl:t.painter.context.gl,deck:new Q.Deck(jr(jr({},this._props),{},{gl:t.painter.context.gl}))}),t.on("styledata",this._handleStyleChange),pr(t,this._deck,[],this._props.layers),document.createElement("div")}},{key:"onRemove",value:function(){var t,n=this._map;n&&(this._interleaved?this._onRemoveInterleaved(n):this._onRemoveOverlaid(n)),(t=this._deck)===null||t===void 0||t.finalize(),this._deck=void 0,this._map=void 0,this._container=void 0}},{key:"_onRemoveOverlaid",value:function(t){t.off("resize",this._updateContainerSize),t.off("render",this._updateViewState),t.off("mousemove",this._handleMouseEvent),t.off("mouseout",this._handleMouseEvent),t.off("click",this._handleMouseEvent),t.off("dblclick",this._handleMouseEvent)}},{key:"_onRemoveInterleaved",value:function(t){t.off("styledata",this._handleStyleChange),pr(t,this._deck,this._props.layers,[])}},{key:"getDefaultPosition",value:function(){return"top-left"}},{key:"pickObject",value:function(t){return(0,Q.assert)(this._deck),this._deck.pickObject(t)}},{key:"pickMultipleObjects",value:function(t){return(0,Q.assert)(this._deck),this._deck.pickMultipleObjects(t)}},{key:"pickObjects",value:function(t){return(0,Q.assert)(this._deck),this._deck.pickObjects(t)}},{key:"finalize",value:function(){this._map&&this._map.removeControl(this)}}]),r}();return lt(dr);})();
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@deck.gl/mapbox",
|
|
3
3
|
"description": "Use deck.gl layers as custom mapbox-gl-js layers",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "8.9.0-
|
|
5
|
+
"version": "8.9.0-beta.1",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
],
|
|
27
27
|
"sideEffects": false,
|
|
28
28
|
"scripts": {
|
|
29
|
-
"build-bundle": "
|
|
30
|
-
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env
|
|
29
|
+
"build-bundle": "ocular-bundle ./bundle.ts",
|
|
30
|
+
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env=dev"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@types/mapbox-gl": "^2.6.3"
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"peerDependencies": {
|
|
36
36
|
"@deck.gl/core": "^8.0.0"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "47223d1ea084c3f9b0c9f0f9736682850bb5db85"
|
|
39
39
|
}
|
package/src/deck-utils.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type MapboxLayer from './mapbox-layer';
|
|
|
4
4
|
import type {Map} from 'mapbox-gl';
|
|
5
5
|
|
|
6
6
|
import {lngLatToWorld, unitsPerMeter} from '@math.gl/web-mercator';
|
|
7
|
+
import GL from '@luma.gl/constants';
|
|
7
8
|
|
|
8
9
|
type UserData = {
|
|
9
10
|
isExternal: boolean;
|
|
@@ -30,10 +31,11 @@ export function getDeckInstance({
|
|
|
30
31
|
return map.__deck;
|
|
31
32
|
}
|
|
32
33
|
|
|
34
|
+
// Only initialize certain props once per context
|
|
33
35
|
const customRender = deck?.props._customRender;
|
|
34
36
|
|
|
35
|
-
const deckProps
|
|
36
|
-
|
|
37
|
+
const deckProps = getInterleavedProps({
|
|
38
|
+
...deck?.props,
|
|
37
39
|
_customRender: () => {
|
|
38
40
|
map.triggerRepaint();
|
|
39
41
|
// customRender may be subscribed by DeckGL React component to update child props
|
|
@@ -41,19 +43,8 @@ export function getDeckInstance({
|
|
|
41
43
|
// Hack - do not pass a redraw reason here to prevent the React component from clearing the context
|
|
42
44
|
// Rerender will be triggered by MapboxLayer's render()
|
|
43
45
|
customRender?.('');
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
parameters: {
|
|
47
|
-
depthMask: true,
|
|
48
|
-
depthTest: true,
|
|
49
|
-
blend: true,
|
|
50
|
-
blendFunc: [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA],
|
|
51
|
-
polygonOffsetFill: true,
|
|
52
|
-
depthFunc: gl.LEQUAL,
|
|
53
|
-
blendEquation: gl.FUNC_ADD
|
|
54
|
-
},
|
|
55
|
-
views: (deck && deck.props.views) || [new MapView({id: 'mapbox'})]
|
|
56
|
-
};
|
|
46
|
+
}
|
|
47
|
+
});
|
|
57
48
|
|
|
58
49
|
let deckInstance: Deck;
|
|
59
50
|
|
|
@@ -94,6 +85,29 @@ export function getDeckInstance({
|
|
|
94
85
|
return deckInstance;
|
|
95
86
|
}
|
|
96
87
|
|
|
88
|
+
export function getInterleavedProps(currProps: DeckProps) {
|
|
89
|
+
const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;
|
|
90
|
+
|
|
91
|
+
const nextProps: DeckProps = {
|
|
92
|
+
...currProps,
|
|
93
|
+
useDevicePixels,
|
|
94
|
+
// TODO: import these defaults from a single source of truth
|
|
95
|
+
parameters: {
|
|
96
|
+
depthMask: true,
|
|
97
|
+
depthTest: true,
|
|
98
|
+
blend: true,
|
|
99
|
+
blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],
|
|
100
|
+
polygonOffsetFill: true,
|
|
101
|
+
depthFunc: GL.LEQUAL,
|
|
102
|
+
blendEquation: GL.FUNC_ADD,
|
|
103
|
+
...currProps.parameters
|
|
104
|
+
},
|
|
105
|
+
views: currProps.views || [new MapView({id: 'mapbox'})]
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
return nextProps;
|
|
109
|
+
}
|
|
110
|
+
|
|
97
111
|
export function addLayer(deck: Deck, layer: MapboxLayer<any>): void {
|
|
98
112
|
(deck.userData as UserData).mapboxLayers.add(layer);
|
|
99
113
|
updateLayers(deck);
|
package/src/mapbox-overlay.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {Deck, assert} from '@deck.gl/core';
|
|
2
|
-
import {getViewState} from './deck-utils';
|
|
2
|
+
import {getViewState, getDeckInstance, getInterleavedProps} from './deck-utils';
|
|
3
3
|
|
|
4
4
|
import type {Map, IControl, MapMouseEvent} from 'mapbox-gl';
|
|
5
5
|
import type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';
|
|
@@ -18,7 +18,9 @@ export type MapboxOverlayProps = Omit<
|
|
|
18
18
|
| 'viewState'
|
|
19
19
|
| 'initialViewState'
|
|
20
20
|
| 'controller'
|
|
21
|
-
|
|
21
|
+
> & {
|
|
22
|
+
interleaved?: boolean;
|
|
23
|
+
};
|
|
22
24
|
|
|
23
25
|
/**
|
|
24
26
|
* Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface
|
|
@@ -31,11 +33,7 @@ export default class MapboxOverlay implements IControl {
|
|
|
31
33
|
private _container?: HTMLDivElement;
|
|
32
34
|
private _interleaved: boolean;
|
|
33
35
|
|
|
34
|
-
constructor(
|
|
35
|
-
props: MapboxOverlayProps & {
|
|
36
|
-
interleaved?: boolean;
|
|
37
|
-
}
|
|
38
|
-
) {
|
|
36
|
+
constructor(props: MapboxOverlayProps) {
|
|
39
37
|
const {interleaved = false, ...otherProps} = props;
|
|
40
38
|
this._interleaved = interleaved;
|
|
41
39
|
this._props = otherProps;
|
|
@@ -50,7 +48,7 @@ export default class MapboxOverlay implements IControl {
|
|
|
50
48
|
Object.assign(this._props, props);
|
|
51
49
|
|
|
52
50
|
if (this._deck) {
|
|
53
|
-
this._deck.setProps(this._props);
|
|
51
|
+
this._deck.setProps(this._interleaved ? getInterleavedProps(this._props) : this._props);
|
|
54
52
|
}
|
|
55
53
|
}
|
|
56
54
|
|
|
@@ -89,10 +87,15 @@ export default class MapboxOverlay implements IControl {
|
|
|
89
87
|
}
|
|
90
88
|
|
|
91
89
|
private _onAddInterleaved(map: Map): HTMLDivElement {
|
|
92
|
-
this._deck =
|
|
93
|
-
|
|
90
|
+
this._deck = getDeckInstance({
|
|
91
|
+
map,
|
|
94
92
|
// @ts-ignore non-public map property
|
|
95
|
-
gl: map.painter.context.gl
|
|
93
|
+
gl: map.painter.context.gl,
|
|
94
|
+
deck: new Deck({
|
|
95
|
+
...this._props,
|
|
96
|
+
// @ts-ignore non-public map property
|
|
97
|
+
gl: map.painter.context.gl
|
|
98
|
+
})
|
|
96
99
|
});
|
|
97
100
|
|
|
98
101
|
map.on('styledata', this._handleStyleChange);
|
package/src/resolve-layers.ts
CHANGED
|
@@ -7,6 +7,7 @@ import type {Map} from 'mapbox-gl';
|
|
|
7
7
|
const UNDEFINED_BEFORE_ID = '__UNDEFINED__';
|
|
8
8
|
|
|
9
9
|
/** Insert Deck layers into the mapbox Map according to the user-defined order */
|
|
10
|
+
// eslint-disable-next-line complexity, max-statements
|
|
10
11
|
export function resolveLayers(
|
|
11
12
|
map?: Map,
|
|
12
13
|
deck?: Deck,
|
package/typed/deck-utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Deck } from '@deck.gl/core/typed';
|
|
2
|
-
import type { MapViewState } from '@deck.gl/core/typed';
|
|
2
|
+
import type { DeckProps, MapViewState } from '@deck.gl/core/typed';
|
|
3
3
|
import type MapboxLayer from './mapbox-layer';
|
|
4
4
|
import type { Map } from 'mapbox-gl';
|
|
5
5
|
export declare function getDeckInstance({ map, gl, deck }: {
|
|
@@ -9,6 +9,7 @@ export declare function getDeckInstance({ map, gl, deck }: {
|
|
|
9
9
|
gl: WebGLRenderingContext;
|
|
10
10
|
deck?: Deck;
|
|
11
11
|
}): Deck;
|
|
12
|
+
export declare function getInterleavedProps(currProps: DeckProps): DeckProps;
|
|
12
13
|
export declare function addLayer(deck: Deck, layer: MapboxLayer<any>): void;
|
|
13
14
|
export declare function removeLayer(deck: Deck, layer: MapboxLayer<any>): void;
|
|
14
15
|
export declare function updateLayer(deck: Deck, layer: MapboxLayer<any>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deck-utils.d.ts","sourceRoot":"","sources":["../src/deck-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAoD,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"deck-utils.d.ts","sourceRoot":"","sources":["../src/deck-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAoD,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,EAAC,SAAS,EAAE,YAAY,EAAQ,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,WAAW,CAAC;AAgBnC,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACH,EAAE,EACF,IAAI,EACL,EAAE;IACD,GAAG,EAAE,GAAG,GAAG;QAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;KAAC,CAAC;IAClC,EAAE,EAAE,qBAAqB,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,GAAG,IAAI,CA0DP;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,aAqBvD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGrE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAErE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAqB7E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,GAAG;IACrD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CA6BA"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { Deck, WebMercatorViewport, MapView, _flatten as flatten } from '@deck.gl/core';
|
|
2
|
+
export function getDeckInstance({ map, gl, deck }) {
|
|
3
|
+
// Only create one deck instance per context
|
|
4
|
+
if (map.__deck) {
|
|
5
|
+
return map.__deck;
|
|
6
|
+
}
|
|
7
|
+
const customRender = deck?.props._customRender;
|
|
8
|
+
const deckProps = {
|
|
9
|
+
useDevicePixels: true,
|
|
10
|
+
_customRender: (reason) => {
|
|
11
|
+
map.triggerRepaint();
|
|
12
|
+
// customRender may be subscribed by DeckGL React component to update child props
|
|
13
|
+
// make sure it is still called
|
|
14
|
+
customRender?.(reason);
|
|
15
|
+
},
|
|
16
|
+
// TODO: import these defaults from a single source of truth
|
|
17
|
+
parameters: {
|
|
18
|
+
depthMask: true,
|
|
19
|
+
depthTest: true,
|
|
20
|
+
blend: true,
|
|
21
|
+
blendFunc: [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA],
|
|
22
|
+
polygonOffsetFill: true,
|
|
23
|
+
depthFunc: gl.LEQUAL,
|
|
24
|
+
blendEquation: gl.FUNC_ADD
|
|
25
|
+
},
|
|
26
|
+
views: (deck && deck.props.views) || [new MapView({ id: 'mapbox' })]
|
|
27
|
+
};
|
|
28
|
+
if (!deck || deck.props.gl === gl) {
|
|
29
|
+
// deck is using the WebGLContext created by mapbox
|
|
30
|
+
// block deck from setting the canvas size
|
|
31
|
+
Object.assign(deckProps, {
|
|
32
|
+
gl,
|
|
33
|
+
width: null,
|
|
34
|
+
height: null,
|
|
35
|
+
touchAction: 'unset',
|
|
36
|
+
viewState: getViewState(map)
|
|
37
|
+
});
|
|
38
|
+
// If using the WebGLContext created by deck (React use case), we use deck's viewState to drive the map.
|
|
39
|
+
// Otherwise (pure JS use case), we use the map's viewState to drive deck.
|
|
40
|
+
map.on('move', () => onMapMove(deck, map));
|
|
41
|
+
}
|
|
42
|
+
if (deck) {
|
|
43
|
+
deck.setProps(deckProps);
|
|
44
|
+
deck.userData.isExternal = true;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
deck = new Deck(deckProps);
|
|
48
|
+
map.on('remove', () => {
|
|
49
|
+
deck.finalize();
|
|
50
|
+
map.__deck = null;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
deck.userData.mapboxLayers = new Set();
|
|
54
|
+
deck.userData.mapboxVersion = getMapboxVersion(map);
|
|
55
|
+
map.__deck = deck;
|
|
56
|
+
map.on('render', () => {
|
|
57
|
+
// @ts-expect-error (2445) protected property
|
|
58
|
+
if (deck.layerManager)
|
|
59
|
+
afterRender(deck, map);
|
|
60
|
+
});
|
|
61
|
+
return deck;
|
|
62
|
+
}
|
|
63
|
+
export function addLayer(deck, layer) {
|
|
64
|
+
deck.userData.mapboxLayers.add(layer);
|
|
65
|
+
updateLayers(deck);
|
|
66
|
+
}
|
|
67
|
+
export function removeLayer(deck, layer) {
|
|
68
|
+
deck.userData.mapboxLayers.delete(layer);
|
|
69
|
+
updateLayers(deck);
|
|
70
|
+
}
|
|
71
|
+
export function updateLayer(deck, layer) {
|
|
72
|
+
updateLayers(deck);
|
|
73
|
+
}
|
|
74
|
+
export function drawLayer(deck, map, layer) {
|
|
75
|
+
let { currentViewport } = deck.userData;
|
|
76
|
+
if (!currentViewport) {
|
|
77
|
+
// This is the first layer drawn in this render cycle.
|
|
78
|
+
// Generate viewport from the current map state.
|
|
79
|
+
currentViewport = getViewport(deck, map, true);
|
|
80
|
+
deck.userData.currentViewport = currentViewport;
|
|
81
|
+
}
|
|
82
|
+
// @ts-expect-error (2445) protected property
|
|
83
|
+
if (!deck.layerManager) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
deck._drawLayers('mapbox-repaint', {
|
|
87
|
+
viewports: [currentViewport],
|
|
88
|
+
layerFilter: ({ layer: deckLayer }) => layer.id === deckLayer.id,
|
|
89
|
+
clearCanvas: false
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
export function getViewState(map) {
|
|
93
|
+
const { lng, lat } = map.getCenter();
|
|
94
|
+
return {
|
|
95
|
+
// Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian
|
|
96
|
+
// https://github.com/visgl/deck.gl/issues/6894
|
|
97
|
+
longitude: ((lng + 540) % 360) - 180,
|
|
98
|
+
latitude: lat,
|
|
99
|
+
zoom: map.getZoom(),
|
|
100
|
+
bearing: map.getBearing(),
|
|
101
|
+
pitch: map.getPitch(),
|
|
102
|
+
repeat: map.getRenderWorldCopies()
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function getMapboxVersion(map) {
|
|
106
|
+
// parse mapbox version string
|
|
107
|
+
let major = 0;
|
|
108
|
+
let minor = 0;
|
|
109
|
+
// @ts-ignore (2339) undefined property
|
|
110
|
+
const version = map.version;
|
|
111
|
+
if (version) {
|
|
112
|
+
[major, minor] = version.split('.').slice(0, 2).map(Number);
|
|
113
|
+
}
|
|
114
|
+
return { major, minor };
|
|
115
|
+
}
|
|
116
|
+
function getViewport(deck, map, useMapboxProjection = true) {
|
|
117
|
+
const { mapboxVersion } = deck.userData;
|
|
118
|
+
return new WebMercatorViewport(Object.assign({
|
|
119
|
+
id: 'mapbox',
|
|
120
|
+
x: 0,
|
|
121
|
+
y: 0,
|
|
122
|
+
width: deck.width,
|
|
123
|
+
height: deck.height
|
|
124
|
+
}, getViewState(map), useMapboxProjection
|
|
125
|
+
? {
|
|
126
|
+
// match mapbox's projection matrix
|
|
127
|
+
// A change of near plane was made in 1.3.0
|
|
128
|
+
// https://github.com/mapbox/mapbox-gl-js/pull/8502
|
|
129
|
+
nearZMultiplier: (mapboxVersion.major === 1 && mapboxVersion.minor >= 3) || mapboxVersion.major >= 2
|
|
130
|
+
? 0.02
|
|
131
|
+
: 1 / (deck.height || 1)
|
|
132
|
+
}
|
|
133
|
+
: {
|
|
134
|
+
// use deck.gl's own default
|
|
135
|
+
nearZMultiplier: 0.1
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
function afterRender(deck, map) {
|
|
139
|
+
const { mapboxLayers, isExternal } = deck.userData;
|
|
140
|
+
if (isExternal) {
|
|
141
|
+
// Draw non-Mapbox layers
|
|
142
|
+
const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);
|
|
143
|
+
const deckLayers = flatten(deck.props.layers, Boolean);
|
|
144
|
+
const hasNonMapboxLayers = deckLayers.some(layer => layer && !mapboxLayerIds.includes(layer.id));
|
|
145
|
+
let viewports = deck.getViewports();
|
|
146
|
+
const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');
|
|
147
|
+
const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;
|
|
148
|
+
if (hasNonMapboxLayers || hasNonMapboxViews) {
|
|
149
|
+
if (mapboxViewportIdx >= 0) {
|
|
150
|
+
viewports = viewports.slice();
|
|
151
|
+
viewports[mapboxViewportIdx] = getViewport(deck, map, false);
|
|
152
|
+
}
|
|
153
|
+
deck._drawLayers('mapbox-repaint', {
|
|
154
|
+
viewports,
|
|
155
|
+
layerFilter: params => (!deck.props.layerFilter || deck.props.layerFilter(params)) &&
|
|
156
|
+
(params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),
|
|
157
|
+
clearCanvas: false
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// End of render cycle, clear generated viewport
|
|
162
|
+
deck.userData.currentViewport = null;
|
|
163
|
+
}
|
|
164
|
+
function onMapMove(deck, map) {
|
|
165
|
+
deck.setProps({
|
|
166
|
+
viewState: getViewState(map)
|
|
167
|
+
});
|
|
168
|
+
// Camera changed, will trigger a map repaint right after this
|
|
169
|
+
// Clear any change flag triggered by setting viewState so that deck does not request
|
|
170
|
+
// a second repaint
|
|
171
|
+
deck.needsRedraw({ clearRedrawFlags: true });
|
|
172
|
+
}
|
|
173
|
+
function updateLayers(deck) {
|
|
174
|
+
if (deck.userData.isExternal) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const layers = [];
|
|
178
|
+
let layerIndex = 0;
|
|
179
|
+
deck.userData.mapboxLayers.forEach(deckLayer => {
|
|
180
|
+
const LayerType = deckLayer.props.type;
|
|
181
|
+
const layer = new LayerType(deckLayer.props, { _offset: layerIndex++ });
|
|
182
|
+
layers.push(layer);
|
|
183
|
+
});
|
|
184
|
+
deck.setProps({ layers });
|
|
185
|
+
}
|
package/typed/index.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer } from './deck-utils';
|
|
2
|
+
export default class MapboxLayer {
|
|
3
|
+
/* eslint-disable no-this-before-super */
|
|
4
|
+
constructor(props) {
|
|
5
|
+
if (!props.id) {
|
|
6
|
+
throw new Error('Layer must have an unique id');
|
|
7
|
+
}
|
|
8
|
+
this.id = props.id;
|
|
9
|
+
this.type = 'custom';
|
|
10
|
+
this.renderingMode = props.renderingMode || '3d';
|
|
11
|
+
this.map = null;
|
|
12
|
+
this.deck = null;
|
|
13
|
+
this.props = props;
|
|
14
|
+
}
|
|
15
|
+
/* Mapbox custom layer methods */
|
|
16
|
+
onAdd(map, gl) {
|
|
17
|
+
this.map = map;
|
|
18
|
+
this.deck = getDeckInstance({ map, gl, deck: this.props.deck });
|
|
19
|
+
addLayer(this.deck, this);
|
|
20
|
+
}
|
|
21
|
+
onRemove() {
|
|
22
|
+
if (this.deck) {
|
|
23
|
+
removeLayer(this.deck, this);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
setProps(props) {
|
|
27
|
+
// id cannot be changed
|
|
28
|
+
Object.assign(this.props, props, { id: this.id });
|
|
29
|
+
// safe guard in case setProps is called before onAdd
|
|
30
|
+
if (this.deck) {
|
|
31
|
+
updateLayer(this.deck, this);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
render() {
|
|
35
|
+
drawLayer(this.deck, this.map, this);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Deck } from '@deck.gl/core/typed';
|
|
2
2
|
import type { Map, IControl } from 'mapbox-gl';
|
|
3
3
|
import type { DeckProps } from '@deck.gl/core/typed';
|
|
4
|
-
export declare type MapboxOverlayProps = Omit<DeckProps, 'width' | 'height' | 'gl' | 'parent' | 'canvas' | '_customRender' | 'viewState' | 'initialViewState' | 'controller'
|
|
4
|
+
export declare type MapboxOverlayProps = Omit<DeckProps, 'width' | 'height' | 'gl' | 'parent' | 'canvas' | '_customRender' | 'viewState' | 'initialViewState' | 'controller'> & {
|
|
5
|
+
interleaved?: boolean;
|
|
6
|
+
};
|
|
5
7
|
/**
|
|
6
8
|
* Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface
|
|
7
9
|
* Renders deck.gl layers over the base map and automatically synchronizes with the map's camera
|
|
@@ -12,9 +14,7 @@ export default class MapboxOverlay implements IControl {
|
|
|
12
14
|
private _map?;
|
|
13
15
|
private _container?;
|
|
14
16
|
private _interleaved;
|
|
15
|
-
constructor(props: MapboxOverlayProps
|
|
16
|
-
interleaved?: boolean;
|
|
17
|
-
});
|
|
17
|
+
constructor(props: MapboxOverlayProps);
|
|
18
18
|
/** Update (partial) props of the underlying Deck instance. */
|
|
19
19
|
setProps(props: MapboxOverlayProps): void;
|
|
20
20
|
/** Called when the control is added to a map */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapbox-overlay.d.ts","sourceRoot":"","sources":["../src/mapbox-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAS,MAAM,eAAe,CAAC;AAG3C,OAAO,KAAK,EAAC,GAAG,EAAE,QAAQ,EAAgB,MAAM,WAAW,CAAC;AAE5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAI7C,oBAAY,kBAAkB,GAAG,IAAI,CACnC,SAAS,EACP,OAAO,GACP,QAAQ,GACR,IAAI,GACJ,QAAQ,GACR,QAAQ,GACR,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,YAAY,CACf,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,QAAQ;IACpD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAAC,CAAO;IACrB,OAAO,CAAC,IAAI,CAAC,CAAM;IACnB,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,YAAY,CAAU;
|
|
1
|
+
{"version":3,"file":"mapbox-overlay.d.ts","sourceRoot":"","sources":["../src/mapbox-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAS,MAAM,eAAe,CAAC;AAG3C,OAAO,KAAK,EAAC,GAAG,EAAE,QAAQ,EAAgB,MAAM,WAAW,CAAC;AAE5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAI7C,oBAAY,kBAAkB,GAAG,IAAI,CACnC,SAAS,EACP,OAAO,GACP,QAAQ,GACR,IAAI,GACJ,QAAQ,GACR,QAAQ,GACR,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,YAAY,CACf,GAAG;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,QAAQ;IACpD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAAC,CAAO;IACrB,OAAO,CAAC,IAAI,CAAC,CAAM;IACnB,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,YAAY,CAAU;gBAElB,KAAK,EAAE,kBAAkB;IAMrC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAYzC,gDAAgD;IAChD,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc;IAK/B,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,iBAAiB;IAkBzB,oDAAoD;IACpD,QAAQ,IAAI,IAAI;IAiBhB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,oBAAoB;IAK5B,kBAAkB;IAIlB,0CAA0C;IAC1C,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAKrF,mDAAmD;IACnD,mBAAmB,CACjB,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,GACjD,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAK1C,2CAA2C;IAC3C,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAKxF,iDAAiD;IACjD,QAAQ;IAMR,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,oBAAoB,CAQ1B;IAEF,OAAO,CAAC,gBAAgB,CAQtB;IAEF,OAAO,CAAC,iBAAiB,CA4CvB;CACH"}
|