/*! For license information please see pikazLocation.js.LICENSE.txt */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.pikazLocation=t():e.pikazLocation=t()}(this,(function(){return(()=>{var e={483:(e,t,n)=>{e.exports=function e(t,n,r){function o(a,c){if(!n[a]){if(!t[a]){if(i)return i(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var u=n[a]={exports:{}};t[a][0].call(u.exports,(function(e){return o(t[a][1][e]||e)}),u,u.exports,e,t,n,r)}return n[a].exports}for(var i=void 0,a=0;a=43)}})).catch((function(){return!1}))}(e).then((function(e){return d=e}))}function b(e){var t=h[e.name],n={};n.promise=new a((function(e,t){n.resolve=e,n.reject=t})),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then((function(){return n.promise})):t.dbReady=n.promise}function w(e){var t=h[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function _(e,t){var n=h[e.name].deferredOperations.pop();if(n)return n.reject(t),n.promise}function I(e,t){return new a((function(n,r){if(h[e.name]=h[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return n(e.db);b(e),e.db.close()}var i=[e.name];t&&i.push(e.version);var a=o.open.apply(o,i);t&&(a.onupgradeneeded=function(t){var n=a.result;try{n.createObjectStore(e.storeName),t.oldVersion<=1&&n.createObjectStore(l)}catch(n){if("ConstraintError"!==n.name)throw n;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),a.onerror=function(e){e.preventDefault(),r(a.error)},a.onsuccess=function(){var t=a.result;t.onversionchange=function(e){e.target.close()},n(t),w(e)}}))}function S(e){return I(e,!1)}function E(e){return I(e,!0)}function A(e,t){if(!e.db)return!0;var n=!e.db.objectStoreNames.contains(e.storeName),r=e.versione.db.version;if(r&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),o||n){if(n){var i=e.db.version+1;i>e.version&&(e.version=i)}return!0}return!1}function C(e){return i([m(atob(e.data))],{type:e.type})}function N(e){return e&&e.__local_forage_encoded_blob}function j(e){var t=this,n=t._initReady().then((function(){var e=h[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return s(n,e,e),n}function x(e,t,n,r){void 0===r&&(r=1);try{var o=e.db.transaction(e.storeName,t);n(null,o)}catch(o){if(r>0&&(!e.db||"InvalidStateError"===o.name||"NotFoundError"===o.name))return a.resolve().then((function(){if(!e.db||"NotFoundError"===o.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),E(e)})).then((function(){return function(e){b(e);for(var t=h[e.name],n=t.forages,r=0;r>4,f[s++]=(15&r)<<4|o>>2,f[s++]=(3&o)<<6|63&i;return u}function Y(e){var t,n=new Uint8Array(e),r="";for(t=0;t>2],r+=O[(3&n[t])<<4|n[t+1]>>4],r+=O[(15&n[t+1])<<2|n[t+2]>>6],r+=O[63&n[t+2]];return n.length%3==2?r=r.substring(0,r.length-1)+"=":n.length%3==1&&(r=r.substring(0,r.length-2)+"=="),r}var J={serialize:function(e,t){var n="";if(e&&(n=V.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===V.call(e.buffer))){var r,o=D;e instanceof ArrayBuffer?(r=e,o+=B):(r=e.buffer,"[object Int8Array]"===n?o+=M:"[object Uint8Array]"===n?o+=F:"[object Uint8ClampedArray]"===n?o+=z:"[object Int16Array]"===n?o+=P:"[object Uint16Array]"===n?o+=W:"[object Int32Array]"===n?o+=U:"[object Uint32Array]"===n?o+=H:"[object Float32Array]"===n?o+=q:"[object Float64Array]"===n?o+=G:t(new Error("Failed to get type for BinaryArray"))),t(o+Y(r))}else if("[object Blob]"===n){var i=new FileReader;i.onload=function(){var n="~~local_forage_type~"+e.type+"~"+Y(this.result);t("__lfsc__:blob"+n)},i.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if(e.substring(0,T)!==D)return JSON.parse(e);var t,n=e.substring($),r=e.substring(T,$);if(r===L&&R.test(n)){var o=n.match(R);t=o[1],n=n.substring(o[0].length)}var a=K(n);switch(r){case B:return a;case L:return i([a],{type:t});case M:return new Int8Array(a);case F:return new Uint8Array(a);case z:return new Uint8ClampedArray(a);case P:return new Int16Array(a);case W:return new Uint16Array(a);case U:return new Int32Array(a);case H:return new Uint32Array(a);case q:return new Float32Array(a);case G:return new Float64Array(a);default:throw new Error("Unkown type: "+r)}},stringToBuffer:K,bufferToString:Y};function Q(e,t,n,r){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,r)}function X(e,t,n,r,o,i){e.executeSql(n,r,o,(function(e,a){a.code===a.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,c){c.rows.length?i(e,a):Q(e,t,(function(){e.executeSql(n,r,o,i)}),i)}),i):i(e,a)}),i)}function Z(e,t,n,r){var o=this;e=u(e);var i=new a((function(i,a){o.ready().then((function(){void 0===t&&(t=null);var c=t,s=o._dbInfo;s.serializer.serialize(t,(function(t,u){u?a(u):s.db.transaction((function(n){X(n,s,"INSERT OR REPLACE INTO "+s.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){i(c)}),(function(e,t){a(t)}))}),(function(t){if(t.code===t.QUOTA_ERR){if(r>0)return void i(Z.apply(o,[e,c,n,r-1]));a(t)}}))}))})).catch(a)}));return c(i,n),i}function ee(e){return new a((function(t,n){e.transaction((function(r){r.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],(function(n,r){for(var o=[],i=0;i0}var oe={_driver:"localStorageWrapper",_initStorage:function(e){var t={};if(e)for(var n in e)t[n]=e[n];return t.keyPrefix=ne(e,this._defaultConfig),re()?(this._dbInfo=t,t.serializer=J,a.resolve()):a.reject()},_support:function(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}(),iterate:function(e,t){var n=this,r=n.ready().then((function(){for(var t=n._dbInfo,r=t.keyPrefix,o=r.length,i=localStorage.length,a=1,c=0;c=0;n--){var r=localStorage.key(n);0===r.indexOf(e)&&localStorage.removeItem(r)}}));return c(n,e),n},length:function(e){var t=this.keys().then((function(e){return e.length}));return c(t,e),t},key:function(e,t){var n=this,r=n.ready().then((function(){var t,r=n._dbInfo;try{t=localStorage.key(e)}catch(e){t=null}return t&&(t=t.substring(r.keyPrefix.length)),t}));return c(r,t),r},keys:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo,n=localStorage.length,r=[],o=0;o=0;t--){var n=localStorage.key(t);0===n.indexOf(e)&&localStorage.removeItem(n)}})):a.reject("Invalid arguments"),c(r,t),r}},ie=function(e,t){for(var n=e.length,r=0;r{var r,o=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",r={};function o(e,t){if(!r[e]){r[e]={};for(var n=0;n>>8,n[2*r+1]=a%256}return n},decompressFromUint8Array:function(t){if(null==t)return i.decompress(t);for(var n=new Array(t.length/2),r=0,o=n.length;r>=1}else{for(o=1,r=0;r>=1}0==--l&&(l=Math.pow(2,h),h++),delete c[f]}else for(o=a[f],r=0;r>=1;0==--l&&(l=Math.pow(2,h),h++),a[u]=d++,f=String(s)}if(""!==f){if(Object.prototype.hasOwnProperty.call(c,f)){if(f.charCodeAt(0)<256){for(r=0;r>=1}else{for(o=1,r=0;r>=1}0==--l&&(l=Math.pow(2,h),h++),delete c[f]}else for(o=a[f],r=0;r>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,r=0;r>=1;for(;;){if(v<<=1,y==t-1){p.push(n(v));break}y++}return p.join("")},decompress:function(e){return null==e?"":""==e?null:i._decompress(e.length,32768,(function(t){return e.charCodeAt(t)}))},_decompress:function(t,n,r){var o,i,a,c,s,u,f,l=[],d=4,h=4,p=3,v="",y=[],m={val:r(0),position:n,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,s=Math.pow(2,2),u=1;u!=s;)c=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=r(m.index++)),a|=(c>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,s=Math.pow(2,8),u=1;u!=s;)c=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=r(m.index++)),a|=(c>0?1:0)*u,u<<=1;f=e(a);break;case 1:for(a=0,s=Math.pow(2,16),u=1;u!=s;)c=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=r(m.index++)),a|=(c>0?1:0)*u,u<<=1;f=e(a);break;case 2:return""}for(l[3]=f,i=f,y.push(f);;){if(m.index>t)return"";for(a=0,s=Math.pow(2,p),u=1;u!=s;)c=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=r(m.index++)),a|=(c>0?1:0)*u,u<<=1;switch(f=a){case 0:for(a=0,s=Math.pow(2,8),u=1;u!=s;)c=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=r(m.index++)),a|=(c>0?1:0)*u,u<<=1;l[h++]=e(a),f=h-1,d--;break;case 1:for(a=0,s=Math.pow(2,16),u=1;u!=s;)c=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=r(m.index++)),a|=(c>0?1:0)*u,u<<=1;l[h++]=e(a),f=h-1,d--;break;case 2:return y.join("")}if(0==d&&(d=Math.pow(2,p),p++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}y.push(v),l[h++]=i+v.charAt(0),i=v,0==--d&&(d=Math.pow(2,p),p++)}}};return i}();void 0===(r=function(){return o}.call(t,n,t,e))||(e.exports=r)},895:e=>{e.exports=function(e,t,n,r){var o=e[0],i=e[1],a=!1;void 0===n&&(n=0),void 0===r&&(r=t.length);for(var c=(r-n)/2,s=0,u=c-1;si!=h>i&&o<(d-f)*(i-l)/(h-l)+f&&(a=!a)}return a}},946:(e,t,n)=>{const r=n(909),o=async()=>await r.get({dir:"areaList",file:"index"}),i=({name:e,list:t})=>{let n=e;const r=t.find((e=>-1!==n.indexOf(e.name)));if(r){const t=r.name.length;return n=n.slice(t,e.length),{id:r.id,name:n,children:r.children}}const o=t.find((e=>-1!==n.indexOf(e.shortName)));if(o){const t=o.shortName.length;return n=n.slice(t,e.length),{id:o.id,name:n,children:o.children}}return null},a=async(e="",t)=>{let n=e;const r={province:"",city:"",district:""};let a=t;t||(a=await o());const c=i({name:n,list:a});if(c){n=c.name,r.province=c.id;const e=c.children,t=i({name:n,list:e});if(t){n=t.name,r.city=t.id;const e=i({name:n,list:t.children});return e&&(n=e.name,r.district=e.id),r}const o=e.reduce(((e,t)=>t.children?e.concat(t.children):e),[]),a=i({name:n,list:o});return a&&(n=a.name,r.district=a.id),r}const s=a.reduce(((e,t)=>t.children?e.concat(t.children):e),[]),u=i({name:n,list:s});if(u){n=u.name,r.city=u.id;const e=i({name:n,list:u.children});e&&(n=e.name,r.district=e.id)}return r},c=async(e={})=>{let{code:t}={...e};t="string"==typeof t?t:t.toString();const n={province:"",provinceCode:"",city:"",cityCode:"",district:"",districtCode:"",code:t,address:""};if((await o()).every((e=>e.id===t?(n.province=e.name,n.provinceCode=e.id,!1):!e.children||e.children.every((r=>r.id===t?(n.province=e.name,n.provinceCode=e.id,n.city=r.name,n.cityCode=r.id,!1):!r.children||r.children.every((o=>o.id!==t||(n.province=e.name,n.provinceCode=e.id,n.city=r.name,n.cityCode=r.id,n.district=o.name,n.districtCode=o.id,!1))))))))throw new Error("未找到该地区");return n.address=n.province+n.city+n.district,n},s=async({provinceCode:e,cityCode:t,districtCode:n})=>{const o={province:{},city:{},district:{}};if(e){const t=await r.get({dir:"province",file:e});o.province={code:t.id,location:t.location,name:t.name,pinyin:t.pinyin}}if(t){const n=(await r.get({dir:"city",file:e})).find((e=>e.id===t));o.city={code:n.id,location:n.location,name:n.name,pinyin:n.pinyin}}if(n){const e=(await r.get({dir:"district",file:t})).find((e=>e.id===n));o.district={code:e.id,location:e.location,name:e.name,pinyin:e.pinyin}}return o},u=async(e,t)=>{let n=t;if(n||(n=await o()),!e)return n.map((e=>({code:e.id,name:e.name})));for(let t=0;t({code:e.id,name:e.name})));if(r.children){const t=await u(e,r.children);if(t)return t}}};e.exports={getList:u,searchCodeInfo:async({code:e,detail:t})=>{const{province:n,city:r,district:o,address:i,provinceCode:a,cityCode:u,districtCode:f}=await c({code:e}),l={province:n,city:r,district:o,address:i,code:e};if(t){const e=await s({provinceCode:a,cityCode:u,districtCode:f});l.detail=e}return l},searchStrAddress:async e=>{const{province:t,city:n,district:r}=await a(e);return r||n||t||null},analysisAddress:a,searchCodeDetailInfo:async({code:e})=>{const{provinceCode:t,cityCode:n,districtCode:r}=await c({code:e}),o=await s({provinceCode:t,cityCode:n,districtCode:r});return Object.keys(o.district).length?o.district:Object.keys(o.city).length?o.city:Object.keys(o.province).length?o.province:void 0}}},182:e=>{e.exports=new class{constructor(){this.config={timeout:1e4,enableHighAccuracy:!1,detail:!1},this.cdn=["https://cdn.jsdelivr.net/npm/@pikaz/location/lib","https://unpkg.com/@pikaz/location/lib"]}set(e){this.config={...this.config,...e},this.config.url&&!this.cdn.includes(this.config.url)&&this.cdn.unshift(this.config.url)}}},955:(e,t,n)=>{const r=n(909),o=n(895),i=n(182),a=({latitude:e,longitude:t,address:n})=>n.find((n=>n.polygon.find((n=>{if(o([t,e],n))return n}))));e.exports={getGeo:(e={})=>{const{enableHighAccuracy:t,timeout:n}={...i.config,...e};return new Promise(((e,r)=>{if(navigator.geolocation){const o=navigator.geolocation.watchPosition((t=>{const{latitude:n,longitude:r}=t.coords;navigator.geolocation.clearWatch(o),e({latitude:n,longitude:r})}),(e=>{switch(navigator.geolocation.clearWatch(o),e.code){case e.PERMISSION_DENIED:r(new Error("html5已拒绝定位"));break;case e.POSITION_UNAVAILABLE:r(new Error("html5位置信息不可用"));break;case e.TIMEOUT:r(new Error("定位超时"));break;case e.UNKNOWN_ERROR:r(new Error("html5定位未知错误"))}}),{enableHighAccuracy:t,timeout:n,maximumAge:0})}else r(new Error("浏览器不支持HTML5定位"))}))},getGeoCode:async({latitude:e,longitude:t})=>{try{let n="";const o=(await r.get({dir:"province",file:"short"})).filter((n=>a({latitude:e,longitude:t,address:[n]})));let i="";for(let n=0;n{const{decompressFromEncodedURIComponent:r}=n(961),o=n(483),i=n(182),{version:a,fileDate:c}=n(147),s=async({url:e,file:t,list:n})=>{let o=n.findIndex((t=>t===e));o=-1===o?0:o;try{const e=await fetch(`${n[o]}/static/${t}.json`).then((e=>e.json())),i=r(e.s);return JSON.parse(i)}catch(e){if(o===n.length-1)throw new Error("定位失败");return s({url:n[o+1],file:t,list:n})}};e.exports=new class{constructor(){this.local=null,this.localConfig={name:"pikazLocation",storeName:"v"+a.split(".")[0]+"."+a.split(".")[1]}}async get({dir:e,file:t}){if(!this.local){const e=o.createInstance(this.localConfig);await e.ready(),this.local=e}const n=`${e}-${t}-${c[e]}`,r=await this.local.getItem(n);if(r)return r;try{const r=await s({file:`${e}/${t}`,list:i.cdn});return this.local.setItem(n,r),r}catch(e){throw new Error("定位失败")}}async getVal({key:e,gainVal:t,expiration:n}){if(!this.local){const e=o.createInstance(this.localConfig);await e.ready(),this.local=e}const r=(new Date).getTime(),i=n||0,a=`local-${e}`,c=await this.local.getItem(a);if(c&&c.expiration>r)return c.val;const s=await t();return await this.local.setItem(a,{val:s,expiration:r+i}),s}async clear(){await this.local.clear()}}},138:(e,t,n)=>{const r=n(182),{getGeo:o,getGeoCode:i}=n(955),{getList:a,searchCodeInfo:c,searchStrAddress:s,searchCodeDetailInfo:u}=n(946),{getIpCode:f}=n(454),l=async(e,t={})=>{let{timeout:n}={...r.config,...t};return await Promise.race([e(t),new Promise(((e,t)=>{setTimeout((()=>{t(new Error("定位超时"))}),n)}))])},d=async(e={})=>{let{timeout:t,enableHighAccuracy:n,detail:a,latitude:s,longitude:u}={...r.config,...e};if(!s||!u){const{latitude:e,longitude:r}=await o({timeout:t,enableHighAccuracy:n});s=e,u=r}return await l((async()=>{const e=await i({latitude:s,longitude:u});if(!e)throw new Error("非中国境内");return{...await c({code:e,detail:a}),latitude:s,longitude:u}}),{timeout:t})},h=async(e={})=>{let{detail:t,ip:n}={...r.config,...e};const{code:o,ip:i}=await f({ip:n});return n||(n=i),{...await c({code:o,detail:t}),ip:n}},p=async(e={})=>{const{address:t,detail:n}={...r.config,...e},o=await s(t);if(!o)throw new Error("解析地址失败,请确认地址包含省级或市级名称");return await c({code:o,detail:n})},v=async(e={})=>{const{code:t,detail:n}={...r.config,...e};return await c({code:t,detail:n})};e.exports={setConfig:({timeout:e,url:t})=>{r.set({timeout:e,url:t})},getLocation:async(e={})=>{try{return{...await d(e),type:"h5"}}catch(t){return{...await l(h,e),type:"ip"}}},getH5Location:d,getIpLocation:e=>l(h,e),searchList:async(e={})=>{const{code:t}={...e};return await a(t||"")||[]},searchCodeAddress:e=>l(v,e),searchAddress:e=>l(p,e),searchCodeDetail:e=>l(u,e)}},454:(e,t,n)=>{const{decompressFromEncodedURIComponent:r}=n(961),o=n(909),i=e=>{const t=e.split(".").reduce(((e,t)=>`${e}${(e=>{const t=e.split("").reverse();return new Array(3).fill(0).map(((e,n)=>t[n]||0)).reverse().join("")})(t)}`),"");return Number(t)},a=()=>new Promise(((e,t)=>{const n="ipCallback"+(new Date).getTime(),o=document.createElement("script");o.onerror=()=>{t(new Error("获取ip失败"))},window[n]=n=>{n&&n.ip?e(n.ip):t(new Error("ip定位失败"))},o.src=r("BYFxAcGcC4HpYIbgJYDpkoGYE9UHsAnAc1gH5NCBbBEAXgCtI8A7cAMjYGMEAbHgIwScA1rSA")+n,document.body.appendChild(o)}));e.exports={addZero:i,getIpCode:async(e={})=>{let{ip:t}={...e};t||(t=await o.getVal({key:"ip",gainVal:a,expiration:864e5}));const n=t.split(".").map((e=>Number(e)||0));if(4!==n.length)throw new Error("ip格式错误,只支持ipv4");return{code:(await o.get({dir:"ip",file:`${n[0]}.${n[1]}`})).reduce(((e,n)=>{const{district:r,id:o}=n,a=i(t);return a>=r[0]&&a<=r[1]?o:e}),""),ip:t}}}},147:e=>{"use strict";e.exports=JSON.parse('{"name":"@pikaz/location","version":"1.0.8","description":"used to obtain location from the browser","private":false,"main":"lib/pikazLocation.js","scripts":{"compress":"node utils/compress.js","analysisip":"node utils/analysisIp.js","build":"webpack"},"keywords":["geolocation","location","longitude","latitude","province","city","district"],"files":["lib"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/pikaz-18/pikaz-location.git"},"author":"pikaz","license":"MIT","bugs":{"url":"https://github.com/pikaz-18/pikaz-location/issues"},"homepage":"https://github.com/pikaz-18/pikaz-location#readme","devDependencies":{"clean-webpack-plugin":"^4.0.0","copy-webpack-plugin":"^10.2.0","object-hash":"^3.0.0","webpack":"^5.65.0","webpack-cli":"^4.9.1"},"dependencies":{"localforage":"^1.10.0","lz-string":"^1.4.4","point-in-polygon":"^1.1.0"},"fileDate":{"areaList":"202212301139","city":"202212301139","district":"202212301139","ip":"2023223116","province":"202317042"},"fileCode":{"areaList":"64b5a33f94b14ae208fca152fdc89dca1048360a","city":"7827eb2bc906b83df109ab24242ce68f98f9558b","district":"14d77ce6236e2025a4b1e3900cc70d0c32a62d0b","ip":"20f85bed99121432c292e7ca3bd0f51e4288d529","province":"629a3c20a32e0de95e0633e0385234e2b7886c2d"}}')}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}return n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n(138)})()}));