Some checks failed
Publish to npm / publish (push) Has been cancelled
- Remove all Chinese characters from src/, example/, ios/, patches/, tests/ - Add esbuild-based build obfuscation (minify + identifier mangle + no sourcemaps) - Drop src/ from npm publish, only ship minified dist/ - Remove source maps and declaration maps from build output - Add README icons and visual polish throughout - Fix broken Table of Contents anchor links in README Co-authored-by: Cursor <cursoragent@cursor.com>
2 lines
5.2 KiB
JavaScript
2 lines
5.2 KiB
JavaScript
"use strict";var k=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var $=(t,n)=>{for(var i in n)k(t,i,{get:n[i],enumerable:!0})},L=(t,n,i,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of I(n))!U.call(t,r)&&r!==i&&k(t,r,{get:()=>n[r],enumerable:!(e=S(n,r))||e.enumerable});return t};var E=t=>L(k({},"__esModule",{value:!0}),t);var z={};$(z,{buildAllRegionOutlinePaths:()=>Y,buildRegionOutlinePathForRegion:()=>X});module.exports=E(z);var p=require("@shopify/react-native-skia"),R=require("./maskSegmentRuntime");function P(t,n,i,e,r){return e>=0&&e<n&&r>=0&&r<i&&t[r*n+e]>0}function O(t,n,i){const e=[];for(let r=0;r<i;r++){const u=r*n;for(let o=0;o<n;o++)t[u+o]&&(P(t,n,i,o,r-1)||e.push({x0:o,y0:r,x1:o+1,y1:r}),P(t,n,i,o,r+1)||e.push({x0:o+1,y0:r+1,x1:o,y1:r+1}),P(t,n,i,o-1,r)||e.push({x0:o,y0:r+1,x1:o,y1:r}),P(t,n,i,o+1,r)||e.push({x0:o+1,y0:r,x1:o+1,y1:r+1}))}return e}function B(t){const n=new Map,i=u=>`${u.x0},${u.y0}->${u.x1},${u.y1}`;for(const u of t){const o=`${u.x0},${u.y0}`,s=n.get(o);s?s.push(u):n.set(o,[u])}const e=new Set,r=[];for(const u of t){const o=i(u);if(e.has(o))continue;const s=[{x:u.x0,y:u.y0}];let a=u;for(e.add(o),s.push({x:a.x1,y:a.y1});;){const f=`${a.x1},${a.y1}`,c=`${s[0].x},${s[0].y}`;if(f===c&&s.length>2)break;const h=n.get(f)?.find(d=>!e.has(i(d)));if(!h||(a=h,e.add(i(a)),s.push({x:a.x1,y:a.y1}),s.length>t.length+1))break}s.length>=4&&r.push(s)}return r}function C(t){if(t.length<=3)return t;const n=[t[0]];for(let i=1;i<t.length-1;i++){const e=n[n.length-1],r=t[i],u=t[i+1],o=e.x===r.x&&r.x===u.x,s=e.y===r.y&&r.y===u.y;!o&&!s&&n.push(r)}return n.push(t[t.length-1]),n}function j(t,n,i){const e=i.x-n.x,r=i.y-n.y;if(e===0&&r===0)return Math.hypot(t.x-n.x,t.y-n.y);const u=((t.x-n.x)*e+(t.y-n.y)*r)/(e*e+r*r),o=n.x+u*e,s=n.y+u*r;return Math.hypot(t.x-o,t.y-s)}function G(t,n){if(t.length<=2)return t;let i=0,e=0;const r=t.length-1,u=t[0],o=t[r];for(let s=1;s<r;s++){const a=t[s],f=j(a,u,o);f>i&&(i=f,e=s)}if(i>n){const s=G(t.slice(0,e+1),n),a=G(t.slice(e),n);return[...s.slice(0,-1),...a]}return[u,o]}function K(t,n,i,e){const r=p.Skia.Path.Make();for(const u of t){const o=C(u),s=G(o,1);if(s.length<2)continue;const[a,...f]=s;r.moveTo(e.x+a.x/n*e.w,e.y+a.y/i*e.h);for(const c of f)r.lineTo(e.x+c.x/n*e.w,e.y+c.y/i*e.h);r.close()}return r}function v(t,n,i){let e=!1;for(let r=0,u=i.length-1;r<i.length;u=r++){const o=i[r].x,s=i[r].y,a=i[u].x,f=i[u].y;s>n!=f>n&&t<(a-o)*(n-s)/(f-s+Number.EPSILON)+o&&(e=!e)}return e}function g(t){if(t.length===0)return 0;let n=t[0].x,i=t[0].x,e=t[0].y,r=t[0].y;for(const u of t)n=Math.min(n,u.x),i=Math.max(i,u.x),e=Math.min(e,u.y),r=Math.max(r,u.y);return(i-n)*(r-e)}function D(t,n,i,e){if(t.length===0)return t;const r=Math.max(16,Math.floor(n*i*5e-5)),u=t.filter(a=>g(a)>=r),o=u.length>0?u:t;if(e){const a=e.x+.5,f=e.y+.5,c=o.filter(x=>v(a,f,x));if(c.length>0)return c.sort((x,h)=>g(h)-g(x)),c}o.sort((a,f)=>g(f)-g(a));const s=g(o[0])*.05;return o.filter(a=>g(a)>=s)}function F(t,n,i,e,r){if(e<0||r<0||e>=n||r>=i||!t[r*n+e])return null;const u=new Uint8Array(n*i),o=[r*n+e];for(u[o[0]]=255;o.length>0;){const s=o.pop(),a=s%n,f=(s-a)/n;if(a>0){const c=s-1;t[c]&&!u[c]&&(u[c]=255,o.push(c))}if(a+1<n){const c=s+1;t[c]&&!u[c]&&(u[c]=255,o.push(c))}if(f>0){const c=s-n;t[c]&&!u[c]&&(u[c]=255,o.push(c))}if(f+1<i){const c=s+n;t[c]&&!u[c]&&(u[c]=255,o.push(c))}}return u}function N(t,n,i){const e=new Uint8Array(n*i);let r=0,u=null;for(let o=0;o<i;o++){const s=o*n;for(let a=0;a<n;a++){const f=s+a;if(!t[f]||e[f])continue;let c=0,x=0,h=0;const d=[f];for(e[f]=1;d.length>0;){const y=d.pop();c+=1;const l=y%n,b=(y-l)/n;if(x+=l,h+=b,l>0){const m=y-1;t[m]&&!e[m]&&(e[m]=1,d.push(m))}if(l+1<n){const m=y+1;t[m]&&!e[m]&&(e[m]=1,d.push(m))}if(b>0){const m=y-n;t[m]&&!e[m]&&(e[m]=1,d.push(m))}if(b+1<i){const m=y+n;t[m]&&!e[m]&&(e[m]=1,d.push(m))}}c>r&&(r=c,u={x:Math.floor(x/c),y:Math.floor(h/c)})}}return u}function w(t,n,i,e,r){let u=t;if(r){const f=F(t,n,i,r.x,r.y);if(!f)return p.Skia.Path.Make();u=f}const o=O(u,n,i),s=B(o),a=D(s,n,i,r);return K(a,n,i,e)}function T(t,n,i,e){return e?{x:Math.min(n-1,Math.max(0,Math.floor(e.x*n))),y:Math.min(i-1,Math.max(0,Math.floor(e.y*i)))}:N(t,n,i)??void 0}function X(t,n,i,e,r){const o=A(n,i).get(t);if(!o)return p.Skia.Path.Make();const{cols:s,rows:a}=i,f=T(o,s,a,r);return w(o,s,a,e,f)}function A(t,n){const{labels:i,baseboardBinary:e,cols:r,rows:u,wallSubLabels:o}=n,s=r*u,a=new Map,f=(0,R.getMaskSegmentRuntimeConfig)().mask.semanticColors,c=new Int32Array(f.length);c.fill(-1);const x=new Map;let h=null;for(const l of t){if(a.set(l.id,new Uint8Array(s)),l.thinStrip){h=l.id;continue}const b=/^wall-(\d+)$/.exec(l.name);if(b&&o){x.set(Number(b[1])-1,l.id);continue}const m=f.findIndex(M=>M.name===l.name);m>=0&&(c[m]=l.id)}const d=f.length,y=f.findIndex(l=>l.name==="wall");for(let l=0;l<s;l++){if(h!=null&&e[l]>0){a.get(h)[l]=255;continue}if(o&&y>=0&&i[l]===y){const m=o[l];if(m!==255){const M=x.get(m);M!==void 0&&(a.get(M)[l]=255)}continue}const b=i[l];b<d&&c[b]>=0&&(a.get(c[b])[l]=255)}return a}function Y(t,n,i){const{cols:e,rows:r}=n,u=A(t,n),o=new Map;for(const s of t){const a=u.get(s.id);if(!a){o.set(s.id,p.Skia.Path.Make());continue}o.set(s.id,w(a,e,r,i))}return o}
|