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