six-degrees 0.5.0 → 0.6.0

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 (366) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +14 -14
  4. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  5. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  10. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  11. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  13. package/.next/standalone/.next/server/app/_not-found.rsc +20 -19
  14. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +20 -19
  15. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +16 -15
  16. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  17. package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/data/export/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/data/import/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/data/restart/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/data/reveal/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/social/crm/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/social/messages/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/update/route.js +1 -1
  45. package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/import/page.js +1 -1
  50. package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/import.html +1 -1
  53. package/.next/standalone/.next/server/app/import.rsc +24 -23
  54. package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +24 -23
  55. package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +2 -2
  56. package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +18 -17
  57. package/.next/standalone/.next/server/app/index.html +1 -1
  58. package/.next/standalone/.next/server/app/index.rsc +22 -21
  59. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +18 -17
  60. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +22 -21
  61. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  62. package/.next/standalone/.next/server/app/launch/page.js +1 -1
  63. package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/launch.html +2 -2
  66. package/.next/standalone/.next/server/app/launch.rsc +24 -23
  67. package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +24 -23
  68. package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +2 -2
  69. package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +18 -17
  70. package/.next/standalone/.next/server/app/page.js +1 -1
  71. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/paths/page.js +1 -1
  74. package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
  75. package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/paths.html +1 -1
  77. package/.next/standalone/.next/server/app/paths.rsc +24 -23
  78. package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +24 -23
  79. package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +2 -2
  80. package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +18 -17
  81. package/.next/standalone/.next/server/app/profile/page.js +1 -1
  82. package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
  83. package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/profile.html +1 -1
  85. package/.next/standalone/.next/server/app/profile.rsc +24 -23
  86. package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +24 -23
  87. package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +2 -2
  88. package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +18 -17
  89. package/.next/standalone/.next/server/app/queue/page.js +1 -1
  90. package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/queue.html +1 -1
  93. package/.next/standalone/.next/server/app/queue.rsc +24 -23
  94. package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +24 -23
  95. package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +2 -2
  96. package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +18 -17
  97. package/.next/standalone/.next/server/app/scores/page.js +1 -1
  98. package/.next/standalone/.next/server/app/scores/page.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/scores/page_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/scores.html +1 -1
  101. package/.next/standalone/.next/server/app/scores.rsc +24 -23
  102. package/.next/standalone/.next/server/app/scores.segments/_full.segment.rsc +24 -23
  103. package/.next/standalone/.next/server/app/scores.segments/_tree.segment.rsc +2 -2
  104. package/.next/standalone/.next/server/app/scores.segments/scores/__PAGE__.segment.rsc +18 -17
  105. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  106. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  107. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/settings.html +1 -1
  109. package/.next/standalone/.next/server/app/settings.rsc +24 -23
  110. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +24 -23
  111. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  112. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +18 -17
  113. package/.next/standalone/.next/server/app/setup/page.js +1 -1
  114. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  115. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/setup.html +1 -1
  117. package/.next/standalone/.next/server/app/setup.rsc +24 -23
  118. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +24 -23
  119. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  120. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +18 -17
  121. package/.next/standalone/.next/server/app/social/page.js +1 -1
  122. package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -1
  123. package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/social.html +1 -1
  125. package/.next/standalone/.next/server/app/social.rsc +24 -23
  126. package/.next/standalone/.next/server/app/social.segments/_full.segment.rsc +24 -23
  127. package/.next/standalone/.next/server/app/social.segments/_tree.segment.rsc +2 -2
  128. package/.next/standalone/.next/server/app/social.segments/social/__PAGE__.segment.rsc +18 -17
  129. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-rnla2._.js +1 -1
  130. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00la_y0._.js +1 -1
  131. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05_3-22._.js +1 -1
  132. package/.next/standalone/.next/server/chunks/[root-of-the-server]__07t47cm._.js +1 -1
  133. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cj5jqc._.js +1 -1
  134. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e0fei3._.js +1 -1
  135. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljnyho._.js +1 -1
  136. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o5-tcg._.js +1 -1
  137. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qrnous._.js +1 -1
  138. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t3v1a1._.js +1 -1
  139. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0um1uey._.js +1 -1
  140. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wmexuc._.js +1 -1
  141. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0xu34sz._.js +1 -1
  142. package/.next/standalone/.next/server/chunks/[root-of-the-server]__133knx1._.js +1 -1
  143. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13dx4sd._.js +1 -1
  144. package/.next/standalone/.next/server/chunks/[root-of-the-server]__14ou7j5._.js +1 -1
  145. package/.next/standalone/.next/server/chunks/[root-of-the-server]__15-17hl._.js +1 -1
  146. package/.next/standalone/.next/server/chunks/[root-of-the-server]__15wc9e-._.js +1 -1
  147. package/.next/standalone/.next/server/chunks/[root-of-the-server]__16iu0hv._.js +1 -1
  148. package/.next/standalone/.next/server/chunks/[root-of-the-server]__18bcnu4._.js +3 -0
  149. package/.next/standalone/.next/server/chunks/[root-of-the-server]__19b7mig._.js +1 -1
  150. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bbcwub._.js +2 -2
  151. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1eris29._.js +1 -1
  152. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1gjo_cq._.js +1 -1
  153. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1kbl21f._.js +1 -1
  154. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qcm08_._.js +1 -1
  155. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1rphsdk._.js +1 -1
  156. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1tir0vc._.js +2 -2
  157. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1w25q0m._.js +1 -1
  158. package/.next/standalone/.next/server/chunks/[root-of-the-server]__20rwfdw._.js +2 -2
  159. package/.next/standalone/.next/server/chunks/_1_fynia._.js +7 -7
  160. package/.next/standalone/.next/server/chunks/_1itd1o_._.js +2 -2
  161. package/.next/standalone/.next/server/chunks/lib_0851sk0._.js +5 -5
  162. package/.next/standalone/.next/server/chunks/lib_1q7p2ro._.js +5 -5
  163. package/.next/standalone/.next/server/chunks/lib_1r6l86l._.js +5 -5
  164. package/.next/standalone/.next/server/chunks/lib_db-client_15le7cw.js +9 -9
  165. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08oxiqh._.js +3 -0
  166. package/.next/standalone/.next/server/chunks/ssr/_03l7vge._.js +1 -1
  167. package/.next/standalone/.next/server/chunks/ssr/_08g31gm._.js +3 -0
  168. package/.next/standalone/.next/server/chunks/ssr/_0gk_ofx._.js +3 -0
  169. package/.next/standalone/.next/server/chunks/ssr/_0nwsf93._.js +3 -0
  170. package/.next/standalone/.next/server/chunks/ssr/_0vho1lb._.js +3 -0
  171. package/.next/standalone/.next/server/chunks/ssr/{_0jdkqgi._.js → _1-658fq._.js} +2 -2
  172. package/.next/standalone/.next/server/chunks/ssr/_1bc46kz._.js +3 -0
  173. package/.next/standalone/.next/server/chunks/ssr/_1f_n00p._.js +3 -0
  174. package/.next/standalone/.next/server/chunks/ssr/_1fm1ih_._.js +9 -0
  175. package/.next/standalone/.next/server/chunks/ssr/_1k2nmbw._.js +9 -0
  176. package/.next/standalone/.next/server/chunks/ssr/_2105jz8._.js +3 -0
  177. package/.next/standalone/.next/server/chunks/ssr/app_141w189._.js +1 -1
  178. package/.next/standalone/.next/server/chunks/ssr/app_components_0t908t-._.js +3 -0
  179. package/.next/standalone/.next/server/chunks/ssr/app_components_0uuff77._.js +13 -0
  180. package/.next/standalone/.next/server/chunks/ssr/app_components_1j3q-h5._.js +13 -0
  181. package/.next/standalone/.next/server/chunks/ssr/{_0gtv9jb._.js → app_components_CompanyScores_1g0mytz.js} +2 -2
  182. package/.next/standalone/.next/server/chunks/ssr/app_components_settings_SectorPicker_1c-29qw.js +1 -1
  183. package/.next/standalone/.next/server/chunks/ssr/app_import_page_1fmu6_l.js +1 -1
  184. package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +14 -12
  185. package/.next/standalone/.next/server/chunks/ssr/app_paths_page_1ol90m7.js +2 -2
  186. package/.next/standalone/.next/server/chunks/ssr/app_profile_page_0u3-l5y.js +1 -1
  187. package/.next/standalone/.next/server/chunks/ssr/app_queue_page_0c6znd6.js +6 -6
  188. package/.next/standalone/.next/server/chunks/ssr/app_settings_page_1f8mjj_.js +1 -1
  189. package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +4 -4
  190. package/.next/standalone/.next/server/chunks/ssr/app_social_page_0h7zxda.js +1 -1
  191. package/.next/standalone/.next/server/chunks/ssr/{lib_0i8v-s3._.js → lib_1c4ieuw._.js} +2 -2
  192. package/.next/standalone/.next/server/chunks/ssr/lib_galaxy-lab_108_lu-.js +1 -1
  193. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  194. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  195. package/.next/standalone/.next/server/pages/404.html +1 -1
  196. package/.next/standalone/.next/server/pages/500.html +1 -1
  197. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  198. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  199. package/.next/standalone/.next/static/chunks/02pq76u7y4v9-.js +22 -0
  200. package/.next/standalone/.next/static/chunks/0cmq0exd4d0h9.js +1 -0
  201. package/.next/{static/chunks/2wgz9ietkqqe6.js → standalone/.next/static/chunks/0i02yxppzds1o.js} +1 -1
  202. package/.next/standalone/.next/static/chunks/0m_p4k-q2qh--.js +1 -0
  203. package/.next/standalone/.next/static/chunks/0oyslj62jkubd.js +1 -0
  204. package/.next/standalone/.next/static/chunks/{1x_ysly42-teq.css → 0vo-l8hxneba6.css} +1 -1
  205. package/.next/{static/chunks/3sowbvbaj1s6n.js → standalone/.next/static/chunks/0ws7zy0w57ufi.js} +1 -1
  206. package/.next/standalone/.next/static/chunks/0yh8z2tbrc5i_.js +1 -0
  207. package/.next/standalone/.next/static/chunks/172e10mi-tpo_.js +34 -0
  208. package/.next/standalone/.next/static/chunks/1ei5vbe2uw6fl.js +1 -0
  209. package/.next/standalone/.next/static/chunks/1f7_pl_wq7lh3.js +11 -0
  210. package/.next/standalone/.next/static/chunks/1jzbe7zdx9vbj.js +2 -0
  211. package/.next/standalone/.next/static/chunks/1m3017gp790pw.js +45 -0
  212. package/.next/standalone/.next/static/chunks/1t20e8u0st7ep.js +1 -0
  213. package/.next/standalone/.next/static/chunks/2-ch9rm27eril.js +11 -0
  214. package/.next/standalone/.next/static/chunks/2ldv-v3s9yaif.js +1 -0
  215. package/.next/standalone/.next/static/chunks/3bp284gjf7dyq.js +1 -0
  216. package/.next/standalone/.next/static/chunks/3k1f6clbn3gj3.js +7 -0
  217. package/.next/standalone/.next/static/chunks/3l4t8je6iguzc.js +1 -0
  218. package/.next/standalone/.next/static/chunks/{0muwt9bykzr-1.js → 3tplzuc9jk-tl.js} +1 -1
  219. package/.next/standalone/.next/static/chunks/42m0bqr8pbovz.js +11 -0
  220. package/.next/standalone/CHANGELOG.md +61 -0
  221. package/.next/standalone/README.md +22 -8
  222. package/.next/standalone/app/api/scraper/route.js +40 -3
  223. package/.next/standalone/app/api/update/route.js +12 -6
  224. package/.next/standalone/app/components/AppHeader.js +257 -0
  225. package/.next/standalone/app/components/Avatar.js +2 -1
  226. package/.next/standalone/app/components/ChainView.js +12 -12
  227. package/.next/standalone/app/components/FilterPanel.js +20 -12
  228. package/.next/standalone/app/components/ForceGraph.js +163 -25
  229. package/.next/standalone/app/components/GalaxyLab.js +43 -12
  230. package/.next/standalone/app/components/GridView.js +4 -4
  231. package/.next/standalone/app/components/LinkedInLimits.js +2 -1
  232. package/.next/standalone/app/components/ListView.js +3 -3
  233. package/.next/standalone/app/components/NoteDetail.js +2 -1
  234. package/.next/standalone/app/components/OnboardingGate.js +2 -2
  235. package/.next/standalone/app/components/OutlinkQuest.js +2 -1
  236. package/.next/standalone/app/components/PathsAnalyzer.js +3 -2
  237. package/.next/standalone/app/components/PeopleMap.js +2 -1
  238. package/.next/standalone/app/components/RingsView.js +3 -3
  239. package/.next/standalone/app/components/ScanTrail.js +85 -0
  240. package/.next/standalone/app/components/SeparationView.js +100 -77
  241. package/.next/standalone/app/components/Sidebar.js +4 -4
  242. package/.next/standalone/app/components/TheirCircle.js +2 -1
  243. package/.next/standalone/app/components/ThemeLoader.js +9 -0
  244. package/.next/standalone/app/components/UpdatePanel.js +20 -2
  245. package/.next/standalone/app/components/settings/AppearanceSection.js +226 -0
  246. package/.next/standalone/app/components/settings/NetworkHealthSection.js +2 -1
  247. package/.next/standalone/app/components/ui.js +2 -1
  248. package/.next/standalone/app/globals.css +70 -2
  249. package/.next/standalone/app/import/page.js +3 -3
  250. package/.next/standalone/app/layout.js +11 -2
  251. package/.next/standalone/app/page.js +69 -215
  252. package/.next/standalone/app/paths/page.js +8 -21
  253. package/.next/standalone/app/profile/page.js +11 -10
  254. package/.next/standalone/app/queue/page.js +8 -21
  255. package/.next/standalone/app/scores/page.js +1 -1
  256. package/.next/standalone/app/settings/page.js +7 -3
  257. package/.next/standalone/app/setup/page.js +83 -88
  258. package/.next/standalone/app/social/Crm.js +2 -1
  259. package/.next/standalone/app/social/SocialHub.js +2 -2
  260. package/.next/standalone/app/social/page.js +1 -1
  261. package/.next/standalone/lib/data-import.js +1 -0
  262. package/.next/standalone/lib/galaxy-export.js +2 -1
  263. package/.next/standalone/lib/galaxy-lab.js +24 -8
  264. package/.next/standalone/lib/level.js +51 -0
  265. package/.next/standalone/lib/release.js +13 -7
  266. package/.next/standalone/lib/scanner-python.js +38 -8
  267. package/.next/standalone/lib/scraper-client.js +2 -1
  268. package/.next/standalone/lib/separation.js +4 -2
  269. package/.next/standalone/lib/theme-store.js +61 -0
  270. package/.next/standalone/lib/themes.js +186 -0
  271. package/.next/standalone/lib/tiers.js +2 -8
  272. package/.next/standalone/package-lock.json +2 -2
  273. package/.next/standalone/package.json +4 -4
  274. package/.next/standalone/scripts/build-desktop.mjs +325 -0
  275. package/.next/standalone/scripts/build-site.mjs +85 -15
  276. package/.next/standalone/scripts/gen-test-network.mjs +93 -0
  277. package/.next/standalone/scripts/next.mjs +20 -0
  278. package/.next/standalone/scripts/readme_buttons.py +3 -0
  279. package/.next/standalone/scripts/requirements.txt +18 -1
  280. package/.next/standalone/scripts/site-news.mjs +54 -9
  281. package/.next/standalone/scripts/smoke-desktop.mjs +177 -0
  282. package/.next/standalone/scripts/windows/six-degrees.iss +100 -0
  283. package/.next/static/chunks/02pq76u7y4v9-.js +22 -0
  284. package/.next/static/chunks/0cmq0exd4d0h9.js +1 -0
  285. package/.next/{standalone/.next/static/chunks/2wgz9ietkqqe6.js → static/chunks/0i02yxppzds1o.js} +1 -1
  286. package/.next/static/chunks/0m_p4k-q2qh--.js +1 -0
  287. package/.next/static/chunks/0oyslj62jkubd.js +1 -0
  288. package/.next/static/chunks/{1x_ysly42-teq.css → 0vo-l8hxneba6.css} +1 -1
  289. package/.next/{standalone/.next/static/chunks/3sowbvbaj1s6n.js → static/chunks/0ws7zy0w57ufi.js} +1 -1
  290. package/.next/static/chunks/0yh8z2tbrc5i_.js +1 -0
  291. package/.next/static/chunks/172e10mi-tpo_.js +34 -0
  292. package/.next/static/chunks/1ei5vbe2uw6fl.js +1 -0
  293. package/.next/static/chunks/1f7_pl_wq7lh3.js +11 -0
  294. package/.next/static/chunks/1jzbe7zdx9vbj.js +2 -0
  295. package/.next/static/chunks/1m3017gp790pw.js +45 -0
  296. package/.next/static/chunks/1t20e8u0st7ep.js +1 -0
  297. package/.next/static/chunks/2-ch9rm27eril.js +11 -0
  298. package/.next/static/chunks/2ldv-v3s9yaif.js +1 -0
  299. package/.next/static/chunks/3bp284gjf7dyq.js +1 -0
  300. package/.next/static/chunks/3k1f6clbn3gj3.js +7 -0
  301. package/.next/static/chunks/3l4t8je6iguzc.js +1 -0
  302. package/.next/static/chunks/{0muwt9bykzr-1.js → 3tplzuc9jk-tl.js} +1 -1
  303. package/.next/static/chunks/42m0bqr8pbovz.js +11 -0
  304. package/CHANGELOG.md +61 -0
  305. package/README.md +22 -8
  306. package/lib/data-import.js +1 -0
  307. package/lib/galaxy-export.js +2 -1
  308. package/lib/galaxy-lab.js +24 -8
  309. package/lib/level.js +51 -0
  310. package/lib/release.js +13 -7
  311. package/lib/scanner-python.js +38 -8
  312. package/lib/scraper-client.js +2 -1
  313. package/lib/separation.js +4 -2
  314. package/lib/theme-store.js +61 -0
  315. package/lib/themes.js +186 -0
  316. package/lib/tiers.js +2 -8
  317. package/package.json +4 -4
  318. package/scripts/requirements.txt +18 -1
  319. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljcioj._.js +0 -3
  320. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16hs8kw._.js +0 -3
  321. package/.next/standalone/.next/server/chunks/ssr/_01kacen._.js +0 -3
  322. package/.next/standalone/.next/server/chunks/ssr/_0xi-fbs._.js +0 -3
  323. package/.next/standalone/.next/server/chunks/ssr/_0xmwmfv._.js +0 -3
  324. package/.next/standalone/.next/server/chunks/ssr/_1-b9hj7._.js +0 -9
  325. package/.next/standalone/.next/server/chunks/ssr/_112ewem._.js +0 -3
  326. package/.next/standalone/.next/server/chunks/ssr/_16ab63q._.js +0 -3
  327. package/.next/standalone/.next/server/chunks/ssr/_1fxm0-s._.js +0 -3
  328. package/.next/standalone/.next/server/chunks/ssr/_1ra1d3r._.js +0 -9
  329. package/.next/standalone/.next/server/chunks/ssr/app_components_ui_0pdmz2z.js +0 -3
  330. package/.next/standalone/.next/server/chunks/ssr/lib_13rapwj._.js +0 -3
  331. package/.next/standalone/.next/static/chunks/03bziijw5srol.js +0 -1
  332. package/.next/standalone/.next/static/chunks/0bgq8wmopl_ig.js +0 -7
  333. package/.next/standalone/.next/static/chunks/0ezus6p2eb-vg.js +0 -1
  334. package/.next/standalone/.next/static/chunks/0g_fy2034bp0x.js +0 -34
  335. package/.next/standalone/.next/static/chunks/0q5dru4q6gxl5.js +0 -22
  336. package/.next/standalone/.next/static/chunks/0w-byiwb2zax8.js +0 -2
  337. package/.next/standalone/.next/static/chunks/1g7jcovdejc9-.js +0 -1
  338. package/.next/standalone/.next/static/chunks/1i51yylxdzht1.js +0 -1
  339. package/.next/standalone/.next/static/chunks/1zf8swaasjf1e.js +0 -43
  340. package/.next/standalone/.next/static/chunks/2dwtoszeq91us.js +0 -1
  341. package/.next/standalone/.next/static/chunks/2rqtpccruavf2.js +0 -1
  342. package/.next/standalone/.next/static/chunks/30x3oq_st7a5r.js +0 -1
  343. package/.next/standalone/.next/static/chunks/355ryio1b7sm1.js +0 -1
  344. package/.next/standalone/.next/static/chunks/3ap5hgma7n0o7.js +0 -1
  345. package/.next/standalone/.next/static/chunks/3fci6qi39-1n5.js +0 -1
  346. package/.next/static/chunks/03bziijw5srol.js +0 -1
  347. package/.next/static/chunks/0bgq8wmopl_ig.js +0 -7
  348. package/.next/static/chunks/0ezus6p2eb-vg.js +0 -1
  349. package/.next/static/chunks/0g_fy2034bp0x.js +0 -34
  350. package/.next/static/chunks/0q5dru4q6gxl5.js +0 -22
  351. package/.next/static/chunks/0w-byiwb2zax8.js +0 -2
  352. package/.next/static/chunks/1g7jcovdejc9-.js +0 -1
  353. package/.next/static/chunks/1i51yylxdzht1.js +0 -1
  354. package/.next/static/chunks/1zf8swaasjf1e.js +0 -43
  355. package/.next/static/chunks/2dwtoszeq91us.js +0 -1
  356. package/.next/static/chunks/2rqtpccruavf2.js +0 -1
  357. package/.next/static/chunks/30x3oq_st7a5r.js +0 -1
  358. package/.next/static/chunks/355ryio1b7sm1.js +0 -1
  359. package/.next/static/chunks/3ap5hgma7n0o7.js +0 -1
  360. package/.next/static/chunks/3fci6qi39-1n5.js +0 -1
  361. /package/.next/standalone/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_buildManifest.js +0 -0
  362. /package/.next/standalone/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_clientMiddlewareManifest.js +0 -0
  363. /package/.next/standalone/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_ssgManifest.js +0 -0
  364. /package/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_buildManifest.js +0 -0
  365. /package/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_clientMiddlewareManifest.js +0 -0
  366. /package/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94657,e=>{"use strict";var t=e.i(43476),o=e.i(71645),n=e.i(7837);let r=e=>`${e.name} ${e.was} → ${e.estimated?"estimated":e.now}`,a=e=>({padding:"6px 12px",borderRadius:7,cursor:"pointer",fontSize:12,fontWeight:700,border:e?"none":"1px solid rgba(255,255,255,0.15)",background:e?"linear-gradient(135deg, #00ff88, #3498DB)":"transparent",color:e?"#000":"#cfd8d8"});function i({onAnswered:e}){var s;let l,c,[d,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(!1),[g,f]=(0,o.useState)(()=>new Set),[y,m]=(0,o.useState)(!1),[b,x]=(0,o.useState)(null);if((0,o.useEffect)(()=>{if((0,n.csvNetworkSource)())return;let e=!1;return fetch("/api/company-scores/legacy").then(e=>e.json()).then(t=>{!e&&t.offer?.companies?.length&&(u(t.offer),f(new Set(t.offer.companies.map(e=>e.name))))}).catch(()=>{}),()=>{e=!0}},[]),!d)return null;let w=async t=>{m(!0),x(null);try{let o=await fetch("/api/company-scores/legacy",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({keep:t})}),n=await o.json();if(!o.ok&&!n.kept)throw Error(n.error||"Could not save your answer.");u(null),e?.({kept:n.kept||[],scored:n.scored||0,error:o.ok?null:n.error})}catch(e){x(e.message)}finally{m(!1)}};return(0,t.jsxs)("section",{"aria-label":"Built-in scores changed",style:{marginBottom:14,padding:14,borderRadius:10,border:"1px solid rgba(255,215,0,0.35)",background:"rgba(255,215,0,0.06)",fontSize:12.5,color:"#cfd8d8",lineHeight:1.6},children:[(0,t.jsx)("b",{style:{color:"#fff"},children:"Built-in scores changed in this version:"})," ",(l=(s=d.companies).slice(0,3).map(r).join(", "),(c=s.length-3)>0?`${l} and ${c} more`:l),"."," ","Keep any of the old ones as your own?",(0,t.jsx)("div",{style:{marginTop:4,color:"#8b9a9a"},children:"The built-in list now holds only companies most professionals would recognise, scored the same for everyone; anything else is estimated from your network. A score you keep is yours, like one you set below, and Auto hands it back."}),p&&(0,t.jsx)("ul",{style:{listStyle:"none",padding:0,margin:"10px 0 0",display:"grid",gap:4},children:d.companies.map(e=>(0,t.jsx)("li",{children:(0,t.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"baseline",cursor:"pointer"},children:[(0,t.jsx)("input",{type:"checkbox",checked:g.has(e.name),disabled:y,onChange:()=>{let t;return t=e.name,f(e=>{let o=new Set(e);return o.has(t)?o.delete(t):o.add(t),o})}}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{style:{color:"#fff"},children:e.name})," ",e.was," → ",e.estimated?`estimated (${e.now})`:e.now,(0,t.jsxs)("span",{style:{color:"#778"},children:[` \xb7 ${e.people} ${1===e.people?"person":"people"} there now`,e.names.length>1&&` \xb7 for ${e.names.join(", ")}`]})]})]})},e.name))}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,marginTop:10,flexWrap:"wrap"},children:[p?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("button",{disabled:y||!g.size,onClick:()=>w([...g]),style:{...a(!0),opacity:y||!g.size?.5:1},children:["Keep ",g.size," ",1===g.size?"score":"scores"]}),(0,t.jsx)("button",{disabled:y,onClick:()=>h(!1),style:a(!1),children:"Back"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{disabled:y,onClick:()=>w(d.companies.map(e=>e.name)),style:a(!0),children:"Keep all"}),(0,t.jsx)("button",{disabled:y,onClick:()=>h(!0),style:a(!1),children:"Choose…"})]}),(0,t.jsx)("button",{disabled:y,onClick:()=>w([]),style:a(!1),children:"No thanks"})]}),b&&(0,t.jsx)("div",{role:"alert",style:{marginTop:8,color:"#e74c3c"},children:b})]})}let s="1px solid rgba(255,255,255,0.1)",l={yours:{label:"your score",color:"#00ff88"},known:{label:"known list",color:"#3498DB"},data:{label:"public data",color:"#1abc9c"},network:{label:"estimated: many of your people",color:"#FF6B35"},default:{label:"unknown company",color:"#778"}};async function c(){let e=await fetch("/api/company-scores"),t=await e.json();if(!e.ok)throw Error(t.error||"Could not load company scores");return t.companies}function d(){let[e,t]=(0,o.useState)(null),[n,r]=(0,o.useState)(null);return(0,o.useEffect)(()=>{let e=!1;return c().then(o=>{e||t(o)}).catch(t=>{e||r(t.message)}),()=>{e=!0}},[]),{companies:e,error:n,setScore:(0,o.useCallback)(async(e,o)=>{let n=await fetch("/api/company-scores",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e,score:o})}),r=await n.json();if(!n.ok)throw Error(r.error||"Could not save");return t(await c()),r},[]),reload:(0,o.useCallback)(async()=>t(await c()),[])}}function u({company:e,onSet:n,compact:r}){let[a,i]=(0,o.useState)(!1),l=async t=>{i(!0);try{await n(e.name,"auto"===t?null:Number(t))}finally{i(!1)}};return(0,t.jsxs)("select",{disabled:a,value:"yours"===e.source?String(e.score):"auto",onChange:e=>l(e.target.value),title:"Set this company's score. Auto uses the known list or an estimate.",style:{padding:r?"2px 4px":"4px 6px",borderRadius:6,border:s,background:"#11131c",color:"#dfe6e9",fontSize:12},children:[(0,t.jsxs)("option",{value:"auto",children:["Auto (","yours"===e.source?e.suggested??"est.":e.score,")"]}),[10,9,8,7,6,5,4,3,2,1].map(e=>(0,t.jsx)("option",{value:e,children:e},e))]})}e.s(["ScorePicker",0,u,"default",0,function({onRescored:e,version:n=0}){let{companies:r,error:a,setScore:c,reload:p}=d();(0,o.useEffect)(()=>{n&&p().catch(()=>{})},[n,p]);let[h,g]=(0,o.useState)(""),[f,y]=(0,o.useState)("all"),[m,b]=(0,o.useState)(150),[x,w]=(0,o.useState)(null),k=e=>{w(e),setTimeout(()=>w(null),3500)},v=async(t,o)=>{let n=await c(t,o);k(`${t}: ${null==o?"back to auto":`set to ${o}`} \xb7 rescored ${n.scored} people`),e?.()},j=async({kept:t,scored:o,error:n})=>{if(!t.length)return k("Keeping the new built-in scores.");k(n||`Kept ${t.length} old ${1===t.length?"score":"scores"} as your own \xb7 rescored ${o} people`),await p().catch(()=>{}),e?.()},S=(0,o.useMemo)(()=>{if(!r)return[];let e=h.trim().toLowerCase();return r.filter(t=>(!e||t.name.toLowerCase().includes(e))&&("all"===f||t.source===f))},[r,h,f]);if(a)return(0,t.jsx)("div",{style:{padding:24,color:"#e74c3c"},children:a});if(!r)return(0,t.jsx)("div",{style:{padding:24,color:"#778"},children:"Loading companies…"});let C=e=>r.filter(t=>t.source===e).length;return(0,t.jsxs)("div",{style:{flex:1,overflow:"auto",padding:16},children:[(0,t.jsxs)("div",{style:{maxWidth:980,margin:"0 auto"},children:[(0,t.jsx)(i,{onAnswered:j}),(0,t.jsxs)("div",{style:{padding:14,borderRadius:10,border:s,background:"rgba(255,255,255,0.03)",fontSize:12.5,color:"#cfd8d8",lineHeight:1.6},children:[(0,t.jsx)("b",{style:{color:"#fff"},children:"How a power score works."})," power = ",(0,t.jsx)("b",{children:"title"})," × ",(0,t.jsx)("b",{children:"company weight"})," + bonus. The title (student 1 … founder or C-suite 10) comes from someone’s roles, with former roles at 70%; an audience of their own counts like a title (1M+ followers like a director). The company weight runs from 0.725 for a company we don’t know (or none found), the middle of the scale, to 1.0 (a company scored 10), so seniority counts for more at a bigger company. The bonus is at most +1.5, for investor, YC, an audience in the millions or the top award of any field, and counts half at an unknown company. A 1st-degree person whose circle is unusually strong gets up to +2 more: up to +1 for a high share of it at A or S, or +1 for every 25 people there. Tiers are graded on your network’s curve unless you choose the fixed scale (",(0,t.jsx)("a",{href:"#tiers",style:{color:"#3498DB"},children:"Tiers"}),", above): your top 3% are S, the next 12% A, the next 25% B (it only lifts, and never lifts anyone under 4 into S or A). On the fixed scale, S ≥ 7.5 · A ≥ 5.5 · B ≥ 4 · C ≥ 2.5.",(0,t.jsxs)("div",{style:{marginTop:6,color:"#8b9a9a"},children:["So a VP at a 10 scores 9.0, a founder at an unknown company 7.3, a director at an unknown company 5.4, and an intern at a 10 scores 2.0. Set a company’s score below and everyone there is rescored. Companies in the sectors you pick (",(0,t.jsx)("a",{href:"#sector",style:{color:"#3498DB"},children:"Your sector"}),", above) get +1 or +2; a score you set is never changed."]})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",margin:"14px 0 10px"},children:[(0,t.jsx)("input",{value:h,onChange:e=>g(e.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:180}}),[["all",`All ${r.length}`],["known",`Known list ${C("known")}`],["data",`Public data ${C("data")}`],["yours",`Yours ${C("yours")}`],["network",`Estimated ${C("network")}`],["default",`Unknown ${C("default")}`]].map(([e,o])=>(0,t.jsx)("button",{onClick:()=>y(e),style:{padding:"5px 10px",borderRadius:7,border:s,cursor:"pointer",fontSize:11.5,fontWeight:600,background:f===e?"rgba(52,152,219,0.25)":"transparent",color:f===e?"#cfe6f7":"#8b9a9a"},children:o},e))]}),(0,t.jsxs)("div",{style:{borderRadius:10,border:s,overflow:"hidden"},children:[(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 70px 70px 70px 60px 180px 110px",gap:8,padding:"8px 12px",fontSize:10.5,letterSpacing:.6,color:"#8b9a9a",background:"rgba(255,255,255,0.04)"},children:[(0,t.jsx)("span",{children:"COMPANY"}),(0,t.jsx)("span",{style:{textAlign:"right"},children:"PEOPLE"}),(0,t.jsx)("span",{style:{textAlign:"right"},children:"YOU KNOW"}),(0,t.jsx)("span",{style:{textAlign:"right"},children:"DIRECTOR+"}),(0,t.jsx)("span",{style:{textAlign:"right"},children:"SCORE"}),(0,t.jsx)("span",{children:"SOURCE"}),(0,t.jsx)("span",{children:"SET"})]}),S.slice(0,m).map(e=>(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 70px 70px 70px 60px 180px 110px",gap:8,padding:"7px 12px",alignItems:"center",borderTop:"1px solid rgba(255,255,255,0.05)",fontSize:12.5},children:[(0,t.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,t.jsx)("span",{title:`${e.industry.label} (inferred)`,style:{width:8,height:8,borderRadius:"50%",background:e.industry.color,flexShrink:0}}),(0,t.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]}),(0,t.jsx)("span",{style:{textAlign:"right"},children:e.people}),(0,t.jsx)("span",{style:{textAlign:"right",color:e.d1?"#00ff88":"#556"},children:e.d1}),(0,t.jsx)("span",{style:{textAlign:"right",color:e.senior?"#FFD700":"#556"},children:e.senior}),(0,t.jsx)("b",{style:{textAlign:"right",fontSize:15},children:e.score}),(0,t.jsxs)("span",{style:{fontSize:11,color:l[e.source]?.color},children:[l[e.source]?.label,e.sectorBonus>0&&(0,t.jsxs)("span",{style:{color:"#00ff88"},children:[" + ",e.sectorBonus," your sector"]})]}),(0,t.jsx)(u,{company:e,onSet:v,compact:!0})]},e.name))]}),S.length>m&&(0,t.jsxs)("button",{onClick:()=>b(e=>e+300),style:{marginTop:10,padding:"7px 14px",borderRadius:8,border:s,background:"rgba(255,255,255,0.05)",color:"#dfe6e9",cursor:"pointer",fontSize:12},children:["Show more (",S.length-m," left)"]})]}),x&&(0,t.jsx)("div",{role:"status",style:{position:"fixed",bottom:24,left:"50%",transform:"translateX(-50%)",padding:"10px 18px",borderRadius:24,background:"linear-gradient(135deg, #00ff88, #3498DB)",color:"#000",fontWeight:800,fontSize:13,zIndex:50},children:x})]})},"useCompanyScores",0,d],94657)},2776,e=>{"use strict";var t=e.i(43476),o=e.i(15812);e.s(["default",0,function({children:e}){let{userId:n,ready:r}=(0,o.useUser)();return r&&n?e:(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"#fff",padding:24,textAlign:"center",fontFamily:"var(--sd-font)"},children:r?(0,t.jsxs)("div",{style:{maxWidth:420},children:[(0,t.jsx)("div",{style:{fontSize:18,fontWeight:700,marginBottom:8},children:"Can’t reach Six Degrees’ local server"}),(0,t.jsx)("div",{style:{color:"#888",fontSize:14,lineHeight:1.6},children:"The page loaded but the app behind it is not answering. If you started it from a terminal, check that window for an error, then reload this page."})]}):(0,t.jsx)("div",{style:{fontSize:18,fontWeight:600},children:"Loading…"})})}])},89154,e=>{"use strict";var t=e.i(90179);function o(e){let o=(0,t.readTitle)(e);return{key:o.key,label:o.label,level:o.level}}function n(e){return(0,t.currentCompany)(e)}let r=[{key:"defense",label:"Government, Defense & Aerospace",color:"#7f8c8d",words:/\b(government|federal|state of|county|city of|defen[cs]e|army|navy|air force|marine corps|military|dod|nasa|aerospace|lockheed|northrop|boeing|raytheon|l3harris|leidos|blue origin|spacex|public sector)\b/i},{key:"finance",label:"Finance & Investing",color:"#2ecc71",words:/\b(bank|banking|capital|ventures?|vc|investments?|investor|fund|private equity|growth equity|asset management|wealth|trading|trader|hedge|crypto|blockchain|web3|defi|fintech|stripe|coinbase|blackrock|robinhood|goldman|morgan stanley|jpmorgan|chase|bny|mellon|wells fargo|citi|citigroup|capital one|fidelity|vanguard|schwab|visa|mastercard|amex|american express|paypal|insurance|accounting|cpa|financial)\b/i},{key:"health",label:"Healthcare & Biotech",color:"#e74c3c",words:/\b(health|healthcare|medical|medicine|hospital|clinic|pharma|pharmaceutical|biotech|nurse|nursing|physician|doctor|dental|therapy|therapist|wellness)\b/i},{key:"education",label:"Education",color:"#f1c40f",words:/\b(university|college|school|education|student|professor|teacher|academy|phd|faculty|alumni)\b/i},{key:"media",label:"Marketing & Media",color:"#e67e22",words:/\b(marketing|brand|branding|advertising|agency|media|content|social media|creative|creator|influencer|pr|public relations|communications|tiktok|pinterest|youtube|growth marketing)\b/i},{key:"entertainment",label:"Entertainment & Gaming",color:"#9b59b6",words:/\b(entertainment|film|movie|music|records|gaming|games?|esports|studio|studios|netflix|disney|spotify|hollywood|theater|theatre|sports)\b/i},{key:"tech",label:"Tech, Software & AI",color:"#3498db",words:/\b(software|saas|engineer|engineering|developer|tech|technology|technologies|ai|artificial intelligence|machine learning|ml|data|cloud|cyber|security|devops|product manager|google|microsoft|apple|meta|amazon|nvidia|openai|anthropic|palantir|salesforce|oracle|ibm|intel|app|apps|startup|platform|labs?)\b/i},{key:"consulting",label:"Consulting, Legal & Services",color:"#1abc9c",words:/\b(consulting|consultant|consultancy|deloitte|accenture|mckinsey|kpmg|pwc|ey|bain|bcg|legal|law|lawyer|attorney|paralegal|recruiting|recruiter|staffing|talent)\b/i},{key:"realestate",label:"Real Estate & Construction",color:"#d35400",words:/\b(real estate|realtor|realty|property|properties|construction|architecture|architect|mortgage|homes|housing|builders?)\b/i},{key:"consumer",label:"Retail, Consumer & Hospitality",color:"#ff79c6",words:/\b(retail|e-?commerce|shopify|consumer|cpg|fashion|apparel|beauty|cosmetics|food|beverage|restaurant|hospitality|hotel|travel|tourism|coca-cola|nike|store|shop)\b/i},{key:"industry",label:"Manufacturing, Energy & Logistics",color:"#95a5a6",words:/\b(manufacturing|energy|oil|gas|solar|utilities|automotive|tesla|siemens|ge|general electric|honeywell|3m|logistics|supply chain|shipping|freight|fedex|ups|industrial|mining|chemicals?)\b/i},{key:"nonprofit",label:"Nonprofit & Community",color:"#bdc3c7",words:/\b(nonprofit|non-profit|foundation|charity|ngo|church|ministry|volunteer)\b/i}],a={key:"unknown",label:"Unclear",color:"#555c66"},i=Object.fromEntries([...r,a].map(e=>[e.key,e])),s=e=>i[e]||a;function l(e,t){for(let o of[e,t]){if(!o)continue;let e=r.find(e=>e.words.test(o));if(e)return e}return a}let c=(e,t)=>l(e,t).key,d=e=>o(e).level>=4;e.s(["INDUSTRIES",0,r,"UNKNOWN_INDUSTRY",0,a,"buildCompanyIndex",0,function(e=[]){let o=new Map,n=e=>(o.has(e)||o.set(e,(0,t.rolesWithCompanies)(e)),o.get(e)),{industries:r}=(0,t.networkCompanies)(e,{industryOf:c,rolesOf:n}),a=new Map;for(let t of e){let e=t.profile_url||`id:${t.id}`,o=a.get(e);(!o||(t.degree||9)<(o.degree||9))&&a.set(e,t)}let i=new Map;for(let e of a.values()){let t=n(e).find(e=>!e.former)?.company;if(!t)continue;let o=i.get(t);o||(o={name:t,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0},i.set(t,o)),o.people.push(e),1===e.degree?o.d1++:2===e.degree?o.d2++:o.d3++,"S"===e.tier&&o.S++,"A"===e.tier&&o.A++,d(e.headline)&&o.senior++}for(let e of i.values())e.industry=s(r.get(e.name));return i},"companyLinks",0,function(e=[],t=[]){let o=new Map;for(let t of e){let e=n(t);e&&o.set(t.id,e)}let r=new Map;for(let e of t){let t=o.get(e.source_connection_id),a=n(e);if(!t||!a||t===a)continue;let[i,s]=t<a?[t,a]:[a,t],l=`${i}\u0000${s}`,c=r.get(l);c||(c={a:i,b:s,weight:0,via:new Set},r.set(l,c)),c.weight++,c.via.add(e.source_connection_id)}return[...r.values()]},"companyOf",0,n,"getSeniority",0,o,"industryByKey",0,s,"industryOf",0,l,"isSenior",0,d,"waysInto",0,function(e,t=[],o=[]){let r=t.filter(t=>n(t)===e),a=new Map;for(let t of o)n(t)===e&&a.set(t.source_connection_id,(a.get(t.source_connection_id)||0)+1);let i=new Map(t.map(e=>[e.id,e]));return{direct:r,bridges:[...a.entries()].map(([e,t])=>({bridge:i.get(e),n:t})).filter(e=>e.bridge).sort((e,t)=>t.n-e.n||(Number(t.bridge.power_score)||0)-(Number(e.bridge.power_score)||0))}}])}]);
@@ -0,0 +1,34 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77305,e=>{"use strict";var t=e.i(43476),n=e.i(71645),o=e.i(18566),r=e.i(33821),i=e.i(22016),s=e.i(15812),l=e.i(19821),a=e.i(84278),d=e.i(39160),c=e.i(7214),p=e.i(40996),h=e.i(8819),g=e.i(64745);let f=Object.freeze([{id:"new",label:"New"},{id:"contacted",label:"Contacted"},{id:"replied",label:"Replied"},{id:"meeting",label:"Meeting"},{id:"won",label:"Won/Partner"},{id:"not-now",label:"Not now"}]);f.map(e=>e.id);let u=e=>f.find(t=>t.id===e)?.label||"",x=e=>"string"==typeof e&&e.length>0&&e.length<300;function m(){return{version:1,settings:{awaitDays:7},people:{}}}function y(e=new Date){let t=e=>String(e).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}let b=/^https:\/\/(www\.)?linkedin\.com\/in\/[^/?#\s]+$/,v={S:0,A:1,B:2,C:3,D:4},w=(e,t)=>(e.degree??9)<(t.degree??9)||(e.degree??9)===(t.degree??9)&&(v[e.tier]??9)<(v[t.tier]??9),j=e=>"sponsored"===e.kind;function k(e,t,n=7){let o=[];for(let r of e){if(j(r)||!1!==r.lastFromThem||!r.last)continue;let e=Math.floor((t-r.last)/864e5);e>=n&&o.push({contact:r,waited:e})}return o.sort((e,t)=>e.waited-t.waited)}function S(e,t,n=null){let o=String(t||"").trim().toLowerCase();return!o||[e.name,e.row?.company,e.row?.role,e.row?.headline,...e.crm?.tags||[],e.crm?.notes].filter(Boolean).join("\n").toLowerCase().includes(o)||!!n&&e.conversations.some(e=>n.has(e.id))}function T(e){let t=null==e?"":String(e);return/^[=+\-@\t\r]/.test(t)&&(t=`'${t}`),/[",\r\n]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}let C=e=>e?new Date(e).toISOString().slice(0,10):"",z=["Name","Company","Profile","Connection","Stage","Tags","Last contact","Who wrote last","Next follow-up","Notes"];function R({id:e,keep:o,group:r,token:i}){let[s,l]=(0,n.useState)(null),[a,d]=(0,n.useState)(null),c=(0,n.useRef)(null),p=(0,n.useRef)(null);async function g(){let t=c.current,n=await fetch(`/api/social/messages?id=${encodeURIComponent(e)}&before=${s.start}&limit=200`).then(e=>e.json()).catch(()=>null);n&&!n.error&&(p.current=t?t.scrollHeight-t.scrollTop:null,l({...s,start:n.start,messages:[...n.messages,...s.messages]}))}(0,n.useEffect)(()=>{if(!o)return;let t=!0;return fetch(`/api/social/messages?id=${encodeURIComponent(e)}&limit=100`).then(e=>e.json()).then(e=>{t&&(e.error?d(e.error):(p.current="bottom",l(e)))}).catch(()=>{t&&d("It couldn’t be read.")}),()=>{t=!1}},[e,o,i]),(0,n.useLayoutEffect)(()=>{let e=c.current;e&&p.current&&("bottom"===p.current?e.scrollTop=e.scrollHeight:e.scrollTop=e.scrollHeight-p.current,p.current=null)},[s]);let f={padding:"10px 14px 14px",fontSize:12.5,color:"#8b9a9a"};return o?a?(0,t.jsx)("div",{style:{...f,color:"#ff9b9b"},children:a}):s?s.total?(0,t.jsxs)("div",{ref:c,style:{maxHeight:440,overflowY:"auto",padding:"8px 14px 12px",background:"rgba(0,0,0,0.2)"},children:[s.start>0&&(0,t.jsx)("div",{style:{textAlign:"center",margin:"4px 0 10px"},children:(0,t.jsxs)("button",{onClick:g,style:{background:"rgba(255,255,255,0.06)",border:h.LINE,borderRadius:6,color:"#cfe6f7",cursor:"pointer",fontSize:12,padding:"4px 12px"},children:["Show earlier (",s.start.toLocaleString()," more)"]})}),s.messages.map((e,n)=>{let o;return(0,t.jsx)("div",{style:{display:"flex",justifyContent:e.fromMe?"flex-end":"flex-start",margin:"6px 0"},children:(0,t.jsxs)("div",{style:{maxWidth:"72%"},children:[(0,t.jsx)("div",{style:{padding:"7px 11px",borderRadius:12,fontSize:13,lineHeight:1.45,whiteSpace:"pre-wrap",overflowWrap:"anywhere",background:e.fromMe?"rgba(52,152,219,0.35)":"rgba(255,255,255,0.08)",color:"#eef",borderBottomRightRadius:e.fromMe?4:12,borderBottomLeftRadius:e.fromMe?12:4},children:e.text||(0,t.jsx)("i",{style:{color:"#8b9a9a"},children:"(no words: an attachment or a reaction)"})}),(0,t.jsxs)("div",{style:{fontSize:10.5,color:"#778",marginTop:2,textAlign:e.fromMe?"right":"left"},children:[e.fromMe?"You":r?"Someone in the group":"Them"," · ",(o=e.t)?new Date(o).toLocaleString(void 0,{day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"2-digit"}):""]})]})},s.start+n)})]}):(0,t.jsx)("div",{style:f,children:"No messages are kept for this conversation yet. Choose your export folder again, or sync your messages, to bring them in."}):(0,t.jsx)("div",{style:f,children:"Opening…"}):(0,t.jsxs)("div",{style:f,children:["Turn on ",(0,t.jsx)("b",{children:"Keep my messages"})," to read them here."]})}var I=e.i(54322);let O=I.TIER_COLORS,F={new:"#8b9a9a",contacted:"#3498DB",replied:"#00d4aa",meeting:"#ff9f43",won:"#FFD700","not-now":"#667"},_=e=>e?new Date(e).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"",$=e=>e?new Date(`${e}T12:00:00`).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"",L=e=>/^https:\/\/(www\.)?linkedin\.com\//.test(String(e||""))?e:null,B=(e,t,n=`${t}s`)=>`${e.toLocaleString()} ${1===e?t:n}`,W=[["inbox","Inbox"],["awaiting","Awaiting reply"],["due","Follow-ups due"],["pipeline","Pipeline"],["sent","Sent"],["received","Received"],["all","All"]],E=(e,t="#dfe8e8")=>({fontSize:10.5,padding:"1px 6px",borderRadius:4,background:e,color:t,whiteSpace:"nowrap"}),D={background:"rgba(255,255,255,0.06)",border:h.LINE,borderRadius:6,color:"#cfe6f7",cursor:"pointer",fontSize:12,padding:"4px 10px"},M={padding:"6px 10px",borderRadius:6,border:h.LINE,background:"rgba(0,0,0,0.3)",color:"#fff",fontSize:13};function N({net:e,asOf:o,keep:r,onKeep:i,switching:s,token:l,crmToken:d}){let[p,g]=(0,n.useState)(null),[v,R]=(0,n.useState)(null),[I,O]=(0,n.useState)("inbox"),[F,L]=(0,n.useState)(""),[E,P]=(0,n.useState)(null),[U,Y]=(0,n.useState)(null),[K,G]=(0,n.useState)(100),[X,Q]=(0,n.useState)(null),Z=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=!0;return fetch("/api/social/messages").then(e=>e.json()).then(t=>{e&&g(t)}).catch(()=>{e&&g({conversations:[],invitations:[],names:{},inviteNotes:{}})}),()=>{e=!1}},[l,r]),(0,n.useEffect)(()=>{let e=!0;return fetch("/api/social/crm").then(e=>e.json()).then(t=>{e&&R(t.crm||m())}).catch(()=>{e&&R(m())}),()=>{e=!1}},[d]),(0,n.useEffect)(()=>{let e=F.trim();if(!r||e.length<2)return;let t=!0,n=setTimeout(()=>{fetch(`/api/social/messages?q=${encodeURIComponent(e)}`).then(e=>e.json()).then(n=>{t&&P({q:e,ids:new Set(n.ids||[])})}).catch(()=>{})},250);return()=>{t=!1,clearTimeout(n)}},[F,r,l]);let ee=U?.type==="person"?U.key:null,{contacts:et,groups:en}=(0,n.useMemo)(()=>(function({conversations:e=[],invitations:t=[],network:n={},crm:o=m(),names:r={},also:i=[]}={}){let s=n.degree1||[],l=n.degree2||[],d=[...s,...l,...n.degree3||[]],p=new Map,h=new Map;for(let e of d){let t=(0,c.keyFor)(e),n=p.get(t);(!n||w(e,n))&&p.set(t,e)}for(let[e,t]of p){let n=(0,a.nameKey)(t.name);n&&h.set(n,h.has(n)&&h.get(n)!==e?null:e)}let g=new Set(s.map(c.keyFor)),f=(0,c.routeIndex)(l),u=new Map(s.map(e=>[e.id,e])),y=e=>e.startsWith("name:")&&h.get(e.slice(5))||e,v=new Map,j=e=>{var t,n,i;let s=y(e),l=v.get(s);if(l)return l;let a=p.get(s)||null;return l={key:s,name:(t=s,n=a,i=r,n?.name?n.name:i[t]?i[t]:t.startsWith("name:")?t.slice(5).replace(/\b\w/g,e=>e.toUpperCase()):String(t||"").replace(/\/+$/,"").split("/").pop()),row:a,connection:g.has(s),degree:a?.degree??null,profileUrl:b.test(s)?s:a?.profile_url&&b.test((0,c.keyFor)(a))?(0,c.keyFor)(a):null,introducers:a&&2===a.degree?[...new Set((0,c.routesFor)(a,f,u).map(e=>e.bridge?.name).filter(Boolean))]:[],conversations:[],groups:[],last:null,lastFromThem:null,unread:null,threadUrl:null,count:0,theyWrote:!1,kind:null,invitesIn:[],invitesOut:[],request:null,crm:o?.people?.[s]||null,lastContact:null},v.set(s,l),l},k=[];for(let t of e){if(!t||!Array.isArray(t.people))continue;if(t.group){k.push({...t,people:t.people.map(y)});continue}if(!t.people.length){k.push({...t,unknown:!0});continue}let e=j(t.people[0]);e.conversations.push(t),e.count+=t.count||0,(!0===t.lastFromThem||null!=t.count&&null!=t.mine&&t.count>t.mine)&&(e.theyWrote=!0),t.last&&(!e.last||t.last>=e.last)?(e.last=t.last,e.lastFromThem=t.lastFromThem,e.unread=t.unread,e.threadUrl=t.threadUrl||e.threadUrl):e.last||t.last||(e.threadUrl=t.threadUrl||e.threadUrl)}for(let e of v.values()){e.conversations.sort((e,t)=>(t.last||0)-(e.last||0));let t=new Set(e.conversations.map(e=>e.kind||null));e.kind=1===t.size?[...t][0]:null}for(let e of k)for(let t of e.people)v.get(t)?.groups.push(e.id);for(let e of t){if(!e?.key)continue;let t=j(e.key);!e.name||t.row||r[t.key]||(t.name=e.name),("in"===e.dir?t.invitesIn:t.invitesOut).push(e)}for(let e of d){if("sent"!==e.outreach_status&&"accepted"!==e.outreach_status&&"pending"!==e.unlock_status)continue;let t=j((0,c.keyFor)(e)),n=t.connection||"accepted"===e.outreach_status?"accepted":"pending";t.request&&"accepted"!==n||(t.request={status:n})}for(let e of Object.keys(o?.people||{}))j(e);for(let e of i)x(e)&&j(e);for(let e of v.values()){let t=[e.last,...e.invitesIn.map(e=>e.t),...e.invitesOut.map(e=>e.t)].filter(Boolean);e.lastContact=t.length?Math.max(...t):null}return{contacts:v,groups:k}})({conversations:p?.conversations||[],invitations:p?.invitations||[],network:e||{},crm:v||m(),names:p?.names||{},also:ee?[ee]:[]}),[p,e,v,ee]),eo=(0,n.useMemo)(()=>{let t=new Map;for(let n of[...e?.degree1||[],...e?.degree2||[]])t.has((0,c.keyFor)(n))||t.set((0,c.keyFor)(n),n);let n=p?.names||{};return e=>et.get(e)?.name||t.get(e)?.name||n[e]||null},[et,e,p]),er=v?.settings?.awaitDays||7,[ei]=(0,n.useState)(()=>Date.now()),es=o||ei,el=y(new Date(ei)),ea=(0,n.useMemo)(()=>[...et.values()],[et]),ed=(0,n.useMemo)(()=>{let e=(e,t)=>({type:"person",key:e.key,c:e,sub:t,t:e.lastContact||0}),t=e=>null==e.lastFromThem?"":e.lastFromThem?`They wrote ${_(e.last)}`:`You wrote ${_(e.last)}`,n=ea.filter(e=>e.lastContact||e.crm||e.request).map(n=>e(n,t(n)||(n.invitesOut[0]?`You asked to connect ${_(n.invitesOut[0].t)}`:"")||(n.invitesIn[0]?`Asked to connect ${_(n.invitesIn[0].t)}`:"")||(n.request?`Tracked request \xb7 ${n.request.status}`:"")||(n.crm?.stage?u(n.crm.stage):"")));for(let e of en)n.push({type:"group",id:e.id,g:e,sub:e.last?`${e.lastFromThem?"Someone wrote":"You wrote"} ${_(e.last)}`:"",t:e.last||0});return n.sort((e,t)=>t.t-e.t),{inbox:[...ea].filter(e=>!j(e)&&(!0===e.lastFromThem||e.unread>0)).sort((e,t)=>(t.unread>0)-(e.unread>0)||(t.last||0)-(e.last||0)).map(n=>e(n,n.unread>0?`${n.unread} unread \xb7 ${t(n)}`:t(n))),awaiting:k(ea,es,er).map(t=>e(t.contact,`You wrote ${_(t.contact.last)}, no reply for ${B(t.waited,"day")}`)),due:(function(e,t=y()){return[...e].filter(e=>e.crm?.followUp&&e.crm.followUp<=t).sort((e,t)=>e.crm.followUp.localeCompare(t.crm.followUp))})(ea,el).map(t=>e(t,t.crm.followUp===el?"Follow up today":`Follow up was due ${$(t.crm.followUp)}`)),pipeline:function(e){let t=Object.fromEntries(f.map(e=>[e.id,[]]));for(let n of e)n.crm?.stage&&t[n.crm.stage].push(n);for(let e of Object.values(t))e.sort((e,t)=>(t.lastContact||0)-(e.lastContact||0));return t}(ea),sent:(function(e,t,n=7){let o=[...e],r=new Map(k(o,t,n).map(e=>[e.contact.key,e.waited])),i=[];for(let e of o){let t=[];for(let n of e.invitesOut)t.push({type:"invite",id:n.id,t:n.t,status:e.connection?"accepted":"pending"});e.request&&t.push({type:"request",status:e.request.status}),r.has(e.key)&&t.push({type:"awaiting",t:e.last,waited:r.get(e.key)}),t.length&&i.push({contact:e,items:t,t:Math.max(0,...t.map(e=>e.t||0))})}return i.sort((e,t)=>t.t-e.t)})(ea,es,er).map(t=>e(t.contact,t.items.map(e=>"invite"===e.type?`Request ${_(e.t)} \xb7 ${e.status}`:"request"===e.type?`Tracked request \xb7 ${e.status}`:`No reply for ${B(e.waited,"day")}`).join(" · "))),received:(function(e){let t=[];for(let n of e)!n.connection&&n.invitesIn.length&&t.push({contact:n,t:Math.max(0,...n.invitesIn.map(e=>e.t||0))});return t.sort((e,t)=>t.t-e.t)})(ea).map(t=>e(t.contact,`Asked to connect ${_(t.t)}`)),all:n}},[ea,en,es,er,el]),ec=r&&E?.q===F.trim()?E.ids:null,ep=F.trim().toLowerCase(),eh=(0,n.useMemo)(()=>{let t="pipeline"===I?[]:ed[I];if(!ep)return t;let n=t.filter(e=>"person"===e.type?S(e.c,ep,ec):String(e.g.title||"").toLowerCase().includes(ep)||e.g.people.some(e=>String(eo(e)||"").toLowerCase().includes(ep))||ec?.has(e.g.id));if("all"===I&&ep.length>=2&&e){let t=new Set(n.map(e=>e.key)),o=new Set;for(let r of[...e.degree1||[],...e.degree2||[]]){let e=(0,c.keyFor)(r);if(!(t.has(e)||o.has(e))&&[r.name,r.company,r.role,r.headline].some(e=>String(e||"").toLowerCase().includes(ep))&&(o.add(e),n.push({type:"person",key:e,c:null,row:r,sub:"Nothing on file yet",t:0}),o.size>=50))break}}return n},[ed,I,ep,ec,e,eo]),eg=(0,n.useMemo)(()=>{if("pipeline"!==I)return null;let e={};for(let[t,n]of Object.entries(ed.pipeline))e[t]=ep?n.filter(e=>S(e,ep,ec)):n;return e},[ed,I,ep,ec]),ef={inbox:ed.inbox.length,awaiting:ed.awaiting.length,due:ed.due.length,pipeline:Object.values(ed.pipeline).reduce((e,t)=>e+t.length,0),sent:ed.sent.length,received:ed.received.length,all:ed.all.length};function eu(e){Y(e),window.matchMedia?.("(max-width: 760px)").matches&&setTimeout(()=>Z.current?.scrollIntoView({behavior:"smooth",block:"start"}),50)}async function ex(e,t){let n=await fetch("/api/social/crm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,set:t})}),o=await n.json().catch(()=>({}));if(!n.ok)throw Error(o.error||"That couldn’t be saved.");R(t=>{let n={...t||m(),people:{...t?.people||{}}};return o.entry?n.people[e]=o.entry:delete n.people[e],n})}async function em(e){let t=await fetch("/api/social/crm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:{awaitDays:e}})}),n=await t.json().catch(()=>({}));t.ok&&R(e=>({...e||m(),settings:n.settings}))}async function ey(){window.confirm("Delete your CRM: every stage, tag, note and follow-up date you added? This can’t be undone.")&&(await fetch("/api/social/crm",{method:"DELETE"}),R(m()),Q("Your CRM notes are deleted."))}let eb=!p||!v||!e,ev={padding:"12px 14px",borderRadius:8,border:h.LINE,background:"rgba(255,255,255,0.03)",marginTop:10},ew=U?.type==="group"?en.find(e=>e.id===U.id):null,ej=ee?et.get(ee):null;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:ev,children:[(0,t.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"center",fontSize:13.5,color:"#fff",cursor:s?"default":"pointer"},children:[(0,t.jsx)("input",{type:"checkbox",checked:r,disabled:s,onChange:e=>i(e.target.checked)}),(0,t.jsx)("b",{children:"Keep my messages on this computer"}),(0,t.jsx)("span",{style:{fontSize:11.5,color:r?"#00ff88":"#8b9a9a"},children:r?"on":"off"})]}),(0,t.jsxs)(h.Body,{style:{margin:"6px 0 0",fontSize:12.5},children:["Off unless you turn it on. When it’s on, the messages themselves, including what other people wrote to you, and the notes sent with connection requests, are saved only in the app’s data folder on this computer. They’re never sent anywhere, and they aren’t in “Save a copy of my network”. ",(0,t.jsx)("i",{children:"Forget it"}),", or switching this off, deletes them. With it off, the CRM still shows who, when and who wrote last. Your own stages, tags, notes and follow-ups are always kept, on this computer only."]})]}),(0,t.jsxs)("div",{className:"crm-grid",style:{marginTop:10},children:[(0,t.jsxs)("div",{className:"pipeline"===I?"crm-wide":void 0,style:{...ev,marginTop:0,padding:0,minWidth:0},children:[(0,t.jsx)("div",{role:"tablist","aria-label":"CRM views",style:{display:"flex",flexWrap:"wrap",gap:4,padding:"10px 10px 6px",borderBottom:h.LINE},children:W.map(([e,n])=>(0,t.jsxs)("button",{role:"tab","aria-selected":I===e,onClick:()=>{O(e),G(100)},style:{...D,padding:"4px 9px",fontSize:12,background:I===e?"rgba(52,152,219,0.28)":"rgba(255,255,255,0.04)",color:I===e?"#fff":"#b8c4c4"},children:[n," ",(0,t.jsx)("span",{style:{color:I===e?"#cfe6f7":"#778"},children:eb?"":ef[e].toLocaleString()})]},e))}),(0,t.jsxs)("div",{style:{padding:"8px 10px",borderBottom:h.LINE,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsx)("input",{type:"search",value:F,onChange:e=>{L(e.target.value),G(100)},placeholder:r?"Search names, companies, tags, notes, what was said":"Search names, companies, tags, notes","aria-label":"Search the CRM",style:{...M,flex:"1 1 180px",minWidth:0}}),(0,t.jsx)("button",{onClick:function(){var e;let t,n,o=ea.filter(e=>"sponsored"!==e.kind).sort((e,t)=>(t.lastContact||0)-(e.lastContact||0)),r=`Six Degrees CRM ${y()}.csv`;e=function(e){let t=[z.map(T).join(",")];for(let n of e)t.push([n.name,n.row?.company||"",n.profileUrl||"",n.connection?"Yes":"No",u(n.crm?.stage),(n.crm?.tags||[]).join("; "),C(n.lastContact),null==n.lastFromThem?"":n.lastFromThem?"Them":"You",n.crm?.followUp||"",n.crm?.notes||""].map(T).join(","));return`\uFEFF${t.join("\r\n")}\r
2
+ `}(o),t=URL.createObjectURL(new Blob([e],{type:"text/csv;charset=utf-8"})),(n=document.createElement("a")).href=t,n.download=r,n.style.position="fixed",n.style.left="-9999px",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(t),6e4),Q(`Made “${r}” (${B(o.length,"person","people")}). Look for it in your Downloads folder, or wherever you chose to save it. It holds your notes: keep it private.`)},disabled:eb,style:D,title:"A spreadsheet of everyone here, with your stages, tags, follow-ups and notes",children:"Export CSV"})]}),"awaiting"===I&&(0,t.jsxs)("div",{style:{padding:"8px 12px",borderBottom:h.LINE,fontSize:12.5,color:"#b8c4c4",display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"},children:["You wrote last and nothing came back for",(0,t.jsx)("input",{type:"number",min:1,max:365,value:er,"aria-label":"Days with no reply",onChange:e=>{let t=Number(e.target.value);t>=1&&t<=365&&em(t)},style:{...M,width:64,padding:"3px 6px"}}),"days or more",o?`, as of ${_(o)}`:"","."]}),X&&(0,t.jsx)("div",{style:{padding:"8px 12px",fontSize:12.5,color:"#00ff88",borderBottom:h.LINE},children:X}),eb&&(0,t.jsx)("div",{style:{padding:12,fontSize:13,color:"#8b9a9a"},children:"Loading…"}),!eb&&"pipeline"===I&&(0,t.jsx)(H,{pipeline:eg,picked:ee,onPick:e=>eu({type:"person",key:e})}),!eb&&"pipeline"!==I&&0===eh.length&&(0,t.jsx)("div",{style:{padding:12,fontSize:13,color:"#8b9a9a"},children:ep?"Nothing matches that.":A[I]}),!eb&&"pipeline"!==I&&(0,t.jsxs)("div",{children:[eh.slice(0,K).map(e=>(0,t.jsx)(q,{r:e,nameOf:eo,active:"person"===e.type?ee===e.key:U?.id===e.id,onPick:()=>eu("person"===e.type?{type:"person",key:e.key}:{type:"group",id:e.id})},"person"===e.type?`p:${e.key}`:`g:${e.id}`)),eh.length>K&&(0,t.jsxs)("button",{onClick:()=>G(K+100),style:{width:"100%",padding:10,background:"none",border:"none",color:"#3498DB",cursor:"pointer",fontSize:13},children:["Show ",Math.min(100,eh.length-K).toLocaleString()," more of ",eh.length.toLocaleString()]})]})]}),(0,t.jsxs)("div",{ref:Z,className:"pipeline"===I?"crm-wide":void 0,style:{...ev,marginTop:0,minWidth:0,scrollMarginTop:80},children:[!U&&(0,t.jsx)("div",{style:{fontSize:13,color:"#8b9a9a"},children:"Pick someone to see everything with them, and to add a stage, tags, notes or a follow-up."}),ej&&(0,t.jsx)(J,{c:ej,nameOf:eo,groups:en,keep:r,token:l,inviteNotes:p?.inviteNotes||{},onChange:ex,onPickGroup:e=>eu({type:"group",id:e})},ej.key),ew&&(0,t.jsx)(V,{g:ew,contacts:et,nameOf:eo,keep:r,token:l,onPick:e=>eu({type:"person",key:e})})]})]}),(0,t.jsxs)("div",{style:{fontSize:11.5,color:"#778",marginTop:6},children:["Everyone from your export and the live sync, connections or not; groups are listed and marked. Sponsored messages are marked and kept out of the Inbox. Awaiting reply and warmth are judged as of the newest thing your data knows.",Object.keys(v?.people||{}).length>0&&(0,t.jsxs)(t.Fragment,{children:[" ","Your notes are in the app’s data folder, not in “Save a copy of my network”."," ",(0,t.jsx)("button",{onClick:ey,style:{background:"none",border:"none",color:"#ff9b9b",cursor:"pointer",fontSize:11.5,padding:0},children:"Delete my CRM notes"})]})]})]})}let A={inbox:"No one is waiting on a reply.",awaiting:"Nobody you wrote to is overdue a reply.",due:"No follow-ups are due. Set one on anyone, and it shows here on the day.",sent:"Nothing sent yet: choose your export folder above (its Invitations.csv), or mark requests sent in the app.",received:"No requests waiting on you, as far as your export shows.",all:"Nobody here yet. Choose your export folder above, or sync your messages."};function P({tier:e}){return(0,t.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:O[e]||"#556",flexShrink:0,display:"inline-block"}})}function U({c:e}){return(0,t.jsxs)(t.Fragment,{children:[e&&!e.connection&&(0,t.jsx)("span",{style:E("rgba(255,159,67,0.18)","#ffc58a"),children:2===e.degree?"2nd degree":"Not a connection"}),e?.kind==="sponsored"&&(0,t.jsx)("span",{style:E("rgba(255,255,255,0.08)"),children:"Sponsored"}),e?.kind==="inmail"&&(0,t.jsx)("span",{style:E("rgba(155,89,182,0.25)"),children:"InMail"}),e?.crm?.stage&&(0,t.jsx)("span",{style:E("rgba(255,255,255,0.06)",F[e.crm.stage]),children:u(e.crm.stage)})]})}function q({r:e,nameOf:n,active:o,onPick:r}){let i,s=null,l=null;if("person"===e.type){let n=e.c;i=n?.name||e.row?.name||e.key,s=n?.row?.tier||e.row?.tier,l=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(U,{c:n||{connection:e.row?.degree===1,degree:e.row?.degree}}),n?.unread>0&&(0,t.jsxs)("span",{style:E("#3498DB","#fff"),children:[n.unread," unread"]})]})}else i=Y(e.g,n),l=(0,t.jsx)("span",{style:E("rgba(255,255,255,0.08)"),children:e.g.unknown?"To someone unnamed":"Group"});let a="person"===e.type?e.c?.row?.company||e.row?.company:null;return(0,t.jsxs)("div",{role:"button",tabIndex:0,"aria-pressed":o,onClick:r,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),r())},style:{padding:"8px 12px",borderBottom:"1px solid rgba(255,255,255,0.04)",cursor:"pointer",background:o?"rgba(52,152,219,0.14)":"none"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,fontSize:13,minWidth:0,flexWrap:"wrap"},children:[(0,t.jsx)(P,{tier:s}),(0,t.jsx)("b",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"100%"},children:i}),l]}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"#8b9a9a",marginTop:2,paddingLeft:14,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[a,e.sub].filter(Boolean).join(" · ")})]})}function Y(e,t){if(e.title)return e.title;if(e.unknown)return"A conversation only you wrote in";let n=e.people.map(t).filter(Boolean);return n.length?`${n.slice(0,3).join(", ")}${e.people.length>3?` +${e.people.length-3}`:""}`:`${e.people.length} people`}function H({pipeline:e,picked:n,onPick:o}){return(0,t.jsx)("div",{className:"crm-board",children:f.map(r=>(0,t.jsxs)("div",{style:{minWidth:0},children:[(0,t.jsxs)("div",{style:{fontSize:12,fontWeight:650,color:F[r.id],margin:"0 0 6px",display:"flex",justifyContent:"space-between"},children:[(0,t.jsx)("span",{children:r.label}),(0,t.jsx)("span",{style:{color:"#778"},children:e[r.id].length.toLocaleString()})]}),0===e[r.id].length&&(0,t.jsx)("div",{style:{fontSize:11.5,color:"#667",padding:"6px 0"},children:"No one"}),e[r.id].slice(0,200).map(e=>(0,t.jsxs)("div",{role:"button",tabIndex:0,onClick:()=>o(e.key),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),o(e.key))},style:{padding:"7px 9px",marginBottom:6,borderRadius:6,border:h.LINE,cursor:"pointer",fontSize:12.5,background:n===e.key?"rgba(52,152,219,0.18)":"rgba(255,255,255,0.03)"},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:6,alignItems:"center"},children:[(0,t.jsx)(P,{tier:e.row?.tier}),(0,t.jsx)("b",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]}),(0,t.jsx)("div",{style:{color:"#8b9a9a",fontSize:11,marginTop:2},children:[e.row?.company,e.crm.followUp?`Follow up ${$(e.crm.followUp)}`:null].filter(Boolean).join(" · ")})]},e.key)),e[r.id].length>200&&(0,t.jsxs)("div",{style:{fontSize:11,color:"#778"},children:["and ",(e[r.id].length-200).toLocaleString()," more (search to find them)"]})]},r.id))})}let K={fontSize:12,fontWeight:650,color:"#b8c4c4",margin:"16px 0 6px",textTransform:"uppercase",letterSpacing:.4};function J({c:e,nameOf:o,groups:r,keep:i,token:s,inviteNotes:l,onChange:a,onPickGroup:d}){let c=e.row,[p,g]=(0,n.useState)(e.conversations[0]?.id||null),f=L(e.profileUrl),u=L(e.threadUrl),x=e.connection?`A connection${c?.connected_date?` since ${_(Date.parse(c.connected_date))}`:""}.`:2===e.degree?"2nd degree: not a connection yet.":"Not a connection.";return(0,t.jsxs)("div",{style:{fontSize:13},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsx)(P,{tier:c?.tier}),(0,t.jsx)("h3",{style:{margin:0,fontSize:17},children:e.name}),c?.tier&&(0,t.jsxs)("span",{style:E("rgba(255,255,255,0.06)",O[c.tier]),children:[c.tier," tier"]}),(0,t.jsx)(U,{c:e})]}),(c?.headline||c?.company)&&(0,t.jsx)("div",{style:{color:"#b8c4c4",marginTop:4},children:c.headline||[c.role,c.company].filter(Boolean).join(" at ")}),(0,t.jsxs)("div",{style:{color:"#8b9a9a",marginTop:4,fontSize:12.5},children:[x,e.introducers.length>0&&(0,t.jsxs)(t.Fragment,{children:[" Who can introduce you: ",(0,t.jsx)("b",{style:{color:"#dfe8e8"},children:e.introducers.slice(0,6).join(", ")}),e.introducers.length>6?` and ${e.introducers.length-6} more`:"","."]}),c?.unlocked_from_name&&e.connection&&(0,t.jsxs)(t.Fragment,{children:[" You met through ",(0,t.jsx)("b",{style:{color:"#dfe8e8"},children:c.unlocked_from_name}),"."]})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:12,marginTop:6,flexWrap:"wrap",fontSize:12.5},children:[f&&(0,t.jsx)("a",{href:f,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none"},children:"Profile on LinkedIn ↗"}),u&&(0,t.jsx)("a",{href:u,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none"},children:"Conversation on LinkedIn ↗"})]}),(0,t.jsx)(G,{c:e,onChange:a}),(0,t.jsx)("div",{style:K,children:"Conversations"}),0===e.conversations.length&&(0,t.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5},children:"None one to one."}),e.conversations.map(e=>(0,t.jsxs)("div",{style:{border:h.LINE,borderRadius:6,marginBottom:6,overflow:"hidden"},children:[(0,t.jsxs)("div",{role:"button",tabIndex:0,"aria-expanded":p===e.id,onClick:()=>g(p===e.id?null:e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),g(p===e.id?null:e.id))},style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",padding:"7px 10px",cursor:"pointer",fontSize:12.5,background:p===e.id?"rgba(255,255,255,0.04)":"none"},children:[(0,t.jsx)("span",{style:{color:"#dfe8e8"},children:_(e.last)||"No date"}),null!=e.lastFromThem&&(0,t.jsx)("span",{style:{color:e.lastFromThem?"#ff9f43":"#8b9a9a"},children:e.lastFromThem?"They wrote last":"You wrote last"}),null!=e.count&&(0,t.jsx)("span",{style:{color:"#8b9a9a"},children:B(e.count,"message")}),null!=e.mine&&null!=e.count&&e.mine===e.count&&(0,t.jsx)("span",{style:E("rgba(255,255,255,0.06)"),children:"Only you wrote"}),e.folder&&"inbox"!==e.folder&&(0,t.jsx)("span",{style:E("rgba(255,255,255,0.06)"),children:e.folder}),"inmail"===e.kind&&(0,t.jsx)("span",{style:E("rgba(155,89,182,0.25)"),children:"InMail"}),"sponsored"===e.kind&&(0,t.jsx)("span",{style:E("rgba(255,255,255,0.08)"),children:"Sponsored"}),e.unread>0&&(0,t.jsxs)("span",{style:E("#3498DB","#fff"),children:[e.unread," unread"]})]}),p===e.id&&(0,t.jsx)(R,{id:e.id,keep:i,group:!1,token:s},`${e.id}:${s}:${i}`)]},e.id)),e.groups.length>0&&(0,t.jsxs)("div",{style:{fontSize:12.5,color:"#8b9a9a",marginTop:4},children:["Also in ",B(e.groups.length,"group"),":"," ",e.groups.slice(0,8).map((e,n)=>{let i=r.find(t=>t.id===e);return(0,t.jsxs)("span",{children:[n>0?", ":"",(0,t.jsx)("button",{onClick:()=>d(e),style:{background:"none",border:"none",color:"#3498DB",cursor:"pointer",padding:0,fontSize:12.5},children:i?Y(i,o):"a group"})]},e)})]}),(0,t.jsx)("div",{style:K,children:"Requests"}),e.invitesOut.length+e.invitesIn.length===0&&!e.request&&(0,t.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5},children:"None on file."}),[...e.invitesOut,...e.invitesIn].sort((e,t)=>(t.t||0)-(e.t||0)).map(n=>(0,t.jsxs)("div",{style:{fontSize:12.5,marginBottom:6},children:[(0,t.jsx)("span",{style:{color:"#dfe8e8"},children:"out"===n.dir?"You asked to connect":"They asked to connect"}),(0,t.jsxs)("span",{style:{color:"#8b9a9a"},children:[" · ",_(n.t)||"no date"," · ",e.connection?"accepted":"out"===n.dir?"pending":"not accepted yet"]}),i&&l[n.id]&&(0,t.jsx)("div",{style:{marginTop:3,padding:"6px 9px",borderRadius:8,background:"rgba(255,255,255,0.06)",whiteSpace:"pre-wrap",overflowWrap:"anywhere"},children:l[n.id]})]},n.id)),e.request&&(0,t.jsxs)("div",{style:{fontSize:12.5},children:[(0,t.jsx)("span",{style:{color:"#dfe8e8"},children:"Request tracked in the app"}),(0,t.jsxs)("span",{style:{color:"#8b9a9a"},children:[" · ",e.request.status]})]})]})}function G({c:e,onChange:o}){let r=e.crm||{},[i,s]=(0,n.useState)(r.notes||""),[l,a]=(0,n.useState)(""),[d,c]=(0,n.useState)(null),p=(0,n.useRef)(null),h=e.theyWrote?"replied":e.conversations.length||e.invitesOut.length||e.request?"contacted":"new";async function g(t){c("Saving…");try{await o(e.key,t),c("Saved")}catch(e){c(e.message)}}(0,n.useEffect)(()=>()=>clearTimeout(p.current),[]);let x=e=>y(new Date(Date.now()+864e5*e)),m=r.tags||[];function b(){let e=l.trim();e&&(a(""),g({tags:[...m,...e.split(",")]}))}return(0,t.jsxs)("div",{style:{marginTop:12,padding:"10px 12px",borderRadius:8,background:"rgba(52,152,219,0.06)",border:"1px solid rgba(52,152,219,0.18)"},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:12,flexWrap:"wrap",alignItems:"flex-end"},children:[(0,t.jsxs)("label",{style:{fontSize:11.5,color:"#8b9a9a",display:"flex",flexDirection:"column",gap:3},children:["Stage",(0,t.jsxs)("select",{value:r.stage||"",onChange:e=>g({stage:e.target.value||null}),style:{...M,padding:"5px 8px"},children:[(0,t.jsxs)("option",{value:"",children:["Not set (looks like ",u(h),")"]}),f.map(e=>(0,t.jsx)("option",{value:e.id,children:e.label},e.id))]})]}),(0,t.jsxs)("label",{style:{fontSize:11.5,color:"#8b9a9a",display:"flex",flexDirection:"column",gap:3},children:["Next follow-up",(0,t.jsx)("input",{type:"date",value:r.followUp||"",onChange:e=>g({followUp:e.target.value||null}),style:{...M,padding:"4px 8px",colorScheme:"dark"}})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:4,flexWrap:"wrap"},children:[(0,t.jsx)("button",{onClick:()=>g({followUp:x(3)}),style:D,children:"In 3 days"}),(0,t.jsx)("button",{onClick:()=>g({followUp:x(7)}),style:D,children:"In a week"}),r.followUp&&(0,t.jsx)("button",{onClick:()=>g({followUp:null}),style:D,children:"Clear"})]})]}),null==r.stage&&"new"!==h&&(0,t.jsxs)("button",{onClick:()=>g({stage:h}),style:{...D,marginTop:8},children:["Set to ",u(h)]}),(0,t.jsxs)("div",{style:{marginTop:10,display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"},children:[m.map(e=>(0,t.jsxs)("span",{style:{...E("rgba(255,255,255,0.08)"),fontSize:11.5,display:"inline-flex",gap:4,alignItems:"center"},children:[e,(0,t.jsx)("button",{"aria-label":`Remove ${e}`,onClick:()=>g({tags:m.filter(t=>t!==e)}),style:{background:"none",border:"none",color:"#8b9a9a",cursor:"pointer",padding:0,fontSize:12},children:"×"})]},e)),(0,t.jsx)("input",{value:l,onChange:e=>a(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),b())},onBlur:b,placeholder:"Add a tag","aria-label":"Add a tag",style:{...M,padding:"3px 8px",fontSize:12,width:120}})]}),(0,t.jsx)("textarea",{value:i,onChange:e=>{var t;s(t=e.target.value),clearTimeout(p.current),p.current=setTimeout(()=>g({notes:t}),800)},onBlur:function(){clearTimeout(p.current),i!==(r.notes||"")&&g({notes:i})},placeholder:"Your notes on them: kept on this computer only","aria-label":"Notes",rows:4,style:{...M,width:"100%",marginTop:10,resize:"vertical",fontFamily:"inherit",lineHeight:1.45,boxSizing:"border-box"}}),(0,t.jsx)("div",{style:{fontSize:11,color:d&&"Saved"!==d&&"Saving…"!==d?"#ff9b9b":"#778",marginTop:4,minHeight:14},children:d||""})]})}function V({g:e,contacts:n,nameOf:o,keep:r,token:i,onPick:s}){let l=L(e.threadUrl);return(0,t.jsxs)("div",{style:{fontSize:13},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsx)("h3",{style:{margin:0,fontSize:17},children:Y(e,o)}),(0,t.jsx)("span",{style:E("rgba(255,255,255,0.08)"),children:e.unknown?"To someone unnamed":"Group"}),e.unread>0&&(0,t.jsxs)("span",{style:E("#3498DB","#fff"),children:[e.unread," unread"]})]}),(0,t.jsx)("div",{style:{color:"#8b9a9a",marginTop:4,fontSize:12.5},children:[e.last?`Last active ${_(e.last)}`:null,null!=e.count?B(e.count,"message"):null].filter(Boolean).join(" · ")}),l&&(0,t.jsx)("a",{href:l,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none",fontSize:12.5,display:"inline-block",marginTop:6},children:"Conversation on LinkedIn ↗"}),e.people.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:K,children:"Who’s in it"}),(0,t.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:e.people.map(e=>{let r=n.get(e);return(0,t.jsxs)("button",{onClick:()=>s(e),style:{...D,display:"inline-flex",gap:6,alignItems:"center"},children:[(0,t.jsx)(P,{tier:r?.row?.tier}),o(e)||e.split("/").pop(),r&&!r.connection&&(0,t.jsx)("span",{style:{color:"#ffc58a",fontSize:10.5},children:"not a connection"})]},e)})})]}),(0,t.jsx)("div",{style:K,children:"Messages"}),(0,t.jsx)("div",{style:{border:h.LINE,borderRadius:6,overflow:"hidden"},children:(0,t.jsx)(R,{id:e.id,keep:r,group:!0,token:i},`${e.id}:${i}:${r}`)})]})}let X={warm:["Warm","#ff9f43"],cool:["Cool","#3498DB"],dormant:["Dormant","#8899aa"],never:["Never messaged","#556"]},Q={"connections.csv":"first name","messages.csv":"conversation id","invitations.csv":"direction","positions.csv":"company name","shares.csv":"date"},Z=e=>e?new Date(e).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"";async function ee(e){let t=[],n={},o=0;for(let r of e)for(let e of r.messages){let i=JSON.stringify(e).length+2;o+i>25e5&&o>0&&(t.push(n),n={},o=0),n[r.id]||(n[r.id]={title:r.title||"",messages:[]},o+=r.id.length+(r.title||"").length+40),n[r.id].messages.push(e),o+=i}t.push(n);for(let e=0;e<t.length;e++){let n=await fetch("/api/social/messages",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({part:e,parts:t.length,threads:t[e]})});if(!n.ok)throw Error((await n.json().catch(()=>({}))).error||"The messages couldn’t be saved.")}}async function et(e){let t={};for(let n of e)n.note&&(t[n.id]=n.note);let n=await fetch("/api/social/messages",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({invites:t})});if(!n.ok)throw Error((await n.json().catch(()=>({}))).error||"The requests’ notes couldn’t be saved.")}function en({embedded:e=!1}){let{userId:o}=(0,s.useUser)(),[r,f]=(0,n.useState)(void 0),[u,x]=(0,n.useState)(null),[m,y]=(0,n.useState)(!1),[b,v]=(0,n.useState)(null),[w,j]=(0,n.useState)(!1),[k,S]=(0,n.useState)(()=>(0,p.scannerNow)()),[T,C]=(0,n.useState)(!1),[z,R]=(0,n.useState)(0),[I,O]=(0,n.useState)(0),F=(0,n.useRef)(null),_=(0,n.useRef)(null),$=r?.keepMessages===!0,L=()=>fetch("/api/social").then(e=>e.json()).then(e=>f(e.social||null)).catch(()=>f(null)).finally(()=>R(e=>e+1));async function B(e){j(!0),v(null);try{let t={};for(let n of Array.from(e||[])){let e=n.name.toLowerCase();Q[e]&&!t[e]&&(t[e]=(0,a.readTable)(await n.text(),Q[e]))}if(!Object.keys(t).length)throw Error("That folder doesn’t have LinkedIn’s export files in it (Connections.csv, messages.csv and so on).");let n=t["connections.csv"]||[],o=t["messages.csv"]?(0,a.messageStats)(t["messages.csv"]):{asOf:null,people:new Map},r=t["messages.csv"]?(0,a.buildConversations)(t["messages.csv"],{keepText:$}):null,i=t["invitations.csv"]?(0,a.buildInvitations)(t["invitations.csv"],{keepText:$}):null;F.current=t["messages.csv"]||null,_.current=t["invitations.csv"]||null;let s={};for(let[e,t]of o.people)s[e]={last:t.last,lastFromThem:t.lastFromThem,total:t.total,recent:t.recent};if(m)for(let e of n){let t=e["email address"];if(!t)continue;let n=(0,c.keyFor)({profile_url:e.url});s[n]={...s[n]||{},email:t}}let l=o.asOf||Date.now(),d={asOf:l,people:s,conversations:r?r.conversations.map(a.conversationSummary):[],chapters:(0,a.careerChapters)(t["positions.csv"]||[],n,l),posts:t["shares.csv"]?(0,a.postingEffect)(t["shares.csv"],n):null,invites:t["invitations.csv"]?(0,a.invitationSplit)(t["invitations.csv"]):null,invitations:(i||[]).map(({note:e,...t})=>t),names:r?r.names:{},emails:m},p=await fetch("/api/social",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)});if(!p.ok)throw Error((await p.json().catch(()=>({}))).error||"It couldn’t be saved.");r&&$&&await ee(r.conversations),i&&$&&await et(i);let h=r?[r.drafts?`${r.drafts.toLocaleString()} unsent ${1===r.drafts?"draft":"drafts"} left out`:"",r.skipped?`${r.skipped.toLocaleString()} ${1===r.skipped?"row":"rows"} with no conversation or date left out`:""].filter(Boolean):[];v({good:!0,text:`Read ${Object.keys(t).length} of LinkedIn’s files: ${o.people.size.toLocaleString()} people you’ve messaged one to one`+(r?`, ${r.conversations.length.toLocaleString()} conversations${$?", their messages kept on this computer":""}`:"")+(i?`, ${i.length.toLocaleString()} connection requests`:"")+`.${h.length?` (${h.join("; ")}.)`:""}`}),await L()}catch(e){v({good:!1,text:e.message})}finally{j(!1)}}async function W(e=!1){v(null);try{let t=await (0,p.runScrape)(e?"messages-full":"messages");v(t?.exitCode===0?{good:!0,text:e?"Your whole messages history is read.":"Your messages list is read."}:{good:!1,text:"The sync stopped before it finished. The Scan page has the log."}),await L()}catch(e){v({good:!1,text:e.message})}}async function E(e){await fetch("/api/social",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({autoSync:e})}),L()}async function D(e){if(e||window.confirm("Delete the messages kept on this computer? The list of conversations stays; the messages themselves are deleted.")){C(!0),v(null);try{if(e||await fetch("/api/social/messages",{method:"DELETE"}),!(await fetch("/api/social",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({keepMessages:e})})).ok)throw Error("The switch couldn’t be saved.");e&&(F.current||_.current)?(F.current&&await ee((0,a.buildConversations)(F.current,{keepText:!0}).conversations),_.current&&await et((0,a.buildInvitations)(_.current,{keepText:!0})),v({good:!0,text:"Your messages are kept on this computer now."})):e?v({good:!0,text:"On. Choose your export folder again, or sync your messages, to bring the messages in."}):v({good:!0,text:"Off. The kept messages are deleted."})}catch(e){v({good:!1,text:e.message})}finally{C(!1),L()}}}async function M(){await fetch("/api/social",{method:"DELETE"}),F.current=null,_.current=null;let e="Forgotten. Nothing from your export or messages is kept here now, the messages themselves included.";window.confirm("Also delete your CRM: the stages, tags, notes and follow-up dates you added? This can’t be undone. Cancel keeps them.")?(await fetch("/api/social/crm",{method:"DELETE"}),O(e=>e+1),e+=" Your CRM notes are deleted too."):e+=" Your CRM notes are kept.",v({good:!0,text:e}),L()}(0,n.useEffect)(()=>{L()},[]),(0,n.useEffect)(()=>(0,p.watchScanner)(()=>S((0,p.scannerNow)())),[]),(0,n.useEffect)(()=>{if(!o)return;let e=!0;return(0,l.loadNetwork)(o).then(t=>{e&&x(t)}).catch(()=>{}),()=>{e=!1}},[o]);let{merged:A,asOf:P}=(0,n.useMemo)(()=>(0,d.mergeSocial)(r),[r]),U=(0,n.useMemo)(()=>{let e={warm:0,cool:0,dormant:0,never:0};for(let t of u?.degree1||[])e[(0,a.warmthOf)(A.get((0,c.keyFor)(t)),P)]+=1;return e},[u,A,P]);if(g.IS_DEMO)return(0,t.jsx)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"#aaa",padding:40,fontFamily:h.FONT},children:"Not part of the demo."});let q=k?.running,Y={padding:"12px 14px",borderRadius:8,border:h.LINE,background:"rgba(255,255,255,0.03)",marginTop:10},H={fontSize:16,margin:"24px 0 6px"};return(0,t.jsxs)("div",{style:e?{color:"#fff",fontFamily:h.FONT}:{minHeight:"100vh",background:"var(--sd-page)",color:"#fff",fontFamily:h.FONT},children:[!e&&(0,t.jsxs)("header",{style:{padding:"16px 24px",borderBottom:h.LINE,display:"flex",alignItems:"center",gap:16},children:[(0,t.jsx)(i.default,{href:"/",style:{color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:h.LINE},children:"← Back to Map"}),(0,t.jsxs)("h1",{style:{fontSize:22,fontWeight:700,margin:0,color:"#FFD700"},children:["Social ",(0,t.jsx)("span",{style:{fontSize:12,color:"#8b9a9a",fontWeight:600},children:"experimental"})]})]}),(0,t.jsxs)("main",{style:{maxWidth:1180,margin:"0 auto",padding:"8px 16px 64px"},children:[(0,t.jsxs)(h.Body,{style:{marginTop:16},children:["Everyone you’ve been in touch with on LinkedIn, connections or not: who’s waiting on you, who hasn’t answered, what you’ve sent and received, and your own notes and follow-ups on each, from your own LinkedIn data. Only dates, who wrote last, counts and names are kept on this computer, and what messages say only if you turn on ",(0,t.jsx)("i",{children:"Keep my messages"})," below."]}),(0,t.jsx)("h2",{style:H,children:"Your LinkedIn export"}),(0,t.jsxs)("div",{style:Y,children:[(0,t.jsxs)(h.Body,{style:{margin:0},children:["On LinkedIn: ",(0,t.jsx)("i",{children:"Settings → Data privacy → Get a copy of your data"}),", pick the larger archive, and unzip the file it emails you. Then choose that folder here. It’s read in this window; nothing goes to LinkedIn."]}),(0,t.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"#b8c4c4",marginTop:10},children:[(0,t.jsx)("input",{type:"checkbox",checked:m,onChange:e=>y(e.target.checked),style:{marginTop:3}}),(0,t.jsx)("span",{children:"Also keep email addresses from it, on this computer only, for one-click email."})]}),(0,t.jsxs)("div",{style:{marginTop:10,display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsxs)("label",{style:{padding:"7px 14px",borderRadius:8,background:"rgba(52,152,219,0.18)",color:"#cfe6f7",cursor:w?"default":"pointer",fontSize:13},children:[w?"Reading…":r?"Choose a newer export":"Choose the export folder",(0,t.jsx)("input",{type:"file",webkitdirectory:"",directory:"",multiple:!0,disabled:w,style:{display:"none"},onChange:e=>B(e.target.files)})]}),r&&(0,t.jsxs)("span",{style:{fontSize:12,color:"#8b9a9a"},children:["From an export up to ",Z(r.asOf),r.liveAt?` \xb7 messages synced ${Z(Date.parse(r.liveAt))}`:""]}),r&&(0,t.jsx)("button",{onClick:M,style:{background:"none",border:"none",color:"#ff9b9b",cursor:"pointer",fontSize:12},children:"Forget it"})]})]}),(0,t.jsxs)("h2",{style:H,children:["Live messages sync ",(0,t.jsx)("span",{style:{fontSize:11,color:"#FFD700"},children:"experimental"})]}),(0,t.jsxs)("div",{style:Y,children:[(0,t.jsxs)(h.Body,{style:{margin:0},children:["Reads your messages list once, in your own Chrome: who each conversation is with, connections or not, when it was last active, whether it’s unread and who wrote last. It uses no search budget and opens no conversation. The newest message’s words are kept only if ",(0,t.jsx)("i",{children:"Keep my messages"})," is on. The daily sync reads the top of the list; ",(0,t.jsx)("i",{children:"Read my whole history"})," keeps scrolling until no more conversations load (at most 60 scrolls, about 1,000 conversations), at the same slow, fixed pace, so it takes a few minutes."]}),(0,t.jsxs)("div",{style:{marginTop:10,display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsx)("button",{onClick:()=>W(!1),disabled:q,style:{padding:"7px 14px",borderRadius:8,border:"none",background:q?"#333":"rgba(0,255,136,0.15)",color:q?"#777":"#00ff88",cursor:q?"default":"pointer",fontSize:13},children:q?"The scanner is busy":"Sync messages now"}),(0,t.jsx)("button",{onClick:()=>W(!0),disabled:q,style:{padding:"7px 14px",borderRadius:8,border:h.LINE,background:"none",color:q?"#777":"#cfe6f7",cursor:q?"default":"pointer",fontSize:13},children:"Read my whole history"}),(0,t.jsxs)("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12.5,color:"#b8c4c4"},children:[(0,t.jsx)("input",{type:"checkbox",checked:r?.autoSync===!0,onChange:e=>E(e.target.checked)}),"Once a day while the app is open (daytime only)"]})]})]}),b&&(0,t.jsx)("div",{style:{marginTop:10,fontSize:13,color:b.good?"#00ff88":"#ff9b9b"},children:b.text}),(0,t.jsx)("h2",{style:H,children:"People"}),(0,t.jsx)(N,{net:u,asOf:r?P:null,keep:$,onKeep:D,switching:T||w,token:z,crmToken:I}),r&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:H,children:"Warmth"}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(160px, 1fr))",gap:10},children:Object.entries(X).map(([e,[n,o]])=>(0,t.jsxs)("div",{style:{...Y,marginTop:0},children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700,color:o},children:(U[e]||0).toLocaleString()}),(0,t.jsx)("div",{style:{fontSize:12.5,color:"#b8c4c4"},children:n})]},e))}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"#778",marginTop:6},children:"Of your connections. Warm: messaged in the last 30 days, or 3+ messages in 90. Cool: within a year. Dormant: longer ago."}),r.chapters?.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:H,children:"Career chapters"}),(0,t.jsx)("div",{style:{...Y,padding:0},children:r.chapters.map(e=>{let n=(e.people||[]).filter(e=>["warm","cool"].includes((0,a.warmthOf)(A.get((0,c.keyFor)({profile_url:e})),P))).length;return(0,t.jsxs)("div",{style:{display:"flex",gap:10,padding:"8px 14px",borderBottom:"1px solid rgba(255,255,255,0.04)",fontSize:13,alignItems:"baseline"},children:[(0,t.jsxs)("span",{style:{flex:1},children:[(0,t.jsx)("b",{children:e.company})," ",(0,t.jsxs)("span",{style:{color:"#8b9a9a"},children:[e.title," · ",new Date(e.from).getFullYear(),"–",e.to?new Date(e.to).getFullYear():"now"]})]}),(0,t.jsxs)("span",{style:{color:"#b8c4c4"},children:[e.made.toLocaleString()," connections made"]}),(0,t.jsx)("span",{style:{color:"#ff9f43",minWidth:90,textAlign:"right"},children:e.made?`${Math.round(100*n/e.made)}% still in touch`:""})]},`${e.company}-${e.from}`)})})]}),r.posts?.posts?.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:H,children:"Does posting work?"}),(0,t.jsxs)("div",{style:Y,children:[(0,t.jsxs)("div",{style:{fontSize:13},children:["In the week after a post you made ",(0,t.jsx)("b",{children:r.posts.afterPosts.toFixed(1)})," new connections on average; a usual week, ",(0,t.jsx)("b",{children:r.posts.usualWeek.toFixed(1)}),"."]}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"#778",marginTop:4},children:"What came after a post, not proof it came from it."}),[...r.posts.posts].sort((e,t)=>t.week-e.week).slice(0,3).map(e=>(0,t.jsxs)("div",{style:{fontSize:12.5,color:"#b8c4c4",marginTop:6},children:[Z(e.t),": ",e.week," new connections that week ",e.link?(0,t.jsx)("a",{href:e.link,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none"},children:"Post ↗"}):null]},e.t))]})]}),r.invites?.total>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:H,children:"Who reaches out"}),(0,t.jsx)("div",{style:Y,children:(0,t.jsxs)("span",{style:{fontSize:13},children:[r.invites.incoming.toLocaleString()," requests came to you and you sent ",r.invites.outgoing.toLocaleString()," ","(",Math.round(100*r.invites.incoming/r.invites.total),"% came to you), as far as your export shows."]})})]})]})]})]})}var eo=e.i(99883),er=e.i(48235);let ei={S:25,A:15,B:10,C:5,D:2},es={S:100,A:60,B:35,C:15,D:5};var el=e.i(46949),ea=e.i(36774);let ed=I.TIER_COLORS,ec="1px solid rgba(255,255,255,0.1)";function ep({person:e,size:n=36,ring:o}){let r=ed[e?.tier]||"#667";return(0,t.jsxs)("div",{style:{position:"relative",width:n,height:n,flexShrink:0},children:[(0,t.jsx)("div",{style:{width:n,height:n,borderRadius:"50%",background:r,color:e?.tier==="S"?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:.34*n,fontWeight:800,border:`2px solid ${o||r}`},children:(0,el.initialsFor)(e?.name||"?")}),(0,ea.localPhoto)(e?.profile_image_url)&&(0,t.jsx)("img",{src:(0,ea.localPhoto)(e.profile_image_url),alt:"",onError:e=>{e.currentTarget.style.display="none"},style:{position:"absolute",inset:0,width:n,height:n,borderRadius:"50%",objectFit:"cover",border:`2px solid ${o||r}`}})]})}function eh({progress:e,size:n=86,color:o="#FF6B35",children:r}){let i=n/2-5,s=2*Math.PI*i;return(0,t.jsxs)("div",{style:{position:"relative",width:n,height:n},children:[(0,t.jsxs)("svg",{width:n,height:n,style:{position:"absolute",inset:0,transform:"rotate(-90deg)"},children:[(0,t.jsx)("circle",{cx:n/2,cy:n/2,r:i,fill:"none",stroke:"rgba(255,255,255,0.08)",strokeWidth:5}),(0,t.jsx)("circle",{cx:n/2,cy:n/2,r:i,fill:"none",stroke:o,strokeWidth:5,strokeLinecap:"round",strokeDasharray:`${s*Math.min(1,e)} ${s}`,style:{transition:"stroke-dasharray 0.5s ease"}})]}),(0,t.jsx)("div",{style:{position:"absolute",inset:9,display:"flex",alignItems:"center",justifyContent:"center"},children:r})]})}function eg({recs:e,sentIds:o,added:r,mappedIds:s,reach:l,onSend:a,onUndo:d}){let c=(0,n.useMemo)(()=>(function({recs:e=[],sentIds:t=new Set,added:n=[],mappedIds:o=new Set,reach:r=null}){var i;let s,l,a,d=new Map,c=new Set;for(let t of[...e].sort((e,t)=>(t.priority||0)-(e.priority||0))){if(!t.bridge)continue;let e=`${t.bridge.id}|${t.profile_url||t.id}`;if(c.has(e))continue;c.add(e);let n=d.get(t.bridge.id);n||(n={bridge:t.bridge,people:[]},d.set(t.bridge.id,n)),n.people.push(t)}let p=new Map;for(let e of n){let t=e.unlocked_from_bridge_id;t&&p.set(t,[...p.get(t)||[],e])}let h=[],g=0,f=0;for(let{bridge:e,people:n}of d.values()){let o=n.filter(e=>t.has(e.id)),r=p.get(e.id)||[];f+=o.length,g+=o.reduce((e,t)=>e+(ei[t.tier]||2),0),g+=r.reduce((e,t)=>e+(es[t.tier]||5),0);let i=Math.ceil(n.length/5)||1,s=0;for(;s<i-1&&n.slice(5*s,(s+1)*5).every(e=>t.has(e.id));)s++;let l=n.slice(5*s,(s+1)*5),a=l.filter(e=>t.has(e.id)).length,d=a===l.length&&s===i-1;h.push({bridge:e,people:n,stage:s+1,stages:i,targets:l,done:a,progress:l.length?a/l.length:1,complete:d,sent:o.length,added:r,value:l.filter(e=>!t.has(e.id)).reduce((e,t)=>e+(t.priority||0),0),open:{S:l.filter(e=>"S"===e.tier&&!t.has(e.id)).length,A:l.filter(e=>"A"===e.tier&&!t.has(e.id)).length}})}h.sort((e,t)=>e.complete-t.complete||(t.progress>0&&t.progress<1)-(e.progress>0&&e.progress<1)||t.progress-e.progress||t.value-e.value);let u=h.filter(e=>!e.complete).flatMap(e=>e.targets.filter(e=>!t.has(e.id)).map(t=>({person:t,cluster:e,score:(t.priority||0)*(1+.6*e.progress)}))).sort((e,t)=>t.score-e.score),x=new Set,m=[];for(let e of u){let t=e.person.profile_url||e.person.id;if(!x.has(t)&&(x.add(t),m.push(e),3===m.length))break}let y=n.filter(e=>e.unlocked_from_bridge_id).length;return{clusters:h,nextMoves:m,points:g,level:(l=((s=Math.floor(Math.sqrt(Math.max(0,i=g)/40))+1)-1)**2*40,a=s**2*40,{level:s,floor:l,next:a,progress:(i-l)/(a-l)}),sentTotal:f,addedTotal:y,newDoors:n.filter(e=>e.unlocked_from_bridge_id&&"todo"===(0,er.circleState)(e,r||{scanned:o,hidden:new Set})),clearedStages:h.reduce((e,t)=>e+(t.stage-1)+ +!!t.complete,0)}})({recs:e,sentIds:o,added:r,mappedIds:s,reach:l}),[e,o,r,s,l]),[p,h]=(0,n.useState)(null),[g,f]=(0,n.useState)(null),{level:u}=c;async function x(e,t){await a(e);let n=t.done+1,o=String(t.bridge.name||"").split(/[\s,]+/)[0];f(n>=t.targets.length?`+${ei[e.tier]||2} \xb7 Stage ${t.stage} of ${o}'s circle cleared — the next 5 are up`:`+${ei[e.tier]||2} \xb7 ${o}'s circle ${n}/${t.targets.length}`),setTimeout(()=>f(null),3500)}let m=c.clusters.find(e=>e.bridge.id===p);return(0,t.jsxs)("div",{style:{maxWidth:1100,margin:"0 auto",padding:"16px 20px 60px"},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:16,alignItems:"center",flexWrap:"wrap",padding:16,borderRadius:12,border:ec,background:"linear-gradient(135deg, rgba(255,107,53,0.10), rgba(155,89,182,0.08))"},children:[(0,t.jsxs)("div",{style:{width:64,height:64,borderRadius:16,background:"linear-gradient(135deg, #FFD700, #FF6B35)",color:"#000",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},children:[(0,t.jsx)("div",{style:{fontSize:10,fontWeight:800},children:"LEVEL"}),(0,t.jsx)("div",{style:{fontSize:26,fontWeight:900,lineHeight:1},children:u.level})]}),(0,t.jsxs)("div",{style:{flex:1,minWidth:220},children:[(0,t.jsxs)("div",{style:{fontSize:13,color:"#dfe6e9"},children:[(0,t.jsx)("b",{children:c.points})," points · ",(0,t.jsx)("b",{children:u.next-c.points})," to level ",u.level+1]}),(0,t.jsx)("div",{style:{height:8,borderRadius:4,background:"rgba(255,255,255,0.08)",marginTop:6,overflow:"hidden"},children:(0,t.jsx)("div",{style:{height:"100%",width:`${Math.round(100*u.progress)}%`,background:"linear-gradient(90deg, #FFD700, #FF6B35)",transition:"width 0.5s"}})}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"#8b9a9a",marginTop:6},children:"Points come from invites you send and people who accept — not from browsing."})]}),[[c.sentTotal,"invites sent"],[c.addedTotal,"people added"],[c.clearedStages,"stages cleared"]].map(([e,n])=>(0,t.jsxs)("div",{style:{textAlign:"center",minWidth:80},children:[(0,t.jsx)("div",{style:{fontSize:24,fontWeight:900},children:e}),(0,t.jsx)("div",{style:{fontSize:11,color:"#8b9a9a"},children:n})]},n))]}),c.newDoors.length>0&&(0,t.jsxs)("div",{style:{marginTop:12,padding:"10px 14px",borderRadius:10,border:"1px solid rgba(0,255,136,0.3)",background:"rgba(0,255,136,0.06)",fontSize:13},children:["🚪 ",(0,t.jsxs)("b",{children:[c.newDoors.length," new ",1===c.newDoors.length?"door":"doors",":"]})," people you added through a circle, whose own circle isn’t mapped yet. That’s the next degree. ",(0,t.jsx)(i.default,{href:"/setup",style:{color:"#00ff88"},children:"Map them on the Scan page →"})]}),c.nextMoves.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h3",{style:{margin:"22px 0 10px",fontSize:15},children:"Next best moves"}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:12},children:c.nextMoves.map(({person:e,cluster:n},o)=>(0,t.jsxs)("div",{style:{padding:14,borderRadius:12,border:`1px solid ${ed[e.tier]}55`,background:"rgba(255,255,255,0.03)",position:"relative"},children:[(0,t.jsxs)("div",{style:{position:"absolute",top:10,right:12,fontSize:11,fontWeight:800,color:"#FF6B35"},children:["#",o+1]}),(0,t.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"center"},children:[(0,t.jsx)(ep,{person:e,size:44}),(0,t.jsxs)("div",{style:{minWidth:0},children:[(0,t.jsx)("div",{style:{fontWeight:700,fontSize:14},children:e.name}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"#8b9a9a",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:220},children:e.headline})]})]}),(0,t.jsxs)("div",{style:{fontSize:11.5,color:"#aab7b7",margin:"10px 0"},children:["via ",(0,t.jsx)("b",{style:{color:ed[n.bridge.tier]},children:n.bridge.name})," · their circle ",n.done,"/",n.targets.length," this stage"]}),(0,t.jsxs)("div",{style:{display:"flex",gap:8},children:[e.profile_url&&(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",style:eu,children:"Open on LinkedIn"}),(0,t.jsxs)("button",{onClick:()=>x(e,n),style:ef,children:["I sent an invite · +",ei[e.tier]||2]})]})]},e.id))})]}),(0,t.jsx)("h3",{style:{margin:"26px 0 4px",fontSize:15},children:"Circles to work through"}),(0,t.jsxs)("div",{style:{fontSize:12,color:"#8b9a9a",marginBottom:12},children:["Each is one of your connections and the best people they know, ",5," at a time. Fill the ring to clear a stage."]}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(190px, 1fr))",gap:12},children:c.clusters.map(e=>{let n=p===e.bridge.id;return(0,t.jsxs)("button",{onClick:()=>h(n?null:e.bridge.id),style:{padding:12,borderRadius:12,cursor:"pointer",textAlign:"center",color:"#fff",border:n?"1px solid #FF6B35":ec,background:e.complete?"rgba(0,255,136,0.06)":"rgba(255,255,255,0.03)",display:"flex",flexDirection:"column",alignItems:"center",gap:6},children:[(0,t.jsx)(eh,{progress:e.progress,color:e.complete?"#00ff88":"#FF6B35",children:(0,t.jsx)(ep,{person:e.bridge,size:60})}),(0,t.jsx)("div",{style:{fontWeight:700,fontSize:13,maxWidth:170,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.bridge.name}),(0,t.jsx)("div",{style:{fontSize:11,color:e.complete?"#00ff88":"#aab7b7"},children:e.complete?"Circle cleared":`Stage ${e.stage} of ${e.stages} \xb7 ${e.done}/${e.targets.length}`}),(0,t.jsx)("div",{style:{display:"flex",gap:4},children:e.targets.map(e=>(0,t.jsx)("span",{title:e.name,style:{width:12,height:12,borderRadius:"50%",border:`2px solid ${ed[e.tier]||"#667"}`,background:o.has(e.id)?ed[e.tier]||"#667":"transparent"}},e.id))}),(0,t.jsxs)("div",{style:{fontSize:10.5,color:"#778"},children:[e.open.S?`${e.open.S} S \xb7 `:"",e.open.A?`${e.open.A} A \xb7 `:"",e.people.length," worth adding",e.added.length?` \xb7 ★ ${e.added.length} added`:""]})]},e.bridge.id)})}),m&&(0,t.jsxs)("div",{style:{marginTop:14,padding:16,borderRadius:12,border:"1px solid rgba(255,107,53,0.4)",background:"rgba(255,107,53,0.05)"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10},children:[(0,t.jsx)(ep,{person:m.bridge,size:40}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{fontWeight:800},children:[m.bridge.name,"’s circle · stage ",m.stage," of ",m.stages]}),(0,t.jsxs)("div",{style:{fontSize:12,color:"#aab7b7"},children:["Ask ",m.bridge.name?.split(" ")[0]," for an intro, or invite them directly. Mark each one when it’s sent."]})]})]}),m.targets.map(e=>{let n=o.has(e.id);return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 0",borderTop:"1px solid rgba(255,255,255,0.05)"},children:[(0,t.jsx)(ep,{person:e,size:34,ring:n?"#00ff88":void 0}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsxs)("div",{style:{fontWeight:600,fontSize:13},children:[e.name," ",(0,t.jsx)("span",{style:{color:ed[e.tier],fontSize:11},children:e.tier})]}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"#8b9a9a",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline})]}),e.profile_url&&(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",style:eu,children:"LinkedIn"}),n?(0,t.jsx)("button",{onClick:()=>d(e),style:{...eu,color:"#00ff88"},children:"Sent ✓ (undo)"}):(0,t.jsxs)("button",{onClick:()=>x(e,m),style:ef,children:["Sent · +",ei[e.tier]||2]})]},e.id)}),m.added.length>0&&(0,t.jsxs)("div",{style:{marginTop:10,fontSize:12,color:"#00ff88"},children:["★ Added from this circle: ",m.added.map(e=>e.name).join(", ")]})]}),g&&(0,t.jsx)("div",{role:"status",style:{position:"fixed",bottom:24,left:"50%",transform:"translateX(-50%)",padding:"10px 18px",borderRadius:24,background:"linear-gradient(135deg, #FFD700, #FF6B35)",color:"#000",fontWeight:800,fontSize:13,boxShadow:"0 8px 30px rgba(0,0,0,0.5)",zIndex:50},children:g})]})}let ef={padding:"7px 12px",borderRadius:8,border:"none",cursor:"pointer",fontWeight:800,fontSize:12,background:"linear-gradient(135deg, #FF6B35, #FFD700)",color:"#000"},eu={padding:"7px 12px",borderRadius:8,border:ec,cursor:"pointer",fontWeight:600,fontSize:12,background:"rgba(255,255,255,0.05)",color:"#dfe6e9",textDecoration:"none"};var ex=e.i(2776),em=e.i(90179),ey=e.i(28867),eb=e.i(86106);let ev=["quest","recs","pending","messages"];function ew(){let{userId:e,userProfile:a}=(0,s.useUser)(),d=a?.sectors||[],[h,f]=(0,n.useState)([]),[u,x]=(0,n.useState)(!0),[m,y]=(0,n.useState)("all"),[b,v]=(0,n.useState)(new Set),w=(0,ey.default)(),[j,k]=(0,n.useState)([]),[S,T]=(0,n.useState)({}),C=(0,o.useSearchParams)().get("view"),[z,R]=(0,n.useState)(()=>ev.includes(C)?C:"quest"),[O,F]=(0,n.useState)([]),[_,$]=(0,n.useState)(()=>new Set),[L,B]=(0,n.useState)(null),[W,E]=(0,n.useState)(null),[D,M]=(0,n.useState)(()=>{{let e=new URLSearchParams(window.location.search);if(e.get("groupBy"))return e.get("groupBy")}return"bridge"});(0,n.useEffect)(()=>{{let e=new URLSearchParams(window.location.search).get("bridge");e&&E(e)}},[]),(0,n.useEffect)(()=>{!g.IS_DEMO&&e&&t();async function t(){let[t,n,o]=await Promise.all([(0,l.loadNetwork)(e),fetch(`/api/outreach?userId=${e}`).then(e=>e.json()).catch(()=>({pending:[]})),(0,p.loadScanNotes)()]),r=t.degree1,i=t.degree2;F(r.filter(e=>e.unlocked_from_bridge_id)),$(new Set(i.map(e=>e.source_connection_id).filter(Boolean))),B((0,er.reachIndex)(r,i,o));let s=new Set(r.map(e=>e.profile_url)),a={};r.forEach(e=>{a[e.id]=e}),k(n.pending||[]),T(a),f(i.filter(e=>("S"===e.tier||"A"===e.tier||"B"===e.tier)&&!s.has(e.profile_url)).map(e=>{let t,n,o=a[e.source_connection_id],r=(t=parseFloat(e.power_score)||0,n=(e.headline||"").toLowerCase(),(0,em.rowCompanyScore)(e)>=em.TOP_COMPANY&&(t+=1),(d||[]).forEach(e=>{n.includes(e.toLowerCase())&&(t+=.5)}),"S"===e.tier?t*=1.5:"A"===e.tier&&(t*=1.2),t),i="S"===e.tier?50:"A"===e.tier?25:10;return{...e,bridge:o,priority:r,xp:i}}).sort((e,t)=>t.priority-e.priority)),x(!1)}},[e]);let N=(0,n.useMemo)(()=>new Set([...j,...h].filter(e=>(0,eb.hasRequest)(e,w)).map(e=>e.id)),[j,h,w]),A=(0,n.useMemo)(()=>{let e=new Set,t=[];for(let n of[...j,...h]){let o=(0,c.keyFor)(n);!e.has(o)&&(0,eb.hasRequest)(n,w)&&(e.add(o),t.push({...n,bridge:S[n.source_connection_id]||n.bridge||null}))}return t},[j,h,w,S]);if((0,n.useEffect)(()=>((0,eo.setNotchTabs)({items:[{key:"quest",label:"Circles"},{key:"recs",label:`To add (${h.length})`},{key:"pending",label:`Pending (${A.length})`},{key:"messages",label:"Messages & follow-ups"}],current:z,onPick:R}),()=>(0,eo.setNotchTabs)(null)),[z,h.length,A.length]),g.IS_DEMO)return(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"rgba(255,255,255,0.7)",fontFamily:"var(--sd-font)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:10,textAlign:"center",padding:24},children:[(0,t.jsx)("h2",{style:{margin:0,fontSize:18,fontWeight:700,color:"#fff"},children:"Not part of the demo"}),(0,t.jsx)("div",{style:{fontSize:13},children:"The public demo includes the Network Circle and Degrees views only."}),(0,t.jsx)(i.default,{href:"/",style:{fontSize:12,color:"rgba(255,255,255,0.5)",textDecoration:"none"},children:"← Back to the network"})]});let P="all"===m?h:h.filter(e=>e.tier===m);W&&(P=P.filter(e=>e.bridge?.id===W));let U={S:0,A:0,B:0};h.forEach(e=>{void 0!==U[e.tier]&&U[e.tier]++});let q={};P.forEach(e=>{let t;q[t="bridge"===D?e.bridge?.id||"unknown":"company"===D?(e.company||"Unknown").trim()||"Unknown":e.tier]||(q[t]=[]),q[t].push(e)});let Y={S:0,A:1,B:2},H=Object.entries(q).sort((e,t)=>{if("tier"===D)return(Y[e[0]]||9)-(Y[t[0]]||9);if("bridge"===D){let n=e[1][0]?.bridge,o=t[1][0]?.bridge,r=Y[n?.tier]??9,i=Y[o?.tier]??9;if(r!==i)return r-i}return t[1].length-e[1].length});function K(e){v(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}return u?(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"#fff"},children:"Loading..."}):(0,t.jsxs)("div",{style:{height:"100vh",background:"var(--sd-page)",color:"#fff",fontFamily:"var(--sd-font)",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,t.jsx)(r.default,{active:"outlink"}),("recs"===z||"pending"===z)&&(0,t.jsxs)("div",{style:{padding:"10px 24px",borderBottom:"1px solid rgba(255,255,255,0.08)",flexShrink:0},children:[(0,t.jsx)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:10},children:(0,t.jsx)("div",{style:{marginLeft:"auto",display:"flex",gap:6},children:"recs"===z&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{onClick:()=>M("tier"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"tier"===D?"rgba(255,255,255,0.15)":"rgba(255,255,255,0.05)",color:"tier"===D?"#fff":"#666"},children:"By Tier"}),(0,t.jsx)("button",{onClick:()=>M("bridge"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"bridge"===D?"rgba(255,255,255,0.15)":"rgba(255,255,255,0.05)",color:"bridge"===D?"#fff":"#666"},children:"By Bridge"}),(0,t.jsx)("button",{onClick:()=>M("company"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"company"===D?"rgba(255,255,255,0.15)":"rgba(255,255,255,0.05)",color:"company"===D?"#fff":"#666"},children:"By Company"})]})})}),(0,t.jsx)("div",{style:{display:"flex",gap:6},children:[{k:"all",l:`All (${h.length})`},{k:"S",l:`S (${U.S})`,c:I.TIER_COLORS.S},{k:"A",l:`A (${U.A})`,c:I.TIER_COLORS.A},{k:"B",l:`B (${U.B})`,c:I.TIER_COLORS.B}].map(e=>(0,t.jsx)("button",{onClick:()=>y(e.k),style:{padding:"4px 12px",borderRadius:16,border:"none",fontSize:11,fontWeight:600,cursor:"pointer",background:m===e.k?e.c||"#fff":"rgba(255,255,255,0.06)",color:m===e.k?"#000":e.c||"#888"},children:e.l},e.k))})]}),"messages"===z&&(0,t.jsx)("div",{style:{flex:1,overflow:"auto",padding:"40px 8px 0"},children:(0,t.jsx)(en,{embedded:!0})}),"recs"===z&&b.size>0&&(0,t.jsxs)("div",{style:{padding:"10px 24px",background:"rgba(255,215,0,0.08)",borderBottom:"1px solid rgba(255,215,0,0.2)",display:"flex",alignItems:"center",gap:12,flexShrink:0},children:[(0,t.jsxs)("span",{style:{fontSize:12,color:"#FFD700",fontWeight:600},children:[b.size," selected"]}),(0,t.jsxs)("button",{onClick:function(){let e=P.filter(e=>b.has(e.id));if(0===e.length)return;if(1===e.length)return void window.open(e[0].profile_url,"_blank");let t=new Blob([`<!DOCTYPE html><html><head><title>Outlink — ${e.length} profiles</title>
3
+ <style>body{background:#0a0a1a;color:#fff;font-family:-apple-system,sans-serif;padding:24px;margin:0}
4
+ h2{color:#FFD700;margin-bottom:4px}p{color:#888;font-size:13px;margin-bottom:16px}
5
+ .btn{display:block;padding:12px 16px;margin-bottom:6px;background:rgba(255,255,255,0.06);
6
+ border:1px solid rgba(255,255,255,0.1);border-radius:8px;color:#fff;text-decoration:none;
7
+ font-size:13px;transition:background 0.15s}.btn:hover{background:rgba(0,119,181,0.2)}
8
+ .name{font-weight:700}.tier{font-size:11px;margin-left:8px;font-weight:600}
9
+ .open-all{display:inline-block;padding:12px 24px;background:linear-gradient(135deg,#FFD700,#FF6B35);
10
+ color:#000;border-radius:8px;font-weight:700;font-size:14px;cursor:pointer;border:none;margin-bottom:20px}</style></head>
11
+ <body><h2>Open ${e.length} Profiles</h2>
12
+ <p>Click each link or use the button below to open all at once.</p>
13
+ <button class="open-all" onclick="document.querySelectorAll('.btn').forEach((a,i)=>setTimeout(()=>a.click(),i*300))">
14
+ Open All (${e.length})</button>
15
+ ${e.map(e=>{let t="S"===e.tier?"#FFD700":"A"===e.tier?"#9B59B6":"#3498DB";return'<a class="btn" href="'+e.profile_url+'" target="_blank"><span class="name">'+(e.name||"")+'</span><span class="tier" style="color:'+t+'">'+e.tier+" · "+parseFloat(e.power_score||0).toFixed(1)+'</span><br><span style="color:#666;font-size:11px">'+(e.headline||"").substring(0,60)+"</span></a>"}).join("")}
16
+ </body></html>`],{type:"text/html"});window.open(URL.createObjectURL(t),"_blank")},style:{padding:"6px 16px",borderRadius:6,border:"none",cursor:"pointer",background:"#0077B5",color:"#fff",fontWeight:700,fontSize:12},children:["Open ",b.size," on LinkedIn"]}),(0,t.jsxs)("span",{style:{fontSize:10,color:"#888"},children:["+",P.filter(e=>b.has(e.id)).reduce((e,t)=>e+t.xp,0)," XP potential"]}),(0,t.jsx)("button",{onClick:()=>v(new Set),style:{marginLeft:"auto",background:"none",border:"none",color:"#888",cursor:"pointer",fontSize:11},children:"Clear"})]}),"quest"===z&&(0,t.jsx)("div",{style:{flex:1,overflow:"auto"},children:(0,t.jsx)(eg,{recs:h,sentIds:N,added:O,mappedIds:_,reach:L,onSend:e=>(0,eb.markRequested)(e,{bridgeId:e.source_connection_id}).catch(()=>{}),onUndo:e=>(0,eb.undoRequest)(e).catch(()=>{})})}),("recs"===z||"pending"===z)&&(0,t.jsx)("div",{style:{flex:1,overflow:"auto",padding:"12px 24px"},children:(0,t.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:["pending"===z&&(0,t.jsx)(t.Fragment,{children:0===A.length?(0,t.jsxs)("div",{style:{textAlign:"center",padding:40,color:"#555"},children:[(0,t.jsx)("div",{style:{fontSize:32,marginBottom:8},children:"⏳"}),(0,t.jsx)("div",{style:{fontSize:14,fontWeight:600},children:"No pending requests"}),(0,t.jsx)("div",{style:{fontSize:11,color:"#444",marginTop:4},children:'Click "Add" on someone to track your outreach'})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:{fontSize:10,color:"#666",marginBottom:12},children:"Waiting for response. When they accept, their cluster unlocks for bridging."}),A.map(e=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"10px 12px",marginBottom:4,background:"rgba(255,107,53,0.04)",borderRadius:8,border:"1px solid rgba(255,107,53,0.1)"},children:[(0,ea.localPhoto)(e.profile_image_url)?(0,t.jsx)("img",{src:(0,ea.localPhoto)(e.profile_image_url),alt:"",style:{width:36,height:36,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`2px solid ${I.TIER_COLORS[e.tier]||"#555"}`},onError:e=>{e.target.style.display="none"}}):(0,t.jsx)("div",{style:{width:36,height:36,borderRadius:"50%",flexShrink:0,fontSize:14,fontWeight:700,background:I.TIER_COLORS[e.tier]||"#555",color:"S"===e.tier?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center"},children:e.name?.charAt(0)}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsx)("div",{style:{fontSize:13,fontWeight:600},children:e.name}),(0,t.jsx)("div",{style:{fontSize:10,color:"#888",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline?.substring(0,55)}),e.bridge&&(0,t.jsxs)("div",{style:{fontSize:9,color:"#FF6B35",marginTop:2},children:["via ",e.bridge.name?.split(" ")[0]," · unlocks bridge cluster"]})]}),(0,t.jsxs)("div",{style:{textAlign:"center",flexShrink:0},children:[(0,t.jsx)("div",{style:{fontSize:10,fontWeight:800,color:I.TIER_COLORS[e.tier],padding:"2px 8px",borderRadius:4,background:`${I.TIER_COLORS[e.tier]||"#555"}15`},children:e.tier}),(0,t.jsx)("div",{style:{fontSize:8,color:"#FF6B35",marginTop:2,fontWeight:600},children:"PENDING"})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:4,flexShrink:0},children:[(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none"},children:"View"}),(0,t.jsx)("button",{onClick:()=>{(0,eb.undoRequest)(e).catch(()=>{})},style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:600,background:"rgba(255,255,255,0.06)",color:"#666",border:"none",cursor:"pointer"},children:"Undo"})]})]},e.id))]})}),"recs"===z&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[(0,t.jsx)("input",{type:"checkbox",checked:b.size===P.length&&P.length>0,onChange:function(){b.size===P.length?v(new Set):v(new Set(P.map(e=>e.id)))},style:{cursor:"pointer"}}),(0,t.jsxs)("span",{style:{fontSize:10,color:"#666"},children:["Select all (",P.length,")"]})]}),H.map(([e,n])=>(0,t.jsxs)("div",{style:{marginBottom:16},children:["bridge"===D?(()=>{let e=n[0]?.bridge;if(!e)return null;let o=n.filter(e=>"S"===e.tier).length,r=n.filter(e=>"A"===e.tier).length,i=n.filter(e=>"B"===e.tier).length,s=3*o+2*r+i;return(0,t.jsxs)("div",{style:{padding:"10px 12px",marginBottom:6,borderRadius:8,background:`${I.TIER_COLORS[e.tier]||"#555"}08`,border:`1px solid ${I.TIER_COLORS[e.tier]||"#555"}20`},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,ea.localPhoto)(e.profile_image_url)?(0,t.jsx)("img",{src:(0,ea.localPhoto)(e.profile_image_url),alt:"",style:{width:36,height:36,borderRadius:"50%",objectFit:"cover",border:`2px solid ${I.TIER_COLORS[e.tier]}`},onError:e=>{e.target.style.display="none"}}):(0,t.jsx)("div",{style:{width:36,height:36,borderRadius:"50%",fontSize:14,fontWeight:700,background:I.TIER_COLORS[e.tier],color:"S"===e.tier?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center"},children:e.name?.charAt(0)}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"#fff"},children:e.name}),(0,t.jsx)("div",{style:{fontSize:9,color:"#888",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline?.substring(0,50)})]}),(0,t.jsxs)("div",{style:{textAlign:"right",flexShrink:0},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:800,color:I.TIER_COLORS[e.tier]},children:e.tier}),(0,t.jsxs)("div",{style:{fontSize:8,color:"#666"},children:[n.length," to add"]})]})]}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:8},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:4,fontSize:9},children:[o>0&&(0,t.jsxs)("span",{style:{color:"#FFD700",fontWeight:700},children:[o,"S"]}),r>0&&(0,t.jsxs)("span",{style:{color:"#9B59B6",fontWeight:700},children:[r,"A"]}),i>0&&(0,t.jsxs)("span",{style:{color:"#3498DB",fontWeight:700},children:[i,"B"]})]}),(0,t.jsx)("div",{style:{flex:1,height:4,background:"rgba(255,255,255,0.06)",borderRadius:2},children:(0,t.jsx)("div",{style:{height:"100%",borderRadius:2,width:`${Math.min(100,s/30*100)}%`,background:`linear-gradient(90deg, ${I.TIER_COLORS[e.tier]}, #FF6B35)`}})}),(0,t.jsxs)("button",{onClick:()=>{let e=n.map(e=>e.profile_url);if(1===e.length)return void window.open(e[0],"_blank");let t=`<!DOCTYPE html><html><head><title>Top ${Math.min(10,e.length)}</title>
17
+ <style>body{background:#0a0a1a;color:#fff;font-family:-apple-system,sans-serif;padding:24px}
18
+ .btn{display:block;padding:10px 14px;margin-bottom:4px;background:rgba(255,255,255,0.06);
19
+ border:1px solid rgba(255,255,255,0.1);border-radius:6px;color:#fff;text-decoration:none;font-size:12px}
20
+ .btn:hover{background:rgba(0,119,181,0.2)}
21
+ .oa{display:inline-block;padding:10px 20px;background:#0077B5;color:#fff;border-radius:6px;
22
+ font-weight:700;font-size:13px;cursor:pointer;border:none;margin-bottom:16px}</style></head>
23
+ <body><h3 style="color:#FF6B35">Top ${Math.min(10,e.length)} to connect</h3>
24
+ <button class="oa" onclick="document.querySelectorAll('.btn').forEach((a,i)=>setTimeout(()=>a.click(),i*300))">
25
+ Open All</button>${e.slice(0,10).map(e=>'<a class="btn" href="'+e+'" target="_blank">'+e.split("/in/")[1]?.replace("/","")+"</a>").join("")}</body></html>`;window.open(URL.createObjectURL(new Blob([t],{type:"text/html"})),"_blank")},style:{padding:"4px 10px",borderRadius:4,border:"none",cursor:"pointer",background:"#0077B5",color:"#fff",fontSize:9,fontWeight:700,whiteSpace:"nowrap"},children:["Open Top ",Math.min(10,n.length)]})]})]})})():(0,t.jsxs)("div",{style:{padding:"6px 10px",marginBottom:4,background:"tier"===D?`${I.TIER_COLORS[e]||"#555"}15`:"rgba(255,255,255,0.04)",borderLeft:`3px solid ${"tier"===D?I.TIER_COLORS[e]||"#555":"#FF6B35"}`,borderRadius:4,display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,t.jsx)("span",{style:{fontSize:11,fontWeight:700,color:"tier"===D?I.TIER_COLORS[e]||"#888":"#FF6B35"},children:"tier"===D?`${e}-Tier`:e}),(0,t.jsx)("span",{style:{fontSize:10,color:"#666"},children:n.length})]}),"bridge"===D?["S","A","B"].map(e=>{let o=n.filter(t=>t.tier===e);return 0===o.length?null:(0,t.jsxs)("div",{style:{marginBottom:6},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"3px 8px",marginBottom:2,borderLeft:`2px solid ${I.TIER_COLORS[e]}`},children:[(0,t.jsx)("input",{type:"checkbox",checked:o.every(e=>b.has(e.id)),onChange:()=>{let e=o.every(e=>b.has(e.id));v(t=>{let n=new Set(t);return o.forEach(t=>{e?n.delete(t.id):n.add(t.id)}),n})},style:{cursor:"pointer",flexShrink:0}}),(0,t.jsx)("div",{style:{width:6,height:6,borderRadius:"50%",background:I.TIER_COLORS[e]}}),(0,t.jsxs)("span",{style:{fontSize:9,fontWeight:700,color:I.TIER_COLORS[e]},children:[e,"-Tier"]}),(0,t.jsx)("span",{style:{fontSize:8,color:"#555"},children:o.length}),(0,t.jsxs)("button",{onClick:()=>{if(1===o.length)return void window.open(o[0].profile_url,"_blank");let t=`<!DOCTYPE html><html><head><title>${e}-Tier — ${o.length}</title>
26
+ <style>body{background:#0a0a1a;color:#fff;font-family:-apple-system,sans-serif;padding:24px}
27
+ .btn{display:block;padding:10px 14px;margin-bottom:4px;background:rgba(255,255,255,0.06);
28
+ border:1px solid rgba(255,255,255,0.1);border-radius:6px;color:#fff;text-decoration:none;font-size:12px}
29
+ .btn:hover{background:rgba(0,119,181,0.2)}
30
+ .oa{display:inline-block;padding:10px 20px;background:#0077B5;color:#fff;border-radius:6px;
31
+ font-weight:700;font-size:13px;cursor:pointer;border:none;margin-bottom:16px}</style></head>
32
+ <body><h3 style="color:${I.TIER_COLORS[e]}">${e}-Tier (${o.length})</h3>
33
+ <button class="oa" onclick="document.querySelectorAll('.btn').forEach((a,i)=>setTimeout(()=>a.click(),i*300))">
34
+ Open All</button>${o.map(e=>'<a class="btn" href="'+e.profile_url+'" target="_blank">'+e.name+" · "+parseFloat(e.power_score||0).toFixed(1)+"</a>").join("")}</body></html>`;window.open(URL.createObjectURL(new Blob([t],{type:"text/html"})),"_blank")},style:{marginLeft:"auto",padding:"2px 8px",borderRadius:3,border:"none",cursor:"pointer",background:"#0077B5",color:"#fff",fontSize:8,fontWeight:700},children:["Open All ",e]})]}),o.map(e=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"5px 8px 5px 16px",borderBottom:"1px solid rgba(255,255,255,0.02)",background:b.has(e.id)?"rgba(255,215,0,0.05)":"transparent",cursor:"pointer"},onMouseEnter:t=>{b.has(e.id)||(t.currentTarget.style.background="rgba(255,255,255,0.04)")},onMouseLeave:t=>{b.has(e.id)||(t.currentTarget.style.background="transparent")},children:[(0,t.jsx)("input",{type:"checkbox",checked:b.has(e.id),onChange:()=>K(e.id),onClick:e=>e.stopPropagation(),style:{cursor:"pointer",flexShrink:0}}),(0,ea.localPhoto)(e.profile_image_url)?(0,t.jsx)("img",{src:(0,ea.localPhoto)(e.profile_image_url),alt:"",style:{width:28,height:28,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`1.5px solid ${I.TIER_COLORS[e.tier]||"#555"}`},onError:e=>{e.target.style.display="none"}}):(0,t.jsx)("div",{style:{width:28,height:28,borderRadius:"50%",flexShrink:0,fontSize:10,fontWeight:700,background:I.TIER_COLORS[e.tier]||"#555",color:"S"===e.tier?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center"},children:e.name?.charAt(0)}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},onClick:()=>K(e.id),children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,t.jsx)("div",{style:{fontSize:8,color:"#666",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline?.substring(0,45)})]}),(0,t.jsx)("span",{style:{fontSize:9,fontWeight:700,color:I.TIER_COLORS[e.tier],flexShrink:0},children:parseFloat(e.power_score||0).toFixed(1)}),N.has(e.id)?(0,t.jsx)("span",{style:{padding:"3px 6px",borderRadius:3,fontSize:8,fontWeight:700,background:"rgba(255,107,53,0.15)",color:"#FF6B35",flexShrink:0},children:"Sent"}):(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",onClick:t=>{t.stopPropagation(),(0,eb.markRequested)(e,{bridgeId:e.source_connection_id}).catch(()=>{})},style:{padding:"3px 6px",borderRadius:3,fontSize:8,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none",flexShrink:0},children:"Add"})]},e.id))]},e)}):n.map(e=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"6px 8px",borderBottom:"1px solid rgba(255,255,255,0.03)",background:b.has(e.id)?"rgba(255,215,0,0.05)":"transparent",cursor:"pointer"},onMouseEnter:t=>{b.has(e.id)||(t.currentTarget.style.background="rgba(255,255,255,0.04)")},onMouseLeave:t=>{b.has(e.id)||(t.currentTarget.style.background="transparent")},children:[(0,t.jsx)("input",{type:"checkbox",checked:b.has(e.id),onChange:()=>K(e.id),onClick:e=>e.stopPropagation(),style:{cursor:"pointer",flexShrink:0}}),(0,ea.localPhoto)(e.profile_image_url)?(0,t.jsx)("img",{src:(0,ea.localPhoto)(e.profile_image_url),alt:"",style:{width:32,height:32,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`1.5px solid ${I.TIER_COLORS[e.tier]||"#555"}`},onError:e=>{e.target.style.display="none",e.target.nextSibling.style.display="flex"}}):null,(0,t.jsx)("div",{style:{width:32,height:32,borderRadius:"50%",flexShrink:0,fontSize:12,fontWeight:700,background:I.TIER_COLORS[e.tier]||"#555",color:"S"===e.tier?"#000":"#fff",display:(0,ea.localPhoto)(e.profile_image_url)?"none":"flex",alignItems:"center",justifyContent:"center"},children:e.name?.charAt(0)}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},onClick:()=>K(e.id),children:[(0,t.jsx)("div",{style:{fontSize:12,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,t.jsx)("div",{style:{fontSize:9,color:"#666",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline?.substring(0,50)})]}),e.bridge&&(0,t.jsxs)("span",{style:{fontSize:8,color:"#555",flexShrink:0,maxWidth:60,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["via ",e.bridge.name?.split(" ")[0]]}),(0,t.jsx)("div",{style:{textAlign:"right",flexShrink:0,minWidth:32},children:(0,t.jsx)("div",{style:{fontSize:10,fontWeight:700,color:I.TIER_COLORS[e.tier]},children:parseFloat(e.power_score).toFixed(1)})}),N.has(e.id)?(0,t.jsx)("span",{style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"rgba(255,107,53,0.15)",color:"#FF6B35",flexShrink:0},children:"⏳ Sent"}):(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",onClick:t=>{t.stopPropagation(),(0,eb.markRequested)(e,{bridgeId:e.source_connection_id}).catch(()=>{})},style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none",flexShrink:0},children:"Add"})]},e.id))]},e))]})]})})]})}e.s(["default",0,function(){return(0,t.jsx)(n.Suspense,{fallback:null,children:(0,t.jsx)(ex.default,{children:(0,t.jsx)(ew,{})})})}],77305)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,2776,e=>{"use strict";var t=e.i(43476),n=e.i(15812);e.s(["default",0,function({children:e}){let{userId:r,ready:i}=(0,n.useUser)();return i&&r?e:(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"#fff",padding:24,textAlign:"center",fontFamily:"var(--sd-font)"},children:i?(0,t.jsxs)("div",{style:{maxWidth:420},children:[(0,t.jsx)("div",{style:{fontSize:18,fontWeight:700,marginBottom:8},children:"Can’t reach Six Degrees’ local server"}),(0,t.jsx)("div",{style:{color:"#888",fontSize:14,lineHeight:1.6},children:"The page loaded but the app behind it is not answering. If you started it from a terminal, check that window for an error, then reload this page."})]}):(0,t.jsx)("div",{style:{fontSize:18,fontWeight:600},children:"Loading…"})})}])},8819,e=>{"use strict";var t=e.i(43476);let n="1px solid rgba(255,255,255,0.1)";function r({children:e,style:n}){return(0,t.jsx)("div",{style:{fontSize:13.5,color:"#8b9a9a",lineHeight:1.6,marginTop:4,...n},children:e})}e.s(["Body",0,r,"Btn",0,function({children:e,onClick:r,disabled:i,primary:o,tone:l,type:s="button"}){return(0,t.jsx)("button",{type:s,onClick:r,disabled:i,style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:650,color:i?"#667":"#fff",border:n,background:i?"rgba(255,255,255,0.05)":"bad"===l?"rgba(255,80,80,0.15)":o?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(255,255,255,0.08)",cursor:i?"not-allowed":"pointer"},children:e})},"FONT",0,"var(--sd-font)","LINE",0,n,"Mono",0,function({children:e}){return(0,t.jsx)("code",{style:{background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4,wordBreak:"break-all"},children:e})},"Section",0,function({id:e,title:i,intro:o,children:l}){return(0,t.jsxs)("section",{id:e,style:{padding:"24px 0",borderBottom:n,scrollMarginTop:16},children:[(0,t.jsx)("h2",{style:{fontSize:16,fontWeight:650,margin:"0 0 6px"},children:i}),o&&(0,t.jsx)(r,{style:{marginTop:0,marginBottom:12},children:o}),l]})},"Status",0,function({children:e,tone:n}){return(0,t.jsxs)("div",{role:"status",style:{marginTop:10,padding:"10px 14px",borderRadius:8,fontSize:13.5,lineHeight:1.6,color:"ok"===n?"#00ff88":"bad"===n?"#ff7676":"#e8e8ee",background:"ok"===n?"rgba(0,255,136,0.08)":"bad"===n?"rgba(255,80,80,0.08)":"rgba(255,255,255,0.05)",border:`1px solid ${"ok"===n?"rgba(0,255,136,0.3)":"bad"===n?"rgba(255,80,80,0.3)":"rgba(255,255,255,0.12)"}`},children:["ok"===n&&"✓ ",e]})}])},99201,e=>{"use strict";var t=e.i(43476),n=e.i(71645),r=e.i(18566),i=e.i(19821);e.i(46949);var o=e.i(828),l=e.i(48235);let s={height:10,borderRadius:6},a={background:"rgba(52,152,219,0.06)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(52,152,219,0.2)"};function d({degree1:e=[],degree2:n=[],skips:r=[]}){let i=function(e=[],t=[],n=[]){let r=(0,l.reachIndex)(e,t,{skips:n}),i=e=>{let t=(0,l.circleState)(e,r);return"scanned"===t?"mapped":t},o={mapped:0,hidden:0,todo:0},s={};for(let t of e){let e=i(t);o[e]+=1;let n=t.tier||"D";s[n]=s[n]||{mapped:0,hidden:0,todo:0,total:0},s[n][e]+=1,s[n].total+=1}let a=e.length,d=o.mapped+o.hidden;return{...o,total:a,resolved:d,percent:a?Math.round(d/a*100):0,batches:Math.ceil(o.todo/25),byTier:s}}(e,n,r);if(!i.total)return null;let u=e=>i.total?e/i.total*100:0,g=0===i.todo;return(0,t.jsxs)("div",{style:a,children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",marginBottom:10},children:[(0,t.jsx)("h3",{style:{fontSize:14,fontWeight:700,margin:0,color:"#3498DB"},children:"2nd-degree mapping"}),(0,t.jsx)("span",{style:{fontSize:12,color:g?"#00ff88":"#8b9a9a",fontWeight:600},children:g?"Everything reachable is mapped":`${i.percent}%`})]}),(0,t.jsxs)("div",{style:{...s,display:"flex",overflow:"hidden",background:"rgba(255,255,255,0.06)"},children:[(0,t.jsx)("div",{style:{width:`${u(i.mapped)}%`,background:"#00ff88"}}),(0,t.jsx)("div",{style:{width:`${u(i.hidden)}%`,background:"rgba(255,255,255,0.22)"}})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:16,marginTop:10,fontSize:12,flexWrap:"wrap"},children:[(0,t.jsx)(c,{color:"#00ff88",label:"mapped",value:i.mapped}),(0,t.jsx)(c,{color:"rgba(255,255,255,0.35)",label:"hidden",value:i.hidden}),(0,t.jsx)(c,{color:"rgba(255,255,255,0.12)",label:"to go",value:i.todo}),(0,t.jsxs)("span",{style:{color:"#667",marginLeft:"auto"},children:["of ",i.total]})]}),i.hidden>0&&(0,t.jsx)("p",{style:{fontSize:11.5,color:"#667",margin:"10px 0 0",lineHeight:1.6},children:"Hidden means they keep their connections private — that will not change, and it does not count against you."}),!g&&(0,t.jsxs)("p",{style:{fontSize:11.5,color:"#8b9a9a",margin:"10px 0 0",lineHeight:1.6},children:[i.todo," left — about ",(0,t.jsxs)("b",{children:[i.batches," ",1===i.batches?"batch":"batches"]})," of ",25,". Run one, leave it a while, run another. Long unbroken runs are what gets an account restricted."]}),(0,t.jsx)("div",{style:{marginTop:16,display:"flex",flexDirection:"column",gap:7},children:["S","A","B","C","D"].filter(e=>i.byTier[e]?.total).map(e=>{let n=i.byTier[e];return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,fontSize:11},children:[(0,t.jsx)("span",{style:{width:14,color:o.TIER_COLORS_CLASSIC[e],fontWeight:700},children:e}),(0,t.jsxs)("div",{style:{flex:1,height:5,borderRadius:3,display:"flex",overflow:"hidden",background:"rgba(255,255,255,0.06)"},children:[(0,t.jsx)("div",{style:{width:`${n.mapped/n.total*100}%`,background:o.TIER_COLORS_CLASSIC[e]}}),(0,t.jsx)("div",{style:{width:`${n.hidden/n.total*100}%`,background:"rgba(255,255,255,0.22)"}})]}),(0,t.jsxs)("span",{style:{color:"#667",width:62,textAlign:"right"},children:[n.mapped,"/",n.total]})]},e)})})]})}function c({color:e,label:n,value:r}){return(0,t.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:6,color:"#8b9a9a"},children:[(0,t.jsx)("span",{style:{width:8,height:8,borderRadius:2,background:e}}),(0,t.jsx)("b",{style:{color:"#e2e8f0"},children:r})," ",n]})}var u=e.i(64745),g=e.i(2776),h=e.i(15812),f=e.i(69083),p=e.i(22016),y=e.i(98658),m=e.i(54322),b=e.i(64666),x=e.i(8819);let v=m.TIER_COLORS,S=e=>`${Math.round(100*e)}%`;function w(){let{userId:e}=(0,h.useUser)(),[r,o]=(0,n.useState)(null),[l,s]=(0,n.useState)(!1);(0,n.useEffect)(()=>{if(!e)return;let t=!0;return(0,i.loadNetwork)(e).then(e=>{t&&o(function({degree1:e=[],degree2:t=[],ties:n=0}={}){let r=new Map;for(let e of t)e?.source_connection_id!=null&&r.set(e.source_connection_id,(r.get(e.source_connection_id)||0)+1);let i=(0,b.exclusiveReach)(t,e),o=e.length,l=Math.max(0,Number(n)||0),s=o?o-2*l/o:0,a=new Map(e.map(e=>[e.id,e])),d=[...i.entries()].sort((e,t)=>t[1].reach-e[1].reach||String(e[0]).localeCompare(String(t[0]))).slice(0,5).map(([e,t])=>{let n=a.get(e)||{};return{id:e,name:n.name||"",company:n.company||"",tier:n.tier||"",circle:r.get(e)||0,only:t.only,share:t.total?t.only/t.total:0}});return{circles:r.size,early:r.size<5,twoWays:(0,b.redundancy)(t,e),effective:{n:o,ties:l,size:s,efficiency:o?s/o:0},top:d}}(e))}).catch(()=>{t&&s(!0)}),()=>{t=!1}},[e]);let a={padding:"12px 14px",borderRadius:8,border:x.LINE,background:"rgba(255,255,255,0.03)"};return(0,t.jsxs)("section",{id:"health",style:{marginTop:20},children:[(0,t.jsx)("h2",{style:{fontSize:16,margin:"0 0 6px"},children:"Network health"}),l&&(0,t.jsx)(x.Body,{children:"Couldn’t read your network just now."}),!l&&!r&&(0,t.jsx)(x.Body,{children:"Reading your network…"}),r&&0===r.circles&&(0,t.jsx)(x.Body,{children:"Scan a few of your connections’ circles (the Scan page, step 4) and this shows how your network holds together."}),r&&r.circles>0&&(0,t.jsxs)(t.Fragment,{children:[r.early&&(0,t.jsxs)("div",{style:{fontSize:12.5,color:"#FFD700",margin:"4px 0 10px"},children:["An early estimate: ",r.circles," ",1===r.circles?"circle":"circles"," scanned. These get sharper as you scan more."]}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:10},children:[(0,t.jsxs)("div",{style:a,children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700},children:S(r.twoWays)}),(0,t.jsx)("div",{style:{fontSize:12.5,color:"#b8c4c4"},children:"of your 2nd degree you reach two or more ways"}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"#778",marginTop:4},children:"Higher is safer: lose one connection and they’re still reachable."})]}),(0,t.jsxs)("div",{style:a,children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700},children:Math.round(r.effective.size).toLocaleString()}),(0,t.jsxs)("div",{style:{fontSize:12.5,color:"#b8c4c4"},children:["effective reach of your ",r.effective.n.toLocaleString()," connections (",S(r.effective.efficiency)," non-overlapping)"]}),(0,t.jsxs)("div",{style:{fontSize:11.5,color:"#778",marginTop:4},children:["From ",r.effective.ties.toLocaleString()," ",1===r.effective.ties?"tie":"ties"," between your connections seen in circle scans so far, so it can only come down as you scan more."]})]})]}),r.top.length>0&&(0,t.jsxs)("div",{style:{...a,marginTop:10,padding:0},children:[(0,t.jsx)("div",{style:{padding:"10px 14px",fontSize:12.5,color:"#b8c4c4",borderBottom:x.LINE},children:"Your connections who reach the most people no one else does"}),r.top.map((e,n)=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 14px",borderBottom:n<r.top.length-1?"1px solid rgba(255,255,255,0.04)":"none",fontSize:13},children:[(0,t.jsxs)("span",{style:{width:22,color:"#778"},children:["#",n+1]}),(0,t.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:v[e.tier]||"#667",flexShrink:0}}),(0,t.jsxs)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[(0,t.jsx)("b",{children:e.name}),e.company?(0,t.jsxs)("span",{style:{color:"#8b9a9a"},children:[" · ",e.company]}):null]}),(0,t.jsxs)("span",{style:{color:"#b8c4c4",whiteSpace:"nowrap"},children:[e.circle.toLocaleString()," in circle"]}),(0,t.jsxs)("span",{style:{color:"#00ff88",whiteSpace:"nowrap"},children:[e.only.toLocaleString()," only them (",S(e.share),")"]}),(0,t.jsx)(p.default,{href:`/?chain=${encodeURIComponent(e.id)}`,style:{color:"#3498DB",textDecoration:"none",whiteSpace:"nowrap"},children:"Explore →"})]},e.id))]})]})]})}let j={1:"Observer",11:"Connector",31:"Networker",51:"Strategist",76:"Architect"};function k(){let{userId:e,userName:o,userProfile:l}=(0,h.useUser)(),s=(0,r.useRouter)(),a="insights"===(0,r.useSearchParams)().get("view")?"insights":"profile",c=l||{name:o||"User",headline:"",sectors:[],goals:[]},[g,b]=(0,n.useState)(null),[x,v]=(0,n.useState)(!0),[S,k]=(0,n.useState)([]),[M,z]=(0,n.useState)({total:0,sent:0,accepted:0}),[I,B]=(0,n.useState)({degree1:[],degree2:[],skips:[]}),[F,_]=(0,n.useState)(null);if((0,n.useEffect)(()=>{!u.IS_DEMO&&e&&t();async function t(){fetch("/api/settings").then(e=>e.json().then(t=>e.ok&&t.settings?t:Promise.reject(Error(t.error)))).then(e=>_(e.settings.sectorFocus||{sectors:[],strength:"lean"})).catch(()=>_({failed:!0}));let t=await (0,i.loadNetwork)(e),n=t.degree1,r=t.degree2,o={S:0,A:0,B:0,C:0,D:0};n.forEach(e=>{o[e.tier]=(o[e.tier]||0)+1});let l={S:0,A:0,B:0,C:0,D:0};r.forEach(e=>{l[e.tier]=(l[e.tier]||0)+1});let s=[...new Set(r.map(e=>e.source_connection_id).filter(Boolean))].length,a=n.filter(e=>e.is_catalyst).length,d={};n.forEach(e=>{e.company&&(d[e.company]=(d[e.company]||0)+1)});let c=Object.entries(d).sort((e,t)=>t[1]-e[1]).slice(0,10),u=(0,y.networkPower)(n,r),g=(0,y.levelOf)(u),h=g*g*10,f=(u-h)/((g+1)*(g+1)*10-h)*100;b({d1Count:n.length,d2Count:r.length,tiers:o,d2Tiers:l,clusters:s,catalysts:a,networkPower:u,level:g,xpProgress:f,topCompanies:c,unlockedPaths:0}),fetch("/api/scraper").then(e=>e.json()).then(e=>B({degree1:n,degree2:r,skips:e.skips||[]})).catch(()=>B({degree1:n,degree2:r,skips:[]})),fetch(`/api/notifications?userId=${e}`).then(e=>e.json()).then(e=>k(e.notifications||[])).catch(()=>{}),fetch("/api/queue").then(e=>e.json()).then(e=>{let t=e.items||[];z({total:t.length,sent:t.filter(e=>"sent"===e.status).length,accepted:t.filter(e=>"accepted"===e.status).length})}).catch(()=>{}),v(!1)}},[e]),u.IS_DEMO)return(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"rgba(255,255,255,0.7)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,textAlign:"center",padding:24,fontFamily:"var(--sd-font)"},children:[(0,t.jsx)("h2",{style:{margin:0,fontSize:20,fontWeight:700,color:"#fff"},children:"Not part of the demo"}),(0,t.jsx)("p",{style:{margin:0,fontSize:13},children:"The public demo includes the Network Circle and Degrees views only."}),(0,t.jsx)(p.default,{href:"/",style:{fontSize:12,color:"rgba(255,255,255,0.5)",textDecoration:"none"},children:"← Back to the network"})]});if(x)return(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"#fff"},children:"Loading profile..."});let R=m.TIER_COLORS,T=[{label:"First S-Tier",done:g.tiers.S>0,icon:"👑"},{label:"100 Connections",done:g.d1Count>=100,icon:"🔗"},{label:"500 Connections",done:g.d1Count>=500,icon:"🌐"},{label:"First Cluster",done:g.clusters>0,icon:"🔭"},{label:"10 Clusters",done:g.clusters>=10,icon:"🏰"},{label:"50 S-Tier",done:g.tiers.S>=50,icon:"💎"},{label:"Catalyst Found",done:g.catalysts>0,icon:"⚡"},{label:"Level 25",done:g.level>=25,icon:"🎯"},{label:"Level 50",done:g.level>=50,icon:"🚀"},{label:"D2 S-Tier > 50",done:g.d2Tiers.S>=50,icon:"🌟"}];return(0,t.jsxs)("div",{style:{height:"100vh",background:"var(--sd-page)",color:"#fff",fontFamily:"var(--sd-font)",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,t.jsxs)("header",{style:{padding:"16px 24px",borderBottom:"1px solid rgba(255,255,255,0.1)",display:"flex",alignItems:"center",gap:16},children:[(0,t.jsxs)(p.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,t.jsx)("span",{style:{fontSize:16},children:"←"})," Back to Map"]}),(0,t.jsx)("h1",{style:{fontSize:22,fontWeight:700,margin:0,background:"linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Profile"}),(0,t.jsx)("div",{role:"tablist","aria-label":"Profile or Insights",style:{display:"flex",gap:3,marginLeft:8,padding:3,borderRadius:9,background:"rgba(255,255,255,0.06)"},children:[["profile","Profile"],["insights","Insights"]].map(([e,n])=>(0,t.jsxs)("button",{type:"button",role:"tab","aria-selected":a===e,onClick:()=>s.replace("insights"===e?"/profile?view=insights":"/profile",{scroll:!1}),style:{padding:"6px 14px",borderRadius:7,border:"none",cursor:"pointer",fontSize:13,fontWeight:700,background:a===e?"linear-gradient(135deg, #FFD700, #FF6B35)":"transparent",color:a===e?"#000":"#aab"},children:["insights"===e?"✦ ":"",n]},e))})]}),(0,t.jsx)("div",{style:{flex:1,overflow:"auto",padding:"30px 20px"},children:"insights"===a?(0,t.jsxs)("div",{style:{maxWidth:820,margin:"0 auto"},children:[(0,t.jsx)("div",{style:{fontSize:13,color:"#8a8fa8",lineHeight:1.6},children:"How your network holds together, from the circles you’ve scanned. Only your own numbers, never a comparison with anyone else’s."}),(0,t.jsx)(w,{})]}):(0,t.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:[(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.05)",borderRadius:16,padding:32,marginBottom:24,border:"1px solid rgba(255,215,0,0.2)",textAlign:"center"},children:[(0,t.jsx)("div",{style:{width:100,height:100,borderRadius:"50%",margin:"0 auto 16px",background:"linear-gradient(135deg, #FFD700, #FF6B35)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:36,fontWeight:800,color:"#000",boxShadow:"0 0 30px rgba(255,215,0,0.3)"},children:g.level}),(0,t.jsx)("div",{style:{fontSize:24,fontWeight:700,marginBottom:4},children:c.name}),(0,t.jsx)("div",{style:{fontSize:14,color:"#888",marginBottom:4},children:c.headline}),(0,t.jsx)("div",{style:{display:"inline-block",padding:"4px 16px",borderRadius:20,background:"rgba(255,215,0,0.15)",border:"1px solid rgba(255,215,0,0.3)",color:"#FFD700",fontSize:13,fontWeight:700,marginBottom:16},children:function(e){let t="Observer";for(let[n,r]of Object.entries(j))e>=parseInt(n)&&(t=r);return t}(g.level)}),(0,t.jsxs)("div",{style:{maxWidth:300,margin:"0 auto"},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:10,color:"#666",marginBottom:4},children:[(0,t.jsxs)("span",{children:["Level ",g.level]}),(0,t.jsxs)("span",{children:["Level ",g.level+1]})]}),(0,t.jsx)("div",{style:{height:8,background:"rgba(255,255,255,0.1)",borderRadius:4},children:(0,t.jsx)("div",{style:{height:"100%",width:`${Math.min(g.xpProgress,100)}%`,background:"linear-gradient(90deg, #FFD700, #FF6B35)",borderRadius:4,transition:"width 1s ease"}})}),(0,t.jsxs)("div",{style:{fontSize:10,color:"#888",marginTop:4},children:["Network Power: ",g.networkPower.toLocaleString()]})]})]}),(0,t.jsx)(d,{degree1:I.degree1,degree2:I.degree2,skips:I.skips}),(0,t.jsxs)("div",{style:{background:"rgba(255,107,53,0.06)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,107,53,0.2)"},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:12},children:[(0,t.jsx)("h3",{style:{fontSize:14,fontWeight:700,margin:0,color:"#FF6B35"},children:"Queue Progress"}),(0,t.jsx)(p.default,{href:"/queue",style:{fontSize:11,color:"#FF6B35",textDecoration:"none",fontWeight:600},children:"View Queue →"})]}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:12},children:[(0,t.jsxs)("div",{style:{textAlign:"center"},children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700,color:"#FFA500"},children:M.total}),(0,t.jsx)("div",{style:{fontSize:10,color:"#888"},children:"In Queue"})]}),(0,t.jsxs)("div",{style:{textAlign:"center"},children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700,color:"#3498DB"},children:M.sent}),(0,t.jsx)("div",{style:{fontSize:10,color:"#888"},children:"Sent"})]}),(0,t.jsxs)("div",{style:{textAlign:"center"},children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700,color:"#00ff88"},children:M.accepted}),(0,t.jsx)("div",{style:{fontSize:10,color:"#888"},children:"Accepted"})]})]})]}),S.length>0&&(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,t.jsxs)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:["Recent Activity (",S.filter(e=>!e.seen).length," new)"]}),(0,t.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:6,maxHeight:200,overflowY:"auto"},children:S.slice(0,10).map(e=>(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",padding:"6px 8px",borderRadius:6,background:e.seen?"transparent":"rgba(255,215,0,0.05)",borderLeft:e.seen?"none":"2px solid #FFD700"},children:[(0,t.jsx)("span",{style:{fontSize:16},children:e.icon||"📌"}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsx)("div",{style:{fontSize:12,fontWeight:600,color:e.seen?"#888":"#fff"},children:e.title}),e.message&&(0,t.jsx)("div",{style:{fontSize:10,color:"#666"},children:e.message})]}),(0,t.jsx)("span",{style:{fontSize:9,color:"#555",flexShrink:0},children:new Date(e.created_at).toLocaleDateString()})]},e.id))})]}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:12,marginBottom:24},children:[(0,t.jsx)(C,{label:"Connections",value:g.d1Count}),(0,t.jsx)(C,{label:"Degree-2 Reach",value:g.d2Count}),(0,t.jsx)(C,{label:"Clusters",value:g.clusters}),(0,t.jsx)(C,{label:"S-Tier",value:g.tiers.S,color:"#FFD700"}),(0,t.jsx)(C,{label:"A-Tier",value:g.tiers.A,color:"#9B59B6"}),(0,t.jsx)(C,{label:"Catalysts",value:g.catalysts,color:"#00ff88"})]}),(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,t.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Tier Distribution"}),["S","A","B","C","D"].map(e=>{let n=g.tiers[e]||0,r=g.d1Count>0?n/g.d1Count*100:0;return(0,t.jsxs)("div",{style:{marginBottom:8},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:11,marginBottom:2},children:[(0,t.jsxs)("span",{style:{color:R[e],fontWeight:600},children:[e,"-Tier"]}),(0,t.jsxs)("span",{style:{color:"#888"},children:[n," (",r.toFixed(1),"%)"]})]}),(0,t.jsx)("div",{style:{height:6,background:"rgba(255,255,255,0.08)",borderRadius:3},children:(0,t.jsx)("div",{style:{height:"100%",width:`${r}%`,background:R[e],borderRadius:3}})})]},e)})]}),(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,t.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Degree-2 Reach"}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12},children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{style:{fontSize:24,fontWeight:700,color:"#FF6B35"},children:g.d2Count}),(0,t.jsx)("div",{style:{fontSize:11,color:"#888"},children:"People reachable via bridges"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{style:{fontSize:24,fontWeight:700,color:"#FFD700"},children:g.d2Tiers.S}),(0,t.jsx)("div",{style:{fontSize:11,color:"#888"},children:"S-Tier degree-2"})]})]})]}),(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,t.jsxs)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:["Milestones (",T.filter(e=>e.done).length,"/",T.length,")"]}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:T.map((e,n)=>(0,t.jsxs)("div",{style:{padding:"8px 10px",borderRadius:8,fontSize:12,background:e.done?"rgba(255,215,0,0.08)":"rgba(255,255,255,0.02)",border:`1px solid ${e.done?"rgba(255,215,0,0.2)":"rgba(255,255,255,0.05)"}`,color:e.done?"#FFD700":"#555",display:"flex",alignItems:"center",gap:6},children:[(0,t.jsx)("span",{style:{fontSize:16},children:e.done?e.icon:"🔒"}),(0,t.jsx)("span",{style:{fontWeight:e.done?600:400},children:e.label})]},n))})]}),(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,t.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Top Companies in Your Network"}),g.topCompanies.map(([e,n],r)=>(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",padding:"4px 0",borderBottom:r<g.topCompanies.length-1?"1px solid rgba(255,255,255,0.04)":"none",fontSize:12},children:[(0,t.jsx)("span",{children:e}),(0,t.jsx)("span",{style:{color:"#888"},children:n})]},r))]}),(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:12},children:[(0,t.jsx)("h3",{style:{fontSize:14,fontWeight:700,margin:0},children:"Your Sectors"}),(0,t.jsxs)(p.default,{href:"/settings#sector",style:{fontSize:11,color:"#3498DB",textDecoration:"none",fontWeight:600},children:[F?.sectors?.length?"Change":F&&!F.failed?"Pick in Settings":"Settings"," →"]})]}),F?F.failed?(0,t.jsx)("div",{style:{fontSize:12,color:"#ff7676"},children:"Couldn’t load your sectors. Reload this page, or open Settings to see them."}):F.sectors?.length?(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,alignItems:"center"},children:[F.sectors.map(e=>{let n=(0,f.sectorByKey)(e);return(0,t.jsx)("span",{style:{padding:"4px 12px",borderRadius:20,fontSize:11,fontWeight:600,background:`${n.color}26`,border:`1px solid ${n.color}66`,color:n.color},children:n.label},e)}),(0,t.jsxs)("span",{style:{fontSize:11,color:"#888"},children:["strong"===F.strength?"Strong":"Lean",": companies here count for more in your scores."]})]}):(0,t.jsx)("div",{style:{fontSize:12,color:"#888"},children:"None picked. Pick up to three in Settings and companies in them count for more in your scores."}):(0,t.jsx)("div",{style:{fontSize:12,color:"#888"},children:"Loading…"})]})]})})]})}function C({label:e,value:n,color:r}){return(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:10,padding:"14px 12px",border:"1px solid rgba(255,255,255,0.08)",textAlign:"center"},children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700,color:r||"#fff"},children:n}),(0,t.jsx)("div",{style:{fontSize:10,color:"#888",marginTop:2},children:e})]})}e.s(["default",0,function(){return(0,t.jsx)(n.Suspense,{fallback:null,children:(0,t.jsx)(g.default,{children:(0,t.jsx)(k,{})})})}],99201)},64666,e=>{"use strict";var t=e.i(7214);function n(e=[],r=[]){let i=new Set((r||[]).map(t.keyFor)),o=new Map;for(let n of e||[]){let e=n?.source_connection_id;if(null==e)continue;let r=(0,t.keyFor)(n);if(i.has(r))continue;let l=o.get(r);l||o.set(r,l=new Set),l.add(e)}let l=new Map;for(let e of o.values())for(let t of e){let n=l.get(t)||{reach:0,only:0,total:0};n.reach+=1/e.size,n.total+=1,1===e.size&&(n.only+=1),l.set(t,n)}return l}e.s(["bridgeOverlap",0,function(e=[],r=[]){let i=n(e,r),o=new Set((r||[]).map(t.keyFor)),l=new Map;for(let n of e||[]){let e=n?.source_connection_id;if(null==e)continue;let r=(0,t.keyFor)(n);if(o.has(r))continue;let i=l.get(r);i||l.set(r,i=new Set),i.add(e)}let s=new Map;for(let e of l.values()){if(e.size<2)continue;let t=[...e];for(let e=0;e<t.length;e++)for(let n=e+1;n<t.length;n++){let r=t[e]<t[n]?`${t[e]}|${t[n]}`:`${t[n]}|${t[e]}`;s.set(r,(s.get(r)||0)+1)}}let a=new Map;for(let[e,t]of s){let[n,r]=e.split("|"),o=i.get(n).total+i.get(r).total-t,l=o?t/o:0;for(let[e,i]of[[n,r],[r,n]]){let n=a.get(e);(!n||l>n.share)&&a.set(e,{with:i,share:l,shared:t})}}return a},"exclusiveReach",0,n,"redundancy",0,function(e=[],t=[]){let r=n(e,t),i=0,o=0;for(let e of r.values())i+=e.reach,o+=e.only;return i?1-o/i:0}])},89154,e=>{"use strict";var t=e.i(90179);function n(e){let n=(0,t.readTitle)(e);return{key:n.key,label:n.label,level:n.level}}function r(e){return(0,t.currentCompany)(e)}let i=[{key:"defense",label:"Government, Defense & Aerospace",color:"#7f8c8d",words:/\b(government|federal|state of|county|city of|defen[cs]e|army|navy|air force|marine corps|military|dod|nasa|aerospace|lockheed|northrop|boeing|raytheon|l3harris|leidos|blue origin|spacex|public sector)\b/i},{key:"finance",label:"Finance & Investing",color:"#2ecc71",words:/\b(bank|banking|capital|ventures?|vc|investments?|investor|fund|private equity|growth equity|asset management|wealth|trading|trader|hedge|crypto|blockchain|web3|defi|fintech|stripe|coinbase|blackrock|robinhood|goldman|morgan stanley|jpmorgan|chase|bny|mellon|wells fargo|citi|citigroup|capital one|fidelity|vanguard|schwab|visa|mastercard|amex|american express|paypal|insurance|accounting|cpa|financial)\b/i},{key:"health",label:"Healthcare & Biotech",color:"#e74c3c",words:/\b(health|healthcare|medical|medicine|hospital|clinic|pharma|pharmaceutical|biotech|nurse|nursing|physician|doctor|dental|therapy|therapist|wellness)\b/i},{key:"education",label:"Education",color:"#f1c40f",words:/\b(university|college|school|education|student|professor|teacher|academy|phd|faculty|alumni)\b/i},{key:"media",label:"Marketing & Media",color:"#e67e22",words:/\b(marketing|brand|branding|advertising|agency|media|content|social media|creative|creator|influencer|pr|public relations|communications|tiktok|pinterest|youtube|growth marketing)\b/i},{key:"entertainment",label:"Entertainment & Gaming",color:"#9b59b6",words:/\b(entertainment|film|movie|music|records|gaming|games?|esports|studio|studios|netflix|disney|spotify|hollywood|theater|theatre|sports)\b/i},{key:"tech",label:"Tech, Software & AI",color:"#3498db",words:/\b(software|saas|engineer|engineering|developer|tech|technology|technologies|ai|artificial intelligence|machine learning|ml|data|cloud|cyber|security|devops|product manager|google|microsoft|apple|meta|amazon|nvidia|openai|anthropic|palantir|salesforce|oracle|ibm|intel|app|apps|startup|platform|labs?)\b/i},{key:"consulting",label:"Consulting, Legal & Services",color:"#1abc9c",words:/\b(consulting|consultant|consultancy|deloitte|accenture|mckinsey|kpmg|pwc|ey|bain|bcg|legal|law|lawyer|attorney|paralegal|recruiting|recruiter|staffing|talent)\b/i},{key:"realestate",label:"Real Estate & Construction",color:"#d35400",words:/\b(real estate|realtor|realty|property|properties|construction|architecture|architect|mortgage|homes|housing|builders?)\b/i},{key:"consumer",label:"Retail, Consumer & Hospitality",color:"#ff79c6",words:/\b(retail|e-?commerce|shopify|consumer|cpg|fashion|apparel|beauty|cosmetics|food|beverage|restaurant|hospitality|hotel|travel|tourism|coca-cola|nike|store|shop)\b/i},{key:"industry",label:"Manufacturing, Energy & Logistics",color:"#95a5a6",words:/\b(manufacturing|energy|oil|gas|solar|utilities|automotive|tesla|siemens|ge|general electric|honeywell|3m|logistics|supply chain|shipping|freight|fedex|ups|industrial|mining|chemicals?)\b/i},{key:"nonprofit",label:"Nonprofit & Community",color:"#bdc3c7",words:/\b(nonprofit|non-profit|foundation|charity|ngo|church|ministry|volunteer)\b/i}],o={key:"unknown",label:"Unclear",color:"#555c66"},l=Object.fromEntries([...i,o].map(e=>[e.key,e])),s=e=>l[e]||o;function a(e,t){for(let n of[e,t]){if(!n)continue;let e=i.find(e=>e.words.test(n));if(e)return e}return o}let d=(e,t)=>a(e,t).key,c=e=>n(e).level>=4;e.s(["INDUSTRIES",0,i,"UNKNOWN_INDUSTRY",0,o,"buildCompanyIndex",0,function(e=[]){let n=new Map,r=e=>(n.has(e)||n.set(e,(0,t.rolesWithCompanies)(e)),n.get(e)),{industries:i}=(0,t.networkCompanies)(e,{industryOf:d,rolesOf:r}),o=new Map;for(let t of e){let e=t.profile_url||`id:${t.id}`,n=o.get(e);(!n||(t.degree||9)<(n.degree||9))&&o.set(e,t)}let l=new Map;for(let e of o.values()){let t=r(e).find(e=>!e.former)?.company;if(!t)continue;let n=l.get(t);n||(n={name:t,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0},l.set(t,n)),n.people.push(e),1===e.degree?n.d1++:2===e.degree?n.d2++:n.d3++,"S"===e.tier&&n.S++,"A"===e.tier&&n.A++,c(e.headline)&&n.senior++}for(let e of l.values())e.industry=s(i.get(e.name));return l},"companyLinks",0,function(e=[],t=[]){let n=new Map;for(let t of e){let e=r(t);e&&n.set(t.id,e)}let i=new Map;for(let e of t){let t=n.get(e.source_connection_id),o=r(e);if(!t||!o||t===o)continue;let[l,s]=t<o?[t,o]:[o,t],a=`${l}\u0000${s}`,d=i.get(a);d||(d={a:l,b:s,weight:0,via:new Set},i.set(a,d)),d.weight++,d.via.add(e.source_connection_id)}return[...i.values()]},"companyOf",0,r,"getSeniority",0,n,"industryByKey",0,s,"industryOf",0,a,"isSenior",0,c,"waysInto",0,function(e,t=[],n=[]){let i=t.filter(t=>r(t)===e),o=new Map;for(let t of n)r(t)===e&&o.set(t.source_connection_id,(o.get(t.source_connection_id)||0)+1);let l=new Map(t.map(e=>[e.id,e]));return{direct:i,bridges:[...o.entries()].map(([e,t])=>({bridge:l.get(e),n:t})).filter(e=>e.bridge).sort((e,t)=>t.n-e.n||(Number(t.bridge.power_score)||0)-(Number(e.bridge.power_score)||0))}}])},98658,e=>{"use strict";function t(e=[],n=[]){let r={S:0,A:0,B:0,C:0,D:0};for(let t of e)r[t.tier]=(r[t.tier]||0)+1;let i=0;for(let e of n)"S"===e.tier&&(i+=1);let o=new Set(n.map(e=>e.source_connection_id).filter(Boolean)).size,l=e.filter(e=>e.is_catalyst).length;return 100*r.S+40*r.A+15*r.B+5*r.C+ +r.D+200*o+150*l+50*i+e.length}let n=e=>Math.floor(Math.sqrt(Math.max(0,e)/10)),r="six-degrees-level",i={},o=new Set;function l(e="own"){if(!(e in i))try{let t=sessionStorage.getItem(`${r}:${e}`),n=null==t?NaN:Number(t);i[e]=Number.isFinite(n)?n:null}catch{i[e]=null}return i[e]}e.s(["levelNow",0,l,"levelOf",0,n,"networkLevel",0,(e,r)=>n(t(e,r)),"networkPower",0,t,"rememberLevel",0,function(e,t="own"){if(l(t)!==e){i[t]=e;try{sessionStorage.setItem(`${r}:${t}`,String(e))}catch{}o.forEach(e=>e())}},"watchLevel",0,function(e){return o.add(e),()=>o.delete(e)}])},19821,e=>{"use strict";async function t(e){let t=e?`/api/network?userId=${encodeURIComponent(e)}`:"/api/network",n=await fetch(t);if(!n.ok)throw Error(`Failed to load network (${n.status})`);let r=await n.json();return{degree1:r.degree1||[],degree2:r.degree2||[],degree3:r.degree3||[],ties:Number(r.ties)||0}}e.s(["loadNetwork",0,t])},48235,51798,e=>{"use strict";let t={fast:{label:"Fast",pagePause:20,chunkCooldown:60,profileGap:60},medium:{label:"Medium",pagePause:45,chunkCooldown:180,profileGap:90},slow:{label:"Slow",pagePause:90,chunkCooldown:300,profileGap:120}},n=e=>t[e]||t.fast;function r(e,t){let r=n(e),i=Math.max(0,Math.floor(Number(t)||0));return i*(6+r.pagePause)+Math.floor(i/10)*r.chunkCooldown}e.s(["PACES",0,t,"PACE_NAMES",0,["slow","medium","fast"],"durationText",0,function(e){if(!(e>=60))return"under a minute";let t=Math.round(e/60);if(t<60)return`about ${t} min`;let n=Math.floor(t/60),r=t%60;return`about ${n} h${r?` ${r} min`:""}`},"paceOf",0,n,"paceSeconds",0,r,"searchesPerHour",0,function(e){let t=n(e);return Math.round(3600/(6+t.pagePause+t.chunkCooldown/10))}],51798);var i=e.i(7214);function o(e,t){return e?t.scanned.has(e.id)||e.profile_url&&t.read?.has((0,i.keyFor)(e))?"scanned":e.profile_url&&t.hidden.has((0,i.keyFor)(e))?"hidden":"todo":"todo"}function l(e,t){if(!e||1!==e.degree||null==e.unlocked_from_bridge_id)return null;let n=o(e,t);return"todo"===n?"ready":n}e.s(["circleScanCost",0,function(e=100,t="fast"){let n=Math.max(1,Math.min(100,Math.round(e)||100)),i=t&&"fast"!==t?Math.max(5,Math.round(r(t,n)/60)):n>=100?55:Math.max(5,Math.round(.55*n));return{profileViews:1,searches:n,minutes:i}},"circleState",0,o,"reachIndex",0,function(e=[],t=[],n={}){let r=new Set;for(let e of t||[])e?.source_connection_id!=null&&r.add(e.source_connection_id);let o=new Set;for(let e of n?.skips||[])e?.profileUrl&&o.add((0,i.keyFor)({profile_url:e.profileUrl}));let l=new Set;for(let e of n?.read||[])e&&l.add((0,i.keyFor)({profile_url:e}));let s=new Map;for(let[e,t]of Object.entries(n?.lists||{}))e&&t&&s.set((0,i.keyFor)({profile_url:e}),t);let a=new Map;for(let t of e||[]){let e=t?.unlocked_from_bridge_id;if(null==e||1!==t.degree)continue;let n=a.get(e);n||a.set(e,n=[]),n.push(t)}return{scanned:r,read:l,hidden:o,reachedFrom:a,lists:s}},"reachState",0,l,"readyByCircle",0,function(e){let t=new Map;for(let[n,r]of e.reachedFrom){let i=r.filter(t=>"ready"===l(t,e)).length;i&&t.set(n,i)}return t},"readyToScan",0,function(e,t){return(e||[]).filter(e=>"ready"===l(e,t)).sort(i.compareBridges)},"scanBars",0,function(e,t){let n=o(e,t),r=e?.profile_url?t.lists?.get((0,i.keyFor)(e)):null;return"hidden"===n?null:r?r.more?r.total?Math.max(1,Math.min(4,Math.round(5*Math.min(1,10*r.pages/r.total)))):2:5:"scanned"===n?2:null}],48235)},69083,e=>{"use strict";var t=e.i(89154);let n=new Map(t.INDUSTRIES.map(e=>[e.key,e.color])),r=new Map([...t.INDUSTRIES.map(e=>[e.key,Object.freeze({key:e.key,label:e.label,color:e.color,group:e.key,kind:"industry"})]),...Object.entries({software:["Software & SaaS","tech","function"],"ai-data":["AI & Data","tech","function"],cybersecurity:["Cybersecurity","tech","function"],telecom:["Telecom","tech","industry"],fintech:["Fintech & Payments","finance","industry"],banking:["Banking & Lending","finance","industry"],"vc-pe":["Venture Capital & Private Equity","finance","industry"],wealth:["Wealth & Asset Management","finance","industry"],insurance:["Insurance","finance","industry"],accounting:["Accounting & Tax","finance","function"],crypto:["Crypto & Web3","finance","industry"],hospitals:["Hospitals & Clinics","health","industry"],dental:["Dental","health","industry"],"pharma-biotech":["Pharma & Biotech","health","industry"],"medical-devices":["Medical Devices","health","industry"],"mental-health":["Mental Health","health","industry"],"fitness-wellness":["Fitness & Wellness","health","industry"],veterinary:["Veterinary & Animal Care","health","industry"],k12:["K-12 Education","education","industry"],"higher-ed":["Higher Education","education","industry"],"marketing-advertising":["Marketing & Advertising","media","function"],"pr-comms":["PR & Communications","media","function"],"media-publishing":["Media & Publishing","media","industry"],"creator-economy":["Creator Economy","media","industry"],"film-tv-music":["Film, TV & Music","entertainment","industry"],"gaming-esports":["Gaming & Esports","entertainment","industry"],sports:["Sports","entertainment","industry"],"ecommerce-retail":["E-commerce & Retail","consumer","industry"],"consumer-goods":["Consumer Goods","consumer","industry"],restaurants:["Restaurants & Food Service","consumer","industry"],"hospitality-travel":["Hospitality & Travel","consumer","industry"],"beauty-personal-care":["Beauty & Personal Care","consumer","industry"],logistics:["Logistics & Supply Chain","industry","industry"],manufacturing:["Manufacturing","industry","industry"],energy:["Energy & Utilities","industry","industry"],automotive:["Automotive","industry","industry"],agriculture:["Agriculture & Farming","industry","industry"],"aerospace-defense":["Aerospace & Defense","defense","industry"],military:["Military","defense","industry"],government:["Government & Public Sector","defense","industry"],legal:["Legal","consulting","function"],"management-consulting":["Management Consulting","consulting","function"],"hr-recruiting":["HR & Recruiting","consulting","function"],"security-services":["Security Services","consulting","function"],"real-estate":["Real Estate","realestate","industry"],"construction-trades":["Construction & Trades","realestate","industry"],charities:["Nonprofits & Charities","nonprofit","industry"],"social-work":["Social Work & Human Services","nonprofit","industry"],faith:["Faith & Ministry","nonprofit","industry"]}).map(([e,[r,i,o]])=>[e,Object.freeze({key:e,label:r,color:n.get(i)||t.UNKNOWN_INDUSTRY.color,group:i,kind:o})])]);e.s(["sectorByKey",0,function(e){return r.get(e)||{key:e,label:t.UNKNOWN_INDUSTRY.label,color:t.UNKNOWN_INDUSTRY.color,group:null,kind:null}}])},7214,36774,e=>{"use strict";let t=/^[A-Za-z0-9_-]+\.(webp|jpg|jpeg|png)$/,n="/avatars/";function r(e){return"string"==typeof e&&e.startsWith(n)&&t.test(e.slice(n.length))?e:null}e.s(["localPhoto",0,r],36774);let i={S:0,A:1,B:2,C:3,D:4};function o(e){let t=parseFloat(e?.power_score);return Number.isFinite(t)?t:0}function l(e){return Math.round(10*o(e))/10}function s(e){return String(e?.profile_url||"").split(/[?#]/)[0].replace(/\/+$/,"")||`id:${e?.id}`}let a=(e,t)=>String(e??"").localeCompare(String(t??""),void 0,{numeric:!0});function d(e,t){return(i[e.tier]??9)-(i[t.tier]??9)||o(t)-o(e)||String(e.name||"").localeCompare(String(t.name||""))||a(e.id,t.id)}function c(e,t){return e.bridge&&t.bridge?d(e.bridge,t.bridge):e.bridge?-1:t.bridge?1:a(e.id,t.id)}function u(e,t){return t.score-e.score||t.waysIn-e.waysIn||c(e.routes[0]||g,t.routes[0]||g)||String(e.person.name||"").localeCompare(String(t.person.name||""))||(e.key<t.key?-1:+(e.key>t.key))}let g={id:null,bridge:null};function h(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return t.length<2?t[0]||"":`${t[0]} ${t[t.length-1].charAt(0)}.`}function f(e,t){let n=String(e||"");return t<=1?n?"…":"":n.length>t?`${n.slice(0,t-1)}…`:n}e.s(["TIERS",0,["S","A","B","C","D"],"compareBridges",0,d,"comparePower",0,u,"convergeLayout",0,function(e,t=800,n=!1,{cards:r=!1,mutuals:i=0}={}){let o=r?46:n?40:34,l=Math.round(t*(n?.44:.36)),s=Math.round(t*(n?.8:r?.6:.62)),a=[],d=null;for(let t of e?.routes||[])t.bridge?a.push({id:t.id,bridge:t.bridge,unresolved:!1,count:1}):d?d.count++:a.push(d={id:null,bridge:null,unresolved:!0,count:1});let c=Math.max(0,Math.floor(Number(i)||0)-(e?.waysIn||0)),u=Math.min(60,c),g=r?12:11,p=r?220:n?96:120,y=Math.max(1,Math.floor(p/g)+1),m=Math.ceil(u/y),b=u?40+m*g:0,x=Math.max(0,a.length-1)*o+b,v=Math.max(n?190:r?250:220,32+x+48),S=v/2,w=S-x/2,j=Math.max(4,Math.floor((l-10-42)/6)),k=a.map((e,t)=>{let n=e.unresolved?`can't be named (${e.count})`:e.bridge.name||"";return{...e,x:l,y:w+t*o,r:6,primary:0===t&&!e.unresolved,label:n.length<=j?n:f(e.unresolved?n:h(n),j)}}),C={x:s,y:S,r:17*!r,rings:r?[]:[32,50,70].filter(e=>e<=S-4)},M=k.map(t=>({key:e?.key,bridgeId:t.id,primary:t.primary,unresolved:t.unresolved,tier:t.bridge?.tier??null,x1:t.x,y1:t.y,x2:C.x,y2:C.y})),z={x:20,y:S,r:14},I=k.map(e=>({id:e.id,x1:z.x,y1:z.y,x2:e.x,y2:e.y})),B=e?[{key:e.key,p:e,x:C.x,y:C.y,r:C.r,rings:C.rings,big:!0,label:""}]:[],F=w+Math.max(0,a.length-1)*o+40,_=r?l-236+8:l-p,R=Array.from({length:u},(e,t)=>({x:_+t%y*g,y:F+Math.floor(t/y)*g})),T=e?.waysIn?e.waysIn/(e.waysIn+c):1;return{width:t,height:v,you:z,target:C,people:B,bridges:k,links:M,spokes:I,ghosts:R,unscanned:c,ghostLabel:u?{x:_,y:F-13}:null,drawn:T}},"keyFor",0,s,"mapCount",0,function(e,t=10){let n=Math.max(0,Math.min(100,Number(e)||0));return n<=50?t:Math.max(1,Math.round(t*(100-n)/50))},"mostMutuals",0,function(e=[],t=()=>0,n=7){return[...e].sort((e,n)=>Math.max(t(n)||0,n.waysIn)-Math.max(t(e)||0,e.waysIn)||n.waysIn-e.waysIn||u(e,n)).slice(0,n)},"routeIndex",0,function(e=[]){let t=new Map;for(let n of e||[]){let e=s(n),r=t.get(e);r||(r=new Set,t.set(e,r)),r.add(n.source_connection_id??null)}return t},"routesFor",0,function(e,t,n){return e?[...t?.get(s(e))??(null!=e.source_connection_id?new Set([e.source_connection_id]):new Set)].map(e=>({id:e,bridge:n?.get(e)??null})).sort(c):[]},"score",0,o,"score1",0,l,"separationPeople",0,function(e=[],t=[]){let n=new Map;for(let e of t||[])n.set(e.id,e);let i=new Map,o=new Map;for(let t of e||[]){let e=s(t);o.set(t.id,e);let n=i.get(e);n?function(e,t){let n=l(e)-l(t);if(n)return n>0;let i=!!r(e.profile_image_url);return!!r(t.profile_image_url)!==i?i:0>a(e.id,t.id)}(t,n.person)&&(n.person=t):(n={key:e,person:t,rowIds:[],routeIds:new Set},i.set(e,n)),n.rowIds.push(t.id),n.routeIds.add(t.source_connection_id??null)}let d={people:i.size,byTier:{S:0,A:0,B:0,C:0,D:0},multi:0,bridges:0,unresolvedIds:0,peopleOnlyUnresolved:0,onlyUnresolvedVia:0},g=new Set,h=new Set,f=new Set,p=[];for(let e of i.values()){let t=[...e.routeIds].map(e=>({id:e,bridge:n.get(e)??null}));t.sort(c);let r=t.filter(e=>e.bridge);for(let e of t)(e.bridge?g:h).add(e.id);if(!r.length)for(let e of(d.peopleOnlyUnresolved++,t))f.add(e.id);let{person:i}=e,o=i.tier;void 0!==d.byTier[o]&&d.byTier[o]++,t.length>1&&d.multi++,p.push({key:e.key,person:i,score:l(i),tier:o,routes:t,waysIn:t.length,rowIds:e.rowIds,haystack:[i.name,i.headline,i.company,i.role,...r.map(e=>e.bridge.name)].filter(Boolean).join("\n").toLowerCase(),rank:0,tied:!1})}return d.bridges=g.size,d.unresolvedIds=h.size,d.onlyUnresolvedVia=f.size,p.sort(u),function(e){for(let t=0;t<e.length;t++){let n=e[t],r=e[t-1],i=r&&r.score===n.score&&r.waysIn===n.waysIn;n.rank=i?r.rank:t+1,i&&(n.tied=!0,r.tied=!0)}}(p),{people:p,rowToKey:o,summary:d}},"shortName",0,h,"summitLayout",0,function(e=[],t=800,n=!1,{cards:r=!1}={}){let i=r?45:n?36:26,o=Math.round(.42*t),l=Math.round(.58*t),s=e.map((e,n)=>{var o;return{key:e.key,p:e,x:l,y:16+n*i,r:r?0:(o=e.waysIn)>=4?8.5:3===o?7:2===o?5.5:4,label:f(`#${e.rank}${e.tied?"=":""} ${e.person.name||""}`,Math.floor((t-l-60)/6.2))}}),a=new Map,c="\0unresolved";for(let e of s)for(let t of e.p.routes){let n=t.bridge?t.id:c,r=a.get(n);r||(r={id:t.bridge?t.id:null,bridge:t.bridge,unresolved:!t.bridge,ys:[],count:0},a.set(n,r)),r.count++,r.ys.push(e.y)}let u=[...a.values()].map(e=>({...e,bary:e.ys.reduce((e,t)=>e+t,0)/e.ys.length}));u.sort((e,t)=>e.bary-t.bary||e.unresolved-t.unresolved||(e.bridge&&t.bridge?d(e.bridge,t.bridge):0));let g=s.length?s[s.length-1].y:16,p=function(e=[],t=18,n=0){let r=[];e.forEach((e,n)=>{for(r.push({sum:e-n*t,count:1});r.length>1&&r[r.length-2].sum/r[r.length-2].count>r[r.length-1].sum/r[r.length-1].count;){let e=r.pop();r[r.length-1].sum+=e.sum,r[r.length-1].count+=e.count}});let i=r.flatMap(e=>Array(e.count).fill(e.sum/e.count)).map((e,n)=>e+n*t),o=i.length&&i[0]<n?n-i[0]:0;return i.map(e=>e+o)}(u.map(e=>e.bary),r?32:18,16),y=Math.max(4,Math.floor((o-10-42)/6));u.forEach((e,t)=>{if(e.x=o,e.y=p[t],e.r=5,e.unresolved)e.label=f(`can't be named (${e.count})`,y);else{let t=e.bridge.name||"";e.label=t.length<=y?t:f(h(t),y)}delete e.ys});let m=new Map(u.map(e=>[e.unresolved?c:e.id,e]));for(let e of u)e.onlyFor=0,e.bestFor=0;for(let e of s){let t=e.p.routes[0],n=t?m.get(t.bridge?t.id:c):null;n&&n.bestFor++,1===e.p.waysIn&&n&&n.onlyFor++}let b=[];for(let e of s){let t=new Set;e.p.routes.forEach((n,r)=>{let i=n.bridge?n.id:c;if(t.has(i))return;t.add(i);let o=m.get(i);b.push({key:e.key,bridgeId:o.id,primary:0===r&&!o.unresolved,unresolved:o.unresolved,tier:o.bridge?.tier??null,x1:o.x,y1:o.y,x2:e.x,y2:e.y})})}let x=Math.max(g,u.length?u[u.length-1].y:0),v=s.length?Math.ceil(x+16):0,S={x:20,y:s.length?(16+Math.max(g,x))/2:16,r:14},w=u.map(e=>({id:e.id,x1:S.x,y1:S.y,x2:e.x,y2:e.y}));return{width:t,height:v,you:S,people:s,bridges:u,links:b,spokes:w}}],7214)},828,e=>{"use strict";var t=e.i(54322);e.s(["TIER_COLORS_CLASSIC",()=>t.TIER_COLORS])},46949,e=>{"use strict";e.i(54322),e.s(["TIER_ORDER",0,["S","A","B","C","D"],"initialsFor",0,function(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return 0===t.length?"?":(t[0].charAt(0)+(t.length>1?t[t.length-1].charAt(0):"")).toUpperCase()}])}]);
@@ -0,0 +1,11 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33821,e=>{"use strict";var t=e.i(43476),n=e.i(71645),r=e.i(22016),o=e.i(18566),l=e.i(26005),i=e.i(76760),a=e.i(30215);let s=["#FFD700","#9B59B6","#3498DB"],u=`
2
+ @keyframes trail-in { from { transform: scale(0); opacity: 0; } }
3
+ @keyframes trail-pulse { 0%, 100% { opacity: 0.45; transform: scale(0.8); } 50% { opacity: 1; transform: scale(1.25); } }
4
+ .scan-trail { transition: opacity 1.2s ease; }
5
+ .scan-trail .dot { animation: trail-in 0.35s cubic-bezier(0.2, 0.9, 0.3, 1.3); }
6
+ .scan-trail .dot.newest { box-shadow: 0 0 6px 1px currentColor; }
7
+ .scan-trail .seed { animation: trail-pulse 1.4s ease-in-out infinite; }
8
+ @media (prefers-reduced-motion: reduce) {
9
+ .scan-trail .dot, .scan-trail .seed { animation: none; }
10
+ .scan-trail { transition: none; }
11
+ }`;function d({inset:e}){let o=(0,a.default)(),l=(0,n.useRef)(null),[i,c]=(0,n.useState)(60),[f,g]=(0,n.useState)({on:!1,pages:0,label:""}),p=o.running&&!o.pending,m=o.target?.name?`Scanning ${o.target.name}`:"Scanning";p&&(!f.on||f.pages!==(o.pages||0)||f.label!==m)&&g({on:!0,pages:o.pages||0,label:m}),(0,n.useEffect)(()=>{if(p||!f.on)return;let e=setTimeout(()=>g(e=>({...e,on:!1})),4e3);return()=>clearTimeout(e)},[p,f.on]),(0,n.useEffect)(()=>{let e=l.current;if(!e)return;let t=new ResizeObserver(()=>c(Math.max(8,Math.floor(e.clientWidth/9)-4)));return t.observe(e),()=>t.disconnect()},[]);let{pages:h}=f,y=Math.max(0,h-i),b=[];for(let e=y;e<h;e++)b.push(e);let x=`${f.label}: ${0===h?"starting":`${h.toLocaleString("en-US")} page${1===h?"":"s"} read`}. Open the Scan page`;return(0,t.jsxs)("div",{ref:l,"aria-hidden":!f.on,style:{position:"absolute",left:e,right:e,bottom:-4,height:7,pointerEvents:"none"},children:[(0,t.jsx)("style",{children:u}),(0,t.jsxs)(r.default,{href:"/setup",title:x,tabIndex:f.on?0:-1,className:"scan-trail",style:{position:"absolute",left:0,top:0,height:7,display:"flex",alignItems:"center",gap:4,pointerEvents:f.on?"auto":"none",opacity:+!!f.on,textDecoration:"none"},children:[y>0&&(0,t.jsxs)("span",{style:{fontSize:9,fontWeight:700,color:"#889",marginRight:2,fontVariantNumeric:"tabular-nums"},children:["+",y.toLocaleString("en-US")]}),b.map(e=>{let n=s[e%s.length];return(0,t.jsx)("span",{className:`dot${e===h-1?" newest":""}`,style:{width:5,height:5,borderRadius:"50%",background:n,color:n,flexShrink:0}},e)}),f.on&&(0,t.jsx)("span",{className:"seed",style:{width:5,height:5,borderRadius:"50%",background:"#00ff88",flexShrink:0}})]})]})}var c=e.i(15812),f=e.i(40996),g=e.i(19821),p=e.i(98658),m=e.i(64745);let h={fontWeight:700,margin:0,whiteSpace:"nowrap",background:"linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"};function y({isMobile:e,onOpen:r,openId:l}){let{userId:i}=(0,c.useUser)(),a=(0,o.useRouter)(),[s,u]=(0,n.useState)([]),[d,f]=(0,n.useState)(!1),g=(0,n.useRef)(!1),p=(0,n.useRef)(r);(0,n.useEffect)(()=>{p.current=r}),(0,n.useEffect)(()=>{i&&fetch(`/api/notifications?userId=${i}`).then(e=>e.json()).then(e=>{let t=e.notifications||[];u(t);let n=null!=l&&!g.current&&t.find(e=>String(e.id)===String(l));n&&p.current&&(g.current=!0,p.current(n))}).catch(()=>{})},[i,l]);let m=s.filter(e=>!e.seen).length,h=e=>{e.seen||(fetch("/api/notifications",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"mark-seen",id:e.id})}).catch(()=>{}),u(t=>t.map(t=>t.id===e.id?{...t,seen:!0}:t))),f(!1),r?r(e):a.push(`/?note=${encodeURIComponent(e.id)}`)};return(0,t.jsxs)("div",{style:{position:"relative"},children:[(0,t.jsxs)("button",{onClick:()=>f(!d),title:"Notifications","aria-label":m?`Notifications, ${m} new`:"Notifications",style:{width:e?28:32,height:e?28:32,borderRadius:"50%",border:"none",cursor:"pointer",background:"rgba(255,255,255,0.06)",color:"#888",fontSize:e?12:14,display:"flex",alignItems:"center",justifyContent:"center",position:"relative"},children:["🔔",m>0&&(0,t.jsx)("span",{style:{position:"absolute",top:-2,right:-2,width:16,height:16,borderRadius:"50%",background:"#ff5050",color:"#fff",fontSize:9,fontWeight:700,display:"flex",alignItems:"center",justifyContent:"center"},children:m})]}),d&&(0,t.jsxs)("div",{style:{position:"absolute",top:40,right:0,width:320,maxHeight:400,background:"color-mix(in srgb, var(--sd-bg) 97%, transparent)",border:"1px solid rgba(255,255,255,0.1)",borderRadius:12,overflow:"hidden",zIndex:100,backdropFilter:"blur(12px)",WebkitBackdropFilter:"blur(12px)",boxShadow:"0 8px 32px rgba(0,0,0,0.5)"},children:[(0,t.jsxs)("div",{style:{padding:"12px 16px",borderBottom:"1px solid rgba(255,255,255,0.08)",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,t.jsx)("span",{style:{fontWeight:700,fontSize:14},children:"Notifications"}),m>0&&(0,t.jsx)("button",{onClick:()=>{fetch("/api/notifications",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"mark-all-seen"})}),u(e=>e.map(e=>({...e,seen:!0})))},style:{background:"none",border:"none",color:"#3498DB",fontSize:11,cursor:"pointer",fontWeight:600},children:"Mark all read"})]}),(0,t.jsx)("div",{style:{overflowY:"auto",maxHeight:340},children:0===s.length?(0,t.jsx)("div",{style:{padding:20,textAlign:"center",color:"#555",fontSize:12},children:"No notifications yet"}):s.slice(0,20).map(e=>(0,t.jsx)("div",{role:"button",tabIndex:0,onClick:()=>h(e),onKeyDown:t=>{"Enter"===t.key&&h(e)},onMouseEnter:e=>{e.currentTarget.style.background="rgba(255,255,255,0.06)"},onMouseLeave:t=>{t.currentTarget.style.background=e.seen?"transparent":"rgba(255,215,0,0.04)"},style:{padding:"10px 16px",borderBottom:"1px solid rgba(255,255,255,0.04)",cursor:"pointer",background:e.seen?"transparent":"rgba(255,215,0,0.04)"},children:(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"flex-start"},children:[(0,t.jsx)("span",{style:{fontSize:16},children:e.icon||"📌"}),(0,t.jsxs)("div",{style:{flex:1},children:[(0,t.jsxs)("div",{style:{fontSize:12,fontWeight:600,color:e.seen?"#888":"#fff"},children:[e.title,(0,t.jsx)("span",{style:{color:"#556",marginLeft:6},children:"›"})]}),e.message&&(0,t.jsx)("div",{style:{fontSize:10,color:"#666",marginTop:2},children:e.message}),(0,t.jsx)("div",{style:{fontSize:9,color:"#444",marginTop:3},children:new Date(e.created_at).toLocaleDateString()})]})]})},e.id))})]})]})}function b({isMobile:e}){let n=(0,a.default)(),r=n.running&&"refresh"===n.action,o=(0,f.busyReason)(n);return(0,t.jsxs)("button",{onClick:async()=>{try{let e=(0,f.notReadyMessage)(await (0,f.scraperStatus)());if(e)return void alert(e);if(!window.confirm("Check for new connections?\n\nThis opens a Chrome window on your LinkedIn connections list and reads it from the newest, stopping once it reaches people already saved. It usually takes under a minute. It reads your own list, not a search, so it doesn’t use your search budget, but like any scan it is LinkedIn traffic from your account."))return;await (0,f.beginScrape)("refresh"),alert("Checking for new connections — watch it on the Scan page.")}catch(e){alert(e.message)}},disabled:!!o,title:o?`${o}. One scan at a time.`:"Check for new connections: reads your LinkedIn connections list from the newest","aria-label":"Check for new connections",style:{height:e?28:32,padding:e?"0 10px":"0 14px",borderRadius:16,border:"1px solid rgba(0,255,136,0.3)",cursor:o?"not-allowed":"pointer",opacity:o?.45:1,background:"rgba(0,255,136,0.08)",color:"#bff5d9",fontSize:e?11:12.5,fontWeight:700,display:"flex",alignItems:"center",gap:6,whiteSpace:"nowrap",flexShrink:0},children:[(0,t.jsx)("span",{"aria-hidden":"true",style:{fontSize:e?12:14},children:"↻"}),r?"Checking…":e?"New":"Check for new"]})}let x=null;function w({isMobile:e,csvMode:r,level:o}){let{userId:l}=(0,c.useUser)(),i=m.IS_DEMO?"sample":r?"csv":"own",a=(0,n.useSyncExternalStore)(p.watchLevel,()=>(0,p.levelNow)(i),()=>null);(0,n.useEffect)(()=>{null!=o?(0,p.rememberLevel)(o,i):null!=a||m.IS_DEMO||r||!l||(x||(x=(0,g.loadNetwork)(l).then(e=>(0,p.networkLevel)(e.degree1,e.degree2)).catch(()=>(x=null,null))),x.then(e=>{null!=e&&(0,p.rememberLevel)(e,i)}))},[o,a,r,i,l]);let s=o??a;return(0,t.jsx)("a",{href:m.IS_DEMO?"/launch":r?"/import":"/profile",title:null!=s?`Your profile \xb7 level ${s}`:"Your profile",style:{width:e?30:36,height:e?30:36,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",background:"linear-gradient(135deg, #FFD700, #FF6B35)",color:"#000",fontWeight:800,fontSize:e?11:14,textDecoration:"none",marginLeft:e?2:4,flexShrink:0},children:s??""})}e.s(["default",0,function({active:e,isMobile:o,csvMode:a=!1,onMode:s,chips:u,level:c,onOpenNote:f,openNoteId:g=null,brand:p="h1",children:x}){let S=function(){let[e,t]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{let e=()=>t(window.innerWidth<768);return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),e}(),k=o??S,v=!m.IS_DEMO&&!a;return(0,t.jsxs)("header",{style:{position:"relative",padding:k?"10px 12px":"20px 30px",borderBottom:"1px solid rgba(255,255,255,0.1)",flexShrink:0,background:"var(--sd-header)",backdropFilter:"var(--sd-header-blur)",WebkitBackdropFilter:"var(--sd-header-blur)"},children:[(0,t.jsxs)("div",{style:k?{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:6,marginBottom:4}:{display:"grid",gridTemplateColumns:"1fr auto 1fr",alignItems:"center",gap:16,marginBottom:8},children:[(0,t.jsx)(r.default,{href:"/",style:{textDecoration:"none",justifySelf:"start"},children:(0,t.jsx)(p,{style:{...h,fontSize:k?16:28},children:"Six Degrees"})}),(0,t.jsx)(l.default,{active:e,isMobile:k,csvMode:a,onMode:s,after:v?(0,t.jsx)(i.default,{isMobile:k}):null,children:u}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",justifySelf:"end",gap:k?4:8},children:[!m.IS_DEMO&&(0,t.jsx)(r.default,{href:"/settings",title:"Settings","aria-label":"Settings",style:{width:k?28:32,height:k?28:32,borderRadius:"50%",flexShrink:0,background:"rgba(255,255,255,0.06)",color:"#888",fontSize:k?14:16,textDecoration:"none",display:"flex",alignItems:"center",justifyContent:"center"},children:"⚙︎"}),v&&(0,t.jsx)(y,{isMobile:k,onOpen:f,openId:g}),v&&(0,t.jsx)(b,{isMobile:k}),(0,t.jsx)(w,{isMobile:k,csvMode:a,level:c})]})]}),x,v&&(0,t.jsx)(d,{inset:k?12:30})]})}],33821)},26005,76760,e=>{"use strict";var t=e.i(43476),n=e.i(22016),r=e.i(64745);let o=[{key:"network",label:"Network Circle",short:"Circle",on:{background:"#fff",color:"#000"},off:{background:"transparent",color:"#888"}},{key:"degrees",label:"Degrees",on:{background:"linear-gradient(135deg, #FFD700, #FF6B35)",color:"#000"},off:{background:"rgba(255,255,255,0.12)",color:"#fff"}},{key:"separation",label:"Separation",on:{background:"linear-gradient(135deg, #00E5FF, #FFD700 55%, #FF7043)",color:"#000"},off:{background:"rgba(255,255,255,0.12)",color:"#fff"}}],l=[{key:"paths",href:"/paths",label:"Paths",color:"#00ff88",on:"linear-gradient(135deg, #00ff88, #3498DB)",demo:!0},{key:"outlink",href:"/queue",label:"Outlink",color:"#FF6B35",on:"linear-gradient(135deg, #FF6B35, #FFD700)",own:!0},{key:"scan",href:"/setup",label:"Scan",color:"#666",on:"linear-gradient(135deg, #00ff88, #1abc9c)",own:!0}];e.s(["default",0,function({active:e,isMobile:i=!1,csvMode:a=!1,onMode:s,children:u,after:d}){let c={padding:i?"6px 10px":"8px 16px",borderRadius:6,border:"none",fontSize:i?11:13,fontWeight:600,textDecoration:"none"};return(0,t.jsxs)("div",{id:"main-tabs",style:{display:"flex",gap:i?2:4,background:"rgba(255,255,255,0.08)",borderRadius:8,padding:i?2:3,flexWrap:i?"wrap":"nowrap"},children:[o.map(r=>{let o={...c,cursor:"pointer",...e===r.key?r.on:r.off},l=i&&r.short?r.short:r.label;return s?(0,t.jsx)("button",{type:"button",onClick:()=>s(r.key),style:o,children:l},r.key):(0,t.jsx)(n.default,{href:`/?mode=${r.key}`,style:{...o,display:"flex",alignItems:"center"},children:l},r.key)}),u,l.filter(e=>!r.IS_DEMO&&(!e.own||!a)).map(r=>{let o=e===r.key;return(0,t.jsxs)(n.default,{href:r.href,title:r.title,"aria-current":o?"page":void 0,style:{...c,display:"flex",alignItems:"center",gap:4,background:o?r.on:"rgba(255,255,255,0.06)",color:o?"#000":r.color},children:[r.label,r.badge&&(0,t.jsx)("span",{style:{fontSize:9,opacity:.7,marginLeft:2},children:r.badge})]},r.key)}),d]})}],26005);var i=e.i(71645),a=e.i(40996),s=e.i(68792);e.s(["default",0,function({isMobile:e=!1}){let r=(0,i.useSyncExternalStore)(s.watchAllDay,s.allDayNow,()=>!1),[o,l]=(0,i.useState)(()=>(0,a.scannerNow)()),[u,d]=(0,i.useState)(!1);if((0,i.useEffect)(()=>(0,a.watchScanner)(()=>{l((0,a.scannerNow)()),d(!1)}),[]),!r)return null;let c=o?.running&&String(o.action||"").startsWith("auto-bridge"),f={padding:e?"8px 12px":"8px 16px",borderRadius:6,fontSize:13,fontWeight:600,textDecoration:"none",display:"flex",alignItems:"center",gap:6,whiteSpace:"nowrap"};if(c)return(0,t.jsxs)(n.default,{href:"/setup",title:"Auto scan is running: see it on the Scan page",style:{...f,background:"rgba(0,255,136,0.15)",color:"#00ff88",border:"1px solid rgba(0,255,136,0.45)"},children:[(0,t.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:"#00ff88"}}),"Auto scan"]});let g=o?.running||u;return(0,t.jsxs)("button",{onClick:()=>{d(!0),(0,s.startAutoScan)().catch(()=>d(!1))},disabled:g,title:g?"The scanner is busy: one scan at a time":"Start the all-day Auto-Bridge (experimental)",style:{...f,cursor:g?"default":"pointer",background:"rgba(255,255,255,0.04)",color:g?"#555":"#8b9a9a",border:"1px solid rgba(255,215,0,0.25)"},children:[(0,t.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:"#556"}}),"Auto scan"]})}],76760)},30215,e=>{"use strict";var t=e.i(71645),n=e.i(40996);e.s(["default",0,function(){return(0,t.useSyncExternalStore)(n.watchScanner,n.scannerNow,()=>n.SCANNER_UNKNOWN)}])},39160,84278,e=>{"use strict";var t=e.i(7214),n=e.i(7837);function r(e){let t=String(e||"").trim();if(!t)return null;let n=t.match(/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})(?::(\d{2}))?(?:\s*UTC)?$/);if(n)return Date.UTC(+n[1],n[2]-1,+n[3],+n[4],+n[5],+(n[6]||0));if(n=t.match(/^(\d{1,2})\/(\d{1,2})\/(\d{2,4}),?\s+(\d{1,2}):(\d{2})\s*(AM|PM)?$/i)){let e=100>+n[3]?2e3+ +n[3]:+n[3],t=n[4]%12;return"PM"===(n[6]||"").toUpperCase()&&(t+=12),Date.UTC(e,n[1]-1,+n[2],t,+n[5])}if(n=t.match(/^([A-Za-z]{3,9})\s+(\d{4})$/)){let e=Date.parse(`1 ${n[1]} ${n[2]} UTC`);return Number.isNaN(e)?null:e}let r=Date.parse(/\d{4}$/.test(t)?`${t} UTC`:t);return Number.isNaN(r)?null:r}let o=e=>(0,t.keyFor)({profile_url:e});function l(e=[]){let t=new Map;for(let n of e){let e=o(n["sender profile url"]),r=n["conversation id"];r&&e&&(t.has(e)||t.set(e,new Set),t.get(e).add(r))}let n=null;for(let[e,r]of t)(!n||r.size>t.get(n).size)&&(n=e);return n}let i=e=>{let t=f(e);return t?`name:${t}`:null},a=/sponsored/i,s=/in\s?mail/i,u=/linkedin\.com\/(company|showcase|school)\//i,d=e=>/^(yes|true|1)$/i.test(String(e||"").trim());function c(e,t){if(!e||!e.total)return"never";let n=t-e.last;return n<=2592e6||e.recent>=3?"warm":n<=31536e6?"cool":"dormant"}let f=e=>String(e||"").split(",")[0].normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9 ]+/g," ").replace(/\s+/g," ").trim();e.s(["buildConversations",0,function(e=[],{keepText:t=!1}={}){let n=l(e),c=new Map;for(let t of e)n&&o(t["sender profile url"])===n&&t.from&&c.set(t.from,(c.get(t.from)||0)+1);let g=f([...c].sort((e,t)=>t[1]-e[1])[0]?.[0]||""),p=e=>!!e&&(e===n||!!g&&e===`name:${g}`),m={},h=new Map,y=0,b=0;for(let n of e){let e=n["conversation id"],l=r(n.date);if(!e||null==l){b+=1;continue}if(d(n["is message draft"])){y+=1;continue}let c=o(n["sender profile url"])||i(n.from);c&&n.from&&!m[c]&&(m[c]=String(n.from).trim());let f=String(n["recipient profile urls"]||"").split(/[,;\s]+/).filter(Boolean).map(o),g=String(n.to||"").split(",").map(e=>e.trim()).filter(Boolean),x=f.length?f:g.map(i).filter(Boolean);f.length&&f.length===g.length&&f.forEach((e,t)=>{m[e]||(m[e]=g[t])}),f.length||g.forEach(e=>{let t=i(e);t&&!m[t]&&(m[t]=e)}),h.has(e)||h.set(e,{id:e,title:"",everyone:new Set,messages:[],kind:null,folder:"",newest:-1/0});let w=h.get(e);c&&w.everyone.add(c),x.forEach(e=>w.everyone.add(e)),w.kind=w.kind||function(e){let t=String(e.folder||""),n=String(e["conversation title"]||"");return a.test(t)||a.test(n)||u.test(String(e["sender profile url"]||""))?"sponsored":s.test(t)||s.test(n)?"inmail":null}(n),l>=w.newest&&(w.newest=l,w.folder=String(n.folder||"").trim().toLowerCase().slice(0,30));let S={t:l,fromMe:p(c)};t&&(S.text=[n.subject,n.content].map(e=>String(e||"").trim()).filter(Boolean).join("\n\n"),!w.title&&n["conversation title"]&&(w.title=String(n["conversation title"]).trim())),w.messages.push(S)}let x=[];for(let e of h.values()){let n=[...e.everyone].filter(e=>e&&!p(e)).sort();e.messages.sort((e,t)=>e.t-t.t);let r={id:e.id,people:n,group:n.length>1,kind:e.kind,folder:e.folder,messages:e.messages};t&&(r.title=e.title),x.push(r)}for(let e of Object.keys(m))p(e)&&delete m[e];return{self:n,conversations:x,names:m,drafts:y,skipped:b}},"buildInvitations",0,function(e=[],{keepText:t=!1}={}){let n=[];for(let l of e){let e=String(l.direction||"").toUpperCase();if("INCOMING"!==e&&"OUTGOING"!==e)continue;let a="INCOMING"===e?"in":"out",s=String(("in"===a?l.from:l.to)||"").trim(),u=o("in"===a?l.inviterprofileurl:l.inviteeprofileurl),d=(u&&/\/in\//.test(u)?u:null)||i(s);if(!d)continue;let c=r(l["sent at"]),f={id:`${a}|${d}|${c??""}`,dir:a,key:d,name:s.slice(0,120),t:c};t&&String(l.message||"").trim()&&(f.note=String(l.message).trim().slice(0,2e3)),n.push(f)}return n.sort((e,t)=>(t.t||0)-(e.t||0))},"careerChapters",0,function(e=[],t=[],n=Date.now()){let l=e.map(e=>({company:e["company name"]||"",title:e.title||"",from:r(e["started on"]),to:r(e["finished on"])})).filter(e=>e.company&&null!=e.from).sort((e,t)=>e.from-t.from),i=t.map(e=>({url:o(e.url||e.profile_url),t:r(e["connected on"]||e.connected_on)})).filter(e=>null!=e.t);return l.map(e=>{let t=e.to??n,r=i.filter(n=>n.t>=e.from&&n.t<t);return{...e,to:e.to,made:r.length,people:r.map(e=>e.url)}})},"conversationSummary",0,function(e){let t=e.messages[e.messages.length-1];return{id:e.id,people:e.people,group:e.group,kind:e.kind||null,folder:e.folder||"",last:t?t.t:null,lastFromThem:t?!t.fromMe:null,count:e.messages.length,mine:e.messages.filter(e=>e.fromMe).length}},"invitationSplit",0,function(e=[]){let t=0,n=0;for(let r of e){let e=String(r.direction||"").toUpperCase();"INCOMING"===e?t+=1:"OUTGOING"===e&&(n+=1)}return{incoming:t,outgoing:n,total:t+n}},"messageStats",0,function(e=[]){let t=l(e),n=new Map;for(let t of e){let e=o(t["sender profile url"]),l=t["conversation id"];if(!l||!e)continue;let i=String(t["recipient profile urls"]||"").split(/[,;\s]+/).filter(Boolean).map(o),a=r(t.date);if(null==a)continue;n.has(l)||n.set(l,{people:new Set,msgs:[]});let s=n.get(l);s.people.add(e),i.forEach(e=>s.people.add(e)),s.msgs.push({from:e,t:a})}let i=0,a=new Map;for(let e of n.values()){let n=[...e.people].filter(e=>e!==t);if(1!==n.length||!e.people.has(t))continue;let r=n[0],o=a.get(r)||{last:0,lastFromThem:!1,total:0,times:[]};for(let n of e.msgs)o.total+=1,o.times.push(n.t),n.t>=o.last&&(o.last=n.t,o.lastFromThem=n.from!==t),n.t>i&&(i=n.t);a.set(r,o)}for(let e of a.values())e.recent=e.times.filter(e=>e>i-7776e6).length,delete e.times;return{self:t,asOf:i||null,people:a}},"nameKey",0,f,"postingEffect",0,function(e=[],t=[]){let n=e.map(e=>({t:r(e.date),link:e.sharelink||e["share link"]||""})).filter(e=>null!=e.t).sort((e,t)=>e.t-t.t),o=t.map(e=>r(e["connected on"]||e.connected_on)).filter(e=>null!=e).sort((e,t)=>e-t);if(!o.length)return{posts:[],usualWeek:0,afterPosts:0};let l=Math.max(6048e5,o[o.length-1]-o[0]),i=o.length/l*6048e5,a=n.map(e=>({...e,week:o.filter(t=>t>=e.t&&t<e.t+6048e5).length})),s=a.length?a.reduce((e,t)=>e+t.week,0)/a.length:0;return{posts:a,usualWeek:i,afterPosts:s}},"readTable",0,function(e,t){let r=(0,n.parseCsv)(String(e||"")),o=r.findIndex(e=>e.some(e=>e.trim().toLowerCase()===t.toLowerCase()));if(o<0)return[];let l=r[o].map(e=>e.trim().toLowerCase());return r.slice(o+1).filter(e=>e.some(e=>e.trim())).map(e=>Object.fromEntries(l.map((t,n)=>[t,(e[n]??"").trim()])))},"warmthOf",0,c],84278);let g="six-degrees-galaxy-lab",p="six-degrees-galaxy-layouts",m=Object.freeze({on:!0,gravity:0,rings:1,push:15,pull:1,distance:1,dotSize:1,lines:1,sizeBy:"power",orbit:0,names:"key",branch:!1,colourBy:"tier",speed:15,loop:!1,labels:!0,v:2}),h=["gravity","rings","push","pull","distance","orbit","dotSize","lines","sizeBy","names","branch","colourBy","speed","loop"],y=["gravity","rings","push","pull","distance"],b=Object.freeze({gravity:.8,rings:0,push:6,pull:6,distance:.15,sizeBy:"links"}),x=Object.freeze({rings:{lines:1},orbit:{lines:1},clusters:{lines:3}}),w=Object.freeze({gravity:0,rings:3,push:6,pull:4,distance:.22,sizeBy:"power"}),S=new Set,k=null;function v(){return k||(k=function(){try{let e=JSON.parse(localStorage.getItem(g)||"null");if(!e||"object"!=typeof e)return m;return{...m,...e,...e.v===m.v?{}:{branch:!1},v:m.v,on:!0}}catch{return m}}()),k}function M(e){k=null===e?{...m,labels:v().labels}:{...v(),...e,on:!0};try{localStorage.setItem(g,JSON.stringify(k))}catch{}S.forEach(e=>e())}let j=null,I=new Set;function C(){if(!j){try{j=JSON.parse(localStorage.getItem(p)||"[]")}catch{j=[]}Array.isArray(j)||(j=[])}return j}function F(e){j=e;try{localStorage.setItem(p,JSON.stringify(e))}catch{}I.forEach(e=>e())}let N=new Set,O={at:null,playing:!1,min:null,max:null,of:0,find:"",fly:0,found:0,fit:0,social:void 0},B=null;function E(e){let t={...O,...e};Object.keys(e).every(e=>Object.is(t[e],O[e]))||(O=t,N.forEach(e=>e()))}function D(){cancelAnimationFrame(B),B=null,E({playing:!1})}let L=null;function z(e){let n=new Map;for(let[r,o]of Object.entries(e?.people||{}))n.set((0,t.keyFor)({profile_url:r}),{...o});for(let[r,o]of Object.entries(e?.live||{})){let e=(0,t.keyFor)({profile_url:r}),l=n.get(e)||{total:0,recent:0};o.last&&(!l.last||o.last>l.last)&&(l.last=o.last,"boolean"==typeof o.lastFromThem&&(l.lastFromThem=o.lastFromThem)),l.unread=o.unread,l.total=Math.max(l.total||0,1),n.set(e,l)}let r=Math.max(e?.asOf||0,e?.liveAt&&Date.parse(e.liveAt)||0);for(let e of n.values())(e.last||0)>r&&(r=e.last);return{merged:n,asOf:r,chapters:e?.chapters||[],posts:e?.posts?.posts||[]}}let T={1:"#4FC3F7",2:"#BA68C8",3:"#FFB74D"},$=["#FF6B6B","#4ECDC4","#FFD93D","#A29BFE","#00B894","#FD79A8","#74B9FF","#E17055"],A={warm:"#FF7043",cool:"#4FC3F7",dormant:"#8D6E63",never:"#546E7A"},_="#4a5568",R=["#2b1b6b","#6a1b9a","#c2185b","#f4511e","#ffb300","#fff3b0"];function U(e){let t=Math.max(0,Math.min(1,Number(e)||0))*(R.length-1),n=Math.min(R.length-2,Math.floor(t)),r=t-n,o=R[n],l=R[n+1];return`#${[1,3,5].map(e=>Math.round(parseInt(o.slice(e,e+2),16)*(1-r)+parseInt(l.slice(e,e+2),16)*r).toString(16).padStart(2,"0")).join("")}`}function W(e=[],t=()=>0){let n=[...new Set(e.map(t))].sort((e,t)=>e-t),r=new Map(n.map((e,t)=>[e,n.length>1?t/(n.length-1):1]));return e=>r.get(t(e))??0}let P=e=>String(e||"").trim().toLowerCase();e.s(["CLUSTERS",0,b,"FORCE_KEYS",0,y,"LAB_DEFAULTS",0,m,"LAYOUT_LOOKS",0,x,"ORBIT",0,w,"applyLayout",0,function(e){let t=C().find(t=>t.name===e);t&&M(Object.fromEntries(h.filter(e=>e in t.settings).map(e=>[e,t.settings[e]])))},"bornTimes",0,function(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Map,o=(e,l=0)=>{if(r.has(e.id))return r.get(e.id);let i=-1/0,a=t.get(e.id);if(1===e.degree||null==a||l>6){let t=e.connected_date?Date.parse(e.connected_date):NaN;i=Number.isNaN(t)?-1/0:t}return null!=a&&n.has(a)&&l<=6&&(i=Math.max(i,o(n.get(a),l+1))),r.set(e.id,i),i};return e.map(e=>o(e))},"chapterAt",0,function(e,t){let n=null;for(let r of e?.chapters||[])Number.isFinite(r.from)&&r.from<=t&&(!n||r.from>n.from)&&(n=r);return n&&(!Number.isFinite(n.to)||n.to>t)?n:null},"clockNow",0,()=>O,"colourScheme",0,function(e,n,r,o){if("degree"===e)return{of:e=>T[Math.min(e.degree||1,3)],legend:[["1st",T[1]],["2nd",T[2]],["3rd+",T[3]]]};if("company"===e){let e=new Map;for(let t of n){let n=P(t.company);if(!n)continue;let r=e.get(n)||{name:String(t.company).trim(),n:0};r.n+=1,e.set(n,r)}let t=[...e.entries()].filter(([,e])=>e.n>1).sort((e,t)=>t[1].n-e[1].n).slice(0,$.length),r=new Map(t.map(([e],t)=>[e,$[t]]));return{of:e=>r.get(P(e.company))||_,legend:[...t.map(([,e],t)=>[e.name,$[t]]),["Other",_]]}}if("heat"===e){let e=function(e=[]){return W(e,t.score)}(n);return{of:t=>U(e(t)),heat:e,legend:[["Cold",U(.1)],["Warm",U(.45)],["Hot",U(.75)],["Hottest",U(1)]]}}return"warmth"===e&&o?{of:e=>1===(e.degree||1)?A[c(o.merged.get((0,t.keyFor)(e)),o.asOf)]:"#2d3748",legend:[["Warm",A.warm],["Cool",A.cool],["Dormant",A.dormant],["Never messaged",A.never]]}:{of:e=>r[e.tier]||"#666",legend:Object.entries(r)}},"effectiveLab",0,e=>e.on?e:e.labels===m.labels?m:{...m,labels:e.labels},"findMatches",0,function(e,t){let n=String(t||"").trim().toLowerCase();if(n.length<2)return null;let r=new Set;for(let t of e)[t.name,t.company,t.role,t.headline].some(e=>e&&String(e).toLowerCase().includes(n))&&r.add(t.id);return r},"forgetLayout",0,function(e){F(C().filter(t=>t.name!==e))},"heatBy",0,W,"heatColour",0,U,"labNow",0,v,"layoutOf",0,function(e){let t=t=>Object.entries(t).every(([t,n])=>e[t]===n);return y.every(t=>e[t]===m[t])?"rings":t(b)?"clusters":t(w)?"orbit":null},"layoutsNow",0,C,"loadSocial",0,function(){return L||(L=fetch("/api/social").then(e=>e.ok?e.json():{}).then(e=>{E({social:e.social?z(e.social):null})}).catch(()=>E({social:null}))),L},"mergeSocial",0,z,"milestones",0,function(e){let t=[];for(let n of e?.chapters||[])Number.isFinite(n.from)&&t.push({t:n.from,kind:"job",label:n.company});for(let n of e?.posts||[])Number.isFinite(n.t)&&t.push({t:n.t,kind:"post",label:"You posted"});return t.sort((e,t)=>e.t-t.t)},"pause",0,D,"play",0,function e(){if(null==O.min||null==O.max||O.max<=O.min)return;let t=O.max-O.min,n=1e3*Math.max(1,Number(v().speed)||15),r=null==O.at||O.at>=O.max?O.min:O.at,o=performance.now()-(r-O.min)/t*n;E({at:r,playing:!0});let l=r=>{let i=Math.min(O.max,O.min+(r-o)/n*t);if(E({at:i}),i>=O.max){B=null,E({playing:!1}),v().loop&&setTimeout(()=>{B||O.at!==O.max||(E({at:O.min}),e())},1200);return}B=requestAnimationFrame(l)};cancelAnimationFrame(B),B=requestAnimationFrame(l)},"reachCounts",0,function(e,t){let n=new Map(e.map(e=>[e.id,0]));for(let r of e){let e=t.get(r.id);for(let r=0;null!=e&&r<7;r++)n.set(e,(n.get(e)||0)+1),e=t.get(e)}return n},"saveLayout",0,function(e){let t=String(e||"").trim().slice(0,40);if(!t)return;let n=v(),r=Object.fromEntries(h.map(e=>[e,n[e]]));F([...C().filter(e=>e.name!==t),{name:t,settings:r}])},"setClock",0,E,"setLab",0,M,"stopReplay",0,function(){D(),E({at:null})},"watchClock",0,function(e){return N.add(e),()=>N.delete(e)},"watchLab",0,function(e){S.add(e);let t=t=>{t.key===g&&(k=null,e())};return window.addEventListener("storage",t),()=>{S.delete(e),window.removeEventListener("storage",t)}},"watchLayouts",0,function(e){return I.add(e),()=>I.delete(e)}],39160)},98658,e=>{"use strict";function t(e=[],n=[]){let r={S:0,A:0,B:0,C:0,D:0};for(let t of e)r[t.tier]=(r[t.tier]||0)+1;let o=0;for(let e of n)"S"===e.tier&&(o+=1);let l=new Set(n.map(e=>e.source_connection_id).filter(Boolean)).size,i=e.filter(e=>e.is_catalyst).length;return 100*r.S+40*r.A+15*r.B+5*r.C+ +r.D+200*l+150*i+50*o+e.length}let n=e=>Math.floor(Math.sqrt(Math.max(0,e)/10)),r="six-degrees-level",o={},l=new Set;function i(e="own"){if(!(e in o))try{let t=sessionStorage.getItem(`${r}:${e}`),n=null==t?NaN:Number(t);o[e]=Number.isFinite(n)?n:null}catch{o[e]=null}return o[e]}e.s(["levelNow",0,i,"levelOf",0,n,"networkLevel",0,(e,r)=>n(t(e,r)),"networkPower",0,t,"rememberLevel",0,function(e,t="own"){if(i(t)!==e){o[t]=e;try{sessionStorage.setItem(`${r}:${t}`,String(e))}catch{}l.forEach(e=>e())}},"watchLevel",0,function(e){return l.add(e),()=>l.delete(e)}])},19821,e=>{"use strict";async function t(e){let t=e?`/api/network?userId=${encodeURIComponent(e)}`:"/api/network",n=await fetch(t);if(!n.ok)throw Error(`Failed to load network (${n.status})`);let r=await n.json();return{degree1:r.degree1||[],degree2:r.degree2||[],degree3:r.degree3||[],ties:Number(r.ties)||0}}e.s(["loadNetwork",0,t])},7214,36774,e=>{"use strict";let t=/^[A-Za-z0-9_-]+\.(webp|jpg|jpeg|png)$/,n="/avatars/";function r(e){return"string"==typeof e&&e.startsWith(n)&&t.test(e.slice(n.length))?e:null}e.s(["localPhoto",0,r],36774);let o={S:0,A:1,B:2,C:3,D:4};function l(e){let t=parseFloat(e?.power_score);return Number.isFinite(t)?t:0}function i(e){return Math.round(10*l(e))/10}function a(e){return String(e?.profile_url||"").split(/[?#]/)[0].replace(/\/+$/,"")||`id:${e?.id}`}let s=(e,t)=>String(e??"").localeCompare(String(t??""),void 0,{numeric:!0});function u(e,t){return(o[e.tier]??9)-(o[t.tier]??9)||l(t)-l(e)||String(e.name||"").localeCompare(String(t.name||""))||s(e.id,t.id)}function d(e,t){return e.bridge&&t.bridge?u(e.bridge,t.bridge):e.bridge?-1:t.bridge?1:s(e.id,t.id)}function c(e,t){return t.score-e.score||t.waysIn-e.waysIn||d(e.routes[0]||f,t.routes[0]||f)||String(e.person.name||"").localeCompare(String(t.person.name||""))||(e.key<t.key?-1:+(e.key>t.key))}let f={id:null,bridge:null};function g(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return t.length<2?t[0]||"":`${t[0]} ${t[t.length-1].charAt(0)}.`}function p(e,t){let n=String(e||"");return t<=1?n?"…":"":n.length>t?`${n.slice(0,t-1)}…`:n}e.s(["TIERS",0,["S","A","B","C","D"],"compareBridges",0,u,"comparePower",0,c,"convergeLayout",0,function(e,t=800,n=!1,{cards:r=!1,mutuals:o=0}={}){let l=r?46:n?40:34,i=Math.round(t*(n?.44:.36)),a=Math.round(t*(n?.8:r?.6:.62)),s=[],u=null;for(let t of e?.routes||[])t.bridge?s.push({id:t.id,bridge:t.bridge,unresolved:!1,count:1}):u?u.count++:s.push(u={id:null,bridge:null,unresolved:!0,count:1});let d=Math.max(0,Math.floor(Number(o)||0)-(e?.waysIn||0)),c=Math.min(60,d),f=r?12:11,m=r?220:n?96:120,h=Math.max(1,Math.floor(m/f)+1),y=Math.ceil(c/h),b=c?40+y*f:0,x=Math.max(0,s.length-1)*l+b,w=Math.max(n?190:r?250:220,32+x+48),S=w/2,k=S-x/2,v=Math.max(4,Math.floor((i-10-42)/6)),M=s.map((e,t)=>{let n=e.unresolved?`can't be named (${e.count})`:e.bridge.name||"";return{...e,x:i,y:k+t*l,r:6,primary:0===t&&!e.unresolved,label:n.length<=v?n:p(e.unresolved?n:g(n),v)}}),j={x:a,y:S,r:17*!r,rings:r?[]:[32,50,70].filter(e=>e<=S-4)},I=M.map(t=>({key:e?.key,bridgeId:t.id,primary:t.primary,unresolved:t.unresolved,tier:t.bridge?.tier??null,x1:t.x,y1:t.y,x2:j.x,y2:j.y})),C={x:20,y:S,r:14},F=M.map(e=>({id:e.id,x1:C.x,y1:C.y,x2:e.x,y2:e.y})),N=e?[{key:e.key,p:e,x:j.x,y:j.y,r:j.r,rings:j.rings,big:!0,label:""}]:[],O=k+Math.max(0,s.length-1)*l+40,B=r?i-236+8:i-m,E=Array.from({length:c},(e,t)=>({x:B+t%h*f,y:O+Math.floor(t/h)*f})),D=e?.waysIn?e.waysIn/(e.waysIn+d):1;return{width:t,height:w,you:C,target:j,people:N,bridges:M,links:I,spokes:F,ghosts:E,unscanned:d,ghostLabel:c?{x:B,y:O-13}:null,drawn:D}},"keyFor",0,a,"mapCount",0,function(e,t=10){let n=Math.max(0,Math.min(100,Number(e)||0));return n<=50?t:Math.max(1,Math.round(t*(100-n)/50))},"mostMutuals",0,function(e=[],t=()=>0,n=7){return[...e].sort((e,n)=>Math.max(t(n)||0,n.waysIn)-Math.max(t(e)||0,e.waysIn)||n.waysIn-e.waysIn||c(e,n)).slice(0,n)},"routeIndex",0,function(e=[]){let t=new Map;for(let n of e||[]){let e=a(n),r=t.get(e);r||(r=new Set,t.set(e,r)),r.add(n.source_connection_id??null)}return t},"routesFor",0,function(e,t,n){return e?[...t?.get(a(e))??(null!=e.source_connection_id?new Set([e.source_connection_id]):new Set)].map(e=>({id:e,bridge:n?.get(e)??null})).sort(d):[]},"score",0,l,"score1",0,i,"separationPeople",0,function(e=[],t=[]){let n=new Map;for(let e of t||[])n.set(e.id,e);let o=new Map,l=new Map;for(let t of e||[]){let e=a(t);l.set(t.id,e);let n=o.get(e);n?function(e,t){let n=i(e)-i(t);if(n)return n>0;let o=!!r(e.profile_image_url);return!!r(t.profile_image_url)!==o?o:0>s(e.id,t.id)}(t,n.person)&&(n.person=t):(n={key:e,person:t,rowIds:[],routeIds:new Set},o.set(e,n)),n.rowIds.push(t.id),n.routeIds.add(t.source_connection_id??null)}let u={people:o.size,byTier:{S:0,A:0,B:0,C:0,D:0},multi:0,bridges:0,unresolvedIds:0,peopleOnlyUnresolved:0,onlyUnresolvedVia:0},f=new Set,g=new Set,p=new Set,m=[];for(let e of o.values()){let t=[...e.routeIds].map(e=>({id:e,bridge:n.get(e)??null}));t.sort(d);let r=t.filter(e=>e.bridge);for(let e of t)(e.bridge?f:g).add(e.id);if(!r.length)for(let e of(u.peopleOnlyUnresolved++,t))p.add(e.id);let{person:o}=e,l=o.tier;void 0!==u.byTier[l]&&u.byTier[l]++,t.length>1&&u.multi++,m.push({key:e.key,person:o,score:i(o),tier:l,routes:t,waysIn:t.length,rowIds:e.rowIds,haystack:[o.name,o.headline,o.company,o.role,...r.map(e=>e.bridge.name)].filter(Boolean).join("\n").toLowerCase(),rank:0,tied:!1})}return u.bridges=f.size,u.unresolvedIds=g.size,u.onlyUnresolvedVia=p.size,m.sort(c),function(e){for(let t=0;t<e.length;t++){let n=e[t],r=e[t-1],o=r&&r.score===n.score&&r.waysIn===n.waysIn;n.rank=o?r.rank:t+1,o&&(n.tied=!0,r.tied=!0)}}(m),{people:m,rowToKey:l,summary:u}},"shortName",0,g,"summitLayout",0,function(e=[],t=800,n=!1,{cards:r=!1}={}){let o=r?45:n?36:26,l=Math.round(.42*t),i=Math.round(.58*t),a=e.map((e,n)=>{var l;return{key:e.key,p:e,x:i,y:16+n*o,r:r?0:(l=e.waysIn)>=4?8.5:3===l?7:2===l?5.5:4,label:p(`#${e.rank}${e.tied?"=":""} ${e.person.name||""}`,Math.floor((t-i-60)/6.2))}}),s=new Map,d="\0unresolved";for(let e of a)for(let t of e.p.routes){let n=t.bridge?t.id:d,r=s.get(n);r||(r={id:t.bridge?t.id:null,bridge:t.bridge,unresolved:!t.bridge,ys:[],count:0},s.set(n,r)),r.count++,r.ys.push(e.y)}let c=[...s.values()].map(e=>({...e,bary:e.ys.reduce((e,t)=>e+t,0)/e.ys.length}));c.sort((e,t)=>e.bary-t.bary||e.unresolved-t.unresolved||(e.bridge&&t.bridge?u(e.bridge,t.bridge):0));let f=a.length?a[a.length-1].y:16,m=function(e=[],t=18,n=0){let r=[];e.forEach((e,n)=>{for(r.push({sum:e-n*t,count:1});r.length>1&&r[r.length-2].sum/r[r.length-2].count>r[r.length-1].sum/r[r.length-1].count;){let e=r.pop();r[r.length-1].sum+=e.sum,r[r.length-1].count+=e.count}});let o=r.flatMap(e=>Array(e.count).fill(e.sum/e.count)).map((e,n)=>e+n*t),l=o.length&&o[0]<n?n-o[0]:0;return o.map(e=>e+l)}(c.map(e=>e.bary),r?32:18,16),h=Math.max(4,Math.floor((l-10-42)/6));c.forEach((e,t)=>{if(e.x=l,e.y=m[t],e.r=5,e.unresolved)e.label=p(`can't be named (${e.count})`,h);else{let t=e.bridge.name||"";e.label=t.length<=h?t:p(g(t),h)}delete e.ys});let y=new Map(c.map(e=>[e.unresolved?d:e.id,e]));for(let e of c)e.onlyFor=0,e.bestFor=0;for(let e of a){let t=e.p.routes[0],n=t?y.get(t.bridge?t.id:d):null;n&&n.bestFor++,1===e.p.waysIn&&n&&n.onlyFor++}let b=[];for(let e of a){let t=new Set;e.p.routes.forEach((n,r)=>{let o=n.bridge?n.id:d;if(t.has(o))return;t.add(o);let l=y.get(o);b.push({key:e.key,bridgeId:l.id,primary:0===r&&!l.unresolved,unresolved:l.unresolved,tier:l.bridge?.tier??null,x1:l.x,y1:l.y,x2:e.x,y2:e.y})})}let x=Math.max(f,c.length?c[c.length-1].y:0),w=a.length?Math.ceil(x+16):0,S={x:20,y:a.length?(16+Math.max(f,x))/2:16,r:14},k=c.map(e=>({id:e.id,x1:S.x,y1:S.y,x2:e.x,y2:e.y}));return{width:t,height:w,you:S,people:a,bridges:c,links:b,spokes:k}}],7214)}]);