gis-common 4.2.1 → 4.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constant/GraphicConstant.d.ts +6 -0
- package/dist/core/AudioPlayer.d.ts +16 -0
- package/dist/core/Cookie.d.ts +5 -0
- package/dist/core/MqttClient.d.ts +3 -3
- package/dist/core/Storage.d.ts +28 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/gis-common.es.js +1912 -1076
- package/dist/gis-common.umd.js +1 -1
- package/dist/utils/AjaxUtil.d.ts +7 -7
- package/dist/utils/ArrayUtil.d.ts +2 -2
- package/dist/utils/CommUtil.d.ts +22 -0
- package/dist/utils/MathUtil.d.ts +6 -29
- package/dist/utils/OptimizeUtil.d.ts +7 -0
- package/dist/utils/StringUtil.d.ts +0 -8
- package/dist/utils/index.d.ts +0 -2
- package/package.json +2 -1
- package/dist/utils/Cookie.d.ts +0 -6
- package/dist/utils/StoreUtil.d.ts +0 -10
package/dist/gis-common.umd.js
CHANGED
|
@@ -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,s=(t,e,s)=>((t,e,s)=>e in t?n(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,"symbol"!=typeof e?e+"":e,s),r=(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))(r||{}),i=(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))(i||{}),o=(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))(o||{}),a=(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))(a||{}),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(){s(this,"_listeners"),s(this,"_mutex",{}),s(this,"_context")}addEventListener(t,e,n,s){void 0===this._listeners&&(this._listeners={}),this._context=n;const r=this._mutex,i=this._listeners;return void 0===i[t]&&(i[t]=[]),-1===i[t].indexOf(e)&&(s&&(r[t]=e),i[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,s=n.length;e<s;e++){const s=n[e];"function"==typeof s&&s.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}},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(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 s=0;s<n.length;s+=2){const r=n[s];t[0]===r&&(e=n[s+1])}e||t.length%2!=0||(e=t[t.length-1])}else e=t[0];return e},extend(t,...e){let n,s,r,i;for(s=0,r=e.length;s<r;s++)for(n in i=e[s],i)t[n]=i[n];return t},convertToTree2(t,e="id",n="parentId",s="children"){const r=[];function i(o){const a=t.filter((t=>t[n]===o[e])).map((t=>(r.some((n=>n[e]===t[e]))||i(t),t)));a.length>0&&(o[s]=a)}return t.forEach((s=>{t.some((t=>t[n]===s[e]))||(i(s),r.push(s))})),r},asyncLoadScript:t=>new Promise(((e,n)=>{try{const s=document.createElement("script");s.type="text/javascript",s.src=t,"readyState"in s?s.onreadystatechange=function(){"complete"!==s.readyState&&"loaded"!==s.readyState||e(s)}:(s.onload=function(){e(s)},s.onerror=function(){n(new Error("Script failed to load for URL: "+t))}),document.body.appendChild(s)}catch(s){n(s)}})),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 s=e[n];if(void 0===s)throw new Error(`${i.JSON_VALUE_ERROR}: ${t}`);return"function"==typeof s?s(e):s})),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(s){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 s=JSON.stringify(t(n));e[s]=e[s]||[],e[s].push(n)})),Object.keys(e).map((t=>e[t]))},y.distinct=function(t=t=>t){const e=[],n={};return this.forEach((s=>{const r=t(s),i=String(r);n[i]||(n[i]=!0,e.push(s))})),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)))}},M=class t extends d{constructor(n=`ws://${window.document.domain}:20007/mqtt`,r={}){super(),s(this,"state"),s(this,"url"),s(this,"context"),s(this,"options"),s(this,"client"),s(this,"topics"),this.context=p.extend(t.defaultContext,r),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:r.MQTT_CONNECT,message:this})})),this.client.on("error",(t=>{console.log("链接mqtt报错",t),this.state=-1,this.dispatchEvent({type:r.MQTT_ERROR,message:this}),this.client.end(),this.client.reconnect()}))}_onMessage(){this.client.on("message",((t,e)=>{let n=e,s="";e instanceof Uint8Array&&(n=e.toString());try{s=f.parse(n)}catch(o){throw new Error(i.JSON_PARSE_ERROR)}this.dispatchEvent({type:r.MQTT_MESSAGE,message:{topic:t,data:s}})}))}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(r.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:r.MQTT_CLOSE,message:null}),console.log("断开mqtt成功==>"+this.url)}};s(M,"defaultContext",{MQTT_USERNAME:"iRVMS-WEB",MQTT_PASSWORD:"novasky888",MQTT_TIMEOUTM:2e4});let E=M;const w=class t{static set(t,e=null,n={}){var s=this._getPrefixedKey(t,n);try{const{expires:t}=n,r={data:e};t&&(r.expires=t),localStorage.setItem(s,JSON.stringify(r))}catch(r){console&&console.warn(`Storage didn't successfully save the '{"${t}": "${e}"}' pair, because the localStorage is full.`)}}static get(t,e,n){var s,r=this._getPrefixedKey(t,n);try{s=JSON.parse(localStorage.getItem(r)||"")}catch(i){s=localStorage[r]?{data:localStorage.getItem(r)}:null}if(!s)return e;if("object"==typeof s&&void 0!==s.data){const t=s.expires;return t&&Date.now()>t?e:s.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 s=[];return n.forEach((n=>{if(e.includes(n)){const e={};e[n]=t.get(n,null,null),s.push(e)}})),s}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()}};s(w,"prefix",""),s(w,"_getPrefixedKey",(function(t,e){return(e=e||{}).noPrefix?t:w.prefix+t}));let R=w;const x={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 s=e.getContext("2d");s&&(t instanceof ImageData?s.putImageData(t,0,0):s.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 s=new Image;s.setAttribute("crossOrigin","Anonymous"),s.src=t,s.onload=()=>{let t=this.getURL(s);e(t)},s.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 s=n.type,r=atob(n.data),i=new ArrayBuffer(r.length),o=new Uint8Array(i);for(let t=0;t<r.length;t++)o[t]=r.charCodeAt(t);let a=new Blob([i],{type:s});await navigator.clipboard.write([new ClipboardItem({[s]:a})])}catch(e){console.error("Failed to copy image to clipboard:",e)}}},b={jsonp(t,e){const n="_jsonp_"+p.guid(),s=document.getElementsByTagName("head")[0];t.includes("?")?t+="&callback="+n:t+="?callback="+n;let r=document.createElement("script");r.type="text/javascript",r.src=t,window[n]=function(t){e(null,t),s.removeChild(r),r=null,delete window[n]},s.appendChild(r)},get(t,e,n){if(p.isFunction(e)){const t=n;n=e,e=t}const s=this._getClient(n);if(s.open("GET",t,!0),e){for(const t in e.headers)s.setRequestHeader(t,e.headers[t]);s.withCredentials="include"===e.credentials,e.responseType&&(s.responseType=e.responseType)}return s.send(null),s},post(t,e={},n){let s;if("string"!=typeof t?(n=e.cb,s=e.postData,delete(e={...e}).cb,delete e.postData,t=e.url):("function"==typeof e&&(n=e,e={}),s=e.postData),!n)throw new Error("Callback function is required");const r=this._getClient(n);return r.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=>{r.setRequestHeader(t,e.headers[t])})),"string"!=typeof s&&(s=JSON.stringify(s)),r.send(s),r},_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,s=t.onload;t.onload=()=>{s&&s(),e.revokeObjectURL(t.src)};const r=new Blob([new Uint8Array(n.data)],{type:n.contentType});t.cacheControl=n.cacheControl,t.expires=n.expires,t.src=n.data.byteLength?e.createObjectURL(r):x.emptyImageUrl}}))},getJSON(t,e,n){if(p.isFunction(e)){const t=n;n=e,e=t}const s=function(t,e){const s=e?f.parse(e):null;n&&n(t,s)};return e&&e.jsonp?this.jsonp(t,s):this.get(t,e,s)}},S={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,s=-1!=navigator.userAgent.indexOf("Linux",0)?1:0,r=-1!=navigator.userAgent.indexOf("X11",0)?1:0;return e?t="MS Windows":n?t="Apple mac":s?t="Linux":r&&(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 s=n.style;let r=t/1920;t/e>16/9&&(r=e/1080),s.transformOrigin="left top",s.transform=`scale(${r}) translateX(-49.99%)`,s.width=t/r+"px"},getHtmlFontSize(){const t=document.documentElement.clientWidth||document.body.clientWidth,e=document.querySelector("html");e&&(e.style.fontSize=t/192+"px")}},A={PI:3.141592653589793,XPI:52.35987755982988,delta(t,e){const n=6378245,s=.006693421622965943;let r=this.transformLat(e-105,t-35),i=this.transformLon(e-105,t-35);const o=t/180*this.PI;let a=Math.sin(o);a=1-s*a*a;const l=Math.sqrt(a);return r=180*r/(n*(1-s)/(a*l)*this.PI),i=180*i/(n/l*Math.cos(o)*this.PI),{lat:r,lng:i}},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,s=.01,r=t-n,i=e-s,o=t+n,a=e+s,l=0,c=0,h=0;for(;;){l=(r+o)/2,c=(i+a)/2;const u=this.gcjEncrypt(l,c);if(n=u.lat-t,s=u.lng-e,Math.abs(n)<1e-9&&Math.abs(s)<1e-9)break;if(n>0?o=l:r=l,s>0?a=c:i=c,++h>1e4)break}return{lat:l,lng:c}},bdEncrypt(t,e){const n=e,s=t,r=Math.sqrt(n*n+s*s)+2e-5*Math.sin(s*this.XPI),i=Math.atan2(s,n)+3e-6*Math.cos(n*this.XPI),o=r*Math.cos(i)+.0065;return{lat:r*Math.sin(i)+.006,lng:o}},bdDecrypt(t,e){const n=e-.0065,s=t-.006,r=Math.sqrt(n*n+s*s)-2e-5*Math.sin(s*this.XPI),i=Math.atan2(s,n)-3e-6*Math.cos(n*this.XPI),o=r*Math.cos(i);return{lat:r*Math.sin(i),lng:o}},mercatorEncrypt(t,e){const n=20037508.34*e/180;let s=Math.log(Math.tan((90+t)*this.PI/360))/(this.PI/180);return s=20037508.34*s/180,{lat:s,lng:n}},mercatorDecrypt(t,e){const n=e/20037508.34*180;let s=t/20037508.34*180;return s=180/this.PI*(2*Math.atan(Math.exp(s*this.PI/180))-this.PI/2),{lat:s,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:s})=>({lat:Math.random()*(s-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 s=[];let r,i;for(let o=0,a=t.length;o<a;o++)r=t[o],p.isNil(r)?s.push(null):Array.isArray(r)?s.push(this.deCompose(r,e,n)):(i=n?e.call(n,r):e(r),s.push(i));return s}},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,s)=>e+e+n+n+s+s)),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,s=parseInt(e[2],10)/100,r=parseInt(e[3],10)/100,i=e[4]?parseFloat(e[4]):1;function o(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 a,l,c;if(0===s)a=l=c=r;else{const t=r<.5?r*(1+s):r+s-r*s,e=2*r-t;a=o(e,t,n+1/3),l=o(e,t,n),c=o(e,t,n-1/3)}return`rgba(${Math.round(255*a)},${Math.round(255*l)},${Math.round(255*c)},${i})`},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}},C=Object.create(Date);C.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 s=1===n.length?1:Number(n.slice(1));t=t.replace(RegExp.$1,("00"+e[n]).substr((""+e[n]).length+s-(e[n]+"").length))}return t},C.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 O={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),s=new Date(e).getTime()-n.getTime(),r=Math.floor(s/864e5),i=s%864e5,o=Math.floor(i/36e5),a=i%36e5,l=Math.floor(a/6e4),c=a%6e4,h=Math.round(c/1e3);let u="";return r>0&&(u+=r+"天"),o>0&&(u+=o+"时"),l>0&&(u+=l+"分"),h>0&&(u+=h+"秒"),0===r&&0===o&&0===l&&0===h&&(u="少于1秒"),u},formatterCounter(t){const e=function(t){return(t>10?"":"0")+(t||0)},n=t%3600,s=n%60;return`${e(Math.floor(t/3600))}:${e(Math.floor(n/60))}:${e(Math.round(s))}`},sleep(t){}};function D(t){return function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).split(/\s+/)}const _={getStyle(t,e){var n;let s=t.style[e];if(!s||"auto"===s){const r=null==(n=document.defaultView)?void 0:n.getComputedStyle(t,null);s=r?r[e]:null,"auto"===s&&(s=null)}return s},create(t,e,n){const s=document.createElement(t);return s.className=e||"",n&&n.appendChild(s),s},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 s=this.getClass(t);return s.length>0&&new RegExp(`(^|\\s)${e}(\\s|$)`).test(s)},addClass(t,e){if(void 0!==t.classList){const n=D(e);for(let e=0,s=n.length;e<s;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){D(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]},I=["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon"],v={getGeoJsonType:t=>t.geometry?t.geometry.type:null,isGeoJson(t){const e=this.getGeoJsonType(t);if(e)for(let n=0,s=I.length;n<s;n++)if(I[n]===e)return!0;return!1},isGeoJsonPolygon(t){const e=this.getGeoJsonType(t);return!(!e||e!==I[4]&&e!==I[5])},isGeoJsonLine(t){const e=this.getGeoJsonType(t);return!(!e||e!==I[2]&&e!==I[3])},isGeoJsonPoint(t){const e=this.getGeoJsonType(t);return!(!e||e!==I[0]&&e!==I[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 s=t.geometry.coordinates;if(!s)return null;let r=0,i=0,o=0;switch(n){case"Point":r=s[0],i=s[1],o++;break;case"MultiPoint":case"LineString":for(let t=0,e=s.length;t<e;t++)r+=s[t][0],i+=s[t][1],o++;break;case"MultiLineString":case"Polygon":for(let t=0,e=s.length;t<e;t++)for(let n=0,a=s[t].length;n<a;n++)r+=s[t][n][0],i+=s[t][n][1],o++;break;case"MultiPolygon":for(let t=0,e=s.length;t<e;t++)for(let n=0,a=s[t].length;n<a;n++)for(let e=0,l=s[t][n].length;e<l;e++)r+=s[t][n][e][0],i+=s[t][n][e][1],o++}const a=r/o,l=i/o;return e?(e.x=a,e.y=l,e):{x:a,y:l}},spliteGeoJsonMulti(t){const e=this.getGeoJsonType(t);if(!e||!t.geometry)return null;const n=t.geometry,s=t.properties||{},r=n.coordinates;if(!r)return null;const i=[];let o;switch(e){case"MultiPoint":o="Point";break;case"MultiLineString":o="LineString";break;case"MultiPolygon":o="Polygon"}if(o)for(let a=0,l=r.length;a<l;a++)i.push({type:"Feature",geometry:{type:o,coordinates:r[a]},properties:s});else i.push(t);return i},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}}}},P={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:s}=t,{lng:r,lat:i}=e;let o=Math.cos(s*Math.PI/180)*Math.cos(i*Math.PI/180)*Math.cos((n-r)*Math.PI/180)+Math.sin(s*Math.PI/180)*Math.sin(i*Math.PI/180);o>1&&(o=1),o<-1&&(o=-1);return 6371e3*Math.acos(o)},formatLnglat(t,e){let n="";function s(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=s(t)+","+s(e):isNaN(t)?isNaN(e)||(n=s(e)):n=s(t),n},transformLnglat(t,e){function n(t){let e=/[sw]/i.test(t)?-1:1;const n=t.match(/[\d.]+/g)||[];let s=0;for(let r=0;r<n.length;r++)s+=parseFloat(n[r])/e,e*=60;return s}if(t&&e)return{lng:n(t),lat:n(e)}},rayCasting(t,e){for(var n=t.x,s=t.y,r=!1,i=0,o=e.length,a=o-1;i<o;a=i,i++){var l=e[i].x,c=e[i].y,h=e[a].x,u=e[a].y;if(l===n&&c===s||h===n&&u===s)return"on";if(c<s&&u>=s||c>=s&&u<s){var d=l+(s-c)*(h-l)/(u-c);if(d===n)return"on";d>n&&(r=!r)}}return r?"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:s}=t,{x:r,y:i}=e,o=r-n,a=i-s,l=Math.sqrt(o*o+a*a);return{angle:(Math.atan2(a,o)*(180/Math.PI)+360+90)%360,distance:l}},calcBearAndDisByPoints(t,e){var n=1*t.lat,s=1*t.lng,r=1*e.lat,i=1*e.lng,o=Math.sin((i-s)*this.toRadian)*Math.cos(r*this.toRadian),a=Math.cos(n*this.toRadian)*Math.sin(r*this.toRadian)-Math.sin(n*this.toRadian)*Math.cos(r*this.toRadian)*Math.cos((i-s)*this.toRadian),l=Math.atan2(o,a)*(180/Math.PI),c=(r-n)*this.toRadian,h=(i-s)*this.toRadian,u=Math.sin(c/2)*Math.sin(c/2)+Math.cos(n*this.toRadian)*Math.cos(r*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 s=t.x,r=t.y,i=e.x,o=e.y,a=n.x,l=n.y,c=(a-i)*(s-i)+(l-o)*(r-o);if(c<=0)return Math.sqrt((s-i)*(s-i)+(r-o)*(r-o));const h=(a-i)*(a-i)+(l-o)*(l-o);if(c>=h)return Math.sqrt((s-a)*(s-a)+(r-l)*(r-l));const u=c/h,d=i+(a-i)*u,g=o+(l-o)*u;return Math.sqrt((s-d)*(s-d)+(r-g)*(r-g))},calcPointByBearAndDis(t,e,n){const s=u.deg2Rad(1*t.lat),r=u.deg2Rad(1*t.lng),i=n/this.R;e=u.deg2Rad(e);const o=Math.asin(Math.sin(s)*Math.cos(i)+Math.cos(s)*Math.sin(i)*Math.cos(e)),a=r+Math.atan2(Math.sin(e)*Math.sin(i)*Math.cos(s),Math.cos(i)-Math.sin(s)*Math.sin(o));return{lat:u.rad2Deg(o),lng:u.rad2Deg(a)}},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 s=t*Math.PI/180*n;var r=e*Math.PI/180;return{x:s,y:3189068.5*Math.log((1+Math.sin(r))/(1-Math.sin(r)))}},interpolate:({x:t,y:e,z:n=0},{x:s,y:r,z:i=0},o)=>({x:t+(s-t)*o,y:e+(r-e)*o,z:n+(i-n)*o})},L={convertBase64ToBlob(t){const e=t.split(",")[0].split(":")[1].split(";")[0],n=atob(t.split(",")[1]),s=new Array(n.length);for(let i=0;i<n.length;i++)s[i]=n.charCodeAt(i);const r=new Uint8Array(s);return new Blob([r],{type:e})},convertBase64ToFile(t,e){const n=t.split(","),s=n[0].match(/:(.*?);/),r=s?s[1]:"image/png",i=atob(n[1]),o=new Uint8Array(i.length);for(let a=0;a<i.length;a++)o[a]=i.charCodeAt(a);return new File([o],e,{type:r})},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 s,r,i=null;const o=()=>{const a=Date.now()-s;a<e&&a>0?i=setTimeout(o,e-a):(i=null,n||(r=t.apply(this,undefined)))};return(...a)=>{s=Date.now();const l=n&&!i;return i||(i=setTimeout(o,e)),l&&(r=t.apply(this,a),i||(a=null)),r}},throttle(t,e,n=1){let s=0,r=null;return(...i)=>{if(1===n){const n=Date.now();n-s>=e&&(t.apply(this,i),s=n)}else 2===n&&(r||(r=setTimeout((()=>{r=null,t.apply(this,i)}),e)))}},memoize(t){const e=new Map;return(...n)=>{const s=JSON.stringify(n);if(e.has(s))return e.get(s);{const r=t.apply(this,n);return e.set(s,r),r}}},recurve(t,e=500,n=5e3){let s=0;setTimeout((()=>{s++,s<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)}}},N={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,s)=>`${t}${e[s-1]}${n}`))),getByteLength:t=>t.replace(/[\u0391-\uFFE5]/g,"aa").length,subStringByte(t,e,n){var s=/[^\x00-\xff]/g;if(t.replace(s,"mm").length<=n)return t;for(var r=Math.floor(n/2);r<t.length;r++){let i=t.substring(e,r);if(i.replace(s,"mm").length>=n)return i}return t}},k={json2Query(t){var e=[];for(var n in t)if(t.hasOwnProperty(n)){var s=n,r=t[n];e.push(encodeURIComponent(s)+"="+encodeURIComponent(r))}return e.join("&")},query2Json(t=window.location.href,e=!0){const n=/([^&=]+)=([\w\W]*?)(&|$|#)/g,{search:s,hash:r}=new URL(t),i=[s,r];let o={};for(let a=0;a<i.length;a++){const t=i[a];if(t){const s=t.replace(/#|\//g,"").split("?");if(s.length>1)for(let t=1;t<s.length;t++){let r;for(;r=n.exec(s[t]);)o[r[1]]=e?decodeURIComponent(r[2]):r[2]}}}return o}};t.AjaxUtil=b,t.ArrayUtil=m,t.AudioPlayer=class{constructor(t){s(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=S,t.CanvasDrawer=class{constructor(t){if(s(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:s},r={}){if(!this.context)throw new Error("Canvas context is null or undefined");this.context.beginPath();const i=r.width||1,o=r.color||"#000";this.context.lineWidth=i,this.context.strokeStyle=o,this.context.moveTo(t,e),this.context.lineTo(n,s),this.context.stroke()}drawArc({x:t,y:e},n,s,r,i,o,a){if(!this.context)throw new Error("Canvas context is null or undefined");o?(this.context.fillStyle=a,this.context.beginPath(),this.context.arc(t,e,n,u.deg2Rad(s),u.deg2Rad(r),i),this.context.fill()):(this.context.strokeStyle=a,this.context.beginPath(),this.context.arc(t,e,n,u.deg2Rad(s),u.deg2Rad(r),i),this.context.stroke())}static createCanvas(t=1,e=1){let n;if("undefined"!=typeof document)return n=document.createElement("canvas"),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 s=new Date;s.setTime(s.getTime()+24*n*60*60*1e3),document.cookie=`${t}=${encodeURIComponent(e)};expires=${s.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=A,t.DateUtil=O,t.DomUtil=_,t.ErrorType=i,t.EventDispatcher=d,t.EventType=r,t.FileUtil=L,t.GeoJsonUtil=v,t.GeoUtil=P,t.GraphicType=a,t.HashMap=g,t.ImageUtil=x,t.LayerType=o,t.LineSymbol=l,t.MathUtil=u,t.MeasureMode=c,t.MqttClient=E,t.ObjectState=h,t.ObjectUtil=f,t.OptimizeUtil=U,t.Storage=R,t.StringUtil=N,t.UrlUtil=k,t.Util=p,t.WebSocketClient=class extends d{constructor(t="ws://127.0.0.1:10088"){super(),s(this,"maxCheckTimes",10),s(this,"url"),s(this,"checkTimes",0),s(this,"connectStatus",!1),s(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:r.WEB_SOCKET_CONNECT,message:e})},this.client.onmessage=function(e){t.connectStatus=!0,t.dispatchEvent({type:r.WEB_SOCKET_MESSAGE,message:e})},this.client.onclose=function(e){t.dispatchEvent({type:r.WEB_SOCKET_CLOSE,message:e})},this.checkTimes===this.maxCheckTimes&&(this.client.onerror=function(e){t.dispatchEvent({type:r.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"})}));
|
package/dist/utils/AjaxUtil.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export type AjaxGetOption = {
|
|
|
4
4
|
credentials: any;
|
|
5
5
|
};
|
|
6
6
|
export type Callback = (...params: any[]) => any;
|
|
7
|
-
declare const
|
|
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):
|
|
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):
|
|
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
|
|
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):
|
|
80
|
-
getImage(img: any, url: string, options: any):
|
|
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
|
|
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:
|
|
22
|
+
intersection<T>(...args: T[][]): T[];
|
|
23
23
|
/**
|
|
24
24
|
* 将多个数组拼接为一个数组,并去除其中的空值。
|
|
25
25
|
*
|
package/dist/utils/CommUtil.d.ts
CHANGED
|
@@ -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
|
*
|
|
@@ -108,5 +115,20 @@ declare const _default: {
|
|
|
108
115
|
isNil(a: any): boolean;
|
|
109
116
|
isNumber(a: any): boolean;
|
|
110
117
|
isFunction(obj: Object): obj is Function;
|
|
118
|
+
/**
|
|
119
|
+
* 判断传入参数是否为DOM元素
|
|
120
|
+
*
|
|
121
|
+
* @param a 待判断的参数
|
|
122
|
+
* @returns 返回布尔值,表示是否为DOM元素
|
|
123
|
+
*/
|
|
124
|
+
isElement(a: any): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* 检查版本
|
|
127
|
+
*
|
|
128
|
+
* @param currentV 当前版本号
|
|
129
|
+
* @param targetV 要求版本号
|
|
130
|
+
* @returns 返回布尔值,表示当前版本是否需要升级到目标版本
|
|
131
|
+
*/
|
|
132
|
+
checheVersion(currentV: string, targetV: string): boolean;
|
|
111
133
|
};
|
|
112
134
|
export default _default;
|
package/dist/utils/MathUtil.d.ts
CHANGED
|
@@ -9,46 +9,23 @@ declare const _default: {
|
|
|
9
9
|
* @param {*} degrees
|
|
10
10
|
* @returns {*}
|
|
11
11
|
*/
|
|
12
|
-
|
|
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
|
-
|
|
34
|
-
|
|
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
|
-
|
|
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;
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export { default as AjaxUtil } from './AjaxUtil';
|
|
2
2
|
export { default as ArrayUtil } from './ArrayUtil';
|
|
3
3
|
export { default as BrowserUtil } from './BrowserUtil';
|
|
4
|
-
export { default as Cookie } from './Cookie';
|
|
5
4
|
export { default as CoordsUtil } from './CoordsUtil';
|
|
6
5
|
export { default as ColorUtil } from './ColorUtil';
|
|
7
6
|
export { default as DateUtil } from './DateUtil';
|
|
@@ -14,6 +13,5 @@ export { default as FileUtil } from './FileUtil';
|
|
|
14
13
|
export { default as MathUtil } from './MathUtil';
|
|
15
14
|
export { default as OptimizeUtil } from './OptimizeUtil';
|
|
16
15
|
export { default as StringUtil } from './StringUtil';
|
|
17
|
-
export { default as StoreUtil } from './StoreUtil';
|
|
18
16
|
export { default as UrlUtil } from './UrlUtil';
|
|
19
17
|
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.
|
|
3
|
+
"version": "4.2.2",
|
|
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"
|
package/dist/utils/Cookie.d.ts
DELETED
|
@@ -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
|
-
}
|