1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7419],{19748:(e,t,n)=>{n.d(t,{PK:()=>r,ZF:()=>a,kD:()=>o});let l=e=>"number"==typeof e&&Number.isFinite(e);function o(e){if(!e||"object"!=typeof e)return[];let t=e.areas;if(!Array.isArray(t))return[];let n=[];for(let e of t){var o;if(!e||"object"!=typeof e)continue;let t=(o=e.bounds)&&"object"==typeof o&&l(o.north)&&l(o.south)&&l(o.east)&&l(o.west)&&!(o.north<o.south)&&!(o.east<o.west)?{north:o.north,south:o.south,east:o.east,west:o.west}:null;t&&n.push({kind:"string"==typeof e.kind?e.kind:"area",fips:"string"==typeof e.fips?e.fips:"",label:"string"==typeof e.label?e.label:"",bounds:t})}return n}function a(e,t){return!e||0===e.length||!t||e.some(e=>{var n;return n=e.bounds,n.west<=t.east&&n.east>=t.west&&n.south<=t.north&&n.north>=t.south})}function r(e){if(!e||0===e.length)return null;let t=e.reduce((e,t)=>{let{bounds:n}=t;return{north:Math.max(e.north,n.north),south:Math.min(e.south,n.south),east:Math.max(e.east,n.east),west:Math.min(e.west,n.west)}},{...e[0].bounds});return t.east-t.west<=180?t:e.reduce((e,t)=>t.bounds.east-t.bounds.west>e.bounds.east-e.bounds.west?t:e).bounds}},23096:(e,t,n)=>{n.d(t,{u:()=>o});var l=n(12115);let o=e=>{let[t,n]=(0,l.useState)(!1),[o,a]=(0,l.useState)(!0);return(0,l.useEffect)(()=>{(async()=>{try{let t="https://data.civicstar.ai";console.log("\uD83D\uDEA9 useFeatureFlag: Fetching feature flags from:","".concat(t,"/api/feature-flags"),"for flag:",e);let l=await fetch("".concat(t,"/api/feature-flags"),{headers:{"Content-Type":"application/json"}});if(l.ok){let t=await l.json(),o=t[e]||!1;console.log("\uD83D\uDEA9 useFeatureFlag: API response for",e,":",o,"All flags:",t),n(o)}else console.warn("\uD83D\uDEA9 useFeatureFlag: API response not OK:",l.status,l.statusText),"PARCEL_DATA_ENABLED"===e?(console.log("\uD83D\uDEA9 useFeatureFlag: Using env fallback for PARCEL_DATA_ENABLED:",!0),n(!0)):n(!1)}catch(t){console.error("\uD83D\uDEA9 useFeatureFlag: Error fetching feature flags:",t),"PARCEL_DATA_ENABLED"===e?(console.log("\uD83D\uDEA9 useFeatureFlag: Using env fallback after error for PARCEL_DATA_ENABLED:",!0),n(!0)):n(!1)}finally{a(!1)}})()},[e]),{enabled:t,loading:o}}},53135:(e,t,n)=>{n.d(t,{It:()=>l,cv:()=>h,i8:()=>u,iN:()=>s,lC:()=>a});let l={building:{color:"#2563EB",label:"Building"},zoning:{color:"#7C3AED",label:"Zoning"},electrical:{color:"#EAB308",label:"Electrical"},plumbing:{color:"#059669",label:"Plumbing"},mechanical:{color:"#EA580C",label:"Mechanical"},demolition:{color:"#DC2626",label:"Demolition"},sign:{color:"#4F46E5",label:"Sign"},business:{color:"#8B5CF6",label:"Business"},alcohol:{color:"#D97706",label:"Alcohol"},other:{color:"#64748B",label:"Other"}};function o(e){var t;let n=(e||"other").toLowerCase();return{...null!=(t=l[n])?t:l.other,key:l[n]?n:"other"}}function a(e){return o(e).color}let r={demolition:"demolition",sign:"sign",electrical:"electrical",electric_meter:"electrical",ev_charger:"electrical",solar:"electrical",battery:"electrical",generator:"electrical",plumbing:"plumbing",water_heater:"plumbing",hvac:"mechanical",heat_pump:"mechanical",gas:"mechanical",new_construction:"building",addition:"building",remodel:"building",adu:"building",roofing:"building",fence_shed:"building",pool_and_hot_tub:"building",window_door:"building",kitchen:"building",bathroom:"building",grading:"building"},i=Object.keys(r),c=[{category:"demolition",pattern:/\b(demolition|demo(?:lition)?|tear[\s-]?down)\b/i},{category:"sign",pattern:/\b(signage|billboard|sign)\b/i},{category:"alcohol",pattern:/\b(alcohol(?:ic)?|liquor|beverage\s+(?:license|permit))\b/i},{category:"zoning",pattern:/\b(zoning|land[\s-]?use|conditional\s+use|cup|site[\s-]?plan|entitlement|rezone|variance|plat)\b/i},{category:"electrical",pattern:/\b(electrical|electric(?:al)?(?:\s+permit)?|photovoltaic|\bpv\b|solar|ev[\s-]?charg)\b/i},{category:"plumbing",pattern:/\b(plumbing|sewer|water[\s-]?heater)\b/i},{category:"mechanical",pattern:/\b(mechanical|hvac|furnace|heat[\s-]?pump|air[\s-]?cond)\b/i},{category:"business",pattern:/\b(business[\s-]?(?:license|tax|receipt)|occupational[\s-]?(?:tax|license)|merchant[\s-]?license|annual\s+license|contractor\s+registration|tax\s+receipt)\b/i},{category:"building",pattern:/\b(building|construction|remodel|alteration|addition|reroof|re-roof|fence|shed|pool|adu|residential)\b/i}];function s(e){let t=(e.category||"").toLowerCase().trim();if(""!==t&&"other"!==t&&t in l)return t;let n=e.workTags||[];for(let e of i)if(n.includes(e)&&r[e])return r[e];let o=[e.permitType,e.subtype,e.workClass,e.title,e.description].filter(e=>!!e&&""!==e.trim()).join(" ");for(let{category:e,pattern:t}of c)if(t.test(o))return e;return"other"}function u(e){return o(s(e))}let g={in_review:"In review",active:"Active",final:"Final",inactive:"Inactive",unknown:"Unknown"};function h(e){return e?g[e]||e.replace(/_/g," "):""}},66409:(e,t,n)=>{n.d(t,{JJ:()=>i,K6:()=>s,V3:()=>c,ZX:()=>g,hT:()=>r,i3:()=>b,oD:()=>a,s3:()=>u,ym:()=>h});var l=n(59871),o=n(91072);function a(e,t){let n=e=>e*Math.PI/180,l=n(t.lat-e.lat),o=n(t.lng-e.lng);return 12742017.6*Math.asin(Math.min(1,Math.sqrt(Math.sin(l/2)**2+Math.cos(n(e.lat))*Math.cos(n(t.lat))*Math.sin(o/2)**2)))}function r(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:64,l=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:64,l=[],o=1/110574,a=1/(111320*Math.cos(e.lat*Math.PI/180)
1);for(let r=0;r<n;r++){let i=r/n*2*Math.PI,c=t*Math.cos(i),s=t*Math.sin(i);l.push({lat:e.lat+s*o,lng:e.lng+c*a})}return l}(e,t,n);return l.push(l[0]),{type:"Feature",properties:{NAME:"custom-circle",GEOID:"circle_".concat(e.lat.toFixed(5),"_").concat(e.lng.toFixed(5),"_").concat(Math.round(t))},geometry:{type:"Polygon",coordinates:[l.map(e=>[e.lng,e.lat])]}}}function i(e){if(e.length<3)throw Error("polygonToGeoJsonFeature: need â¥3 vertices");let t=[...e],n=t[0],l=t[t.length-1];return(n.lat!==l.lat||n.lng!==l.lng)&&t.push(n),{type:"Feature",properties:{NAME:"custom-polygon",GEOID:"polygon_".concat(e.length,"_").concat(n.lat.toFixed(4),"_").concat(n.lng.toFixed(4),"_").concat(e[e.length-1].lat.toFixed(4),"_").concat(e[e.length-1].lng.toFixed(4))},geometry:{type:"Polygon",coordinates:[t.map(e=>[e.lng,e.lat])]}}}function c(e,t){let n=t/110574,l=t/(111320*Math.cos(e.lat*Math.PI/180));return{north:e.lat+n,south:e.lat-n,east:e.lng+l,west:e.lng-l}}function s(e){let t=-1/0,n=1/0,l=-1/0,o=1/0;for(let a of e)a.lat>t&&(t=a.lat),a.lat<n&&(n=a.lat),a.lng>l&&(l=a.lng),a.lng<o&&(o=a.lng);return{north:t,south:n,east:l,west:o}}function u(e,t){let n=e.lng,l=e.lat,o=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let[r,i]=t[e],[c,s]=t[a];i>l!=s>l&&n<(c-r)*(l-i)/(s-i+1e-12)+r&&(o=!o)}return o}function g(e,t){try{let n=(0,l.zx)([e.lng,e.lat]);return("FeatureCollection"===t.type?t.features:[t]).some(e=>(0,o.m)(n,e))}catch(e){return!1}}function h(e){return e/1609.344}function b(e){return 1609.344*e}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.