1 | var e=require("fs")
|
2 | var r=require("url")
|
3 | var t=require("path")
|
4 | var n=require("child_process")
|
5 | var i=require("util")
|
6 | var a=require("electron")
|
7 | var o=require("./linux-scrot")
|
8 | const s=(0,i.promisify)(n.exec)
|
9 | const c=async()=>{const r=(0,t.join)(a.app.getPath("temp"),"temp-screenshot.png")
|
10 | await(async e=>{try{return await s(`gnome-screenshot --file ${e}`,{shell:!0})}catch(e){}try{return await s(`import -window root ${e}`,{shell:!0})}catch(e){}await(0,o.runLinuxSCROT)(e)})(r)
|
11 | const n=await((r,t="image/png")=>((e,r)=>`data:${r};base64,${e.toString("base64")}`)((0,e.readFileSync)(r),t))(r);(0,e.unlinkSync)(r)
|
12 | return n}
|
13 | const l=async({imageDataUrl:e})=>{const{width:n,height:i}=a.screen.getPrimaryDisplay().bounds
|
14 | if(!n||!i)throw new Error(`[pickColorWithBrowserWindow] invalid display bounds: ${JSON.stringify({width:n,height:i})}`)
|
15 | const o=new a.BrowserWindow({width:n,height:i,frame:!1,resizable:!1,scrollable:!1,fullscreen:!0,alwaysOnTop:!0,enableLargerThanScreen:!0,titleBarStyle:"hidden"})
|
16 | o.webContents.loadURL(((...e)=>(0,r.format)({pathname:(0,t.join)(...e),protocol:"file",slashes:!0}))(__dirname,"pick-color.html"))
|
17 | const s=await new Promise(r=>{o.on("closed",()=>{r("")})
|
18 | o.webContents.on("before-input-event",(e,t)=>{if("Escape"===t.key){e.preventDefault()
|
19 | r("")}})
|
20 | o.webContents.executeJavaScript(`window.PICK_COLOR({ IMAGE_DATA_URL: ${JSON.stringify(e)}, ZOOM: 10, GRID_COUNT: 17 })`).then(r)})
|
21 | o.close()
|
22 | return s}
|
23 | exports.runColorPicker=(async()=>{const e=await c()
|
24 | return{possibleColorString:await l({imageDataUrl:e})}})
|