mirror of
https://github.com/MichaelScottsman/LiquidAss-Frame.git
synced 2026-10-23 01:01:23 +02:00
118 lines
5.6 KiB
JSON
118 lines
5.6 KiB
JSON
{
|
|
"_doc": "C1a (PLAN-1a-3, G-MOCK): live selectors for the shell's mockups. Mockup member rects are the 60 px visible capsules; the live legends are the 84 px hit rows (light inset 12), so members read dy -12, dh +24 by design (WN §3.4.1). Back and the More circle: the mockup rect is the 60 px circle, the live rect its 80 px hit box (-10, -10, +20, +20). The tab bar is drawn at 10 items, p 58 (Console on); the device has 9 items today, so the live pitch is 66 (WN §3.3.2 rule 2). Run with --flags wp.p3,wp.c1a (T2 tags, Large Title, slots, the More circle). R2 (session 6): the library ornament hugs its members (R2-2), so the pre no longer registers ornamentSlots('library'); `trail` is Steam's laser Sort & Filter group (C2c's, the toolbar's trailing group). The window-bar row of window-nav-chrome lives in vr:systemui's atlas (its own entry, --name window-nav-chrome-row): an atlas position is not a place in the room, so each element's mockOrigin puts its top-left on the mockup's and only sizes are compared (dx, dy 0 by construction); its mockScale converts the mockup's mm (371.3 px = 283 mm of frame controls) to each panel's px (frame controls 488 px = 283 mm: 0.7609; grab bar 467 px = 140 mm per WN 3.5.2: 0.3918). Placement in the room is AT-17's (DumpLaserOverlays, hv).",
|
|
"surface": "main",
|
|
"mockScale": 1,
|
|
"mockups": {
|
|
"window-nav-anatomy": {
|
|
"route": "/library/tab/AllGames",
|
|
"pre": "(async()=>{const R=window.__LGS_RT; await R.settled(); L.nav('/library/tab/AllGames'); await L.sleep(1800);const m=R.more.register('%{LibraryItemBox}',{placement:'card'}); const W=L.surface('main');const A=L.qa('main','%{LibraryItemBox}')[1]; const r=A.getBoundingClientRect();for (const t of ['pointerover','mouseover','pointermove','mousemove']) A.dispatchEvent(new (t.startsWith('pointer')?W.PointerEvent:W.MouseEvent)(t,{bubbles:true,clientX:r.x+r.width/2,clientY:r.y+r.height/2}));await L.sleep(800); setTimeout(()=>{try{m.remove();}catch(e){}},20000); return 'more '+R.more.nodes();})()",
|
|
"mockOrigin": [
|
|
320,
|
|
66
|
|
],
|
|
"map": {
|
|
"back": "#header %{BackContainer}",
|
|
"title": "#header > .lgs-title",
|
|
"search": "#header %{SearchAndTitleContainer}",
|
|
"more": ".lgs-more",
|
|
"orn-menu": "#Footer [data-lgs-btn=\"MENU\"]",
|
|
"orn-a": "#Footer [data-lgs-btn=\"OK\"]",
|
|
"orn-b": "#Footer [data-lgs-btn=\"CANCEL\"]",
|
|
"tabbar": {
|
|
"surface": "frame.menu",
|
|
"mockScale": 1.1,
|
|
"sel": "%{DashboardMenu}%{Variant_FrameMenu}",
|
|
"mockOrigin": [
|
|
-28,
|
|
-14
|
|
]
|
|
},
|
|
"trail": "%{SortAndFilterContainer}",
|
|
"ornament": "#Footer > .lgs-orn-plate"
|
|
}
|
|
},
|
|
"window-nav-tabbar": {
|
|
"route": "/library/downloads",
|
|
"pre": "(async()=>{await window.__LGS_RT.settled(); L.nav('/library/downloads'); await L.sleep(1800); await L.root(); await L.sleep(300);for (let i=0;i<3;i++){ if (JSON.stringify(L.focused()).includes('SearchBox')) break; await L.pad('up'); await L.sleep(350); }await L.pad('left'); await L.sleep(600);const fname=()=>{const e=L.q('frame.menu','%{DashboardMenu>Item}.gpfocus'); return e?(e.innerText||'').trim():'';};for (let i=0;i<12&&fname()!=='Store';i++){ const n=L.qa('frame.menu','%{DashboardMenu>Item}').map(e=>(e.innerText||'').trim()); await L.pad(n.indexOf(fname())>n.indexOf('Store')?'up':'down'); await L.sleep(350); }await L.sleep(900); return fname();})()",
|
|
"mockOrigin": [
|
|
380,
|
|
66
|
|
],
|
|
"map": {
|
|
"back": "#header %{BackContainer}",
|
|
"title": "#header > .lgs-title",
|
|
"search": "#header %{SearchAndTitleContainer}",
|
|
"orn-menu": "#Footer [data-lgs-btn=\"MENU\"]",
|
|
"orn-a": "#Footer [data-lgs-btn=\"OK\"]",
|
|
"orn-b": "#Footer [data-lgs-btn=\"CANCEL\"]",
|
|
"tabbar": {
|
|
"surface": "frame.menu",
|
|
"mockScale": 1.1,
|
|
"sel": "%{DashboardMenu}%{Variant_FrameMenu}",
|
|
"mockOrigin": [
|
|
32,
|
|
-14
|
|
]
|
|
},
|
|
"tab-store": {
|
|
"surface": "frame.menu",
|
|
"mockScale": 1.1,
|
|
"sel": "%{DashboardMenu>Item}.gpfocus",
|
|
"mockOrigin": [
|
|
32,
|
|
-14
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"window-nav-ornament": {
|
|
"route": "/settings/system",
|
|
"pre": "(async()=>{await window.__LGS_RT.settled(); L.nav('/settings/system'); await L.sleep(1800); return 1;})()",
|
|
"mockOrigin": [
|
|
20,
|
|
142
|
|
],
|
|
"map": {
|
|
"quiet-orn-a": "#Footer [data-lgs-btn=\"OK\"]",
|
|
"quiet-orn-b": "#Footer [data-lgs-btn=\"CANCEL\"]"
|
|
}
|
|
},
|
|
"window-nav-chrome": {
|
|
"route": "/library/tab/AllGames",
|
|
"pre": "(async()=>{const R=window.__LGS_RT; await R.settled(); L.nav('/library/tab/AllGames'); await L.sleep(1800);const m=R.more.register('%{LibraryItemBox}',{placement:'card'}); const W=L.surface('main');const A=L.qa('main','%{LibraryItemBox}')[1]; const r=A.getBoundingClientRect();for (const t of ['pointerover','mouseover','pointermove','mousemove']) A.dispatchEvent(new (t.startsWith('pointer')?W.PointerEvent:W.MouseEvent)(t,{bubbles:true,clientX:r.x+r.width/2,clientY:r.y+r.height/2}));await L.sleep(800); setTimeout(()=>{try{m.remove();}catch(e){}},20000); return 'more '+R.more.nodes();})()",
|
|
"mockOrigin": [
|
|
320,
|
|
-300
|
|
],
|
|
"map": {
|
|
"orn-menu": "#Footer [data-lgs-btn=\"MENU\"]",
|
|
"orn-a": "#Footer [data-lgs-btn=\"OK\"]",
|
|
"orn-b": "#Footer [data-lgs-btn=\"CANCEL\"]"
|
|
}
|
|
},
|
|
"window-nav-chrome-row": {
|
|
"surface": "vr:systemui",
|
|
"map": {
|
|
"framecap": {
|
|
"sel": "%{FrameControlsContainer}",
|
|
"surface": "vr:systemui",
|
|
"mockScale": 0.7609,
|
|
"mockOrigin": [
|
|
469.78,
|
|
285.06
|
|
]
|
|
},
|
|
"winbar-pill": {
|
|
"sel": "%{GrabHandleBar}",
|
|
"surface": "vr:systemui",
|
|
"mockScale": 0.3918,
|
|
"mockOrigin": [
|
|
831.75,
|
|
440.51
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|