six-degrees 0.2.0 → 0.2.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.
Files changed (180) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +11 -11
  4. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  5. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  10. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  12. package/.next/standalone/.next/server/app/_not-found.rsc +11 -11
  13. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +11 -11
  14. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +9 -9
  15. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  16. package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/import.html +1 -1
  38. package/.next/standalone/.next/server/app/import.rsc +13 -13
  39. package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +13 -13
  40. package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +1 -1
  41. package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +11 -11
  42. package/.next/standalone/.next/server/app/index.html +1 -1
  43. package/.next/standalone/.next/server/app/index.rsc +13 -13
  44. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +11 -11
  45. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +13 -13
  46. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  47. package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/launch.html +2 -2
  50. package/.next/standalone/.next/server/app/launch.rsc +13 -13
  51. package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +13 -13
  52. package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +1 -1
  53. package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +11 -11
  54. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/paths.html +1 -1
  59. package/.next/standalone/.next/server/app/paths.rsc +13 -13
  60. package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +13 -13
  61. package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +1 -1
  62. package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +11 -11
  63. package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/profile.html +1 -1
  66. package/.next/standalone/.next/server/app/profile.rsc +13 -13
  67. package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +13 -13
  68. package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +1 -1
  69. package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +11 -11
  70. package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/queue.html +1 -1
  73. package/.next/standalone/.next/server/app/queue.rsc +13 -13
  74. package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +13 -13
  75. package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +1 -1
  76. package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +11 -11
  77. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  78. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/setup.html +1 -1
  80. package/.next/standalone/.next/server/app/setup.rsc +13 -13
  81. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +13 -13
  82. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +1 -1
  83. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +11 -11
  84. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jrmmj-._.js +1 -1
  85. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qx548g._.js +1 -1
  86. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1an3leo._.js +1 -1
  87. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1m8zedk._.js +1 -1
  88. package/.next/standalone/.next/server/chunks/_1_fynia._.js +2 -2
  89. package/.next/standalone/.next/server/chunks/_1itd1o_._.js +1 -1
  90. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h1_f_2._.js +1 -1
  91. package/.next/standalone/.next/server/chunks/ssr/_0bf3x4q._.js +1 -1
  92. package/.next/standalone/.next/server/chunks/ssr/_17gui6a._.js +1 -1
  93. package/.next/standalone/.next/server/chunks/ssr/_1djpk8t._.js +1 -1
  94. package/.next/standalone/.next/server/chunks/ssr/app_import_page_1fmu6_l.js +1 -1
  95. package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +1 -1
  96. package/.next/standalone/.next/server/chunks/ssr/app_paths_page_1ol90m7.js +1 -1
  97. package/.next/standalone/.next/server/chunks/ssr/app_profile_page_0u3-l5y.js +1 -1
  98. package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +2 -2
  99. package/.next/standalone/.next/server/chunks/ssr/lib_0i8v-s3._.js +1 -1
  100. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  101. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  102. package/.next/standalone/.next/server/pages/404.html +1 -1
  103. package/.next/standalone/.next/server/pages/500.html +1 -1
  104. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  106. package/.next/standalone/.next/static/chunks/0jk64vo17avsb.js +1 -0
  107. package/.next/standalone/.next/static/chunks/0s65dsrthylo6.js +2 -0
  108. package/.next/standalone/.next/static/chunks/0uyfdhi8dek85.js +16 -0
  109. package/.next/standalone/.next/static/chunks/{1zmpcmngg5c7-.js → 229haorf0f19b.js} +1 -1
  110. package/.next/{static/chunks/3ts-_4i6bfkh2.js → standalone/.next/static/chunks/2g54uafnwuakc.js} +1 -1
  111. package/.next/standalone/.next/static/chunks/2ot61qsv6_0eq.js +1 -0
  112. package/.next/{static/chunks/3pfyuezyqd9ob.js → standalone/.next/static/chunks/2spwqs6b6dx13.js} +1 -1
  113. package/.next/{static/chunks/1odow92u6wxz0.js → standalone/.next/static/chunks/38dlepuubiox0.js} +1 -1
  114. package/.next/standalone/AGENTS.md +10 -0
  115. package/.next/standalone/CHANGELOG.md +41 -0
  116. package/.next/standalone/CONTRIBUTING.md +9 -0
  117. package/.next/standalone/README.md +49 -29
  118. package/.next/standalone/SECURITY.md +12 -9
  119. package/.next/standalone/app/api/scraper/route.js +4 -3
  120. package/.next/standalone/app/api/update/route.js +10 -2
  121. package/.next/standalone/app/components/ForceGraph.js +1 -1
  122. package/.next/standalone/app/components/Sidebar.js +8 -8
  123. package/.next/standalone/app/components/UpdatePanel.js +39 -8
  124. package/.next/standalone/app/import/page.js +3 -3
  125. package/.next/standalone/app/layout.js +2 -2
  126. package/.next/standalone/app/page.js +2 -2
  127. package/.next/standalone/app/paths/page.js +1 -1
  128. package/.next/standalone/app/profile/page.js +0 -178
  129. package/.next/standalone/app/setup/page.js +4 -4
  130. package/.next/standalone/bin/six-degrees.mjs +7 -2
  131. package/.next/standalone/install.sh +1 -1
  132. package/.next/standalone/lib/csv.js +53 -27
  133. package/.next/standalone/lib/release.js +5 -2
  134. package/.next/standalone/lib/scraper-client.js +3 -3
  135. package/.next/standalone/package-lock.json +103 -9
  136. package/.next/standalone/package.json +12 -10
  137. package/.next/standalone/public/demo-data.json +1 -1
  138. package/.next/standalone/scripts/gen-synthetic.mjs +16 -1
  139. package/.next/standalone/scripts/readme_buttons.py +89 -0
  140. package/.next/standalone/scripts/screenshots.py +2 -0
  141. package/.next/standalone/site/app.js +84 -0
  142. package/.next/standalone/site/index.html +221 -0
  143. package/.next/standalone/site/style.css +155 -0
  144. package/.next/standalone/site/video/install-mac-poster.jpg +0 -0
  145. package/.next/standalone/site/video/install-mac.mp4 +0 -0
  146. package/.next/standalone/site/video/linux-poster.jpg +0 -0
  147. package/.next/standalone/site/video/linux.mp4 +0 -0
  148. package/.next/standalone/site/video/scan-poster.jpg +0 -0
  149. package/.next/standalone/site/video/scan.mp4 +0 -0
  150. package/.next/static/chunks/0jk64vo17avsb.js +1 -0
  151. package/.next/static/chunks/0s65dsrthylo6.js +2 -0
  152. package/.next/static/chunks/0uyfdhi8dek85.js +16 -0
  153. package/.next/static/chunks/{1zmpcmngg5c7-.js → 229haorf0f19b.js} +1 -1
  154. package/.next/{standalone/.next/static/chunks/3ts-_4i6bfkh2.js → static/chunks/2g54uafnwuakc.js} +1 -1
  155. package/.next/static/chunks/2ot61qsv6_0eq.js +1 -0
  156. package/.next/{standalone/.next/static/chunks/3pfyuezyqd9ob.js → static/chunks/2spwqs6b6dx13.js} +1 -1
  157. package/.next/{standalone/.next/static/chunks/1odow92u6wxz0.js → static/chunks/38dlepuubiox0.js} +1 -1
  158. package/CHANGELOG.md +41 -0
  159. package/README.md +49 -29
  160. package/SECURITY.md +12 -9
  161. package/bin/six-degrees.mjs +7 -2
  162. package/lib/csv.js +53 -27
  163. package/lib/release.js +5 -2
  164. package/lib/scraper-client.js +3 -3
  165. package/package.json +12 -10
  166. package/public/demo-data.json +1 -1
  167. package/.next/standalone/.next/static/chunks/1wb_is4wsdm-u.js +0 -1
  168. package/.next/standalone/.next/static/chunks/2rrf5kzx2fhin.js +0 -2
  169. package/.next/standalone/.next/static/chunks/2s_k9x4d0gi9h.js +0 -16
  170. package/.next/standalone/.next/static/chunks/3hsi90cejq2dg.js +0 -1
  171. package/.next/static/chunks/1wb_is4wsdm-u.js +0 -1
  172. package/.next/static/chunks/2rrf5kzx2fhin.js +0 -2
  173. package/.next/static/chunks/2s_k9x4d0gi9h.js +0 -16
  174. package/.next/static/chunks/3hsi90cejq2dg.js +0 -1
  175. /package/.next/standalone/.next/static/{N9wokeIiC9rUIGmzBhj6T → ZGTiDrZ5NHGETgGdlhssu}/_buildManifest.js +0 -0
  176. /package/.next/standalone/.next/static/{N9wokeIiC9rUIGmzBhj6T → ZGTiDrZ5NHGETgGdlhssu}/_clientMiddlewareManifest.js +0 -0
  177. /package/.next/standalone/.next/static/{N9wokeIiC9rUIGmzBhj6T → ZGTiDrZ5NHGETgGdlhssu}/_ssgManifest.js +0 -0
  178. /package/.next/static/{N9wokeIiC9rUIGmzBhj6T → ZGTiDrZ5NHGETgGdlhssu}/_buildManifest.js +0 -0
  179. /package/.next/static/{N9wokeIiC9rUIGmzBhj6T → ZGTiDrZ5NHGETgGdlhssu}/_clientMiddlewareManifest.js +0 -0
  180. /package/.next/static/{N9wokeIiC9rUIGmzBhj6T → ZGTiDrZ5NHGETgGdlhssu}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
