gis-common 4.2.1 → 4.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- (function(u,y){typeof exports=="object"&&typeof module<"u"?y(exports,require("mqtt-browser")):typeof define=="function"&&define.amd?define(["exports","mqtt-browser"],y):(u=typeof globalThis<"u"?globalThis:u||self,y(u["gis-common"]={},u.mqttBrowser))})(this,function(u,y){"use strict";var nt=Object.defineProperty;var st=(u,y,p)=>y in u?nt(u,y,{enumerable:!0,configurable:!0,writable:!0,value:p}):u[y]=p;var m=(u,y,p)=>st(u,typeof y!="symbol"?y+"":y,p);var p=(t=>(t.MAP_RENDER="mapRender",t.MAP_READY="mapReady",t.MOUSE_CLICK="click",t.MOUSE_DOUBLE_CLICK="dblclick",t.MOUSE_MOVE="mousemove",t.MOUSE_IN="mousein",t.MOUSE_OUT="mouseout",t.MOUSE_RIGHT_CLICK="mouseRightClick",t.KEY_DOWN="keyDown",t.KEY_UP="keyUp",t.DRAW_ACTIVE="drawActive",t.DRAW_MOVE="drawMove",t.DRAW_COMPLETE="drawComplete",t.MQTT_CONNECT="mqttConnect",t.MQTT_ERROR="mqttError",t.MQTT_MESSAGE="mqttMessage",t.MQTT_CLOSE="mqttClose",t.WEB_SOCKET_CONNECT="webSocketConnect",t.WEB_SOCKET_ERROR="webSocketError",t.WEB_SOCKET_MESSAGE="webSocketMessage",t.WEB_SOCKET_CLOSE="webSocketClose",t))(p||{}),b=(t=>(t.LOGIN_EXPIRED="登录信息过期,请重新登录",t.CROSS_ERROR="跨域访问",t.UNEXIST_RESOURCE="资源不存在",t.TIMEOUT="请求超时",t.INTERNAL_ERROR="内部错误",t.NETWORK_ERROR="请求失败,请检查网络是否已连接",t.PROCESS_FAIL="处理失败",t.AUTH_VERIFY_ERROR="权限验证失败",t.NO_DATA_FOUND="未找到数据",t.DUPLICATE_INSTANCE="实例为单例模式,不允许重复构建",t.COORDINATE_ERROR="坐标验证失败",t.JSON_PARSE_ERROR="JSON解析失败,格式有误",t.JSON_VALUE_ERROR="JSON无此键",t.PARAMETER_ERROR="验证数据类型失败",t.PARAMETER_ERROR_ARRAY="格式类型验证失败:必须是数组",t.PARAMETER_ERROR_STRING="格式类型验证失败:必须是字符",t.PARAMETER_ERROR_FUNCTION="格式类型验证失败:必须是函数",t.PARAMETER_ERROR_OBJECT="格式类型验证失败:必须是对象",t.PARAMETER_ERROR_LACK="参数缺失",t.STRING_CHECK_LOSS="字符缺少关键字",t))(b||{}),v=(t=>(t.SUPER_MAP_IMAGES="SuperMapImages",t.SUPER_MAP_DATA="SuperMapData",t.ARC_GIS_MAP_IMAGES="ArcGisMapImages",t.ARC_GIS_MAP_DATA="ArcGisMapData",t.OSGB_LAYER="OSGBLayer",t.S3M_GROUP="S3MGroup",t.TERRAIN_LAYER="TerrainFileLayer",t))(v||{}),L=(t=>(t.POINT="point",t.POLYLINE="polyline",t.POLYGON="polygon",t.BILLBOARD="billboard",t.CYLINDER="cylinder",t.ELLIPSOID="ellipsoid",t.LABEL="label",t.MODEL="model",t.WALL="wall",t))(L||{}),U=(t=>(t.DISTANCE="distance",t.AREA="area",t.HEIGHT="height",t))(U||{}),N=(t=>(t.ADD="add",t.REMOVE="remove",t.INIT="init",t))(N||{});class B{constructor(e){m(this,"audio");this.audio=new Audio,this.audio.src=e}play(){!this.muted&&this.audio.play()}pause(){this.audio.pause()}get muted(){return this.audio.muted}set muted(e){this.audio.muted=e}}const E={DEG2RAD:Math.PI/180,RAD2DEG:180/Math.PI,randInt(t,e){return t+Math.floor(Math.random()*(e-t+1))},randFloat(t,e){return t+Math.random()*(e-t)},degreesToRadians(t){return t*this.DEG2RAD},toRadians(t){return t*this.DEG2RAD},radiansToDegrees(t){return t*this.RAD2DEG},toDegrees(t){return t*this.RAD2DEG},formatFloat(t,e=2){return Math.round(t*Math.pow(10,e))/Math.pow(10,e)},minMax(t,e,n){return Math.min(Math.max(t,e),n)},maxMin(t,e,n){return Math.max(Math.min(t,n),e)}};class ${constructor(e){m(this,"context",null);if(typeof e=="string"&&(e=document.querySelector("#"+e),!e))throw new Error("Element not found");if(e instanceof HTMLElement){const n=e;if(n.getContext)this.context=n.getContext("2d");else throw new Error("getContext is not available on this element")}else throw new Error("Element is not an HTMLElement")}drawLine({x:e,y:n},{x:r,y:i},o={}){if(!this.context)throw new Error("Canvas context is null or undefined");this.context.beginPath();const a=o.width||1,c=o.color||"#000";this.context.lineWidth=a,this.context.strokeStyle=c,this.context.moveTo(e,n),this.context.lineTo(r,i),this.context.stroke()}drawArc({x:e,y:n},r,i,o,a,c,l){if(!this.context)throw new Error("Canvas context is null or undefined");c?(this.context.fillStyle=l,this.context.beginPath(),this.context.arc(e,n,r,E.degreesToRadians(i),E.degreesToRadians(o),a),this.context.fill()):(this.context.strokeStyle=l,this.context.beginPath(),this.context.arc(e,n,r,E.degreesToRadians(i),E.degreesToRadians(o),a),this.context.stroke())}static createCanvas(e=1,n=1){let r;if(typeof document<"u")return r=document.createElement("canvas"),e&&(r.width=e),n&&(r.height=n),r}}class D{constructor(){m(this,"_listeners");m(this,"_mutex",{});m(this,"_context")}addEventListener(e,n,r,i){this._listeners===void 0&&(this._listeners={}),this._context=r;const o=this._mutex,a=this._listeners;return a[e]===void 0&&(a[e]=[]),a[e].indexOf(n)===-1&&(i&&(o[e]=n),a[e].push(n)),this}hasEventListener(e,n){if(this._listeners===null||this._listeners===void 0)return!1;const r=this._listeners;return r[e]!==void 0&&r[e].indexOf(n)!==-1}removeEventListener(e,n){if(this._listeners===void 0)return;const i=this._listeners[e];if(this._mutex[e]===n&&(this._mutex[e]=null),i!==void 0){const o=i.map(a=>a.toString()).indexOf(n.toString());o!==-1&&i.splice(o,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const r=this._listeners[e.type];if(r!==void 0){e.target=this;const i=r.slice(0);if(this._mutex[e.type]!==void 0){const o=i.find(a=>a===this._mutex[e.type]);if(o){o.call(this._context||this,e);return}}for(let o=0,a=i.length;o<a;o++){const c=i[o];typeof c=="function"&&c.call(this._context||this,e)}}}removeAllListener(){this._mutex={};for(const e in this._listeners)this._listeners[e]=[]}}class I extends Map{isEmpty(){return this.size===0}_values(){return Array.from(this.values())}_keys(){return Array.from(this.keys())}_entries(){return Array.from(this.entries())}fromEntries(){}}I.prototype.fromEntries=function(t=[]){const e=new I;return t.forEach(n=>{Array.isArray(n)&&n.length===2&&e.set(n[0],n[1])}),e};class q extends D{constructor(n="ws://127.0.0.1:10088"){super();m(this,"maxCheckTimes",10);m(this,"url");m(this,"checkTimes",0);m(this,"connectStatus",!1);m(this,"client",null);this.maxCheckTimes=10,this.url=n,this.checkTimes=0,this.connect(),this.connCheckStatus(this.maxCheckTimes)}connect(){if(this.disconnect(),this.url)try{if(console.info("创建ws连接>>>"+this.url),this.client=new WebSocket(this.url),this.client){const n=this;this.client.onopen=function(r){n.dispatchEvent({type:p.WEB_SOCKET_CONNECT,message:r})},this.client.onmessage=function(r){n.connectStatus=!0,n.dispatchEvent({type:p.WEB_SOCKET_MESSAGE,message:r})},this.client.onclose=function(r){n.dispatchEvent({type:p.WEB_SOCKET_CLOSE,message:r})},this.checkTimes===this.maxCheckTimes&&(this.client.onerror=function(r){n.dispatchEvent({type:p.WEB_SOCKET_ERROR,message:r})})}}catch(n){console.error("创建ws连接失败"+this.url+":"+n)}}disconnect(){if(this.client)try{console.log("ws断开连接"+this.url),this.client.close(),this.client=null}catch{this.client=null}}connCheckStatus(n){this.checkTimes>n||setTimeout(()=>{this.checkTimes++,this.client&&this.client.readyState!==0&&this.client.readyState!==1&&this.connect(),this.connCheckStatus(n)},2e3)}send(n){return this.client&&this.client.readyState===1?(this.client.send(n),!0):(console.error(this.url+"消息发送失败:"+n),!1)}heartbeat(){setTimeout(()=>{this.client&&this.client.readyState===1&&this.send("HeartBeat"),console.log("HeartBeat,"+this.url),setTimeout(this.heartbeat,3e4)},1e3)}}const w={getDataType(t){return Object.prototype.toString.call(t).slice(8,-1)},asArray(t){return this.isEmpty(t)?[]:Array.isArray(t)?t:[t]},asNumber(t){return Number.isNaN(Number(t))?0:Number(t)},isEmpty(t){if(t==null)return!0;switch(this.getDataType(t)){case"String":return t.trim()==="";case"Array":return!t.length;case"Object":return!Object.keys(t).length;case"Boolean":return!t;default:return!1}},isNotEmpty(t){return!this.isEmpty(t)},json2form(t){const e=new FormData;return Object.keys(t).forEach(n=>{e.append(n,t[n]instanceof Object?JSON.stringify(t[n]):t[n])}),e},guid(){const t=function(){return((1+Math.random())*65536|0).toString(16).substring(1)};return t()+t()+t()+t()+t()+t()+t()+t()},decodeDict(...t){let e="";if(t.length>1){const n=t.slice(1,t.length%2===0?t.length-1:t.length);for(let r=0;r<n.length;r=r+2){const i=n[r];t[0]===i&&(e=n[r+1])}!e&&t.length%2===0&&(e=t[t.length-1])}else e=t[0];return e},extend(t,...e){let n,r,i,o;for(r=0,i=e.length;r<i;r++){o=e[r];for(n in o)t[n]=o[n]}return t},convertToTree2(t,e="id",n="parentId",r="children"){const i=[];function o(a){const c=t.filter(l=>l[n]===a[e]).map(l=>(i.some(d=>d[e]===l[e])||o(l),l));c.length>0&&(a[r]=c)}return t.forEach(a=>{t.some(c=>c[n]===a[e])||(o(a),i.push(a))}),i},asyncLoadScript(t){return new Promise((e,n)=>{try{const r=document.createElement("script");r.type="text/javascript",r.src=t,"readyState"in r?r.onreadystatechange=function(){(r.readyState==="complete"||r.readyState==="loaded")&&e(r)}:(r.onload=function(){e(r)},r.onerror=function(){n(new Error("Script failed to load for URL: "+t))}),document.body.appendChild(r)}catch(r){n(r)}})},loadStyle(t){t.forEach(e=>{const n=document.createElement("link");n.href=e,n.rel="stylesheet",n.type="text/css",n.onerror=function(){console.error(`Style loading failed for URL: ${e}`)},document.head.appendChild(n)})},template(t,e){const n=/\{ *([\w_-]+) *\}/g;return t.replace(n,(r,i)=>{const o=e[i];if(o===void 0)throw new Error(`${b.JSON_VALUE_ERROR}: ${r}`);return typeof o=="function"?o(e):o})},deleteEmptyProperty(t){return Object.fromEntries(Object.keys(t).filter(e=>!this.isEmpty(t[e])).map(e=>[e,t[e]]))},deepAssign(t,...e){(typeof t!="object"||t===null)&&(t={});for(const n of e)if(typeof n=="object"&&n!==null)for(const r in n)Object.prototype.hasOwnProperty.call(n,r)&&(typeof n[r]=="object"&&n[r]!==null?(t[r]||(t[r]=Array.isArray(n[r])?[]:{}),this.deepAssign(t[r],n[r])):t[r]=n[r]);return t},handleCopyValue(t){if(navigator.clipboard&&window.isSecureContext)return navigator.clipboard.writeText(t);{const e=document.createElement("textarea");return e.style.position="fixed",e.style.top=e.style.left="-100vh",e.style.opacity="0",e.value=t,document.body.appendChild(e),e.focus(),e.select(),new Promise((n,r)=>{try{document.execCommand("copy"),n()}catch{r(new Error("copy failed"))}finally{e.remove()}})}},isArray(t){return Array.isArray(t)},isObject(t){return Object.prototype.toString.call(t).indexOf("Object")>-1},isNil(t){return t===void 0||t==="undefined"||t===null||t==="null"},isNumber(t){return typeof t=="number"&&!isNaN(t)||typeof t=="string"&&Number.isFinite(+t)},isFunction(t){return this.isNil(t)?!1:typeof t=="function"||t.constructor!==null&&t.constructor===Function}},_={deepClone(t){return structuredClone(t)},isEqual(t,e){return JSON.stringify(t)===JSON.stringify(e)},parse(t){return!t||typeof t!="string"?t:JSON.parse(t)}};Array.prototype.groupBy=function(t){var e={};return this.forEach(function(n){var r=JSON.stringify(t(n));e[r]=e[r]||[],e[r].push(n)}),Object.keys(e).map(n=>e[n])},Array.prototype.distinct=function(t=e=>e){const e=[],n={};return this.forEach(r=>{const i=t(r),o=String(i);n[o]||(n[o]=!0,e.push(r))}),e},Array.prototype.max=function(){return Math.max.apply({},this)},Array.prototype.min=function(){return Math.min.apply({},this)},Array.prototype.sum=function(){return this.length>0?this.reduce((t=0,e=0)=>t+e):0},Array.prototype.avg=function(){return this.length?this.sum()/this.length:0},Array.prototype.desc=function(t=e=>e){return this.sort((e,n)=>t(n)-t(e))},Array.prototype.asc=function(t=e=>e){return this.sort((e,n)=>t(e)-t(n))},Array.prototype.remove=function(t){const e=this.indexOf(t);return e>-1&&this.splice(e,1),this},Array.prototype.clear=function(){return this.length=0,this};const C={create(t){return[...new Array(t).keys()]},union(...t){let e=[];return t.forEach(n=>{Array.isArray(n)&&(e=e.concat(n.filter(r=>!e.includes(r))))}),e},intersection(...t){let e=t[0]||[];return t.forEach(n=>{Array.isArray(n)&&(e=e.filter(r=>n.includes(r)))}),e},unionAll(...t){return[...t].flat().filter(e=>!!e)},difference(...t){return this.union(...t).filter(e=>!this.intersection(...t).includes(e))}},x=class x extends D{constructor(n={}){super();m(this,"state");m(this,"context");m(this,"options");m(this,"client");m(this,"topics");this.context=w.extend(x.defaultContext,n),this.options={connectTimeout:this.context.MQTT_TIMEOUTM,clientId:w.guid(),username:this.context.MQTT_USERNAME,password:this.context.MQTT_PASSWORD,clean:!0},this.client=y.connect(this.context.MQTT_SERVICE,this.options),this._onConnect(),this._onMessage(),this.state=0,this.topics=[]}_onConnect(){this.client.on("connect",()=>{this.state=1,console.log("链接mqtt成功==>"+this.context.MQTT_SERVICE),this.dispatchEvent({type:p.MQTT_CONNECT,message:this})}),this.client.on("error",n=>{console.log("链接mqtt报错",n),this.state=-1,this.dispatchEvent({type:p.MQTT_ERROR,message:this}),this.client.end(),this.client.reconnect()})}_onMessage(){this.client.on("message",(n,r)=>{let i=r,o="";r instanceof Uint8Array&&(i=r.toString());try{o=_.parse(i)}catch{throw new Error(b.JSON_PARSE_ERROR)}this.dispatchEvent({type:p.MQTT_MESSAGE,message:{topic:n,data:o}})})}sendMsg(n,r){if(!this.client.connected){console.error("客户端未连接");return}this.client.publish(n,r,{qos:1,retain:!0})}subscribe(n){return this.state===1?this.client.subscribe(n,{qos:1},(r,i)=>{r instanceof Error?console.error("订阅失败==>"+n,r):(this.topics=C.union(this.topics,n),console.log("订阅成功==>"+n))}):this.addEventListener(p.MQTT_CONNECT,r=>{this.client.subscribe(n,{qos:1},(i,o)=>{i instanceof Error?console.error("订阅失败==>"+n,i):(this.topics=C.union(this.topics,n),console.log("订阅成功==>"+n))})}),this}unsubscribe(n){return this.client.unsubscribe(n,{qos:1},(r,i)=>{r instanceof Error?console.error(`取消订阅失败==>${n}`,r):(this.topics=C.difference(this.topics,s),console.log(`取消订阅成功==>${n}`))}),this}unsubscribeAll(){this.unsubscribe(this.topics)}unconnect(){this.client.end(),this.client=null,this.dispatchEvent({type:p.MQTT_CLOSE,message:null}),console.log("断开mqtt成功==>"+this.context.MQTT_SERVICE)}};m(x,"defaultContext",{MQTT_USERNAME:"iRVMS-WEB",MQTT_PASSWORD:"novasky888",MQTT_SERVICE:`ws://${window.document.domain}:20007/mqtt`,MQTT_TIMEOUTM:2e4});let T=x;const k={emptyImageUrl:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",getURL(t){let e;if(/^data:/i.test(t.src)||typeof HTMLCanvasElement>"u")return t.src;let n;if(t instanceof HTMLCanvasElement)n=t;else{e===void 0&&(e=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")),e.width=t.width,e.height=t.height;const r=e.getContext("2d");r&&(t instanceof ImageData?r.putImageData(t,0,0):r.drawImage(t,0,0,t.width,t.height)),n=e}return n.width>2048||n.height>2048?(console.warn("ImageUtil.getDataURL: Image converted to jpg for performance reasons",t),n.toDataURL("image/jpeg",.6)):n.toDataURL("image/png")},getBase64(t){return new Promise((e,n)=>{let r=new Image;r.setAttribute("crossOrigin","Anonymous"),r.src=t,r.onload=()=>{let i=this.getURL(r);e(i)},r.onerror=n})},parseBase64(t){let n=new RegExp("data:(?<type>.*?);base64,(?<data>.*)").exec(t);return n&&n.groups?{type:n.groups.type,ext:n.groups.type.split("/").slice(-1)[0],data:n.groups.data}:null},async copyImage(t){try{const e=await this.getBase64(t),n=this.parseBase64(e.dataURL);if(!n)throw new Error("Failed to parse base64 data.");let r=n.type,i=atob(n.data),o=new ArrayBuffer(i.length),a=new Uint8Array(o);for(let l=0;l<i.length;l++)a[l]=i.charCodeAt(l);let c=new Blob([o],{type:r});await navigator.clipboard.write([new ClipboardItem({[r]:c})])}catch(e){console.error("Failed to copy image to clipboard:",e)}}},A={jsonp(t,e){const n="_jsonp_"+w.guid(),r=document.getElementsByTagName("head")[0];t.includes("?")?t+="&callback="+n:t+="?callback="+n;let i=document.createElement("script");i.type="text/javascript",i.src=t,window[n]=function(o){e(null,o),r.removeChild(i),i=null,delete window[n]},r.appendChild(i)},get(t,e,n){if(w.isFunction(e)){const i=n;n=e,e=i}const r=A._getClient(n);if(r.open("GET",t,!0),e){for(const i in e.headers)r.setRequestHeader(i,e.headers[i]);r.withCredentials=e.credentials==="include",e.responseType&&(r.responseType=e.responseType)}return r.send(null),r},post(t,e={},n){let r;if(typeof t!="string"?(n=e.cb,r=e.postData,e={...e},delete e.cb,delete e.postData,t=e.url):(typeof e=="function"&&(n=e,e={}),r=e.postData),!n)throw new Error("Callback function is required");const i=A._getClient(n);return i.open("POST",t,!0),e.headers=e.headers||{},e.headers["Content-Type"]||(e.headers["Content-Type"]="application/x-www-form-urlencoded"),Object.keys(e.headers).forEach(o=>{i.setRequestHeader(o,e.headers[o])}),typeof r!="string"&&(r=JSON.stringify(r)),i.send(r),i},_wrapCallback(t,e){return function(){t.readyState===4&&(t.status===200?t.responseType==="arraybuffer"?t.response.byteLength===0?e(new Error("http status 200 returned without content.")):e(null,{data:t.response,cacheControl:t.getResponseHeader("Cache-Control"),expires:t.getResponseHeader("Expires"),contentType:t.getResponseHeader("Content-Type")}):e(null,t.responseText):e(new Error(t.statusText+","+t.status)))}},_getClient(t){let e=null;try{e=new XMLHttpRequest}catch{throw new Error("XMLHttpRequest not supported.")}return e&&(e.onreadystatechange=A._wrapCallback(e,t)),e},getArrayBuffer(t,e,n){if(w.isFunction(e)){const r=n;n=e,e=r}return e||(e={}),e.responseType="arraybuffer",A.get(t,e,n)},getImage(t,e,n){return A.getArrayBuffer(e,n,(r,i)=>{if(r)t.onerror&&t.onerror(r);else if(i){const o=window.URL||window.webkitURL,a=t.onload;t.onload=()=>{a&&a(),o.revokeObjectURL(t.src)};const c=new Blob([new Uint8Array(i.data)],{type:i.contentType});t.cacheControl=i.cacheControl,t.expires=i.expires,t.src=i.data.byteLength?o.createObjectURL(c):k.emptyImageUrl}})},getJSON(t,e,n){if(w.isFunction(e)){const i=n;n=e,e=i}const r=function(i,o){const a=o?_.parse(o):null;n&&n(i,a)};return e&&e.jsonp?A.jsonp(t,r):A.get(t,e,r)}},G={getExplorer(){var t=window.navigator.userAgent;return t.indexOf("MSIE")>=0||/Trident\//.test(t)?"IE":t.indexOf("Firefox")>=0?"Firefox":t.indexOf("Chrome")>=0?"Chrome":t.indexOf("Opera")>=0?"Opera":t.indexOf("Safari")>=0&&t.indexOf("Chrome")===-1?"Safari":"Unknown"},detectOS(){let t="";const e=navigator.userAgent.indexOf("Windows",0)!=-1?1:0,n=navigator.userAgent.indexOf("mac",0)!=-1?1:0,r=navigator.userAgent.indexOf("Linux",0)!=-1?1:0,i=navigator.userAgent.indexOf("X11",0)!=-1?1:0;return e?t="MS Windows":n?t="Apple mac":r?t="Linux":i&&(t="Unix"),t},switchFullScreen(t){if(t){const e=document.documentElement;e.requestFullscreen?e.requestFullscreen():"msRequestFullscreen"in e?e.msRequestFullscreen():"mozRequestFullScreen"in e?e.mozRequestFullScreen():"webkitRequestFullscreen"in e&&e.webkitRequestFullscreen()}else document.exitFullscreen?document.exitFullscreen():"msExitFullscreen"in document?document.msExitFullscreen():"mozCancelFullScreen"in document?document.mozCancelFullScreen():"webkitExitFullscreen"in document&&document.webkitExitFullscreen()},refreshScale(){const t=document.documentElement.clientWidth||0,e=document.documentElement.clientHeight||0,n=document.getElementById("app");if(!n)return;const r=n.style,i=t/e,o=16/9;let a=t/1920;i>o&&(a=e/1080),r.transformOrigin="left top",r.transform=`scale(${a}) translateX(-49.99%)`,r.width=`${t/a}px`},getHtmlFontSize(){const t=document.documentElement.clientWidth||document.body.clientWidth,e=document.querySelector("html");e&&(e.style.fontSize=t/192+"px")}},J={set:function(t,e,n=30){var r=new Date;r.setTime(r.getTime()+n*24*60*60*1e3),document.cookie=t+"="+escape(e)+";expires="+r.toUTCString()},remove:function(t){var e=new Date;e.setTime(e.getTime()-1);var n=this.get(t);n!=null&&(document.cookie=t+"="+n+";expires="+e.toUTCString())},get:function(t){var e=document.cookie.match(new RegExp("(^| )"+t+"=([^;]*)(;|$)"));return e!=null?e[2]:""}},j={PI:3.141592653589793,XPI:3.141592653589793*3e3/180,delta(t,e){const r=.006693421622965943;let i=this.transformLat(e-105,t-35),o=this.transformLon(e-105,t-35);const a=t/180*this.PI;let c=Math.sin(a);c=1-r*c*c;const l=Math.sqrt(c);return i=i*180/(6378245*(1-r)/(c*l)*this.PI),o=o*180/(6378245/l*Math.cos(a)*this.PI),{lat:i,lng:o}},outOfChina(t,e){return t<72.004||t>137.8347||e<.8293||e>55.8271},gcjEncrypt(t,e){if(this.outOfChina(t,e))return{lat:t,lng:e};const n=this.delta(t,e);return{lat:t+n.lat,lng:e+n.lng}},gcjDecrypt(t,e){if(this.outOfChina(t,e))return{lat:t,lng:e};const n=this.delta(t,e);return{lat:t-n.lat,lng:e-n.lng}},gcjDecryptExact(t,e){let i=.01,o=.01,a=t-i,c=e-o,l=t+i,d=e+o,h=0,f=0,g=0;for(;;){h=(a+l)/2,f=(c+d)/2;const R=this.gcjEncrypt(h,f);if(i=R.lat-t,o=R.lng-e,Math.abs(i)<1e-9&&Math.abs(o)<1e-9||(i>0?l=h:a=h,o>0?d=f:c=f,++g>1e4))break}return{lat:h,lng:f}},bdEncrypt(t,e){const n=e,r=t,i=Math.sqrt(n*n+r*r)+2e-5*Math.sin(r*this.XPI),o=Math.atan2(r,n)+3e-6*Math.cos(n*this.XPI),a=i*Math.cos(o)+.0065;return{lat:i*Math.sin(o)+.006,lng:a}},bdDecrypt(t,e){const n=e-.0065,r=t-.006,i=Math.sqrt(n*n+r*r)-2e-5*Math.sin(r*this.XPI),o=Math.atan2(r,n)-3e-6*Math.cos(n*this.XPI),a=i*Math.cos(o);return{lat:i*Math.sin(o),lng:a}},mercatorEncrypt(t,e){const n=e*2003750834e-2/180;let r=Math.log(Math.tan((90+t)*this.PI/360))/(this.PI/180);return r=r*2003750834e-2/180,{lat:r,lng:n}},mercatorDecrypt(t,e){const n=e/2003750834e-2*180;let r=t/2003750834e-2*180;return r=180/this.PI*(2*Math.atan(Math.exp(r*this.PI/180))-this.PI/2),{lat:r,lng:n}},transformLat(t,e){let n=-100+2*t+3*e+.2*e*e+.1*t*e+.2*Math.sqrt(Math.abs(t));return n+=(20*Math.sin(6*t*this.PI)+20*Math.sin(2*t*this.PI))*2/3,n+=(20*Math.sin(e*this.PI)+40*Math.sin(e/3*this.PI))*2/3,n+=(160*Math.sin(e/12*this.PI)+320*Math.sin(e*this.PI/30))*2/3,n},transformLon(t,e){let n=300+t+2*e+.1*t*t+.1*t*e+.1*Math.sqrt(Math.abs(t));return n+=(20*Math.sin(6*t*this.PI)+20*Math.sin(2*t*this.PI))*2/3,n+=(20*Math.sin(t*this.PI)+40*Math.sin(t/3*this.PI))*2/3,n+=(150*Math.sin(t/12*this.PI)+300*Math.sin(t/30*this.PI))*2/3,n},random({x:t,y:e},{x:n,y:r}){return{lat:Math.random()*(r-e)+e,lng:Math.random()*(n-t)+t}},deCompose(t,e,n){if(!Array.isArray(t))return n?e.call(n,t):e(t);const r=[];let i,o;for(let a=0,c=t.length;a<c;a++){if(i=t[a],w.isNil(i)){r.push(null);continue}Array.isArray(i)?r.push(this.deCompose(i,e,n)):(o=n?e.call(n,i):e(i),r.push(o))}return r}},H={random(){let t=Math.floor(Math.random()*256).toString(16),e=Math.floor(Math.random()*256).toString(16),n=Math.floor(Math.random()*256).toString(16);return t=t.length===1?"0"+t:t,e=e.length===1?"0"+e:e,n=n.length===1?"0"+n:n,"#"+t+e+n},rgb2hex(t){var e="#"+(16777216+(t[0]<<16)+(t[1]<<8)+t[2]).toString(16).slice(1);return e},rgbToRgba(t){const e=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(t);return e?`rgba(${e[1]}, 1)`:t},hexToRgba(t){const e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,n=t.replace(e,(l,d,h,f)=>d+d+h+h+f+f),i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);if(!i)return t;const o=parseInt(i[1],16),a=parseInt(i[2],16),c=parseInt(i[3],16);return`rgba(${o},${a},${c},1)`},hslToRgba(t){if(!t)return null;const e=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(t)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(t);if(!e)return null;const n=parseInt(e[1],10)/360,r=parseInt(e[2],10)/100,i=parseInt(e[3],10)/100,o=e[4]?parseFloat(e[4]):1;function a(h,f,g){return g<0&&(g+=1),g>1&&(g-=1),g<1/6?h+(f-h)*6*g:g<1/2?f:g<2/3?h+(f-h)*(2/3-g)*6:h}let c,l,d;if(r===0)c=l=d=i;else{const h=i<.5?i*(1+r):i+r-i*r,f=2*i-h;c=a(f,h,n+1/3),l=a(f,h,n),d=a(f,h,n-1/3)}return`rgba(${Math.round(c*255)},${Math.round(l*255)},${Math.round(d*255)},${o})`},isHex(t){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t)},isRgb(t){return/^rgb/.test(t)},isHsl(t){return/^hsl/.test(t)},isColor(t){return this.isHex(t)||this.isRgb(t)||this.isHsl(t)},colorToRgb(t){if(this.isRgb(t))return this.rgbToRgba(t);if(this.isHex(t))return this.hexToRgba(t);if(this.isHsl(t))return this.hslToRgba(t)}};Date.prototype.format=function(t){const e={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours()%12,"H+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length)));for(const n in e)if(new RegExp("("+n+")").test(t)){const r=n.length===1?1:Number(n.slice(1));t=t.replace(RegExp.$1,("00"+e[n]).substr((""+e[n]).length+r-(e[n]+"").length))}return t},Date.prototype.addDate=function(t,e){const n=new Date(this);switch(t){case"y":n.setFullYear(this.getFullYear()+e);break;case"q":n.setMonth(this.getMonth()+e*3);break;case"M":n.setMonth(this.getMonth()+e);break;case"w":n.setDate(this.getDate()+e*7);break;case"d":n.setDate(this.getDate()+e);break;case"h":n.setHours(this.getHours()+e);break;case"m":n.setMinutes(this.getMinutes()+e);break;case"s":n.setSeconds(this.getSeconds()+e);break;default:n.setDate(this.getDate()+e);break}return n};const W={lastMonthDate:new Date(new Date().getFullYear(),new Date().getMonth()-1,1),thisMonthDate:new Date(new Date().getFullYear(),new Date().getMonth(),1),nextMonthDate:new Date(new Date().getFullYear(),new Date().getMonth()+1,1),lastWeekDate:new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate()+1-7-new Date().getDay()),thisWeekDate:new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate()+1-new Date().getDay()),nextWeekDate:new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate()+1+7-new Date().getDay()),lastDayDate:new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate()-1),thisDayDate:new Date(new Date().setHours(0,0,0,0)),nextDayDate:new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate()+1),parseDate(t){if(typeof t=="string"){var e=t.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) *$/);if(e&&e.length>3)return new Date(parseInt(e[1]),parseInt(e[2])-1,parseInt(e[3]));if(e=t.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2}) *$/),e&&e.length>6)return new Date(parseInt(e[1]),parseInt(e[2])-1,parseInt(e[3]),parseInt(e[4]),parseInt(e[5]),parseInt(e[6]));if(e=t.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})\.(\d{1,9}) *$/),e&&e.length>7)return new Date(parseInt(e[1]),parseInt(e[2])-1,parseInt(e[3]),parseInt(e[4]),parseInt(e[5]),parseInt(e[6]),parseInt(e[7]))}return null},formatDateInterval(t,e){const n=new Date(t),i=new Date(e).getTime()-n.getTime(),o=Math.floor(i/(24*3600*1e3)),a=i%(24*3600*1e3),c=Math.floor(a/(3600*1e3)),l=a%(3600*1e3),d=Math.floor(l/(60*1e3)),h=l%(60*1e3),f=Math.round(h/1e3);let g="";return o>0&&(g+=o+"天"),c>0&&(g+=c+"时"),d>0&&(g+=d+"分"),f>0&&(g+=f+"秒"),o===0&&c===0&&d===0&&f===0&&(g="少于1秒"),g},formatterCounter(t){const e=function(c){return(c>10?"":"0")+(c||0)},n=e(Math.floor(t/3600)),r=t%3600,i=e(Math.floor(r/60)),o=r%60,a=e(Math.round(o));return`${n}:${i}:${a}`},sleep(t){}};function Q(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function F(t){return Q(t).split(/\s+/)}const K={getStyle(t,e){var r;let n=t.style[e];if(!n||n==="auto"){const i=(r=document.defaultView)==null?void 0:r.getComputedStyle(t,null);n=i?i[e]:null,n==="auto"&&(n=null)}return n},create(t,e,n){const r=document.createElement(t);return r.className=e||"",n&&n.appendChild(r),r},remove(t){const e=t.parentNode;e&&e.removeChild(t)},empty(t){for(;t.firstChild;)t.removeChild(t.firstChild)},toFront(t){const e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)},toBack(t){const e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)},getClass(t){return((t==null?void 0:t.host)||t).className.toString()},hasClass(t,e){var r;if((r=t.classList)!=null&&r.contains(e))return!0;const n=this.getClass(t);return n.length>0&&new RegExp(`(^|\\s)${e}(\\s|$)`).test(n)},addClass(t,e){if(t.classList!==void 0){const n=F(e);for(let r=0,i=n.length;r<i;r++)t.classList.add(n[r])}else if(!this.hasClass(t,e)){const n=this.getClass(t);this.setClass(t,(n?n+" ":"")+e)}},removeClass(t,e){t.classList!==void 0?F(e).forEach(r=>t.classList.remove(r)):this.setClass(t,(" "+this.getClass(t)+" ").replace(" "+e+" "," ").trim())},setClass(t,e){"classList"in t&&(t.classList.value="",e.split(" ").forEach(n=>t.classList.add(n)))},parseFromString(t){return new DOMParser().parseFromString(t,"text/xml").children[0]}},S=["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon"],Y={getGeoJsonType(t){return t.geometry?t.geometry.type:null},isGeoJson(t){const e=this.getGeoJsonType(t);if(e){for(let n=0,r=S.length;n<r;n++)if(S[n]===e)return!0}return!1},isGeoJsonPolygon(t){const e=this.getGeoJsonType(t);return!!(e&&(e===S[4]||e===S[5]))},isGeoJsonLine(t){const e=this.getGeoJsonType(t);return!!(e&&(e===S[2]||e===S[3]))},isGeoJsonPoint(t){const e=this.getGeoJsonType(t);return!!(e&&(e===S[0]||e===S[1]))},isGeoJsonMulti(t){const e=this.getGeoJsonType(t);return!!(e&&e.indexOf("Multi")>-1)},getGeoJsonCoordinates(t){return t.geometry?t.geometry.coordinates:[]},getGeoJsonCenter(t,e){const n=this.getGeoJsonType(t);if(!n||!t.geometry)return null;const i=t.geometry.coordinates;if(!i)return null;let o=0,a=0,c=0;switch(n){case"Point":{o=i[0],a=i[1],c++;break}case"MultiPoint":case"LineString":{for(let h=0,f=i.length;h<f;h++)o+=i[h][0],a+=i[h][1],c++;break}case"MultiLineString":case"Polygon":{for(let h=0,f=i.length;h<f;h++)for(let g=0,R=i[h].length;g<R;g++)o+=i[h][g][0],a+=i[h][g][1],c++;break}case"MultiPolygon":{for(let h=0,f=i.length;h<f;h++)for(let g=0,R=i[h].length;g<R;g++)for(let O=0,et=i[h][g].length;O<et;O++)o+=i[h][g][O][0],a+=i[h][g][O][1],c++;break}}const l=o/c,d=a/c;return e?(e.x=l,e.y=d,e):{x:l,y:d}},spliteGeoJsonMulti(t){const e=this.getGeoJsonType(t);if(!e||!t.geometry)return null;const n=t.geometry,r=t.properties||{},i=n.coordinates;if(!i)return null;const o=[];let a;switch(e){case"MultiPoint":{a="Point";break}case"MultiLineString":{a="LineString";break}case"MultiPolygon":{a="Polygon";break}}if(a)for(let c=0,l=i.length;c<l;c++)o.push({type:"Feature",geometry:{type:a,coordinates:i[c]},properties:r});else o.push(t);return o},getGeoJsonByCoordinates(t){if(!Array.isArray(t))throw Error("coordinates 参数格式错误");let e;if(t.length===2&&typeof t[0]=="number"&&typeof t[1]=="number")e="Point";else if(Array.isArray(t[0])&&t[0].length===2)e="LineString";else if(Array.isArray(t[0])&&Array.isArray(t[0][0])){const n=t[0];if(n[0].join(",")===n[n.length-1].join(","))e="Polygon";else if(t.length>1)e="MultiPolygon";else throw Error("coordinates 参数格式错误")}else throw Error("coordinates 参数格式错误");return{type:"Feature",geometry:{type:e,coordinates:t}}}},z={toRadian:Math.PI/180,R:6371393,isLnglat(t,e){return!isNaN(t)&&!isNaN(e)&&+e>-90&&+e<90&&+t>-180&&+t<180},distance(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},distanceByPoints(t,e){const{lng:n,lat:r}=t,{lng:i,lat:o}=e,a=6371e3,c=Math.cos(r*Math.PI/180)*Math.cos(o*Math.PI/180)*Math.cos((n-i)*Math.PI/180),l=Math.sin(r*Math.PI/180)*Math.sin(o*Math.PI/180);let d=c+l;return d>1&&(d=1),d<-1&&(d=-1),Math.acos(d)*a},formatLnglat(t,e){let n="";function r(i){const o=Math.floor(i),a=Math.floor((i-o)*60),c=(i-o)*3600-a*60;return`${o}°${a}′${c.toFixed(2)}″`}return this.isLnglat(t,e)?n=r(t)+","+r(e):isNaN(t)?isNaN(e)||(n=r(e)):n=r(t),n},transformLnglat(t,e){function n(r){let o=/[sw]/i.test(r)?-1:1;const a=r.match(/[\d.]+/g)||[];let c=0;for(let l=0;l<a.length;l++)c+=parseFloat(a[l])/o,o*=60;return c}if(t&&e)return{lng:n(t),lat:n(e)}},rayCasting(t,e){for(var n=t.x,r=t.y,i=!1,o=0,a=e.length,c=a-1;o<a;c=o,o++){var l=e[o].x,d=e[o].y,h=e[c].x,f=e[c].y;if(l===n&&d===r||h===n&&f===r)return"on";if(d<r&&f>=r||d>=r&&f<r){var g=l+(r-d)*(h-l)/(f-d);if(g===n)return"on";g>n&&(i=!i)}}return i?"in":"out"},rotatePoint(t,e,n){const r=(t.x-e.x)*Math.cos(Math.PI/180*-n)-(t.y-e.y)*Math.sin(Math.PI/180*-n)+e.x,i=(t.x-e.x)*Math.sin(Math.PI/180*-n)+(t.y-e.y)*Math.cos(Math.PI/180*-n)+e.y;return{x:r,y:i}},calcBearAndDis(t,e){const{x:n,y:r}=t,{x:i,y:o}=e,a=i-n,c=o-r,l=Math.sqrt(a*a+c*c);return{angle:(Math.atan2(c,a)*(180/Math.PI)+360+90)%360,distance:l}},calcBearAndDisByPoints(t,e){var n=t.lat*1,r=t.lng*1,i=e.lat*1,o=e.lng*1,a=Math.sin((o-r)*this.toRadian)*Math.cos(i*this.toRadian),c=Math.cos(n*this.toRadian)*Math.sin(i*this.toRadian)-Math.sin(n*this.toRadian)*Math.cos(i*this.toRadian)*Math.cos((o-r)*this.toRadian),l=Math.atan2(a,c)*(180/Math.PI),d=(i-n)*this.toRadian,h=(o-r)*this.toRadian,f=Math.sin(d/2)*Math.sin(d/2)+Math.cos(n*this.toRadian)*Math.cos(i*this.toRadian)*Math.sin(h/2)*Math.sin(h/2),g=2*Math.atan2(Math.sqrt(f),Math.sqrt(1-f)),R=this.R*g;return{angle:l,distance:R}},distanceToSegment(t,e,n){const r=t.x,i=t.y,o=e.x,a=e.y,c=n.x,l=n.y,d=(c-o)*(r-o)+(l-a)*(i-a);if(d<=0)return Math.sqrt((r-o)*(r-o)+(i-a)*(i-a));const h=(c-o)*(c-o)+(l-a)*(l-a);if(d>=h)return Math.sqrt((r-c)*(r-c)+(i-l)*(i-l));const f=d/h,g=o+(c-o)*f,R=a+(l-a)*f;return Math.sqrt((r-g)*(r-g)+(i-R)*(i-R))},calcPointByBearAndDis(t,e,n){const r=E.toRadians(t.lat*1),i=E.toRadians(t.lng*1),o=n/this.R;e=E.toRadians(e);const a=Math.asin(Math.sin(r)*Math.cos(o)+Math.cos(r)*Math.sin(o)*Math.cos(e)),c=i+Math.atan2(Math.sin(e)*Math.sin(o)*Math.cos(r),Math.cos(o)-Math.sin(r)*Math.sin(a));return{lat:E.toDegrees(a),lng:E.toDegrees(c)}},mercatorTolonlat(t,e){const n=t/2003750834e-2*180;var r=e/2003750834e-2*180;const i=180/Math.PI*(2*Math.atan(Math.exp(r*Math.PI/180))-Math.PI/2);return{lng:n,lat:i}},lonlatToMercator(t,e){var n=6378137;const r=t*Math.PI/180*n;var i=e*Math.PI/180;const o=n/2*Math.log((1+Math.sin(i))/(1-Math.sin(i)));return{x:r,y:o}},interpolate({x:t,y:e,z:n=0},{x:r,y:i,z:o=0},a){const c=r-t,l=i-e,d=o-n;return{x:t+c*a,y:e+l*a,z:n+d*a}}},X={convertBase64ToBlob(t){const e=t.split(",")[0].split(":")[1].split(";")[0],n=atob(t.split(",")[1]),r=new Array(n.length);for(let a=0;a<n.length;a++)r[a]=n.charCodeAt(a);const i=new Uint8Array(r);return new Blob([i],{type:e})},convertBase64ToFile(t,e){const n=t.split(","),r=n[0].match(/:(.*?);/),i=r?r[1]:"image/png",o=atob(n[1]),a=new Uint8Array(o.length);for(let l=0;l<o.length;l++)a[l]=o.charCodeAt(l);return new File([a],e,{type:i})},downloadFromFile(t,e){if(typeof t=="object")if(t instanceof Blob)t=URL.createObjectURL(t);else{const r=JSON.stringify(t),i=new Blob([r],{type:"text/json"});t=window.URL.createObjectURL(i)}else if(typeof t=="string"&&t.indexOf("http")===-1){const r=new Blob([t],{type:"text/json"});t=window.URL.createObjectURL(r)}var n=document.createElement("a");n.href=t,n.download=e||"",n.click(),window.URL.revokeObjectURL(n.href)}},V={debounce(t,e,n=!0){let r=null,i,o,a;const c=()=>{const l=Date.now()-o;l<e&&l>0?r=setTimeout(c,e-l):(r=null,n||(a=t.apply(this,i)))};return(...l)=>{o=Date.now();const d=n&&!r;return r||(r=setTimeout(c,e)),d&&(a=t.apply(this,l),r||(l=null)),a}},throttle(t,e,n=1){let r=0,i=null;return(...o)=>{if(n===1){const a=Date.now();a-r>=e&&(t.apply(this,o),r=a)}else n===2&&(i||(i=setTimeout(()=>{i=null,t.apply(this,o)},e)))}},memoize(t){const e=new Map;return(...n)=>{const r=JSON.stringify(n);if(e.has(r))return e.get(r);{const i=t.apply(this,n);return e.set(r,i),i}}},recurve(t,e=500,n=5e3){let r=0;setTimeout(()=>{r++,r<Math.floor(n/e)&&(t.call(this),setTimeout(this.recurve.bind(this,t,e,n),e))},e)}},Z={checkStr(t,e){switch(e){case"phone":return/^1[3|4|5|6|7|8|9][0-9]{9}$/.test(t);case"tel":return/^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(t);case"card":return/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(t);case"pwd":return/^[a-zA-Z]\w{5,17}$/.test(t);case"postal":return/[1-9]\d{5}(?!\d)/.test(t);case"QQ":return/^[1-9][0-9]{4,9}$/.test(t);case"email":return/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(t);case"money":return/^\d*(?:\.\d{0,2})?$/.test(t);case"URL":return/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(t);case"IP":return/((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(t);case"date":return/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(t)||/^(\d{4})\-(\d{2})\-(\d{2})$/.test(t);case"number":return/^[0-9]$/.test(t);case"english":return/^[a-zA-Z]+$/.test(t);case"chinese":return/^[\u4E00-\u9FA5]+$/.test(t);case"lower":return/^[a-z]+$/.test(t);case"upper":return/^[A-Z]+$/.test(t);case"HTML":return/<("[^"]*"|'[^']*'|[^'">])*>/.test(t);default:return!0}},changeCase(t,e){switch(e=e||4,e){case 1:return t.replace(/\b\w+\b/g,function(n){return n.substring(0,1).toUpperCase()+n.substring(1).toLowerCase()});case 2:return t.replace(/\b\w+\b/g,function(n){return n.substring(0,1).toLowerCase()+n.substring(1).toUpperCase()});case 3:return t.split("").map(function(n){return/[a-z]/.test(n)?n.toUpperCase():n.toLowerCase()}).join("");case 4:return t.toUpperCase();case 5:return t.toLowerCase();default:return t}},tag(t,...e){return e=e.map(n=>{switch(w.getDataType(n)){case"Object":return n||"{}";case"Array":return n||"[]";default:return n||""}}),t.reduce((n,r,i)=>`${n}${e[i-1]}${r}`)},getByteLength(t){return t.replace(/[\u0391-\uFFE5]/g,"aa").length},subStringByte(t,e,n){var r=/[^\x00-\xff]/g;if(t.replace(r,"mm").length<=n)return t;for(var i=Math.floor(n/2),o=i;o<t.length;o++){let a=t.substring(e,o);if(a.replace(r,"mm").length>=n)return a}return t},asString(t){if(w.isEmpty(t))return"";switch(w.getDataType(t)){case"Object":case"Array":return JSON.stringify(t);default:return t}},replaceAll(t,e,n){if(!t)return t;for(;t.indexOf(e)>-1;)t=t.replace(e,n);return t}},M=class M{static set(e,n=null,r=null){var i=this._getPrefixedKey(e,r);try{localStorage.setItem(i,JSON.stringify({data:n}))}catch{console&&console.warn("StoreUtil didn't successfully save the '{"+e+": "+n+"}' pair, because the localStorage is full.")}}static get(e,n,r){var i=this._getPrefixedKey(e,r),o;try{o=JSON.parse(localStorage.getItem(i)||"")}catch{localStorage[i]?o={data:localStorage.getItem(i)}:o=null}if(o){if(typeof o=="object"&&typeof o.data<"u")return o.data}else return n}static keys(){const e=[];var n=Object.keys(localStorage);return M.prefix.length===0?n:(n.forEach(function(r){r.indexOf(M.prefix)!==-1&&e.push(r.replace(M.prefix,""))}),e)}static getAll(e){var n=M.keys();if(e){const r=[];return n.forEach(i=>{if(e.includes(i)){const o={};o[i]=M.get(i,null,null),r.push(o)}}),r}return n.map(r=>M.get(r,null,null))}static remove(e,n){var r=this._getPrefixedKey(e,n);localStorage.removeItem(r)}static clear(e){M.prefix.length?this.keys().forEach(n=>{localStorage.removeItem(this._getPrefixedKey(n,e))}):localStorage.clear()}};m(M,"prefix",""),m(M,"_getPrefixedKey",function(e,n){return n=n||{},n.noPrefix?e:M.prefix+e});let P=M;const tt={json2Query(t){var e=[];for(var n in t)if(t.hasOwnProperty(n)){var r=n,i=t[n];e.push(encodeURIComponent(r)+"="+encodeURIComponent(i))}var o=e.join("&");return o},query2Json(t=window.location.href,e=!0){const n=/([^&=]+)=([\w\W]*?)(&|$|#)/g,{search:r,hash:i}=new URL(t),o=[r,i];let a={};for(let c=0;c<o.length;c++){const l=o[c];if(l){const h=l.replace(/#|\//g,"").split("?");if(h.length>1)for(let f=1;f<h.length;f++){let g;for(;g=n.exec(h[f]);)a[g[1]]=e?decodeURIComponent(g[2]):g[2]}}}return a}};u.AjaxUtil=A,u.ArrayUtil=C,u.AudioPlayer=B,u.BrowserUtil=G,u.CanvasDrawer=$,u.ColorUtil=H,u.Cookie=J,u.CoordsUtil=j,u.DateUtil=W,u.DomUtil=K,u.ErrorType=b,u.EventDispatcher=D,u.EventType=p,u.FileUtil=X,u.GeoJsonUtil=Y,u.GeoUtil=z,u.GraphicType=L,u.HashMap=I,u.ImageUtil=k,u.LayerType=v,u.MathUtil=E,u.MeasureMode=U,u.MqttClient=T,u.ObjectState=N,u.ObjectUtil=_,u.OptimizeUtil=V,u.StoreUtil=P,u.StringUtil=Z,u.UrlUtil=tt,u.Util=w,u.WebSocketClient=q,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})});
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("mqtt-browser")):"function"==typeof define&&define.amd?define(["exports","mqtt-browser"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["gis-common"]={},t.mqttBrowser)}(this,(function(t,e){"use strict";var n=Object.defineProperty,r=(t,e,r)=>((t,e,r)=>e in t?n(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r)(t,"symbol"!=typeof e?e+"":e,r),s=(t=>(t.MAP_RENDER="mapRender",t.MAP_READY="mapReady",t.MOUSE_CLICK="click",t.MOUSE_DOUBLE_CLICK="dblclick",t.MOUSE_MOVE="mousemove",t.MOUSE_IN="mousein",t.MOUSE_OUT="mouseout",t.MOUSE_RIGHT_CLICK="mouseRightClick",t.KEY_DOWN="keyDown",t.KEY_UP="keyUp",t.DRAW_ACTIVE="drawActive",t.DRAW_MOVE="drawMove",t.DRAW_COMPLETE="drawComplete",t.MQTT_CONNECT="mqttConnect",t.MQTT_ERROR="mqttError",t.MQTT_MESSAGE="mqttMessage",t.MQTT_CLOSE="mqttClose",t.WEB_SOCKET_CONNECT="webSocketConnect",t.WEB_SOCKET_ERROR="webSocketError",t.WEB_SOCKET_MESSAGE="webSocketMessage",t.WEB_SOCKET_CLOSE="webSocketClose",t))(s||{}),o=(t=>(t.LOGIN_EXPIRED="登录信息过期,请重新登录",t.CROSS_ERROR="跨域访问",t.UNEXIST_RESOURCE="资源不存在",t.TIMEOUT="请求超时",t.INTERNAL_ERROR="内部错误",t.NETWORK_ERROR="请求失败,请检查网络是否已连接",t.PROCESS_FAIL="处理失败",t.AUTH_VERIFY_ERROR="权限验证失败",t.NO_DATA_FOUND="未找到数据",t.DUPLICATE_INSTANCE="实例为单例模式,不允许重复构建",t.COORDINATE_ERROR="坐标验证失败",t.JSON_PARSE_ERROR="JSON解析失败,格式有误",t.JSON_VALUE_ERROR="JSON无此键",t.PARAMETER_ERROR="验证数据类型失败",t.PARAMETER_ERROR_ARRAY="格式类型验证失败:必须是数组",t.PARAMETER_ERROR_STRING="格式类型验证失败:必须是字符",t.PARAMETER_ERROR_FUNCTION="格式类型验证失败:必须是函数",t.PARAMETER_ERROR_OBJECT="格式类型验证失败:必须是对象",t.PARAMETER_ERROR_LACK="参数缺失",t.STRING_CHECK_LOSS="字符缺少关键字",t))(o||{}),a=(t=>(t.SUPER_MAP_IMAGES="SuperMapImages",t.SUPER_MAP_DATA="SuperMapData",t.ARC_GIS_MAP_IMAGES="ArcGisMapImages",t.ARC_GIS_MAP_DATA="ArcGisMapData",t.OSGB_LAYER="OSGBLayer",t.S3M_GROUP="S3MGroup",t.TERRAIN_LAYER="TerrainFileLayer",t))(a||{}),i=(t=>(t.POINT="point",t.POLYLINE="polyline",t.POLYGON="polygon",t.BILLBOARD="billboard",t.CYLINDER="cylinder",t.ELLIPSOID="ellipsoid",t.LABEL="label",t.MODEL="model",t.WALL="wall",t))(i||{}),l=(t=>(t.DASH="10,5",t.DOT="3",t.DASHDOT="10,3,3,3",t.DASHDOTDOT="10,3,3,3,3,3",t))(l||{}),c=(t=>(t.DISTANCE="distance",t.AREA="area",t.HEIGHT="height",t))(c||{}),h=(t=>(t.ADD="add",t.REMOVE="remove",t.INIT="init",t))(h||{});const u={DEG2RAD:Math.PI/180,RAD2DEG:180/Math.PI,randInt:(t,e)=>t+Math.floor(Math.random()*(e-t+1)),randFloat:(t,e)=>t+Math.random()*(e-t),deg2Rad(t){return t*this.DEG2RAD},rad2Deg(t){return t*this.RAD2DEG},round:(t,e=2)=>Math.round(t*Math.pow(10,e))/Math.pow(10,e),clamp:(t,e,n)=>Math.min(Math.max(t,e),n)};class d{constructor(){r(this,"_listeners"),r(this,"_mutex",{}),r(this,"_context")}addEventListener(t,e,n,r){void 0===this._listeners&&(this._listeners={}),this._context=n;const s=this._mutex,o=this._listeners;return void 0===o[t]&&(o[t]=[]),-1===o[t].indexOf(e)&&(r&&(s[t]=e),o[t].push(e)),this}hasEventListener(t,e){if(null===this._listeners||void 0===this._listeners)return!1;const n=this._listeners;return void 0!==n[t]&&-1!==n[t].indexOf(e)}removeEventListener(t,e){if(void 0===this._listeners)return;const n=this._listeners[t];if(this._mutex[t]===e&&(this._mutex[t]=null),void 0!==n){const t=n.map((t=>t.toString())).indexOf(e.toString());-1!==t&&n.splice(t,1)}}dispatchEvent(t){if(void 0===this._listeners)return;const e=this._listeners[t.type];if(void 0!==e){t.target=this;const n=e.slice(0);if(void 0!==this._mutex[t.type]){const e=n.find((e=>e===this._mutex[t.type]));if(e)return void e.call(this._context||this,t)}for(let e=0,r=n.length;e<r;e++){const r=n[e];"function"==typeof r&&r.call(this._context||this,t)}}}removeAllListener(){this._mutex={};for(const t in this._listeners)this._listeners[t]=[]}}class g extends Map{isEmpty(){return 0===this.size}_values(){return Array.from(this.values())}_keys(){return Array.from(this.keys())}_entries(){return Array.from(this.entries())}fromEntries(){}}g.prototype.fromEntries=function(t=[]){const e=new g;return t.forEach((t=>{Array.isArray(t)&&2===t.length&&e.set(t[0],t[1])})),e};const p={getDataType:t=>Object.prototype.toString.call(t).slice(8,-1),asArray(t){return this.isEmpty(t)?[]:Array.isArray(t)?t:[t]},asNumber:t=>Number.isNaN(Number(t))?0:Number(t),asString(t){if(this.isEmpty(t))return"";switch(this.getDataType(t)){case"Object":case"Array":return JSON.stringify(t);default:return t}},isEmpty(t){if(null==t)return!0;switch(this.getDataType(t)){case"String":return""===t.trim();case"Array":return!t.length;case"Object":return!Object.keys(t).length;case"Boolean":return!t;default:return!1}},json2form(t){const e=new FormData;return Object.keys(t).forEach((n=>{e.append(n,t[n]instanceof Object?JSON.stringify(t[n]):t[n])})),e},guid(){const t=function(){return(65536*(1+Math.random())|0).toString(16).substring(1)};return t()+t()+t()+t()+t()+t()+t()+t()},decodeDict(...t){let e="";if(t.length>1){const n=t.slice(1,t.length%2==0?t.length-1:t.length);for(let r=0;r<n.length;r+=2){const s=n[r];t[0]===s&&(e=n[r+1])}e||t.length%2!=0||(e=t[t.length-1])}else e=t[0];return e},extend(t,...e){let n,r,s,o;for(r=0,s=e.length;r<s;r++)for(n in o=e[r],o)t[n]=o[n];return t},convertToTree2(t,e="id",n="parentId",r="children"){const s=[];function o(a){const i=t.filter((t=>t[n]===a[e])).map((t=>(s.some((n=>n[e]===t[e]))||o(t),t)));i.length>0&&(a[r]=i)}return t.forEach((r=>{t.some((t=>t[n]===r[e]))||(o(r),s.push(r))})),s},asyncLoadScript:t=>new Promise(((e,n)=>{try{const r=document.createElement("script");r.type="text/javascript",r.src=t,"readyState"in r?r.onreadystatechange=function(){"complete"!==r.readyState&&"loaded"!==r.readyState||e(r)}:(r.onload=function(){e(r)},r.onerror=function(){n(new Error("Script failed to load for URL: "+t))}),document.body.appendChild(r)}catch(r){n(r)}})),loadStyle(t){t.forEach((t=>{const e=document.createElement("link");e.href=t,e.rel="stylesheet",e.type="text/css",e.onerror=function(){console.error(`Style loading failed for URL: ${t}`)},document.head.appendChild(e)}))},template:(t,e)=>t.replace(/\{ *([\w_-]+) *\}/g,((t,n)=>{const r=e[n];if(void 0===r)throw new Error(`${o.JSON_VALUE_ERROR}: ${t}`);return"function"==typeof r?r(e):r})),deleteEmptyProperty(t){return Object.fromEntries(Object.keys(t).filter((e=>!this.isEmpty(t[e]))).map((e=>[e,t[e]])))},deepAssign(t,...e){"object"==typeof t&&null!==t||(t={});for(const n of e)if("object"==typeof n&&null!==n)for(const e in n)Object.prototype.hasOwnProperty.call(n,e)&&("object"==typeof n[e]&&null!==n[e]?(t[e]||(t[e]=Array.isArray(n[e])?[]:{}),this.deepAssign(t[e],n[e])):t[e]=n[e]);return t},handleCopyValue(t){if(navigator.clipboard&&window.isSecureContext)return navigator.clipboard.writeText(t);{const e=document.createElement("textarea");return e.style.position="fixed",e.style.top=e.style.left="-100vh",e.style.opacity="0",e.value=t,document.body.appendChild(e),e.focus(),e.select(),new Promise(((t,n)=>{try{document.execCommand("copy"),t()}catch(r){n(new Error("copy failed"))}finally{e.remove()}}))}},isArray:t=>Array.isArray(t),isObject:t=>Object.prototype.toString.call(t).indexOf("Object")>-1,isNil:t=>void 0===t||"undefined"===t||null===t||"null"===t,isNumber:t=>"number"==typeof t&&!isNaN(t)||"string"==typeof t&&Number.isFinite(+t),isFunction(t){return!this.isNil(t)&&("function"==typeof t||null!==t.constructor&&t.constructor===Function)},isElement:t=>"object"==typeof t&&1===t.nodeType,checheVersion:(t,e)=>t.replace(/[^0-9]/gi,"")<e.replace(/[^0-9]/gi,"")},f={deepClone:t=>structuredClone(t),isEqual:(t,e)=>JSON.stringify(t)===JSON.stringify(e),parse:t=>t&&"string"==typeof t?JSON.parse(t):t},y=Object.create(Array);y.groupBy=function(t){var e={};return this.forEach((function(n){var r=JSON.stringify(t(n));e[r]=e[r]||[],e[r].push(n)})),Object.keys(e).map((t=>e[t]))},y.distinct=function(t=t=>t){const e=[],n={};return this.forEach((r=>{const s=t(r),o=String(s);n[o]||(n[o]=!0,e.push(r))})),e},y.prototype.max=function(){return Math.max.apply({},this)},y.prototype.min=function(){return Math.min.apply({},this)},y.sum=function(){return this.length>0?this.reduce(((t=0,e=0)=>t+e)):0},y.avg=function(){return this.length?this.sum()/this.length:0},y.desc=function(t=t=>t){return this.sort(((e,n)=>t(n)-t(e)))},y.asc=function(t=t=>t){return this.sort(((e,n)=>t(e)-t(n)))},y.remove=function(t){const e=this.indexOf(t);return e>-1&&this.splice(e,1),this};const m={create:t=>[...new Array(t).keys()],union(...t){let e=[];return t.forEach((t=>{Array.isArray(t)&&(e=e.concat(t.filter((t=>!e.includes(t)))))})),e},intersection(...t){let e=t[0]||[];return t.forEach((t=>{Array.isArray(t)&&(e=e.filter((e=>t.includes(e))))})),e},unionAll:(...t)=>[...t].flat().filter((t=>!!t)),difference(...t){return 0===t.length?[]:this.union(...t).filter((e=>!this.intersection(...t).includes(e)))}},E=class t extends d{constructor(n=`ws://${window.document.domain}:20007/mqtt`,s={}){super(),r(this,"state"),r(this,"url"),r(this,"context"),r(this,"options"),r(this,"client"),r(this,"topics"),this.context=p.extend(t.defaultContext,s),this.options={connectTimeout:this.context.MQTT_TIMEOUTM,clientId:p.guid(),username:this.context.MQTT_USERNAME,password:this.context.MQTT_PASSWORD,clean:!0},this.url=n,this.client=e.connect(this.url,this.options),this._onConnect(),this._onMessage(),this.state=0,this.topics=[]}_onConnect(){this.client.on("connect",(()=>{this.state=1,console.log("链接mqtt成功==>"+this.url),this.dispatchEvent({type:s.MQTT_CONNECT,message:this})})),this.client.on("error",(t=>{console.log("链接mqtt报错",t),this.state=-1,this.dispatchEvent({type:s.MQTT_ERROR,message:this}),this.client.end(),this.client.reconnect()}))}_onMessage(){this.client.on("message",((t,e)=>{let n=e,r="";e instanceof Uint8Array&&(n=e.toString());try{r=f.parse(n)}catch(a){throw new Error(o.JSON_PARSE_ERROR)}this.dispatchEvent({type:s.MQTT_MESSAGE,message:{topic:t,data:r}})}))}sendMsg(t,e){this.client.connected?this.client.publish(t,e,{qos:1,retain:!0}):console.error("客户端未连接")}subscribe(t){return 1===this.state?this.client.subscribe(t,{qos:1},((e,n)=>{e instanceof Error?console.error("订阅失败==>"+t,e):(this.topics=m.union(this.topics,t),console.log("订阅成功==>"+t))})):this.addEventListener(s.MQTT_CONNECT,(e=>{this.client.subscribe(t,{qos:1},((e,n)=>{e instanceof Error?console.error("订阅失败==>"+t,e):(this.topics=m.union(this.topics,t),console.log("订阅成功==>"+t))}))})),this}unsubscribe(t){return this.client.unsubscribe(t,{qos:1},((e,n)=>{e instanceof Error?console.error(`取消订阅失败==>${t}`,e):(this.topics=m.difference(this.topics,t),console.log(`取消订阅成功==>${t}`))})),this}unsubscribeAll(){this.unsubscribe(this.topics)}unconnect(){this.client.end(),this.client=null,this.dispatchEvent({type:s.MQTT_CLOSE,message:null}),console.log("断开mqtt成功==>"+this.url)}};r(E,"defaultContext",{MQTT_USERNAME:"iRVMS-WEB",MQTT_PASSWORD:"novasky888",MQTT_TIMEOUTM:2e4});let M=E;const w=class t{static set(t,e=null,n={}){var r=this._getPrefixedKey(t,n);try{const{expires:t}=n,s={data:e};t&&(s.expires=t),localStorage.setItem(r,JSON.stringify(s))}catch(s){console&&console.warn(`Storage didn't successfully save the '{"${t}": "${e}"}' pair, because the localStorage is full.`)}}static get(t,e,n){var r,s=this._getPrefixedKey(t,n);try{r=JSON.parse(localStorage.getItem(s)||"")}catch(o){r=localStorage[s]?{data:localStorage.getItem(s)}:null}if(!r)return e;if("object"==typeof r&&void 0!==r.data){const t=r.expires;return t&&Date.now()>t?e:r.data}}static keys(){const e=[];var n=Object.keys(localStorage);return 0===t.prefix.length?n:(n.forEach((function(n){-1!==n.indexOf(t.prefix)&&e.push(n.replace(t.prefix,""))})),e)}static getAll(e){var n=t.keys();if(e){const r=[];return n.forEach((n=>{if(e.includes(n)){const e={};e[n]=t.get(n,null,null),r.push(e)}})),r}return n.map((e=>t.get(e,null,null)))}static remove(t,e){var n=this._getPrefixedKey(t,e);localStorage.removeItem(n)}static clear(e){t.prefix.length?this.keys().forEach((t=>{localStorage.removeItem(this._getPrefixedKey(t,e))})):localStorage.clear()}};r(w,"prefix",""),r(w,"_getPrefixedKey",(function(t,e){return(e=e||{}).noPrefix?t:w.prefix+t}));let R=w;const b={emptyImageUrl:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",getURL(t){let e,n;if(/^data:/i.test(t.src))return t.src;if("undefined"==typeof HTMLCanvasElement)return t.src;if(t instanceof HTMLCanvasElement)n=t;else{void 0===e&&(e=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")),e.width=t.width,e.height=t.height;const r=e.getContext("2d");r&&(t instanceof ImageData?r.putImageData(t,0,0):r.drawImage(t,0,0,t.width,t.height)),n=e}return n.width>2048||n.height>2048?(console.warn("ImageUtil.getDataURL: Image converted to jpg for performance reasons",t),n.toDataURL("image/jpeg",.6)):n.toDataURL("image/png")},getBase64(t){return new Promise(((e,n)=>{let r=new Image;r.setAttribute("crossOrigin","Anonymous"),r.src=t,r.onload=()=>{let t=this.getURL(r);e(t)},r.onerror=n}))},parseBase64(t){let e=new RegExp("data:(?<type>.*?);base64,(?<data>.*)").exec(t);return e&&e.groups?{type:e.groups.type,ext:e.groups.type.split("/").slice(-1)[0],data:e.groups.data}:null},async copyImage(t){try{const e=await this.getBase64(t),n=this.parseBase64(e.dataURL);if(!n)throw new Error("Failed to parse base64 data.");let r=n.type,s=atob(n.data),o=new ArrayBuffer(s.length),a=new Uint8Array(o);for(let t=0;t<s.length;t++)a[t]=s.charCodeAt(t);let i=new Blob([o],{type:r});await navigator.clipboard.write([new ClipboardItem({[r]:i})])}catch(e){console.error("Failed to copy image to clipboard:",e)}}},A={jsonp(t,e){const n="_jsonp_"+p.guid(),r=document.getElementsByTagName("head")[0];t.includes("?")?t+="&callback="+n:t+="?callback="+n;let s=document.createElement("script");s.type="text/javascript",s.src=t,window[n]=function(t){e(null,t),r.removeChild(s),s=null,delete window[n]},r.appendChild(s)},get(t,e,n){if(p.isFunction(e)){const t=n;n=e,e=t}const r=this._getClient(n);if(r.open("GET",t,!0),e){for(const t in e.headers)r.setRequestHeader(t,e.headers[t]);r.withCredentials="include"===e.credentials,e.responseType&&(r.responseType=e.responseType)}return r.send(null),r},post(t,e={},n){let r;if("string"!=typeof t?(n=e.cb,r=e.postData,delete(e={...e}).cb,delete e.postData,t=e.url):("function"==typeof e&&(n=e,e={}),r=e.postData),!n)throw new Error("Callback function is required");const s=this._getClient(n);return s.open("POST",t,!0),e.headers=e.headers||{},e.headers["Content-Type"]||(e.headers["Content-Type"]="application/x-www-form-urlencoded"),Object.keys(e.headers).forEach((t=>{s.setRequestHeader(t,e.headers[t])})),"string"!=typeof r&&(r=JSON.stringify(r)),s.send(r),s},_wrapCallback:(t,e)=>function(){if(4===t.readyState)if(200===t.status)if("arraybuffer"===t.responseType){0===t.response.byteLength?e(new Error("http status 200 returned without content.")):e(null,{data:t.response,cacheControl:t.getResponseHeader("Cache-Control"),expires:t.getResponseHeader("Expires"),contentType:t.getResponseHeader("Content-Type")})}else e(null,t.responseText);else e(new Error(t.statusText+","+t.status))},_getClient(t){let e=null;try{e=new XMLHttpRequest}catch(n){throw new Error("XMLHttpRequest not supported.")}return e&&(e.onreadystatechange=this._wrapCallback(e,t)),e},getArrayBuffer(t,e,n){if(p.isFunction(e)){const t=n;n=e,e=t}return e||(e={}),e.responseType="arraybuffer",this.get(t,e,n)},getImage(t,e,n){return this.getArrayBuffer(e,n,((e,n)=>{if(e)t.onerror&&t.onerror(e);else if(n){const e=window.URL||window.webkitURL,r=t.onload;t.onload=()=>{r&&r(),e.revokeObjectURL(t.src)};const s=new Blob([new Uint8Array(n.data)],{type:n.contentType});t.cacheControl=n.cacheControl,t.expires=n.expires,t.src=n.data.byteLength?e.createObjectURL(s):b.emptyImageUrl}}))},getJSON(t,e,n){if(p.isFunction(e)){const t=n;n=e,e=t}const r=function(t,e){const r=e?f.parse(e):null;n&&n(t,r)};return e&&e.jsonp?this.jsonp(t,r):this.get(t,e,r)}},x={toRadian:Math.PI/180,R:6371393,isLnglat:(t,e)=>!isNaN(t)&&!isNaN(e)&&!!(+e>-90&&+e<90&&+t>-180&&+t<180),distance:(t,e)=>Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),distanceByPoints(t,e){const{lng:n,lat:r}=t,{lng:s,lat:o}=e;let a=Math.cos(r*Math.PI/180)*Math.cos(o*Math.PI/180)*Math.cos((n-s)*Math.PI/180)+Math.sin(r*Math.PI/180)*Math.sin(o*Math.PI/180);a>1&&(a=1),a<-1&&(a=-1);return 6371e3*Math.acos(a)},formatLnglat(t,e){let n="";function r(t){const e=Math.floor(t),n=Math.floor(60*(t-e));return`${e}°${n}′${(3600*(t-e)-60*n).toFixed(2)}″`}return this.isLnglat(t,e)?n=r(t)+","+r(e):isNaN(t)?isNaN(e)||(n=r(e)):n=r(t),n},transformLnglat(t,e){function n(t){let e=/[sw]/i.test(t)?-1:1;const n=t.match(/[\d.]+/g)||[];let r=0;for(let s=0;s<n.length;s++)r+=parseFloat(n[s])/e,e*=60;return r}if(t&&e)return{lng:n(t),lat:n(e)}},rayCasting(t,e){for(var n=t.x,r=t.y,s=!1,o=0,a=e.length,i=a-1;o<a;i=o,o++){var l=e[o].x,c=e[o].y,h=e[i].x,u=e[i].y;if(l===n&&c===r||h===n&&u===r)return"on";if(c<r&&u>=r||c>=r&&u<r){var d=l+(r-c)*(h-l)/(u-c);if(d===n)return"on";d>n&&(s=!s)}}return s?"in":"out"},rotatePoint:(t,e,n)=>({x:(t.x-e.x)*Math.cos(Math.PI/180*-n)-(t.y-e.y)*Math.sin(Math.PI/180*-n)+e.x,y:(t.x-e.x)*Math.sin(Math.PI/180*-n)+(t.y-e.y)*Math.cos(Math.PI/180*-n)+e.y}),calcBearAndDis(t,e){const{x:n,y:r}=t,{x:s,y:o}=e,a=s-n,i=o-r,l=Math.sqrt(a*a+i*i);return{angle:(Math.atan2(i,a)*(180/Math.PI)+360+90)%360,distance:l}},calcBearAndDisByPoints(t,e){var n=1*t.lat,r=1*t.lng,s=1*e.lat,o=1*e.lng,a=Math.sin((o-r)*this.toRadian)*Math.cos(s*this.toRadian),i=Math.cos(n*this.toRadian)*Math.sin(s*this.toRadian)-Math.sin(n*this.toRadian)*Math.cos(s*this.toRadian)*Math.cos((o-r)*this.toRadian),l=Math.atan2(a,i)*(180/Math.PI),c=(s-n)*this.toRadian,h=(o-r)*this.toRadian,u=Math.sin(c/2)*Math.sin(c/2)+Math.cos(n*this.toRadian)*Math.cos(s*this.toRadian)*Math.sin(h/2)*Math.sin(h/2),d=2*Math.atan2(Math.sqrt(u),Math.sqrt(1-u));return{angle:l,distance:this.R*d}},distanceToSegment(t,e,n){const r=t.x,s=t.y,o=e.x,a=e.y,i=n.x,l=n.y,c=(i-o)*(r-o)+(l-a)*(s-a);if(c<=0)return Math.sqrt((r-o)*(r-o)+(s-a)*(s-a));const h=(i-o)*(i-o)+(l-a)*(l-a);if(c>=h)return Math.sqrt((r-i)*(r-i)+(s-l)*(s-l));const u=c/h,d=o+(i-o)*u,g=a+(l-a)*u;return Math.sqrt((r-d)*(r-d)+(s-g)*(s-g))},calcPointByBearAndDis(t,e,n){const r=u.deg2Rad(1*t.lat),s=u.deg2Rad(1*t.lng),o=n/this.R;e=u.deg2Rad(e);const a=Math.asin(Math.sin(r)*Math.cos(o)+Math.cos(r)*Math.sin(o)*Math.cos(e)),i=s+Math.atan2(Math.sin(e)*Math.sin(o)*Math.cos(r),Math.cos(o)-Math.sin(r)*Math.sin(a));return{lat:u.rad2Deg(a),lng:u.rad2Deg(i)}},mercatorTolonlat(t,e){var n=e/20037508.34*180;return{lng:t/20037508.34*180,lat:180/Math.PI*(2*Math.atan(Math.exp(n*Math.PI/180))-Math.PI/2)}},lonlatToMercator(t,e){var n=6378137;const r=t*Math.PI/180*n;var s=e*Math.PI/180;return{x:r,y:3189068.5*Math.log((1+Math.sin(s))/(1-Math.sin(s)))}},interpolate:({x:t,y:e,z:n=0},{x:r,y:s,z:o=0},a)=>({x:t+(r-t)*a,y:e+(s-e)*a,z:n+(o-n)*a})},S={checkStr(t,e){switch(e){case"phone":return/^1[3|4|5|6|7|8|9][0-9]{9}$/.test(t);case"tel":return/^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(t);case"card":return/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(t);case"pwd":return/^[a-zA-Z]\w{5,17}$/.test(t);case"postal":return/[1-9]\d{5}(?!\d)/.test(t);case"QQ":return/^[1-9][0-9]{4,9}$/.test(t);case"email":return/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(t);case"money":return/^\d*(?:\.\d{0,2})?$/.test(t);case"URL":return/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(t);case"IP":return/((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(t);case"date":return/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(t)||/^(\d{4})\-(\d{2})\-(\d{2})$/.test(t);case"number":return/^[0-9]$/.test(t);case"english":return/^[a-zA-Z]+$/.test(t);case"chinese":return/^[\u4E00-\u9FA5]+$/.test(t);case"lower":return/^[a-z]+$/.test(t);case"upper":return/^[A-Z]+$/.test(t);case"HTML":return/<("[^"]*"|'[^']*'|[^'">])*>/.test(t);default:return!0}},changeCase(t,e){switch(e=e||4){case 1:return t.replace(/\b\w+\b/g,(function(t){return t.substring(0,1).toUpperCase()+t.substring(1).toLowerCase()}));case 2:return t.replace(/\b\w+\b/g,(function(t){return t.substring(0,1).toLowerCase()+t.substring(1).toUpperCase()}));case 3:return t.split("").map((function(t){return/[a-z]/.test(t)?t.toUpperCase():t.toLowerCase()})).join("");case 4:return t.toUpperCase();case 5:return t.toLowerCase();default:return t}},tag:(t,...e)=>(e=e.map((t=>{switch(p.getDataType(t)){case"Object":return t||"{}";case"Array":return t||"[]";default:return t||""}})),t.reduce(((t,n,r)=>`${t}${e[r-1]}${n}`))),getByteLength:t=>t.replace(/[\u0391-\uFFE5]/g,"aa").length,subStringByte(t,e,n){var r=/[^\x00-\xff]/g;if(t.replace(r,"mm").length<=n)return t;for(var s=Math.floor(n/2);s<t.length;s++){let o=t.substring(e,s);if(o.replace(r,"mm").length>=n)return o}return t}},T={random(){let t=Math.floor(256*Math.random()).toString(16),e=Math.floor(256*Math.random()).toString(16),n=Math.floor(256*Math.random()).toString(16);return t=1===t.length?"0"+t:t,e=1===e.length?"0"+e:e,n=1===n.length?"0"+n:n,"#"+t+e+n},rgb2hex:t=>"#"+((1<<24)+(t[0]<<16)+(t[1]<<8)+t[2]).toString(16).slice(1),rgbToRgba(t){const e=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(t);return e?`rgba(${e[1]}, 1)`:t},hexToRgba(t){const e=t.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,((t,e,n,r)=>e+e+n+n+r+r)),n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(!n)return t;return`rgba(${parseInt(n[1],16)},${parseInt(n[2],16)},${parseInt(n[3],16)},1)`},hslToRgba(t){if(!t)return null;const e=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(t)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(t);if(!e)return null;const n=parseInt(e[1],10)/360,r=parseInt(e[2],10)/100,s=parseInt(e[3],10)/100,o=e[4]?parseFloat(e[4]):1;function a(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}let i,l,c;if(0===r)i=l=c=s;else{const t=s<.5?s*(1+r):s+r-s*r,e=2*s-t;i=a(e,t,n+1/3),l=a(e,t,n),c=a(e,t,n-1/3)}return`rgba(${Math.round(255*i)},${Math.round(255*l)},${Math.round(255*c)},${o})`},isHex:t=>/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t),isRgb:t=>/^rgb/.test(t),isHsl:t=>/^hsl/.test(t),isColor(t){return this.isHex(t)||this.isRgb(t)||this.isHsl(t)},colorToRgb(t){return this.isRgb(t)?this.rgbToRgba(t):this.isHex(t)?this.hexToRgba(t):this.isHsl(t)?this.hslToRgba(t):void 0}},O=["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon"],C={getGeoJsonType:t=>t.geometry?t.geometry.type:null,isGeoJson(t){const e=this.getGeoJsonType(t);if(e)for(let n=0,r=O.length;n<r;n++)if(O[n]===e)return!0;return!1},isGeoJsonPolygon(t){const e=this.getGeoJsonType(t);return!(!e||e!==O[4]&&e!==O[5])},isGeoJsonLine(t){const e=this.getGeoJsonType(t);return!(!e||e!==O[2]&&e!==O[3])},isGeoJsonPoint(t){const e=this.getGeoJsonType(t);return!(!e||e!==O[0]&&e!==O[1])},isGeoJsonMulti(t){const e=this.getGeoJsonType(t);return!!(e&&e.indexOf("Multi")>-1)},getGeoJsonCoordinates:t=>t.geometry?t.geometry.coordinates:[],getGeoJsonCenter(t,e){const n=this.getGeoJsonType(t);if(!n||!t.geometry)return null;const r=t.geometry.coordinates;if(!r)return null;let s=0,o=0,a=0;switch(n){case"Point":s=r[0],o=r[1],a++;break;case"MultiPoint":case"LineString":for(let t=0,e=r.length;t<e;t++)s+=r[t][0],o+=r[t][1],a++;break;case"MultiLineString":case"Polygon":for(let t=0,e=r.length;t<e;t++)for(let n=0,i=r[t].length;n<i;n++)s+=r[t][n][0],o+=r[t][n][1],a++;break;case"MultiPolygon":for(let t=0,e=r.length;t<e;t++)for(let n=0,i=r[t].length;n<i;n++)for(let e=0,l=r[t][n].length;e<l;e++)s+=r[t][n][e][0],o+=r[t][n][e][1],a++}const i=s/a,l=o/a;return e?(e.x=i,e.y=l,e):{x:i,y:l}},spliteGeoJsonMulti(t){const e=this.getGeoJsonType(t);if(!e||!t.geometry)return null;const n=t.geometry,r=t.properties||{},s=n.coordinates;if(!s)return null;const o=[];let a;switch(e){case"MultiPoint":a="Point";break;case"MultiLineString":a="LineString";break;case"MultiPolygon":a="Polygon"}if(a)for(let i=0,l=s.length;i<l;i++)o.push({type:"Feature",geometry:{type:a,coordinates:s[i]},properties:r});else o.push(t);return o},getGeoJsonByCoordinates(t){if(!Array.isArray(t))throw Error("coordinates 参数格式错误");let e;if(2===t.length&&"number"==typeof t[0]&&"number"==typeof t[1])e="Point";else if(Array.isArray(t[0])&&2===t[0].length)e="LineString";else{if(!Array.isArray(t[0])||!Array.isArray(t[0][0]))throw Error("coordinates 参数格式错误");{const n=t[0];if(n[0].join(",")===n[n.length-1].join(","))e="Polygon";else{if(!(t.length>1))throw Error("coordinates 参数格式错误");e="MultiPolygon"}}}return{type:"Feature",geometry:{type:e,coordinates:t}}}},_={assertEmpty(...t){t.forEach((t=>{if(p.isEmpty(t))throw Error("变量为空:>>>"+t)}))},assertNumber(...t){t.forEach((t=>{if(!p.isNumber(t))throw Error("不是数字:>>>"+t)}))},assertArray(...t){t.forEach((t=>{if(!p.isArray(t))throw Error(o.PARAMETER_ERROR_ARRAY+":>>>"+t)}))},assertFunction(...t){t.forEach((t=>{if(!p.isFunction(t))throw Error(o.PARAMETER_ERROR_FUNCTION+":>>>"+t)}))},assertObject(...t){t.forEach((t=>{if(!p.isObject(t))throw Error(o.PARAMETER_ERROR_OBJECT+":>>>"+t)}))},assertColor(...t){t.forEach((t=>{if(!T.isColor(t))throw Error("颜色代码不正确:>>>"+t)}))},assertLnglat(...t){t.forEach((t=>{if(!x.isLnglat(t.lng,t.lat))throw Error(o.COORDINATE_ERROR+":>>>"+t)}))},assertGeoJson(...t){t.forEach((t=>{if(!C.isGeoJson(t))throw Error("不是GeoJSON:>>>"+t)}))},assertContain(t,...e){let n=!1;for(let r=0,s=e.length||0;r<s;r++)n=t.indexOf(e[r])>=0;if(n)throw Error(o.STRING_CHECK_LOSS+":>>>"+t)},assertLegal(t,e){const n=S.checkStr(t,e);let r="";switch(e){case"phone":r="电话";break;case"tel":r="座机";break;case"card":r="身份证";break;case"pwd":r="密码";break;case"postal":r="邮政编码";break;case"QQ":r="QQ";break;case"email":r="邮箱";break;case"money":r="金额";break;case"URL":r="网址";break;case"IP":r="IP";break;case"date":r="日期时间";break;case"number":r="数字";break;case"english":r="英文";break;case"chinese":r="中文";break;case"lower":r="小写";break;case"upper":r="大写";break;case"HTML":r="HTML标记"}if(!n)throw Error(o.PARAMETER_ERROR+":>>>不是"+r)}},D={getExplorer(){var t=window.navigator.userAgent;return t.indexOf("MSIE")>=0||/Trident\//.test(t)?"IE":t.indexOf("Firefox")>=0?"Firefox":t.indexOf("Chrome")>=0?"Chrome":t.indexOf("Opera")>=0?"Opera":t.indexOf("Safari")>=0&&-1===t.indexOf("Chrome")?"Safari":"Unknown"},detectOS(){let t="";const e=-1!=navigator.userAgent.indexOf("Windows",0)?1:0,n=-1!=navigator.userAgent.indexOf("mac",0)?1:0,r=-1!=navigator.userAgent.indexOf("Linux",0)?1:0,s=-1!=navigator.userAgent.indexOf("X11",0)?1:0;return e?t="MS Windows":n?t="Apple mac":r?t="Linux":s&&(t="Unix"),t},switchFullScreen(t){if(t){const t=document.documentElement;t.requestFullscreen?t.requestFullscreen():"msRequestFullscreen"in t?t.msRequestFullscreen():"mozRequestFullScreen"in t?t.mozRequestFullScreen():"webkitRequestFullscreen"in t&&t.webkitRequestFullscreen()}else document.exitFullscreen?document.exitFullscreen():"msExitFullscreen"in document?document.msExitFullscreen():"mozCancelFullScreen"in document?document.mozCancelFullScreen():"webkitExitFullscreen"in document&&document.webkitExitFullscreen()},refreshScale(){const t=document.documentElement.clientWidth||0,e=document.documentElement.clientHeight||0,n=document.getElementById("app");if(!n)return;const r=n.style;let s=t/1920;t/e>16/9&&(s=e/1080),r.transformOrigin="left top",r.transform=`scale(${s}) translateX(-49.99%)`,r.width=t/s+"px"},getHtmlFontSize(){const t=document.documentElement.clientWidth||document.body.clientWidth,e=document.querySelector("html");e&&(e.style.fontSize=t/192+"px")}},I={PI:3.141592653589793,XPI:52.35987755982988,delta(t,e){const n=6378245,r=.006693421622965943;let s=this.transformLat(e-105,t-35),o=this.transformLon(e-105,t-35);const a=t/180*this.PI;let i=Math.sin(a);i=1-r*i*i;const l=Math.sqrt(i);return s=180*s/(n*(1-r)/(i*l)*this.PI),o=180*o/(n/l*Math.cos(a)*this.PI),{lat:s,lng:o}},outOfChina:(t,e)=>t<72.004||t>137.8347||(e<.8293||e>55.8271),gcjEncrypt(t,e){if(this.outOfChina(t,e))return{lat:t,lng:e};const n=this.delta(t,e);return{lat:t+n.lat,lng:e+n.lng}},gcjDecrypt(t,e){if(this.outOfChina(t,e))return{lat:t,lng:e};const n=this.delta(t,e);return{lat:t-n.lat,lng:e-n.lng}},gcjDecryptExact(t,e){let n=.01,r=.01,s=t-n,o=e-r,a=t+n,i=e+r,l=0,c=0,h=0;for(;;){l=(s+a)/2,c=(o+i)/2;const u=this.gcjEncrypt(l,c);if(n=u.lat-t,r=u.lng-e,Math.abs(n)<1e-9&&Math.abs(r)<1e-9)break;if(n>0?a=l:s=l,r>0?i=c:o=c,++h>1e4)break}return{lat:l,lng:c}},bdEncrypt(t,e){const n=e,r=t,s=Math.sqrt(n*n+r*r)+2e-5*Math.sin(r*this.XPI),o=Math.atan2(r,n)+3e-6*Math.cos(n*this.XPI),a=s*Math.cos(o)+.0065;return{lat:s*Math.sin(o)+.006,lng:a}},bdDecrypt(t,e){const n=e-.0065,r=t-.006,s=Math.sqrt(n*n+r*r)-2e-5*Math.sin(r*this.XPI),o=Math.atan2(r,n)-3e-6*Math.cos(n*this.XPI),a=s*Math.cos(o);return{lat:s*Math.sin(o),lng:a}},mercatorEncrypt(t,e){const n=20037508.34*e/180;let r=Math.log(Math.tan((90+t)*this.PI/360))/(this.PI/180);return r=20037508.34*r/180,{lat:r,lng:n}},mercatorDecrypt(t,e){const n=e/20037508.34*180;let r=t/20037508.34*180;return r=180/this.PI*(2*Math.atan(Math.exp(r*this.PI/180))-this.PI/2),{lat:r,lng:n}},transformLat(t,e){let n=2*t-100+3*e+.2*e*e+.1*t*e+.2*Math.sqrt(Math.abs(t));return n+=2*(20*Math.sin(6*t*this.PI)+20*Math.sin(2*t*this.PI))/3,n+=2*(20*Math.sin(e*this.PI)+40*Math.sin(e/3*this.PI))/3,n+=2*(160*Math.sin(e/12*this.PI)+320*Math.sin(e*this.PI/30))/3,n},transformLon(t,e){let n=300+t+2*e+.1*t*t+.1*t*e+.1*Math.sqrt(Math.abs(t));return n+=2*(20*Math.sin(6*t*this.PI)+20*Math.sin(2*t*this.PI))/3,n+=2*(20*Math.sin(t*this.PI)+40*Math.sin(t/3*this.PI))/3,n+=2*(150*Math.sin(t/12*this.PI)+300*Math.sin(t/30*this.PI))/3,n},random:({x:t,y:e},{x:n,y:r})=>({lat:Math.random()*(r-e)+e,lng:Math.random()*(n-t)+t}),deCompose(t,e,n){if(!Array.isArray(t))return n?e.call(n,t):e(t);const r=[];let s,o;for(let a=0,i=t.length;a<i;a++)s=t[a],p.isNil(s)?r.push(null):Array.isArray(s)?r.push(this.deCompose(s,e,n)):(o=n?e.call(n,s):e(s),r.push(o));return r}},v=Object.create(Date);v.prototype.format=function(t="yyyy-MM-dd hh:mm:ss"){const e={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours()%12,"H+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length)));for(const n in e)if(new RegExp("("+n+")").test(t)){const r=1===n.length?1:Number(n.slice(1));t=t.replace(RegExp.$1,("00"+e[n]).substr((""+e[n]).length+r-(e[n]+"").length))}return t},v.prototype.addDate=function(t,e){const n=new Date(this);switch(t){case"y":n.setFullYear(this.getFullYear()+e);break;case"q":n.setMonth(this.getMonth()+3*e);break;case"M":n.setMonth(this.getMonth()+e);break;case"w":n.setDate(this.getDate()+7*e);break;case"d":default:n.setDate(this.getDate()+e);break;case"h":n.setHours(this.getHours()+e);break;case"m":n.setMinutes(this.getMinutes()+e);break;case"s":n.setSeconds(this.getSeconds()+e)}return n};const P={lastMonthDate:new Date((new Date).getFullYear(),(new Date).getMonth()-1,1),thisMonthDate:new Date((new Date).getFullYear(),(new Date).getMonth(),1),nextMonthDate:new Date((new Date).getFullYear(),(new Date).getMonth()+1,1),lastWeekDate:new Date((new Date).getFullYear(),(new Date).getMonth(),(new Date).getDate()+1-7-(new Date).getDay()),thisWeekDate:new Date((new Date).getFullYear(),(new Date).getMonth(),(new Date).getDate()+1-(new Date).getDay()),nextWeekDate:new Date((new Date).getFullYear(),(new Date).getMonth(),(new Date).getDate()+1+7-(new Date).getDay()),lastDayDate:new Date((new Date).getFullYear(),(new Date).getMonth(),(new Date).getDate()-1),thisDayDate:new Date((new Date).setHours(0,0,0,0)),nextDayDate:new Date((new Date).getFullYear(),(new Date).getMonth(),(new Date).getDate()+1),parseDate(t){if("string"==typeof t){var e=t.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) *$/);if(e&&e.length>3)return new Date(parseInt(e[1]),parseInt(e[2])-1,parseInt(e[3]));if((e=t.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2}) *$/))&&e.length>6)return new Date(parseInt(e[1]),parseInt(e[2])-1,parseInt(e[3]),parseInt(e[4]),parseInt(e[5]),parseInt(e[6]));if((e=t.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})\.(\d{1,9}) *$/))&&e.length>7)return new Date(parseInt(e[1]),parseInt(e[2])-1,parseInt(e[3]),parseInt(e[4]),parseInt(e[5]),parseInt(e[6]),parseInt(e[7]))}return null},formatDateInterval(t,e){const n=new Date(t),r=new Date(e).getTime()-n.getTime(),s=Math.floor(r/864e5),o=r%864e5,a=Math.floor(o/36e5),i=o%36e5,l=Math.floor(i/6e4),c=i%6e4,h=Math.round(c/1e3);let u="";return s>0&&(u+=s+"天"),a>0&&(u+=a+"时"),l>0&&(u+=l+"分"),h>0&&(u+=h+"秒"),0===s&&0===a&&0===l&&0===h&&(u="少于1秒"),u},formatterCounter(t){const e=function(t){return(t>10?"":"0")+(t||0)},n=t%3600,r=n%60;return`${e(Math.floor(t/3600))}:${e(Math.floor(n/60))}:${e(Math.round(r))}`},sleep(t){}};function L(t){return function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).split(/\s+/)}const k={getStyle(t,e){var n;let r=t.style[e];if(!r||"auto"===r){const s=null==(n=document.defaultView)?void 0:n.getComputedStyle(t,null);r=s?s[e]:null,"auto"===r&&(r=null)}return r},create(t,e,n){const r=document.createElement(t);return r.className=e||"",n&&n.appendChild(r),r},remove(t){const e=t.parentNode;e&&e.removeChild(t)},empty(t){for(;t.firstChild;)t.removeChild(t.firstChild)},toFront(t){const e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)},toBack(t){const e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)},getClass:t=>((null==t?void 0:t.host)||t).className.toString(),hasClass(t,e){var n;if(null==(n=t.classList)?void 0:n.contains(e))return!0;const r=this.getClass(t);return r.length>0&&new RegExp(`(^|\\s)${e}(\\s|$)`).test(r)},addClass(t,e){if(void 0!==t.classList){const n=L(e);for(let e=0,r=n.length;e<r;e++)t.classList.add(n[e])}else if(!this.hasClass(t,e)){const n=this.getClass(t);this.setClass(t,(n?n+" ":"")+e)}},removeClass(t,e){if(void 0!==t.classList){L(e).forEach((e=>t.classList.remove(e)))}else this.setClass(t,(" "+this.getClass(t)+" ").replace(" "+e+" "," ").trim())},setClass(t,e){"classList"in t&&(t.classList.value="",e.split(" ").forEach((e=>t.classList.add(e))))},parseFromString:t=>(new DOMParser).parseFromString(t,"text/xml").children[0]},N={convertBase64ToBlob(t){const e=t.split(",")[0].split(":")[1].split(";")[0],n=atob(t.split(",")[1]),r=new Array(n.length);for(let o=0;o<n.length;o++)r[o]=n.charCodeAt(o);const s=new Uint8Array(r);return new Blob([s],{type:e})},convertBase64ToFile(t,e){const n=t.split(","),r=n[0].match(/:(.*?);/),s=r?r[1]:"image/png",o=atob(n[1]),a=new Uint8Array(o.length);for(let i=0;i<o.length;i++)a[i]=o.charCodeAt(i);return new File([a],e,{type:s})},downloadFromFile(t,e){if("object"==typeof t)if(t instanceof Blob)t=URL.createObjectURL(t);else{const e=JSON.stringify(t),n=new Blob([e],{type:"text/json"});t=window.URL.createObjectURL(n)}else if("string"==typeof t&&-1===t.indexOf("http")){const e=new Blob([t],{type:"text/json"});t=window.URL.createObjectURL(e)}var n=document.createElement("a");n.href=t,n.download=e||"",n.click(),window.URL.revokeObjectURL(n.href)}},U={debounce(t,e,n=!0){let r,s,o=null;const a=()=>{const i=Date.now()-r;i<e&&i>0?o=setTimeout(a,e-i):(o=null,n||(s=t.apply(this,undefined)))};return(...i)=>{r=Date.now();const l=n&&!o;return o||(o=setTimeout(a,e)),l&&(s=t.apply(this,i),o||(i=null)),s}},throttle(t,e,n=1){let r=0,s=null;return(...o)=>{if(1===n){const n=Date.now();n-r>=e&&(t.apply(this,o),r=n)}else 2===n&&(s||(s=setTimeout((()=>{s=null,t.apply(this,o)}),e)))}},memoize(t){const e=new Map;return(...n)=>{const r=JSON.stringify(n);if(e.has(r))return e.get(r);{const s=t.apply(this,n);return e.set(r,s),s}}},recurve(t,e=500,n=5e3){let r=0;setTimeout((()=>{r++,r<Math.floor(n/e)&&(t.call(this),setTimeout(this.recurve.bind(this,t,e,n),e))}),e)},once(t){let e=!1;return function(...n){if(!e)return e=!0,t(...n)}}},F={json2Query(t){var e=[];for(var n in t)if(t.hasOwnProperty(n)){var r=n,s=t[n];e.push(encodeURIComponent(r)+"="+encodeURIComponent(s))}return e.join("&")},query2Json(t=window.location.href,e=!0){const n=/([^&=]+)=([\w\W]*?)(&|$|#)/g,{search:r,hash:s}=new URL(t),o=[r,s];let a={};for(let i=0;i<o.length;i++){const t=o[i];if(t){const r=t.replace(/#|\//g,"").split("?");if(r.length>1)for(let t=1;t<r.length;t++){let s;for(;s=n.exec(r[t]);)a[s[1]]=e?decodeURIComponent(s[2]):s[2]}}}return a}};t.AjaxUtil=A,t.ArrayUtil=m,t.AssertUtil=_,t.AudioPlayer=class{constructor(t){r(this,"audio"),this.audio=new Audio,this.audio.src=t}static speak(t,e={}){const n=new SpeechSynthesisUtterance;n.text=t,n.lang=e.lang||"zh-CN",n.volume=e.volume||1,n.rate=e.rate||1,n.pitch=e.pitch||1,window.speechSynthesis.speak(n)}play(){!this.muted&&this.audio.play()}pause(){this.audio.pause()}get muted(){return this.audio.muted}set muted(t){this.audio.muted=t}},t.BrowserUtil=D,t.CanvasDrawer=class{constructor(t){if(r(this,"context",null),"string"==typeof t&&!(t=document.querySelector("#"+t)))throw new Error("Element not found");if(!(t instanceof HTMLElement))throw new Error("Element is not an HTMLElement");{const e=t;if(!e.getContext)throw new Error("getContext is not available on this element");this.context=e.getContext("2d")}}drawLine({x:t,y:e},{x:n,y:r},s={}){if(!this.context)throw new Error("Canvas context is null or undefined");this.context.beginPath();const o=s.width||1,a=s.color||"#000";this.context.lineWidth=o,this.context.strokeStyle=a,this.context.moveTo(t,e),this.context.lineTo(n,r),this.context.stroke()}drawArc({x:t,y:e},n,r,s,o,a,i){if(!this.context)throw new Error("Canvas context is null or undefined");a?(this.context.fillStyle=i,this.context.beginPath(),this.context.arc(t,e,n,u.deg2Rad(r),u.deg2Rad(s),o),this.context.fill()):(this.context.strokeStyle=i,this.context.beginPath(),this.context.arc(t,e,n,u.deg2Rad(r),u.deg2Rad(s),o),this.context.stroke())}static createCanvas(t=1,e=1){const n=document.createElement("canvas");return t&&(n.width=t),e&&(n.height=e),n}},t.ColorUtil=T,t.Cookie=class{static set(t,e,n=30){if("string"!=typeof t||"string"!=typeof e||"number"!=typeof n)throw new Error("Invalid arguments");const r=new Date;r.setTime(r.getTime()+24*n*60*60*1e3),document.cookie=`${t}=${encodeURIComponent(e)};expires=${r.toUTCString()}`}static remove(t){var e=new Date;e.setTime(e.getTime()-1);var n=this.get(t);null!=n&&(document.cookie=t+"="+n+";expires="+e.toUTCString())}static get(t){var e=document.cookie.match(new RegExp("(^| )"+t+"=([^;]*)(;|$)"));return null!=e?e[2]:""}},t.CoordsUtil=I,t.DateUtil=P,t.DomUtil=k,t.ErrorType=o,t.EventDispatcher=d,t.EventType=s,t.FileUtil=N,t.GeoJsonUtil=C,t.GeoUtil=x,t.GraphicType=i,t.HashMap=g,t.ImageUtil=b,t.LayerType=a,t.LineSymbol=l,t.MathUtil=u,t.MeasureMode=c,t.MqttClient=M,t.ObjectState=h,t.ObjectUtil=f,t.OptimizeUtil=U,t.Storage=R,t.StringUtil=S,t.UrlUtil=F,t.Util=p,t.WebSocketClient=class extends d{constructor(t="ws://127.0.0.1:10088"){super(),r(this,"maxCheckTimes",10),r(this,"url"),r(this,"checkTimes",0),r(this,"connectStatus",!1),r(this,"client",null),this.maxCheckTimes=10,this.url=t,this.checkTimes=0,this.connect(),this.connCheckStatus(this.maxCheckTimes)}connect(){if(this.disconnect(),this.url)try{if(console.info("创建ws连接>>>"+this.url),this.client=new WebSocket(this.url),this.client){const t=this;this.client.onopen=function(e){t.dispatchEvent({type:s.WEB_SOCKET_CONNECT,message:e})},this.client.onmessage=function(e){t.connectStatus=!0,t.dispatchEvent({type:s.WEB_SOCKET_MESSAGE,message:e})},this.client.onclose=function(e){t.dispatchEvent({type:s.WEB_SOCKET_CLOSE,message:e})},this.checkTimes===this.maxCheckTimes&&(this.client.onerror=function(e){t.dispatchEvent({type:s.WEB_SOCKET_ERROR,message:e})})}}catch(t){console.error("创建ws连接失败"+this.url+":"+t)}}disconnect(){if(this.client)try{console.log("ws断开连接"+this.url),this.client.close(),this.client=null}catch(t){this.client=null}}connCheckStatus(t){this.checkTimes>t||setTimeout((()=>{this.checkTimes++,this.client&&0!==this.client.readyState&&1!==this.client.readyState&&this.connect(),this.connCheckStatus(t)}),2e3)}send(t){return this.client&&1===this.client.readyState?(this.client.send(t),!0):(console.error(this.url+"消息发送失败:"+t),!1)}heartbeat(){setTimeout((()=>{this.client&&1===this.client.readyState&&this.send("HeartBeat"),console.log("HeartBeat,"+this.url),setTimeout(this.heartbeat,3e4)}),1e3)}},Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})}));
@@ -4,7 +4,7 @@ export type AjaxGetOption = {
4
4
  credentials: any;
5
5
  };
6
6
  export type Callback = (...params: any[]) => any;
7
- declare const Ajax: {
7
+ declare const _default: {
8
8
  /**
9
9
  * Get JSON data by jsonp
10
10
  * @param url - resource url
@@ -31,7 +31,7 @@ declare const Ajax: {
31
31
  * }
32
32
  * );
33
33
  */
34
- get(url: string, options?: any, cb?: any): XMLHttpRequest;
34
+ get(url: string, options?: any, cb?: any): any;
35
35
  /**
36
36
  * Fetch remote resource by HTTP "POST" method
37
37
  * @param {String} url - resource url
@@ -57,13 +57,13 @@ declare const Ajax: {
57
57
  * }
58
58
  * );
59
59
  */
60
- post(url: string, options?: any, cb?: Callback): XMLHttpRequest;
60
+ post(url: string, options?: any, cb?: Callback): any;
61
61
  _wrapCallback(client: XMLHttpRequest, cb: Callback): () => void;
62
62
  _getClient(cb: Callback): XMLHttpRequest;
63
63
  /**
64
64
  * Fetch resource as arraybuffer.
65
65
  * @param {String} url - url
66
- * @param {Object} [options=null] - options, same as Ajax.get
66
+ * @param {Object} [options=null] - options, same as AjaxUtil.get
67
67
  * @param {Function} cb - callback function when completed.
68
68
  * @example
69
69
  * AjaxUtil.getArrayBuffer(
@@ -76,8 +76,8 @@ declare const Ajax: {
76
76
  * }
77
77
  * );
78
78
  */
79
- getArrayBuffer(url: string, options: any, cb: Callback): XMLHttpRequest;
80
- getImage(img: any, url: string, options: any): XMLHttpRequest;
79
+ getArrayBuffer(url: string, options: any, cb: Callback): any;
80
+ getImage(img: any, url: string, options: any): any;
81
81
  /**
82
82
  * Fetch resource as a JSON Object.
83
83
  * @param {String} url - json's url
@@ -99,4 +99,4 @@ declare const Ajax: {
99
99
  */
100
100
  getJSON(url: string, options?: any, cb?: Callback): any;
101
101
  };
102
- export default Ajax;
102
+ export default _default;
@@ -12,14 +12,14 @@ declare const _default: {
12
12
  * @param args 需要合并的数组
13
13
  * @returns 合并后的去重数组
14
14
  */
15
- union(...args: any[]): any[];
15
+ union(...args: any[][]): any[];
16
16
  /**
17
17
  * 求多个数组的交集
18
18
  *
19
19
  * @param args 多个需要求交集的数组
20
20
  * @returns 返回多个数组的交集数组
21
21
  */
22
- intersection(...args: never[][]): any[];
22
+ intersection<T>(...args: T[][]): T[];
23
23
  /**
24
24
  * 将多个数组拼接为一个数组,并去除其中的空值。
25
25
  *
@@ -0,0 +1,21 @@
1
+ import { LngLat } from '../types';
2
+ declare const _default: {
3
+ assertEmpty(...arg: any[]): void;
4
+ assertNumber(...arg: any[]): void;
5
+ assertArray(...arg: any[]): void;
6
+ assertFunction(...arg: any[]): void;
7
+ assertObject(...arg: any[]): void;
8
+ assertColor(...arg: any[]): void;
9
+ assertLnglat(...arg: LngLat[]): void;
10
+ assertGeoJson(...arg: any[]): void;
11
+ assertContain(str: string, ...args: string[]): void;
12
+ /**
13
+ * 判断字符串是否合法
14
+ *
15
+ * @param value 待判断的字符串
16
+ * @param type 字符串类型
17
+ * @throws 当字符串不合法时,抛出错误,错误信息为“参数错误:>>>不是{typename}”
18
+ */
19
+ assertLegal(value: string, type: string): void;
20
+ };
21
+ export default _default;
@@ -8,6 +8,13 @@ declare const _default: {
8
8
  getDataType(data: any): any;
9
9
  asArray(obj: any): any[];
10
10
  asNumber(a: any): number;
11
+ /**
12
+ * 将值转换为字符串
13
+ *
14
+ * @param value 要转换的值
15
+ * @returns 转换后的字符串,如果值为空,则返回空字符串
16
+ */
17
+ asString(value: any): any;
11
18
  /**
12
19
  * 判断传入的值是否为空
13
20
  *
@@ -15,7 +22,6 @@ declare const _default: {
15
22
  * @returns 返回布尔值,表示是否为空
16
23
  */
17
24
  isEmpty(value: any): boolean;
18
- isNotEmpty(val: any): boolean;
19
25
  /**
20
26
  * 将JSON对象转换为FormData对象
21
27
  *
@@ -108,5 +114,20 @@ declare const _default: {
108
114
  isNil(a: any): boolean;
109
115
  isNumber(a: any): boolean;
110
116
  isFunction(obj: Object): obj is Function;
117
+ /**
118
+ * 判断传入参数是否为DOM元素
119
+ *
120
+ * @param a 待判断的参数
121
+ * @returns 返回布尔值,表示是否为DOM元素
122
+ */
123
+ isElement(a: any): boolean;
124
+ /**
125
+ * 检查版本
126
+ *
127
+ * @param currentV 当前版本号
128
+ * @param targetV 要求版本号
129
+ * @returns 返回布尔值,表示当前版本是否需要升级到目标版本
130
+ */
131
+ checheVersion(currentV: string, targetV: string): boolean;
111
132
  };
112
133
  export default _default;
@@ -9,46 +9,23 @@ declare const _default: {
9
9
  * @param {*} degrees
10
10
  * @returns {*}
11
11
  */
12
- degreesToRadians(degrees: number): number;
13
- /**
14
- * 角度转弧度
15
- *
16
- * @param {*} degrees
17
- * @returns {*}
18
- */
19
- toRadians(degrees: number): number;
20
- /**
21
- * 弧度转角度
22
- *
23
- * @param {*} radians
24
- * @returns {*}
25
- */
26
- radiansToDegrees(radians: number): number;
12
+ deg2Rad(degrees: number): number;
27
13
  /**
28
14
  * 弧度转角度
29
15
  *
30
16
  * @param {*} radians
31
17
  * @returns {*}
32
18
  */
33
- toDegrees(radians: number): number;
34
- formatFloat(value: number, n?: number): number;
35
- /**
36
- * 根据给定值返回指定的最小值和最大值之间的最小值
37
- *
38
- * @param val 给定的数值
39
- * @param min 最小值
40
- * @param max 最大值
41
- * @returns 返回限制后的数值
42
- */
43
- minMax(val: number, min: number, max: number): number;
19
+ rad2Deg(radians: number): number;
20
+ round(value: number, n?: number): number;
44
21
  /**
45
- * 根据给定值返回指定的最小值和最大值之间的最大值
22
+ * 将数值限制在指定范围内
46
23
  *
47
- * @param val 给定的数值
24
+ * @param val 需要限制的数值
48
25
  * @param min 最小值
49
26
  * @param max 最大值
50
27
  * @returns 返回限制后的数值
51
28
  */
52
- maxMin(val: number, min: number, max: number): number;
29
+ clamp(val: number, min: number, max: number): number;
53
30
  };
54
31
  export default _default;
@@ -32,5 +32,12 @@ declare const _default: {
32
32
  * @param duration 函数递归调用的总时长,单位为毫秒,默认为5000毫秒。
33
33
  */
34
34
  recurve(fun: Function, frequency?: number, duration?: number): void;
35
+ /**
36
+ * 确保函数只被调用一次
37
+ *
38
+ * @param func 要被调用的函数
39
+ * @returns 返回一个新的函数,该函数在被首次调用时会执行传入的函数,之后再次调用将不再执行
40
+ */
41
+ once(func: Function): (...args: any[]) => any;
35
42
  };
36
43
  export default _default;
@@ -75,13 +75,5 @@ declare const _default: {
75
75
  length: number;
76
76
  substring: (arg0: any, arg1: number) => any;
77
77
  }, start: any, n: number): any;
78
- /**
79
- * 将值转换为字符串
80
- *
81
- * @param value 要转换的值
82
- * @returns 转换后的字符串,如果值为空,则返回空字符串
83
- */
84
- asString(value: any): any;
85
- replaceAll(str: string, key: string, value: string): string;
86
78
  };
87
79
  export default _default;
@@ -1,7 +1,7 @@
1
1
  export { default as AjaxUtil } from './AjaxUtil';
2
+ export { default as AssertUtil } from './AssertUtil';
2
3
  export { default as ArrayUtil } from './ArrayUtil';
3
4
  export { default as BrowserUtil } from './BrowserUtil';
4
- export { default as Cookie } from './Cookie';
5
5
  export { default as CoordsUtil } from './CoordsUtil';
6
6
  export { default as ColorUtil } from './ColorUtil';
7
7
  export { default as DateUtil } from './DateUtil';
@@ -14,6 +14,5 @@ export { default as FileUtil } from './FileUtil';
14
14
  export { default as MathUtil } from './MathUtil';
15
15
  export { default as OptimizeUtil } from './OptimizeUtil';
16
16
  export { default as StringUtil } from './StringUtil';
17
- export { default as StoreUtil } from './StoreUtil';
18
17
  export { default as UrlUtil } from './UrlUtil';
19
18
  export { default as Util } from './CommUtil';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gis-common",
3
- "version": "4.2.1",
3
+ "version": "4.2.3",
4
4
  "author": "Guo.Yan <luv02@vip.qq.com>",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -30,6 +30,7 @@
30
30
  "mqtt-browser": "^4.3.7"
31
31
  },
32
32
  "devDependencies": {
33
+ "terser": "^5.32.0",
33
34
  "typescript": "^5.5.4",
34
35
  "vite": "^5.4.0",
35
36
  "vite-plugin-dts": "^4.0.1"
@@ -1,6 +0,0 @@
1
- declare const _default: {
2
- set: (name: string, value: string, Days?: number) => void;
3
- remove: (name: string) => void;
4
- get: (name: string) => string;
5
- };
6
- export default _default;
@@ -1,10 +0,0 @@
1
- export default class StoreUtil {
2
- static prefix: string;
3
- private static _getPrefixedKey;
4
- static set(key: string, value?: any, options?: any): void;
5
- static get(key: string, missing: any, options: any): any;
6
- static keys(): string[];
7
- static getAll(includeKeys: string[] | undefined): any[];
8
- static remove(key: string, options: any): void;
9
- static clear(options: any): void;
10
- }