@deck.gl/mapbox 8.9.0-alpha.5 → 8.9.0-beta.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.
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-alpha.5",
5
+ "version": "8.9.0-beta.2",
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": "webpack --config ../../scripts/bundle.config.js",
30
- "prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env.dev"
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": "36330f8ca588055b11ed8032dc68ced641cb258b"
38
+ "gitHead": "5dae086e4f3eb46c30d8e761f9d600be4f68e949"
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: DeckProps = {
36
- useDevicePixels: true,
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
- // TODO: import these defaults from a single source of truth
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);
@@ -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 = new Deck({
93
- ...this._props,
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);
@@ -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,
@@ -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,EAAY,YAAY,EAAQ,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,WAAW,CAAC;AAenC,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,CAoEP;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"}
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,2 @@
1
+ export { default as MapboxLayer } from './mapbox-layer';
2
+ export { default as MapboxOverlay } from './mapbox-overlay';
@@ -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;gBAG5B,KAAK,EAAE,kBAAkB,GAAG;QAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB;IAOH,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;IAazB,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"}
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"}