1
  module.exports=[90195,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(37732),e=a.i(23310),f=a.i(58834),g=a.i(42510),h=a.i(36839);a.i(75930);var i=a.i(74365),j=a.i(72243),k=a.i(11366),l=a.i(53877),m=a.i(7656);let n="1px solid rgba(255,255,255,0.1)",o={yours:{label:"your score",color:"#00ff88"},known:{label:"known list",color:"#3498DB"},network:{label:"estimated: many of your people",color:"#FF6B35"},default:{label:"unknown company",color:"#778"}};async function p(){let a=await fetch("/api/company-scores"),b=await a.json();if(!a.ok)throw Error(b.error||"Could not load company scores");return b.companies}function q(){let[a,b]=(0,c.useState)(null),[d,e]=(0,c.useState)(null);return(0,c.useEffect)(()=>{let a=!1;return p().then(c=>{a||b(c)}).catch(b=>{a||e(b.message)}),()=>{a=!0}},[]),{companies:a,error:d,setScore:(0,c.useCallback)(async(a,c)=>{let d=await fetch("/api/company-scores",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:a,score:c})}),e=await d.json();if(!d.ok)throw Error(e.error||"Could not save");return b(await p()),e},[])}}function r({company:a,onSet:d,compact:e}){let[f,g]=(0,c.useState)(!1),h=async b=>{g(!0);try{await d(a.name,"auto"===b?null:Number(b))}finally{g(!1)}};return(0,b.jsxs)("select",{disabled:f,value:"yours"===a.source?String(a.score):"auto",onChange:a=>h(a.target.value),title:"Set this company's score. Auto uses the known list or an estimate.",style:{padding:e?"2px 4px":"4px 6px",borderRadius:6,border:n,background:"#11131c",color:"#dfe6e9",fontSize:12},children:[(0,b.jsxs)("option",{value:"auto",children:["Auto (","yours"===a.source?a.suggested??"est.":a.score,")"]}),[10,9,8,7,6,5,4,3,2,1].map(a=>(0,b.jsx)("option",{value:a,children:a},a))]})}function s({onRescored:a}){let{companies:d,error:e,setScore:f}=q(),[g,h]=(0,c.useState)(""),[i,j]=(0,c.useState)("all"),[k,l]=(0,c.useState)(150),[m,p]=(0,c.useState)(null),t=async(b,c)=>{let d=await f(b,c);p(`${b}: ${null==c?"back to auto":`set to ${c}`} \xb7 rescored ${d.scored} people`),setTimeout(()=>p(null),3500),a?.()},u=(0,c.useMemo)(()=>{if(!d)return[];let a=g.trim().toLowerCase();return d.filter(b=>(!a||b.name.toLowerCase().includes(a))&&("all"===i||b.source===i))},[d,g,i]);if(e)return(0,b.jsx)("div",{style:{padding:24,color:"#e74c3c"},children:e});if(!d)return(0,b.jsx)("div",{style:{padding:24,color:"#778"},children:"Loading companies…"});let v=a=>d.filter(b=>b.source===a).length;return(0,b.jsxs)("div",{style:{flex:1,overflow:"auto",padding:16},children:[(0,b.jsxs)("div",{style:{maxWidth:980,margin:"0 auto"},children:[(0,b.jsxs)("div",{style:{padding:14,borderRadius:10,border:n,background:"rgba(255,255,255,0.03)",fontSize:12.5,color:"#cfd8d8",lineHeight:1.6},children:[(0,b.jsx)("b",{style:{color:"#fff"},children:"How a power score works."})," power = ",(0,b.jsx)("b",{children:"title"})," × ",(0,b.jsx)("b",{children:"company weight"})," + bonus. The title (student 1 … founder or C-suite 10) comes from someone’s current role, with former roles at 70%. The company weight runs from 0.56 (no company found) to 1.0 (a company scored 10), so seniority counts for more at a bigger company. The bonus is at most +1.5, for investor, YC or an audience in the millions, and counts half at an unknown company. A 1st-degree person whose circle is unusually strong gets up to +1 more. S ≥ 7.5 · A ≥ 5.5 · B ≥ 4 · C ≥ 2.5.",(0,b.jsx)("div",{style:{marginTop:6,color:"#8b9a9a"},children:"So a VP at a 10 scores 9.0, a founder at an unknown company 6.7, a director at an unknown company 5.0, and an intern at a 10 scores 2.0. Set a company’s score below and everyone there is rescored."})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",margin:"14px 0 10px"},children:[(0,b.jsx)("input",{value:g,onChange:a=>h(a.target.value),placeholder:"Find a company",style:{padding:"6px 10px",borderRadius:7,border:n,background:"rgba(255,255,255,0.05)",color:"#fff",fontSize:13,minWidth:180}}),[["all",`All ${d.length}`],["known",`Known list ${v("known")}`],["yours",`Yours ${v("yours")}`],["network",`Estimated ${v("network")}`],["default",`Unknown ${v("default")}`]].map(([a,c])=>(0,b.jsx)("button",{onClick:()=>j(a),style:{padding:"5px 10px",borderRadius:7,border:n,cursor:"pointer",fontSize:11.5,fontWeight:600,background:i===a?"rgba(52,152,219,0.25)":"transparent",color:i===a?"#cfe6f7":"#8b9a9a"},children:c},a))]}),(0,b.jsxs)("div",{style:{borderRadius:10,border:n,overflow:"hidden"},children:[(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 70px 70px 70px 60px 180px 110px",gap:8,padding:"8px 12px",fontSize:10.5,letterSpacing:.6,color:"#8b9a9a",background:"rgba(255,255,255,0.04)"},children:[(0,b.jsx)("span",{children:"COMPANY"}),(0,b.jsx)("span",{style:{textAlign:"right"},children:"PEOPLE"}),(0,b.jsx)("span",{style:{textAlign:"right"},children:"YOU KNOW"}),(0,b.jsx)("span",{style:{textAlign:"right"},children:"DIRECTOR+"}),(0,b.jsx)("span",{style:{textAlign:"right"},children:"SCORE"}),(0,b.jsx)("span",{children:"SOURCE"}),(0,b.jsx)("span",{children:"SET"})]}),u.slice(0,k).map(a=>(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 70px 70px 70px 60px 180px 110px",gap:8,padding:"7px 12px",alignItems:"center",borderTop:"1px solid rgba(255,255,255,0.05)",fontSize:12.5},children:[(0,b.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,b.jsx)("span",{title:`${a.industry.label} (inferred)`,style:{width:8,height:8,borderRadius:"50%",background:a.industry.color,flexShrink:0}}),(0,b.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.name})]}),(0,b.jsx)("span",{style:{textAlign:"right"},children:a.people}),(0,b.jsx)("span",{style:{textAlign:"right",color:a.d1?"#00ff88":"#556"},children:a.d1}),(0,b.jsx)("span",{style:{textAlign:"right",color:a.senior?"#FFD700":"#556"},children:a.senior}),(0,b.jsx)("b",{style:{textAlign:"right",fontSize:15},children:a.score}),(0,b.jsx)("span",{style:{fontSize:11,color:o[a.source]?.color},children:o[a.source]?.label}),(0,b.jsx)(r,{company:a,onSet:t,compact:!0})]},a.name))]}),u.length>k&&(0,b.jsxs)("button",{onClick:()=>l(a=>a+300),style:{marginTop:10,padding:"7px 14px",borderRadius:8,border:n,background:"rgba(255,255,255,0.05)",color:"#dfe6e9",cursor:"pointer",fontSize:12},children:["Show more (",u.length-k," left)"]})]}),m&&(0,b.jsx)("div",{role:"status",style:{position:"fixed",bottom:24,left:"50%",transform:"translateX(-50%)",padding:"10px 18px",borderRadius:24,background:"linear-gradient(135deg, #00ff88, #3498DB)",color:"#000",fontWeight:800,fontSize:13,zIndex:50},children:m})]})}var t=a.i(30889);function u(a){let b=(0,t.readTitle)(a);return{key:b.key,label:b.label,level:b.level}}function v(a){let b,c=(0,t.currentCompany)(a);return c?((b=(c||"").trim().toLowerCase()).includes("snap")&&(b.includes("inc")||"snap"===b||"snapchat"===b)?"Snap":b.includes("meta")&&(b.includes("platform")||"meta"===b||b.includes("facebook"))?"Meta":b.includes("tiktok")||b.includes("bytedance")?"TikTok":b.includes("pinterest")?"Pinterest":"google"===b||b.includes("alphabet")||b.includes("google")&&b.includes("llc")?"Google":"apple"===b||"apple inc"===b||"apple inc."===b?"Apple":b.includes("amazon")&&!b.includes("amazon ")?"Amazon":b.includes("microsoft")?"Microsoft":b.includes("anthropic")?"Anthropic":b.includes("openai")||"open ai"===b?"OpenAI":b.includes("deepmind")?"DeepMind":b.includes("cohere")?"Cohere":b.includes("mistral")?"Mistral":b.includes("hugging")&&b.includes("face")?"Hugging Face":b.includes("stripe")?"Stripe":b.includes("coinbase")?"Coinbase":b.includes("polymarket")?"Polymarket":b.includes("blackrock")?"BlackRock":b.includes("robinhood")?"Robinhood":b.includes("whatnot")?"Whatnot":b.includes("shopify")?"Shopify":b.includes("palantir")?"Palantir":b.includes("anduril")?"Anduril":b.includes("netflix")?"Netflix":b.includes("spotify")?"Spotify":b.includes("tesla")?"Tesla":b.includes("spacex")?"SpaceX":b.includes("nvidia")?"NVIDIA":b.includes("lockheed")?"Lockheed Martin":b.includes("northrop")?"Northrop Grumman":b.includes("boeing")?"Boeing":b.includes("l3harris")||b.includes("l3 harris")?"L3Harris":b.includes("leidos")?"Leidos":b.includes("nasa")?"NASA":b.includes("sandia")?"Sandia National Labs":b.includes("blue origin")?"Blue Origin":b.includes("raytheon")?"Raytheon":b.includes("general dynamics")?"General Dynamics":b.includes("bae systems")?"BAE Systems":b.includes("goldman")?"Goldman Sachs":b.includes("jpmorgan")||b.includes("jp morgan")?"JPMorgan Chase":b.includes("wells fargo")?"Wells Fargo":b.includes("citi")&&!b.includes("citizen")?"Citi":b.includes("mastercard")?"Mastercard":b.includes("visa")&&b.length<15?"Visa":b.includes("paypal")?"PayPal":b.includes("bny")||b.includes("bank of new york")||b.includes("mellon")?"BNY Mellon":b.includes("deloitte")?"Deloitte":b.includes("bain")?"Bain & Company":b.includes("bloomberg")?"Bloomberg":b.includes("usaa")?"USAA":b.includes("navy federal")?"Navy Federal":b.includes("raymond james")?"Raymond James":b.includes("geico")?"GEICO":b.includes("oracle")?"Oracle":b.includes("ibm")?"IBM":b.includes("servicenow")?"ServiceNow":b.includes("siemens")?"Siemens":b.includes("texas instruments")?"Texas Instruments":b.includes("qualcomm")?"Qualcomm":b.includes("databricks")?"Databricks":b.includes("together.ai")||b.includes("together ai")?"Together AI":b.includes("zoox")?"Zoox":b.includes("nbcuniversal")||b.includes("nbc universal")?"NBCUniversal":b.includes("universal destinations")?"Universal Destinations":b.includes("humana")?"Humana":b.includes("booz allen")?"Booz Allen Hamilton":b.includes("abbott")?"Abbott":b.includes("walmart")?"Walmart":b.includes("publix")?"Publix":b.includes("mitsubishi")?"Mitsubishi Power":b.includes("oscar health")?"Oscar Health":b.includes("ford")&&b.length<15?"Ford":b.includes("coca")&&b.includes("cola")?"Coca-Cola":b.includes("nike")?"Nike":b.includes("disney")?"Disney":b.includes("ucf")||b.includes("university of central florida")?"UCF":(c||"").trim())||c:null}let w=[{key:"defense",label:"Government, Defense & Aerospace",color:"#7f8c8d",words:/\b(government|federal|state of|county|city of|defen[cs]e|army|navy|air force|marine corps|military|dod|nasa|aerospace|lockheed|northrop|boeing|raytheon|l3harris|leidos|anduril|sandia|blue origin|spacex|public sector)\b/i},{key:"finance",label:"Finance, VC & Crypto",color:"#2ecc71",words:/\b(bank|banking|capital|ventures?|vc|investments?|investor|fund|private equity|asset management|wealth|trading|trader|hedge|crypto|blockchain|web3|defi|fintech|stripe|coinbase|blackrock|robinhood|polymarket|goldman|morgan stanley|jpmorgan|chase|bny|mellon|wells fargo|citi|citigroup|capital one|fidelity|vanguard|schwab|visa|mastercard|amex|american express|paypal|insurance|accounting|cpa|financial)\b/i},{key:"health",label:"Healthcare & Biotech",color:"#e74c3c",words:/\b(health|healthcare|medical|medicine|hospital|clinic|pharma|pharmaceutical|biotech|nurse|nursing|physician|doctor|dental|therapy|therapist|wellness)\b/i},{key:"education",label:"Education",color:"#f1c40f",words:/\b(university|college|school|education|student|professor|teacher|academy|ucf|phd|faculty|alumni)\b/i},{key:"media",label:"Marketing, Media & Creator",color:"#e67e22",words:/\b(marketing|brand|branding|advertising|agency|media|content|social media|creative|creator|influencer|pr|public relations|communications|snap|snapchat|tiktok|pinterest|youtube|lens|ar|growth)\b/i},{key:"entertainment",label:"Entertainment & Gaming",color:"#9b59b6",words:/\b(entertainment|film|movie|music|records|gaming|games?|esports|studio|studios|netflix|disney|spotify|hollywood|theater|theatre|sports)\b/i},{key:"tech",label:"Tech, Software & AI",color:"#3498db",words:/\b(software|saas|engineer|engineering|developer|tech|technology|technologies|ai|artificial intelligence|machine learning|ml|data|cloud|cyber|security|devops|product manager|google|microsoft|apple|meta|amazon|nvidia|openai|anthropic|palantir|salesforce|oracle|ibm|intel|app|apps|startup|platform|labs?)\b/i},{key:"consulting",label:"Consulting, Legal & Services",color:"#1abc9c",words:/\b(consulting|consultant|consultancy|deloitte|accenture|mckinsey|kpmg|pwc|ey|bain|bcg|legal|law|lawyer|attorney|paralegal|recruiting|recruiter|staffing|talent)\b/i},{key:"realestate",label:"Real Estate & Construction",color:"#d35400",words:/\b(real estate|realtor|realty|property|properties|construction|architecture|architect|mortgage|homes|housing|builders?)\b/i},{key:"consumer",label:"Retail, Consumer & Hospitality",color:"#ff79c6",words:/\b(retail|e-?commerce|shopify|consumer|cpg|fashion|apparel|beauty|cosmetics|food|beverage|restaurant|hospitality|hotel|travel|tourism|coca-cola|nike|whatnot|store|shop)\b/i},{key:"industry",label:"Manufacturing, Energy & Logistics",color:"#95a5a6",words:/\b(manufacturing|energy|oil|gas|solar|utilities|automotive|tesla|siemens|ge|general electric|honeywell|3m|logistics|supply chain|shipping|freight|fedex|ups|industrial|mining|chemicals?)\b/i},{key:"nonprofit",label:"Nonprofit & Community",color:"#bdc3c7",words:/\b(nonprofit|non-profit|foundation|charity|ngo|church|ministry|volunteer)\b/i}],x={key:"unknown",label:"Unclear",color:"#555c66"},y=Object.fromEntries([...w,x].map(a=>[a.key,a])),z=a=>y[a]||x;function A(a,b){for(let c of[a,b]){if(!c)continue;let a=w.find(a=>a.words.test(c));if(a)return a}return x}let B=a=>u(a).level>=4,C={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},D="1px solid rgba(255,255,255,0.1)",E=[...w,x];function F(a){let b=0x811c9dc5;for(let c=0;c<a.length;c++)b=Math.imul(b^a.charCodeAt(c),0x1000193);return(b>>>0)%1e3/1e3}function G({value:a,onChange:c,options:d}){return(0,b.jsx)("div",{style:{display:"flex",borderRadius:7,overflow:"hidden",border:D},children:d.map(([d,e])=>(0,b.jsx)("button",{onClick:()=>c(d),style:{padding:"5px 10px",fontSize:11.5,fontWeight:600,border:"none",cursor:"pointer",background:a===d?"rgba(52,152,219,0.25)":"transparent",color:a===d?"#cfe6f7":"#8b9a9a"},children:e},d))})}function H(a,b){return("all"===b.degree||String(a.degree)===b.degree)&&("senior"!==b.seniority||!!B(a.headline))&&("csuite"!==b.seniority||!(u(a.headline).level<6))&&("SA"!==b.tier||"S"===a.tier||"A"===a.tier)}function I({d1:a=[],d2:d=[],d3:e=[],tab:f="map",onOpenCompany:g}){let[h,i]=(0,c.useState)({degree:"all",seniority:"all",tier:"all"}),[j,k]=(0,c.useState)(()=>new Set),[l,m]=(0,c.useState)(""),[n,o]=(0,c.useState)(null),p=(0,c.useMemo)(()=>[...a,...d,...e],[a,d,e]),q=(0,c.useMemo)(()=>(function(a=[]){let b=new Map;for(let c of a){let a=c.profile_url||`id:${c.id}`,d=b.get(a);(!d||(c.degree||9)<(d.degree||9))&&b.set(a,c)}let c=new Map;for(let a of b.values()){let b=v(a);if(!b)continue;let d=c.get(b);d||(d={name:b,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0,votes:{}},c.set(b,d)),d.people.push(a),1===a.degree?d.d1++:2===a.degree?d.d2++:d.d3++,"S"===a.tier&&d.S++,"A"===a.tier&&d.A++,B(a.headline)&&d.senior++;let e=A(b,a.headline).key;d.votes[e]=(d.votes[e]||0)+1}for(let a of c.values()){let b=A(a.name,null);if(b!==x)a.industry=b;else{let[b]=Object.entries(a.votes).filter(([a])=>"unknown"!==a).sort((a,b)=>b[1]-a[1]);a.industry=b?z(b[0]):x}delete a.votes}return c})(p),[p]),r=(0,c.useMemo)(()=>(function(a=[],b=[]){let c=new Map;for(let b of a){let a=v(b);a&&c.set(b.id,a)}let d=new Map;for(let a of b){let b=c.get(a.source_connection_id),e=v(a);if(!b||!e||b===e)continue;let[f,g]=b<e?[b,e]:[e,b],h=`${f}\u0000${g}`,i=d.get(h);i||(i={a:f,b:g,weight:0,via:new Set},d.set(h,i)),i.weight++,i.via.add(a.source_connection_id)}return[...d.values()]})(a,d),[a,d]),s=(0,c.useMemo)(()=>{let a=l.trim().toLowerCase(),b=[];for(let c of q.values()){if(j.has(c.industry.key)||a&&!c.name.toLowerCase().includes(a))continue;let d=c.people.filter(a=>H(a,h));d.length&&b.push({...c,shown:d})}return b.sort((a,b)=>b.shown.length-a.shown.length)},[q,h,j,l]),t=(0,c.useMemo)(()=>{let a=new Map(E.map(a=>[a.key,{...a,people:[],companies:new Map}])),b=new Set;for(let c of p){let d=c.profile_url||`id:${c.id}`;if(b.has(d)||(b.add(d),!H(c,h)))continue;let e=v(c),f=e?q.get(e)?.industry||A(e,c.headline):A(null,c.headline),g=a.get(f.key);g.people.push(c),e&&g.companies.set(e,(g.companies.get(e)||0)+1)}return[...a.values()].filter(a=>a.people.length).sort((a,b)=>b.people.length-a.people.length)},[p,q,h]),u=n?.kind==="company"?q.get(n.key):n?.kind==="industry"?t.find(a=>a.key===n.key):null;return(0,b.jsxs)("div",{style:{display:"flex",flex:1,minHeight:0},children:[(0,b.jsxs)("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column"},children:[(0,b.jsx)(J,{filters:h,setFilters:i,query:l,setQuery:m,industries:t,hidden:j,setHidden:k,onIndustry:a=>o({kind:"industry",key:a})}),"map"===f?(0,b.jsx)(K,{companies:s,links:r,focus:n,onCompany:a=>o({kind:"company",key:a}),onIndustry:a=>o({kind:"industry",key:a}),onClear:()=>o(null)}):(0,b.jsx)(M,{industries:t,index:q,d1:a,d2:d,onIndustry:a=>o({kind:"industry",key:a}),onCompany:a=>o({kind:"company",key:a})})]}),u&&(0,b.jsx)(O,{focus:n,data:u,index:q,links:r,d1:a,d2:d,filters:h,onClose:()=>o(null),onCompany:a=>o({kind:"company",key:a}),onOpenCompany:g})]})}function J({filters:a,setFilters:c,query:d,setQuery:e,industries:f,hidden:g,setHidden:h,onIndustry:i}){let j=(a,b)=>c(c=>({...c,[a]:b}));return(0,b.jsxs)("div",{style:{padding:"10px 16px",borderBottom:D,display:"flex",flexDirection:"column",gap:8},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap",alignItems:"center"},children:[(0,b.jsx)("input",{value:d,onChange:a=>e(a.target.value),placeholder:"Find a company",style:{padding:"6px 10px",borderRadius:7,border:D,background:"rgba(255,255,255,0.05)",color:"#fff",fontSize:13,minWidth:170}}),(0,b.jsx)(G,{value:a.degree,onChange:a=>j("degree",a),options:[["all","All degrees"],["1","1st"],["2","2nd"],["3","3rd"]]}),(0,b.jsx)(G,{value:a.seniority,onChange:a=>j("seniority",a),options:[["all","Any level"],["senior","Director+"],["csuite","C-suite"]]}),(0,b.jsx)(G,{value:a.tier,onChange:a=>j("tier",a),options:[["all","All tiers"],["SA","S & A only"]]})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:6,flexWrap:"wrap"},children:[f.map(a=>{let c=g.has(a.key);return(0,b.jsxs)("span",{style:{display:"inline-flex",borderRadius:14,border:`1px solid ${a.color}55`,overflow:"hidden",opacity:c?.4:1},children:[(0,b.jsx)("button",{title:c?"Show on the map":"Hide from the map",onClick:()=>h(b=>{let c=new Set(b);return c.has(a.key)?c.delete(a.key):c.add(a.key),c}),style:{padding:"3px 7px",border:"none",background:`${a.color}22`,cursor:"pointer",color:a.color,fontSize:11},children:"●"}),(0,b.jsxs)("button",{onClick:()=>i(a.key),title:"Analyse this industry",style:{padding:"3px 9px 3px 5px",border:"none",background:"transparent",cursor:"pointer",color:"#cfd8d8",fontSize:11.5},children:[a.label," ",(0,b.jsx)("span",{style:{color:"#778"},children:a.people.length})]})]},a.key)}),(0,b.jsx)("span",{style:{fontSize:11,color:"#667",alignSelf:"center"},children:"industries inferred from companies and headlines"})]})]})}function K({companies:a,links:d,focus:e,onCompany:f,onIndustry:g,onClear:h}){let n=(0,c.useRef)(null),{w:o,h:p}=function(a){let[b,d]=(0,c.useState)({w:0,h:0});return(0,c.useEffect)(()=>{let b=a.current;if(!b)return;let c=()=>{let a=b.getBoundingClientRect();d(b=>b.w===Math.round(a.width)&&b.h===Math.round(a.height)?b:{w:Math.round(a.width),h:Math.round(a.height)})};c();let e=new ResizeObserver(c);return e.observe(b),()=>e.disconnect()},[a]),b}(n),[q,r]=(0,c.useState)(null),s=(0,c.useMemo)(()=>{let b=a.slice(0,140),c=new Set(b.map(a=>a.name)),e=[...new Set(b.map(a=>a.industry.key))],f=new Map(e.map((a,b)=>{let c=b/Math.max(1,e.length)*Math.PI*2-Math.PI/2;return[a,{x:260*Math.cos(c),y:260*Math.sin(c)}]})),g=b.map(a=>({id:a.name,co:a,r:4+3.4*Math.sqrt(a.shown.length),x:f.get(a.industry.key).x+(F(a.name)-.5)*40,y:f.get(a.industry.key).y+(F(a.name+"#")-.5)*40})),h=d.filter(a=>c.has(a.a)&&c.has(a.b)).map(a=>({source:a.a,target:a.b,weight:a.weight,via:a.via.size})),n=(0,l.forceSimulation)(g).force("x",(function(a){var b,c,d,e=(0,m.default)(.1);function f(a){for(var e,f=0,g=b.length;f<g;++f)e=b[f],e.vx+=(d[f]-e.x)*c[f]*a}function g(){if(b){var f,g=b.length;for(c=Array(g),d=Array(g),f=0;f<g;++f)c[f]=isNaN(d[f]=+a(b[f],f,b))?0:+e(b[f],f,b)}}return"function"!=typeof a&&(a=(0,m.default)(null==a?0:+a)),f.initialize=function(a){b=a,g()},f.strength=function(a){return arguments.length?(e="function"==typeof a?a:(0,m.default)(+a),g(),f):e},f.x=function(b){return arguments.length?(a="function"==typeof b?b:(0,m.default)(+b),g(),f):a},f})(a=>f.get(a.co.industry.key).x).strength(.12)).force("y",(function(a){var b,c,d,e=(0,m.default)(.1);function f(a){for(var e,f=0,g=b.length;f<g;++f)e=b[f],e.vy+=(d[f]-e.y)*c[f]*a}function g(){if(b){var f,g=b.length;for(c=Array(g),d=Array(g),f=0;f<g;++f)c[f]=isNaN(d[f]=+a(b[f],f,b))?0:+e(b[f],f,b)}}return"function"!=typeof a&&(a=(0,m.default)(null==a?0:+a)),f.initialize=function(a){b=a,g()},f.strength=function(a){return arguments.length?(e="function"==typeof a?a:(0,m.default)(+a),g(),f):e},f.y=function(b){return arguments.length?(a="function"==typeof b?b:(0,m.default)(+b),g(),f):a},f})(a=>f.get(a.co.industry.key).y).strength(.12)).force("collide",(0,i.forceCollide)(a=>a.r+3)).force("charge",(0,k.forceManyBody)().strength(-25)).force("link",(0,j.forceLink)(h).id(a=>a.id).strength(a=>Math.min(.25,.03*a.weight)).distance(60)).stop();for(let a=0;a<320;a++)n.tick();let o=g.flatMap(a=>[a.x-a.r,a.x+a.r]),p=g.flatMap(a=>[a.y-a.r,a.y+a.r]),q=g.length?{x:Math.min(...o)-60,y:Math.min(...p)-40,w:Math.max(...o)-Math.min(...o)+120,h:Math.max(...p)-Math.min(...p)+80}:{x:-300,y:-300,w:600,h:600},r=e.map(a=>{let b=g.filter(b=>b.co.industry.key===a),c=b.reduce((a,b)=>a+b.x,0)/b.length,d=b.reduce((a,b)=>a+b.y,0)/b.length,e=Math.hypot(c,d)||1,f=c/e,h=d/e,i=Math.max(...b.map(a=>(a.x-c)*f+(a.y-d)*h+a.r));return{key:a,x:c+f*(i+16),y:d+h*(i+16)+4,anchor:f>.35?"start":f<-.35?"end":"middle",ind:z(a)}});for(let a of r){let b=7.5*a.ind.label.length,c="start"===a.anchor?a.x:"end"===a.anchor?a.x-b:a.x-b/2,d=Math.max(q.x+q.w,c+b+10);q.x=Math.min(q.x,c-10),q.w=d-q.x;let e=Math.max(q.y+q.h,a.y+12);q.y=Math.min(q.y,a.y-18),q.h=e-q.y}return q.h+=Math.max(60,.1*q.h),{nodes:g,edges:h,box:q,labels:r,cut:Math.max(0,a.length-b.length)}},[a,d]),t=q||(e?.kind==="company"?e.key:null),u=e?.kind==="industry"?e.key:null,v=(0,c.useMemo)(()=>{if(!t)return null;let a=new Set([t]);for(let b of s.edges)b.source.id===t&&a.add(b.target.id),b.target.id===t&&a.add(b.source.id);return a},[t,s]),w=(0,c.useMemo)(()=>new Set(s.nodes.slice(0,28).map(a=>a.id)),[s]);return(0,b.jsxs)("div",{ref:n,style:{flex:1,minHeight:360,position:"relative"},onClick:h,children:[o>0&&(0,b.jsxs)("svg",{width:o,height:p,viewBox:`${s.box.x} ${s.box.y} ${s.box.w} ${s.box.h}`,style:{display:"block"},children:[(0,b.jsx)("g",{children:s.edges.map((a,c)=>{let d=t&&(a.source.id===t||a.target.id===t);return(0,b.jsx)("line",{x1:a.source.x,y1:a.source.y,x2:a.target.x,y2:a.target.y,stroke:d?"#FF6B35":"#8fa6c0",strokeOpacity:d?.8:t?.04:.14,strokeWidth:d?1+Math.log2(1+a.weight):.4+.5*Math.log2(1+a.weight)},c)})}),s.labels.map(a=>(0,b.jsx)("text",{x:a.x,y:a.y,textAnchor:a.anchor,fontSize:13,fontWeight:800,fill:a.ind.color,opacity:u&&u!==a.key?.25:.85,style:{cursor:"pointer"},onClick:b=>{b.stopPropagation(),g(a.key)},children:a.ind.label},a.key)),s.nodes.map(a=>{let c=v&&!v.has(a.id)||u&&a.co.industry.key!==u,d=e?.kind==="company"&&e.key===a.id;return(0,b.jsxs)("g",{transform:`translate(${a.x},${a.y})`,style:{cursor:"pointer"},opacity:c?.18:1,onMouseEnter:()=>r(a.id),onMouseLeave:()=>r(null),onClick:b=>{b.stopPropagation(),f(a.id)},children:[(0,b.jsx)("title",{children:`${a.co.name} \xb7 ${a.co.industry.label} (inferred)
2
- ${a.co.d1} you know \xb7 ${a.co.d2} reachable${a.co.d3?` \xb7 ${a.co.d3} further`:""}`}),(0,b.jsx)("circle",{r:a.r,fill:a.co.industry.color,fillOpacity:.75,stroke:d?"#fff":a.co.S?C.S:"rgba(0,0,0,0.35)",strokeWidth:d?2.5:a.co.S?1.5:.6}),a.co.d1>0&&(0,b.jsx)("circle",{r:a.r*Math.sqrt(a.co.d1/Math.max(1,a.co.people.length)),fill:"#fff",fillOpacity:.35}),(w.has(a.id)||a.id===t||d)&&(0,b.jsx)("text",{y:a.r+11,textAnchor:"middle",fontSize:10,fill:"#e6edf0",style:{pointerEvents:"none"},children:a.co.name})]},a.id)})]}),(0,b.jsxs)("div",{style:{position:"absolute",left:12,bottom:10,fontSize:11,color:"#778",lineHeight:1.6,pointerEvents:"none"},children:["Bubble = a company, sized by your people there; white centre = the share you already know; gold ring = an S-tier person inside.",(0,b.jsx)("br",{}),"A line = one of your connections at one company knows people at the other.",s.cut?` Showing the 140 largest; ${s.cut} smaller companies are in Industries.`:""]})]})}function L({parts:a,total:c}){return(0,b.jsx)("div",{style:{display:"flex",height:6,borderRadius:3,overflow:"hidden",background:"rgba(255,255,255,0.06)"},children:a.map(([a,d],e)=>(0,b.jsx)("div",{style:{width:`${a/Math.max(1,c)*100}%`,background:d}},e))})}function M({industries:a,index:d,d1:e,d2:f,onIndustry:g,onCompany:h}){let i=(0,c.useMemo)(()=>{let a=new Map(e.map(a=>[a.id,a])),b=new Map;for(let a of f){let c=v(a),e=c?d.get(c)?.industry.key:A(null,a.headline).key;if(!e)continue;let f=b.get(e)||new Map;f.set(a.source_connection_id,(f.get(a.source_connection_id)||0)+1),b.set(e,f)}let c=new Map;for(let[d,e]of b){let[b,f]=[...e.entries()].sort((a,b)=>b[1]-a[1])[0]||[];a.get(b)&&c.set(d,{bridge:a.get(b),n:f})}return c},[d,e,f]);return(0,b.jsx)("div",{style:{flex:1,overflow:"auto",padding:16},children:(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(280px, 1fr))",gap:12},children:a.map(a=>{let c=a.people.filter(a=>1===a.degree).length,d=a.people.filter(a=>2===a.degree).length,e=a.people.filter(a=>B(a.headline)).length,f=a.people.filter(a=>"S"===a.tier).length,j=[...a.companies.entries()].sort((a,b)=>b[1]-a[1]).slice(0,3),k=i.get(a.key);return(0,b.jsxs)("div",{onClick:()=>g(a.key),style:{padding:14,borderRadius:10,border:D,borderTop:`3px solid ${a.color}`,background:"rgba(255,255,255,0.03)",cursor:"pointer"},children:[(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline"},children:[(0,b.jsx)("b",{style:{fontSize:14,color:a.color},children:a.label}),(0,b.jsx)("span",{style:{fontSize:20,fontWeight:800},children:a.people.length})]}),(0,b.jsxs)("div",{style:{fontSize:11.5,color:"#8b9a9a",margin:"4px 0 6px"},children:[c," you know · ",d," reachable · ",a.companies.size," companies · ",e," director+ · ",f," S-tier"]}),(0,b.jsx)(L,{total:a.people.length,parts:[[c,"#00ff88"],[d,"#FF6B35"]]}),j.length>0&&(0,b.jsx)("div",{style:{marginTop:8,display:"flex",gap:6,flexWrap:"wrap"},children:j.map(([a,c])=>(0,b.jsxs)("button",{onClick:b=>{b.stopPropagation(),h(a)},style:{padding:"2px 8px",borderRadius:10,border:D,background:"rgba(255,255,255,0.05)",color:"#dfe6e9",fontSize:11,cursor:"pointer"},children:[a," ",(0,b.jsx)("span",{style:{color:"#778"},children:c})]},a))}),k&&(0,b.jsxs)("div",{style:{marginTop:8,fontSize:11.5,color:"#aab7b7"},children:["Best way in: ",(0,b.jsx)("b",{style:{color:C[k.bridge.tier]||"#ccc"},children:k.bridge.name})," knows ",k.n," here"]})]},a.key)})})})}function N({p:a,note:c}){return(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"5px 0",fontSize:12.5},children:[(0,b.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:C[a.tier]||"#667",flexShrink:0}}),(0,b.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,b.jsx)("div",{style:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.name}),(0,b.jsx)("div",{style:{fontSize:11,color:"#8b9a9a",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:c||a.headline})]})]})}function O({focus:a,data:d,index:e,links:f,d1:g,d2:h,filters:i,onClose:j,onCompany:k,onOpenCompany:l}){let m,n,o,p="company"===a.kind,q=d.people.filter(a=>H(a,i)),r=(0,c.useMemo)(()=>{let a=new Map;for(let b of q){let c=u(b.headline);a.set(c.label,{n:(a.get(c.label)?.n||0)+1,level:c.level})}return[...a.entries()].sort((a,b)=>b[1].level-a[1].level)},[q]),s=(0,c.useMemo)(()=>p?function(a,b=[],c=[]){let d=b.filter(b=>v(b)===a),e=new Map;for(let b of c)v(b)===a&&e.set(b.source_connection_id,(e.get(b.source_connection_id)||0)+1);let f=new Map(b.map(a=>[a.id,a]));return{direct:d,bridges:[...e.entries()].map(([a,b])=>({bridge:f.get(a),n:b})).filter(a=>a.bridge).sort((a,b)=>b.n-a.n||(Number(b.bridge.power_score)||0)-(Number(a.bridge.power_score)||0))}}(d.name,g,h):null,[p,d,g,h]),t=(0,c.useMemo)(()=>p?f.filter(a=>a.a===d.name||a.b===d.name).map(a=>({name:a.a===d.name?a.b:a.a,weight:a.weight})).sort((a,b)=>b.weight-a.weight).slice(0,8):[],[p,f,d]),w=[...q].sort((a,b)=>(Number(b.power_score)||0)-(Number(a.power_score)||0)).slice(0,6),x=p?d.industry:d,y=q.filter(a=>1===a.degree).length,z=q.filter(a=>2===a.degree).length,A=p?[]:[...d.companies.entries()].sort((a,b)=>b[1]-a[1]).slice(0,10);return(0,b.jsxs)("aside",{style:{width:360,flexShrink:0,borderLeft:D,overflow:"auto",padding:16,background:"rgba(255,255,255,0.02)"},children:[(0,b.jsx)("button",{onClick:j,style:{background:"none",border:"none",color:"#888",cursor:"pointer",fontSize:12,padding:0},children:"✕ Close"}),(0,b.jsxs)("div",{style:{fontSize:10,letterSpacing:1,color:"#8b9a9a",marginTop:8},children:[p?"COMPANY":"INDUSTRY"," ANALYZER"]}),(0,b.jsx)("h2",{style:{margin:"4px 0 6px",fontSize:20},children:p?d.name:d.label}),(0,b.jsxs)("span",{style:{fontSize:11,padding:"2px 8px",borderRadius:10,background:`${x.color}22`,color:x.color},children:[x.label,p?" · inferred":""]}),p&&(0,b.jsx)(Q,{name:d.name}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:8,margin:"14px 0"},children:[[y,"you know","#00ff88"],[z,"reachable","#FF6B35"],[q.filter(a=>B(a.headline)).length,"director+","#FFD700"]].map(([a,c,d])=>(0,b.jsxs)("div",{style:{padding:8,borderRadius:8,background:"rgba(255,255,255,0.04)",textAlign:"center"},children:[(0,b.jsx)("div",{style:{fontSize:20,fontWeight:800,color:d},children:a}),(0,b.jsx)("div",{style:{fontSize:10.5,color:"#8b9a9a"},children:c})]},c))}),(0,b.jsx)(P,{title:"By level",children:r.map(([a,{n:c}])=>(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"110px 1fr 28px",gap:8,alignItems:"center",fontSize:11.5,marginBottom:4},children:[(0,b.jsx)("span",{style:{color:"#aab7b7"},children:a}),(0,b.jsx)(L,{total:q.length,parts:[[c,"#3498DB"]]}),(0,b.jsx)("span",{style:{color:"#778",textAlign:"right"},children:c})]},a))}),p&&s&&(0,b.jsxs)(P,{title:"Ways in",children:[s.direct.length>0&&(0,b.jsxs)("div",{style:{fontSize:11,color:"#00ff88",margin:"2px 0"},children:["You already know ",s.direct.length," here"]}),(m=new Map(s.bridges.map(({bridge:a,n:b})=>[a.id,b])),n=[...s.direct].sort((a,b)=>(m.get(b.id)||0)-(m.get(a.id)||0)).slice(0,4),o=new Set(s.direct.map(a=>a.id)),(0,b.jsxs)(b.Fragment,{children:[n.map(a=>(0,b.jsx)(N,{p:a,note:m.get(a.id)?`works here \xb7 knows ${m.get(a.id)} here`:`works here \xb7 ${a.headline||""}`},a.id)),s.bridges.filter(({bridge:a})=>!o.has(a.id)).slice(0,5).map(({bridge:a,n:c})=>(0,b.jsx)(N,{p:a,note:`knows ${c} ${1===c?"person":"people"} here`},a.id))]})),!s.direct.length&&!s.bridges.length&&(0,b.jsx)("div",{style:{fontSize:12,color:"#778"},children:"No one you know links here yet."})]}),(0,b.jsx)(P,{title:p?"Most powerful people here":"Most powerful people in this industry",children:w.map(a=>(0,b.jsx)(N,{p:a,note:`${1===a.degree?"you know them":2===a.degree?"2nd degree":"3rd+"} \xb7 ${a.headline||""}`},a.id))}),p&&t.length>0&&(0,b.jsx)(P,{title:"Connected companies",children:(0,b.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap"},children:t.map(a=>(0,b.jsxs)("button",{onClick:()=>k(a.name),style:{padding:"3px 9px",borderRadius:10,border:D,background:`${e.get(a.name)?.industry.color||"#666"}22`,color:"#dfe6e9",fontSize:11.5,cursor:"pointer"},children:[a.name," ",(0,b.jsx)("span",{style:{color:"#778"},children:a.weight})]},a.name))})}),!p&&(0,b.jsx)(P,{title:"Companies",children:A.map(([a,c])=>(0,b.jsxs)("div",{onClick:()=>k(a),style:{display:"grid",gridTemplateColumns:"1fr 60px 24px",gap:8,alignItems:"center",fontSize:12,padding:"3px 0",cursor:"pointer"},children:[(0,b.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a}),(0,b.jsx)(L,{total:A[0][1],parts:[[c,x.color]]}),(0,b.jsx)("span",{style:{color:"#778",textAlign:"right"},children:c})]},a))}),p&&l&&(0,b.jsxs)("button",{onClick:()=>l(d),style:{marginTop:14,width:"100%",padding:"10px",borderRadius:8,border:"none",cursor:"pointer",fontWeight:700,background:"linear-gradient(135deg, #00ff88, #3498DB)",color:"#000"},children:["Path to the top of ",d.name," →"]})]})}function P({title:a,children:c}){return(0,b.jsxs)("div",{style:{marginTop:14},children:[(0,b.jsx)("div",{style:{fontSize:10.5,letterSpacing:.8,color:"#8b9a9a",fontWeight:700,marginBottom:6},children:a.toUpperCase()}),c]})}function Q({name:a}){let{companies:c,setScore:d}=q(),e=c?.find(b=>b.name===a);if(!e)return null;let f={yours:"your score",known:"known list",network:"estimated",default:"unknown company"}[e.source];return(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:10,fontSize:12,color:"#aab7b7"},children:["Company score ",(0,b.jsx)("b",{style:{color:"#fff",fontSize:15},children:e.score}),"/10 · ",f,(0,b.jsx)("span",{style:{marginLeft:"auto"},children:(0,b.jsx)(r,{company:e,onSet:d,compact:!0})})]})}var R=a.i(75857),S=a.i(38246);function T(){let{userId:a}=(0,R.useUser)(),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)(!0),[p,q]=(0,c.useState)([]),[r,t]=(0,c.useState)([]),[w,x]=(0,c.useState)([]),[y,z]=(0,c.useState)("map"),[A,B]=(0,c.useState)(0);(0,c.useEffect)(()=>{!f.IS_DEMO&&a&&b();async function b(){let b=(0,g.hasCsvNetwork)()?(0,g.loadCsvNetwork)():null,c=[],d=[],f=[];if(b)c=b.degree1,d=b.degree2||[];else{let b=await (0,e.loadNetwork)(a);c=b.degree1,d=b.degree2,f=b.degree3}q(c),t(d),x(f||[]);let h={},j=new Set;[...c,...d,...f].forEach(a=>{if(j.has(a.profile_url))return;j.add(a.profile_url);let b=v(a);b&&(h[b]||(h[b]={name:b,d1:0,d2:0,d3:0,sCount:0,aCount:0,people:[]}),1===a.degree?h[b].d1++:2===a.degree?h[b].d2++:h[b].d3++,"S"===a.tier&&h[b].sCount++,"A"===a.tier&&h[b].aCount++,h[b].people.push(a))}),i(Object.values(h).filter(a=>a.d1+a.d2+a.d3>=3).sort((a,b)=>3*b.sCount+2*b.aCount+b.d1+b.d2+b.d3-(3*a.sCount+2*a.aCount+a.d1+a.d2+a.d3))),o(!1)}},[a,A]);let[C,D]=(0,c.useState)(!1),[E,F]=(0,c.useState)([]);function G(a){let b=new Set(p.map(a=>a.profile_url)),c=new Set([...p,...r].map(a=>a.profile_url));return a.map(d=>({...d,connected:b.has(d.profile_url||d.profileUrl),known:c.has(d.profile_url||d.profileUrl),seniority:u(d.headline),mutualCount:a.filter(a=>b.has(a.profile_url||a.profileUrl)&&a.id!==d.id).length}))}function H(a){k(a),m(G(a.people))}async function J(){if(f.IS_DEMO||!j)return;let a=!1;try{a="1"===localStorage.getItem("six-degrees-company-scan-ok")}catch{}if(!a){if(!window.confirm("Company scans are experimental: they have not been tested against live LinkedIn yet, so the results may be incomplete. Like any scan, it opens a Chrome window and counts toward the profile views LinkedIn watches.\n\nRun it anyway?"))return;try{localStorage.setItem("six-degrees-company-scan-ok","1")}catch{}}D(!0),F(["Checking the scraper..."]);let b=(0,d.notReadyMessage)(await (0,d.scraperStatus)().catch(()=>null));if(b){F([b]),D(!1);return}try{let a=await (0,d.runScrape)("company",{name:j.name,onLog:F});if(0===a.exitCode){F(a=>[...a,"Loading the new people..."]);let a=await fetch(`/api/connections?scanned_company=${encodeURIComponent(j.name)}&limit=500`),b=(await a.json()).connections||[];b.length?(m(G(b)),F(a=>[...a,`${b.length} people at ${j.name}.`])):F(a=>[...a,"Nothing new was found."])}}catch(a){F([a.message||"Failed to start the scan"])}finally{D(!1)}}let K={},L=0;l.forEach(a=>{let b=a.seniority.key;K[b]||(K[b]={...a.seniority,people:[]}),a.connected&&L++;let c=Math.min(90,12*a.mutualCount);a.seniority.level<=1?c+=20:a.seniority.level<=2?c+=10:a.seniority.level>=5&&(c-=10),c=Math.max(5,Math.min(95,c)),a.connected&&(c=100);let d=null;if(2===a.degree&&a.source_connection_id){let b=p.find(b=>b.id===a.source_connection_id);b&&(d=b.name)}let e={0:5,1:10,2:20,3:35,4:50,5:75,6:100}[a.seniority.level]||10;K[b].people.push({...a,likelihood:c,bridgeName:d,xp:e})}),Object.values(K).forEach(a=>a.people.sort((a,b)=>b.likelihood-a.likelihood));let M=Object.values(K).sort((a,b)=>b.level-a.level);return f.IS_DEMO?(0,b.jsxs)("div",{style:{minHeight:"100vh",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,background:"#0a0a1a",color:"rgba(255,255,255,0.7)",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:[(0,b.jsx)("h1",{style:{fontSize:20,fontWeight:700,margin:0,color:"#fff"},children:"Not part of the demo"}),(0,b.jsx)("p",{style:{fontSize:13,margin:0},children:"The public demo includes the Network Circle and Degrees views only."}),(0,b.jsx)(S.default,{href:"/",style:{fontSize:13,color:"#888",textDecoration:"none"},children:"← Back to the network"})]}):n?(0,b.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#0a0a1a",color:"#fff"},children:"Loading..."}):(0,b.jsxs)("div",{style:{height:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,b.jsx)("header",{style:{padding:"14px 24px",borderBottom:"1px solid rgba(255,255,255,0.1)",flexShrink:0},children:(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12},children:[(0,b.jsxs)(S.default,{href:"/",style:{display:"flex",alignItems:"center",gap:6,color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:"1px solid rgba(255,255,255,0.1)"},children:[(0,b.jsx)("span",{style:{fontSize:16},children:"←"})," Map"]}),(0,b.jsx)("h1",{style:{fontSize:20,fontWeight:700,margin:0,background:"linear-gradient(135deg, #00ff88, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Paths"}),!j&&(0,b.jsx)("div",{style:{display:"flex",gap:4,marginLeft:8,padding:3,borderRadius:8,background:"rgba(255,255,255,0.05)"},children:[["map","Map"],["industries","Industries"],["companies","Companies"],["scores","Scores"]].map(([a,c])=>(0,b.jsx)("button",{onClick:()=>z(a),style:{padding:"5px 12px",borderRadius:6,border:"none",cursor:"pointer",fontSize:12.5,fontWeight:700,background:y===a?"linear-gradient(135deg, #00ff88, #3498DB)":"transparent",color:y===a?"#000":"#aab"},children:c},a))}),j&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{onClick:()=>{k(null),m([])},style:{background:"none",border:"none",color:"#888",cursor:"pointer",fontSize:12},children:"← Companies"}),(0,b.jsx)("span",{style:{fontSize:13,fontWeight:600},children:j.name}),(0,b.jsxs)("span",{style:{fontSize:11,color:"#888"},children:[L,"/",l.length," connected"]}),(0,b.jsx)("button",{onClick:J,disabled:C,style:{marginLeft:"auto",padding:"5px 12px",borderRadius:6,border:"none",cursor:C?"not-allowed":"pointer",background:C?"#333":"rgba(0,255,136,0.15)",color:C?"#555":"#00ff88",fontSize:11,fontWeight:600},children:C?"Scanning...":"+ Scan Full Company"}),(0,b.jsx)("span",{title:"Not yet tested against live LinkedIn. Results may be incomplete.",style:{fontSize:9.5,fontWeight:800,letterSpacing:.6,padding:"3px 7px",borderRadius:20,border:"1px solid rgba(255,215,0,0.45)",color:"#FFD700"},children:"EXPERIMENTAL"})]})]})}),j||"scores"!==y?j||"companies"===y?(0,b.jsx)("div",{style:{flex:1,overflow:"auto",padding:"16px 24px"},children:(0,b.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:[!j&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{style:{fontSize:13,color:"#888",marginBottom:16},children:["Pick a company to see your path to the top. Based on ",p.length+r.length," people in your network."]}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:h.slice(0,60).map(a=>(0,b.jsxs)("button",{onClick:()=>H(a),style:{padding:"14px",borderRadius:10,border:"none",cursor:"pointer",textAlign:"left",background:"rgba(255,255,255,0.04)",transition:"background 0.15s",borderLeft:`3px solid ${a.sCount>0?"#FFD700":a.aCount>0?"#9B59B6":"#3498DB"}`},onMouseEnter:a=>a.currentTarget.style.background="rgba(255,255,255,0.08)",onMouseLeave:a=>a.currentTarget.style.background="rgba(255,255,255,0.04)",children:[(0,b.jsx)("div",{style:{fontSize:14,fontWeight:700,color:"#fff",marginBottom:4},children:a.name}),(0,b.jsxs)("div",{style:{display:"flex",gap:8,fontSize:10,color:"#888"},children:[(0,b.jsxs)("span",{style:{color:"#00ff88"},children:[a.d1," connected"]}),(0,b.jsxs)("span",{children:[a.d2+a.d3," locked"]})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:6,marginTop:4,fontSize:9},children:[a.sCount>0&&(0,b.jsxs)("span",{style:{color:"#FFD700",fontWeight:600},children:[a.sCount,"S"]}),a.aCount>0&&(0,b.jsxs)("span",{style:{color:"#9B59B6",fontWeight:600},children:[a.aCount,"A"]}),(0,b.jsxs)("span",{style:{color:"#555"},children:[a.d1+a.d2," total"]})]}),(0,b.jsx)("div",{style:{height:3,background:"rgba(255,255,255,0.08)",borderRadius:2,marginTop:6},children:(0,b.jsx)("div",{style:{height:"100%",borderRadius:2,width:`${a.d1/Math.max(a.d1+a.d2+a.d3,1)*100}%`,background:a.sCount>0?"#FFD700":"#00ff88"}})})]},a.name))})]}),C&&(0,b.jsxs)("div",{style:{padding:"10px",borderRadius:8,background:"rgba(0,255,136,0.06)",border:"1px solid rgba(0,255,136,0.2)",marginBottom:12},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[(0,b.jsx)("div",{style:{width:6,height:6,borderRadius:"50%",background:"#00ff88",animation:"pulse 1s infinite"}}),(0,b.jsx)("span",{style:{fontSize:10,fontWeight:600,color:"#00ff88"},children:"Scanning LinkedIn..."})]}),(0,b.jsx)("div",{style:{fontFamily:"monospace",fontSize:9,color:"#777",maxHeight:60,overflow:"auto"},children:E.map((a,c)=>(0,b.jsx)("div",{children:a},c))})]}),j&&M.map(a=>(0,b.jsxs)("div",{style:{marginBottom:16},children:[(0,b.jsxs)("div",{style:{padding:"8px 12px",borderRadius:6,marginBottom:4,background:a.level>=5?"rgba(255,215,0,0.08)":a.level>=3?"rgba(155,89,182,0.08)":"rgba(52,152,219,0.08)",borderLeft:`3px solid ${a.level>=5?"#FFD700":a.level>=3?"#9B59B6":"#3498DB"}`,display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("span",{style:{fontSize:12,fontWeight:700,color:a.level>=5?"#FFD700":a.level>=3?"#9B59B6":"#3498DB"},children:a.label}),a.level>=5&&(0,b.jsx)("span",{style:{fontSize:9,color:"#FF6B35",marginLeft:8,fontWeight:700},children:"TARGET"})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,b.jsxs)("span",{style:{fontSize:9,color:"#FF6B35",fontWeight:600},children:["+",a.people.filter(a=>!a.connected).reduce((a,b)=>a+(b.xp||0),0)," XP"]}),(0,b.jsxs)("span",{style:{fontSize:10,color:"#666"},children:[a.people.filter(a=>a.connected).length,"/",a.people.length]})]})]}),a.people.map((c,d)=>(0,b.jsx)(U,{p:c,level:a,companyPeople:l,d1Data:p,selectedCompany:j},c.id||d))]},a.key))]})}):(0,b.jsx)(I,{d1:p,d2:r,d3:w,tab:y,onOpenCompany:a=>H({...a,sCount:a.S,aCount:a.A})}):(0,b.jsx)(s,{onRescored:()=>B(a=>a+1)})]})}function U({p:a,level:d,companyPeople:e,d1Data:f,selectedCompany:g}){let[h,i]=(0,c.useState)(!1),j=new Set(f.map(a=>a.profile_url));e.filter(a=>j.has(a.profile_url||a.profileUrl));let k=e.filter(b=>u(b.headline).level>a.seniority.level&&!j.has(b.profile_url||b.profileUrl)),l=e.filter(b=>u(b.headline).level===a.seniority.level&&b.id!==a.id),m=[];if(!a.connected){let b=k.length;b>0&&m.push({icon:"⬆️",text:`Adding them gives you a mutual with ${b} people above in the hierarchy`,color:"#00ff88"});let c=l.filter(a=>j.has(a.profile_url||a.profileUrl)).length;c>0?m.push({icon:"🤝",text:`${c} people at their level already connected — high social proof`,color:"#FFD700"}):m.push({icon:"🎯",text:"First connection at this level — opens a new layer",color:"#3498DB"}),a.bridgeName&&m.push({icon:"🔗",text:`Reachable through ${a.bridgeName} — warm intro possible`,color:"#FF6B35"}),a.seniority.level>=5?m.push({icon:"👑",text:`${a.seniority.label} — decision maker, high strategic value but low accept rate`,color:"#FFD700"}):a.seniority.level>=3?m.push({icon:"📊",text:`${a.seniority.label} — middle management, good balance of access and accept rate`,color:"#9B59B6"}):m.push({icon:"✅",text:`${a.seniority.label} — highest accept rate, builds mutual foundation for people above`,color:"#00ff88"}),a.likelihood>=60?m.push({icon:"🔥",text:`${a.likelihood}% likely to accept — strong mutual overlap + approachable role`,color:"#00ff88"}):a.likelihood>=30?m.push({icon:"⚡",text:`${a.likelihood}% likely — moderate chance, add more people at their level first`,color:"#FFD700"}):m.push({icon:"🔒",text:`${a.likelihood}% likely — low chance right now, build more connections below them first`,color:"#ff5050"})}return(0,b.jsxs)("div",{style:{borderBottom:"1px solid rgba(255,255,255,0.03)"},children:[(0,b.jsxs)("div",{onClick:()=>i(!h),style:{display:"flex",alignItems:"center",gap:8,padding:"6px 8px",cursor:"pointer",opacity:a.connected?.7:1},onMouseEnter:a=>a.currentTarget.style.background="rgba(255,255,255,0.04)",onMouseLeave:a=>a.currentTarget.style.background="transparent",children:[(0,b.jsx)("span",{style:{fontSize:8,color:"#555",flexShrink:0,width:10},children:h?"▾":"▸"}),(0,b.jsx)("div",{style:{width:18,height:18,borderRadius:"50%",flexShrink:0,fontSize:8,display:"flex",alignItems:"center",justifyContent:"center",background:a.connected?"rgba(0,255,136,0.2)":"rgba(255,255,255,0.05)",color:a.connected?"#00ff88":"#555",border:`1px solid ${a.connected?"rgba(0,255,136,0.3)":"rgba(255,255,255,0.1)"}`},children:a.connected?"✓":"🔒"}),a.profile_image_url||a.imageUrl?(0,b.jsx)("img",{src:a.profile_image_url||a.imageUrl,alt:"",style:{width:26,height:26,borderRadius:"50%",objectFit:"cover",flexShrink:0},onError:a=>a.target.style.display="none"}):(0,b.jsx)("div",{style:{width:26,height:26,borderRadius:"50%",flexShrink:0,fontSize:10,fontWeight:700,background:"#333",color:"#888",display:"flex",alignItems:"center",justifyContent:"center"},children:a.name?.charAt(0)}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsx)("div",{style:{fontSize:11,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.name}),(0,b.jsx)("div",{style:{fontSize:8,color:"#666",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.headline?.substring(0,45)})]}),!a.connected&&a.bridgeName&&(0,b.jsxs)("span",{style:{fontSize:8,color:"#FF6B35",flexShrink:0,maxWidth:55,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["via ",a.bridgeName.split(" ")[0]]}),!a.connected&&(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,flexShrink:0},children:[(0,b.jsxs)("span",{style:{fontSize:8,fontWeight:700,color:"#FF6B35"},children:["+",a.xp]}),(0,b.jsxs)("div",{style:{fontSize:9,fontWeight:700,minWidth:30,textAlign:"right",color:a.likelihood>=60?"#00ff88":a.likelihood>=30?"#FFD700":"#ff5050"},children:[a.likelihood,"%"]})]}),!a.connected&&(0,b.jsx)("a",{href:a.profile_url||a.profileUrl,target:"_blank",rel:"noopener noreferrer",onClick:a=>a.stopPropagation(),style:{padding:"3px 7px",borderRadius:4,fontSize:8,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none",flexShrink:0},children:"Add"})]}),h&&(0,b.jsxs)("div",{style:{padding:"8px 12px 10px 44px",background:"rgba(255,255,255,0.02)",borderTop:"1px solid rgba(255,255,255,0.04)"},children:[(0,b.jsx)("div",{style:{fontSize:11,color:"#aaa",marginBottom:8},children:a.headline||"No headline available"}),(0,b.jsxs)("div",{style:{display:"flex",gap:6,alignItems:"center",marginBottom:8,flexWrap:"wrap"},children:[(0,b.jsxs)("div",{style:{display:"inline-block",padding:"2px 8px",borderRadius:4,fontSize:9,fontWeight:600,background:a.seniority.level>=5?"rgba(255,215,0,0.1)":a.seniority.level>=3?"rgba(155,89,182,0.1)":"rgba(52,152,219,0.1)",color:a.seniority.level>=5?"#FFD700":a.seniority.level>=3?"#9B59B6":"#3498DB",border:`1px solid ${a.seniority.level>=5?"rgba(255,215,0,0.2)":a.seniority.level>=3?"rgba(155,89,182,0.2)":"rgba(52,152,219,0.2)"}`},children:[a.seniority.label," · Level ",a.seniority.level]}),!a.connected&&(0,b.jsxs)("div",{style:{display:"inline-block",padding:"2px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"rgba(255,107,53,0.1)",color:"#FF6B35",border:"1px solid rgba(255,107,53,0.2)"},children:["+",a.xp," XP"]})]}),!a.connected&&m.length>0&&(0,b.jsxs)("div",{style:{marginTop:4},children:[(0,b.jsx)("div",{style:{fontSize:9,fontWeight:700,color:"#888",letterSpacing:.5,marginBottom:4},children:"STRATEGIC VALUE"}),m.map((a,c)=>(0,b.jsxs)("div",{style:{display:"flex",gap:6,alignItems:"flex-start",padding:"2px 0",fontSize:10,color:"#bbb"},children:[(0,b.jsx)("span",{style:{fontSize:11,lineHeight:1},children:a.icon}),(0,b.jsx)("span",{style:{color:a.color},children:a.text})]},c))]}),a.connected&&(0,b.jsxs)("div",{style:{fontSize:10,color:"#00ff88",fontWeight:600},children:["✓ Already connected — contributes as mutual for others at ",g?.name]})]})]})}a.s(["default",0,function(){return(0,b.jsx)(h.default,{children:(0,b.jsx)(T,{})})}],90195)}];
2
+ ${a.co.d1} you know \xb7 ${a.co.d2} reachable${a.co.d3?` \xb7 ${a.co.d3} further`:""}`}),(0,b.jsx)("circle",{r:a.r,fill:a.co.industry.color,fillOpacity:.75,stroke:d?"#fff":a.co.S?C.S:"rgba(0,0,0,0.35)",strokeWidth:d?2.5:a.co.S?1.5:.6}),a.co.d1>0&&(0,b.jsx)("circle",{r:a.r*Math.sqrt(a.co.d1/Math.max(1,a.co.people.length)),fill:"#fff",fillOpacity:.35}),(w.has(a.id)||a.id===t||d)&&(0,b.jsx)("text",{y:a.r+11,textAnchor:"middle",fontSize:10,fill:"#e6edf0",style:{pointerEvents:"none"},children:a.co.name})]},a.id)})]}),(0,b.jsxs)("div",{style:{position:"absolute",left:12,bottom:10,fontSize:11,color:"#778",lineHeight:1.6,pointerEvents:"none"},children:["Bubble = a company, sized by your people there; white centre = the share you already know; gold ring = an S-tier person inside.",(0,b.jsx)("br",{}),"A line = one of your connections at one company knows people at the other.",s.cut?` Showing the 140 largest; ${s.cut} smaller companies are in Industries.`:""]})]})}function L({parts:a,total:c}){return(0,b.jsx)("div",{style:{display:"flex",height:6,borderRadius:3,overflow:"hidden",background:"rgba(255,255,255,0.06)"},children:a.map(([a,d],e)=>(0,b.jsx)("div",{style:{width:`${a/Math.max(1,c)*100}%`,background:d}},e))})}function M({industries:a,index:d,d1:e,d2:f,onIndustry:g,onCompany:h}){let i=(0,c.useMemo)(()=>{let a=new Map(e.map(a=>[a.id,a])),b=new Map;for(let a of f){let c=v(a),e=c?d.get(c)?.industry.key:A(null,a.headline).key;if(!e)continue;let f=b.get(e)||new Map;f.set(a.source_connection_id,(f.get(a.source_connection_id)||0)+1),b.set(e,f)}let c=new Map;for(let[d,e]of b){let[b,f]=[...e.entries()].sort((a,b)=>b[1]-a[1])[0]||[];a.get(b)&&c.set(d,{bridge:a.get(b),n:f})}return c},[d,e,f]);return(0,b.jsx)("div",{style:{flex:1,overflow:"auto",padding:16},children:(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(280px, 1fr))",gap:12},children:a.map(a=>{let c=a.people.filter(a=>1===a.degree).length,d=a.people.filter(a=>2===a.degree).length,e=a.people.filter(a=>B(a.headline)).length,f=a.people.filter(a=>"S"===a.tier).length,j=[...a.companies.entries()].sort((a,b)=>b[1]-a[1]).slice(0,3),k=i.get(a.key);return(0,b.jsxs)("div",{onClick:()=>g(a.key),style:{padding:14,borderRadius:10,border:D,borderTop:`3px solid ${a.color}`,background:"rgba(255,255,255,0.03)",cursor:"pointer"},children:[(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline"},children:[(0,b.jsx)("b",{style:{fontSize:14,color:a.color},children:a.label}),(0,b.jsx)("span",{style:{fontSize:20,fontWeight:800},children:a.people.length})]}),(0,b.jsxs)("div",{style:{fontSize:11.5,color:"#8b9a9a",margin:"4px 0 6px"},children:[c," you know · ",d," reachable · ",a.companies.size," companies · ",e," director+ · ",f," S-tier"]}),(0,b.jsx)(L,{total:a.people.length,parts:[[c,"#00ff88"],[d,"#FF6B35"]]}),j.length>0&&(0,b.jsx)("div",{style:{marginTop:8,display:"flex",gap:6,flexWrap:"wrap"},children:j.map(([a,c])=>(0,b.jsxs)("button",{onClick:b=>{b.stopPropagation(),h(a)},style:{padding:"2px 8px",borderRadius:10,border:D,background:"rgba(255,255,255,0.05)",color:"#dfe6e9",fontSize:11,cursor:"pointer"},children:[a," ",(0,b.jsx)("span",{style:{color:"#778"},children:c})]},a))}),k&&(0,b.jsxs)("div",{style:{marginTop:8,fontSize:11.5,color:"#aab7b7"},children:["Best way in: ",(0,b.jsx)("b",{style:{color:C[k.bridge.tier]||"#ccc"},children:k.bridge.name})," knows ",k.n," here"]})]},a.key)})})})}function N({p:a,note:c}){return(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"5px 0",fontSize:12.5},children:[(0,b.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:C[a.tier]||"#667",flexShrink:0}}),(0,b.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,b.jsx)("div",{style:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.name}),(0,b.jsx)("div",{style:{fontSize:11,color:"#8b9a9a",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:c||a.headline})]})]})}function O({focus:a,data:d,index:e,links:f,d1:g,d2:h,filters:i,onClose:j,onCompany:k,onOpenCompany:l}){let m,n,o,p="company"===a.kind,q=d.people.filter(a=>H(a,i)),r=(0,c.useMemo)(()=>{let a=new Map;for(let b of q){let c=u(b.headline);a.set(c.label,{n:(a.get(c.label)?.n||0)+1,level:c.level})}return[...a.entries()].sort((a,b)=>b[1].level-a[1].level)},[q]),s=(0,c.useMemo)(()=>p?function(a,b=[],c=[]){let d=b.filter(b=>v(b)===a),e=new Map;for(let b of c)v(b)===a&&e.set(b.source_connection_id,(e.get(b.source_connection_id)||0)+1);let f=new Map(b.map(a=>[a.id,a]));return{direct:d,bridges:[...e.entries()].map(([a,b])=>({bridge:f.get(a),n:b})).filter(a=>a.bridge).sort((a,b)=>b.n-a.n||(Number(b.bridge.power_score)||0)-(Number(a.bridge.power_score)||0))}}(d.name,g,h):null,[p,d,g,h]),t=(0,c.useMemo)(()=>p?f.filter(a=>a.a===d.name||a.b===d.name).map(a=>({name:a.a===d.name?a.b:a.a,weight:a.weight})).sort((a,b)=>b.weight-a.weight).slice(0,8):[],[p,f,d]),w=[...q].sort((a,b)=>(Number(b.power_score)||0)-(Number(a.power_score)||0)).slice(0,6),x=p?d.industry:d,y=q.filter(a=>1===a.degree).length,z=q.filter(a=>2===a.degree).length,A=p?[]:[...d.companies.entries()].sort((a,b)=>b[1]-a[1]).slice(0,10);return(0,b.jsxs)("aside",{style:{width:360,flexShrink:0,borderLeft:D,overflow:"auto",padding:16,background:"rgba(255,255,255,0.02)"},children:[(0,b.jsx)("button",{onClick:j,style:{background:"none",border:"none",color:"#888",cursor:"pointer",fontSize:12,padding:0},children:"✕ Close"}),(0,b.jsxs)("div",{style:{fontSize:10,letterSpacing:1,color:"#8b9a9a",marginTop:8},children:[p?"COMPANY":"INDUSTRY"," ANALYZER"]}),(0,b.jsx)("h2",{style:{margin:"4px 0 6px",fontSize:20},children:p?d.name:d.label}),(0,b.jsxs)("span",{style:{fontSize:11,padding:"2px 8px",borderRadius:10,background:`${x.color}22`,color:x.color},children:[x.label,p?" · inferred":""]}),p&&(0,b.jsx)(Q,{name:d.name}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:8,margin:"14px 0"},children:[[y,"you know","#00ff88"],[z,"reachable","#FF6B35"],[q.filter(a=>B(a.headline)).length,"director+","#FFD700"]].map(([a,c,d])=>(0,b.jsxs)("div",{style:{padding:8,borderRadius:8,background:"rgba(255,255,255,0.04)",textAlign:"center"},children:[(0,b.jsx)("div",{style:{fontSize:20,fontWeight:800,color:d},children:a}),(0,b.jsx)("div",{style:{fontSize:10.5,color:"#8b9a9a"},children:c})]},c))}),(0,b.jsx)(P,{title:"By level",children:r.map(([a,{n:c}])=>(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"110px 1fr 28px",gap:8,alignItems:"center",fontSize:11.5,marginBottom:4},children:[(0,b.jsx)("span",{style:{color:"#aab7b7"},children:a}),(0,b.jsx)(L,{total:q.length,parts:[[c,"#3498DB"]]}),(0,b.jsx)("span",{style:{color:"#778",textAlign:"right"},children:c})]},a))}),p&&s&&(0,b.jsxs)(P,{title:"Ways in",children:[s.direct.length>0&&(0,b.jsxs)("div",{style:{fontSize:11,color:"#00ff88",margin:"2px 0"},children:["You already know ",s.direct.length," here"]}),(m=new Map(s.bridges.map(({bridge:a,n:b})=>[a.id,b])),n=[...s.direct].sort((a,b)=>(m.get(b.id)||0)-(m.get(a.id)||0)).slice(0,4),o=new Set(s.direct.map(a=>a.id)),(0,b.jsxs)(b.Fragment,{children:[n.map(a=>(0,b.jsx)(N,{p:a,note:m.get(a.id)?`works here \xb7 knows ${m.get(a.id)} here`:`works here \xb7 ${a.headline||""}`},a.id)),s.bridges.filter(({bridge:a})=>!o.has(a.id)).slice(0,5).map(({bridge:a,n:c})=>(0,b.jsx)(N,{p:a,note:`knows ${c} ${1===c?"person":"people"} here`},a.id))]})),!s.direct.length&&!s.bridges.length&&(0,b.jsx)("div",{style:{fontSize:12,color:"#778"},children:"No one you know links here yet."})]}),(0,b.jsx)(P,{title:p?"Most powerful people here":"Most powerful people in this industry",children:w.map(a=>(0,b.jsx)(N,{p:a,note:`${1===a.degree?"you know them":2===a.degree?"2nd degree":"3rd+"} \xb7 ${a.headline||""}`},a.id))}),p&&t.length>0&&(0,b.jsx)(P,{title:"Connected companies",children:(0,b.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap"},children:t.map(a=>(0,b.jsxs)("button",{onClick:()=>k(a.name),style:{padding:"3px 9px",borderRadius:10,border:D,background:`${e.get(a.name)?.industry.color||"#666"}22`,color:"#dfe6e9",fontSize:11.5,cursor:"pointer"},children:[a.name," ",(0,b.jsx)("span",{style:{color:"#778"},children:a.weight})]},a.name))})}),!p&&(0,b.jsx)(P,{title:"Companies",children:A.map(([a,c])=>(0,b.jsxs)("div",{onClick:()=>k(a),style:{display:"grid",gridTemplateColumns:"1fr 60px 24px",gap:8,alignItems:"center",fontSize:12,padding:"3px 0",cursor:"pointer"},children:[(0,b.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a}),(0,b.jsx)(L,{total:A[0][1],parts:[[c,x.color]]}),(0,b.jsx)("span",{style:{color:"#778",textAlign:"right"},children:c})]},a))}),p&&l&&(0,b.jsxs)("button",{onClick:()=>l(d),style:{marginTop:14,width:"100%",padding:"10px",borderRadius:8,border:"none",cursor:"pointer",fontWeight:700,background:"linear-gradient(135deg, #00ff88, #3498DB)",color:"#000"},children:["Path to the top of ",d.name," →"]})]})}function P({title:a,children:c}){return(0,b.jsxs)("div",{style:{marginTop:14},children:[(0,b.jsx)("div",{style:{fontSize:10.5,letterSpacing:.8,color:"#8b9a9a",fontWeight:700,marginBottom:6},children:a.toUpperCase()}),c]})}function Q({name:a}){let{companies:c,setScore:d}=q(),e=c?.find(b=>b.name===a);if(!e)return null;let f={yours:"your score",known:"known list",network:"estimated",default:"unknown company"}[e.source];return(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:10,fontSize:12,color:"#aab7b7"},children:["Company score ",(0,b.jsx)("b",{style:{color:"#fff",fontSize:15},children:e.score}),"/10 · ",f,(0,b.jsx)("span",{style:{marginLeft:"auto"},children:(0,b.jsx)(r,{company:e,onSet:d,compact:!0})})]})}var R=a.i(75857),S=a.i(38246);function T(){let{userId:a}=(0,R.useUser)(),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)(!0),[p,q]=(0,c.useState)([]),[r,t]=(0,c.useState)([]),[w,x]=(0,c.useState)([]),[y,z]=(0,c.useState)("map"),[A,B]=(0,c.useState)(0);(0,c.useEffect)(()=>{!f.IS_DEMO&&a&&b();async function b(){let b=(0,g.hasCsvNetwork)()?(0,g.loadCsvNetwork)():null,c=[],d=[],f=[];if(b)c=b.degree1,d=b.degree2||[];else{let b=await (0,e.loadNetwork)(a);c=b.degree1,d=b.degree2,f=b.degree3}q(c),t(d),x(f||[]);let h={},j=new Set;[...c,...d,...f].forEach(a=>{if(j.has(a.profile_url))return;j.add(a.profile_url);let b=v(a);b&&(h[b]||(h[b]={name:b,d1:0,d2:0,d3:0,sCount:0,aCount:0,people:[]}),1===a.degree?h[b].d1++:2===a.degree?h[b].d2++:h[b].d3++,"S"===a.tier&&h[b].sCount++,"A"===a.tier&&h[b].aCount++,h[b].people.push(a))}),i(Object.values(h).filter(a=>a.d1+a.d2+a.d3>=3).sort((a,b)=>3*b.sCount+2*b.aCount+b.d1+b.d2+b.d3-(3*a.sCount+2*a.aCount+a.d1+a.d2+a.d3))),o(!1)}},[a,A]);let[C,D]=(0,c.useState)(!1),[E,F]=(0,c.useState)([]);function G(a){let b=new Set(p.map(a=>a.profile_url)),c=new Set([...p,...r].map(a=>a.profile_url));return a.map(d=>({...d,connected:b.has(d.profile_url||d.profileUrl),known:c.has(d.profile_url||d.profileUrl),seniority:u(d.headline),mutualCount:a.filter(a=>b.has(a.profile_url||a.profileUrl)&&a.id!==d.id).length}))}function H(a){k(a),m(G(a.people))}async function J(){if(f.IS_DEMO||!j)return;let a=!1;try{a="1"===localStorage.getItem("six-degrees-company-scan-ok")}catch{}if(!a){if(!window.confirm("Company scans are experimental: they have not been tested against live LinkedIn yet, so the results may be incomplete. Like any scan, it opens a Chrome window and counts toward the profile views LinkedIn watches.\n\nRun it anyway?"))return;try{localStorage.setItem("six-degrees-company-scan-ok","1")}catch{}}D(!0),F(["Checking the scanner..."]);let b=(0,d.notReadyMessage)(await (0,d.scraperStatus)().catch(()=>null));if(b){F([b]),D(!1);return}try{let a=await (0,d.runScrape)("company",{name:j.name,onLog:F});if(0===a.exitCode){F(a=>[...a,"Loading the new people..."]);let a=await fetch(`/api/connections?scanned_company=${encodeURIComponent(j.name)}&limit=500`),b=(await a.json()).connections||[];b.length?(m(G(b)),F(a=>[...a,`${b.length} people at ${j.name}.`])):F(a=>[...a,"Nothing new was found."])}}catch(a){F([a.message||"Failed to start the scan"])}finally{D(!1)}}let K={},L=0;l.forEach(a=>{let b=a.seniority.key;K[b]||(K[b]={...a.seniority,people:[]}),a.connected&&L++;let c=Math.min(90,12*a.mutualCount);a.seniority.level<=1?c+=20:a.seniority.level<=2?c+=10:a.seniority.level>=5&&(c-=10),c=Math.max(5,Math.min(95,c)),a.connected&&(c=100);let d=null;if(2===a.degree&&a.source_connection_id){let b=p.find(b=>b.id===a.source_connection_id);b&&(d=b.name)}let e={0:5,1:10,2:20,3:35,4:50,5:75,6:100}[a.seniority.level]||10;K[b].people.push({...a,likelihood:c,bridgeName:d,xp:e})}),Object.values(K).forEach(a=>a.people.sort((a,b)=>b.likelihood-a.likelihood));let M=Object.values(K).sort((a,b)=>b.level-a.level);return f.IS_DEMO?(0,b.jsxs)("div",{style:{minHeight:"100vh",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,background:"#0a0a1a",color:"rgba(255,255,255,0.7)",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:[(0,b.jsx)("h1",{style:{fontSize:20,fontWeight:700,margin:0,color:"#fff"},children:"Not part of the demo"}),(0,b.jsx)("p",{style:{fontSize:13,margin:0},children:"The public demo includes the Network Circle and Degrees views only."}),(0,b.jsx)(S.default,{href:"/",style:{fontSize:13,color:"#888",textDecoration:"none"},children:"← Back to the network"})]}):n?(0,b.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#0a0a1a",color:"#fff"},children:"Loading..."}):(0,b.jsxs)("div",{style:{height:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,b.jsx)("header",{style:{padding:"14px 24px",borderBottom:"1px solid rgba(255,255,255,0.1)",flexShrink:0},children:(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12},children:[(0,b.jsxs)(S.default,{href:"/",style:{display:"flex",alignItems:"center",gap:6,color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:"1px solid rgba(255,255,255,0.1)"},children:[(0,b.jsx)("span",{style:{fontSize:16},children:"←"})," Map"]}),(0,b.jsx)("h1",{style:{fontSize:20,fontWeight:700,margin:0,background:"linear-gradient(135deg, #00ff88, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Paths"}),!j&&(0,b.jsx)("div",{style:{display:"flex",gap:4,marginLeft:8,padding:3,borderRadius:8,background:"rgba(255,255,255,0.05)"},children:[["map","Map"],["industries","Industries"],["companies","Companies"],["scores","Scores"]].map(([a,c])=>(0,b.jsx)("button",{onClick:()=>z(a),style:{padding:"5px 12px",borderRadius:6,border:"none",cursor:"pointer",fontSize:12.5,fontWeight:700,background:y===a?"linear-gradient(135deg, #00ff88, #3498DB)":"transparent",color:y===a?"#000":"#aab"},children:c},a))}),j&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{onClick:()=>{k(null),m([])},style:{background:"none",border:"none",color:"#888",cursor:"pointer",fontSize:12},children:"← Companies"}),(0,b.jsx)("span",{style:{fontSize:13,fontWeight:600},children:j.name}),(0,b.jsxs)("span",{style:{fontSize:11,color:"#888"},children:[L,"/",l.length," connected"]}),(0,b.jsx)("button",{onClick:J,disabled:C,style:{marginLeft:"auto",padding:"5px 12px",borderRadius:6,border:"none",cursor:C?"not-allowed":"pointer",background:C?"#333":"rgba(0,255,136,0.15)",color:C?"#555":"#00ff88",fontSize:11,fontWeight:600},children:C?"Scanning...":"+ Scan Full Company"}),(0,b.jsx)("span",{title:"Not yet tested against live LinkedIn. Results may be incomplete.",style:{fontSize:9.5,fontWeight:800,letterSpacing:.6,padding:"3px 7px",borderRadius:20,border:"1px solid rgba(255,215,0,0.45)",color:"#FFD700"},children:"EXPERIMENTAL"})]})]})}),j||"scores"!==y?j||"companies"===y?(0,b.jsx)("div",{style:{flex:1,overflow:"auto",padding:"16px 24px"},children:(0,b.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:[!j&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{style:{fontSize:13,color:"#888",marginBottom:16},children:["Pick a company to see your path to the top. Based on ",p.length+r.length," people in your network."]}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:h.slice(0,60).map(a=>(0,b.jsxs)("button",{onClick:()=>H(a),style:{padding:"14px",borderRadius:10,border:"none",cursor:"pointer",textAlign:"left",background:"rgba(255,255,255,0.04)",transition:"background 0.15s",borderLeft:`3px solid ${a.sCount>0?"#FFD700":a.aCount>0?"#9B59B6":"#3498DB"}`},onMouseEnter:a=>a.currentTarget.style.background="rgba(255,255,255,0.08)",onMouseLeave:a=>a.currentTarget.style.background="rgba(255,255,255,0.04)",children:[(0,b.jsx)("div",{style:{fontSize:14,fontWeight:700,color:"#fff",marginBottom:4},children:a.name}),(0,b.jsxs)("div",{style:{display:"flex",gap:8,fontSize:10,color:"#888"},children:[(0,b.jsxs)("span",{style:{color:"#00ff88"},children:[a.d1," connected"]}),(0,b.jsxs)("span",{children:[a.d2+a.d3," locked"]})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:6,marginTop:4,fontSize:9},children:[a.sCount>0&&(0,b.jsxs)("span",{style:{color:"#FFD700",fontWeight:600},children:[a.sCount,"S"]}),a.aCount>0&&(0,b.jsxs)("span",{style:{color:"#9B59B6",fontWeight:600},children:[a.aCount,"A"]}),(0,b.jsxs)("span",{style:{color:"#555"},children:[a.d1+a.d2," total"]})]}),(0,b.jsx)("div",{style:{height:3,background:"rgba(255,255,255,0.08)",borderRadius:2,marginTop:6},children:(0,b.jsx)("div",{style:{height:"100%",borderRadius:2,width:`${a.d1/Math.max(a.d1+a.d2+a.d3,1)*100}%`,background:a.sCount>0?"#FFD700":"#00ff88"}})})]},a.name))})]}),C&&(0,b.jsxs)("div",{style:{padding:"10px",borderRadius:8,background:"rgba(0,255,136,0.06)",border:"1px solid rgba(0,255,136,0.2)",marginBottom:12},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[(0,b.jsx)("div",{style:{width:6,height:6,borderRadius:"50%",background:"#00ff88",animation:"pulse 1s infinite"}}),(0,b.jsx)("span",{style:{fontSize:10,fontWeight:600,color:"#00ff88"},children:"Scanning LinkedIn..."})]}),(0,b.jsx)("div",{style:{fontFamily:"monospace",fontSize:9,color:"#777",maxHeight:60,overflow:"auto"},children:E.map((a,c)=>(0,b.jsx)("div",{children:a},c))})]}),j&&M.map(a=>(0,b.jsxs)("div",{style:{marginBottom:16},children:[(0,b.jsxs)("div",{style:{padding:"8px 12px",borderRadius:6,marginBottom:4,background:a.level>=5?"rgba(255,215,0,0.08)":a.level>=3?"rgba(155,89,182,0.08)":"rgba(52,152,219,0.08)",borderLeft:`3px solid ${a.level>=5?"#FFD700":a.level>=3?"#9B59B6":"#3498DB"}`,display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("span",{style:{fontSize:12,fontWeight:700,color:a.level>=5?"#FFD700":a.level>=3?"#9B59B6":"#3498DB"},children:a.label}),a.level>=5&&(0,b.jsx)("span",{style:{fontSize:9,color:"#FF6B35",marginLeft:8,fontWeight:700},children:"TARGET"})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,b.jsxs)("span",{style:{fontSize:9,color:"#FF6B35",fontWeight:600},children:["+",a.people.filter(a=>!a.connected).reduce((a,b)=>a+(b.xp||0),0)," XP"]}),(0,b.jsxs)("span",{style:{fontSize:10,color:"#666"},children:[a.people.filter(a=>a.connected).length,"/",a.people.length]})]})]}),a.people.map((c,d)=>(0,b.jsx)(U,{p:c,level:a,companyPeople:l,d1Data:p,selectedCompany:j},c.id||d))]},a.key))]})}):(0,b.jsx)(I,{d1:p,d2:r,d3:w,tab:y,onOpenCompany:a=>H({...a,sCount:a.S,aCount:a.A})}):(0,b.jsx)(s,{onRescored:()=>B(a=>a+1)})]})}function U({p:a,level:d,companyPeople:e,d1Data:f,selectedCompany:g}){let[h,i]=(0,c.useState)(!1),j=new Set(f.map(a=>a.profile_url));e.filter(a=>j.has(a.profile_url||a.profileUrl));let k=e.filter(b=>u(b.headline).level>a.seniority.level&&!j.has(b.profile_url||b.profileUrl)),l=e.filter(b=>u(b.headline).level===a.seniority.level&&b.id!==a.id),m=[];if(!a.connected){let b=k.length;b>0&&m.push({icon:"⬆️",text:`Adding them gives you a mutual with ${b} people above in the hierarchy`,color:"#00ff88"});let c=l.filter(a=>j.has(a.profile_url||a.profileUrl)).length;c>0?m.push({icon:"🤝",text:`${c} people at their level already connected — high social proof`,color:"#FFD700"}):m.push({icon:"🎯",text:"First connection at this level — opens a new layer",color:"#3498DB"}),a.bridgeName&&m.push({icon:"🔗",text:`Reachable through ${a.bridgeName} — warm intro possible`,color:"#FF6B35"}),a.seniority.level>=5?m.push({icon:"👑",text:`${a.seniority.label} — decision maker, high strategic value but low accept rate`,color:"#FFD700"}):a.seniority.level>=3?m.push({icon:"📊",text:`${a.seniority.label} — middle management, good balance of access and accept rate`,color:"#9B59B6"}):m.push({icon:"✅",text:`${a.seniority.label} — highest accept rate, builds mutual foundation for people above`,color:"#00ff88"}),a.likelihood>=60?m.push({icon:"🔥",text:`${a.likelihood}% likely to accept — strong mutual overlap + approachable role`,color:"#00ff88"}):a.likelihood>=30?m.push({icon:"⚡",text:`${a.likelihood}% likely — moderate chance, add more people at their level first`,color:"#FFD700"}):m.push({icon:"🔒",text:`${a.likelihood}% likely — low chance right now, build more connections below them first`,color:"#ff5050"})}return(0,b.jsxs)("div",{style:{borderBottom:"1px solid rgba(255,255,255,0.03)"},children:[(0,b.jsxs)("div",{onClick:()=>i(!h),style:{display:"flex",alignItems:"center",gap:8,padding:"6px 8px",cursor:"pointer",opacity:a.connected?.7:1},onMouseEnter:a=>a.currentTarget.style.background="rgba(255,255,255,0.04)",onMouseLeave:a=>a.currentTarget.style.background="transparent",children:[(0,b.jsx)("span",{style:{fontSize:8,color:"#555",flexShrink:0,width:10},children:h?"▾":"▸"}),(0,b.jsx)("div",{style:{width:18,height:18,borderRadius:"50%",flexShrink:0,fontSize:8,display:"flex",alignItems:"center",justifyContent:"center",background:a.connected?"rgba(0,255,136,0.2)":"rgba(255,255,255,0.05)",color:a.connected?"#00ff88":"#555",border:`1px solid ${a.connected?"rgba(0,255,136,0.3)":"rgba(255,255,255,0.1)"}`},children:a.connected?"✓":"🔒"}),a.profile_image_url||a.imageUrl?(0,b.jsx)("img",{src:a.profile_image_url||a.imageUrl,alt:"",style:{width:26,height:26,borderRadius:"50%",objectFit:"cover",flexShrink:0},onError:a=>a.target.style.display="none"}):(0,b.jsx)("div",{style:{width:26,height:26,borderRadius:"50%",flexShrink:0,fontSize:10,fontWeight:700,background:"#333",color:"#888",display:"flex",alignItems:"center",justifyContent:"center"},children:a.name?.charAt(0)}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsx)("div",{style:{fontSize:11,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.name}),(0,b.jsx)("div",{style:{fontSize:8,color:"#666",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.headline?.substring(0,45)})]}),!a.connected&&a.bridgeName&&(0,b.jsxs)("span",{style:{fontSize:8,color:"#FF6B35",flexShrink:0,maxWidth:55,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["via ",a.bridgeName.split(" ")[0]]}),!a.connected&&(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,flexShrink:0},children:[(0,b.jsxs)("span",{style:{fontSize:8,fontWeight:700,color:"#FF6B35"},children:["+",a.xp]}),(0,b.jsxs)("div",{style:{fontSize:9,fontWeight:700,minWidth:30,textAlign:"right",color:a.likelihood>=60?"#00ff88":a.likelihood>=30?"#FFD700":"#ff5050"},children:[a.likelihood,"%"]})]}),!a.connected&&(0,b.jsx)("a",{href:a.profile_url||a.profileUrl,target:"_blank",rel:"noopener noreferrer",onClick:a=>a.stopPropagation(),style:{padding:"3px 7px",borderRadius:4,fontSize:8,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none",flexShrink:0},children:"Add"})]}),h&&(0,b.jsxs)("div",{style:{padding:"8px 12px 10px 44px",background:"rgba(255,255,255,0.02)",borderTop:"1px solid rgba(255,255,255,0.04)"},children:[(0,b.jsx)("div",{style:{fontSize:11,color:"#aaa",marginBottom:8},children:a.headline||"No headline available"}),(0,b.jsxs)("div",{style:{display:"flex",gap:6,alignItems:"center",marginBottom:8,flexWrap:"wrap"},children:[(0,b.jsxs)("div",{style:{display:"inline-block",padding:"2px 8px",borderRadius:4,fontSize:9,fontWeight:600,background:a.seniority.level>=5?"rgba(255,215,0,0.1)":a.seniority.level>=3?"rgba(155,89,182,0.1)":"rgba(52,152,219,0.1)",color:a.seniority.level>=5?"#FFD700":a.seniority.level>=3?"#9B59B6":"#3498DB",border:`1px solid ${a.seniority.level>=5?"rgba(255,215,0,0.2)":a.seniority.level>=3?"rgba(155,89,182,0.2)":"rgba(52,152,219,0.2)"}`},children:[a.seniority.label," · Level ",a.seniority.level]}),!a.connected&&(0,b.jsxs)("div",{style:{display:"inline-block",padding:"2px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"rgba(255,107,53,0.1)",color:"#FF6B35",border:"1px solid rgba(255,107,53,0.2)"},children:["+",a.xp," XP"]})]}),!a.connected&&m.length>0&&(0,b.jsxs)("div",{style:{marginTop:4},children:[(0,b.jsx)("div",{style:{fontSize:9,fontWeight:700,color:"#888",letterSpacing:.5,marginBottom:4},children:"STRATEGIC VALUE"}),m.map((a,c)=>(0,b.jsxs)("div",{style:{display:"flex",gap:6,alignItems:"flex-start",padding:"2px 0",fontSize:10,color:"#bbb"},children:[(0,b.jsx)("span",{style:{fontSize:11,lineHeight:1},children:a.icon}),(0,b.jsx)("span",{style:{color:a.color},children:a.text})]},c))]}),a.connected&&(0,b.jsxs)("div",{style:{fontSize:10,color:"#00ff88",fontWeight:600},children:["✓ Already connected — contributes as mutual for others at ",g?.name]})]})]})}a.s(["default",0,function(){return(0,b.jsx)(h.default,{children:(0,b.jsx)(T,{})})}],90195)}];
3
3
 
4
4
  //# sourceMappingURL=app_paths_page_1ol90m7.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[79243,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(37732),e=a.i(23310),f=a.i(76939);let g={height:10,borderRadius:6},h={background:"rgba(52,152,219,0.06)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(52,152,219,0.2)"};function i({degree1:a=[],degree2:c=[],skips:d=[]}){let e=function(a=[],b=[],c=[]){let d=new Set(b.map(a=>a.source_connection_id).filter(Boolean)),e=new Set(c.map(a=>a.profileUrl).filter(Boolean)),f=a=>d.has(a.id)?"mapped":a.profile_url&&e.has(a.profile_url)?"hidden":"todo",g={mapped:0,hidden:0,todo:0},h={};for(let b of a){let a=f(b);g[a]+=1;let c=b.tier||"D";h[c]=h[c]||{mapped:0,hidden:0,todo:0,total:0},h[c][a]+=1,h[c].total+=1}let i=a.length,j=g.mapped+g.hidden;return{...g,total:i,resolved:j,percent:i?Math.round(j/i*100):0,batches:Math.ceil(g.todo/25),byTier:h}}(a,c,d);if(!e.total)return null;let k=a=>e.total?a/e.total*100:0,l=0===e.todo;return(0,b.jsxs)("div",{style:h,children:[(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",marginBottom:10},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,margin:0,color:"#3498DB"},children:"2nd-degree mapping"}),(0,b.jsx)("span",{style:{fontSize:12,color:l?"#00ff88":"#8b9a9a",fontWeight:600},children:l?"Everything reachable is mapped":`${e.percent}%`})]}),(0,b.jsxs)("div",{style:{...g,display:"flex",overflow:"hidden",background:"rgba(255,255,255,0.06)"},children:[(0,b.jsx)("div",{style:{width:`${k(e.mapped)}%`,background:"#00ff88"}}),(0,b.jsx)("div",{style:{width:`${k(e.hidden)}%`,background:"rgba(255,255,255,0.22)"}})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:16,marginTop:10,fontSize:12,flexWrap:"wrap"},children:[(0,b.jsx)(j,{color:"#00ff88",label:"mapped",value:e.mapped}),(0,b.jsx)(j,{color:"rgba(255,255,255,0.35)",label:"hidden",value:e.hidden}),(0,b.jsx)(j,{color:"rgba(255,255,255,0.12)",label:"to go",value:e.todo}),(0,b.jsxs)("span",{style:{color:"#667",marginLeft:"auto"},children:["of ",e.total]})]}),e.hidden>0&&(0,b.jsx)("p",{style:{fontSize:11.5,color:"#667",margin:"10px 0 0",lineHeight:1.6},children:"Hidden means they keep their connections private — that will not change, and it does not count against you."}),!l&&(0,b.jsxs)("p",{style:{fontSize:11.5,color:"#8b9a9a",margin:"10px 0 0",lineHeight:1.6},children:[e.todo," left — about ",(0,b.jsxs)("b",{children:[e.batches," ",1===e.batches?"batch":"batches"]})," of ",25,". Run one, leave it a while, run another. Long unbroken runs are what gets an account restricted."]}),(0,b.jsx)("div",{style:{marginTop:16,display:"flex",flexDirection:"column",gap:7},children:["S","A","B","C","D"].filter(a=>e.byTier[a]?.total).map(a=>{let c=e.byTier[a];return(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,fontSize:11},children:[(0,b.jsx)("span",{style:{width:14,color:f.TIER_COLORS_CLASSIC[a],fontWeight:700},children:a}),(0,b.jsxs)("div",{style:{flex:1,height:5,borderRadius:3,display:"flex",overflow:"hidden",background:"rgba(255,255,255,0.06)"},children:[(0,b.jsx)("div",{style:{width:`${c.mapped/c.total*100}%`,background:f.TIER_COLORS_CLASSIC[a]}}),(0,b.jsx)("div",{style:{width:`${c.hidden/c.total*100}%`,background:"rgba(255,255,255,0.22)"}})]}),(0,b.jsxs)("span",{style:{color:"#667",width:62,textAlign:"right"},children:[c.mapped,"/",c.total]})]},a)})})]})}function j({color:a,label:c,value:d}){return(0,b.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:6,color:"#8b9a9a"},children:[(0,b.jsx)("span",{style:{width:8,height:8,borderRadius:2,background:a}}),(0,b.jsx)("b",{style:{color:"#e2e8f0"},children:d})," ",c]})}var k=a.i(58834),l=a.i(36839),m=a.i(75857),n=a.i(38246);let o={1:"Observer",11:"Connector",31:"Networker",51:"Strategist",76:"Architect"};function p(){let{userId:a,userName:f,userProfile:g}=(0,m.useUser)(),h=g||{name:f||"User",headline:"",sectors:[],goals:[]},[j,l]=(0,c.useState)(null),[p,s]=(0,c.useState)(!0),[t,u]=(0,c.useState)([]),[v,w]=(0,c.useState)({total:0,sent:0,accepted:0}),[x,y]=(0,c.useState)({degree1:[],degree2:[],skips:[]}),[z,A]=(0,c.useState)("idle"),[B,C]=(0,c.useState)([]),[D,E]=(0,c.useState)("idle"),[F,G]=(0,c.useState)([]);if((0,c.useEffect)(()=>{!k.IS_DEMO&&a&&b();async function b(){let b=await (0,e.loadNetwork)(a),c=b.degree1,d=b.degree2,f={S:0,A:0,B:0,C:0,D:0};c.forEach(a=>{f[a.tier]=(f[a.tier]||0)+1});let g={S:0,A:0,B:0,C:0,D:0};d.forEach(a=>{g[a.tier]=(g[a.tier]||0)+1});let h=[...new Set(d.map(a=>a.source_connection_id).filter(Boolean))].length,i=c.filter(a=>a.is_catalyst).length,j={};c.forEach(a=>{a.company&&(j[a.company]=(j[a.company]||0)+1)});let k=Object.entries(j).sort((a,b)=>b[1]-a[1]).slice(0,10),m=100*f.S+40*f.A+15*f.B+5*f.C+ +f.D+200*h+150*i+50*g.S+c.length,n=Math.floor(Math.sqrt(m/10)),o=n*n*10,p=(n+1)*(n+1)*10;l({d1Count:c.length,d2Count:d.length,tiers:f,d2Tiers:g,clusters:h,catalysts:i,networkPower:m,level:n,xpProgress:(m-o)/(p-o)*100,topCompanies:k,unlockedPaths:0}),fetch("/api/scraper").then(a=>a.json()).then(a=>y({degree1:c,degree2:d,skips:a.skips||[]})).catch(()=>y({degree1:c,degree2:d,skips:[]})),fetch(`/api/notifications?userId=${a}`).then(a=>a.json()).then(a=>u(a.notifications||[])).catch(()=>{}),fetch("/api/queue").then(a=>a.json()).then(a=>{let b=a.items||[];w({total:b.length,sent:b.filter(a=>"sent"===a.status).length,accepted:b.filter(a=>"accepted"===a.status).length})}).catch(()=>{}),s(!1)}},[a]),k.IS_DEMO)return(0,b.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"rgba(255,255,255,0.7)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,textAlign:"center",padding:24,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:[(0,b.jsx)("h2",{style:{margin:0,fontSize:20,fontWeight:700,color:"#fff"},children:"Not part of the demo"}),(0,b.jsx)("p",{style:{margin:0,fontSize:13},children:"The public demo includes the Network Circle and Degrees views only."}),(0,b.jsx)(n.default,{href:"/",style:{fontSize:12,color:"rgba(255,255,255,0.5)",textDecoration:"none"},children:"← Back to the network"})]});if(p)return(0,b.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#0a0a1a",color:"#fff"},children:"Loading profile..."});let H={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},I=[{label:"First S-Tier",done:j.tiers.S>0,icon:"👑"},{label:"100 Connections",done:j.d1Count>=100,icon:"🔗"},{label:"500 Connections",done:j.d1Count>=500,icon:"🌐"},{label:"First Cluster",done:j.clusters>0,icon:"🔭"},{label:"10 Clusters",done:j.clusters>=10,icon:"🏰"},{label:"50 S-Tier",done:j.tiers.S>=50,icon:"💎"},{label:"Catalyst Found",done:j.catalysts>0,icon:"⚡"},{label:"Level 25",done:j.level>=25,icon:"🎯"},{label:"Level 50",done:j.level>=50,icon:"🚀"},{label:"D2 S-Tier > 50",done:j.d2Tiers.S>=50,icon:"🌟"}];return(0,b.jsxs)("div",{style:{height:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,b.jsxs)("header",{style:{padding:"16px 24px",borderBottom:"1px solid rgba(255,255,255,0.1)",display:"flex",alignItems:"center",gap:16},children:[(0,b.jsxs)(n.default,{href:"/",style:{display:"flex",alignItems:"center",gap:6,color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:"1px solid rgba(255,255,255,0.1)"},children:[(0,b.jsx)("span",{style:{fontSize:16},children:"←"})," Back to Map"]}),(0,b.jsx)("h1",{style:{fontSize:22,fontWeight:700,margin:0,background:"linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Profile"})]}),(0,b.jsx)("div",{style:{flex:1,overflow:"auto",padding:"30px 20px"},children:(0,b.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:[(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.05)",borderRadius:16,padding:32,marginBottom:24,border:"1px solid rgba(255,215,0,0.2)",textAlign:"center"},children:[(0,b.jsx)("div",{style:{width:100,height:100,borderRadius:"50%",margin:"0 auto 16px",background:"linear-gradient(135deg, #FFD700, #FF6B35)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:36,fontWeight:800,color:"#000",boxShadow:"0 0 30px rgba(255,215,0,0.3)"},children:j.level}),(0,b.jsx)("div",{style:{fontSize:24,fontWeight:700,marginBottom:4},children:h.name}),(0,b.jsx)("div",{style:{fontSize:14,color:"#888",marginBottom:4},children:h.headline}),(0,b.jsx)("div",{style:{display:"inline-block",padding:"4px 16px",borderRadius:20,background:"rgba(255,215,0,0.15)",border:"1px solid rgba(255,215,0,0.3)",color:"#FFD700",fontSize:13,fontWeight:700,marginBottom:16},children:function(a){let b="Observer";for(let[c,d]of Object.entries(o))a>=parseInt(c)&&(b=d);return b}(j.level)}),(0,b.jsxs)("div",{style:{maxWidth:300,margin:"0 auto"},children:[(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:10,color:"#666",marginBottom:4},children:[(0,b.jsxs)("span",{children:["Level ",j.level]}),(0,b.jsxs)("span",{children:["Level ",j.level+1]})]}),(0,b.jsx)("div",{style:{height:8,background:"rgba(255,255,255,0.1)",borderRadius:4},children:(0,b.jsx)("div",{style:{height:"100%",width:`${Math.min(j.xpProgress,100)}%`,background:"linear-gradient(90deg, #FFD700, #FF6B35)",borderRadius:4,transition:"width 1s ease"}})}),(0,b.jsxs)("div",{style:{fontSize:10,color:"#888",marginTop:4},children:["Network Power: ",j.networkPower.toLocaleString()]})]})]}),(0,b.jsx)(r,{status:z,log:B,onStart:async()=>{A("running"),C(["Checking the scraper..."]);let a=(0,d.notReadyMessage)(await (0,d.scraperStatus)().catch(()=>null));if(a){A("offline"),C([a]);return}try{let a=await (0,d.runScrape)("full",{onLog:C});A(0===a.exitCode?"done":"error")}catch{A("error")}},onRetry:()=>{A("idle"),C([])}}),(0,b.jsxs)("div",{style:{background:"rgba(155,89,182,0.06)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(155,89,182,0.2)"},children:[(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:8},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,margin:0,color:"#9B59B6"},children:"Auto-Bridge All"}),"done"===D&&(0,b.jsx)("span",{style:{fontSize:10,color:"#00ff88",fontWeight:600},children:"Complete"})]}),(0,b.jsx)("p",{style:{fontSize:11,color:"#888",margin:"0 0 12px"},children:"Scan every connection's network. S-tier first → D-tier last. 2 min cooldown between each."}),"idle"===D&&(0,b.jsx)("button",{onClick:async()=>{E("running"),G(["Checking the scraper..."]);let a=(0,d.notReadyMessage)(await (0,d.scraperStatus)().catch(()=>null));if(a){E("offline"),G([a]);return}try{let a=await (0,d.runScrape)("auto-bridge",{onLog:G});E(0===a.exitCode?"done":"error")}catch{E("error")}},style:{width:"100%",padding:"12px",borderRadius:8,border:"none",cursor:"pointer",background:"linear-gradient(135deg, #9B59B6, #FF6B35)",color:"#fff",fontWeight:700,fontSize:14},children:"Auto-Bridge All Connections"}),"offline"===D&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{style:{padding:"10px",borderRadius:8,background:"rgba(255,80,80,0.1)",border:"1px solid rgba(255,80,80,0.3)",color:"#ff5050",fontSize:12,marginBottom:8,textAlign:"center"},children:"Scraper offline — start it first"}),(0,b.jsx)("button",{onClick:()=>E("idle"),style:{width:"100%",padding:"10px",borderRadius:8,border:"none",cursor:"pointer",background:"rgba(255,255,255,0.1)",color:"#aaa",fontWeight:600,fontSize:12},children:"Retry"})]}),"running"===D&&(0,b.jsxs)("div",{style:{padding:"10px",borderRadius:8,background:"rgba(155,89,182,0.1)",border:"1px solid rgba(155,89,182,0.3)"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[(0,b.jsx)("div",{style:{width:8,height:8,borderRadius:"50%",background:"#9B59B6",animation:"pulse 1s infinite"}}),(0,b.jsx)("span",{style:{fontSize:11,fontWeight:600,color:"#9B59B6"},children:"Bridging..."})]}),(0,b.jsx)("div",{style:{fontFamily:"monospace",fontSize:9,color:"#777",maxHeight:150,overflow:"auto"},children:F.map((a,c)=>(0,b.jsx)("div",{children:a},c))})]}),"done"===D&&(0,b.jsx)("div",{style:{padding:"10px",borderRadius:8,background:"rgba(0,255,136,0.1)",border:"1px solid rgba(0,255,136,0.3)",color:"#00ff88",fontSize:12,fontWeight:600,textAlign:"center"},children:"All bridges mapped! Refresh the app."}),"error"===D&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{style:{padding:"10px",borderRadius:8,background:"rgba(255,80,80,0.1)",border:"1px solid rgba(255,80,80,0.3)",color:"#ff5050",fontSize:12,textAlign:"center",marginBottom:8},children:"Something went wrong"}),(0,b.jsx)("button",{onClick:()=>{E("idle"),G([])},style:{width:"100%",padding:"10px",borderRadius:8,border:"none",cursor:"pointer",background:"rgba(255,255,255,0.1)",color:"#aaa",fontWeight:600,fontSize:12},children:"Try Again"})]})]}),(0,b.jsx)(i,{degree1:x.degree1,degree2:x.degree2,skips:x.skips}),(0,b.jsxs)("div",{style:{background:"rgba(255,107,53,0.06)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,107,53,0.2)"},children:[(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:12},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,margin:0,color:"#FF6B35"},children:"Queue Progress"}),(0,b.jsx)(n.default,{href:"/queue",style:{fontSize:11,color:"#FF6B35",textDecoration:"none",fontWeight:600},children:"View Queue →"})]}),(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:12},children:[(0,b.jsxs)("div",{style:{textAlign:"center"},children:[(0,b.jsx)("div",{style:{fontSize:22,fontWeight:700,color:"#FFA500"},children:v.total}),(0,b.jsx)("div",{style:{fontSize:10,color:"#888"},children:"In Queue"})]}),(0,b.jsxs)("div",{style:{textAlign:"center"},children:[(0,b.jsx)("div",{style:{fontSize:22,fontWeight:700,color:"#3498DB"},children:v.sent}),(0,b.jsx)("div",{style:{fontSize:10,color:"#888"},children:"Sent"})]}),(0,b.jsxs)("div",{style:{textAlign:"center"},children:[(0,b.jsx)("div",{style:{fontSize:22,fontWeight:700,color:"#00ff88"},children:v.accepted}),(0,b.jsx)("div",{style:{fontSize:10,color:"#888"},children:"Accepted"})]})]})]}),t.length>0&&(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,b.jsxs)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:["Recent Activity (",t.filter(a=>!a.seen).length," new)"]}),(0,b.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:6,maxHeight:200,overflowY:"auto"},children:t.slice(0,10).map(a=>(0,b.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",padding:"6px 8px",borderRadius:6,background:a.seen?"transparent":"rgba(255,215,0,0.05)",borderLeft:a.seen?"none":"2px solid #FFD700"},children:[(0,b.jsx)("span",{style:{fontSize:16},children:a.icon||"📌"}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsx)("div",{style:{fontSize:12,fontWeight:600,color:a.seen?"#888":"#fff"},children:a.title}),a.message&&(0,b.jsx)("div",{style:{fontSize:10,color:"#666"},children:a.message})]}),(0,b.jsx)("span",{style:{fontSize:9,color:"#555",flexShrink:0},children:new Date(a.created_at).toLocaleDateString()})]},a.id))})]}),(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:12,marginBottom:24},children:[(0,b.jsx)(q,{label:"Connections",value:j.d1Count}),(0,b.jsx)(q,{label:"Degree-2 Reach",value:j.d2Count}),(0,b.jsx)(q,{label:"Clusters",value:j.clusters}),(0,b.jsx)(q,{label:"S-Tier",value:j.tiers.S,color:"#FFD700"}),(0,b.jsx)(q,{label:"A-Tier",value:j.tiers.A,color:"#9B59B6"}),(0,b.jsx)(q,{label:"Catalysts",value:j.catalysts,color:"#00ff88"})]}),(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Tier Distribution"}),["S","A","B","C","D"].map(a=>{let c=j.tiers[a]||0,d=j.d1Count>0?c/j.d1Count*100:0;return(0,b.jsxs)("div",{style:{marginBottom:8},children:[(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:11,marginBottom:2},children:[(0,b.jsxs)("span",{style:{color:H[a],fontWeight:600},children:[a,"-Tier"]}),(0,b.jsxs)("span",{style:{color:"#888"},children:[c," (",d.toFixed(1),"%)"]})]}),(0,b.jsx)("div",{style:{height:6,background:"rgba(255,255,255,0.08)",borderRadius:3},children:(0,b.jsx)("div",{style:{height:"100%",width:`${d}%`,background:H[a],borderRadius:3}})})]},a)})]}),(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Degree-2 Reach"}),(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12},children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{style:{fontSize:24,fontWeight:700,color:"#FF6B35"},children:j.d2Count}),(0,b.jsx)("div",{style:{fontSize:11,color:"#888"},children:"People reachable via bridges"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{style:{fontSize:24,fontWeight:700,color:"#FFD700"},children:j.d2Tiers.S}),(0,b.jsx)("div",{style:{fontSize:11,color:"#888"},children:"S-Tier degree-2"})]})]})]}),(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,b.jsxs)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:["Milestones (",I.filter(a=>a.done).length,"/",I.length,")"]}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:I.map((a,c)=>(0,b.jsxs)("div",{style:{padding:"8px 10px",borderRadius:8,fontSize:12,background:a.done?"rgba(255,215,0,0.08)":"rgba(255,255,255,0.02)",border:`1px solid ${a.done?"rgba(255,215,0,0.2)":"rgba(255,255,255,0.05)"}`,color:a.done?"#FFD700":"#555",display:"flex",alignItems:"center",gap:6},children:[(0,b.jsx)("span",{style:{fontSize:16},children:a.done?a.icon:"🔒"}),(0,b.jsx)("span",{style:{fontWeight:a.done?600:400},children:a.label})]},c))})]}),(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Top Companies in Your Network"}),j.topCompanies.map(([a,c],d)=>(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",padding:"4px 0",borderBottom:d<j.topCompanies.length-1?"1px solid rgba(255,255,255,0.04)":"none",fontSize:12},children:[(0,b.jsx)("span",{children:a}),(0,b.jsx)("span",{style:{color:"#888"},children:c})]},d))]}),(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Your Sectors"}),(0,b.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:h.sectors.map((a,c)=>(0,b.jsx)("span",{style:{padding:"4px 12px",borderRadius:20,fontSize:11,fontWeight:600,background:"rgba(52,152,219,0.15)",border:"1px solid rgba(52,152,219,0.3)",color:"#3498DB"},children:a},c))})]})]})})]})}function q({label:a,value:c,color:d}){return(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:10,padding:"14px 12px",border:"1px solid rgba(255,255,255,0.08)",textAlign:"center"},children:[(0,b.jsx)("div",{style:{fontSize:22,fontWeight:700,color:d||"#fff"},children:c}),(0,b.jsx)("div",{style:{fontSize:10,color:"#888",marginTop:2},children:a})]})}function r({status:a,log:c,onStart:d,onRetry:e}){return(0,b.jsxs)("div",{style:{background:"rgba(52,152,219,0.06)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(52,152,219,0.2)"},children:[(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:8},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,margin:0,color:"#3498DB"},children:"Account Setup"}),"done"===a&&(0,b.jsx)("span",{style:{fontSize:10,color:"#00ff88",fontWeight:600},children:"Complete"})]}),(0,b.jsx)("p",{style:{fontSize:11,color:"#888",margin:"0 0 12px"},children:"Full scrape of all your LinkedIn connections with profile photos. Takes 3-5 minutes."}),"idle"===a&&(0,b.jsx)("button",{onClick:d,style:{width:"100%",padding:"12px",borderRadius:8,border:"none",cursor:"pointer",background:"linear-gradient(135deg, #3498DB, #9B59B6)",color:"#fff",fontWeight:700,fontSize:14},children:"Set Up Account — Full Scrape"}),"offline"===a&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{style:{padding:"10px",borderRadius:8,background:"rgba(255,80,80,0.1)",border:"1px solid rgba(255,80,80,0.3)",color:"#ff5050",fontSize:12,marginBottom:8,textAlign:"center"},children:"Scraper server offline"}),(0,b.jsxs)("p",{style:{fontSize:10,color:"#888",textAlign:"center",marginBottom:8},children:["Open the ",(0,b.jsx)("strong",{children:"Scan"})," page to finish setting the scraper up"]}),(0,b.jsx)("button",{onClick:e,style:{width:"100%",padding:"10px",borderRadius:8,border:"none",cursor:"pointer",background:"rgba(255,255,255,0.1)",color:"#aaa",fontWeight:600,fontSize:12},children:"Retry"})]}),"running"===a&&(0,b.jsxs)("div",{style:{padding:"10px",borderRadius:8,background:"rgba(52,152,219,0.1)",border:"1px solid rgba(52,152,219,0.3)"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[(0,b.jsx)("div",{style:{width:8,height:8,borderRadius:"50%",background:"#3498DB",animation:"pulse 1s infinite"}}),(0,b.jsx)("span",{style:{fontSize:11,fontWeight:600,color:"#3498DB"},children:"Scanning all connections..."})]}),(0,b.jsx)("div",{style:{fontFamily:"monospace",fontSize:10,color:"#888",maxHeight:120,overflow:"auto"},children:c.map((a,c)=>(0,b.jsx)("div",{children:a},c))})]}),"done"===a&&(0,b.jsx)("div",{style:{padding:"10px",borderRadius:8,background:"rgba(0,255,136,0.1)",border:"1px solid rgba(0,255,136,0.3)",color:"#00ff88",fontSize:12,fontWeight:600,textAlign:"center"},children:"All connections scraped with images! Refresh the app to see your network."}),"error"===a&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{style:{padding:"10px",borderRadius:8,background:"rgba(255,80,80,0.1)",border:"1px solid rgba(255,80,80,0.3)",color:"#ff5050",fontSize:12,textAlign:"center",marginBottom:8},children:"Something went wrong"}),(0,b.jsx)("button",{onClick:e,style:{width:"100%",padding:"10px",borderRadius:8,border:"none",cursor:"pointer",background:"rgba(255,255,255,0.1)",color:"#aaa",fontWeight:600,fontSize:12},children:"Try Again"})]})]})}a.s(["default",0,function(){return(0,b.jsx)(l.default,{children:(0,b.jsx)(p,{})})}],79243)}];
1
+ module.exports=[79243,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(23310),e=a.i(76939);let f={height:10,borderRadius:6},g={background:"rgba(52,152,219,0.06)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(52,152,219,0.2)"};function h({degree1:a=[],degree2:c=[],skips:d=[]}){let j=function(a=[],b=[],c=[]){let d=new Set(b.map(a=>a.source_connection_id).filter(Boolean)),e=new Set(c.map(a=>a.profileUrl).filter(Boolean)),f=a=>d.has(a.id)?"mapped":a.profile_url&&e.has(a.profile_url)?"hidden":"todo",g={mapped:0,hidden:0,todo:0},h={};for(let b of a){let a=f(b);g[a]+=1;let c=b.tier||"D";h[c]=h[c]||{mapped:0,hidden:0,todo:0,total:0},h[c][a]+=1,h[c].total+=1}let i=a.length,j=g.mapped+g.hidden;return{...g,total:i,resolved:j,percent:i?Math.round(j/i*100):0,batches:Math.ceil(g.todo/25),byTier:h}}(a,c,d);if(!j.total)return null;let k=a=>j.total?a/j.total*100:0,l=0===j.todo;return(0,b.jsxs)("div",{style:g,children:[(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",marginBottom:10},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,margin:0,color:"#3498DB"},children:"2nd-degree mapping"}),(0,b.jsx)("span",{style:{fontSize:12,color:l?"#00ff88":"#8b9a9a",fontWeight:600},children:l?"Everything reachable is mapped":`${j.percent}%`})]}),(0,b.jsxs)("div",{style:{...f,display:"flex",overflow:"hidden",background:"rgba(255,255,255,0.06)"},children:[(0,b.jsx)("div",{style:{width:`${k(j.mapped)}%`,background:"#00ff88"}}),(0,b.jsx)("div",{style:{width:`${k(j.hidden)}%`,background:"rgba(255,255,255,0.22)"}})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:16,marginTop:10,fontSize:12,flexWrap:"wrap"},children:[(0,b.jsx)(i,{color:"#00ff88",label:"mapped",value:j.mapped}),(0,b.jsx)(i,{color:"rgba(255,255,255,0.35)",label:"hidden",value:j.hidden}),(0,b.jsx)(i,{color:"rgba(255,255,255,0.12)",label:"to go",value:j.todo}),(0,b.jsxs)("span",{style:{color:"#667",marginLeft:"auto"},children:["of ",j.total]})]}),j.hidden>0&&(0,b.jsx)("p",{style:{fontSize:11.5,color:"#667",margin:"10px 0 0",lineHeight:1.6},children:"Hidden means they keep their connections private — that will not change, and it does not count against you."}),!l&&(0,b.jsxs)("p",{style:{fontSize:11.5,color:"#8b9a9a",margin:"10px 0 0",lineHeight:1.6},children:[j.todo," left — about ",(0,b.jsxs)("b",{children:[j.batches," ",1===j.batches?"batch":"batches"]})," of ",25,". Run one, leave it a while, run another. Long unbroken runs are what gets an account restricted."]}),(0,b.jsx)("div",{style:{marginTop:16,display:"flex",flexDirection:"column",gap:7},children:["S","A","B","C","D"].filter(a=>j.byTier[a]?.total).map(a=>{let c=j.byTier[a];return(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,fontSize:11},children:[(0,b.jsx)("span",{style:{width:14,color:e.TIER_COLORS_CLASSIC[a],fontWeight:700},children:a}),(0,b.jsxs)("div",{style:{flex:1,height:5,borderRadius:3,display:"flex",overflow:"hidden",background:"rgba(255,255,255,0.06)"},children:[(0,b.jsx)("div",{style:{width:`${c.mapped/c.total*100}%`,background:e.TIER_COLORS_CLASSIC[a]}}),(0,b.jsx)("div",{style:{width:`${c.hidden/c.total*100}%`,background:"rgba(255,255,255,0.22)"}})]}),(0,b.jsxs)("span",{style:{color:"#667",width:62,textAlign:"right"},children:[c.mapped,"/",c.total]})]},a)})})]})}function i({color:a,label:c,value:d}){return(0,b.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:6,color:"#8b9a9a"},children:[(0,b.jsx)("span",{style:{width:8,height:8,borderRadius:2,background:a}}),(0,b.jsx)("b",{style:{color:"#e2e8f0"},children:d})," ",c]})}var j=a.i(58834),k=a.i(36839),l=a.i(75857),m=a.i(38246);let n={1:"Observer",11:"Connector",31:"Networker",51:"Strategist",76:"Architect"};function o(){let{userId:a,userName:e,userProfile:f}=(0,l.useUser)(),g=f||{name:e||"User",headline:"",sectors:[],goals:[]},[i,k]=(0,c.useState)(null),[o,q]=(0,c.useState)(!0),[r,s]=(0,c.useState)([]),[t,u]=(0,c.useState)({total:0,sent:0,accepted:0}),[v,w]=(0,c.useState)({degree1:[],degree2:[],skips:[]});if((0,c.useEffect)(()=>{!j.IS_DEMO&&a&&b();async function b(){let b=await (0,d.loadNetwork)(a),c=b.degree1,e=b.degree2,f={S:0,A:0,B:0,C:0,D:0};c.forEach(a=>{f[a.tier]=(f[a.tier]||0)+1});let g={S:0,A:0,B:0,C:0,D:0};e.forEach(a=>{g[a.tier]=(g[a.tier]||0)+1});let h=[...new Set(e.map(a=>a.source_connection_id).filter(Boolean))].length,i=c.filter(a=>a.is_catalyst).length,j={};c.forEach(a=>{a.company&&(j[a.company]=(j[a.company]||0)+1)});let l=Object.entries(j).sort((a,b)=>b[1]-a[1]).slice(0,10),m=100*f.S+40*f.A+15*f.B+5*f.C+ +f.D+200*h+150*i+50*g.S+c.length,n=Math.floor(Math.sqrt(m/10)),o=n*n*10,p=(n+1)*(n+1)*10;k({d1Count:c.length,d2Count:e.length,tiers:f,d2Tiers:g,clusters:h,catalysts:i,networkPower:m,level:n,xpProgress:(m-o)/(p-o)*100,topCompanies:l,unlockedPaths:0}),fetch("/api/scraper").then(a=>a.json()).then(a=>w({degree1:c,degree2:e,skips:a.skips||[]})).catch(()=>w({degree1:c,degree2:e,skips:[]})),fetch(`/api/notifications?userId=${a}`).then(a=>a.json()).then(a=>s(a.notifications||[])).catch(()=>{}),fetch("/api/queue").then(a=>a.json()).then(a=>{let b=a.items||[];u({total:b.length,sent:b.filter(a=>"sent"===a.status).length,accepted:b.filter(a=>"accepted"===a.status).length})}).catch(()=>{}),q(!1)}},[a]),j.IS_DEMO)return(0,b.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"rgba(255,255,255,0.7)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,textAlign:"center",padding:24,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:[(0,b.jsx)("h2",{style:{margin:0,fontSize:20,fontWeight:700,color:"#fff"},children:"Not part of the demo"}),(0,b.jsx)("p",{style:{margin:0,fontSize:13},children:"The public demo includes the Network Circle and Degrees views only."}),(0,b.jsx)(m.default,{href:"/",style:{fontSize:12,color:"rgba(255,255,255,0.5)",textDecoration:"none"},children:"← Back to the network"})]});if(o)return(0,b.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#0a0a1a",color:"#fff"},children:"Loading profile..."});let x={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},y=[{label:"First S-Tier",done:i.tiers.S>0,icon:"👑"},{label:"100 Connections",done:i.d1Count>=100,icon:"🔗"},{label:"500 Connections",done:i.d1Count>=500,icon:"🌐"},{label:"First Cluster",done:i.clusters>0,icon:"🔭"},{label:"10 Clusters",done:i.clusters>=10,icon:"🏰"},{label:"50 S-Tier",done:i.tiers.S>=50,icon:"💎"},{label:"Catalyst Found",done:i.catalysts>0,icon:"⚡"},{label:"Level 25",done:i.level>=25,icon:"🎯"},{label:"Level 50",done:i.level>=50,icon:"🚀"},{label:"D2 S-Tier > 50",done:i.d2Tiers.S>=50,icon:"🌟"}];return(0,b.jsxs)("div",{style:{height:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,b.jsxs)("header",{style:{padding:"16px 24px",borderBottom:"1px solid rgba(255,255,255,0.1)",display:"flex",alignItems:"center",gap:16},children:[(0,b.jsxs)(m.default,{href:"/",style:{display:"flex",alignItems:"center",gap:6,color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:"1px solid rgba(255,255,255,0.1)"},children:[(0,b.jsx)("span",{style:{fontSize:16},children:"←"})," Back to Map"]}),(0,b.jsx)("h1",{style:{fontSize:22,fontWeight:700,margin:0,background:"linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Profile"})]}),(0,b.jsx)("div",{style:{flex:1,overflow:"auto",padding:"30px 20px"},children:(0,b.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:[(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.05)",borderRadius:16,padding:32,marginBottom:24,border:"1px solid rgba(255,215,0,0.2)",textAlign:"center"},children:[(0,b.jsx)("div",{style:{width:100,height:100,borderRadius:"50%",margin:"0 auto 16px",background:"linear-gradient(135deg, #FFD700, #FF6B35)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:36,fontWeight:800,color:"#000",boxShadow:"0 0 30px rgba(255,215,0,0.3)"},children:i.level}),(0,b.jsx)("div",{style:{fontSize:24,fontWeight:700,marginBottom:4},children:g.name}),(0,b.jsx)("div",{style:{fontSize:14,color:"#888",marginBottom:4},children:g.headline}),(0,b.jsx)("div",{style:{display:"inline-block",padding:"4px 16px",borderRadius:20,background:"rgba(255,215,0,0.15)",border:"1px solid rgba(255,215,0,0.3)",color:"#FFD700",fontSize:13,fontWeight:700,marginBottom:16},children:function(a){let b="Observer";for(let[c,d]of Object.entries(n))a>=parseInt(c)&&(b=d);return b}(i.level)}),(0,b.jsxs)("div",{style:{maxWidth:300,margin:"0 auto"},children:[(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:10,color:"#666",marginBottom:4},children:[(0,b.jsxs)("span",{children:["Level ",i.level]}),(0,b.jsxs)("span",{children:["Level ",i.level+1]})]}),(0,b.jsx)("div",{style:{height:8,background:"rgba(255,255,255,0.1)",borderRadius:4},children:(0,b.jsx)("div",{style:{height:"100%",width:`${Math.min(i.xpProgress,100)}%`,background:"linear-gradient(90deg, #FFD700, #FF6B35)",borderRadius:4,transition:"width 1s ease"}})}),(0,b.jsxs)("div",{style:{fontSize:10,color:"#888",marginTop:4},children:["Network Power: ",i.networkPower.toLocaleString()]})]})]}),(0,b.jsx)(h,{degree1:v.degree1,degree2:v.degree2,skips:v.skips}),(0,b.jsxs)("div",{style:{background:"rgba(255,107,53,0.06)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,107,53,0.2)"},children:[(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:12},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,margin:0,color:"#FF6B35"},children:"Queue Progress"}),(0,b.jsx)(m.default,{href:"/queue",style:{fontSize:11,color:"#FF6B35",textDecoration:"none",fontWeight:600},children:"View Queue →"})]}),(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:12},children:[(0,b.jsxs)("div",{style:{textAlign:"center"},children:[(0,b.jsx)("div",{style:{fontSize:22,fontWeight:700,color:"#FFA500"},children:t.total}),(0,b.jsx)("div",{style:{fontSize:10,color:"#888"},children:"In Queue"})]}),(0,b.jsxs)("div",{style:{textAlign:"center"},children:[(0,b.jsx)("div",{style:{fontSize:22,fontWeight:700,color:"#3498DB"},children:t.sent}),(0,b.jsx)("div",{style:{fontSize:10,color:"#888"},children:"Sent"})]}),(0,b.jsxs)("div",{style:{textAlign:"center"},children:[(0,b.jsx)("div",{style:{fontSize:22,fontWeight:700,color:"#00ff88"},children:t.accepted}),(0,b.jsx)("div",{style:{fontSize:10,color:"#888"},children:"Accepted"})]})]})]}),r.length>0&&(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,b.jsxs)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:["Recent Activity (",r.filter(a=>!a.seen).length," new)"]}),(0,b.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:6,maxHeight:200,overflowY:"auto"},children:r.slice(0,10).map(a=>(0,b.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",padding:"6px 8px",borderRadius:6,background:a.seen?"transparent":"rgba(255,215,0,0.05)",borderLeft:a.seen?"none":"2px solid #FFD700"},children:[(0,b.jsx)("span",{style:{fontSize:16},children:a.icon||"📌"}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsx)("div",{style:{fontSize:12,fontWeight:600,color:a.seen?"#888":"#fff"},children:a.title}),a.message&&(0,b.jsx)("div",{style:{fontSize:10,color:"#666"},children:a.message})]}),(0,b.jsx)("span",{style:{fontSize:9,color:"#555",flexShrink:0},children:new Date(a.created_at).toLocaleDateString()})]},a.id))})]}),(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:12,marginBottom:24},children:[(0,b.jsx)(p,{label:"Connections",value:i.d1Count}),(0,b.jsx)(p,{label:"Degree-2 Reach",value:i.d2Count}),(0,b.jsx)(p,{label:"Clusters",value:i.clusters}),(0,b.jsx)(p,{label:"S-Tier",value:i.tiers.S,color:"#FFD700"}),(0,b.jsx)(p,{label:"A-Tier",value:i.tiers.A,color:"#9B59B6"}),(0,b.jsx)(p,{label:"Catalysts",value:i.catalysts,color:"#00ff88"})]}),(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Tier Distribution"}),["S","A","B","C","D"].map(a=>{let c=i.tiers[a]||0,d=i.d1Count>0?c/i.d1Count*100:0;return(0,b.jsxs)("div",{style:{marginBottom:8},children:[(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:11,marginBottom:2},children:[(0,b.jsxs)("span",{style:{color:x[a],fontWeight:600},children:[a,"-Tier"]}),(0,b.jsxs)("span",{style:{color:"#888"},children:[c," (",d.toFixed(1),"%)"]})]}),(0,b.jsx)("div",{style:{height:6,background:"rgba(255,255,255,0.08)",borderRadius:3},children:(0,b.jsx)("div",{style:{height:"100%",width:`${d}%`,background:x[a],borderRadius:3}})})]},a)})]}),(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Degree-2 Reach"}),(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12},children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{style:{fontSize:24,fontWeight:700,color:"#FF6B35"},children:i.d2Count}),(0,b.jsx)("div",{style:{fontSize:11,color:"#888"},children:"People reachable via bridges"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{style:{fontSize:24,fontWeight:700,color:"#FFD700"},children:i.d2Tiers.S}),(0,b.jsx)("div",{style:{fontSize:11,color:"#888"},children:"S-Tier degree-2"})]})]})]}),(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,b.jsxs)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:["Milestones (",y.filter(a=>a.done).length,"/",y.length,")"]}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:y.map((a,c)=>(0,b.jsxs)("div",{style:{padding:"8px 10px",borderRadius:8,fontSize:12,background:a.done?"rgba(255,215,0,0.08)":"rgba(255,255,255,0.02)",border:`1px solid ${a.done?"rgba(255,215,0,0.2)":"rgba(255,255,255,0.05)"}`,color:a.done?"#FFD700":"#555",display:"flex",alignItems:"center",gap:6},children:[(0,b.jsx)("span",{style:{fontSize:16},children:a.done?a.icon:"🔒"}),(0,b.jsx)("span",{style:{fontWeight:a.done?600:400},children:a.label})]},c))})]}),(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Top Companies in Your Network"}),i.topCompanies.map(([a,c],d)=>(0,b.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",padding:"4px 0",borderBottom:d<i.topCompanies.length-1?"1px solid rgba(255,255,255,0.04)":"none",fontSize:12},children:[(0,b.jsx)("span",{children:a}),(0,b.jsx)("span",{style:{color:"#888"},children:c})]},d))]}),(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,b.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Your Sectors"}),(0,b.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:g.sectors.map((a,c)=>(0,b.jsx)("span",{style:{padding:"4px 12px",borderRadius:20,fontSize:11,fontWeight:600,background:"rgba(52,152,219,0.15)",border:"1px solid rgba(52,152,219,0.3)",color:"#3498DB"},children:a},c))})]})]})})]})}function p({label:a,value:c,color:d}){return(0,b.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:10,padding:"14px 12px",border:"1px solid rgba(255,255,255,0.08)",textAlign:"center"},children:[(0,b.jsx)("div",{style:{fontSize:22,fontWeight:700,color:d||"#fff"},children:c}),(0,b.jsx)("div",{style:{fontSize:10,color:"#888",marginTop:2},children:a})]})}a.s(["default",0,function(){return(0,b.jsx)(k.default,{children:(0,b.jsx)(o,{})})}],79243)}];
2
2
 
3
3
  //# sourceMappingURL=app_profile_page_0u3-l5y.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[65375,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(36839),e=a.i(38246),f=a.i(37732);let g="1px solid rgba(255,255,255,0.1)",h={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},i=[25,50,100,200,500],j=[100,250,500,1e3,0],k=a=>new Date(a).toLocaleDateString(void 0,{month:"short",day:"numeric"});function l({cooldown:a,onLift:d,disabled:e}){let[f,g]=(0,c.useState)(!1);return a?(0,b.jsxs)("div",{role:"status",style:{padding:"12px 14px",borderRadius:8,fontSize:13,lineHeight:1.6,background:"rgba(255,80,80,0.08)",border:"1px solid rgba(255,80,80,0.35)",color:"#f3c9c9"},children:[(0,b.jsxs)("b",{style:{color:"#ff8080"},children:["Scanning is paused until ",new Date(a.until).toLocaleString(void 0,{weekday:"short",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}),"."]})," ",a.reason,". Nothing that searches LinkedIn will run until then, so the account can recover.",(0,b.jsx)("div",{style:{marginTop:8,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:f?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{style:{fontSize:12.5},children:"Only if people search works normally for you on linkedin.com right now."}),(0,b.jsx)("button",{onClick:()=>{g(!1),d()},style:{...q,color:"#ff8080"},children:"Yes, lift it"}),(0,b.jsx)("button",{onClick:()=>g(!1),style:q,children:"Keep it"})]}):(0,b.jsx)("button",{onClick:()=>g(!0),disabled:e,style:q,children:"Lift it early…"})})]}):null}function m({used:a,cap:c}){let d=c?Math.min(100,Math.round(a/c*100)):0;return(0,b.jsx)("div",{style:{height:5,borderRadius:3,background:"rgba(255,255,255,0.07)",overflow:"hidden",marginTop:4},children:(0,b.jsx)("div",{style:{height:"100%",width:`${d}%`,background:d>=100?"#ff6b6b":d>=75?"#FFD700":"#3498DB"}})})}function n({li:a,onSetLimits:c,disabled:d}){if(!a)return null;let{limits:e}=a,f=a.unreadable?"?":a.searchesToday;return(0,b.jsxs)("div",{style:{padding:"12px 14px",borderRadius:8,border:g,background:"rgba(255,255,255,0.03)",fontSize:12.5,color:"#b8c4c4"},children:[(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(210px, 1fr))",gap:14},children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("b",{style:{color:"#fff"},children:f})," of ",e.daily||"no limit"," searches in the last 24 hours"]}),(0,b.jsx)(m,{used:a.searchesToday||0,cap:e.daily})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("b",{style:{color:"#fff"},children:a.searchesMonth})," of ",e.monthly||"no limit"," this month · resets ",k(a.monthResets)]}),(0,b.jsx)(m,{used:a.searchesMonth,cap:e.monthly})]})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",marginTop:10},children:[(0,b.jsx)("span",{children:"Budget:"}),(0,b.jsx)("select",{value:e.daily,disabled:d,onChange:a=>c({daily:Number(a.target.value),monthly:e.monthly}),style:r,children:i.map(a=>(0,b.jsxs)("option",{value:a,children:[a," a day"]},a))}),(0,b.jsx)("select",{value:e.monthly,disabled:d,onChange:a=>c({daily:e.daily,monthly:Number(a.target.value)}),style:r,children:j.map(a=>(0,b.jsx)("option",{value:a,children:a?`${a} a month`:"no monthly cap (Premium)"},a))}),(0,b.jsxs)("span",{style:{color:"#778"},children:[a.profilesToday," profile views today"]})]}),(0,b.jsxs)("div",{style:{marginTop:8,color:"#778",lineHeight:1.6},children:["Every page of someone’s connections is one search. LinkedIn limits a free account’s people searches by the month (it doesn’t say how many; reports put it around 250–350), resetting on the 1st. When a budget is used, a scan saves what it read and stops; the next one carries on from the same page.",e.daily>100&&(0,b.jsxs)("b",{style:{color:"#FFD700"},children:[" ",e.daily," a day can use up a free account’s month in a day or two."]})]})]})}function o({paused:a=[],onResume:d,onResumeAll:e,disabled:f}){let[i,j]=(0,c.useState)(!1);if(!a.length)return null;let l=a.filter(a=>a.legacy).length,m=i?a:a.slice(0,8);return(0,b.jsxs)("div",{style:{borderRadius:8,border:g,background:"rgba(255,255,255,0.03)"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"10px 14px",borderBottom:g,flexWrap:"wrap"},children:[(0,b.jsxs)("div",{style:{flex:1,minWidth:200},children:[(0,b.jsxs)("b",{style:{fontSize:13.5},children:["Paused — ",a.length," ",1===a.length?"list":"lists"," with more to read"]}),(0,b.jsxs)("div",{style:{fontSize:12,color:"#8b9a9a",marginTop:2},children:["Each carries on from the page it stopped at",l?`; ${l} were read to page 10 before whole lists were read`:"","."]})]}),(0,b.jsx)("button",{onClick:e,disabled:f,style:{...p,opacity:f?.4:1,cursor:f?"not-allowed":"pointer",background:f?"rgba(255,255,255,0.06)":"linear-gradient(135deg, #3498DB, #9B59B6)"},children:"Resume all"})]}),(0,b.jsx)("div",{children:m.map(a=>(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 14px",borderBottom:"1px solid rgba(255,255,255,0.04)"},children:[(0,b.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:h[a.tier]||"#667",flexShrink:0}}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsx)("div",{style:{fontSize:13,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.name}),(0,b.jsxs)("div",{style:{fontSize:11.5,color:"#8b9a9a"},children:["Read to page ",a.pagesRead," · carries on at ",a.nextPage,a.at?` \xb7 ${k(a.at)}`:"",a.unclear>=2?" · came back unclear twice, so it waits at the back of Resume all":""]})]}),(0,b.jsx)("button",{onClick:()=>d(a),disabled:f,style:{...p,padding:"6px 12px",fontSize:12,opacity:f?.4:1,cursor:f?"not-allowed":"pointer"},children:"Resume"})]},a.id))}),a.length>8&&(0,b.jsx)("button",{onClick:()=>j(!i),style:{...q,padding:"10px 14px"},children:i?"Show fewer":`Show all ${a.length}`})]})}let p={padding:"8px 14px",borderRadius:7,fontSize:13,fontWeight:700,cursor:"pointer",border:g,background:"rgba(255,255,255,0.08)",color:"#fff"},q={background:"none",border:"none",color:"#8fb8d6",cursor:"pointer",fontSize:12.5,fontWeight:600,padding:0},r={padding:"6px 8px",borderRadius:6,fontSize:12.5,fontWeight:600,background:"rgba(255,255,255,0.08)",color:"#fff",border:g},s="1px solid rgba(255,255,255,0.1)";function t(){let[a,d]=(0,c.useState)(null),[e,f]=(0,c.useState)(null),[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(null);async function m(a){h(a),j(null);try{let b=await fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:a})}),c=await b.json();if(!b.ok){j(c.error||"Something went wrong."),c.dirty&&f({dirty:c.dirty});return}"check"===a?f(c):(l(c),f(null))}catch(a){j(a.message)}finally{h(null)}}return((0,c.useEffect)(()=>{fetch("/api/update").then(a=>a.json()).then(d).catch(()=>{})},[]),a)?a.installed?(0,b.jsx)(u,{local:a}):!1===a.supported?(0,b.jsxs)(w,{children:[(0,b.jsx)(x,{children:"Updates"}),(0,b.jsx)(y,{children:a.reason})]}):(0,b.jsxs)(w,{children:[(0,b.jsx)(x,{children:"Updates"}),k?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(y,{children:["Updated to ",(0,b.jsx)(z,{children:k.sha})," — “",k.subject,"”."]}),(0,b.jsx)(y,{style:{color:k.needsRestart?"#FFD700":void 0},children:k.needsRestart?"Stop the app in your terminal and start it again — this update changed how it starts.":"The page will pick up most changes on its own. Restart the app if anything looks odd."})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(y,{children:["You are on ",(0,b.jsx)(z,{children:a.sha})," — “",a.subject,"”."]}),e&&0===e.behind&&(0,b.jsx)(y,{children:"Up to date."}),e&&e.behind>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(y,{style:{color:"#00ff88"},children:[e.behind," update",1===e.behind?"":"s"," available."]}),(0,b.jsx)("pre",{style:v,children:e.commits.join("\n")})]}),e?.dirty?.length>0&&(0,b.jsxs)(y,{children:["Changed files here:"," ",(0,b.jsx)(z,{children:e.dirty.join(", ")}),". Commit or discard them first — this will not throw away your work."]}),(0,b.jsxs)("div",{style:{display:"flex",gap:10,marginTop:12,flexWrap:"wrap"},children:[(0,b.jsx)(A,{onClick:()=>m("check"),disabled:!!g,children:"check"===g?"Checking…":"Check for updates"}),e?.behind>0&&(0,b.jsx)(A,{onClick:()=>m("pull"),disabled:!!g,primary:!0,children:"pull"===g?"Updating…":`Install ${e.behind} update${1===e.behind?"":"s"}`})]})]}),i&&(0,b.jsx)(y,{style:{color:"#ff7676"},children:i}),(0,b.jsxs)(y,{style:{fontSize:12,color:"#667",marginTop:12},children:["Nothing is checked automatically and nothing about you is sent — this runs the same ",(0,b.jsx)(z,{children:"git fetch"})," and ",(0,b.jsx)(z,{children:"git pull"})," you would type yourself."]})]}):null}function u({local:a}){let[d,e]=(0,c.useState)(!1),[f,g]=(0,c.useState)(null),[h,i]=(0,c.useState)(null),[j,k]=(0,c.useState)(!1);async function l(){e(!0),i(null);try{let a=await fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check-release"})}),b=await a.json();a.ok?g(b):i(b.error||"Could not check.")}catch(a){i(a.message)}finally{e(!1)}}async function m(){try{await navigator.clipboard.writeText(a.command),k(!0),setTimeout(()=>k(!1),1600)}catch{i("Could not copy — select the line and copy it by hand.")}}let n="mac-app"===a.kind?"Paste this into Terminal. It closes this app, puts the new version in its place and opens it. Your network stays where it is.":"source"===a.kind?"Stop the app (Ctrl-C), then run this in the six-degrees folder. It fetches the newest code, builds it and starts it again. Your network stays where it is.":"Run this in a terminal to start the newest version. Your network stays where it is.";return(0,b.jsxs)(w,{children:[(0,b.jsx)(x,{children:"Updates"}),(0,b.jsxs)(y,{children:["You have version ",(0,b.jsx)(z,{children:a.version}),"."]}),f&&!f.latest&&(0,b.jsx)(y,{children:"No release has been published yet."}),f?.latest&&!f.newer&&(0,b.jsx)(y,{children:"That is the newest version."}),f?.newer&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(y,{style:{color:"#00ff88"},children:["Version ",f.latest.version," is available."]}),(0,b.jsx)(y,{children:n}),(0,b.jsx)("pre",{style:v,children:a.command}),(0,b.jsxs)("div",{style:{display:"flex",gap:10,marginTop:10,flexWrap:"wrap",alignItems:"center"},children:[(0,b.jsx)(A,{onClick:m,primary:!0,children:j?"Copied":"Copy"}),f.latest.url&&(0,b.jsx)("a",{href:f.latest.url,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",fontSize:13.5},children:"What changed →"})]})]}),!f?.newer&&(0,b.jsx)("div",{style:{marginTop:12},children:(0,b.jsx)(A,{onClick:l,disabled:d,children:d?"Checking…":"Check for updates"})}),h&&(0,b.jsx)(y,{style:{color:"#ff7676"},children:h}),(0,b.jsx)(y,{style:{fontSize:12,color:"#667",marginTop:12},children:"Nothing is checked automatically. The button asks GitHub for the newest version number and nothing about you is sent."})]})}let v={background:"rgba(0,0,0,0.45)",border:s,borderRadius:8,padding:12,margin:"8px 0 0",fontSize:12,lineHeight:1.7,color:"#b9c6c6",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",maxHeight:180,overflow:"auto"};function w({children:a}){return(0,b.jsx)("div",{style:{marginTop:32,paddingTop:24,borderTop:s},children:a})}function x({children:a}){return(0,b.jsx)("div",{style:{fontSize:15.5,fontWeight:650,marginBottom:6},children:a})}function y({children:a,style:c}){return(0,b.jsx)("div",{style:{fontSize:13.5,color:"#8b9a9a",lineHeight:1.6,marginTop:4,...c},children:a})}function z({children:a}){return(0,b.jsx)("code",{style:{background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4},children:a})}function A({children:a,onClick:c,disabled:d,primary:e}){return(0,b.jsx)("button",{onClick:c,disabled:d,style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:650,color:d?"#667":"#fff",border:s,background:d?"rgba(255,255,255,0.05)":e?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(255,255,255,0.08)",cursor:d?"not-allowed":"pointer"},children:a})}let B="1px solid rgba(255,255,255,0.1)",C={install:"Installing the scraper",login:"Waiting for you to sign in",full:"Scanning your whole network",refresh:"Checking for new connections","auto-bridge":"Mapping 2nd-degree connections","auto-bridge-retry":"Mapping 2nd degree, hidden ones included",resume:"Carrying on with one paused list","resume-all":"Carrying on with every paused list"};function D(){let[a,d]=(0,c.useState)(null),[g,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)(10),[k,m]=(0,c.useState)(["S","A"]),[p,q]=E("six-degrees-bridge-order","newest"),[r,s]=E("six-degrees-bridge-pages-v2",100),[u,v]=E("six-degrees-bridge-finish",!0),[w,x]=(0,c.useState)(null),y=(0,c.useRef)(null),z=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/scraper");d(await a.json())}catch{d(a=>a||{ready:!1,checks:{},log:[]})}},[]);async function A(){x(null),await (0,f.stopScrape)().catch(a=>x(a.message)),z()}async function D(a,b={}){x(null),h(!0);try{let c=await fetch("/api/scraper",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:a,...b})}),d=await c.json();c.ok||x(d.error||"Could not start.")}catch(a){x(a.message)}finally{h(!1),z()}}(0,c.useEffect)(()=>{z();let a=setInterval(z,1500);return()=>clearInterval(a)},[z]),(0,c.useEffect)(()=>{y.current&&(y.current.scrollTop=y.current.scrollHeight)},[a?.log?.length]);let M=a?.checks||{},N=a?.running;a&&M.dependencies;let O=a&&!M.chrome,P=a&&!M.scriptsFound,Q=a?.ready&&!N,R=a?.linkedin,S=!!R?.cooldown,T=Q&&!S,U=a?.network||{first:0,second:0,third:0},V=U.first,W=a&&!N&&null!=a.exitCode&&0!==a.exitCode,X=W?a.failure?.length?a.failure.join("\n"):[...a.log||[]].reverse().find(a=>!/^Stopped \(exit/.test(a)&&!/Warning|warnings\.warn/.test(a)):null;return(0,b.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:[(0,b.jsxs)("header",{style:{padding:"16px 24px",borderBottom:B,display:"flex",alignItems:"center",gap:16},children:[(0,b.jsx)(e.default,{href:"/",style:{display:"flex",alignItems:"center",gap:6,color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:B},children:"← Back to Map"}),(0,b.jsx)("h1",{style:{fontSize:22,fontWeight:700,margin:0,background:"linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Scan your network"})]}),(0,b.jsxs)("div",{style:{maxWidth:720,margin:"0 auto",padding:"32px 24px 64px"},children:[(0,b.jsxs)("p",{style:{color:"#9aa",fontSize:15,lineHeight:1.6,marginTop:0},children:["This reads your own LinkedIn connections in a real Chrome window on this machine and saves them here. Nothing leaves your computer, and you will never be asked for your password — you sign in yourself, once.",!V&&" Three steps and your galaxy appears; each one ticks itself off."]}),V>0&&!N&&(0,b.jsx)(J,{children:(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:14,flexWrap:"wrap"},children:[(0,b.jsxs)("div",{style:{flex:1,minWidth:200},children:[(0,b.jsxs)("b",{children:[V.toLocaleString()," connections"]}),U.second>0&&(0,b.jsxs)(b.Fragment,{children:[", plus ",U.second.toLocaleString()," people in their circles"]}),U.third>0&&(0,b.jsxs)(b.Fragment,{children:[" and ",U.third.toLocaleString()," from company scans"]}),"."," ",(0,b.jsx)("span",{style:{color:"#9aa"},children:"Your galaxy is ready."})]}),(0,b.jsx)(e.default,{href:"/",style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:700,color:"#0a0a1a",textDecoration:"none",background:"linear-gradient(135deg, #FFD700, #FF6B35)"},children:"See your network →"})]})}),W&&(0,b.jsxs)(J,{tone:"bad",children:[(0,b.jsx)("b",{children:"The last run stopped before it finished."}),X&&(0,b.jsx)("div",{style:{marginTop:6,color:"#e8c4c4",whiteSpace:"pre-wrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:12.5},children:X}),(0,b.jsx)("div",{style:{color:"#9aa",marginTop:6},children:"The full log is below."})]}),P&&(0,b.jsxs)(J,{tone:"bad",children:[(0,b.jsx)("b",{children:"Can’t find the scraper files."}),(0,b.jsx)("br",{}),(0,b.jsxs)("span",{style:{color:"#9aa"},children:["Expected ",(0,b.jsx)("code",{style:F,children:"scripts/scrape.py"})," next to the app. If you downloaded a zip, run the app from inside the project folder."]})]}),O&&(0,b.jsxs)(J,{tone:"bad",children:[(0,b.jsx)("b",{children:"Google Chrome isn’t installed."}),(0,b.jsx)("br",{}),(0,b.jsxs)("span",{style:{color:"#9aa"},children:["The scraper drives your real Chrome. Install it from"," ",(0,b.jsx)("a",{href:"https://www.google.com/chrome/",target:"_blank",rel:"noreferrer",style:{color:"#3498DB"},children:"google.com/chrome"}),", then reload this page."]})]}),(0,b.jsx)(H,{n:1,done:!!M.dependencies,title:"Install what the scraper needs",body:M.dependencies?"Installed.":M.python?"One-time, about a minute. Downloads the browser-automation packages.":"Python 3 was not found on this machine. Install it from python.org, then reload.",action:!M.dependencies&&M.python&&(0,b.jsx)(I,{onClick:()=>D("install"),disabled:g||N,children:N&&"install"===a.action?"Installing…":"Install"})}),(0,b.jsx)(H,{n:2,done:!!M.signedIn,title:"Sign into LinkedIn",body:M.signedIn?"Signed in on this machine. If LinkedIn ever asks for a security check, or a scan says you were signed out, open LinkedIn here and finish it by hand.":"Opens a Chrome window. Sign in with your email and password — “Continue with Google” cannot work here, because Google blocks its sign-in inside automated browsers.",action:M.dependencies&&(0,b.jsx)(I,{onClick:()=>D("login"),disabled:g||N,children:N&&"login"===a.action?"Waiting for you…":"Open LinkedIn"})}),(0,b.jsx)(H,{n:3,done:V>0,title:"1st degree — the people you know",body:"The first scan walks your whole connections list, about a minute and a half for 750 people. After that, Check for new only looks at what has been added since.",action:(0,b.jsxs)("div",{style:{display:"flex",gap:10,flexWrap:"wrap"},children:[(0,b.jsx)(I,{onClick:()=>D("full"),disabled:!T,primary:!0,children:N&&"full"===a.action?"Scanning…":"Scan my whole network"}),(0,b.jsx)(I,{onClick:()=>D("refresh"),disabled:!T,children:N&&"refresh"===a.action?"Checking…":"Check for new"})]})}),(0,b.jsx)(H,{n:4,done:!1,title:"2nd degree — the people they know",body:(0,b.jsxs)(b.Fragment,{children:["This is what fills ",(0,b.jsx)("b",{children:"Degrees"})," and ",(0,b.jsx)("b",{children:"Outlink"}),": it opens each of your connections in turn and reads who ",(0,b.jsx)("i",{children:"they"})," know. Most people hide their connections — those are noted and never tried again.",(0,b.jsx)("br",{}),(0,b.jsx)("br",{}),"It is slow on purpose, about two minutes between each person, because this is the part LinkedIn notices. During development a real account was temporarily restricted after roughly ",(0,b.jsx)("b",{children:"19 people in one sitting"}),". Run a batch, leave it for a day, run another — and stop the moment LinkedIn mentions unusual activity. It always picks up where it left off: anyone still without a mapped circle, in the order you choose below — your newest connections first, or highest tier first. Each person’s list is read to the end, saving every 10 pages, and a read that is stopped carries on from the same page next time."]}),action:(0,b.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[(0,b.jsx)(l,{cooldown:R?.cooldown,disabled:g,onLift:()=>D("lift-cooldown")}),(0,b.jsx)(n,{li:R,disabled:g,onSetLimits:a=>D("set-limits",a)}),"score"===p&&(0,b.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,b.jsx)("span",{style:{fontSize:12,color:"#8b9a9a"},children:"Work through"}),["S","A","B","C","D"].map(a=>{let c=k.includes(a);return(0,b.jsx)("button",{onClick:()=>m(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a]),disabled:N,style:{width:30,height:28,borderRadius:7,fontSize:12,fontWeight:700,cursor:N?"not-allowed":"pointer",border:B,background:c?"rgba(52,152,219,0.22)":"rgba(255,255,255,0.05)",color:c?"#cfe6f7":"#667"},children:a},a)}),(0,b.jsx)("span",{style:{fontSize:11.5,color:"#667"},children:k.length?"":"pick at least one"})]}),"newest"===p&&(0,b.jsxs)("div",{style:{fontSize:12,color:"#8b9a9a",lineHeight:1.6},children:["Goes by the date you connected, newest first, across every tier. Run"," ",(0,b.jsx)("b",{children:"Check for new"})," first so your latest connections are in the list."]}),(0,b.jsxs)("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center"},children:[(0,b.jsx)("span",{style:{fontSize:12,color:"#8b9a9a"},children:"Start with"}),(0,b.jsxs)("select",{value:p,onChange:a=>q(a.target.value),disabled:N,style:G,children:[(0,b.jsx)("option",{value:"newest",children:"Newest connections first"}),(0,b.jsx)("option",{value:"score",children:"Highest tier first"})]}),(0,b.jsx)("span",{style:{fontSize:12,color:"#8b9a9a"},children:"Read up to"}),(0,b.jsxs)("select",{value:r,onChange:a=>s(Number(a.target.value)),disabled:N,style:G,children:[(0,b.jsx)("option",{value:100,children:"every page, to the end of their list"}),(0,b.jsx)("option",{value:50,children:"50 pages each"}),(0,b.jsx)("option",{value:25,children:"25 pages each"}),(0,b.jsx)("option",{value:10,children:"10 pages (~100 people) each"})]})]}),(0,b.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"center",fontSize:12.5,color:"#cfd8d8",cursor:N?"not-allowed":"pointer"},children:[(0,b.jsx)("input",{type:"checkbox",checked:u,onChange:a=>v(a.target.checked),disabled:N}),"Also finish people already mapped, from the page each one stopped at"]}),(0,b.jsxs)("div",{style:{fontSize:12,color:"#FFD700",lineHeight:1.6},children:["Every page is a LinkedIn search, so it rests 20 seconds before each one and a minute after every 10, and a long list can take"," ",r>=100?"about 55 minutes a person":`about ${Math.max(5,Math.round(.55*r))} minutes a person`,". LinkedIn shows 100 pages of anyone’s connections at most. Free accounts have a monthly search limit: if LinkedIn says it has been reached, the scan saves what it read and stops, and carries on from that page next time. Keep batches small."]}),(0,b.jsxs)("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center"},children:[(0,b.jsx)(I,{onClick:()=>D("auto-bridge",{maxBridges:i,tiers:"score"===p?k:[],order:p,maxPages:r,deeper:u}),disabled:!T||"score"===p&&!k.length,primary:!0,children:N&&"auto-bridge"===a.action?"Mapping…":"Map 2nd degree"}),(0,b.jsxs)("select",{value:i,onChange:a=>j(Number(a.target.value)),disabled:N,style:G,children:[(0,b.jsx)("option",{value:5,children:"5 people"}),(0,b.jsx)("option",{value:10,children:"10 people"}),(0,b.jsx)("option",{value:25,children:"25 people"}),(0,b.jsx)("option",{value:0,children:"everyone — not advised"})]}),(0,b.jsx)(I,{onClick:()=>D("auto-bridge-retry",{maxBridges:i,tiers:"score"===p?k:[],order:p,maxPages:r,deeper:u}),disabled:!T||"score"===p&&!k.length,children:"Retry hidden ones"})]}),(0,b.jsx)(o,{paused:a?.paused||[],disabled:!T,onResume:a=>D("resume",{id:a.id}),onResumeAll:()=>D("resume-all",{maxBridges:i})})]})}),N&&(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginTop:20,padding:"14px 16px",borderRadius:8,background:"rgba(255,255,255,0.05)",border:B},children:[(0,b.jsx)(L,{}),(0,b.jsxs)("div",{style:{flex:1,fontSize:13.5},children:[(0,b.jsx)("b",{children:C[a.action]||"Working"}),a.progress&&(0,b.jsx)(K,{p:a.progress,action:a.action}),(0,b.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5,marginTop:2},children:"Stopping closes the browser cleanly and keeps everything found so far."})]}),(0,b.jsx)(I,{onClick:A,tone:"bad",children:"Stop"})]}),w&&(0,b.jsx)(J,{tone:"bad",children:w}),a?.log?.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,margin:"28px 0 8px",fontSize:12,color:"#788",textTransform:"uppercase",letterSpacing:.6},children:[N&&(0,b.jsx)(L,{}),N?"Working":"Last run"]}),(0,b.jsx)("pre",{ref:y,style:{background:"rgba(0,0,0,0.45)",border:B,borderRadius:8,padding:14,maxHeight:280,overflow:"auto",margin:0,fontSize:12.5,lineHeight:1.7,color:"#b9c6c6",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:a.log.join("\n")})]}),(0,b.jsx)(t,{}),(0,b.jsxs)("p",{style:{color:"#667",fontSize:12.5,lineHeight:1.7,marginTop:32},children:["Automating LinkedIn may go against its User Agreement, and accounts have been restricted for it. This runs locally against your own account, at your own risk. LinkedIn’s own CSV export is the supported route and needs none of this —"," ",(0,b.jsx)(e.default,{href:"/import",style:{color:"#3498DB"},children:"import a CSV instead"}),"."]})]}),(0,b.jsx)("style",{children:`@keyframes spin { to { transform: rotate(360deg) } }
2
- @keyframes slide { 0% { transform: translateX(-100%) } 100% { transform: translateX(300%) } }`})]})}function E(a,b){let[d,e]=(0,c.useState)(b);return(0,c.useEffect)(()=>{try{let b=localStorage.getItem(a);null!==b&&e(JSON.parse(b))}catch{}},[a]),[d,b=>{e(b);try{localStorage.setItem(a,JSON.stringify(b))}catch{}}]}let F={background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4},G={padding:"9px 10px",borderRadius:7,fontSize:13.5,fontWeight:600,background:"rgba(255,255,255,0.08)",color:"#fff",border:B};function H({n:a,done:c,title:d,body:e,action:f}){return(0,b.jsxs)("div",{style:{display:"flex",gap:16,padding:"20px 0",borderBottom:B,alignItems:"flex-start"},children:[(0,b.jsx)("div",{style:{flexShrink:0,width:28,height:28,borderRadius:"50%",display:"grid",placeItems:"center",fontSize:13,fontWeight:700,background:c?"rgba(0,255,136,0.15)":"rgba(255,255,255,0.08)",color:c?"#00ff88":"#889",border:`1px solid ${c?"rgba(0,255,136,0.4)":"rgba(255,255,255,0.14)"}`},children:c?"✓":a}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsx)("div",{style:{fontSize:15.5,fontWeight:650,marginBottom:4},children:d}),(0,b.jsx)("div",{style:{fontSize:13.5,color:"#8b9a9a",lineHeight:1.6,marginBottom:12*!!f},children:e}),f]})]})}function I({children:a,onClick:c,disabled:d,primary:e,tone:f}){return(0,b.jsx)("button",{onClick:c,disabled:d,style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:650,color:d?"#667":"#fff",background:d?"rgba(255,255,255,0.05)":"bad"===f?"rgba(255,80,80,0.15)":e?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(255,255,255,0.08)",border:B,cursor:d?"not-allowed":"pointer"},children:a})}function J({children:a,tone:c}){return(0,b.jsx)("div",{style:{margin:"16px 0",padding:"14px 16px",borderRadius:8,fontSize:13.5,lineHeight:1.6,background:"bad"===c?"rgba(255,80,80,0.08)":"rgba(255,255,255,0.05)",border:`1px solid ${"bad"===c?"rgba(255,80,80,0.3)":"rgba(255,255,255,0.12)"}`},children:a})}function K({p:a,action:c}){let d;if("saving"===a.kind)return(0,b.jsxs)("div",{style:{margin:"8px 0 6px"},children:[(0,b.jsx)("div",{role:"progressbar","aria-label":"Saving",style:{height:8,borderRadius:4,overflow:"hidden",background:"rgba(255,255,255,0.08)",marginBottom:6},children:(0,b.jsx)("div",{style:{width:"35%",height:"100%",borderRadius:4,background:"linear-gradient(90deg, #9B59B6, #3498DB)",animation:"slide 1.2s ease-in-out infinite"}})}),(0,b.jsx)("div",{style:{fontSize:12.5,color:"#cfe6f7"},children:"Saving to your network and fetching photos — this can take a minute or two."})]});let e=Math.max(0,Math.min(100,Math.round(a.done/a.total*100)));return d="batch"===a.kind?`Person ${a.current} of ${a.total}`:"refresh"===c?`Looked at ${a.done.toLocaleString()} so far — stops once it reaches people already saved`:`${a.done.toLocaleString()} of ${a.total.toLocaleString()} connections \xb7 ${e}%`,(0,b.jsxs)("div",{style:{margin:"8px 0 6px"},children:["refresh"!==c&&(0,b.jsx)("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":a.total,"aria-valuenow":a.done,"aria-label":d,style:{height:8,borderRadius:4,overflow:"hidden",background:"rgba(255,255,255,0.08)",marginBottom:6},children:(0,b.jsx)("div",{style:{width:`${e}%`,height:"100%",borderRadius:4,background:"linear-gradient(90deg, #9B59B6, #3498DB)",transition:"width 0.6s ease"}})}),(0,b.jsx)("div",{style:{fontSize:12.5,color:"#cfe6f7"},children:d})]})}function L(){return(0,b.jsx)("span",{style:{width:11,height:11,borderRadius:"50%",display:"inline-block",border:"2px solid rgba(255,255,255,0.2)",borderTopColor:"#3498DB",animation:"spin 0.8s linear infinite"}})}a.s(["default",0,function(){return(0,b.jsx)(d.default,{children:(0,b.jsx)(D,{})})}],65375)}];
1
+ module.exports=[65375,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(36839),e=a.i(38246),f=a.i(37732);let g="1px solid rgba(255,255,255,0.1)",h={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},i=[25,50,100,200,500],j=[100,250,500,1e3,0],k=a=>new Date(a).toLocaleDateString(void 0,{month:"short",day:"numeric"});function l({cooldown:a,onLift:d,disabled:e}){let[f,g]=(0,c.useState)(!1);return a?(0,b.jsxs)("div",{role:"status",style:{padding:"12px 14px",borderRadius:8,fontSize:13,lineHeight:1.6,background:"rgba(255,80,80,0.08)",border:"1px solid rgba(255,80,80,0.35)",color:"#f3c9c9"},children:[(0,b.jsxs)("b",{style:{color:"#ff8080"},children:["Scanning is paused until ",new Date(a.until).toLocaleString(void 0,{weekday:"short",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}),"."]})," ",a.reason,". Nothing that searches LinkedIn will run until then, so the account can recover.",(0,b.jsx)("div",{style:{marginTop:8,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:f?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{style:{fontSize:12.5},children:"Only if people search works normally for you on linkedin.com right now."}),(0,b.jsx)("button",{onClick:()=>{g(!1),d()},style:{...q,color:"#ff8080"},children:"Yes, lift it"}),(0,b.jsx)("button",{onClick:()=>g(!1),style:q,children:"Keep it"})]}):(0,b.jsx)("button",{onClick:()=>g(!0),disabled:e,style:q,children:"Lift it early…"})})]}):null}function m({used:a,cap:c}){let d=c?Math.min(100,Math.round(a/c*100)):0;return(0,b.jsx)("div",{style:{height:5,borderRadius:3,background:"rgba(255,255,255,0.07)",overflow:"hidden",marginTop:4},children:(0,b.jsx)("div",{style:{height:"100%",width:`${d}%`,background:d>=100?"#ff6b6b":d>=75?"#FFD700":"#3498DB"}})})}function n({li:a,onSetLimits:c,disabled:d}){if(!a)return null;let{limits:e}=a,f=a.unreadable?"?":a.searchesToday;return(0,b.jsxs)("div",{style:{padding:"12px 14px",borderRadius:8,border:g,background:"rgba(255,255,255,0.03)",fontSize:12.5,color:"#b8c4c4"},children:[(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(210px, 1fr))",gap:14},children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("b",{style:{color:"#fff"},children:f})," of ",e.daily||"no limit"," searches in the last 24 hours"]}),(0,b.jsx)(m,{used:a.searchesToday||0,cap:e.daily})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("b",{style:{color:"#fff"},children:a.searchesMonth})," of ",e.monthly||"no limit"," this month · resets ",k(a.monthResets)]}),(0,b.jsx)(m,{used:a.searchesMonth,cap:e.monthly})]})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",marginTop:10},children:[(0,b.jsx)("span",{children:"Budget:"}),(0,b.jsx)("select",{value:e.daily,disabled:d,onChange:a=>c({daily:Number(a.target.value),monthly:e.monthly}),style:r,children:i.map(a=>(0,b.jsxs)("option",{value:a,children:[a," a day"]},a))}),(0,b.jsx)("select",{value:e.monthly,disabled:d,onChange:a=>c({daily:e.daily,monthly:Number(a.target.value)}),style:r,children:j.map(a=>(0,b.jsx)("option",{value:a,children:a?`${a} a month`:"no monthly cap (Premium)"},a))}),(0,b.jsxs)("span",{style:{color:"#778"},children:[a.profilesToday," profile views today"]})]}),(0,b.jsxs)("div",{style:{marginTop:8,color:"#778",lineHeight:1.6},children:["Every page of someone’s connections is one search. LinkedIn limits a free account’s people searches by the month (it doesn’t say how many; reports put it around 250–350), resetting on the 1st. When a budget is used, a scan saves what it read and stops; the next one carries on from the same page.",e.daily>100&&(0,b.jsxs)("b",{style:{color:"#FFD700"},children:[" ",e.daily," a day can use up a free account’s month in a day or two."]})]})]})}function o({paused:a=[],onResume:d,onResumeAll:e,disabled:f}){let[i,j]=(0,c.useState)(!1);if(!a.length)return null;let l=a.filter(a=>a.legacy).length,m=i?a:a.slice(0,8);return(0,b.jsxs)("div",{style:{borderRadius:8,border:g,background:"rgba(255,255,255,0.03)"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"10px 14px",borderBottom:g,flexWrap:"wrap"},children:[(0,b.jsxs)("div",{style:{flex:1,minWidth:200},children:[(0,b.jsxs)("b",{style:{fontSize:13.5},children:["Paused — ",a.length," ",1===a.length?"list":"lists"," with more to read"]}),(0,b.jsxs)("div",{style:{fontSize:12,color:"#8b9a9a",marginTop:2},children:["Each carries on from the page it stopped at",l?`; ${l} were read to page 10 before whole lists were read`:"","."]})]}),(0,b.jsx)("button",{onClick:e,disabled:f,style:{...p,opacity:f?.4:1,cursor:f?"not-allowed":"pointer",background:f?"rgba(255,255,255,0.06)":"linear-gradient(135deg, #3498DB, #9B59B6)"},children:"Resume all"})]}),(0,b.jsx)("div",{children:m.map(a=>(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 14px",borderBottom:"1px solid rgba(255,255,255,0.04)"},children:[(0,b.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:h[a.tier]||"#667",flexShrink:0}}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsx)("div",{style:{fontSize:13,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.name}),(0,b.jsxs)("div",{style:{fontSize:11.5,color:"#8b9a9a"},children:["Read to page ",a.pagesRead," · carries on at ",a.nextPage,a.at?` \xb7 ${k(a.at)}`:"",a.unclear>=2?" · came back unclear twice, so it waits at the back of Resume all":""]})]}),(0,b.jsx)("button",{onClick:()=>d(a),disabled:f,style:{...p,padding:"6px 12px",fontSize:12,opacity:f?.4:1,cursor:f?"not-allowed":"pointer"},children:"Resume"})]},a.id))}),a.length>8&&(0,b.jsx)("button",{onClick:()=>j(!i),style:{...q,padding:"10px 14px"},children:i?"Show fewer":`Show all ${a.length}`})]})}let p={padding:"8px 14px",borderRadius:7,fontSize:13,fontWeight:700,cursor:"pointer",border:g,background:"rgba(255,255,255,0.08)",color:"#fff"},q={background:"none",border:"none",color:"#8fb8d6",cursor:"pointer",fontSize:12.5,fontWeight:600,padding:0},r={padding:"6px 8px",borderRadius:6,fontSize:12.5,fontWeight:600,background:"rgba(255,255,255,0.08)",color:"#fff",border:g},s="1px solid rgba(255,255,255,0.1)";function t(){let[a,d]=(0,c.useState)(null),[e,f]=(0,c.useState)(null),[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(null);async function m(a){h(a),j(null);try{let b=await fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:a})}),c=await b.json();if(!b.ok){j(c.error||"Something went wrong."),c.dirty&&f({dirty:c.dirty});return}"check"===a?f(c):(l(c),f(null))}catch(a){j(a.message)}finally{h(null)}}return((0,c.useEffect)(()=>{fetch("/api/update").then(a=>a.json()).then(d).catch(()=>{})},[]),a)?a.installed?(0,b.jsx)(u,{local:a}):!1===a.supported?(0,b.jsxs)(w,{children:[(0,b.jsx)(y,{children:"Updates"}),(0,b.jsx)(z,{children:a.reason})]}):(0,b.jsxs)(w,{children:[(0,b.jsx)(y,{children:"Updates"}),k?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(z,{children:["Updated to ",(0,b.jsx)(A,{children:k.sha})," — “",k.subject,"”."]}),(0,b.jsx)(z,{style:{color:k.needsRestart?"#FFD700":void 0},children:k.needsRestart?"Stop the app in your terminal and start it again — this update changed how it starts.":"The page will pick up most changes on its own. Restart the app if anything looks odd."})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(z,{children:["You are on ",(0,b.jsx)(A,{children:a.sha})," — “",a.subject,"”."]}),e&&0===e.behind&&(0,b.jsx)(x,{ok:!0,children:"You’re up to date."}),e&&e.behind>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(z,{style:{color:"#00ff88"},children:[e.behind," update",1===e.behind?"":"s"," available."]}),(0,b.jsx)("pre",{style:v,children:e.commits.join("\n")})]}),e?.dirty?.length>0&&(0,b.jsxs)(z,{children:["Changed files here:"," ",(0,b.jsx)(A,{children:e.dirty.join(", ")}),". Commit or discard them first — this will not throw away your work."]}),(0,b.jsxs)("div",{style:{display:"flex",gap:10,marginTop:12,flexWrap:"wrap"},children:[(0,b.jsx)(B,{onClick:()=>m("check"),disabled:!!g,children:"check"===g?"Checking…":"Check for updates"}),e?.behind>0&&(0,b.jsx)(B,{onClick:()=>m("pull"),disabled:!!g,primary:!0,children:"pull"===g?"Updating…":`Install ${e.behind} update${1===e.behind?"":"s"}`})]})]}),i&&(0,b.jsx)(z,{style:{color:"#ff7676"},children:i}),(0,b.jsxs)(z,{style:{fontSize:12,color:"#667",marginTop:12},children:["Nothing is checked automatically and nothing about you is sent — this runs the same ",(0,b.jsx)(A,{children:"git fetch"})," and ",(0,b.jsx)(A,{children:"git pull"})," you would type yourself."]})]}):null}function u({local:a}){let[d,e]=(0,c.useState)(!1),[f,g]=(0,c.useState)(null),[h,i]=(0,c.useState)(null),[j,k]=(0,c.useState)(!1),[l,m]=(0,c.useState)(null);async function n(){e(!0),g(null),i(null);try{let a=await fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check-release"})}),b=await a.json();a.ok?(g(b),m(new Date)):i(b.error||"Could not check.")}catch(a){i(a.message)}finally{e(!1)}}async function o(){try{await navigator.clipboard.writeText(a.command),k(!0),setTimeout(()=>k(!1),1600)}catch{i("Could not copy — select the line and copy it by hand.")}}(0,c.useEffect)(()=>{"updates"!==new URLSearchParams(window.location.search).get("check")||(document.getElementById("updates")?.scrollIntoView({block:"center"}),n().then(()=>document.getElementById("updates")?.scrollIntoView({block:"end",behavior:"smooth"})),window.history.replaceState(null,"",window.location.pathname))},[]);let p="mac-app"===a.kind?"Paste this into Terminal. It closes this app, puts the new version in its place and opens it. Your network stays where it is.":"source"===a.kind?"Stop the app (Ctrl-C), then run this in the six-degrees folder. It fetches the newest code, builds it and starts it again. Your network stays where it is.":"Stop this copy first (Ctrl-C in the terminal it runs in), then run this to start the newest version. Your network stays where it is.";return(0,b.jsxs)(w,{children:[(0,b.jsx)(y,{children:"Updates"}),(0,b.jsxs)(z,{children:["You have version ",(0,b.jsx)(A,{children:a.version}),"."]}),f&&!f.latest&&(0,b.jsx)(x,{children:"No release has been published yet."}),f?.latest&&!f.newer&&(0,b.jsxs)(x,{ok:!0,children:["You’re up to date: ",f.latest.version," is the newest version.",l&&(0,b.jsxs)("span",{style:{color:"#8b9a9a"},children:[" Checked at ",l.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"}),"."]})]}),f?.newer&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(z,{style:{color:"#00ff88"},children:["Version ",f.latest.version," is available."]}),(0,b.jsx)(z,{children:p}),(0,b.jsx)("pre",{style:v,children:a.command}),(0,b.jsxs)("div",{style:{display:"flex",gap:10,marginTop:10,flexWrap:"wrap",alignItems:"center"},children:[(0,b.jsx)(B,{onClick:o,primary:!0,children:j?"Copied":"Copy"}),f.latest.url&&(0,b.jsx)("a",{href:f.latest.url,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",fontSize:13.5},children:"What changed →"})]})]}),!f?.newer&&(0,b.jsx)("div",{style:{marginTop:12},children:(0,b.jsx)(B,{onClick:n,disabled:d,children:d?"Checking…":f?"Check again":"Check for updates"})}),h&&(0,b.jsx)(z,{style:{color:"#ff7676"},children:h}),(0,b.jsx)(z,{style:{fontSize:12,color:"#667",marginTop:12},children:"Nothing is checked automatically. The button asks GitHub for the newest version number and nothing about you is sent."})]})}let v={background:"rgba(0,0,0,0.45)",border:s,borderRadius:8,padding:12,margin:"8px 0 0",fontSize:12,lineHeight:1.7,color:"#b9c6c6",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",maxHeight:180,overflow:"auto"};function w({children:a}){return(0,b.jsx)("div",{id:"updates",style:{marginTop:32,paddingTop:24,borderTop:s},children:a})}function x({children:a,ok:c}){return(0,b.jsxs)("div",{role:"status",style:{marginTop:10,padding:"10px 14px",borderRadius:8,fontSize:13.5,lineHeight:1.6,color:c?"#00ff88":"#e8e8ee",background:c?"rgba(0,255,136,0.08)":"rgba(255,255,255,0.05)",border:`1px solid ${c?"rgba(0,255,136,0.3)":"rgba(255,255,255,0.12)"}`},children:[c&&"✓ ",a]})}function y({children:a}){return(0,b.jsx)("div",{style:{fontSize:15.5,fontWeight:650,marginBottom:6},children:a})}function z({children:a,style:c}){return(0,b.jsx)("div",{style:{fontSize:13.5,color:"#8b9a9a",lineHeight:1.6,marginTop:4,...c},children:a})}function A({children:a}){return(0,b.jsx)("code",{style:{background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4},children:a})}function B({children:a,onClick:c,disabled:d,primary:e}){return(0,b.jsx)("button",{onClick:c,disabled:d,style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:650,color:d?"#667":"#fff",border:s,background:d?"rgba(255,255,255,0.05)":e?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(255,255,255,0.08)",cursor:d?"not-allowed":"pointer"},children:a})}let C="1px solid rgba(255,255,255,0.1)",D={install:"Installing the scanner",login:"Waiting for you to sign in",full:"Scanning your whole network",refresh:"Checking for new connections","auto-bridge":"Mapping 2nd-degree connections","auto-bridge-retry":"Mapping 2nd degree, hidden ones included",resume:"Carrying on with one paused list","resume-all":"Carrying on with every paused list"};function E(){let[a,d]=(0,c.useState)(null),[g,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)(10),[k,m]=(0,c.useState)(["S","A"]),[p,q]=F("six-degrees-bridge-order","newest"),[r,s]=F("six-degrees-bridge-pages-v2",100),[u,v]=F("six-degrees-bridge-finish",!0),[w,x]=(0,c.useState)(null),y=(0,c.useRef)(null),z=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/scraper");d(await a.json())}catch{d(a=>a||{ready:!1,checks:{},log:[]})}},[]);async function A(){x(null),await (0,f.stopScrape)().catch(a=>x(a.message)),z()}async function B(a,b={}){x(null),h(!0);try{let c=await fetch("/api/scraper",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:a,...b})}),d=await c.json();c.ok||x(d.error||"Could not start.")}catch(a){x(a.message)}finally{h(!1),z()}}(0,c.useEffect)(()=>{z();let a=setInterval(z,1500);return()=>clearInterval(a)},[z]),(0,c.useEffect)(()=>{y.current&&(y.current.scrollTop=y.current.scrollHeight)},[a?.log?.length]);let E=a?.checks||{},N=a?.running;a&&E.dependencies;let O=a&&!E.chrome,P=a&&!E.scriptsFound,Q=a?.ready&&!N,R=a?.linkedin,S=!!R?.cooldown,T=Q&&!S,U=a?.network||{first:0,second:0,third:0},V=U.first,W=a&&!N&&null!=a.exitCode&&0!==a.exitCode,X=W?a.failure?.length?a.failure.join("\n"):[...a.log||[]].reverse().find(a=>!/^Stopped \(exit/.test(a)&&!/Warning|warnings\.warn/.test(a)):null;return(0,b.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:[(0,b.jsxs)("header",{style:{padding:"16px 24px",borderBottom:C,display:"flex",alignItems:"center",gap:16},children:[(0,b.jsx)(e.default,{href:"/",style:{display:"flex",alignItems:"center",gap:6,color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:C},children:"← Back to Map"}),(0,b.jsx)("h1",{style:{fontSize:22,fontWeight:700,margin:0,background:"linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Scan your network"})]}),(0,b.jsxs)("div",{style:{maxWidth:720,margin:"0 auto",padding:"32px 24px 64px"},children:[(0,b.jsxs)("p",{style:{color:"#9aa",fontSize:15,lineHeight:1.6,marginTop:0},children:["This reads your own LinkedIn connections in a real Chrome window on this machine and saves them here. Nothing leaves your computer, and you will never be asked for your password — you sign in yourself, once.",!V&&" Three steps and your galaxy appears; each one ticks itself off."]}),V>0&&!N&&(0,b.jsx)(K,{children:(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:14,flexWrap:"wrap"},children:[(0,b.jsxs)("div",{style:{flex:1,minWidth:200},children:[(0,b.jsxs)("b",{children:[V.toLocaleString()," connections"]}),U.second>0&&(0,b.jsxs)(b.Fragment,{children:[", plus ",U.second.toLocaleString()," people in their circles"]}),U.third>0&&(0,b.jsxs)(b.Fragment,{children:[" and ",U.third.toLocaleString()," from company scans"]}),"."," ",(0,b.jsx)("span",{style:{color:"#9aa"},children:"Your galaxy is ready."})]}),(0,b.jsx)(e.default,{href:"/",style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:700,color:"#0a0a1a",textDecoration:"none",background:"linear-gradient(135deg, #FFD700, #FF6B35)"},children:"See your network →"})]})}),W&&(0,b.jsxs)(K,{tone:"bad",children:[(0,b.jsx)("b",{children:"The last run stopped before it finished."}),X&&(0,b.jsx)("div",{style:{marginTop:6,color:"#e8c4c4",whiteSpace:"pre-wrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:12.5},children:X}),(0,b.jsx)("div",{style:{color:"#9aa",marginTop:6},children:"The full log is below."})]}),P&&(0,b.jsxs)(K,{tone:"bad",children:[(0,b.jsx)("b",{children:"Can’t find the scanner files."}),(0,b.jsx)("br",{}),(0,b.jsxs)("span",{style:{color:"#9aa"},children:["Expected ",(0,b.jsx)("code",{style:G,children:"scripts/scrape.py"})," next to the app. If you downloaded a zip, run the app from inside the project folder."]})]}),O&&(0,b.jsxs)(K,{tone:"bad",children:[(0,b.jsx)("b",{children:"Google Chrome isn’t installed."}),(0,b.jsx)("br",{}),(0,b.jsxs)("span",{style:{color:"#9aa"},children:["The scanner drives your real Chrome. Install it from"," ",(0,b.jsx)("a",{href:"https://www.google.com/chrome/",target:"_blank",rel:"noreferrer",style:{color:"#3498DB"},children:"google.com/chrome"}),", then reload this page."]})]}),(0,b.jsx)(I,{n:1,done:!!E.dependencies,title:"Install what the scanner needs",body:E.dependencies?"Installed.":E.python?"One-time, about a minute. Downloads the browser-automation packages.":"Python 3 was not found on this machine. Install it from python.org, then reload.",action:!E.dependencies&&E.python&&(0,b.jsx)(J,{onClick:()=>B("install"),disabled:g||N,children:N&&"install"===a.action?"Installing…":"Install"})}),(0,b.jsx)(I,{n:2,done:!!E.signedIn,title:"Sign into LinkedIn",body:E.signedIn?"Signed in on this machine. If LinkedIn ever asks for a security check, or a scan says you were signed out, open LinkedIn here and finish it by hand.":"Opens a Chrome window. Sign in with your email and password — “Continue with Google” cannot work here, because Google blocks its sign-in inside automated browsers.",action:E.dependencies&&(0,b.jsx)(J,{onClick:()=>B("login"),disabled:g||N,children:N&&"login"===a.action?"Waiting for you…":"Open LinkedIn"})}),(0,b.jsx)(I,{n:3,done:V>0,title:"1st degree — the people you know",body:"The first scan walks your whole connections list, about a minute and a half for 750 people. After that, Check for new only looks at what has been added since.",action:(0,b.jsxs)("div",{style:{display:"flex",gap:10,flexWrap:"wrap"},children:[(0,b.jsx)(J,{onClick:()=>B("full"),disabled:!T,primary:!0,children:N&&"full"===a.action?"Scanning…":"Scan my whole network"}),(0,b.jsx)(J,{onClick:()=>B("refresh"),disabled:!T,children:N&&"refresh"===a.action?"Checking…":"Check for new"})]})}),(0,b.jsx)(I,{n:4,done:!1,title:"2nd degree — the people they know",body:(0,b.jsxs)(b.Fragment,{children:["This is what fills ",(0,b.jsx)("b",{children:"Degrees"})," and ",(0,b.jsx)("b",{children:"Outlink"}),": it opens each of your connections in turn and reads who ",(0,b.jsx)("i",{children:"they"})," know. Most people hide their connections — those are noted and never tried again.",(0,b.jsx)("br",{}),(0,b.jsx)("br",{}),"It is slow on purpose, about two minutes between each person, because this is the part LinkedIn notices. During development a real account was temporarily restricted after roughly ",(0,b.jsx)("b",{children:"19 people in one sitting"}),". Run a batch, leave it for a day, run another — and stop the moment LinkedIn mentions unusual activity. It always picks up where it left off: anyone still without a mapped circle, in the order you choose below — your newest connections first, or highest tier first. Each person’s list is read to the end, saving every 10 pages, and a read that is stopped carries on from the same page next time."]}),action:(0,b.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[(0,b.jsx)(l,{cooldown:R?.cooldown,disabled:g,onLift:()=>B("lift-cooldown")}),(0,b.jsx)(n,{li:R,disabled:g,onSetLimits:a=>B("set-limits",a)}),"score"===p&&(0,b.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,b.jsx)("span",{style:{fontSize:12,color:"#8b9a9a"},children:"Work through"}),["S","A","B","C","D"].map(a=>{let c=k.includes(a);return(0,b.jsx)("button",{onClick:()=>m(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a]),disabled:N,style:{width:30,height:28,borderRadius:7,fontSize:12,fontWeight:700,cursor:N?"not-allowed":"pointer",border:C,background:c?"rgba(52,152,219,0.22)":"rgba(255,255,255,0.05)",color:c?"#cfe6f7":"#667"},children:a},a)}),(0,b.jsx)("span",{style:{fontSize:11.5,color:"#667"},children:k.length?"":"pick at least one"})]}),"newest"===p&&(0,b.jsxs)("div",{style:{fontSize:12,color:"#8b9a9a",lineHeight:1.6},children:["Goes by the date you connected, newest first, across every tier. Run"," ",(0,b.jsx)("b",{children:"Check for new"})," first so your latest connections are in the list."]}),(0,b.jsxs)("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center"},children:[(0,b.jsx)("span",{style:{fontSize:12,color:"#8b9a9a"},children:"Start with"}),(0,b.jsxs)("select",{value:p,onChange:a=>q(a.target.value),disabled:N,style:H,children:[(0,b.jsx)("option",{value:"newest",children:"Newest connections first"}),(0,b.jsx)("option",{value:"score",children:"Highest tier first"})]}),(0,b.jsx)("span",{style:{fontSize:12,color:"#8b9a9a"},children:"Read up to"}),(0,b.jsxs)("select",{value:r,onChange:a=>s(Number(a.target.value)),disabled:N,style:H,children:[(0,b.jsx)("option",{value:100,children:"every page, to the end of their list"}),(0,b.jsx)("option",{value:50,children:"50 pages each"}),(0,b.jsx)("option",{value:25,children:"25 pages each"}),(0,b.jsx)("option",{value:10,children:"10 pages (~100 people) each"})]})]}),(0,b.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"center",fontSize:12.5,color:"#cfd8d8",cursor:N?"not-allowed":"pointer"},children:[(0,b.jsx)("input",{type:"checkbox",checked:u,onChange:a=>v(a.target.checked),disabled:N}),"Also finish people already mapped, from the page each one stopped at"]}),(0,b.jsxs)("div",{style:{fontSize:12,color:"#FFD700",lineHeight:1.6},children:["Every page is a LinkedIn search, so it rests 20 seconds before each one and a minute after every 10, and a long list can take"," ",r>=100?"about 55 minutes a person":`about ${Math.max(5,Math.round(.55*r))} minutes a person`,". LinkedIn shows 100 pages of anyone’s connections at most. Free accounts have a monthly search limit: if LinkedIn says it has been reached, the scan saves what it read and stops, and carries on from that page next time. Keep batches small."]}),(0,b.jsxs)("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center"},children:[(0,b.jsx)(J,{onClick:()=>B("auto-bridge",{maxBridges:i,tiers:"score"===p?k:[],order:p,maxPages:r,deeper:u}),disabled:!T||"score"===p&&!k.length,primary:!0,children:N&&"auto-bridge"===a.action?"Mapping…":"Map 2nd degree"}),(0,b.jsxs)("select",{value:i,onChange:a=>j(Number(a.target.value)),disabled:N,style:H,children:[(0,b.jsx)("option",{value:5,children:"5 people"}),(0,b.jsx)("option",{value:10,children:"10 people"}),(0,b.jsx)("option",{value:25,children:"25 people"}),(0,b.jsx)("option",{value:0,children:"everyone — not advised"})]}),(0,b.jsx)(J,{onClick:()=>B("auto-bridge-retry",{maxBridges:i,tiers:"score"===p?k:[],order:p,maxPages:r,deeper:u}),disabled:!T||"score"===p&&!k.length,children:"Retry hidden ones"})]}),(0,b.jsx)(o,{paused:a?.paused||[],disabled:!T,onResume:a=>B("resume",{id:a.id}),onResumeAll:()=>B("resume-all",{maxBridges:i})})]})}),N&&(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginTop:20,padding:"14px 16px",borderRadius:8,background:"rgba(255,255,255,0.05)",border:C},children:[(0,b.jsx)(M,{}),(0,b.jsxs)("div",{style:{flex:1,fontSize:13.5},children:[(0,b.jsx)("b",{children:D[a.action]||"Working"}),a.progress&&(0,b.jsx)(L,{p:a.progress,action:a.action}),(0,b.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5,marginTop:2},children:"Stopping closes the browser cleanly and keeps everything found so far."})]}),(0,b.jsx)(J,{onClick:A,tone:"bad",children:"Stop"})]}),w&&(0,b.jsx)(K,{tone:"bad",children:w}),a?.log?.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,margin:"28px 0 8px",fontSize:12,color:"#788",textTransform:"uppercase",letterSpacing:.6},children:[N&&(0,b.jsx)(M,{}),N?"Working":"Last run"]}),(0,b.jsx)("pre",{ref:y,style:{background:"rgba(0,0,0,0.45)",border:C,borderRadius:8,padding:14,maxHeight:280,overflow:"auto",margin:0,fontSize:12.5,lineHeight:1.7,color:"#b9c6c6",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:a.log.join("\n")})]}),(0,b.jsx)(t,{}),(0,b.jsxs)("p",{style:{color:"#667",fontSize:12.5,lineHeight:1.7,marginTop:32},children:["Automating LinkedIn may go against its User Agreement, and accounts have been restricted for it. This runs locally against your own account, at your own risk. LinkedIn’s own CSV export is the supported route and needs none of this —"," ",(0,b.jsx)(e.default,{href:"/import",style:{color:"#3498DB"},children:"import a CSV instead"}),"."]})]}),(0,b.jsx)("style",{children:`@keyframes spin { to { transform: rotate(360deg) } }
2
+ @keyframes slide { 0% { transform: translateX(-100%) } 100% { transform: translateX(300%) } }`})]})}function F(a,b){let[d,e]=(0,c.useState)(b);return(0,c.useEffect)(()=>{try{let b=localStorage.getItem(a);null!==b&&e(JSON.parse(b))}catch{}},[a]),[d,b=>{e(b);try{localStorage.setItem(a,JSON.stringify(b))}catch{}}]}let G={background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4},H={padding:"9px 10px",borderRadius:7,fontSize:13.5,fontWeight:600,background:"rgba(255,255,255,0.08)",color:"#fff",border:C};function I({n:a,done:c,title:d,body:e,action:f}){return(0,b.jsxs)("div",{style:{display:"flex",gap:16,padding:"20px 0",borderBottom:C,alignItems:"flex-start"},children:[(0,b.jsx)("div",{style:{flexShrink:0,width:28,height:28,borderRadius:"50%",display:"grid",placeItems:"center",fontSize:13,fontWeight:700,background:c?"rgba(0,255,136,0.15)":"rgba(255,255,255,0.08)",color:c?"#00ff88":"#889",border:`1px solid ${c?"rgba(0,255,136,0.4)":"rgba(255,255,255,0.14)"}`},children:c?"✓":a}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsx)("div",{style:{fontSize:15.5,fontWeight:650,marginBottom:4},children:d}),(0,b.jsx)("div",{style:{fontSize:13.5,color:"#8b9a9a",lineHeight:1.6,marginBottom:12*!!f},children:e}),f]})]})}function J({children:a,onClick:c,disabled:d,primary:e,tone:f}){return(0,b.jsx)("button",{onClick:c,disabled:d,style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:650,color:d?"#667":"#fff",background:d?"rgba(255,255,255,0.05)":"bad"===f?"rgba(255,80,80,0.15)":e?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(255,255,255,0.08)",border:C,cursor:d?"not-allowed":"pointer"},children:a})}function K({children:a,tone:c}){return(0,b.jsx)("div",{style:{margin:"16px 0",padding:"14px 16px",borderRadius:8,fontSize:13.5,lineHeight:1.6,background:"bad"===c?"rgba(255,80,80,0.08)":"rgba(255,255,255,0.05)",border:`1px solid ${"bad"===c?"rgba(255,80,80,0.3)":"rgba(255,255,255,0.12)"}`},children:a})}function L({p:a,action:c}){let d;if("saving"===a.kind)return(0,b.jsxs)("div",{style:{margin:"8px 0 6px"},children:[(0,b.jsx)("div",{role:"progressbar","aria-label":"Saving",style:{height:8,borderRadius:4,overflow:"hidden",background:"rgba(255,255,255,0.08)",marginBottom:6},children:(0,b.jsx)("div",{style:{width:"35%",height:"100%",borderRadius:4,background:"linear-gradient(90deg, #9B59B6, #3498DB)",animation:"slide 1.2s ease-in-out infinite"}})}),(0,b.jsx)("div",{style:{fontSize:12.5,color:"#cfe6f7"},children:"Saving to your network and fetching photos — this can take a minute or two."})]});let e=Math.max(0,Math.min(100,Math.round(a.done/a.total*100)));return d="batch"===a.kind?`Person ${a.current} of ${a.total}`:"refresh"===c?`Looked at ${a.done.toLocaleString()} so far — stops once it reaches people already saved`:`${a.done.toLocaleString()} of ${a.total.toLocaleString()} connections \xb7 ${e}%`,(0,b.jsxs)("div",{style:{margin:"8px 0 6px"},children:["refresh"!==c&&(0,b.jsx)("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":a.total,"aria-valuenow":a.done,"aria-label":d,style:{height:8,borderRadius:4,overflow:"hidden",background:"rgba(255,255,255,0.08)",marginBottom:6},children:(0,b.jsx)("div",{style:{width:`${e}%`,height:"100%",borderRadius:4,background:"linear-gradient(90deg, #9B59B6, #3498DB)",transition:"width 0.6s ease"}})}),(0,b.jsx)("div",{style:{fontSize:12.5,color:"#cfe6f7"},children:d})]})}function M(){return(0,b.jsx)("span",{style:{width:11,height:11,borderRadius:"50%",display:"inline-block",border:"2px solid rgba(255,255,255,0.2)",borderTopColor:"#3498DB",animation:"spin 0.8s linear infinite"}})}a.s(["default",0,function(){return(0,b.jsx)(d.default,{children:(0,b.jsx)(E,{})})}],65375)}];
3
3
 
4
4
  //# sourceMappingURL=app_setup_page_1-282zx.js.map