fluxflow-cli 4.39.0 → 4.40.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{ai-Z2RCLVQR.js → ai-7QKBUDTZ.js} +1 -1
- package/dist/chunks/app-UJZARXCV.js +324 -0
- package/dist/chunks/{auto_completion-AIWB2XM2.js → auto_completion-RBEVTROV.js} +2 -2
- package/dist/chunks/{chunk-M2LU3TCU.js → chunk-APL7DQ7S.js} +1 -1
- package/dist/chunks/chunk-JTITXS7B.js +1 -0
- package/dist/chunks/{chunk-MX5Q32YU.js → chunk-OLQYLDNC.js} +1 -1
- package/dist/chunks/{chunk-HIP66OBL.js → chunk-UYWKQZ3D.js} +175 -173
- package/dist/chunks/{chunk-IXXTQAO2.js → chunk-WWRLNBDT.js} +1 -1
- package/dist/chunks/{click-O33RKVOZ.js → click-DL6M37AS.js} +2 -2
- package/dist/chunks/{computer_action-BUZAZ3LJ.js → computer_action-EMOKDYYR.js} +1 -1
- package/dist/chunks/{drag-BZRZLDLG.js → drag-WOY67DNR.js} +1 -1
- package/dist/chunks/{generate_image-N2SIC5BA.js → generate_image-NZGID2Y2.js} +1 -1
- package/dist/chunks/{invoke-O2YAE4FY.js → invoke-ABHHLDTD.js} +2 -2
- package/dist/chunks/{invokeSync-URGZXNDC.js → invokeSync-RNFLZCPV.js} +2 -2
- package/dist/chunks/{key_press-Y7F3VAKL.js → key_press-A7AVAUQA.js} +1 -1
- package/dist/chunks/{keyboard_typing-IEVRWQJJ.js → keyboard_typing-COAVEOJM.js} +1 -1
- package/dist/chunks/{screen_grid-7APUBF2H.js → screen_grid-DMDO5YC3.js} +1 -1
- package/dist/chunks/{scroll-FIN5Z7W4.js → scroll-OFESVZ7L.js} +1 -1
- package/dist/chunks/{search_keyword-YLKWY2XH.js → search_keyword-IXMFP35K.js} +1 -1
- package/dist/chunks/{settings-IGHDSHFT.js → settings-4VMHJDHK.js} +1 -1
- package/dist/chunks/{update_file-CYGKZXSH.js → update_file-3WHORCBX.js} +1 -1
- package/dist/chunks/{usage-IR23BYQX.js → usage-FDNLBYGE.js} +1 -1
- package/dist/chunks/{usageServer-ZYJCDO27.js → usageServer-FRXNO6LD.js} +1 -1
- package/dist/chunks/{write_file-TZ2Q6CEB.js → write_file-LNHCLACS.js} +1 -1
- package/dist/cli.js +5 -6
- package/dist/package.json +2 -2
- package/package.json +2 -2
- package/dist/chunks/app-IKYO4AHO.js +0 -331
- package/dist/chunks/chunk-EUNKA2MP.js +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{y as
|
|
1
|
+
import{y as u}from"./chunk-UYWKQZ3D.js";import"./chunk-HFTI3R3Q.js";import"./chunk-52STSLCN.js";import"./chunk-56EJGQU3.js";import"./chunk-M46I73DX.js";import"./chunk-IUN7DBB4.js";import"./chunk-6H2P5XUL.js";import"./chunk-6EYQQ7GQ.js";import"./chunk-4BLSASW6.js";import"./chunk-Y5JU726N.js";import{b as p}from"./chunk-FXRFFNRK.js";import"./chunk-WWRLNBDT.js";import{b as d}from"./chunk-JTITXS7B.js";import{o as a}from"./chunk-KMOTPBF5.js";import"./chunk-P5HBJA23.js";import{a as l}from"./chunk-26BQ45XP.js";import m from"fs";import g from"path";var f=["Identity: Embedded IDE code completion engine","Context given: Code \xB1 cursor, file name & language","Task: Predict contextually accurate code at cursor position","","Rules:","- Return ONLY the raw code to insert at the cursor. No explanations, commentary or rambling","- Do NOT wrap in markdown code fences","- NEVER repeat code that exist before & after cursor, if nothing sensible possible to predict, return empty string","- Match surrounding indentation and code style","- Complete the current line statement","- Never include placeholder comments like // TODO or # your code here","- Do not put anything except the code to insert between the tags"].join(`
|
|
2
2
|
`);try{let t=g.join(l,".cache");m.existsSync(t)||m.mkdirSync(t,{recursive:!0}),m.writeFileSync(g.join(t,"completion.json"),JSON.stringify({systemPrompt:f},null,2))}catch{}var y=t=>{if(!t)return"";let e=t.match(/<completion>([\s\S]*?)<\/completion>/i);return e?e[1]:t},x=({prefix:t="",suffix:e="",fileName:o="",language:n="",recentChanges:r="",clipboard:i=""})=>{let c=r?["### Recent manual changes (context):",r,""]:[],s=i?["### Clipboard (context):",i,""]:[];return[`File: ${o}`,`Language: ${n}`,"","### Code before cursor:",t,"","[cursor here]","","### Code after cursor:",e,"",...c,...s,"### Completion to insert at cursor:"].join(`
|
|
3
|
-
`)},T=async(t={})=>{try{let e=await
|
|
3
|
+
`)},T=async(t={})=>{try{let e=await d(),o=e.autoCompletion||{};if(!o.enabled)return"";let n=o.provider||e.aiProvider||"Google",r=o.model&&o.model!=="Default"?o.model:e.activeModel||a(n,e.apiTier)||a(n,"paid");if(!r)return"";let i=await p(n);if(!i&&!(n==="c_openai"&&e.systemSettings?.customOpenAIBaseUrl))return"";let c={aiProvider:n,apiKey:i,model:r,mode:"flow",thinkingLevel:"Fast",systemSettings:e.systemSettings||{}},s=[{role:"user",parts:[{text:x(t)}]}],{text:h}=await u(c,r,s,f,"Fast");return y(h||"")}catch{return""}};export{f as AUTOCOMPLETE_SYSTEM_PROMPT,y as extractCompletion,T as generateAutoCompletion};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as f}from"./chunk-
|
|
1
|
+
import{g as f}from"./chunk-OLQYLDNC.js";import{mouse as c,keyboard as i,Button as u,Key as e,Point as l,clipboard as g}from"@nut-tree-fork/nut-js";c.config.autoDelayMs=50;i.config.autoDelayMs=50;async function w(){try{await i.releaseKey(e.LeftControl,e.RightControl,e.LeftAlt,e.RightAlt,e.LeftShift,e.RightShift,e.LeftSuper,e.RightSuper)}catch{}}async function h(n,t,s={}){let r=await f(t);if(!r&&(n==="move"||n==="click"||n==="drag"))return`ERROR: Invalid target location specified: ${JSON.stringify(t)}`;try{switch(n.toLowerCase()){case"move":return await c.setPosition(new l(r.x,r.y)),`Moved mouse to grid target ${typeof t=="string"?t:`(${r.x}, ${r.y})`}`;case"click":{await c.setPosition(new l(r.x,r.y));let a=s.button==="right"?u.RIGHT:s.button==="middle"?u.MIDDLE:u.LEFT;return s.clickType==="double"?await c.doubleClick(a):await c.click(a),`${s.clickType||"Single"} clicked ${s.button||"left"} button at ${typeof t=="string"?t:`(${r.x}, ${r.y})`}`}case"drag":{let a=await f(s.from||t),o=await f(s.to);return!a||!o?'ERROR: Drag requires valid "from" and "to" target coordinates/grid codes.':(await c.setPosition(new l(a.x,a.y)),await c.pressButton(u.LEFT),await c.setPosition(new l(o.x,o.y)),await c.releaseButton(u.LEFT),`Dragged mouse from (${a.x}, ${a.y}) to (${o.x}, ${o.y})`)}case"scroll":{let a=r||await f({x:640,y:360});a&&(await c.setPosition(new l(a.x,a.y)),await new Promise(d=>setTimeout(d,60)));let o=parseInt(s.amount,10);(isNaN(o)||o<=0)&&(o=5);let y=o>50?Math.min(20,Math.max(1,Math.round(o/100))):Math.min(20,o),R=s.direction==="up";for(let d=0;d<y;d++)R?await c.scrollUp(120):await c.scrollDown(120),await new Promise(L=>setTimeout(L,20));return`Scrolled ${s.direction||"down"} (${y} notches${r?` at target (${r.x}, ${r.y})`:" at screen center"})`}default:return`ERROR: Unsupported mouse action "${n}"`}}catch(a){return`ERROR: Mouse action failed: ${a.message}`}}var m={enter:e.Enter,return:e.Return,escape:e.Escape,esc:e.Escape,backspace:e.Backspace,tab:e.Tab,space:e.Space,up:e.Up,down:e.Down,left:e.Left,right:e.Right,ctrl:e.LeftControl,control:e.LeftControl,alt:e.LeftAlt,shift:e.LeftShift,cmd:e.LeftCmd,win:e.LeftWin,meta:e.LeftWin,super:e.LeftSuper,a:e.A,b:e.B,c:e.C,d:e.D,e:e.E,f:e.F,g:e.G,h:e.H,i:e.I,j:e.J,k:e.K,l:e.L,m:e.M,n:e.N,o:e.O,p:e.P,q:e.Q,r:e.R,s:e.S,t:e.T,u:e.U,v:e.V,w:e.W,x:e.X,y:e.Y,z:e.Z,0:e.Num0,1:e.Num1,2:e.Num2,3:e.Num3,4:e.Num4,5:e.Num5,6:e.Num6,7:e.Num7,8:e.Num8,9:e.Num9,f1:e.F1,f2:e.F2,f3:e.F3,f4:e.F4,f5:e.F5,f6:e.F6,f7:e.F7,f8:e.F8,f9:e.F9,f10:e.F10,f11:e.F11,f12:e.F12},p=n=>{if(!n)return;let t=String(n).toLowerCase().trim();if(m[t]!==void 0)return m[t];if(e[n]!==void 0)return e[n];if(e[t.toUpperCase()]!==void 0)return e[t.toUpperCase()]};async function E(n,t,s={}){try{switch(n.toLowerCase()){case"type":{if(typeof t!="string")return"ERROR: Type action requires a valid string input";await w(),await g.setContent(t);let a=process.platform==="darwin"?e.LeftSuper:e.LeftControl;return await i.pressKey(a,e.V),await i.releaseKey(a,e.V),await w(),s.autoPressEnter?(await new Promise(o=>setTimeout(o,50)),await i.type(e.Enter),`Typed text input ("${t.length>20?t.substring(0,20)+"...":t}") and pressed Enter`):`Typed text input ("${t.length>20?t.substring(0,20)+"...":t}")`}case"key_press":{let r=p(t);return r===void 0?`ERROR: Unknown key name "${t}"`:(await i.type(r),`Pressed key ${t}`)}case"key_combination":{if(!Array.isArray(t))return'ERROR: key_combination requires an array of keys (e.g. ["ctrl", "c"])';let r=t.map(a=>p(a)).filter(a=>a!==void 0);return r.length===0?"ERROR: Invalid key combination":(await i.pressKey(...r),await i.releaseKey(...r),`Executed key combination [${t.join(" + ")}]`)}case"clear_input":return await i.pressKey(e.LeftControl,e.A),await i.releaseKey(e.LeftControl,e.A),await i.type(e.Backspace),"Cleared active text input (Select All + Backspace)";case"browser_back":{let r=process.platform==="darwin";return r?(await i.pressKey(e.LeftSuper,e.Left),await i.releaseKey(e.LeftSuper,e.Left)):(await i.pressKey(e.LeftAlt,e.Left),await i.releaseKey(e.LeftAlt,e.Left)),await w(),`Browser back navigation (${r?"Cmd+Left":"Alt+Left"})`}default:return`ERROR: Unsupported keyboard action "${n}"`}}catch(r){return`ERROR: Keyboard action failed: ${r.message}`}}export{h as a,E as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as m,f as c}from"./chunk-P5HBJA23.js";import{b as s}from"./chunk-26BQ45XP.js";import r from"fs-extra";import p from"path";var o={mode:"Flux",display:0,thinkingLevel:"Medium",aiProvider:"",activeModel:"",showFullThinking:!0,apiTier:"Free",quotas:{agentLimit:999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0,providerTiers:{Google:"Free",DeepSeek:"Free",NVIDIA:"Free",OpenRouter:"Free",InferX:"Free",SenseNova:"Free",Poolside:"Free",ExpLabs:"Free",TokenHarbor:"Free",Infron:"Free",APInex:"Free",c_openai:"Free"}},systemSettings:{customOpenAIBaseUrl:"",memory:!1,theme:"Dark",compression:0,autoExec:!0,allowExternalAccess:!1,advanceRollback:!1,autoDeleteHistory:"7d",useExternalData:!1,externalDataPath:"",preserveThinking:!0,loadingPhrases:!1,progressiveRendering:!0,showTPMEstimate:!0,subAgents:!1,CustomSubAgent:!1,SubAgentModel:"Default",SubAgentProvider:"",dynamicDirAwareness:!1,indentationTree:!0,ollamaEndpoint:"Cloud",compressToolResults:!1,autoTruncateResults:!0,imageHistoryCU:"Standard",contextLength:"256k",keepReasoningContext:!1,autoExcludeMetadata:!1,disableTodo:!1,clipboardContext:!1,cacheCalculateMode:"Session",alwaysAskFiles:".env, .env.*, *.env"},profileData:{preset:"Default",name:null,nickname:null,instructions:null},imageSettings:{keyType:"Default",quality:"Low-High",apiKey:""},autoCompletion:{enabled:!1,model:"Default",provider:"",baseUrl:""}},x={Mistral:"https://api.mistral.ai/v1/chat/completions",DeepSeek:"https://api.deepseek.com/chat/completions",OpenRouter:"https://openrouter.ai/api/v1/chat/completions",NVIDIA:"https://integrate.api.nvidia.com/v1",Ollama:"https://ollama.com/v1",InferX:"https://model.inferx.net/endpoints/v1/chat/completions",SenseNova:"https://token.sensenova.ai/v1/chat/completions",Poolside:"https://inference.poolside.ai/v1/chat/completions",ExpLabs:"https://api.experientiallabs.ai/v1/chat/completions",TokenHarbor:"https://tokenharbor.ai/v1/chat/completions",Infron:"https://llm.onerouter.pro/v1/chat/completions",APInex:"https://api.apinex.bond/v1/chat/completions",AIHubMix:"https://aihubmix.com/v1/chat/completions",Google:"https://generativelanguage.googleapis.com/v1beta/openai/chat/completions"},g=async()=>{let t={...o};try{if(await r.exists(s)){let e=m(s);if(e.imageSettings&&e.imageSettings.apiKey)try{let a=e.imageSettings.apiKey,{saveSecret:i}=await import("./secrets-5TCTEPEV.js");await i("POLLINATIONS_API_KEY",a),e.imageSettings.apiKey="",c(s,e)}catch{}t={...o,...e,quotas:{...o.quotas,...e.quotas,providerTiers:{...o.quotas.providerTiers,...e.quotas?.providerTiers||{}}},systemSettings:{...o.systemSettings,...e.systemSettings},profileData:{...o.profileData,...e.profileData},imageSettings:{...o.imageSettings,...e.imageSettings},autoCompletion:{...o.autoCompletion,...e.autoCompletion}}}}catch(e){console.error("Failed to load settings:",e)}try{let{getSecret:e}=await import("./secrets-5TCTEPEV.js"),a=await e("POLLINATIONS_API_KEY");a&&(t.imageSettings.apiKey=a)}catch{}if(t.showFullThinking===!1){t.showFullThinking=!0;try{c(s,t)}catch{}}return t},d=async t=>{let{FLUXFLOW_DIR:e}=await import("./paths-RQRI2XRY.js"),a=["logs","secret"];for(let i of a){let l=p.join(e,i),n=p.join(t,i);try{await r.exists(l)&&(await r.ensureDir(n),await r.copy(l,n,{overwrite:!0}))}catch(u){console.error(`Migration failed for ${i}:`,u)}}},D=async t=>{try{let e=await g();if(!e.systemSettings.useExternalData&&t.systemSettings?.useExternalData&&t.systemSettings?.externalDataPath&&await d(t.systemSettings.externalDataPath),t.imageSettings&&t.imageSettings.apiKey!==void 0){let{saveSecret:i,removeSecret:l}=await import("./secrets-5TCTEPEV.js"),n=t.imageSettings.apiKey;n?await i("POLLINATIONS_API_KEY",n):await l("POLLINATIONS_API_KEY")}let a={...e,...t};a.systemSettings&&(a.systemSettings.dynamicDirAwareness=!1),a.imageSettings&&(a.imageSettings={...a.imageSettings,apiKey:""}),await r.ensureDir(p.dirname(s)),c(s,a);try{let{invalidateCachedBaseUrl:i}=await import("./usage-FDNLBYGE.js");i()}catch{}return!0}catch(e){return console.error("Failed to save settings:",e),!1}};export{x as a,g as b,D as c};
|
|
@@ -2,4 +2,4 @@ import{screen as V}from"@nut-tree-fork/nut-js";import P from"screenshot-desktop"
|
|
|
2
2
|
<rect x="${M+1}" y="${m+1}" width="${X-2}" height="${a-2}" fill="rgba(0, 255, 255, 0.015)" stroke="rgba(255, 255, 0, 0.3)" stroke-width="1.1" rx="2"/>
|
|
3
3
|
`;let x=s.some(t=>t!==n&&t.startY+t.cellH>=m-6&&t.startY<m&&Math.max(0,Math.min(M+X,t.startX+t.cellW)-Math.max(M,t.startX))>10),T=s.some(t=>t!==n&&t.startY<=m+a+6&&t.startY>m&&Math.max(0,Math.min(M+X,t.startX+t.cellW)-Math.max(M,t.startX))>10),u;if(n.isCustomY)u=f,!x&&u<m+11&&(u=Math.max(10,Math.min(u,m+4)));else{let t=n.yOffset!==void 0?n.yOffset:3;!x&&t<0&&(t=Math.min(t,-12));let w=f+t,W=!x&&(t<0||w<m+11)?Math.max(10,m+4):m+11,I=!T&&(t>0||w>m+a-2)?Math.min(o-2,m+a+6):m+a+3;u=Math.max(W,Math.min(I,w))}p+=`
|
|
4
4
|
<text x="${l}" y="${u}" font-family="'Segoe UI', Roboto, sans-serif" font-size="14" font-weight="600" fill="#FFFF00" stroke="#000000" stroke-width="2" paint-order="stroke fill" stroke-linejoin="round" opacity="0.8" text-anchor="middle">${y}</text>
|
|
5
|
-
`}return`<svg width="${e}" height="${o}" xmlns="http://www.w3.org/2000/svg">${p}</svg>`}var tt=1,j=e=>new Promise(o=>setTimeout(o,e));async function et(){try{let{loadSettings:e}=await import("./settings-
|
|
5
|
+
`}return`<svg width="${e}" height="${o}" xmlns="http://www.w3.org/2000/svg">${p}</svg>`}var tt=1,j=e=>new Promise(o=>setTimeout(o,e));async function et(){try{let{loadSettings:e}=await import("./settings-4VMHJDHK.js"),o=await e();return Number(o.display||0)}catch{return 0}}async function lt(){let e=await et();try{let o=await P.listDisplays();if(o&&o.length>0)return{format:"png",screen:(o[e]||o[0]).id}}catch{}return{format:"png"}}async function ct(){let e=0,o=await lt();for(;e<2;){let C=await P(o);await j(500);let Y=await P(o);if(C.equals(Y))return Y;e++,e<2&&await j(3e3)}return await j(3e3),await P(o)}function at(e=[],o=[]){if(!e||e.length===0)return o||[];if(!o||o.length===0)return e;let C=[...e],Y=typeof e.getModelConfidence=="function"?e.getModelConfidence.bind(e):null;for(let s of o){if(Y&&Y(s.startX,s.startY,s.cellW,s.cellH)<.01)continue;let c=s.startX,i=s.startX+s.cellW,p=s.startY,n=s.startY+s.cellH;for(let y of e){let x=y.startX,T=y.startY,u=y.startX+y.cellW,t=y.startY+y.cellH;if(Math.max(0,Math.min(n,t)-Math.max(p,T))>s.cellH*.4&&x<i&&u>c){let W=(x+u)/2,I=(c+i)/2;W<=I?c=Math.max(c,u):i=Math.min(i,x)}}let r=i-c;if(r<18)continue;let g=c,M=p,m=i,X=n,a=Math.floor(c+r/2),l=s.cy,f=!1;for(let y of e){let x=y.startX,T=y.startY,u=y.startX+y.cellW,t=y.startY+y.cellH;if(a>=x&&a<=u&&l>=T&&l<=t){f=!0;break}let w=Math.max(g,x),W=Math.max(M,T),I=Math.min(m,u),v=Math.min(X,t),H=Math.max(0,I-w)*Math.max(0,v-W),d=(m-g)*(X-M);if(H/(d||1)>=.25){f=!0;break}}f||C.push({...s,startX:g,cellW:r,cx:a})}return C.sort((s,c)=>Math.abs(s.startY-c.startY)>18?s.startY-c.startY:s.startX-c.startX),C.forEach((s,c)=>{s.badgeId=c+1}),C}async function yt(){try{let e=await ct(),o=null;if(st){let n=(async()=>{try{let{detectUIBoxesONNX:r}=await import("./ui_detector_onnx-XRKXFWLG.js");return await r(e,h.TARGET_WIDTH,h.TARGET_HEIGHT)}catch{return null}})();if(nt)o=await n||[];else{let r=z(e,!0),[g,M]=await Promise.all([n,r]);o=g&&g.length>0?at(g,M):await z(e,!1)}}else o=await z(e,!1);L=o;let C=rt(h.TARGET_WIDTH,h.TARGET_HEIGHT,h.COLS,h.ROWS,o),Y=await Z(e).resize(h.TARGET_WIDTH,h.TARGET_HEIGHT,{fit:"fill"}).composite([{input:Buffer.from(C),top:0,left:0}]).png({quality:100}).toBuffer();if(process.env.SHOW_DEBUG_GRID)try{let n=Q.resolve(process.cwd(),"screenshots");await K.ensureDir(n);let r=Q.join(n,`${tt}.png`);await K.writeFile(r,Y),tt++}catch{}let s=Y.toString("base64"),c=o.length,i=e,p=Y;return i=null,p=null,{base64:s,mimeType:"image/png",width:h.TARGET_WIDTH,height:h.TARGET_HEIGHT,detectedCount:c}}catch(e){return console.error("Failed to capture gridded screenshot:",e),null}}function it(e){if(e==null)return null;let o=null;if(typeof e=="number")o=e;else if(typeof e=="string"){let g=e.trim();if(/^\d+$/.test(g))o=parseInt(g,10);else{let M=g.match(/^([A-Z])([0-9]{1,2})$/i);if(M){let m=M[1].toUpperCase().charCodeAt(0)-65,X=parseInt(M[2],10)-1;o=m*h.COLS+X+1}}}if(o===null||isNaN(o))return null;if(L&&L.length>0){let g=L.find(M=>M.badgeId===o)||L.find(M=>M.cellNum===o);if(g){let M=Math.floor((g.cellNum-1)%h.COLS),m=Math.floor((g.cellNum-1)/h.COLS);return{x:g.cx,y:g.cy,colIdx:M>=0?M:0,rowIdx:m>=0?m:0,cellNum:o}}}let C=h.COLS*h.ROWS;if(o<1||o>C)return null;let Y=o-1,s=Math.floor(Y/h.COLS),c=Y%h.COLS,i=h.TARGET_WIDTH/h.COLS,p=h.TARGET_HEIGHT/h.ROWS,n=Math.floor(c*i+i/2),r=Math.floor(s*p+p/2);return{x:n,y:r,colIdx:c,rowIdx:s,cellNum:o}}async function Mt(e,o,C){let Y=null;if(typeof e=="number"||typeof e=="string"?Y=it(e):e&&typeof e.x=="number"&&typeof e.y=="number"&&(Y=e),!Y)return null;let s=o,c=C,i=0,p=0,n=await et();try{let X=await P.listDisplays();if(X&&X.length>0){let a=X[n]||X[0];a.width&&a.height&&(s=a.width,c=a.height),a.left!==void 0&&(i=a.left),a.top!==void 0&&(p=a.top)}}catch{}if(!s||!c)try{let X=await P({}),a=await Z(X).metadata();a&&a.width&&a.height?(s=a.width,c=a.height):(s=await V.width(),c=await V.height())}catch{(!s||!c)&&(s=await V.width(),c=await V.height())}let r=s/h.TARGET_WIDTH,g=c/h.TARGET_HEIGHT,M=Math.round(Y.x*r)+i,m=Math.round(Y.y*g)+p;return{x:M,y:m,screenW:s,screenH:c,offsetX:i,offsetY:p}}function pt(e){if(!e||typeof e.x!="number"||typeof e.y!="number")return null;if(L&&L.length>0){let c=L.find(n=>e.x>=n.startX&&e.x<=n.startX+n.cellW&&e.y>=n.startY&&e.y<=n.startY+n.cellH);if(c)return c.badgeId!==void 0?c.badgeId:c.cellNum;let i=null,p=1/0;for(let n of L){let r=e.x-n.cx,g=e.y-n.cy,M=r*r+g*g;M<p&&(p=M,i=n)}if(i&&p<=2025)return i.badgeId!==void 0?i.badgeId:i.cellNum}let o=h.TARGET_WIDTH/h.COLS,C=h.TARGET_HEIGHT/h.ROWS,Y=Math.max(0,Math.min(h.COLS-1,Math.floor(e.x/o)));return Math.max(0,Math.min(h.ROWS-1,Math.floor(e.y/C)))*h.COLS+Y+1}export{h as a,st as b,nt as c,et as d,yt as e,it as f,Mt as g,pt as h};
|