@powerhousedao/connect 6.0.0-dev.11 → 6.0.0-dev.111

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 (557) hide show
  1. package/.env +1 -1
  2. package/dist/AddDriveModal-A2SuEFot.js +88 -0
  3. package/dist/AddDriveModal-A2SuEFot.js.map +1 -0
  4. package/dist/ClearStorageModal-OOREyYYr.js +44 -0
  5. package/dist/ClearStorageModal-OOREyYYr.js.map +1 -0
  6. package/dist/CookiesPolicyModal-Gae1QuhA.js +30 -0
  7. package/dist/CookiesPolicyModal-Gae1QuhA.js.map +1 -0
  8. package/dist/CreateDocumentModal-5i6rmv3C.js +28 -0
  9. package/dist/CreateDocumentModal-5i6rmv3C.js.map +1 -0
  10. package/dist/DebugSettingsModal-Ko7M_1hz.js +139 -0
  11. package/dist/DebugSettingsModal-Ko7M_1hz.js.map +1 -0
  12. package/dist/DeleteDriveModal-BbAx_yXt.js +40 -0
  13. package/dist/DeleteDriveModal-BbAx_yXt.js.map +1 -0
  14. package/dist/DeleteItemModal-CkWegLlh.js +39 -0
  15. package/dist/DeleteItemModal-CkWegLlh.js.map +1 -0
  16. package/dist/DisclaimerModal-CCnvwoB5.js +21 -0
  17. package/dist/DisclaimerModal-CCnvwoB5.js.map +1 -0
  18. package/dist/DriveSettingsModal-DxMjOsLg.js +45 -0
  19. package/dist/DriveSettingsModal-DxMjOsLg.js.map +1 -0
  20. package/dist/ExportDocumentWithErrorsModal-hgliF8Gy.js +41 -0
  21. package/dist/ExportDocumentWithErrorsModal-hgliF8Gy.js.map +1 -0
  22. package/dist/InspectorModal-C4rE0Y5E.js +302 -0
  23. package/dist/InspectorModal-C4rE0Y5E.js.map +1 -0
  24. package/dist/MissingPackageModal-BOeTH4V6.js +33 -0
  25. package/dist/MissingPackageModal-BOeTH4V6.js.map +1 -0
  26. package/dist/SettingsModal-DdtEAedE.js +153 -0
  27. package/dist/SettingsModal-DdtEAedE.js.map +1 -0
  28. package/dist/UpgradeDriveModal-DldcNCaT.js +31 -0
  29. package/dist/UpgradeDriveModal-DldcNCaT.js.map +1 -0
  30. package/dist/connect.config-CUbxYkCy.js +140 -0
  31. package/dist/connect.config-CUbxYkCy.js.map +1 -0
  32. package/dist/i18n-Ch408v5-.js +125 -0
  33. package/dist/i18n-Ch408v5-.js.map +1 -0
  34. package/dist/load-DPIewELL.js +105 -0
  35. package/dist/load-DPIewELL.js.map +1 -0
  36. package/dist/main.d.ts +1 -0
  37. package/dist/main.js +9 -0
  38. package/dist/main.js.map +1 -0
  39. package/dist/package-lIOHa9T4.js +109 -0
  40. package/dist/package-lIOHa9T4.js.map +1 -0
  41. package/dist/pglite.worker.d.ts +1 -0
  42. package/dist/pglite.worker.js +15 -0
  43. package/dist/pglite.worker.js.map +1 -0
  44. package/dist/reactor-DFtKxPCt.js +565 -0
  45. package/dist/reactor-DFtKxPCt.js.map +1 -0
  46. package/dist/registerServiceWorker-fSbJUcrq.js +76 -0
  47. package/dist/registerServiceWorker-fSbJUcrq.js.map +1 -0
  48. package/dist/sidebar-Cc4Jim9d.js +1147 -0
  49. package/dist/sidebar-Cc4Jim9d.js.map +1 -0
  50. package/dist/start-connect.d.ts +7 -0
  51. package/dist/start-connect.d.ts.map +1 -0
  52. package/dist/start-connect.js +14 -0
  53. package/dist/start-connect.js.map +1 -0
  54. package/{lib → dist}/style.css +1848 -157
  55. package/dist/toast-iD-70hL8.js +16 -0
  56. package/dist/toast-iD-70hL8.js.map +1 -0
  57. package/dist/useRegistryPackages-Ctlhv061.js +96 -0
  58. package/dist/useRegistryPackages-Ctlhv061.js.map +1 -0
  59. package/heroku/Dockerfile +1 -1
  60. package/package.json +53 -122
  61. package/dist/assets/AddDriveModal-Cx8kKrfd.js +0 -1
  62. package/dist/assets/ClearStorageModal-U9HAn4lm.js +0 -1
  63. package/dist/assets/CookiesPolicyModal-TEhiLQF9.js +0 -1
  64. package/dist/assets/CreateDocumentModal-DYjw2uiV.js +0 -1
  65. package/dist/assets/DebugSettingsModal-B0OphsXb.js +0 -1
  66. package/dist/assets/DeleteDriveModal-BEJXpOFw.js +0 -1
  67. package/dist/assets/DeleteItemModal-D_xQNRzq.js +0 -1
  68. package/dist/assets/DisclaimerModal-hrCnkAlX.js +0 -1
  69. package/dist/assets/DriveSettingsModal-DlxGl-cQ.js +0 -1
  70. package/dist/assets/ExportDocumentWithErrorsModal-P_2V_9mT.js +0 -1
  71. package/dist/assets/SettingsModal-dzH_pK38.js +0 -1
  72. package/dist/assets/UpgradeDriveModal-Bta7y_nY.js +0 -1
  73. package/dist/assets/_virtual_ph_external-packages-CM1tCR4L.js +0 -1
  74. package/dist/assets/config-CU-aFfVJ.js +0 -1
  75. package/dist/assets/connect-loader-CvOC68Ih.mp4 +0 -0
  76. package/dist/assets/design_system-9rWQbGuN.js +0 -45
  77. package/dist/assets/design_system_connect-BR-ThpYQ.js +0 -47
  78. package/dist/assets/design_system_ui-RgGJD9BZ.js +0 -1
  79. package/dist/assets/document_drive-Bubv8iix.js +0 -316
  80. package/dist/assets/document_engineering-Mb88NN0w.js +0 -1
  81. package/dist/assets/document_model-_oCbt5YE.js +0 -230
  82. package/dist/assets/document_model_editor-DaEr4Ucm.js +0 -25
  83. package/dist/assets/drive_explorer-BPrH18p-.js +0 -2
  84. package/dist/assets/graphql-AKTCpY7l.js +0 -75
  85. package/dist/assets/graphql-editor-BHuausIr.js +0 -73
  86. package/dist/assets/graphql_request-BJtmW2JS.js +0 -3
  87. package/dist/assets/hmr-LMNkvzP7.js +0 -1
  88. package/dist/assets/home-bg-BEhF9NuW.png +0 -0
  89. package/dist/assets/home-bg-BRYzhkhi.avif +0 -0
  90. package/dist/assets/hooks-BGCGoE7E.js +0 -12
  91. package/dist/assets/index-BGxv4MWc.js +0 -28
  92. package/dist/assets/index-Bj90ehs5.js +0 -18
  93. package/dist/assets/index-DYdiZMfn.css +0 -1
  94. package/dist/assets/json-editor-CEdj3pWE.js +0 -1
  95. package/dist/assets/nodefs-BzrX674N.js +0 -1
  96. package/dist/assets/opfs-ahp-CQqk2YpV.js +0 -3
  97. package/dist/assets/pg_dump-CW0pN9tG.wasm +0 -0
  98. package/dist/assets/postgres-CkP7QCDB.data +0 -0
  99. package/dist/assets/postgres-CyuUVpXN.wasm +0 -0
  100. package/dist/assets/powerhouse-rounded-CeKGGUG4.png +0 -0
  101. package/dist/assets/react/jsx-runtime-DldvXD6N.js +0 -1
  102. package/dist/assets/react-DQSxOgtG.js +0 -1
  103. package/dist/assets/react-dom/client-BVPiT_FE.js +0 -9
  104. package/dist/assets/react-dom-D6zQJsh6.js +0 -1
  105. package/dist/assets/reactor_browser-C_HPknB3.js +0 -129
  106. package/dist/assets/renown-short-hover-BiSLBV7L.png +0 -0
  107. package/dist/assets/rwa-report-Bb0W5-ac.png +0 -0
  108. package/dist/assets/sentry_browser-B4YoBIIG.js +0 -498
  109. package/dist/assets/sentry_react-cODD7zWc.js +0 -3
  110. package/dist/assets/state-schemas-CQgNbDZb.js +0 -2
  111. package/dist/assets/tailwind_merge-Dr4f9Rms.js +0 -1
  112. package/dist/assets/zod-9j67vCAu.js +0 -39
  113. package/dist/icon.ico +0 -0
  114. package/dist/index.html +0 -51
  115. package/dist/robots.txt +0 -3
  116. package/dist/settings.png +0 -0
  117. package/lib/cypress/e2e/navigation.cy.d.ts +0 -2
  118. package/lib/cypress/e2e/navigation.cy.d.ts.map +0 -1
  119. package/lib/cypress/e2e/navigation.cy.js +0 -221
  120. package/lib/cypress/e2e/navigation.cy.js.map +0 -1
  121. package/lib/cypress/e2e/utils/index.d.ts +0 -15
  122. package/lib/cypress/e2e/utils/index.d.ts.map +0 -1
  123. package/lib/cypress/e2e/utils/index.js +0 -121
  124. package/lib/cypress/e2e/utils/index.js.map +0 -1
  125. package/lib/cypress/support/commands.d.ts +0 -2
  126. package/lib/cypress/support/commands.d.ts.map +0 -1
  127. package/lib/cypress/support/commands.js +0 -29
  128. package/lib/cypress/support/commands.js.map +0 -1
  129. package/lib/cypress/support/e2e.d.ts +0 -2
  130. package/lib/cypress/support/e2e.d.ts.map +0 -1
  131. package/lib/cypress/support/e2e.js +0 -19
  132. package/lib/cypress/support/e2e.js.map +0 -1
  133. package/lib/cypress.config.d.ts +0 -3
  134. package/lib/cypress.config.d.ts.map +0 -1
  135. package/lib/cypress.config.js +0 -15
  136. package/lib/cypress.config.js.map +0 -1
  137. package/lib/package.copy.json +0 -177
  138. package/lib/scripts/render-skeleton.d.ts +0 -2
  139. package/lib/scripts/render-skeleton.d.ts.map +0 -1
  140. package/lib/scripts/render-skeleton.js +0 -11
  141. package/lib/scripts/render-skeleton.js.map +0 -1
  142. package/lib/src/components/analytics.d.ts +0 -8
  143. package/lib/src/components/analytics.d.ts.map +0 -1
  144. package/lib/src/components/analytics.js +0 -30
  145. package/lib/src/components/analytics.js.map +0 -1
  146. package/lib/src/components/app-loader.d.ts +0 -3
  147. package/lib/src/components/app-loader.d.ts.map +0 -1
  148. package/lib/src/components/app-loader.js +0 -20
  149. package/lib/src/components/app-loader.js.map +0 -1
  150. package/lib/src/components/app-skeleton.d.ts +0 -3
  151. package/lib/src/components/app-skeleton.d.ts.map +0 -1
  152. package/lib/src/components/app-skeleton.js +0 -38
  153. package/lib/src/components/app-skeleton.js.map +0 -1
  154. package/lib/src/components/app.d.ts +0 -2
  155. package/lib/src/components/app.d.ts.map +0 -1
  156. package/lib/src/components/app.js +0 -29
  157. package/lib/src/components/app.js.map +0 -1
  158. package/lib/src/components/button.d.ts +0 -3
  159. package/lib/src/components/button.d.ts.map +0 -1
  160. package/lib/src/components/button.js +0 -7
  161. package/lib/src/components/button.js.map +0 -1
  162. package/lib/src/components/cookie-banner.d.ts +0 -2
  163. package/lib/src/components/cookie-banner.d.ts.map +0 -1
  164. package/lib/src/components/cookie-banner.js +0 -48
  165. package/lib/src/components/cookie-banner.js.map +0 -1
  166. package/lib/src/components/document-editor-container.d.ts +0 -2
  167. package/lib/src/components/document-editor-container.d.ts.map +0 -1
  168. package/lib/src/components/document-editor-container.js +0 -65
  169. package/lib/src/components/document-editor-container.js.map +0 -1
  170. package/lib/src/components/dots-loader.d.ts +0 -2
  171. package/lib/src/components/dots-loader.d.ts.map +0 -1
  172. package/lib/src/components/dots-loader.js +0 -15
  173. package/lib/src/components/dots-loader.js.map +0 -1
  174. package/lib/src/components/drive-editor-container.d.ts +0 -2
  175. package/lib/src/components/drive-editor-container.d.ts.map +0 -1
  176. package/lib/src/components/drive-editor-container.js +0 -22
  177. package/lib/src/components/drive-editor-container.js.map +0 -1
  178. package/lib/src/components/drive-icon.d.ts +0 -5
  179. package/lib/src/components/drive-icon.d.ts.map +0 -1
  180. package/lib/src/components/drive-icon.js +0 -15
  181. package/lib/src/components/drive-icon.js.map +0 -1
  182. package/lib/src/components/editor-loader.d.ts +0 -9
  183. package/lib/src/components/editor-loader.d.ts.map +0 -1
  184. package/lib/src/components/editor-loader.js +0 -19
  185. package/lib/src/components/editor-loader.js.map +0 -1
  186. package/lib/src/components/editors.d.ts +0 -10
  187. package/lib/src/components/editors.d.ts.map +0 -1
  188. package/lib/src/components/editors.js +0 -87
  189. package/lib/src/components/editors.js.map +0 -1
  190. package/lib/src/components/error-boundary.d.ts +0 -103
  191. package/lib/src/components/error-boundary.d.ts.map +0 -1
  192. package/lib/src/components/error-boundary.js +0 -104
  193. package/lib/src/components/error-boundary.js.map +0 -1
  194. package/lib/src/components/footer.d.ts +0 -2
  195. package/lib/src/components/footer.d.ts.map +0 -1
  196. package/lib/src/components/footer.js +0 -16
  197. package/lib/src/components/footer.js.map +0 -1
  198. package/lib/src/components/index.d.ts +0 -22
  199. package/lib/src/components/index.d.ts.map +0 -1
  200. package/lib/src/components/index.js +0 -22
  201. package/lib/src/components/index.js.map +0 -1
  202. package/lib/src/components/login.d.ts +0 -2
  203. package/lib/src/components/login.d.ts.map +0 -1
  204. package/lib/src/components/login.js +0 -12
  205. package/lib/src/components/login.js.map +0 -1
  206. package/lib/src/components/modal/index.d.ts +0 -18
  207. package/lib/src/components/modal/index.d.ts.map +0 -1
  208. package/lib/src/components/modal/index.js +0 -18
  209. package/lib/src/components/modal/index.js.map +0 -1
  210. package/lib/src/components/modal/modals/AddDriveModal.d.ts +0 -2
  211. package/lib/src/components/modal/modals/AddDriveModal.d.ts.map +0 -1
  212. package/lib/src/components/modal/modals/AddDriveModal.js +0 -121
  213. package/lib/src/components/modal/modals/AddDriveModal.js.map +0 -1
  214. package/lib/src/components/modal/modals/ClearStorageModal.d.ts +0 -2
  215. package/lib/src/components/modal/modals/ClearStorageModal.d.ts.map +0 -1
  216. package/lib/src/components/modal/modals/ClearStorageModal.js +0 -35
  217. package/lib/src/components/modal/modals/ClearStorageModal.js.map +0 -1
  218. package/lib/src/components/modal/modals/CookiesPolicyModal.d.ts +0 -2
  219. package/lib/src/components/modal/modals/CookiesPolicyModal.d.ts.map +0 -1
  220. package/lib/src/components/modal/modals/CookiesPolicyModal.js +0 -16
  221. package/lib/src/components/modal/modals/CookiesPolicyModal.js.map +0 -1
  222. package/lib/src/components/modal/modals/CreateDocumentModal.d.ts +0 -2
  223. package/lib/src/components/modal/modals/CreateDocumentModal.d.ts.map +0 -1
  224. package/lib/src/components/modal/modals/CreateDocumentModal.js +0 -24
  225. package/lib/src/components/modal/modals/CreateDocumentModal.js.map +0 -1
  226. package/lib/src/components/modal/modals/DebugSettingsModal.d.ts +0 -2
  227. package/lib/src/components/modal/modals/DebugSettingsModal.d.ts.map +0 -1
  228. package/lib/src/components/modal/modals/DebugSettingsModal.js +0 -108
  229. package/lib/src/components/modal/modals/DebugSettingsModal.js.map +0 -1
  230. package/lib/src/components/modal/modals/DeleteDriveModal.d.ts +0 -2
  231. package/lib/src/components/modal/modals/DeleteDriveModal.d.ts.map +0 -1
  232. package/lib/src/components/modal/modals/DeleteDriveModal.js +0 -32
  233. package/lib/src/components/modal/modals/DeleteDriveModal.js.map +0 -1
  234. package/lib/src/components/modal/modals/DeleteItemModal.d.ts +0 -3
  235. package/lib/src/components/modal/modals/DeleteItemModal.d.ts.map +0 -1
  236. package/lib/src/components/modal/modals/DeleteItemModal.js +0 -33
  237. package/lib/src/components/modal/modals/DeleteItemModal.js.map +0 -1
  238. package/lib/src/components/modal/modals/DisclaimerModal.d.ts +0 -3
  239. package/lib/src/components/modal/modals/DisclaimerModal.d.ts.map +0 -1
  240. package/lib/src/components/modal/modals/DisclaimerModal.js +0 -12
  241. package/lib/src/components/modal/modals/DisclaimerModal.js.map +0 -1
  242. package/lib/src/components/modal/modals/DriveSettingsModal.d.ts +0 -2
  243. package/lib/src/components/modal/modals/DriveSettingsModal.d.ts.map +0 -1
  244. package/lib/src/components/modal/modals/DriveSettingsModal.js +0 -28
  245. package/lib/src/components/modal/modals/DriveSettingsModal.js.map +0 -1
  246. package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.d.ts +0 -2
  247. package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.d.ts.map +0 -1
  248. package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.js +0 -30
  249. package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.js.map +0 -1
  250. package/lib/src/components/modal/modals/InspectorModal/InspectorModal.d.ts +0 -2
  251. package/lib/src/components/modal/modals/InspectorModal/InspectorModal.d.ts.map +0 -1
  252. package/lib/src/components/modal/modals/InspectorModal/InspectorModal.js +0 -29
  253. package/lib/src/components/modal/modals/InspectorModal/InspectorModal.js.map +0 -1
  254. package/lib/src/components/modal/modals/InspectorModal/index.d.ts +0 -2
  255. package/lib/src/components/modal/modals/InspectorModal/index.d.ts.map +0 -1
  256. package/lib/src/components/modal/modals/InspectorModal/index.js +0 -2
  257. package/lib/src/components/modal/modals/InspectorModal/index.js.map +0 -1
  258. package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.d.ts +0 -31
  259. package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.d.ts.map +0 -1
  260. package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.js +0 -211
  261. package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.js.map +0 -1
  262. package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.d.ts +0 -4
  263. package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.d.ts.map +0 -1
  264. package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.js +0 -12
  265. package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.js.map +0 -1
  266. package/lib/src/components/modal/modals/SettingsModal.d.ts +0 -3
  267. package/lib/src/components/modal/modals/SettingsModal.d.ts.map +0 -1
  268. package/lib/src/components/modal/modals/SettingsModal.js +0 -45
  269. package/lib/src/components/modal/modals/SettingsModal.js.map +0 -1
  270. package/lib/src/components/modal/modals/UpgradeDriveModal.d.ts +0 -3
  271. package/lib/src/components/modal/modals/UpgradeDriveModal.d.ts.map +0 -1
  272. package/lib/src/components/modal/modals/UpgradeDriveModal.js +0 -21
  273. package/lib/src/components/modal/modals/UpgradeDriveModal.js.map +0 -1
  274. package/lib/src/components/modal/modals/settings/about.d.ts +0 -2
  275. package/lib/src/components/modal/modals/settings/about.d.ts.map +0 -1
  276. package/lib/src/components/modal/modals/settings/about.js +0 -10
  277. package/lib/src/components/modal/modals/settings/about.js.map +0 -1
  278. package/lib/src/components/modal/modals/settings/danger-zone.d.ts +0 -2
  279. package/lib/src/components/modal/modals/settings/danger-zone.d.ts.map +0 -1
  280. package/lib/src/components/modal/modals/settings/danger-zone.js +0 -15
  281. package/lib/src/components/modal/modals/settings/danger-zone.js.map +0 -1
  282. package/lib/src/components/modal/modals/settings/default-editor.d.ts +0 -2
  283. package/lib/src/components/modal/modals/settings/default-editor.d.ts.map +0 -1
  284. package/lib/src/components/modal/modals/settings/default-editor.js +0 -18
  285. package/lib/src/components/modal/modals/settings/default-editor.js.map +0 -1
  286. package/lib/src/components/modal/modals/settings/package-manager.d.ts +0 -3
  287. package/lib/src/components/modal/modals/settings/package-manager.d.ts.map +0 -1
  288. package/lib/src/components/modal/modals/settings/package-manager.js +0 -87
  289. package/lib/src/components/modal/modals/settings/package-manager.js.map +0 -1
  290. package/lib/src/components/modal/modals-container.d.ts +0 -2
  291. package/lib/src/components/modal/modals-container.d.ts.map +0 -1
  292. package/lib/src/components/modal/modals-container.js +0 -66
  293. package/lib/src/components/modal/modals-container.js.map +0 -1
  294. package/lib/src/components/ph-logo.d.ts +0 -2
  295. package/lib/src/components/ph-logo.d.ts.map +0 -1
  296. package/lib/src/components/ph-logo.js +0 -7
  297. package/lib/src/components/ph-logo.js.map +0 -1
  298. package/lib/src/components/reload-connect-toast.d.ts +0 -2
  299. package/lib/src/components/reload-connect-toast.d.ts.map +0 -1
  300. package/lib/src/components/reload-connect-toast.js +0 -7
  301. package/lib/src/components/reload-connect-toast.js.map +0 -1
  302. package/lib/src/components/root.d.ts +0 -2
  303. package/lib/src/components/root.d.ts.map +0 -1
  304. package/lib/src/components/root.js +0 -8
  305. package/lib/src/components/root.js.map +0 -1
  306. package/lib/src/components/router.d.ts +0 -2
  307. package/lib/src/components/router.d.ts.map +0 -1
  308. package/lib/src/components/router.js +0 -41
  309. package/lib/src/components/router.js.map +0 -1
  310. package/lib/src/components/search-bar.d.ts +0 -2
  311. package/lib/src/components/search-bar.d.ts.map +0 -1
  312. package/lib/src/components/search-bar.js +0 -36
  313. package/lib/src/components/search-bar.js.map +0 -1
  314. package/lib/src/components/sidebar.d.ts +0 -2
  315. package/lib/src/components/sidebar.d.ts.map +0 -1
  316. package/lib/src/components/sidebar.js +0 -28
  317. package/lib/src/components/sidebar.js.map +0 -1
  318. package/lib/src/connect.config.d.ts +0 -115
  319. package/lib/src/connect.config.d.ts.map +0 -1
  320. package/lib/src/connect.config.js +0 -148
  321. package/lib/src/connect.config.js.map +0 -1
  322. package/lib/src/context/index.d.ts +0 -4
  323. package/lib/src/context/index.d.ts.map +0 -1
  324. package/lib/src/context/index.js +0 -4
  325. package/lib/src/context/index.js.map +0 -1
  326. package/lib/src/context/processor-manager.d.ts +0 -3
  327. package/lib/src/context/processor-manager.d.ts.map +0 -1
  328. package/lib/src/context/processor-manager.js +0 -189
  329. package/lib/src/context/processor-manager.js.map +0 -1
  330. package/lib/src/context/read-mode.d.ts +0 -2
  331. package/lib/src/context/read-mode.d.ts.map +0 -1
  332. package/lib/src/context/read-mode.js +0 -219
  333. package/lib/src/context/read-mode.js.map +0 -1
  334. package/lib/src/context/sentry-provider.d.ts +0 -6
  335. package/lib/src/context/sentry-provider.d.ts.map +0 -1
  336. package/lib/src/context/sentry-provider.js +0 -6
  337. package/lib/src/context/sentry-provider.js.map +0 -1
  338. package/lib/src/feature-flags.d.ts +0 -53
  339. package/lib/src/feature-flags.d.ts.map +0 -1
  340. package/lib/src/feature-flags.js +0 -173
  341. package/lib/src/feature-flags.js.map +0 -1
  342. package/lib/src/globals.d.ts +0 -9
  343. package/lib/src/globals.d.ts.map +0 -1
  344. package/lib/src/globals.js +0 -2
  345. package/lib/src/globals.js.map +0 -1
  346. package/lib/src/hmr.d.ts +0 -3
  347. package/lib/src/hmr.d.ts.map +0 -1
  348. package/lib/src/hmr.js +0 -2
  349. package/lib/src/hmr.js.map +0 -1
  350. package/lib/src/hooks/index.d.ts +0 -10
  351. package/lib/src/hooks/index.d.ts.map +0 -1
  352. package/lib/src/hooks/index.js +0 -10
  353. package/lib/src/hooks/index.js.map +0 -1
  354. package/lib/src/hooks/useAcceptedCookies.d.ts +0 -9
  355. package/lib/src/hooks/useAcceptedCookies.d.ts.map +0 -1
  356. package/lib/src/hooks/useAcceptedCookies.js +0 -34
  357. package/lib/src/hooks/useAcceptedCookies.js.map +0 -1
  358. package/lib/src/hooks/useCheckLatestVersion.d.ts +0 -2
  359. package/lib/src/hooks/useCheckLatestVersion.d.ts.map +0 -1
  360. package/lib/src/hooks/useCheckLatestVersion.js +0 -33
  361. package/lib/src/hooks/useCheckLatestVersion.js.map +0 -1
  362. package/lib/src/hooks/useClientErrorHandler.d.ts +0 -6
  363. package/lib/src/hooks/useClientErrorHandler.d.ts.map +0 -1
  364. package/lib/src/hooks/useClientErrorHandler.js +0 -131
  365. package/lib/src/hooks/useClientErrorHandler.js.map +0 -1
  366. package/lib/src/hooks/useCookieBanner.d.ts +0 -5
  367. package/lib/src/hooks/useCookieBanner.d.ts.map +0 -1
  368. package/lib/src/hooks/useCookieBanner.js +0 -32
  369. package/lib/src/hooks/useCookieBanner.js.map +0 -1
  370. package/lib/src/hooks/useInitSentry.d.ts +0 -2
  371. package/lib/src/hooks/useInitSentry.d.ts.map +0 -1
  372. package/lib/src/hooks/useInitSentry.js +0 -80
  373. package/lib/src/hooks/useInitSentry.js.map +0 -1
  374. package/lib/src/hooks/useNodeActions.d.ts +0 -6
  375. package/lib/src/hooks/useNodeActions.d.ts.map +0 -1
  376. package/lib/src/hooks/useNodeActions.js +0 -35
  377. package/lib/src/hooks/useNodeActions.js.map +0 -1
  378. package/lib/src/hooks/useUndoRedoShortcuts.d.ts +0 -8
  379. package/lib/src/hooks/useUndoRedoShortcuts.d.ts.map +0 -1
  380. package/lib/src/hooks/useUndoRedoShortcuts.js +0 -26
  381. package/lib/src/hooks/useUndoRedoShortcuts.js.map +0 -1
  382. package/lib/src/hooks/useWindowSize.d.ts +0 -5
  383. package/lib/src/hooks/useWindowSize.d.ts.map +0 -1
  384. package/lib/src/hooks/useWindowSize.js +0 -21
  385. package/lib/src/hooks/useWindowSize.js.map +0 -1
  386. package/lib/src/hooks/utils.d.ts +0 -7
  387. package/lib/src/hooks/utils.d.ts.map +0 -1
  388. package/lib/src/hooks/utils.js +0 -46
  389. package/lib/src/hooks/utils.js.map +0 -1
  390. package/lib/src/i18n/index.d.ts +0 -4
  391. package/lib/src/i18n/index.d.ts.map +0 -1
  392. package/lib/src/i18n/index.js +0 -26
  393. package/lib/src/i18n/index.js.map +0 -1
  394. package/lib/src/i18n/locales/en.json +0 -114
  395. package/lib/src/index.d.ts +0 -2
  396. package/lib/src/index.d.ts.map +0 -1
  397. package/lib/src/index.js +0 -2
  398. package/lib/src/index.js.map +0 -1
  399. package/lib/src/main.d.ts +0 -2
  400. package/lib/src/main.d.ts.map +0 -1
  401. package/lib/src/main.js +0 -5
  402. package/lib/src/main.js.map +0 -1
  403. package/lib/src/pages/content.d.ts +0 -2
  404. package/lib/src/pages/content.d.ts.map +0 -1
  405. package/lib/src/pages/content.js +0 -39
  406. package/lib/src/pages/content.js.map +0 -1
  407. package/lib/src/pages/demo/atlas-import.d.ts +0 -2
  408. package/lib/src/pages/demo/atlas-import.d.ts.map +0 -1
  409. package/lib/src/pages/demo/atlas-import.js +0 -122
  410. package/lib/src/pages/demo/atlas-import.js.map +0 -1
  411. package/lib/src/pages/index.d.ts +0 -4
  412. package/lib/src/pages/index.d.ts.map +0 -1
  413. package/lib/src/pages/index.js +0 -4
  414. package/lib/src/pages/index.js.map +0 -1
  415. package/lib/src/pages/settings.d.ts +0 -4
  416. package/lib/src/pages/settings.d.ts.map +0 -1
  417. package/lib/src/pages/settings.js +0 -9
  418. package/lib/src/pages/settings.js.map +0 -1
  419. package/lib/src/service-worker.d.ts +0 -2
  420. package/lib/src/service-worker.d.ts.map +0 -1
  421. package/lib/src/service-worker.js +0 -58
  422. package/lib/src/service-worker.js.map +0 -1
  423. package/lib/src/services/hmr.d.ts +0 -13
  424. package/lib/src/services/hmr.d.ts.map +0 -1
  425. package/lib/src/services/hmr.js +0 -85
  426. package/lib/src/services/hmr.js.map +0 -1
  427. package/lib/src/services/index.d.ts +0 -10
  428. package/lib/src/services/index.d.ts.map +0 -1
  429. package/lib/src/services/index.js +0 -9
  430. package/lib/src/services/index.js.map +0 -1
  431. package/lib/src/services/logger.d.ts +0 -2
  432. package/lib/src/services/logger.d.ts.map +0 -1
  433. package/lib/src/services/logger.js +0 -28
  434. package/lib/src/services/logger.js.map +0 -1
  435. package/lib/src/services/renown/browser.d.ts +0 -2
  436. package/lib/src/services/renown/browser.d.ts.map +0 -1
  437. package/lib/src/services/renown/browser.js +0 -6
  438. package/lib/src/services/renown/browser.js.map +0 -1
  439. package/lib/src/services/renown/constants.d.ts +0 -130
  440. package/lib/src/services/renown/constants.d.ts.map +0 -1
  441. package/lib/src/services/renown/constants.js +0 -41
  442. package/lib/src/services/renown/constants.js.map +0 -1
  443. package/lib/src/services/renown/utils.d.ts +0 -7
  444. package/lib/src/services/renown/utils.d.ts.map +0 -1
  445. package/lib/src/services/renown/utils.js +0 -20
  446. package/lib/src/services/renown/utils.js.map +0 -1
  447. package/lib/src/services/storage/base-storage.d.ts +0 -9
  448. package/lib/src/services/storage/base-storage.d.ts.map +0 -1
  449. package/lib/src/services/storage/base-storage.js +0 -21
  450. package/lib/src/services/storage/base-storage.js.map +0 -1
  451. package/lib/src/services/storage/browser.d.ts +0 -5
  452. package/lib/src/services/storage/browser.d.ts.map +0 -1
  453. package/lib/src/services/storage/browser.js +0 -25
  454. package/lib/src/services/storage/browser.js.map +0 -1
  455. package/lib/src/services/storage/types.d.ts +0 -6
  456. package/lib/src/services/storage/types.d.ts.map +0 -1
  457. package/lib/src/services/storage/types.js +0 -2
  458. package/lib/src/services/storage/types.js.map +0 -1
  459. package/lib/src/services/toast.d.ts +0 -8
  460. package/lib/src/services/toast.d.ts.map +0 -1
  461. package/lib/src/services/toast.js +0 -11
  462. package/lib/src/services/toast.js.map +0 -1
  463. package/lib/src/store/document-model.d.ts +0 -3
  464. package/lib/src/store/document-model.d.ts.map +0 -1
  465. package/lib/src/store/document-model.js +0 -80
  466. package/lib/src/store/document-model.js.map +0 -1
  467. package/lib/src/store/editor.d.ts +0 -5
  468. package/lib/src/store/editor.d.ts.map +0 -1
  469. package/lib/src/store/editor.js +0 -31
  470. package/lib/src/store/editor.js.map +0 -1
  471. package/lib/src/store/external-packages.d.ts +0 -4
  472. package/lib/src/store/external-packages.d.ts.map +0 -1
  473. package/lib/src/store/external-packages.js +0 -36
  474. package/lib/src/store/external-packages.js.map +0 -1
  475. package/lib/src/store/index.d.ts +0 -7
  476. package/lib/src/store/index.d.ts.map +0 -1
  477. package/lib/src/store/index.js +0 -7
  478. package/lib/src/store/index.js.map +0 -1
  479. package/lib/src/store/reactor.d.ts +0 -3
  480. package/lib/src/store/reactor.d.ts.map +0 -1
  481. package/lib/src/store/reactor.js +0 -257
  482. package/lib/src/store/reactor.js.map +0 -1
  483. package/lib/src/store/user.d.ts +0 -2
  484. package/lib/src/store/user.d.ts.map +0 -1
  485. package/lib/src/store/user.js +0 -16
  486. package/lib/src/store/user.js.map +0 -1
  487. package/lib/src/store/utils.d.ts +0 -2
  488. package/lib/src/store/utils.d.ts.map +0 -1
  489. package/lib/src/store/utils.js +0 -59
  490. package/lib/src/store/utils.js.map +0 -1
  491. package/lib/src/utils/browser.d.ts +0 -2
  492. package/lib/src/utils/browser.d.ts.map +0 -1
  493. package/lib/src/utils/browser.js +0 -9
  494. package/lib/src/utils/browser.js.map +0 -1
  495. package/lib/src/utils/document-editor-debug-tools.d.ts +0 -17
  496. package/lib/src/utils/document-editor-debug-tools.d.ts.map +0 -1
  497. package/lib/src/utils/document-editor-debug-tools.js +0 -55
  498. package/lib/src/utils/document-editor-debug-tools.js.map +0 -1
  499. package/lib/src/utils/drive-preservation.d.ts +0 -19
  500. package/lib/src/utils/drive-preservation.d.ts.map +0 -1
  501. package/lib/src/utils/drive-preservation.js +0 -51
  502. package/lib/src/utils/drive-preservation.js.map +0 -1
  503. package/lib/src/utils/drive-sections.d.ts +0 -31
  504. package/lib/src/utils/drive-sections.d.ts.map +0 -1
  505. package/lib/src/utils/drive-sections.js +0 -63
  506. package/lib/src/utils/drive-sections.js.map +0 -1
  507. package/lib/src/utils/index.d.ts +0 -12
  508. package/lib/src/utils/index.d.ts.map +0 -1
  509. package/lib/src/utils/index.js +0 -12
  510. package/lib/src/utils/index.js.map +0 -1
  511. package/lib/src/utils/join.d.ts +0 -2
  512. package/lib/src/utils/join.d.ts.map +0 -1
  513. package/lib/src/utils/join.js +0 -11
  514. package/lib/src/utils/join.js.map +0 -1
  515. package/lib/src/utils/openUrl.d.ts +0 -2
  516. package/lib/src/utils/openUrl.d.ts.map +0 -1
  517. package/lib/src/utils/openUrl.js +0 -3
  518. package/lib/src/utils/openUrl.js.map +0 -1
  519. package/lib/src/utils/path.d.ts +0 -4
  520. package/lib/src/utils/path.d.ts.map +0 -1
  521. package/lib/src/utils/path.js +0 -17
  522. package/lib/src/utils/path.js.map +0 -1
  523. package/lib/src/utils/reactor.d.ts +0 -13
  524. package/lib/src/utils/reactor.d.ts.map +0 -1
  525. package/lib/src/utils/reactor.js +0 -93
  526. package/lib/src/utils/reactor.js.map +0 -1
  527. package/lib/src/utils/registerServiceWorker.d.ts +0 -12
  528. package/lib/src/utils/registerServiceWorker.d.ts.map +0 -1
  529. package/lib/src/utils/registerServiceWorker.js +0 -97
  530. package/lib/src/utils/registerServiceWorker.js.map +0 -1
  531. package/lib/src/utils/signature.d.ts +0 -4
  532. package/lib/src/utils/signature.d.ts.map +0 -1
  533. package/lib/src/utils/signature.js +0 -36
  534. package/lib/src/utils/signature.js.map +0 -1
  535. package/lib/src/utils/slug.d.ts +0 -2
  536. package/lib/src/utils/slug.d.ts.map +0 -1
  537. package/lib/src/utils/slug.js +0 -4
  538. package/lib/src/utils/slug.js.map +0 -1
  539. package/lib/src/workers/pglite-worker.d.ts +0 -2
  540. package/lib/src/workers/pglite-worker.d.ts.map +0 -1
  541. package/lib/src/workers/pglite-worker.js +0 -32
  542. package/lib/src/workers/pglite-worker.js.map +0 -1
  543. package/lib/test/utils/signer.test.d.ts +0 -2
  544. package/lib/test/utils/signer.test.d.ts.map +0 -1
  545. package/lib/test/utils/signer.test.js +0 -330
  546. package/lib/test/utils/signer.test.js.map +0 -1
  547. package/lib/tsconfig.tsbuildinfo +0 -1
  548. package/lib/vite.config.d.ts +0 -3
  549. package/lib/vite.config.d.ts.map +0 -1
  550. package/lib/vite.config.js +0 -59
  551. package/lib/vite.config.js.map +0 -1
  552. package/lib/vitest.config.d.ts +0 -3
  553. package/lib/vitest.config.d.ts.map +0 -1
  554. package/lib/vitest.config.js +0 -8
  555. package/lib/vitest.config.js.map +0 -1
  556. package/package.copy.json +0 -177
  557. package/src/index.css +0 -5
