diff --git a/.gitignore b/.gitignore index ac297306..9047c60b 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,11 @@ samples/.env samples/*/dist/ samples/**/*.js +samples/react-map-3d-custom/dist/ +samples/react-map-3d-custom/node_modules/ +samples/react-map-3d-custom-gpx/dist/ +samples/react-map-3d-custom-gpx/node_modules/ + # Ignore playwright outputs /test-results/ /playwright-report/ diff --git a/.parcel-cache/1e5f50c7ff98c40c-BundleGraph b/.parcel-cache/1e5f50c7ff98c40c-BundleGraph new file mode 100644 index 00000000..74207a2b Binary files /dev/null and b/.parcel-cache/1e5f50c7ff98c40c-BundleGraph differ diff --git a/.parcel-cache/3426731880f231f1-RequestGraph b/.parcel-cache/3426731880f231f1-RequestGraph new file mode 100644 index 00000000..ddfe940a Binary files /dev/null and b/.parcel-cache/3426731880f231f1-RequestGraph differ diff --git a/.parcel-cache/8913604af9c25786-AssetGraph b/.parcel-cache/8913604af9c25786-AssetGraph new file mode 100644 index 00000000..332ef3a5 Binary files /dev/null and b/.parcel-cache/8913604af9c25786-AssetGraph differ diff --git a/.parcel-cache/9d321af8a9fb7fcb-RequestGraph b/.parcel-cache/9d321af8a9fb7fcb-RequestGraph new file mode 100644 index 00000000..8b2c5241 Binary files /dev/null and b/.parcel-cache/9d321af8a9fb7fcb-RequestGraph differ diff --git a/.parcel-cache/c78270b837a075ef-BundleGraph b/.parcel-cache/c78270b837a075ef-BundleGraph new file mode 100644 index 00000000..3761f81c Binary files /dev/null and b/.parcel-cache/c78270b837a075ef-BundleGraph differ diff --git a/.parcel-cache/data.mdb b/.parcel-cache/data.mdb new file mode 100644 index 00000000..cf853461 Binary files /dev/null and b/.parcel-cache/data.mdb differ diff --git a/.parcel-cache/dbb0a23b5e513d9b-AssetGraph b/.parcel-cache/dbb0a23b5e513d9b-AssetGraph new file mode 100644 index 00000000..90136ae1 Binary files /dev/null and b/.parcel-cache/dbb0a23b5e513d9b-AssetGraph differ diff --git a/.parcel-cache/e404b15060539adc-AssetGraph b/.parcel-cache/e404b15060539adc-AssetGraph new file mode 100644 index 00000000..69efed55 Binary files /dev/null and b/.parcel-cache/e404b15060539adc-AssetGraph differ diff --git a/.parcel-cache/lock.mdb b/.parcel-cache/lock.mdb new file mode 100644 index 00000000..26f59a07 Binary files /dev/null and b/.parcel-cache/lock.mdb differ diff --git a/.parcel-cache/snapshot-3426731880f231f1.txt b/.parcel-cache/snapshot-3426731880f231f1.txt new file mode 100644 index 00000000..5aa36729 --- /dev/null +++ b/.parcel-cache/snapshot-3426731880f231f1.txt @@ -0,0 +1,2 @@ +459864643 +1759277143994579000 \ No newline at end of file diff --git a/.parcel-cache/snapshot-9d321af8a9fb7fcb.txt b/.parcel-cache/snapshot-9d321af8a9fb7fcb.txt new file mode 100644 index 00000000..ac2208e7 --- /dev/null +++ b/.parcel-cache/snapshot-9d321af8a9fb7fcb.txt @@ -0,0 +1,2 @@ +462702166 +1759340017720060000 \ No newline at end of file diff --git a/dist/samples/react-map-3d-custom/dist/assets/index-BgSD6qdp.css b/dist/samples/react-map-3d-custom/dist/assets/index-BgSD6qdp.css new file mode 100644 index 00000000..abb205b6 --- /dev/null +++ b/dist/samples/react-map-3d-custom/dist/assets/index-BgSD6qdp.css @@ -0,0 +1 @@ +.control-panel{font-size:14px;line-height:18px;width:284px;background:#fff;box-shadow:0 0 4px #00000026;margin:24px;padding:12px 24px;position:absolute;top:0;right:0;outline:none;cursor:auto;box-sizing:border-box}.control-panel h3{font-size:1.2em;font-weight:500;margin:8px 0}.control-panel h4{font-weight:500;margin:8px 0}.control-panel p{margin-bottom:16px}.control-panel .links{margin-top:8px;display:flex;justify-content:space-between}.control-panel .links a{font-weight:700;color:#486865;font-size:11px}html[data-theme=dark] .control-panel{background:var(--ifm-background-color)}html[data-theme=dark] .gm-style{color:var(--ifm-color-black)}.autocomplete-container input,.autocomplete-control{box-sizing:border-box}.autocomplete-control{margin:24px;background:#fff}.autocomplete-container{width:300px}.autocomplete-container input{width:100%;height:40px;padding:0 12px;font-size:18px}.autocomplete-container .custom-list{width:100%;list-style:none;padding:0;margin:0}.autocomplete-container .custom-list-item{padding:8px}.autocomplete-container .custom-list-item:hover{background:#d3d3d3;cursor:pointer}.autocomplete-mode{margin:8px 0}.drawing-history{margin:5px;display:flex;align-items:center;gap:2px;height:27px;box-sizing:border-box}.drawing-history button{height:100%;background:#fff;border:0px;margin:0;cursor:pointer;color:#565656;border-bottom-left-radius:2px;border-top-left-radius:2px;box-shadow:#0000004d 0 1px 4px -1px}.drawing-history button svg{width:20px}.drawing-history button path{fill:#565656}.drawing-history button:hover{background:#ebebeb}.drawing-history button:disabled:hover,.drawing-history button:disabled{background:#fff;opacity:.5;cursor:default}.static-map-grid,.static-map-grid *{box-sizing:border-box}.static-map-grid{display:grid;grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;height:100%;width:100%;gap:16px;padding:16px;background:#a9a9a9}.static-map-grid .map-container{display:flex;position:relative}.static-map-grid .map-container:nth-child(1){align-items:flex-end;justify-content:flex-end}.static-map-grid .map-container:nth-child(2){align-items:flex-end}.static-map-grid .map-container:nth-child(3){justify-content:flex-end}.static-map-grid .map{object-fit:contain;position:absolute;max-height:100%;width:auto;max-width:100%} diff --git a/dist/samples/react-map-3d-custom/dist/assets/index-BwvnK9WT.js b/dist/samples/react-map-3d-custom/dist/assets/index-BwvnK9WT.js new file mode 100644 index 00000000..f1712fc2 --- /dev/null +++ b/dist/samples/react-map-3d-custom/dist/assets/index-BwvnK9WT.js @@ -0,0 +1,49 @@ +import"https://visgl.github.io/react-google-maps/scripts/examples.js";(function(){const v=document.createElement("link").relList;if(v&&v.supports&&v.supports("modulepreload"))return;for(const _ of document.querySelectorAll('link[rel="modulepreload"]'))s(_);new MutationObserver(_=>{for(const D of _)if(D.type==="childList")for(const B of D.addedNodes)B.tagName==="LINK"&&B.rel==="modulepreload"&&s(B)}).observe(document,{childList:!0,subtree:!0});function b(_){const D={};return _.integrity&&(D.integrity=_.integrity),_.referrerPolicy&&(D.referrerPolicy=_.referrerPolicy),_.crossOrigin==="use-credentials"?D.credentials="include":_.crossOrigin==="anonymous"?D.credentials="omit":D.credentials="same-origin",D}function s(_){if(_.ep)return;_.ep=!0;const D=b(_);fetch(_.href,D)}})();function bd(m){return m&&m.__esModule&&Object.prototype.hasOwnProperty.call(m,"default")?m.default:m}var ei={exports:{}},be={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var nd;function Kv(){if(nd)return be;nd=1;var m=Symbol.for("react.transitional.element"),v=Symbol.for("react.fragment");function b(s,_,D){var B=null;if(D!==void 0&&(B=""+D),_.key!==void 0&&(B=""+_.key),"key"in _){D={};for(var Q in _)Q!=="key"&&(D[Q]=_[Q])}else D=_;return _=D.ref,{$$typeof:m,type:s,key:B,ref:_!==void 0?_:null,props:D}}return be.Fragment=v,be.jsx=b,be.jsxs=b,be}var fd;function Jv(){return fd||(fd=1,ei.exports=Kv()),ei.exports}var yu=Jv(),ni={exports:{}},w={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var cd;function wv(){if(cd)return w;cd=1;var m=Symbol.for("react.transitional.element"),v=Symbol.for("react.portal"),b=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),_=Symbol.for("react.profiler"),D=Symbol.for("react.consumer"),B=Symbol.for("react.context"),Q=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),A=Symbol.for("react.memo"),N=Symbol.for("react.lazy"),K=Symbol.iterator;function J(o){return o===null||typeof o!="object"?null:(o=K&&o[K]||o["@@iterator"],typeof o=="function"?o:null)}var P={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},G=Object.assign,rl={};function Al(o,z,H){this.props=o,this.context=z,this.refs=rl,this.updater=H||P}Al.prototype.isReactComponent={},Al.prototype.setState=function(o,z){if(typeof o!="object"&&typeof o!="function"&&o!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,o,z,"setState")},Al.prototype.forceUpdate=function(o){this.updater.enqueueForceUpdate(this,o,"forceUpdate")};function vt(){}vt.prototype=Al.prototype;function yt(o,z,H){this.props=o,this.context=z,this.refs=rl,this.updater=H||P}var Ml=yt.prototype=new vt;Ml.constructor=yt,G(Ml,Al.prototype),Ml.isPureReactComponent=!0;var wl=Array.isArray,k={H:null,A:null,T:null,S:null,V:null},Sl=Object.prototype.hasOwnProperty;function zl(o,z,H,U,C,tl){return H=tl.ref,{$$typeof:m,type:o,key:z,ref:H!==void 0?H:null,props:tl}}function Yl(o,z){return zl(o.type,z,void 0,void 0,void 0,o.props)}function bt(o){return typeof o=="object"&&o!==null&&o.$$typeof===m}function Yu(o){var z={"=":"=0",":":"=2"};return"$"+o.replace(/[=:]/g,function(H){return z[H]})}var _t=/\/+/g;function Gl(o,z){return typeof o=="object"&&o!==null&&o.key!=null?Yu(""+o.key):z.toString(36)}function hu(){}function mu(o){switch(o.status){case"fulfilled":return o.value;case"rejected":throw o.reason;default:switch(typeof o.status=="string"?o.then(hu,hu):(o.status="pending",o.then(function(z){o.status==="pending"&&(o.status="fulfilled",o.value=z)},function(z){o.status==="pending"&&(o.status="rejected",o.reason=z)})),o.status){case"fulfilled":return o.value;case"rejected":throw o.reason}}throw o}function Cl(o,z,H,U,C){var tl=typeof o;(tl==="undefined"||tl==="boolean")&&(o=null);var V=!1;if(o===null)V=!0;else switch(tl){case"bigint":case"string":case"number":V=!0;break;case"object":switch(o.$$typeof){case m:case v:V=!0;break;case N:return V=o._init,Cl(V(o._payload),z,H,U,C)}}if(V)return C=C(o),V=U===""?"."+Gl(o,0):U,wl(C)?(H="",V!=null&&(H=V.replace(_t,"$&/")+"/"),Cl(C,z,H,"",function(jt){return jt})):C!=null&&(bt(C)&&(C=Yl(C,H+(C.key==null||o&&o.key===C.key?"":(""+C.key).replace(_t,"$&/")+"/")+V)),z.push(C)),1;V=0;var Wl=U===""?".":U+":";if(wl(o))for(var vl=0;vl>>1,o=T[sl];if(0<_(o,R))T[sl]=R,T[X]=o,X=sl;else break l}}function b(T){return T.length===0?null:T[0]}function s(T){if(T.length===0)return null;var R=T[0],X=T.pop();if(X!==R){T[0]=X;l:for(var sl=0,o=T.length,z=o>>>1;sl_(U,X))C_(tl,U)?(T[sl]=tl,T[C]=X,sl=C):(T[sl]=U,T[H]=X,sl=H);else if(C_(tl,X))T[sl]=tl,T[C]=X,sl=C;else break l}}return R}function _(T,R){var X=T.sortIndex-R.sortIndex;return X!==0?X:T.id-R.id}if(m.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var D=performance;m.unstable_now=function(){return D.now()}}else{var B=Date,Q=B.now();m.unstable_now=function(){return B.now()-Q}}var p=[],A=[],N=1,K=null,J=3,P=!1,G=!1,rl=!1,Al=!1,vt=typeof setTimeout=="function"?setTimeout:null,yt=typeof clearTimeout=="function"?clearTimeout:null,Ml=typeof setImmediate<"u"?setImmediate:null;function wl(T){for(var R=b(A);R!==null;){if(R.callback===null)s(A);else if(R.startTime<=T)s(A),R.sortIndex=R.expirationTime,v(p,R);else break;R=b(A)}}function k(T){if(rl=!1,wl(T),!G)if(b(p)!==null)G=!0,Sl||(Sl=!0,Gl());else{var R=b(A);R!==null&&Cl(k,R.startTime-T)}}var Sl=!1,zl=-1,Yl=5,bt=-1;function Yu(){return Al?!0:!(m.unstable_now()-btT&&Yu());){var sl=K.callback;if(typeof sl=="function"){K.callback=null,J=K.priorityLevel;var o=sl(K.expirationTime<=T);if(T=m.unstable_now(),typeof o=="function"){K.callback=o,wl(T),R=!0;break t}K===b(p)&&s(p),wl(T)}else s(p);K=b(p)}if(K!==null)R=!0;else{var z=b(A);z!==null&&Cl(k,z.startTime-T),R=!1}}break l}finally{K=null,J=X,P=!1}R=void 0}}finally{R?Gl():Sl=!1}}}var Gl;if(typeof Ml=="function")Gl=function(){Ml(_t)};else if(typeof MessageChannel<"u"){var hu=new MessageChannel,mu=hu.port2;hu.port1.onmessage=_t,Gl=function(){mu.postMessage(null)}}else Gl=function(){vt(_t,0)};function Cl(T,R){zl=vt(function(){T(m.unstable_now())},R)}m.unstable_IdlePriority=5,m.unstable_ImmediatePriority=1,m.unstable_LowPriority=4,m.unstable_NormalPriority=3,m.unstable_Profiling=null,m.unstable_UserBlockingPriority=2,m.unstable_cancelCallback=function(T){T.callback=null},m.unstable_forceFrameRate=function(T){0>T||125sl?(T.sortIndex=X,v(A,T),b(p)===null&&T===b(A)&&(rl?(yt(zl),zl=-1):rl=!0,Cl(k,X-sl))):(T.sortIndex=o,v(p,T),G||P||(G=!0,Sl||(Sl=!0,Gl()))),T},m.unstable_shouldYield=Yu,m.unstable_wrapCallback=function(T){var R=J;return function(){var X=J;J=R;try{return T.apply(this,arguments)}finally{J=X}}}})(ii)),ii}var od;function $v(){return od||(od=1,ci.exports=Wv()),ci.exports}var si={exports:{}},Xl={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var rd;function kv(){if(rd)return Xl;rd=1;var m=ri();function v(p){var A="https://react.dev/errors/"+p;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(m)}catch(v){console.error(v)}}return m(),si.exports=kv(),si.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var vd;function Fv(){if(vd)return Ee;vd=1;var m=$v(),v=ri(),b=Ed();function s(l){var t="https://react.dev/errors/"+l;if(1o||(l.current=sl[o],sl[o]=null,o--)}function U(l,t){o++,sl[o]=l.current,l.current=t}var C=z(null),tl=z(null),V=z(null),Wl=z(null);function vl(l,t){switch(U(V,t),U(tl,l),U(C,null),t.nodeType){case 9:case 11:l=(l=t.documentElement)&&(l=l.namespaceURI)?qr(l):0;break;default:if(l=t.tagName,t=t.namespaceURI)t=qr(t),l=Br(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}H(C),U(C,l)}function jt(){H(C),H(tl),H(V)}function jn(l){l.memoizedState!==null&&U(Wl,l);var t=C.current,u=Br(t,l.type);t!==u&&(U(tl,l),U(C,u))}function Te(l){tl.current===l&&(H(C),H(tl)),Wl.current===l&&(H(Wl),ye._currentValue=X)}var Zn=Object.prototype.hasOwnProperty,Vn=m.unstable_scheduleCallback,Kn=m.unstable_cancelCallback,Od=m.unstable_shouldYield,Md=m.unstable_requestPaint,Et=m.unstable_now,zd=m.unstable_getCurrentPriorityLevel,di=m.unstable_ImmediatePriority,vi=m.unstable_UserBlockingPriority,Oe=m.unstable_NormalPriority,_d=m.unstable_LowPriority,yi=m.unstable_IdlePriority,Dd=m.log,pd=m.unstable_setDisableYieldValue,Ta=null,$l=null;function Zt(l){if(typeof Dd=="function"&&pd(l),$l&&typeof $l.setStrictMode=="function")try{$l.setStrictMode(Ta,l)}catch{}}var kl=Math.clz32?Math.clz32:Nd,Ud=Math.log,Rd=Math.LN2;function Nd(l){return l>>>=0,l===0?32:31-(Ud(l)/Rd|0)|0}var Me=256,ze=4194304;function gu(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function _e(l,t,u){var a=l.pendingLanes;if(a===0)return 0;var e=0,n=l.suspendedLanes,f=l.pingedLanes;l=l.warmLanes;var c=a&134217727;return c!==0?(a=c&~n,a!==0?e=gu(a):(f&=c,f!==0?e=gu(f):u||(u=c&~l,u!==0&&(e=gu(u))))):(c=a&~n,c!==0?e=gu(c):f!==0?e=gu(f):u||(u=a&~l,u!==0&&(e=gu(u)))),e===0?0:t!==0&&t!==e&&(t&n)===0&&(n=e&-e,u=t&-t,n>=u||n===32&&(u&4194048)!==0)?t:e}function Oa(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function Hd(l,t){switch(l){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function hi(){var l=Me;return Me<<=1,(Me&4194048)===0&&(Me=256),l}function mi(){var l=ze;return ze<<=1,(ze&62914560)===0&&(ze=4194304),l}function Jn(l){for(var t=[],u=0;31>u;u++)t.push(l);return t}function Ma(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function qd(l,t,u,a,e,n){var f=l.pendingLanes;l.pendingLanes=u,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=u,l.entangledLanes&=u,l.errorRecoveryDisabledLanes&=u,l.shellSuspendCounter=0;var c=l.entanglements,i=l.expirationTimes,h=l.hiddenUpdates;for(u=f&~u;0)":-1e||i[a]!==h[e]){var E=` +`+i[a].replace(" at new "," at ");return l.displayName&&E.includes("")&&(E=E.replace("",l.displayName)),E}while(1<=a&&0<=e);break}}}finally{In=!1,Error.prepareStackTrace=u}return(u=l?l.displayName||l.name:"")?Qu(u):""}function xd(l){switch(l.tag){case 26:case 27:case 5:return Qu(l.type);case 16:return Qu("Lazy");case 13:return Qu("Suspense");case 19:return Qu("SuspenseList");case 0:case 15:return Pn(l.type,!1);case 11:return Pn(l.type.render,!1);case 1:return Pn(l.type,!0);case 31:return Qu("Activity");default:return""}}function _i(l){try{var t="";do t+=xd(l),l=l.return;while(l);return t}catch(u){return` +Error generating stack: `+u.message+` +`+u.stack}}function et(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function Di(l){var t=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Xd(l){var t=Di(l)?"checked":"value",u=Object.getOwnPropertyDescriptor(l.constructor.prototype,t),a=""+l[t];if(!l.hasOwnProperty(t)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var e=u.get,n=u.set;return Object.defineProperty(l,t,{configurable:!0,get:function(){return e.call(this)},set:function(f){a=""+f,n.call(this,f)}}),Object.defineProperty(l,t,{enumerable:u.enumerable}),{getValue:function(){return a},setValue:function(f){a=""+f},stopTracking:function(){l._valueTracker=null,delete l[t]}}}}function Ue(l){l._valueTracker||(l._valueTracker=Xd(l))}function pi(l){if(!l)return!1;var t=l._valueTracker;if(!t)return!0;var u=t.getValue(),a="";return l&&(a=Di(l)?l.checked?"true":"false":l.value),l=a,l!==u?(t.setValue(l),!0):!1}function Re(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var Qd=/[\n"\\]/g;function nt(l){return l.replace(Qd,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function lf(l,t,u,a,e,n,f,c){l.name="",f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?l.type=f:l.removeAttribute("type"),t!=null?f==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+et(t)):l.value!==""+et(t)&&(l.value=""+et(t)):f!=="submit"&&f!=="reset"||l.removeAttribute("value"),t!=null?tf(l,f,et(t)):u!=null?tf(l,f,et(u)):a!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.name=""+et(c):l.removeAttribute("name")}function Ui(l,t,u,a,e,n,f,c){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||u!=null){if(!(n!=="submit"&&n!=="reset"||t!=null))return;u=u!=null?""+et(u):"",t=t!=null?""+et(t):u,c||t===l.value||(l.value=t),l.defaultValue=t}a=a??e,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=c?l.checked:!!a,l.defaultChecked=!!a,f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"&&(l.name=f)}function tf(l,t,u){t==="number"&&Re(l.ownerDocument)===l||l.defaultValue===""+u||(l.defaultValue=""+u)}function ju(l,t,u,a){if(l=l.options,t){t={};for(var e=0;e"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ff=!1;if(pt)try{var pa={};Object.defineProperty(pa,"passive",{get:function(){ff=!0}}),window.addEventListener("test",pa,pa),window.removeEventListener("test",pa,pa)}catch{ff=!1}var Kt=null,cf=null,He=null;function Gi(){if(He)return He;var l,t=cf,u=t.length,a,e="value"in Kt?Kt.value:Kt.textContent,n=e.length;for(l=0;l=Na),ji=" ",Zi=!1;function Vi(l,t){switch(l){case"keyup":return h0.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ki(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var Ju=!1;function g0(l,t){switch(l){case"compositionend":return Ki(t);case"keypress":return t.which!==32?null:(Zi=!0,ji);case"textInput":return l=t.data,l===ji&&Zi?null:l;default:return null}}function S0(l,t){if(Ju)return l==="compositionend"||!vf&&Vi(l,t)?(l=Gi(),He=cf=Kt=null,Ju=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:u,offset:t-l};l=a}l:{for(;u;){if(u.nextSibling){u=u.nextSibling;break l}u=u.parentNode}u=void 0}u=Pi(u)}}function ts(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?ts(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function us(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=Re(l.document);t instanceof l.HTMLIFrameElement;){try{var u=typeof t.contentWindow.location.href=="string"}catch{u=!1}if(u)l=t.contentWindow;else break;t=Re(l.document)}return t}function mf(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}var _0=pt&&"documentMode"in document&&11>=document.documentMode,wu=null,gf=null,Ya=null,Sf=!1;function as(l,t,u){var a=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;Sf||wu==null||wu!==Re(a)||(a=wu,"selectionStart"in a&&mf(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Ya&&Ba(Ya,a)||(Ya=a,a=On(gf,"onSelect"),0>=f,e-=f,Rt=1<<32-kl(t)+e|u<n?n:8;var f=T.T,c={};T.T=c,ac(l,!1,t,u);try{var i=e(),h=T.S;if(h!==null&&h(c,i),i!==null&&typeof i=="object"&&typeof i.then=="function"){var E=Y0(i,a);ka(l,t,E,ut(l))}else ka(l,t,a,ut(l))}catch(M){ka(l,t,{then:function(){},status:"rejected",reason:M},ut())}finally{R.p=n,T.T=f}}function X0(){}function tc(l,t,u,a){if(l.tag!==5)throw Error(s(476));var e=eo(l).queue;ao(l,e,t,X,u===null?X0:function(){return no(l),u(a)})}function eo(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:X,baseState:X,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Bt,lastRenderedState:X},next:null};var u={};return t.next={memoizedState:u,baseState:u,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Bt,lastRenderedState:u},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function no(l){var t=eo(l).next.queue;ka(l,t,{},ut())}function uc(){return xl(ye)}function fo(){return Ol().memoizedState}function co(){return Ol().memoizedState}function Q0(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var u=ut();l=Wt(u);var a=$t(t,l,u);a!==null&&(at(a,t,u),Va(a,t,u)),t={cache:Hf()},l.payload=t;return}t=t.return}}function j0(l,t,u){var a=ut();u={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null},un(l)?so(t,u):(u=Tf(l,t,u,a),u!==null&&(at(u,l,a),oo(u,t,a)))}function io(l,t,u){var a=ut();ka(l,t,u,a)}function ka(l,t,u,a){var e={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null};if(un(l))so(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var f=t.lastRenderedState,c=n(f,u);if(e.hasEagerState=!0,e.eagerState=c,Fl(c,f))return xe(l,t,e,0),dl===null&&Le(),!1}catch{}finally{}if(u=Tf(l,t,e,a),u!==null)return at(u,l,a),oo(u,t,a),!0}return!1}function ac(l,t,u,a){if(a={lane:2,revertLane:Yc(),action:a,hasEagerState:!1,eagerState:null,next:null},un(l)){if(t)throw Error(s(479))}else t=Tf(l,u,a,2),t!==null&&at(t,l,2)}function un(l){var t=l.alternate;return l===W||t!==null&&t===W}function so(l,t){aa=ke=!0;var u=l.pending;u===null?t.next=t:(t.next=u.next,u.next=t),l.pending=t}function oo(l,t,u){if((u&4194048)!==0){var a=t.lanes;a&=l.pendingLanes,u|=a,t.lanes=u,Si(l,u)}}var an={readContext:xl,use:Ie,useCallback:bl,useContext:bl,useEffect:bl,useImperativeHandle:bl,useLayoutEffect:bl,useInsertionEffect:bl,useMemo:bl,useReducer:bl,useRef:bl,useState:bl,useDebugValue:bl,useDeferredValue:bl,useTransition:bl,useSyncExternalStore:bl,useId:bl,useHostTransitionStatus:bl,useFormState:bl,useActionState:bl,useOptimistic:bl,useMemoCache:bl,useCacheRefresh:bl},ro={readContext:xl,use:Ie,useCallback:function(l,t){return Vl().memoizedState=[l,t===void 0?null:t],l},useContext:xl,useEffect:Ws,useImperativeHandle:function(l,t,u){u=u!=null?u.concat([l]):null,tn(4194308,4,Is.bind(null,t,l),u)},useLayoutEffect:function(l,t){return tn(4194308,4,l,t)},useInsertionEffect:function(l,t){tn(4,2,l,t)},useMemo:function(l,t){var u=Vl();t=t===void 0?null:t;var a=l();if(Ru){Zt(!0);try{l()}finally{Zt(!1)}}return u.memoizedState=[a,t],a},useReducer:function(l,t,u){var a=Vl();if(u!==void 0){var e=u(t);if(Ru){Zt(!0);try{u(t)}finally{Zt(!1)}}}else e=t;return a.memoizedState=a.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},a.queue=l,l=l.dispatch=j0.bind(null,W,l),[a.memoizedState,l]},useRef:function(l){var t=Vl();return l={current:l},t.memoizedState=l},useState:function(l){l=Ff(l);var t=l.queue,u=io.bind(null,W,t);return t.dispatch=u,[l.memoizedState,u]},useDebugValue:Pf,useDeferredValue:function(l,t){var u=Vl();return lc(u,l,t)},useTransition:function(){var l=Ff(!1);return l=ao.bind(null,W,l.queue,!0,!1),Vl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,u){var a=W,e=Vl();if(al){if(u===void 0)throw Error(s(407));u=u()}else{if(u=t(),dl===null)throw Error(s(349));(ll&124)!==0||Hs(a,t,u)}e.memoizedState=u;var n={value:u,getSnapshot:t};return e.queue=n,Ws(Bs.bind(null,a,n,l),[l]),a.flags|=2048,na(9,ln(),qs.bind(null,a,n,u,t),null),u},useId:function(){var l=Vl(),t=dl.identifierPrefix;if(al){var u=Nt,a=Rt;u=(a&~(1<<32-kl(a)-1)).toString(32)+u,t="«"+t+"R"+u,u=Fe++,0x?(Nl=Y,Y=null):Nl=Y.sibling;var ul=g(d,Y,y[x],O);if(ul===null){Y===null&&(Y=Nl);break}l&&Y&&ul.alternate===null&&t(d,Y),r=n(ul,r,x),$===null?q=ul:$.sibling=ul,$=ul,Y=Nl}if(x===y.length)return u(d,Y),al&&Mu(d,x),q;if(Y===null){for(;xx?(Nl=Y,Y=null):Nl=Y.sibling;var du=g(d,Y,ul.value,O);if(du===null){Y===null&&(Y=Nl);break}l&&Y&&du.alternate===null&&t(d,Y),r=n(du,r,x),$===null?q=du:$.sibling=du,$=du,Y=Nl}if(ul.done)return u(d,Y),al&&Mu(d,x),q;if(Y===null){for(;!ul.done;x++,ul=y.next())ul=M(d,ul.value,O),ul!==null&&(r=n(ul,r,x),$===null?q=ul:$.sibling=ul,$=ul);return al&&Mu(d,x),q}for(Y=a(Y);!ul.done;x++,ul=y.next())ul=S(Y,d,x,ul.value,O),ul!==null&&(l&&ul.alternate!==null&&Y.delete(ul.key===null?x:ul.key),r=n(ul,r,x),$===null?q=ul:$.sibling=ul,$=ul);return l&&Y.forEach(function(Vv){return t(d,Vv)}),al&&Mu(d,x),q}function il(d,r,y,O){if(typeof y=="object"&&y!==null&&y.type===G&&y.key===null&&(y=y.props.children),typeof y=="object"&&y!==null){switch(y.$$typeof){case J:l:{for(var q=y.key;r!==null;){if(r.key===q){if(q=y.type,q===G){if(r.tag===7){u(d,r.sibling),O=e(r,y.props.children),O.return=d,d=O;break l}}else if(r.elementType===q||typeof q=="object"&&q!==null&&q.$$typeof===Yl&&yo(q)===r.type){u(d,r.sibling),O=e(r,y.props),Ia(O,y),O.return=d,d=O;break l}u(d,r);break}else t(d,r);r=r.sibling}y.type===G?(O=Tu(y.props.children,d.mode,O,y.key),O.return=d,d=O):(O=Qe(y.type,y.key,y.props,null,d.mode,O),Ia(O,y),O.return=d,d=O)}return f(d);case P:l:{for(q=y.key;r!==null;){if(r.key===q)if(r.tag===4&&r.stateNode.containerInfo===y.containerInfo&&r.stateNode.implementation===y.implementation){u(d,r.sibling),O=e(r,y.children||[]),O.return=d,d=O;break l}else{u(d,r);break}else t(d,r);r=r.sibling}O=zf(y,d.mode,O),O.return=d,d=O}return f(d);case Yl:return q=y._init,y=q(y._payload),il(d,r,y,O)}if(Cl(y))return j(d,r,y,O);if(Gl(y)){if(q=Gl(y),typeof q!="function")throw Error(s(150));return y=q.call(y),L(d,r,y,O)}if(typeof y.then=="function")return il(d,r,en(y),O);if(y.$$typeof===Ml)return il(d,r,Ke(d,y),O);nn(d,y)}return typeof y=="string"&&y!==""||typeof y=="number"||typeof y=="bigint"?(y=""+y,r!==null&&r.tag===6?(u(d,r.sibling),O=e(r,y),O.return=d,d=O):(u(d,r),O=Mf(y,d.mode,O),O.return=d,d=O),f(d)):u(d,r)}return function(d,r,y,O){try{Fa=0;var q=il(d,r,y,O);return fa=null,q}catch(Y){if(Y===ja||Y===we)throw Y;var $=Il(29,Y,null,d.mode);return $.lanes=O,$.return=d,$}finally{}}}var ca=ho(!0),mo=ho(!1),ot=z(null),Tt=null;function Ft(l){var t=l.alternate;U(Dl,Dl.current&1),U(ot,l),Tt===null&&(t===null||ua.current!==null||t.memoizedState!==null)&&(Tt=l)}function go(l){if(l.tag===22){if(U(Dl,Dl.current),U(ot,l),Tt===null){var t=l.alternate;t!==null&&t.memoizedState!==null&&(Tt=l)}}else It()}function It(){U(Dl,Dl.current),U(ot,ot.current)}function Yt(l){H(ot),Tt===l&&(Tt=null),H(Dl)}var Dl=z(0);function fn(l){for(var t=l;t!==null;){if(t.tag===13){var u=t.memoizedState;if(u!==null&&(u=u.dehydrated,u===null||u.data==="$?"||wc(u)))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function ec(l,t,u,a){t=l.memoizedState,u=u(a,t),u=u==null?t:N({},t,u),l.memoizedState=u,l.lanes===0&&(l.updateQueue.baseState=u)}var nc={enqueueSetState:function(l,t,u){l=l._reactInternals;var a=ut(),e=Wt(a);e.payload=t,u!=null&&(e.callback=u),t=$t(l,e,a),t!==null&&(at(t,l,a),Va(t,l,a))},enqueueReplaceState:function(l,t,u){l=l._reactInternals;var a=ut(),e=Wt(a);e.tag=1,e.payload=t,u!=null&&(e.callback=u),t=$t(l,e,a),t!==null&&(at(t,l,a),Va(t,l,a))},enqueueForceUpdate:function(l,t){l=l._reactInternals;var u=ut(),a=Wt(u);a.tag=2,t!=null&&(a.callback=t),t=$t(l,a,u),t!==null&&(at(t,l,u),Va(t,l,u))}};function So(l,t,u,a,e,n,f){return l=l.stateNode,typeof l.shouldComponentUpdate=="function"?l.shouldComponentUpdate(a,n,f):t.prototype&&t.prototype.isPureReactComponent?!Ba(u,a)||!Ba(e,n):!0}function bo(l,t,u,a){l=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(u,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(u,a),t.state!==l&&nc.enqueueReplaceState(t,t.state,null)}function Nu(l,t){var u=t;if("ref"in t){u={};for(var a in t)a!=="ref"&&(u[a]=t[a])}if(l=l.defaultProps){u===t&&(u=N({},u));for(var e in l)u[e]===void 0&&(u[e]=l[e])}return u}var cn=typeof reportError=="function"?reportError:function(l){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof l=="object"&&l!==null&&typeof l.message=="string"?String(l.message):String(l),error:l});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",l);return}console.error(l)};function Eo(l){cn(l)}function Ao(l){console.error(l)}function To(l){cn(l)}function sn(l,t){try{var u=l.onUncaughtError;u(t.value,{componentStack:t.stack})}catch(a){setTimeout(function(){throw a})}}function Oo(l,t,u){try{var a=l.onCaughtError;a(u.value,{componentStack:u.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function fc(l,t,u){return u=Wt(u),u.tag=3,u.payload={element:null},u.callback=function(){sn(l,t)},u}function Mo(l){return l=Wt(l),l.tag=3,l}function zo(l,t,u,a){var e=u.type.getDerivedStateFromError;if(typeof e=="function"){var n=a.value;l.payload=function(){return e(n)},l.callback=function(){Oo(t,u,a)}}var f=u.stateNode;f!==null&&typeof f.componentDidCatch=="function"&&(l.callback=function(){Oo(t,u,a),typeof e!="function"&&(eu===null?eu=new Set([this]):eu.add(this));var c=a.stack;this.componentDidCatch(a.value,{componentStack:c!==null?c:""})})}function V0(l,t,u,a,e){if(u.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(t=u.alternate,t!==null&&xa(t,u,e,!0),u=ot.current,u!==null){switch(u.tag){case 13:return Tt===null?Rc():u.alternate===null&&gl===0&&(gl=3),u.flags&=-257,u.flags|=65536,u.lanes=e,a===Yf?u.flags|=16384:(t=u.updateQueue,t===null?u.updateQueue=new Set([a]):t.add(a),Hc(l,a,e)),!1;case 22:return u.flags|=65536,a===Yf?u.flags|=16384:(t=u.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([a])},u.updateQueue=t):(u=t.retryQueue,u===null?t.retryQueue=new Set([a]):u.add(a)),Hc(l,a,e)),!1}throw Error(s(435,u.tag))}return Hc(l,a,e),Rc(),!1}if(al)return t=ot.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=e,a!==pf&&(l=Error(s(422),{cause:a}),La(ft(l,u)))):(a!==pf&&(t=Error(s(423),{cause:a}),La(ft(t,u))),l=l.current.alternate,l.flags|=65536,e&=-e,l.lanes|=e,a=ft(a,u),e=fc(l.stateNode,a,e),Lf(l,e),gl!==4&&(gl=2)),!1;var n=Error(s(520),{cause:a});if(n=ft(n,u),ne===null?ne=[n]:ne.push(n),gl!==4&&(gl=2),t===null)return!0;a=ft(a,u),u=t;do{switch(u.tag){case 3:return u.flags|=65536,l=e&-e,u.lanes|=l,l=fc(u.stateNode,a,l),Lf(u,l),!1;case 1:if(t=u.type,n=u.stateNode,(u.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||n!==null&&typeof n.componentDidCatch=="function"&&(eu===null||!eu.has(n))))return u.flags|=65536,e&=-e,u.lanes|=e,e=Mo(e),zo(e,l,u,a),Lf(u,e),!1}u=u.return}while(u!==null);return!1}var _o=Error(s(461)),Ul=!1;function Hl(l,t,u,a){t.child=l===null?mo(t,null,u,a):ca(t,l.child,u,a)}function Do(l,t,u,a,e){u=u.render;var n=t.ref;if("ref"in a){var f={};for(var c in a)c!=="ref"&&(f[c]=a[c])}else f=a;return pu(t),a=Zf(l,t,u,f,n,e),c=Vf(),l!==null&&!Ul?(Kf(l,t,e),Gt(l,t,e)):(al&&c&&_f(t),t.flags|=1,Hl(l,t,a,e),t.child)}function po(l,t,u,a,e){if(l===null){var n=u.type;return typeof n=="function"&&!Of(n)&&n.defaultProps===void 0&&u.compare===null?(t.tag=15,t.type=n,Uo(l,t,n,a,e)):(l=Qe(u.type,null,a,t,t.mode,e),l.ref=t.ref,l.return=t,t.child=l)}if(n=l.child,!yc(l,e)){var f=n.memoizedProps;if(u=u.compare,u=u!==null?u:Ba,u(f,a)&&l.ref===t.ref)return Gt(l,t,e)}return t.flags|=1,l=Ut(n,a),l.ref=t.ref,l.return=t,t.child=l}function Uo(l,t,u,a,e){if(l!==null){var n=l.memoizedProps;if(Ba(n,a)&&l.ref===t.ref)if(Ul=!1,t.pendingProps=a=n,yc(l,e))(l.flags&131072)!==0&&(Ul=!0);else return t.lanes=l.lanes,Gt(l,t,e)}return cc(l,t,u,a,e)}function Ro(l,t,u){var a=t.pendingProps,e=a.children,n=l!==null?l.memoizedState:null;if(a.mode==="hidden"){if((t.flags&128)!==0){if(a=n!==null?n.baseLanes|u:u,l!==null){for(e=t.child=l.child,n=0;e!==null;)n=n|e.lanes|e.childLanes,e=e.sibling;t.childLanes=n&~a}else t.childLanes=0,t.child=null;return No(l,t,a,u)}if((u&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},l!==null&&Je(t,n!==null?n.cachePool:null),n!==null?ps(t,n):Xf(),go(t);else return t.lanes=t.childLanes=536870912,No(l,t,n!==null?n.baseLanes|u:u,u)}else n!==null?(Je(t,n.cachePool),ps(t,n),It(),t.memoizedState=null):(l!==null&&Je(t,null),Xf(),It());return Hl(l,t,e,u),t.child}function No(l,t,u,a){var e=Bf();return e=e===null?null:{parent:_l._currentValue,pool:e},t.memoizedState={baseLanes:u,cachePool:e},l!==null&&Je(t,null),Xf(),go(t),l!==null&&xa(l,t,a,!0),null}function on(l,t){var u=t.ref;if(u===null)l!==null&&l.ref!==null&&(t.flags|=4194816);else{if(typeof u!="function"&&typeof u!="object")throw Error(s(284));(l===null||l.ref!==u)&&(t.flags|=4194816)}}function cc(l,t,u,a,e){return pu(t),u=Zf(l,t,u,a,void 0,e),a=Vf(),l!==null&&!Ul?(Kf(l,t,e),Gt(l,t,e)):(al&&a&&_f(t),t.flags|=1,Hl(l,t,u,e),t.child)}function Ho(l,t,u,a,e,n){return pu(t),t.updateQueue=null,u=Rs(t,a,u,e),Us(l),a=Vf(),l!==null&&!Ul?(Kf(l,t,n),Gt(l,t,n)):(al&&a&&_f(t),t.flags|=1,Hl(l,t,u,n),t.child)}function qo(l,t,u,a,e){if(pu(t),t.stateNode===null){var n=Fu,f=u.contextType;typeof f=="object"&&f!==null&&(n=xl(f)),n=new u(a,n),t.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=nc,t.stateNode=n,n._reactInternals=t,n=t.stateNode,n.props=a,n.state=t.memoizedState,n.refs={},Gf(t),f=u.contextType,n.context=typeof f=="object"&&f!==null?xl(f):Fu,n.state=t.memoizedState,f=u.getDerivedStateFromProps,typeof f=="function"&&(ec(t,u,f,a),n.state=t.memoizedState),typeof u.getDerivedStateFromProps=="function"||typeof n.getSnapshotBeforeUpdate=="function"||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(f=n.state,typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount(),f!==n.state&&nc.enqueueReplaceState(n,n.state,null),Ja(t,a,n,e),Ka(),n.state=t.memoizedState),typeof n.componentDidMount=="function"&&(t.flags|=4194308),a=!0}else if(l===null){n=t.stateNode;var c=t.memoizedProps,i=Nu(u,c);n.props=i;var h=n.context,E=u.contextType;f=Fu,typeof E=="object"&&E!==null&&(f=xl(E));var M=u.getDerivedStateFromProps;E=typeof M=="function"||typeof n.getSnapshotBeforeUpdate=="function",c=t.pendingProps!==c,E||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(c||h!==f)&&bo(t,n,a,f),wt=!1;var g=t.memoizedState;n.state=g,Ja(t,a,n,e),Ka(),h=t.memoizedState,c||g!==h||wt?(typeof M=="function"&&(ec(t,u,M,a),h=t.memoizedState),(i=wt||So(t,u,i,a,g,h,f))?(E||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount()),typeof n.componentDidMount=="function"&&(t.flags|=4194308)):(typeof n.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=h),n.props=a,n.state=h,n.context=f,a=i):(typeof n.componentDidMount=="function"&&(t.flags|=4194308),a=!1)}else{n=t.stateNode,Cf(l,t),f=t.memoizedProps,E=Nu(u,f),n.props=E,M=t.pendingProps,g=n.context,h=u.contextType,i=Fu,typeof h=="object"&&h!==null&&(i=xl(h)),c=u.getDerivedStateFromProps,(h=typeof c=="function"||typeof n.getSnapshotBeforeUpdate=="function")||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(f!==M||g!==i)&&bo(t,n,a,i),wt=!1,g=t.memoizedState,n.state=g,Ja(t,a,n,e),Ka();var S=t.memoizedState;f!==M||g!==S||wt||l!==null&&l.dependencies!==null&&Ve(l.dependencies)?(typeof c=="function"&&(ec(t,u,c,a),S=t.memoizedState),(E=wt||So(t,u,E,a,g,S,i)||l!==null&&l.dependencies!==null&&Ve(l.dependencies))?(h||typeof n.UNSAFE_componentWillUpdate!="function"&&typeof n.componentWillUpdate!="function"||(typeof n.componentWillUpdate=="function"&&n.componentWillUpdate(a,S,i),typeof n.UNSAFE_componentWillUpdate=="function"&&n.UNSAFE_componentWillUpdate(a,S,i)),typeof n.componentDidUpdate=="function"&&(t.flags|=4),typeof n.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof n.componentDidUpdate!="function"||f===l.memoizedProps&&g===l.memoizedState||(t.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||f===l.memoizedProps&&g===l.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=S),n.props=a,n.state=S,n.context=i,a=E):(typeof n.componentDidUpdate!="function"||f===l.memoizedProps&&g===l.memoizedState||(t.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||f===l.memoizedProps&&g===l.memoizedState||(t.flags|=1024),a=!1)}return n=a,on(l,t),a=(t.flags&128)!==0,n||a?(n=t.stateNode,u=a&&typeof u.getDerivedStateFromError!="function"?null:n.render(),t.flags|=1,l!==null&&a?(t.child=ca(t,l.child,null,e),t.child=ca(t,null,u,e)):Hl(l,t,u,e),t.memoizedState=n.state,l=t.child):l=Gt(l,t,e),l}function Bo(l,t,u,a){return Ca(),t.flags|=256,Hl(l,t,u,a),t.child}var ic={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function sc(l){return{baseLanes:l,cachePool:Es()}}function oc(l,t,u){return l=l!==null?l.childLanes&~u:0,t&&(l|=rt),l}function Yo(l,t,u){var a=t.pendingProps,e=!1,n=(t.flags&128)!==0,f;if((f=n)||(f=l!==null&&l.memoizedState===null?!1:(Dl.current&2)!==0),f&&(e=!0,t.flags&=-129),f=(t.flags&32)!==0,t.flags&=-33,l===null){if(al){if(e?Ft(t):It(),al){var c=ml,i;if(i=c){l:{for(i=c,c=At;i.nodeType!==8;){if(!c){c=null;break l}if(i=gt(i.nextSibling),i===null){c=null;break l}}c=i}c!==null?(t.memoizedState={dehydrated:c,treeContext:Ou!==null?{id:Rt,overflow:Nt}:null,retryLane:536870912,hydrationErrors:null},i=Il(18,null,null,0),i.stateNode=c,i.return=t,t.child=i,Ql=t,ml=null,i=!0):i=!1}i||_u(t)}if(c=t.memoizedState,c!==null&&(c=c.dehydrated,c!==null))return wc(c)?t.lanes=32:t.lanes=536870912,null;Yt(t)}return c=a.children,a=a.fallback,e?(It(),e=t.mode,c=rn({mode:"hidden",children:c},e),a=Tu(a,e,u,null),c.return=t,a.return=t,c.sibling=a,t.child=c,e=t.child,e.memoizedState=sc(u),e.childLanes=oc(l,f,u),t.memoizedState=ic,a):(Ft(t),rc(t,c))}if(i=l.memoizedState,i!==null&&(c=i.dehydrated,c!==null)){if(n)t.flags&256?(Ft(t),t.flags&=-257,t=dc(l,t,u)):t.memoizedState!==null?(It(),t.child=l.child,t.flags|=128,t=null):(It(),e=a.fallback,c=t.mode,a=rn({mode:"visible",children:a.children},c),e=Tu(e,c,u,null),e.flags|=2,a.return=t,e.return=t,a.sibling=e,t.child=a,ca(t,l.child,null,u),a=t.child,a.memoizedState=sc(u),a.childLanes=oc(l,f,u),t.memoizedState=ic,t=e);else if(Ft(t),wc(c)){if(f=c.nextSibling&&c.nextSibling.dataset,f)var h=f.dgst;f=h,a=Error(s(419)),a.stack="",a.digest=f,La({value:a,source:null,stack:null}),t=dc(l,t,u)}else if(Ul||xa(l,t,u,!1),f=(u&l.childLanes)!==0,Ul||f){if(f=dl,f!==null&&(a=u&-u,a=(a&42)!==0?1:wn(a),a=(a&(f.suspendedLanes|u))!==0?0:a,a!==0&&a!==i.retryLane))throw i.retryLane=a,ku(l,a),at(f,l,a),_o;c.data==="$?"||Rc(),t=dc(l,t,u)}else c.data==="$?"?(t.flags|=192,t.child=l.child,t=null):(l=i.treeContext,ml=gt(c.nextSibling),Ql=t,al=!0,zu=null,At=!1,l!==null&&(it[st++]=Rt,it[st++]=Nt,it[st++]=Ou,Rt=l.id,Nt=l.overflow,Ou=t),t=rc(t,a.children),t.flags|=4096);return t}return e?(It(),e=a.fallback,c=t.mode,i=l.child,h=i.sibling,a=Ut(i,{mode:"hidden",children:a.children}),a.subtreeFlags=i.subtreeFlags&65011712,h!==null?e=Ut(h,e):(e=Tu(e,c,u,null),e.flags|=2),e.return=t,a.return=t,a.sibling=e,t.child=a,a=e,e=t.child,c=l.child.memoizedState,c===null?c=sc(u):(i=c.cachePool,i!==null?(h=_l._currentValue,i=i.parent!==h?{parent:h,pool:h}:i):i=Es(),c={baseLanes:c.baseLanes|u,cachePool:i}),e.memoizedState=c,e.childLanes=oc(l,f,u),t.memoizedState=ic,a):(Ft(t),u=l.child,l=u.sibling,u=Ut(u,{mode:"visible",children:a.children}),u.return=t,u.sibling=null,l!==null&&(f=t.deletions,f===null?(t.deletions=[l],t.flags|=16):f.push(l)),t.child=u,t.memoizedState=null,u)}function rc(l,t){return t=rn({mode:"visible",children:t},l.mode),t.return=l,l.child=t}function rn(l,t){return l=Il(22,l,null,t),l.lanes=0,l.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},l}function dc(l,t,u){return ca(t,l.child,null,u),l=rc(t,t.pendingProps.children),l.flags|=2,t.memoizedState=null,l}function Go(l,t,u){l.lanes|=t;var a=l.alternate;a!==null&&(a.lanes|=t),Rf(l.return,t,u)}function vc(l,t,u,a,e){var n=l.memoizedState;n===null?l.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:u,tailMode:e}:(n.isBackwards=t,n.rendering=null,n.renderingStartTime=0,n.last=a,n.tail=u,n.tailMode=e)}function Co(l,t,u){var a=t.pendingProps,e=a.revealOrder,n=a.tail;if(Hl(l,t,a.children,u),a=Dl.current,(a&2)!==0)a=a&1|2,t.flags|=128;else{if(l!==null&&(l.flags&128)!==0)l:for(l=t.child;l!==null;){if(l.tag===13)l.memoizedState!==null&&Go(l,u,t);else if(l.tag===19)Go(l,u,t);else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===t)break l;for(;l.sibling===null;){if(l.return===null||l.return===t)break l;l=l.return}l.sibling.return=l.return,l=l.sibling}a&=1}switch(U(Dl,a),e){case"forwards":for(u=t.child,e=null;u!==null;)l=u.alternate,l!==null&&fn(l)===null&&(e=u),u=u.sibling;u=e,u===null?(e=t.child,t.child=null):(e=u.sibling,u.sibling=null),vc(t,!1,e,u,n);break;case"backwards":for(u=null,e=t.child,t.child=null;e!==null;){if(l=e.alternate,l!==null&&fn(l)===null){t.child=e;break}l=e.sibling,e.sibling=u,u=e,e=l}vc(t,!0,u,null,n);break;case"together":vc(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Gt(l,t,u){if(l!==null&&(t.dependencies=l.dependencies),au|=t.lanes,(u&t.childLanes)===0)if(l!==null){if(xa(l,t,u,!1),(u&t.childLanes)===0)return null}else return null;if(l!==null&&t.child!==l.child)throw Error(s(153));if(t.child!==null){for(l=t.child,u=Ut(l,l.pendingProps),t.child=u,u.return=t;l.sibling!==null;)l=l.sibling,u=u.sibling=Ut(l,l.pendingProps),u.return=t;u.sibling=null}return t.child}function yc(l,t){return(l.lanes&t)!==0?!0:(l=l.dependencies,!!(l!==null&&Ve(l)))}function K0(l,t,u){switch(t.tag){case 3:vl(t,t.stateNode.containerInfo),Jt(t,_l,l.memoizedState.cache),Ca();break;case 27:case 5:jn(t);break;case 4:vl(t,t.stateNode.containerInfo);break;case 10:Jt(t,t.type,t.memoizedProps.value);break;case 13:var a=t.memoizedState;if(a!==null)return a.dehydrated!==null?(Ft(t),t.flags|=128,null):(u&t.child.childLanes)!==0?Yo(l,t,u):(Ft(t),l=Gt(l,t,u),l!==null?l.sibling:null);Ft(t);break;case 19:var e=(l.flags&128)!==0;if(a=(u&t.childLanes)!==0,a||(xa(l,t,u,!1),a=(u&t.childLanes)!==0),e){if(a)return Co(l,t,u);t.flags|=128}if(e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null,e.lastEffect=null),U(Dl,Dl.current),a)break;return null;case 22:case 23:return t.lanes=0,Ro(l,t,u);case 24:Jt(t,_l,l.memoizedState.cache)}return Gt(l,t,u)}function Lo(l,t,u){if(l!==null)if(l.memoizedProps!==t.pendingProps)Ul=!0;else{if(!yc(l,u)&&(t.flags&128)===0)return Ul=!1,K0(l,t,u);Ul=(l.flags&131072)!==0}else Ul=!1,al&&(t.flags&1048576)!==0&&vs(t,Ze,t.index);switch(t.lanes=0,t.tag){case 16:l:{l=t.pendingProps;var a=t.elementType,e=a._init;if(a=e(a._payload),t.type=a,typeof a=="function")Of(a)?(l=Nu(a,l),t.tag=1,t=qo(null,t,a,l,u)):(t.tag=0,t=cc(null,t,a,l,u));else{if(a!=null){if(e=a.$$typeof,e===wl){t.tag=11,t=Do(null,t,a,l,u);break l}else if(e===zl){t.tag=14,t=po(null,t,a,l,u);break l}}throw t=mu(a)||a,Error(s(306,t,""))}}return t;case 0:return cc(l,t,t.type,t.pendingProps,u);case 1:return a=t.type,e=Nu(a,t.pendingProps),qo(l,t,a,e,u);case 3:l:{if(vl(t,t.stateNode.containerInfo),l===null)throw Error(s(387));a=t.pendingProps;var n=t.memoizedState;e=n.element,Cf(l,t),Ja(t,a,null,u);var f=t.memoizedState;if(a=f.cache,Jt(t,_l,a),a!==n.cache&&Nf(t,[_l],u,!0),Ka(),a=f.element,n.isDehydrated)if(n={element:a,isDehydrated:!1,cache:f.cache},t.updateQueue.baseState=n,t.memoizedState=n,t.flags&256){t=Bo(l,t,a,u);break l}else if(a!==e){e=ft(Error(s(424)),t),La(e),t=Bo(l,t,a,u);break l}else{switch(l=t.stateNode.containerInfo,l.nodeType){case 9:l=l.body;break;default:l=l.nodeName==="HTML"?l.ownerDocument.body:l}for(ml=gt(l.firstChild),Ql=t,al=!0,zu=null,At=!0,u=mo(t,null,a,u),t.child=u;u;)u.flags=u.flags&-3|4096,u=u.sibling}else{if(Ca(),a===e){t=Gt(l,t,u);break l}Hl(l,t,a,u)}t=t.child}return t;case 26:return on(l,t),l===null?(u=jr(t.type,null,t.pendingProps,null))?t.memoizedState=u:al||(u=t.type,l=t.pendingProps,a=zn(V.current).createElement(u),a[Ll]=t,a[jl]=l,Bl(a,u,l),pl(a),t.stateNode=a):t.memoizedState=jr(t.type,l.memoizedProps,t.pendingProps,l.memoizedState),null;case 27:return jn(t),l===null&&al&&(a=t.stateNode=xr(t.type,t.pendingProps,V.current),Ql=t,At=!0,e=ml,cu(t.type)?(Wc=e,ml=gt(a.firstChild)):ml=e),Hl(l,t,t.pendingProps.children,u),on(l,t),l===null&&(t.flags|=4194304),t.child;case 5:return l===null&&al&&((e=a=ml)&&(a=bv(a,t.type,t.pendingProps,At),a!==null?(t.stateNode=a,Ql=t,ml=gt(a.firstChild),At=!1,e=!0):e=!1),e||_u(t)),jn(t),e=t.type,n=t.pendingProps,f=l!==null?l.memoizedProps:null,a=n.children,Vc(e,n)?a=null:f!==null&&Vc(e,f)&&(t.flags|=32),t.memoizedState!==null&&(e=Zf(l,t,C0,null,null,u),ye._currentValue=e),on(l,t),Hl(l,t,a,u),t.child;case 6:return l===null&&al&&((l=u=ml)&&(u=Ev(u,t.pendingProps,At),u!==null?(t.stateNode=u,Ql=t,ml=null,l=!0):l=!1),l||_u(t)),null;case 13:return Yo(l,t,u);case 4:return vl(t,t.stateNode.containerInfo),a=t.pendingProps,l===null?t.child=ca(t,null,a,u):Hl(l,t,a,u),t.child;case 11:return Do(l,t,t.type,t.pendingProps,u);case 7:return Hl(l,t,t.pendingProps,u),t.child;case 8:return Hl(l,t,t.pendingProps.children,u),t.child;case 12:return Hl(l,t,t.pendingProps.children,u),t.child;case 10:return a=t.pendingProps,Jt(t,t.type,a.value),Hl(l,t,a.children,u),t.child;case 9:return e=t.type._context,a=t.pendingProps.children,pu(t),e=xl(e),a=a(e),t.flags|=1,Hl(l,t,a,u),t.child;case 14:return po(l,t,t.type,t.pendingProps,u);case 15:return Uo(l,t,t.type,t.pendingProps,u);case 19:return Co(l,t,u);case 31:return a=t.pendingProps,u=t.mode,a={mode:a.mode,children:a.children},l===null?(u=rn(a,u),u.ref=t.ref,t.child=u,u.return=t,t=u):(u=Ut(l.child,a),u.ref=t.ref,t.child=u,u.return=t,t=u),t;case 22:return Ro(l,t,u);case 24:return pu(t),a=xl(_l),l===null?(e=Bf(),e===null&&(e=dl,n=Hf(),e.pooledCache=n,n.refCount++,n!==null&&(e.pooledCacheLanes|=u),e=n),t.memoizedState={parent:a,cache:e},Gf(t),Jt(t,_l,e)):((l.lanes&u)!==0&&(Cf(l,t),Ja(t,null,null,u),Ka()),e=l.memoizedState,n=t.memoizedState,e.parent!==a?(e={parent:a,cache:a},t.memoizedState=e,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=e),Jt(t,_l,a)):(a=n.cache,Jt(t,_l,a),a!==e.cache&&Nf(t,[_l],u,!0))),Hl(l,t,t.pendingProps.children,u),t.child;case 29:throw t.pendingProps}throw Error(s(156,t.tag))}function Ct(l){l.flags|=4}function xo(l,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)l.flags&=-16777217;else if(l.flags|=16777216,!wr(t)){if(t=ot.current,t!==null&&((ll&4194048)===ll?Tt!==null:(ll&62914560)!==ll&&(ll&536870912)===0||t!==Tt))throw Za=Yf,As;l.flags|=8192}}function dn(l,t){t!==null&&(l.flags|=4),l.flags&16384&&(t=l.tag!==22?mi():536870912,l.lanes|=t,ra|=t)}function Pa(l,t){if(!al)switch(l.tailMode){case"hidden":t=l.tail;for(var u=null;t!==null;)t.alternate!==null&&(u=t),t=t.sibling;u===null?l.tail=null:u.sibling=null;break;case"collapsed":u=l.tail;for(var a=null;u!==null;)u.alternate!==null&&(a=u),u=u.sibling;a===null?t||l.tail===null?l.tail=null:l.tail.sibling=null:a.sibling=null}}function hl(l){var t=l.alternate!==null&&l.alternate.child===l.child,u=0,a=0;if(t)for(var e=l.child;e!==null;)u|=e.lanes|e.childLanes,a|=e.subtreeFlags&65011712,a|=e.flags&65011712,e.return=l,e=e.sibling;else for(e=l.child;e!==null;)u|=e.lanes|e.childLanes,a|=e.subtreeFlags,a|=e.flags,e.return=l,e=e.sibling;return l.subtreeFlags|=a,l.childLanes=u,t}function J0(l,t,u){var a=t.pendingProps;switch(Df(t),t.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return hl(t),null;case 1:return hl(t),null;case 3:return u=t.stateNode,a=null,l!==null&&(a=l.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),qt(_l),jt(),u.pendingContext&&(u.context=u.pendingContext,u.pendingContext=null),(l===null||l.child===null)&&(Ga(t)?Ct(t):l===null||l.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,ms())),hl(t),null;case 26:return u=t.memoizedState,l===null?(Ct(t),u!==null?(hl(t),xo(t,u)):(hl(t),t.flags&=-16777217)):u?u!==l.memoizedState?(Ct(t),hl(t),xo(t,u)):(hl(t),t.flags&=-16777217):(l.memoizedProps!==a&&Ct(t),hl(t),t.flags&=-16777217),null;case 27:Te(t),u=V.current;var e=t.type;if(l!==null&&t.stateNode!=null)l.memoizedProps!==a&&Ct(t);else{if(!a){if(t.stateNode===null)throw Error(s(166));return hl(t),null}l=C.current,Ga(t)?ys(t):(l=xr(e,a,u),t.stateNode=l,Ct(t))}return hl(t),null;case 5:if(Te(t),u=t.type,l!==null&&t.stateNode!=null)l.memoizedProps!==a&&Ct(t);else{if(!a){if(t.stateNode===null)throw Error(s(166));return hl(t),null}if(l=C.current,Ga(t))ys(t);else{switch(e=zn(V.current),l){case 1:l=e.createElementNS("http://www.w3.org/2000/svg",u);break;case 2:l=e.createElementNS("http://www.w3.org/1998/Math/MathML",u);break;default:switch(u){case"svg":l=e.createElementNS("http://www.w3.org/2000/svg",u);break;case"math":l=e.createElementNS("http://www.w3.org/1998/Math/MathML",u);break;case"script":l=e.createElement("div"),l.innerHTML=" + + + +
+ + diff --git a/dist/samples/react-map-3d-custom/docs/index.html b/dist/samples/react-map-3d-custom/docs/index.html new file mode 100644 index 00000000..c27104ae --- /dev/null +++ b/dist/samples/react-map-3d-custom/docs/index.html @@ -0,0 +1,31 @@ + + + + + + Example: Photorealistic 3D Map + + + + +
+ + + diff --git a/dist/samples/react-map-3d-custom/docs/src/app.js b/dist/samples/react-map-3d-custom/docs/src/app.js new file mode 100644 index 00000000..4accf31e --- /dev/null +++ b/dist/samples/react-map-3d-custom/docs/src/app.js @@ -0,0 +1,42 @@ +import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime"; +import React, { useCallback, useState } from 'react'; +import { createRoot } from 'react-dom/client'; +import { APIProvider } from '@vis.gl/react-google-maps'; +import { Map3D } from './map-3d'; +import './styles.css'; +const API_KEY = process.env.GOOGLE_MAPS_API_KEY; +const INITIAL_VIEW_PROPS = { + center: { lat: 37.69637422900176, lng: -118.5041096347873, altitude: 4020000 }, + range: 50000, + heading: 0, + tilt: 25, + roll: 0 +}; +const Map3DExample = () => { + const [viewProps, setViewProps] = useState(INITIAL_VIEW_PROPS); + const handleCameraChange = useCallback((props) => { + setViewProps(oldProps => ({ ...oldProps, ...props })); + }, []); + const handleMapClick = useCallback((ev) => { + if (!ev.detail.latLng) + return; + const { lat, lng } = ev.detail.latLng; + setViewProps(p => ({ ...p, center: { lat, lng, altitude: 0 } })); + }, []); + return (_jsx(_Fragment, { children: _jsx(Map3D, { ...viewProps, onCameraChange: handleCameraChange, defaultLabelsDisabled: true }) })); +}; +const App = () => { + const nonAlphaVersionLoaded = Boolean(globalThis && + globalThis.google?.maps?.version && + !globalThis.google?.maps?.version.endsWith('-alpha')); + if (nonAlphaVersionLoaded) { + location.reload(); + return; + } + return (_jsx(APIProvider, { apiKey: API_KEY, version: 'nightly', children: _jsx(Map3DExample, {}) })); +}; +export default App; +export function renderToDom(container) { + const root = createRoot(container); + root.render(_jsx(React.StrictMode, { children: _jsx(App, {}) })); +} diff --git a/dist/samples/react-map-3d-custom/docs/src/app.tsx b/dist/samples/react-map-3d-custom/docs/src/app.tsx new file mode 100644 index 00000000..d9baeebb --- /dev/null +++ b/dist/samples/react-map-3d-custom/docs/src/app.tsx @@ -0,0 +1,73 @@ +import React, {useCallback, useState} from 'react'; +import {createRoot} from 'react-dom/client'; + +import {APIProvider, MapMouseEvent} from '@vis.gl/react-google-maps'; + +import {Map3D, Map3DCameraProps} from './map-3d'; + +import './styles.css'; + +const API_KEY = process.env.GOOGLE_MAPS_API_KEY as string; + +const INITIAL_VIEW_PROPS = { + center: {lat: 37.69637422900176, lng:-118.5041096347873, altitude: 4020000}, + range: 50000, + heading: 0, + tilt: 25, + roll: 0 +}; + +const Map3DExample = () => { + const [viewProps, setViewProps] = useState(INITIAL_VIEW_PROPS); + + const handleCameraChange = useCallback((props: Map3DCameraProps) => { + setViewProps(oldProps => ({...oldProps, ...props})); + }, []); + + const handleMapClick = useCallback((ev: MapMouseEvent) => { + if (!ev.detail.latLng) return; + + const {lat, lng} = ev.detail.latLng; + setViewProps(p => ({...p, center: {lat, lng, altitude: 0}})); + }, []); + + return ( + <> + + + ); +}; + +const App = () => { + const nonAlphaVersionLoaded = Boolean( + globalThis && + globalThis.google?.maps?.version && + !globalThis.google?.maps?.version.endsWith('-alpha') + ); + + if (nonAlphaVersionLoaded) { + location.reload(); + return; + } + + return ( + + + + ); +}; +export default App; + +export function renderToDom(container: HTMLElement) { + const root = createRoot(container); + + root.render( + + + + ); +} diff --git a/dist/samples/react-map-3d-custom/docs/src/styles.css b/dist/samples/react-map-3d-custom/docs/src/styles.css new file mode 100644 index 00000000..0486135f --- /dev/null +++ b/dist/samples/react-map-3d-custom/docs/src/styles.css @@ -0,0 +1 @@ +/* Add custom styles here */ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 72a1b9aa..e3cc598d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1350,6 +1350,10 @@ "resolved": "samples/deckgl-polygon", "link": true }, + "node_modules/@js-api-samples/js-api-loader-map": { + "resolved": "samples/js-api-loader-map", + "link": true + }, "node_modules/@js-api-samples/layer-data-simple": { "resolved": "samples/layer-data-simple", "link": true @@ -1390,6 +1394,14 @@ "resolved": "samples/place-text-search", "link": true }, + "node_modules/@js-api-samples/react-map-3d-custom": { + "resolved": "samples/react-map-3d-custom", + "link": true + }, + "node_modules/@js-api-samples/react-map-3d-custom-gpx": { + "resolved": "samples/react-map-3d-custom-gpx", + "link": true + }, "node_modules/@js-api-samples/react-places-ui-kit-search-nearby": { "resolved": "samples/react-ui-kit-search-nearby", "link": true @@ -1470,6 +1482,99 @@ "resolved": "samples/weather-api-current-compact", "link": true }, + "node_modules/@lezer/common": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz", + "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==", + "dev": true + }, + "node_modules/@lezer/lr": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz", + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", + "dev": true, + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.8.5.tgz", + "integrity": "sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.8.5.tgz", + "integrity": "sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.8.5.tgz", + "integrity": "sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.8.5.tgz", + "integrity": "sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.8.5.tgz", + "integrity": "sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.8.5.tgz", + "integrity": "sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@loaders.gl/core": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/@loaders.gl/core/-/core-4.3.4.tgz", @@ -1579,6 +1684,98 @@ "resolved": "https://registry.npmjs.org/@math.gl/types/-/types-4.1.0.tgz", "integrity": "sha512-clYZdHcmRvMzVK5fjeDkQlHUzXQSNdZ7s4xOqC3nJPgz4C/TZkUecTo9YS4PruZqtDda/ag4erndP0MIn40dGA==" }, + "node_modules/@mischnic/json-sourcemap": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz", + "integrity": "sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==", + "dev": true, + "dependencies": { + "@lezer/common": "^1.0.0", + "@lezer/lr": "^1.0.0", + "json5": "^2.2.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1617,342 +1814,4098 @@ "node": ">= 8" } }, - "node_modules/@playwright/test": { - "version": "1.55.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.55.1.tgz", - "integrity": "sha512-IVAh/nOJaw6W9g+RJVlIQJ6gSiER+ae6mKQ5CX1bERzQgbC1VSeBlwdvczT7pxb0GWiyrxH4TGKbMfDb4Sq/ig==", + "node_modules/@parcel/bundler-default": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.16.0.tgz", + "integrity": "sha512-8kY+TUhir7qm+TgSMeMd8CP2PVoZjXamiZ8+mbXws4jKw6IrIVDQf8TkBZKGk7ncKJEteiX4ybbmiPjho8cHuA==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "playwright": "1.55.1" + "@parcel/diagnostic": "2.16.0", + "@parcel/graph": "3.6.0", + "@parcel/plugin": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/utils": "2.16.0", + "nullthrows": "^1.1.1" }, - "bin": { - "playwright": "cli.js" + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/cache": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.16.0.tgz", + "integrity": "sha512-stBGOio+z2qjnSJNl1vJTNqjgLyzDFp+tUOKgaLJ8Vmn67jYccoGLTNApw2mhB3HtQuoz/5eudGHSvhqMpMyTg==", + "dev": true, + "dependencies": { + "@parcel/fs": "2.16.0", + "@parcel/logger": "2.16.0", + "@parcel/utils": "2.16.0", + "lmdb": "2.8.5" }, "engines": { - "node": ">=18" + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.16.0" } }, - "node_modules/@probe.gl/env": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@probe.gl/env/-/env-4.1.0.tgz", - "integrity": "sha512-5ac2Jm2K72VCs4eSMsM7ykVRrV47w32xOGMvcgqn8vQdEMF9PRXyBGYEV9YbqRKWNKpNKmQJVi4AHM/fkCxs9w==" + "node_modules/@parcel/codeframe": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.16.0.tgz", + "integrity": "sha512-wXpHOOE5o0c55AiUMCwkIrVCFeJzBfZpjhn07WQUUk57gGts5R67bMsoeoizvBhI748l6iSU7rPZSSrXc8NoRg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@probe.gl/log": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@probe.gl/log/-/log-4.1.0.tgz", - "integrity": "sha512-r4gRReNY6f+OZEMgfWEXrAE2qJEt8rX0HsDJQXUBMoc+5H47bdB7f/5HBHAmapK8UydwPKL9wCDoS22rJ0yq7Q==", + "node_modules/@parcel/compressor-raw": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.16.0.tgz", + "integrity": "sha512-tl8/iCPlInfD3YLo1s/kA9/o7XdrYNBuGsAj4VOFqplH+2FINb48XPzp7Z4VGOB2q8qokt2gohTGfuNPGIX2pw==", + "dev": true, "dependencies": { - "@probe.gl/env": "4.1.0" + "@parcel/plugin": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/config-default": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.16.0.tgz", + "integrity": "sha512-az5gWXyztHekV1Dpz3nNT3iz5SqHh2924XCb2w+VyNDtnLhLNQ+X7NJd0na+EbWd9KBJYEdVYDPVDy1bEei0lQ==", + "dev": true, + "dependencies": { + "@parcel/bundler-default": "2.16.0", + "@parcel/compressor-raw": "2.16.0", + "@parcel/namer-default": "2.16.0", + "@parcel/optimizer-css": "2.16.0", + "@parcel/optimizer-html": "2.16.0", + "@parcel/optimizer-image": "2.16.0", + "@parcel/optimizer-svg": "2.16.0", + "@parcel/optimizer-swc": "2.16.0", + "@parcel/packager-css": "2.16.0", + "@parcel/packager-html": "2.16.0", + "@parcel/packager-js": "2.16.0", + "@parcel/packager-raw": "2.16.0", + "@parcel/packager-svg": "2.16.0", + "@parcel/packager-wasm": "2.16.0", + "@parcel/reporter-dev-server": "2.16.0", + "@parcel/resolver-default": "2.16.0", + "@parcel/runtime-browser-hmr": "2.16.0", + "@parcel/runtime-js": "2.16.0", + "@parcel/runtime-rsc": "2.16.0", + "@parcel/runtime-service-worker": "2.16.0", + "@parcel/transformer-babel": "2.16.0", + "@parcel/transformer-css": "2.16.0", + "@parcel/transformer-html": "2.16.0", + "@parcel/transformer-image": "2.16.0", + "@parcel/transformer-js": "2.16.0", + "@parcel/transformer-json": "2.16.0", + "@parcel/transformer-node": "2.16.0", + "@parcel/transformer-postcss": "2.16.0", + "@parcel/transformer-posthtml": "2.16.0", + "@parcel/transformer-raw": "2.16.0", + "@parcel/transformer-react-refresh-wrap": "2.16.0", + "@parcel/transformer-svg": "2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.16.0" + } + }, + "node_modules/@parcel/core": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.16.0.tgz", + "integrity": "sha512-erH9GdLe8Boie0mCO8hXn8Qt/pCACsOFlKp8UHNMlPaizUtCDkCOQqwmSi+VyrJ3dMMCOc/qBwTSGAJaJE8/Kw==", + "dev": true, + "dependencies": { + "@mischnic/json-sourcemap": "^0.1.1", + "@parcel/cache": "2.16.0", + "@parcel/diagnostic": "2.16.0", + "@parcel/events": "2.16.0", + "@parcel/feature-flags": "2.16.0", + "@parcel/fs": "2.16.0", + "@parcel/graph": "3.6.0", + "@parcel/logger": "2.16.0", + "@parcel/package-manager": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/profiler": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/source-map": "^2.1.1", + "@parcel/types": "2.16.0", + "@parcel/utils": "2.16.0", + "@parcel/workers": "2.16.0", + "base-x": "^3.0.11", + "browserslist": "^4.24.5", + "clone": "^2.1.2", + "dotenv": "^16.5.0", + "dotenv-expand": "^11.0.7", + "json5": "^2.2.3", + "msgpackr": "^1.11.2", + "nullthrows": "^1.1.1", + "semver": "^7.7.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@probe.gl/stats": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-4.1.0.tgz", - "integrity": "sha512-EI413MkWKBDVNIfLdqbeNSJTs7ToBz/KVGkwi3D+dQrSIkRI2IYbWGAU3xX+D6+CI4ls8ehxMhNpUVMaZggDvQ==" + "node_modules/@parcel/core/node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.35", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.35.tgz", - "integrity": "sha512-slYrCpoxJUqzFDDNlvrOYRazQUNRvWPjXA17dAOISY3rDMxX6k8K4cj2H+hEYMHF81HO3uNd5rHVigAWRM5dSg==", + "node_modules/@parcel/diagnostic": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.16.0.tgz", + "integrity": "sha512-z5MeMwFegaA23wseltLykVV9OxsKkY3BiEje/Dt7ttVivwNWFKHDuXB8vbZTDArUooixUH3s/RJhTFI46VJc2A==", "dev": true, - "license": "MIT" + "dependencies": { + "@mischnic/json-sourcemap": "^0.1.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", - "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", - "cpu": [ - "arm" - ], + "node_modules/@parcel/error-overlay": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/error-overlay/-/error-overlay-2.16.0.tgz", + "integrity": "sha512-ZcXOZc548Tjms0z7uaE4iUKHul32CpX5dCnEdum9PExxCLNCCxm4JgoO+dWeZXjNQDi8Opz9N3GU4wnF7WVzhg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", - "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", - "cpu": [ - "arm64" - ], + "node_modules/@parcel/events": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.16.0.tgz", + "integrity": "sha512-PI7dryJLPYCe4jNzo7XWAzbUPUuD50Nd76GTdzaHhmcQfZnPrtWAu73UmP3yYqpbv97TtWSiCJyrJWPTDU/REA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", - "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", - "cpu": [ - "arm64" - ], + "node_modules/@parcel/feature-flags": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/feature-flags/-/feature-flags-2.16.0.tgz", + "integrity": "sha512-GiRpLx0x8dZdWCpftk6OE0lp0Cc8oUyBssPiobigpSA8vgxrCz/zLbs83R/K70p+wPBb+ye4eEiR67+KCwcSXg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", - "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", - "cpu": [ - "x64" - ], + "node_modules/@parcel/fs": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.16.0.tgz", + "integrity": "sha512-nRp4BhJm1V8tPu68WjRvu5kbBjTwWXYzqwpGoWwHFmZQQ2J1/Ye28x1NY3awxSVGyXsEy2sEO4s7rLyd0EW2pA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "dependencies": { + "@parcel/feature-flags": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/types-internal": "2.16.0", + "@parcel/utils": "2.16.0", + "@parcel/watcher": "^2.0.7", + "@parcel/workers": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.16.0" + } }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", - "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", - "cpu": [ - "arm64" - ], + "node_modules/@parcel/graph": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.6.0.tgz", + "integrity": "sha512-ShxOzS0FdyXJ7gwit7CSPuQCbU0bXkB+kZyrXgj0UmgIDYDMYO02T+UIlH4AReEzqcZq3An+sDOx+UKRM8j8Uw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "dependencies": { + "@parcel/feature-flags": "2.16.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", - "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", - "cpu": [ - "x64" - ], + "node_modules/@parcel/logger": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.16.0.tgz", + "integrity": "sha512-/K6UVVCtS1KOkH9xxuH9u2xV3348mb+Fb33K/OUs5wnpfmo0TtrzodjLyMpQG6KrofmYKSNzA5petp7+cf3aug==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/events": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", - "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", - "cpu": [ - "arm" - ], + "node_modules/@parcel/markdown-ansi": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.16.0.tgz", + "integrity": "sha512-NxlmF/JAmsq9Yf/8q2+WEHFkcQ/cDoVOUx6ETDM8icDaQ8kXJbZSKAMOWnsB1EF0757UST77kX9zw/V6tyXqnw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "chalk": "^4.1.2" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", - "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", - "cpu": [ - "arm" - ], + "node_modules/@parcel/namer-default": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.16.0.tgz", + "integrity": "sha512-pRb6Bz32Xl65CZ1LzKAa8ADGyPyrJ724tq2IToqH5JQ8bFGNXF7Tg/qrv582CjHS5dJb/HB7LizfWaliHiG5DA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/plugin": "2.16.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/node-resolver-core": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.7.0.tgz", + "integrity": "sha512-YIK7wtjO7biRoXNRdFR0uSYPY0FwvCA77xlJCOTX1+jeACj8BPwLKOMFJKCA89pBr7iHyTNzZ3ppVGsX8flMag==", + "dev": true, + "dependencies": { + "@mischnic/json-sourcemap": "^0.1.1", + "@parcel/diagnostic": "2.16.0", + "@parcel/fs": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/utils": "2.16.0", + "nullthrows": "^1.1.1", + "semver": "^7.7.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-css": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.16.0.tgz", + "integrity": "sha512-QTrMOVknU4DmKzmnTxQx69ZZxoDYyTIWhpflDLSvUaLSXk2yi0SMBMcsEdA0W4bhORn6nj8toGwi04vbGVuQtA==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.16.0", + "browserslist": "^4.24.5", + "lightningcss": "^1.30.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-html": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-html/-/optimizer-html-2.16.0.tgz", + "integrity": "sha512-T8VvsdCwLb/l3a/eHF2lJfeGO6Z4znKjvnBAvtyLwtFVVNnJasJLo9Cuan4bcnVM8etzbxjg1Qs/9c1hzWsBYg==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/utils": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-image": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.16.0.tgz", + "integrity": "sha512-CVAitXbtKfVxxmOjieeI/YSwSFKx+In3MjP4jFpuYwgDT0TsgsyweBkADQMfEcBjeIPiCXLzzf/GSVIDY7hgwA==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/utils": "2.16.0", + "@parcel/workers": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.16.0" + } + }, + "node_modules/@parcel/optimizer-svg": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-svg/-/optimizer-svg-2.16.0.tgz", + "integrity": "sha512-fx9VK28bXaFz0dWs3rIOQM0t8nAWXE62o4JIcIAZND5/6ij1y4/Fap791agvH4SKxNPFu/a/KEmF50SRfcSwkw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/utils": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-swc": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.16.0.tgz", + "integrity": "sha512-AwakRkMBzDWNrXbm5eJtuBvjCSyp6J730MCltZtiSWLtFbvkXMCt1BQ6Ug91NHq/zA2HTo3RYh96wTMRSRQa2w==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.16.0", + "@swc/core": "^1.11.24", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/package-manager": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.16.0.tgz", + "integrity": "sha512-YDOLTcDFYJn3VeEYktO8Yrpw+kaWsLGHOUhPPrw3uaQsqNPi4wIRMsuhcFa9fAL5OlFX56I9iD/yciUiULOFXw==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/fs": "2.16.0", + "@parcel/logger": "2.16.0", + "@parcel/node-resolver-core": "3.7.0", + "@parcel/types": "2.16.0", + "@parcel/utils": "2.16.0", + "@parcel/workers": "2.16.0", + "@swc/core": "^1.11.24", + "semver": "^7.7.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.16.0" + } + }, + "node_modules/@parcel/packager-css": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.16.0.tgz", + "integrity": "sha512-T36uCm/RUZ6h33O8NsjOoTH0if/FWyXuBWenVeQgQZrlYR+wZBsZSV8CElBMCmrFJ5BdSG1RybXPwvkATpJeig==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.16.0", + "lightningcss": "^1.30.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-html": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.16.0.tgz", + "integrity": "sha512-d9NBtvJAGM8shnLfwDwF0VMP5P2F5Euvjbrv4FaqbivypzDBhjalE+EnC6eGtLNTCTg9o1CxxZmsTC/FVdu2yQ==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/types": "2.16.0", + "@parcel/utils": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-js": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.16.0.tgz", + "integrity": "sha512-2YHeFFFsh8KSqlfMfGVlAsDjwHZkGp99GRN+WnGAHlYzmDODve92yb94d5Zs22cDRzP6v/E5NMTYWu1dlUg/Wg==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/source-map": "^2.1.1", + "@parcel/types": "2.16.0", + "@parcel/utils": "2.16.0", + "globals": "^13.24.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-js/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@parcel/packager-raw": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.16.0.tgz", + "integrity": "sha512-jY/t/PXpNTK6EwLBSTJPGTB8FYmhqHtj4Am/JVQkJkxgB8h8diivxsReZYNfDt9J9pVxSk+lcZCdOZXf1ZtmWw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-svg": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.16.0.tgz", + "integrity": "sha512-NVmpVjRe2Lr7htrxsscy4ExSRUN+YiMvPmxp9ZxoDnrGerqa66B5/Rh7HOhx7Vo9wuH5LCpFAWYhgkhXH6qrqQ==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/types": "2.16.0", + "@parcel/utils": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-wasm": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-wasm/-/packager-wasm-2.16.0.tgz", + "integrity": "sha512-r+oCqaFfUB1f6CEQyWbkAjwfGrt2flNA3JguBJ8zCyDrx3fWI+isYufg2CP92ZJyOBTIU63iCi88YgcMLynL1g==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0" + }, + "engines": { + "node": ">=16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/plugin": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.16.0.tgz", + "integrity": "sha512-Rdk5e/VGmMp6s2DmC0AbjWYmea3Vv8Tx1SC5ln+lf+qRlhndrbFV9o5QKirTY9C8GWd20qH1ZqOxPDEzK/YSGA==", + "dev": true, + "dependencies": { + "@parcel/types": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/profiler": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.16.0.tgz", + "integrity": "sha512-xm6fVTA1V/Co7JuJfkNtZJsKsvq0RSpoE7JjiNtKLCMh+Lim6w7dxc6CEBqGImhR/9YbwteY6/gVFwkvCdLvLg==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/events": "2.16.0", + "@parcel/types-internal": "2.16.0", + "chrome-trace-event": "^1.0.2" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/reporter-cli": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.16.0.tgz", + "integrity": "sha512-76U06/aSGTO8UTEBJb+tIvNAH/2aOfWVTsP4QQym//Lf8fmXJnLaCDsJmiNAXjW44rnzjNQ7qzRrbwH7W5u7FA==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0", + "@parcel/types": "2.16.0", + "@parcel/utils": "2.16.0", + "chalk": "^4.1.2", + "term-size": "^2.2.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/reporter-dev-server": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.16.0.tgz", + "integrity": "sha512-n5XXh1S/oMQ8ItSm/nG5sPFb+1WBZPGtvDUd8gxvmO8lfZ7fo53l0TS5KshMvNqx0F208Erwi+/II78piqCrYA==", + "dev": true, + "dependencies": { + "@parcel/codeframe": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/reporter-tracer": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-tracer/-/reporter-tracer-2.16.0.tgz", + "integrity": "sha512-OHNQiz9c2F7nak8ztkuK+9ui9e5f9Qz5uEYPNHssyEIj4zLeenhnFEVSzUVXJdrqY0A3+xE8bFuQLi+PS+nbFQ==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0", + "@parcel/utils": "2.16.0", + "chrome-trace-event": "^1.0.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/resolver-default": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.16.0.tgz", + "integrity": "sha512-HvzVXPn8j/ElbNkqAHa7wHOzqCWTwAEv4pWJVnguuqL9m7ZC2INDsp3XJR1LOA5UqBYRhkBrvWK69v4sA21a9w==", + "dev": true, + "dependencies": { + "@parcel/node-resolver-core": "3.7.0", + "@parcel/plugin": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-browser-hmr": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.16.0.tgz", + "integrity": "sha512-tRPoFwUVtzE7ufOtIr1CHdh8SH3772FI1JlFCV0//tEWbj9iSk1bcK0g05Yj4dW4hW2SjqTcVo59Kw50Zeh7/Q==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0", + "@parcel/utils": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-js": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.16.0.tgz", + "integrity": "sha512-othbtwC7AG3SnDkzGpRXEwsY2/+INydJXSORogTEN/GSUQyci606pTfuU/eF9D22wVDdaVSYUhhJPTDdxksu9w==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/utils": "2.16.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-rsc": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-rsc/-/runtime-rsc-2.16.0.tgz", + "integrity": "sha512-5T+mNRrsA9zxkbdaV4rxqRc7CJP77/oNpajDPWcBWDELM8q42be0Sr5zYoAG28jcnQBf88u2rqPVpNtNxoM/ZA==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/utils": "2.16.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-service-worker": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.16.0.tgz", + "integrity": "sha512-YOkWJbY08IiUXUSudPwJXJKn7CycTCSzsfbhdG+bhvVdPWGv7DpMoPDSq3IL9/99JZe7iXcOnibxCmoJqZA6WQ==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0", + "@parcel/utils": "2.16.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.16.0.tgz", + "integrity": "sha512-9ZBiwCCm9OYa2f1rjkXtPUIa0qbKPmpdTqtNHC+5ieRxClvk+m/mxsO1Ag+GbNJrJ8qFYliL3Ha0ZK4d1BrVKw==", + "dev": true, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/rust-darwin-arm64": "2.16.0", + "@parcel/rust-darwin-x64": "2.16.0", + "@parcel/rust-linux-arm-gnueabihf": "2.16.0", + "@parcel/rust-linux-arm64-gnu": "2.16.0", + "@parcel/rust-linux-arm64-musl": "2.16.0", + "@parcel/rust-linux-x64-gnu": "2.16.0", + "@parcel/rust-linux-x64-musl": "2.16.0", + "@parcel/rust-win32-x64-msvc": "2.16.0" + }, + "peerDependencies": { + "napi-wasm": "^1.1.2" + }, + "peerDependenciesMeta": { + "napi-wasm": { + "optional": true + } + } + }, + "node_modules/@parcel/rust-darwin-arm64": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/rust-darwin-arm64/-/rust-darwin-arm64-2.16.0.tgz", + "integrity": "sha512-rdNl1jq34VflBzduQjcOH9SBJPW+Dy1w5XL7hQ5OEAOkRTP1/3mvh98iVYeB3e+RMjRNE/Ipn/rz2KXXku6e6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-darwin-x64": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/rust-darwin-x64/-/rust-darwin-x64-2.16.0.tgz", + "integrity": "sha512-tozUnjBPfnCjk6HVZCUKNdgFWw4WsLRTJdnsTYBIERrfj858VN0rdOGlVesLFYNSUquoAO+aHtRdT/JqYW7ozA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-linux-arm-gnueabihf": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/rust-linux-arm-gnueabihf/-/rust-linux-arm-gnueabihf-2.16.0.tgz", + "integrity": "sha512-FX/XrQm5BkLfHHBsUA1t7tYGTkNN4vr/t9ZuADUQCWng+m8g7BB78zWxkjoqayn5zTJAfjjQp42lSZzahtT59A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-linux-arm64-gnu": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/rust-linux-arm64-gnu/-/rust-linux-arm64-gnu-2.16.0.tgz", + "integrity": "sha512-zmnWuclEQDQMhbB8jQw9f1VbnSs6EB2RApg16qs5Co/dhZVozMwJngdkZ6mq5aW8ut+PKYrxIPcVsm7WtVOOfg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-linux-arm64-musl": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/rust-linux-arm64-musl/-/rust-linux-arm64-musl-2.16.0.tgz", + "integrity": "sha512-bL3PzFEg0azmdFaf34yHAXukk2MjNSuiITPVOj9Cq65qAk7lb4+9nuGIwrCMr1+R1yCamrL31GgG61qp0X97xg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-linux-x64-gnu": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/rust-linux-x64-gnu/-/rust-linux-x64-gnu-2.16.0.tgz", + "integrity": "sha512-yvuDTyuhMtwZjB1xGFmCC/UsZjEpMTAanJHAVX9b+tJnn7ArG7Q75Az/JpZsru6KAXiTo1krI54vTE87zzwkIg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-linux-x64-musl": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/rust-linux-x64-musl/-/rust-linux-x64-musl-2.16.0.tgz", + "integrity": "sha512-0q6ESCVe9uHVuQWuEGGDMJwjezliTsEWMcqn7oeQoKXaZJZQpW0UAuzNcNmpiHmeJdifYT9XuxVOo/a8IgOXhg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-win32-x64-msvc": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/rust-win32-x64-msvc/-/rust-win32-x64-msvc-2.16.0.tgz", + "integrity": "sha512-IVWpXF1VY+Xgi6ylXaZttAF5+WjazPyxRJUZlC31taYwpfZ4LzmsV8NYlj5ehjTL8d28SKDBoAnOQJwDRe8z8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/source-map": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", + "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": "^12.18.3 || >=14" + } + }, + "node_modules/@parcel/transformer-babel": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.16.0.tgz", + "integrity": "sha512-jlaFyGlRKFbAI8370bcuEzmsZENqdw9ATCowpB/XkKgUlYe6iplMlKLy4EquqSR6axqfxBRMoSCcKFkROuLI9g==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.16.0", + "browserslist": "^4.24.5", + "json5": "^2.2.3", + "nullthrows": "^1.1.1", + "semver": "^7.7.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-css": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.16.0.tgz", + "integrity": "sha512-WSUITzJl2/2uU04WnCLAwhZJ8RAaRvNQ64fMr4LauWa72gzqXgh3+1egddBiAT7e5IndVJ0AYFywLBVegwKOOA==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.16.0", + "browserslist": "^4.24.5", + "lightningcss": "^1.30.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-html": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.16.0.tgz", + "integrity": "sha512-CKAoB5yOovL3GyZlnm7lRUa3IfaSS/bEjjTy6F6RU7G4sMRgJu16AQfI4/uTJAA6iuW1ugNyza2DhWQ9xfbhaw==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/rust": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-image": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.16.0.tgz", + "integrity": "sha512-sW4CM6P2YMUyAICCMocTLvVVqnxmlBwkP+SrIZvNElDUu0CygOa92cA3rdepHi+tF1GN6ZvNwNyQbZGAIKVxgw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0", + "@parcel/utils": "2.16.0", + "@parcel/workers": "2.16.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "peerDependencies": { + "@parcel/core": "^2.16.0" + } + }, + "node_modules/@parcel/transformer-js": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.16.0.tgz", + "integrity": "sha512-VRTFEJ/N13MFvwJPwilPET6gHJ0ZdFbCK26uO7uyL1eMGMvWStTXEQXvhLqtMfvDcQPnwkF5XGJL5JsGpcBFFA==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.16.0", + "@parcel/workers": "2.16.0", + "@swc/helpers": "^0.5.0", + "browserslist": "^4.24.5", + "nullthrows": "^1.1.1", + "regenerator-runtime": "^0.14.1", + "semver": "^7.7.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.16.0" + } + }, + "node_modules/@parcel/transformer-json": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.16.0.tgz", + "integrity": "sha512-qX6Zg+j7HezY+W2TNjJ+VPUsIviNdTuMn39W9M0YEd0WLKh0x7XD4oprVivvgD0Vbm04FUcTQEN1jAF3CAVeGw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0", + "json5": "^2.2.3" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-node": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-node/-/transformer-node-2.16.0.tgz", + "integrity": "sha512-Mavmjj6SfP0Lhu751G47EFtExZIJyD+V2C5PzdATTaT+cw0MzQgfLH8s4p0CI27MAuyFesm8WTA0lgUtcfzMSw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-postcss": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.16.0.tgz", + "integrity": "sha512-h+Qnn49UE5RywpuXMHN8Iufjvc7MMqHQc0sPNvwoLBXJXJcb3ul7WEY+DGXs90KsUY1B6JAqKtz9+pzqXZMwIg==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/utils": "2.16.0", + "clone": "^2.1.2", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "semver": "^7.7.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-posthtml": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.16.0.tgz", + "integrity": "sha512-mvHQNzFO1xPq+/7McjxF7+Zb2zAgksNbSXKi8/OuMRiNO3eDD/r1jWRWKNQZHWUkSx/vS7JJ5Y1ACI5INLxWww==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0", + "@parcel/utils": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-raw": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.16.0.tgz", + "integrity": "sha512-LJXwH2rQAo6mOU6uG0IGQIN7KLC2sS8bl6aqf1YMcKk6ZEvylQkP0hUvRYja2IRzPoxjpdcAP5WC4e/Z8S1Vzg==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-react-refresh-wrap": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.16.0.tgz", + "integrity": "sha512-s6O5oJ0pUtZey6unI0mz2WIOpAVLCn5+hlou4YH7FXOiMvSJ2PU2rakk+EZk6K/R+TStYM0hQKSwJkiiN0m7Rg==", + "dev": true, + "dependencies": { + "@parcel/error-overlay": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/utils": "2.16.0", + "react-refresh": "^0.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-react-refresh-wrap/node_modules/react-refresh": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.16.0.tgz", + "integrity": "sha512-FPvF2XxTSikpJxcr+bHut2H4gJ17+18Uy20D5/F+SKzFap62R3cM5wH6b8WN3LyGSYeQilLEcJcR1fjBSI2S1A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@parcel/transformer-svg": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.16.0.tgz", + "integrity": "sha512-c4KpIqqbsvsh/ZxLTo0d7/IEVa/jR/+LZ1kFzBWXKvMBzbvqo63J6s3VGk61gPFV9JkSW3UI5LAMbJn/HDXycw==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/plugin": "2.16.0", + "@parcel/rust": "2.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/types": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.16.0.tgz", + "integrity": "sha512-EKsMTqqfiutQIiYKHEJHHeugIymPqM+D+CphhyewAIjxVLk6PTjEQW0ytIbbdOXGAgnK60OFiIKqZAxZ5Hf2dw==", + "dev": true, + "dependencies": { + "@parcel/types-internal": "2.16.0", + "@parcel/workers": "2.16.0" + } + }, + "node_modules/@parcel/types-internal": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/types-internal/-/types-internal-2.16.0.tgz", + "integrity": "sha512-tibAjOY8iyMDzFp5B9jEZPfHYlNvXpw7/msUVebAE6gZ7A8ymWXG8YzMvin6gvWIVTCsYoOkkRsZARvpRcSspQ==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/feature-flags": "2.16.0", + "@parcel/source-map": "^2.1.1", + "utility-types": "^3.11.0" + } + }, + "node_modules/@parcel/utils": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.16.0.tgz", + "integrity": "sha512-Jc5npvJ5T45goEIbDwsQKX3AtfhLIF2t6G496XhbjcH3aeFLrnIbg1iaitQWvgxdjrt73h8PPNphDkREZ/H7WA==", + "dev": true, + "dependencies": { + "@parcel/codeframe": "2.16.0", + "@parcel/diagnostic": "2.16.0", + "@parcel/logger": "2.16.0", + "@parcel/markdown-ansi": "2.16.0", + "@parcel/rust": "2.16.0", + "@parcel/source-map": "^2.1.1", + "chalk": "^4.1.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/workers": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.16.0.tgz", + "integrity": "sha512-JVdAtTWRONbP4X8Me1qRE5sMGIkSKAcUb8fZdjCUPJxsBwcJwzYicYFuahxVVGj2sYzjLi0TzlvmXMK7tVvffA==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.16.0", + "@parcel/logger": "2.16.0", + "@parcel/profiler": "2.16.0", + "@parcel/types-internal": "2.16.0", + "@parcel/utils": "2.16.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.16.0" + } + }, + "node_modules/@playwright/test": { + "version": "1.55.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.55.1.tgz", + "integrity": "sha512-IVAh/nOJaw6W9g+RJVlIQJ6gSiER+ae6mKQ5CX1bERzQgbC1VSeBlwdvczT7pxb0GWiyrxH4TGKbMfDb4Sq/ig==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.55.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@probe.gl/env": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@probe.gl/env/-/env-4.1.0.tgz", + "integrity": "sha512-5ac2Jm2K72VCs4eSMsM7ykVRrV47w32xOGMvcgqn8vQdEMF9PRXyBGYEV9YbqRKWNKpNKmQJVi4AHM/fkCxs9w==" + }, + "node_modules/@probe.gl/log": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@probe.gl/log/-/log-4.1.0.tgz", + "integrity": "sha512-r4gRReNY6f+OZEMgfWEXrAE2qJEt8rX0HsDJQXUBMoc+5H47bdB7f/5HBHAmapK8UydwPKL9wCDoS22rJ0yq7Q==", + "dependencies": { + "@probe.gl/env": "4.1.0" + } + }, + "node_modules/@probe.gl/stats": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-4.1.0.tgz", + "integrity": "sha512-EI413MkWKBDVNIfLdqbeNSJTs7ToBz/KVGkwi3D+dQrSIkRI2IYbWGAU3xX+D6+CI4ls8ehxMhNpUVMaZggDvQ==" + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.35.tgz", + "integrity": "sha512-slYrCpoxJUqzFDDNlvrOYRazQUNRvWPjXA17dAOISY3rDMxX6k8K4cj2H+hEYMHF81HO3uNd5rHVigAWRM5dSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", + "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", + "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", + "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", + "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", + "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", + "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", + "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", + "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", + "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", + "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", + "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", + "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", + "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", + "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", + "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", + "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", + "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", + "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", + "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", + "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@swc/core": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.13.5.tgz", + "integrity": "sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.24" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.13.5", + "@swc/core-darwin-x64": "1.13.5", + "@swc/core-linux-arm-gnueabihf": "1.13.5", + "@swc/core-linux-arm64-gnu": "1.13.5", + "@swc/core-linux-arm64-musl": "1.13.5", + "@swc/core-linux-x64-gnu": "1.13.5", + "@swc/core-linux-x64-musl": "1.13.5", + "@swc/core-win32-arm64-msvc": "1.13.5", + "@swc/core-win32-ia32-msvc": "1.13.5", + "@swc/core-win32-x64-msvc": "1.13.5" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.13.5.tgz", + "integrity": "sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.13.5.tgz", + "integrity": "sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.13.5.tgz", + "integrity": "sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.13.5.tgz", + "integrity": "sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.13.5.tgz", + "integrity": "sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.13.5.tgz", + "integrity": "sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.13.5.tgz", + "integrity": "sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.13.5.tgz", + "integrity": "sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.13.5.tgz", + "integrity": "sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.13.5.tgz", + "integrity": "sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@swc/types": { + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", + "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", + "dev": true, + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@tmcw/togeojson": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@tmcw/togeojson/-/togeojson-4.7.0.tgz", + "integrity": "sha512-edAPymgIEIY/jrEmATYe56a46XHvPVm7SXhf29h7jSAUrRhLOIFIlbHPCsic/gGDSvWODTSioRFpXgou47ZLYg==", + "license": "BSD-2-Clause" + }, + "node_modules/@turf/along": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/along/-/along-7.2.0.tgz", + "integrity": "sha512-Cf+d2LozABdb0TJoIcJwFKB+qisJY4nMUW9z6PAuZ9UCH7AR//hy2Z06vwYCKFZKP4a7DRPkOMBadQABCyoYuw==", + "dependencies": { + "@turf/bearing": "^7.2.0", + "@turf/destination": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/angle": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/angle/-/angle-7.2.0.tgz", + "integrity": "sha512-b28rs1NO8Dt/MXadFhnpqH7GnEWRsl+xF5JeFtg9+eM/+l/zGrdliPYMZtAj12xn33w22J1X4TRprAI0rruvVQ==", + "dependencies": { + "@turf/bearing": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/rhumb-bearing": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/area": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.2.0.tgz", + "integrity": "sha512-zuTTdQ4eoTI9nSSjerIy4QwgvxqwJVciQJ8tOPuMHbXJ9N/dNjI7bU8tasjhxas/Cx3NE9NxVHtNpYHL0FSzoA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bbox": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.2.0.tgz", + "integrity": "sha512-wzHEjCXlYZiDludDbXkpBSmv8Zu6tPGLmJ1sXQ6qDwpLE1Ew3mcWqt8AaxfTP5QwDNQa3sf2vvgTEzNbPQkCiA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bbox-clip": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/bbox-clip/-/bbox-clip-7.2.0.tgz", + "integrity": "sha512-q6RXTpqeUQAYLAieUL1n3J6ukRGsNVDOqcYtfzaJbPW+0VsAf+1cI16sN700t0sekbeU1DH/RRVAHhpf8+36wA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bbox-polygon": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-7.2.0.tgz", + "integrity": "sha512-Aj4G1GAAy26fmOqMjUk0Z+Lcax5VQ9g1xYDbHLQWXvfTsaueBT+RzdH6XPnZ/seEEnZkio2IxE8V5af/osupgA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bearing": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-7.2.0.tgz", + "integrity": "sha512-Jm0Xt3GgHjRrWvBtAGvgfnADLm+4exud2pRlmCYx8zfiKuNXQFkrcTZcOiJOgTfG20Agq28iSh15uta47jSIbg==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bezier-spline": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/bezier-spline/-/bezier-spline-7.2.0.tgz", + "integrity": "sha512-7BPkc3ufYB9KLvcaTpTsnpXzh9DZoENxCS0Ms9XUwuRXw45TpevwUpOsa3atO76iKQ5puHntqFO4zs8IUxBaaA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-clockwise": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-7.2.0.tgz", + "integrity": "sha512-0fJeFSARxy6ealGBM4Gmgpa1o8msQF87p2Dx5V6uSqzT8VPDegX1NSWl4b7QgXczYa9qv7IAABttdWP0K7Q7eQ==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-concave": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-concave/-/boolean-concave-7.2.0.tgz", + "integrity": "sha512-v3dTN04dfO6VqctQj1a+pjDHb6+/Ev90oAR2QjJuAntY4ubhhr7vKeJdk/w+tWNSMKULnYwfe65Du3EOu3/TeA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-contains": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-7.2.0.tgz", + "integrity": "sha512-dgRQm4uVO5XuLee4PLVH7CFQZKdefUBMIXTPITm2oRIDmPLJKHDOFKQTNkGJ73mDKKBR2lmt6eVH3br6OYrEYg==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/boolean-point-on-line": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-crosses": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-7.2.0.tgz", + "integrity": "sha512-9GyM4UUWFKQOoNhHVSfJBf5XbPy8Fxfz9djjJNAnm/IOl8NmFUSwFPAjKlpiMcr6yuaAoc9R/1KokS9/eLqPvA==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/line-intersect": "^7.2.0", + "@turf/polygon-to-line": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-disjoint": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-disjoint/-/boolean-disjoint-7.2.0.tgz", + "integrity": "sha512-xdz+pYKkLMuqkNeJ6EF/3OdAiJdiHhcHCV0ykX33NIuALKIEpKik0+NdxxNsZsivOW6keKwr61SI+gcVtHYcnQ==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/line-intersect": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/polygon-to-line": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-equal": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-equal/-/boolean-equal-7.2.0.tgz", + "integrity": "sha512-TmjKYLsxXqEmdDtFq3QgX4aSogiISp3/doeEtDOs3NNSR8susOtBEZkmvwO6DLW+g/rgoQJIBR6iVoWiRqkBxw==", + "dependencies": { + "@turf/clean-coords": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "geojson-equality-ts": "^1.0.2", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-intersects": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-intersects/-/boolean-intersects-7.2.0.tgz", + "integrity": "sha512-GLRyLQgK3F14drkK5Qi9Mv7Z9VT1bgQUd9a3DB3DACTZWDSwfh8YZUFn/HBwRkK8dDdgNEXaavggQHcPi1k9ow==", + "dependencies": { + "@turf/boolean-disjoint": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-overlap": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-7.2.0.tgz", + "integrity": "sha512-ieM5qIE4anO+gUHIOvEN7CjyowF+kQ6v20/oNYJCp63TVS6eGMkwgd+I4uMzBXfVW66nVHIXjODdUelU+Xyctw==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/line-intersect": "^7.2.0", + "@turf/line-overlap": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "geojson-equality-ts": "^1.0.2", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-parallel": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-parallel/-/boolean-parallel-7.2.0.tgz", + "integrity": "sha512-iOtuzzff8nmwv05ROkSvyeGLMrfdGkIi+3hyQ+DH4IVyV37vQbqR5oOJ0Nt3Qq1Tjrq9fvF8G3OMdAv3W2kY9w==", + "dependencies": { + "@turf/clean-coords": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/line-segment": "^7.2.0", + "@turf/rhumb-bearing": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-point-in-polygon": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-7.2.0.tgz", + "integrity": "sha512-lvEOjxeXIp+wPXgl9kJA97dqzMfNexjqHou+XHVcfxQgolctoJiRYmcVCWGpiZ9CBf/CJha1KmD1qQoRIsjLaA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "point-in-polygon-hao": "^1.1.0", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-point-on-line": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-7.2.0.tgz", + "integrity": "sha512-H/bXX8+2VYeSyH8JWrOsu8OGmeA9KVZfM7M6U5/fSqGsRHXo9MyYJ94k39A9kcKSwI0aWiMXVD2UFmiWy8423Q==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-touches": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-touches/-/boolean-touches-7.2.0.tgz", + "integrity": "sha512-8qb1CO+cwFATGRGFgTRjzL9aibfsbI91pdiRl7KIEkVdeN/H9k8FDrUA1neY7Yq48IaciuwqjbbojQ16FD9b0w==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/boolean-point-on-line": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-valid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-valid/-/boolean-valid-7.2.0.tgz", + "integrity": "sha512-xb7gdHN8VV6ivPJh6rPpgxmAEGReiRxqY+QZoEZVGpW2dXcmU1BdY6FA6G/cwvggXAXxJBREoANtEDgp/0ySbA==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/boolean-crosses": "^7.2.0", + "@turf/boolean-disjoint": "^7.2.0", + "@turf/boolean-overlap": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/boolean-point-on-line": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/line-intersect": "^7.2.0", + "@types/geojson": "^7946.0.10", + "geojson-polygon-self-intersections": "^1.2.1", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-within": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-7.2.0.tgz", + "integrity": "sha512-zB3AiF59zQZ27Dp1iyhp9mVAKOFHat8RDH45TZhLY8EaqdEPdmLGvwMFCKfLryQcUDQvmzP8xWbtUR82QM5C4g==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/boolean-point-on-line": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/buffer": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/buffer/-/buffer-7.2.0.tgz", + "integrity": "sha512-QH1FTr5Mk4z1kpQNztMD8XBOZfpOXPOtlsxaSAj2kDIf5+LquA6HtJjZrjUngnGtzG5+XwcfyRL4ImvLnFjm5Q==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/center": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/jsts": "^2.7.1", + "@turf/meta": "^7.2.0", + "@turf/projection": "^7.2.0", + "@types/geojson": "^7946.0.10", + "d3-geo": "1.7.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/center": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/center/-/center-7.2.0.tgz", + "integrity": "sha512-UTNp9abQ2kuyRg5gCIGDNwwEQeF3NbpYsd1Q0KW9lwWuzbLVNn0sOwbxjpNF4J2HtMOs5YVOcqNvYyuoa2XrXw==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/center-mean": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/center-mean/-/center-mean-7.2.0.tgz", + "integrity": "sha512-NaW6IowAooTJ35O198Jw3U4diZ6UZCCeJY+4E+WMLpks3FCxMDSHEfO2QjyOXQMGWZnVxVelqI5x9DdniDbQ+A==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/center-median": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/center-median/-/center-median-7.2.0.tgz", + "integrity": "sha512-/CgVyHNG4zAoZpvkl7qBCe4w7giWNVtLyTU5PoIfg1vWM4VpYw+N7kcBBH46bbzvVBn0vhmZr586r543EwdC/A==", + "dependencies": { + "@turf/center-mean": "^7.2.0", + "@turf/centroid": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/center-of-mass": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/center-of-mass/-/center-of-mass-7.2.0.tgz", + "integrity": "sha512-ij3pmG61WQPHGTQvOziPOdIgwTMegkYTwIc71Gl7xn4C0vWH6KLDSshCphds9xdWSXt2GbHpUs3tr4XGntHkEQ==", + "dependencies": { + "@turf/centroid": "^7.2.0", + "@turf/convex": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/centroid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.2.0.tgz", + "integrity": "sha512-yJqDSw25T7P48au5KjvYqbDVZ7qVnipziVfZ9aSo7P2/jTE7d4BP21w0/XLi3T/9bry/t9PR1GDDDQljN4KfDw==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/circle": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-7.2.0.tgz", + "integrity": "sha512-1AbqBYtXhstrHmnW6jhLwsv7TtmT0mW58Hvl1uZXEDM1NCVXIR50yDipIeQPjrCuJ/Zdg/91gU8+4GuDCAxBGA==", + "dependencies": { + "@turf/destination": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clean-coords": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-7.2.0.tgz", + "integrity": "sha512-+5+J1+D7wW7O/RDXn46IfCHuX1gIV1pIAQNSA7lcDbr3HQITZj334C4mOGZLEcGbsiXtlHWZiBtm785Vg8i+QQ==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clone": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-7.2.0.tgz", + "integrity": "sha512-JlGUT+/5qoU5jqZmf6NMFIoLDY3O7jKd53Up+zbpJ2vzUp6QdwdNzwrsCeONhynWM13F0MVtPXH4AtdkrgFk4g==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clusters": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/clusters/-/clusters-7.2.0.tgz", + "integrity": "sha512-sKOrIKHHtXAuTKNm2USnEct+6/MrgyzMW42deZ2YG2RRKWGaaxHMFU2Yw71Yk4DqStOqTIBQpIOdrRuSOwbuQw==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clusters-dbscan": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/clusters-dbscan/-/clusters-dbscan-7.2.0.tgz", + "integrity": "sha512-VWVUuDreev56g3/BMlnq/81yzczqaz+NVTypN5CigGgP67e+u/CnijphiuhKjtjDd/MzGjXgEWBJc26Y6LYKAw==", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "rbush": "^3.0.1", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clusters-kmeans": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-7.2.0.tgz", + "integrity": "sha512-BxQdK8jc8Mwm9yoClCYkktm4W004uiQGqb/i/6Y7a8xqgJITWDgTu/cy//wOxAWPk4xfe6MThjnqkszWW8JdyQ==", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "skmeans": "0.9.7", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/collect": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/collect/-/collect-7.2.0.tgz", + "integrity": "sha512-zRVGDlYS8Bx/Zz4vnEUyRg4dmqHhkDbW/nIUIJh657YqaMj1SFi4Iv2i9NbcurlUBDJFkpuOhCvvEvAdskJ8UA==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "rbush": "^3.0.1", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/combine": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/combine/-/combine-7.2.0.tgz", + "integrity": "sha512-VEjm3IvnbMt3IgeRIhCDhhQDbLqCU1/5uN1+j1u6fyA095pCizPThGp4f/COSzC3t1s/iiV+fHuDsB6DihHffQ==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/concave": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/concave/-/concave-7.2.0.tgz", + "integrity": "sha512-cpaDDlumK762kdadexw5ZAB6g/h2pJdihZ+e65lbQVe3WukJHAANnIEeKsdFCuIyNKrwTz2gWu5ws+OpjP48Yw==", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/tin": "^7.2.0", + "@types/geojson": "^7946.0.10", + "topojson-client": "3.x", + "topojson-server": "3.x", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/convex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/convex/-/convex-7.2.0.tgz", + "integrity": "sha512-HsgHm+zHRE8yPCE/jBUtWFyaaBmpXcSlyHd5/xsMhSZRImFzRzBibaONWQo7xbKZMISC3Nc6BtUjDi/jEVbqyA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "concaveman": "^1.2.1", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/destination": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-7.2.0.tgz", + "integrity": "sha512-8DUxtOO0Fvrh1xclIUj3d9C5WS20D21F5E+j+X9Q+ju6fcM4huOqTg5ckV1DN2Pg8caABEc5HEZJnGch/5YnYQ==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/difference": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-7.2.0.tgz", + "integrity": "sha512-NHKD1v3s8RX+9lOpvHJg6xRuJOKiY3qxHhz5/FmE0VgGqnCkE7OObqWZ5SsXG+Ckh0aafs5qKhmDdDV/gGi6JA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "polyclip-ts": "^0.16.8", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/dissolve": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/dissolve/-/dissolve-7.2.0.tgz", + "integrity": "sha512-gPG5TE3mAYuZqBut8tPYCKwi4hhx5Cq0ALoQMB9X0hrVtFIKrihrsj98XQM/5pL/UIpAxQfwisQvy6XaOFaoPA==", + "dependencies": { + "@turf/flatten": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "polyclip-ts": "^0.16.8", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/distance": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-7.2.0.tgz", + "integrity": "sha512-HBjjXIgEcD/wJYjv7/6OZj5yoky2oUvTtVeIAqO3lL80XRvoYmVg6vkOIu6NswkerwLDDNT9kl7+BFLJoHbh6Q==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/distance-weight": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/distance-weight/-/distance-weight-7.2.0.tgz", + "integrity": "sha512-NeoyV0fXDH+7nIoNtLjAoH9XL0AS1pmTIyDxEE6LryoDTsqjnuR0YQxIkLCCWDqECoqaOmmBqpeWONjX5BwWCg==", + "dependencies": { + "@turf/centroid": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/ellipse": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/ellipse/-/ellipse-7.2.0.tgz", + "integrity": "sha512-/Y75S5hE2+xjnTw4dXpQ5r/Y2HPM4xrwkPRCCQRpuuboKdEvm42azYmh7isPnMnBTVcmGb9UmGKj0HHAbiwt1g==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/rhumb-destination": "^7.2.0", + "@turf/transform-rotate": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/envelope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/envelope/-/envelope-7.2.0.tgz", + "integrity": "sha512-xOMtDeNKHwUuDfzQeoSNmdabsP0/IgVDeyzitDe/8j9wTeW+MrKzVbGz7627PT3h6gsO+2nUv5asfKtUbmTyHA==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/bbox-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/explode": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-7.2.0.tgz", + "integrity": "sha512-jyMXg93J1OI7/65SsLE1k9dfQD3JbcPNMi4/O3QR2Qb3BAs2039oFaSjtW+YqhMqVC4V3ZeKebMcJ8h9sK1n+A==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/flatten": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/flatten/-/flatten-7.2.0.tgz", + "integrity": "sha512-q38Qsqr4l7mxp780zSdn0gp/WLBX+sa+gV6qIbDQ1HKCrrPK8QQJmNx7gk1xxEXVot6tq/WyAPysCQdX+kLmMA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/flip": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/flip/-/flip-7.2.0.tgz", + "integrity": "sha512-X0TQ0U/UYh4tyXdLO5itP1sO2HOvfrZC0fYSWmTfLDM14jEPkEK8PblofznfBygL+pIFtOS2is8FuVcp5XxYpQ==", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/geojson-rbush": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/geojson-rbush/-/geojson-rbush-7.2.0.tgz", + "integrity": "sha512-ST8fLv+EwxVkDgsmhHggM0sPk2SfOHTZJkdgMXVFT7gB9o4lF8qk4y4lwvCCGIfFQAp2yv/PN5EaGMEKutk6xw==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "rbush": "^3.0.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/great-circle": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-7.2.0.tgz", + "integrity": "sha512-n30OiADyOKHhor0aXNgYfXQYXO3UtsOKmhQsY1D89/Oh1nCIXG/1ZPlLL9ZoaRXXBTUBjh99a+K8029NQbGDhw==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/helpers": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.2.0.tgz", + "integrity": "sha512-cXo7bKNZoa7aC7ydLmUR02oB3IgDe7MxiPuRz3cCtYQHn+BJ6h1tihmamYDWWUlPHgSNF0i3ATc4WmDECZafKw==", + "dependencies": { + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/hex-grid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/hex-grid/-/hex-grid-7.2.0.tgz", + "integrity": "sha512-Yo2yUGxrTCQfmcVsSjDt0G3Veg8YD26WRd7etVPD9eirNNgXrIyZkbYA7zVV/qLeRWVmYIKRXg1USWl7ORQOGA==", + "dependencies": { + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/intersect": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/interpolate": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/interpolate/-/interpolate-7.2.0.tgz", + "integrity": "sha512-Ifgjm1SEo6XujuSAU6lpRMvoJ1SYTreil1Rf5WsaXj16BQJCedht/4FtWCTNhSWTwEz2motQ1WNrjTCuPG94xA==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/centroid": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/hex-grid": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/point-grid": "^7.2.0", + "@turf/square-grid": "^7.2.0", + "@turf/triangle-grid": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/intersect": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-7.2.0.tgz", + "integrity": "sha512-81GMzKS9pKqLPa61qSlFxLFeAC8XbwyCQ9Qv4z6o5skWk1qmMUbEHeMqaGUTEzk+q2XyhZ0sju1FV4iLevQ/aw==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "polyclip-ts": "^0.16.8", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/invariant": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.2.0.tgz", + "integrity": "sha512-kV4u8e7Gkpq+kPbAKNC21CmyrXzlbBgFjO1PhrHPgEdNqXqDawoZ3i6ivE3ULJj2rSesCjduUaC/wyvH/sNr2Q==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/isobands": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/isobands/-/isobands-7.2.0.tgz", + "integrity": "sha512-lYoHeRieFzpBp29Jh19QcDIb0E+dzo/K5uwZuNga4wxr6heNU0AfkD4ByAHYIXHtvmp4m/JpSKq/2N6h/zvBkg==", + "dependencies": { + "@turf/area": "^7.2.0", + "@turf/bbox": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/explode": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "marchingsquares": "^1.3.3", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/isolines": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/isolines/-/isolines-7.2.0.tgz", + "integrity": "sha512-4ZXKxvA/JKkxAXixXhN3UVza5FABsdYgOWXyYm3L5ryTPJVOYTVSSd9A+CAVlv9dZc3YdlsqMqLTXNOOre/kwg==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "marchingsquares": "^1.3.3", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/jsts": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@turf/jsts/-/jsts-2.7.2.tgz", + "integrity": "sha512-zAezGlwWHPyU0zxwcX2wQY3RkRpwuoBmhhNE9HY9kWhFDkCxZ3aWK5URKwa/SWKJbj9aztO+8vtdiBA28KVJFg==", + "dependencies": { + "jsts": "2.7.1" + } + }, + "node_modules/@turf/kinks": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-7.2.0.tgz", + "integrity": "sha512-BtxDxGewJR0Q5WR9HKBSxZhirFX+GEH1rD7/EvgDsHS8e1Y5/vNQQUmXdURjdPa4StzaUBsWRU5T3A356gLbPA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/length": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/length/-/length-7.2.0.tgz", + "integrity": "sha512-LBmYN+iCgVtWNLsckVnpQIJENqIIPO63mogazMp23lrDGfWXu07zZQ9ZinJVO5xYurXNhc/QI2xxoqt2Xw90Ig==", + "dependencies": { + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-arc": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-arc/-/line-arc-7.2.0.tgz", + "integrity": "sha512-kfWzA5oYrTpslTg5fN50G04zSypiYQzjZv3FLjbZkk6kta5fo4JkERKjTeA8x4XNojb+pfmjMBB0yIh2w2dDRw==", + "dependencies": { + "@turf/circle": "^7.2.0", + "@turf/destination": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-chunk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-chunk/-/line-chunk-7.2.0.tgz", + "integrity": "sha512-1ODyL5gETtWSL85MPI0lgp/78vl95M39gpeBxePXyDIqx8geDP9kXfAzctuKdxBoR4JmOVM3NT7Fz7h+IEkC+g==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/length": "^7.2.0", + "@turf/line-slice-along": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-intersect": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-7.2.0.tgz", + "integrity": "sha512-GhCJVEkc8EmggNi85EuVLoXF5T5jNVxmhIetwppiVyJzMrwkYAkZSYB3IBFYGUUB9qiNFnTwungVSsBV/S8ZiA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "sweepline-intersections": "^1.5.0", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-offset": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-offset/-/line-offset-7.2.0.tgz", + "integrity": "sha512-1+OkYueDCbnEWzbfBh3taVr+3SyM2bal5jfnSEuDiLA6jnlScgr8tn3INo+zwrUkPFZPPAejL1swVyO5TjUahw==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-overlap": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-7.2.0.tgz", + "integrity": "sha512-NNn7/jg53+N10q2Kyt66bEDqN3101iW/1zA5FW7J6UbKApDFkByh+18YZq1of71kS6oUYplP86WkDp16LFpqqw==", + "dependencies": { + "@turf/boolean-point-on-line": "^7.2.0", + "@turf/geojson-rbush": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/line-segment": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/nearest-point-on-line": "^7.2.0", + "@types/geojson": "^7946.0.10", + "fast-deep-equal": "^3.1.3", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-segment": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-7.2.0.tgz", + "integrity": "sha512-E162rmTF9XjVN4rINJCd15AdQGCBlNqeWN3V0YI1vOUpZFNT2ii4SqEMCcH2d+5EheHLL8BWVwZoOsvHZbvaWA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-slice": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-slice/-/line-slice-7.2.0.tgz", + "integrity": "sha512-bHotzZIaU1GPV3RMwttYpDrmcvb3X2i1g/WUttPZWtKrEo2VVAkoYdeZ2aFwtogERYS4quFdJ/TDzAtquBC8WQ==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/nearest-point-on-line": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-slice-along": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-slice-along/-/line-slice-along-7.2.0.tgz", + "integrity": "sha512-4/gPgP0j5Rp+1prbhXqn7kIH/uZTmSgiubUnn67F8nb9zE+MhbRglhSlRYEZxAVkB7VrGwjyolCwvrROhjHp2A==", + "dependencies": { + "@turf/bearing": "^7.2.0", + "@turf/destination": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-split": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-split/-/line-split-7.2.0.tgz", + "integrity": "sha512-yJTZR+c8CwoKqdW/aIs+iLbuFwAa3Yan+EOADFQuXXIUGps3bJUXx/38rmowNoZbHyP1np1+OtrotyHu5uBsfQ==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/geojson-rbush": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/line-intersect": "^7.2.0", + "@turf/line-segment": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/nearest-point-on-line": "^7.2.0", + "@turf/square": "^7.2.0", + "@turf/truncate": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-to-polygon": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-to-polygon/-/line-to-polygon-7.2.0.tgz", + "integrity": "sha512-iKpJqc7EYc5NvlD4KaqrKKO6mXR7YWO/YwtW60E2FnsF/blnsy9OfAOcilYHgH3S/V/TT0VedC7DW7Kgjy2EIA==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/mask": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/mask/-/mask-7.2.0.tgz", + "integrity": "sha512-ulJ6dQqXC0wrjIoqFViXuMUdIPX5Q6GPViZ3kGfeVijvlLM7kTFBsZiPQwALSr5nTQg4Ppf3FD0Jmg8IErPrgA==", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "polyclip-ts": "^0.16.8", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/meta": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.2.0.tgz", + "integrity": "sha512-igzTdHsQc8TV1RhPuOLVo74Px/hyPrVgVOTgjWQZzt3J9BVseCdpfY/0cJBdlSRI4S/yTmmHl7gAqjhpYH5Yaw==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/midpoint": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/midpoint/-/midpoint-7.2.0.tgz", + "integrity": "sha512-AMn5S9aSrbXdE+Q4Rj+T5nLdpfpn+mfzqIaEKkYI021HC0vb22HyhQHsQbSeX+AWcS4CjD1hFsYVcgKI+5qCfw==", + "dependencies": { + "@turf/bearing": "^7.2.0", + "@turf/destination": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/moran-index": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/moran-index/-/moran-index-7.2.0.tgz", + "integrity": "sha512-Aexh1EmXVPJhApr9grrd120vbalIthcIsQ3OAN2Tqwf+eExHXArJEJqGBo9IZiQbIpFJeftt/OvUvlI8BeO1bA==", + "dependencies": { + "@turf/distance-weight": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/nearest-neighbor-analysis": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-neighbor-analysis/-/nearest-neighbor-analysis-7.2.0.tgz", + "integrity": "sha512-LmP/crXb7gilgsL0wL9hsygqc537W/a1W5r9XBKJT4SKdqjoXX5APJatJfd3nwXbRIqwDH0cDA9/YyFjBPlKnA==", + "dependencies": { + "@turf/area": "^7.2.0", + "@turf/bbox": "^7.2.0", + "@turf/bbox-polygon": "^7.2.0", + "@turf/centroid": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/nearest-point": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/nearest-point": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-point/-/nearest-point-7.2.0.tgz", + "integrity": "sha512-0wmsqXZ8CGw4QKeZmS+NdjYTqCMC+HXZvM3XAQIU6k6laNLqjad2oS4nDrtcRs/nWDvcj1CR+Io7OiQ6sbpn5Q==", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/nearest-point-on-line": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-7.2.0.tgz", + "integrity": "sha512-UOhAeoDPVewBQV+PWg1YTMQcYpJsIqfW5+EuZ5vJl60XwUa0+kqB/eVfSLNXmHENjKKIlEt9Oy9HIDF4VeWmXA==", + "dependencies": { + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/nearest-point-to-line": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-point-to-line/-/nearest-point-to-line-7.2.0.tgz", + "integrity": "sha512-EorU7Qj30A7nAjh++KF/eTPDlzwuuV4neBz7tmSTB21HKuXZAR0upJsx6M2X1CSyGEgNsbFB0ivNKIvymRTKBw==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/point-to-line-distance": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/planepoint": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/planepoint/-/planepoint-7.2.0.tgz", + "integrity": "sha512-8Vno01tvi5gThUEKBQ46CmlEKDAwVpkl7stOPFvJYlA1oywjAL4PsmgwjXgleZuFtXQUPBNgv5a42Pf438XP4g==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-grid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/point-grid/-/point-grid-7.2.0.tgz", + "integrity": "sha512-ai7lwBV2FREPW3XiUNohT4opC1hd6+F56qZe20xYhCTkTD9diWjXHiNudQPSmVAUjgMzQGasblQQqvOdL+bJ3Q==", + "dependencies": { + "@turf/boolean-within": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-on-feature": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/point-on-feature/-/point-on-feature-7.2.0.tgz", + "integrity": "sha512-ksoYoLO9WtJ/qI8VI9ltF+2ZjLWrAjZNsCsu8F7nyGeCh4I8opjf4qVLytFG44XA2qI5yc6iXDpyv0sshvP82Q==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/center": "^7.2.0", + "@turf/explode": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/nearest-point": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-to-line-distance": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/point-to-line-distance/-/point-to-line-distance-7.2.0.tgz", + "integrity": "sha512-fB9Rdnb5w5+t76Gho2dYDkGe20eRrFk8CXi4v1+l1PC8YyLXO+x+l3TrtT8HzL/dVaZeepO6WUIsIw3ditTOPg==", + "dependencies": { + "@turf/bearing": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/nearest-point-on-line": "^7.2.0", + "@turf/projection": "^7.2.0", + "@turf/rhumb-bearing": "^7.2.0", + "@turf/rhumb-distance": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-to-polygon-distance": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/point-to-polygon-distance/-/point-to-polygon-distance-7.2.0.tgz", + "integrity": "sha512-w+WYuINgTiFjoZemQwOaQSje/8Kq+uqJOynvx7+gleQPHyWQ3VtTodtV4LwzVzXz8Sf7Mngx1Jcp2SNai5CJYA==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/point-to-line-distance": "^7.2.0", + "@turf/polygon-to-line": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/points-within-polygon": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/points-within-polygon/-/points-within-polygon-7.2.0.tgz", + "integrity": "sha512-jRKp8/mWNMzA+hKlQhxci97H5nOio9tp14R2SzpvkOt+cswxl+NqTEi1hDd2XetA7tjU0TSoNjEgVY8FfA0S6w==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygon-smooth": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/polygon-smooth/-/polygon-smooth-7.2.0.tgz", + "integrity": "sha512-KCp9wF2IEynvGXVhySR8oQ2razKP0zwg99K+fuClP21pSKCFjAPaihPEYq6e8uI/1J7ibjL5++6EMl+LrUTrLg==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygon-tangents": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/polygon-tangents/-/polygon-tangents-7.2.0.tgz", + "integrity": "sha512-AHUUPmOjiQDrtP/ODXukHBlUG0C/9I1je7zz50OTfl2ZDOdEqFJQC3RyNELwq07grTXZvg5TS5wYx/Y7nsm47g==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/boolean-within": "^7.2.0", + "@turf/explode": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/nearest-point": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygon-to-line": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-7.2.0.tgz", + "integrity": "sha512-9jeTN3LiJ933I5sd4K0kwkcivOYXXm1emk0dHorwXeSFSHF+nlYesEW3Hd889wb9lZd7/SVLMUeX/h39mX+vCA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygonize": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/polygonize/-/polygonize-7.2.0.tgz", + "integrity": "sha512-U9v+lBhUPDv+nsg/VcScdiqCB59afO6CHDGrwIl2+5i6Ve+/KQKjpTV/R+NqoC1iMXAEq3brY6HY8Ukp/pUWng==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/envelope": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/projection": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-7.2.0.tgz", + "integrity": "sha512-/qke5vJScv8Mu7a+fU3RSChBRijE6EVuFHU3RYihMuYm04Vw8dBMIs0enEpoq0ke/IjSbleIrGQNZIMRX9EwZQ==", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/quadrat-analysis": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/quadrat-analysis/-/quadrat-analysis-7.2.0.tgz", + "integrity": "sha512-fDQh3+ldYNxUqS6QYlvJ7GZLlCeDZR6tD3ikdYtOsSemwW1n/4gm2xcgWJqy3Y0uszBwxc13IGGY7NGEjHA+0w==", + "dependencies": { + "@turf/area": "^7.2.0", + "@turf/bbox": "^7.2.0", + "@turf/bbox-polygon": "^7.2.0", + "@turf/centroid": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/point-grid": "^7.2.0", + "@turf/random": "^7.2.0", + "@turf/square-grid": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/random": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/random/-/random-7.2.0.tgz", + "integrity": "sha512-fNXs5mOeXsrirliw84S8UCNkpm4RMNbefPNsuCTfZEXhcr1MuHMzq4JWKb4FweMdN1Yx2l/xcytkO0s71cJ50w==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rectangle-grid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/rectangle-grid/-/rectangle-grid-7.2.0.tgz", + "integrity": "sha512-f0o5ifvy0Ml/nHDJzMNcuSk4h11aa3BfvQNnYQhLpuTQu03j/ICZNlzKTLxwjcUqvxADUifty7Z9CX5W6zky4A==", + "dependencies": { + "@turf/boolean-intersects": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rewind": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-7.2.0.tgz", + "integrity": "sha512-SZpRAZiZsE22+HVz6pEID+ST25vOdpAMGk5NO1JeqzhpMALIkIGnkG+xnun2CfYHz7wv8/Z0ADiAvei9rkcQYA==", + "dependencies": { + "@turf/boolean-clockwise": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rhumb-bearing": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-7.2.0.tgz", + "integrity": "sha512-jbdexlrR8X2ZauUciHx3tRwG+BXoMXke4B8p8/IgDlAfIrVdzAxSQN89FMzIKnjJ/kdLjo9bFGvb92bu31Etug==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rhumb-destination": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/rhumb-destination/-/rhumb-destination-7.2.0.tgz", + "integrity": "sha512-U9OLgLAHlH4Wfx3fBZf3jvnkDjdTcfRan5eI7VPV1+fQWkOteATpzkiRjCvSYK575GljVwWBjkKca8LziGWitQ==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rhumb-distance": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-7.2.0.tgz", + "integrity": "sha512-NsijTPON1yOc9tirRPEQQuJ5aQi7pREsqchQquaYKbHNWsexZjcDi4wnw2kM3Si4XjmgynT+2f7aXH7FHarHzw==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/sample": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/sample/-/sample-7.2.0.tgz", + "integrity": "sha512-f+ZbcbQJ9glQ/F26re8LadxO0ORafy298EJZe6XtbctRTJrNus6UNAsl8+GYXFqMnXM22tbTAznnJX3ZiWNorA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/sector": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/sector/-/sector-7.2.0.tgz", + "integrity": "sha512-zL06MjbbMG4DdpiNz+Q9Ax8jsCekt3R76uxeWShulAGkyDB5smdBOUDoRwxn05UX7l4kKv4Ucq2imQXhxKFd1w==", + "dependencies": { + "@turf/circle": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/line-arc": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/shortest-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/shortest-path/-/shortest-path-7.2.0.tgz", + "integrity": "sha512-6fpx8feZ2jMSaeRaFdqFShGWkNb+veUOeyLFSHA/aRD9n/e9F2pWZoRbQWKbKTpcKFJ2FnDEqCZnh/GrcAsqWA==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/bbox-polygon": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/clean-coords": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/transform-scale": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/simplify": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-7.2.0.tgz", + "integrity": "sha512-9YHIfSc8BXQfi5IvEMbCeQYqNch0UawIGwbboJaoV8rodhtk6kKV2wrpXdGqk/6Thg6/RWvChJFKVVTjVrULyQ==", + "dependencies": { + "@turf/clean-coords": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/square": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/square/-/square-7.2.0.tgz", + "integrity": "sha512-9pMoAGFvqzCDOlO9IRSSBCGXKbl8EwMx6xRRBMKdZgpS0mZgfm9xiptMmx/t1m4qqHIlb/N+3MUF7iMBx6upcA==", + "dependencies": { + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", - "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@turf/square-grid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/square-grid/-/square-grid-7.2.0.tgz", + "integrity": "sha512-EmzGXa90hz+tiCOs9wX+Lak6pH0Vghb7QuX6KZej+pmWi3Yz7vdvQLmy/wuN048+wSkD5c8WUo/kTeNDe7GnmA==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/rectangle-grid": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", - "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@turf/standard-deviational-ellipse": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-7.2.0.tgz", + "integrity": "sha512-+uC0pR2nRjm90JvMXe/2xOCZsYV2II1ZZ2zmWcBWv6bcFXBspcxk2QfCC3k0bj6jDapELzoQgnn3cG5lbdQV2w==", + "dependencies": { + "@turf/center-mean": "^7.2.0", + "@turf/ellipse": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/points-within-polygon": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", - "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@turf/tag": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/tag/-/tag-7.2.0.tgz", + "integrity": "sha512-TAFvsbp5TCBqXue8ui+CtcLsPZ6NPC88L8Ad6Hb/R6VAi21qe0U42WJHQYXzWmtThoTNwxi+oKSeFbRDsr0FIA==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", - "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@turf/tesselate": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/tesselate/-/tesselate-7.2.0.tgz", + "integrity": "sha512-zHGcG85aOJJu1seCm+CYTJ3UempX4Xtyt669vFG6Hbr/Hc7ii6STQ2ysFr7lJwFtU9uyYhphVrrgwIqwglvI/Q==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "earcut": "^2.2.4", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", - "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@turf/tin": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/tin/-/tin-7.2.0.tgz", + "integrity": "sha512-y24Vt3oeE6ZXvyLJamP0Ke02rPlDGE9gF7OFADnR0mT+2uectb0UTIBC3kKzON80TEAlA3GXpKFkCW5Fo/O/Kg==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", - "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@turf/transform-rotate": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/transform-rotate/-/transform-rotate-7.2.0.tgz", + "integrity": "sha512-EMCj0Zqy3cF9d3mGRqDlYnX2ZBXe3LgT+piDR0EuF5c5sjuKErcFcaBIsn/lg1gp4xCNZFinkZ3dsFfgGHf6fw==", + "dependencies": { + "@turf/centroid": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/rhumb-bearing": "^7.2.0", + "@turf/rhumb-destination": "^7.2.0", + "@turf/rhumb-distance": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", - "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@turf/transform-scale": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/transform-scale/-/transform-scale-7.2.0.tgz", + "integrity": "sha512-HYB+pw938eeI8s1/zSWFy6hq+t38fuUaBb0jJsZB1K9zQ1WjEYpPvKF/0//80zNPlyxLv3cOkeBucso3hzI07A==", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/center": "^7.2.0", + "@turf/centroid": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/rhumb-bearing": "^7.2.0", + "@turf/rhumb-destination": "^7.2.0", + "@turf/rhumb-distance": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", - "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@turf/transform-translate": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/transform-translate/-/transform-translate-7.2.0.tgz", + "integrity": "sha512-zAglR8MKCqkzDTjGMIQgbg/f+Q3XcKVzr9cELw5l9CrS1a0VTSDtBZLDm0kWx0ankwtam7ZmI2jXyuQWT8Gbug==", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/rhumb-destination": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", - "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@turf/triangle-grid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/triangle-grid/-/triangle-grid-7.2.0.tgz", + "integrity": "sha512-4gcAqWKh9hg6PC5nNSb9VWyLgl821cwf9yR9yEzQhEFfwYL/pZONBWCO1cwVF23vSYMSMm+/TwqxH4emxaArfw==", + "dependencies": { + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/intersect": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", - "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "node_modules/@turf/truncate": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-7.2.0.tgz", + "integrity": "sha512-jyFzxYbPugK4XjV5V/k6Xr3taBjjvo210IbPHJXw0Zh7Y6sF+hGxeRVtSuZ9VP/6oRyqAOHKUrze+OOkPqBgUg==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", - "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "node_modules/@turf/turf": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/turf/-/turf-7.2.0.tgz", + "integrity": "sha512-G1kKBu4hYgoNoRJgnpJohNuS7bLnoWHZ2G/4wUMym5xOSiYah6carzdTEsMoTsauyi7ilByWHx5UHwbjjCVcBw==", + "dependencies": { + "@turf/along": "^7.2.0", + "@turf/angle": "^7.2.0", + "@turf/area": "^7.2.0", + "@turf/bbox": "^7.2.0", + "@turf/bbox-clip": "^7.2.0", + "@turf/bbox-polygon": "^7.2.0", + "@turf/bearing": "^7.2.0", + "@turf/bezier-spline": "^7.2.0", + "@turf/boolean-clockwise": "^7.2.0", + "@turf/boolean-concave": "^7.2.0", + "@turf/boolean-contains": "^7.2.0", + "@turf/boolean-crosses": "^7.2.0", + "@turf/boolean-disjoint": "^7.2.0", + "@turf/boolean-equal": "^7.2.0", + "@turf/boolean-intersects": "^7.2.0", + "@turf/boolean-overlap": "^7.2.0", + "@turf/boolean-parallel": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/boolean-point-on-line": "^7.2.0", + "@turf/boolean-touches": "^7.2.0", + "@turf/boolean-valid": "^7.2.0", + "@turf/boolean-within": "^7.2.0", + "@turf/buffer": "^7.2.0", + "@turf/center": "^7.2.0", + "@turf/center-mean": "^7.2.0", + "@turf/center-median": "^7.2.0", + "@turf/center-of-mass": "^7.2.0", + "@turf/centroid": "^7.2.0", + "@turf/circle": "^7.2.0", + "@turf/clean-coords": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/clusters": "^7.2.0", + "@turf/clusters-dbscan": "^7.2.0", + "@turf/clusters-kmeans": "^7.2.0", + "@turf/collect": "^7.2.0", + "@turf/combine": "^7.2.0", + "@turf/concave": "^7.2.0", + "@turf/convex": "^7.2.0", + "@turf/destination": "^7.2.0", + "@turf/difference": "^7.2.0", + "@turf/dissolve": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/distance-weight": "^7.2.0", + "@turf/ellipse": "^7.2.0", + "@turf/envelope": "^7.2.0", + "@turf/explode": "^7.2.0", + "@turf/flatten": "^7.2.0", + "@turf/flip": "^7.2.0", + "@turf/geojson-rbush": "^7.2.0", + "@turf/great-circle": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/hex-grid": "^7.2.0", + "@turf/interpolate": "^7.2.0", + "@turf/intersect": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/isobands": "^7.2.0", + "@turf/isolines": "^7.2.0", + "@turf/kinks": "^7.2.0", + "@turf/length": "^7.2.0", + "@turf/line-arc": "^7.2.0", + "@turf/line-chunk": "^7.2.0", + "@turf/line-intersect": "^7.2.0", + "@turf/line-offset": "^7.2.0", + "@turf/line-overlap": "^7.2.0", + "@turf/line-segment": "^7.2.0", + "@turf/line-slice": "^7.2.0", + "@turf/line-slice-along": "^7.2.0", + "@turf/line-split": "^7.2.0", + "@turf/line-to-polygon": "^7.2.0", + "@turf/mask": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/midpoint": "^7.2.0", + "@turf/moran-index": "^7.2.0", + "@turf/nearest-neighbor-analysis": "^7.2.0", + "@turf/nearest-point": "^7.2.0", + "@turf/nearest-point-on-line": "^7.2.0", + "@turf/nearest-point-to-line": "^7.2.0", + "@turf/planepoint": "^7.2.0", + "@turf/point-grid": "^7.2.0", + "@turf/point-on-feature": "^7.2.0", + "@turf/point-to-line-distance": "^7.2.0", + "@turf/point-to-polygon-distance": "^7.2.0", + "@turf/points-within-polygon": "^7.2.0", + "@turf/polygon-smooth": "^7.2.0", + "@turf/polygon-tangents": "^7.2.0", + "@turf/polygon-to-line": "^7.2.0", + "@turf/polygonize": "^7.2.0", + "@turf/projection": "^7.2.0", + "@turf/quadrat-analysis": "^7.2.0", + "@turf/random": "^7.2.0", + "@turf/rectangle-grid": "^7.2.0", + "@turf/rewind": "^7.2.0", + "@turf/rhumb-bearing": "^7.2.0", + "@turf/rhumb-destination": "^7.2.0", + "@turf/rhumb-distance": "^7.2.0", + "@turf/sample": "^7.2.0", + "@turf/sector": "^7.2.0", + "@turf/shortest-path": "^7.2.0", + "@turf/simplify": "^7.2.0", + "@turf/square": "^7.2.0", + "@turf/square-grid": "^7.2.0", + "@turf/standard-deviational-ellipse": "^7.2.0", + "@turf/tag": "^7.2.0", + "@turf/tesselate": "^7.2.0", + "@turf/tin": "^7.2.0", + "@turf/transform-rotate": "^7.2.0", + "@turf/transform-scale": "^7.2.0", + "@turf/transform-translate": "^7.2.0", + "@turf/triangle-grid": "^7.2.0", + "@turf/truncate": "^7.2.0", + "@turf/union": "^7.2.0", + "@turf/unkink-polygon": "^7.2.0", + "@turf/voronoi": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", - "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "node_modules/@turf/union": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/union/-/union-7.2.0.tgz", + "integrity": "sha512-Xex/cfKSmH0RZRWSJl4RLlhSmEALVewywiEXcu0aIxNbuZGTcpNoI0h4oLFrE/fUd0iBGFg/EGLXRL3zTfpg6g==", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "polyclip-ts": "^0.16.8", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/@swc/helpers": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", - "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", - "dev": true, - "license": "Apache-2.0", + "node_modules/@turf/unkink-polygon": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/unkink-polygon/-/unkink-polygon-7.2.0.tgz", + "integrity": "sha512-dFPfzlIgkEr15z6oXVxTSWshWi51HeITGVFtl1GAKGMtiXJx1uMqnfRsvljqEjaQu/4AzG1QAp3b+EkSklQSiQ==", "dependencies": { - "tslib": "^2.8.0" + "@turf/area": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "rbush": "^3.0.1", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@tmcw/togeojson": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@tmcw/togeojson/-/togeojson-4.7.0.tgz", - "integrity": "sha512-edAPymgIEIY/jrEmATYe56a46XHvPVm7SXhf29h7jSAUrRhLOIFIlbHPCsic/gGDSvWODTSioRFpXgou47ZLYg==", - "license": "BSD-2-Clause" + "node_modules/@turf/voronoi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/voronoi/-/voronoi-7.2.0.tgz", + "integrity": "sha512-3K6N0LtJsWTXxPb/5N2qD9e8f4q8+tjTbGV3lE3v8x06iCnNlnuJnqM5NZNPpvgvCatecBkhClO3/3RndE61Fw==", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/d3-voronoi": "^1.1.12", + "@types/geojson": "^7946.0.10", + "d3-voronoi": "1.1.2", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, "node_modules/@types/babel__core": { "version": "7.20.5", @@ -2009,6 +5962,11 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/d3-voronoi": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@types/d3-voronoi/-/d3-voronoi-1.1.12.tgz", + "integrity": "sha512-DauBl25PKZZ0WVJr42a6CNvI6efsdzofl9sajqZr2Gf5Gu733WkDdUGiPkUHXiUvYGzNNlFQde2wdZdfQPG+yw==" + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -2500,6 +6458,23 @@ "dev": true, "license": "MIT" }, + "node_modules/base-x": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "engines": { + "node": "*" + } + }, "node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -2656,6 +6631,24 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2716,6 +6709,15 @@ "node": ">=12.20.0" } }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2723,6 +6725,17 @@ "dev": true, "license": "MIT" }, + "node_modules/concaveman": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/concaveman/-/concaveman-1.2.1.tgz", + "integrity": "sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==", + "dependencies": { + "point-in-polygon": "^1.1.0", + "rbush": "^3.0.1", + "robust-predicates": "^2.0.4", + "tinyqueue": "^2.0.3" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -2750,6 +6763,24 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "dev": true }, + "node_modules/d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "node_modules/d3-geo": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.7.1.tgz", + "integrity": "sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==", + "dependencies": { + "d3-array": "1" + } + }, + "node_modules/d3-voronoi": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", + "integrity": "sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==" + }, "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", @@ -2799,6 +6830,18 @@ "node": ">=6" } }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -2825,6 +6868,38 @@ "url": "https://dotenvx.com" } }, + "node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "dev": true, + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand/node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -2914,7 +6989,6 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.36.0.tgz", "integrity": "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -3319,6 +7393,44 @@ "node": ">=6.9.0" } }, + "node_modules/geojson-equality-ts": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/geojson-equality-ts/-/geojson-equality-ts-1.0.2.tgz", + "integrity": "sha512-h3Ryq+0mCSN/7yLs0eDgrZhvc9af23o/QuC4aTiuuzP/MRCtd6mf5rLsLRY44jX0RPUfM8c4GqERQmlUxPGPoQ==", + "dependencies": { + "@types/geojson": "^7946.0.14" + } + }, + "node_modules/geojson-polygon-self-intersections": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/geojson-polygon-self-intersections/-/geojson-polygon-self-intersections-1.2.1.tgz", + "integrity": "sha512-/QM1b5u2d172qQVO//9CGRa49jEmclKEsYOQmWP9ooEjj63tBM51m2805xsbxkzlEELQ2REgTf700gUhhlegxA==", + "dependencies": { + "rbush": "^2.0.1" + } + }, + "node_modules/geojson-polygon-self-intersections/node_modules/quickselect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz", + "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==" + }, + "node_modules/geojson-polygon-self-intersections/node_modules/rbush": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz", + "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==", + "dependencies": { + "quickselect": "^1.0.1" + } + }, + "node_modules/get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/github-slugger": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", @@ -3581,37 +7693,345 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "bin": { - "json5": "lib/cli.js" - }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsts": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/jsts/-/jsts-2.7.1.tgz", + "integrity": "sha512-x2wSZHEBK20CY+Wy+BPE7MrFQHW6sIsdaGUMEqmGAio+3gFzQaBYPwLRonUfQf9Ak8pBieqj9tUofX1+WtAEIg==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, "engines": { - "node": ">=6" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "node_modules/lightningcss/node_modules/detect-libc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.1.tgz", + "integrity": "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==", "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" + "engines": { + "node": ">=8" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/lmdb": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.8.5.tgz", + "integrity": "sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==", "dev": true, - "license": "MIT", + "hasInstallScript": true, "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "msgpackr": "^1.9.5", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.1.1", + "ordered-binary": "^1.4.1", + "weak-lru-cache": "^1.2.2" }, - "engines": { - "node": ">= 0.8.0" + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "2.8.5", + "@lmdb/lmdb-darwin-x64": "2.8.5", + "@lmdb/lmdb-linux-arm": "2.8.5", + "@lmdb/lmdb-linux-arm64": "2.8.5", + "@lmdb/lmdb-linux-x64": "2.8.5", + "@lmdb/lmdb-win32-x64": "2.8.5" } }, + "node_modules/lmdb/node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -3663,6 +8083,11 @@ "node": "20 || >=22" } }, + "node_modules/marchingsquares": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/marchingsquares/-/marchingsquares-1.3.3.tgz", + "integrity": "sha512-gz6nNQoVK7Lkh2pZulrT4qd4347S/toG9RXH2pyzhLgkL5mLkBoqgv4EvAGXcV0ikDW72n/OQb3Xe8bGagQZCg==" + }, "node_modules/markdown-table": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", @@ -4604,6 +9029,62 @@ "dev": true, "license": "MIT" }, + "node_modules/msgpackr": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz", + "integrity": "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==", + "dev": true, + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + } + }, + "node_modules/msgpackr-extract/node_modules/detect-libc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.1.tgz", + "integrity": "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "dev": true, + "optional": true, + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", @@ -4629,12 +9110,47 @@ "dev": true, "license": "MIT" }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true + }, + "node_modules/node-gyp-build-optional-packages": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz", + "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, + "node_modules/node-gyp-build-optional-packages/node_modules/detect-libc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.1.tgz", + "integrity": "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/node-releases": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -4653,6 +9169,12 @@ "node": ">= 0.8.0" } }, + "node_modules/ordered-binary": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.0.tgz", + "integrity": "sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==", + "dev": true + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -4692,6 +9214,39 @@ "dev": true, "license": "BlueOak-1.0.0" }, + "node_modules/parcel": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.16.0.tgz", + "integrity": "sha512-4sgnoYixTR6Qq6265tjmufXQj7wxvZo4VJHrYfbnfWQWfW5CgF80IiM+dy050pYgtBAMvh+8vJDDYiSto1YPUA==", + "dev": true, + "dependencies": { + "@parcel/config-default": "2.16.0", + "@parcel/core": "2.16.0", + "@parcel/diagnostic": "2.16.0", + "@parcel/events": "2.16.0", + "@parcel/feature-flags": "2.16.0", + "@parcel/fs": "2.16.0", + "@parcel/logger": "2.16.0", + "@parcel/package-manager": "2.16.0", + "@parcel/reporter-cli": "2.16.0", + "@parcel/reporter-dev-server": "2.16.0", + "@parcel/reporter-tracer": "2.16.0", + "@parcel/utils": "2.16.0", + "chalk": "^4.1.2", + "commander": "^12.1.0", + "get-port": "^4.2.0" + }, + "bin": { + "parcel": "lib/bin.js" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4805,6 +9360,33 @@ "node": ">=18" } }, + "node_modules/point-in-polygon": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", + "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==" + }, + "node_modules/point-in-polygon-hao": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/point-in-polygon-hao/-/point-in-polygon-hao-1.2.4.tgz", + "integrity": "sha512-x2pcvXeqhRHlNRdhLs/tgFapAbSSe86wa/eqmj1G6pWftbEs5aVRJhRGM6FYSUERKu0PjekJzMq0gsI2XyiclQ==", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/point-in-polygon-hao/node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, + "node_modules/polyclip-ts": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/polyclip-ts/-/polyclip-ts-0.16.8.tgz", + "integrity": "sha512-JPtKbDRuPEuAjuTdhR62Gph7Is2BS1Szx69CFOO3g71lpJDFo78k4tFyi+qFOMVPePEzdSKkpGU3NBXPHHjvKQ==", + "dependencies": { + "bignumber.js": "^9.1.0", + "splaytree-ts": "^1.0.2" + } + }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -4833,6 +9415,12 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -4879,6 +9467,19 @@ ], "license": "MIT" }, + "node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, + "node_modules/rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "dependencies": { + "quickselect": "^2.0.0" + } + }, "node_modules/react": { "version": "19.1.1", "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", @@ -4907,6 +9508,12 @@ "node": ">=0.10.0" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -4956,6 +9563,11 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/robust-predicates": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-2.0.4.tgz", + "integrity": "sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==" + }, "node_modules/rollup": { "version": "4.46.2", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", @@ -5020,6 +9632,26 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/scheduler": { "version": "0.26.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", @@ -5074,6 +9706,11 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/skmeans": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz", + "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==" + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -5083,6 +9720,11 @@ "node": ">=0.10.0" } }, + "node_modules/splaytree-ts": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/splaytree-ts/-/splaytree-ts-1.0.2.tgz", + "integrity": "sha512-0kGecIZNIReCSiznK3uheYB8sbstLjCZLiwcQwbmLhgHJj2gz6OnSPkVzJQCMnmEz1BQ4gPK59ylhBoEWOhGNA==" + }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -5213,6 +9855,14 @@ "node": ">=8" } }, + "node_modules/sweepline-intersections": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sweepline-intersections/-/sweepline-intersections-1.5.0.tgz", + "integrity": "sha512-AoVmx72QHpKtItPu72TzFL+kcYjd67BPLDoR0LarIk+xyaRg+pDTMFXndIEvZf9xEKnJv6JdhgRMnocoG0D3AQ==", + "dependencies": { + "tinyqueue": "^2.0.0" + } + }, "node_modules/table-layout": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz", @@ -5227,6 +9877,18 @@ "node": ">=12.17" } }, + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/terra-draw": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/terra-draw/-/terra-draw-1.15.0.tgz", @@ -5260,6 +9922,11 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tinyqueue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5273,6 +9940,40 @@ "node": ">=8.0" } }, + "node_modules/topojson-client": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", + "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", + "dependencies": { + "commander": "2" + }, + "bin": { + "topo2geo": "bin/topo2geo", + "topomerge": "bin/topomerge", + "topoquantize": "bin/topoquantize" + } + }, + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/topojson-server": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/topojson-server/-/topojson-server-3.0.1.tgz", + "integrity": "sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==", + "dependencies": { + "commander": "2" + }, + "bin": { + "geo2topo": "bin/geo2topo" + } + }, + "node_modules/topojson-server/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "node_modules/ts-api-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", @@ -5290,7 +9991,6 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, "license": "0BSD" }, "node_modules/type-check": { @@ -5306,6 +10006,18 @@ "node": ">= 0.8.0" } }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typescript": { "version": "5.9.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", @@ -5460,6 +10172,15 @@ "punycode": "^2.1.0" } }, + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/vite": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.7.tgz", @@ -5550,6 +10271,12 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", + "dev": true + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5893,6 +10620,53 @@ "name": "@js-api-samples/deckgl-polygon", "version": "1.0.0" }, + "samples/js-api-loader-map": { + "name": "@js-api-samples/js-api-loader-map", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@googlemaps/js-api-loader": "^1.0.0" + }, + "devDependencies": { + "@types/google.maps": "^3.49.2", + "parcel": "^2.8.3", + "typescript": "^4.9.5" + } + }, + "samples/js-api-loader-map-simple": { + "version": "1.0.0", + "extraneous": true, + "license": "MIT", + "dependencies": { + "@googlemaps/js-api-loader": "^1.0.0" + }, + "devDependencies": { + "@types/google.maps": "^3.49.2", + "@typescript-eslint/eslint-plugin": "^8.45.0", + "@typescript-eslint/parser": "^8.45.0", + "eslint": "^9.36.0", + "parcel": "^2.8.3", + "typescript": "^4.9.5" + } + }, + "samples/js-api-loader-map/node_modules/@googlemaps/js-api-loader": { + "version": "1.16.10", + "resolved": "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.16.10.tgz", + "integrity": "sha512-c2erv2k7P2ilYzMmtYcMgAR21AULosQuUHJbStnrvRk2dG93k5cqptDrh9A8p+ZNlyhiqEOgHW7N9PAizdUM7Q==" + }, + "samples/js-api-loader-map/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "samples/layer-data-simple": { "name": "@js-api-samples/layer-data-simple", "version": "1.0.0" @@ -5943,6 +10717,64 @@ "name": "@js-api-samples/place-text-search", "version": "1.0.0" }, + "samples/react-3d-basemap-filtering": { + "name": "@js-api-samples/react-3d-basemap-filtering", + "version": "1.0.0", + "extraneous": true, + "dependencies": { + "@vis.gl/react-google-maps": "latest", + "fast-deep-equal": "^3.1.3", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@types/react": "^18.3.1", + "@types/react-dom": "^18.3.0", + "typescript": "^5.5.3", + "vite": "^5.3.4" + } + }, + "samples/react-map-3d-custom": { + "name": "@js-api-samples/react-map-3d-custom", + "version": "1.0.0", + "dependencies": { + "@turf/turf": "^7.1.0", + "@vis.gl/react-google-maps": "1.5.5", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@types/react": "^19.1.13", + "@types/react-dom": "^19.1.9", + "typescript": "^5.5.3", + "vite": "^7.1.7" + } + }, + "samples/react-map-3d-custom-gpx": { + "name": "@js-api-samples/react-map-3d-custom-gpx", + "version": "1.0.0", + "dependencies": { + "@turf/turf": "^7.1.0", + "@vis.gl/react-google-maps": "1.5.5", + "@xmldom/xmldom": "^0.8.11", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@types/react": "^19.1.13", + "@types/react-dom": "^19.1.9", + "typescript": "^5.5.3", + "vite": "^7.1.7" + } + }, + "samples/react-map-3d-custom-gpx/node_modules/@xmldom/xmldom": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", + "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", + "engines": { + "node": ">=10.0.0" + } + }, "samples/react-places-ui-kit-search-nearby": { "version": "1.0.0", "extraneous": true, diff --git a/package.json b/package.json index bca48335..05707896 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,6 @@ "@eslint/markdown": "^7.2.0", "@playwright/test": "^1.55.1", "@types/google.maps": "^3.58.1", - "@types/node": "^24.4.0", - "eslint": "^9.35.0", "@types/node": "^24.5.2", "eslint": "^9.36.0", "globals": "^16.4.0", diff --git a/samples/js-api-loader-map/README.md b/samples/js-api-loader-map/README.md new file mode 100644 index 00000000..e89ad5bb --- /dev/null +++ b/samples/js-api-loader-map/README.md @@ -0,0 +1,32 @@ +# Google Maps JavaScript Sample + +This sample is generated from @googlemaps/js-samples located at +https://github.com/googlemaps-samples/js-api-samples. + +## Setup + +### Before starting run: + +`$npm i` + +### Run an example on a local web server + +First `cd` to the folder for the sample to run, then: + +`$npm start` + +### Build an individual example + +From `samples/`: + +`$npm run build --workspace=sample-name/` + +### Build all of the examples. + +From `samples/`: +`$npm run build-all` + +## Feedback + +For feedback related to this sample, please open a new issue on +[GitHub](https://github.com/googlemaps-samples/js-api-samples/issues). \ No newline at end of file diff --git a/samples/js-api-loader-map/index.html b/samples/js-api-loader-map/index.html new file mode 100644 index 00000000..95fcfa8c --- /dev/null +++ b/samples/js-api-loader-map/index.html @@ -0,0 +1,21 @@ + + + + + + @googlemaps/js-api-loader map + + + + + +

@googlemaps/js-api-loader map

+
+ + + + diff --git a/samples/js-api-loader-map/index.ts b/samples/js-api-loader-map/index.ts new file mode 100644 index 00000000..000ad32f --- /dev/null +++ b/samples/js-api-loader-map/index.ts @@ -0,0 +1,26 @@ +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +// [START maps_js_api_loader_map] +import { Loader } from "@googlemaps/js-api-loader"; + +const API_KEY = "AIzaSyA6myHzS10YXdcazAFalmXvDkrYCp5cLc8"; + +async function initMap(): Promise { + const loader = new Loader({ apiKey: API_KEY }); + const { Map } = await loader.importLibrary("maps") as google.maps.MapsLibrary; + + const mapOptions: google.maps.MapOptions = { + center: { lat: 48.8566, lng: 2.3522 }, + zoom: 3, + }; + + const map = new Map(document.getElementById("map") as HTMLElement, mapOptions); + +} + +initMap(); +// [END maps_js_api_loader_map] \ No newline at end of file diff --git a/samples/js-api-loader-map/package.json b/samples/js-api-loader-map/package.json new file mode 100644 index 00000000..15cdfa6d --- /dev/null +++ b/samples/js-api-loader-map/package.json @@ -0,0 +1,22 @@ +{ + "name": "@js-api-samples/js-api-loader-map", + "version": "1.0.0", + "description": "Demonstrates loading the Google Maps JavaScript API dynamically using @googlemaps/js-api-loader.", + "scripts": { + "build": "tsc && parcel build index.html", + "test": "tsc", + "start": "parcel index.html --port 5173", + "preview": "npm run start" + }, + "keywords": [], + "author": "", + "license": "MIT", + "dependencies": { + "@googlemaps/js-api-loader": "^1.0.0" + }, + "devDependencies": { + "@types/google.maps": "^3.49.2", + "parcel": "^2.8.3", + "typescript": "^4.9.5" + } +} diff --git a/samples/js-api-loader-map/style.css b/samples/js-api-loader-map/style.css new file mode 100644 index 00000000..2d3dc247 --- /dev/null +++ b/samples/js-api-loader-map/style.css @@ -0,0 +1,26 @@ +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +/* [START maps_js_api_loader_map] */ +html, body { + height: calc(100vh - 100px); + padding: 0; + font-family:Arial, Helvetica, sans-serif ; +} + +#map { + height: calc(100vh - 100px); +} + +h1{ + height:30px +} + +@media screen and (max-width: 600px) { + h1 { + font-size: 1.2em; + } +} +/* [END maps_js_api_loader_map] */ \ No newline at end of file diff --git a/samples/js-api-loader-map/tsconfig.json b/samples/js-api-loader-map/tsconfig.json new file mode 100644 index 00000000..8b901b2f --- /dev/null +++ b/samples/js-api-loader-map/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "es2020", + "lib": ["dom", "es2020"], + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "moduleResolution": "node" + }, + "include": ["index.ts"] +} \ No newline at end of file diff --git a/samples/react-map-3d-custom-gpx/README.md b/samples/react-map-3d-custom-gpx/README.md new file mode 100644 index 00000000..e89ad5bb --- /dev/null +++ b/samples/react-map-3d-custom-gpx/README.md @@ -0,0 +1,32 @@ +# Google Maps JavaScript Sample + +This sample is generated from @googlemaps/js-samples located at +https://github.com/googlemaps-samples/js-api-samples. + +## Setup + +### Before starting run: + +`$npm i` + +### Run an example on a local web server + +First `cd` to the folder for the sample to run, then: + +`$npm start` + +### Build an individual example + +From `samples/`: + +`$npm run build --workspace=sample-name/` + +### Build all of the examples. + +From `samples/`: +`$npm run build-all` + +## Feedback + +For feedback related to this sample, please open a new issue on +[GitHub](https://github.com/googlemaps-samples/js-api-samples/issues). \ No newline at end of file diff --git a/samples/react-map-3d-custom-gpx/index.html b/samples/react-map-3d-custom-gpx/index.html new file mode 100644 index 00000000..a06c9852 --- /dev/null +++ b/samples/react-map-3d-custom-gpx/index.html @@ -0,0 +1,30 @@ + + + + + + Example: Photorealistic 3D Map + + + + + +
+ + + + diff --git a/samples/react-map-3d-custom-gpx/package.json b/samples/react-map-3d-custom-gpx/package.json new file mode 100644 index 00000000..c053aee0 --- /dev/null +++ b/samples/react-map-3d-custom-gpx/package.json @@ -0,0 +1,25 @@ +{ + "name": "@js-api-samples/react-map-3d-custom-gpx", + "version": "1.0.0", + "type": "module", + "scripts": { + "build": "tsc && bash ../react-docs.sh react-map-3d-custom && npm run build:vite --workspace=. && bash ../dist.sh react-map-3d-custom", + "test": "tsc && npm run build:vite --workspace=.", + "start": "tsc && vite build --base './' && vite preview --port 5173", + "build:vite": "vite build --base './'", + "preview": "vite preview" + }, + "dependencies": { + "@turf/turf": "^7.1.0", + "@vis.gl/react-google-maps": "1.5.5", + "@xmldom/xmldom": "^0.8.11", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@types/react": "^19.1.13", + "@types/react-dom": "^19.1.9", + "typescript": "^5.5.3", + "vite": "^7.1.7" + } +} diff --git a/samples/react-map-3d-custom-gpx/public/track.gpx b/samples/react-map-3d-custom-gpx/public/track.gpx new file mode 100644 index 00000000..fae8e5b6 --- /dev/null +++ b/samples/react-map-3d-custom-gpx/public/track.gpx @@ -0,0 +1 @@ +Der Spaghetti Tour : traversée des 4000m du Mont-Rose 🍝🍅🧅🌶2854.32868.32895.82904.92929.72933.729392963.13017.33055.430843108.93127.531443164.23185.33202.43230.53307.13329.53357.43369.43409.13433.13435.13439.83472.23510.43538.73552.53562.13578.93612.336193632.736633694.53775.53864.33905.93947.43955.53964.13986.44007.74029.44070.24121.84190.44258.44255.34300.74340.643394345.14363.84376.54411.94433.74452.94465.74500.544924494.54501.64487.44395.14453.94485.64470.644434429.744494455.94464.44468.54472.444764470.64451.44408.3439243974379.54333.34275.94253.142794330.14346.84390.94298.24285.94256.24269.14266.24267.44269.84273.84272.44269.34269.54256.44259.84259.14253.54246.64187.64146.64146.64150.64146.241224083.44109.44153.541634166.24167.341574167.44166.74163.541574143.94133.64052.44006.43989.33989.23978.53955.53946.53939.23932.73924.139003872.43854.23846.83841.73843.13814.93782.53723.83692.13676.83669.43657.23628.93609.23607.43606.63605.53602.53610.23614.33639.33712.43677.43675.33698.53707.33724.93780.73812.43847.738413855.23874.23920.33941.73950.83956.23967.53989.23995.44014.54079.64140.14184.54204.74209.64210.54211.24213.942234248.44257.94293.44309.64331.44397.24396.24394.64447.14389.54381.84378.84400.54415.64407.543874365.14356.24330.24274.34214.44197.24180.34101.54077.14050.34034.64025.94030.64037.54034.84057.24069.94124.74149.34165.84161.541354132.34098.64110.54093.94019.64001.93981.23928.33910.63855.53788.53767.83757.23748.23749.33711.53685.136773668.83551.13543.83527.23503.33493.93482.23478.23471.93467.53450.23433.53425.73392.93378.63360.93342.33355.83343.63355.93361.43377.83394.63419.63446.334573469.73474.73487.93495.63505.93523.83535.835443582.83592.53654.2366836763682.93691.43717.83751.53769.33794.33782.337673714.53668.53712.73740.43741.23748.43741.63749.53784.93777.53760.63769.337983827.23881.43844.93855.237983834.838313822.83827.43945.939043847.23910.63944.13958.23988.43992.43969.43963.539593949.33960.13988.240084017.33980.83966.538943900.138883899.33885.23887.83899.73869.138943894.93958.53963.24069.44063.34044.74053.44105.74109.84083.94073.340003928.93922.53894.23853.538343791.33782.33776.13776.53783.83799.83794.63758.13749.83747.83741.83736.93745.3 \ No newline at end of file diff --git a/samples/react-map-3d-custom-gpx/src/app.tsx b/samples/react-map-3d-custom-gpx/src/app.tsx new file mode 100644 index 00000000..24104cd4 --- /dev/null +++ b/samples/react-map-3d-custom-gpx/src/app.tsx @@ -0,0 +1,163 @@ +import React, {useCallback, useEffect, useRef, useState} from 'react'; +import {getFormattedTime} from './utility-hooks'; +import {createRoot} from 'react-dom/client'; + +import {APIProvider, useMapsLibrary} from '@vis.gl/react-google-maps'; + +import {Map3D, Map3DCameraProps} from './map-3d'; +import {Polyline} from './map-3d/Polyline'; +import {Marker3D} from './map-3d/Marker3D'; +import './styles.css'; + +const API_KEY = "AIzaSyA6myHzS10YXdcazAFalmXvDkrYCp5cLc8" as string; + +const INITIAL_VIEW_PROPS = { + center: {lat:45.92325225265732, lng:7.810902484789684, altitude: 5000}, + range: 15000, + tilt: 45, + heading: 0, + roll: 0 +}; + +// [START maps_react_map_3d_custom_gpx_map_component] +const Map3DExample = () => { + const maps3d = useMapsLibrary('maps3d'); + const [viewProps, setViewProps] = useState(INITIAL_VIEW_PROPS); + const [path, setPath] = useState([]); + const [startTime, setStartTime] = useState(null); + const [endTime, setEndTime] = useState(null); + const mapRef = useRef(null); + const startMarkerRef = useRef(null); + const endMarkerRef = useRef(null); + const hasAnimated = useRef(false); + + // [START maps_react_map_3d_custom_gpx_fetch_gpx] + useEffect(() => { + const fetchGpx = async () => { + const response = await fetch('/track.gpx'); + const gpxText = await response.text(); + + const parser = new DOMParser(); + const xmlDoc = parser.parseFromString(gpxText, 'text/xml'); + const trackpoints = xmlDoc.querySelectorAll('trkpt'); + + const coordinates = Array.from(trackpoints).map(point => ({ + lat: parseFloat(point.getAttribute('lat')!), + lng: parseFloat(point.getAttribute('lon')!), + altitude: 0 + })); + + setPath(coordinates); + + if (trackpoints.length > 0) { + const firstTrackpoint = trackpoints[0]; + const lastTrackpoint = trackpoints[trackpoints.length - 1]; + + setStartTime(getFormattedTime(firstTrackpoint, true)); + setEndTime(getFormattedTime(lastTrackpoint, true)); + } + }; + + fetchGpx(); + }, []); + // [END maps_react_map_3d_custom_gpx_fetch_gpx] + + useEffect(() => { + if (!mapRef.current || hasAnimated.current) return; + + mapRef.current.flyCameraAround({ + camera: INITIAL_VIEW_PROPS, + durationMillis: 100000, + repeatCount: 1 + }); + hasAnimated.current = true; + }, [mapRef.current]); + + useEffect(() => { + if (!mapRef.current) return; + + const mapElement = mapRef.current; + const stopAnimation = () => { + (mapElement as any).stopCameraAnimation(); + }; + + mapElement.addEventListener("pointerdown", stopAnimation); + + return () => { + mapElement.removeEventListener("pointerdown", stopAnimation); + }; + }, [mapRef.current]); + + const handleCameraChange = useCallback((props: Map3DCameraProps) => { + setViewProps(oldProps => ({...oldProps, ...props})); + }, []); + + + if (!maps3d) return null; + + const startMarkerLabel = startTime ? startTime : ''; + const endMarkerLabel = endTime ? endTime : ''; + + return ( + + {/* [START maps_react_map_3d_custom_gpx_polyline] */} + + {/* [END maps_react_map_3d_custom_gpx_polyline] */} + {path.length > 0 && ( + <> + {/* [START maps_react_map_3d_custom_gpx_markers] */} + + + {/* [END maps_react_map_3d_custom_gpx_markers] */} + + )} + + ); +}; +// [END maps_react_map_3d_custom_gpx_map_component] + +// [START maps_react_map_3d_custom_gpx_api_provider] +const App = () => { + return ( + + + + ); +}; +// [END maps_react_map_3d_custom_gpx_api_provider] + +export default App; + +// [START maps_react_map_3d_custom_gpx_render_to_dom] +export function renderToDom(container: HTMLElement) { + const root = createRoot(container); + + root.render( + + + + ); +} +// [END maps_react_map_3d_custom_gpx_render_to_dom] diff --git a/samples/react-map-3d-custom-gpx/src/map-3d/Polyline.tsx b/samples/react-map-3d-custom-gpx/src/map-3d/Polyline.tsx new file mode 100644 index 00000000..ae0be6a5 --- /dev/null +++ b/samples/react-map-3d-custom-gpx/src/map-3d/Polyline.tsx @@ -0,0 +1,36 @@ +import {useMapsLibrary} from '@vis.gl/react-google-maps'; +import React, {useEffect, useState} from 'react'; +import {useCallbackRef, useDeepCompareEffect} from '../utility-hooks'; + +export type PolylineProps = google.maps.maps3d.Polyline3DElementOptions & { + path?: google.maps.LatLngAltitudeLiteral[]; + strokeColor?: string; + outerColor?: string; + strokeWidth?: number; + outerWidth?: number; + altitudeMode?: google.maps.maps3d.AltitudeMode; + drawsOccludedSegments?: boolean; +}; + +export const Polyline = (props: PolylineProps) => { + const maps3d = useMapsLibrary('maps3d'); + const [polylineElement, polylineRef] = + useCallbackRef(); + + useDeepCompareEffect(() => { + if (!polylineElement) return; + + Object.assign(polylineElement, props); + }, [polylineElement, props]); + + const [customElementsReady, setCustomElementsReady] = useState(false); + useEffect(() => { + customElements.whenDefined('gmp-polyline-3d').then(() => { + setCustomElementsReady(true); + }); + }, []); + + if (!customElementsReady || !maps3d) return null; + + return ; +}; \ No newline at end of file diff --git a/samples/react-map-3d-custom-gpx/src/map-3d/index.ts b/samples/react-map-3d-custom-gpx/src/map-3d/index.ts new file mode 100644 index 00000000..a21d1287 --- /dev/null +++ b/samples/react-map-3d-custom-gpx/src/map-3d/index.ts @@ -0,0 +1 @@ +export * from './map-3d'; diff --git a/samples/react-map-3d-custom-gpx/src/map-3d/map-3d-types.ts b/samples/react-map-3d-custom-gpx/src/map-3d/map-3d-types.ts new file mode 100644 index 00000000..eec526d5 --- /dev/null +++ b/samples/react-map-3d-custom-gpx/src/map-3d/map-3d-types.ts @@ -0,0 +1,68 @@ +/* eslint-disable @typescript-eslint/no-namespace, @typescript-eslint/no-explicit-any */ + +import {DOMAttributes, RefAttributes} from 'react'; + +// add an overload signature for the useMapsLibrary hook, so typescript +// knows what the 'maps3d' library is. +declare module '@vis.gl/react-google-maps' { + export function useMapsLibrary( + name: 'maps3d' + ): typeof google.maps.maps3d | null; +} + +// temporary fix until @types/google.maps is updated with the latest changes +declare global { + namespace google.maps.maps3d { + interface CameraOptions { + center?: google.maps.LatLngAltitude | google.maps.LatLngAltitudeLiteral; + heading?: number; + range?: number; + roll?: number; + tilt?: number; + } + + interface FlyAroundAnimationOptions { + camera: CameraOptions; + durationMillis?: number; + repeatCount?: number; + } + + interface LocationClickEvent extends Event { + position: google.maps.LatLngAltitude | null; + } + + interface Map3DElement extends HTMLElement { + mode?: 'HYBRID' | 'SATELLITE'; + mapId?: string; + flyCameraAround(options: FlyAroundAnimationOptions): void; + } + } +} + +// add the custom-element to the JSX.IntrinsicElements +// interface, so it can be used in jsx +declare module 'react' { + namespace JSX { + interface IntrinsicElements { + ['gmp-map-3d']: CustomElement< + google.maps.maps3d.Map3DElement, + google.maps.maps3d.Map3DElement + >; + ['gmp-polyline-3d']: CustomElement< + google.maps.maps3d.Polyline3DElement, + google.maps.maps3d.Polyline3DElementOptions + >; + } + } +} + +// a helper type for CustomElement definitions +type CustomElement = Partial< + TAttr & + DOMAttributes & + RefAttributes & { + // for whatever reason, anything else doesn't work as children + // of a custom element, so we allow `any` here + children: any; + } +>; diff --git a/samples/react-map-3d-custom-gpx/src/map-3d/map-3d.tsx b/samples/react-map-3d-custom-gpx/src/map-3d/map-3d.tsx new file mode 100644 index 00000000..58164f7e --- /dev/null +++ b/samples/react-map-3d-custom-gpx/src/map-3d/map-3d.tsx @@ -0,0 +1,97 @@ +import {useMapsLibrary} from '@vis.gl/react-google-maps'; +import React, { + ForwardedRef, + forwardRef, + useEffect, + useImperativeHandle, + useState +} from 'react'; +import {useMap3DCameraEvents} from './use-map-3d-camera-events'; +import {useCallbackRef, useDeepCompareEffect} from '../utility-hooks'; + +import './map-3d-types'; + +export type Map3DProps = google.maps.maps3d.Map3DElementOptions & { + onCameraChange?: (cameraProps: Map3DCameraProps) => void; + children?: React.ReactNode; + onMapClick?: (event: google.maps.maps3d.LocationClickEvent) => void; +}; + +export type Map3DCameraProps = { + center: google.maps.LatLngAltitudeLiteral; + range: number; + heading: number; + tilt: number; + roll: number; +}; + +export const Map3D = forwardRef( + ( + props: Map3DProps, + forwardedRef: ForwardedRef + ) => { + useMapsLibrary('maps3d'); + + const [map3DElement, map3dRef] = + useCallbackRef(); + + useMap3DCameraEvents(map3DElement, p => { + if (!props.onCameraChange) return; + + props.onCameraChange(p); + }); + + const [customElementsReady, setCustomElementsReady] = useState(false); + useEffect(() => { + customElements.whenDefined('gmp-map-3d').then(() => { + setCustomElementsReady(true); + }); + }, []); + + const {center, heading, tilt, range, roll, children, ...map3dOptions} = + props; + + useDeepCompareEffect(() => { + if (!map3DElement) return; + + // copy all values from map3dOptions to the map3D element itself + Object.assign(map3DElement, map3dOptions); + }, [map3DElement, map3dOptions]); + + useEffect(() => { + if (!map3DElement) return; + + const handleClick = (event: Event) => { + console.log('map-click'); + props.onMapClick?.(event as google.maps.maps3d.LocationClickEvent); + }; + + map3DElement.addEventListener('gmp-click', handleClick); + + return () => { + map3DElement.removeEventListener('gmp-click', handleClick); + }; + }, [map3DElement, props.onMapClick]); + + useImperativeHandle< + google.maps.maps3d.Map3DElement | null, + google.maps.maps3d.Map3DElement | null + >(forwardedRef, () => map3DElement, [map3DElement]); + + if (!customElementsReady) return null; + + return ( + + {children} + + ); + } +); diff --git a/samples/react-map-3d-custom-gpx/src/map-3d/use-map-3d-camera-events.ts b/samples/react-map-3d-custom-gpx/src/map-3d/use-map-3d-camera-events.ts new file mode 100644 index 00000000..9744c354 --- /dev/null +++ b/samples/react-map-3d-custom-gpx/src/map-3d/use-map-3d-camera-events.ts @@ -0,0 +1,80 @@ +import {useEffect, useRef} from 'react'; +import {Map3DCameraProps} from './map-3d'; + +const cameraPropNames = ['center', 'range', 'heading', 'tilt', 'roll'] as const; + +const DEFAULT_CAMERA_PROPS: Map3DCameraProps = { + center: {lat: 0, lng: 0, altitude: 0}, + range: 0, + heading: 0, + tilt: 0, + roll: 0 +}; + +/** + * Binds event-listeners for all camera-related events to the Map3dElement. + * The values from the events are aggregated into a Map3DCameraProps object, + * and changes are dispatched via the onCameraChange callback. + */ +export function useMap3DCameraEvents( + mapEl?: google.maps.maps3d.Map3DElement | null, + onCameraChange?: (cameraProps: Map3DCameraProps) => void +) { + const cameraPropsRef = useRef(DEFAULT_CAMERA_PROPS); + + useEffect(() => { + if (!mapEl) return; + + const cleanupFns: (() => void)[] = []; + + let updateQueued = false; + + for (const p of cameraPropNames) { + const removeListener = addDomListener(mapEl, `gmp-${p}change`, () => { + const newValue = mapEl[p]; + + if (newValue == null) return; + + if (p === 'center') + // fixme: the typings say this should be a LatLngAltitudeLiteral, but in reality a + // LatLngAltitude object is returned, even when a LatLngAltitudeLiteral was written + // to the property. + cameraPropsRef.current.center = ( + newValue as google.maps.LatLngAltitude + ).toJSON(); + else cameraPropsRef.current[p] = newValue as number; + + if (onCameraChange && !updateQueued) { + updateQueued = true; + + // queue a microtask so all synchronously dispatched events are handled first + queueMicrotask(() => { + updateQueued = false; + onCameraChange(cameraPropsRef.current); + }); + } + }); + + cleanupFns.push(removeListener); + } + + return () => { + for (const removeListener of cleanupFns) removeListener(); + }; + }, [mapEl, onCameraChange]); +} + +/** + * Adds an event-listener and returns a function to remove it again. + */ +function addDomListener( + element: google.maps.maps3d.Map3DElement, + type: string, + listener: (this: google.maps.maps3d.Map3DElement, ev: unknown) => void +): () => void { + element.addEventListener(type, listener); + + return () => { + element.removeEventListener(type, listener); + }; +} diff --git a/samples/react-map-3d-custom-gpx/src/styles.css b/samples/react-map-3d-custom-gpx/src/styles.css new file mode 100644 index 00000000..0486135f --- /dev/null +++ b/samples/react-map-3d-custom-gpx/src/styles.css @@ -0,0 +1 @@ +/* Add custom styles here */ \ No newline at end of file diff --git a/samples/react-map-3d-custom-gpx/src/types/global.d.ts b/samples/react-map-3d-custom-gpx/src/types/global.d.ts new file mode 100644 index 00000000..60d7ecc4 --- /dev/null +++ b/samples/react-map-3d-custom-gpx/src/types/global.d.ts @@ -0,0 +1,51 @@ +// If you are using modules, you can export an empty object to make this a module. +import React from 'react'; +export {}; + +declare global { + namespace NodeJS { + interface ProcessEnv { + [key: string]: string | undefined; + VITE_API_KEY: string; + } + } + + namespace google.maps.maps3d { + interface Marker3DElementOptions { + position: google.maps.LatLngAltitudeLiteral; + altitudeMode?: google.maps.maps3d.AltitudeMode; + extruded?: boolean; + label?: string; + } + + class Marker3DElement extends HTMLElement implements Marker3DElementOptions { + position: google.maps.LatLngAltitudeLiteral; + altitudeMode?: google.maps.maps3d.AltitudeMode; + extruded?: boolean; + label?: string; + } + + interface PinElementOptions { + background?: string; + borderColor?: string; + glyphColor?: string; + glyphText?: string; + } + + class PinElement extends HTMLElement implements PinElementOptions { + background?: string; + borderColor?: string; + glyphColor?: string; + glyphText?: string; + } + } + + namespace JSX { + interface IntrinsicElements { + 'gmp-marker-3d': React.DetailedHTMLProps, HTMLElement> & + google.maps.maps3d.Marker3DElementOptions; + 'gmp-pin': React.DetailedHTMLProps, HTMLElement> & + google.maps.maps3d.PinElementOptions; + } + } +} \ No newline at end of file diff --git a/samples/react-map-3d-custom-gpx/src/utility-hooks.ts b/samples/react-map-3d-custom-gpx/src/utility-hooks.ts new file mode 100644 index 00000000..b8ddf396 --- /dev/null +++ b/samples/react-map-3d-custom-gpx/src/utility-hooks.ts @@ -0,0 +1,74 @@ +import { + DependencyList, + EffectCallback, + Ref, + useCallback, + useEffect, + useRef, + useState +} from 'react'; +import isDeepEqual from 'fast-deep-equal'; + +export function useCallbackRef() { + const [el, setEl] = useState(null); + const ref = useCallback((value: T) => setEl(value), [setEl]); + + return [el, ref as Ref] as const; +} + +export function useDeepCompareEffect( + effect: EffectCallback, + deps: DependencyList +) { + const ref = useRef(undefined); + + if (!ref.current || !isDeepEqual(deps, ref.current)) { + ref.current = deps; + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + useEffect(effect, ref.current); +} + +export function useDebouncedEffect( + effect: EffectCallback, + timeout: number, + deps: DependencyList +) { + const timerRef = useRef(0); + + useEffect( + () => { + if (timerRef.current) { + clearTimeout(timerRef.current); + timerRef.current = 0; + } + + timerRef.current = setTimeout(() => effect(), timeout); + return () => clearTimeout(timerRef.current); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [timeout, ...deps] + ); +} + +export const getFormattedTime = (point: Element, forMarker: boolean = false) => { + const timeElement = point.querySelector('time'); + if (timeElement && timeElement.textContent) { + const date = new Date(timeElement.textContent); + if (forMarker) { + const time = date.toLocaleTimeString('en-US', { + hour: 'numeric', + minute: '2-digit', + second: '2-digit', + hour12: true + }); + const day = date.getDate(); + const month = date.getMonth() + 1; + const year = date.getFullYear(); + return `${time}\n${month}/${day}/${year}`; + } + return date.toLocaleString(); + } + return null; +}; diff --git a/samples/react-map-3d-custom-gpx/tsconfig.json b/samples/react-map-3d-custom-gpx/tsconfig.json new file mode 100644 index 00000000..68101284 --- /dev/null +++ b/samples/react-map-3d-custom-gpx/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "esnext", + "target": "esnext", + "strict": true, + "noImplicitAny": false, + "lib": [ + "es2015", + "esnext", + "es6", + "dom", + "dom.iterable" + ], + "moduleResolution": "node", + "jsx": "react-jsx", + "allowSyntheticDefaultImports": true, + "types": [ + "vite/client", + "node" + ], + "removeComments": false + }, + "include": [ + "src", + "src/types", + ] + } diff --git a/samples/react-map-3d-custom/README.md b/samples/react-map-3d-custom/README.md new file mode 100644 index 00000000..9bd14e96 --- /dev/null +++ b/samples/react-map-3d-custom/README.md @@ -0,0 +1,34 @@ +# [START maps_react_3d_custom_map_readme] +# Google Maps JavaScript Sample + +This sample is generated from @googlemaps/js-samples located at +https://github.com/googlemaps-samples/js-api-samples. + +## Setup + +### Before starting run: + +`$npm i` + +### Run an example on a local web server + +First `cd` to the folder for the sample to run, then: + +`$npm start` + +### Build an individual example + +From `samples/`: + +`$npm run build --workspace=sample-name/` + +### Build all of the examples. + +From `samples/`: +`$npm run build-all` + +## Feedback + +For feedback related to this sample, please open a new issue on +[GitHub](https://github.com/googlemaps-samples/js-api-samples/issues). +# [END maps_react_3d_custom_map_readme] \ No newline at end of file diff --git a/samples/react-map-3d-custom/index.html b/samples/react-map-3d-custom/index.html new file mode 100644 index 00000000..e4b9d3d5 --- /dev/null +++ b/samples/react-map-3d-custom/index.html @@ -0,0 +1,31 @@ + + + + + + Example: Photorealistic 3D Map + + + + + +
+ + + + diff --git a/samples/react-map-3d-custom/package.json b/samples/react-map-3d-custom/package.json new file mode 100644 index 00000000..517b053a --- /dev/null +++ b/samples/react-map-3d-custom/package.json @@ -0,0 +1,24 @@ +{ + "name": "@js-api-samples/react-map-3d-custom", + "version": "1.0.0", + "type": "module", + "scripts": { + "build": "tsc && bash ../react-docs.sh react-map-3d-custom && npm run build:vite --workspace=. && bash ../dist.sh react-map-3d-custom", + "test": "tsc && npm run build:vite --workspace=.", + "start": "tsc && vite build --base './' && vite", + "build:vite": "vite build --base './'", + "preview": "vite preview" + }, + "dependencies": { + "@turf/turf": "^7.1.0", + "@vis.gl/react-google-maps": "1.5.5", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@types/react": "^19.1.13", + "@types/react-dom": "^19.1.9", + "typescript": "^5.5.3", + "vite": "^7.1.7" + } +} diff --git a/samples/react-map-3d-custom/src/app.tsx b/samples/react-map-3d-custom/src/app.tsx new file mode 100644 index 00000000..d5c5979b --- /dev/null +++ b/samples/react-map-3d-custom/src/app.tsx @@ -0,0 +1,67 @@ +import React, {useCallback, useState} from 'react'; +import {createRoot} from 'react-dom/client'; + +import {APIProvider, MapMouseEvent} from '@vis.gl/react-google-maps'; + +import {Map3D, Map3DCameraProps} from './map-3d'; + +import './styles.css'; + +const API_KEY = "AIzaSyA6myHzS10YXdcazAFalmXvDkrYCp5cLc8" as string; + +const INITIAL_VIEW_PROPS = { + center: {lat: 37.69637422900176, lng:-118.5041096347873, altitude: 4020000}, + range: 50000, + heading: 0, + tilt: 25, + roll: 0 +}; + +// [START maps_react_3d_custom_example] +const Map3DExample = () => { + const [viewProps, setViewProps] = useState(INITIAL_VIEW_PROPS); + + const handleCameraChange = useCallback((props: Map3DCameraProps) => { + setViewProps(oldProps => ({...oldProps, ...props})); + }, []); + + const handleMapClick = useCallback((ev: MapMouseEvent) => { + if (!ev.detail.latLng) return; + + const {lat, lng} = ev.detail.latLng; + setViewProps(p => ({...p, center: {lat, lng, altitude: 0}})); + }, []); + + return ( + <> + + + ); +}; +// [END maps_react_3d_custom_example] + +// [START maps_react_3d_custom_app] +const App = () => { + + return ( + + + + ); +}; +// [END maps_react_3d_custom_app] +export default App; + +export function renderToDom(container: HTMLElement) { + const root = createRoot(container); + + root.render( + + + + ); +} diff --git a/samples/react-map-3d-custom/src/map-3d/index.ts b/samples/react-map-3d-custom/src/map-3d/index.ts new file mode 100644 index 00000000..a21d1287 --- /dev/null +++ b/samples/react-map-3d-custom/src/map-3d/index.ts @@ -0,0 +1 @@ +export * from './map-3d'; diff --git a/samples/react-map-3d-custom/src/map-3d/map-3d-types.ts b/samples/react-map-3d-custom/src/map-3d/map-3d-types.ts new file mode 100644 index 00000000..b8aa10e0 --- /dev/null +++ b/samples/react-map-3d-custom/src/map-3d/map-3d-types.ts @@ -0,0 +1,45 @@ +/* eslint-disable @typescript-eslint/no-namespace, @typescript-eslint/no-explicit-any */ + +import {DOMAttributes, RefAttributes} from 'react'; + +// add an overload signature for the useMapsLibrary hook, so typescript +// knows what the 'maps3d' library is. +declare module '@vis.gl/react-google-maps' { + export function useMapsLibrary( + name: 'maps3d' + ): typeof google.maps.maps3d | null; +} + +// temporary fix until @types/google.maps is updated with the latest changes +declare global { + namespace google.maps.maps3d { + interface Map3DElement extends HTMLElement { + mode?: 'HYBRID' | 'SATELLITE'; + mapId?: string; + } + } +} + +// add the custom-element to the JSX.IntrinsicElements +// interface, so it can be used in jsx +declare module 'react' { + namespace JSX { + interface IntrinsicElements { + ['gmp-map-3d']: CustomElement< + google.maps.maps3d.Map3DElement, + google.maps.maps3d.Map3DElement + >; + } + } +} + +// a helper type for CustomElement definitions +type CustomElement = Partial< + TAttr & + DOMAttributes & + RefAttributes & { + // for whatever reason, anything else doesn't work as children + // of a custom element, so we allow `any` here + children: any; + } +>; diff --git a/samples/react-map-3d-custom/src/map-3d/map-3d.tsx b/samples/react-map-3d-custom/src/map-3d/map-3d.tsx new file mode 100644 index 00000000..c0a4294e --- /dev/null +++ b/samples/react-map-3d-custom/src/map-3d/map-3d.tsx @@ -0,0 +1,78 @@ +import {useMapsLibrary} from '@vis.gl/react-google-maps'; +import React, { + ForwardedRef, + forwardRef, + useEffect, + useImperativeHandle, + useMemo, + useState +} from 'react'; +import {useMap3DCameraEvents} from './use-map-3d-camera-events'; +import {useCallbackRef, useDeepCompareEffect} from '../utility-hooks'; + +import './map-3d-types'; + +export type Map3DProps = google.maps.maps3d.Map3DElementOptions & { + onCameraChange?: (cameraProps: Map3DCameraProps) => void; +}; + +export type Map3DCameraProps = { + center: google.maps.LatLngAltitudeLiteral; + range: number; + heading: number; + tilt: number; + roll: number; +}; + +export const Map3D = forwardRef( + ( + props: Map3DProps, + forwardedRef: ForwardedRef + ) => { + useMapsLibrary('maps3d'); + + const [map3DElement, map3dRef] = + useCallbackRef(); + + useMap3DCameraEvents(map3DElement, p => { + if (!props.onCameraChange) return; + + props.onCameraChange(p); + }); + + const [customElementsReady, setCustomElementsReady] = useState(false); + useEffect(() => { + customElements.whenDefined('gmp-map-3d').then(() => { + setCustomElementsReady(true); + }); + }, []); + + const {center, heading, tilt, range, roll, ...map3dOptions} = props; + + useDeepCompareEffect(() => { + if (!map3DElement) return; + + // copy all values from map3dOptions to the map3D element itself + Object.assign(map3DElement, map3dOptions); + }, [map3DElement, map3dOptions]); + + useImperativeHandle< + google.maps.maps3d.Map3DElement | null, + google.maps.maps3d.Map3DElement | null + >(forwardedRef, () => map3DElement, [map3DElement]); + + if (!customElementsReady) return null; + + return ( + + ); + } +); diff --git a/samples/react-map-3d-custom/src/map-3d/use-map-3d-camera-events.ts b/samples/react-map-3d-custom/src/map-3d/use-map-3d-camera-events.ts new file mode 100644 index 00000000..9744c354 --- /dev/null +++ b/samples/react-map-3d-custom/src/map-3d/use-map-3d-camera-events.ts @@ -0,0 +1,80 @@ +import {useEffect, useRef} from 'react'; +import {Map3DCameraProps} from './map-3d'; + +const cameraPropNames = ['center', 'range', 'heading', 'tilt', 'roll'] as const; + +const DEFAULT_CAMERA_PROPS: Map3DCameraProps = { + center: {lat: 0, lng: 0, altitude: 0}, + range: 0, + heading: 0, + tilt: 0, + roll: 0 +}; + +/** + * Binds event-listeners for all camera-related events to the Map3dElement. + * The values from the events are aggregated into a Map3DCameraProps object, + * and changes are dispatched via the onCameraChange callback. + */ +export function useMap3DCameraEvents( + mapEl?: google.maps.maps3d.Map3DElement | null, + onCameraChange?: (cameraProps: Map3DCameraProps) => void +) { + const cameraPropsRef = useRef(DEFAULT_CAMERA_PROPS); + + useEffect(() => { + if (!mapEl) return; + + const cleanupFns: (() => void)[] = []; + + let updateQueued = false; + + for (const p of cameraPropNames) { + const removeListener = addDomListener(mapEl, `gmp-${p}change`, () => { + const newValue = mapEl[p]; + + if (newValue == null) return; + + if (p === 'center') + // fixme: the typings say this should be a LatLngAltitudeLiteral, but in reality a + // LatLngAltitude object is returned, even when a LatLngAltitudeLiteral was written + // to the property. + cameraPropsRef.current.center = ( + newValue as google.maps.LatLngAltitude + ).toJSON(); + else cameraPropsRef.current[p] = newValue as number; + + if (onCameraChange && !updateQueued) { + updateQueued = true; + + // queue a microtask so all synchronously dispatched events are handled first + queueMicrotask(() => { + updateQueued = false; + onCameraChange(cameraPropsRef.current); + }); + } + }); + + cleanupFns.push(removeListener); + } + + return () => { + for (const removeListener of cleanupFns) removeListener(); + }; + }, [mapEl, onCameraChange]); +} + +/** + * Adds an event-listener and returns a function to remove it again. + */ +function addDomListener( + element: google.maps.maps3d.Map3DElement, + type: string, + listener: (this: google.maps.maps3d.Map3DElement, ev: unknown) => void +): () => void { + element.addEventListener(type, listener); + + return () => { + element.removeEventListener(type, listener); + }; +} diff --git a/samples/react-map-3d-custom/src/styles.css b/samples/react-map-3d-custom/src/styles.css new file mode 100644 index 00000000..0486135f --- /dev/null +++ b/samples/react-map-3d-custom/src/styles.css @@ -0,0 +1 @@ +/* Add custom styles here */ \ No newline at end of file diff --git a/samples/react-map-3d-custom/src/types/global.d.ts b/samples/react-map-3d-custom/src/types/global.d.ts new file mode 100644 index 00000000..b7a332df --- /dev/null +++ b/samples/react-map-3d-custom/src/types/global.d.ts @@ -0,0 +1,11 @@ +declare global { + namespace NodeJS { + interface ProcessEnv { + [key: string]: string | undefined; + VITE_API_KEY: string; + } + } +} + +// If you are using modules, you can export an empty object to make this a module. +export {}; \ No newline at end of file diff --git a/samples/react-map-3d-custom/src/utility-hooks.ts b/samples/react-map-3d-custom/src/utility-hooks.ts new file mode 100644 index 00000000..2172d5c2 --- /dev/null +++ b/samples/react-map-3d-custom/src/utility-hooks.ts @@ -0,0 +1,53 @@ +import { + DependencyList, + EffectCallback, + Ref, + useCallback, + useEffect, + useRef, + useState +} from 'react'; +import isDeepEqual from 'fast-deep-equal'; + +export function useCallbackRef() { + const [el, setEl] = useState(null); + const ref = useCallback((value: T) => setEl(value), [setEl]); + + return [el, ref as Ref] as const; +} + +export function useDeepCompareEffect( + effect: EffectCallback, + deps: DependencyList +) { + const ref = useRef(undefined); + + if (!ref.current || !isDeepEqual(deps, ref.current)) { + ref.current = deps; + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + useEffect(effect, ref.current); +} + +export function useDebouncedEffect( + effect: EffectCallback, + timeout: number, + deps: DependencyList +) { + const timerRef = useRef(0); + + useEffect( + () => { + if (timerRef.current) { + clearTimeout(timerRef.current); + timerRef.current = 0; + } + + timerRef.current = setTimeout(() => effect(), timeout); + return () => clearTimeout(timerRef.current); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [timeout, ...deps] + ); +} diff --git a/samples/react-map-3d-custom/tsconfig.json b/samples/react-map-3d-custom/tsconfig.json new file mode 100644 index 00000000..921aa47a --- /dev/null +++ b/samples/react-map-3d-custom/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "module": "esnext", + "target": "esnext", + "strict": true, + "noImplicitAny": false, + "lib": [ + "es2015", + "esnext", + "es6", + "dom", + "dom.iterable" + ], + "moduleResolution": "node", + "jsx": "react-jsx", + "allowSyntheticDefaultImports": true, + "types": [ + "vite/client", + "node" + ], + "removeComments": false + }, + "include": [ + "src" + ] + } diff --git a/samples/react-ui-kit-place-details-compact/src/types.d.ts b/samples/react-ui-kit-place-details-compact/src/types.d.ts new file mode 100644 index 00000000..bd612153 --- /dev/null +++ b/samples/react-ui-kit-place-details-compact/src/types.d.ts @@ -0,0 +1,51 @@ +import React from 'react'; + +declare global { + namespace JSX { + interface IntrinsicElements { + 'gmp-place-details-compact': React.DetailedHTMLProps< + React.HTMLAttributes & { + orientation?: string; + 'truncation-preferred'?: boolean; + }, + HTMLElement + >; + 'gmp-place-details-place-request': React.DetailedHTMLProps< + React.HTMLAttributes & {place: string}, + HTMLElement + >; + 'gmp-place-content-config': React.DetailedHTMLProps< + React.HTMLAttributes, + HTMLElement + >; + 'gmp-place-media': React.DetailedHTMLProps< + React.HTMLAttributes & {'lightbox-preferred'?: boolean}, + HTMLElement + >; + 'gmp-place-rating': React.DetailedHTMLProps< + React.HTMLAttributes, + HTMLElement + >; + 'gmp-place-type': React.DetailedHTMLProps< + React.HTMLAttributes, + HTMLElement + >; + 'gmp-place-price': React.DetailedHTMLProps< + React.HTMLAttributes, + HTMLElement + >; + 'gmp-place-accessible-entrance-icon': React.DetailedHTMLProps< + React.HTMLAttributes, + HTMLElement + >; + 'gmp-place-open-now-status': React.DetailedHTMLProps< + React.HTMLAttributes, + HTMLElement + >; + 'gmp-place-attribution': React.DetailedHTMLProps< + React.HTMLAttributes, + HTMLElement + >; + } + } +} \ No newline at end of file