1/*! For license information please see 8171.78953630.chunk.js.LICENSE.txt */ 2"use strict";(globalThis.webpackChunkao_react_app||=[]).push([[8171],{85294(e,n,s){s.d(n,{A:()=>u});var a=s(9950),i=s(68566),l=s(28593),t=s(6307),r=s(20915),o=s(36111),d=s(25796),c=s(31406),h=s(20961);var p=s(44414);function u(){var e;const n=(0,c.sB)(),[s,u]=(0,a.useState)([]),[m,f]=(0,a.useState)(!0),[x,j]=(0,a.useState)(0),[v,b]=(0,a.useState)(()=>(0,d.rQ)()?"enabled":"off"),[g,y]=(0,a.useState)(null);(0,a.useEffect)(()=>{let e=!0,n=0;const s=async function(){var s;let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null===o.O||void 0===o.O||null===(s=o.O.snapshot)||void 0===s?void 0:s.call(o.O);const i=++n,l=null!==a&&void 0!==a&&a.installed?[{id:"appopener",name:"AppOpener",platform:"Installed here"}]:[];u(l),f(!0);try{const s=("function"===typeof navigator.getInstalledRelatedApps?await navigator.getInstalledRelatedApps():[]).filter(e=>{try{return"webapp"===e.platform&&new URL(e.url).origin===window.location.origin}catch{return!1}}).map(()=>({id:"appopener",name:"AppOpener",platform:"Installed here"}));e&&i===n&&u([...l,...s].filter((e,n,s)=>s.findIndex(n=>n.id===e.id)===n))}catch{}finally{e&&i===n&&f(!1)}};s();const a=null===o.O||void 0===o.O?void 0:o.O.subscribe(s),i=()=>s();return window.addEventListener("focus",i),()=>{e=!1,null===a||void 0===a||a(),window.removeEventListener("focus",i)}},[x]),(0,a.useEffect)(()=>{let e=!0;return(0,d.IM)(null===n||void 0===n?void 0:n.user).then(n=>{e&&y(n)}).catch(()=>{}),()=>{e=!1}},[null===n||void 0===n?void 0:n.user]);const w=Boolean(s.length&&(0,d.mj)());const A=null===g||void 0===g||null===(e=g.days)||void 0===e?void 0:e[0];return(0,p.jsxs)("section",{className:"uh-installed-apps","aria-label":"Installed AppOpener apps",children:[(0,p.jsxs)("header",{children:[(0,p.jsxs)("span",{children:[(0,p.jsx)(i.A,{size:17})," Installed apps"]}),(0,p.jsx)("button",{className:"uh-installed-refresh",type:"button",onClick:()=>j(e=>e+1),disabled:m,children:"Refresh"})]}),s.length?(0,p.jsx)("div",{children:s.map(e=>(0,p.jsxs)("article",{children:[(0,p.jsx)(l.A,{size:16}),(0,p.jsx)("strong",{children:e.name}),(0,p.jsx)("small",{children:e.platform})]},e.id))}):(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("p",{role:"status",children:[(0,p.jsx)(t.A,{size:16}),m?"Checking this device\u2026":"No installation detected in this browser. Already installed? Open AppOpener from its home-screen icon."]}),(0,p.jsx)(h.A,{compact:!0,label:"Add AppOpener"})]}),w&&(0,p.jsxs)("div",{className:"uh-installed-analytics",children:[(0,p.jsx)(r.A,{size:16}),(0,p.jsxs)("div",{children:[(0,p.jsx)("strong",{children:"Anonymous installed-app count"}),(0,p.jsx)("small",{children:"enabled"===v?"This installed launch is included in the owner report.":"syncing"===v?"Saving your choice\u2026":"pending"===v?"Your choice is saved; it will sync when the service is reachable.":"Optional: count this installed app with a random ID only."})]}),"enabled"===v?(0,p.jsx)("button",{type:"button",onClick:async function(){b("syncing");const e=await(0,d.bQ)();b(e.removed?"off":"pending")},children:"Stop count"}):(0,p.jsx)("button",{type:"button",onClick:async function(){b("syncing"),(0,d.zd)(!0);const e=await(0,d.$q)();b(e.sent?"enabled":"pending")},disabled:"syncing"===v,children:"Count this app"})]}),g&&(0,p.jsxs)("p",{className:"uh-installed-owner",children:[(0,p.jsx)("strong",{children:"Owner view:"})," ",g.observedInstallations.toLocaleString()," consented installs observed \xb7 ",(null===A||void 0===A?void 0:A.activeInstallations)||0," active today."]}),(0,p.jsx)("p",{className:"uh-installed-note",children:"Only AppOpener installations your browser can confirm appear here. Installed counts use consented random PWA IDs, not phone contacts or a device-app inventory."})]})}},20961(e,n,s){s.d(n,{A:()=>h});var a=s(9950),i=s(28593),l=s(6307),t=s(68566),r=s(32127),o=s(36111),d=s(96957);var c=s(44414);function h(e){let{compact:n=!1,className:s="",label:h="Save AppOpener to this device"}=e;const[p,u]=(0,a.useState)(()=>(null===o.O||void 0===o.O?void 0:o.O.snapshot())||{available:!1,installed:!1}),[m,f]=(0,a.useState)(!1),[x,j]=(0,a.useState)(!1),[v,b]=(0,a.useState)("");(0,a.useEffect)(()=>
2{if(!o.O)return;const e=o.O.subscribe(u);return u(o.O.snapshot()),e},[]);const g="undefined"!==typeof navigator&&(/iphone|ipad|ipod/i.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1);return(0,c.jsxs)("div",{className:`universe-install ${n?"universe-install-compact":""} ${s}`,children:[(0,c.jsxs)("button",{type:"button",className:"universe-install-trigger",disabled:p.installed,onClick:()=>{f(!0),b(""),(0,d.X)("install_prompt",{source:"universe"})},children:[p.installed?(0,c.jsx)(i.A,{size:17}):(0,c.jsx)(l.A,{size:17}),p.installed?"AppOpener installed":h]}),(0,c.jsx)(r.lG,{open:m,onOpenChange:e=>{x||f(e)},children:(0,c.jsxs)(r.Cf,{className:"universe-install-dialog",children:[(0,c.jsx)(t.A,{size:29,"aria-hidden":"true"}),(0,c.jsx)(r.L3,{children:"Your universe. One tap away."}),(0,c.jsx)(r.rr,{children:"Add AppOpener to your home screen or desktop. Your browser controls the installation."}),(0,c.jsx)("p",{children:"Open your links, stories and rooms from your own app icon. You can continue using shared links in a browser too."}),p.installed?(0,c.jsx)("p",{className:"universe-install-notice",role:"status",children:"AppOpener is installed on this device."}):(0,c.jsxs)(c.Fragment,{children:[p.available&&(0,c.jsx)("button",{className:"universe-install-confirm",type:"button",disabled:x,onClick:async function(){if(!x&&!p.installed&&p.available&&o.O){j(!0),b("");try{const e=await o.O.install();(0,d.X)("install_choice",{source:"universe",outcome:e}),b("accepted"===e?"Installation requested. Your browser will finish setting it up.":"dismissed"===e?"Installation dismissed. You can keep exploring in this browser.":"This browser has not offered installation. Follow the device steps below or keep browsing.")}catch{b("Your browser could not open installation. Use its menu, or keep browsing here.")}finally{j(!1)}}},children:x?"Waiting for your browser...":"Install with this browser"}),(0,c.jsxs)("section",{className:"universe-install-steps","aria-label":"Manual installation steps",children:[(0,c.jsx)("h3",{children:g?"On iPhone or iPad":"From your browser menu"}),g?(0,c.jsxs)("ol",{children:[(0,c.jsx)("li",{children:"Open this
2site in Safari."}),(0,c.jsx)("li",{children:"Open Share, then choose Add to Home Screen."}),(0,c.jsx)("li",{children:"Turn on Open as Web App if offered, then tap Add."})]}):(0,c.jsx)("p",{children:"Use your browser menu's Install app or Add to Home Screen option when offered. If installation is unavailable, bookmark the site and keep using it in your browser."})]}),v&&(0,c.jsx)("p",{className:"universe-install-notice",role:"status",children:v})]}),(0,c.jsx)("p",{className:"universe-install-limit",children:"Live content, payments and the Darshan film need an internet connection. Installation does not grant notification, camera or microphone permission."}),(0,c.jsxs)("div",{className:"universe-install-links",children:[(0,c.jsx)("a",{href:"/devices",children:"Phone, desktop and TV guide"}),(0,c.jsx)("button",{type:"button",disabled:x,onClick:()=>f(!1),children:"Keep browsing"})]})]})})]})}},68171(e,n,s){s.r(n),s.d(n,{default:()=>y});var a=s(9950),i=s(32856),l=s(54874),t=s(10950),r=s(12013),o=s(68566),d=s(3969),c=s(65020),h=s(66689),p=s(60719),u=s(36933),m=s(72059),f=s(85294),x=s(43878);var j=s(44414);const v=[{href:"/links",name:"Link Studio",detail:"Create a link to your next video, profile or website.",Icon:l.A},{href:"/asho",name:"ASHO",detail:"Write a review, report a problem or open your tools.",Icon:t.A},{href:"/theatre",name:"Web Theatre",detail:"Explore websites, music and creator stories.",Icon:r.A},{href:"/face-card",name:"Face Card",detail:"Make a shareable card for your public links.",Icon:o.A},{href:"/omnitricks",name:"Omnitricks",detail:"Browse the creator marketplace and useful tools.",Icon:r.A},{href:"/resource-library/",name:"Books & guides",detail:"Find a useful read for your next idea.",Icon:d.A},{href:"/offline-kit/",name:"Offline kit",detail:"Download a small set of tools for later.",Icon:d.A},{href:"/offline-sos/",name:"Offline SOS",detail:"Open the offline communication tools.",Icon:c.A}],b=[{href:"https://www.youtube.com/",name:"YouTube",detail:"Videos, music and creators."},{href:"https://www.instagram.com/",name:"Instagram",detail:"Profiles, photos and reels."},{href:"https://open.spotify.com/",name:"Spotify",detail:"Music and podcasts."},{href:"https://web.telegram.org/",name:"Telegram",detail:"Open your Telegram conversations."}],g=(e,n)=>n.every(n=>`${e.name||e.title} ${e.detail||""} ${e.href||e.url}`.toLocaleLowerCase().includes(n));function y(){const[e,n]=(0,a.useState)(""),[s,l]=(0,a.useState)(x.Js),[t,r]=(0,a.useState)("");(0,a.useEffect)(()=>{const e=()=>l((0,x.Js)());return[x.Xf,"storage","focus"].forEach(n=>window.addEventListener(n,e)),()=>[x.Xf,"storage","focus"].forEach(n=>window.removeEventListener(n,e))},[]);const d=(0,a.useMemo)(()=>e.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean),[e]),c=v.filter(e=>g(e,d)),y=b.filter(e=>g(e,d)),w=s.filter(e=>g(e,d));return(0,j.jsxs)("main",{className:"installed-launchpad",id:"installed-launchpad",children:[(0,j.jsxs)(i.mg,{children:[(0,j.jsx)("title",{children:"Your app launchpad | AppOpener"}),(0,j.jsx)("meta",{name:"description",content:"Open your AppOpener tools and saved links, add AppOpener to your device and find its AI connector."})]}),(0,j.jsxs)("header",{className:"installed-launchpad-intro",children:[(0,j.jsxs)("span",{className:"installed-launchpad-kicker",children:[(0,j.jsx)(o.A,{size:16,"aria-hidden":"true"})," YOUR PERSONAL LAUNCHPAD"]}),(0,j.jsxs)("h1",{children:["Your apps.",(0,j.jsx)("br",{}),(0,j.jsx)("em",{children:"One place to start."})]}),(0,j.jsx)("p",{children:"Your creator tools and saved links, close at hand."}),(0,j.jsxs)("div",{className:"installed-launchpad-actions",children:[(0,j.jsxs)("a",{href:"/?make=1#create",children:["Make a link ",(0,j.jsx)(h.A,{size:17,"aria-hidden":"true"})]}),(0,j.jsxs)("a",{href:"/profile",children:["Your profile ",(0,j.jsx)(h.A,{size:17,"aria-hidden":"true"})]})]})]}),(0,j.jsx)(f.A,{}),(0,j.jsxs)("a",{className:"installed-launchpad-connector",href:"/connect",children:[(0,j.jsx)("span",{className:"installed-launchpad-connector-icon","aria-hidden":"true",children:"\u2726"}),(0,j.jsxs)("span",{children:[(0,j.jsx)("strong",{children:"AppOpener for your AI"}),(0,j.jsx)("small",{children:"Find the connector, available tools and connection guide."})]}),(0,j.jsx)(h.A,{size:23,"aria-hidden":"true"})]}),(0,j.jsxs)("label",{className:"installed-launchpad-search",children:[(0,j.jsx)(p.A,{size:20,"aria-hidden":"true"}),(0,j.jsx)("span",{className:"installed-launchpad-sr",children:"Search apps and saved links"}),(0,j.jsx)("input",{type:"search",value:e,maxLength:160,onChange:e=>n(e.target.value),placeholder:"Find a tool, app or saved link\u2026",autoComplete:"off"}),e&&(0,j.jsx)("button",{type:"button","aria-label":"Clear launchpad search",onClick:()=>n(""),children:(0,j.jsx)(u.A,{size:19,"aria-hidden":"true"})})]}),!!d.length&&!c.length&&!y.length&&!w.length&&(0,j.jsx)("p",{className:"installed-launchpad-empty",role:"status",children:"No matching apps or saved links. Try another name."}),c.length>0&&(0,j.jsxs)("section",{"aria-labelledby":"launchpad-tools-title",children:[(0,j.jsxs)("div",{className:"installed-launchpad-section",children:[(0,j.jsx)("h2",{id:"launchpad-tools-title",children:"Your AppOpener tools"}),(0,j.jsxs)("span",{children:[c.length," tools"]})]}
2),(0,j.jsx)("div",{className:"installed-launchpad-grid",children:c.map(e=>{let{href:n,name:s,detail:a,Icon:i}=e;return(0,j.jsxs)("a",{className:"installed-launchpad-card",href:n,children:[(0,j.jsx)(i,{size:23,"aria-hidden":"true"}),(0,j.jsxs)("span",{children:[(0,j.jsx)("strong",{children:s}),(0,j.jsx)("small",{children:a})]}),(0,j.jsx)(h.A,{size:17,"aria-hidden":"true"})]},n)})})]}),(0,j.jsxs)("section",{"aria-labelledby":"launchpad-saved-title",children:[(0,j.jsxs)("div",{className:"installed-launchpad-section",children:[(0,j.jsxs)("h2",{id:"launchpad-saved-title",children:[(0,j.jsx)(m.A,{size:19,"aria-hidden":"true"}),"Saved links"]}),(0,j.jsx)("span",{children:"On this browser"})]}),w.length?(0,j.jsx)("div",{className:"installed-launchpad-saved",children:w.map(e=>(0,j.jsxs)("article",{children:[(0,j.jsxs)("a",{href:e.url,children:[(0,j.jsx)("strong",{children:String(e.title||"Your AppOpener link")}),(0,j.jsxs)("small",{children:[new URL(e.url).hostname,new URL(e.url).pathname]})]}),(0,j.jsx)("button",{type:"button","aria-label":`Remove ${e.title||"saved link"} from this browser`,onClick:()=>function(e){r((0,x.SK)(e.url)?"Removed from this browser.":"Could not update your saved links. Try again.")}(e),children:(0,j.jsx)(u.A,{size:18,"aria-hidden":"true"})})]},e.url))}):(0,j.jsx)("p",{className:"installed-launchpad-note",children:s.length?"No saved links match this search.":"Links you save from an AppOpener link page appear here. They stay in this browser."}),t&&(0,j.jsx)("p",{role:"status",className:"installed-launchpad-note",children:t})]}),y.length>0&&(0,j.jsxs)("section",{"aria-labelledby":"launchpad-destinations-title",children:[(0,j.jsx)("div",{className:"installed-launchpad-section",children:(0,j.jsx)("h2",{id:"launchpad-destinations-title",children:"Open a favourite"})}),(0,j.jsx)("div",{className:"installed-launchpad-grid installed-launchpad-grid--destinations",children:y.map(e=>(0,j.jsxs)("a",{className:"installed-launchpad-card",href:e.href,target:"_blank",rel:"noopener noreferrer",children:[(0,j.jsxs)("span",{children:[(0,j.jsx)("strong",{children:e.name}),(0,j.jsx)("small",{children:e.detail})]}),(0,j.jsx)(h.A,{size:17,"aria-hidden":"true"})]},e.href))}),(0,j.jsx)("p",{className:"installed-launchpad-note",children:"These are supported destinations, not a list of apps installed on your phone. Your device decides whether to open an app or its website."})]}),(0,j.jsxs)("footer",{className:"installed-launchpad-footer",children:[(0,j.jsx)("a",{href:"/devices",children:"Device & installation guide \u2197"}),(0,j.jsx)("a",{href:"/privacy-policy",children:"Privacy choices \u2197"}),(0,j.jsx)("a",{href:"https://www.appopener.com/apps",children:"AppOpener.com launchpad \u2197"})]})]})}},72059(e,n,s){const a={name:"bookmark",size:24,node:[["path",{d:"M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z",key:"oz39mx"}]]},i=(0,s(40283).A)(a);s.d(n,["A",0,i])},68566(e,n,s){const a={name:"smartphone",size:24,node:[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]},i=(0,s(40283).A)(a);s.d(n,["A",0,i])}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.