@powerhousedao/connect 6.0.0-dev.24 → 6.0.0-dev.240

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 (571) hide show
  1. package/.env +1 -1
  2. package/dist/AddDriveModal-B9BPORvo.js +89 -0
  3. package/dist/AddDriveModal-B9BPORvo.js.map +1 -0
  4. package/dist/ClearStorageModal-K1H6NgT6.js +44 -0
  5. package/dist/ClearStorageModal-K1H6NgT6.js.map +1 -0
  6. package/dist/CookiesPolicyModal-CnVx2R_8.js +30 -0
  7. package/dist/CookiesPolicyModal-CnVx2R_8.js.map +1 -0
  8. package/dist/CreateDocumentModal-TtG7E62x.js +28 -0
  9. package/dist/CreateDocumentModal-TtG7E62x.js.map +1 -0
  10. package/dist/DebugSettingsModal-Cm61I2LB.js +169 -0
  11. package/dist/DebugSettingsModal-Cm61I2LB.js.map +1 -0
  12. package/dist/DeleteDriveModal-Cb43NeNu.js +40 -0
  13. package/dist/DeleteDriveModal-Cb43NeNu.js.map +1 -0
  14. package/dist/DeleteItemModal-Brq4QKdd.js +39 -0
  15. package/dist/DeleteItemModal-Brq4QKdd.js.map +1 -0
  16. package/dist/DisclaimerModal-Dk6PpkZU.js +21 -0
  17. package/dist/DisclaimerModal-Dk6PpkZU.js.map +1 -0
  18. package/dist/DownloadDocumentWithErrorsModal-B8ZKi2Xy.js +41 -0
  19. package/dist/DownloadDocumentWithErrorsModal-B8ZKi2Xy.js.map +1 -0
  20. package/dist/DriveSettingsModal-Bnug5LXo.js +48 -0
  21. package/dist/DriveSettingsModal-Bnug5LXo.js.map +1 -0
  22. package/dist/InspectorModal-EDrjiXPs.js +372 -0
  23. package/dist/InspectorModal-EDrjiXPs.js.map +1 -0
  24. package/dist/MissingPackageModal-BfblPbd8.js +34 -0
  25. package/dist/MissingPackageModal-BfblPbd8.js.map +1 -0
  26. package/dist/SettingsModal-DOEWGn1K.js +294 -0
  27. package/dist/SettingsModal-DOEWGn1K.js.map +1 -0
  28. package/dist/UpgradeDriveModal-CBLALaaQ.js +31 -0
  29. package/dist/UpgradeDriveModal-CBLALaaQ.js.map +1 -0
  30. package/dist/build-info-rXPlOFzu.js +12 -0
  31. package/dist/build-info-rXPlOFzu.js.map +1 -0
  32. package/dist/connect.config-Cuh0hj_Q.js +139 -0
  33. package/dist/connect.config-Cuh0hj_Q.js.map +1 -0
  34. package/dist/i18n-DLmohU39.js +125 -0
  35. package/dist/i18n-DLmohU39.js.map +1 -0
  36. package/dist/load-BJYAMdHd.js +109 -0
  37. package/dist/load-BJYAMdHd.js.map +1 -0
  38. package/dist/main.d.ts +1 -0
  39. package/dist/main.js +9 -0
  40. package/dist/main.js.map +1 -0
  41. package/dist/package-qZJprZw5.js +114 -0
  42. package/dist/package-qZJprZw5.js.map +1 -0
  43. package/dist/pglite-runtime-C1g-4Jxl.js +132 -0
  44. package/dist/pglite-runtime-C1g-4Jxl.js.map +1 -0
  45. package/dist/pglite-seed-BtXWFpHf.js +46 -0
  46. package/dist/pglite-seed-BtXWFpHf.js.map +1 -0
  47. package/dist/pglite.worker.d.ts +1 -0
  48. package/dist/pglite.worker.js +15 -0
  49. package/dist/pglite.worker.js.map +1 -0
  50. package/dist/pglite.worker.legacy.d.ts +1 -0
  51. package/dist/pglite.worker.legacy.js +15 -0
  52. package/dist/pglite.worker.legacy.js.map +1 -0
  53. package/dist/reactor-Nm3jOev1.js +783 -0
  54. package/dist/reactor-Nm3jOev1.js.map +1 -0
  55. package/dist/registerServiceWorker-LI8_JXt3.js +76 -0
  56. package/dist/registerServiceWorker-LI8_JXt3.js.map +1 -0
  57. package/dist/sidebar-DHvt_u7k.js +1551 -0
  58. package/dist/sidebar-DHvt_u7k.js.map +1 -0
  59. package/dist/start-connect.d.ts +21 -0
  60. package/dist/start-connect.d.ts.map +1 -0
  61. package/dist/start-connect.js +16 -0
  62. package/dist/start-connect.js.map +1 -0
  63. package/{lib → dist}/style.css +2109 -379
  64. package/dist/toast-DnODOv28.js +20 -0
  65. package/dist/toast-DnODOv28.js.map +1 -0
  66. package/dist/useRegistryPackages-BOX4NMAb.js +125 -0
  67. package/dist/useRegistryPackages-BOX4NMAb.js.map +1 -0
  68. package/package.json +57 -121
  69. package/public/ph-packages.json +3 -0
  70. package/dist/assets/AddDriveModal-D_CKgy-G.js +0 -1
  71. package/dist/assets/ClearStorageModal-Cbezj62K.js +0 -1
  72. package/dist/assets/CookiesPolicyModal-DaIRB9vU.js +0 -1
  73. package/dist/assets/CreateDocumentModal-BWk3waQv.js +0 -1
  74. package/dist/assets/DebugSettingsModal-ofyWz4_u.js +0 -1
  75. package/dist/assets/DeleteDriveModal-BMM2s6fJ.js +0 -1
  76. package/dist/assets/DeleteItemModal-DF-901U8.js +0 -1
  77. package/dist/assets/DisclaimerModal-TTkhK3iX.js +0 -1
  78. package/dist/assets/DriveSettingsModal-DcUJMzXk.js +0 -1
  79. package/dist/assets/ExportDocumentWithErrorsModal-Ba4OmhSV.js +0 -1
  80. package/dist/assets/SettingsModal-yQIDMzTY.js +0 -1
  81. package/dist/assets/UpgradeDriveModal-DM_tW0ce.js +0 -1
  82. package/dist/assets/_virtual_ph_external-packages-CM1tCR4L.js +0 -1
  83. package/dist/assets/config-CU-aFfVJ.js +0 -1
  84. package/dist/assets/connect-loader-CvOC68Ih.mp4 +0 -0
  85. package/dist/assets/design_system-BkKQ626l.js +0 -45
  86. package/dist/assets/design_system_connect-CM07lTkc.js +0 -47
  87. package/dist/assets/design_system_ui-CFJrH_IB.js +0 -1
  88. package/dist/assets/document_drive-Bubv8iix.js +0 -316
  89. package/dist/assets/document_engineering-B672dX2R.js +0 -1
  90. package/dist/assets/document_model-_oCbt5YE.js +0 -230
  91. package/dist/assets/document_model_editor-CoYfquJG.js +0 -25
  92. package/dist/assets/drive_explorer-acsplHJS.js +0 -2
  93. package/dist/assets/graphql-AKTCpY7l.js +0 -75
  94. package/dist/assets/graphql-editor-B4IoMXVd.js +0 -73
  95. package/dist/assets/graphql_request-BJtmW2JS.js +0 -3
  96. package/dist/assets/hmr-LMNkvzP7.js +0 -1
  97. package/dist/assets/home-bg-BEhF9NuW.png +0 -0
  98. package/dist/assets/home-bg-BRYzhkhi.avif +0 -0
  99. package/dist/assets/hooks-DNykyMxl.js +0 -12
  100. package/dist/assets/index-BCHrxL4i.js +0 -28
  101. package/dist/assets/index-BQijeNOd.js +0 -18
  102. package/dist/assets/index-DYdiZMfn.css +0 -1
  103. package/dist/assets/json-editor-DIi0-hRZ.js +0 -1
  104. package/dist/assets/nodefs-DIxUMZis.js +0 -1
  105. package/dist/assets/opfs-ahp-Oa76d9mZ.js +0 -3
  106. package/dist/assets/pg_dump-CW0pN9tG.wasm +0 -0
  107. package/dist/assets/postgres-CkP7QCDB.data +0 -0
  108. package/dist/assets/postgres-CyuUVpXN.wasm +0 -0
  109. package/dist/assets/powerhouse-rounded-CeKGGUG4.png +0 -0
  110. package/dist/assets/react/jsx-runtime-DldvXD6N.js +0 -1
  111. package/dist/assets/react-DQSxOgtG.js +0 -1
  112. package/dist/assets/react-dom/client-BVPiT_FE.js +0 -9
  113. package/dist/assets/react-dom-D6zQJsh6.js +0 -1
  114. package/dist/assets/reactor_browser-BnRsHQ1D.js +0 -129
  115. package/dist/assets/renown-short-hover-BiSLBV7L.png +0 -0
  116. package/dist/assets/rwa-report-Bb0W5-ac.png +0 -0
  117. package/dist/assets/sentry_browser-B4YoBIIG.js +0 -498
  118. package/dist/assets/sentry_react-cODD7zWc.js +0 -3
  119. package/dist/assets/state-schemas-CEbl0TPZ.js +0 -2
  120. package/dist/assets/tailwind_merge-Dr4f9Rms.js +0 -1
  121. package/dist/assets/zod-9j67vCAu.js +0 -39
  122. package/dist/icon.ico +0 -0
  123. package/dist/index.html +0 -51
  124. package/dist/robots.txt +0 -3
  125. package/dist/settings.png +0 -0
  126. package/heroku/Dockerfile +0 -101
  127. package/heroku/Procfile +0 -1
  128. package/heroku/config/nginx.conf.template +0 -77
  129. package/heroku/heroku-entrypoint.sh +0 -38
  130. package/lib/cypress/e2e/navigation.cy.d.ts +0 -2
  131. package/lib/cypress/e2e/navigation.cy.d.ts.map +0 -1
  132. package/lib/cypress/e2e/navigation.cy.js +0 -221
  133. package/lib/cypress/e2e/navigation.cy.js.map +0 -1
  134. package/lib/cypress/e2e/utils/index.d.ts +0 -15
  135. package/lib/cypress/e2e/utils/index.d.ts.map +0 -1
  136. package/lib/cypress/e2e/utils/index.js +0 -121
  137. package/lib/cypress/e2e/utils/index.js.map +0 -1
  138. package/lib/cypress/support/commands.d.ts +0 -2
  139. package/lib/cypress/support/commands.d.ts.map +0 -1
  140. package/lib/cypress/support/commands.js +0 -29
  141. package/lib/cypress/support/commands.js.map +0 -1
  142. package/lib/cypress/support/e2e.d.ts +0 -2
  143. package/lib/cypress/support/e2e.d.ts.map +0 -1
  144. package/lib/cypress/support/e2e.js +0 -19
  145. package/lib/cypress/support/e2e.js.map +0 -1
  146. package/lib/cypress.config.d.ts +0 -3
  147. package/lib/cypress.config.d.ts.map +0 -1
  148. package/lib/cypress.config.js +0 -15
  149. package/lib/cypress.config.js.map +0 -1
  150. package/lib/package.copy.json +0 -177
  151. package/lib/scripts/render-skeleton.d.ts +0 -2
  152. package/lib/scripts/render-skeleton.d.ts.map +0 -1
  153. package/lib/scripts/render-skeleton.js +0 -11
  154. package/lib/scripts/render-skeleton.js.map +0 -1
  155. package/lib/src/components/analytics.d.ts +0 -8
  156. package/lib/src/components/analytics.d.ts.map +0 -1
  157. package/lib/src/components/analytics.js +0 -30
  158. package/lib/src/components/analytics.js.map +0 -1
  159. package/lib/src/components/app-loader.d.ts +0 -3
  160. package/lib/src/components/app-loader.d.ts.map +0 -1
  161. package/lib/src/components/app-loader.js +0 -20
  162. package/lib/src/components/app-loader.js.map +0 -1
  163. package/lib/src/components/app-skeleton.d.ts +0 -3
  164. package/lib/src/components/app-skeleton.d.ts.map +0 -1
  165. package/lib/src/components/app-skeleton.js +0 -38
  166. package/lib/src/components/app-skeleton.js.map +0 -1
  167. package/lib/src/components/app.d.ts +0 -2
  168. package/lib/src/components/app.d.ts.map +0 -1
  169. package/lib/src/components/app.js +0 -29
  170. package/lib/src/components/app.js.map +0 -1
  171. package/lib/src/components/button.d.ts +0 -3
  172. package/lib/src/components/button.d.ts.map +0 -1
  173. package/lib/src/components/button.js +0 -7
  174. package/lib/src/components/button.js.map +0 -1
  175. package/lib/src/components/cookie-banner.d.ts +0 -2
  176. package/lib/src/components/cookie-banner.d.ts.map +0 -1
  177. package/lib/src/components/cookie-banner.js +0 -48
  178. package/lib/src/components/cookie-banner.js.map +0 -1
  179. package/lib/src/components/document-editor-container.d.ts +0 -2
  180. package/lib/src/components/document-editor-container.d.ts.map +0 -1
  181. package/lib/src/components/document-editor-container.js +0 -65
  182. package/lib/src/components/document-editor-container.js.map +0 -1
  183. package/lib/src/components/dots-loader.d.ts +0 -2
  184. package/lib/src/components/dots-loader.d.ts.map +0 -1
  185. package/lib/src/components/dots-loader.js +0 -15
  186. package/lib/src/components/dots-loader.js.map +0 -1
  187. package/lib/src/components/drive-editor-container.d.ts +0 -2
  188. package/lib/src/components/drive-editor-container.d.ts.map +0 -1
  189. package/lib/src/components/drive-editor-container.js +0 -22
  190. package/lib/src/components/drive-editor-container.js.map +0 -1
  191. package/lib/src/components/drive-icon.d.ts +0 -5
  192. package/lib/src/components/drive-icon.d.ts.map +0 -1
  193. package/lib/src/components/drive-icon.js +0 -15
  194. package/lib/src/components/drive-icon.js.map +0 -1
  195. package/lib/src/components/editor-loader.d.ts +0 -9
  196. package/lib/src/components/editor-loader.d.ts.map +0 -1
  197. package/lib/src/components/editor-loader.js +0 -19
  198. package/lib/src/components/editor-loader.js.map +0 -1
  199. package/lib/src/components/editors.d.ts +0 -10
  200. package/lib/src/components/editors.d.ts.map +0 -1
  201. package/lib/src/components/editors.js +0 -89
  202. package/lib/src/components/editors.js.map +0 -1
  203. package/lib/src/components/error-boundary.d.ts +0 -103
  204. package/lib/src/components/error-boundary.d.ts.map +0 -1
  205. package/lib/src/components/error-boundary.js +0 -104
  206. package/lib/src/components/error-boundary.js.map +0 -1
  207. package/lib/src/components/footer.d.ts +0 -2
  208. package/lib/src/components/footer.d.ts.map +0 -1
  209. package/lib/src/components/footer.js +0 -16
  210. package/lib/src/components/footer.js.map +0 -1
  211. package/lib/src/components/index.d.ts +0 -22
  212. package/lib/src/components/index.d.ts.map +0 -1
  213. package/lib/src/components/index.js +0 -22
  214. package/lib/src/components/index.js.map +0 -1
  215. package/lib/src/components/login.d.ts +0 -2
  216. package/lib/src/components/login.d.ts.map +0 -1
  217. package/lib/src/components/login.js +0 -12
  218. package/lib/src/components/login.js.map +0 -1
  219. package/lib/src/components/modal/index.d.ts +0 -18
  220. package/lib/src/components/modal/index.d.ts.map +0 -1
  221. package/lib/src/components/modal/index.js +0 -18
  222. package/lib/src/components/modal/index.js.map +0 -1
  223. package/lib/src/components/modal/modals/AddDriveModal.d.ts +0 -2
  224. package/lib/src/components/modal/modals/AddDriveModal.d.ts.map +0 -1
  225. package/lib/src/components/modal/modals/AddDriveModal.js +0 -121
  226. package/lib/src/components/modal/modals/AddDriveModal.js.map +0 -1
  227. package/lib/src/components/modal/modals/ClearStorageModal.d.ts +0 -2
  228. package/lib/src/components/modal/modals/ClearStorageModal.d.ts.map +0 -1
  229. package/lib/src/components/modal/modals/ClearStorageModal.js +0 -35
  230. package/lib/src/components/modal/modals/ClearStorageModal.js.map +0 -1
  231. package/lib/src/components/modal/modals/CookiesPolicyModal.d.ts +0 -2
  232. package/lib/src/components/modal/modals/CookiesPolicyModal.d.ts.map +0 -1
  233. package/lib/src/components/modal/modals/CookiesPolicyModal.js +0 -16
  234. package/lib/src/components/modal/modals/CookiesPolicyModal.js.map +0 -1
  235. package/lib/src/components/modal/modals/CreateDocumentModal.d.ts +0 -2
  236. package/lib/src/components/modal/modals/CreateDocumentModal.d.ts.map +0 -1
  237. package/lib/src/components/modal/modals/CreateDocumentModal.js +0 -24
  238. package/lib/src/components/modal/modals/CreateDocumentModal.js.map +0 -1
  239. package/lib/src/components/modal/modals/DebugSettingsModal.d.ts +0 -2
  240. package/lib/src/components/modal/modals/DebugSettingsModal.d.ts.map +0 -1
  241. package/lib/src/components/modal/modals/DebugSettingsModal.js +0 -108
  242. package/lib/src/components/modal/modals/DebugSettingsModal.js.map +0 -1
  243. package/lib/src/components/modal/modals/DeleteDriveModal.d.ts +0 -2
  244. package/lib/src/components/modal/modals/DeleteDriveModal.d.ts.map +0 -1
  245. package/lib/src/components/modal/modals/DeleteDriveModal.js +0 -32
  246. package/lib/src/components/modal/modals/DeleteDriveModal.js.map +0 -1
  247. package/lib/src/components/modal/modals/DeleteItemModal.d.ts +0 -3
  248. package/lib/src/components/modal/modals/DeleteItemModal.d.ts.map +0 -1
  249. package/lib/src/components/modal/modals/DeleteItemModal.js +0 -33
  250. package/lib/src/components/modal/modals/DeleteItemModal.js.map +0 -1
  251. package/lib/src/components/modal/modals/DisclaimerModal.d.ts +0 -3
  252. package/lib/src/components/modal/modals/DisclaimerModal.d.ts.map +0 -1
  253. package/lib/src/components/modal/modals/DisclaimerModal.js +0 -12
  254. package/lib/src/components/modal/modals/DisclaimerModal.js.map +0 -1
  255. package/lib/src/components/modal/modals/DriveSettingsModal.d.ts +0 -2
  256. package/lib/src/components/modal/modals/DriveSettingsModal.d.ts.map +0 -1
  257. package/lib/src/components/modal/modals/DriveSettingsModal.js +0 -28
  258. package/lib/src/components/modal/modals/DriveSettingsModal.js.map +0 -1
  259. package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.d.ts +0 -2
  260. package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.d.ts.map +0 -1
  261. package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.js +0 -30
  262. package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.js.map +0 -1
  263. package/lib/src/components/modal/modals/InspectorModal/InspectorModal.d.ts +0 -2
  264. package/lib/src/components/modal/modals/InspectorModal/InspectorModal.d.ts.map +0 -1
  265. package/lib/src/components/modal/modals/InspectorModal/InspectorModal.js +0 -29
  266. package/lib/src/components/modal/modals/InspectorModal/InspectorModal.js.map +0 -1
  267. package/lib/src/components/modal/modals/InspectorModal/index.d.ts +0 -2
  268. package/lib/src/components/modal/modals/InspectorModal/index.d.ts.map +0 -1
  269. package/lib/src/components/modal/modals/InspectorModal/index.js +0 -2
  270. package/lib/src/components/modal/modals/InspectorModal/index.js.map +0 -1
  271. package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.d.ts +0 -31
  272. package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.d.ts.map +0 -1
  273. package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.js +0 -211
  274. package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.js.map +0 -1
  275. package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.d.ts +0 -4
  276. package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.d.ts.map +0 -1
  277. package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.js +0 -12
  278. package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.js.map +0 -1
  279. package/lib/src/components/modal/modals/SettingsModal.d.ts +0 -3
  280. package/lib/src/components/modal/modals/SettingsModal.d.ts.map +0 -1
  281. package/lib/src/components/modal/modals/SettingsModal.js +0 -45
  282. package/lib/src/components/modal/modals/SettingsModal.js.map +0 -1
  283. package/lib/src/components/modal/modals/UpgradeDriveModal.d.ts +0 -3
  284. package/lib/src/components/modal/modals/UpgradeDriveModal.d.ts.map +0 -1
  285. package/lib/src/components/modal/modals/UpgradeDriveModal.js +0 -21
  286. package/lib/src/components/modal/modals/UpgradeDriveModal.js.map +0 -1
  287. package/lib/src/components/modal/modals/settings/about.d.ts +0 -2
  288. package/lib/src/components/modal/modals/settings/about.d.ts.map +0 -1
  289. package/lib/src/components/modal/modals/settings/about.js +0 -10
  290. package/lib/src/components/modal/modals/settings/about.js.map +0 -1
  291. package/lib/src/components/modal/modals/settings/danger-zone.d.ts +0 -2
  292. package/lib/src/components/modal/modals/settings/danger-zone.d.ts.map +0 -1
  293. package/lib/src/components/modal/modals/settings/danger-zone.js +0 -15
  294. package/lib/src/components/modal/modals/settings/danger-zone.js.map +0 -1
  295. package/lib/src/components/modal/modals/settings/default-editor.d.ts +0 -2
  296. package/lib/src/components/modal/modals/settings/default-editor.d.ts.map +0 -1
  297. package/lib/src/components/modal/modals/settings/default-editor.js +0 -18
  298. package/lib/src/components/modal/modals/settings/default-editor.js.map +0 -1
  299. package/lib/src/components/modal/modals/settings/package-manager.d.ts +0 -3
  300. package/lib/src/components/modal/modals/settings/package-manager.d.ts.map +0 -1
  301. package/lib/src/components/modal/modals/settings/package-manager.js +0 -87
  302. package/lib/src/components/modal/modals/settings/package-manager.js.map +0 -1
  303. package/lib/src/components/modal/modals-container.d.ts +0 -2
  304. package/lib/src/components/modal/modals-container.d.ts.map +0 -1
  305. package/lib/src/components/modal/modals-container.js +0 -66
  306. package/lib/src/components/modal/modals-container.js.map +0 -1
  307. package/lib/src/components/ph-logo.d.ts +0 -2
  308. package/lib/src/components/ph-logo.d.ts.map +0 -1
  309. package/lib/src/components/ph-logo.js +0 -7
  310. package/lib/src/components/ph-logo.js.map +0 -1
  311. package/lib/src/components/reload-connect-toast.d.ts +0 -2
  312. package/lib/src/components/reload-connect-toast.d.ts.map +0 -1
  313. package/lib/src/components/reload-connect-toast.js +0 -7
  314. package/lib/src/components/reload-connect-toast.js.map +0 -1
  315. package/lib/src/components/root.d.ts +0 -2
  316. package/lib/src/components/root.d.ts.map +0 -1
  317. package/lib/src/components/root.js +0 -8
  318. package/lib/src/components/root.js.map +0 -1
  319. package/lib/src/components/router.d.ts +0 -2
  320. package/lib/src/components/router.d.ts.map +0 -1
  321. package/lib/src/components/router.js +0 -41
  322. package/lib/src/components/router.js.map +0 -1
  323. package/lib/src/components/search-bar.d.ts +0 -2
  324. package/lib/src/components/search-bar.d.ts.map +0 -1
  325. package/lib/src/components/search-bar.js +0 -36
  326. package/lib/src/components/search-bar.js.map +0 -1
  327. package/lib/src/components/sidebar.d.ts +0 -2
  328. package/lib/src/components/sidebar.d.ts.map +0 -1
  329. package/lib/src/components/sidebar.js +0 -28
  330. package/lib/src/components/sidebar.js.map +0 -1
  331. package/lib/src/connect.config.d.ts +0 -115
  332. package/lib/src/connect.config.d.ts.map +0 -1
  333. package/lib/src/connect.config.js +0 -148
  334. package/lib/src/connect.config.js.map +0 -1
  335. package/lib/src/context/index.d.ts +0 -4
  336. package/lib/src/context/index.d.ts.map +0 -1
  337. package/lib/src/context/index.js +0 -4
  338. package/lib/src/context/index.js.map +0 -1
  339. package/lib/src/context/processor-manager.d.ts +0 -3
  340. package/lib/src/context/processor-manager.d.ts.map +0 -1
  341. package/lib/src/context/processor-manager.js +0 -189
  342. package/lib/src/context/processor-manager.js.map +0 -1
  343. package/lib/src/context/read-mode.d.ts +0 -2
  344. package/lib/src/context/read-mode.d.ts.map +0 -1
  345. package/lib/src/context/read-mode.js +0 -219
  346. package/lib/src/context/read-mode.js.map +0 -1
  347. package/lib/src/context/sentry-provider.d.ts +0 -6
  348. package/lib/src/context/sentry-provider.d.ts.map +0 -1
  349. package/lib/src/context/sentry-provider.js +0 -6
  350. package/lib/src/context/sentry-provider.js.map +0 -1
  351. package/lib/src/feature-flags.d.ts +0 -53
  352. package/lib/src/feature-flags.d.ts.map +0 -1
  353. package/lib/src/feature-flags.js +0 -186
  354. package/lib/src/feature-flags.js.map +0 -1
  355. package/lib/src/globals.d.ts +0 -9
  356. package/lib/src/globals.d.ts.map +0 -1
  357. package/lib/src/globals.js +0 -2
  358. package/lib/src/globals.js.map +0 -1
  359. package/lib/src/hmr.d.ts +0 -3
  360. package/lib/src/hmr.d.ts.map +0 -1
  361. package/lib/src/hmr.js +0 -2
  362. package/lib/src/hmr.js.map +0 -1
  363. package/lib/src/hooks/index.d.ts +0 -10
  364. package/lib/src/hooks/index.d.ts.map +0 -1
  365. package/lib/src/hooks/index.js +0 -10
  366. package/lib/src/hooks/index.js.map +0 -1
  367. package/lib/src/hooks/useAcceptedCookies.d.ts +0 -9
  368. package/lib/src/hooks/useAcceptedCookies.d.ts.map +0 -1
  369. package/lib/src/hooks/useAcceptedCookies.js +0 -34
  370. package/lib/src/hooks/useAcceptedCookies.js.map +0 -1
  371. package/lib/src/hooks/useCheckLatestVersion.d.ts +0 -2
  372. package/lib/src/hooks/useCheckLatestVersion.d.ts.map +0 -1
  373. package/lib/src/hooks/useCheckLatestVersion.js +0 -33
  374. package/lib/src/hooks/useCheckLatestVersion.js.map +0 -1
  375. package/lib/src/hooks/useClientErrorHandler.d.ts +0 -6
  376. package/lib/src/hooks/useClientErrorHandler.d.ts.map +0 -1
  377. package/lib/src/hooks/useClientErrorHandler.js +0 -131
  378. package/lib/src/hooks/useClientErrorHandler.js.map +0 -1
  379. package/lib/src/hooks/useCookieBanner.d.ts +0 -5
  380. package/lib/src/hooks/useCookieBanner.d.ts.map +0 -1
  381. package/lib/src/hooks/useCookieBanner.js +0 -32
  382. package/lib/src/hooks/useCookieBanner.js.map +0 -1
  383. package/lib/src/hooks/useInitSentry.d.ts +0 -2
  384. package/lib/src/hooks/useInitSentry.d.ts.map +0 -1
  385. package/lib/src/hooks/useInitSentry.js +0 -80
  386. package/lib/src/hooks/useInitSentry.js.map +0 -1
  387. package/lib/src/hooks/useNodeActions.d.ts +0 -6
  388. package/lib/src/hooks/useNodeActions.d.ts.map +0 -1
  389. package/lib/src/hooks/useNodeActions.js +0 -35
  390. package/lib/src/hooks/useNodeActions.js.map +0 -1
  391. package/lib/src/hooks/useUndoRedoShortcuts.d.ts +0 -8
  392. package/lib/src/hooks/useUndoRedoShortcuts.d.ts.map +0 -1
  393. package/lib/src/hooks/useUndoRedoShortcuts.js +0 -26
  394. package/lib/src/hooks/useUndoRedoShortcuts.js.map +0 -1
  395. package/lib/src/hooks/useWindowSize.d.ts +0 -5
  396. package/lib/src/hooks/useWindowSize.d.ts.map +0 -1
  397. package/lib/src/hooks/useWindowSize.js +0 -21
  398. package/lib/src/hooks/useWindowSize.js.map +0 -1
  399. package/lib/src/hooks/utils.d.ts +0 -7
  400. package/lib/src/hooks/utils.d.ts.map +0 -1
  401. package/lib/src/hooks/utils.js +0 -46
  402. package/lib/src/hooks/utils.js.map +0 -1
  403. package/lib/src/i18n/index.d.ts +0 -4
  404. package/lib/src/i18n/index.d.ts.map +0 -1
  405. package/lib/src/i18n/index.js +0 -26
  406. package/lib/src/i18n/index.js.map +0 -1
  407. package/lib/src/i18n/locales/en.json +0 -114
  408. package/lib/src/index.d.ts +0 -2
  409. package/lib/src/index.d.ts.map +0 -1
  410. package/lib/src/index.js +0 -2
  411. package/lib/src/index.js.map +0 -1
  412. package/lib/src/main.d.ts +0 -2
  413. package/lib/src/main.d.ts.map +0 -1
  414. package/lib/src/main.js +0 -5
  415. package/lib/src/main.js.map +0 -1
  416. package/lib/src/pages/content.d.ts +0 -2
  417. package/lib/src/pages/content.d.ts.map +0 -1
  418. package/lib/src/pages/content.js +0 -39
  419. package/lib/src/pages/content.js.map +0 -1
  420. package/lib/src/pages/demo/atlas-import.d.ts +0 -2
  421. package/lib/src/pages/demo/atlas-import.d.ts.map +0 -1
  422. package/lib/src/pages/demo/atlas-import.js +0 -122
  423. package/lib/src/pages/demo/atlas-import.js.map +0 -1
  424. package/lib/src/pages/index.d.ts +0 -4
  425. package/lib/src/pages/index.d.ts.map +0 -1
  426. package/lib/src/pages/index.js +0 -4
  427. package/lib/src/pages/index.js.map +0 -1
  428. package/lib/src/pages/settings.d.ts +0 -4
  429. package/lib/src/pages/settings.d.ts.map +0 -1
  430. package/lib/src/pages/settings.js +0 -9
  431. package/lib/src/pages/settings.js.map +0 -1
  432. package/lib/src/service-worker.d.ts +0 -2
  433. package/lib/src/service-worker.d.ts.map +0 -1
  434. package/lib/src/service-worker.js +0 -58
  435. package/lib/src/service-worker.js.map +0 -1
  436. package/lib/src/services/hmr.d.ts +0 -13
  437. package/lib/src/services/hmr.d.ts.map +0 -1
  438. package/lib/src/services/hmr.js +0 -85
  439. package/lib/src/services/hmr.js.map +0 -1
  440. package/lib/src/services/index.d.ts +0 -10
  441. package/lib/src/services/index.d.ts.map +0 -1
  442. package/lib/src/services/index.js +0 -9
  443. package/lib/src/services/index.js.map +0 -1
  444. package/lib/src/services/logger.d.ts +0 -2
  445. package/lib/src/services/logger.d.ts.map +0 -1
  446. package/lib/src/services/logger.js +0 -28
  447. package/lib/src/services/logger.js.map +0 -1
  448. package/lib/src/services/renown/browser.d.ts +0 -2
  449. package/lib/src/services/renown/browser.d.ts.map +0 -1
  450. package/lib/src/services/renown/browser.js +0 -6
  451. package/lib/src/services/renown/browser.js.map +0 -1
  452. package/lib/src/services/renown/constants.d.ts +0 -130
  453. package/lib/src/services/renown/constants.d.ts.map +0 -1
  454. package/lib/src/services/renown/constants.js +0 -41
  455. package/lib/src/services/renown/constants.js.map +0 -1
  456. package/lib/src/services/renown/utils.d.ts +0 -7
  457. package/lib/src/services/renown/utils.d.ts.map +0 -1
  458. package/lib/src/services/renown/utils.js +0 -20
  459. package/lib/src/services/renown/utils.js.map +0 -1
  460. package/lib/src/services/storage/base-storage.d.ts +0 -9
  461. package/lib/src/services/storage/base-storage.d.ts.map +0 -1
  462. package/lib/src/services/storage/base-storage.js +0 -21
  463. package/lib/src/services/storage/base-storage.js.map +0 -1
  464. package/lib/src/services/storage/browser.d.ts +0 -5
  465. package/lib/src/services/storage/browser.d.ts.map +0 -1
  466. package/lib/src/services/storage/browser.js +0 -25
  467. package/lib/src/services/storage/browser.js.map +0 -1
  468. package/lib/src/services/storage/types.d.ts +0 -6
  469. package/lib/src/services/storage/types.d.ts.map +0 -1
  470. package/lib/src/services/storage/types.js +0 -2
  471. package/lib/src/services/storage/types.js.map +0 -1
  472. package/lib/src/services/toast.d.ts +0 -8
  473. package/lib/src/services/toast.d.ts.map +0 -1
  474. package/lib/src/services/toast.js +0 -11
  475. package/lib/src/services/toast.js.map +0 -1
  476. package/lib/src/store/document-model.d.ts +0 -3
  477. package/lib/src/store/document-model.d.ts.map +0 -1
  478. package/lib/src/store/document-model.js +0 -80
  479. package/lib/src/store/document-model.js.map +0 -1
  480. package/lib/src/store/editor.d.ts +0 -5
  481. package/lib/src/store/editor.d.ts.map +0 -1
  482. package/lib/src/store/editor.js +0 -31
  483. package/lib/src/store/editor.js.map +0 -1
  484. package/lib/src/store/external-packages.d.ts +0 -4
  485. package/lib/src/store/external-packages.d.ts.map +0 -1
  486. package/lib/src/store/external-packages.js +0 -36
  487. package/lib/src/store/external-packages.js.map +0 -1
  488. package/lib/src/store/index.d.ts +0 -7
  489. package/lib/src/store/index.d.ts.map +0 -1
  490. package/lib/src/store/index.js +0 -7
  491. package/lib/src/store/index.js.map +0 -1
  492. package/lib/src/store/reactor.d.ts +0 -3
  493. package/lib/src/store/reactor.d.ts.map +0 -1
  494. package/lib/src/store/reactor.js +0 -272
  495. package/lib/src/store/reactor.js.map +0 -1
  496. package/lib/src/store/user.d.ts +0 -2
  497. package/lib/src/store/user.d.ts.map +0 -1
  498. package/lib/src/store/user.js +0 -16
  499. package/lib/src/store/user.js.map +0 -1
  500. package/lib/src/store/utils.d.ts +0 -2
  501. package/lib/src/store/utils.d.ts.map +0 -1
  502. package/lib/src/store/utils.js +0 -59
  503. package/lib/src/store/utils.js.map +0 -1
  504. package/lib/src/utils/browser.d.ts +0 -2
  505. package/lib/src/utils/browser.d.ts.map +0 -1
  506. package/lib/src/utils/browser.js +0 -9
  507. package/lib/src/utils/browser.js.map +0 -1
  508. package/lib/src/utils/document-editor-debug-tools.d.ts +0 -17
  509. package/lib/src/utils/document-editor-debug-tools.d.ts.map +0 -1
  510. package/lib/src/utils/document-editor-debug-tools.js +0 -55
  511. package/lib/src/utils/document-editor-debug-tools.js.map +0 -1
  512. package/lib/src/utils/drive-preservation.d.ts +0 -19
  513. package/lib/src/utils/drive-preservation.d.ts.map +0 -1
  514. package/lib/src/utils/drive-preservation.js +0 -51
  515. package/lib/src/utils/drive-preservation.js.map +0 -1
  516. package/lib/src/utils/drive-sections.d.ts +0 -31
  517. package/lib/src/utils/drive-sections.d.ts.map +0 -1
  518. package/lib/src/utils/drive-sections.js +0 -63
  519. package/lib/src/utils/drive-sections.js.map +0 -1
  520. package/lib/src/utils/index.d.ts +0 -12
  521. package/lib/src/utils/index.d.ts.map +0 -1
  522. package/lib/src/utils/index.js +0 -12
  523. package/lib/src/utils/index.js.map +0 -1
  524. package/lib/src/utils/join.d.ts +0 -2
  525. package/lib/src/utils/join.d.ts.map +0 -1
  526. package/lib/src/utils/join.js +0 -11
  527. package/lib/src/utils/join.js.map +0 -1
  528. package/lib/src/utils/openUrl.d.ts +0 -2
  529. package/lib/src/utils/openUrl.d.ts.map +0 -1
  530. package/lib/src/utils/openUrl.js +0 -3
  531. package/lib/src/utils/openUrl.js.map +0 -1
  532. package/lib/src/utils/path.d.ts +0 -4
  533. package/lib/src/utils/path.d.ts.map +0 -1
  534. package/lib/src/utils/path.js +0 -17
  535. package/lib/src/utils/path.js.map +0 -1
  536. package/lib/src/utils/reactor.d.ts +0 -26
  537. package/lib/src/utils/reactor.d.ts.map +0 -1
  538. package/lib/src/utils/reactor.js +0 -115
  539. package/lib/src/utils/reactor.js.map +0 -1
  540. package/lib/src/utils/registerServiceWorker.d.ts +0 -12
  541. package/lib/src/utils/registerServiceWorker.d.ts.map +0 -1
  542. package/lib/src/utils/registerServiceWorker.js +0 -97
  543. package/lib/src/utils/registerServiceWorker.js.map +0 -1
  544. package/lib/src/utils/signature.d.ts +0 -4
  545. package/lib/src/utils/signature.d.ts.map +0 -1
  546. package/lib/src/utils/signature.js +0 -36
  547. package/lib/src/utils/signature.js.map +0 -1
  548. package/lib/src/utils/slug.d.ts +0 -2
  549. package/lib/src/utils/slug.d.ts.map +0 -1
  550. package/lib/src/utils/slug.js +0 -4
  551. package/lib/src/utils/slug.js.map +0 -1
  552. package/lib/src/workers/pglite-worker.d.ts +0 -2
  553. package/lib/src/workers/pglite-worker.d.ts.map +0 -1
  554. package/lib/src/workers/pglite-worker.js +0 -32
  555. package/lib/src/workers/pglite-worker.js.map +0 -1
  556. package/lib/test/utils/signer.test.d.ts +0 -2
  557. package/lib/test/utils/signer.test.d.ts.map +0 -1
  558. package/lib/test/utils/signer.test.js +0 -330
  559. package/lib/test/utils/signer.test.js.map +0 -1
  560. package/lib/tsconfig.tsbuildinfo +0 -1
  561. package/lib/vite.config.d.ts +0 -3
  562. package/lib/vite.config.d.ts.map +0 -1
  563. package/lib/vite.config.js +0 -59
  564. package/lib/vite.config.js.map +0 -1
  565. package/lib/vitest.config.d.ts +0 -3
  566. package/lib/vitest.config.d.ts.map +0 -1
  567. package/lib/vitest.config.js +0 -8
  568. package/lib/vitest.config.js.map +0 -1
  569. package/nginx.conf +0 -77
  570. package/package.copy.json +0 -177
  571. package/src/index.css +0 -5
