diff --git a/dist/assets/index-M6NLxF6S.css b/dist/assets/index-DTY-5c6x.css
similarity index 79%
rename from dist/assets/index-M6NLxF6S.css
rename to dist/assets/index-DTY-5c6x.css
index f804e33..c93df3c 100644
--- a/dist/assets/index-M6NLxF6S.css
+++ b/dist/assets/index-DTY-5c6x.css
@@ -1 +1 @@
-body{margin:0;padding:0;background-color:gray}*{box-sizing:border-box}#applist{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-snap-stop:always}#applist-wrapper{width:100%}.applist-page{scroll-snap-align:start;display:grid;grid-template-columns:repeat(4,25%);grid-template-rows:repeat(5,20%);place-items:center;align-items:start;min-width:100vw;max-width:100vw;width:100vw;padding-bottom:25%;padding-top:5%}.applist-page>*:not(.section){width:auto;margin-bottom:5%;display:flex;flex-direction:column;align-items:center}.applist-page:has(.section){display:flex;flex-direction:column;align-items:center;padding:5%;gap:5%}#dock{padding:5%;margin:5%;gap:15px;border-radius:24px;background-color:#00000040;border:1px solid white;display:flex;justify-content:center;position:fixed;bottom:0;left:0;right:0}.section{padding:5%;border-radius:15px;background-color:#00000080;border:1px solid white;width:100%;color:#fff}.ui-button{border:none;border:1px solid white;border-radius:6px;padding:2%;background-color:#00000080;color:#fff;margin:1%}.app-icon[data-v-a45179cd]{display:flex;align-items:center;flex-direction:column;width:max-content;height:max-content}.app-icon .app-icon[data-v-a45179cd]>*:nth-child(n+2){padding-bottom:10px}.app-image[data-v-a45179cd]{width:14vw;height:auto;border-radius:12px}.app-label[data-v-a45179cd]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10pt;color:var(--label-color)}.app-package[data-v-a45179cd]{font-size:1px;color:#0000}img[data-v-27ae4006]{width:15%;height:auto}
+body{margin:0;padding:0;background-color:gray}*{box-sizing:border-box}#applist{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-snap-stop:always}#applist-wrapper{width:100%}.applist-page{scroll-snap-align:start;display:grid;grid-template-columns:repeat(4,25%);grid-template-rows:repeat(5,20%);place-items:center;align-items:start;min-width:100vw;max-width:100vw;width:100vw;padding-bottom:25%;padding-top:5%}.applist-page>*:not(.section){width:auto;margin-bottom:5%;display:flex;flex-direction:column;align-items:center}.applist-page:has(.section){display:flex;flex-direction:column;align-items:center;padding:5%;gap:5%}#dock{padding:5%;margin:5%;gap:15px;border-radius:24px;background-color:#00000040;border:1px solid white;display:flex;justify-content:center;position:fixed;bottom:0;left:0;right:0}.section{padding:5%;border-radius:15px;background-color:#00000080;border:1px solid white;width:100%;color:#fff}.ui-button{border:none;border:1px solid white;border-radius:6px;padding:2%;background-color:#00000080;color:#fff;margin:1%}.app-icon[data-v-c4a1272c]{display:flex;align-items:center;flex-direction:column;width:max-content;height:max-content}.app-icon .app-icon[data-v-c4a1272c]>*:nth-child(n+2){padding-bottom:10px}.app-image[data-v-c4a1272c]{width:14vw;height:auto;border-radius:12px}.app-label[data-v-c4a1272c]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10pt;color:var(--label-color)}.app-package[data-v-c4a1272c]{font-size:1px;color:#0000}img[data-v-27ae4006]{width:15%;height:auto}
diff --git a/dist/assets/index-zJphMIID.js b/dist/assets/index-IwuFnyur.js
similarity index 82%
rename from dist/assets/index-zJphMIID.js
rename to dist/assets/index-IwuFnyur.js
index 40e7535..0a61430 100644
--- a/dist/assets/index-zJphMIID.js
+++ b/dist/assets/index-IwuFnyur.js
@@ -14,4 +14,4 @@
* @vue/runtime-dom v3.5.13
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
-**/let Rs;const Bn=typeof window<"u"&&window.trustedTypes;if(Bn)try{Rs=Bn.createPolicy("vue",{createHTML:e=>e})}catch{}const Ui=Rs?e=>Rs.createHTML(e):e=>e,zo="http://www.w3.org/2000/svg",Zo="http://www.w3.org/1998/Math/MathML",Re=typeof document<"u"?document:null,En=Re&&Re.createElement("template"),Qo={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const i=t==="svg"?Re.createElementNS(zo,e):t==="mathml"?Re.createElementNS(Zo,e):s?Re.createElement(e,{is:s}):Re.createElement(e);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>Re.createTextNode(e),createComment:e=>Re.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Re.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,i,r){const o=s?s.previousSibling:t.lastChild;if(i&&(i===r||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),s),!(i===r||!(i=i.nextSibling)););else{En.innerHTML=Ui(n==="svg"?``:n==="mathml"?``:e);const l=En.content;if(n==="svg"||n==="mathml"){const f=l.firstChild;for(;f.firstChild;)l.appendChild(f.firstChild);l.removeChild(f)}t.insertBefore(l,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},el=Symbol("_vtc");function tl(e,t,s){const n=e[el];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Cn=Symbol("_vod"),sl=Symbol("_vsh"),nl=Symbol(""),il=/(^|;)\s*display\s*:/;function rl(e,t,s){const n=e.style,i=Z(s);let r=!1;if(s&&!i){if(t)if(Z(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&Ut(n,l,"")}else for(const o in t)s[o]==null&&Ut(n,o,"");for(const o in s)o==="display"&&(r=!0),Ut(n,o,s[o])}else if(i){if(t!==s){const o=n[nl];o&&(s+=";"+o),n.cssText=s,r=il.test(s)}}else t&&e.removeAttribute("style");Cn in e&&(e[Cn]=r?n.display:"",e[sl]&&(n.display="none"))}const Tn=/\s*!important$/;function Ut(e,t,s){if(W(s))s.forEach(n=>Ut(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=ol(e,t);Tn.test(s)?e.setProperty(rt(n),s.replace(Tn,""),"important"):e[n]=s}}const An=["Webkit","Moz","ms"],ms={};function ol(e,t){const s=ms[t];if(s)return s;let n=Ke(t);if(n!=="filter"&&n in e)return ms[t]=n;n=Vn(n);for(let i=0;i_s||(ul.then(()=>_s=0),_s=Date.now());function hl(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;Fe(pl(n,s.value),t,5,[n])};return s.value=e,s.attached=dl(),s}function pl(e,t){if(W(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>i=>!i._stopped&&n&&n(i))}else return t}const Nn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,gl=(e,t,s,n,i,r)=>{const o=i==="svg";t==="class"?tl(e,n,o):t==="style"?rl(e,s,n):zt(t)?Ds(t)||fl(e,t,s,n,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ml(e,t,n,o))?(Mn(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Wn(e,t,n,o,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Z(n))?Mn(e,Ke(t),n,r,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Wn(e,t,n,o))};function ml(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Nn(t)&&P(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return Nn(t)&&Z(s)?!1:t in e}const _l=ce({patchProp:gl},Qo);let Rn;function bl(){return Rn||(Rn=mo(_l))}const yl=(...e)=>{const t=bl().createApp(...e),{mount:s}=t;return t.mount=n=>{const i=wl(n);if(!i)return;const r=t._component;!P(r)&&!r.render&&!r.template&&(r.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const o=s(i,!1,vl(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),o},t};function vl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function wl(e){return Z(e)?document.querySelector(e):e}const ji=(e,t)=>{const s=e.__vccOpts||e;for(const[n,i]of t)s[n]=i;return s},Sl=["src","alt"],xl={key:0,class:"app-label"},Il={key:1,class:"app-package"},Bl={__name:"AppIcon",props:{packageName:{type:String,required:!0},label:{type:String,required:!1,default:"UNSETLABEL"},hideLabel:{type:Boolean,required:!1}},async setup(e){let t,s;const n=e;let i;Bridge.getSystemNightMode()=="yes"?i=!0:i=!1;const r=Bs("");r.value=([t,s]=eo(()=>Bridge.getDefaultAppIconURL(n.packageName)),t=await t,s(),t);const o=Bs("");n.label.length>=12?o.value=`${n.label.slice(0,9).trim()}...`:o.value=n.label;function l(){Bridge.requestLaunchApp(n.packageName)}return(f,h)=>(he(),De("div",{class:"app-icon",onClick:h[0]||(h[0]=u=>l()),style:ts({"--label-color":oi(i)?"#000000":"#ffffff"})},[de("img",{src:r.value,alt:o.value,class:"app-image"},null,8,Sl),n.hideLabel?Ms("",!0):(he(),De("span",xl,ys(o.value),1)),n.hideLabel?Ms("",!0):(he(),De("span",Il,ys(n.packageName),1))],4))}},wt=ji(Bl,[["__scopeId","data-v-a45179cd"]]),El={id:"dock"},Cl={__name:"Dock",setup(e){return(t,s)=>(he(),Yt(Ni,null,{default:Zs(()=>[de("div",El,[te(wt,{packageName:"app.revenge",hideLabel:!0}),te(wt,{packageName:"com.radolyn.ayugram",hideLabel:!0}),te(wt,{packageName:"org.mozilla.fennec_fdroid",hideLabel:!0}),te(wt,{packageName:"org.akanework.gramophone",hideLabel:!0})])]),_:1}))}},Tl="/vite.svg",Al="/vue.svg",Ol="/com.tored.bridgelauncher.png",Wl={class:"section"},Ml={__name:"Settings",setup(e){function t(){console.log("Changed Bridge Button visibility to..."),Bridge.getBridgeButtonVisibility()=="shown"?(Bridge.requestSetBridgeButtonVisibility("hidden"),console.log("hidden")):(Bridge.requestSetBridgeButtonVisibility("shown"),console.log("shown"))}function s(){console.log("Changed draw system wallpapers to..."),Bridge.getDrawSystemWallpaperBehindWebViewEnabled()?(Bridge.requestSetDrawSystemWallpaperBehindWebViewEnabled(!1),document.body.style.backgroundColor="",console.log("false")):(Bridge.requestSetDrawSystemWallpaperBehindWebViewEnabled(!0),console.log("true"),document.body.style.backgroundColor="transparent")}function n(){console.log("Changed overscrolling effect to..."),Bridge.getOverscrollEffects=="default"?(Bridge.requestSetOverscrollEffects("none"),console.log("none")):(Bridge.requestSetOverscrollEffects("default"),console.log("default"))}function i(){Bridge.requestOpenBridgeAppDrawer()}function r(){window.location.reload()}return(o,l)=>(he(),De(ve,null,[de("div",Wl,[de("button",{class:"ui-button",onClick:l[0]||(l[0]=f=>t())},"Toggle Bridge button"),de("button",{class:"ui-button",onClick:l[1]||(l[1]=f=>i())},"Open Bridge App Drawer"),de("button",{class:"ui-button",onClick:l[2]||(l[2]=f=>s())},"Toggle system wallpaper visibility"),de("button",{class:"ui-button",onClick:l[3]||(l[3]=f=>n())},"Toggle overscrolling"),de("button",{class:"ui-button",onClick:l[4]||(l[4]=f=>r())},"Reload"),l[5]||(l[5]=de("br",null,null,-1)),l[6]||(l[6]=de("small",{style:{"font-size":"xx-small"}},"Everything else can be configured through Bridge's Settings",-1))]),l[7]||(l[7]=Lo('',1))],64))}},Pl=ji(Ml,[["__scopeId","data-v-27ae4006"]]),Fl={id:"applist-wrapper"},Nl={id:"applist"},Rl={key:0,class:"applist-page"},bs=4*6,$l={__name:"App",setup(e){const t=Bs([]);async function s(){const r=await(await fetch(Bridge.getAppsURL())).json();t.value=r.apps.sort((o,l)=>o.label.localeCompare(l.label,void 0,{sensitivity:"base"}))}s();const n=ki(()=>Array(Math.ceil(t.value.length/bs)).fill().map((i,r)=>t.value.slice(r*bs,(r+1)*bs)));return(i,r)=>(he(),De(ve,null,[de("div",Fl,[(he(),Yt(Ni,null,{default:Zs(()=>[de("div",Nl,[(he(!0),De(ve,null,pn(n.value,(o,l)=>(he(),De("div",{class:"applist-page",key:l},[(he(!0),De(ve,null,pn(o,f=>(he(),Yt(wt,{key:f.packageName,packageName:f.packageName,label:f.label},null,8,["packageName","label"]))),128))]))),128)),n.value.length>0?(he(),De("div",Rl,[te(Pl)])):Ms("",!0)])]),_:1}))]),te(Cl)],64))}};function ue(e,t,s,n){return{left:e,top:t,right:s,bottom:n}}function Dl(){return{apiLevel:34,bridgeVersionCode:3,bridgeVersionName:"0.0.3alpha",logRaisedBridgeEvents:!0,projectUrl:"/",appsUrl:"/mock/apps.json",makeGetIconPacksUrl:e=>"/mock/icons/icon-packs.json",makeGetIconPackInfoUrl:(e,t)=>`/mock/icons/${e}/info.json`,makeGetIconPackAppFilterXMLUrl:e=>`/mock/icons/${e}/appfilter.xml`,makeGetAppIconUrl:(e,t)=>`/mock/icons/${t??"default"}/${e}.png`,makeGetDefaultIconUrl:e=>`/mock/icons/default/${e}.png`,makeGetIconPackAppIconUrl:(e,t)=>`/mock/icons/${e}/${t}.png`,makeGetIconPackItemUrl:(e,t)=>`/mock/icons/${e}/${t}.png`,makeGetIconPackDrawableUrl:(e,t)=>`/mock/icons/${e}/${t}.png`,logWallpaperEvents:!0,logWallpaperScrolling:!1,initialBridgeButtonVisibility:"hidden",initialDrawSystemWallpaperBehindWebViewEnabled:!0,initialOverscrollEffects:"none",canRequestSystemNightMode:!0,initialSystemNightMode:"auto",initialBridgeTheme:"system",initialCanLockScreen:!1,initialStatusBarAppearance:"hide",initialNavigationBarAppearance:"hide",statusBarHeight:24,navigationBarHeight:48,captionBarWindowInsets:ue(0,0,0,0),captionBarIgnoringVisibilityWindowInsets:ue(0,0,0,0),imeWindowInsets:ue(0,0,0,0),imeAnimationSourceWindowInsets:ue(0,0,0,0),imeAnimationTargetWindowInsets:ue(0,0,0,0),tappableElementWindowInsets:ue(0,0,0,0),tappableElementIgnoringVisibilityWindowInsets:ue(0,0,0,0),systemGesturesWindowInsets:ue(0,0,0,0),mandatorySystemGesturesWindowInsets:ue(0,0,0,0),displayCutoutWindowInsets:ue(0,0,0,0),waterfallWindowInsets:ue(0,0,0,0),displayCutoutPath:null,displayShapePath:null}}var Ll=class{constructor(e){this._prefix="[BridgeMock]",this.lastErrorMessage=null,this.wallpaperOffsetStepsX=1,this.wallpaperOffsetStepsY=1,this.wallpaperOffsetX=0,this.wallpaperOffsetY=0,this.config=e??Dl(),this.bridgeButtonVisibility=this.config.initialBridgeButtonVisibility,this.drawSystemWallpaperBehindWebViewEnabled=this.config.initialDrawSystemWallpaperBehindWebViewEnabled,this.overscrollEffects=this.config.initialOverscrollEffects,this.systemNightMode=this.config.initialSystemNightMode,this.bridgeTheme=this.config.initialBridgeTheme,this.statusBarAppearance=this.config.initialStatusBarAppearance,this.navigationBarAppearance=this.config.initialNavigationBarAppearance,this.canLockScreen=this.config.initialCanLockScreen}getAndroidAPILevel(){return this.config.apiLevel}getBridgeVersionCode(){return this.config.bridgeVersionCode}getBridgeVersionName(){return this.config.bridgeVersionName}getLastErrorMessage(){return this.lastErrorMessage}getProjectURL(){return this.config.projectUrl}getAppsURL(){return this.config.appsUrl}requestAppUninstall(e,t){return alert(`${this._prefix} requestAppUninstall: ${e}`),this.raiseBridgeEvent({name:"appRemoved",packageName:e}),!0}requestOpenAppInfo(e,t){return alert(`${this._prefix} requestOpenAppInfo: ${e}`),!0}requestLaunchApp(e,t){return alert(`${this._prefix} Requested launch ${e}`),!0}getDefaultAppIconURL(e){return this.config.makeGetDefaultIconUrl(e)}_padNum(e){const t=e.toFixed(4);return`${" ".repeat(Math.max(0,6-t.length))}${t}`}setWallpaperOffsetSteps(e,t){this.wallpaperOffsetStepsX=e,this.wallpaperOffsetStepsY=t,this.config.logWallpaperEvents&&console.log(`${this._prefix} setWallpaperOffsetSteps: x = ${this._padNum(e)} y = ${t} (pages: x = ${Math.round(1/e)-1}, y = ${Math.round(1/t)-1})`)}setWallpaperOffsets(e,t){this.wallpaperOffsetX=e,this.wallpaperOffsetY=t,this.config.logWallpaperScrolling&&console.log(`${this._prefix} setWallpaperOffsets: x = ${this._padNum(e)} y = ${this._padNum(t)} (pages: x = ${this._padNum(e/this.wallpaperOffsetStepsX)} y = ${this._padNum(t/this.wallpaperOffsetStepsY)})`)}sendWallpaperTap(e,t,s=0){this.config.logWallpaperEvents&&console.log(`${this._prefix} sendWallpaperTap: x = ${e}, y = ${t}`)}requestChangeSystemWallpaper(e){return alert(`${this._prefix} requestChangeSystemWallpaper`),!0}getBridgeButtonVisibility(){return this.bridgeButtonVisibility}requestSetBridgeButtonVisibility(e,t){return this.bridgeButtonVisibility=e,this.raiseBridgeEvent({name:"bridgeButtonVisibilityChanged",newValue:e}),!0}getDrawSystemWallpaperBehindWebViewEnabled(){return this.drawSystemWallpaperBehindWebViewEnabled}requestSetDrawSystemWallpaperBehindWebViewEnabled(e,t){return this.drawSystemWallpaperBehindWebViewEnabled=e,this.raiseBridgeEvent({name:"drawSystemWallpaperBehindWebViewChanged",newValue:e}),!0}getOverscrollEffects(){return this.overscrollEffects}requestSetOverscrollEffects(e,t){return this.overscrollEffects=e,this.raiseBridgeEvent({name:"overscrollEffectsChanged",newValue:e}),!0}getSystemNightMode(){return this.systemNightMode}resolveIsSystemInDarkTheme(){return this.systemNightMode==="yes"||this.systemNightMode!=="no"&&matchMedia("(prefers-color-scheme: dark)").matches}getCanRequestSystemNightMode(){return this.config.canRequestSystemNightMode}requestSetSystemNightMode(e,t){return this.systemNightMode=e,this.raiseBridgeEvent({name:"systemNightModeChanged",newValue:e}),!0}getBridgeTheme(){return this.bridgeTheme}requestSetBridgeTheme(e,t){return this.bridgeTheme=e,this.raiseBridgeEvent({name:"bridgeThemeChanged",newValue:e}),!0}getStatusBarAppearance(){return this.statusBarAppearance}requestSetStatusBarAppearance(e,t){return this.statusBarAppearance=e,this.raiseBridgeEvent({name:"statusBarAppearanceChanged",newValue:e}),this.raiseBridgeEvent({name:"statusBarsWindowInsetsChanged",newValue:this._getStatusBarsWindowInsets()}),this.raiseBridgeEvent({name:"systemBarsWindowInsetsChanged",newValue:this._getSystemBarsWindowInsets()}),!0}getNavigationBarAppearance(){return this.navigationBarAppearance}requestSetNavigationBarAppearance(e,t){return this.navigationBarAppearance=e,this.raiseBridgeEvent({name:"navigationBarAppearanceChanged",newValue:e}),this.raiseBridgeEvent({name:"navigationBarsWindowInsetsChanged",newValue:this._getNavigationBarsWindowInsets()}),this.raiseBridgeEvent({name:"systemBarsWindowInsetsChanged",newValue:this._getSystemBarsWindowInsets()}),!0}getCanLockScreen(){return this.canLockScreen}requestLockScreen(e){return alert(`${this._prefix} requestLockScreen`),!0}requestOpenBridgeSettings(e){return alert(`${this._prefix} requestOpenBridgeSettings`),!0}requestOpenBridgeAppDrawer(e){return alert(`${this._prefix} requestOpenBridgeAppDrawer`),!0}requestOpenDeveloperConsole(e){return alert(`${this._prefix} requestOpenDeveloperConsole`),!0}requestExpandNotificationShade(e){return alert(`${this._prefix} requestExpandNotificationShade`),!0}requestOpenAndroidSettings(e){return alert(`${this._prefix} requestOpenAndroidSettings`),!0}showToast(e,t){console.log(`${this._prefix} showToast: ${t?"long":"short"}, message: ${e}`)}_getStatusBarsWindowInsets(){return ue(0,this.statusBarAppearance==="hide"?0:this.config.statusBarHeight,0,0)}getStatusBarsWindowInsets(){return this.windowInsetsString(this._getStatusBarsWindowInsets())}getStatusBarsIgnoringVisibilityWindowInsets(){return this.windowInsetsString(0,this.config.statusBarHeight,0,0)}_getNavigationBarsWindowInsets(){return ue(0,0,0,this.navigationBarAppearance==="hide"?0:this.config.navigationBarHeight)}getNavigationBarsWindowInsets(){return this.windowInsetsString(this._getNavigationBarsWindowInsets())}getNavigationBarsIgnoringVisibilityWindowInsets(){return this.windowInsetsString(0,0,0,this.config.navigationBarHeight)}getCaptionBarWindowInsets(){return this.windowInsetsString(this.config.captionBarWindowInsets)}getCaptionBarIgnoringVisibilityWindowInsets(){return this.windowInsetsString(this.config.captionBarIgnoringVisibilityWindowInsets)}_getSystemBarsWindowInsets(){return ue(0,this.statusBarAppearance==="hide"?0:this.config.statusBarHeight,0,this.navigationBarAppearance==="hide"?0:this.config.navigationBarHeight)}getSystemBarsWindowInsets(){return this.windowInsetsString(this._getSystemBarsWindowInsets())}getSystemBarsIgnoringVisibilityWindowInsets(){return this.windowInsetsString(0,this.config.statusBarHeight,0,this.config.navigationBarHeight)}getImeWindowInsets(){return this.windowInsetsString(this.config.imeWindowInsets)}getImeAnimationSourceWindowInsets(){return this.windowInsetsString(this.config.imeAnimationSourceWindowInsets)}getImeAnimationTargetWindowInsets(){return this.windowInsetsString(this.config.imeAnimationTargetWindowInsets)}getTappableElementWindowInsets(){return this.windowInsetsString(this.config.tappableElementWindowInsets)}getTappableElementIgnoringVisibilityWindowInsets(){return this.windowInsetsString(this.config.tappableElementIgnoringVisibilityWindowInsets)}getSystemGesturesWindowInsets(){return this.windowInsetsString(this.config.systemGesturesWindowInsets)}getMandatorySystemGesturesWindowInsets(){return this.windowInsetsString(this.config.mandatorySystemGesturesWindowInsets)}getDisplayCutoutWindowInsets(){return this.windowInsetsString(this.config.displayCutoutWindowInsets)}getWaterfallWindowInsets(){return this.windowInsetsString(this.config.waterfallWindowInsets)}getDisplayCutoutPath(){return this.config.displayCutoutPath}getDisplayShapePath(){return this.config.displayShapePath}windowInsetsString(e,t,s,n){return JSON.stringify(typeof e=="object"?e:{left:e,top:t,right:s,bottom:n})}raiseBridgeEvent(e){this.config.logRaisedBridgeEvents&&console.log("[BridgeMock] raiseBridgeEvent:",e),typeof onBridgeEvent=="function"&&onBridgeEvent(e)}};window.Bridge||(window.Bridge=new Ll({appsUrl:"/mock/apps.json",makeGetDefaultIconUrl:e=>`/mock/icons/default/${e}.png`}));Bridge.requestSetBridgeTheme("system");yl($l).mount("#app");
+**/let Rs;const Bn=typeof window<"u"&&window.trustedTypes;if(Bn)try{Rs=Bn.createPolicy("vue",{createHTML:e=>e})}catch{}const Ui=Rs?e=>Rs.createHTML(e):e=>e,zo="http://www.w3.org/2000/svg",Zo="http://www.w3.org/1998/Math/MathML",Re=typeof document<"u"?document:null,En=Re&&Re.createElement("template"),Qo={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const i=t==="svg"?Re.createElementNS(zo,e):t==="mathml"?Re.createElementNS(Zo,e):s?Re.createElement(e,{is:s}):Re.createElement(e);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>Re.createTextNode(e),createComment:e=>Re.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Re.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,i,r){const o=s?s.previousSibling:t.lastChild;if(i&&(i===r||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),s),!(i===r||!(i=i.nextSibling)););else{En.innerHTML=Ui(n==="svg"?``:n==="mathml"?``:e);const l=En.content;if(n==="svg"||n==="mathml"){const f=l.firstChild;for(;f.firstChild;)l.appendChild(f.firstChild);l.removeChild(f)}t.insertBefore(l,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},el=Symbol("_vtc");function tl(e,t,s){const n=e[el];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Cn=Symbol("_vod"),sl=Symbol("_vsh"),nl=Symbol(""),il=/(^|;)\s*display\s*:/;function rl(e,t,s){const n=e.style,i=Z(s);let r=!1;if(s&&!i){if(t)if(Z(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&Ut(n,l,"")}else for(const o in t)s[o]==null&&Ut(n,o,"");for(const o in s)o==="display"&&(r=!0),Ut(n,o,s[o])}else if(i){if(t!==s){const o=n[nl];o&&(s+=";"+o),n.cssText=s,r=il.test(s)}}else t&&e.removeAttribute("style");Cn in e&&(e[Cn]=r?n.display:"",e[sl]&&(n.display="none"))}const Tn=/\s*!important$/;function Ut(e,t,s){if(W(s))s.forEach(n=>Ut(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=ol(e,t);Tn.test(s)?e.setProperty(rt(n),s.replace(Tn,""),"important"):e[n]=s}}const An=["Webkit","Moz","ms"],ms={};function ol(e,t){const s=ms[t];if(s)return s;let n=Ke(t);if(n!=="filter"&&n in e)return ms[t]=n;n=Vn(n);for(let i=0;i_s||(ul.then(()=>_s=0),_s=Date.now());function hl(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;Fe(pl(n,s.value),t,5,[n])};return s.value=e,s.attached=dl(),s}function pl(e,t){if(W(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>i=>!i._stopped&&n&&n(i))}else return t}const Nn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,gl=(e,t,s,n,i,r)=>{const o=i==="svg";t==="class"?tl(e,n,o):t==="style"?rl(e,s,n):zt(t)?Ds(t)||fl(e,t,s,n,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ml(e,t,n,o))?(Mn(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Wn(e,t,n,o,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Z(n))?Mn(e,Ke(t),n,r,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Wn(e,t,n,o))};function ml(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Nn(t)&&P(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return Nn(t)&&Z(s)?!1:t in e}const _l=ce({patchProp:gl},Qo);let Rn;function bl(){return Rn||(Rn=mo(_l))}const yl=(...e)=>{const t=bl().createApp(...e),{mount:s}=t;return t.mount=n=>{const i=wl(n);if(!i)return;const r=t._component;!P(r)&&!r.render&&!r.template&&(r.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const o=s(i,!1,vl(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),o},t};function vl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function wl(e){return Z(e)?document.querySelector(e):e}const ji=(e,t)=>{const s=e.__vccOpts||e;for(const[n,i]of t)s[n]=i;return s},Sl=["src","alt"],xl={key:0,class:"app-label"},Il={key:1,class:"app-package"},Bl={__name:"AppIcon",props:{packageName:{type:String,required:!0},label:{type:String,required:!1,default:"UNSETLABEL"},hideLabel:{type:Boolean,required:!1}},async setup(e){let t,s;const n=e;let i;Bridge.getSystemNightMode()=="yes"?i=!0:i=!1;const r=Bs("");r.value=([t,s]=eo(()=>Bridge.getDefaultAppIconURL(n.packageName)),t=await t,s(),t);const o=Bs("");n.label.length>=12?o.value=`${n.label.slice(0,9).trim()}...`:o.value=n.label;function l(){Bridge.requestLaunchApp(n.packageName)}async function f(){const h=await Bridge.getDefaultAppIconURL(n.packageName),u=new Image;u.src=h,u.onload=()=>{r.value=h},u.onerror=()=>{r.value!="/error.svg"&&(r.value="/error.svg"),setTimeout(f,100)}}return f(),(h,u)=>(he(),De("div",{class:"app-icon",onClick:u[0]||(u[0]=d=>l()),style:ts({"--label-color":oi(i)?"#000000":"#ffffff"})},[de("img",{src:r.value,alt:o.value,class:"app-image"},null,8,Sl),n.hideLabel?Ms("",!0):(he(),De("span",xl,ys(o.value),1)),n.hideLabel?Ms("",!0):(he(),De("span",Il,ys(n.packageName),1))],4))}},wt=ji(Bl,[["__scopeId","data-v-c4a1272c"]]),El={id:"dock"},Cl={__name:"Dock",setup(e){return(t,s)=>(he(),Yt(Ni,null,{default:Zs(()=>[de("div",El,[te(wt,{packageName:"app.revenge",hideLabel:!0}),te(wt,{packageName:"com.radolyn.ayugram",hideLabel:!0}),te(wt,{packageName:"org.mozilla.fennec_fdroid",hideLabel:!0}),te(wt,{packageName:"org.akanework.gramophone",hideLabel:!0})])]),_:1}))}},Tl="/vite.svg",Al="/vue.svg",Ol="/com.tored.bridgelauncher.png",Wl={class:"section"},Ml={__name:"Settings",setup(e){function t(){console.log("Changed Bridge Button visibility to..."),Bridge.getBridgeButtonVisibility()=="shown"?(Bridge.requestSetBridgeButtonVisibility("hidden"),console.log("hidden")):(Bridge.requestSetBridgeButtonVisibility("shown"),console.log("shown"))}function s(){console.log("Changed draw system wallpapers to..."),Bridge.getDrawSystemWallpaperBehindWebViewEnabled()?(Bridge.requestSetDrawSystemWallpaperBehindWebViewEnabled(!1),document.body.style.backgroundColor="",console.log("false")):(Bridge.requestSetDrawSystemWallpaperBehindWebViewEnabled(!0),console.log("true"),document.body.style.backgroundColor="transparent")}function n(){console.log("Changed overscrolling effect to..."),Bridge.getOverscrollEffects=="default"?(Bridge.requestSetOverscrollEffects("none"),console.log("none")):(Bridge.requestSetOverscrollEffects("default"),console.log("default"))}function i(){Bridge.requestOpenBridgeAppDrawer()}function r(){window.location.reload()}return(o,l)=>(he(),De(ve,null,[de("div",Wl,[de("button",{class:"ui-button",onClick:l[0]||(l[0]=f=>t())},"Toggle Bridge button"),de("button",{class:"ui-button",onClick:l[1]||(l[1]=f=>i())},"Open Bridge App Drawer"),de("button",{class:"ui-button",onClick:l[2]||(l[2]=f=>s())},"Toggle system wallpaper visibility"),de("button",{class:"ui-button",onClick:l[3]||(l[3]=f=>n())},"Toggle overscrolling"),de("button",{class:"ui-button",onClick:l[4]||(l[4]=f=>r())},"Reload"),l[5]||(l[5]=de("br",null,null,-1)),l[6]||(l[6]=de("small",{style:{"font-size":"xx-small"}},"Everything else can be configured through Bridge's Settings",-1))]),l[7]||(l[7]=Lo('',1))],64))}},Pl=ji(Ml,[["__scopeId","data-v-27ae4006"]]),Fl={id:"applist-wrapper"},Nl={id:"applist"},Rl={key:0,class:"applist-page"},bs=4*6,$l={__name:"App",setup(e){const t=Bs([]);async function s(){const l=await(await fetch(Bridge.getAppsURL())).json();t.value=l.apps.sort((f,h)=>f.label.localeCompare(h.label,void 0,{sensitivity:"base"}))}s();let n=0;function i(){const o=performance.now();o-n>=100&&(s(),n=o),requestAnimationFrame(i)}i();const r=ki(()=>Array(Math.ceil(t.value.length/bs)).fill().map((o,l)=>t.value.slice(l*bs,(l+1)*bs)));return(o,l)=>(he(),De(ve,null,[de("div",Fl,[(he(),Yt(Ni,null,{default:Zs(()=>[de("div",Nl,[(he(!0),De(ve,null,pn(r.value,(f,h)=>(he(),De("div",{class:"applist-page",key:h},[(he(!0),De(ve,null,pn(f,u=>(he(),Yt(wt,{key:u.packageName,packageName:u.packageName,label:u.label},null,8,["packageName","label"]))),128))]))),128)),r.value.length>0?(he(),De("div",Rl,[te(Pl)])):Ms("",!0)])]),_:1}))]),te(Cl)],64))}};function ue(e,t,s,n){return{left:e,top:t,right:s,bottom:n}}function Dl(){return{apiLevel:34,bridgeVersionCode:3,bridgeVersionName:"0.0.3alpha",logRaisedBridgeEvents:!0,projectUrl:"/",appsUrl:"/mock/apps.json",makeGetIconPacksUrl:e=>"/mock/icons/icon-packs.json",makeGetIconPackInfoUrl:(e,t)=>`/mock/icons/${e}/info.json`,makeGetIconPackAppFilterXMLUrl:e=>`/mock/icons/${e}/appfilter.xml`,makeGetAppIconUrl:(e,t)=>`/mock/icons/${t??"default"}/${e}.png`,makeGetDefaultIconUrl:e=>`/mock/icons/default/${e}.png`,makeGetIconPackAppIconUrl:(e,t)=>`/mock/icons/${e}/${t}.png`,makeGetIconPackItemUrl:(e,t)=>`/mock/icons/${e}/${t}.png`,makeGetIconPackDrawableUrl:(e,t)=>`/mock/icons/${e}/${t}.png`,logWallpaperEvents:!0,logWallpaperScrolling:!1,initialBridgeButtonVisibility:"hidden",initialDrawSystemWallpaperBehindWebViewEnabled:!0,initialOverscrollEffects:"none",canRequestSystemNightMode:!0,initialSystemNightMode:"auto",initialBridgeTheme:"system",initialCanLockScreen:!1,initialStatusBarAppearance:"hide",initialNavigationBarAppearance:"hide",statusBarHeight:24,navigationBarHeight:48,captionBarWindowInsets:ue(0,0,0,0),captionBarIgnoringVisibilityWindowInsets:ue(0,0,0,0),imeWindowInsets:ue(0,0,0,0),imeAnimationSourceWindowInsets:ue(0,0,0,0),imeAnimationTargetWindowInsets:ue(0,0,0,0),tappableElementWindowInsets:ue(0,0,0,0),tappableElementIgnoringVisibilityWindowInsets:ue(0,0,0,0),systemGesturesWindowInsets:ue(0,0,0,0),mandatorySystemGesturesWindowInsets:ue(0,0,0,0),displayCutoutWindowInsets:ue(0,0,0,0),waterfallWindowInsets:ue(0,0,0,0),displayCutoutPath:null,displayShapePath:null}}var Ll=class{constructor(e){this._prefix="[BridgeMock]",this.lastErrorMessage=null,this.wallpaperOffsetStepsX=1,this.wallpaperOffsetStepsY=1,this.wallpaperOffsetX=0,this.wallpaperOffsetY=0,this.config=e??Dl(),this.bridgeButtonVisibility=this.config.initialBridgeButtonVisibility,this.drawSystemWallpaperBehindWebViewEnabled=this.config.initialDrawSystemWallpaperBehindWebViewEnabled,this.overscrollEffects=this.config.initialOverscrollEffects,this.systemNightMode=this.config.initialSystemNightMode,this.bridgeTheme=this.config.initialBridgeTheme,this.statusBarAppearance=this.config.initialStatusBarAppearance,this.navigationBarAppearance=this.config.initialNavigationBarAppearance,this.canLockScreen=this.config.initialCanLockScreen}getAndroidAPILevel(){return this.config.apiLevel}getBridgeVersionCode(){return this.config.bridgeVersionCode}getBridgeVersionName(){return this.config.bridgeVersionName}getLastErrorMessage(){return this.lastErrorMessage}getProjectURL(){return this.config.projectUrl}getAppsURL(){return this.config.appsUrl}requestAppUninstall(e,t){return alert(`${this._prefix} requestAppUninstall: ${e}`),this.raiseBridgeEvent({name:"appRemoved",packageName:e}),!0}requestOpenAppInfo(e,t){return alert(`${this._prefix} requestOpenAppInfo: ${e}`),!0}requestLaunchApp(e,t){return alert(`${this._prefix} Requested launch ${e}`),!0}getDefaultAppIconURL(e){return this.config.makeGetDefaultIconUrl(e)}_padNum(e){const t=e.toFixed(4);return`${" ".repeat(Math.max(0,6-t.length))}${t}`}setWallpaperOffsetSteps(e,t){this.wallpaperOffsetStepsX=e,this.wallpaperOffsetStepsY=t,this.config.logWallpaperEvents&&console.log(`${this._prefix} setWallpaperOffsetSteps: x = ${this._padNum(e)} y = ${t} (pages: x = ${Math.round(1/e)-1}, y = ${Math.round(1/t)-1})`)}setWallpaperOffsets(e,t){this.wallpaperOffsetX=e,this.wallpaperOffsetY=t,this.config.logWallpaperScrolling&&console.log(`${this._prefix} setWallpaperOffsets: x = ${this._padNum(e)} y = ${this._padNum(t)} (pages: x = ${this._padNum(e/this.wallpaperOffsetStepsX)} y = ${this._padNum(t/this.wallpaperOffsetStepsY)})`)}sendWallpaperTap(e,t,s=0){this.config.logWallpaperEvents&&console.log(`${this._prefix} sendWallpaperTap: x = ${e}, y = ${t}`)}requestChangeSystemWallpaper(e){return alert(`${this._prefix} requestChangeSystemWallpaper`),!0}getBridgeButtonVisibility(){return this.bridgeButtonVisibility}requestSetBridgeButtonVisibility(e,t){return this.bridgeButtonVisibility=e,this.raiseBridgeEvent({name:"bridgeButtonVisibilityChanged",newValue:e}),!0}getDrawSystemWallpaperBehindWebViewEnabled(){return this.drawSystemWallpaperBehindWebViewEnabled}requestSetDrawSystemWallpaperBehindWebViewEnabled(e,t){return this.drawSystemWallpaperBehindWebViewEnabled=e,this.raiseBridgeEvent({name:"drawSystemWallpaperBehindWebViewChanged",newValue:e}),!0}getOverscrollEffects(){return this.overscrollEffects}requestSetOverscrollEffects(e,t){return this.overscrollEffects=e,this.raiseBridgeEvent({name:"overscrollEffectsChanged",newValue:e}),!0}getSystemNightMode(){return this.systemNightMode}resolveIsSystemInDarkTheme(){return this.systemNightMode==="yes"||this.systemNightMode!=="no"&&matchMedia("(prefers-color-scheme: dark)").matches}getCanRequestSystemNightMode(){return this.config.canRequestSystemNightMode}requestSetSystemNightMode(e,t){return this.systemNightMode=e,this.raiseBridgeEvent({name:"systemNightModeChanged",newValue:e}),!0}getBridgeTheme(){return this.bridgeTheme}requestSetBridgeTheme(e,t){return this.bridgeTheme=e,this.raiseBridgeEvent({name:"bridgeThemeChanged",newValue:e}),!0}getStatusBarAppearance(){return this.statusBarAppearance}requestSetStatusBarAppearance(e,t){return this.statusBarAppearance=e,this.raiseBridgeEvent({name:"statusBarAppearanceChanged",newValue:e}),this.raiseBridgeEvent({name:"statusBarsWindowInsetsChanged",newValue:this._getStatusBarsWindowInsets()}),this.raiseBridgeEvent({name:"systemBarsWindowInsetsChanged",newValue:this._getSystemBarsWindowInsets()}),!0}getNavigationBarAppearance(){return this.navigationBarAppearance}requestSetNavigationBarAppearance(e,t){return this.navigationBarAppearance=e,this.raiseBridgeEvent({name:"navigationBarAppearanceChanged",newValue:e}),this.raiseBridgeEvent({name:"navigationBarsWindowInsetsChanged",newValue:this._getNavigationBarsWindowInsets()}),this.raiseBridgeEvent({name:"systemBarsWindowInsetsChanged",newValue:this._getSystemBarsWindowInsets()}),!0}getCanLockScreen(){return this.canLockScreen}requestLockScreen(e){return alert(`${this._prefix} requestLockScreen`),!0}requestOpenBridgeSettings(e){return alert(`${this._prefix} requestOpenBridgeSettings`),!0}requestOpenBridgeAppDrawer(e){return alert(`${this._prefix} requestOpenBridgeAppDrawer`),!0}requestOpenDeveloperConsole(e){return alert(`${this._prefix} requestOpenDeveloperConsole`),!0}requestExpandNotificationShade(e){return alert(`${this._prefix} requestExpandNotificationShade`),!0}requestOpenAndroidSettings(e){return alert(`${this._prefix} requestOpenAndroidSettings`),!0}showToast(e,t){console.log(`${this._prefix} showToast: ${t?"long":"short"}, message: ${e}`)}_getStatusBarsWindowInsets(){return ue(0,this.statusBarAppearance==="hide"?0:this.config.statusBarHeight,0,0)}getStatusBarsWindowInsets(){return this.windowInsetsString(this._getStatusBarsWindowInsets())}getStatusBarsIgnoringVisibilityWindowInsets(){return this.windowInsetsString(0,this.config.statusBarHeight,0,0)}_getNavigationBarsWindowInsets(){return ue(0,0,0,this.navigationBarAppearance==="hide"?0:this.config.navigationBarHeight)}getNavigationBarsWindowInsets(){return this.windowInsetsString(this._getNavigationBarsWindowInsets())}getNavigationBarsIgnoringVisibilityWindowInsets(){return this.windowInsetsString(0,0,0,this.config.navigationBarHeight)}getCaptionBarWindowInsets(){return this.windowInsetsString(this.config.captionBarWindowInsets)}getCaptionBarIgnoringVisibilityWindowInsets(){return this.windowInsetsString(this.config.captionBarIgnoringVisibilityWindowInsets)}_getSystemBarsWindowInsets(){return ue(0,this.statusBarAppearance==="hide"?0:this.config.statusBarHeight,0,this.navigationBarAppearance==="hide"?0:this.config.navigationBarHeight)}getSystemBarsWindowInsets(){return this.windowInsetsString(this._getSystemBarsWindowInsets())}getSystemBarsIgnoringVisibilityWindowInsets(){return this.windowInsetsString(0,this.config.statusBarHeight,0,this.config.navigationBarHeight)}getImeWindowInsets(){return this.windowInsetsString(this.config.imeWindowInsets)}getImeAnimationSourceWindowInsets(){return this.windowInsetsString(this.config.imeAnimationSourceWindowInsets)}getImeAnimationTargetWindowInsets(){return this.windowInsetsString(this.config.imeAnimationTargetWindowInsets)}getTappableElementWindowInsets(){return this.windowInsetsString(this.config.tappableElementWindowInsets)}getTappableElementIgnoringVisibilityWindowInsets(){return this.windowInsetsString(this.config.tappableElementIgnoringVisibilityWindowInsets)}getSystemGesturesWindowInsets(){return this.windowInsetsString(this.config.systemGesturesWindowInsets)}getMandatorySystemGesturesWindowInsets(){return this.windowInsetsString(this.config.mandatorySystemGesturesWindowInsets)}getDisplayCutoutWindowInsets(){return this.windowInsetsString(this.config.displayCutoutWindowInsets)}getWaterfallWindowInsets(){return this.windowInsetsString(this.config.waterfallWindowInsets)}getDisplayCutoutPath(){return this.config.displayCutoutPath}getDisplayShapePath(){return this.config.displayShapePath}windowInsetsString(e,t,s,n){return JSON.stringify(typeof e=="object"?e:{left:e,top:t,right:s,bottom:n})}raiseBridgeEvent(e){this.config.logRaisedBridgeEvents&&console.log("[BridgeMock] raiseBridgeEvent:",e),typeof onBridgeEvent=="function"&&onBridgeEvent(e)}};window.Bridge||(window.Bridge=new Ll({appsUrl:"/mock/apps.json",makeGetDefaultIconUrl:e=>`/mock/icons/default/${e}.png`}));Bridge.requestSetBridgeTheme("system");yl($l).mount("#app");
diff --git a/dist/bundle.zip b/dist/bundle.zip
index 56c6dd4..6572865 100644
Binary files a/dist/bundle.zip and b/dist/bundle.zip differ
diff --git a/dist/error.svg b/dist/error.svg
new file mode 100644
index 0000000..3cd5d5f
--- /dev/null
+++ b/dist/error.svg
@@ -0,0 +1,65 @@
+
+
diff --git a/dist/index.html b/dist/index.html
index fbeb2c6..d50024f 100644
--- a/dist/index.html
+++ b/dist/index.html
@@ -5,8 +5,8 @@
SpringBoard
-
-
+
+
diff --git a/public/error.svg b/public/error.svg
new file mode 100644
index 0000000..3cd5d5f
--- /dev/null
+++ b/public/error.svg
@@ -0,0 +1,65 @@
+
+
diff --git a/src/App.vue b/src/App.vue
index 5264fd9..c5eb28f 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -17,7 +17,7 @@
diff --git a/src/components/Search.vue b/src/components/Search.vue
new file mode 100644
index 0000000..d406f80
--- /dev/null
+++ b/src/components/Search.vue
@@ -0,0 +1 @@
+
\ No newline at end of file