@simoko/tw-zip
Version:
台灣縣市、行政區、郵遞區號(3碼/6碼)查詢工具,支援 React/Vue/Svelte/SolidJS/Angular
2 lines • 3.13 kB
JavaScript
import {b,f,e,c,a}from'../chunk-JL77HVOV.js';import'../chunk-VAKBHZJJ.js';import {useState,useRef,useEffect,useCallback,useMemo}from'react';var $=new Map;function ne(c){if(!c)return [];let t=$.get(c);if(t)return t;let f=c.split("|").map(r=>{let i=r.split(",");return [i[0],...i.slice(1).map(Number)]});return $.set(c,f),f}function ie(c,t,f,r,i,z,S,j){if(!S)return;let x=S[t];if(!x)return;let l=x[f];if(!l)return;let m=j[c]?.[t];if(!m)return;let C=ne(l);for(let A of C){let[I,a=0,u=0,R=0,g=0,b=0,D=0,O=0,h=0,k=0]=A;if(u>0||R>0){if(!i)continue;if(u>0&&R>0){if(i<u||i>R)continue}else if(u>0){if(h===9999||h===9998){if(i<u)continue}else if(i!==u)continue}}if(g>0||b>0){if(!z)continue;if(g>0&&b>0){if(z<g||z>b)continue}else if(g>0&&z!==g)continue}if(r!==void 0&&(D>0||h>0)){if(a===1&&r%2===0||a===2&&r%2===1)continue;let M=h===9999||h===9998?Number.POSITIVE_INFINITY:h;if(D>0&&r<D||M!==Number.POSITIVE_INFINITY&&r>M)continue}else if(a!==0&&r!==void 0&&(a===1&&r%2===0||a===2&&r%2===1))continue;return {zipcode:m+I,zip3:m,city:c,area:t,road:f}}if(C.length>0){let[A]=C[0];return {zipcode:m+A,zip3:m,city:c,area:t,road:f}}}function ae(c$1={}){let{baseUrl:t,preload:f$1}=c$1,[r,i]=useState(true),[z,S]=useState([]),[j,x]=useState({}),[l,m]=useState(""),[C,A]=useState(""),[I,a$1]=useState(""),[u,R]=useState(void 0),[g,b$1]=useState(void 0),[D,O]=useState(void 0),[h,k]=useState([]),[M,Z]=useState([]),[G,_]=useState([]),[y,F]=useState(void 0),T=useRef(0);useEffect(()=>{let e=true;async function o(){i(true);let n=await a({baseUrl:t});if(!e)return;S(n.cities),x(n.zip3);let d=n.cities[0]??"";if(m(d),f$1&&f$1.length>0&&await c(f$1,{baseUrl:t}),d){let w=await b(d,{baseUrl:t});if(!e)return;F(w);let p=Object.keys(w);if(k(p),A(p[0]??""),p[0]){let q=w[p[0]];if(q){let B=Object.keys(q);Z(B),a$1(B[0]??"");}}}i(false);}return o(),()=>{e=false;}},[t]);let H=useCallback(async e=>{let o=++T.current;m(e),i(true);try{let n=await b(e,{baseUrl:t});if(T.current!==o)return;F(n);let d=Object.keys(n);if(k(d),A(d[0]??""),Z([]),a$1(""),R(void 0),b$1(void 0),O(void 0),d[0]){let w=n[d[0]];if(w){let p=Object.keys(w);Z(p),a$1(p[0]??"");}}}catch(n){T.current===o&&console.error(`Failed to load city data for ${e}:`,n);}finally{T.current===o&&i(false);}},[t]),J=useCallback(e=>{if(A(e),y){let o=y[e];if(o){let n=Object.keys(o);Z(n),a$1(n[0]??"");}else Z([]),a$1("");}R(void 0),b$1(void 0),O(void 0);},[y]),K=useCallback(e=>{a$1(e),R(void 0),b$1(void 0),O(void 0);},[]),Q=useCallback(e=>{if(!e.trim()){_([]);return}let o=[],n=e.trim();if(y)for(let[d,w]of Object.entries(y))for(let p of Object.keys(w))p.includes(n)&&o.push({city:l,area:d,road:p});_(o);},[l,y]),E=useMemo(()=>{if(!(!l||!C||!I||!y))return ie(l,C,I,u,g,D,y,j)},[l,C,I,u,g,D,y,j]),W=E?.zipcode??"",X=E?.zip3??"";return {loading:r,cities:z,areas:h,roads:M,city:l,area:C,road:I,number:u,lane:g,alley:D,setCity:H,setArea:J,setRoad:K,setNumber:R,setLane:b$1,setAlley:O,searchRoads:Q,searchResults:G,zipCode:W,zip3:X,result:E,preloadCities:useCallback(e=>c(e,{baseUrl:t}),[t]),isCityCached:e,clearCache:f}}export{ae as useTwZip6};//# sourceMappingURL=lazy.js.map
//# sourceMappingURL=lazy.js.map