@@ -0,0 +1,1551 @@
1
+ import { n as defaultPHAppConfig, r as defaultPHDocumentEditorConfig, t as connectConfig } from "./connect.config-Cuh0hj_Q.js";
2
+ import { n as toast, t as ToastContainer } from "./toast-DnODOv28.js";
3
+ import { t as i18n } from "./i18n-DLmohU39.js";
4
+ import { c as subscribeReactorPgMajor, d as createFileDataStore, f as idbError, l as IDB_STORE_NAME, m as readPgVersionFile, p as openIdb, r as getCachedReactorPgMajor, u as PRIMARY_IDB_NAMES } from "./pglite-runtime-C1g-4Jxl.js";
5
+ import { t as serviceWorkerManager } from "./registerServiceWorker-LI8_JXt3.js";
6
+ import { addRemoteDrive, driveCollectionId, getRevisionFromDate, logout, openRenown, setPHAppConfig, setPHDocumentEditorConfig, setRevisionHistoryVisible, setSelectedDrive, setSelectedNode, showPHModal, useAppModuleById, useDefaultAppModule, useDocumentById, useDocumentModelModuleById, useDocumentOperations, useDrives, useEditorModuleById, useFallbackEditorModule, useNodeParentFolderById, usePHModal, usePackageDiscoveryService, useReactorClient, useRevisionHistoryVisible, useSelectedDocument, useSelectedDocumentId, useSelectedDrive, useSelectedDriveSafe, useSelectedFolder, useSelectedTimelineItem, useSyncList, useUser } from "@powerhousedao/reactor-browser";
7
+ import { childLogger } from "document-model";
8
+ import React, { StrictMode, Suspense, lazy, useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
9
+ import { Trans, useTranslation } from "react-i18next";
10
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
+ import { Outlet, RouterProvider, createBrowserRouter, createRoutesFromChildren, matchRoutes, useLocation, useNavigate, useNavigationType, useParams } from "react-router-dom";
12
+ import { useHotkeys } from "react-hotkeys-hook";
13
+ import { AnimatedLoader, ConnectSidebar, ConnectTooltipProvider, CookieBanner, DefaultEditorLoader, DropZoneWrapper, HomeScreen, HomeScreenAddDriveItem, HomeScreenItem, RevisionHistory, SidebarAddDriveItem, SidebarItem, useEns } from "@powerhousedao/design-system/connect";
14
+ import { GenericDriveExplorer } from "@powerhousedao/powerhouse-vetra-packages/editors";
15
+ import { Icon, PowerhouseButton } from "@powerhousedao/design-system";
16
+ import { ErrorBoundary } from "react-error-boundary";
17
+ import { PGlite } from "@electric-sql/pglite";
18
+ import { PackageInstallModal } from "@powerhousedao/design-system/connect/index";
19
+ import { redo, undo } from "@powerhousedao/shared/document-model";
20
+ import { gql, request } from "graphql-request";
21
+ //#region src/hooks/useAcceptedCookies.ts
22
+ const ACCEPTED_COOKIES_KEY_STORAGE = `${connectConfig.routerBasename}:acceptedCookies`;
23
+ const listeners$3 = /* @__PURE__ */ new Set();
24
+ let cookies = getInitial$1();
25
+ function getInitial$1() {
26
+ try {
27
+ const value = localStorage.getItem(ACCEPTED_COOKIES_KEY_STORAGE);
28
+ return value ? JSON.parse(value) : {
29
+ analytics: false,
30
+ marketing: false,
31
+ functional: false
32
+ };
33
+ } catch {
34
+ return {
35
+ analytics: false,
36
+ marketing: false,
37
+ functional: false
38
+ };
39
+ }
40
+ }
41
+ function getCookies() {
42
+ return cookies;
43
+ }
44
+ function setCookies(setter) {
45
+ cookies = setter(cookies);
46
+ localStorage.setItem(ACCEPTED_COOKIES_KEY_STORAGE, JSON.stringify(cookies));
47
+ listeners$3.forEach((fn) => fn());
48
+ }
49
+ function subscribe$1(fn) {
50
+ listeners$3.add(fn);
51
+ return () => listeners$3.delete(fn);
52
+ }
53
+ const useAcceptedCookies = () => {
54
+ return [useSyncExternalStore(subscribe$1, getCookies, getCookies), setCookies];
55
+ };
56
+ const COOKIE_BANNER_KEY_STORAGE = `${connectConfig.routerBasename}:display-cookie-banner`;
57
+ const listeners$2 = /* @__PURE__ */ new Set();
58
+ let bannerShown = getInitial();
59
+ function getInitial() {
60
+ try {
61
+ return localStorage.getItem(COOKIE_BANNER_KEY_STORAGE) !== "false";
62
+ } catch (error) {
63
+ console.error(error);
64
+ return true;
65
+ }
66
+ }
67
+ function getCookieBannerState() {
68
+ return bannerShown;
69
+ }
70
+ function setCookieBannerState(state) {
71
+ bannerShown = state;
72
+ localStorage.setItem(COOKIE_BANNER_KEY_STORAGE, JSON.stringify(state));
73
+ }
74
+ function subscribe(fn) {
75
+ listeners$2.add(fn);
76
+ return () => listeners$2.delete(fn);
77
+ }
78
+ const useCookieBanner = () => {
79
+ return [useSyncExternalStore(subscribe, getCookieBannerState, getCookieBannerState), setCookieBannerState];
80
+ };
81
+ //#endregion
82
+ //#region src/hooks/useInitSentry.ts
83
+ const logger$2 = childLogger(["sentry"]);
84
+ let clientStarted = false;
85
+ async function getSentry() {
86
+ return await import("@sentry/react");
87
+ }
88
+ async function initSentry() {
89
+ connectConfig.sentry;
90
+ const Sentry = await getSentry();
91
+ const integrations = [
92
+ Sentry.httpClientIntegration(),
93
+ Sentry.extraErrorDataIntegration({ depth: 5 }),
94
+ Sentry.replayIntegration(),
95
+ Sentry.captureConsoleIntegration({ levels: ["error"] })
96
+ ];
97
+ if (connectConfig.sentry.tracing) integrations.push(Sentry.reactRouterV6BrowserTracingIntegration({
98
+ useEffect: React.useEffect,
99
+ useLocation,
100
+ useNavigationType,
101
+ createRoutesFromChildren,
102
+ matchRoutes
103
+ }));
104
+ Sentry.init({
105
+ release: connectConfig.sentry.release,
106
+ dsn: connectConfig.sentry.dsn,
107
+ environment: connectConfig.sentry.env,
108
+ integrations,
109
+ ignoreErrors: [
110
+ "User is not allowed to create files",
111
+ "User is not allowed to move documents",
112
+ "The user aborted a request."
113
+ ],
114
+ sendDefaultPii: true,
115
+ tracesSampleRate: 1,
116
+ replaysSessionSampleRate: .1,
117
+ replaysOnErrorSampleRate: 1,
118
+ beforeSend(event, hint) {
119
+ const error = hint.originalException;
120
+ if (error instanceof TypeError && error.message.includes("Failed to fetch") && !navigator.onLine) return null;
121
+ return event;
122
+ }
123
+ });
124
+ clientStarted = true;
125
+ }
126
+ async function closeClient() {
127
+ if (!clientStarted) return;
128
+ return (await getSentry()).getClient()?.close();
129
+ }
130
+ function useInitSentry() {
131
+ const [acceptedCookies] = useAcceptedCookies();
132
+ const { analytics } = acceptedCookies;
133
+ useEffect(() => {
134
+ if (!analytics) {
135
+ closeClient().catch((error) => logger$2.error("@error", error));
136
+ return;
137
+ }
138
+ if (clientStarted || !connectConfig.sentry.dsn || connectConfig.sentry.dsn === "") return;
139
+ initSentry().catch((error) => logger$2.error("@error", error));
140
+ }, [analytics]);
141
+ }
142
+ //#endregion
143
+ //#region src/hooks/usePendingInstallations.ts
144
+ const emptyArray = [];
145
+ function usePendingInstallations() {
146
+ const discoveryService = usePackageDiscoveryService();
147
+ return useSyncExternalStore((cb) => discoveryService?.subscribePending(cb) ?? (() => {}), () => discoveryService?.getPendingInstallations() ?? emptyArray);
148
+ }
149
+ //#endregion
150
+ //#region src/hooks/useUndoRedoShortcuts.ts
151
+ const useUndoRedoShortcuts = (props) => {
152
+ const { undo, redo, canRedo, canUndo } = props;
153
+ const isMac = window.navigator.userAgent.includes("Mac");
154
+ let undoShortcut = "ctrl+z";
155
+ let redoShortcut = "ctrl+y";
156
+ if (isMac) {
157
+ undoShortcut = "mod+z";
158
+ redoShortcut = "mod+shift+z";
159
+ }
160
+ useHotkeys(undoShortcut, (event) => {
161
+ event.preventDefault();
162
+ if (canUndo) undo();
163
+ }, {}, [canUndo, undo]);
164
+ useHotkeys(redoShortcut, (event) => {
165
+ event.preventDefault();
166
+ if (canRedo) redo();
167
+ }, {}, [canRedo, redo]);
168
+ };
169
+ //#endregion
170
+ //#region src/components/analytics.tsx
171
+ function gtag(...args) {
172
+ window.dataLayer?.push(...args);
173
+ }
174
+ const Analytics = () => {
175
+ const gaTrackingId = connectConfig.gaTrackingId;
176
+ const [{ analytics }] = useAcceptedCookies();
177
+ const useAnalytics = gaTrackingId && analytics;
178
+ useEffect(() => {
179
+ if (useAnalytics) {
180
+ const script = document.createElement("script");
181
+ script.src = `https://www.googletagmanager.com/gtag/js?id=${gaTrackingId}`;
182
+ script.async = true;
183
+ document.head.appendChild(script);
184
+ window.dataLayer = window.dataLayer || [];
185
+ gtag("js", /* @__PURE__ */ new Date());
186
+ gtag("config", gaTrackingId);
187
+ return () => {
188
+ document.head.removeChild(script);
189
+ };
190
+ }
191
+ }, [useAnalytics, gaTrackingId]);
192
+ return null;
193
+ };
194
+ //#endregion
195
+ //#region src/components/document-editor-container.tsx
196
+ function DocumentEditorContainer() {
197
+ const [selectedDocument] = useSelectedDocument();
198
+ const parentFolder = useNodeParentFolderById(selectedDocument.header.id);
199
+ useMemo(() => {
200
+ return async () => {};
201
+ }, []);
202
+ useCallback(() => {
203
+ setSelectedNode(parentFolder);
204
+ }, [parentFolder, setSelectedNode]);
205
+ return /* @__PURE__ */ jsx("div", {
206
+ id: "document-editor-container",
207
+ className: "flex-1",
208
+ "data-document-type": selectedDocument.header.documentType,
209
+ children: /* @__PURE__ */ jsx(DocumentEditor, { document: selectedDocument })
210
+ });
211
+ }
212
+ //#endregion
213
+ //#region src/components/editor-loader.tsx
214
+ function EditorLoader(props) {
215
+ const [showLoading, setShowLoading] = useState(false);
216
+ useEffect(() => {
217
+ setTimeout(() => {
218
+ setShowLoading(true);
219
+ }, props.loadingTimeout ?? 200);
220
+ }, [props]);
221
+ if (!showLoading) return null;
222
+ const { customEditorLoader, ...defaultProps } = props;
223
+ if (customEditorLoader) return /* @__PURE__ */ jsx(Fragment, { children: customEditorLoader });
224
+ return /* @__PURE__ */ jsx(DefaultEditorLoader, { ...defaultProps });
225
+ }
226
+ //#endregion
227
+ //#region src/components/error-boundary.tsx
228
+ const logger$1 = childLogger(["Connect"]);
229
+ function hasCustomFallback(props) {
230
+ return "fallbackRender" in props;
231
+ }
232
+ function SilentFallback() {
233
+ return null;
234
+ }
235
+ /**
236
+ * Simple text-based fallback component.
237
+ * Displays a centered message when an error occurs.
238
+ */
239
+ function TextFallback({ message = "Something went wrong" }) {
240
+ return /* @__PURE__ */ jsx("div", {
241
+ className: "text-center",
242
+ children: message
243
+ });
244
+ }
245
+ /**
246
+ * Detailed fallback component showing full error information.
247
+ * Displays error message with a collapsible details section.
248
+ * Useful for development and debugging purposes.
249
+ */
250
+ function DetailedFallback({ error, resetErrorBoundary }) {
251
+ const errorMessage = error instanceof Error ? error.message : String(error);
252
+ const errorDetails = error instanceof Error ? error.stack ?? String(error.cause) : JSON.stringify(error, null, 2);
253
+ return /* @__PURE__ */ jsx("div", {
254
+ className: "z-10 mx-auto flex max-w-[80%] flex-1 items-center justify-center p-6",
255
+ children: /* @__PURE__ */ jsxs("div", {
256
+ className: "w-full max-w-lg rounded-lg border border-gray-500 bg-white p-6 shadow-sm",
257
+ children: [
258
+ /* @__PURE__ */ jsxs("div", {
259
+ className: "mb-3 flex items-center gap-2",
260
+ children: [/* @__PURE__ */ jsx(Icon, {
261
+ name: "Error",
262
+ className: "size-5 shrink-0"
263
+ }), /* @__PURE__ */ jsx("h1", {
264
+ className: "text-lg font-semibold",
265
+ children: "Something went wrong"
266
+ })]
267
+ }),
268
+ /* @__PURE__ */ jsx("p", {
269
+ className: "mb-4 text-sm text-gray-700",
270
+ children: errorMessage
271
+ }),
272
+ errorDetails !== "{}" && /* @__PURE__ */ jsxs("details", {
273
+ className: "group",
274
+ children: [/* @__PURE__ */ jsx("summary", {
275
+ className: "cursor-pointer select-none text-sm font-medium text-gray-700 underline hover:text-gray-700",
276
+ children: "Show details"
277
+ }), /* @__PURE__ */ jsx("pre", {
278
+ className: "mt-2 max-h-48 overflow-auto rounded bg-gray-100 p-3 text-xs",
279
+ children: errorDetails
280
+ })]
281
+ }),
282
+ /* @__PURE__ */ jsx(PowerhouseButton, {
283
+ type: "button",
284
+ onClick: resetErrorBoundary,
285
+ className: "text-md mt-4 px-3 py-1.5 font-medium",
286
+ children: "Try again"
287
+ })
288
+ ]
289
+ })
290
+ });
291
+ }
292
+ /**
293
+ * Centered error message fallback component.
294
+ * Displays the error message in a centered, full-size container.
295
+ * Suitable for use as a custom fallbackRender when you need simple error display.
296
+ */
297
+ function CenteredErrorMessage({ error }) {
298
+ return /* @__PURE__ */ jsx("div", {
299
+ className: "flex size-full items-center justify-center",
300
+ children: /* @__PURE__ */ jsx("h3", {
301
+ className: "text-lg font-semibold",
302
+ children: error instanceof Error ? error.message : String(error)
303
+ })
304
+ });
305
+ }
306
+ function getFallbackComponent(variant, fallbackMessage) {
307
+ switch (variant) {
308
+ case "silent": return SilentFallback;
309
+ case "text": return () => /* @__PURE__ */ jsx(TextFallback, { message: fallbackMessage });
310
+ case "detailed": return DetailedFallback;
311
+ default: return CenteredErrorMessage;
312
+ }
313
+ }
314
+ /**
315
+ * Unified error boundary component for catching and handling React errors.
316
+ *
317
+ * Built on top of `react-error-boundary`, this component provides:
318
+ * - Automatic error logging with configurable context
319
+ * - Multiple fallback UI variants (silent, text, detailed)
320
+ * - Support for custom fallback render functions
321
+ * - Reset capability via `resetKeys`
322
+ *
323
+ * @example
324
+ * // Using a predefined variant
325
+ * <ErrorBoundary variant="detailed" loggerContext={["Connect", "Editor"]}>
326
+ * <EditorComponent />
327
+ * </ErrorBoundary>
328
+ *
329
+ * @example
330
+ * // Using a custom message with the text variant
331
+ * <ErrorBoundary variant="text" fallbackMessage="Failed to load drives">
332
+ * <DrivesList />
333
+ * </ErrorBoundary>
334
+ *
335
+ * @example
336
+ * // Using a custom fallback render
337
+ * <ErrorBoundary
338
+ * fallbackRender={CenteredErrorMessage}
339
+ * onError={(error) => trackError(error)}
340
+ * >
341
+ * <MyComponent />
342
+ * </ErrorBoundary>
343
+ *
344
+ * @example
345
+ * // Silent mode for modals (renders null on error)
346
+ * <ErrorBoundary variant="silent" loggerContext={["Connect", "Modals"]}>
347
+ * <ModalContent />
348
+ * </ErrorBoundary>
349
+ */
350
+ function ErrorBoundary$1(props) {
351
+ const { children, onError, resetKeys, loggerContext } = props;
352
+ const handleError = (error, info) => {
353
+ if (error.message.includes("Failed to fetch dynamically imported module") && error.message.includes("node_modules/.vite")) {
354
+ console.error(error);
355
+ console.log("Outdated chunk detected, reloading page...");
356
+ window.location.reload();
357
+ return;
358
+ }
359
+ (loggerContext ? childLogger(loggerContext) : logger$1).error("@error @info", error, info);
360
+ onError?.(error, info);
361
+ };
362
+ return /* @__PURE__ */ jsx(ErrorBoundary, {
363
+ fallbackRender: hasCustomFallback(props) ? props.fallbackRender : getFallbackComponent(props.variant, props.fallbackMessage),
364
+ onError: handleError,
365
+ resetKeys,
366
+ children
367
+ });
368
+ }
369
+ //#endregion
370
+ //#region src/components/app-container.tsx
371
+ function AppContainer() {
372
+ const [selectedDrive] = useSelectedDrive();
373
+ const selectedDocumentId = useSelectedDocumentId();
374
+ const app = useAppModuleById(selectedDrive.header.meta?.preferredEditor);
375
+ const defaultApp = useDefaultAppModule();
376
+ const AppComponent = app?.Component ?? defaultApp?.Component ?? GenericDriveExplorer.Component;
377
+ if (!AppComponent) throw new Error("No app component found");
378
+ return /* @__PURE__ */ jsx(ErrorBoundary$1, {
379
+ variant: "detailed",
380
+ resetKeys: [selectedDrive.header.id],
381
+ loggerContext: ["Connect", "App"],
382
+ children: /* @__PURE__ */ jsx(Suspense, {
383
+ fallback: /* @__PURE__ */ jsx(EditorLoader, {}),
384
+ children: /* @__PURE__ */ jsx(DropZoneWrapper, {
385
+ className: "flex h-full flex-col overflow-auto",
386
+ children: /* @__PURE__ */ jsx(AppComponent, { children: selectedDocumentId ? /* @__PURE__ */ jsx(DocumentEditorContainer, {}) : null })
387
+ })
388
+ })
389
+ });
390
+ }
391
+ //#endregion
392
+ //#region src/utils/browser.ts
393
+ function getBasePath() {
394
+ if (typeof document === "undefined") return "/";
395
+ return document.querySelector("base")?.getAttribute("href") || "/";
396
+ }
397
+ //#endregion
398
+ //#region src/utils/document-editor-debug-tools.ts
399
+ var DocumentEditorDebugTools = class {
400
+ document;
401
+ operations = [];
402
+ constructor(document) {
403
+ if (document) this.document = document;
404
+ }
405
+ operationsToTableObject(operations) {
406
+ return operations.map((op) => ({
407
+ ...op,
408
+ input: JSON.stringify(op.action.input)
409
+ }));
410
+ }
411
+ setDocument(document) {
412
+ this.document = document;
413
+ }
414
+ getDocument() {
415
+ return this.document;
416
+ }
417
+ getOperations() {
418
+ return this.operations;
419
+ }
420
+ pushOperation(operation) {
421
+ this.operations.push(operation);
422
+ }
423
+ operationsTable() {
424
+ if (!this.document) console.warn("No document");
425
+ const ops = Object.values(this.document?.operations || {}).filter((array) => array !== void 0).flatMap((array) => array).sort((a, b) => a.index - b.index);
426
+ console.table(this.operationsToTableObject(ops));
427
+ }
428
+ scopeOperationsTable(scope) {
429
+ if (!this.document) console.warn("No document");
430
+ const ops = this.document?.operations[scope] || [];
431
+ console.table(this.operationsToTableObject(ops));
432
+ }
433
+ operationsLog() {
434
+ console.log(this.operations);
435
+ }
436
+ operationsLogTable() {
437
+ console.table(this.operationsToTableObject(this.operations));
438
+ }
439
+ clear() {
440
+ this.operations = [];
441
+ this.document = void 0;
442
+ }
443
+ };
444
+ //#endregion
445
+ //#region src/components/migration-status.ts
446
+ let current = null;
447
+ const listeners$1 = /* @__PURE__ */ new Set();
448
+ function setMigrationStatus(status) {
449
+ current = status;
450
+ for (const l of listeners$1) l();
451
+ }
452
+ function getMigrationStatus() {
453
+ return current;
454
+ }
455
+ function subscribeMigrationStatus(cb) {
456
+ listeners$1.add(cb);
457
+ return () => {
458
+ listeners$1.delete(cb);
459
+ };
460
+ }
461
+ //#endregion
462
+ //#region src/utils/pglite-migration.ts
463
+ const BACKUP_PREFIX = "ph-pglite-backup::";
464
+ const BACKUP_INDEX_KEY = "ph:pglite-backups";
465
+ const BACKUP_RETENTION_MS = 720 * 60 * 60 * 1e3;
466
+ const LEGACY_DUMPERS = { 16: async () => {
467
+ const [{ PGlite: LegacyPGlite }, { pgDump }] = await Promise.all([import("pglite-legacy-02"), import("pglite-tools-legacy-02/pg_dump")]);
468
+ return async (idbName) => {
469
+ const pg = new LegacyPGlite(`idb://${idbName.replace(/^\/pglite\//, "")}`);
470
+ try {
471
+ await pg.waitReady;
472
+ return await (await pgDump({ pg })).text();
473
+ } finally {
474
+ await pg.close();
475
+ }
476
+ };
477
+ } };
478
+ function deleteIdb(name, timeoutMs = 15e3) {
479
+ return new Promise((resolve, reject) => {
480
+ const req = indexedDB.deleteDatabase(name);
481
+ let settled = false;
482
+ const done = (fn) => {
483
+ if (settled) return;
484
+ settled = true;
485
+ fn();
486
+ };
487
+ const timer = setTimeout(() => done(() => reject(/* @__PURE__ */ new Error(`IDB delete timed out for ${name} after ${timeoutMs}ms`))), timeoutMs);
488
+ req.onsuccess = () => done(() => {
489
+ clearTimeout(timer);
490
+ resolve();
491
+ });
492
+ req.onerror = () => done(() => {
493
+ clearTimeout(timer);
494
+ reject(idbError(req, `IDB delete failed for ${name}`));
495
+ });
496
+ });
497
+ }
498
+ async function clearFileData(name) {
499
+ const db = await openIdb(name, 21, createFileDataStore);
500
+ try {
501
+ await new Promise((resolve, reject) => {
502
+ const tx = db.transaction(IDB_STORE_NAME, "readwrite");
503
+ tx.oncomplete = () => resolve();
504
+ tx.onerror = () => reject(idbError(tx, `FILE_DATA clear failed for ${name}`));
505
+ tx.onabort = () => reject(idbError(tx, `FILE_DATA clear aborted for ${name}`));
506
+ tx.objectStore(IDB_STORE_NAME).clear();
507
+ });
508
+ } finally {
509
+ db.close();
510
+ }
511
+ }
512
+ async function cloneFileData(sourceName, destName) {
513
+ const source = await openIdb(sourceName, 21, createFileDataStore);
514
+ try {
515
+ const dest = await openIdb(destName, 21, createFileDataStore);
516
+ try {
517
+ const readStore = source.transaction(IDB_STORE_NAME, "readonly").objectStore(IDB_STORE_NAME);
518
+ const entries = await new Promise((resolve, reject) => {
519
+ const out = [];
520
+ const req = readStore.openCursor();
521
+ req.onerror = () => reject(idbError(req, `FILE_DATA read cursor failed for ${sourceName}`));
522
+ req.onsuccess = () => {
523
+ const cursor = req.result;
524
+ if (!cursor) return resolve(out);
525
+ out.push({
526
+ key: cursor.key,
527
+ value: cursor.value
528
+ });
529
+ cursor.continue();
530
+ };
531
+ });
532
+ await new Promise((resolve, reject) => {
533
+ const writeTx = dest.transaction(IDB_STORE_NAME, "readwrite");
534
+ writeTx.oncomplete = () => resolve();
535
+ writeTx.onerror = () => reject(idbError(writeTx, `FILE_DATA write failed for ${destName}`));
536
+ writeTx.onabort = () => reject(idbError(writeTx, `FILE_DATA write aborted for ${destName}`));
537
+ const writeStore = writeTx.objectStore(IDB_STORE_NAME);
538
+ writeStore.clear();
539
+ for (const { key, value } of entries) writeStore.put(value, key);
540
+ });
541
+ } finally {
542
+ dest.close();
543
+ }
544
+ } finally {
545
+ source.close();
546
+ }
547
+ }
548
+ function readBackupIndex() {
549
+ try {
550
+ const raw = localStorage.getItem(BACKUP_INDEX_KEY);
551
+ if (!raw) return [];
552
+ const parsed = JSON.parse(raw);
553
+ return Array.isArray(parsed) ? parsed : [];
554
+ } catch {
555
+ return [];
556
+ }
557
+ }
558
+ function writeBackupIndex(records) {
559
+ try {
560
+ localStorage.setItem(BACKUP_INDEX_KEY, JSON.stringify(records));
561
+ } catch {}
562
+ }
563
+ function registerBackup(rec) {
564
+ writeBackupIndex([...readBackupIndex(), rec]);
565
+ }
566
+ function forgetBackup(name) {
567
+ writeBackupIndex(readBackupIndex().filter((r) => r.name !== name));
568
+ }
569
+ async function janitor() {
570
+ const cutoff = Date.now() - BACKUP_RETENTION_MS;
571
+ const keep = [];
572
+ for (const rec of readBackupIndex()) {
573
+ if (rec.createdAt >= cutoff) {
574
+ keep.push(rec);
575
+ continue;
576
+ }
577
+ try {
578
+ await deleteIdb(rec.name);
579
+ } catch (err) {
580
+ console.warn(`Failed to delete expired pglite backup ${rec.name}`, err);
581
+ keep.push(rec);
582
+ }
583
+ }
584
+ writeBackupIndex(keep);
585
+ }
586
+ function publishPhase(idbName, phase) {
587
+ setMigrationStatus({
588
+ idbName,
589
+ phase
590
+ });
591
+ }
592
+ async function migrateIdbIfNeeded(idbName) {
593
+ const major = await readPgVersionFile(idbName);
594
+ if (major === null || major === 17) return;
595
+ const loader = LEGACY_DUMPERS[major];
596
+ if (!loader) throw new Error(`Unsupported legacy PGlite data dir: PG_VERSION=${major} for ${idbName}`);
597
+ const backupName = `${BACKUP_PREFIX}${idbName}::${(/* @__PURE__ */ new Date()).toISOString()}`;
598
+ const backupRec = {
599
+ name: backupName,
600
+ idbName,
601
+ createdAt: Date.now()
602
+ };
603
+ publishPhase(idbName, "clone");
604
+ await cloneFileData(idbName, backupName);
605
+ registerBackup(backupRec);
606
+ let sql;
607
+ try {
608
+ publishPhase(idbName, "dump");
609
+ sql = await (await loader())(idbName);
610
+ } catch (err) {
611
+ await deleteIdb(backupName).catch(() => {});
612
+ forgetBackup(backupName);
613
+ throw err;
614
+ }
615
+ try {
616
+ await clearFileData(idbName);
617
+ publishPhase(idbName, "restore");
618
+ const pg = new PGlite(`idb://${idbName.replace(/^\/pglite\//, "")}`, { relaxedDurability: false });
619
+ try {
620
+ await pg.waitReady;
621
+ console.info(`[pglite-migration] Dump preamble (first 500 chars):\n${sql.slice(0, 500)}`);
622
+ try {
623
+ await pg.exec("SET standard_conforming_strings = off;");
624
+ } catch (gucErr) {
625
+ console.warn("[pglite-migration] Could not force standard_conforming_strings=off", gucErr);
626
+ }
627
+ try {
628
+ await pg.exec(sql);
629
+ } catch (execErr) {
630
+ logRestoreFailure(idbName, sql, execErr);
631
+ throw execErr;
632
+ }
633
+ } finally {
634
+ await pg.close();
635
+ }
636
+ } catch (err) {
637
+ await rollbackFromBackup(idbName, backupName, err);
638
+ throw err;
639
+ }
640
+ }
641
+ function logRestoreFailure(idbName, sql, err) {
642
+ const errObj = err;
643
+ const position = typeof errObj.position === "string" ? parseInt(errObj.position, 10) : typeof errObj.position === "number" ? errObj.position : NaN;
644
+ console.error(`[pglite-migration] Restore failed for ${idbName}`, {
645
+ message: errObj.message,
646
+ code: errObj.code,
647
+ severity: errObj.severity,
648
+ detail: errObj.detail,
649
+ where: errObj.where,
650
+ position: errObj.position,
651
+ sqlLength: sql.length
652
+ });
653
+ if (Number.isFinite(position) && position > 0) {
654
+ const zeroBased = position - 1;
655
+ const start = Math.max(0, zeroBased - 200);
656
+ const end = Math.min(sql.length, zeroBased + 200);
657
+ const before = sql.slice(start, zeroBased);
658
+ const at = sql.slice(zeroBased, zeroBased + 1);
659
+ const after = sql.slice(zeroBased + 1, end);
660
+ console.error(`[pglite-migration] SQL context around position ${position}:\n${before}»${at}«${after}`);
661
+ const lineStart = sql.lastIndexOf("\n", zeroBased) + 1;
662
+ const lineEnd = sql.indexOf("\n", zeroBased);
663
+ const line = sql.slice(lineStart, lineEnd === -1 ? sql.length : lineEnd);
664
+ console.error(`[pglite-migration] Failing line (truncated to 500 chars):\n${line.slice(0, 500)}`);
665
+ } else console.error(`[pglite-migration] No position info. First 2000 chars of dump:\n${sql.slice(0, 2e3)}`);
666
+ }
667
+ async function rollbackFromBackup(idbName, backupName, originalError) {
668
+ try {
669
+ await clearFileData(idbName).catch(() => {});
670
+ await cloneFileData(backupName, idbName);
671
+ } catch (rollbackErr) {
672
+ console.error(`PGlite migration failed AND rollback failed for ${idbName}. Primary error:`, originalError, "Rollback error:", rollbackErr);
673
+ return;
674
+ }
675
+ await deleteIdb(backupName).catch(() => {});
676
+ forgetBackup(backupName);
677
+ }
678
+ async function migrateAllLocked() {
679
+ for (const idbName of PRIMARY_IDB_NAMES) await migrateIdbIfNeeded(idbName);
680
+ setMigrationStatus(null);
681
+ }
682
+ async function migrateAllIfNeeded() {
683
+ janitor().catch((err) => console.warn("PGlite backup janitor failed", err));
684
+ if (!(typeof navigator !== "undefined" && "locks" in navigator && typeof navigator.locks.request === "function")) {
685
+ await migrateAllLocked();
686
+ return;
687
+ }
688
+ await navigator.locks.request("ph-pglite-migration", { mode: "exclusive" }, async () => {
689
+ await migrateAllLocked();
690
+ });
691
+ }
692
+ //#endregion
693
+ //#region src/components/app-skeleton.tsx
694
+ const LOADER_DELAY = 250;
695
+ const PHASE_LABEL = {
696
+ clone: "Backing up local database…",
697
+ dump: "Exporting data from previous version…",
698
+ restore: "Restoring data into the new database…"
699
+ };
700
+ const MigrationOverlay = () => {
701
+ const status = useSyncExternalStore(subscribeMigrationStatus, getMigrationStatus, () => null);
702
+ if (!status) return null;
703
+ return /* @__PURE__ */ jsx("div", {
704
+ className: "absolute inset-0 z-20 flex items-center justify-center",
705
+ children: /* @__PURE__ */ jsxs("div", {
706
+ className: "rounded-lg bg-white/90 px-6 py-4 text-sm text-gray-900 shadow-lg",
707
+ children: [/* @__PURE__ */ jsx("div", {
708
+ className: "font-medium",
709
+ children: "Upgrading local database…"
710
+ }), /* @__PURE__ */ jsx("div", {
711
+ className: "text-gray-600",
712
+ children: PHASE_LABEL[status.phase]
713
+ })]
714
+ })
715
+ });
716
+ };
717
+ const Loader = ({ delay = LOADER_DELAY }) => {
718
+ const isSSR = typeof window === "undefined";
719
+ const showInitialLoader = typeof document !== "undefined" && document.body.getAttribute("data-show-loader") === "true";
720
+ const [showLoading, setShowLoading] = useState(!delay || showInitialLoader);
721
+ useEffect(() => {
722
+ const id = setTimeout(() => {
723
+ setShowLoading(true);
724
+ }, delay);
725
+ return () => clearTimeout(id);
726
+ }, []);
727
+ return /* @__PURE__ */ jsxs("div", {
728
+ className: `skeleton-loader absolute inset-0 z-10 flex items-center justify-center ${showLoading ? "" : "hidden"}`,
729
+ children: [/* @__PURE__ */ jsx("div", {
730
+ className: "animate-pulse overflow-hidden rounded-full shadow-lg",
731
+ children: /* @__PURE__ */ jsx(AnimatedLoader, {})
732
+ }), isSSR ? /* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: { __html: `setTimeout(() => {
733
+ document.querySelector('.skeleton-loader')?.classList.remove('hidden');
734
+ document.body.setAttribute('data-show-loader', 'true');
735
+ }, ${delay})` } }) : null]
736
+ });
737
+ };
738
+ const AppSkeleton = (props) => {
739
+ const isSSR = typeof window === "undefined";
740
+ const isHomeScreen = !isSSR && window.location.pathname === getBasePath();
741
+ return /* @__PURE__ */ jsxs("div", {
742
+ className: "flex h-screen overflow-hidden",
743
+ children: [
744
+ /* @__PURE__ */ jsx(ConnectSidebar, {
745
+ className: "animate-pulse",
746
+ onLogin: void 0,
747
+ onDisconnect: void 0,
748
+ onClickSettings: void 0,
749
+ address: void 0
750
+ }),
751
+ /* @__PURE__ */ jsx(HomeScreen, {
752
+ containerClassName: isSSR || !isHomeScreen ? "hidden home-screen" : void 0,
753
+ children: props.children ?? null
754
+ }),
755
+ isSSR ? /* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: { __html: `
756
+ const baseEl = document.querySelector('base');
757
+ const href = baseEl?.getAttribute('href');
758
+ const basePath = href || '/';
759
+ if (window.location.pathname === basePath) {
760
+ document.querySelector('.home-screen')?.classList.remove('hidden')
761
+ }` } }) : null,
762
+ !props.children ? /* @__PURE__ */ jsx(Loader, {}) : null,
763
+ /* @__PURE__ */ jsx(MigrationOverlay, {})
764
+ ]
765
+ });
766
+ };
767
+ //#endregion
768
+ //#region src/components/migration-banner.tsx
769
+ let dismissed = false;
770
+ const listeners = /* @__PURE__ */ new Set();
771
+ function notify() {
772
+ for (const l of listeners) l();
773
+ }
774
+ function dismiss() {
775
+ dismissed = true;
776
+ notify();
777
+ }
778
+ function subscribeDismissed(cb) {
779
+ listeners.add(cb);
780
+ return () => {
781
+ listeners.delete(cb);
782
+ };
783
+ }
784
+ function getDismissed() {
785
+ return dismissed;
786
+ }
787
+ const MigrationBanner = () => {
788
+ const isDismissed = useSyncExternalStore(subscribeDismissed, getDismissed, () => false);
789
+ const major = useSyncExternalStore(subscribeReactorPgMajor, getCachedReactorPgMajor, () => void 0);
790
+ const [migrating, setMigrating] = useState(false);
791
+ const [error, setError] = useState(null);
792
+ if (major === void 0 || major === null || major === 17) return null;
793
+ if (isDismissed) return null;
794
+ const handleMigrate = () => {
795
+ setError(null);
796
+ setMigrating(true);
797
+ migrateAllIfNeeded().then(() => {
798
+ window.location.reload();
799
+ }).catch((err) => {
800
+ setError(err instanceof Error ? err.message : String(err));
801
+ setMigrating(false);
802
+ });
803
+ };
804
+ return /* @__PURE__ */ jsx("div", {
805
+ className: "absolute inset-x-0 top-0 z-30 flex justify-center p-3",
806
+ children: /* @__PURE__ */ jsxs("div", {
807
+ className: "flex max-w-3xl items-center gap-3 rounded-lg border border-yellow-500 bg-yellow-400 px-4 py-3 text-sm text-gray-900 shadow-lg",
808
+ children: [
809
+ /* @__PURE__ */ jsxs("div", {
810
+ className: "flex-1",
811
+ children: [
812
+ /* @__PURE__ */ jsxs("div", {
813
+ className: "font-semibold",
814
+ children: [
815
+ "Your local database uses Postgres ",
816
+ major,
817
+ "."
818
+ ]
819
+ }),
820
+ /* @__PURE__ */ jsxs("div", {
821
+ className: "text-gray-800",
822
+ children: [
823
+ "Migrate to Postgres ",
824
+ 17,
825
+ " to pick up the latest features. Your data will be backed up first."
826
+ ]
827
+ }),
828
+ error && /* @__PURE__ */ jsxs("div", {
829
+ className: "mt-2 font-medium text-red-900",
830
+ children: ["Migration failed: ", error]
831
+ })
832
+ ]
833
+ }),
834
+ /* @__PURE__ */ jsx("button", {
835
+ type: "button",
836
+ disabled: migrating,
837
+ onClick: handleMigrate,
838
+ className: "rounded bg-gray-900 px-3 py-1 text-sm font-medium text-white hover:bg-gray-800 disabled:opacity-50",
839
+ children: migrating ? "Migrating…" : "Migrate now"
840
+ }),
841
+ /* @__PURE__ */ jsx("button", {
842
+ type: "button",
843
+ disabled: migrating,
844
+ onClick: dismiss,
845
+ className: "rounded border border-gray-900 bg-transparent px-3 py-1 text-sm font-medium text-gray-900 hover:bg-gray-900/10 disabled:opacity-50",
846
+ children: "Dismiss"
847
+ })
848
+ ]
849
+ })
850
+ });
851
+ };
852
+ //#endregion
853
+ //#region src/components/modal/modals-container.tsx
854
+ const AddDriveModal$1 = lazy(() => import("./AddDriveModal-B9BPORvo.js").then((m) => ({ default: m.AddDriveModal })));
855
+ const ClearStorageModal = lazy(() => import("./ClearStorageModal-K1H6NgT6.js").then((m) => ({ default: m.ClearStorageModal })));
856
+ const CookiesPolicyModal = lazy(() => import("./CookiesPolicyModal-CnVx2R_8.js").then((m) => ({ default: m.CookiesPolicyModal })));
857
+ const CreateDocumentModal$1 = lazy(() => import("./CreateDocumentModal-TtG7E62x.js").then((m) => ({ default: m.CreateDocumentModal })));
858
+ const DebugSettingsModal = lazy(() => import("./DebugSettingsModal-Cm61I2LB.js").then((m) => ({ default: m.DebugSettingsModal })));
859
+ const DeleteDriveModal = lazy(() => import("./DeleteDriveModal-Cb43NeNu.js").then((m) => ({ default: m.DeleteDriveModal })));
860
+ const DeleteItemModal = lazy(() => import("./DeleteItemModal-Brq4QKdd.js").then((m) => ({ default: m.DeleteItemModal })));
861
+ const DisclaimerModal = lazy(() => import("./DisclaimerModal-Dk6PpkZU.js").then((m) => ({ default: m.DisclaimerModal })));
862
+ const DriveSettingsModal$1 = lazy(() => import("./DriveSettingsModal-Bnug5LXo.js").then((m) => ({ default: m.DriveSettingsModal })));
863
+ const DownloadDocumentWithErrorsModal = lazy(() => import("./DownloadDocumentWithErrorsModal-B8ZKi2Xy.js").then((m) => ({ default: m.DownloadDocumentWithErrorsModal })));
864
+ const SettingsModal$1 = lazy(() => import("./SettingsModal-DOEWGn1K.js").then((m) => ({ default: m.SettingsModal })));
865
+ const UpgradeDriveModal = lazy(() => import("./UpgradeDriveModal-CBLALaaQ.js").then((m) => ({ default: m.UpgradeDriveModal })));
866
+ const modalComponents = {
867
+ addDrive: AddDriveModal$1,
868
+ clearStorage: ClearStorageModal,
869
+ cookiesPolicy: CookiesPolicyModal,
870
+ createDocument: CreateDocumentModal$1,
871
+ debugSettings: DebugSettingsModal,
872
+ deleteDrive: DeleteDriveModal,
873
+ deleteItem: DeleteItemModal,
874
+ disclaimer: DisclaimerModal,
875
+ driveSettings: DriveSettingsModal$1,
876
+ downloadDocumentWithErrors: DownloadDocumentWithErrorsModal,
877
+ inspector: lazy(() => import("./InspectorModal-EDrjiXPs.js").then((m) => ({ default: m.InspectorModal }))),
878
+ settings: SettingsModal$1,
879
+ upgradeDrive: UpgradeDriveModal,
880
+ missingPackage: lazy(() => import("./MissingPackageModal-BfblPbd8.js").then((m) => ({ default: m.ConnectMissingPackageModal })))
881
+ };
882
+ const ModalsContainer = lazy(async () => {
883
+ return { default: () => {
884
+ const phModal = usePHModal();
885
+ if (!phModal?.type) return null;
886
+ const ModalComponent = modalComponents[phModal.type];
887
+ return ModalComponent ? /* @__PURE__ */ jsx(ErrorBoundary$1, {
888
+ variant: "silent",
889
+ loggerContext: ["Connect", "Modals"],
890
+ children: /* @__PURE__ */ jsx(Suspense, {
891
+ fallback: null,
892
+ children: /* @__PURE__ */ jsx(ModalComponent, {})
893
+ })
894
+ }) : null;
895
+ } };
896
+ });
897
+ //#endregion
898
+ //#region src/components/app-loader.tsx
899
+ const AppLoader = (props) => {
900
+ const Load = lazy(() => import("./load-BJYAMdHd.js").then((m) => m.loadComponent(props.localPackage)));
901
+ return /* @__PURE__ */ jsx(StrictMode, { children: /* @__PURE__ */ jsxs(ErrorBoundary$1, {
902
+ fallbackRender: (props) => /* @__PURE__ */ jsx(AppSkeleton, { children: /* @__PURE__ */ jsx(DetailedFallback, { ...props }) }),
903
+ resetKeys: [props.localPackage],
904
+ loggerContext: ["Connect"],
905
+ children: [
906
+ /* @__PURE__ */ jsx(Suspense, {
907
+ fallback: /* @__PURE__ */ jsx(AppSkeleton, {}),
908
+ name: "AppLoader",
909
+ children: /* @__PURE__ */ jsx(Load, {
910
+ ...props,
911
+ children: /* @__PURE__ */ jsx(App, {})
912
+ })
913
+ }),
914
+ /* @__PURE__ */ jsx(Suspense, {
915
+ name: "CookieBanner",
916
+ children: /* @__PURE__ */ jsx(CookieBanner$1, {})
917
+ }),
918
+ /* @__PURE__ */ jsx(Suspense, {
919
+ name: "ModalsContainer",
920
+ children: /* @__PURE__ */ jsx(ModalsContainer, {})
921
+ }),
922
+ /* @__PURE__ */ jsx(MigrationBanner, {})
923
+ ]
924
+ }) });
925
+ };
926
+ //#endregion
927
+ //#region src/context/sentry-provider.tsx
928
+ const SentryProvider = ({ children }) => {
929
+ useInitSentry();
930
+ return children;
931
+ };
932
+ //#endregion
933
+ //#region src/components/package-install-prompt.tsx
934
+ function PackageInstallPrompt() {
935
+ const pendingInstallations = usePendingInstallations();
936
+ const discoveryService = usePackageDiscoveryService();
937
+ if (!discoveryService || pendingInstallations.length === 0) return null;
938
+ return /* @__PURE__ */ jsx(PackageInstallModal, {
939
+ pendingInstallations: pendingInstallations.flatMap((p) => p.packageNames.map((packageName) => ({
940
+ documentType: p.documentType,
941
+ packageName
942
+ }))),
943
+ onInstall: (packageName) => discoveryService.approveInstallation(packageName),
944
+ onDismiss: (packageName) => discoveryService.dismissInstallation(packageName)
945
+ });
946
+ }
947
+ //#endregion
948
+ //#region src/components/app.tsx
949
+ const App = () => {
950
+ useEffect(() => {
951
+ const handlePreloadError = (event) => {
952
+ const payload = event.payload;
953
+ const failedUrl = (payload instanceof Error ? payload.message : String(payload ?? "")).match(/https?:\/\/[^\s"']+/)?.[0];
954
+ if (failedUrl && !failedUrl.startsWith(window.location.origin)) {
955
+ console.debug(`[Connect] Skipping reload — vite:preloadError for off-origin URL: ${failedUrl}`);
956
+ return;
957
+ }
958
+ console.log("Outdated chunks detected, reloading page...");
959
+ window.location.reload();
960
+ };
961
+ window.addEventListener("vite:preloadError", handlePreloadError);
962
+ return () => {
963
+ window.removeEventListener("vite:preloadError", handlePreloadError);
964
+ };
965
+ }, []);
966
+ useEffect(() => {
967
+ if (import.meta.env.MODE === "development") window.documentEditorDebugTools = new DocumentEditorDebugTools();
968
+ else serviceWorkerManager.registerServiceWorker(false);
969
+ }, []);
970
+ return /* @__PURE__ */ jsxs(SentryProvider, { children: [
971
+ /* @__PURE__ */ jsx(ToastContainer, { position: "bottom-right" }),
972
+ /* @__PURE__ */ jsx(Router, {}),
973
+ /* @__PURE__ */ jsx(PackageInstallPrompt, {}),
974
+ /* @__PURE__ */ jsx(Analytics, {})
975
+ ] });
976
+ };
977
+ //#endregion
978
+ //#region src/components/cookie-banner.tsx
979
+ const isCookieAccepted = (cookies, id) => {
980
+ return cookies.some((cookie) => cookie.id === id && cookie.value);
981
+ };
982
+ const CookieBanner$1 = () => {
983
+ const { t } = useTranslation(void 0, {
984
+ useSuspense: true,
985
+ i18n
986
+ });
987
+ const [showBanner, setShowBanner] = useCookieBanner();
988
+ const [, setAcceptedCookies] = useAcceptedCookies();
989
+ const cookiesInput = [{
990
+ id: "analytics-cookie",
991
+ label: t("cookieBanner.cookies.analytics"),
992
+ value: true
993
+ }];
994
+ const handleAccept = (cookies) => {
995
+ setShowBanner(false);
996
+ if (isCookieAccepted(cookies, "analytics-cookie")) setAcceptedCookies((acceptedCookies) => ({
997
+ ...acceptedCookies,
998
+ analytics: true
999
+ }));
1000
+ };
1001
+ const handleReject = () => {
1002
+ setShowBanner(false);
1003
+ setAcceptedCookies(() => ({
1004
+ analytics: false,
1005
+ functional: false,
1006
+ marketing: false
1007
+ }));
1008
+ };
1009
+ if (!showBanner) return null;
1010
+ return /* @__PURE__ */ jsxs("div", {
1011
+ className: "absolute inset-0 z-[10000] backdrop-blur-sm",
1012
+ children: [/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-black opacity-15" }), /* @__PURE__ */ jsx("div", {
1013
+ className: "absolute inset-x-0 bottom-0 flex justify-center bg-white px-10 pb-16 pt-10 shadow-lg",
1014
+ children: /* @__PURE__ */ jsx(CookieBanner, {
1015
+ className: "max-w-[1024px]",
1016
+ cookies: cookiesInput,
1017
+ onSubmit: handleAccept,
1018
+ onReject: handleReject,
1019
+ submitLabel: t("cookieBanner.accept"),
1020
+ rejectLabel: t("cookieBanner.reject"),
1021
+ children: /* @__PURE__ */ jsx("p", {
1022
+ className: "font-semibold text-gray-500",
1023
+ children: /* @__PURE__ */ jsx(Trans, {
1024
+ i18nKey: "cookieBanner.message",
1025
+ components: { a: /* @__PURE__ */ jsx("a", {
1026
+ onClick: () => showPHModal({ type: "cookiesPolicy" }),
1027
+ className: "cursor-pointer text-gray-900 hover:underline"
1028
+ }, "cookieBanner.message-link") }
1029
+ }, "cookieBanner.message")
1030
+ })
1031
+ })
1032
+ })]
1033
+ });
1034
+ };
1035
+ //#endregion
1036
+ //#region src/components/drive-icon.tsx
1037
+ function DriveIcon({ drive }) {
1038
+ const remotes = useSyncList();
1039
+ const isRemoteDrive = useMemo(() => {
1040
+ if (!drive) return false;
1041
+ return remotes.some((remote) => remote.collectionId === driveCollectionId("main", drive.header.id));
1042
+ }, [remotes, drive]);
1043
+ const driveIconSrc = drive?.state.global.icon;
1044
+ if (driveIconSrc) return /* @__PURE__ */ jsx("img", {
1045
+ src: driveIconSrc,
1046
+ alt: drive.header.name,
1047
+ height: 32,
1048
+ width: 32
1049
+ });
1050
+ if (!isRemoteDrive) return /* @__PURE__ */ jsx(Icon, {
1051
+ name: "Hdd",
1052
+ size: 32
1053
+ });
1054
+ return /* @__PURE__ */ jsx(Icon, {
1055
+ name: "Server",
1056
+ size: 32
1057
+ });
1058
+ }
1059
+ //#endregion
1060
+ //#region src/components/editors.tsx
1061
+ function EditorError({ message }) {
1062
+ return /* @__PURE__ */ jsx("div", {
1063
+ className: "flex size-full items-center justify-center",
1064
+ children: /* @__PURE__ */ jsx("h3", {
1065
+ className: "text-lg font-semibold",
1066
+ children: message
1067
+ })
1068
+ });
1069
+ }
1070
+ const DocumentEditor = (props) => {
1071
+ const { document: initialDocument } = props;
1072
+ const selectedTimelineItem = useSelectedTimelineItem();
1073
+ const revisionHistoryVisible = useRevisionHistoryVisible();
1074
+ const [document, dispatch] = useDocumentById(initialDocument.header.id);
1075
+ const documentId = document?.header.id ?? void 0;
1076
+ const documentName = document?.header.name ?? void 0;
1077
+ const documentType = document?.header.documentType ?? void 0;
1078
+ const preferredEditor = document?.header.meta?.preferredEditor ?? void 0;
1079
+ const { globalOperations, localOperations, isLoading: isLoadingOperations, refetch: refetchOperations } = useDocumentOperations(documentId);
1080
+ useEffect(() => {
1081
+ if (revisionHistoryVisible) refetchOperations();
1082
+ }, [revisionHistoryVisible, refetchOperations]);
1083
+ const globalRevisionNumber = document?.header.revision.global ?? 0;
1084
+ const localRevisionNumber = document?.header.revision.local ?? 0;
1085
+ const documentModelModule = useDocumentModelModuleById(documentType);
1086
+ const preferredEditorModule = useEditorModuleById(preferredEditor);
1087
+ const fallbackEditorModule = useFallbackEditorModule(documentType);
1088
+ const editorModule = preferredEditorModule ?? fallbackEditorModule;
1089
+ const isLoadingDocument = !document;
1090
+ const isLoadingEditor = editorModule && documentType && !editorModule.documentTypes.includes(documentType) && !editorModule.documentTypes.includes("*");
1091
+ const canUndo = globalRevisionNumber > 0 || localRevisionNumber > 0;
1092
+ const canRedo = !!document?.clipboard.length;
1093
+ const addUndoAction = () => dispatch(undo());
1094
+ const addRedoAction = () => dispatch(redo());
1095
+ useUndoRedoShortcuts({
1096
+ undo: addUndoAction,
1097
+ redo: addRedoAction,
1098
+ canUndo,
1099
+ canRedo
1100
+ });
1101
+ useEffect(() => {
1102
+ return () => {
1103
+ window.documentEditorDebugTools?.clear();
1104
+ };
1105
+ }, []);
1106
+ const [editorError, setEditorError] = useState(void 0);
1107
+ useEffect(() => {
1108
+ if (editorError && editorError.documentId !== documentId) setEditorError(void 0);
1109
+ }, [editorError, documentId]);
1110
+ const handleEditorError = (error, info) => {
1111
+ setEditorError({
1112
+ error,
1113
+ documentId,
1114
+ info
1115
+ });
1116
+ };
1117
+ if (isLoadingEditor) return /* @__PURE__ */ jsx(EditorLoader, { message: "Loading editor" });
1118
+ if (isLoadingDocument) return /* @__PURE__ */ jsx(EditorLoader, { message: "Loading document" });
1119
+ if (!documentModelModule) return /* @__PURE__ */ jsx(EditorError, { message: /* @__PURE__ */ jsxs("div", {
1120
+ className: "text-center leading-10",
1121
+ children: [/* @__PURE__ */ jsxs("p", { children: [
1122
+ "Unable to open the document because the document model \"",
1123
+ documentType,
1124
+ "\" is not supported."
1125
+ ] }), /* @__PURE__ */ jsxs("p", { children: [
1126
+ "Go to the",
1127
+ " ",
1128
+ /* @__PURE__ */ jsx("button", {
1129
+ type: "button",
1130
+ className: "cursor-pointer underline",
1131
+ onClick: () => {
1132
+ showPHModal({ type: "settings" });
1133
+ },
1134
+ children: "package manager"
1135
+ }),
1136
+ " ",
1137
+ "to install this document model"
1138
+ ] })]
1139
+ }) });
1140
+ if (!editorModule) return /* @__PURE__ */ jsx(EditorError, { message: /* @__PURE__ */ jsxs("div", {
1141
+ className: "text-center leading-10",
1142
+ children: [/* @__PURE__ */ jsx("p", { children: "Unable to open the document because no editor has been found" }), /* @__PURE__ */ jsxs("p", { children: [
1143
+ "Go to the",
1144
+ " ",
1145
+ /* @__PURE__ */ jsx("button", {
1146
+ type: "button",
1147
+ className: "cursor-pointer underline",
1148
+ onClick: () => {
1149
+ showPHModal({ type: "settings" });
1150
+ },
1151
+ children: "package manager"
1152
+ }),
1153
+ " ",
1154
+ "an editor for the \"$",
1155
+ documentType,
1156
+ "\" document type"
1157
+ ] })]
1158
+ }) });
1159
+ const EditorComponent = editorModule.Component;
1160
+ return /* @__PURE__ */ jsx("div", {
1161
+ className: "relative h-full",
1162
+ id: "document-editor-context",
1163
+ "data-editor": editorModule.config.id,
1164
+ "data-document-type": documentType,
1165
+ children: revisionHistoryVisible ? isLoadingOperations ? /* @__PURE__ */ jsx(EditorLoader, { message: "Loading operations" }) : /* @__PURE__ */ jsx(RevisionHistory, {
1166
+ documentTitle: documentName ?? "",
1167
+ documentId: documentId ?? "",
1168
+ globalOperations,
1169
+ localOperations,
1170
+ onClose: () => setRevisionHistoryVisible(false),
1171
+ documentState: document.state,
1172
+ onCopyState: () => {
1173
+ toast("Copied document state to clipboard", { type: "success" });
1174
+ },
1175
+ onCopyDocId: () => {
1176
+ toast("Copied document ID to clipboard", { type: "success" });
1177
+ }
1178
+ }, documentId) : /* @__PURE__ */ jsx(Suspense, {
1179
+ fallback: /* @__PURE__ */ jsx(EditorLoader, { message: "Loading editor" }),
1180
+ name: "EditorLoader",
1181
+ children: /* @__PURE__ */ jsx(ErrorBoundary$1, {
1182
+ fallbackRender: CenteredErrorMessage,
1183
+ resetKeys: [documentId],
1184
+ onError: handleEditorError,
1185
+ loggerContext: ["Connect", "DocumentEditor"],
1186
+ children: !editorError?.error && /* @__PURE__ */ jsx(EditorComponent, {
1187
+ context: {
1188
+ readMode: !!selectedTimelineItem,
1189
+ selectedTimelineRevision: getRevisionFromDate(selectedTimelineItem?.startDate, selectedTimelineItem?.endDate, globalOperations)
1190
+ },
1191
+ documentId: document.header.id
1192
+ }, documentId)
1193
+ })
1194
+ })
1195
+ });
1196
+ };
1197
+ //#endregion
1198
+ //#region src/components/root.tsx
1199
+ function Root() {
1200
+ return /* @__PURE__ */ jsx("div", {
1201
+ className: "h-screen",
1202
+ children: /* @__PURE__ */ jsx("div", {
1203
+ className: `flex h-screen items-stretch overflow-auto`,
1204
+ role: "presentation",
1205
+ tabIndex: 0,
1206
+ children: /* @__PURE__ */ jsxs(Suspense, {
1207
+ name: "Root",
1208
+ children: [/* @__PURE__ */ jsx(Sidebar, {}), /* @__PURE__ */ jsx("div", {
1209
+ className: "relative flex-1 overflow-auto",
1210
+ children: /* @__PURE__ */ jsx(Outlet, {})
1211
+ })]
1212
+ })
1213
+ })
1214
+ });
1215
+ }
1216
+ //#endregion
1217
+ //#region src/pages/content.tsx
1218
+ function Content() {
1219
+ const [selectedDrive] = useSelectedDriveSafe();
1220
+ const selectedFolder = useSelectedFolder();
1221
+ const selectedDocumentId = useSelectedDocumentId();
1222
+ useEffect(() => {
1223
+ if (!selectedDocumentId) setPHDocumentEditorConfig(defaultPHDocumentEditorConfig);
1224
+ }, [selectedDocumentId]);
1225
+ useEffect(() => {
1226
+ if (!selectedDrive) setPHAppConfig(defaultPHAppConfig);
1227
+ }, [selectedDrive]);
1228
+ return /* @__PURE__ */ jsx(ContentContainer, { children: !selectedDocumentId && !selectedDrive && !selectedFolder ? /* @__PURE__ */ jsx(HomeScreenContainer, {}) : /* @__PURE__ */ jsx(AppContainer, {}) });
1229
+ }
1230
+ function ContentContainer({ children }) {
1231
+ return /* @__PURE__ */ jsx("div", {
1232
+ className: "flex h-full flex-col overflow-auto",
1233
+ id: "content-view",
1234
+ children
1235
+ });
1236
+ }
1237
+ function DriveItem({ drive }) {
1238
+ const description = useAppModuleById(drive.header.meta?.preferredEditor)?.config.name || "Drive Explorer App";
1239
+ return /* @__PURE__ */ jsx(HomeScreenItem, {
1240
+ title: drive.state.global.name || drive.header.name,
1241
+ description,
1242
+ icon: /* @__PURE__ */ jsx(DriveIcon, { drive }),
1243
+ onClick: () => setSelectedDrive(drive)
1244
+ }, drive.header.id);
1245
+ }
1246
+ function HomeScreenContainer() {
1247
+ const drives = useDrives();
1248
+ const config = connectConfig;
1249
+ return /* @__PURE__ */ jsxs(HomeScreen, { children: [drives?.map((drive) => {
1250
+ return /* @__PURE__ */ jsx(DriveItem, { drive }, drive.header.id);
1251
+ }), config.drives.addDriveEnabled && /* @__PURE__ */ jsx(HomeScreenAddDriveItem, {})] });
1252
+ }
1253
+ //#endregion
1254
+ //#region src/pages/demo/atlas-import.tsx
1255
+ const REACTOR_URL = "https://apps.powerhouse.io/sky-atlas/staging/switchboard";
1256
+ const MIN_LOADING_TIME = 2e3;
1257
+ function useReactorUrl() {
1258
+ const { search } = useLocation();
1259
+ return useMemo(() => {
1260
+ const url = new URLSearchParams(search).get("reactorUrl") ?? REACTOR_URL;
1261
+ return url.endsWith("/") ? url : `${url}/`;
1262
+ }, [search]);
1263
+ }
1264
+ async function forkAtlas(docId, reactorUrl) {
1265
+ const document = gql`
1266
+ mutation ForkAtlas($docId: PHID) {
1267
+ ForkAtlas(docId: $docId)
1268
+ }
1269
+ `;
1270
+ return await request(`${reactorUrl}graphql`, document, { docId });
1271
+ }
1272
+ function AtlasImport() {
1273
+ const status = useRef("initial");
1274
+ const reactor = useReactorClient();
1275
+ const { documentId } = useParams();
1276
+ const reactorUrl = useReactorUrl();
1277
+ const navigate = useNavigate();
1278
+ const [driveId, setDriveId] = useState(void 0);
1279
+ const [error, setError] = useState(void 0);
1280
+ const [loading, setLoading] = useState(true);
1281
+ const hasError = status.current === "error";
1282
+ useEffect(() => {
1283
+ if (error) {
1284
+ console.error("Error forking Atlas:", error);
1285
+ toast("Error forking Atlas", { type: "error" });
1286
+ }
1287
+ }, [error]);
1288
+ async function forkAtlasDocument(documentId) {
1289
+ const driveId = (await forkAtlas(documentId, reactorUrl)).ForkAtlas;
1290
+ status.current = "forked";
1291
+ setDriveId(driveId);
1292
+ }
1293
+ const redirectToDrive = useCallback(() => {
1294
+ if (driveId && !loading) navigate(`/d/${driveId}`, { replace: true });
1295
+ }, [
1296
+ driveId,
1297
+ navigate,
1298
+ loading
1299
+ ]);
1300
+ const addForkDrive = useCallback(async (driveId) => {
1301
+ console.log("Adding remote drive:", driveId);
1302
+ const driveUrl = `${reactorUrl}d/${driveId}`;
1303
+ try {
1304
+ const addedDrive = await addRemoteDrive(driveUrl);
1305
+ status.current = "done";
1306
+ console.log("Added remote drive:", addedDrive);
1307
+ setTimeout(() => {
1308
+ setLoading(false);
1309
+ }, MIN_LOADING_TIME);
1310
+ } catch (error) {
1311
+ status.current = "error";
1312
+ setLoading(false);
1313
+ setError(error);
1314
+ }
1315
+ }, [
1316
+ addRemoteDrive,
1317
+ navigate,
1318
+ reactorUrl
1319
+ ]);
1320
+ useEffect(() => {
1321
+ if (!documentId || status.current !== "initial") return;
1322
+ status.current = "forking";
1323
+ forkAtlasDocument(documentId).catch((error) => {
1324
+ status.current = "error";
1325
+ setError(error);
1326
+ });
1327
+ }, [documentId, status]);
1328
+ useEffect(() => {
1329
+ if (!driveId || !reactor || status.current !== "forked") return;
1330
+ status.current = "addingDrive";
1331
+ new Promise((resolve) => {
1332
+ setTimeout(resolve, 500);
1333
+ }).then(() => addForkDrive(driveId)).catch((error) => {
1334
+ status.current = "error";
1335
+ setError(error);
1336
+ });
1337
+ }, [
1338
+ driveId,
1339
+ reactor,
1340
+ status
1341
+ ]);
1342
+ return /* @__PURE__ */ jsx("div", {
1343
+ className: "flex size-full justify-center gap-x-4 bg-gray-50",
1344
+ children: /* @__PURE__ */ jsxs("div", {
1345
+ className: "w-full max-w-[850px] rounded-2xl bg-white p-6 drop-shadow-sm",
1346
+ children: [/* @__PURE__ */ jsx("h1", {
1347
+ className: "text-lg font-medium text-gray-900",
1348
+ children: "Welcome to the Atlas Explorer"
1349
+ }), /* @__PURE__ */ jsx("div", {
1350
+ className: "mt-4 rounded-xl border border-gray-200 bg-gray-50 p-6",
1351
+ children: /* @__PURE__ */ jsxs("div", {
1352
+ className: "flex min-h-80 flex-col items-center justify-center rounded-2xl bg-slate-50",
1353
+ children: [
1354
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("svg", {
1355
+ width: "28",
1356
+ height: "32",
1357
+ viewBox: "0 0 28 32",
1358
+ fill: "none",
1359
+ xmlns: "http://www.w3.org/2000/svg",
1360
+ children: [
1361
+ /* @__PURE__ */ jsx("path", {
1362
+ fillRule: "evenodd",
1363
+ clipRule: "evenodd",
1364
+ d: "M0.05092 23.7286L0.000163347 23.9993L0 23.9995L0.207853 24.067L27.6823 24.067L27.9995 23.9995L27.9161 23.6913L14.2182 0.209032L13.9998 0L13.749 0.246353L0.05092 23.7286ZM20.9994 11.9999L7.0003 11.9999L13.9998 23.999L20.9994 11.9999Z",
1365
+ fill: "url(#paint0_radial_319_20865)"
1366
+ }),
1367
+ /* @__PURE__ */ jsx("path", {
1368
+ d: "M14 0L0 23.9998V7.99993L14 0Z",
1369
+ fill: "url(#paint1_linear_319_20865)"
1370
+ }),
1371
+ /* @__PURE__ */ jsx("path", {
1372
+ d: "M28 24L7.82013e-05 24L14 31.9999L28 24Z",
1373
+ fill: "url(#paint2_linear_319_20865)"
1374
+ }),
1375
+ /* @__PURE__ */ jsx("path", {
1376
+ d: "M14 0L28 23.9998V7.99993L14 0Z",
1377
+ fill: "url(#paint3_linear_319_20865)"
1378
+ }),
1379
+ /* @__PURE__ */ jsxs("defs", { children: [
1380
+ /* @__PURE__ */ jsxs("radialGradient", {
1381
+ id: "paint0_radial_319_20865",
1382
+ cx: "0",
1383
+ cy: "0",
1384
+ r: "1",
1385
+ gradientUnits: "userSpaceOnUse",
1386
+ gradientTransform: "translate(13.9994 16.0344) rotate(-89.9988) scale(16.0344 16.201)",
1387
+ children: [/* @__PURE__ */ jsx("stop", {
1388
+ offset: "0.181008",
1389
+ stopColor: "#FFCD6B"
1390
+ }), /* @__PURE__ */ jsx("stop", {
1391
+ offset: "1",
1392
+ stopColor: "#EB5EDF"
1393
+ })]
1394
+ }),
1395
+ /* @__PURE__ */ jsxs("linearGradient", {
1396
+ id: "paint1_linear_319_20865",
1397
+ x1: "-0.031454",
1398
+ y1: "24.041",
1399
+ x2: "13.801",
1400
+ y2: "-0.142908",
1401
+ gradientUnits: "userSpaceOnUse",
1402
+ children: [/* @__PURE__ */ jsx("stop", { stopColor: "#4331E9" }), /* @__PURE__ */ jsx("stop", {
1403
+ offset: "1",
1404
+ stopColor: "#A273FF"
1405
+ })]
1406
+ }),
1407
+ /* @__PURE__ */ jsxs("linearGradient", {
1408
+ id: "paint2_linear_319_20865",
1409
+ x1: "-0.0310093",
1410
+ y1: "24",
1411
+ x2: "28.0444",
1412
+ y2: "24",
1413
+ gradientUnits: "userSpaceOnUse",
1414
+ children: [/* @__PURE__ */ jsx("stop", { stopColor: "#A273FF" }), /* @__PURE__ */ jsx("stop", {
1415
+ offset: "1",
1416
+ stopColor: "#4331E9"
1417
+ })]
1418
+ }),
1419
+ /* @__PURE__ */ jsxs("linearGradient", {
1420
+ id: "paint3_linear_319_20865",
1421
+ x1: "28.0315",
1422
+ y1: "24.041",
1423
+ x2: "14.199",
1424
+ y2: "-0.142908",
1425
+ gradientUnits: "userSpaceOnUse",
1426
+ children: [/* @__PURE__ */ jsx("stop", { stopColor: "#A273FF" }), /* @__PURE__ */ jsx("stop", {
1427
+ offset: "1",
1428
+ stopColor: "#4331E9"
1429
+ })]
1430
+ })
1431
+ ] })
1432
+ ]
1433
+ }) }),
1434
+ hasError ? /* @__PURE__ */ jsx("div", {
1435
+ className: "mt-3 text-sm text-gray-800",
1436
+ children: "Error forking Atlas scope. Please try again."
1437
+ }) : /* @__PURE__ */ jsx("div", {
1438
+ className: "mt-3 text-sm text-gray-500",
1439
+ children: "Forking Atlas scope..."
1440
+ }),
1441
+ /* @__PURE__ */ jsx(PowerhouseButton, {
1442
+ onClick: hasError ? window.location.reload.bind(window.location) : redirectToDrive,
1443
+ size: "small",
1444
+ color: "light",
1445
+ className: "mt-4 h-9 border border-gray-200 bg-white px-3 text-gray-600",
1446
+ children: hasError ? "Retry" : loading ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("svg", {
1447
+ className: "animate-spin",
1448
+ width: "16",
1449
+ height: "16",
1450
+ viewBox: "0 0 16 16",
1451
+ fill: "none",
1452
+ xmlns: "http://www.w3.org/2000/svg",
1453
+ children: [/* @__PURE__ */ jsx("path", {
1454
+ d: "M15.6867 8.03333C15.4933 7.83999 15.1733 7.83999 14.98 8.03333L14.6733 8.34001V8C14.6733 4.32 11.68 1.32666 7.99999 1.32666C5.96666 1.32666 4.06666 2.23999 2.79333 3.82666C2.61999 4.03999 2.65332 4.35999 2.87332 4.52665C3.08666 4.69999 3.40666 4.66666 3.57332 4.44666C4.65999 3.09332 6.27332 2.31999 7.99999 2.31999C11.1267 2.31999 13.6733 4.86666 13.6733 7.99333V8.32666L13.3667 8.02002C13.1733 7.82669 12.8533 7.82669 12.66 8.02002C12.4667 8.21335 12.4667 8.53335 12.66 8.72668L13.82 9.88668C13.8667 9.93334 13.92 9.96666 13.98 9.99333C14.04 10.02 14.1067 10.0333 14.1733 10.0333C14.24 10.0333 14.3 10.02 14.3667 9.99333C14.4267 9.96666 14.48 9.93334 14.5267 9.88668L15.6867 8.72668C15.88 8.54668 15.88 8.22666 15.6867 8.03333Z",
1455
+ fill: "#6C7275"
1456
+ }), /* @__PURE__ */ jsx("path", {
1457
+ d: "M13.1267 11.4666C12.9133 11.2933 12.5933 11.3266 12.4267 11.5466C11.34 12.9 9.72665 13.6733 7.99998 13.6733C4.87332 13.6733 2.32665 11.1266 2.32665 7.99996V7.66663L2.63332 7.97331C2.73332 8.07331 2.85999 8.11996 2.98665 8.11996C3.11332 8.11996 3.23999 8.07331 3.33999 7.97331C3.53332 7.77998 3.53332 7.45998 3.33999 7.26664L2.17998 6.10661C2.13332 6.05994 2.07998 6.02663 2.01998 5.99996C1.89998 5.94663 1.75998 5.94663 1.63998 5.99996C1.57998 6.02663 1.52665 6.05994 1.47999 6.10661L0.319988 7.26664C0.126654 7.45998 0.126654 7.77998 0.319988 7.97331C0.513321 8.16664 0.833319 8.16664 1.02665 7.97331L1.33332 7.66663V7.99996C1.33332 11.68 4.32665 14.6733 8.00665 14.6733C10.04 14.6733 11.94 13.76 13.2133 12.1733C13.38 11.96 13.3467 11.64 13.1267 11.4666Z",
1458
+ fill: "#6C7275"
1459
+ })]
1460
+ }), "Loading"] }) : "Continue"
1461
+ })
1462
+ ]
1463
+ })
1464
+ })]
1465
+ })
1466
+ });
1467
+ }
1468
+ //#endregion
1469
+ //#region src/components/router.tsx
1470
+ function createRouter(routes) {
1471
+ const routerBasename = connectConfig.routerBasename;
1472
+ return createBrowserRouter(routes, {
1473
+ basename: routerBasename,
1474
+ future: {
1475
+ v7_fetcherPersist: true,
1476
+ v7_relativeSplatPath: true
1477
+ }
1478
+ });
1479
+ }
1480
+ function createRoutes() {
1481
+ return [{
1482
+ element: /* @__PURE__ */ jsx(Suspense, {
1483
+ name: "RouteRoot",
1484
+ children: /* @__PURE__ */ jsx(Root, {})
1485
+ }),
1486
+ children: [{
1487
+ index: true,
1488
+ path: "d?/:driveId?/*?",
1489
+ element: /* @__PURE__ */ jsx(Suspense, {
1490
+ name: "Drive",
1491
+ children: /* @__PURE__ */ jsx(Content, {})
1492
+ })
1493
+ }, {
1494
+ path: "import/:documentId",
1495
+ element: /* @__PURE__ */ jsx(Suspense, {
1496
+ name: "AtlasImport",
1497
+ children: /* @__PURE__ */ jsx(AtlasImport, {})
1498
+ })
1499
+ }]
1500
+ }];
1501
+ }
1502
+ const router = createRouter(createRoutes());
1503
+ const Router = () => {
1504
+ return /* @__PURE__ */ jsx(RouterProvider, { router });
1505
+ };
1506
+ //#endregion
1507
+ //#region src/components/sidebar.tsx
1508
+ function Sidebar() {
1509
+ const user = useUser();
1510
+ const drives = useDrives();
1511
+ const [selectedDrive] = useSelectedDriveSafe();
1512
+ const connectDebug = localStorage.getItem("CONNECT_DEBUG") === "true";
1513
+ const ensName = user?.ens?.name || user?.profile?.username || void 0;
1514
+ const avatarUrl = user?.ens?.avatarUrl || user?.profile?.userImage || void 0;
1515
+ const ensInfo = useEns(!avatarUrl ? user?.address : void 0);
1516
+ const onClickSettings = () => {
1517
+ showPHModal({ type: "settings" });
1518
+ };
1519
+ const onAddDriveClick = () => {
1520
+ showPHModal({ type: "addDrive" });
1521
+ };
1522
+ const etherscanUrl = user?.address ? `https://etherscan.io/address/${user.address}` : "";
1523
+ return /* @__PURE__ */ jsx(ConnectTooltipProvider, { children: /* @__PURE__ */ jsx(ConnectSidebar, {
1524
+ id: "sidebar",
1525
+ onClick: () => setSelectedDrive(void 0),
1526
+ onClickSettings,
1527
+ address: user?.address,
1528
+ onLogin: openRenown,
1529
+ onDisconnect: logout,
1530
+ ensName: ensName || ensInfo.data?.ens,
1531
+ avatarUrl: avatarUrl || ensInfo.data?.avatar_small || ensInfo.data?.avatar_url || void 0,
1532
+ etherscanUrl,
1533
+ showDebug: connectDebug,
1534
+ onDebugClick: () => showPHModal({ type: "debugSettings" }),
1535
+ children: /* @__PURE__ */ jsxs(ErrorBoundary$1, {
1536
+ variant: "text",
1537
+ fallbackMessage: "There was an error loading drives",
1538
+ loggerContext: ["Connect", "Sidebar"],
1539
+ children: [drives?.map((drive, index) => /* @__PURE__ */ jsx(SidebarItem, {
1540
+ title: drive.header.name,
1541
+ onClick: () => setSelectedDrive(drive),
1542
+ active: selectedDrive?.header.id === drive.header.id,
1543
+ icon: /* @__PURE__ */ jsx(DriveIcon, { drive })
1544
+ }, index)), connectConfig.drives.addDriveEnabled && /* @__PURE__ */ jsx(SidebarAddDriveItem, { onClick: onAddDriveClick })]
1545
+ })
1546
+ }) });
1547
+ }
1548
+ //#endregion
1549
+ export { AppLoader as t };
1550
+
1551
+ //# sourceMappingURL=sidebar-DHvt_u7k.js.map