@@ -0,0 +1,565 @@
1
+ import { i as phGlobalConfigFromEnv, t as connectConfig } from "./connect.config-CUbxYkCy.js";
2
+ import { t as toast } from "./toast-iD-70hL8.js";
3
+ import { BrowserLocalStorage, COMMON_PACKAGE_ID, ChannelScheme, DEFAULT_DRIVE_EDITOR_ID, DocumentCache, DocumentChangeType, ReactorBuilder, ReactorClientBuilder, addPHEventHandlers, addRemoteDrive, convertLegacyLibToVetraPackage, createAnalyticsStore, dropAllReactorStorage, extractDriveSlugFromPath, extractNodeSlugFromPath, getDrives, login, refreshReactorDataClient, setDefaultPHGlobalConfig, setDocumentCache, setDrives, setFeatures, setPHToast, setReactorClient, setReactorClientModule, setRenown, setSelectedDrive, setSelectedNode, setVetraPackageManager } from "@powerhousedao/reactor-browser";
4
+ import { ConsoleLogger, documentModelDocumentModelModule, logger, setLogLevel as setLogLevel$1 } from "document-model";
5
+ import { PGlite } from "@electric-sql/pglite";
6
+ import { BrowserKeyStorage, RenownBuilder, RenownCryptoBuilder, createSignatureVerifier } from "@renown/sdk";
7
+ import { Kysely } from "kysely";
8
+ import { PGliteDialect } from "kysely-pglite-dialect";
9
+ import { DocumentModelEditor, GenericDriveExplorer } from "@powerhousedao/powerhouse-vetra-packages/editors";
10
+ import { createState, defaultBaseState } from "@powerhousedao/shared/document-model";
11
+ import { live } from "@electric-sql/pglite/live";
12
+ import { PGliteWorker } from "@electric-sql/pglite/worker";
13
+ import { createRelationalDb } from "@powerhousedao/shared/processors";
14
+ import { driveDocumentModelModule } from "@powerhousedao/shared/document-drive";
15
+ import { OpenFeature } from "@openfeature/web-sdk";
16
+ import * as vetraVetraPackage from "@powerhousedao/vetra";
17
+ //#region src/utils/reactor.ts
18
+ /**
19
+ * Creates a Reactor that plugs into legacy storage but syncs through the new
20
+ * Reactor GQL API.
21
+ */
22
+ async function createBrowserReactor(documentModelModules, upgradeManifests, renown, documentModelLoader) {
23
+ const signerConfig = {
24
+ signer: renown.signer,
25
+ verifier: createSignatureVerifier()
26
+ };
27
+ const jwtHandler = async (url) => {
28
+ if (!renown.user) return;
29
+ return renown.getBearerToken({
30
+ expiresIn: 10,
31
+ aud: url
32
+ });
33
+ };
34
+ const pg = new PGlite("idb://reactor", { relaxedDurability: true });
35
+ const logger = new ConsoleLogger(["reactor-client"]);
36
+ const builder = new ReactorClientBuilder().withLogger(logger).withSigner(signerConfig).withReactorBuilder(new ReactorBuilder().withDocumentModels(documentModelModules).withUpgradeManifests(upgradeManifests).withChannelScheme(ChannelScheme.CONNECT).withJwtHandler(jwtHandler).withKysely(new Kysely({ dialect: new PGliteDialect(pg) })));
37
+ if (documentModelLoader) builder.withDocumentModelLoader(documentModelLoader);
38
+ return {
39
+ ...await builder.buildModule(),
40
+ pg
41
+ };
42
+ }
43
+ /**
44
+ * Parse default drives from environment variable.
45
+ * Returns an array of drive REST endpoint URLs (e.g., "https://example.com/d/powerhouse").
46
+ */
47
+ function getDefaultDrivesFromEnv() {
48
+ const envValue = import.meta.env.PH_CONNECT_DEFAULT_DRIVES_URL;
49
+ if (!envValue) return [];
50
+ return envValue.split(",").filter((url) => url.trim().length > 0);
51
+ }
52
+ /**
53
+ * Add default drives for the new reactor via sync manager.
54
+ * @param defaultDriveUrls - Array of drive REST endpoint URLs (e.g., "https://example.com/d/powerhouse")
55
+ */
56
+ async function addDefaultDrivesForNewReactor(defaultDriveUrls) {
57
+ for (const url of defaultDriveUrls) try {
58
+ await addRemoteDrive(url);
59
+ } catch (error) {
60
+ console.error(`Failed to add default drive ${url}:`, error);
61
+ }
62
+ }
63
+ //#endregion
64
+ //#region src/store/document-model.ts
65
+ function loadDocumentModelDocumentModelModule() {
66
+ const global = documentModelDocumentModelModule.documentModel.global;
67
+ const name = global.name;
68
+ const documentType = global.id;
69
+ return {
70
+ id: documentType,
71
+ name,
72
+ documentType,
73
+ extension: global.extension,
74
+ specifications: global.specifications,
75
+ reducer: documentModelDocumentModelModule.reducer,
76
+ actions: documentModelDocumentModelModule.actions,
77
+ utils: documentModelDocumentModelModule.utils,
78
+ documentModel: createState(defaultBaseState(), global)
79
+ };
80
+ }
81
+ function loadDriveDocumentModelModule() {
82
+ const global = driveDocumentModelModule.documentModel.global;
83
+ const name = global.name;
84
+ const documentType = global.id;
85
+ return {
86
+ id: documentType,
87
+ name,
88
+ documentType,
89
+ extension: global.extension,
90
+ specifications: global.specifications,
91
+ reducer: driveDocumentModelModule.reducer,
92
+ actions: driveDocumentModelModule.actions,
93
+ utils: driveDocumentModelModule.utils,
94
+ documentModel: createState(defaultBaseState(), global)
95
+ };
96
+ }
97
+ //#endregion
98
+ //#region src/store/editor.ts
99
+ function loadGenericDriveExplorerEditorModule() {
100
+ return {
101
+ id: DEFAULT_DRIVE_EDITOR_ID,
102
+ name: "Generic Drive Explorer",
103
+ documentTypes: ["powerhouse/document-drive"],
104
+ Component: GenericDriveExplorer.Component
105
+ };
106
+ }
107
+ function loadDocumentModelEditor() {
108
+ return {
109
+ id: "document-model-editor-v2",
110
+ name: "Document Model Editor",
111
+ documentTypes: ["powerhouse/document-model"],
112
+ Component: DocumentModelEditor.Component
113
+ };
114
+ }
115
+ //#endregion
116
+ //#region src/feature-flags.ts
117
+ /**
118
+ * QueryParamProvider reads feature flags from URL query parameters.
119
+ *
120
+ * Usage:
121
+ * const params = new URLSearchParams(window.location.search);
122
+ * const provider = new QueryParamProvider(params);
123
+ * await OpenFeature.setProviderAndWait(provider);
124
+ *
125
+ * Query parameter format:
126
+ * ?FEATURE_DUAL_ACTION_CREATE_ENABLED=true&FEATURE_FOO=false
127
+ */
128
+ var QueryParamProvider = class {
129
+ runsOn = "client";
130
+ metadata = { name: "QueryParamProvider" };
131
+ flags;
132
+ constructor(searchParams) {
133
+ this.flags = /* @__PURE__ */ new Map();
134
+ for (const [key, value] of searchParams.entries()) this.flags.set(key, value);
135
+ }
136
+ resolveBooleanEvaluation(flagKey, defaultValue) {
137
+ const value = this.flags.get(flagKey);
138
+ if (value === void 0) return {
139
+ value: defaultValue,
140
+ reason: "DEFAULT"
141
+ };
142
+ return {
143
+ value: value.toLowerCase() === "true" || value === "1",
144
+ reason: "STATIC",
145
+ variant: value
146
+ };
147
+ }
148
+ resolveStringEvaluation(flagKey, defaultValue) {
149
+ const value = this.flags.get(flagKey);
150
+ if (value === void 0) return {
151
+ value: defaultValue,
152
+ reason: "DEFAULT"
153
+ };
154
+ return {
155
+ value,
156
+ reason: "STATIC",
157
+ variant: value
158
+ };
159
+ }
160
+ resolveNumberEvaluation(flagKey, defaultValue) {
161
+ const value = this.flags.get(flagKey);
162
+ if (value === void 0) return {
163
+ value: defaultValue,
164
+ reason: "DEFAULT"
165
+ };
166
+ const numValue = Number(value);
167
+ if (isNaN(numValue)) return {
168
+ value: defaultValue,
169
+ reason: "ERROR",
170
+ errorCode: "PARSE_ERROR",
171
+ errorMessage: `Failed to parse "${value}" as a number`
172
+ };
173
+ return {
174
+ value: numValue,
175
+ reason: "STATIC",
176
+ variant: value
177
+ };
178
+ }
179
+ resolveObjectEvaluation(flagKey, defaultValue) {
180
+ const value = this.flags.get(flagKey);
181
+ if (value === void 0) return {
182
+ value: defaultValue,
183
+ reason: "DEFAULT"
184
+ };
185
+ try {
186
+ return {
187
+ value: JSON.parse(value),
188
+ reason: "STATIC",
189
+ variant: value
190
+ };
191
+ } catch (error) {
192
+ return {
193
+ value: defaultValue,
194
+ reason: "ERROR",
195
+ errorCode: "PARSE_ERROR",
196
+ errorMessage: `Failed to parse JSON: ${error instanceof Error ? error.message : String(error)}`
197
+ };
198
+ }
199
+ }
200
+ };
201
+ /**
202
+ * Initialize OpenFeature with the QueryParamProvider.
203
+ * Reads feature flags from query parameters.
204
+ */
205
+ async function initFeatureFlags(searchParams) {
206
+ const params = searchParams ?? (typeof window !== "undefined" ? new URLSearchParams(window.location.search) : new URLSearchParams());
207
+ const provider = new QueryParamProvider(params);
208
+ await OpenFeature.setProviderAndWait(provider);
209
+ const features = /* @__PURE__ */ new Map();
210
+ const client = OpenFeature.getClient();
211
+ const inspectorEnabled = params.has(FEATURE_INSPECTOR_ENABLED) ? client.getBooleanValue(FEATURE_INSPECTOR_ENABLED, FEATURE_INSPECTOR_ENABLED_DEFAULT) : connectConfig.content.inspectorEnabled;
212
+ features.set(FEATURE_INSPECTOR_ENABLED, inspectorEnabled);
213
+ const logLevelParam = params.get("LOG_LEVEL");
214
+ if (logLevelParam) {
215
+ const validLogLevels = [
216
+ "verbose",
217
+ "debug",
218
+ "info",
219
+ "warn",
220
+ "error"
221
+ ];
222
+ if (validLogLevels.includes(logLevelParam.toLowerCase())) {
223
+ setLogLevel$1(logLevelParam.toLowerCase());
224
+ logger.info("Log level set to @level via query param", logLevelParam.toLowerCase());
225
+ } else logger.warn("Invalid LOG_LEVEL query param: @param. Valid values: @validLevels", logLevelParam, validLogLevels.join(", "));
226
+ }
227
+ return features;
228
+ }
229
+ const FEATURE_INSPECTOR_ENABLED = "FEATURE_INSPECTOR_ENABLED";
230
+ const FEATURE_INSPECTOR_ENABLED_DEFAULT = false;
231
+ //#endregion
232
+ //#region src/package-manager.ts
233
+ const LOCAL_PACKAGE_NAME = "Local";
234
+ const COMMON_PACKAGE_NAME = "Common";
235
+ var BrowserPackageManager = class {
236
+ registryUrl;
237
+ #storage;
238
+ #packages = /* @__PURE__ */ new Map();
239
+ #subscribers = /* @__PURE__ */ new Set();
240
+ #packagesMemo = [];
241
+ #stylesheets = /* @__PURE__ */ new Map();
242
+ #localPackage;
243
+ #cdnUrl;
244
+ constructor(namespace, registryUrl) {
245
+ this.#storage = new BrowserLocalStorage(namespace + ":PH_PACKAGES");
246
+ this.registryUrl = registryUrl;
247
+ this.#cdnUrl = registryUrl !== null ? this.#toCdnUrl(registryUrl) : null;
248
+ }
249
+ #toCdnUrl(baseUrl) {
250
+ if (baseUrl.includes("/-/cdn")) return baseUrl;
251
+ return `${baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl}/-/cdn`;
252
+ }
253
+ async init(localPackage) {
254
+ for (const packageName of this.#storage.keys()) await this.addPackage(packageName);
255
+ const commonPackageWithMeta = this.#loadCommonPackage();
256
+ this.#registerPackage(commonPackageWithMeta);
257
+ const vetraVetraPackageWithMeta = this.#loadVetraPackage();
258
+ this.#registerPackage(vetraVetraPackageWithMeta);
259
+ if (localPackage) {
260
+ this.#localPackage = localPackage;
261
+ this.#registerPackage({
262
+ name: LOCAL_PACKAGE_NAME,
263
+ stylesheetUrl: null,
264
+ importUrl: null,
265
+ loadedPackage: localPackage
266
+ });
267
+ }
268
+ }
269
+ get packages() {
270
+ return this.#packagesMemo;
271
+ }
272
+ getPackageSource(packageName) {
273
+ if (packageName === COMMON_PACKAGE_NAME || packageName === "@powerhousedao/vetra") return "common";
274
+ if (packageName === this.#localPackage?.name) return "project";
275
+ const packageMeta = this.#storage.get(packageName);
276
+ if (!packageMeta) return null;
277
+ if (packageMeta.importUrl === `/node_modules/${packageName}`) return "local-install";
278
+ return "registry-install";
279
+ }
280
+ async addPackage(packageName) {
281
+ const packageWithMeta = await this.#loadPackage(packageName);
282
+ if (!packageWithMeta) return {
283
+ type: "error",
284
+ error: /* @__PURE__ */ new Error("Failed to load package. See console debug for outputs.")
285
+ };
286
+ this.#registerPackage(packageWithMeta);
287
+ return {
288
+ type: "success",
289
+ package: packageWithMeta.loadedPackage
290
+ };
291
+ }
292
+ async addPackages(packageNames) {
293
+ const results = [];
294
+ for (const packageName of packageNames) {
295
+ const result = await this.addPackage(packageName);
296
+ results.push(result);
297
+ }
298
+ return results;
299
+ }
300
+ removePackage(name) {
301
+ this.#packages.delete(name);
302
+ this.#storage.delete(name);
303
+ this.#unmountStylesheet(name);
304
+ this.#notifyPackagesChanged();
305
+ }
306
+ subscribe(handler) {
307
+ this.#subscribers.add(handler);
308
+ return () => {
309
+ this.#subscribers.delete(handler);
310
+ };
311
+ }
312
+ load(documentType) {
313
+ const documentModelModule = Array.from(this.#packages.values().flatMap((p) => p.modules.documentModelModules ?? [])).find((m) => m.documentType === documentType);
314
+ if (documentModelModule) return Promise.resolve(documentModelModule);
315
+ return Promise.reject(/* @__PURE__ */ new Error("Model not available"));
316
+ }
317
+ #loadCommonPackage() {
318
+ const documentModelDocumentModelModule = loadDocumentModelDocumentModelModule();
319
+ const driveDocumentModelModule = loadDriveDocumentModelModule();
320
+ const documentModelEditorModule = loadDocumentModelEditor();
321
+ const genericDriveExplorerEditorModule = loadGenericDriveExplorerEditorModule();
322
+ const name = COMMON_PACKAGE_NAME;
323
+ return {
324
+ name,
325
+ importUrl: null,
326
+ stylesheetUrl: null,
327
+ loadedPackage: {
328
+ id: COMMON_PACKAGE_ID,
329
+ name,
330
+ description: "Common",
331
+ category: "Common",
332
+ author: {
333
+ name: "Powerhouse",
334
+ website: "https://powerhousedao.com"
335
+ },
336
+ modules: {
337
+ documentModelModules: [documentModelDocumentModelModule, driveDocumentModelModule],
338
+ editorModules: [documentModelEditorModule, genericDriveExplorerEditorModule]
339
+ },
340
+ upgradeManifests: []
341
+ }
342
+ };
343
+ }
344
+ #loadVetraPackage() {
345
+ return {
346
+ name: vetraVetraPackage.manifest.name,
347
+ importUrl: null,
348
+ stylesheetUrl: null,
349
+ loadedPackage: convertLegacyLibToVetraPackage(vetraVetraPackage)
350
+ };
351
+ }
352
+ async #loadPackageFromNodeModules(name) {
353
+ if (import.meta.env.PROD) return;
354
+ if (name === COMMON_PACKAGE_NAME || name === LOCAL_PACKAGE_NAME) return;
355
+ const importUrl = `/node_modules/${name}/index.js`;
356
+ const stylesheetUrl = `/node_modules/${name}/style.css`;
357
+ return await this.#importPackage({
358
+ name,
359
+ importUrl,
360
+ stylesheetUrl
361
+ });
362
+ }
363
+ async #loadPackageFromRegistry(name) {
364
+ if (this.registryUrl === null) return;
365
+ if (name === COMMON_PACKAGE_NAME || name === LOCAL_PACKAGE_NAME) return;
366
+ const importUrl = `${this.#cdnUrl}/${name}/index.js`;
367
+ const stylesheetUrl = `${this.#cdnUrl}/${name}/style.css`;
368
+ return await this.#importPackage({
369
+ name,
370
+ importUrl,
371
+ stylesheetUrl
372
+ });
373
+ }
374
+ async #importPackage(packageMeta) {
375
+ const { name, importUrl, stylesheetUrl } = packageMeta;
376
+ if (importUrl === null) return;
377
+ try {
378
+ return {
379
+ name,
380
+ loadedPackage: convertLegacyLibToVetraPackage(await import(importUrl)),
381
+ importUrl,
382
+ stylesheetUrl
383
+ };
384
+ } catch (error) {
385
+ console.debug(`Could not import package:`);
386
+ console.debug({
387
+ error,
388
+ name,
389
+ importUrl,
390
+ stylesheetUrl
391
+ });
392
+ return;
393
+ }
394
+ }
395
+ async #loadPackage(packageName) {
396
+ let packageWithMeta;
397
+ packageWithMeta = await this.#loadPackageFromNodeModules(packageName);
398
+ if (!packageWithMeta && this.registryUrl !== null) packageWithMeta = await this.#loadPackageFromRegistry(packageName);
399
+ if (!packageWithMeta) {
400
+ console.debug(`Failed to load package "${packageName}" from node_modules and package registry with url "${this.registryUrl}".`);
401
+ return;
402
+ }
403
+ return packageWithMeta;
404
+ }
405
+ #registerPackage(packageWithMeta) {
406
+ const { name, loadedPackage, importUrl, stylesheetUrl } = packageWithMeta;
407
+ if (stylesheetUrl !== null) this.#mountStylesheet(name, stylesheetUrl);
408
+ this.#packages.set(name, loadedPackage);
409
+ this.#storage.set(name, {
410
+ name,
411
+ importUrl,
412
+ stylesheetUrl
413
+ });
414
+ this.#notifyPackagesChanged();
415
+ }
416
+ #mountStylesheet(name, href) {
417
+ const existing = this.#stylesheets.get(name);
418
+ if (existing) return existing;
419
+ const link = document.createElement("link");
420
+ link.rel = "stylesheet";
421
+ link.href = href;
422
+ document.head.appendChild(link);
423
+ this.#stylesheets.set(name, link);
424
+ }
425
+ #unmountStylesheet(name) {
426
+ const link = this.#stylesheets.get(name);
427
+ if (!link) return;
428
+ link.remove();
429
+ this.#stylesheets.delete(name);
430
+ }
431
+ #notifyPackagesChanged() {
432
+ this.#packagesMemo = Array.from(this.#packages.values());
433
+ const packages = this.packages;
434
+ this.#subscribers.forEach((handler) => {
435
+ handler({ packages });
436
+ });
437
+ }
438
+ };
439
+ //#endregion
440
+ //#region src/pglite.db.ts
441
+ async function getDb() {
442
+ const worker = new Worker(new URL("./pglite.worker.js", import.meta.url), { type: "module" });
443
+ const pgLite = await PGliteWorker.create(worker, { extensions: { live } });
444
+ return {
445
+ pgLite,
446
+ relationalDb: createRelationalDb(new Kysely({ dialect: new PGliteDialect(pgLite) }))
447
+ };
448
+ }
449
+ //#endregion
450
+ //#region src/store/processor-host-module.ts
451
+ async function createProcessorHostModule() {
452
+ try {
453
+ const { pgLite, relationalDb } = await getDb();
454
+ const { store: analyticsStore } = await createAnalyticsStore({ pgLite });
455
+ return {
456
+ relationalDb,
457
+ analyticsStore,
458
+ processorApp: "connect"
459
+ };
460
+ } catch (error) {
461
+ console.error(`Failed to initialize processor host module:`);
462
+ console.error(error);
463
+ }
464
+ }
465
+ //#endregion
466
+ //#region src/store/reactor.ts
467
+ async function clearReactorStorage() {
468
+ const pg = window.ph?.reactorClientModule?.pg;
469
+ if (!pg) throw new Error("PGlite not found");
470
+ await dropAllReactorStorage(pg);
471
+ await pg.close();
472
+ }
473
+ async function createReactor(localPackage) {
474
+ if (!window.ph) window.ph = {};
475
+ if (window.ph.loading) return;
476
+ window.ph.loading = true;
477
+ addPHEventHandlers();
478
+ setPHToast(toast);
479
+ const features = await initFeatureFlags();
480
+ logger.info("Features: @features", JSON.stringify(Object.fromEntries(features), null, 2));
481
+ const keyPairStorage = await BrowserKeyStorage.create();
482
+ const renownCrypto = await new RenownCryptoBuilder().withKeyPairStorage(keyPairStorage).build();
483
+ const renown = await new RenownBuilder("connect", {
484
+ basename: phGlobalConfigFromEnv.routerBasename,
485
+ baseUrl: phGlobalConfigFromEnv.renownUrl
486
+ }).withCrypto(renownCrypto).build();
487
+ const packageManager = new BrowserPackageManager(phGlobalConfigFromEnv.routerBasename ?? "", PH_PACKAGE_REGISTRY_URL);
488
+ setVetraPackageManager(packageManager);
489
+ await packageManager.init(localPackage);
490
+ await packageManager.addPackages(PH_PACKAGES ?? []);
491
+ const reactorClientModule = await createBrowserReactor(packageManager.packages.flatMap((pkg) => pkg.modules.documentModelModules).filter((module, index, modules) => module !== void 0 && modules.findIndex((m) => m?.documentType === module.documentType && m.version === module.version) === index).filter((d) => d !== void 0), packageManager.packages.flatMap((pkg) => pkg.upgradeManifests).filter((u) => u !== void 0), renown);
492
+ const drives = await getDrives(reactorClientModule.client);
493
+ const path = window.location.pathname;
494
+ const driveSlug = extractDriveSlugFromPath(path);
495
+ const nodeSlug = extractNodeSlugFromPath(path);
496
+ await login(getDidFromUrl(), renown);
497
+ const documentCache = new DocumentCache(reactorClientModule.client);
498
+ setDefaultPHGlobalConfig(phGlobalConfigFromEnv);
499
+ setReactorClientModule(reactorClientModule);
500
+ setReactorClient(reactorClientModule.client);
501
+ setDocumentCache(documentCache);
502
+ setRenown(renown);
503
+ setDrives(drives);
504
+ setSelectedDrive(driveSlug);
505
+ setSelectedNode(nodeSlug);
506
+ setFeatures(features);
507
+ const defaultDrivesConfig = getDefaultDrivesFromEnv();
508
+ if (defaultDrivesConfig.length > 0) await addDefaultDrivesForNewReactor(defaultDrivesConfig);
509
+ const remoteUrl = getDriveUrl();
510
+ if (remoteUrl) try {
511
+ await addRemoteDrive(remoteUrl);
512
+ } catch (error) {
513
+ console.error(`Failed to add remote drive from ${remoteUrl}:`, error);
514
+ }
515
+ const reactorClient = reactorClientModule.client;
516
+ reactorClient.subscribe({ type: "powerhouse/document-drive" }, (event) => {
517
+ logger.verbose("ReactorClient subscription event: @event", event);
518
+ refreshReactorDataClient(reactorClientModule.client).catch((e) => logger.error("@error", e));
519
+ });
520
+ reactorClient.subscribe({}, (event) => {
521
+ if (event.type !== DocumentChangeType.Deleted) return;
522
+ const deletedId = event.context?.childId;
523
+ if (!deletedId) return;
524
+ const selectedDriveId = window.ph?.selectedDriveId;
525
+ const selectedNodeId = window.ph?.selectedNodeId;
526
+ if (selectedDriveId && deletedId === selectedDriveId) {
527
+ setSelectedDrive(void 0);
528
+ toast("The drive you were viewing has been deleted");
529
+ return;
530
+ }
531
+ if (selectedNodeId && deletedId === selectedNodeId) {
532
+ setSelectedNode(void 0);
533
+ toast("The document you were editing has been deleted");
534
+ }
535
+ });
536
+ await refreshReactorDataClient(reactorClientModule.client);
537
+ const packagesWithProcessorFactories = packageManager.packages.filter((pkg) => pkg.processorFactory !== void 0);
538
+ if (packagesWithProcessorFactories.length > 0) {
539
+ const processorHostModule = await createProcessorHostModule();
540
+ if (processorHostModule !== void 0) await Promise.all(packagesWithProcessorFactories.map(async (pkg) => {
541
+ const { id, name, processorFactory } = pkg;
542
+ logger.info("Loading processor factory: @name", name);
543
+ try {
544
+ const factory = await processorFactory(processorHostModule);
545
+ await reactorClientModule.reactorModule?.processorManager.registerFactory(id, factory);
546
+ } catch (error) {
547
+ logger.error(`Error registering processor: @name`, name);
548
+ logger.error("@error", error);
549
+ }
550
+ }));
551
+ }
552
+ window.ph.loading = false;
553
+ }
554
+ function getDidFromUrl() {
555
+ const didComponent = new URLSearchParams(window.location.search).get("user");
556
+ return didComponent ? decodeURIComponent(didComponent) : void 0;
557
+ }
558
+ function getDriveUrl() {
559
+ const driveUrl = new URLSearchParams(window.location.search).get("driveUrl");
560
+ return driveUrl ? decodeURIComponent(driveUrl) : void 0;
561
+ }
562
+ //#endregion
563
+ export { createReactor as n, clearReactorStorage as t };
564
+
565
+ //# sourceMappingURL=reactor-DFtKxPCt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactor-DFtKxPCt.js","names":["#storage","#cdnUrl","#toCdnUrl","#loadCommonPackage","#registerPackage","#loadVetraPackage","#localPackage","#packagesMemo","#loadPackage","#packages","#unmountStylesheet","#notifyPackagesChanged","#subscribers","#loadPackageFromNodeModules","#importPackage","#loadPackageFromRegistry","#mountStylesheet","#stylesheets"],"sources":["../src/utils/reactor.ts","../src/store/document-model.ts","../src/store/editor.ts","../src/feature-flags.ts","../src/package-manager.ts","../src/pglite.db.ts","../src/store/processor-host-module.ts","../src/store/reactor.ts"],"sourcesContent":["import { PGlite } from \"@electric-sql/pglite\";\nimport {\n addRemoteDrive,\n ChannelScheme,\n ReactorBuilder,\n ReactorClientBuilder,\n type BrowserReactorClientModule,\n type Database,\n type IDocumentModelLoader,\n type JwtHandler,\n type SignerConfig,\n} from \"@powerhousedao/reactor-browser\";\nimport type {\n DocumentModelModule,\n UpgradeManifest,\n} from \"@powerhousedao/shared/document-model\";\nimport { createSignatureVerifier, type IRenown } from \"@renown/sdk\";\nimport { ConsoleLogger } from \"document-model\";\nimport { Kysely } from \"kysely\";\nimport { PGliteDialect } from \"kysely-pglite-dialect\";\n\n/**\n * Creates a Reactor that plugs into legacy storage but syncs through the new\n * Reactor GQL API.\n */\nexport async function createBrowserReactor(\n documentModelModules: DocumentModelModule[],\n upgradeManifests: UpgradeManifest<readonly number[]>[],\n renown: IRenown,\n documentModelLoader?: IDocumentModelLoader,\n): Promise<BrowserReactorClientModule> {\n const signerConfig: SignerConfig = {\n signer: renown.signer,\n verifier: createSignatureVerifier(),\n };\n\n const jwtHandler: JwtHandler = async (url: string) => {\n if (!renown.user) {\n return undefined;\n }\n return renown.getBearerToken({ expiresIn: 10, aud: url });\n };\n\n const pg = new PGlite(\"idb://reactor\", {\n relaxedDurability: true,\n });\n const logger = new ConsoleLogger([\"reactor-client\"]);\n const builder = new ReactorClientBuilder()\n .withLogger(logger)\n .withSigner(signerConfig)\n .withReactorBuilder(\n new ReactorBuilder()\n .withDocumentModels(documentModelModules)\n .withUpgradeManifests(upgradeManifests)\n .withChannelScheme(ChannelScheme.CONNECT)\n .withJwtHandler(jwtHandler)\n .withKysely(\n new Kysely<Database>({\n dialect: new PGliteDialect(pg),\n }),\n ),\n );\n\n if (documentModelLoader) {\n builder.withDocumentModelLoader(documentModelLoader);\n }\n\n const module = await builder.buildModule();\n return {\n ...module,\n pg,\n } as BrowserReactorClientModule;\n}\n\n/**\n * Parse default drives from environment variable.\n * Returns an array of drive REST endpoint URLs (e.g., \"https://example.com/d/powerhouse\").\n */\nexport function getDefaultDrivesFromEnv(): string[] {\n const envValue = import.meta.env.PH_CONNECT_DEFAULT_DRIVES_URL as\n | string\n | undefined;\n if (!envValue) return [];\n return envValue.split(\",\").filter((url) => url.trim().length > 0);\n}\n\n/**\n * Add default drives for the new reactor via sync manager.\n * @param defaultDriveUrls - Array of drive REST endpoint URLs (e.g., \"https://example.com/d/powerhouse\")\n */\nexport async function addDefaultDrivesForNewReactor(\n defaultDriveUrls: string[],\n): Promise<void> {\n for (const url of defaultDriveUrls) {\n try {\n await addRemoteDrive(url);\n } catch (error) {\n console.error(`Failed to add default drive ${url}:`, error);\n }\n }\n}\n","import type { VetraDocumentModelModule } from \"@powerhousedao/reactor-browser\";\nimport { driveDocumentModelModule } from \"@powerhousedao/shared/document-drive\";\nimport {\n createState,\n defaultBaseState,\n} from \"@powerhousedao/shared/document-model\";\nimport { documentModelDocumentModelModule } from \"document-model\";\n\nexport function loadDocumentModelDocumentModelModule() {\n const global = documentModelDocumentModelModule.documentModel.global;\n const name = global.name;\n const documentType = global.id;\n const unsafeIdFromDocumentType = documentType;\n const extension = global.extension;\n const specifications = global.specifications;\n const reducer = documentModelDocumentModelModule.reducer;\n const actions = documentModelDocumentModelModule.actions;\n const utils = documentModelDocumentModelModule.utils;\n const vetraDocumentModelModule: VetraDocumentModelModule = {\n id: unsafeIdFromDocumentType,\n name,\n documentType,\n extension,\n specifications,\n reducer,\n actions,\n utils,\n documentModel: createState(defaultBaseState(), global),\n };\n return vetraDocumentModelModule;\n}\n\nexport function loadDriveDocumentModelModule() {\n const global = driveDocumentModelModule.documentModel.global;\n const name = global.name;\n const documentType = global.id;\n const unsafeIdFromDocumentType = documentType;\n const extension = global.extension;\n const specifications = global.specifications;\n const reducer = driveDocumentModelModule.reducer;\n const actions = driveDocumentModelModule.actions;\n const utils = driveDocumentModelModule.utils;\n const vetraDocumentModelModule: VetraDocumentModelModule = {\n id: unsafeIdFromDocumentType,\n name,\n documentType,\n extension,\n specifications,\n reducer,\n actions,\n utils,\n documentModel: createState(defaultBaseState(), global),\n };\n return vetraDocumentModelModule;\n}\n","import {\n DocumentModelEditor,\n GenericDriveExplorer,\n} from \"@powerhousedao/powerhouse-vetra-packages/editors\";\nimport type { VetraEditorModule } from \"@powerhousedao/reactor-browser\";\nimport { DEFAULT_DRIVE_EDITOR_ID } from \"@powerhousedao/reactor-browser\";\n\nexport function loadGenericDriveExplorerEditorModule(): VetraEditorModule {\n const name = \"Generic Drive Explorer\";\n const documentTypes = [\"powerhouse/document-drive\"];\n const Component = GenericDriveExplorer.Component;\n const vetraEditorModule: VetraEditorModule = {\n id: DEFAULT_DRIVE_EDITOR_ID,\n name,\n documentTypes,\n Component,\n };\n return vetraEditorModule;\n}\n\nexport function loadDocumentModelEditor(): VetraEditorModule {\n const name = \"Document Model Editor\";\n const id = \"document-model-editor-v2\";\n const documentTypes = [\"powerhouse/document-model\"];\n const Component = DocumentModelEditor.Component;\n const vetraEditorModule: VetraEditorModule = {\n id,\n name,\n documentTypes,\n Component,\n };\n return vetraEditorModule;\n}\n","import {\n OpenFeature,\n type ErrorCode,\n type JsonValue,\n type Provider,\n type ResolutionDetails,\n} from \"@openfeature/web-sdk\";\nimport { logger, setLogLevel, type ILogger } from \"document-model\";\nimport { connectConfig } from \"./connect.config.js\";\n\n/**\n * QueryParamProvider reads feature flags from URL query parameters.\n *\n * Usage:\n * const params = new URLSearchParams(window.location.search);\n * const provider = new QueryParamProvider(params);\n * await OpenFeature.setProviderAndWait(provider);\n *\n * Query parameter format:\n * ?FEATURE_DUAL_ACTION_CREATE_ENABLED=true&FEATURE_FOO=false\n */\nexport class QueryParamProvider implements Provider {\n public readonly runsOn = \"client\" as const;\n\n readonly metadata = {\n name: \"QueryParamProvider\",\n } as const;\n\n private flags: Map<string, string>;\n\n constructor(searchParams: URLSearchParams) {\n this.flags = new Map();\n\n // Extract all query parameters that look like feature flags\n for (const [key, value] of searchParams.entries()) {\n this.flags.set(key, value);\n }\n }\n\n resolveBooleanEvaluation(\n flagKey: string,\n defaultValue: boolean,\n ): ResolutionDetails<boolean> {\n const value = this.flags.get(flagKey);\n\n if (value === undefined) {\n return {\n value: defaultValue,\n reason: \"DEFAULT\",\n };\n }\n\n // Parse boolean from string\n const boolValue = value.toLowerCase() === \"true\" || value === \"1\";\n\n return {\n value: boolValue,\n reason: \"STATIC\",\n variant: value,\n };\n }\n\n resolveStringEvaluation(\n flagKey: string,\n defaultValue: string,\n ): ResolutionDetails<string> {\n const value = this.flags.get(flagKey);\n\n if (value === undefined) {\n return {\n value: defaultValue,\n reason: \"DEFAULT\",\n };\n }\n\n return {\n value,\n reason: \"STATIC\",\n variant: value,\n };\n }\n\n resolveNumberEvaluation(\n flagKey: string,\n defaultValue: number,\n ): ResolutionDetails<number> {\n const value = this.flags.get(flagKey);\n\n if (value === undefined) {\n return {\n value: defaultValue,\n reason: \"DEFAULT\",\n };\n }\n\n const numValue = Number(value);\n\n if (isNaN(numValue)) {\n return {\n value: defaultValue,\n reason: \"ERROR\",\n errorCode: \"PARSE_ERROR\" as ErrorCode,\n errorMessage: `Failed to parse \"${value}\" as a number`,\n };\n }\n\n return {\n value: numValue,\n reason: \"STATIC\",\n variant: value,\n };\n }\n\n resolveObjectEvaluation<T extends JsonValue>(\n flagKey: string,\n defaultValue: T,\n ): ResolutionDetails<T> {\n const value = this.flags.get(flagKey);\n\n if (value === undefined) {\n return {\n value: defaultValue,\n reason: \"DEFAULT\",\n };\n }\n\n try {\n const objValue = JSON.parse(value) as T;\n return {\n value: objValue,\n reason: \"STATIC\",\n variant: value,\n };\n } catch (error) {\n return {\n value: defaultValue,\n reason: \"ERROR\",\n errorCode: \"PARSE_ERROR\" as ErrorCode,\n errorMessage: `Failed to parse JSON: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n }\n}\n\n/**\n * Initialize OpenFeature with the QueryParamProvider.\n * Reads feature flags from query parameters.\n */\nexport async function initFeatureFlags(\n searchParams?: URLSearchParams,\n): Promise<Map<string, boolean>> {\n const params =\n searchParams ??\n (typeof window !== \"undefined\"\n ? new URLSearchParams(window.location.search)\n : new URLSearchParams());\n const provider = new QueryParamProvider(params);\n await OpenFeature.setProviderAndWait(provider);\n\n const features = new Map<string, boolean>();\n const client = OpenFeature.getClient();\n\n // Query param overrides env var for inspector\n const inspectorFromParam = params.has(FEATURE_INSPECTOR_ENABLED);\n const inspectorEnabled = inspectorFromParam\n ? client.getBooleanValue(\n FEATURE_INSPECTOR_ENABLED,\n FEATURE_INSPECTOR_ENABLED_DEFAULT,\n )\n : connectConfig.content.inspectorEnabled;\n features.set(FEATURE_INSPECTOR_ENABLED, inspectorEnabled);\n\n // Handle LOG_LEVEL query param override\n const logLevelParam = params.get(\"LOG_LEVEL\");\n if (logLevelParam) {\n const validLogLevels = [\"verbose\", \"debug\", \"info\", \"warn\", \"error\"];\n if (validLogLevels.includes(logLevelParam.toLowerCase())) {\n setLogLevel(logLevelParam.toLowerCase() as ILogger[\"level\"]);\n logger.info(\n \"Log level set to @level via query param\",\n logLevelParam.toLowerCase(),\n );\n } else {\n logger.warn(\n \"Invalid LOG_LEVEL query param: @param. Valid values: @validLevels\",\n logLevelParam,\n validLogLevels.join(\", \"),\n );\n }\n }\n\n return features;\n}\n\nconst FEATURE_INSPECTOR_ENABLED = \"FEATURE_INSPECTOR_ENABLED\";\nconst FEATURE_INSPECTOR_ENABLED_DEFAULT = false;\n\n/**\n * If true, shows the inspector button in the sidebar.\n * Defaults to false (hidden).\n */\nexport async function isInspectorEnabled(): Promise<boolean> {\n const client = OpenFeature.getClient();\n return Promise.resolve(\n client.getBooleanValue(\n FEATURE_INSPECTOR_ENABLED,\n FEATURE_INSPECTOR_ENABLED_DEFAULT,\n ),\n );\n}\n","import type {\n IPackagesListener,\n PackageManagerInstallResult,\n VetraPackage,\n} from \"@powerhousedao/reactor-browser\";\nimport {\n BrowserLocalStorage,\n COMMON_PACKAGE_ID,\n convertLegacyLibToVetraPackage,\n type IPackageListerUnsubscribe,\n type IPackageManager,\n} from \"@powerhousedao/reactor-browser\";\nimport {\n type DocumentModelLib,\n type DocumentModelModule,\n} from \"@powerhousedao/shared/document-model\";\nimport * as vetraVetraPackage from \"@powerhousedao/vetra\";\nimport {\n loadDocumentModelDocumentModelModule,\n loadDriveDocumentModelModule,\n} from \"./store/document-model.js\";\nimport {\n loadDocumentModelEditor,\n loadGenericDriveExplorerEditorModule,\n} from \"./store/editor.js\";\n\ntype PackageMeta = {\n name: string;\n importUrl: string | null;\n stylesheetUrl: string | null;\n};\n\ntype PackageWithMeta = PackageMeta & {\n loadedPackage: VetraPackage;\n};\n\nconst LOCAL_PACKAGE_NAME = \"Local\" as const;\nconst COMMON_PACKAGE_NAME = \"Common\" as const;\n\nexport class BrowserPackageManager implements IPackageManager {\n registryUrl: string | null;\n #storage: BrowserLocalStorage<PackageMeta>;\n #packages: Map<string, VetraPackage> = new Map();\n #subscribers = new Set<IPackagesListener>();\n #packagesMemo: VetraPackage[] = [];\n #stylesheets: Map<string, HTMLLinkElement> = new Map();\n #localPackage: VetraPackage | undefined;\n\n #cdnUrl: string | null;\n\n constructor(namespace: string, registryUrl: string | null) {\n this.#storage = new BrowserLocalStorage<PackageMeta>(\n namespace + \":PH_PACKAGES\",\n );\n this.registryUrl = registryUrl;\n this.#cdnUrl = registryUrl !== null ? this.#toCdnUrl(registryUrl) : null;\n }\n\n #toCdnUrl(baseUrl: string): string {\n if (baseUrl.includes(\"/-/cdn\")) return baseUrl;\n const base = baseUrl.endsWith(\"/\") ? baseUrl.slice(0, -1) : baseUrl;\n return `${base}/-/cdn`;\n }\n\n async init(localPackage?: VetraPackage) {\n for (const packageName of this.#storage.keys()) {\n await this.addPackage(packageName);\n }\n const commonPackageWithMeta = this.#loadCommonPackage();\n this.#registerPackage(commonPackageWithMeta);\n const vetraVetraPackageWithMeta = this.#loadVetraPackage();\n this.#registerPackage(vetraVetraPackageWithMeta);\n if (localPackage) {\n this.#localPackage = localPackage;\n this.#registerPackage({\n name: LOCAL_PACKAGE_NAME,\n stylesheetUrl: null,\n importUrl: null,\n loadedPackage: localPackage,\n });\n }\n }\n\n get packages() {\n return this.#packagesMemo;\n }\n\n getPackageSource(packageName: string) {\n // check vs the constant name we use for common packages\n if (\n packageName === COMMON_PACKAGE_NAME ||\n packageName === \"@powerhousedao/vetra\"\n )\n return \"common\";\n // check if the package has the same name as the local project\n if (packageName === this.#localPackage?.name) return \"project\";\n const packageMeta = this.#storage.get(packageName);\n // if meta does not exist the package is not installed\n if (!packageMeta) return null;\n // if imported from node_modules then the package is installed locally\n if (packageMeta.importUrl === `/node_modules/${packageName}`)\n return \"local-install\";\n // all other import urls point to a registry\n return \"registry-install\";\n }\n\n async addPackage(packageName: string) {\n const packageWithMeta = await this.#loadPackage(packageName);\n if (!packageWithMeta)\n return {\n type: \"error\" as const,\n error: new Error(\n \"Failed to load package. See console debug for outputs.\",\n ),\n };\n\n this.#registerPackage(packageWithMeta);\n\n return {\n type: \"success\" as const,\n package: packageWithMeta.loadedPackage,\n };\n }\n\n async addPackages(packageNames: string[]) {\n const results: PackageManagerInstallResult[] = [];\n for (const packageName of packageNames) {\n const result = await this.addPackage(packageName);\n results.push(result);\n }\n return results;\n }\n\n removePackage(name: string) {\n this.#packages.delete(name);\n this.#storage.delete(name);\n this.#unmountStylesheet(name);\n this.#notifyPackagesChanged();\n }\n\n subscribe(handler: IPackagesListener): IPackageListerUnsubscribe {\n this.#subscribers.add(handler);\n return () => {\n this.#subscribers.delete(handler);\n };\n }\n\n load(documentType: string): Promise<DocumentModelModule<any>> {\n const documentModelModule = Array.from(\n this.#packages\n .values()\n .flatMap((p) => p.modules.documentModelModules ?? []),\n ).find((m) => m.documentType === documentType);\n\n if (documentModelModule) return Promise.resolve(documentModelModule);\n return Promise.reject(new Error(\"Model not available\"));\n }\n\n #loadCommonPackage(): PackageWithMeta {\n const documentModelDocumentModelModule =\n loadDocumentModelDocumentModelModule();\n const driveDocumentModelModule = loadDriveDocumentModelModule();\n const documentModelEditorModule = loadDocumentModelEditor();\n const genericDriveExplorerEditorModule =\n loadGenericDriveExplorerEditorModule();\n const name = COMMON_PACKAGE_NAME;\n const importUrl = null;\n const stylesheetUrl = null;\n const loadedPackage: VetraPackage = {\n id: COMMON_PACKAGE_ID,\n name,\n description: \"Common\",\n category: \"Common\",\n author: {\n name: \"Powerhouse\",\n website: \"https://powerhousedao.com\",\n },\n modules: {\n documentModelModules: [\n documentModelDocumentModelModule,\n driveDocumentModelModule,\n ],\n editorModules: [\n documentModelEditorModule,\n genericDriveExplorerEditorModule,\n ],\n },\n upgradeManifests: [],\n };\n return {\n name,\n importUrl,\n stylesheetUrl,\n loadedPackage,\n };\n }\n\n #loadVetraPackage(): PackageWithMeta {\n const name = vetraVetraPackage.manifest.name;\n const importUrl = null;\n const stylesheetUrl = null;\n const loadedPackage: VetraPackage = convertLegacyLibToVetraPackage(\n vetraVetraPackage as DocumentModelLib,\n );\n return {\n name,\n importUrl,\n stylesheetUrl,\n loadedPackage,\n };\n }\n\n async #loadPackageFromNodeModules(\n name: string,\n ): Promise<PackageWithMeta | undefined> {\n if (import.meta.env.PROD) return;\n\n if (name === COMMON_PACKAGE_NAME || name === LOCAL_PACKAGE_NAME) return;\n const importUrl = `/node_modules/${name}/index.js`;\n const stylesheetUrl = `/node_modules/${name}/style.css`;\n\n const packageWithMeta = await this.#importPackage({\n name,\n importUrl,\n stylesheetUrl,\n });\n\n return packageWithMeta;\n }\n\n async #loadPackageFromRegistry(\n name: string,\n ): Promise<PackageWithMeta | undefined> {\n if (this.registryUrl === null) return;\n if (name === COMMON_PACKAGE_NAME || name === LOCAL_PACKAGE_NAME) return;\n\n const importUrl = `${this.#cdnUrl}/${name}/index.js`;\n const stylesheetUrl = `${this.#cdnUrl}/${name}/style.css`;\n const packageWithMeta = await this.#importPackage({\n name,\n importUrl,\n stylesheetUrl,\n });\n\n return packageWithMeta;\n }\n\n async #importPackage(packageMeta: PackageMeta) {\n const { name, importUrl, stylesheetUrl } = packageMeta;\n if (importUrl === null) return;\n\n try {\n const importedPackage = (await import(importUrl)) as DocumentModelLib;\n const loadedPackage = convertLegacyLibToVetraPackage(importedPackage);\n\n return {\n name,\n loadedPackage,\n importUrl,\n stylesheetUrl,\n };\n } catch (error) {\n console.debug(`Could not import package:`);\n console.debug({\n error,\n name,\n importUrl,\n stylesheetUrl,\n });\n return undefined;\n }\n }\n\n async #loadPackage(packageName: string) {\n let packageWithMeta: PackageWithMeta | undefined;\n\n packageWithMeta = await this.#loadPackageFromNodeModules(packageName);\n\n if (!packageWithMeta && this.registryUrl !== null) {\n packageWithMeta = await this.#loadPackageFromRegistry(packageName);\n }\n\n if (!packageWithMeta) {\n console.debug(\n `Failed to load package \"${packageName}\" from node_modules and package registry with url \"${this.registryUrl}\".`,\n );\n return undefined;\n }\n\n return packageWithMeta;\n }\n\n #registerPackage(packageWithMeta: PackageWithMeta) {\n const { name, loadedPackage, importUrl, stylesheetUrl } = packageWithMeta;\n\n if (stylesheetUrl !== null) {\n this.#mountStylesheet(name, stylesheetUrl);\n }\n this.#packages.set(name, loadedPackage);\n this.#storage.set(name, {\n name,\n importUrl,\n stylesheetUrl,\n });\n\n this.#notifyPackagesChanged();\n }\n\n #mountStylesheet(name: string, href: string) {\n const existing = this.#stylesheets.get(name);\n\n if (existing) return existing;\n\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = href;\n document.head.appendChild(link);\n\n this.#stylesheets.set(name, link);\n }\n\n #unmountStylesheet(name: string): void {\n const link = this.#stylesheets.get(name);\n if (!link) return;\n\n link.remove();\n this.#stylesheets.delete(name);\n }\n\n #notifyPackagesChanged() {\n this.#packagesMemo = Array.from(this.#packages.values());\n const packages = this.packages;\n this.#subscribers.forEach((handler) => {\n handler({ packages });\n });\n }\n}\n","import { live } from \"@electric-sql/pglite/live\";\nimport { PGliteWorker } from \"@electric-sql/pglite/worker\";\nimport { createRelationalDb } from \"@powerhousedao/shared/processors\";\nimport { Kysely } from \"kysely\";\nimport { PGliteDialect } from \"kysely-pglite-dialect\";\n\nexport async function getDb() {\n const worker = new Worker(new URL(\"./pglite.worker.js\", import.meta.url), {\n type: \"module\",\n });\n\n const pgLite = await PGliteWorker.create(worker, {\n extensions: { live },\n });\n\n const kysely = new Kysely({\n dialect: new PGliteDialect(pgLite),\n });\n\n const relationalDb = createRelationalDb(kysely);\n\n return { pgLite, relationalDb };\n}\n","import { createAnalyticsStore } from \"@powerhousedao/reactor-browser\";\nimport { type IProcessorHostModule } from \"@powerhousedao/shared/processors\";\nimport { getDb } from \"../pglite.db.js\";\n\nexport async function createProcessorHostModule(): Promise<\n IProcessorHostModule | undefined\n> {\n try {\n const { pgLite, relationalDb } = await getDb();\n const { store: analyticsStore } = await createAnalyticsStore({\n pgLite,\n });\n const processorApp = \"connect\" as const;\n return {\n relationalDb,\n analyticsStore,\n processorApp,\n };\n } catch (error) {\n console.error(`Failed to initialize processor host module:`);\n console.error(error);\n }\n}\n","import { phGlobalConfigFromEnv } from \"@powerhousedao/connect/config\";\nimport { toast } from \"@powerhousedao/connect/services\";\nimport {\n addDefaultDrivesForNewReactor,\n createBrowserReactor,\n getDefaultDrivesFromEnv,\n} from \"@powerhousedao/connect/utils\";\nimport {\n addPHEventHandlers,\n addRemoteDrive,\n DocumentCache,\n DocumentChangeType,\n dropAllReactorStorage,\n extractDriveSlugFromPath,\n extractNodeSlugFromPath,\n getDrives,\n login,\n refreshReactorDataClient,\n setDefaultPHGlobalConfig,\n setDocumentCache,\n setDrives,\n setFeatures,\n setPHToast,\n setReactorClient,\n setReactorClientModule,\n setRenown,\n setSelectedDrive,\n setSelectedNode,\n setVetraPackageManager,\n type PHToastFn,\n type VetraPackage,\n} from \"@powerhousedao/reactor-browser\";\nimport type { ProcessorFactoryBuilder } from \"@powerhousedao/shared/processors\";\nimport {\n BrowserKeyStorage,\n RenownBuilder,\n RenownCryptoBuilder,\n} from \"@renown/sdk\";\nimport { logger } from \"document-model\";\nimport { initFeatureFlags } from \"../feature-flags.js\";\nimport { BrowserPackageManager } from \"../package-manager.js\";\nimport { createProcessorHostModule } from \"./processor-host-module.js\";\n\nexport async function clearReactorStorage() {\n const pg = window.ph?.reactorClientModule?.pg;\n if (!pg) {\n throw new Error(\"PGlite not found\");\n }\n\n await dropAllReactorStorage(pg);\n\n await pg.close();\n}\n\nexport async function createReactor(localPackage?: VetraPackage) {\n if (!window.ph) {\n window.ph = {};\n }\n if (window.ph.loading) return;\n\n window.ph.loading = true;\n\n // add window event handlers for updates\n addPHEventHandlers();\n\n // register toast function for use in editor components\n setPHToast(toast as PHToastFn);\n\n // initialize feature flags\n const features = await initFeatureFlags();\n\n logger.info(\n \"Features: @features\",\n JSON.stringify(Object.fromEntries(features), null, 2),\n );\n\n // initialize renown crypto\n const keyPairStorage = await BrowserKeyStorage.create();\n const renownCrypto = await new RenownCryptoBuilder()\n .withKeyPairStorage(keyPairStorage)\n .build();\n\n // initialize Renown\n const renown = await new RenownBuilder(\"connect\", {\n basename: phGlobalConfigFromEnv.routerBasename,\n baseUrl: phGlobalConfigFromEnv.renownUrl,\n })\n .withCrypto(renownCrypto)\n .build();\n\n // initialize package manager\n const packageManager = new BrowserPackageManager(\n phGlobalConfigFromEnv.routerBasename ?? \"\",\n PH_PACKAGE_REGISTRY_URL,\n );\n setVetraPackageManager(packageManager);\n await packageManager.init(localPackage);\n await packageManager.addPackages(PH_PACKAGES ?? []);\n\n // get document models to set in the reactor (all versions)\n const documentModelModules = packageManager.packages\n .flatMap((pkg) => pkg.modules.documentModelModules)\n .filter(\n (module, index, modules) =>\n module !== undefined &&\n // deduplicate by documentType and version\n modules.findIndex(\n (m) =>\n m?.documentType === module.documentType &&\n m.version === module.version,\n ) === index,\n )\n .filter((d) => d !== undefined);\n\n // get upgrade manifests from packages\n const upgradeManifests = packageManager.packages\n .flatMap((pkg) => pkg.upgradeManifests)\n .filter((u) => u !== undefined);\n\n // create reactor v2 with all versions and upgrade manifests\n const reactorClientModule = await createBrowserReactor(\n documentModelModules,\n upgradeManifests,\n renown,\n );\n\n // get the drives from the reactor\n const drives = await getDrives(reactorClientModule.client);\n\n // set the selected drive and node from the path\n const path = window.location.pathname;\n const driveSlug = extractDriveSlugFromPath(path);\n const nodeSlug = extractNodeSlugFromPath(path);\n\n // initialize user from URL parameter\n const didFromUrl = getDidFromUrl();\n await login(didFromUrl, renown);\n\n const documentCache = new DocumentCache(reactorClientModule.client);\n\n // dispatch the events to set the values in the window object\n setDefaultPHGlobalConfig(phGlobalConfigFromEnv);\n setReactorClientModule(reactorClientModule);\n setReactorClient(reactorClientModule.client);\n setDocumentCache(documentCache);\n setRenown(renown);\n setDrives(drives);\n setSelectedDrive(driveSlug);\n setSelectedNode(nodeSlug);\n setFeatures(features);\n\n // Add default drives for new reactor (after window.ph is set up)\n const defaultDrivesConfig = getDefaultDrivesFromEnv();\n if (defaultDrivesConfig.length > 0) {\n await addDefaultDrivesForNewReactor(defaultDrivesConfig);\n }\n\n // if remoteUrl is set and drive not already existing add remote drive and open it\n const remoteUrl = getDriveUrl();\n if (remoteUrl) {\n try {\n await addRemoteDrive(remoteUrl);\n } catch (error) {\n console.error(`Failed to add remote drive from ${remoteUrl}:`, error);\n }\n }\n\n // Subscribe via ReactorClient interface\n const reactorClient = reactorClientModule.client;\n reactorClient.subscribe({ type: \"powerhouse/document-drive\" }, (event) => {\n logger.verbose(\"ReactorClient subscription event: @event\", event);\n refreshReactorDataClient(reactorClientModule.client).catch((e) =>\n logger.error(\"@error\", e),\n );\n });\n\n // Redirect when a currently-viewed document or drive is deleted remotely\n reactorClient.subscribe({}, (event) => {\n if (event.type !== DocumentChangeType.Deleted) return;\n const deletedId = event.context?.childId;\n if (!deletedId) return;\n\n const selectedDriveId = window.ph?.selectedDriveId;\n const selectedNodeId = window.ph?.selectedNodeId;\n\n if (selectedDriveId && deletedId === selectedDriveId) {\n setSelectedDrive(undefined);\n toast(\"The drive you were viewing has been deleted\");\n return;\n }\n\n if (selectedNodeId && deletedId === selectedNodeId) {\n setSelectedNode(undefined);\n toast(\"The document you were editing has been deleted\");\n }\n });\n\n // Refresh from ReactorClient to pick up any synced drives\n await refreshReactorDataClient(reactorClientModule.client);\n\n // Setup processor factories for packages that have them\n const packagesWithProcessorFactories = packageManager.packages.filter(\n (\n pkg,\n ): pkg is VetraPackage & { processorFactory: ProcessorFactoryBuilder } =>\n pkg.processorFactory !== undefined,\n );\n\n if (packagesWithProcessorFactories.length > 0) {\n const processorHostModule = await createProcessorHostModule();\n if (processorHostModule !== undefined) {\n await Promise.all(\n packagesWithProcessorFactories.map(async (pkg) => {\n const { id, name, processorFactory } = pkg;\n logger.info(\"Loading processor factory: @name\", name);\n try {\n const factory = await processorFactory(processorHostModule);\n await reactorClientModule.reactorModule?.processorManager.registerFactory(\n id,\n factory,\n );\n } catch (error) {\n logger.error(`Error registering processor: @name`, name);\n logger.error(\"@error\", error);\n }\n }),\n );\n }\n }\n\n window.ph.loading = false;\n}\n\nfunction getDidFromUrl() {\n const searchParams = new URLSearchParams(window.location.search);\n const didComponent = searchParams.get(\"user\");\n const did = didComponent ? decodeURIComponent(didComponent) : undefined;\n return did;\n}\n\nfunction getDriveUrl() {\n const searchParams = new URLSearchParams(window.location.search);\n const driveUrl = searchParams.get(\"driveUrl\");\n const url = driveUrl ? decodeURIComponent(driveUrl) : undefined;\n return url;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAyBA,eAAsB,qBACpB,sBACA,kBACA,QACA,qBACqC;CACrC,MAAM,eAA6B;EACjC,QAAQ,OAAO;EACf,UAAU,yBAAyB;EACpC;CAED,MAAM,aAAyB,OAAO,QAAgB;AACpD,MAAI,CAAC,OAAO,KACV;AAEF,SAAO,OAAO,eAAe;GAAE,WAAW;GAAI,KAAK;GAAK,CAAC;;CAG3D,MAAM,KAAK,IAAI,OAAO,iBAAiB,EACrC,mBAAmB,MACpB,CAAC;CACF,MAAM,SAAS,IAAI,cAAc,CAAC,iBAAiB,CAAC;CACpD,MAAM,UAAU,IAAI,sBAAsB,CACvC,WAAW,OAAO,CAClB,WAAW,aAAa,CACxB,mBACC,IAAI,gBAAgB,CACjB,mBAAmB,qBAAqB,CACxC,qBAAqB,iBAAiB,CACtC,kBAAkB,cAAc,QAAQ,CACxC,eAAe,WAAW,CAC1B,WACC,IAAI,OAAiB,EACnB,SAAS,IAAI,cAAc,GAAG,EAC/B,CAAC,CACH,CACJ;AAEH,KAAI,oBACF,SAAQ,wBAAwB,oBAAoB;AAItD,QAAO;EACL,GAFa,MAAM,QAAQ,aAAa;EAGxC;EACD;;;;;;AAOH,SAAgB,0BAAoC;CAClD,MAAM,WAAW,OAAO,KAAK,IAAI;AAGjC,KAAI,CAAC,SAAU,QAAO,EAAE;AACxB,QAAO,SAAS,MAAM,IAAI,CAAC,QAAQ,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE;;;;;;AAOnE,eAAsB,8BACpB,kBACe;AACf,MAAK,MAAM,OAAO,iBAChB,KAAI;AACF,QAAM,eAAe,IAAI;UAClB,OAAO;AACd,UAAQ,MAAM,+BAA+B,IAAI,IAAI,MAAM;;;;;ACzFjE,SAAgB,uCAAuC;CACrD,MAAM,SAAS,iCAAiC,cAAc;CAC9D,MAAM,OAAO,OAAO;CACpB,MAAM,eAAe,OAAO;AAkB5B,QAX2D;EACzD,IAP+B;EAQ/B;EACA;EACA,WATgB,OAAO;EAUvB,gBATqB,OAAO;EAU5B,SATc,iCAAiC;EAU/C,SATc,iCAAiC;EAU/C,OATY,iCAAiC;EAU7C,eAAe,YAAY,kBAAkB,EAAE,OAAO;EACvD;;AAIH,SAAgB,+BAA+B;CAC7C,MAAM,SAAS,yBAAyB,cAAc;CACtD,MAAM,OAAO,OAAO;CACpB,MAAM,eAAe,OAAO;AAkB5B,QAX2D;EACzD,IAP+B;EAQ/B;EACA;EACA,WATgB,OAAO;EAUvB,gBATqB,OAAO;EAU5B,SATc,yBAAyB;EAUvC,SATc,yBAAyB;EAUvC,OATY,yBAAyB;EAUrC,eAAe,YAAY,kBAAkB,EAAE,OAAO;EACvD;;;;AC7CH,SAAgB,uCAA0D;AAUxE,QAN6C;EAC3C,IAAI;EACJ,MALW;EAMX,eALoB,CAAC,4BAA4B;EAMjD,WALgB,qBAAqB;EAMtC;;AAIH,SAAgB,0BAA6C;AAW3D,QAN6C;EAC3C,IAJS;EAKT,MANW;EAOX,eALoB,CAAC,4BAA4B;EAMjD,WALgB,oBAAoB;EAMrC;;;;;;;;;;;;;;;ACTH,IAAa,qBAAb,MAAoD;CAClD,SAAyB;CAEzB,WAAoB,EAClB,MAAM,sBACP;CAED;CAEA,YAAY,cAA+B;AACzC,OAAK,wBAAQ,IAAI,KAAK;AAGtB,OAAK,MAAM,CAAC,KAAK,UAAU,aAAa,SAAS,CAC/C,MAAK,MAAM,IAAI,KAAK,MAAM;;CAI9B,yBACE,SACA,cAC4B;EAC5B,MAAM,QAAQ,KAAK,MAAM,IAAI,QAAQ;AAErC,MAAI,UAAU,KAAA,EACZ,QAAO;GACL,OAAO;GACP,QAAQ;GACT;AAMH,SAAO;GACL,OAHgB,MAAM,aAAa,KAAK,UAAU,UAAU;GAI5D,QAAQ;GACR,SAAS;GACV;;CAGH,wBACE,SACA,cAC2B;EAC3B,MAAM,QAAQ,KAAK,MAAM,IAAI,QAAQ;AAErC,MAAI,UAAU,KAAA,EACZ,QAAO;GACL,OAAO;GACP,QAAQ;GACT;AAGH,SAAO;GACL;GACA,QAAQ;GACR,SAAS;GACV;;CAGH,wBACE,SACA,cAC2B;EAC3B,MAAM,QAAQ,KAAK,MAAM,IAAI,QAAQ;AAErC,MAAI,UAAU,KAAA,EACZ,QAAO;GACL,OAAO;GACP,QAAQ;GACT;EAGH,MAAM,WAAW,OAAO,MAAM;AAE9B,MAAI,MAAM,SAAS,CACjB,QAAO;GACL,OAAO;GACP,QAAQ;GACR,WAAW;GACX,cAAc,oBAAoB,MAAM;GACzC;AAGH,SAAO;GACL,OAAO;GACP,QAAQ;GACR,SAAS;GACV;;CAGH,wBACE,SACA,cACsB;EACtB,MAAM,QAAQ,KAAK,MAAM,IAAI,QAAQ;AAErC,MAAI,UAAU,KAAA,EACZ,QAAO;GACL,OAAO;GACP,QAAQ;GACT;AAGH,MAAI;AAEF,UAAO;IACL,OAFe,KAAK,MAAM,MAAM;IAGhC,QAAQ;IACR,SAAS;IACV;WACM,OAAO;AACd,UAAO;IACL,OAAO;IACP,QAAQ;IACR,WAAW;IACX,cAAc,yBAAyB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;IAC9F;;;;;;;;AASP,eAAsB,iBACpB,cAC+B;CAC/B,MAAM,SACJ,iBACC,OAAO,WAAW,cACf,IAAI,gBAAgB,OAAO,SAAS,OAAO,GAC3C,IAAI,iBAAiB;CAC3B,MAAM,WAAW,IAAI,mBAAmB,OAAO;AAC/C,OAAM,YAAY,mBAAmB,SAAS;CAE9C,MAAM,2BAAW,IAAI,KAAsB;CAC3C,MAAM,SAAS,YAAY,WAAW;CAItC,MAAM,mBADqB,OAAO,IAAI,0BAA0B,GAE5D,OAAO,gBACL,2BACA,kCACD,GACD,cAAc,QAAQ;AAC1B,UAAS,IAAI,2BAA2B,iBAAiB;CAGzD,MAAM,gBAAgB,OAAO,IAAI,YAAY;AAC7C,KAAI,eAAe;EACjB,MAAM,iBAAiB;GAAC;GAAW;GAAS;GAAQ;GAAQ;GAAQ;AACpE,MAAI,eAAe,SAAS,cAAc,aAAa,CAAC,EAAE;AACxD,iBAAY,cAAc,aAAa,CAAqB;AAC5D,UAAO,KACL,2CACA,cAAc,aAAa,CAC5B;QAED,QAAO,KACL,qEACA,eACA,eAAe,KAAK,KAAK,CAC1B;;AAIL,QAAO;;AAGT,MAAM,4BAA4B;AAClC,MAAM,oCAAoC;;;AC/J1C,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAE5B,IAAa,wBAAb,MAA8D;CAC5D;CACA;CACA,4BAAuC,IAAI,KAAK;CAChD,+BAAe,IAAI,KAAwB;CAC3C,gBAAgC,EAAE;CAClC,+BAA6C,IAAI,KAAK;CACtD;CAEA;CAEA,YAAY,WAAmB,aAA4B;AACzD,QAAA,UAAgB,IAAI,oBAClB,YAAY,eACb;AACD,OAAK,cAAc;AACnB,QAAA,SAAe,gBAAgB,OAAO,MAAA,SAAe,YAAY,GAAG;;CAGtE,UAAU,SAAyB;AACjC,MAAI,QAAQ,SAAS,SAAS,CAAE,QAAO;AAEvC,SAAO,GADM,QAAQ,SAAS,IAAI,GAAG,QAAQ,MAAM,GAAG,GAAG,GAAG,QAC7C;;CAGjB,MAAM,KAAK,cAA6B;AACtC,OAAK,MAAM,eAAe,MAAA,QAAc,MAAM,CAC5C,OAAM,KAAK,WAAW,YAAY;EAEpC,MAAM,wBAAwB,MAAA,mBAAyB;AACvD,QAAA,gBAAsB,sBAAsB;EAC5C,MAAM,4BAA4B,MAAA,kBAAwB;AAC1D,QAAA,gBAAsB,0BAA0B;AAChD,MAAI,cAAc;AAChB,SAAA,eAAqB;AACrB,SAAA,gBAAsB;IACpB,MAAM;IACN,eAAe;IACf,WAAW;IACX,eAAe;IAChB,CAAC;;;CAIN,IAAI,WAAW;AACb,SAAO,MAAA;;CAGT,iBAAiB,aAAqB;AAEpC,MACE,gBAAgB,uBAChB,gBAAgB,uBAEhB,QAAO;AAET,MAAI,gBAAgB,MAAA,cAAoB,KAAM,QAAO;EACrD,MAAM,cAAc,MAAA,QAAc,IAAI,YAAY;AAElD,MAAI,CAAC,YAAa,QAAO;AAEzB,MAAI,YAAY,cAAc,iBAAiB,cAC7C,QAAO;AAET,SAAO;;CAGT,MAAM,WAAW,aAAqB;EACpC,MAAM,kBAAkB,MAAM,MAAA,YAAkB,YAAY;AAC5D,MAAI,CAAC,gBACH,QAAO;GACL,MAAM;GACN,uBAAO,IAAI,MACT,yDACD;GACF;AAEH,QAAA,gBAAsB,gBAAgB;AAEtC,SAAO;GACL,MAAM;GACN,SAAS,gBAAgB;GAC1B;;CAGH,MAAM,YAAY,cAAwB;EACxC,MAAM,UAAyC,EAAE;AACjD,OAAK,MAAM,eAAe,cAAc;GACtC,MAAM,SAAS,MAAM,KAAK,WAAW,YAAY;AACjD,WAAQ,KAAK,OAAO;;AAEtB,SAAO;;CAGT,cAAc,MAAc;AAC1B,QAAA,SAAe,OAAO,KAAK;AAC3B,QAAA,QAAc,OAAO,KAAK;AAC1B,QAAA,kBAAwB,KAAK;AAC7B,QAAA,uBAA6B;;CAG/B,UAAU,SAAuD;AAC/D,QAAA,YAAkB,IAAI,QAAQ;AAC9B,eAAa;AACX,SAAA,YAAkB,OAAO,QAAQ;;;CAIrC,KAAK,cAAyD;EAC5D,MAAM,sBAAsB,MAAM,KAChC,MAAA,SACG,QAAQ,CACR,SAAS,MAAM,EAAE,QAAQ,wBAAwB,EAAE,CAAC,CACxD,CAAC,MAAM,MAAM,EAAE,iBAAiB,aAAa;AAE9C,MAAI,oBAAqB,QAAO,QAAQ,QAAQ,oBAAoB;AACpE,SAAO,QAAQ,uBAAO,IAAI,MAAM,sBAAsB,CAAC;;CAGzD,qBAAsC;EACpC,MAAM,mCACJ,sCAAsC;EACxC,MAAM,2BAA2B,8BAA8B;EAC/D,MAAM,4BAA4B,yBAAyB;EAC3D,MAAM,mCACJ,sCAAsC;EACxC,MAAM,OAAO;AAwBb,SAAO;GACL;GACA,WAzBgB;GA0BhB,eAzBoB;GA0BpB,eAzBkC;IAClC,IAAI;IACJ;IACA,aAAa;IACb,UAAU;IACV,QAAQ;KACN,MAAM;KACN,SAAS;KACV;IACD,SAAS;KACP,sBAAsB,CACpB,kCACA,yBACD;KACD,eAAe,CACb,2BACA,iCACD;KACF;IACD,kBAAkB,EAAE;IACrB;GAMA;;CAGH,oBAAqC;AAOnC,SAAO;GACL,MAPW,kBAAkB,SAAS;GAQtC,WAPgB;GAQhB,eAPoB;GAQpB,eAPkC,+BAClC,kBACD;GAMA;;CAGH,OAAA,2BACE,MACsC;AACtC,MAAI,OAAO,KAAK,IAAI,KAAM;AAE1B,MAAI,SAAS,uBAAuB,SAAS,mBAAoB;EACjE,MAAM,YAAY,iBAAiB,KAAK;EACxC,MAAM,gBAAgB,iBAAiB,KAAK;AAQ5C,SANwB,MAAM,MAAA,cAAoB;GAChD;GACA;GACA;GACD,CAAC;;CAKJ,OAAA,wBACE,MACsC;AACtC,MAAI,KAAK,gBAAgB,KAAM;AAC/B,MAAI,SAAS,uBAAuB,SAAS,mBAAoB;EAEjE,MAAM,YAAY,GAAG,MAAA,OAAa,GAAG,KAAK;EAC1C,MAAM,gBAAgB,GAAG,MAAA,OAAa,GAAG,KAAK;AAO9C,SANwB,MAAM,MAAA,cAAoB;GAChD;GACA;GACA;GACD,CAAC;;CAKJ,OAAA,cAAqB,aAA0B;EAC7C,MAAM,EAAE,MAAM,WAAW,kBAAkB;AAC3C,MAAI,cAAc,KAAM;AAExB,MAAI;AAIF,UAAO;IACL;IACA,eAJoB,+BADG,MAAM,OAAO,WAC+B;IAKnE;IACA;IACD;WACM,OAAO;AACd,WAAQ,MAAM,4BAA4B;AAC1C,WAAQ,MAAM;IACZ;IACA;IACA;IACA;IACD,CAAC;AACF;;;CAIJ,OAAA,YAAmB,aAAqB;EACtC,IAAI;AAEJ,oBAAkB,MAAM,MAAA,2BAAiC,YAAY;AAErE,MAAI,CAAC,mBAAmB,KAAK,gBAAgB,KAC3C,mBAAkB,MAAM,MAAA,wBAA8B,YAAY;AAGpE,MAAI,CAAC,iBAAiB;AACpB,WAAQ,MACN,2BAA2B,YAAY,qDAAqD,KAAK,YAAY,IAC9G;AACD;;AAGF,SAAO;;CAGT,iBAAiB,iBAAkC;EACjD,MAAM,EAAE,MAAM,eAAe,WAAW,kBAAkB;AAE1D,MAAI,kBAAkB,KACpB,OAAA,gBAAsB,MAAM,cAAc;AAE5C,QAAA,SAAe,IAAI,MAAM,cAAc;AACvC,QAAA,QAAc,IAAI,MAAM;GACtB;GACA;GACA;GACD,CAAC;AAEF,QAAA,uBAA6B;;CAG/B,iBAAiB,MAAc,MAAc;EAC3C,MAAM,WAAW,MAAA,YAAkB,IAAI,KAAK;AAE5C,MAAI,SAAU,QAAO;EAErB,MAAM,OAAO,SAAS,cAAc,OAAO;AAC3C,OAAK,MAAM;AACX,OAAK,OAAO;AACZ,WAAS,KAAK,YAAY,KAAK;AAE/B,QAAA,YAAkB,IAAI,MAAM,KAAK;;CAGnC,mBAAmB,MAAoB;EACrC,MAAM,OAAO,MAAA,YAAkB,IAAI,KAAK;AACxC,MAAI,CAAC,KAAM;AAEX,OAAK,QAAQ;AACb,QAAA,YAAkB,OAAO,KAAK;;CAGhC,yBAAyB;AACvB,QAAA,eAAqB,MAAM,KAAK,MAAA,SAAe,QAAQ,CAAC;EACxD,MAAM,WAAW,KAAK;AACtB,QAAA,YAAkB,SAAS,YAAY;AACrC,WAAQ,EAAE,UAAU,CAAC;IACrB;;;;;ACxUN,eAAsB,QAAQ;CAC5B,MAAM,SAAS,IAAI,OAAO,IAAI,IAAI,sBAAsB,OAAO,KAAK,IAAI,EAAE,EACxE,MAAM,UACP,CAAC;CAEF,MAAM,SAAS,MAAM,aAAa,OAAO,QAAQ,EAC/C,YAAY,EAAE,MAAM,EACrB,CAAC;AAQF,QAAO;EAAE;EAAQ,cAFI,mBAJN,IAAI,OAAO,EACxB,SAAS,IAAI,cAAc,OAAO,EACnC,CAAC,CAE6C;EAEhB;;;;ACjBjC,eAAsB,4BAEpB;AACA,KAAI;EACF,MAAM,EAAE,QAAQ,iBAAiB,MAAM,OAAO;EAC9C,MAAM,EAAE,OAAO,mBAAmB,MAAM,qBAAqB,EAC3D,QACD,CAAC;AAEF,SAAO;GACL;GACA;GACA,cAJmB;GAKpB;UACM,OAAO;AACd,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,MAAM,MAAM;;;;;ACuBxB,eAAsB,sBAAsB;CAC1C,MAAM,KAAK,OAAO,IAAI,qBAAqB;AAC3C,KAAI,CAAC,GACH,OAAM,IAAI,MAAM,mBAAmB;AAGrC,OAAM,sBAAsB,GAAG;AAE/B,OAAM,GAAG,OAAO;;AAGlB,eAAsB,cAAc,cAA6B;AAC/D,KAAI,CAAC,OAAO,GACV,QAAO,KAAK,EAAE;AAEhB,KAAI,OAAO,GAAG,QAAS;AAEvB,QAAO,GAAG,UAAU;AAGpB,qBAAoB;AAGpB,YAAW,MAAmB;CAG9B,MAAM,WAAW,MAAM,kBAAkB;AAEzC,QAAO,KACL,uBACA,KAAK,UAAU,OAAO,YAAY,SAAS,EAAE,MAAM,EAAE,CACtD;CAGD,MAAM,iBAAiB,MAAM,kBAAkB,QAAQ;CACvD,MAAM,eAAe,MAAM,IAAI,qBAAqB,CACjD,mBAAmB,eAAe,CAClC,OAAO;CAGV,MAAM,SAAS,MAAM,IAAI,cAAc,WAAW;EAChD,UAAU,sBAAsB;EAChC,SAAS,sBAAsB;EAChC,CAAC,CACC,WAAW,aAAa,CACxB,OAAO;CAGV,MAAM,iBAAiB,IAAI,sBACzB,sBAAsB,kBAAkB,IACxC,wBACD;AACD,wBAAuB,eAAe;AACtC,OAAM,eAAe,KAAK,aAAa;AACvC,OAAM,eAAe,YAAY,eAAe,EAAE,CAAC;CAuBnD,MAAM,sBAAsB,MAAM,qBApBL,eAAe,SACzC,SAAS,QAAQ,IAAI,QAAQ,qBAAqB,CAClD,QACE,QAAQ,OAAO,YACd,WAAW,KAAA,KAEX,QAAQ,WACL,MACC,GAAG,iBAAiB,OAAO,gBAC3B,EAAE,YAAY,OAAO,QACxB,KAAK,MACT,CACA,QAAQ,MAAM,MAAM,KAAA,EAAU,EAGR,eAAe,SACrC,SAAS,QAAQ,IAAI,iBAAiB,CACtC,QAAQ,MAAM,MAAM,KAAA,EAAU,EAM/B,OACD;CAGD,MAAM,SAAS,MAAM,UAAU,oBAAoB,OAAO;CAG1D,MAAM,OAAO,OAAO,SAAS;CAC7B,MAAM,YAAY,yBAAyB,KAAK;CAChD,MAAM,WAAW,wBAAwB,KAAK;AAI9C,OAAM,MADa,eAAe,EACV,OAAO;CAE/B,MAAM,gBAAgB,IAAI,cAAc,oBAAoB,OAAO;AAGnE,0BAAyB,sBAAsB;AAC/C,wBAAuB,oBAAoB;AAC3C,kBAAiB,oBAAoB,OAAO;AAC5C,kBAAiB,cAAc;AAC/B,WAAU,OAAO;AACjB,WAAU,OAAO;AACjB,kBAAiB,UAAU;AAC3B,iBAAgB,SAAS;AACzB,aAAY,SAAS;CAGrB,MAAM,sBAAsB,yBAAyB;AACrD,KAAI,oBAAoB,SAAS,EAC/B,OAAM,8BAA8B,oBAAoB;CAI1D,MAAM,YAAY,aAAa;AAC/B,KAAI,UACF,KAAI;AACF,QAAM,eAAe,UAAU;UACxB,OAAO;AACd,UAAQ,MAAM,mCAAmC,UAAU,IAAI,MAAM;;CAKzE,MAAM,gBAAgB,oBAAoB;AAC1C,eAAc,UAAU,EAAE,MAAM,6BAA6B,GAAG,UAAU;AACxE,SAAO,QAAQ,4CAA4C,MAAM;AACjE,2BAAyB,oBAAoB,OAAO,CAAC,OAAO,MAC1D,OAAO,MAAM,UAAU,EAAE,CAC1B;GACD;AAGF,eAAc,UAAU,EAAE,GAAG,UAAU;AACrC,MAAI,MAAM,SAAS,mBAAmB,QAAS;EAC/C,MAAM,YAAY,MAAM,SAAS;AACjC,MAAI,CAAC,UAAW;EAEhB,MAAM,kBAAkB,OAAO,IAAI;EACnC,MAAM,iBAAiB,OAAO,IAAI;AAElC,MAAI,mBAAmB,cAAc,iBAAiB;AACpD,oBAAiB,KAAA,EAAU;AAC3B,SAAM,8CAA8C;AACpD;;AAGF,MAAI,kBAAkB,cAAc,gBAAgB;AAClD,mBAAgB,KAAA,EAAU;AAC1B,SAAM,iDAAiD;;GAEzD;AAGF,OAAM,yBAAyB,oBAAoB,OAAO;CAG1D,MAAM,iCAAiC,eAAe,SAAS,QAE3D,QAEA,IAAI,qBAAqB,KAAA,EAC5B;AAED,KAAI,+BAA+B,SAAS,GAAG;EAC7C,MAAM,sBAAsB,MAAM,2BAA2B;AAC7D,MAAI,wBAAwB,KAAA,EAC1B,OAAM,QAAQ,IACZ,+BAA+B,IAAI,OAAO,QAAQ;GAChD,MAAM,EAAE,IAAI,MAAM,qBAAqB;AACvC,UAAO,KAAK,oCAAoC,KAAK;AACrD,OAAI;IACF,MAAM,UAAU,MAAM,iBAAiB,oBAAoB;AAC3D,UAAM,oBAAoB,eAAe,iBAAiB,gBACxD,IACA,QACD;YACM,OAAO;AACd,WAAO,MAAM,sCAAsC,KAAK;AACxD,WAAO,MAAM,UAAU,MAAM;;IAE/B,CACH;;AAIL,QAAO,GAAG,UAAU;;AAGtB,SAAS,gBAAgB;CAEvB,MAAM,eADe,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAC9B,IAAI,OAAO;AAE7C,QADY,eAAe,mBAAmB,aAAa,GAAG,KAAA;;AAIhE,SAAS,cAAc;CAErB,MAAM,WADe,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAClC,IAAI,WAAW;AAE7C,QADY,WAAW,mBAAmB,SAAS,GAAG,KAAA"}