six-degrees 0.4.3 → 0.4.5

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 (279) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +3 -1
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/prerender-manifest.json +41 -13
  5. package/.next/standalone/.next/routes-manifest.json +12 -0
  6. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.rsc +18 -17
  16. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +18 -17
  17. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +14 -13
  18. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  19. package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/data/export/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/data/import/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/data/restart/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/data/reveal/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/scraper/route.js +1 -1
  38. package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/social/route/app-paths-manifest.json +3 -0
  44. package/.next/standalone/.next/server/app/api/social/route/build-manifest.json +12 -0
  45. package/.next/standalone/.next/server/app/api/social/route/server-reference-manifest.json +4 -0
  46. package/.next/standalone/.next/server/app/api/social/route.js +8 -0
  47. package/.next/standalone/.next/server/app/api/social/route.js.map +5 -0
  48. package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -0
  49. package/.next/standalone/.next/server/app/api/social/route_client-reference-manifest.js +3 -0
  50. package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/import/page.js +1 -1
  56. package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/import.html +1 -1
  59. package/.next/standalone/.next/server/app/import.rsc +22 -21
  60. package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +22 -21
  61. package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +1 -1
  62. package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +16 -15
  63. package/.next/standalone/.next/server/app/index.html +1 -1
  64. package/.next/standalone/.next/server/app/index.rsc +20 -19
  65. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +16 -15
  66. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +20 -19
  67. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  68. package/.next/standalone/.next/server/app/launch/page.js +1 -1
  69. package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/launch.html +2 -2
  72. package/.next/standalone/.next/server/app/launch.rsc +22 -21
  73. package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +22 -21
  74. package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +1 -1
  75. package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +16 -15
  76. package/.next/standalone/.next/server/app/page.js +1 -1
  77. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  78. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/paths/page.js +1 -1
  80. package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
  81. package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/paths.html +1 -1
  83. package/.next/standalone/.next/server/app/paths.rsc +22 -21
  84. package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +22 -21
  85. package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +1 -1
  86. package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +16 -15
  87. package/.next/standalone/.next/server/app/profile/page.js +1 -1
  88. package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
  89. package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/profile.html +1 -1
  91. package/.next/standalone/.next/server/app/profile.rsc +22 -21
  92. package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +22 -21
  93. package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +1 -1
  94. package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +16 -15
  95. package/.next/standalone/.next/server/app/queue/page.js +1 -1
  96. package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/queue.html +1 -1
  99. package/.next/standalone/.next/server/app/queue.rsc +22 -21
  100. package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +22 -21
  101. package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +1 -1
  102. package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +16 -15
  103. package/.next/standalone/.next/server/app/scores/page.js +1 -1
  104. package/.next/standalone/.next/server/app/scores/page.js.nft.json +1 -1
  105. package/.next/standalone/.next/server/app/scores/page_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/scores.html +1 -1
  107. package/.next/standalone/.next/server/app/scores.rsc +22 -21
  108. package/.next/standalone/.next/server/app/scores.segments/_full.segment.rsc +22 -21
  109. package/.next/standalone/.next/server/app/scores.segments/_tree.segment.rsc +1 -1
  110. package/.next/standalone/.next/server/app/scores.segments/scores/__PAGE__.segment.rsc +16 -15
  111. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  112. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  113. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/settings.html +1 -1
  115. package/.next/standalone/.next/server/app/settings.rsc +22 -21
  116. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +22 -21
  117. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  118. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +16 -15
  119. package/.next/standalone/.next/server/app/setup/page.js +1 -1
  120. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  121. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/setup.html +1 -1
  123. package/.next/standalone/.next/server/app/setup.rsc +22 -21
  124. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +22 -21
  125. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +1 -1
  126. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +16 -15
  127. package/.next/standalone/.next/server/app/social/page/app-paths-manifest.json +3 -0
  128. package/.next/standalone/.next/server/app/social/page/build-manifest.json +20 -0
  129. package/.next/standalone/.next/server/app/social/page/next-font-manifest.json +11 -0
  130. package/.next/standalone/.next/server/app/social/page/react-loadable-manifest.json +1 -0
  131. package/.next/standalone/.next/server/app/social/page/server-reference-manifest.json +4 -0
  132. package/.next/standalone/.next/server/app/social/page.js +13 -0
  133. package/.next/standalone/.next/server/app/social/page.js.map +5 -0
  134. package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -0
  135. package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +3 -0
  136. package/.next/standalone/.next/server/app/social.html +1 -0
  137. package/.next/standalone/.next/server/app/social.meta +26 -0
  138. package/.next/standalone/.next/server/app/social.rsc +26 -0
  139. package/.next/standalone/.next/server/app/social.segments/_full.segment.rsc +26 -0
  140. package/.next/standalone/.next/server/app/social.segments/_tree.segment.rsc +4 -0
  141. package/.next/standalone/.next/server/app/social.segments/social/__PAGE__.segment.rsc +30 -0
  142. package/.next/standalone/.next/server/app-paths-manifest.json +3 -1
  143. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljnyho._.js +1 -1
  144. package/.next/standalone/.next/server/chunks/[root-of-the-server]__17kn1mk._.js +8 -0
  145. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0uag-k5._.js → [root-of-the-server]__1dmc7-t._.js} +1 -1
  146. package/.next/standalone/.next/server/chunks/_1_fynia._.js +1 -1
  147. package/.next/standalone/.next/server/chunks/_1itd1o_._.js +1 -1
  148. package/.next/standalone/.next/server/chunks/_1xh07bp._.js +3 -0
  149. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_social_route_actions_1_3c6qn.js +3 -0
  150. package/.next/standalone/.next/server/chunks/lib_db-client_15le7cw.js +1 -1
  151. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16hs8kw._.js +3 -0
  152. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1feicqq._.js +3 -0
  153. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1jeztd-._.js +3 -0
  154. package/.next/standalone/.next/server/chunks/ssr/_005q9n1._.js +3 -0
  155. package/.next/standalone/.next/server/chunks/ssr/_0ezj4e0._.js +3 -0
  156. package/.next/standalone/.next/server/chunks/ssr/_0j4-lc3._.js +3 -0
  157. package/.next/standalone/.next/server/chunks/ssr/{_0hw_qnj._.js → _0wxbq78._.js} +1 -1
  158. package/.next/standalone/.next/server/chunks/ssr/_0xkur4p._.js +3 -0
  159. package/.next/standalone/.next/server/chunks/ssr/_14iv_zy._.js +3 -0
  160. package/.next/standalone/.next/server/chunks/ssr/_15x6q32._.js +3 -0
  161. package/.next/standalone/.next/server/chunks/ssr/{_1cyxocj._.js → _1ap1tu_._.js} +2 -2
  162. package/.next/standalone/.next/server/chunks/ssr/_1mj739k._.js +3 -0
  163. package/.next/standalone/.next/server/chunks/ssr/_212xw8q._.js +3 -0
  164. package/.next/standalone/.next/server/chunks/ssr/_217nddo._.js +3 -0
  165. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_social_page_actions_176i1kl.js +3 -0
  166. package/.next/standalone/.next/server/chunks/ssr/app_0i3fw_m._.js +3 -0
  167. package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +17 -4
  168. package/.next/standalone/.next/server/chunks/ssr/app_paths_page_1ol90m7.js +2 -2
  169. package/.next/standalone/.next/server/chunks/ssr/app_scores_page_09wepvv.js +1 -1
  170. package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +1 -1
  171. package/.next/standalone/.next/server/chunks/ssr/lib_0i8v-s3._.js +3 -0
  172. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_server-async-storage_0t1dato.js +3 -0
  173. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  174. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  175. package/.next/standalone/.next/server/next-font-manifest.js +1 -1
  176. package/.next/standalone/.next/server/next-font-manifest.json +4 -0
  177. package/.next/standalone/.next/server/pages/404.html +1 -1
  178. package/.next/standalone/.next/server/pages/500.html +1 -1
  179. package/.next/standalone/.next/server/prefetch-hints.json +14 -0
  180. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  181. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  182. package/.next/standalone/.next/static/chunks/04a3zockahetx.js +1 -0
  183. package/.next/standalone/.next/static/chunks/{2wwmljnf7yn_5.js → 0a5iadnmt9u9k.js} +1 -1
  184. package/.next/standalone/.next/static/chunks/0g_p4p7oci18u.js +1 -0
  185. package/.next/standalone/.next/static/chunks/0y1yms5kez2f3.js +1 -0
  186. package/.next/standalone/.next/static/chunks/14m1zu-8warte.js +1 -0
  187. package/.next/standalone/.next/static/chunks/1e1n0kkz-psdb.js +1 -0
  188. package/.next/standalone/.next/static/chunks/236f0jtp68j_h.js +1 -0
  189. package/.next/standalone/.next/static/chunks/{1zwjy1mmpkdrg.js → 24m745q_85u34.js} +2 -2
  190. package/.next/standalone/.next/static/chunks/2_zu7rmb8flzl.js +2 -0
  191. package/.next/standalone/.next/static/chunks/38wwtni5e1ec1.js +31 -0
  192. package/.next/standalone/.next/static/chunks/3p_pwu5gx2i9h.js +1 -0
  193. package/.next/{static/chunks/0_3ubivay59bq.js → standalone/.next/static/chunks/3zw8bv7-mc4n6.js} +1 -1
  194. package/.next/standalone/CHANGELOG.md +58 -0
  195. package/.next/standalone/app/api/network/route.js +11 -0
  196. package/.next/standalone/app/api/scraper/route.js +2 -0
  197. package/.next/standalone/app/api/social/route.js +96 -0
  198. package/.next/standalone/app/components/AutoScanButton.js +41 -0
  199. package/.next/standalone/app/components/ChainView.js +7 -0
  200. package/.next/standalone/app/components/FilterPanel.js +6 -0
  201. package/.next/standalone/app/components/ForceGraph.js +257 -39
  202. package/.next/standalone/app/components/GalaxyLab.js +275 -0
  203. package/.next/standalone/app/components/ScanStatusBar.js +22 -8
  204. package/.next/standalone/app/components/SeparationView.js +9 -1
  205. package/.next/standalone/app/components/Sidebar.js +88 -26
  206. package/.next/standalone/app/components/SocialAutoSync.js +34 -0
  207. package/.next/standalone/app/components/settings/NetworkHealthSection.js +85 -0
  208. package/.next/standalone/app/layout.js +3 -0
  209. package/.next/standalone/app/page.js +29 -0
  210. package/.next/standalone/app/scores/page.js +3 -0
  211. package/.next/standalone/app/setup/page.js +1 -1
  212. package/.next/standalone/app/social/page.js +281 -0
  213. package/.next/standalone/lib/experimental-client.js +38 -0
  214. package/.next/standalone/lib/galaxy-export.js +152 -0
  215. package/.next/standalone/lib/galaxy-lab.js +296 -0
  216. package/.next/standalone/lib/insights.js +54 -0
  217. package/.next/standalone/lib/linkedin-export.js +156 -0
  218. package/.next/standalone/lib/network-health.js +42 -0
  219. package/.next/standalone/lib/network.js +1 -0
  220. package/.next/standalone/package-lock.json +2 -2
  221. package/.next/standalone/package.json +1 -1
  222. package/.next/standalone/scripts/scrape.py +118 -2
  223. package/.next/static/chunks/04a3zockahetx.js +1 -0
  224. package/.next/static/chunks/{2wwmljnf7yn_5.js → 0a5iadnmt9u9k.js} +1 -1
  225. package/.next/static/chunks/0g_p4p7oci18u.js +1 -0
  226. package/.next/static/chunks/0y1yms5kez2f3.js +1 -0
  227. package/.next/static/chunks/14m1zu-8warte.js +1 -0
  228. package/.next/static/chunks/1e1n0kkz-psdb.js +1 -0
  229. package/.next/static/chunks/236f0jtp68j_h.js +1 -0
  230. package/.next/static/chunks/{1zwjy1mmpkdrg.js → 24m745q_85u34.js} +2 -2
  231. package/.next/static/chunks/2_zu7rmb8flzl.js +2 -0
  232. package/.next/static/chunks/38wwtni5e1ec1.js +31 -0
  233. package/.next/static/chunks/3p_pwu5gx2i9h.js +1 -0
  234. package/.next/{standalone/.next/static/chunks/0_3ubivay59bq.js → static/chunks/3zw8bv7-mc4n6.js} +1 -1
  235. package/CHANGELOG.md +58 -0
  236. package/lib/experimental-client.js +38 -0
  237. package/lib/galaxy-export.js +152 -0
  238. package/lib/galaxy-lab.js +296 -0
  239. package/lib/insights.js +54 -0
  240. package/lib/linkedin-export.js +156 -0
  241. package/lib/network-health.js +42 -0
  242. package/lib/network.js +1 -0
  243. package/package.json +1 -1
  244. package/scripts/scrape.py +118 -2
  245. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0d3vjsq._.js +0 -3
  246. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0m4vk0b._.js +0 -3
  247. package/.next/standalone/.next/server/chunks/ssr/_012mop3._.js +0 -3
  248. package/.next/standalone/.next/server/chunks/ssr/_01f38ty._.js +0 -3
  249. package/.next/standalone/.next/server/chunks/ssr/_1163x49._.js +0 -3
  250. package/.next/standalone/.next/server/chunks/ssr/_1av11ws._.js +0 -3
  251. package/.next/standalone/.next/server/chunks/ssr/_1gpbbw9._.js +0 -3
  252. package/.next/standalone/.next/server/chunks/ssr/_1ig7em7._.js +0 -3
  253. package/.next/standalone/.next/server/chunks/ssr/_1vpfyd-._.js +0 -3
  254. package/.next/standalone/.next/server/chunks/ssr/_20w06i-._.js +0 -3
  255. package/.next/standalone/.next/server/chunks/ssr/lib_1bn38gs._.js +0 -3
  256. package/.next/standalone/.next/static/chunks/0cuuo2jwc9h94.js +0 -1
  257. package/.next/standalone/.next/static/chunks/0f4ugd6v3ph0-.js +0 -1
  258. package/.next/standalone/.next/static/chunks/0l1568qff0efj.js +0 -1
  259. package/.next/standalone/.next/static/chunks/10ogurbcuf3nq.js +0 -1
  260. package/.next/standalone/.next/static/chunks/1489t7jrjojk_.js +0 -1
  261. package/.next/standalone/.next/static/chunks/1zunq4tk-u3ng.js +0 -1
  262. package/.next/standalone/.next/static/chunks/2p5yt1o9tnxjn.js +0 -2
  263. package/.next/standalone/.next/static/chunks/2pyo4j84prgp6.js +0 -18
  264. package/.next/standalone/.next/static/chunks/3kllnkb3hof1s.js +0 -1
  265. package/.next/static/chunks/0cuuo2jwc9h94.js +0 -1
  266. package/.next/static/chunks/0f4ugd6v3ph0-.js +0 -1
  267. package/.next/static/chunks/0l1568qff0efj.js +0 -1
  268. package/.next/static/chunks/10ogurbcuf3nq.js +0 -1
  269. package/.next/static/chunks/1489t7jrjojk_.js +0 -1
  270. package/.next/static/chunks/1zunq4tk-u3ng.js +0 -1
  271. package/.next/static/chunks/2p5yt1o9tnxjn.js +0 -2
  272. package/.next/static/chunks/2pyo4j84prgp6.js +0 -18
  273. package/.next/static/chunks/3kllnkb3hof1s.js +0 -1
  274. /package/.next/standalone/.next/static/{814ehZBeFO2rUKle7mzX- → 6LINKa6nyesvIEUnLDSck}/_buildManifest.js +0 -0
  275. /package/.next/standalone/.next/static/{814ehZBeFO2rUKle7mzX- → 6LINKa6nyesvIEUnLDSck}/_clientMiddlewareManifest.js +0 -0
  276. /package/.next/standalone/.next/static/{814ehZBeFO2rUKle7mzX- → 6LINKa6nyesvIEUnLDSck}/_ssgManifest.js +0 -0
  277. /package/.next/static/{814ehZBeFO2rUKle7mzX- → 6LINKa6nyesvIEUnLDSck}/_buildManifest.js +0 -0
  278. /package/.next/static/{814ehZBeFO2rUKle7mzX- → 6LINKa6nyesvIEUnLDSck}/_clientMiddlewareManifest.js +0 -0
  279. /package/.next/static/{814ehZBeFO2rUKle7mzX- → 6LINKa6nyesvIEUnLDSck}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- module.exports=[90195,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(37732),f=a.i(23310),g=a.i(58834),h=a.i(42510),i=a.i(36839);a.i(75930);var j=a.i(74365),k=a.i(72243),l=a.i(11366),m=a.i(53877),n=a.i(7656),o=a.i(90017),p=a.i(9282);let q={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},r="1px solid rgba(255,255,255,0.1)",s=[...p.INDUSTRIES,p.UNKNOWN_INDUSTRY];function t(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 u({value:a,onChange:c,options:d}){return(0,b.jsx)("div",{style:{display:"flex",borderRadius:7,overflow:"hidden",border:r},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 v(a,b){return("all"===b.degree||String(a.degree)===b.degree)&&("senior"!==b.seniority||!!(0,p.isSenior)(a.headline))&&("csuite"!==b.seniority||!((0,p.getSeniority)(a.headline).level<6))&&("SA"!==b.tier||"S"===a.tier||"A"===a.tier)}function w({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),q=(0,c.useMemo)(()=>[...a,...d,...e],[a,d,e]),r=(0,c.useMemo)(()=>(0,p.buildCompanyIndex)(q),[q]),t=(0,c.useMemo)(()=>(0,p.companyLinks)(a,d),[a,d]),u=(0,c.useMemo)(()=>{let a=l.trim().toLowerCase(),b=[];for(let c of r.values()){if(j.has(c.industry.key)||a&&!c.name.toLowerCase().includes(a))continue;let d=c.people.filter(a=>v(a,h));d.length&&b.push({...c,shown:d})}return b.sort((a,b)=>b.shown.length-a.shown.length)},[r,h,j,l]),z=(0,c.useMemo)(()=>{let a=new Map(s.map(a=>[a.key,{...a,people:[],companies:new Map}])),b=new Set;for(let c of q){let d=c.profile_url||`id:${c.id}`;if(b.has(d)||(b.add(d),!v(c,h)))continue;let e=(0,p.companyOf)(c),f=e?r.get(e)?.industry||(0,p.industryOf)(e,c.headline):(0,p.industryOf)(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)},[q,r,h]),B=n?.kind==="company"?r.get(n.key):n?.kind==="industry"?z.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)(x,{filters:h,setFilters:i,query:l,setQuery:m,industries:z,hidden:j,setHidden:k,onIndustry:a=>o({kind:"industry",key:a})}),"map"===f?(0,b.jsx)(y,{companies:u,links:t,focus:n,onCompany:a=>o({kind:"company",key:a}),onIndustry:a=>o({kind:"industry",key:a}),onClear:()=>o(null)}):(0,b.jsx)(A,{industries:z,index:r,d1:a,d2:d,onIndustry:a=>o({kind:"industry",key:a}),onCompany:a=>o({kind:"company",key:a})})]}),B&&(0,b.jsx)(C,{focus:n,data:B,index:r,links:t,d1:a,d2:d,filters:h,onClose:()=>o(null),onCompany:a=>o({kind:"company",key:a}),onOpenCompany:g})]})}function x({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:r,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:r,background:"rgba(255,255,255,0.05)",color:"#fff",fontSize:13,minWidth:170}}),(0,b.jsx)(u,{value:a.degree,onChange:a=>j("degree",a),options:[["all","All degrees"],["1","1st"],["2","2nd"],["3","3rd"]]}),(0,b.jsx)(u,{value:a.seniority,onChange:a=>j("seniority",a),options:[["all","Any level"],["senior","Director+"],["csuite","C-suite"]]}),(0,b.jsx)(u,{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 y({companies:a,links:d,focus:e,onCompany:f,onIndustry:g,onClear:h}){let i=(0,c.useRef)(null),{w:o,h:r}=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}(i),[s,u]=(0,c.useState)(null),v=(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+(t(a.name)-.5)*40,y:f.get(a.industry.key).y+(t(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})),i=(0,m.forceSimulation)(g).force("x",(function(a){var b,c,d,e=(0,n.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,n.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,n.default)(+a),g(),f):e},f.x=function(b){return arguments.length?(a="function"==typeof b?b:(0,n.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,n.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,n.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,n.default)(+a),g(),f):e},f.y=function(b){return arguments.length?(a="function"==typeof b?b:(0,n.default)(+b),g(),f):a},f})(a=>f.get(a.co.industry.key).y).strength(.12)).force("collide",(0,j.forceCollide)(a=>a.r+3)).force("charge",(0,l.forceManyBody)().strength(-25)).force("link",(0,k.forceLink)(h).id(a=>a.id).strength(a=>Math.min(.25,.03*a.weight)).distance(60)).stop();for(let a=0;a<320;a++)i.tick();let o=g.flatMap(a=>[a.x-a.r,a.x+a.r]),q=g.flatMap(a=>[a.y-a.r,a.y+a.r]),r=g.length?{x:Math.min(...o)-60,y:Math.min(...q)-40,w:Math.max(...o)-Math.min(...o)+120,h:Math.max(...q)-Math.min(...q)+80}:{x:-300,y:-300,w:600,h:600},s=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:(0,p.industryByKey)(a)}});for(let a of s){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(r.x+r.w,c+b+10);r.x=Math.min(r.x,c-10),r.w=d-r.x;let e=Math.max(r.y+r.h,a.y+12);r.y=Math.min(r.y,a.y-18),r.h=e-r.y}return r.h+=Math.max(60,.1*r.h),{nodes:g,edges:h,box:r,labels:s,cut:Math.max(0,a.length-b.length)}},[a,d]),w=s||(e?.kind==="company"?e.key:null),x=e?.kind==="industry"?e.key:null,z=(0,c.useMemo)(()=>{if(!w)return null;let a=new Set([w]);for(let b of v.edges)b.source.id===w&&a.add(b.target.id),b.target.id===w&&a.add(b.source.id);return a},[w,v]),A=(0,c.useMemo)(()=>new Set(v.nodes.slice(0,28).map(a=>a.id)),[v]);return(0,b.jsxs)("div",{ref:i,style:{flex:1,minHeight:360,position:"relative"},onClick:h,children:[o>0&&(0,b.jsxs)("svg",{width:o,height:r,viewBox:`${v.box.x} ${v.box.y} ${v.box.w} ${v.box.h}`,style:{display:"block"},children:[(0,b.jsx)("g",{children:v.edges.map((a,c)=>{let d=w&&(a.source.id===w||a.target.id===w);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:w?.04:.14,strokeWidth:d?1+Math.log2(1+a.weight):.4+.5*Math.log2(1+a.weight)},c)})}),v.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:x&&x!==a.key?.25:.85,style:{cursor:"pointer"},onClick:b=>{b.stopPropagation(),g(a.key)},children:a.ind.label},a.key)),v.nodes.map(a=>{let c=z&&!z.has(a.id)||x&&a.co.industry.key!==x,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:()=>u(a.id),onMouseLeave:()=>u(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?q.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}),(A.has(a.id)||a.id===w||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.",v.cut?` Showing the 140 largest; ${v.cut} smaller companies are in Industries.`:""]})]})}function z({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 A({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=(0,p.companyOf)(a),e=c?d.get(c)?.industry.key:(0,p.industryOf)(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=>(0,p.isSenior)(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:r,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)(z,{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:r,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:q[k.bridge.tier]||"#ccc"},children:k.bridge.name})," knows ",k.n," here"]})]},a.key)})})})}function B({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:q[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 C({focus:a,data:d,index:e,links:f,d1:g,d2:h,filters:i,onClose:j,onCompany:k,onOpenCompany:l}){let m,n,o,q="company"===a.kind,s=d.people.filter(a=>v(a,i)),t=(0,c.useMemo)(()=>{let a=new Map;for(let b of s){let c=(0,p.getSeniority)(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)},[s]),u=(0,c.useMemo)(()=>q?(0,p.waysInto)(d.name,g,h):null,[q,d,g,h]),w=(0,c.useMemo)(()=>q?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):[],[q,f,d]),x=[...s].sort((a,b)=>(Number(b.power_score)||0)-(Number(a.power_score)||0)).slice(0,6),y=q?d.industry:d,A=s.filter(a=>1===a.degree).length,F=s.filter(a=>2===a.degree).length,G=q?[]:[...d.companies.entries()].sort((a,b)=>b[1]-a[1]).slice(0,10);return(0,b.jsxs)("aside",{style:{width:360,flexShrink:0,borderLeft:r,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:[q?"COMPANY":"INDUSTRY"," ANALYZER"]}),(0,b.jsx)("h2",{style:{margin:"4px 0 6px",fontSize:20},children:q?d.name:d.label}),(0,b.jsxs)("span",{style:{fontSize:11,padding:"2px 8px",borderRadius:10,background:`${y.color}22`,color:y.color},children:[y.label,q?" · inferred":""]}),q&&(0,b.jsx)(E,{name:d.name}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:8,margin:"14px 0"},children:[[A,"you know","#00ff88"],[F,"reachable","#FF6B35"],[s.filter(a=>(0,p.isSenior)(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)(D,{title:"By level",children:t.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)(z,{total:s.length,parts:[[c,"#3498DB"]]}),(0,b.jsx)("span",{style:{color:"#778",textAlign:"right"},children:c})]},a))}),q&&u&&(0,b.jsxs)(D,{title:"Ways in",children:[u.direct.length>0&&(0,b.jsxs)("div",{style:{fontSize:11,color:"#00ff88",margin:"2px 0"},children:["You already know ",u.direct.length," here"]}),(m=new Map(u.bridges.map(({bridge:a,n:b})=>[a.id,b])),n=[...u.direct].sort((a,b)=>(m.get(b.id)||0)-(m.get(a.id)||0)).slice(0,4),o=new Set(u.direct.map(a=>a.id)),(0,b.jsxs)(b.Fragment,{children:[n.map(a=>(0,b.jsx)(B,{p:a,note:m.get(a.id)?`works here \xb7 knows ${m.get(a.id)} here`:`works here \xb7 ${a.headline||""}`},a.id)),u.bridges.filter(({bridge:a})=>!o.has(a.id)).slice(0,5).map(({bridge:a,n:c})=>(0,b.jsx)(B,{p:a,note:`knows ${c} ${1===c?"person":"people"} here`},a.id))]})),!u.direct.length&&!u.bridges.length&&(0,b.jsx)("div",{style:{fontSize:12,color:"#778"},children:"No one you know links here yet."})]}),(0,b.jsx)(D,{title:q?"Most powerful people here":"Most powerful people in this industry",children:x.map(a=>(0,b.jsx)(B,{p:a,note:`${1===a.degree?"you know them":2===a.degree?"2nd degree":"3rd+"} \xb7 ${a.headline||""}`},a.id))}),q&&w.length>0&&(0,b.jsx)(D,{title:"Connected companies",children:(0,b.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap"},children:w.map(a=>(0,b.jsxs)("button",{onClick:()=>k(a.name),style:{padding:"3px 9px",borderRadius:10,border:r,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))})}),!q&&(0,b.jsx)(D,{title:"Companies",children:G.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)(z,{total:G[0][1],parts:[[c,y.color]]}),(0,b.jsx)("span",{style:{color:"#778",textAlign:"right"},children:c})]},a))}),q&&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 D({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 E({name:a}){let{companies:c,setScore:d}=(0,o.useCompanyScores)(),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)(o.ScorePicker,{company:e,onSet:d,compact:!0})})]})}var F=a.i(75857),G=a.i(61782),H=a.i(38246),I=a.i(56377);let J=[["map","Map"],["industries","Industries"],["companies","Companies"]];function K(){let{userId:a}=(0,F.useUser)(),[i,j]=(0,c.useState)([]),[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)([]),[o,q]=(0,c.useState)(!0),[r,s]=(0,c.useState)([]),[t,u]=(0,c.useState)([]),[v,x]=(0,c.useState)([]),y=(0,d.useSearchParams)().get("tab"),[z,A]=(0,c.useState)(()=>J.some(([a])=>a===y)?y:"map"),B=(0,d.useRouter)();(0,c.useEffect)(()=>{"scores"===y&&B.replace("/scores#companies")},[y,B]);let[C,D]=(0,c.useState)(0),[E,I]=(0,c.useState)(!1);(0,c.useEffect)(()=>{!g.IS_DEMO&&a&&b();async function b(){let b=(0,h.hasCsvNetwork)()?(0,h.loadCsvNetwork)():null;I(!!b);let c=[],d=[],e=[];if(b)c=b.degree1,d=b.degree2||[];else{let b=await (0,f.loadNetwork)(a);c=b.degree1,d=b.degree2,e=b.degree3}s(c),u(d),x(e||[]);let g={},i=new Set;[...c,...d,...e].forEach(a=>{if(i.has(a.profile_url))return;i.add(a.profile_url);let b=(0,p.companyOf)(a);b&&(g[b]||(g[b]={name:b,d1:0,d2:0,d3:0,sCount:0,aCount:0,people:[]}),1===a.degree?g[b].d1++:2===a.degree?g[b].d2++:g[b].d3++,"S"===a.tier&&g[b].sCount++,"A"===a.tier&&g[b].aCount++,g[b].people.push(a))}),j(Object.values(g).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))),q(!1)}},[a,C]);let[K,M]=(0,c.useState)(!1),[N,O]=(0,c.useState)([]),P=(0,G.default)(),Q=!K&&P.running?(0,e.busyReason)(P):null;function R(a){let b=new Set(r.map(a=>a.profile_url)),c=new Set([...r,...t].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:(0,p.getSeniority)(d.headline),mutualCount:a.filter(a=>b.has(a.profile_url||a.profileUrl)&&a.id!==d.id).length}))}function S(a){l(a),n(R(a.people))}async function T(){if(g.IS_DEMO||E||!k)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{}}M(!0),O(["Checking the scanner..."]);let b=(0,e.notReadyMessage)(await (0,e.scraperStatus)().catch(()=>null));if(b){O([b]),M(!1);return}try{let a=await (0,e.runScrape)("company",{name:k.name,onLog:O});if(0===a.exitCode){O(a=>[...a,"Loading the new people..."]);let a=await fetch(`/api/connections?scanned_company=${encodeURIComponent(k.name)}&limit=500`),b=(await a.json()).connections||[];b.length?(n(R(b)),O(a=>[...a,`${b.length} people at ${k.name}.`])):O(a=>[...a,"Nothing new was found."])}}catch(a){O([a.message||"Failed to start the scan"])}finally{M(!1)}}let U={},V=0;m.forEach(a=>{let b=a.seniority.key;U[b]||(U[b]={...a.seniority,people:[]}),a.connected&&V++;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=r.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;U[b].people.push({...a,likelihood:c,bridgeName:d,xp:e})}),Object.values(U).forEach(a=>a.people.sort((a,b)=>b.likelihood-a.likelihood));let W=Object.values(U).sort((a,b)=>b.level-a.level);return g.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)(H.default,{href:"/",style:{fontSize:13,color:"#888",textDecoration:"none"},children:"← Back to the network"})]}):o?(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)(H.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"}),!k&&(0,b.jsx)("div",{style:{display:"flex",gap:4,marginLeft:8,padding:3,borderRadius:8,background:"rgba(255,255,255,0.05)"},children:J.map(([a,c])=>(0,b.jsx)("button",{onClick:()=>A(a),style:{padding:"5px 12px",borderRadius:6,border:"none",cursor:"pointer",fontSize:12.5,fontWeight:700,background:z===a?"linear-gradient(135deg, #00ff88, #3498DB)":"transparent",color:z===a?"#000":"#aab"},children:c},a))}),k&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{onClick:()=>{l(null),n([])},style:{background:"none",border:"none",color:"#888",cursor:"pointer",fontSize:12},children:"← Companies"}),(0,b.jsx)("span",{style:{fontSize:13,fontWeight:600},children:k.name}),(0,b.jsxs)("span",{style:{fontSize:11,color:"#888"},children:[V,"/",m.length," connected"]}),E?(0,b.jsx)("span",{style:{marginLeft:"auto",fontSize:11,color:"#888"},children:"Scanning needs your own network"}):(0,b.jsx)("button",{onClick:T,disabled:K||!!Q,title:Q?`${Q}. One scan at a time.`:void 0,style:{marginLeft:"auto",padding:"5px 12px",borderRadius:6,border:"none",cursor:K||Q?"not-allowed":"pointer",background:K||Q?"#333":"rgba(0,255,136,0.15)",color:K||Q?"#555":"#00ff88",fontSize:11,fontWeight:600},children:K?"Scanning...":Q?"Scanner busy":"+ 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"})]})]})}),k||"companies"===z?(0,b.jsx)("div",{style:{flex:1,overflow:"auto",padding:"16px 24px"},children:(0,b.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:[!k&&(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 ",r.length+t.length," people in your network."]}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:i.slice(0,60).map(a=>(0,b.jsxs)("button",{onClick:()=>S(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))})]}),K&&(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:N.map((a,c)=>(0,b.jsx)("div",{children:a},c))})]}),k&&W.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)(L,{p:c,level:a,companyPeople:m,d1Data:r,selectedCompany:k},c.id||d))]},a.key))]})}):(0,b.jsx)(w,{d1:r,d2:t,d3:v,tab:z,onOpenCompany:a=>S({...a,sCount:a.S,aCount:a.A})})]})}function L({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=>(0,p.getSeniority)(b.headline).level>a.seniority.level&&!j.has(b.profile_url||b.profileUrl)),l=e.filter(b=>(0,p.getSeniority)(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?"✓":"🔒"}),(0,I.localPhoto)(a.profile_image_url||a.imageUrl)?(0,b.jsx)("img",{src:(0,I.localPhoto)(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)(i.default,{children:(0,b.jsx)(c.Suspense,{children:(0,b.jsx)(K,{})})})}],90195)}];
1
+ module.exports=[90195,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(37732),f=a.i(23310),g=a.i(58834),h=a.i(42510),i=a.i(36839);a.i(75930);var j=a.i(74365),k=a.i(72243),l=a.i(11366),m=a.i(53877),n=a.i(54433),o=a.i(64110),p=a.i(90017),q=a.i(9282);let r={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},s="1px solid rgba(255,255,255,0.1)",t=[...q.INDUSTRIES,q.UNKNOWN_INDUSTRY];function u(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 v({value:a,onChange:c,options:d}){return(0,b.jsx)("div",{style:{display:"flex",borderRadius:7,overflow:"hidden",border:s},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 w(a,b){return("all"===b.degree||String(a.degree)===b.degree)&&("senior"!==b.seniority||!!(0,q.isSenior)(a.headline))&&("csuite"!==b.seniority||!((0,q.getSeniority)(a.headline).level<6))&&("SA"!==b.tier||"S"===a.tier||"A"===a.tier)}function x({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]),r=(0,c.useMemo)(()=>(0,q.buildCompanyIndex)(p),[p]),s=(0,c.useMemo)(()=>(0,q.companyLinks)(a,d),[a,d]),u=(0,c.useMemo)(()=>{let a=l.trim().toLowerCase(),b=[];for(let c of r.values()){if(j.has(c.industry.key)||a&&!c.name.toLowerCase().includes(a))continue;let d=c.people.filter(a=>w(a,h));d.length&&b.push({...c,shown:d})}return b.sort((a,b)=>b.shown.length-a.shown.length)},[r,h,j,l]),v=(0,c.useMemo)(()=>{let a=new Map(t.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),!w(c,h)))continue;let e=(0,q.companyOf)(c),f=e?r.get(e)?.industry||(0,q.industryOf)(e,c.headline):(0,q.industryOf)(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,r,h]),A=n?.kind==="company"?r.get(n.key):n?.kind==="industry"?v.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)(y,{filters:h,setFilters:i,query:l,setQuery:m,industries:v,hidden:j,setHidden:k,onIndustry:a=>o({kind:"industry",key:a})}),"map"===f?(0,b.jsx)(z,{companies:u,links:s,focus:n,onCompany:a=>o({kind:"company",key:a}),onIndustry:a=>o({kind:"industry",key:a}),onClear:()=>o(null)}):(0,b.jsx)(B,{industries:v,index:r,d1:a,d2:d,onIndustry:a=>o({kind:"industry",key:a}),onCompany:a=>o({kind:"company",key:a})})]}),A&&(0,b.jsx)(D,{focus:n,data:A,index:r,links:s,d1:a,d2:d,filters:h,onClose:()=>o(null),onCompany:a=>o({kind:"company",key:a}),onOpenCompany:g})]})}function y({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:s,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:s,background:"rgba(255,255,255,0.05)",color:"#fff",fontSize:13,minWidth:170}}),(0,b.jsx)(v,{value:a.degree,onChange:a=>j("degree",a),options:[["all","All degrees"],["1","1st"],["2","2nd"],["3","3rd"]]}),(0,b.jsx)(v,{value:a.seniority,onChange:a=>j("seniority",a),options:[["all","Any level"],["senior","Director+"],["csuite","C-suite"]]}),(0,b.jsx)(v,{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 z({companies:a,links:d,focus:e,onCompany:f,onIndustry:g,onClear:h}){let i=(0,c.useRef)(null),{w:p,h:s}=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}(i),[t,v]=(0,c.useState)(null),w=(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+(u(a.name)-.5)*40,y:f.get(a.industry.key).y+(u(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})),i=(0,m.forceSimulation)(g).force("x",(0,n.forceX)(a=>f.get(a.co.industry.key).x).strength(.12)).force("y",(0,o.forceY)(a=>f.get(a.co.industry.key).y).strength(.12)).force("collide",(0,j.forceCollide)(a=>a.r+3)).force("charge",(0,l.forceManyBody)().strength(-25)).force("link",(0,k.forceLink)(h).id(a=>a.id).strength(a=>Math.min(.25,.03*a.weight)).distance(60)).stop();for(let a=0;a<320;a++)i.tick();let p=g.flatMap(a=>[a.x-a.r,a.x+a.r]),r=g.flatMap(a=>[a.y-a.r,a.y+a.r]),s=g.length?{x:Math.min(...p)-60,y:Math.min(...r)-40,w:Math.max(...p)-Math.min(...p)+120,h:Math.max(...r)-Math.min(...r)+80}:{x:-300,y:-300,w:600,h:600},t=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:(0,q.industryByKey)(a)}});for(let a of t){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(s.x+s.w,c+b+10);s.x=Math.min(s.x,c-10),s.w=d-s.x;let e=Math.max(s.y+s.h,a.y+12);s.y=Math.min(s.y,a.y-18),s.h=e-s.y}return s.h+=Math.max(60,.1*s.h),{nodes:g,edges:h,box:s,labels:t,cut:Math.max(0,a.length-b.length)}},[a,d]),x=t||(e?.kind==="company"?e.key:null),y=e?.kind==="industry"?e.key:null,A=(0,c.useMemo)(()=>{if(!x)return null;let a=new Set([x]);for(let b of w.edges)b.source.id===x&&a.add(b.target.id),b.target.id===x&&a.add(b.source.id);return a},[x,w]),B=(0,c.useMemo)(()=>new Set(w.nodes.slice(0,28).map(a=>a.id)),[w]);return(0,b.jsxs)("div",{ref:i,style:{flex:1,minHeight:360,position:"relative"},onClick:h,children:[p>0&&(0,b.jsxs)("svg",{width:p,height:s,viewBox:`${w.box.x} ${w.box.y} ${w.box.w} ${w.box.h}`,style:{display:"block"},children:[(0,b.jsx)("g",{children:w.edges.map((a,c)=>{let d=x&&(a.source.id===x||a.target.id===x);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:x?.04:.14,strokeWidth:d?1+Math.log2(1+a.weight):.4+.5*Math.log2(1+a.weight)},c)})}),w.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:y&&y!==a.key?.25:.85,style:{cursor:"pointer"},onClick:b=>{b.stopPropagation(),g(a.key)},children:a.ind.label},a.key)),w.nodes.map(a=>{let c=A&&!A.has(a.id)||y&&a.co.industry.key!==y,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:()=>v(a.id),onMouseLeave:()=>v(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?r.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}),(B.has(a.id)||a.id===x||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.",w.cut?` Showing the 140 largest; ${w.cut} smaller companies are in Industries.`:""]})]})}function A({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 B({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=(0,q.companyOf)(a),e=c?d.get(c)?.industry.key:(0,q.industryOf)(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=>(0,q.isSenior)(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:s,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)(A,{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:s,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:r[k.bridge.tier]||"#ccc"},children:k.bridge.name})," knows ",k.n," here"]})]},a.key)})})})}function C({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:r[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 D({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,r=d.people.filter(a=>w(a,i)),t=(0,c.useMemo)(()=>{let a=new Map;for(let b of r){let c=(0,q.getSeniority)(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)},[r]),u=(0,c.useMemo)(()=>p?(0,q.waysInto)(d.name,g,h):null,[p,d,g,h]),v=(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]),x=[...r].sort((a,b)=>(Number(b.power_score)||0)-(Number(a.power_score)||0)).slice(0,6),y=p?d.industry:d,z=r.filter(a=>1===a.degree).length,B=r.filter(a=>2===a.degree).length,G=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:s,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:`${y.color}22`,color:y.color},children:[y.label,p?" · inferred":""]}),p&&(0,b.jsx)(F,{name:d.name}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:8,margin:"14px 0"},children:[[z,"you know","#00ff88"],[B,"reachable","#FF6B35"],[r.filter(a=>(0,q.isSenior)(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)(E,{title:"By level",children:t.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)(A,{total:r.length,parts:[[c,"#3498DB"]]}),(0,b.jsx)("span",{style:{color:"#778",textAlign:"right"},children:c})]},a))}),p&&u&&(0,b.jsxs)(E,{title:"Ways in",children:[u.direct.length>0&&(0,b.jsxs)("div",{style:{fontSize:11,color:"#00ff88",margin:"2px 0"},children:["You already know ",u.direct.length," here"]}),(m=new Map(u.bridges.map(({bridge:a,n:b})=>[a.id,b])),n=[...u.direct].sort((a,b)=>(m.get(b.id)||0)-(m.get(a.id)||0)).slice(0,4),o=new Set(u.direct.map(a=>a.id)),(0,b.jsxs)(b.Fragment,{children:[n.map(a=>(0,b.jsx)(C,{p:a,note:m.get(a.id)?`works here \xb7 knows ${m.get(a.id)} here`:`works here \xb7 ${a.headline||""}`},a.id)),u.bridges.filter(({bridge:a})=>!o.has(a.id)).slice(0,5).map(({bridge:a,n:c})=>(0,b.jsx)(C,{p:a,note:`knows ${c} ${1===c?"person":"people"} here`},a.id))]})),!u.direct.length&&!u.bridges.length&&(0,b.jsx)("div",{style:{fontSize:12,color:"#778"},children:"No one you know links here yet."})]}),(0,b.jsx)(E,{title:p?"Most powerful people here":"Most powerful people in this industry",children:x.map(a=>(0,b.jsx)(C,{p:a,note:`${1===a.degree?"you know them":2===a.degree?"2nd degree":"3rd+"} \xb7 ${a.headline||""}`},a.id))}),p&&v.length>0&&(0,b.jsx)(E,{title:"Connected companies",children:(0,b.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap"},children:v.map(a=>(0,b.jsxs)("button",{onClick:()=>k(a.name),style:{padding:"3px 9px",borderRadius:10,border:s,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)(E,{title:"Companies",children:G.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)(A,{total:G[0][1],parts:[[c,y.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 E({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 F({name:a}){let{companies:c,setScore:d}=(0,p.useCompanyScores)(),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)(p.ScorePicker,{company:e,onSet:d,compact:!0})})]})}var G=a.i(75857),H=a.i(61782),I=a.i(38246),J=a.i(56377);let K=[["map","Map"],["industries","Industries"],["companies","Companies"]];function L(){let{userId:a}=(0,G.useUser)(),[i,j]=(0,c.useState)([]),[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)(!0),[r,s]=(0,c.useState)([]),[t,u]=(0,c.useState)([]),[v,w]=(0,c.useState)([]),y=(0,d.useSearchParams)().get("tab"),[z,A]=(0,c.useState)(()=>K.some(([a])=>a===y)?y:"map"),B=(0,d.useRouter)();(0,c.useEffect)(()=>{"scores"===y&&B.replace("/scores#companies")},[y,B]);let[C,D]=(0,c.useState)(0),[E,F]=(0,c.useState)(!1);(0,c.useEffect)(()=>{!g.IS_DEMO&&a&&b();async function b(){let b=(0,h.hasCsvNetwork)()?(0,h.loadCsvNetwork)():null;F(!!b);let c=[],d=[],e=[];if(b)c=b.degree1,d=b.degree2||[];else{let b=await (0,f.loadNetwork)(a);c=b.degree1,d=b.degree2,e=b.degree3}s(c),u(d),w(e||[]);let g={},i=new Set;[...c,...d,...e].forEach(a=>{if(i.has(a.profile_url))return;i.add(a.profile_url);let b=(0,q.companyOf)(a);b&&(g[b]||(g[b]={name:b,d1:0,d2:0,d3:0,sCount:0,aCount:0,people:[]}),1===a.degree?g[b].d1++:2===a.degree?g[b].d2++:g[b].d3++,"S"===a.tier&&g[b].sCount++,"A"===a.tier&&g[b].aCount++,g[b].people.push(a))}),j(Object.values(g).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))),p(!1)}},[a,C]);let[J,L]=(0,c.useState)(!1),[N,O]=(0,c.useState)([]),P=(0,H.default)(),Q=!J&&P.running?(0,e.busyReason)(P):null;function R(a){let b=new Set(r.map(a=>a.profile_url)),c=new Set([...r,...t].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:(0,q.getSeniority)(d.headline),mutualCount:a.filter(a=>b.has(a.profile_url||a.profileUrl)&&a.id!==d.id).length}))}function S(a){l(a),n(R(a.people))}async function T(){if(g.IS_DEMO||E||!k)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{}}L(!0),O(["Checking the scanner..."]);let b=(0,e.notReadyMessage)(await (0,e.scraperStatus)().catch(()=>null));if(b){O([b]),L(!1);return}try{let a=await (0,e.runScrape)("company",{name:k.name,onLog:O});if(0===a.exitCode){O(a=>[...a,"Loading the new people..."]);let a=await fetch(`/api/connections?scanned_company=${encodeURIComponent(k.name)}&limit=500`),b=(await a.json()).connections||[];b.length?(n(R(b)),O(a=>[...a,`${b.length} people at ${k.name}.`])):O(a=>[...a,"Nothing new was found."])}}catch(a){O([a.message||"Failed to start the scan"])}finally{L(!1)}}let U={},V=0;m.forEach(a=>{let b=a.seniority.key;U[b]||(U[b]={...a.seniority,people:[]}),a.connected&&V++;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=r.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;U[b].people.push({...a,likelihood:c,bridgeName:d,xp:e})}),Object.values(U).forEach(a=>a.people.sort((a,b)=>b.likelihood-a.likelihood));let W=Object.values(U).sort((a,b)=>b.level-a.level);return g.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)(I.default,{href:"/",style:{fontSize:13,color:"#888",textDecoration:"none"},children:"← Back to the network"})]}):o?(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)(I.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"}),!k&&(0,b.jsx)("div",{style:{display:"flex",gap:4,marginLeft:8,padding:3,borderRadius:8,background:"rgba(255,255,255,0.05)"},children:K.map(([a,c])=>(0,b.jsx)("button",{onClick:()=>A(a),style:{padding:"5px 12px",borderRadius:6,border:"none",cursor:"pointer",fontSize:12.5,fontWeight:700,background:z===a?"linear-gradient(135deg, #00ff88, #3498DB)":"transparent",color:z===a?"#000":"#aab"},children:c},a))}),k&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{onClick:()=>{l(null),n([])},style:{background:"none",border:"none",color:"#888",cursor:"pointer",fontSize:12},children:"← Companies"}),(0,b.jsx)("span",{style:{fontSize:13,fontWeight:600},children:k.name}),(0,b.jsxs)("span",{style:{fontSize:11,color:"#888"},children:[V,"/",m.length," connected"]}),E?(0,b.jsx)("span",{style:{marginLeft:"auto",fontSize:11,color:"#888"},children:"Scanning needs your own network"}):(0,b.jsx)("button",{onClick:T,disabled:J||!!Q,title:Q?`${Q}. One scan at a time.`:void 0,style:{marginLeft:"auto",padding:"5px 12px",borderRadius:6,border:"none",cursor:J||Q?"not-allowed":"pointer",background:J||Q?"#333":"rgba(0,255,136,0.15)",color:J||Q?"#555":"#00ff88",fontSize:11,fontWeight:600},children:J?"Scanning...":Q?"Scanner busy":"+ 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"})]})]})}),k||"companies"===z?(0,b.jsx)("div",{style:{flex:1,overflow:"auto",padding:"16px 24px"},children:(0,b.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:[!k&&(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 ",r.length+t.length," people in your network."]}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:i.slice(0,60).map(a=>(0,b.jsxs)("button",{onClick:()=>S(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))})]}),J&&(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:N.map((a,c)=>(0,b.jsx)("div",{children:a},c))})]}),k&&W.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)(M,{p:c,level:a,companyPeople:m,d1Data:r,selectedCompany:k},c.id||d))]},a.key))]})}):(0,b.jsx)(x,{d1:r,d2:t,d3:v,tab:z,onOpenCompany:a=>S({...a,sCount:a.S,aCount:a.A})})]})}function M({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=>(0,q.getSeniority)(b.headline).level>a.seniority.level&&!j.has(b.profile_url||b.profileUrl)),l=e.filter(b=>(0,q.getSeniority)(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?"✓":"🔒"}),(0,J.localPhoto)(a.profile_image_url||a.imageUrl)?(0,b.jsx)("img",{src:(0,J.localPhoto)(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)(i.default,{children:(0,b.jsx)(c.Suspense,{children:(0,b.jsx)(L,{})})})}],90195)}];
3
3
 
4
4
  //# sourceMappingURL=app_paths_page_1ol90m7.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[94264,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(36839),f=a.i(16874),g=a.i(803),h=a.i(79663),i=a.i(59534),j=a.i(54919),k=a.i(30889),l=a.i(76939);a.i(42510);var m=a.i(31483);let n={lean:"Lean",strong:"Strong"},o=["wheel","touchstart","keydown","pointerdown"],p={1:"1st",2:"2nd",3:"3rd"},q=(a,b,c=`${b}s`)=>`${a.toLocaleString()} ${1===a?b:c}`,r=i.DIRECTORY.filter(a=>"function"===a.kind).map(a=>a.label);function s(a,b,c){let[d,e]=c?["moved","moved"]:["moves","move"];if(!a&&!b)return c?"No one changed tier.":"No one changes tier.";let f=a=>1===a?d:e;return a&&b?`${q(a,"person","people")} ${f(a)} up a tier and ${b.toLocaleString()} ${f(b)} down.`:a?`${q(a,"person","people")} ${f(a)} up a tier.`:`${q(b,"person","people")} ${f(b)} down a tier.`}function t({onSaved:a}={}){let[d,e]=(0,c.useState)(null),[i,l]=(0,c.useState)(null),[p,v]=(0,c.useState)(null),[w,x]=(0,c.useState)(!1),[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)(null),[C,D]=(0,c.useState)({loading:!0}),[E]=(0,c.useState)(()=>null),F=(0,c.useRef)(null),G=(0,c.useRef)(0),H=(0,c.useRef)(!1);function I(a){l(a),z(null),clearTimeout(F.current);let b=++G.current;if((0,h.sameFocus)(a,d))return void v(null);let c=(0,h.focusFingerprint)(a);v({key:c,loading:!0}),F.current=setTimeout(async()=>{try{let d=await fetch("/api/settings/sector-preview",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sectorFocus:a})}),e=await d.json();if(b!==G.current)return;v(d.ok?{key:c,...e}:{key:c,error:e.error||"Could not work out what would change."})}catch{b===G.current&&v({key:c,error:"Could not reach the app to work out what would change."})}},250)}async function J(){var b,c;let d;x(!0),z(null),clearTimeout(F.current),G.current++;let f=await (0,m.saveSettings)({sectorFocus:i});(x(!1),f.settings&&(e(f.settings.sectorFocus),l(f.settings.sectorFocus),v(null)),f.error)?z({tone:"bad",text:f.error}):(z({tone:"ok",text:(b=f.settings.sectorFocus,c=f.effects?.sectorFocus,d=b.sectors.length?`Saved: ${b.sectors.map(a=>(0,j.sectorByKey)(a).label).join(" · ")} (${n[b.strength].toLowerCase()}).`:"Saved: no sector.",c?c.scored?`${d} Rescored your network (${q(c.people??c.scored,"person","people")}). ${s(c.up,c.down,!0)}`:`${d} There's no scanned network yet; it will apply when you scan.`:d)}),a?.())}(0,c.useEffect)(()=>{let a=!1;return fetch("/api/settings").then(a=>a.json().then(b=>a.ok?b:Promise.reject(Error(b.error||"Could not load your sector.")))).then(b=>{if(a)return;let c=b.settings?.sectorFocus||{sectors:[],strength:"lean"};e(c),l(c)}).catch(b=>{a||B(b.message)}),fetch("/api/settings/sector-suggestions").then(a=>a.json().then(b=>a.ok?b:Promise.reject(Error(b.error||"Could not load suggestions.")))).then(b=>{a||D({scored:b.scored,list:b.suggestions||[]})}).catch(b=>{a||D({error:b.message})}),()=>{a=!0,clearTimeout(F.current)}},[]),(0,c.useEffect)(()=>{if(H.current||!i&&!A)return;H.current=!0;let a=document.getElementById("sector");if("#sector"!==window.location.hash||!a)return;let b=()=>a.scrollIntoView({block:"start"});b();let c=new ResizeObserver(b);c.observe(document.body);let d=()=>{for(let a of(c.disconnect(),clearTimeout(e),o))window.removeEventListener(a,d,!0)},e=setTimeout(d,2e3);for(let a of o)window.addEventListener(a,d,{capture:!0,passive:!0});return d},[i,A]);let K=i&&d&&!(0,h.sameFocus)(i,d);return(0,b.jsxs)(f.Section,{id:"sector",title:"Your sector",intro:"Pick up to three sectors you work in. Companies in them count for more when your network is scored, so the people there rank higher.",children:[A&&(0,b.jsx)(f.Status,{tone:"bad",children:A}),!i&&!A&&(0,b.jsx)(f.Body,{children:"Loading…"}),i&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g.default,{sectors:i.sectors,onChange:a=>I({...i,sectors:a}),disabled:w,suggest:C}),(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:8,marginTop:14},children:[(0,b.jsx)("span",{style:{fontSize:13,color:"#8b9a9a"},children:"How much:"}),Object.keys(k.SECTOR_BONUS).map(a=>(0,b.jsxs)("button",{type:"button","aria-pressed":i.strength===a,disabled:w,onClick:()=>I({...i,strength:a}),style:{padding:"5px 12px",borderRadius:7,fontSize:12.5,fontWeight:600,cursor:"pointer",color:i.strength===a?"#fff":"#8b9a9a",background:i.strength===a?"rgba(52,152,219,0.25)":"transparent",border:f.LINE},children:[n[a]," · +",k.SECTOR_BONUS[a]]},a))]}),(0,b.jsx)(f.Body,{style:{fontSize:12.5},children:"Each company in your sectors gets +1 (lean) or +2 (strong) on its score out of 10, never above 10. A company in more than one of your picks still gets it once."}),(0,b.jsx)(u,{preview:K?p:null,draft:i}),(0,b.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:14},children:[(0,b.jsx)(f.Btn,{primary:!0,onClick:J,disabled:!K||w,children:w?"Saving and rescoring…":"Save"}),K&&!w&&(0,b.jsx)(f.Btn,{onClick:()=>I(d),children:"Cancel"}),!K&&i.sectors.length>0&&!w&&(0,b.jsx)(f.Btn,{onClick:()=>I({...i,sectors:[]}),children:"Turn off"})]}),y&&(0,b.jsx)(f.Status,{tone:y.tone,children:y.text}),(0,b.jsxs)("ul",{style:{margin:"16px 0 0",paddingLeft:18,fontSize:12.5,color:"#778",lineHeight:1.7},children:[(0,b.jsx)("li",{children:"Tiers rank how reachable someone is through your network, not the people themselves."}),(0,b.jsxs)("li",{children:["A company score you set on ",(0,b.jsx)("a",{href:"#companies",style:{color:"#3498DB"},children:"Company scores"}),", below, always wins. Your sector never changes it."]}),(0,b.jsx)("li",{children:"If you scan highest tier first, people in your sectors come up sooner. Scanning newest first, the default, doesn’t go by tier."}),(0,b.jsx)("li",{children:"An industry includes its sectors. It counts a company in any of its sectors (Healthcare & Biotech counts a practice that is only in Dental), and a company whose industry the app’s list of well-known companies or the company’s own name gives (Meridian Health). Not one known only from its people’s job titles: a recruiter at Acme Widgets doesn’t make Acme a consulting firm."}),(0,b.jsx)("li",{children:"A narrower sector counts a company when its name says so (Smith Family Dental), it’s a well-known company in that sector, or at least half of the people you know there say so in their headlines (dentist, DDS, orthodontist). The words are a fixed list that comes with the app, the same on every computer. Nothing is sent anywhere."}),(0,b.jsxs)("li",{children:["Some sectors are work every kind of company has: ",r.length>1?`${r.slice(0,-1).join(", ")} and ${r.at(-1)}`:r.join(""),". For those a job title doesn’t count, since a recruiter at Acme Widgets doesn’t make it a recruiting firm. The company’s name does (Acme Staffing, Smith CPA), and so does a kind of firm in a headline (staffing agency, law firm, SaaS)."]}),E&&(0,b.jsxs)("li",{style:{color:"#FFD700"},children:["sample"===E?"The sample network":"The CSV import"," open in this window isn’t changed by this, and isn’t counted in the suggestions. Your sector applies to networks you’ve scanned."]})]})]})]})}function u({preview:a,draft:c}){if(!a||a.key!==(0,h.focusFingerprint)(c))return null;let d={marginTop:12,padding:"10px 14px",borderRadius:8,fontSize:13,lineHeight:1.6,border:f.LINE,background:"rgba(255,255,255,0.03)",color:"#cfd8d8"};if(a.loading)return(0,b.jsx)("div",{style:d,"aria-live":"polite",children:"Working out what would change…"});if(a.error)return(0,b.jsx)(f.Status,{tone:"bad",children:a.error});if(!a.scored)return(0,b.jsx)("div",{style:d,"aria-live":"polite",children:"There’s no scanned network yet, so nothing changes now. Your choice applies once you scan."});let e=(a,b)=>`${q(a,"company","companies")} ${1===a?"scores":"score"} ${b}`,g=[a.companiesUp&&e(a.companiesUp,"higher"),a.companiesDown&&e(a.companiesDown,"lower")].filter(Boolean).join(" and ");return(0,b.jsxs)("div",{style:d,"aria-live":"polite",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("b",{style:{color:"#fff"},children:"If you save:"})," ",g?`${g}.`:"No company changes score."," ",s(a.up,a.down,!1)]}),a.examples?.length>0&&(0,b.jsx)("div",{style:{marginTop:6,display:"flex",flexWrap:"wrap",gap:"4px 12px",fontSize:12.5},children:a.examples.map((a,c)=>(0,b.jsxs)("span",{title:a.company||void 0,children:[a.name,a.degree?(0,b.jsxs)("span",{style:{color:"#667"},children:[" (",p[a.degree]||`${a.degree}th`,")"]}):null," ",(0,b.jsx)("b",{style:{color:l.TIER_COLORS_CLASSIC[a.from]||"#889"},children:a.from||"–"})," → ",(0,b.jsx)("b",{style:{color:l.TIER_COLORS_CLASSIC[a.to]||"#889"},children:a.to})]},c))}),a.companyExamples?.length>0&&(0,b.jsx)("div",{style:{marginTop:4,fontSize:12,color:"#8b9a9a"},children:a.companyExamples.slice(0,3).map(a=>`${a.name} ${a.from} → ${a.to}`).join(" · ")})]})}let v=a=>`${Math.round(100*a)}%`,[w,x,y]=k.CURVE.map(([,a])=>a),z=[{key:"curve",label:"On your network's curve",note:`Your top ${v(w)} are S, the next ${v(x-w)} A and the next ${v(y-x)} B, so any network has a top, even one full of companies the app doesn't know. It only lifts: nobody drops a tier because their network is strong, and nobody under ${k.CURVE_FLOOR} is lifted into S or A.`},{key:"fixed",label:"On the fixed scale",note:"The same lines for everyone: S from 7.5, A from 5.5, B from 4, C from 2.5. Easy to compare from one network to another, but a network outside well-known companies has almost nobody in S or A."}];function A({onSaved:a}={}){let[d,e]=(0,c.useState)(null),[g,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(null),[n]=(0,c.useState)(()=>null);async function o(b){if(g||b===d)return;h(!0),j(null);let{settings:c,effects:f,error:i}=await (0,m.saveSettings)({tierScale:b});if(c&&e(c.tierScale),i)j({tone:"bad",text:i});else{let b,c=f?.tierScale;j({tone:"ok",text:c?`Saved. ${b=c.moved,`${b.toLocaleString()} ${1===b?"person":"people"}`} changed tier.`:"Saved."}),a?.()}h(!1)}return(0,c.useEffect)(()=>{let a=!1;return fetch("/api/settings").then(a=>a.json().then(b=>a.ok?b:Promise.reject(Error(b.error||"Could not load how tiers are graded.")))).then(b=>{a||e(b.settings?.tierScale||"curve")}).catch(b=>{a||l(b.message)}),()=>{a=!0}},[]),(0,b.jsxs)(f.Section,{id:"tiers",title:"Tiers",intro:"How the S to D rings are drawn. A tier says where someone sits in your network, not what they're worth.",children:[k&&(0,b.jsx)(f.Status,{tone:"bad",children:k}),d&&(0,b.jsx)("div",{role:"radiogroup","aria-label":"How tiers are graded",style:{display:"grid",gap:8},children:z.map(a=>{let c=d===a.key;return(0,b.jsxs)("button",{type:"button",role:"radio","aria-checked":c,disabled:g,onClick:()=>o(a.key),style:{textAlign:"left",padding:"12px 14px",borderRadius:8,cursor:g?"wait":c?"default":"pointer",color:"#fff",background:c?"rgba(155,89,182,0.14)":"rgba(255,255,255,0.03)",border:c?"1px solid rgba(155,89,182,0.6)":f.LINE},children:[(0,b.jsxs)("div",{style:{fontSize:14,fontWeight:650},children:[c?"● ":"○ ",a.label,"curve"===a.key?" (recommended)":""]}),(0,b.jsx)(f.Body,{style:{marginTop:4},children:a.note})]},a.key)})}),n&&(0,b.jsxs)(f.Body,{style:{color:"#FFD700",marginTop:10},children:["sample"===n?"The sample network open in this window keeps its own tiers (they’re the same either way).":"The CSV import open in this window is always graded on its own curve."," ","This applies to networks you’ve scanned."]}),i&&(0,b.jsx)(f.Status,{tone:i.tone,children:i.text})]})}var B=a.i(90017),C=a.i(58834);let D={color:"#3498DB",textDecoration:"none",fontWeight:600};function E(){let[a,e]=(0,c.useState)(0),g=()=>e(a=>a+1);return C.IS_DEMO?(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:f.FONT},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)(d.default,{href:"/",style:{fontSize:12,color:"rgba(255,255,255,0.5)",textDecoration:"none"},children:"← Back to the network"})]}):(0,b.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:f.FONT},children:[(0,b.jsxs)("header",{style:{padding:"16px 24px",borderBottom:f.LINE,display:"flex",alignItems:"center",gap:16},children:[(0,b.jsx)(d.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:f.LINE},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:"Scores"})]}),(0,b.jsxs)("main",{style:{maxWidth:980,margin:"0 auto",padding:"8px 24px 64px"},children:[(0,b.jsxs)(f.Body,{style:{marginTop:16},children:["How someone’s power score is worked out, and the three things you can change about it:"," ",(0,b.jsx)("a",{href:"#sector",style:D,children:"your field"}),", ",(0,b.jsx)("a",{href:"#tiers",style:D,children:"how tiers are graded"})," and"," ",(0,b.jsx)("a",{href:"#companies",style:D,children:"any company’s score"}),". A change here rescores everyone."]}),(0,b.jsx)(t,{onSaved:g}),(0,b.jsx)(A,{onSaved:g}),(0,b.jsx)("div",{id:"companies",style:{marginTop:28},children:(0,b.jsx)(B.default,{version:a})})]})]})}a.s(["default",0,function(){return(0,b.jsx)(e.default,{children:(0,b.jsx)(E,{})})}],94264)}];
1
+ module.exports=[94264,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(36839),f=a.i(16874),g=a.i(803),h=a.i(79663),i=a.i(59534),j=a.i(54919),k=a.i(30889),l=a.i(76939);a.i(42510);var m=a.i(31483);let n={lean:"Lean",strong:"Strong"},o=["wheel","touchstart","keydown","pointerdown"],p={1:"1st",2:"2nd",3:"3rd"},q=(a,b,c=`${b}s`)=>`${a.toLocaleString()} ${1===a?b:c}`,r=i.DIRECTORY.filter(a=>"function"===a.kind).map(a=>a.label);function s(a,b,c){let[d,e]=c?["moved","moved"]:["moves","move"];if(!a&&!b)return c?"No one changed tier.":"No one changes tier.";let f=a=>1===a?d:e;return a&&b?`${q(a,"person","people")} ${f(a)} up a tier and ${b.toLocaleString()} ${f(b)} down.`:a?`${q(a,"person","people")} ${f(a)} up a tier.`:`${q(b,"person","people")} ${f(b)} down a tier.`}function t({onSaved:a}={}){let[d,e]=(0,c.useState)(null),[i,l]=(0,c.useState)(null),[p,v]=(0,c.useState)(null),[w,x]=(0,c.useState)(!1),[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)(null),[C,D]=(0,c.useState)({loading:!0}),[E]=(0,c.useState)(()=>null),F=(0,c.useRef)(null),G=(0,c.useRef)(0),H=(0,c.useRef)(!1);function I(a){l(a),z(null),clearTimeout(F.current);let b=++G.current;if((0,h.sameFocus)(a,d))return void v(null);let c=(0,h.focusFingerprint)(a);v({key:c,loading:!0}),F.current=setTimeout(async()=>{try{let d=await fetch("/api/settings/sector-preview",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sectorFocus:a})}),e=await d.json();if(b!==G.current)return;v(d.ok?{key:c,...e}:{key:c,error:e.error||"Could not work out what would change."})}catch{b===G.current&&v({key:c,error:"Could not reach the app to work out what would change."})}},250)}async function J(){var b,c;let d;x(!0),z(null),clearTimeout(F.current),G.current++;let f=await (0,m.saveSettings)({sectorFocus:i});(x(!1),f.settings&&(e(f.settings.sectorFocus),l(f.settings.sectorFocus),v(null)),f.error)?z({tone:"bad",text:f.error}):(z({tone:"ok",text:(b=f.settings.sectorFocus,c=f.effects?.sectorFocus,d=b.sectors.length?`Saved: ${b.sectors.map(a=>(0,j.sectorByKey)(a).label).join(" · ")} (${n[b.strength].toLowerCase()}).`:"Saved: no sector.",c?c.scored?`${d} Rescored your network (${q(c.people??c.scored,"person","people")}). ${s(c.up,c.down,!0)}`:`${d} There's no scanned network yet; it will apply when you scan.`:d)}),a?.())}(0,c.useEffect)(()=>{let a=!1;return fetch("/api/settings").then(a=>a.json().then(b=>a.ok?b:Promise.reject(Error(b.error||"Could not load your sector.")))).then(b=>{if(a)return;let c=b.settings?.sectorFocus||{sectors:[],strength:"lean"};e(c),l(c)}).catch(b=>{a||B(b.message)}),fetch("/api/settings/sector-suggestions").then(a=>a.json().then(b=>a.ok?b:Promise.reject(Error(b.error||"Could not load suggestions.")))).then(b=>{a||D({scored:b.scored,list:b.suggestions||[]})}).catch(b=>{a||D({error:b.message})}),()=>{a=!0,clearTimeout(F.current)}},[]),(0,c.useEffect)(()=>{if(H.current||!i&&!A)return;H.current=!0;let a=document.getElementById("sector");if("#sector"!==window.location.hash||!a)return;let b=()=>a.scrollIntoView({block:"start"});b();let c=new ResizeObserver(b);c.observe(document.body);let d=()=>{for(let a of(c.disconnect(),clearTimeout(e),o))window.removeEventListener(a,d,!0)},e=setTimeout(d,2e3);for(let a of o)window.addEventListener(a,d,{capture:!0,passive:!0});return d},[i,A]);let K=i&&d&&!(0,h.sameFocus)(i,d);return(0,b.jsxs)(f.Section,{id:"sector",title:"Your sector",intro:"Pick up to three sectors you work in. Companies in them count for more when your network is scored, so the people there rank higher.",children:[A&&(0,b.jsx)(f.Status,{tone:"bad",children:A}),!i&&!A&&(0,b.jsx)(f.Body,{children:"Loading…"}),i&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g.default,{sectors:i.sectors,onChange:a=>I({...i,sectors:a}),disabled:w,suggest:C}),(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:8,marginTop:14},children:[(0,b.jsx)("span",{style:{fontSize:13,color:"#8b9a9a"},children:"How much:"}),Object.keys(k.SECTOR_BONUS).map(a=>(0,b.jsxs)("button",{type:"button","aria-pressed":i.strength===a,disabled:w,onClick:()=>I({...i,strength:a}),style:{padding:"5px 12px",borderRadius:7,fontSize:12.5,fontWeight:600,cursor:"pointer",color:i.strength===a?"#fff":"#8b9a9a",background:i.strength===a?"rgba(52,152,219,0.25)":"transparent",border:f.LINE},children:[n[a]," · +",k.SECTOR_BONUS[a]]},a))]}),(0,b.jsx)(f.Body,{style:{fontSize:12.5},children:"Each company in your sectors gets +1 (lean) or +2 (strong) on its score out of 10, never above 10. A company in more than one of your picks still gets it once."}),(0,b.jsx)(u,{preview:K?p:null,draft:i}),(0,b.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:14},children:[(0,b.jsx)(f.Btn,{primary:!0,onClick:J,disabled:!K||w,children:w?"Saving and rescoring…":"Save"}),K&&!w&&(0,b.jsx)(f.Btn,{onClick:()=>I(d),children:"Cancel"}),!K&&i.sectors.length>0&&!w&&(0,b.jsx)(f.Btn,{onClick:()=>I({...i,sectors:[]}),children:"Turn off"})]}),y&&(0,b.jsx)(f.Status,{tone:y.tone,children:y.text}),(0,b.jsxs)("ul",{style:{margin:"16px 0 0",paddingLeft:18,fontSize:12.5,color:"#778",lineHeight:1.7},children:[(0,b.jsx)("li",{children:"Tiers rank how reachable someone is through your network, not the people themselves."}),(0,b.jsxs)("li",{children:["A company score you set on ",(0,b.jsx)("a",{href:"#companies",style:{color:"#3498DB"},children:"Company scores"}),", below, always wins. Your sector never changes it."]}),(0,b.jsx)("li",{children:"If you scan highest tier first, people in your sectors come up sooner. Scanning newest first, the default, doesn’t go by tier."}),(0,b.jsx)("li",{children:"An industry includes its sectors. It counts a company in any of its sectors (Healthcare & Biotech counts a practice that is only in Dental), and a company whose industry the app’s list of well-known companies or the company’s own name gives (Meridian Health). Not one known only from its people’s job titles: a recruiter at Acme Widgets doesn’t make Acme a consulting firm."}),(0,b.jsx)("li",{children:"A narrower sector counts a company when its name says so (Smith Family Dental), it’s a well-known company in that sector, or at least half of the people you know there say so in their headlines (dentist, DDS, orthodontist). The words are a fixed list that comes with the app, the same on every computer. Nothing is sent anywhere."}),(0,b.jsxs)("li",{children:["Some sectors are work every kind of company has: ",r.length>1?`${r.slice(0,-1).join(", ")} and ${r.at(-1)}`:r.join(""),". For those a job title doesn’t count, since a recruiter at Acme Widgets doesn’t make it a recruiting firm. The company’s name does (Acme Staffing, Smith CPA), and so does a kind of firm in a headline (staffing agency, law firm, SaaS)."]}),E&&(0,b.jsxs)("li",{style:{color:"#FFD700"},children:["sample"===E?"The sample network":"The CSV import"," open in this window isn’t changed by this, and isn’t counted in the suggestions. Your sector applies to networks you’ve scanned."]})]})]})]})}function u({preview:a,draft:c}){if(!a||a.key!==(0,h.focusFingerprint)(c))return null;let d={marginTop:12,padding:"10px 14px",borderRadius:8,fontSize:13,lineHeight:1.6,border:f.LINE,background:"rgba(255,255,255,0.03)",color:"#cfd8d8"};if(a.loading)return(0,b.jsx)("div",{style:d,"aria-live":"polite",children:"Working out what would change…"});if(a.error)return(0,b.jsx)(f.Status,{tone:"bad",children:a.error});if(!a.scored)return(0,b.jsx)("div",{style:d,"aria-live":"polite",children:"There’s no scanned network yet, so nothing changes now. Your choice applies once you scan."});let e=(a,b)=>`${q(a,"company","companies")} ${1===a?"scores":"score"} ${b}`,g=[a.companiesUp&&e(a.companiesUp,"higher"),a.companiesDown&&e(a.companiesDown,"lower")].filter(Boolean).join(" and ");return(0,b.jsxs)("div",{style:d,"aria-live":"polite",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("b",{style:{color:"#fff"},children:"If you save:"})," ",g?`${g}.`:"No company changes score."," ",s(a.up,a.down,!1)]}),a.examples?.length>0&&(0,b.jsx)("div",{style:{marginTop:6,display:"flex",flexWrap:"wrap",gap:"4px 12px",fontSize:12.5},children:a.examples.map((a,c)=>(0,b.jsxs)("span",{title:a.company||void 0,children:[a.name,a.degree?(0,b.jsxs)("span",{style:{color:"#667"},children:[" (",p[a.degree]||`${a.degree}th`,")"]}):null," ",(0,b.jsx)("b",{style:{color:l.TIER_COLORS_CLASSIC[a.from]||"#889"},children:a.from||"–"})," → ",(0,b.jsx)("b",{style:{color:l.TIER_COLORS_CLASSIC[a.to]||"#889"},children:a.to})]},c))}),a.companyExamples?.length>0&&(0,b.jsx)("div",{style:{marginTop:4,fontSize:12,color:"#8b9a9a"},children:a.companyExamples.slice(0,3).map(a=>`${a.name} ${a.from} → ${a.to}`).join(" · ")})]})}let v=a=>`${Math.round(100*a)}%`,[w,x,y]=k.CURVE.map(([,a])=>a),z=[{key:"curve",label:"On your network's curve",note:`Your top ${v(w)} are S, the next ${v(x-w)} A and the next ${v(y-x)} B, so any network has a top, even one full of companies the app doesn't know. It only lifts: nobody drops a tier because their network is strong, and nobody under ${k.CURVE_FLOOR} is lifted into S or A.`},{key:"fixed",label:"On the fixed scale",note:"The same lines for everyone: S from 7.5, A from 5.5, B from 4, C from 2.5. Easy to compare from one network to another, but a network outside well-known companies has almost nobody in S or A."}];function A({onSaved:a}={}){let[d,e]=(0,c.useState)(null),[g,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(null),[n]=(0,c.useState)(()=>null);async function o(b){if(g||b===d)return;h(!0),j(null);let{settings:c,effects:f,error:i}=await (0,m.saveSettings)({tierScale:b});if(c&&e(c.tierScale),i)j({tone:"bad",text:i});else{let b,c=f?.tierScale;j({tone:"ok",text:c?`Saved. ${b=c.moved,`${b.toLocaleString()} ${1===b?"person":"people"}`} changed tier.`:"Saved."}),a?.()}h(!1)}return(0,c.useEffect)(()=>{let a=!1;return fetch("/api/settings").then(a=>a.json().then(b=>a.ok?b:Promise.reject(Error(b.error||"Could not load how tiers are graded.")))).then(b=>{a||e(b.settings?.tierScale||"curve")}).catch(b=>{a||l(b.message)}),()=>{a=!0}},[]),(0,b.jsxs)(f.Section,{id:"tiers",title:"Tiers",intro:"How the S to D rings are drawn. A tier says where someone sits in your network, not what they're worth.",children:[k&&(0,b.jsx)(f.Status,{tone:"bad",children:k}),d&&(0,b.jsx)("div",{role:"radiogroup","aria-label":"How tiers are graded",style:{display:"grid",gap:8},children:z.map(a=>{let c=d===a.key;return(0,b.jsxs)("button",{type:"button",role:"radio","aria-checked":c,disabled:g,onClick:()=>o(a.key),style:{textAlign:"left",padding:"12px 14px",borderRadius:8,cursor:g?"wait":c?"default":"pointer",color:"#fff",background:c?"rgba(155,89,182,0.14)":"rgba(255,255,255,0.03)",border:c?"1px solid rgba(155,89,182,0.6)":f.LINE},children:[(0,b.jsxs)("div",{style:{fontSize:14,fontWeight:650},children:[c?"● ":"○ ",a.label,"curve"===a.key?" (recommended)":""]}),(0,b.jsx)(f.Body,{style:{marginTop:4},children:a.note})]},a.key)})}),n&&(0,b.jsxs)(f.Body,{style:{color:"#FFD700",marginTop:10},children:["sample"===n?"The sample network open in this window keeps its own tiers (they’re the same either way).":"The CSV import open in this window is always graded on its own curve."," ","This applies to networks you’ve scanned."]}),i&&(0,b.jsx)(f.Status,{tone:i.tone,children:i.text})]})}var B=a.i(75857),C=a.i(23310),D=a.i(45889);let E={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},F=a=>`${Math.round(100*a)}%`;function G(){let{userId:a}=(0,B.useUser)(),[e,g]=(0,c.useState)(null),[h,i]=(0,c.useState)(!1);(0,c.useEffect)(()=>{if(!a)return;let b=!0;return(0,C.loadNetwork)(a).then(a=>{b&&g(function({degree1:a=[],degree2:b=[],ties:c=0}={}){let d=new Map;for(let a of b)a?.source_connection_id!=null&&d.set(a.source_connection_id,(d.get(a.source_connection_id)||0)+1);let e=(0,D.exclusiveReach)(b,a),f=a.length,g=Math.max(0,Number(c)||0),h=f?f-2*g/f:0,i=new Map(a.map(a=>[a.id,a])),j=[...e.entries()].sort((a,b)=>b[1].reach-a[1].reach||String(a[0]).localeCompare(String(b[0]))).slice(0,5).map(([a,b])=>{let c=i.get(a)||{};return{id:a,name:c.name||"",company:c.company||"",tier:c.tier||"",circle:d.get(a)||0,only:b.only,share:b.total?b.only/b.total:0}});return{circles:d.size,early:d.size<5,twoWays:(0,D.redundancy)(b,a),effective:{n:f,ties:g,size:h,efficiency:f?h/f:0},top:j}}(a))}).catch(()=>{b&&i(!0)}),()=>{b=!1}},[a]);let j={padding:"12px 14px",borderRadius:8,border:f.LINE,background:"rgba(255,255,255,0.03)"};return(0,b.jsxs)("section",{id:"health",style:{marginTop:20},children:[(0,b.jsx)("h2",{style:{fontSize:16,margin:"0 0 6px"},children:"Network health"}),h&&(0,b.jsx)(f.Body,{children:"Couldn’t read your network just now."}),!h&&!e&&(0,b.jsx)(f.Body,{children:"Reading your network…"}),e&&0===e.circles&&(0,b.jsx)(f.Body,{children:"Scan a few of your connections’ circles (the Scan page, step 4) and this shows how your network holds together."}),e&&e.circles>0&&(0,b.jsxs)(b.Fragment,{children:[e.early&&(0,b.jsxs)("div",{style:{fontSize:12.5,color:"#FFD700",margin:"4px 0 10px"},children:["An early estimate: ",e.circles," ",1===e.circles?"circle":"circles"," scanned. These get sharper as you scan more."]}),(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:10},children:[(0,b.jsxs)("div",{style:j,children:[(0,b.jsx)("div",{style:{fontSize:22,fontWeight:700},children:F(e.twoWays)}),(0,b.jsx)("div",{style:{fontSize:12.5,color:"#b8c4c4"},children:"of your 2nd degree you reach two or more ways"}),(0,b.jsx)("div",{style:{fontSize:11.5,color:"#778",marginTop:4},children:"Higher is safer: lose one connection and they’re still reachable."})]}),(0,b.jsxs)("div",{style:j,children:[(0,b.jsx)("div",{style:{fontSize:22,fontWeight:700},children:Math.round(e.effective.size).toLocaleString()}),(0,b.jsxs)("div",{style:{fontSize:12.5,color:"#b8c4c4"},children:["effective reach of your ",e.effective.n.toLocaleString()," connections (",F(e.effective.efficiency)," non-overlapping)"]}),(0,b.jsxs)("div",{style:{fontSize:11.5,color:"#778",marginTop:4},children:["From ",e.effective.ties.toLocaleString()," ",1===e.effective.ties?"tie":"ties"," between your connections seen in circle scans so far, so it can only come down as you scan more."]})]})]}),e.top.length>0&&(0,b.jsxs)("div",{style:{...j,marginTop:10,padding:0},children:[(0,b.jsx)("div",{style:{padding:"10px 14px",fontSize:12.5,color:"#b8c4c4",borderBottom:f.LINE},children:"Your connections who reach the most people no one else does"}),e.top.map((a,c)=>(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 14px",borderBottom:c<e.top.length-1?"1px solid rgba(255,255,255,0.04)":"none",fontSize:13},children:[(0,b.jsxs)("span",{style:{width:22,color:"#778"},children:["#",c+1]}),(0,b.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:E[a.tier]||"#667",flexShrink:0}}),(0,b.jsxs)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[(0,b.jsx)("b",{children:a.name}),a.company?(0,b.jsxs)("span",{style:{color:"#8b9a9a"},children:[" · ",a.company]}):null]}),(0,b.jsxs)("span",{style:{color:"#b8c4c4",whiteSpace:"nowrap"},children:[a.circle.toLocaleString()," in circle"]}),(0,b.jsxs)("span",{style:{color:"#00ff88",whiteSpace:"nowrap"},children:[a.only.toLocaleString()," only them (",F(a.share),")"]}),(0,b.jsx)(d.default,{href:`/?chain=${encodeURIComponent(a.id)}`,style:{color:"#3498DB",textDecoration:"none",whiteSpace:"nowrap"},children:"Explore →"})]},a.id))]})]})]})}var H=a.i(90017),I=a.i(58834);let J={color:"#3498DB",textDecoration:"none",fontWeight:600};function K(){let[a,e]=(0,c.useState)(0),g=()=>e(a=>a+1);return I.IS_DEMO?(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:f.FONT},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)(d.default,{href:"/",style:{fontSize:12,color:"rgba(255,255,255,0.5)",textDecoration:"none"},children:"← Back to the network"})]}):(0,b.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:f.FONT},children:[(0,b.jsxs)("header",{style:{padding:"16px 24px",borderBottom:f.LINE,display:"flex",alignItems:"center",gap:16},children:[(0,b.jsx)(d.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:f.LINE},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:"Scores"})]}),(0,b.jsxs)("main",{style:{maxWidth:980,margin:"0 auto",padding:"8px 24px 64px"},children:[(0,b.jsxs)(f.Body,{style:{marginTop:16},children:["How someone’s power score is worked out, and the three things you can change about it:"," ",(0,b.jsx)("a",{href:"#sector",style:J,children:"your field"}),", ",(0,b.jsx)("a",{href:"#tiers",style:J,children:"how tiers are graded"})," and"," ",(0,b.jsx)("a",{href:"#companies",style:J,children:"any company’s score"}),". A change here rescores everyone."," ","First, ",(0,b.jsx)("a",{href:"#health",style:J,children:"how your network holds together"}),"."]}),(0,b.jsx)(G,{}),(0,b.jsx)(t,{onSaved:g}),(0,b.jsx)(A,{onSaved:g}),(0,b.jsx)("div",{id:"companies",style:{marginTop:28},children:(0,b.jsx)(H.default,{version:a})})]})]})}a.s(["default",0,function(){return(0,b.jsx)(e.default,{children:(0,b.jsx)(K,{})})}],94264)}];
2
2
 
3
3
  //# sourceMappingURL=app_scores_page_09wepvv.js.map
@@ -2,7 +2,7 @@ module.exports=[65375,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944
2
2
 
3
3
  Set ${b.daily} a day anyway?`:0===b.monthly&&0!==a.monthly?`With no monthly cap, only the daily budget stops a scan. A real account was restricted after 373 searches in 24 hours with no monthly cap set.
4
4
 
5
- Turn the monthly cap off anyway?`:null}(e,{...e,...a});(!b||window.confirm(b))&&h(a)},j=function({daily:a,monthly:b}={}){if(!(({daily:a,monthly:b}={})=>Number(a)>100||0===b)({daily:a,monthly:b}))return null;let c=["A real account was restricted after 373 searches in 24 hours."];return Number(a)>100&&c.push(`${a} a day can use up a free account's month in a day or two.`),0===b&&c.push("With no monthly cap, nothing but the daily budget stops a long run."),c.join(" ")}(e);return(0,b.jsxs)("div",{style:{padding:"12px 14px",borderRadius:8,border:l,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)(s,{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 ",q(a.monthResets)]}),(0,b.jsx)(s,{used:a.searchesMonth,cap:e.monthly})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("b",{style:{color:"#fff"},children:g})," of ",e.profiles," profile views today"]}),(0,b.jsx)(s,{used:a.unreadable?e.profiles:a.profilesToday,cap:e.profiles})]})]}),(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=>i({daily:Number(a.target.value)}),style:x,children:n.map(a=>(0,b.jsxs)("option",{value:a,children:[a," a day"]},a))}),(0,b.jsx)("select",{value:e.monthly,disabled:d,onChange:a=>i({monthly:Number(a.target.value)}),style:x,children:o.map(a=>(0,b.jsx)("option",{value:a,children:a?`${a} a month`:"no monthly cap (Premium)"},a))}),(0,b.jsx)("select",{value:e.profiles,disabled:d,onChange:a=>h({profiles:Number(a.target.value)}),style:x,children:p.map(a=>(0,b.jsxs)("option",{value:a,children:[a," profile views a day"]},a))})]}),(0,b.jsx)("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."}),j&&(0,b.jsxs)("div",{style:{marginTop:8,display:"flex",gap:10,alignItems:"center",flexWrap:"wrap",color:"#FFD700",lineHeight:1.6},children:[(0,b.jsx)("b",{style:{flex:1,minWidth:200},children:j}),(0,b.jsxs)("button",{onClick:()=>h(k),disabled:d,style:{...x,cursor:d?"not-allowed":"pointer",color:"#FFD700",borderColor:"rgba(255,215,0,0.4)"},children:["Back to ",k.daily," a day, ",k.monthly," a month"]})]}),(0,b.jsx)("div",{style:{marginTop:6,color:"#778",lineHeight:1.6},children:"Each circle scan opens the person’s profile once, which is one profile view. Profile views are what LinkedIn restricted an account for, after about 20 in an hour. The scanner opens at most one a minute, and once today’s are used, a scan stops before the next profile and tries that person next time."})]})}function u({paused:a=[],onResume:d,onResumeAll:e,disabled:f}){let[g,h]=(0,c.useState)(!1);if(!a.length)return null;let i=a.filter(a=>a.legacy).length,j=g?a:a.slice(0,8);return(0,b.jsxs)("div",{style:{borderRadius:8,border:l,background:"rgba(255,255,255,0.03)"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"10px 14px",borderBottom:l,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",i?`; ${i} were read to page 10 before whole lists were read`:"","."]})]}),(0,b.jsx)("button",{onClick:e,disabled:f,style:{...v,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:j.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:m[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 ${q(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:{...v,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:()=>h(!g),style:{...w,padding:"10px 14px"},children:g?"Show fewer":`Show all ${a.length}`})]})}let v={padding:"8px 14px",borderRadius:7,fontSize:13,fontWeight:700,cursor:"pointer",border:l,background:"rgba(255,255,255,0.08)",color:"#fff"},w={background:"none",border:"none",color:"#8fb8d6",cursor:"pointer",fontSize:12.5,fontWeight:600,padding:0},x={padding:"6px 8px",borderRadius:6,fontSize:12.5,fontWeight:600,background:"rgba(255,255,255,0.08)",color:"#fff",border:l};var y=a.i(16874),z=a.i(803);a.i(59534);var A=a.i(54919),B=a.i(31483);let C={color:"#3498DB"};function D({onDone:a}){let[d,e]=(0,c.useState)([]),[f,g]=(0,c.useState)(null),[h,i]=(0,c.useState)(null);async function j(){g("pick"),i(null);let b=await (0,B.saveSettings)({sectorFocus:{sectors:d,strength:"lean"},fieldAsked:!0});b.settings?a(b.settings.sectorFocus.sectors):(i(b.error),g(null))}async function k(){g("skip"),i(null),await (0,B.saveSettings)({fieldAsked:!0}),a([])}return(0,b.jsxs)("section",{"aria-labelledby":"field-question","data-field-question":!0,style:{margin:"8px 0 0",padding:"20px 22px 0",borderRadius:12,border:y.LINE,background:"rgba(255,255,255,0.03)"},children:[(0,b.jsx)("div",{style:{fontSize:12,color:"#788",textTransform:"uppercase",letterSpacing:.6},children:"Before you scan · optional"}),(0,b.jsx)("h2",{id:"field-question",style:{fontSize:18,fontWeight:700,margin:"6px 0 4px"},children:"What field are you in?"}),(0,b.jsx)(y.Body,{style:{marginTop:0,marginBottom:14},children:"Pick up to three. Companies in your field count for more when your network is scored, so the people there rank higher. You can change it anytime on the Scores tab."}),(0,b.jsx)(z.default,{sectors:d,onChange:e,disabled:!!f}),(0,b.jsxs)("div",{style:{position:"sticky",bottom:0,margin:"16px -22px 0",padding:"12px 22px 16px",borderTop:y.LINE,borderRadius:"0 0 11px 11px",background:"#111121"},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap"},children:[(0,b.jsx)(y.Btn,{primary:!0,onClick:j,disabled:!d.length||!!f,children:"pick"===f?"Saving…":"Continue"}),(0,b.jsx)(y.Btn,{onClick:k,disabled:!!f,children:"Skip for now"})]}),h&&(0,b.jsx)(y.Status,{tone:"bad",children:h})]})]})}function E({sectors:a}){return a.length?(0,b.jsxs)(y.Status,{tone:"ok",children:["Your field: ",a.map(a=>(0,A.sectorByKey)(a).label).join(" · "),". Your first scan is scored with it. Change it anytime on ",(0,b.jsx)(f.default,{href:"/scores#sector",style:C,children:"Scores"}),"."]}):(0,b.jsxs)(y.Status,{children:["No field for now. You can pick one anytime on ",(0,b.jsx)(f.default,{href:"/scores#sector",style:C,children:"Scores"}),"."]})}let F="1px solid rgba(255,255,255,0.1)",G={photos:"Saving profile photos to this computer",install:"Installing the scanner",setup:"Setting up 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 H(){let a;(0,c.useEffect)(()=>{"updates"===new URLSearchParams(window.location.search).get("check")&&window.location.replace("/settings?check=updates")},[]);let[e,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(!1),[n,o]=(0,c.useState)(10),[p,q]=(0,c.useState)(["S","A"]),[s,v]=K("six-degrees-bridge-order","newest"),[w,x]=K("six-degrees-bridge-pages-v2",100),[y,z]=K("six-degrees-bridge-finish",!0),[A,B]=K("six-degrees-experimental-auto",!1),[C,H]=(0,c.useState)(null),J=(0,c.useRef)(null),[S,T]=(0,c.useState)(void 0),[U,V]=(0,c.useState)(null),W=(0,d.useSearchParams)().get("scan"),[X,Y]=(0,c.useState)(null);(0,c.useEffect)(()=>{if(!W)return;let a=!0;return(0,g.pickedPerson)(W).then(b=>{a&&Y(b?.person?b:null)},()=>{}),()=>{a=!1}},[W]);let Z=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/scraper");k(await a.json())}catch{k(a=>a||{ready:!1,checks:{},log:[]})}},[]);async function $(){H(null),await (0,g.stopScrape)().catch(a=>H(a.message)),Z()}async function _(a,b={}){H(null),m(!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||H(d.error||"Could not start.")}catch(a){H(a.message)}finally{m(!1),Z()}}(0,c.useEffect)(()=>{Z();let a=setInterval(Z,1500);return()=>clearInterval(a)},[Z]),(0,c.useEffect)(()=>{if(i.IS_DEMO)return;let a=!1;return fetch("/api/settings").then(a=>a.ok?a.json():null).then(b=>{a||T(b?.settings||null)}).catch(()=>{a||T(null)}),()=>{a=!0}},[]),(0,c.useEffect)(()=>{J.current&&(J.current.scrollTop=J.current.scrollHeight)},[e?.log?.length]);let aa=e?.checks||{},ab=e?.running,ac={...a=function(a){let b=a?.checks||{},c=(b,c,d)=>a?.running&&a.action===b?d:c;if(b.dependencies)return"bundled"===b.pythonSource?{done:!0,text:"Ready. The scanner and its Python come with the app, so there is nothing to install.",button:null}:"custom"===b.pythonSource?{done:!0,text:`Ready, on the Python named in SIX_DEGREES_PYTHON (${b.pythonPath}).`,button:null}:{done:!0,text:"Installed.",button:null};let d=b.ownPython&&"bundled"!==b.ownPython.source?`The Python named in SIX_DEGREES_PYTHON didn't work (${b.ownPython.problem}), so the scanner needs setting up another way. `:"";if(b.installFrom)return{done:!1,text:d+("downloaded"===b.installFrom.source?"Its own Python is already here. One more step, about a minute: it installs the browser-automation packages into it.":"One-time, about a minute. Downloads the browser-automation packages."),button:{action:"install",label:c("install","Install","Installing…")}};if(b.download){let a=Math.round(b.download.size/1048576);return{done:!1,text:`${d}${function(a){if(!a?.version)return"This computer has no Python the scanner can use.";let[b,c]=String(a.version).split(".").map(Number);return 3===b&&c>=10&&c<=14&&!1===a.venv?`This computer's Python ${a.version} can't make the scanner's own environment (on Ubuntu or Debian, python3-venv isn't installed).`:`This computer has Python ${a.version}, and the scanner needs 3.10 to 3.14.`}(b.systemPython)} Set up the scanner downloads its own Python ${b.download.version} (${a} MB, from GitHub) and the scanner's packages (from PyPI) into your data folder. Nothing else on this computer changes. About two minutes.`,button:{action:"setup",label:c("setup","Set up the scanner","Setting up…")}}}return{done:!1,text:`${d}No Python 3.10 to 3.14 was found on this machine. Install one from python.org, then reload.`,button:null}}(e),note:function(a,{done:b,button:c}){if(a?.source!=="bundled")return null;let d=/SIGKILL|code signature|not valid for use in process|quarantine|not permitted/i.test(a.problem||""),e=[`The Python that comes with the app didn't work (${a.problem}).`];return d&&e.push("macOS may have blocked it."),!1===a.retry&&e.push("Six Degrees won't try it again until you restart it."),b?e.push("The scanner uses another Python on this computer instead."):c?e.push(`To scan now, use ${h[c.action]} below: it gives the scanner a Python of its own in your data folder.`):e.push("To scan now, install Python 3.10 to 3.14 from python.org, then reload."),e.join(" ")}(e?.checks?.ownPython,a)};e&&aa.dependencies;let ad=e&&!aa.chrome,ae=e&&!aa.scriptsFound,af=e?.ready&&!ab,ag=e?.linkedin,ah=!!ag?.cooldown,ai=af&&!ah,aj=e?.network||{first:0,second:0,third:0},ak=aj.first,al=!i.IS_DEMO&&!U&&function(a,b){if(!a)return null;let c=a.network;return!!c&&!c.first&&!c.second&&!c.third&&!a.running&&(void 0===b?null:!!(b&&!b.fieldAsked&&!b.sectorFocus?.sectors?.length))}(e,S),am=e&&!ab&&null!=e.exitCode&&0!==e.exitCode,an=am?e.failure?.length?e.failure.join("\n"):[...e.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:F,display:"flex",alignItems:"center",gap:16},children:[(0,b.jsx)(f.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:F},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.",!ak&&(al?" One optional question, then three steps and your galaxy appears.":" Three steps and your galaxy appears; each one ticks itself off.")]}),null===al&&(0,b.jsx)("p",{style:{color:"#778",fontSize:13},children:"Checking your setup…"}),al&&(0,b.jsx)(D,{onDone:function(a){V({sectors:a}),window.scrollTo(0,0)}}),U&&(0,b.jsx)(E,{sectors:U.sectors}),!1===al&&(0,b.jsxs)(b.Fragment,{children:[X?.person.id===W&&(0,b.jsx)(I,{pick:X,pages:w,setPages:x,li:ag,running:ab,s:e,canSearch:ai,busy:l,onUnpick:function(){Y(null);try{window.history.replaceState(null,"",window.location.pathname)}catch{}},onStart:()=>_("bridge",{id:X.person.id,maxPages:w})}),ak>0&&!ab&&(0,b.jsx)(P,{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:[ak.toLocaleString()," connections"]}),aj.second>0&&(0,b.jsxs)(b.Fragment,{children:[", plus ",aj.second.toLocaleString()," people in their circles"]}),aj.third>0&&(0,b.jsxs)(b.Fragment,{children:[" and ",aj.third.toLocaleString()," from company scans"]}),"."," ",(0,b.jsx)("span",{style:{color:"#9aa"},children:"Your galaxy is ready."})]}),(0,b.jsx)(f.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 →"})]})}),e?.photosWaiting>0&&!ab&&(0,b.jsx)(P,{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:[e.photosWaiting.toLocaleString()," ",1===e.photosWaiting?"photo isn’t":"photos aren’t"," saved on this computer yet."]})," ",(0,b.jsx)("span",{style:{color:"#9aa"},children:"An older version kept them as links to LinkedIn. The app doesn’t load photos from LinkedIn while you browse, so those people show initials until the photos are saved here: now, or at the end of your next scan. An expired link can’t be saved; that person’s photo comes back when they’re next scanned."}),e&&!aa.dependencies&&(0,b.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5,marginTop:6},children:"Set up the scanner first (step 1 below): it saves them."})]}),(0,b.jsx)(O,{onClick:()=>_("photos"),disabled:l||!aa.dependencies,children:"Save photos"})]})}),am&&(0,b.jsxs)(P,{tone:"bad",children:[(0,b.jsx)("b",{children:"The last run stopped before it finished."}),an&&(0,b.jsx)("div",{style:{marginTop:6,color:"#e8c4c4",whiteSpace:"pre-wrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:12.5},children:an}),(0,b.jsx)("div",{style:{color:"#9aa",marginTop:6},children:"The full log is below."})]}),ae&&(0,b.jsxs)(P,{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:L,children:"scripts/scrape.py"})," next to the app. If you downloaded a zip, run the app from inside the project folder."]})]}),ad&&(0,b.jsxs)(P,{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."]})]}),e&&ac.note&&(0,b.jsx)(P,{tone:ac.done?void 0:"bad",children:ac.note}),(0,b.jsx)(N,{n:1,done:ac.done,title:"Set up the scanner",body:e?ac.text:"",action:e&&ac.button&&(0,b.jsx)(O,{onClick:()=>_(ac.button.action),disabled:l||ab,children:ac.button.label})}),(0,b.jsx)(N,{n:2,done:!!aa.signedIn,title:"Sign into LinkedIn",body:aa.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:aa.dependencies&&(0,b.jsx)(O,{onClick:()=>_("login"),disabled:l||ab,children:ab&&"login"===e.action?"Waiting for you…":"Open LinkedIn"})}),(0,b.jsx)(N,{n:3,done:ak>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)(O,{onClick:()=>_("full"),disabled:!ai,primary:!0,children:ab&&"full"===e.action?"Scanning…":"Scan my whole network"}),(0,b.jsx)(O,{onClick:()=>_("refresh"),disabled:!ai,children:ab&&"refresh"===e.action?"Checking…":"Check for new"})]})}),(0,b.jsx)(N,{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)(r,{cooldown:ag?.cooldown,disabled:l,onLift:()=>_("lift-cooldown")}),(0,b.jsx)(t,{li:ag,disabled:l,onSetLimits:a=>_("set-limits",a)}),"score"===s&&(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=p.includes(a);return(0,b.jsx)("button",{onClick:()=>q(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a]),disabled:ab,style:{width:30,height:28,borderRadius:7,fontSize:12,fontWeight:700,cursor:ab?"not-allowed":"pointer",border:F,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:p.length?"":"pick at least one"})]}),"newest"===s&&(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:s,onChange:a=>v(a.target.value),disabled:ab,style:M,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:w,onChange:a=>x(Number(a.target.value)),disabled:ab,style:M,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:ab?"not-allowed":"pointer"},children:[(0,b.jsx)("input",{type:"checkbox",checked:y,onChange:a=>z(a.target.checked),disabled:ab}),"Also finish people already mapped, from the page each one stopped at"]}),(0,b.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"#b8c4c4",cursor:ab?"default":"pointer"},children:[(0,b.jsx)("input",{type:"checkbox",checked:A,disabled:ab,style:{marginTop:3},onChange:a=>B(a.target.checked)}),(0,b.jsxs)("span",{children:[(0,b.jsx)("b",{style:{color:"#FFD700"},children:"Experimental:"})," all-day pacing. Up to 10 pages in a sitting, then a 45-minute rest; searches only from 9:00 to 19:00; at the daily budget it waits for it to free up instead of stopping; and it saves every page. It also reads LinkedIn’s own data beside the page text, to fill gaps and measure how the two compare. It keeps running while the app is open."]})]}),(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"," ","about ",(0,j.circleScanCost)(w).minutes," 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)(O,{onClick:()=>_("auto-bridge",{maxBridges:n,tiers:"score"===s?p:[],order:s,maxPages:w,deeper:y,experimental:A}),disabled:!ai||"score"===s&&!p.length,primary:!0,children:ab&&"auto-bridge"===e.action?"Mapping…":"Map 2nd degree"}),(0,b.jsxs)("select",{value:n,onChange:a=>o(Number(a.target.value)),disabled:ab,style:M,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)(O,{onClick:()=>_("auto-bridge-retry",{maxBridges:n,tiers:"score"===s?p:[],order:s,maxPages:w,deeper:y}),disabled:!ai||"score"===s&&!p.length,children:"Retry hidden ones"})]}),(0,b.jsx)(u,{paused:e?.paused||[],disabled:!ai,onResume:a=>_("resume",{id:a.id}),onResumeAll:()=>_("resume-all",{maxBridges:n})})]})}),ab&&(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:F},children:[(0,b.jsx)(R,{}),(0,b.jsxs)("div",{style:{flex:1,fontSize:13.5},children:[(0,b.jsx)("b",{children:G[e.action]||"Working"}),e.progress&&(0,b.jsx)(Q,{p:e.progress,action:e.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)(O,{onClick:$,tone:"bad",children:"Stop"})]}),C&&(0,b.jsx)(P,{tone:"bad",children:C}),e?.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:[ab&&(0,b.jsx)(R,{}),ab?"Working":"Last run"]}),(0,b.jsx)("pre",{ref:J,style:{background:"rgba(0,0,0,0.45)",border:F,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:e.log.join("\n")})]})]}),(0,b.jsxs)("div",{style:{marginTop:32,paddingTop:20,borderTop:F,fontSize:13.5,color:"#8b9a9a"},children:["Checking for updates has moved to"," ",(0,b.jsx)(f.default,{href:"/settings#updates",style:{color:"#3498DB"},children:"Settings →"})]}),(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)(f.default,{href:"/import",style:{color:"#3498DB"},children:"import a CSV instead"}),"."]})]}),(0,b.jsx)("style",{children:`@keyframes spin { to { transform: rotate(360deg) } }
5
+ Turn the monthly cap off anyway?`:null}(e,{...e,...a});(!b||window.confirm(b))&&h(a)},j=function({daily:a,monthly:b}={}){if(!(({daily:a,monthly:b}={})=>Number(a)>100||0===b)({daily:a,monthly:b}))return null;let c=["A real account was restricted after 373 searches in 24 hours."];return Number(a)>100&&c.push(`${a} a day can use up a free account's month in a day or two.`),0===b&&c.push("With no monthly cap, nothing but the daily budget stops a long run."),c.join(" ")}(e);return(0,b.jsxs)("div",{style:{padding:"12px 14px",borderRadius:8,border:l,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)(s,{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 ",q(a.monthResets)]}),(0,b.jsx)(s,{used:a.searchesMonth,cap:e.monthly})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("b",{style:{color:"#fff"},children:g})," of ",e.profiles," profile views today"]}),(0,b.jsx)(s,{used:a.unreadable?e.profiles:a.profilesToday,cap:e.profiles})]})]}),(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=>i({daily:Number(a.target.value)}),style:x,children:n.map(a=>(0,b.jsxs)("option",{value:a,children:[a," a day"]},a))}),(0,b.jsx)("select",{value:e.monthly,disabled:d,onChange:a=>i({monthly:Number(a.target.value)}),style:x,children:o.map(a=>(0,b.jsx)("option",{value:a,children:a?`${a} a month`:"no monthly cap (Premium)"},a))}),(0,b.jsx)("select",{value:e.profiles,disabled:d,onChange:a=>h({profiles:Number(a.target.value)}),style:x,children:p.map(a=>(0,b.jsxs)("option",{value:a,children:[a," profile views a day"]},a))})]}),(0,b.jsx)("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."}),j&&(0,b.jsxs)("div",{style:{marginTop:8,display:"flex",gap:10,alignItems:"center",flexWrap:"wrap",color:"#FFD700",lineHeight:1.6},children:[(0,b.jsx)("b",{style:{flex:1,minWidth:200},children:j}),(0,b.jsxs)("button",{onClick:()=>h(k),disabled:d,style:{...x,cursor:d?"not-allowed":"pointer",color:"#FFD700",borderColor:"rgba(255,215,0,0.4)"},children:["Back to ",k.daily," a day, ",k.monthly," a month"]})]}),(0,b.jsx)("div",{style:{marginTop:6,color:"#778",lineHeight:1.6},children:"Each circle scan opens the person’s profile once, which is one profile view. Profile views are what LinkedIn restricted an account for, after about 20 in an hour. The scanner opens at most one a minute, and once today’s are used, a scan stops before the next profile and tries that person next time."})]})}function u({paused:a=[],onResume:d,onResumeAll:e,disabled:f}){let[g,h]=(0,c.useState)(!1);if(!a.length)return null;let i=a.filter(a=>a.legacy).length,j=g?a:a.slice(0,8);return(0,b.jsxs)("div",{style:{borderRadius:8,border:l,background:"rgba(255,255,255,0.03)"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"10px 14px",borderBottom:l,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",i?`; ${i} were read to page 10 before whole lists were read`:"","."]})]}),(0,b.jsx)("button",{onClick:e,disabled:f,style:{...v,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:j.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:m[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 ${q(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:{...v,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:()=>h(!g),style:{...w,padding:"10px 14px"},children:g?"Show fewer":`Show all ${a.length}`})]})}let v={padding:"8px 14px",borderRadius:7,fontSize:13,fontWeight:700,cursor:"pointer",border:l,background:"rgba(255,255,255,0.08)",color:"#fff"},w={background:"none",border:"none",color:"#8fb8d6",cursor:"pointer",fontSize:12.5,fontWeight:600,padding:0},x={padding:"6px 8px",borderRadius:6,fontSize:12.5,fontWeight:600,background:"rgba(255,255,255,0.08)",color:"#fff",border:l};var y=a.i(16874),z=a.i(803);a.i(59534);var A=a.i(54919),B=a.i(31483);let C={color:"#3498DB"};function D({onDone:a}){let[d,e]=(0,c.useState)([]),[f,g]=(0,c.useState)(null),[h,i]=(0,c.useState)(null);async function j(){g("pick"),i(null);let b=await (0,B.saveSettings)({sectorFocus:{sectors:d,strength:"lean"},fieldAsked:!0});b.settings?a(b.settings.sectorFocus.sectors):(i(b.error),g(null))}async function k(){g("skip"),i(null),await (0,B.saveSettings)({fieldAsked:!0}),a([])}return(0,b.jsxs)("section",{"aria-labelledby":"field-question","data-field-question":!0,style:{margin:"8px 0 0",padding:"20px 22px 0",borderRadius:12,border:y.LINE,background:"rgba(255,255,255,0.03)"},children:[(0,b.jsx)("div",{style:{fontSize:12,color:"#788",textTransform:"uppercase",letterSpacing:.6},children:"Before you scan · optional"}),(0,b.jsx)("h2",{id:"field-question",style:{fontSize:18,fontWeight:700,margin:"6px 0 4px"},children:"What field are you in?"}),(0,b.jsx)(y.Body,{style:{marginTop:0,marginBottom:14},children:"Pick up to three. Companies in your field count for more when your network is scored, so the people there rank higher. You can change it anytime on the Scores tab."}),(0,b.jsx)(z.default,{sectors:d,onChange:e,disabled:!!f}),(0,b.jsxs)("div",{style:{position:"sticky",bottom:0,margin:"16px -22px 0",padding:"12px 22px 16px",borderTop:y.LINE,borderRadius:"0 0 11px 11px",background:"#111121"},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap"},children:[(0,b.jsx)(y.Btn,{primary:!0,onClick:j,disabled:!d.length||!!f,children:"pick"===f?"Saving…":"Continue"}),(0,b.jsx)(y.Btn,{onClick:k,disabled:!!f,children:"Skip for now"})]}),h&&(0,b.jsx)(y.Status,{tone:"bad",children:h})]})]})}function E({sectors:a}){return a.length?(0,b.jsxs)(y.Status,{tone:"ok",children:["Your field: ",a.map(a=>(0,A.sectorByKey)(a).label).join(" · "),". Your first scan is scored with it. Change it anytime on ",(0,b.jsx)(f.default,{href:"/scores#sector",style:C,children:"Scores"}),"."]}):(0,b.jsxs)(y.Status,{children:["No field for now. You can pick one anytime on ",(0,b.jsx)(f.default,{href:"/scores#sector",style:C,children:"Scores"}),"."]})}let F="1px solid rgba(255,255,255,0.1)",G={photos:"Saving profile photos to this computer",install:"Installing the scanner",setup:"Setting up 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 H(){let a;(0,c.useEffect)(()=>{"updates"===new URLSearchParams(window.location.search).get("check")&&window.location.replace("/settings?check=updates")},[]);let[e,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(!1),[n,o]=(0,c.useState)(10),[p,q]=(0,c.useState)(["S","A"]),[s,v]=K("six-degrees-bridge-order","newest"),[w,x]=K("six-degrees-bridge-pages-v2",100),[y,z]=K("six-degrees-bridge-finish",!0),[A,B]=K("six-degrees-experimental-auto",!1),[C,H]=(0,c.useState)(null),J=(0,c.useRef)(null),[S,T]=(0,c.useState)(void 0),[U,V]=(0,c.useState)(null),W=(0,d.useSearchParams)().get("scan"),[X,Y]=(0,c.useState)(null);(0,c.useEffect)(()=>{if(!W)return;let a=!0;return(0,g.pickedPerson)(W).then(b=>{a&&Y(b?.person?b:null)},()=>{}),()=>{a=!1}},[W]);let Z=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/scraper");k(await a.json())}catch{k(a=>a||{ready:!1,checks:{},log:[]})}},[]);async function $(){H(null),await (0,g.stopScrape)().catch(a=>H(a.message)),Z()}async function _(a,b={}){H(null),m(!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||H(d.error||"Could not start.")}catch(a){H(a.message)}finally{m(!1),Z()}}(0,c.useEffect)(()=>{Z();let a=setInterval(Z,1500);return()=>clearInterval(a)},[Z]),(0,c.useEffect)(()=>{if(i.IS_DEMO)return;let a=!1;return fetch("/api/settings").then(a=>a.ok?a.json():null).then(b=>{a||T(b?.settings||null)}).catch(()=>{a||T(null)}),()=>{a=!0}},[]),(0,c.useEffect)(()=>{J.current&&(J.current.scrollTop=J.current.scrollHeight)},[e?.log?.length]);let aa=e?.checks||{},ab=e?.running,ac={...a=function(a){let b=a?.checks||{},c=(b,c,d)=>a?.running&&a.action===b?d:c;if(b.dependencies)return"bundled"===b.pythonSource?{done:!0,text:"Ready. The scanner and its Python come with the app, so there is nothing to install.",button:null}:"custom"===b.pythonSource?{done:!0,text:`Ready, on the Python named in SIX_DEGREES_PYTHON (${b.pythonPath}).`,button:null}:{done:!0,text:"Installed.",button:null};let d=b.ownPython&&"bundled"!==b.ownPython.source?`The Python named in SIX_DEGREES_PYTHON didn't work (${b.ownPython.problem}), so the scanner needs setting up another way. `:"";if(b.installFrom)return{done:!1,text:d+("downloaded"===b.installFrom.source?"Its own Python is already here. One more step, about a minute: it installs the browser-automation packages into it.":"One-time, about a minute. Downloads the browser-automation packages."),button:{action:"install",label:c("install","Install","Installing…")}};if(b.download){let a=Math.round(b.download.size/1048576);return{done:!1,text:`${d}${function(a){if(!a?.version)return"This computer has no Python the scanner can use.";let[b,c]=String(a.version).split(".").map(Number);return 3===b&&c>=10&&c<=14&&!1===a.venv?`This computer's Python ${a.version} can't make the scanner's own environment (on Ubuntu or Debian, python3-venv isn't installed).`:`This computer has Python ${a.version}, and the scanner needs 3.10 to 3.14.`}(b.systemPython)} Set up the scanner downloads its own Python ${b.download.version} (${a} MB, from GitHub) and the scanner's packages (from PyPI) into your data folder. Nothing else on this computer changes. About two minutes.`,button:{action:"setup",label:c("setup","Set up the scanner","Setting up…")}}}return{done:!1,text:`${d}No Python 3.10 to 3.14 was found on this machine. Install one from python.org, then reload.`,button:null}}(e),note:function(a,{done:b,button:c}){if(a?.source!=="bundled")return null;let d=/SIGKILL|code signature|not valid for use in process|quarantine|not permitted/i.test(a.problem||""),e=[`The Python that comes with the app didn't work (${a.problem}).`];return d&&e.push("macOS may have blocked it."),!1===a.retry&&e.push("Six Degrees won't try it again until you restart it."),b?e.push("The scanner uses another Python on this computer instead."):c?e.push(`To scan now, use ${h[c.action]} below: it gives the scanner a Python of its own in your data folder.`):e.push("To scan now, install Python 3.10 to 3.14 from python.org, then reload."),e.join(" ")}(e?.checks?.ownPython,a)};e&&aa.dependencies;let ad=e&&!aa.chrome,ae=e&&!aa.scriptsFound,af=e?.ready&&!ab,ag=e?.linkedin,ah=!!ag?.cooldown,ai=af&&!ah,aj=e?.network||{first:0,second:0,third:0},ak=aj.first,al=!i.IS_DEMO&&!U&&function(a,b){if(!a)return null;let c=a.network;return!!c&&!c.first&&!c.second&&!c.third&&!a.running&&(void 0===b?null:!!(b&&!b.fieldAsked&&!b.sectorFocus?.sectors?.length))}(e,S),am=e&&!ab&&null!=e.exitCode&&0!==e.exitCode,an=am?e.failure?.length?e.failure.join("\n"):[...e.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:F,display:"flex",alignItems:"center",gap:16},children:[(0,b.jsx)(f.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:F},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.",!ak&&(al?" One optional question, then three steps and your galaxy appears.":" Three steps and your galaxy appears; each one ticks itself off.")]}),null===al&&(0,b.jsx)("p",{style:{color:"#778",fontSize:13},children:"Checking your setup…"}),al&&(0,b.jsx)(D,{onDone:function(a){V({sectors:a}),window.scrollTo(0,0)}}),U&&(0,b.jsx)(E,{sectors:U.sectors}),!1===al&&(0,b.jsxs)(b.Fragment,{children:[X?.person.id===W&&(0,b.jsx)(I,{pick:X,pages:w,setPages:x,li:ag,running:ab,s:e,canSearch:ai,busy:l,onUnpick:function(){Y(null);try{window.history.replaceState(null,"",window.location.pathname)}catch{}},onStart:()=>_("bridge",{id:X.person.id,maxPages:w})}),ak>0&&!ab&&(0,b.jsx)(P,{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:[ak.toLocaleString()," connections"]}),aj.second>0&&(0,b.jsxs)(b.Fragment,{children:[", plus ",aj.second.toLocaleString()," people in their circles"]}),aj.third>0&&(0,b.jsxs)(b.Fragment,{children:[" and ",aj.third.toLocaleString()," from company scans"]}),"."," ",(0,b.jsx)("span",{style:{color:"#9aa"},children:"Your galaxy is ready."})]}),(0,b.jsx)(f.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 →"})]})}),e?.photosWaiting>0&&!ab&&(0,b.jsx)(P,{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:[e.photosWaiting.toLocaleString()," ",1===e.photosWaiting?"photo isn’t":"photos aren’t"," saved on this computer yet."]})," ",(0,b.jsx)("span",{style:{color:"#9aa"},children:"An older version kept them as links to LinkedIn. The app doesn’t load photos from LinkedIn while you browse, so those people show initials until the photos are saved here: now, or at the end of your next scan. An expired link can’t be saved; that person’s photo comes back when they’re next scanned."}),e&&!aa.dependencies&&(0,b.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5,marginTop:6},children:"Set up the scanner first (step 1 below): it saves them."})]}),(0,b.jsx)(O,{onClick:()=>_("photos"),disabled:l||!aa.dependencies,children:"Save photos"})]})}),am&&(0,b.jsxs)(P,{tone:"bad",children:[(0,b.jsx)("b",{children:"The last run stopped before it finished."}),an&&(0,b.jsx)("div",{style:{marginTop:6,color:"#e8c4c4",whiteSpace:"pre-wrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:12.5},children:an}),(0,b.jsx)("div",{style:{color:"#9aa",marginTop:6},children:"The full log is below."})]}),ae&&(0,b.jsxs)(P,{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:L,children:"scripts/scrape.py"})," next to the app. If you downloaded a zip, run the app from inside the project folder."]})]}),ad&&(0,b.jsxs)(P,{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."]})]}),e&&ac.note&&(0,b.jsx)(P,{tone:ac.done?void 0:"bad",children:ac.note}),(0,b.jsx)(N,{n:1,done:ac.done,title:"Set up the scanner",body:e?ac.text:"",action:e&&ac.button&&(0,b.jsx)(O,{onClick:()=>_(ac.button.action),disabled:l||ab,children:ac.button.label})}),(0,b.jsx)(N,{n:2,done:!!aa.signedIn,title:"Sign into LinkedIn",body:aa.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:aa.dependencies&&(0,b.jsx)(O,{onClick:()=>_("login"),disabled:l||ab,children:ab&&"login"===e.action?"Waiting for you…":"Open LinkedIn"})}),(0,b.jsx)(N,{n:3,done:ak>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)(O,{onClick:()=>_("full"),disabled:!ai,primary:!0,children:ab&&"full"===e.action?"Scanning…":"Scan my whole network"}),(0,b.jsx)(O,{onClick:()=>_("refresh"),disabled:!ai,children:ab&&"refresh"===e.action?"Checking…":"Check for new"})]})}),(0,b.jsx)(N,{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)(r,{cooldown:ag?.cooldown,disabled:l,onLift:()=>_("lift-cooldown")}),(0,b.jsx)(t,{li:ag,disabled:l,onSetLimits:a=>_("set-limits",a)}),"score"===s&&(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=p.includes(a);return(0,b.jsx)("button",{onClick:()=>q(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a]),disabled:ab,style:{width:30,height:28,borderRadius:7,fontSize:12,fontWeight:700,cursor:ab?"not-allowed":"pointer",border:F,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:p.length?"":"pick at least one"})]}),"newest"===s&&(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:s,onChange:a=>v(a.target.value),disabled:ab,style:M,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:w,onChange:a=>x(Number(a.target.value)),disabled:ab,style:M,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:ab?"not-allowed":"pointer"},children:[(0,b.jsx)("input",{type:"checkbox",checked:y,onChange:a=>z(a.target.checked),disabled:ab}),"Also finish people already mapped, from the page each one stopped at"]}),(0,b.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"#b8c4c4",cursor:ab?"default":"pointer"},children:[(0,b.jsx)("input",{type:"checkbox",checked:A,disabled:ab,style:{marginTop:3},onChange:a=>{B(a.target.checked),window.dispatchEvent(new Event("six-degrees:experimental"))}}),(0,b.jsxs)("span",{children:[(0,b.jsx)("b",{style:{color:"#FFD700"},children:"Experimental:"})," all-day pacing. Up to 10 pages in a sitting, then a 45-minute rest; searches only from 9:00 to 19:00; at the daily budget it waits for it to free up instead of stopping; and it saves every page. It also reads LinkedIn’s own data beside the page text, to fill gaps and measure how the two compare. It keeps running while the app is open."]})]}),(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"," ","about ",(0,j.circleScanCost)(w).minutes," 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)(O,{onClick:()=>_("auto-bridge",{maxBridges:n,tiers:"score"===s?p:[],order:s,maxPages:w,deeper:y,experimental:A}),disabled:!ai||"score"===s&&!p.length,primary:!0,children:ab&&"auto-bridge"===e.action?"Mapping…":"Map 2nd degree"}),(0,b.jsxs)("select",{value:n,onChange:a=>o(Number(a.target.value)),disabled:ab,style:M,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)(O,{onClick:()=>_("auto-bridge-retry",{maxBridges:n,tiers:"score"===s?p:[],order:s,maxPages:w,deeper:y}),disabled:!ai||"score"===s&&!p.length,children:"Retry hidden ones"})]}),(0,b.jsx)(u,{paused:e?.paused||[],disabled:!ai,onResume:a=>_("resume",{id:a.id}),onResumeAll:()=>_("resume-all",{maxBridges:n})})]})}),ab&&(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:F},children:[(0,b.jsx)(R,{}),(0,b.jsxs)("div",{style:{flex:1,fontSize:13.5},children:[(0,b.jsx)("b",{children:G[e.action]||"Working"}),e.progress&&(0,b.jsx)(Q,{p:e.progress,action:e.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)(O,{onClick:$,tone:"bad",children:"Stop"})]}),C&&(0,b.jsx)(P,{tone:"bad",children:C}),e?.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:[ab&&(0,b.jsx)(R,{}),ab?"Working":"Last run"]}),(0,b.jsx)("pre",{ref:J,style:{background:"rgba(0,0,0,0.45)",border:F,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:e.log.join("\n")})]})]}),(0,b.jsxs)("div",{style:{marginTop:32,paddingTop:20,borderTop:F,fontSize:13.5,color:"#8b9a9a"},children:["Checking for updates has moved to"," ",(0,b.jsx)(f.default,{href:"/settings#updates",style:{color:"#3498DB"},children:"Settings →"})]}),(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)(f.default,{href:"/import",style:{color:"#3498DB"},children:"import a CSV instead"}),"."]})]}),(0,b.jsx)("style",{children:`@keyframes spin { to { transform: rotate(360deg) } }
6
6
  @keyframes slide { 0% { transform: translateX(-100%) } 100% { transform: translateX(300%) } }`})]})}function I({pick:a,pages:c,setPages:d,li:e,running:g,s:h,canSearch:i,busy:k,onStart:l,onUnpick:m}){let{person:n,circle:o}=a,p=String(n.name||"").trim().split(/\s+/)[0]||"them",q=(0,j.circleScanCost)(c),r=g&&h?.target?.id===n.id,s=e?.leftToday!=null&&e.leftToday<q.searches;return(0,b.jsxs)("div",{style:{margin:"16px 0",padding:"16px 18px",borderRadius:10,fontSize:13.5,lineHeight:1.6,background:"rgba(0,255,136,0.05)",border:"1px solid rgba(0,255,136,0.3)"},children:[(0,b.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#00ff88",letterSpacing:.6,textTransform:"uppercase",marginBottom:4},children:"Scan one circle"}),(0,b.jsxs)("div",{style:{fontSize:16,fontWeight:700},children:[n.name," ",(0,b.jsxs)("span",{style:{fontSize:12,color:J[n.tier]||"#888"},children:[n.tier,"-tier"]})]}),n.unlocked_from_name&&(0,b.jsxs)("div",{style:{fontSize:12.5,color:"#9aa"},children:["Was in ",n.unlocked_from_name,"’s circle"]}),r?(0,b.jsxs)("div",{style:{marginTop:10},children:[(0,b.jsxs)("b",{children:["Scanning ",p,"’s circle."]})," It saves every 10 pages, and"," ",(0,b.jsx)(f.default,{href:`/?chain=${encodeURIComponent(n.id)}`,style:{color:"#00ff88"},children:"Bridge Chains shows it filling in →"})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{style:{color:"#b8c4c4",marginTop:10},children:["It costs ",(0,b.jsxs)("b",{children:[q.profileViews," profile view"]})," to find their list, then ",(0,b.jsx)("b",{children:"one LinkedIn search for every page"})," of it: up to ",q.searches," ",1===q.searches?"page":"pages",", about ",q.minutes," minutes.",e?.leftToday!=null&&(0,b.jsxs)(b.Fragment,{children:[" ",(0,b.jsx)("b",{children:e.leftToday})," of your ",e.limits?.daily," searches a day are left",s?"; the scan stops when they run out, and can carry on from that page later":"","."]})]}),"scanned"===o&&(0,b.jsx)("div",{style:{color:"#FFD700",fontSize:12.5,marginTop:6},children:"Their circle is already scanned. This reads their whole list again from page 1; to carry on from where a read stopped, use Resume on their card or in the Paused list below."}),"hidden"===o&&(0,b.jsx)("div",{style:{color:"#FFD700",fontSize:12.5,marginTop:6},children:"Their list was hidden last time it was tried. Trying again costs a profile view."}),(0,b.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"center",flexWrap:"wrap",marginTop:12},children:[(0,b.jsxs)(O,{onClick:l,disabled:!i||k,primary:!0,children:["Scan ",p,"’s circle"]}),(0,b.jsxs)("select",{value:c,onChange:a=>d(Number(a.target.value)),disabled:g,style:M,"aria-label":"How many pages of their list to read",children:[(0,b.jsx)("option",{value:100,children:"every page, to the end of their list"}),(0,b.jsx)("option",{value:50,children:"up to 50 pages"}),(0,b.jsx)("option",{value:25,children:"up to 25 pages"}),(0,b.jsx)("option",{value:10,children:"up to 10 pages (~100 people)"})]}),(0,b.jsx)(O,{onClick:m,children:"Not now"})]}),!i&&(0,b.jsx)("div",{style:{fontSize:12.5,color:"#8b9a9a",marginTop:8},children:g?"Something else is running. One scan at a time: this one can start when it finishes.":e?.cooldown?"Scanning is paused for now (see below).":"The scanner isn’t ready yet: finish the steps below first."})]})]})}let J={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"};function K(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 L={background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4},M={padding:"9px 10px",borderRadius:7,fontSize:13.5,fontWeight:600,background:"rgba(255,255,255,0.08)",color:"#fff",border:F};function N({n:a,done:c,title:d,body:e,action:f}){return(0,b.jsxs)("div",{style:{display:"flex",gap:16,padding:"20px 0",borderBottom:F,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 O({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:F,cursor:d?"not-allowed":"pointer"},children:a})}function P({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 Q({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="download"===a.kind?`Downloading Python: ${a.done.toFixed(1)} of ${a.total.toFixed(1)} MB \xb7 ${e}%`:"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 R(){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)(e.default,{children:(0,b.jsx)(c.Suspense,{children:(0,b.jsx)(H,{})})})}],65375)}];
7
7
 
8
8
  //# sourceMappingURL=app_setup_page_1-282zx.js.map