@powerhousedao/connect 4.1.0-dev.11 → 4.1.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.
- package/{dist/.env → .env} +5 -7
- package/README.md +3 -4
- package/assets/icon.icns +0 -0
- package/assets/icon.ico +0 -0
- package/assets/icon.png +0 -0
- package/assets/icons/Atlas-Logomark.svg +24 -0
- package/assets/icons/BBP-logo-hover-dark.svg +14 -0
- package/assets/icons/BBP-logo-hover-light.svg +14 -0
- package/assets/icons/BBP-logo-main.svg +14 -0
- package/assets/icons/collapse.svg +7 -0
- package/assets/icons/connect-small.svg +3 -0
- package/assets/icons/connect.svg +16 -0
- package/assets/icons/cross.svg +4 -0
- package/assets/icons/dark.svg +5 -0
- package/assets/icons/draft.svg +3 -0
- package/assets/icons/file.svg +3 -0
- package/assets/icons/file2.svg +10 -0
- package/assets/icons/folder.svg +3 -0
- package/assets/icons/light.svg +20 -0
- package/assets/icons/logo.svg +11 -0
- package/assets/icons/plus-circle.svg +5 -0
- package/assets/icons/refresh.svg +4 -0
- package/assets/icons/renown.svg +27 -0
- package/assets/icons/settings.svg +6 -0
- package/assets/icons/template.svg +3 -0
- package/assets/info.plist +85 -0
- package/dist/assets/AddDriveModal-DxzkGUoU.js +1 -0
- package/dist/assets/ClearStorageModal-BKqeaqVc.js +1 -0
- package/dist/assets/CookiesPolicyModal-DoOAAbgS.js +1 -0
- package/dist/assets/CreateDocumentModal-CpbJt2MG.js +1 -0
- package/dist/assets/DebugSettingsModal-l77zW03G.js +1 -0
- package/dist/assets/DeleteDriveModal-C3FfnniV.js +1 -0
- package/dist/assets/DeleteItemModal-BemSEf0J.js +1 -0
- package/dist/assets/DisclaimerModal-Bx6sn1p0.js +1 -0
- package/dist/assets/DriveSettingsModal-Db-UDGAM.js +1 -0
- package/dist/assets/ExportDocumentWithErrorsModal-COWWjtzM.js +1 -0
- package/dist/assets/SettingsModal-3W1XLipd.js +1 -0
- package/dist/assets/UpgradeDriveModal-BVNqQqRU.js +1 -0
- package/dist/assets/_virtual_ph_external-packages-CM1tCR4L.js +1 -0
- package/dist/assets/config-CU-aFfVJ.js +1 -0
- package/dist/assets/design_system-BzocxAs0.js +45 -0
- package/dist/assets/design_system_connect-DjKMS_YB.js +45 -0
- package/dist/assets/design_system_ui-DgRp0MRr.js +1 -0
- package/dist/assets/document_drive-BEIKnuGM.js +305 -0
- package/dist/assets/document_engineering-4d0IV_Zv.js +1 -0
- package/dist/assets/document_model-DXcLJEjZ.js +230 -0
- package/dist/assets/document_model_editor-CiZRsEBL.js +23 -0
- package/dist/assets/drive_explorer-Ltb9MzaI.js +2 -0
- package/dist/assets/graphql-BS4Brs_E.js +75 -0
- package/dist/assets/graphql-editor-Vwbfb243.js +73 -0
- package/dist/assets/graphql_request-9RNJ00DB.js +3 -0
- package/dist/assets/hmr-LMNkvzP7.js +1 -0
- package/dist/assets/hooks-UsE4RXsD.js +12 -0
- package/dist/assets/index-Br7E7qjt.css +1 -0
- package/dist/assets/index-ChH_VcwA.js +18 -0
- package/dist/assets/json-editor-B3jHnGSL.js +1 -0
- package/dist/assets/react/jsx-runtime-DldvXD6N.js +1 -0
- package/dist/assets/react-DQSxOgtG.js +1 -0
- package/dist/assets/react-dom/client-BVPiT_FE.js +9 -0
- package/dist/assets/react-dom-D6zQJsh6.js +1 -0
- package/dist/assets/reactor_browser-BOvVQIWy.js +25 -0
- package/dist/assets/sentry_browser-B4YoBIIG.js +498 -0
- package/dist/assets/sentry_react-cODD7zWc.js +3 -0
- package/dist/assets/state-schemas-ULSdWLm-.js +2 -0
- package/dist/assets/tailwind_merge-Dr4f9Rms.js +1 -0
- package/dist/assets/zod-C6yxFxyo.js +1 -0
- package/dist/index.html +51 -84
- package/heroku/Dockerfile +98 -0
- package/heroku/Procfile +1 -0
- package/heroku/config/nginx.conf.template +77 -0
- package/heroku/heroku-entrypoint.sh +38 -0
- package/lib/cypress/e2e/navigation.cy.d.ts +2 -0
- package/lib/cypress/e2e/navigation.cy.d.ts.map +1 -0
- package/lib/cypress/e2e/navigation.cy.js +221 -0
- package/lib/cypress/e2e/navigation.cy.js.map +1 -0
- package/lib/cypress/e2e/utils/index.d.ts +15 -0
- package/lib/cypress/e2e/utils/index.d.ts.map +1 -0
- package/lib/cypress/e2e/utils/index.js +121 -0
- package/lib/cypress/e2e/utils/index.js.map +1 -0
- package/lib/cypress/support/commands.d.ts +2 -0
- package/lib/cypress/support/commands.d.ts.map +1 -0
- package/lib/cypress/support/commands.js +29 -0
- package/lib/cypress/support/commands.js.map +1 -0
- package/lib/cypress/support/e2e.d.ts +2 -0
- package/lib/cypress/support/e2e.d.ts.map +1 -0
- package/lib/cypress/support/e2e.js +19 -0
- package/lib/cypress/support/e2e.js.map +1 -0
- package/lib/cypress.config.d.ts +3 -0
- package/lib/cypress.config.d.ts.map +1 -0
- package/lib/cypress.config.js +15 -0
- package/lib/cypress.config.js.map +1 -0
- package/lib/package.copy.json +165 -0
- package/lib/scripts/render-skeleton.d.ts +2 -0
- package/lib/scripts/render-skeleton.d.ts.map +1 -0
- package/lib/scripts/render-skeleton.js +11 -0
- package/lib/scripts/render-skeleton.js.map +1 -0
- package/lib/src/components/analytics.d.ts +8 -0
- package/lib/src/components/analytics.d.ts.map +1 -0
- package/lib/src/components/analytics.js +30 -0
- package/lib/src/components/analytics.js.map +1 -0
- package/lib/src/components/app-loader.d.ts +7 -0
- package/lib/src/components/app-loader.d.ts.map +1 -0
- package/lib/src/components/app-loader.js +20 -0
- package/lib/src/components/app-loader.js.map +1 -0
- package/lib/src/components/app-skeleton.d.ts +3 -0
- package/lib/src/components/app-skeleton.d.ts.map +1 -0
- package/lib/src/components/app-skeleton.js +38 -0
- package/lib/src/components/app-skeleton.js.map +1 -0
- package/lib/src/components/app.d.ts +2 -0
- package/lib/src/components/app.d.ts.map +1 -0
- package/lib/src/components/app.js +18 -0
- package/lib/src/components/app.js.map +1 -0
- package/lib/src/components/button.d.ts +3 -0
- package/lib/src/components/button.d.ts.map +1 -0
- package/lib/src/components/button.js +7 -0
- package/lib/src/components/button.js.map +1 -0
- package/lib/src/components/cookie-banner.d.ts +2 -0
- package/lib/src/components/cookie-banner.d.ts.map +1 -0
- package/lib/src/components/cookie-banner.js +48 -0
- package/lib/src/components/cookie-banner.js.map +1 -0
- package/lib/src/components/document-editor-container.d.ts +2 -0
- package/lib/src/components/document-editor-container.d.ts.map +1 -0
- package/lib/src/components/document-editor-container.js +62 -0
- package/lib/src/components/document-editor-container.js.map +1 -0
- package/lib/src/components/dots-loader.d.ts +2 -0
- package/lib/src/components/dots-loader.d.ts.map +1 -0
- package/lib/src/components/dots-loader.js +15 -0
- package/lib/src/components/dots-loader.js.map +1 -0
- package/lib/src/components/drive-editor-container.d.ts +2 -0
- package/lib/src/components/drive-editor-container.d.ts.map +1 -0
- package/lib/src/components/drive-editor-container.js +25 -0
- package/lib/src/components/drive-editor-container.js.map +1 -0
- package/lib/src/components/drive-icon.d.ts +5 -0
- package/lib/src/components/drive-icon.d.ts.map +1 -0
- package/lib/src/components/drive-icon.js +15 -0
- package/lib/src/components/drive-icon.js.map +1 -0
- package/lib/src/components/editor-loader.d.ts +9 -0
- package/lib/src/components/editor-loader.d.ts.map +1 -0
- package/lib/src/components/editor-loader.js +19 -0
- package/lib/src/components/editor-loader.js.map +1 -0
- package/lib/src/components/editors.d.ts +10 -0
- package/lib/src/components/editors.d.ts.map +1 -0
- package/lib/src/components/editors.js +93 -0
- package/lib/src/components/editors.js.map +1 -0
- package/lib/src/components/footer.d.ts +2 -0
- package/lib/src/components/footer.d.ts.map +1 -0
- package/lib/src/components/footer.js +16 -0
- package/lib/src/components/footer.js.map +1 -0
- package/lib/src/components/index.d.ts +22 -0
- package/lib/src/components/index.d.ts.map +1 -0
- package/lib/src/components/index.js +22 -0
- package/lib/src/components/index.js.map +1 -0
- package/lib/src/components/login.d.ts +2 -0
- package/lib/src/components/login.d.ts.map +1 -0
- package/lib/src/components/login.js +12 -0
- package/lib/src/components/login.js.map +1 -0
- package/lib/src/components/modal/index.d.ts +19 -0
- package/lib/src/components/modal/index.d.ts.map +1 -0
- package/lib/src/components/modal/index.js +19 -0
- package/lib/src/components/modal/index.js.map +1 -0
- package/lib/src/components/modal/modals/AddDriveModal.d.ts +2 -0
- package/lib/src/components/modal/modals/AddDriveModal.d.ts.map +1 -0
- package/lib/src/components/modal/modals/AddDriveModal.js +113 -0
- package/lib/src/components/modal/modals/AddDriveModal.js.map +1 -0
- package/lib/src/components/modal/modals/ClearStorageModal.d.ts +2 -0
- package/lib/src/components/modal/modals/ClearStorageModal.d.ts.map +1 -0
- package/lib/src/components/modal/modals/ClearStorageModal.js +35 -0
- package/lib/src/components/modal/modals/ClearStorageModal.js.map +1 -0
- package/lib/src/components/modal/modals/CookiesPolicyModal.d.ts +2 -0
- package/lib/src/components/modal/modals/CookiesPolicyModal.d.ts.map +1 -0
- package/lib/src/components/modal/modals/CookiesPolicyModal.js +16 -0
- package/lib/src/components/modal/modals/CookiesPolicyModal.js.map +1 -0
- package/lib/src/components/modal/modals/CreateDocumentModal.d.ts +2 -0
- package/lib/src/components/modal/modals/CreateDocumentModal.d.ts.map +1 -0
- package/lib/src/components/modal/modals/CreateDocumentModal.js +24 -0
- package/lib/src/components/modal/modals/CreateDocumentModal.js.map +1 -0
- package/lib/src/components/modal/modals/DebugSettingsModal.d.ts +2 -0
- package/lib/src/components/modal/modals/DebugSettingsModal.d.ts.map +1 -0
- package/lib/src/components/modal/modals/DebugSettingsModal.js +108 -0
- package/lib/src/components/modal/modals/DebugSettingsModal.js.map +1 -0
- package/lib/src/components/modal/modals/DeleteDriveModal.d.ts +2 -0
- package/lib/src/components/modal/modals/DeleteDriveModal.d.ts.map +1 -0
- package/lib/src/components/modal/modals/DeleteDriveModal.js +32 -0
- package/lib/src/components/modal/modals/DeleteDriveModal.js.map +1 -0
- package/lib/src/components/modal/modals/DeleteItemModal.d.ts +3 -0
- package/lib/src/components/modal/modals/DeleteItemModal.d.ts.map +1 -0
- package/lib/src/components/modal/modals/DeleteItemModal.js +33 -0
- package/lib/src/components/modal/modals/DeleteItemModal.js.map +1 -0
- package/lib/src/components/modal/modals/DisclaimerModal.d.ts +3 -0
- package/lib/src/components/modal/modals/DisclaimerModal.d.ts.map +1 -0
- package/lib/src/components/modal/modals/DisclaimerModal.js +12 -0
- package/lib/src/components/modal/modals/DisclaimerModal.js.map +1 -0
- package/lib/src/components/modal/modals/DriveSettingsModal.d.ts +2 -0
- package/lib/src/components/modal/modals/DriveSettingsModal.d.ts.map +1 -0
- package/lib/src/components/modal/modals/DriveSettingsModal.js +28 -0
- package/lib/src/components/modal/modals/DriveSettingsModal.js.map +1 -0
- package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.d.ts +2 -0
- package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.d.ts.map +1 -0
- package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.js +30 -0
- package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.js.map +1 -0
- package/lib/src/components/modal/modals/SettingsModal.d.ts +3 -0
- package/lib/src/components/modal/modals/SettingsModal.d.ts.map +1 -0
- package/lib/src/components/modal/modals/SettingsModal.js +45 -0
- package/lib/src/components/modal/modals/SettingsModal.js.map +1 -0
- package/lib/src/components/modal/modals/UpgradeDriveModal.d.ts +3 -0
- package/lib/src/components/modal/modals/UpgradeDriveModal.d.ts.map +1 -0
- package/lib/src/components/modal/modals/UpgradeDriveModal.js +21 -0
- package/lib/src/components/modal/modals/UpgradeDriveModal.js.map +1 -0
- package/lib/src/components/modal/modals/settings/about.d.ts +2 -0
- package/lib/src/components/modal/modals/settings/about.d.ts.map +1 -0
- package/lib/src/components/modal/modals/settings/about.js +10 -0
- package/lib/src/components/modal/modals/settings/about.js.map +1 -0
- package/lib/src/components/modal/modals/settings/danger-zone.d.ts +2 -0
- package/lib/src/components/modal/modals/settings/danger-zone.d.ts.map +1 -0
- package/lib/src/components/modal/modals/settings/danger-zone.js +15 -0
- package/lib/src/components/modal/modals/settings/danger-zone.js.map +1 -0
- package/lib/src/components/modal/modals/settings/default-editor.d.ts +2 -0
- package/lib/src/components/modal/modals/settings/default-editor.d.ts.map +1 -0
- package/lib/src/components/modal/modals/settings/default-editor.js +18 -0
- package/lib/src/components/modal/modals/settings/default-editor.js.map +1 -0
- package/lib/src/components/modal/modals/settings/package-manager.d.ts +3 -0
- package/lib/src/components/modal/modals/settings/package-manager.d.ts.map +1 -0
- package/lib/src/components/modal/modals/settings/package-manager.js +87 -0
- package/lib/src/components/modal/modals/settings/package-manager.js.map +1 -0
- package/lib/src/components/modal/modals-container.d.ts +2 -0
- package/lib/src/components/modal/modals-container.d.ts.map +1 -0
- package/lib/src/components/modal/modals-container.js +62 -0
- package/lib/src/components/modal/modals-container.js.map +1 -0
- package/lib/src/components/modal/modals-error-boundary.d.ts +18 -0
- package/lib/src/components/modal/modals-error-boundary.d.ts.map +1 -0
- package/lib/src/components/modal/modals-error-boundary.js +22 -0
- package/lib/src/components/modal/modals-error-boundary.js.map +1 -0
- package/lib/src/components/ph-logo.d.ts +2 -0
- package/lib/src/components/ph-logo.d.ts.map +1 -0
- package/lib/src/components/ph-logo.js +7 -0
- package/lib/src/components/ph-logo.js.map +1 -0
- package/lib/src/components/reload-connect-toast.d.ts +2 -0
- package/lib/src/components/reload-connect-toast.d.ts.map +1 -0
- package/lib/src/components/reload-connect-toast.js +7 -0
- package/lib/src/components/reload-connect-toast.js.map +1 -0
- package/lib/src/components/root.d.ts +2 -0
- package/lib/src/components/root.d.ts.map +1 -0
- package/lib/src/components/root.js +8 -0
- package/lib/src/components/root.js.map +1 -0
- package/lib/src/components/router.d.ts +2 -0
- package/lib/src/components/router.d.ts.map +1 -0
- package/lib/src/components/router.js +41 -0
- package/lib/src/components/router.js.map +1 -0
- package/lib/src/components/search-bar.d.ts +2 -0
- package/lib/src/components/search-bar.d.ts.map +1 -0
- package/lib/src/components/search-bar.js +36 -0
- package/lib/src/components/search-bar.js.map +1 -0
- package/lib/src/components/sidebar.d.ts +2 -0
- package/lib/src/components/sidebar.d.ts.map +1 -0
- package/lib/src/components/sidebar.js +27 -0
- package/lib/src/components/sidebar.js.map +1 -0
- package/lib/src/connect.config.d.ts +113 -0
- package/lib/src/connect.config.d.ts.map +1 -0
- package/lib/src/connect.config.js +147 -0
- package/lib/src/connect.config.js.map +1 -0
- package/lib/src/context/index.d.ts +4 -0
- package/lib/src/context/index.d.ts.map +1 -0
- package/lib/src/context/index.js +4 -0
- package/lib/src/context/index.js.map +1 -0
- package/lib/src/context/processor-manager.d.ts +3 -0
- package/lib/src/context/processor-manager.d.ts.map +1 -0
- package/lib/src/context/processor-manager.js +189 -0
- package/lib/src/context/processor-manager.js.map +1 -0
- package/lib/src/context/read-mode.d.ts +2 -0
- package/lib/src/context/read-mode.d.ts.map +1 -0
- package/lib/src/context/read-mode.js +219 -0
- package/lib/src/context/read-mode.js.map +1 -0
- package/lib/src/context/sentry-provider.d.ts +6 -0
- package/lib/src/context/sentry-provider.d.ts.map +1 -0
- package/lib/src/context/sentry-provider.js +6 -0
- package/lib/src/context/sentry-provider.js.map +1 -0
- package/lib/src/feature-flags.d.ts +34 -0
- package/lib/src/feature-flags.d.ts.map +1 -0
- package/lib/src/feature-flags.js +124 -0
- package/lib/src/feature-flags.js.map +1 -0
- package/lib/src/globals.d.ts +9 -0
- package/lib/src/globals.d.ts.map +1 -0
- package/lib/src/globals.js +2 -0
- package/lib/src/globals.js.map +1 -0
- package/lib/src/hmr.d.ts +3 -0
- package/lib/src/hmr.d.ts.map +1 -0
- package/lib/src/hmr.js +2 -0
- package/lib/src/hmr.js.map +1 -0
- package/lib/src/hooks/index.d.ts +10 -0
- package/lib/src/hooks/index.d.ts.map +1 -0
- package/lib/src/hooks/index.js +10 -0
- package/lib/src/hooks/index.js.map +1 -0
- package/lib/src/hooks/useAcceptedCookies.d.ts +9 -0
- package/lib/src/hooks/useAcceptedCookies.d.ts.map +1 -0
- package/lib/src/hooks/useAcceptedCookies.js +34 -0
- package/lib/src/hooks/useAcceptedCookies.js.map +1 -0
- package/lib/src/hooks/useCheckLatestVersion.d.ts +2 -0
- package/lib/src/hooks/useCheckLatestVersion.d.ts.map +1 -0
- package/lib/src/hooks/useCheckLatestVersion.js +33 -0
- package/lib/src/hooks/useCheckLatestVersion.js.map +1 -0
- package/lib/src/hooks/useClientErrorHandler.d.ts +6 -0
- package/lib/src/hooks/useClientErrorHandler.d.ts.map +1 -0
- package/lib/src/hooks/useClientErrorHandler.js +120 -0
- package/lib/src/hooks/useClientErrorHandler.js.map +1 -0
- package/lib/src/hooks/useCookieBanner.d.ts +5 -0
- package/lib/src/hooks/useCookieBanner.d.ts.map +1 -0
- package/lib/src/hooks/useCookieBanner.js +32 -0
- package/lib/src/hooks/useCookieBanner.js.map +1 -0
- package/lib/src/hooks/useInitSentry.d.ts +2 -0
- package/lib/src/hooks/useInitSentry.d.ts.map +1 -0
- package/lib/src/hooks/useInitSentry.js +80 -0
- package/lib/src/hooks/useInitSentry.js.map +1 -0
- package/lib/src/hooks/useNodeActions.d.ts +6 -0
- package/lib/src/hooks/useNodeActions.d.ts.map +1 -0
- package/lib/src/hooks/useNodeActions.js +35 -0
- package/lib/src/hooks/useNodeActions.js.map +1 -0
- package/lib/src/hooks/useUndoRedoShortcuts.d.ts +8 -0
- package/lib/src/hooks/useUndoRedoShortcuts.d.ts.map +1 -0
- package/lib/src/hooks/useUndoRedoShortcuts.js +26 -0
- package/lib/src/hooks/useUndoRedoShortcuts.js.map +1 -0
- package/lib/src/hooks/useWindowSize.d.ts +5 -0
- package/lib/src/hooks/useWindowSize.d.ts.map +1 -0
- package/lib/src/hooks/useWindowSize.js +21 -0
- package/lib/src/hooks/useWindowSize.js.map +1 -0
- package/lib/src/hooks/utils.d.ts +7 -0
- package/lib/src/hooks/utils.d.ts.map +1 -0
- package/lib/src/hooks/utils.js +46 -0
- package/lib/src/hooks/utils.js.map +1 -0
- package/lib/src/i18n/index.d.ts +4 -0
- package/lib/src/i18n/index.d.ts.map +1 -0
- package/lib/src/i18n/index.js +26 -0
- package/lib/src/i18n/index.js.map +1 -0
- package/lib/src/i18n/locales/en.json +114 -0
- package/lib/src/index.d.ts +2 -0
- package/lib/src/index.d.ts.map +1 -0
- package/lib/src/index.js +2 -0
- package/lib/src/index.js.map +1 -0
- package/lib/src/main.d.ts +2 -0
- package/lib/src/main.d.ts.map +1 -0
- package/lib/src/main.js +5 -0
- package/lib/src/main.js.map +1 -0
- package/lib/src/pages/content.d.ts +2 -0
- package/lib/src/pages/content.d.ts.map +1 -0
- package/lib/src/pages/content.js +39 -0
- package/lib/src/pages/content.js.map +1 -0
- package/lib/src/pages/demo/atlas-import.d.ts +2 -0
- package/lib/src/pages/demo/atlas-import.d.ts.map +1 -0
- package/lib/src/pages/demo/atlas-import.js +122 -0
- package/lib/src/pages/demo/atlas-import.js.map +1 -0
- package/lib/src/pages/index.d.ts +4 -0
- package/lib/src/pages/index.d.ts.map +1 -0
- package/lib/src/pages/index.js +4 -0
- package/lib/src/pages/index.js.map +1 -0
- package/lib/src/pages/settings.d.ts +4 -0
- package/lib/src/pages/settings.d.ts.map +1 -0
- package/lib/src/pages/settings.js +9 -0
- package/lib/src/pages/settings.js.map +1 -0
- package/lib/src/service-worker.d.ts +2 -0
- package/lib/src/service-worker.d.ts.map +1 -0
- package/lib/src/service-worker.js +58 -0
- package/lib/src/service-worker.js.map +1 -0
- package/lib/src/services/hmr.d.ts +13 -0
- package/lib/src/services/hmr.d.ts.map +1 -0
- package/lib/src/services/hmr.js +85 -0
- package/lib/src/services/hmr.js.map +1 -0
- package/lib/src/services/index.d.ts +10 -0
- package/lib/src/services/index.d.ts.map +1 -0
- package/lib/src/services/index.js +9 -0
- package/lib/src/services/index.js.map +1 -0
- package/lib/src/services/logger.d.ts +2 -0
- package/lib/src/services/logger.d.ts.map +1 -0
- package/lib/src/services/logger.js +28 -0
- package/lib/src/services/logger.js.map +1 -0
- package/lib/src/services/renown/browser.d.ts +2 -0
- package/lib/src/services/renown/browser.d.ts.map +1 -0
- package/lib/src/services/renown/browser.js +6 -0
- package/lib/src/services/renown/browser.js.map +1 -0
- package/lib/src/services/renown/constants.d.ts +130 -0
- package/lib/src/services/renown/constants.d.ts.map +1 -0
- package/lib/src/services/renown/constants.js +41 -0
- package/lib/src/services/renown/constants.js.map +1 -0
- package/lib/src/services/renown/utils.d.ts +7 -0
- package/lib/src/services/renown/utils.d.ts.map +1 -0
- package/lib/src/services/renown/utils.js +20 -0
- package/lib/src/services/renown/utils.js.map +1 -0
- package/lib/src/services/storage/base-storage.d.ts +9 -0
- package/lib/src/services/storage/base-storage.d.ts.map +1 -0
- package/lib/src/services/storage/base-storage.js +21 -0
- package/lib/src/services/storage/base-storage.js.map +1 -0
- package/lib/src/services/storage/browser.d.ts +5 -0
- package/lib/src/services/storage/browser.d.ts.map +1 -0
- package/lib/src/services/storage/browser.js +25 -0
- package/lib/src/services/storage/browser.js.map +1 -0
- package/lib/src/services/storage/types.d.ts +6 -0
- package/lib/src/services/storage/types.d.ts.map +1 -0
- package/lib/src/services/storage/types.js +2 -0
- package/lib/src/services/storage/types.js.map +1 -0
- package/lib/src/services/toast.d.ts +8 -0
- package/lib/src/services/toast.d.ts.map +1 -0
- package/lib/src/services/toast.js +11 -0
- package/lib/src/services/toast.js.map +1 -0
- package/lib/src/store/document-model.d.ts +3 -0
- package/lib/src/store/document-model.d.ts.map +1 -0
- package/lib/src/store/document-model.js +79 -0
- package/lib/src/store/document-model.js.map +1 -0
- package/lib/src/store/editor.d.ts +5 -0
- package/lib/src/store/editor.d.ts.map +1 -0
- package/lib/src/store/editor.js +31 -0
- package/lib/src/store/editor.js.map +1 -0
- package/lib/src/store/external-packages.d.ts +4 -0
- package/lib/src/store/external-packages.d.ts.map +1 -0
- package/lib/src/store/external-packages.js +36 -0
- package/lib/src/store/external-packages.js.map +1 -0
- package/lib/src/store/index.d.ts +7 -0
- package/lib/src/store/index.d.ts.map +1 -0
- package/lib/src/store/index.js +7 -0
- package/lib/src/store/index.js.map +1 -0
- package/lib/src/store/reactor.d.ts +3 -0
- package/lib/src/store/reactor.d.ts.map +1 -0
- package/lib/src/store/reactor.js +177 -0
- package/lib/src/store/reactor.js.map +1 -0
- package/lib/src/store/user.d.ts +2 -0
- package/lib/src/store/user.d.ts.map +1 -0
- package/lib/src/store/user.js +16 -0
- package/lib/src/store/user.js.map +1 -0
- package/lib/src/store/utils.d.ts +2 -0
- package/lib/src/store/utils.d.ts.map +1 -0
- package/lib/src/store/utils.js +59 -0
- package/lib/src/store/utils.js.map +1 -0
- package/lib/src/utils/browser.d.ts +2 -0
- package/lib/src/utils/browser.d.ts.map +1 -0
- package/lib/src/utils/browser.js +9 -0
- package/lib/src/utils/browser.js.map +1 -0
- package/lib/src/utils/document-editor-debug-tools.d.ts +17 -0
- package/lib/src/utils/document-editor-debug-tools.d.ts.map +1 -0
- package/lib/src/utils/document-editor-debug-tools.js +55 -0
- package/lib/src/utils/document-editor-debug-tools.js.map +1 -0
- package/lib/src/utils/drive-preservation.d.ts +19 -0
- package/lib/src/utils/drive-preservation.d.ts.map +1 -0
- package/lib/src/utils/drive-preservation.js +51 -0
- package/lib/src/utils/drive-preservation.js.map +1 -0
- package/lib/src/utils/drive-sections.d.ts +31 -0
- package/lib/src/utils/drive-sections.d.ts.map +1 -0
- package/lib/src/utils/drive-sections.js +63 -0
- package/lib/src/utils/drive-sections.js.map +1 -0
- package/lib/src/utils/index.d.ts +12 -0
- package/lib/src/utils/index.d.ts.map +1 -0
- package/lib/src/utils/index.js +12 -0
- package/lib/src/utils/index.js.map +1 -0
- package/lib/src/utils/join.d.ts +2 -0
- package/lib/src/utils/join.d.ts.map +1 -0
- package/lib/src/utils/join.js +11 -0
- package/lib/src/utils/join.js.map +1 -0
- package/lib/src/utils/openUrl.d.ts +2 -0
- package/lib/src/utils/openUrl.d.ts.map +1 -0
- package/lib/src/utils/openUrl.js +3 -0
- package/lib/src/utils/openUrl.js.map +1 -0
- package/lib/src/utils/path.d.ts +4 -0
- package/lib/src/utils/path.d.ts.map +1 -0
- package/lib/src/utils/path.js +17 -0
- package/lib/src/utils/path.js.map +1 -0
- package/lib/src/utils/reactor.d.ts +6 -0
- package/lib/src/utils/reactor.d.ts.map +1 -0
- package/lib/src/utils/reactor.js +57 -0
- package/lib/src/utils/reactor.js.map +1 -0
- package/lib/src/utils/registerServiceWorker.d.ts +12 -0
- package/lib/src/utils/registerServiceWorker.d.ts.map +1 -0
- package/lib/src/utils/registerServiceWorker.js +97 -0
- package/lib/src/utils/registerServiceWorker.js.map +1 -0
- package/lib/src/utils/signature.d.ts +4 -0
- package/lib/src/utils/signature.d.ts.map +1 -0
- package/lib/src/utils/signature.js +36 -0
- package/lib/src/utils/signature.js.map +1 -0
- package/lib/src/utils/slug.d.ts +2 -0
- package/lib/src/utils/slug.d.ts.map +1 -0
- package/lib/src/utils/slug.js +4 -0
- package/lib/src/utils/slug.js.map +1 -0
- package/lib/src/workers/pglite-worker.d.ts +2 -0
- package/lib/src/workers/pglite-worker.d.ts.map +1 -0
- package/lib/src/workers/pglite-worker.js +32 -0
- package/lib/src/workers/pglite-worker.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/vite.config.d.ts +3 -0
- package/lib/vite.config.d.ts.map +1 -0
- package/lib/vite.config.js +55 -0
- package/lib/vite.config.js.map +1 -0
- package/package.copy.json +165 -0
- package/package.json +129 -96
- package/public/icon.ico +0 -0
- package/public/robots.txt +3 -0
- package/public/settings.png +0 -0
- package/scripts/render-skeleton.ts +8 -10
- package/src/index.css +4 -0
- package/dist/assets/AddDriveModal.CDgN-pun.js +0 -2
- package/dist/assets/AddDriveModal.CDgN-pun.js.map +0 -1
- package/dist/assets/AddLocalDriveModal.C9MD4Ysa.js +0 -2
- package/dist/assets/AddLocalDriveModal.C9MD4Ysa.js.map +0 -1
- package/dist/assets/AddRemoteDriveModal.xblpg2cW.js +0 -2
- package/dist/assets/AddRemoteDriveModal.xblpg2cW.js.map +0 -1
- package/dist/assets/ConfirmationModal.B8lr2E2g.js +0 -2
- package/dist/assets/ConfirmationModal.B8lr2E2g.js.map +0 -1
- package/dist/assets/CookiesPolicyModal.b_FmtWcR.js +0 -2
- package/dist/assets/CookiesPolicyModal.b_FmtWcR.js.map +0 -1
- package/dist/assets/CreateDocumentModal.B5Ztd78w.js +0 -2
- package/dist/assets/CreateDocumentModal.B5Ztd78w.js.map +0 -1
- package/dist/assets/DebugSettingsModal.BOzjtOHO.js +0 -2
- package/dist/assets/DebugSettingsModal.BOzjtOHO.js.map +0 -1
- package/dist/assets/DeleteDriveModal.BULot_P9.js +0 -2
- package/dist/assets/DeleteDriveModal.BULot_P9.js.map +0 -1
- package/dist/assets/DeleteItemModal.z8hCTkaW.js +0 -2
- package/dist/assets/DeleteItemModal.z8hCTkaW.js.map +0 -1
- package/dist/assets/DisclaimerModal.aDgJttL_.js +0 -2
- package/dist/assets/DisclaimerModal.aDgJttL_.js.map +0 -1
- package/dist/assets/DriveSettingsModal.DKoGnm3q.js +0 -2
- package/dist/assets/DriveSettingsModal.DKoGnm3q.js.map +0 -1
- package/dist/assets/SettingsModal.DpaP7xQq.js +0 -2
- package/dist/assets/SettingsModal.DpaP7xQq.js.map +0 -1
- package/dist/assets/Trans.BQm_oYqq.js +0 -2
- package/dist/assets/Trans.BQm_oYqq.js.map +0 -1
- package/dist/assets/UpgradeDriveModal.aU2KMg4z.js +0 -2
- package/dist/assets/UpgradeDriveModal.aU2KMg4z.js.map +0 -1
- package/dist/assets/app-skeleton.js +0 -11
- package/dist/assets/app-skeleton.js.map +0 -1
- package/dist/assets/atlas-import.CZSFwuj4.js +0 -6
- package/dist/assets/atlas-import.CZSFwuj4.js.map +0 -1
- package/dist/assets/browser.BkwNmV2Z.js +0 -2
- package/dist/assets/browser.BkwNmV2Z.js.map +0 -1
- package/dist/assets/content.7P2XZwjp.js +0 -3
- package/dist/assets/content.7P2XZwjp.js.map +0 -1
- package/dist/assets/cookie-banner.UvJrgFVN.js +0 -2
- package/dist/assets/cookie-banner.UvJrgFVN.js.map +0 -1
- package/dist/assets/i18next.CqOP20KE.js +0 -2
- package/dist/assets/i18next.CqOP20KE.js.map +0 -1
- package/dist/assets/index-B7k827uL.css +0 -1
- package/dist/assets/index.BDg-q7cb.js +0 -2
- package/dist/assets/index.BDg-q7cb.js.map +0 -1
- package/dist/assets/index.BTPk1US_.js +0 -16
- package/dist/assets/index.BTPk1US_.js.map +0 -1
- package/dist/assets/index.COdN5sTb.js +0 -445
- package/dist/assets/index.COdN5sTb.js.map +0 -1
- package/dist/assets/index.CdXCK5kR.js +0 -2
- package/dist/assets/index.CdXCK5kR.js.map +0 -1
- package/dist/assets/index.CvjHAqar.js +0 -361
- package/dist/assets/index.CvjHAqar.js.map +0 -1
- package/dist/assets/index.DAzo9kzY.js +0 -333
- package/dist/assets/index.DAzo9kzY.js.map +0 -1
- package/dist/assets/index.DH4RwKCZ.js +0 -2
- package/dist/assets/index.DH4RwKCZ.js.map +0 -1
- package/dist/assets/index.DhdwD1w0.js +0 -114
- package/dist/assets/index.DhdwD1w0.js.map +0 -1
- package/dist/assets/index.RKFvkVvX.js +0 -2
- package/dist/assets/index.RKFvkVvX.js.map +0 -1
- package/dist/assets/main-CT4nIKNi.css +0 -1
- package/dist/assets/main.C9SRxGTs.js +0 -3
- package/dist/assets/main.C9SRxGTs.js.map +0 -1
- package/dist/assets/modal.CqA_mJUN.js +0 -3
- package/dist/assets/modal.CqA_mJUN.js.map +0 -1
- package/dist/assets/modals.B2yWw4rS.js +0 -2
- package/dist/assets/modals.B2yWw4rS.js.map +0 -1
- package/dist/assets/nodefs-CbgXeDrX.js +0 -2
- package/dist/assets/nodefs-CbgXeDrX.js.map +0 -1
- package/dist/assets/nodefs.zW4Fwgrd.js +0 -2
- package/dist/assets/nodefs.zW4Fwgrd.js.map +0 -1
- package/dist/assets/nodes.POEKD5Qa.js +0 -2
- package/dist/assets/nodes.POEKD5Qa.js.map +0 -1
- package/dist/assets/opfs-ahp-CvqFFNTs.js +0 -4
- package/dist/assets/opfs-ahp-CvqFFNTs.js.map +0 -1
- package/dist/assets/opfs-ahp.Ct4DcoTP.js +0 -4
- package/dist/assets/opfs-ahp.Ct4DcoTP.js.map +0 -1
- package/dist/assets/pglite-worker-CBI3hEVN.js +0 -144
- package/dist/assets/pglite-worker-CBI3hEVN.js.map +0 -1
- package/dist/assets/pglite-worker.dssW4LQw.js +0 -2
- package/dist/assets/pglite-worker.dssW4LQw.js.map +0 -1
- package/dist/assets/postgres-CkP7QCDB.data +0 -0
- package/dist/assets/postgres-CyuUVpXN.wasm +0 -0
- package/dist/assets/registerServiceWorker.BeE0-hEw.js +0 -2
- package/dist/assets/registerServiceWorker.BeE0-hEw.js.map +0 -1
- package/dist/assets/root.kpAPoqo9.js +0 -6
- package/dist/assets/root.kpAPoqo9.js.map +0 -1
- package/dist/assets/style-BkLV0sfQ.css +0 -1
- package/dist/assets/style-CszWl8pU.css +0 -1
- package/dist/assets/useAcceptedCookies.BUsKgauT.js +0 -2
- package/dist/assets/useAcceptedCookies.BUsKgauT.js.map +0 -1
- package/dist/assets/useDefaultDocumentModelEditor.joSxCJtY.js +0 -2
- package/dist/assets/useDefaultDocumentModelEditor.joSxCJtY.js.map +0 -1
- package/dist/assets/useInitSentry.DBsKo0vo.js +0 -368
- package/dist/assets/useInitSentry.DBsKo0vo.js.map +0 -1
- package/dist/external-packages.js +0 -1
- package/dist/fonts/Inter-Black.ttf +0 -0
- package/dist/fonts/Inter-Bold.ttf +0 -0
- package/dist/fonts/Inter-ExtraBold.ttf +0 -0
- package/dist/fonts/Inter-ExtraLight.ttf +0 -0
- package/dist/fonts/Inter-Light.ttf +0 -0
- package/dist/fonts/Inter-Medium.ttf +0 -0
- package/dist/fonts/Inter-Regular.ttf +0 -0
- package/dist/fonts/Inter-SemiBold.ttf +0 -0
- package/dist/fonts/Inter-Thin.ttf +0 -0
- package/dist/fonts/Inter-VariableFont_slnt,wght.ttf +0 -0
- package/dist/hmr.js +0 -2
- package/dist/hmr.js.map +0 -1
- package/dist/service-worker.js +0 -2
- package/dist/service-worker.js.map +0 -1
- package/dist/swEnv.js +0 -70
- package/dist/vite-envs.sh +0 -494
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":["openBrowserUrl","url","openUrl","_a","validateDocument","document","errors","doc","specs","initialStateErrors","acc","scopeKey","scope","validateInitialState","err","schemaStateErrors","isGlobalScope","validateStateSchemaName","modulesErrors","validateModules","themeAtom","atomWithStorageCallback","theme","useDebounce","value","callback","delay","useEffect","timer","DocumentEditorForm","initialEditorName","initialEditorId","initialDocumentTypes","onEditorNameChange","onEditorIdChange","onAddDocumentType","onRemoveDocumentType","editorName","setEditorName","useState","editorId","setEditorId","documentTypes","setDocumentTypes","documentTypeInput","setDocumentTypeInput","_jsxs","_jsx","e","newTypeInput","dt","newType","type","Editor","props","dispatch","useCallback","name","actions","id","input","module","DriveContext","createContext","DriveContextProvider","children","useDriveContext","context","useContext","InfoIcon","width","height","className","fill","stroke","ShareIcon","VetraIcon","DriveHeader","onShareClick","DOCUMENT_TYPES","ChevronIcon","PlusIcon","Accordion","isOpen","onToggle","header","contentRef","useRef","setHeight","updateHeight","scrollHeight","resizeObserver","ModuleAccordion","title","count","onAdd","defaultOpen","headerClassName","setIsOpen","AddNewIcon","DocModelIcon","EditorIcon","getIconForDocumentType","documentType","ModuleItem","fileNode","onClick","IconComponent","NewModuleItem","subtitle","ModuleList","items","onAddNewSpec","onClickItem","item","index","DataIntegrationsColumn","subgraphs","processors","codegenProcessors","onAddSubgraph","onAddProcessor","onAddCodegenProcessor","onOpenDocument","DocumentModelsColumn","documentModels","onAddDocumentModel","SectionAccordion","UserExperiencesColumn","editors","apps","onAddEditor","onAddApp","ModuleSpecificationsSection","useUserPermissions","useDocument","reactor","documentMeta","documentId","setDocument","onStrandUpdate","cb","strand","signOperation","operation","sign","reducer","user","buildSignedOperation","addActionContext","action","connectDid","debounceOperations","timeout","operations","op","oldOperation","resolve","reject","useAddDebouncedOperations","isAllowedToEditDocuments","addOperations","useMemo","useDocumentDispatch","documentReducer","initialState","onError","state","setState","error","setError","onErrorHandler","onErrorCallback","_state","newState","useDocumentEditorProps","nodeId","documentModelModule","initialDocument","addDebouncedOperations","_dispatch","prevState","EditorContainer","driveId","editorModule","loadingContent","DefaultEditorLoader","EditorComponent","Suspense","PackageInformationSection","packageDocumentId","onAddPackageDocument","createpackageContent","DriveExplorer","onShareDrive","documentModuleModule","BaseEditor","showCreateDocumentModal","addDocument","setSelectedNode","fileNodes","node","docModelsNodes","docEditorsNodes","onCreateDocument","documentModel","model","onCreatePackageFile","WagmiContext","AnalyticsProvider","MetaForm","initialName","initialDescription","initialCategory","initialPublisher","initialPublisherUrl","initialGithubRepository","initialNpmPackage","initialKeywords","onNameChange","onDescriptionChange","onCategoryChange","onPublisherChange","onPublisherUrlChange","onGithubRepositoryChange","onNpmPackageChange","onAddKeyword","onRemoveKeyword","setName","description","setDescription","category","setCategory","publisher","setPublisher","publisherUrl","setPublisherUrl","githubRepository","setGithubRepository","npmPackage","setNpmPackage","keywords","setKeywords","keywordInput","setKeywordInput","newValue","newKeyword","keyword","k","website","loadBaseEditors","documentModelEditor","__vitePreload","VetraPackageEditor","DocumentEditorEditor","getEditorsFromModules","modules","val","baseEditorsAtom","atomWithLazy","editorsAtom","atom","get","baseEditors","externalModules","externalPackagesAtom","unwrappedEditorsAtom","unwrap","loadableEditorsAtom","loadable","useUnwrappedEditors","useAtomValue","getEditor","preferredEditorId","preferredEditor","useGetEditor","defaultDocumentModelEditor","useDefaultDocumentModelEditor","getDocumentSpec","CreateDocument","createDocument","spec","Button","GAP","ITEM_WIDTH","ITEM_HEIGHT","USED_SPACE","FileContentView","parentRef","t","useTranslation","windowSize","useWindowSize","availableWidth","columnCount","rowCount","rowVirtualizer","useVirtualizer","columnVirtualizer","getItemIndex","rowIndex","columnIndex","getItem","renderItem","FileItem","virtualRow","React","virtualColumn","DriveLayout","containerProps","cn","FolderView","isAllowedToCreateDocuments","sharingType","getSyncStatusSync","onAddFile","onCopyNode","onMoveNode","onRenameNode","onDuplicateNode","onAddFolder","onAddAndSelectNewFolder","showDeleteNodeModal","folderNodes","useFolderChildNodesForId","useFileChildNodesForId","isDropTarget","dropProps","useDrop","twMerge","folderNode","FolderItem","defaultFilterItems","Icon","SearchBar","setValue","ConnectSearchBar","showSearchBar","selectedDrive","useSelectedDrive","selectedFolder","useSelectedFolder","selectedDriveAsFolderNode","makeFolderNodeFromDrive","selectedNodePath","useSelectedNodePath","useSetSelectedNode","breadcrumbs","onBreadcrumbSelected","useBreadcrumbs","getDriveSharingType","Breadcrumbs","GenericDriveExplorer","useAnalyticsQueryWrapper","options","queryFn","queryOptions","store","useAnalyticsStoreAsync","engine","useAnalyticsEngineAsync","enabled","useQuery","DEBOUNCE_INTERVAL","useAnalyticsQuery","query","queryClient","useQueryClient","sources","result","subscriptions","invalidateTimeout","debouncedInvalidate","path","unsub","getBarSize","addItemsDividers","currentDate","nextDate","currentHour","nextHour","currentDay","nextDay","metricsToItems","metrics","a","b","aDate","bDate","row","additions","deletions","startDate","useTimelineItems","startTimestamp","start","DateTime","AnalyticsGranularity","AnalyticsPath","getRevisionFromDate","endDate","operationDate","EditorLoader","showLoading","setShowLoading","customEditorLoader","defaultProps","jsx","Fragment","EditorError","message","FallbackEditorError","DocumentEditor","onClose","onExport","onAddOperation","onOpenSwitchboardLink","selectedTimelineItem","setSelectedTimelineItem","revisionHistoryVisible","setRevisionHistoryVisible","useUser","useConnectDid","useConnectCrypto","getDocumentModelModule","useGetDocumentModelModule","editor","userPermissions","timelineItems","logger","showRevisionHistory","hideRevisionHistory","handleUndo","undo","handleRedo","redo","isLoadingEditor","canUndo","canRedo","useUndoRedoShortcuts","navigate","useNavigate","showModal","useModal","editorError","setEditorError","handleEditorError","info","jsxs","disableExternalControls","documentToolbarEnabled","showSwitchboardLink","timelineEnabled","handleSwitchboardLinkClick","DocumentToolbar","RevisionHistory","ErrorBoundary","DocumentEditorContainer","addDocumentOperations","useDocumentDriveServer","unwrappedSelectedDrive","selectedDocument","useSelectedDocument","parentFolderId","useParentFolderId","isRemoteDrive","useDriveIsRemote","remoteUrl","useDriveRemoteUrl","exportDocument","validationErrors","closeModal","exportFile","buildDocumentSubgraphUrl","DriveEditorError","DriveEditorContainer","addDriveOperations","nodeActions","useNodeActions","driveDocumentModelModule","editorProps","useEditorProps","useShowDeleteNodeModal","addFile","useFilteredDocumentModels","analyticsDatabaseName","connectConfig","driveContext","driveEditor","useDriveEditor","DriveEditorComponent","_b","VetraDriveExplorer","useDocumentEditor","useReactor","useEditorDispatch","documentDispatch","parentFolder","useParentFolder","selectedParentFolder","useSelectedParentFolder","addFolder","renameNode","copyNode","moveNode","file","parent","fileName","newName","src","target","newFolder","_extends","n","reservedModifierKeywords","mappedKeys","mapKey","key","isHotkeyModifier","parseKeysHookInput","keys","splitKey","parseHotkey","hotkey","combinationKey","modifiers","singleCharKeys","pushToCurrentlyPressedKeys","removeFromCurrentlyPressedKeys","currentlyPressedKeys","isReadonlyArray","isHotkeyPressed","hotkeyArray","maybePreventDefault","preventDefault","isHotkeyEnabled","isKeyboardEventTriggeredByInput","ev","isHotkeyEnabledOnTag","event","enabledOnTags","composed","targetTagName","isCustomElement","tag","_targetTagName","element","isScopeActive","activeScopes","scopes","isHotkeyMatchingKeyboardEvent","ignoreModifiers","alt","meta","mod","shift","ctrl","pressedKeyUppercase","code","ctrlKey","metaKey","shiftKey","altKey","keyCode","pressedKey","BoundHotkeysProxyProvider","useBoundHotkeysProxy","deepEqual","x","y","isEqual","HotkeysContext","useHotkeysContext","useDeepEqualMemo","ref","stopPropagation","useSafeLayoutEffect","useLayoutEffect","useHotkeys","dependencies","_useState","setRef","hasTriggeredRef","_options","_keys","_deps","memoisedCB","cbRef","memoisedOptions","_useHotkeysContext","enabledScopes","proxy","listener","isKeyUp","_e$target","rootNode","_hotkey$keys","handleKeyDown","handleKeyUp","domNode","isMac","undoShortcut","redoShortcut","Content","ContentContainer","HomeScreenContainer","pathname","useLocation","drives","useDrives","loadableSelectedDrive","useLoadableSelectedDrive","loadableSelectedFolder","useLoadableSelectedFolder","loadableSelectedDocument","useLoadableSelectedDocument","showAddDriveModal","useShowAddDriveModal","setSelectedDrive","useSetSelectedDrive","getAppDescriptionForEditorId","useGetAppNameForEditorId","config","useConnectConfig","handleDriveClick","drive","onAddDriveClick","isLoading","isError","hasSelectedDriveOrFolderOrDocument","HomeScreen","appName","HomeScreenItem","DriveIcon","HomeScreenAddDriveItem"],"ignoreList":[60],"sources":["../../src/utils/openUrl.ts","../../src/utils/validate-document.ts","../../src/store/theme.ts","../../../../packages/vetra/dist/editors/hooks/useDebounce.js","../../../../packages/vetra/dist/editors/document-editor/components/DocumentEditorForm.js","../../../../packages/vetra/dist/editors/document-editor/editor.js","../../../../packages/vetra/dist/editors/document-editor/index.js","../../../../packages/reactor-browser/dist/src/hooks/useDriveContext.js","../../../../packages/vetra/dist/editors/vetra-drive-app/icons/InfoIcon.js","../../../../packages/vetra/dist/editors/vetra-drive-app/icons/ShareIcon.js","../../../../packages/vetra/dist/editors/vetra-drive-app/icons/VetraIcon.js","../../../../packages/vetra/dist/editors/vetra-drive-app/components/DriveHeader.js","../../../../packages/vetra/dist/editors/vetra-drive-app/document-types.js","../../../../packages/vetra/dist/editors/vetra-drive-app/icons/ChevronIcon.js","../../../../packages/vetra/dist/editors/vetra-drive-app/icons/PlusIcon.js","../../../../packages/vetra/dist/editors/vetra-drive-app/components/Accordion.js","../../../../packages/vetra/dist/editors/vetra-drive-app/components/ModuleAccordion.js","../../../../packages/vetra/dist/editors/vetra-drive-app/icons/AddNewIcon.js","../../../../packages/vetra/dist/editors/vetra-drive-app/icons/DocModelIcon.js","../../../../packages/vetra/dist/editors/vetra-drive-app/icons/EditorIcon.js","../../../../packages/vetra/dist/editors/vetra-drive-app/components/ModuleItem.js","../../../../packages/vetra/dist/editors/vetra-drive-app/components/NewModuleItem.js","../../../../packages/vetra/dist/editors/vetra-drive-app/components/ModuleList.js","../../../../packages/vetra/dist/editors/vetra-drive-app/components/DataIntegrationsColumn.js","../../../../packages/vetra/dist/editors/vetra-drive-app/components/DocumentModelsColumn.js","../../../../packages/vetra/dist/editors/vetra-drive-app/components/SectionAccordion.js","../../../../packages/vetra/dist/editors/vetra-drive-app/components/UserExperiencesColumn.js","../../../../packages/vetra/dist/editors/vetra-drive-app/components/ModuleSpecificationsSection.js","../../../../packages/reactor-browser/dist/src/hooks/useUserPermissions.js","../../../../packages/reactor-browser/dist/src/hooks/useDocument.js","../../../../packages/reactor-browser/dist/src/utils/signature.js","../../../../packages/reactor-browser/dist/src/hooks/useAddDebouncedOperations.js","../../../../packages/reactor-browser/dist/src/hooks/useDocumentDispatch.js","../../../../packages/reactor-browser/dist/src/hooks/useDocumentEditor.js","../../../../packages/vetra/dist/editors/vetra-drive-app/components/EditorContainer.js","../../../../packages/vetra/dist/editors/vetra-drive-app/components/PackageInformationSection.js","../../../../packages/vetra/dist/editors/vetra-drive-app/DriveExplorer.js","../../../../packages/vetra/dist/editors/vetra-drive-app/editor.js","../../../../packages/vetra/dist/editors/vetra-drive-app/index.js","../../../../packages/vetra/dist/editors/vetra-package/components/MetaForm.js","../../../../packages/vetra/dist/editors/vetra-package/editor.js","../../../../packages/vetra/dist/editors/vetra-package/index.js","../../src/store/editor.ts","../../../../packages/common/dist/editors/generic-drive-explorer/components/create-document.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/file-content-view.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/layout.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/folder-view.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/search-bar.js","../../../../packages/common/dist/editors/generic-drive-explorer/editor.js","../../../../packages/common/dist/editors/generic-drive-explorer/index.js","../../../../packages/reactor-browser/dist/src/analytics/hooks.js","../../../../packages/common/dist/hooks/useTimelineItems.js","../../../../packages/common/dist/utils/index.js","../../src/components/editor-loader.tsx","../../src/components/editors.tsx","../../src/components/document-editor-container.tsx","../../src/components/drive-editor-container.tsx","../../src/hooks/useDocumentEditor.ts","../../src/hooks/useEditorProps.tsx","../../src/hooks/useNodeActions.ts","../../../../node_modules/.pnpm/react-hotkeys-hook@4.6.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-hotkeys-hook/dist/react-hotkeys-hook.esm.js","../../src/hooks/useUndoRedoShortcuts.ts","../../src/pages/content.tsx"],"sourcesContent":["const openBrowserUrl = (url: string) => window.open(url, '_blank');\n\nexport const openUrl = window.electronAPI?.openURL ?? openBrowserUrl;\n","import {\n type DocumentModelDocument,\n type PHDocument,\n validateInitialState,\n validateModules,\n validateStateSchemaName,\n type ValidationError,\n} from 'document-model';\nexport const validateDocument = (document: PHDocument) => {\n const errors: ValidationError[] = [];\n\n if (document.header.documentType !== 'powerhouse/document-model') {\n return errors;\n }\n\n const doc = document as DocumentModelDocument;\n const specs = doc.state.global.specifications[0];\n\n // validate initial state errors\n const initialStateErrors = Object.keys(specs.state).reduce<\n ValidationError[]\n >((acc, scopeKey) => {\n const scope = scopeKey as keyof typeof specs.state;\n\n return [\n ...acc,\n ...validateInitialState(\n specs.state[scope].initialValue,\n scope !== 'global',\n ).map(err => ({\n ...err,\n message: `${err.message}. Scope: ${scope}`,\n details: { ...err.details, scope },\n })),\n ];\n }, []);\n\n // validate schema state errors\n const schemaStateErrors = Object.keys(specs.state).reduce<\n ValidationError[]\n >((acc, scopeKey) => {\n const scope = scopeKey as keyof typeof specs.state;\n const isGlobalScope = scope === 'global';\n\n return [\n ...acc,\n ...validateStateSchemaName(\n specs.state[scope].schema,\n doc.header.name || doc.state.global?.name || '',\n !isGlobalScope ? scope : '',\n !isGlobalScope,\n ).map(err => ({\n ...err,\n message: `${err.message}. Scope: ${scope}`,\n details: { ...err.details, scope },\n })),\n ];\n }, []);\n\n // modules validation\n const modulesErrors = validateModules(specs.modules);\n\n return [...initialStateErrors, ...schemaStateErrors, ...modulesErrors];\n};\n","import { useAtomValue } from 'jotai';\nimport { atomWithStorageCallback } from './utils.js';\n\nconst THEMES = ['light', 'dark'] as const;\n\nexport type Theme = (typeof THEMES)[number];\n\nexport const themeAtom = atomWithStorageCallback<Theme>(\n 'theme',\n 'light',\n theme => {\n if (typeof window !== 'undefined') {\n window.electronAPI?.setTheme(theme);\n }\n },\n);\n\nexport const useTheme = () => useAtomValue(themeAtom);\n\nexport function isTheme(theme: string): theme is Theme {\n return THEMES.includes(theme as Theme);\n}\n","import { useEffect } from \"react\";\n/**\n * Reusable debounce hook that calls a callback function after a specified delay\n * when the value changes. Useful for API calls, search inputs, etc.\n *\n * @param value - The value to debounce\n * @param callback - Function to call with the debounced value (optional)\n * @param delay - Delay in milliseconds\n */\nexport function useDebounce(value, callback, delay) {\n useEffect(() => {\n if (!callback)\n return;\n const timer = setTimeout(() => {\n callback(value);\n }, delay);\n return () => clearTimeout(timer);\n }, [value, callback, delay]);\n}\n//# sourceMappingURL=useDebounce.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useState } from \"react\";\nimport { useDebounce } from \"../../hooks/index.js\";\nexport const DocumentEditorForm = ({ editorName: initialEditorName = \"\", editorId: initialEditorId = \"\", documentTypes: initialDocumentTypes = [], onEditorNameChange, onEditorIdChange, onAddDocumentType, onRemoveDocumentType }) => {\n const [editorName, setEditorName] = useState(initialEditorName);\n const [editorId, setEditorId] = useState(initialEditorId);\n const [documentTypes, setDocumentTypes] = useState(initialDocumentTypes);\n const [documentTypeInput, setDocumentTypeInput] = useState(\"\");\n // Use the debounce hook with callbacks\n useDebounce(editorName, onEditorNameChange, 300);\n useDebounce(editorId, onEditorIdChange, 300);\n return (_jsxs(\"div\", { className: \"space-y-6 p-6 bg-white\", children: [_jsx(\"h2\", { className: \"text-lg font-medium text-gray-900\", children: \"Atlas Exploratory\" }), _jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"Editor Name\" }), _jsx(\"input\", { type: \"text\", value: editorName, onChange: (e) => setEditorName(e.target.value), className: \"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\" })] }), _jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"Editor ID\" }), _jsx(\"input\", { type: \"text\", value: editorId, onChange: (e) => setEditorId(e.target.value), className: \"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\" }), _jsx(\"p\", { className: \"mt-1 text-xs text-gray-500\", children: \"This ID will be used to reference the document throughout your code\" })] }), _jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"Supported Document Types\" }), _jsxs(\"div\", { className: \"space-y-2\", children: [_jsx(\"input\", { type: \"text\", value: documentTypeInput, onChange: (e) => setDocumentTypeInput(e.target.value), onKeyDown: (e) => {\n if (e.key === 'Enter' && documentTypeInput.trim()) {\n e.preventDefault();\n const newTypeInput = {\n id: Date.now().toString(), // Generate a unique ID\n documentType: documentTypeInput.trim()\n };\n if (!documentTypes.some(dt => dt.documentType === newTypeInput.documentType)) {\n const newType = {\n id: newTypeInput.id,\n documentType: newTypeInput.documentType\n };\n setDocumentTypes([...documentTypes, newType]);\n onAddDocumentType?.(newTypeInput);\n }\n setDocumentTypeInput('');\n }\n }, placeholder: \"Type a document type and press Enter\", className: \"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\" }), _jsx(\"div\", { className: \"space-y-1\", children: documentTypes.map((type) => (_jsxs(\"div\", { className: \"flex items-center py-1\", children: [_jsx(\"span\", { className: \"text-sm text-gray-700\", children: type.documentType }), _jsx(\"button\", { onClick: () => {\n setDocumentTypes(documentTypes.filter((dt) => dt.id !== type.id));\n onRemoveDocumentType?.({ id: type.id });\n }, className: \"ml-2 text-gray-400 hover:text-gray-600 focus:outline-none\", children: \"\\u00D7\" })] }, type.id))) })] })] })] }));\n};\n//# sourceMappingURL=DocumentEditorForm.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { actions, } from \"../../document-models/document-editor/index.js\";\nimport { DocumentEditorForm } from \"./components/DocumentEditorForm.js\";\nimport { useCallback } from \"react\";\nexport default function Editor(props) {\n const { document, dispatch } = props;\n console.log(\">>>>> document:\", document.state.global);\n const onEditorNameChange = useCallback((name) => {\n if (!document.state.global.name && !name)\n return;\n if (name === document.state.global.name)\n return;\n dispatch(actions.setEditorName({ name }));\n }, [document.state.global.name, dispatch]);\n const onEditorIdChange = useCallback((id) => {\n if (!document.state.global.id && !id)\n return;\n if (id === document.state.global.id)\n return;\n dispatch(actions.setEditorId({ id }));\n }, [document.state.global.id, dispatch]);\n const onAddDocumentType = useCallback((input) => {\n dispatch(actions.addDocumentType(input));\n }, [dispatch]);\n const onRemoveDocumentType = useCallback((input) => {\n dispatch(actions.removeDocumentType(input));\n }, [dispatch]);\n return (_jsx(\"div\", { children: _jsx(DocumentEditorForm, { editorName: document.state.global.name ?? \"\", editorId: document.state.global.id ?? \"\", documentTypes: document.state.global.documentTypes, onEditorNameChange: onEditorNameChange, onEditorIdChange: onEditorIdChange, onAddDocumentType: onAddDocumentType, onRemoveDocumentType: onRemoveDocumentType }) }));\n}\n//# sourceMappingURL=editor.js.map","import Editor from \"./editor.js\";\nexport const module = {\n Component: Editor,\n documentTypes: [\"powerhouse/document-editor\"],\n config: {\n id: \"document-editor-editor\",\n disableExternalControls: true,\n documentToolbarEnabled: true,\n showSwitchboardLink: true,\n },\n};\nexport default module;\n//# sourceMappingURL=index.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createContext, useContext } from \"react\";\nconst DriveContext = createContext(undefined);\nexport const DriveContextProvider = ({ value, children }) => (_jsx(DriveContext.Provider, { value: value, children: children }));\n/**\n * Hook to access the drive context values provided by the host application.\n * Must be used within a DriveContextProvider component.\n *\n * @returns IDriveContext - Object containing drive-related values and functions\n *\n * @example\n * const {\n * showSearchBar,\n * documentModels,\n * selectedNode,\n * addFile\n * } = useDriveContext();\n */\nexport function useDriveContext() {\n const context = useContext(DriveContext);\n if (!context) {\n throw new Error(\"useDriveContext must be used within a DriveContextProvider\");\n }\n return context;\n}\n//# sourceMappingURL=useDriveContext.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const InfoIcon = ({ width = 16, height = 16, className = '', fill = 'none', stroke = '#343839' }) => {\n return (_jsxs(\"svg\", { width: width, height: height, viewBox: \"0 0 16 16\", fill: fill, className: className, xmlns: \"http://www.w3.org/2000/svg\", children: [_jsxs(\"g\", { clipPath: \"url(#clip0_2020_6333)\", children: [_jsx(\"path\", { d: \"M7.99999 14.6673C11.6819 14.6673 14.6667 11.6825 14.6667 8.00065C14.6667 4.31875 11.6819 1.33398 7.99999 1.33398C4.3181 1.33398 1.33333 4.31875 1.33333 8.00065C1.33333 11.6825 4.3181 14.6673 7.99999 14.6673Z\", stroke: stroke, strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), _jsx(\"path\", { d: \"M8 10.6667V8\", stroke: stroke, strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), _jsx(\"path\", { d: \"M8 5.33398H8.00833\", stroke: stroke, strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })] }), _jsx(\"defs\", { children: _jsx(\"clipPath\", { id: \"clip0_2020_6333\", children: _jsx(\"rect\", { width: \"16\", height: \"16\", fill: \"white\" }) }) })] }));\n};\n//# sourceMappingURL=InfoIcon.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport const ShareIcon = ({ width = 16, height = 16, className = '', fill = '#8391A7' }) => {\n return (_jsx(\"svg\", { width: width, height: height, viewBox: \"0 0 16 16\", fill: \"none\", className: className, xmlns: \"http://www.w3.org/2000/svg\", children: _jsx(\"path\", { d: \"M8.73535 4L7.28711 5.53809H4.05469C3.6549 5.53813 3.33109 5.88285 3.33105 6.30762V11.6924C3.33109 12.1172 3.6549 12.4619 4.05469 12.4619H9.12305C9.52269 12.4617 9.84664 12.117 9.84668 11.6924V8.25781L11.2949 6.71973V11.6924C11.2949 12.9667 10.3224 13.9998 9.12305 14H4.05469C2.85521 14 1.88285 12.9669 1.88281 11.6924V6.30762C1.88285 5.03318 2.85521 4.00004 4.05469 4H8.73535ZM13.7266 2C13.9431 2 14.1191 2.16789 14.1191 2.375V5.59473C14.1191 5.92879 13.6963 6.0956 13.4492 5.85938L12.3203 4.78027L6.0459 10.7803C5.7396 11.0731 5.24282 11.0731 4.93652 10.7803C4.63043 10.4874 4.63042 10.0126 4.93652 9.71973L11.2109 3.71973L10.082 2.64062C9.83504 2.40445 10.0102 2.00022 10.3594 2H13.7266Z\", fill: fill }) }));\n};\n//# sourceMappingURL=ShareIcon.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const VetraIcon = ({ width = 23, height = 22, className = '', fill = '#343839' }) => {\n return (_jsxs(\"svg\", { width: width, height: height, viewBox: \"0 0 23 22\", fill: \"none\", className: className, xmlns: \"http://www.w3.org/2000/svg\", children: [_jsx(\"path\", { d: \"M23 8.75169C23 9.6137 22.2916 10.3125 21.4177 10.3125L20.457 10.3125C16.0876 10.3125 12.5455 6.8185 12.5455 2.50844L12.5455 1.56081C12.5455 0.698798 13.2539 1.13218e-07 14.1278 1.88577e-07L21.4177 8.17224e-07C22.2916 8.92583e-07 23 0.6988 23 1.56081L23 8.75169Z\", fill: fill }), _jsx(\"path\", { d: \"M14.1278 22C13.2539 22 12.5455 21.3012 12.5455 20.4392L12.5455 19.4916C12.5455 15.1815 16.0876 11.6875 20.457 11.6875L21.4177 11.6875C22.2916 11.6875 23 12.3863 23 13.2483L23 20.4392C23 21.3012 22.2916 22 21.4177 22L14.1278 22Z\", fill: fill }), _jsx(\"path\", { d: \"M0 13.2483C0 12.3863 0.708424 11.6875 1.58231 11.6875H2.543C6.91243 11.6875 10.4545 15.1815 10.4545 19.4916V20.4392C10.4545 21.3012 9.74612 22 8.87224 22H1.58231C0.708423 22 0 21.3012 0 20.4392L0 13.2483Z\", fill: fill }), _jsx(\"path\", { d: \"M8.87224 -6.82252e-08C9.74612 -3.05454e-08 10.4545 0.698799 10.4545 1.56081L10.4545 2.50845C10.4545 6.81851 6.91242 10.3125 2.543 10.3125L1.58231 10.3125C0.708423 10.3125 5.27658e-07 9.6137 5.65857e-07 8.75169L8.84509e-07 1.56081C9.22708e-07 0.698798 0.708425 -4.20228e-07 1.58231 -3.82548e-07L8.87224 -6.82252e-08Z\", fill: fill })] }));\n};\n//# sourceMappingURL=VetraIcon.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { InfoIcon } from '../icons/InfoIcon.js';\nimport { ShareIcon } from '../icons/ShareIcon.js';\nimport { VetraIcon } from '../icons/VetraIcon.js';\nexport const DriveHeader = ({ onShareClick }) => {\n return (_jsx(\"div\", { className: \"bg-white px-6 py-4\", children: _jsxs(\"div\", { className: \"flex items-center justify-between\", children: [_jsxs(\"div\", { className: \"flex items-center gap-2\", children: [_jsx(VetraIcon, { width: 20, height: 20 }), _jsx(\"h1\", { className: \"text-lg font-semibold text-gray-900\", children: \"Vetra Studio Drive\" }), _jsx(\"button\", { className: \"p-1 hover:bg-gray-100 rounded-full transition-colors\", children: _jsx(InfoIcon, { className: \"text-gray-500\" }) })] }), _jsxs(\"button\", { onClick: onShareClick, className: \"flex items-center gap-2 px-4 py-2 bg-gray-100 text-gray-700 rounded-md hover:bg-gray-200 transition-colors\", children: [_jsx(ShareIcon, {}), \"Share Drive\"] })] }) }));\n};\n//# sourceMappingURL=DriveHeader.js.map","export const DOCUMENT_TYPES = {\n documentModel: \"powerhouse/document-model\",\n documentPackage: \"powerhouse/package\",\n documentEditor: \"powerhouse/document-editor\",\n documentApp: \"powerhouse/app\",\n documentSubgraph: \"powerhouse/subgraph\",\n documentProcessor: \"powerhouse/processor\",\n documentCodegenProcessor: \"powerhouse/codegen-processor\",\n};\n//# sourceMappingURL=document-types.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport const ChevronIcon = ({ width = 24, height = 24, className = '', stroke = 'currentColor' }) => {\n return (_jsx(\"svg\", { width: width, height: height, viewBox: \"0 0 24 24\", fill: \"none\", className: className, xmlns: \"http://www.w3.org/2000/svg\", children: _jsx(\"path\", { strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 2, d: \"M9 5l7 7-7 7\", stroke: stroke }) }));\n};\n//# sourceMappingURL=ChevronIcon.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport const PlusIcon = ({ width = 24, height = 24, className = '', stroke = 'currentColor' }) => {\n return (_jsx(\"svg\", { width: width, height: height, viewBox: \"0 0 24 24\", fill: \"none\", className: className, xmlns: \"http://www.w3.org/2000/svg\", children: _jsx(\"path\", { strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 2, d: \"M12 4v16m8-8H4\", stroke: stroke }) }));\n};\n//# sourceMappingURL=PlusIcon.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useState, useRef, useEffect } from 'react';\nexport const Accordion = ({ isOpen, onToggle, header, children, className = '' }) => {\n const contentRef = useRef(null);\n const [height, setHeight] = useState('auto');\n useEffect(() => {\n const updateHeight = () => {\n if (contentRef.current) {\n if (isOpen) {\n // Temporarily set to auto to get the real height\n const scrollHeight = contentRef.current.scrollHeight;\n setHeight(scrollHeight);\n }\n }\n };\n updateHeight();\n // Use ResizeObserver to detect content changes\n const resizeObserver = new ResizeObserver(updateHeight);\n if (contentRef.current) {\n resizeObserver.observe(contentRef.current);\n }\n return () => {\n resizeObserver.disconnect();\n };\n }, [children, isOpen]);\n return (_jsxs(\"div\", { className: className, children: [_jsx(\"button\", { onClick: onToggle, className: \"w-full text-left focus:outline-none\", children: header }), _jsx(\"div\", { className: \"overflow-hidden transition-all duration-300 ease-in-out\", style: {\n maxHeight: isOpen ? (height === 'auto' ? 'none' : `${height}px`) : '0px',\n opacity: isOpen ? 1 : 0\n }, children: _jsx(\"div\", { ref: contentRef, children: children }) })] }));\n};\n//# sourceMappingURL=Accordion.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useState } from 'react';\nimport { ChevronIcon } from '../icons/ChevronIcon.js';\nimport { PlusIcon } from '../icons/PlusIcon.js';\nimport { Accordion } from './Accordion.js';\nexport const ModuleAccordion = ({ title, count, onAdd, children, defaultOpen = false, className = '', headerClassName = '' }) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const header = (_jsxs(\"div\", { className: `flex items-center justify-between py-2 px-3 hover:bg-gray-50 transition-colors rounded-md ${headerClassName}`, children: [_jsxs(\"div\", { className: \"flex items-center gap-2\", children: [_jsx(ChevronIcon, { width: 12, height: 12, className: `text-gray-600 transition-transform duration-300 ${isOpen ? 'rotate-90' : ''}` }), _jsx(\"span\", { className: \"text-sm font-medium text-gray-700\", children: title }), _jsx(\"span\", { className: \"px-2 py-0.5 text-xs font-medium bg-gray-100 text-gray-600 rounded-full\", children: count })] }), _jsx(\"button\", { onClick: (e) => {\n e.stopPropagation();\n onAdd?.();\n }, className: \"p-1 hover:bg-gray-200 rounded transition-colors\", children: _jsx(PlusIcon, { width: 16, height: 16, className: \"text-gray-600\" }) })] }));\n return (_jsx(\"div\", { className: `mb-2 ${className}`, children: _jsx(Accordion, { isOpen: isOpen, onToggle: () => setIsOpen(!isOpen), header: header, children: _jsx(\"div\", { className: \"px-3 pb-2\", children: children }) }) }));\n};\n//# sourceMappingURL=ModuleAccordion.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const AddNewIcon = ({ width = 40, height = 48, className = '' }) => {\n return (_jsxs(\"svg\", { width: width, height: height, viewBox: \"0 0 40 42\", fill: \"none\", className: className, xmlns: \"http://www.w3.org/2000/svg\", children: [_jsx(\"g\", { filter: \"url(#filter0_di_2184_4955)\", children: _jsx(\"path\", { d: \"M4.7384 6.83572C4.7384 3.48006 7.38337 0.759766 10.6461 0.759766H29.3538C32.6165 0.759766 35.2615 3.48006 35.2615 6.83572V33.1648C35.2615 36.5205 32.6165 39.2408 29.3538 39.2408H10.6461C7.38337 39.2408 4.7384 36.5205 4.7384 33.1648V6.83572Z\", fill: \"#F3F5F7\" }) }), _jsx(\"g\", { filter: \"url(#filter1_di_2184_4955)\", children: _jsx(\"path\", { d: \"M9.97019 38.4365C10.1911 38.4661 10.4167 38.481 10.6462 38.481H11.426C11.8337 38.4812 12.1644 38.8212 12.1644 39.2405C12.1644 39.6599 11.8337 39.9998 11.426 40H10.6462C10.3526 40 10.063 39.9808 9.77885 39.9426C9.37459 39.8883 9.08971 39.507 9.14231 39.0912C9.19506 38.6752 9.56578 38.3823 9.97019 38.4365ZM16.1029 38.481C16.5106 38.4812 16.8413 38.8212 16.8413 39.2405C16.8413 39.6599 16.5106 39.9998 16.1029 40H14.5433C14.1356 39.9998 13.8048 39.6599 13.8048 39.2405C13.8048 38.8212 14.1356 38.4812 14.5433 38.481H16.1029ZM20.7798 38.481C21.1875 38.4812 21.5183 38.8212 21.5183 39.2405C21.5183 39.6599 21.1875 39.9998 20.7798 40H19.2202C18.8125 39.9998 18.4817 39.6599 18.4817 39.2405C18.4817 38.8212 18.8125 38.4812 19.2202 38.481H20.7798ZM25.4567 38.481C25.8644 38.4812 26.1952 38.8212 26.1952 39.2405C26.1952 39.6599 25.8644 39.9998 25.4567 40H23.8971C23.4894 39.9998 23.1587 39.6599 23.1587 39.2405C23.1587 38.8212 23.4894 38.4812 23.8971 38.481H25.4567ZM30.0298 38.4365C30.4342 38.3823 30.8049 38.6752 30.8577 39.0912C30.9103 39.507 30.6254 39.8883 30.2212 39.9426C29.937 39.9808 29.6474 40 29.3538 40H28.574C28.1663 39.9998 27.8356 39.6599 27.8356 39.2405C27.8356 38.8212 28.1663 38.4812 28.574 38.481H29.3538C29.5833 38.481 29.8089 38.4661 30.0298 38.4365ZM5.50865 36.2609C5.83191 36.0054 6.29565 36.0681 6.54423 36.4003C6.81962 36.7689 7.14163 37.1001 7.5 37.3833C7.82304 37.639 7.88398 38.1159 7.63558 38.4484C7.38716 38.7808 6.92335 38.843 6.6 38.5878C6.13985 38.2241 5.72668 37.7992 5.37308 37.326C5.12492 36.9934 5.18544 36.5164 5.50865 36.2609ZM33.4558 36.4003C33.7044 36.0681 34.1681 36.0054 34.4913 36.2609C34.8146 36.5164 34.8751 36.9934 34.6269 37.326C34.2733 37.7992 33.8601 38.2241 33.4 38.5878C33.0766 38.843 32.6128 38.7808 32.3644 38.4484C32.116 38.1159 32.177 37.639 32.5 37.3833C32.8584 37.1001 33.1804 36.7689 33.4558 36.4003ZM4 33.1646V32.4328C4.00023 32.0135 4.33076 31.6733 4.73846 31.6733C5.14616 31.6733 5.47669 32.0135 5.47692 32.4328V33.1646C5.47692 33.4005 5.49139 33.6326 5.52019 33.8598C5.57294 34.2757 5.28807 34.657 4.88365 34.7112C4.47938 34.7653 4.10858 34.4723 4.05577 34.0566C4.01871 33.7644 4 33.4665 4 33.1646ZM34.5231 33.1646V32.4328C34.5233 32.0135 34.8538 31.6733 35.2615 31.6733C35.6692 31.6733 35.9998 32.0135 36 32.4328V33.1646C36 33.4665 35.9813 33.7644 35.9442 34.0566C35.8914 34.4723 35.5206 34.7653 35.1163 34.7112C34.7119 34.657 34.4271 34.2757 34.4798 33.8598C34.5086 33.6326 34.5231 33.4005 34.5231 33.1646ZM4 29.5075V28.0449C4.00006 27.6255 4.33066 27.2854 4.73846 27.2854C5.14627 27.2854 5.47686 27.6255 5.47692 28.0449V29.5075C5.47692 29.927 5.1463 30.267 4.73846 30.267C4.33062 30.267 4 29.927 4 29.5075ZM34.5231 29.5075V28.0449C34.5231 27.6255 34.8537 27.2854 35.2615 27.2854C35.6693 27.2854 35.9999 27.6255 36 28.0449V29.5075C36 29.927 35.6694 30.267 35.2615 30.267C34.8537 30.267 34.5231 29.927 34.5231 29.5075ZM4 25.1197V23.657C4 23.2376 4.33062 22.8975 4.73846 22.8975C5.1463 22.8975 5.47692 23.2376 5.47692 23.657V25.1197C5.47686 25.5391 5.14627 25.8792 4.73846 25.8792C4.33066 25.8792 4.00006 25.5391 4 25.1197ZM34.5231 25.1197V23.657C34.5231 23.2376 34.8537 22.8975 35.2615 22.8975C35.6694 22.8975 36 23.2376 36 23.657V25.1197C35.9999 25.5391 35.6693 25.8792 35.2615 25.8792C34.8537 25.8792 34.5231 25.5391 34.5231 25.1197ZM4 20.7318V19.2682C4.00023 18.8489 4.33076 18.5087 4.73846 18.5087C5.14616 18.5087 5.47669 18.8489 5.47692 19.2682V20.7318C5.47669 21.1511 5.14616 21.4913 4.73846 21.4913C4.33076 21.4913 4.00023 21.1511 4 20.7318ZM34.5231 20.7318V19.2682C34.5233 18.8489 34.8538 18.5087 35.2615 18.5087C35.6692 18.5087 35.9998 18.8489 36 19.2682V20.7318C35.9998 21.1511 35.6692 21.4913 35.2615 21.4913C34.8538 21.4913 34.5233 21.1511 34.5231 20.7318ZM4 16.343V14.8803C4.00006 14.4609 4.33066 14.1208 4.73846 14.1208C5.14627 14.1208 5.47687 14.4609 5.47692 14.8803V16.343C5.47692 16.7624 5.1463 17.1025 4.73846 17.1025C4.33062 17.1025 4 16.7624 4 16.343ZM34.5231 16.343V14.8803C34.5231 14.4609 34.8537 14.1208 35.2615 14.1208C35.6693 14.1208 35.9999 14.4609 36 14.8803V16.343C36 16.7624 35.6694 17.1025 35.2615 17.1025C34.8537 17.1025 34.5231 16.7624 34.5231 16.343ZM4 11.9551V10.4925C4 10.073 4.33062 9.73299 4.73846 9.73299C5.1463 9.73299 5.47692 10.073 5.47692 10.4925V11.9551C5.47687 12.3745 5.14627 12.7146 4.73846 12.7146C4.33066 12.7146 4.00006 12.3745 4 11.9551ZM34.5231 11.9551V10.4925C34.5231 10.073 34.8537 9.73299 35.2615 9.73299C35.6694 9.73299 36 10.073 36 10.4925V11.9551C35.9999 12.3745 35.6693 12.7146 35.2615 12.7146C34.8537 12.7146 34.5231 12.3745 34.5231 11.9551ZM4 7.56725V6.83544C4 6.53354 4.01871 6.23565 4.05577 5.94343C4.10858 5.52766 4.47938 5.23467 4.88365 5.28877C5.28807 5.34302 5.57294 5.7243 5.52019 6.14023C5.49139 6.36741 5.47692 6.59948 5.47692 6.83544V7.56725C5.47669 7.9865 5.14616 8.32674 4.73846 8.32674C4.33076 8.32674 4.00023 7.9865 4 7.56725ZM34.5231 7.56725V6.83544C34.5231 6.59948 34.5086 6.36741 34.4798 6.14023C34.4271 5.7243 34.7119 5.34302 35.1163 5.28877C35.5206 5.23467 35.8914 5.52766 35.9442 5.94343C35.9813 6.23565 36 6.53354 36 6.83544V7.56725C35.9998 7.9865 35.6692 8.32674 35.2615 8.32674C34.8538 8.32674 34.5233 7.9865 34.5231 7.56725ZM6.6 1.41218C6.92335 1.15696 7.38716 1.2192 7.63558 1.55162C7.88398 1.88408 7.82304 2.36103 7.5 2.61669C7.14163 2.89993 6.81962 3.23111 6.54423 3.59968C6.29565 3.93193 5.83191 3.9946 5.50865 3.73912C5.18544 3.48363 5.12492 3.00661 5.37308 2.67405C5.72668 2.2008 6.13985 1.77586 6.6 1.41218ZM32.3644 1.55162C32.6128 1.2192 33.0766 1.15696 33.4 1.41218C33.8601 1.77586 34.2733 2.2008 34.6269 2.67405C34.8751 3.00661 34.8146 3.48363 34.4913 3.73912C34.1681 3.9946 33.7044 3.93193 33.4558 3.59968C33.1804 3.23111 32.8584 2.89993 32.5 2.61669C32.177 2.36103 32.116 1.88408 32.3644 1.55162ZM11.426 0C11.8337 0.000178509 12.1644 0.340147 12.1644 0.759494C12.1644 1.17884 11.8337 1.51881 11.426 1.51899H10.6462C10.4167 1.51899 10.1911 1.53386 9.97019 1.56349C9.56578 1.61774 9.19506 1.32475 9.14231 0.908821C9.08971 0.493037 9.37459 0.111671 9.77885 0.0573576C10.063 0.0192405 10.3526 0 10.6462 0H11.426ZM29.3538 0C29.6474 0 29.937 0.0192406 30.2212 0.0573576C30.6254 0.111671 30.9103 0.493038 30.8577 0.908821C30.8049 1.32475 30.4342 1.61774 30.0298 1.56349C29.8089 1.53386 29.5833 1.51899 29.3538 1.51899H28.574C28.1663 1.51881 27.8356 1.17884 27.8356 0.759494C27.8356 0.340147 28.1663 0.000178083 28.574 0H29.3538ZM16.1029 0C16.5106 0.000178509 16.8413 0.340147 16.8413 0.759494C16.8413 1.17884 16.5106 1.51881 16.1029 1.51899H14.5433C14.1356 1.51881 13.8048 1.17884 13.8048 0.759494C13.8048 0.340147 14.1356 0.000177889 14.5433 0H16.1029ZM20.7798 0C21.1875 0.000178509 21.5183 0.340147 21.5183 0.759494C21.5183 1.17884 21.1875 1.51881 20.7798 1.51899H19.2202C18.8125 1.51881 18.4817 1.17884 18.4817 0.759494C18.4817 0.340147 18.8125 0.000177889 19.2202 0H20.7798ZM25.4567 0C25.8644 0.000178199 26.1952 0.340147 26.1952 0.759494C26.1952 1.17884 25.8644 1.51881 25.4567 1.51899H23.8971C23.4894 1.51881 23.1587 1.17884 23.1587 0.759494C23.1587 0.340147 23.4894 0.000177889 23.8971 0H25.4567Z\", fill: \"#404446\" }) }), _jsx(\"path\", { d: \"M14.5846 18.9851H24.4307M19.5079 13.9238V24.0504\", stroke: \"#404446\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), _jsxs(\"defs\", { children: [_jsxs(\"filter\", { id: \"filter0_di_2184_4955\", x: \"0.738403\", y: \"-0.240234\", width: \"38.5231\", height: \"47.4805\", filterUnits: \"userSpaceOnUse\", colorInterpolationFilters: \"sRGB\", children: [_jsx(\"feFlood\", { floodOpacity: \"0\", result: \"BackgroundImageFix\" }), _jsx(\"feColorMatrix\", { in: \"SourceAlpha\", type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\", result: \"hardAlpha\" }), _jsx(\"feMorphology\", { radius: \"4\", operator: \"erode\", in: \"SourceAlpha\", result: \"effect1_dropShadow_2184_4955\" }), _jsx(\"feOffset\", { dy: \"4\" }), _jsx(\"feGaussianBlur\", { stdDeviation: \"4\" }), _jsx(\"feColorMatrix\", { type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02 0\" }), _jsx(\"feBlend\", { mode: \"multiply\", in2: \"BackgroundImageFix\", result: \"effect1_dropShadow_2184_4955\" }), _jsx(\"feBlend\", { mode: \"normal\", in: \"SourceGraphic\", in2: \"effect1_dropShadow_2184_4955\", result: \"shape\" }), _jsx(\"feColorMatrix\", { in: \"SourceAlpha\", type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\", result: \"hardAlpha\" }), _jsx(\"feOffset\", { dy: \"-1\" }), _jsx(\"feGaussianBlur\", { stdDeviation: \"0.5\" }), _jsx(\"feComposite\", { in2: \"hardAlpha\", operator: \"arithmetic\", k2: \"-1\", k3: \"1\" }), _jsx(\"feColorMatrix\", { type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0\" }), _jsx(\"feBlend\", { mode: \"multiply\", in2: \"shape\", result: \"effect2_innerShadow_2184_4955\" })] }), _jsxs(\"filter\", { id: \"filter1_di_2184_4955\", x: \"0\", y: \"-1\", width: \"40\", height: \"49\", filterUnits: \"userSpaceOnUse\", colorInterpolationFilters: \"sRGB\", children: [_jsx(\"feFlood\", { floodOpacity: \"0\", result: \"BackgroundImageFix\" }), _jsx(\"feColorMatrix\", { in: \"SourceAlpha\", type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\", result: \"hardAlpha\" }), _jsx(\"feMorphology\", { radius: \"4\", operator: \"erode\", in: \"SourceAlpha\", result: \"effect1_dropShadow_2184_4955\" }), _jsx(\"feOffset\", { dy: \"4\" }), _jsx(\"feGaussianBlur\", { stdDeviation: \"4\" }), _jsx(\"feColorMatrix\", { type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02 0\" }), _jsx(\"feBlend\", { mode: \"multiply\", in2: \"BackgroundImageFix\", result: \"effect1_dropShadow_2184_4955\" }), _jsx(\"feBlend\", { mode: \"normal\", in: \"SourceGraphic\", in2: \"effect1_dropShadow_2184_4955\", result: \"shape\" }), _jsx(\"feColorMatrix\", { in: \"SourceAlpha\", type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\", result: \"hardAlpha\" }), _jsx(\"feOffset\", { dy: \"-1\" }), _jsx(\"feGaussianBlur\", { stdDeviation: \"0.5\" }), _jsx(\"feComposite\", { in2: \"hardAlpha\", operator: \"arithmetic\", k2: \"-1\", k3: \"1\" }), _jsx(\"feColorMatrix\", { type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0\" }), _jsx(\"feBlend\", { mode: \"multiply\", in2: \"shape\", result: \"effect2_innerShadow_2184_4955\" })] })] })] }));\n};\n//# sourceMappingURL=AddNewIcon.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const DocModelIcon = ({ width = 40, height = 48, className = '' }) => {\n return (_jsxs(\"svg\", { width: width, height: height, viewBox: \"0 0 40 42\", fill: \"none\", className: className, xmlns: \"http://www.w3.org/2000/svg\", children: [_jsxs(\"g\", { filter: \"url(#filter0_di_2102_4407)\", children: [_jsx(\"path\", { d: \"M4 6C4 2.68629 6.68629 0 10 0L28 0L36 8V34C36 37.3137 33.3137 40 30 40H10C6.68629 40 4 37.3137 4 34V6Z\", fill: \"#F3F5F7\" }), _jsx(\"path\", { d: \"M10 0.75H27.6895L35.25 8.31055V34C35.25 36.8995 32.8995 39.25 30 39.25H10C7.10051 39.25 4.75 36.8995 4.75 34V6C4.75 3.10051 7.10051 0.75 10 0.75Z\", stroke: \"#FF6A55\", strokeWidth: \"1.5\" })] }), _jsx(\"path\", { d: \"M18.0813 19.8653C18.3401 19.5422 18.8117 19.4896 19.1351 19.7481C19.4585 20.0069 19.511 20.4794 19.2522 20.8028L18.2933 22.0001L19.2522 23.1993C19.5108 23.5227 19.4584 23.9943 19.1351 24.253C18.8117 24.5117 18.3401 24.4591 18.0813 24.1358L16.7474 22.4688C16.5286 22.195 16.5285 21.8061 16.7474 21.5323L18.0813 19.8653Z\", fill: \"#FF6A55\" }), _jsx(\"path\", { d: \"M20.8645 19.7483C21.188 19.4896 21.6605 19.5421 21.9192 19.8655L23.2522 21.5325C23.4713 21.8064 23.4712 22.1952 23.2522 22.469L21.9192 24.136C21.6605 24.4595 21.188 24.512 20.8645 24.2532C20.5414 23.9945 20.489 23.5229 20.7474 23.1995L21.7063 22.0003L20.7474 20.803C20.4886 20.4796 20.5411 20.0071 20.8645 19.7483Z\", fill: \"#FF6A55\" }), _jsx(\"path\", { d: \"M20.5833 16.001V13.334C20.5833 12.9198 20.919 12.584 21.3333 12.584C21.7475 12.584 22.0833 12.9198 22.0833 13.334V16.001C22.0833 16.1556 22.1448 16.3038 22.2542 16.4131C22.3635 16.5224 22.5117 16.5839 22.6663 16.584H25.3333C25.7475 16.584 26.0833 16.9198 26.0833 17.334C26.0833 17.7482 25.7475 18.084 25.3333 18.084H22.6663C22.1138 18.0839 21.5842 17.8643 21.1936 17.4736C20.803 17.083 20.5833 16.5534 20.5833 16.001Z\", fill: \"#FF6A55\" }), _jsx(\"path\", { d: \"M13.9166 25.334V14.667C13.9167 14.1146 14.1364 13.585 14.527 13.1943C14.9176 12.8037 15.4472 12.5841 15.9996 12.584H21.9996C22.1985 12.584 22.3893 12.6632 22.5299 12.8037L25.8639 16.1367C26.0045 16.2773 26.0835 16.4682 26.0836 16.667V25.334C26.0836 25.8864 25.8638 26.416 25.4733 26.8066C25.0826 27.1973 24.5522 27.417 23.9996 27.417H15.9996C15.4472 27.4169 14.9176 27.1973 14.527 26.8066C14.1364 26.416 13.9166 25.8864 13.9166 25.334ZM15.4166 25.334C15.4166 25.4886 15.4782 25.6367 15.5875 25.7461C15.6968 25.8554 15.845 25.9169 15.9996 25.917H23.9996C24.1543 25.917 24.3033 25.8555 24.4127 25.7461C24.5219 25.6367 24.5836 25.4885 24.5836 25.334V16.9775L21.6891 14.084H15.9996C15.845 14.0841 15.6968 14.1456 15.5875 14.2549C15.4782 14.3642 15.4167 14.5124 15.4166 14.667V25.334Z\", fill: \"#FF6A55\" }), _jsx(\"path\", { d: \"M27 0L36 9H31C28.7909 9 27 7.20914 27 5V0Z\", fill: \"#FF6A55\" }), _jsx(\"defs\", { children: _jsxs(\"filter\", { id: \"filter0_di_2102_4407\", x: \"0\", y: \"-1\", width: \"40\", height: \"49\", filterUnits: \"userSpaceOnUse\", colorInterpolationFilters: \"sRGB\", children: [_jsx(\"feFlood\", { floodOpacity: \"0\", result: \"BackgroundImageFix\" }), _jsx(\"feColorMatrix\", { in: \"SourceAlpha\", type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\", result: \"hardAlpha\" }), _jsx(\"feMorphology\", { radius: \"4\", operator: \"erode\", in: \"SourceAlpha\", result: \"effect1_dropShadow_2102_4407\" }), _jsx(\"feOffset\", { dy: \"4\" }), _jsx(\"feGaussianBlur\", { stdDeviation: \"4\" }), _jsx(\"feColorMatrix\", { type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02 0\" }), _jsx(\"feBlend\", { mode: \"multiply\", in2: \"BackgroundImageFix\", result: \"effect1_dropShadow_2102_4407\" }), _jsx(\"feBlend\", { mode: \"normal\", in: \"SourceGraphic\", in2: \"effect1_dropShadow_2102_4407\", result: \"shape\" }), _jsx(\"feColorMatrix\", { in: \"SourceAlpha\", type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\", result: \"hardAlpha\" }), _jsx(\"feOffset\", { dy: \"-1\" }), _jsx(\"feGaussianBlur\", { stdDeviation: \"0.5\" }), _jsx(\"feComposite\", { in2: \"hardAlpha\", operator: \"arithmetic\", k2: \"-1\", k3: \"1\" }), _jsx(\"feColorMatrix\", { type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0\" }), _jsx(\"feBlend\", { mode: \"multiply\", in2: \"shape\", result: \"effect2_innerShadow_2102_4407\" })] }) })] }));\n};\n//# sourceMappingURL=DocModelIcon.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const EditorIcon = ({ width = 40, height = 48, className = '' }) => {\n return (_jsxs(\"svg\", { width: width, height: height, viewBox: \"0 0 40 42\", fill: \"none\", className: className, xmlns: \"http://www.w3.org/2000/svg\", children: [_jsxs(\"g\", { filter: \"url(#filter0_di_2102_4406)\", children: [_jsx(\"path\", { d: \"M4 6C4 2.68629 6.68629 0 10 0L28 0L36 8V34C36 37.3137 33.3137 40 30 40H10C6.68629 40 4 37.3137 4 34V6Z\", fill: \"#F3F5F7\" }), _jsx(\"path\", { d: \"M10 0.75H27.6895L35.25 8.31055V34C35.25 36.8995 32.8995 39.25 30 39.25H10C7.10051 39.25 4.75 36.8995 4.75 34V6C4.75 3.10051 7.10051 0.75 10 0.75Z\", stroke: \"#FF891D\", strokeWidth: \"1.5\" })] }), _jsx(\"path\", { d: \"M27 0L36 9H31C28.7909 9 27 7.20914 27 5V0Z\", fill: \"#FF891D\" }), _jsxs(\"g\", { clipPath: \"url(#clip0_2102_4406)\", children: [_jsx(\"path\", { d: \"M12.5822 16.667C12.5822 16.0439 12.8292 15.4455 13.2687 15.0039L15.004 13.2686C15.4457 12.8291 16.0441 12.582 16.6671 12.582C17.2121 12.5821 17.7377 12.7708 18.1564 13.1123L18.3292 13.2686L21.1974 16.1357C21.4903 16.4286 21.4903 16.9044 21.1974 17.1973C20.9045 17.4902 20.4288 17.4902 20.1359 17.1973L17.2706 14.3311C17.1102 14.1716 16.8933 14.0822 16.6671 14.082C16.4408 14.082 16.2231 14.1715 16.0626 14.3311L14.3302 16.0635C14.1713 16.2239 14.0822 16.4411 14.0822 16.667C14.0823 16.8927 14.1714 17.1092 14.3302 17.2695L17.1974 20.1357C17.4903 20.4286 17.4903 20.9044 17.1974 21.1973C16.9045 21.4902 16.4288 21.4902 16.1359 21.1973L13.2687 18.3291C12.8293 17.8876 12.5823 17.2899 12.5822 16.667Z\", fill: \"#FF891D\" }), _jsx(\"path\", { d: \"M18.1361 14.1356C18.4289 13.8428 18.9037 13.8429 19.1966 14.1356C19.4895 14.4285 19.4895 14.9033 19.1966 15.1962L17.8636 16.5292C17.5707 16.8221 17.096 16.8221 16.8031 16.5292C16.5104 16.2363 16.5102 15.7615 16.8031 15.4686L18.1361 14.1356Z\", fill: \"#FF891D\" }), _jsx(\"path\", { d: \"M24.8027 20.8036C25.0956 20.5107 25.5704 20.5108 25.8633 20.8036C26.1562 21.0965 26.1562 21.5712 25.8633 21.8641L24.5303 23.1971C24.2374 23.49 23.7626 23.49 23.4697 23.1971C23.177 22.9042 23.1769 22.4294 23.4697 22.1366L24.8027 20.8036Z\", fill: \"#FF891D\" }), _jsx(\"path\", { d: \"M22.803 18.8037C23.0959 18.5108 23.5707 18.5108 23.8636 18.8037L26.7308 21.6699C27.6503 22.5894 27.6503 24.0784 26.7308 24.998L24.9974 26.7314C24.0778 27.6509 22.5888 27.6509 21.6693 26.7314L18.803 23.8642C18.5102 23.5713 18.5102 23.0965 18.803 22.8037C19.0959 22.5108 19.5707 22.5108 19.8636 22.8037L22.7308 25.6699C23.0645 26.0036 23.6021 26.0036 23.9359 25.6699L25.6693 23.9365C26.003 23.6027 26.003 23.0652 25.6693 22.7314L22.803 19.8642C22.5102 19.5713 22.5102 19.0965 22.803 18.8037Z\", fill: \"#FF891D\" }), _jsx(\"path\", { d: \"M25.9164 15.2139C25.9164 14.9145 25.7979 14.6268 25.5863 14.415C25.3746 14.2032 25.087 14.084 24.7875 14.084C24.488 14.0839 24.2005 14.2033 23.9887 14.415L23.9877 14.4141L15.0912 23.3145C15.0241 23.3813 14.9729 23.4633 14.9447 23.5537L14.9457 23.5547L14.2914 25.709L16.4467 25.0557L16.5131 25.0303C16.5782 25.0014 16.6381 24.9607 16.6889 24.9102L25.5853 16.0117C25.797 15.8001 25.9162 15.5132 25.9164 15.2139ZM27.4164 15.2139C27.4162 15.9109 27.1396 16.5794 26.6469 17.0723L17.7475 25.9727C17.506 26.2133 17.2093 26.391 16.8832 26.4902L13.9799 27.3711C13.7927 27.4274 13.5923 27.4324 13.4027 27.3848C13.2132 27.3371 13.0401 27.2386 12.9017 27.1006C12.7634 26.9624 12.6646 26.7891 12.6166 26.5996C12.5686 26.41 12.5723 26.2108 12.6283 26.0234L12.6293 26.0205L13.5101 23.1191L13.5111 23.1172C13.6111 22.791 13.7892 22.4939 14.0307 22.2529L22.9281 13.3535C23.4212 12.8605 24.0902 12.5839 24.7875 12.584C25.4848 12.5841 26.1538 12.8613 26.6469 13.3545C27.1398 13.8476 27.4165 14.5166 27.4164 15.2139Z\", fill: \"#FF891D\" }), _jsx(\"path\", { d: \"M21.4697 14.8037C21.7626 14.5108 22.2373 14.5108 22.5302 14.8037L25.1972 17.4706C25.4898 17.7636 25.49 18.2384 25.1972 18.5312C24.9044 18.824 24.4296 18.8238 24.1367 18.5312L21.4697 15.8642C21.1768 15.5713 21.1768 15.0965 21.4697 14.8037Z\", fill: \"#FF891D\" })] }), _jsxs(\"defs\", { children: [_jsxs(\"filter\", { id: \"filter0_di_2102_4406\", x: \"0\", y: \"-1\", width: \"40\", height: \"49\", filterUnits: \"userSpaceOnUse\", colorInterpolationFilters: \"sRGB\", children: [_jsx(\"feFlood\", { floodOpacity: \"0\", result: \"BackgroundImageFix\" }), _jsx(\"feColorMatrix\", { in: \"SourceAlpha\", type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\", result: \"hardAlpha\" }), _jsx(\"feMorphology\", { radius: \"4\", operator: \"erode\", in: \"SourceAlpha\", result: \"effect1_dropShadow_2102_4406\" }), _jsx(\"feOffset\", { dy: \"4\" }), _jsx(\"feGaussianBlur\", { stdDeviation: \"4\" }), _jsx(\"feColorMatrix\", { type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02 0\" }), _jsx(\"feBlend\", { mode: \"multiply\", in2: \"BackgroundImageFix\", result: \"effect1_dropShadow_2102_4406\" }), _jsx(\"feBlend\", { mode: \"normal\", in: \"SourceGraphic\", in2: \"effect1_dropShadow_2102_4406\", result: \"shape\" }), _jsx(\"feColorMatrix\", { in: \"SourceAlpha\", type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\", result: \"hardAlpha\" }), _jsx(\"feOffset\", { dy: \"-1\" }), _jsx(\"feGaussianBlur\", { stdDeviation: \"0.5\" }), _jsx(\"feComposite\", { in2: \"hardAlpha\", operator: \"arithmetic\", k2: \"-1\", k3: \"1\" }), _jsx(\"feColorMatrix\", { type: \"matrix\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0\" }), _jsx(\"feBlend\", { mode: \"multiply\", in2: \"shape\", result: \"effect2_innerShadow_2102_4406\" })] }), _jsx(\"clipPath\", { id: \"clip0_2102_4406\", children: _jsx(\"rect\", { width: \"16\", height: \"16\", fill: \"white\", transform: \"translate(12 12)\" }) })] })] }));\n};\n//# sourceMappingURL=EditorIcon.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { DOCUMENT_TYPES } from '../document-types.js';\nimport { AddNewIcon } from '../icons/AddNewIcon.js';\nimport { DocModelIcon } from '../icons/DocModelIcon.js';\nimport { EditorIcon } from '../icons/EditorIcon.js';\nconst getIconForDocumentType = (documentType) => {\n switch (documentType) {\n case DOCUMENT_TYPES.documentModel:\n return DocModelIcon;\n case DOCUMENT_TYPES.documentEditor:\n return EditorIcon;\n case 'new':\n return AddNewIcon;\n default:\n return DocModelIcon;\n }\n};\nexport const ModuleItem = ({ fileNode, onClick, className = '' }) => {\n const IconComponent = getIconForDocumentType(fileNode.documentType);\n return (_jsxs(\"button\", { onClick: () => onClick(fileNode), className: `flex items-center gap-3 p-1 w-full text-left hover:bg-zinc-200 rounded-md transition-colors bg-zinc-100 ${className}`, children: [_jsx(\"div\", { className: \"flex-shrink-0\", children: _jsx(IconComponent, {}) }), _jsxs(\"div\", { className: \"flex-1 min-w-0\", children: [_jsx(\"h3\", { className: \"text-sm font-medium text-gray-900 truncate\", children: fileNode.name }), _jsx(\"p\", { className: \"text-xs text-gray-500 truncate\", children: fileNode.documentType })] })] }));\n};\n//# sourceMappingURL=ModuleItem.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { AddNewIcon } from '../icons/AddNewIcon.js';\nexport const NewModuleItem = ({ title, subtitle, onClick, className = '' }) => {\n return (_jsxs(\"button\", { onClick: onClick, className: `flex items-center gap-3 p-1 w-full text-left hover:bg-zinc-200 rounded-md transition-colors bg-zinc-100 ${className}`, children: [_jsx(\"div\", { className: \"flex-shrink-0\", children: _jsx(AddNewIcon, {}) }), _jsxs(\"div\", { className: \"flex-1 min-w-0\", children: [_jsx(\"h3\", { className: \"text-sm font-medium text-gray-900 truncate\", children: title }), _jsx(\"p\", { className: \"text-xs text-gray-500 truncate\", children: subtitle })] })] }));\n};\n//# sourceMappingURL=NewModuleItem.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { ModuleItem } from './ModuleItem.js';\nimport { NewModuleItem } from './NewModuleItem.js';\nexport const ModuleList = ({ items, documentType, onAddNewSpec = () => { }, onClickItem = () => { }, }) => {\n return (_jsxs(\"div\", { className: \"space-y-2\", children: [items.map((item, index) => (_jsx(\"div\", { className: \"px-2 py-1 text-sm text-gray-600\", children: _jsx(ModuleItem, { fileNode: item, onClick: onClickItem }) }, index))), _jsx(\"div\", { className: \"px-2 py-1 text-sm text-gray-600\", children: _jsx(NewModuleItem, { title: \"Add new specification\", subtitle: documentType, onClick: onAddNewSpec }) })] }));\n};\n//# sourceMappingURL=ModuleList.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { DOCUMENT_TYPES } from '../document-types.js';\nimport { ModuleAccordion } from './ModuleAccordion.js';\nimport { ModuleList } from './ModuleList.js';\nexport const DataIntegrationsColumn = ({ subgraphs, processors, codegenProcessors, onAddSubgraph, onAddProcessor, onAddCodegenProcessor, onOpenDocument, }) => {\n return (_jsxs(\"div\", { children: [_jsx(\"h3\", { className: \"text-sm font-normal text-gray-700 mb-4\", children: \"3. Data Integrations\" }), _jsxs(\"div\", { className: \"bg-zinc-50 rounded-md border border-zinc-200\", children: [_jsx(ModuleAccordion, { title: \"Subgraphs\", count: subgraphs.length, onAdd: onAddSubgraph || (() => console.log('Add subgraph clicked')), defaultOpen: true, headerClassName: \"m-4 bg-zinc-100 hover:bg-zinc-200 border border-zinc-200 rounded-md\", children: _jsx(ModuleList, { items: subgraphs, documentType: DOCUMENT_TYPES.documentSubgraph, onAddNewSpec: onAddSubgraph, onClickItem: onOpenDocument }) }), _jsx(ModuleAccordion, { title: \"Processors\", count: processors.length, onAdd: onAddProcessor || (() => console.log('Add processor clicked')), defaultOpen: true, headerClassName: \"m-4 bg-zinc-100 hover:bg-zinc-200 border border-zinc-200 rounded-md\", children: _jsx(ModuleList, { items: processors, documentType: DOCUMENT_TYPES.documentProcessor, onAddNewSpec: onAddProcessor, onClickItem: onOpenDocument }) }), _jsx(ModuleAccordion, { title: \"Codegen Processor\", count: codegenProcessors.length, onAdd: onAddCodegenProcessor || (() => console.log('Add codegen processor clicked')), defaultOpen: true, headerClassName: \"m-4 bg-zinc-100 hover:bg-zinc-200 border border-zinc-200 rounded-md\", children: _jsx(ModuleList, { items: codegenProcessors, documentType: DOCUMENT_TYPES.documentCodegenProcessor, onAddNewSpec: onAddCodegenProcessor, onClickItem: onOpenDocument }) })] })] }));\n};\n//# sourceMappingURL=DataIntegrationsColumn.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { DOCUMENT_TYPES } from '../document-types.js';\nimport { ModuleAccordion } from './ModuleAccordion.js';\nimport { ModuleList } from './ModuleList.js';\nexport const DocumentModelsColumn = ({ documentModels, onAddDocumentModel, onOpenDocument, }) => {\n return (_jsxs(\"div\", { children: [_jsx(\"h3\", { className: \"text-sm font-normal text-gray-700 mb-4\", children: \"1. Document Models\" }), _jsx(\"div\", { className: \"bg-zinc-50 rounded-md border border-zinc-200\", children: _jsx(ModuleAccordion, { title: \"Document Models\", count: documentModels.length, onAdd: onAddDocumentModel || (() => console.log('Add document model clicked')), defaultOpen: true, headerClassName: \"m-4 bg-zinc-100 hover:bg-zinc-200 border border-zinc-200 rounded-md\", children: _jsx(ModuleList, { items: documentModels, documentType: DOCUMENT_TYPES.documentModel, onAddNewSpec: onAddDocumentModel, onClickItem: onOpenDocument }) }) })] }));\n};\n//# sourceMappingURL=DocumentModelsColumn.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useState } from 'react';\nimport { ChevronIcon } from '../icons/ChevronIcon.js';\nimport { Accordion } from './Accordion.js';\nexport const SectionAccordion = ({ title, children, defaultOpen = false, className = '' }) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const header = (_jsxs(\"div\", { className: \"flex items-center gap-2 py-2 px-4 bg-zinc-50 hover:bg-zinc-100 transition-colors border border-zinc-200 rounded-md\", children: [_jsx(ChevronIcon, { width: 16, height: 16, className: `text-gray-600 transition-transform duration-300 ${isOpen ? 'rotate-90' : ''}` }), _jsx(\"h2\", { className: \"text-base font-semibold text-gray-800\", children: title })] }));\n return (_jsx(\"div\", { className: className, children: _jsx(Accordion, { isOpen: isOpen, onToggle: () => setIsOpen(!isOpen), header: header, children: _jsx(\"div\", { className: \"px-4 pb-4\", children: children }) }) }));\n};\n//# sourceMappingURL=SectionAccordion.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { DOCUMENT_TYPES } from '../document-types.js';\nimport { ModuleAccordion } from './ModuleAccordion.js';\nimport { ModuleList } from './ModuleList.js';\nexport const UserExperiencesColumn = ({ editors, apps, onAddEditor, onAddApp, onOpenDocument, }) => {\n return (_jsxs(\"div\", { children: [_jsx(\"h3\", { className: \"text-sm font-normal text-gray-700 mb-4\", children: \"2. User Experiences\" }), _jsxs(\"div\", { className: \"bg-zinc-50 rounded-md border border-zinc-200\", children: [_jsx(ModuleAccordion, { title: \"Editors\", count: editors.length, onAdd: onAddEditor || (() => console.log('Add editor clicked')), defaultOpen: true, headerClassName: \"m-4 bg-zinc-100 hover:bg-zinc-200 border border-zinc-200 rounded-md\", children: _jsx(ModuleList, { items: editors, documentType: DOCUMENT_TYPES.documentEditor, onAddNewSpec: onAddEditor, onClickItem: onOpenDocument }) }), _jsx(ModuleAccordion, { title: \"Apps\", count: apps.length, onAdd: onAddApp || (() => console.log('Add app clicked')), defaultOpen: true, headerClassName: \"m-4 bg-zinc-100 hover:bg-zinc-200 border border-zinc-200 rounded-md\", children: _jsx(ModuleList, { items: apps, documentType: DOCUMENT_TYPES.documentApp, onAddNewSpec: onAddApp, onClickItem: onOpenDocument }) })] })] }));\n};\n//# sourceMappingURL=UserExperiencesColumn.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { DataIntegrationsColumn } from './DataIntegrationsColumn.js';\nimport { DocumentModelsColumn } from './DocumentModelsColumn.js';\nimport { SectionAccordion } from './SectionAccordion.js';\nimport { UserExperiencesColumn } from './UserExperiencesColumn.js';\nexport const ModuleSpecificationsSection = (props) => {\n return (_jsx(SectionAccordion, { title: \"Module Specifications\", defaultOpen: true, children: _jsxs(\"div\", { className: \"grid grid-cols-1 lg:grid-cols-3 gap-8 mt-4\", children: [_jsx(DocumentModelsColumn, { documentModels: props.documentModels, onAddDocumentModel: props.onAddDocumentModel, onOpenDocument: props.onOpenDocument }), _jsx(UserExperiencesColumn, { editors: props.editors, apps: props.apps, onAddEditor: props.onAddEditor, onAddApp: props.onAddApp, onOpenDocument: props.onOpenDocument }), _jsx(DataIntegrationsColumn, { subgraphs: props.subgraphs, processors: props.processors, codegenProcessors: props.codegenProcessors, onAddSubgraph: props.onAddSubgraph, onAddProcessor: props.onAddProcessor, onAddCodegenProcessor: props.onAddCodegenProcessor, onOpenDocument: props.onOpenDocument })] }) }));\n};\n//# sourceMappingURL=ModuleSpecificationsSection.js.map","export function useUserPermissions() {\n return {\n isAllowedToCreateDocuments: true,\n isAllowedToEditDocuments: true,\n };\n}\n//# sourceMappingURL=useUserPermissions.js.map","import { useCallback, useEffect, useState } from \"react\";\nexport function useDocument(reactor, documentMeta = {}) {\n const { documentId, documentType } = documentMeta;\n const [document, setDocument] = useState();\n const onStrandUpdate = useCallback((cb) => {\n if (!reactor) {\n throw new Error(\"Reactor is not loaded\");\n }\n return reactor.on(\"strandUpdate\", cb);\n }, [reactor]);\n useEffect(() => {\n if (!reactor)\n return;\n if (!documentId || !documentType)\n return;\n reactor.getDocument(documentId).then(setDocument).catch(console.error);\n }, [documentId, documentType, reactor]);\n useEffect(() => {\n if (!reactor)\n return;\n if (!documentId || !documentType)\n return;\n const removeListener = onStrandUpdate((strand) => {\n if (strand.documentId === documentId) {\n reactor.getDocument(documentId).then(setDocument).catch(console.error);\n }\n });\n return removeListener;\n }, [onStrandUpdate, documentId, documentType]);\n return document;\n}\n//# sourceMappingURL=useDocument.js.map","import { buildSignedOperation, } from \"document-model\";\nexport async function signOperation(operation, sign, documentId, document, reducer, user) {\n if (!user)\n return operation;\n if (!operation.context)\n return operation;\n if (!operation.context.signer)\n return operation;\n if (!reducer) {\n console.error(`Document model '${document.header.documentType}' does not have a reducer`);\n return operation;\n }\n const context = {\n documentId,\n signer: operation.context.signer,\n };\n const signedOperation = await buildSignedOperation(operation, reducer, document, context, sign);\n return signedOperation;\n}\nexport function addActionContext(action, connectDid, user) {\n if (!user)\n return action;\n const signer = {\n app: {\n name: \"Connect\",\n key: connectDid || \"\",\n },\n user: {\n address: user.address,\n networkId: user.networkId,\n chainId: user.chainId,\n },\n signatures: [],\n };\n return {\n context: { signer },\n ...action,\n };\n}\n//# sourceMappingURL=signature.js.map","import { useCallback, useMemo } from \"react\";\nimport { useUserPermissions } from \"./useUserPermissions.js\";\nfunction debounceOperations(callback, timeout = 50) {\n let timer;\n const operations = [];\n return (operation) => {\n if (timer) {\n clearTimeout(timer);\n }\n const index = operations.findIndex((op) => op.scope === operation.scope && op.index === operation.index);\n if (index > -1) {\n const oldOperation = operations[index];\n if (!(oldOperation.type === operation.type &&\n JSON.stringify(operation.input) === JSON.stringify(oldOperation.input))) {\n console.warn(\"Two conflicting operations were dispatched:\", oldOperation, operation);\n }\n operations[index] = operation;\n }\n else {\n operations.push(operation);\n }\n return new Promise((resolve, reject) => {\n timer = setTimeout(() => {\n callback(operations).then(resolve).catch(reject);\n }, timeout);\n });\n };\n}\nexport function useAddDebouncedOperations(reactor, props) {\n const { documentId } = props;\n const { isAllowedToEditDocuments } = useUserPermissions() || {\n isAllowedToCreateDocuments: false,\n isAllowedToEditDocuments: false,\n };\n const addOperations = useCallback(async (id, operations) => {\n if (!isAllowedToEditDocuments) {\n throw new Error(\"User is not allowed to edit documents\");\n }\n if (!reactor) {\n throw new Error(\"Reactor is not loaded\");\n }\n if (!id) {\n throw new Error(\"Document id is not set\");\n }\n const newDocument = await reactor.queueOperations(id, operations);\n return newDocument.document;\n }, [isAllowedToEditDocuments, reactor]);\n const addDebouncedOperations = useMemo(() => {\n return debounceOperations((operations) => addOperations(documentId, operations));\n }, [addOperations, documentId]);\n return addDebouncedOperations;\n}\n//# sourceMappingURL=useAddDebouncedOperations.js.map","import { useEffect, useState } from \"react\";\nexport function useDocumentDispatch(documentReducer, initialState, onError = console.error) {\n const [state, setState] = useState(initialState);\n const [error, setError] = useState();\n const onErrorHandler = (error) => {\n setError(error);\n onError(error);\n };\n useEffect(() => {\n setState(initialState);\n }, [initialState]);\n const dispatch = (action, callback, onErrorCallback) => {\n setError(undefined);\n setState((_state) => {\n if (!documentReducer || !_state)\n return _state;\n try {\n const newState = documentReducer(_state, action);\n const scope = action.scope ?? \"global\";\n const operations = newState.operations[scope];\n const operation = operations[operations.length - 1];\n if (operation.error) {\n const error = new Error(operation.error);\n onErrorHandler(error);\n onErrorCallback?.(error);\n }\n callback?.(operation, {\n prevState: { ..._state },\n newState: { ...newState },\n });\n return newState;\n }\n catch (error) {\n onErrorHandler(error);\n onErrorCallback?.(error);\n return _state;\n }\n });\n };\n return [state, dispatch, error];\n}\n//# sourceMappingURL=useDocumentDispatch.js.map","import { addActionContext, signOperation } from \"../utils/signature.js\";\nimport { useAddDebouncedOperations } from \"./useAddDebouncedOperations.js\";\nimport { useConnectCrypto, useConnectDid } from \"./useConnectCrypto.js\";\nimport { useDocumentDispatch } from \"./useDocumentDispatch.js\";\nexport function useDocumentEditorProps(reactor, props) {\n const { nodeId, documentModelModule, document: initialDocument, user, connectDid, sign, } = props;\n const addDebouncedOperations = useAddDebouncedOperations(reactor, {\n documentId: nodeId,\n });\n const [document, _dispatch, error] = useDocumentDispatch(documentModelModule?.reducer, initialDocument);\n function dispatch(action, onErrorCallback) {\n const callback = (operation, state) => {\n const { prevState } = state;\n if (!nodeId) {\n throw new Error(\"Node id is not set\");\n }\n signOperation(operation, sign, nodeId, prevState, documentModelModule?.reducer, user)\n .then((op) => {\n return addDebouncedOperations(op);\n })\n .catch(console.error);\n };\n _dispatch(addActionContext(action, connectDid, user), callback, onErrorCallback);\n }\n return {\n dispatch,\n document,\n error,\n };\n}\nexport function useDocumentEditor(reactor, props) {\n const connectDid = useConnectDid();\n const { sign } = useConnectCrypto();\n const documentEditorDispatch = useDocumentEditorProps(reactor, {\n ...props,\n connectDid,\n sign,\n });\n return documentEditorDispatch;\n}\n//# sourceMappingURL=useDocumentEditor.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useDriveContext, } from \"@powerhousedao/reactor-browser\";\nimport { DefaultEditorLoader, } from \"@powerhousedao/design-system\";\nimport { Suspense } from \"react\";\nexport const EditorContainer = (props) => {\n const { driveId, documentId, documentType, context, documentModelModule, editorModule } = props;\n const { useDocumentEditorProps } = useDriveContext();\n const user = context.user;\n const { dispatch, error, document } = useDocumentEditorProps({\n documentId,\n documentType,\n driveId,\n documentModelModule,\n user,\n });\n const loadingContent = (_jsx(\"div\", { className: \"flex-1 flex justify-center items-center h-full\", children: _jsx(DefaultEditorLoader, {}) }));\n if (!document)\n return loadingContent;\n const moduleWithComponent = editorModule;\n const EditorComponent = moduleWithComponent.Component;\n return (_jsx(Suspense, { fallback: loadingContent, children: _jsx(EditorComponent, { context: context, dispatch: dispatch, document: document, error: error }) }));\n};\n//# sourceMappingURL=EditorContainer.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { DOCUMENT_TYPES } from '../document-types.js';\nimport { EditorContainer } from \"./EditorContainer.js\";\nimport { SectionAccordion } from './SectionAccordion.js';\nexport const PackageInformationSection = ({ className, context, packageDocumentId, onAddPackageDocument, documentModelModule, editorModule, driveId, }) => {\n const createpackageContent = (_jsx(\"button\", { className: \"bg-zinc-50 w-full h-[200px] my-2 rounded-md border border-zinc-200 border-dashed\", onClick: onAddPackageDocument, children: \"Click to create package manifest\" }));\n return (_jsx(SectionAccordion, { title: \"Package Information\", defaultOpen: true, className: className, children: _jsx(\"div\", { className: \"\", children: packageDocumentId && documentModelModule && editorModule ? (_jsx(EditorContainer, { context: context, documentId: packageDocumentId, driveId: driveId, documentModelModule: documentModelModule, editorModule: editorModule, documentType: DOCUMENT_TYPES.documentPackage })) : (createpackageContent) }) }));\n};\n//# sourceMappingURL=PackageInformationSection.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { DriveHeader } from './components/DriveHeader.js';\nimport { ModuleSpecificationsSection } from './components/ModuleSpecificationsSection.js';\nimport { PackageInformationSection } from './components/PackageInformationSection.js';\nimport { DOCUMENT_TYPES } from './document-types.js';\nexport const DriveExplorer = ({ documentModels = [], editors = [], apps = [], subgraphs = [], processors = [], codegenProcessors = [], onShareDrive, onAddDocumentModel, onAddEditor, onAddApp, onAddSubgraph, onAddProcessor, onAddCodegenProcessor, context, packageDocumentId, onAddPackageDocument, driveId, onOpenDocument, }) => {\n const documentModuleModule = packageDocumentId ?\n context.getDocumentModelModule(DOCUMENT_TYPES.documentPackage)\n : null;\n const editorModule = packageDocumentId\n ? context.getEditor(DOCUMENT_TYPES.documentPackage)\n : null;\n return (_jsxs(\"div\", { className: \"min-h-screen bg-white\", children: [_jsx(DriveHeader, { onShareClick: onShareDrive }), _jsxs(\"div\", { className: \"bg-white mx-6 mt-6 \", children: [_jsx(PackageInformationSection, { className: \"mb-6\", context: context, packageDocumentId: packageDocumentId, onAddPackageDocument: onAddPackageDocument, documentModelModule: documentModuleModule, editorModule: editorModule, driveId: driveId }), _jsx(ModuleSpecificationsSection, { documentModels: documentModels, editors: editors, apps: apps, subgraphs: subgraphs, processors: processors, codegenProcessors: codegenProcessors, onAddDocumentModel: onAddDocumentModel, onAddEditor: onAddEditor, onAddApp: onAddApp, onAddSubgraph: onAddSubgraph, onAddProcessor: onAddProcessor, onAddCodegenProcessor: onAddCodegenProcessor, onOpenDocument: onOpenDocument })] })] }));\n};\n//# sourceMappingURL=DriveExplorer.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { WagmiContext } from \"@powerhousedao/design-system\";\nimport { AnalyticsProvider } from \"@powerhousedao/reactor-browser/analytics/context\";\nimport { DriveContextProvider, useDriveContext } from \"@powerhousedao/reactor-browser/hooks/useDriveContext\";\nimport { useCallback } from \"react\";\nimport { DriveExplorer } from \"./DriveExplorer.js\";\nimport { DOCUMENT_TYPES } from \"./document-types.js\";\nexport function BaseEditor(props) {\n const { dispatch, context, document } = props;\n const { documentModels, showCreateDocumentModal, addDocument, setSelectedNode, } = useDriveContext();\n const driveId = document.header.id;\n const fileNodes = document.state.global.nodes.filter((node) => node.kind === 'file');\n const packageDocumentId = fileNodes.find((node) => node.documentType === DOCUMENT_TYPES.documentPackage)?.id;\n const docModelsNodes = fileNodes.filter((node) => node.documentType === DOCUMENT_TYPES.documentModel);\n const docEditorsNodes = fileNodes.filter((node) => node.documentType === DOCUMENT_TYPES.documentEditor);\n const onCreateDocument = useCallback((documentType) => {\n const documentModel = documentModels.find((model) => model.documentModel.id === documentType);\n if (documentModel) {\n showCreateDocumentModal(documentModel);\n }\n }, [showCreateDocumentModal, documentModels.length]);\n const onCreatePackageFile = useCallback(() => {\n addDocument(driveId, 'vetra-package', DOCUMENT_TYPES.documentPackage);\n }, [addDocument, driveId]);\n // TODO: set selected document from @powerhousedao/state\n const onOpenDocument = useCallback((node) => {\n setSelectedNode(node.id);\n }, [setSelectedNode]);\n return (_jsx(\"div\", { className: \"bg-white\", style: { height: \"100%\" }, children: _jsx(DriveExplorer, { documentModels: docModelsNodes, editors: docEditorsNodes, apps: [], subgraphs: [], processors: [], codegenProcessors: [], onAddDocumentModel: () => onCreateDocument(DOCUMENT_TYPES.documentModel), onAddEditor: () => onCreateDocument(DOCUMENT_TYPES.documentEditor), onAddApp: () => console.log('add app'), onAddSubgraph: () => console.log('add subgraph'), onAddProcessor: () => console.log('add processor'), onAddCodegenProcessor: () => console.log('add codegen processor'), context: context, packageDocumentId: packageDocumentId, onAddPackageDocument: onCreatePackageFile, driveId: document.header.id, onOpenDocument: onOpenDocument }) }));\n}\nexport default function Editor(props) {\n return (_jsx(DriveContextProvider, { value: props.context, children: _jsx(WagmiContext, { children: _jsx(AnalyticsProvider, { databaseName: props.context.analyticsDatabaseName, children: _jsx(BaseEditor, { ...props }) }) }) }));\n}\n//# sourceMappingURL=editor.js.map","import Editor from \"./editor.js\";\nexport const module = {\n Component: Editor,\n documentTypes: [\"powerhouse/document-drive\"],\n config: {\n id: \"vetra-drive-app\",\n disableExternalControls: true,\n documentToolbarEnabled: true,\n showSwitchboardLink: true,\n },\n};\nexport default module;\n//# sourceMappingURL=index.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useState } from \"react\";\nimport { useDebounce } from \"../../hooks/index.js\";\nexport const MetaForm = (props) => {\n const { name: initialName, description: initialDescription, category: initialCategory, publisher: initialPublisher, publisherUrl: initialPublisherUrl, githubRepository: initialGithubRepository, npmPackage: initialNpmPackage, keywords: initialKeywords, onNameChange, onDescriptionChange, onCategoryChange, onPublisherChange, onPublisherUrlChange, onGithubRepositoryChange, onNpmPackageChange, onAddKeyword, onRemoveKeyword } = props;\n const [name, setName] = useState(initialName);\n const [description, setDescription] = useState(initialDescription);\n const [category, setCategory] = useState(initialCategory);\n const [publisher, setPublisher] = useState(initialPublisher);\n const [publisherUrl, setPublisherUrl] = useState(initialPublisherUrl);\n const [githubRepository, setGithubRepository] = useState(initialGithubRepository);\n const [npmPackage, setNpmPackage] = useState(initialNpmPackage);\n // Keywords state\n const [keywords, setKeywords] = useState(initialKeywords);\n const [keywordInput, setKeywordInput] = useState(\"\");\n // Use the debounce hook with callbacks\n useDebounce(name, onNameChange, 300);\n useDebounce(description, onDescriptionChange, 300);\n useDebounce(publisher, onPublisherChange, 300);\n useDebounce(publisherUrl, onPublisherUrlChange, 300);\n useDebounce(githubRepository, onGithubRepositoryChange, 300);\n useDebounce(npmPackage, onNpmPackageChange, 300);\n return (_jsxs(\"div\", { className: \"grid grid-cols-1 lg:grid-cols-3 gap-6 p-6 bg-white\", children: [_jsxs(\"div\", { className: \"space-y-6\", children: [_jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"Name\" }), _jsx(\"input\", { type: \"text\", value: name, onChange: (e) => setName(e.target.value), className: \"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\" })] }), _jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"Description\" }), _jsx(\"textarea\", { rows: 6, value: description, onChange: (e) => setDescription(e.target.value), className: \"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent resize-none\" })] })] }), _jsxs(\"div\", { className: \"space-y-6\", children: [_jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"Category\" }), _jsxs(\"select\", { value: category, onChange: (e) => {\n const newValue = e.target.value;\n setCategory(newValue);\n onCategoryChange?.(newValue);\n }, className: \"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\", children: [_jsx(\"option\", { value: \"\", children: \"Not selected\" }), _jsx(\"option\", { value: \"Productivity\", children: \"Productivity\" }), _jsx(\"option\", { value: \"Governance\", children: \"Governance\" }), _jsx(\"option\", { value: \"Project Management\", children: \"Project Management\" }), _jsx(\"option\", { value: \"Finance\", children: \"Finance\" }), _jsx(\"option\", { value: \"Legal\", children: \"Legal\" }), _jsx(\"option\", { value: \"People & Culture\", children: \"People & Culture\" }), _jsx(\"option\", { value: \"Engineering\", children: \"Engineering\" })] })] }), _jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"Publisher\" }), _jsx(\"input\", { type: \"text\", value: publisher, onChange: (e) => setPublisher(e.target.value), className: \"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\" })] }), _jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"Publisher URL\" }), _jsx(\"input\", { type: \"text\", value: publisherUrl, onChange: (e) => setPublisherUrl(e.target.value), className: \"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\" })] }), _jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"Keywords\" }), _jsxs(\"div\", { className: \"space-y-2\", children: [_jsx(\"input\", { type: \"text\", value: keywordInput, onChange: (e) => setKeywordInput(e.target.value), onKeyDown: (e) => {\n if (e.key === 'Enter' && keywordInput.trim()) {\n e.preventDefault();\n const newKeyword = {\n id: Date.now().toString(), // Generate a unique ID\n label: keywordInput.trim()\n };\n setKeywords([...keywords, newKeyword]);\n onAddKeyword?.(newKeyword);\n setKeywordInput('');\n }\n }, placeholder: \"Type a keyword and press Enter\", className: \"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\" }), _jsx(\"div\", { className: \"flex flex-wrap gap-2 p-3 border border-gray-300 rounded-md min-h-[80px]\", children: keywords.map((keyword) => (_jsxs(\"span\", { className: \"inline-flex items-center px-2 py-0.5 rounded text-xs bg-blue-100 text-blue-800 border border-blue-300\", children: [keyword.label, _jsx(\"button\", { onClick: () => {\n setKeywords(keywords.filter((k) => k.id !== keyword.id));\n onRemoveKeyword?.(keyword.id);\n }, className: \"ml-1 text-blue-600 hover:text-blue-800 focus:outline-none\", children: \"\\u00D7\" })] }, keyword.id))) })] })] })] }), _jsxs(\"div\", { className: \"space-y-6\", children: [_jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"Github Repository\" }), _jsx(\"input\", { type: \"text\", value: githubRepository, onChange: (e) => setGithubRepository(e.target.value), className: \"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\" })] }), _jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"NPM-package\" }), _jsx(\"input\", { type: \"text\", value: npmPackage, onChange: (e) => setNpmPackage(e.target.value), className: \"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\" })] }), _jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"Version\" }), _jsx(\"input\", { type: \"text\", placeholder: \"1.0.0-dev\", readOnly: true, className: \"w-full px-3 py-2 border border-gray-300 rounded-md bg-gray-50 text-gray-500 cursor-not-allowed\" })] }), _jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"License\" }), _jsx(\"input\", { type: \"text\", placeholder: \"AGPL-3.0-only\", readOnly: true, className: \"w-full px-3 py-2 border border-gray-300 rounded-md bg-gray-50 text-gray-500 cursor-not-allowed\" })] }), _jsxs(\"div\", { children: [_jsx(\"label\", { className: \"block text-sm font-medium text-gray-700 mb-2\", children: \"Install with:\" }), _jsx(\"input\", { type: \"text\", placeholder: \"@powerhousedao/todo-demo-package\", readOnly: true, className: \"w-full px-3 py-2 border border-gray-300 rounded-md bg-gray-50 text-gray-500 cursor-not-allowed\" })] })] })] }));\n};\n//# sourceMappingURL=MetaForm.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { actions, } from \"../../document-models/vetra-package/index.js\";\nimport { MetaForm } from \"./components/MetaForm.js\";\nimport { useCallback } from \"react\";\nexport default function Editor(props) {\n const { document, dispatch } = props;\n console.log(\">>>>> document:\", document.state.global);\n const onNameChange = useCallback((name) => {\n if (!document.state.global.name && !name)\n return;\n if (name === document.state.global.name)\n return;\n dispatch(actions.setPackageName({ name }));\n }, [document.state.global.name]);\n const onDescriptionChange = useCallback((description) => {\n if (!document.state.global.description && !description)\n return;\n if (description === document.state.global.description)\n return;\n dispatch(actions.setPackageDescription({ description }));\n }, [document.state.global.description]);\n const onCategoryChange = useCallback((category) => {\n if (!document.state.global.category && !category)\n return;\n if (category === document.state.global.category)\n return;\n dispatch(actions.setPackageCategory({ category }));\n }, [document.state.global.category]);\n const onPublisherChange = useCallback((name) => {\n if (!document.state.global.author.name && !name)\n return;\n if (name === document.state.global.author.name)\n return;\n dispatch(actions.setPackageAuthorName({ name }));\n }, [document.state.global.author.name]);\n const onPublisherUrlChange = useCallback((website) => {\n if (!document.state.global.author.website && !website)\n return;\n if (website === document.state.global.author.website)\n return;\n dispatch(actions.setPackageAuthorWebsite({ website }));\n }, [document.state.global.author.website]);\n const onGithubRepositoryChange = useCallback((url) => {\n if (!document.state.global.githubUrl && !url)\n return;\n if (url === document.state.global.githubUrl)\n return;\n dispatch(actions.setPackageGithubUrl({ url }));\n }, [document.state.global.githubUrl]);\n const onNpmPackageChange = useCallback((url) => {\n if (!document.state.global.npmUrl && !url)\n return;\n if (url === document.state.global.npmUrl)\n return;\n dispatch(actions.setPackageNpmUrl({ url }));\n }, [document.state.global.npmUrl]);\n const onAddKeyword = useCallback((keyword) => {\n dispatch(actions.addPackageKeyword(keyword));\n }, []);\n const onRemoveKeyword = useCallback((id) => {\n dispatch(actions.removePackageKeyword({ id }));\n }, []);\n return (_jsx(\"div\", { children: _jsx(MetaForm, { name: document.state.global.name ?? \"\", description: document.state.global.description ?? \"\", category: document.state.global.category ?? \"\", publisher: document.state.global.author.name ?? \"\", publisherUrl: document.state.global.author.website ?? \"\", githubRepository: document.state.global.githubUrl ?? \"\", npmPackage: document.state.global.npmUrl ?? \"\", keywords: document.state.global.keywords, onNameChange: onNameChange, onDescriptionChange: onDescriptionChange, onCategoryChange: onCategoryChange, onPublisherChange: onPublisherChange, onPublisherUrlChange: onPublisherUrlChange, onGithubRepositoryChange: onGithubRepositoryChange, onNpmPackageChange: onNpmPackageChange, onAddKeyword: onAddKeyword, onRemoveKeyword: onRemoveKeyword }) }));\n}\n//# sourceMappingURL=editor.js.map","import Editor from \"./editor.js\";\nexport const module = {\n Component: Editor,\n documentTypes: [\"powerhouse/package\"],\n config: {\n id: \"vetra-package-editor\",\n disableExternalControls: true,\n documentToolbarEnabled: true,\n showSwitchboardLink: true,\n },\n};\nexport default module;\n//# sourceMappingURL=index.js.map","import { useDefaultDocumentModelEditor } from '#hooks';\nimport { type DocumentModelLib, type EditorModule } from 'document-model';\nimport {\n VetraPackage as VetraPackageEditor,\n DocumentEditor as DocumentEditorEditor,\n} from '@powerhousedao/vetra/editors';\nimport { atom, useAtomValue } from 'jotai';\nimport { atomWithLazy, loadable, unwrap } from 'jotai/utils';\nimport { useCallback, useEffect, useRef } from 'react';\nimport { externalPackagesAtom } from './external-packages.js';\n\nasync function loadBaseEditors() {\n const documentModelEditor = await import(\n '@powerhousedao/builder-tools/document-model-editor'\n );\n await import('@powerhousedao/builder-tools/style.css');\n await import('@powerhousedao/vetra/style.css');\n const module = documentModelEditor.documentModelEditorModule;\n return [module, VetraPackageEditor, DocumentEditorEditor] as EditorModule[];\n}\n\nfunction getEditorsFromModules(modules: DocumentModelLib[]) {\n return modules\n .map(module => module.editors)\n .reduce((acc, val) => acc.concat(val), []);\n}\n\nconst baseEditorsAtom = atomWithLazy(loadBaseEditors);\nbaseEditorsAtom.debugLabel = 'baseEditorsAtomInConnect';\nexport const editorsAtom = atom(async get => {\n const baseEditors = await get(baseEditorsAtom);\n const externalModules = await get(externalPackagesAtom);\n const externalEditors = getEditorsFromModules(externalModules);\n\n return externalEditors.concat(baseEditors);\n});\neditorsAtom.debugLabel = 'editorsAtomInConnect';\n\nconst unwrappedEditorsAtom = unwrap(editorsAtom);\nunwrappedEditorsAtom.debugLabel = 'unwrappedEditorsAtomInConnect';\nconst loadableEditorsAtom = loadable(editorsAtom);\nloadableEditorsAtom.debugLabel = 'loadableEditorsAtomInConnect';\n\n// suspends the UI while editors are loading\nexport const useEditors = () => {\n return useAtomValue(editorsAtom);\n};\n\n// will return undefined until editors are initialized. Does not block rendering.\nexport const useUnwrappedEditors = () => {\n return useAtomValue(unwrappedEditorsAtom);\n};\n\n// returns state, data and error, which will cause a rerender when the editors are loaded. Does not suspend the UI\nexport const useLoadableEditors = () => {\n return useAtomValue(loadableEditorsAtom);\n};\n\nexport const useEditorsAsync = () => {\n const editorsPromise = useRef(\n (() => {\n let resolveFn!: (value: EditorModule[]) => void;\n let rejectFn!: (reason?: any) => void;\n\n const promise = new Promise<EditorModule[]>((resolve, reject) => {\n resolveFn = resolve;\n rejectFn = reject;\n });\n\n return { promise, resolve: resolveFn, reject: rejectFn };\n })(),\n );\n\n const editors = useLoadableEditors();\n\n useEffect(() => {\n if (editors.state === 'hasError') {\n editorsPromise.current.reject(editors.error);\n } else if (editors.state === 'hasData') {\n editorsPromise.current.resolve(editors.data);\n }\n }, [editors]);\n return editorsPromise.current.promise;\n};\n\nconst getEditor = (\n documentType: string | undefined,\n editors: EditorModule[],\n preferredEditorId?: string,\n) => {\n if (!documentType) return null;\n const preferredEditor = editors.find(\n e =>\n e.config.id === preferredEditorId &&\n e.documentTypes.includes(documentType),\n );\n\n if (preferredEditor) return preferredEditor;\n\n const editor =\n editors.find(e => e.documentTypes.includes(documentType)) ||\n editors.find(e => e.documentTypes.includes('*'));\n\n return editor || null;\n};\n\nexport const useEditor = (documentType: string) => {\n const editors = useUnwrappedEditors();\n if (!editors) {\n return undefined;\n }\n return getEditor(documentType, editors);\n};\n\nexport const useGetEditor = () => {\n const editors = useUnwrappedEditors();\n const [defaultDocumentModelEditor] = useDefaultDocumentModelEditor();\n\n return (documentType: string | undefined) =>\n editors\n ? getEditor(documentType, editors, defaultDocumentModelEditor.value)\n : undefined;\n};\n\nexport const usePreloadEditor = () => {\n const editorsPromise = useEditorsAsync();\n return useCallback(\n async (documentType: string) => {\n const editors = await editorsPromise;\n const editor = getEditor(documentType, editors);\n if (editor && 'preload' in editor.Component) {\n console.log(\n `Preloading editor for document '${documentType}': ${editor.config.id}`,\n );\n await (\n editor.Component as { preload: () => Promise<void> }\n ).preload();\n }\n },\n [editorsPromise],\n );\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Button } from \"@powerhousedao/design-system\";\nfunction getDocumentSpec(doc) {\n if (\"documentModelState\" in doc) {\n return doc.documentModelState;\n }\n return doc.documentModel;\n}\nexport const CreateDocument = ({ documentModels, createDocument, }) => {\n return (_jsxs(\"div\", { className: \"px-6\", children: [_jsx(\"h3\", { className: \"mb-3 mt-4 text-xl font-bold text-gray-600\", children: \"New document\" }), _jsx(\"div\", { className: \"flex w-full flex-wrap gap-4\", children: documentModels?.map((doc) => {\n const spec = getDocumentSpec(doc);\n return (_jsx(Button, { color: \"light\", title: spec.name, \"aria-description\": spec.description, onClick: () => createDocument(doc), children: _jsx(\"span\", { className: \"text-sm\", children: spec.name }) }, spec.id));\n }) })] }));\n};\n//# sourceMappingURL=create-document.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { FileItem, useWindowSize, } from \"@powerhousedao/design-system\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport React, { useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nconst GAP = 8;\nconst ITEM_WIDTH = 256;\nconst ITEM_HEIGHT = 48;\nconst USED_SPACE = 420;\nexport function FileContentView(props) {\n const parentRef = useRef(null);\n const { t } = useTranslation();\n const windowSize = useWindowSize();\n const { fileNodes } = props;\n const availableWidth = windowSize.innerWidth - USED_SPACE;\n const columnCount = Math.floor(availableWidth / (ITEM_WIDTH + GAP)) || 1;\n const rowCount = Math.ceil(fileNodes.length / columnCount);\n const rowVirtualizer = useVirtualizer({\n count: rowCount,\n getScrollElement: () => parentRef.current,\n estimateSize: (index) => {\n if (index > 0) {\n return ITEM_HEIGHT + GAP;\n }\n return ITEM_HEIGHT;\n },\n overscan: 5,\n });\n const columnVirtualizer = useVirtualizer({\n horizontal: true,\n count: columnCount,\n getScrollElement: () => parentRef.current,\n estimateSize: (index) => {\n if (index > 0) {\n return ITEM_WIDTH + GAP;\n }\n return ITEM_WIDTH;\n },\n overscan: 5,\n });\n const getItemIndex = (rowIndex, columnIndex) => rowIndex * columnCount + columnIndex;\n const getItem = (rowIndex, columnIndex) => {\n const index = getItemIndex(rowIndex, columnIndex);\n return fileNodes[index] || null;\n };\n if (fileNodes.length === 0) {\n return (_jsx(\"div\", { className: \"mb-8 text-sm text-gray-400\", children: t(\"folderView.sections.documents.empty\", {\n defaultValue: \"No documents or files 📄\",\n }) }));\n }\n const renderItem = (rowIndex, columnIndex) => {\n const fileNode = getItem(rowIndex, columnIndex);\n if (!fileNode) {\n return null;\n }\n return (_jsx(\"div\", { style: {\n marginLeft: columnIndex === 0 ? 0 : GAP,\n }, children: _jsx(FileItem, { fileNode: fileNode, ...props }, fileNode.id) }));\n };\n return (_jsx(\"div\", { ref: parentRef, style: {\n height: `400px`,\n width: `100%`,\n overflow: \"auto\",\n }, children: _jsx(\"div\", { style: {\n height: `${rowVirtualizer.getTotalSize()}px`,\n width: `${columnVirtualizer.getTotalSize()}px`,\n position: \"relative\",\n }, children: rowVirtualizer.getVirtualItems().map((virtualRow) => (_jsx(React.Fragment, { children: columnVirtualizer.getVirtualItems().map((virtualColumn) => (_jsx(\"div\", { style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n marginTop: virtualRow.index === 0 ? 0 : GAP,\n width: `${virtualColumn.size}px`,\n height: `${virtualRow.size}px`,\n transform: `translateX(${virtualColumn.start}px) translateY(${virtualRow.start}px)`,\n }, children: renderItem(virtualRow.index, virtualColumn.index) }, virtualColumn.key))) }, virtualRow.key))) }) }));\n}\nexport default FileContentView;\n//# sourceMappingURL=file-content-view.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { cn } from \"@powerhousedao/design-system\";\nexport function DriveLayout({ children, className, ...props }) {\n return (_jsx(DriveLayout.Container, { className: className, ...props, children: children }));\n}\nDriveLayout.Container = function DriveLayoutContainer({ children, className, containerProps, ...props }) {\n return (_jsx(\"div\", { className: cn(\"flex grow flex-col overflow-auto rounded-2xl bg-gray-50 p-2\", className), ...containerProps, ...props, children: children }));\n};\nDriveLayout.Header = function DriveLayoutHeader({ children, className, containerProps, ...props }) {\n return (_jsx(\"div\", { className: cn(\"flex-0\", className), ...containerProps, ...props, children: children }));\n};\nDriveLayout.Content = function DriveLayoutContent({ children, className, containerProps, ...props }) {\n return (_jsx(\"div\", { className: cn(\"mb-5 flex-1 px-4\", className), ...containerProps, ...props, children: children }));\n};\nDriveLayout.ContentSection = function DriveLayoutContentSection({ title, children, className, containerProps, ...props }) {\n return (_jsxs(\"div\", { className: cn(className), ...containerProps, ...props, children: [title && (_jsx(\"div\", { className: \"mb-4 text-base font-semibold text-gray-600\", children: title })), _jsx(\"div\", { className: \"flex flex-wrap gap-2\", children: children })] }));\n};\nDriveLayout.Footer = function DriveLayoutFooter({ children, className, containerProps, ...props }) {\n return (_jsx(\"div\", { className: cn(\"flex-0\", className), ...containerProps, ...props, children: children }));\n};\n//# sourceMappingURL=layout.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { FolderItem, useDrop, } from \"@powerhousedao/design-system\";\nimport { useFileChildNodesForId, useFolderChildNodesForId, } from \"@powerhousedao/state\";\nimport { useTranslation } from \"react-i18next\";\nimport { twMerge } from \"tailwind-merge\";\nimport FileContentView from \"./file-content-view.js\";\nimport { DriveLayout } from \"./layout.js\";\nexport function FolderView(props) {\n const { node, isAllowedToCreateDocuments, className, containerProps, sharingType, getSyncStatusSync, setSelectedNode, onAddFile, onCopyNode, onMoveNode, onRenameNode, onDuplicateNode, onAddFolder, onAddAndSelectNewFolder, showDeleteNodeModal, } = props;\n const { t } = useTranslation();\n const folderNodes = useFolderChildNodesForId(node?.id);\n const fileNodes = useFileChildNodesForId(node?.id);\n const { isDropTarget, dropProps } = useDrop({\n node,\n onAddFile,\n onCopyNode,\n onMoveNode,\n });\n return (_jsxs(\"div\", { className: twMerge(\"rounded-md border-2 border-transparent p-2\", isDropTarget && \"border-dashed border-blue-100\", className), ...containerProps, ...dropProps, children: [_jsx(DriveLayout.ContentSection, { title: t(\"folderView.sections.folders.title\", {\n defaultValue: \"Folders\",\n }), className: \"mb-4\", children: folderNodes.length > 0 ? (folderNodes.map((folderNode) => (_jsx(FolderItem, { folderNode: folderNode, isAllowedToCreateDocuments: isAllowedToCreateDocuments, sharingType: sharingType, getSyncStatusSync: getSyncStatusSync, setSelectedNode: setSelectedNode, onAddFile: onAddFile, onCopyNode: onCopyNode, onMoveNode: onMoveNode, onRenameNode: onRenameNode, onDuplicateNode: onDuplicateNode, onAddFolder: onAddFolder, onAddAndSelectNewFolder: onAddAndSelectNewFolder, showDeleteNodeModal: showDeleteNodeModal }, folderNode.id)))) : (_jsx(\"div\", { className: \"mb-8 text-sm text-gray-400\", children: t(\"folderView.sections.folders.empty\", {\n defaultValue: \"No documents or files 📄\",\n }) })) }), _jsx(DriveLayout.ContentSection, { title: t(\"folderView.sections.documents.title\", {\n defaultValue: \"Documents and files\",\n }), children: _jsx(\"div\", { className: twMerge(\"w-full\", fileNodes.length > 0 ? \"min-h-[400px]\" : \"min-h-14\"), children: _jsx(FileContentView, { fileNodes: fileNodes, isAllowedToCreateDocuments: isAllowedToCreateDocuments, sharingType: sharingType, getSyncStatusSync: getSyncStatusSync, setSelectedNode: setSelectedNode, showDeleteNodeModal: showDeleteNodeModal, onAddFile: onAddFile, onCopyNode: onCopyNode, onMoveNode: onMoveNode, onRenameNode: onRenameNode, onDuplicateNode: onDuplicateNode, onAddFolder: onAddFolder, onAddAndSelectNewFolder: onAddAndSelectNewFolder }) }) })] }));\n}\nexport default FolderView;\n//# sourceMappingURL=folder-view.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { ConnectSearchBar, Icon, } from \"@powerhousedao/design-system\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nconst defaultFilterItems = [\n {\n id: \"project\",\n label: \".project\",\n icon: _jsx(Icon, { name: \"Project\", color: \"#FF6A55\", size: 16 }),\n },\n {\n id: \"budget\",\n label: \".budget\",\n icon: _jsx(Icon, { name: \"BarChart\", color: \"#8E55EA\", size: 16 }),\n },\n {\n id: \"profile\",\n label: \".profile\",\n icon: _jsx(Icon, { name: \"Person\", color: \"#3E90F0\", size: 16 }),\n },\n {\n id: \"legal\",\n label: \".legal\",\n icon: _jsx(Icon, { name: \"Briefcase\", color: \"#4BAB71\", size: 16 }),\n },\n {\n id: \"atlas\",\n label: \".Atlas\",\n icon: _jsx(Icon, { name: \"Globe\", color: \"#FF8A00\", size: 16 }),\n },\n];\nexport const SearchBar = () => {\n const { t } = useTranslation();\n const [value, setValue] = useState(\"\"); // TODO\n return (_jsx(ConnectSearchBar, { className: \"max-w-searchbar-width m-4 shrink-0 bg-gray-100\", placeholder: t(\"searchbar.placeholder\"), filterLabel: t(\"searchbar.filterLabel\"), filterItems: defaultFilterItems, value: value, onChange: setValue }));\n};\n//# sourceMappingURL=search-bar.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Breadcrumbs, useBreadcrumbs, useDrop, } from \"@powerhousedao/design-system\";\nimport { DriveContextProvider, useDriveContext, } from \"@powerhousedao/reactor-browser/hooks/useDriveContext\";\nimport { getDriveSharingType, makeFolderNodeFromDrive, useSelectedDrive, useSelectedFolder, useSelectedNodePath, useSetSelectedNode, } from \"@powerhousedao/state\";\nimport { useCallback } from \"react\";\nimport { CreateDocument } from \"./components/create-document.js\";\nimport FolderView from \"./components/folder-view.js\";\nimport { DriveLayout } from \"./components/layout.js\";\nimport { SearchBar } from \"./components/search-bar.js\";\nexport function BaseEditor(props) {\n const { document, className, children } = props;\n const { showSearchBar, isAllowedToCreateDocuments, documentModels, getSyncStatusSync, showCreateDocumentModal, onRenameNode, onDuplicateNode, onAddFolder, onAddFile, onCopyNode, onMoveNode, onAddAndSelectNewFolder, showDeleteNodeModal, } = useDriveContext();\n const selectedDrive = useSelectedDrive();\n const selectedFolder = useSelectedFolder();\n const selectedDriveAsFolderNode = makeFolderNodeFromDrive(selectedDrive);\n const selectedNodePath = useSelectedNodePath();\n const setSelectedNode = useSetSelectedNode();\n const onCreateDocument = useCallback((documentModel) => {\n showCreateDocumentModal(documentModel);\n }, [showCreateDocumentModal]);\n const { isDropTarget, dropProps } = useDrop({\n node: selectedDriveAsFolderNode,\n onAddFile,\n onCopyNode,\n onMoveNode,\n });\n const { breadcrumbs, onBreadcrumbSelected } = useBreadcrumbs({\n selectedNodePath,\n setSelectedNode,\n });\n const sharingType = getDriveSharingType(document);\n if (!selectedDrive) {\n return _jsx(\"div\", { children: \"Drive not found\" });\n }\n return (_jsxs(DriveLayout, { className: className, children: [children, _jsxs(DriveLayout.Header, { children: [_jsx(Breadcrumbs, { breadcrumbs: breadcrumbs, createEnabled: isAllowedToCreateDocuments, onCreate: onAddAndSelectNewFolder, onBreadcrumbSelected: onBreadcrumbSelected }), showSearchBar && _jsx(SearchBar, {})] }), _jsx(DriveLayout.Content, { ...dropProps, className: isDropTarget ? \"rounded-xl bg-blue-100\" : \"\", children: _jsx(FolderView, { node: selectedFolder ?? selectedDriveAsFolderNode, sharingType: sharingType, getSyncStatusSync: getSyncStatusSync, setSelectedNode: setSelectedNode, onRenameNode: onRenameNode, onDuplicateNode: onDuplicateNode, onAddFolder: onAddFolder, onAddFile: onAddFile, onCopyNode: onCopyNode, onMoveNode: onMoveNode, onAddAndSelectNewFolder: onAddAndSelectNewFolder, showDeleteNodeModal: showDeleteNodeModal, isAllowedToCreateDocuments: isAllowedToCreateDocuments }) }), _jsx(DriveLayout.Footer, { children: isAllowedToCreateDocuments && (_jsx(CreateDocument, { documentModels: documentModels, createDocument: onCreateDocument })) })] }));\n}\nexport default function Editor(props) {\n return (_jsx(DriveContextProvider, { value: props.context, children: _jsx(BaseEditor, { ...props }) }));\n}\n//# sourceMappingURL=editor.js.map","import Editor from \"./editor.js\";\nexport const GenericDriveExplorer = {\n Component: Editor,\n documentTypes: [\"powerhouse/document-drive\"],\n config: {\n id: \"GenericDriveExplorer\",\n disableExternalControls: true,\n documentToolbarEnabled: true,\n showSwitchboardLink: true,\n },\n};\n//# sourceMappingURL=index.js.map","import { AnalyticsPath, } from \"@powerhousedao/analytics-engine-core\";\nimport { useMutation, useQuery, useQueryClient, } from \"@tanstack/react-query\";\nimport { useEffect } from \"react\";\nimport { getAnalyticsStore, useAnalyticsEngineAsync, useAnalyticsStoreAsync, useAnalyticsStoreOptions, } from \"./context.js\";\nfunction useAnalyticsQueryWrapper(options) {\n const { queryFn, ...queryOptions } = options;\n const { data: store } = useAnalyticsStoreAsync();\n const { data: engine } = useAnalyticsEngineAsync();\n const enabled = \"enabled\" in queryOptions ? queryOptions.enabled : !!store && !!engine;\n return useQuery({\n ...queryOptions,\n enabled,\n queryFn: async () => {\n if (!store || !engine) {\n throw new Error(\"No analytics store available. Use within an AnalyticsProvider.\");\n }\n return await queryFn({ store, engine });\n },\n });\n}\nfunction useAnalyticsMutationWrapper(options) {\n const { mutationFn, ...mutationOptions } = options;\n const storeOptions = useAnalyticsStoreOptions();\n return useMutation({\n ...mutationOptions,\n mutationFn: async (value) => {\n let store = null;\n try {\n store = await getAnalyticsStore(storeOptions);\n }\n catch (e) {\n console.error(e);\n }\n if (!store) {\n throw new Error(\"No analytics store available. Use within an AnalyticsProvider.\");\n }\n return await mutationFn(value, { store });\n },\n });\n}\nconst DEBOUNCE_INTERVAL = 200;\nexport function useAnalyticsQuery(query, options) {\n const { data: store } = useAnalyticsStoreAsync();\n const queryClient = useQueryClient();\n const sources = options?.sources ?? [];\n const result = useAnalyticsQueryWrapper({\n queryKey: [\"analytics\", \"query\", query],\n queryFn: ({ engine }) => engine.execute(query),\n ...options,\n });\n useEffect(() => {\n if (!sources.length || !store) {\n return;\n }\n const subscriptions = new Array();\n // Debounce invalidateQueries so it's not called too frequently\n let invalidateTimeout = null;\n const debouncedInvalidate = () => {\n if (invalidateTimeout)\n clearTimeout(invalidateTimeout);\n invalidateTimeout = setTimeout(() => {\n queryClient\n .invalidateQueries({\n queryKey: [\"analytics\", \"query\", query],\n })\n .catch((e) => {\n console.error(e);\n });\n }, DEBOUNCE_INTERVAL);\n };\n sources.forEach((path) => {\n const unsub = store.subscribeToSource(path, debouncedInvalidate);\n subscriptions.push(unsub);\n });\n // Unsubscribes from store when component unmounts or dependencies change\n return () => {\n subscriptions.forEach((unsub) => unsub());\n };\n }, [query, store, sources]);\n return result;\n}\nexport function useAnalyticsSeries(query, options) {\n return useAnalyticsQueryWrapper({\n queryKey: [\"analytics\", \"series\", query],\n queryFn: ({ store }) => store.getMatchingSeries(query),\n ...options,\n });\n}\nexport function useAddSeriesValue(options) {\n return useAnalyticsMutationWrapper({\n mutationKey: [\"analytics\", \"addSeries\"],\n mutationFn: async (value, { store }) => {\n return await store.addSeriesValue(value);\n },\n ...options,\n });\n}\nexport function useClearSeriesBySource(options) {\n return useAnalyticsMutationWrapper({\n mutationKey: [\"analytics\", \"clearSeries\"],\n mutationFn: async ({ source, cleanUpDimensions }, { store }) => {\n return store.clearSeriesBySource(source, cleanUpDimensions);\n },\n ...options,\n });\n}\nexport function useClearEmptyAnalyticsDimensions(options) {\n return useAnalyticsMutationWrapper({\n mutationKey: [\"analytics\", \"clearEmptyDimensions\"],\n mutationFn: async (_, { store }) => {\n return store.clearEmptyAnalyticsDimensions();\n },\n ...options,\n });\n}\nexport function useAddSeriesValues(options) {\n return useAnalyticsMutationWrapper({\n mutationKey: [\"analytics\", \"addSeriesValues\"],\n mutationFn: async (values, { store }) => {\n return store.addSeriesValues(values);\n },\n ...options,\n });\n}\nexport function useGetDimensions(options) {\n return useAnalyticsQueryWrapper({\n queryKey: [\"analytics\", \"dimensions\"],\n queryFn: ({ store }) => store.getDimensions(),\n ...options,\n });\n}\nexport function useMatchingSeries(query, options) {\n const result = useAnalyticsQueryWrapper({\n queryKey: [\"analytics\", \"matchingSeries\", query],\n queryFn: ({ store }) => store.getMatchingSeries(query),\n ...options,\n });\n return result;\n}\nexport function useQuerySources(query, options) {\n const { data: matchingSeries } = useMatchingSeries(query);\n return useQuery({\n queryKey: [\"analytics\", \"sources\", query],\n queryFn: () => {\n if (!matchingSeries?.length) {\n return [];\n }\n const uniqueSources = [\n ...new Set(matchingSeries.map((s) => s.source.toString())),\n ];\n return uniqueSources.map((source) => AnalyticsPath.fromString(source));\n },\n enabled: !!matchingSeries,\n ...options,\n });\n}\n//# sourceMappingURL=hooks.js.map","import { AnalyticsGranularity, AnalyticsPath, DateTime, useAnalyticsQuery, } from \"@powerhousedao/reactor-browser/analytics\";\nconst getBarSize = (value) => {\n if (value <= 0)\n return 0;\n if (value > 0 && value <= 50)\n return 1;\n if (value > 50 && value <= 100)\n return 2;\n if (value > 100 && value <= 250)\n return 3;\n return 4;\n};\nfunction addItemsDividers(items) {\n if (!items.length)\n return [];\n const result = [];\n items.forEach((item, index) => {\n result.push(item);\n // Check if there's a next item and if they're not in consecutive hours\n if (index < items.length - 1) {\n const currentDate = new Date(item.startDate);\n const nextDate = new Date(items[index + 1].startDate);\n const currentHour = currentDate.getHours();\n const nextHour = nextDate.getHours();\n // Get day parts (without time) for comparison\n const currentDay = currentDate.toDateString();\n const nextDay = nextDate.toDateString();\n // If different days or non-consecutive hours on the same day\n if (currentDay !== nextDay ||\n (currentDay === nextDay && Math.abs(nextHour - currentHour) > 1)) {\n result.push({\n id: `divider-${item.id}-${items[index + 1].id}`,\n type: \"divider\",\n revision: 0,\n });\n }\n }\n });\n return result;\n}\nfunction metricsToItems(metrics) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!metrics)\n return [];\n const items = metrics\n .sort((a, b) => {\n const aDate = new Date(a.start);\n const bDate = new Date(b.start);\n return aDate.getTime() - bDate.getTime();\n })\n .filter((result) => {\n return result.rows.every((row) => row.value > 0);\n })\n .map((result) => {\n const { additions, deletions } = result.rows.reduce((acc, row) => {\n if (row.dimensions.changes.path ===\n \"ph/diff/changes/add\") {\n acc.additions += row.value;\n }\n else if (row.dimensions.changes.path ===\n \"ph/diff/changes/remove\") {\n acc.deletions += row.value;\n }\n return acc;\n }, { additions: 0, deletions: 0 });\n const startDate = new Date(result.start);\n return {\n id: startDate.toISOString(),\n type: \"bar\",\n addSize: getBarSize(additions),\n delSize: getBarSize(deletions),\n additions,\n deletions,\n timestamp: startDate.toISOString(),\n startDate: startDate,\n endDate: new Date(result.end),\n revision: 0,\n };\n });\n return addItemsDividers(items);\n}\nexport const useTimelineItems = (documentId, startTimestamp, driveId) => {\n const start = startTimestamp\n ? DateTime.fromISO(startTimestamp)\n : DateTime.now().startOf(\"day\");\n return useAnalyticsQuery({\n start,\n end: DateTime.now().endOf(\"day\"),\n granularity: AnalyticsGranularity.Hourly,\n metrics: [\"Count\"],\n select: {\n changes: [AnalyticsPath.fromString(`ph/diff/changes`)],\n document: [AnalyticsPath.fromString(`ph/diff/document/${documentId}`)],\n },\n lod: {\n changes: 4,\n },\n }, {\n sources: [AnalyticsPath.fromString(`ph/diff/${driveId}/${documentId}`)],\n select: metricsToItems,\n });\n};\n//# sourceMappingURL=useTimelineItems.js.map","export const getRevisionFromDate = (startDate, endDate, operations = []) => {\n if (!startDate || !endDate)\n return 0;\n const operation = operations.find((operation) => {\n const operationDate = new Date(operation.timestamp);\n return operationDate >= startDate && operationDate <= endDate;\n });\n return operation ? operation.index : 0;\n};\n//# sourceMappingURL=index.js.map","import { DefaultEditorLoader } from '@powerhousedao/design-system';\nimport {\n type ComponentProps,\n type ReactNode,\n useEffect,\n useState,\n} from 'react';\n\ntype Props = ComponentProps<typeof DefaultEditorLoader> & {\n loadingTimeout?: number;\n customEditorLoader?: ReactNode;\n};\nexport function EditorLoader(props: Props) {\n const [showLoading, setShowLoading] = useState(false);\n\n // only shows the loader after some time has passed\n useEffect(() => {\n setTimeout(() => {\n setShowLoading(true);\n }, props.loadingTimeout ?? 200);\n }, [props]);\n\n if (!showLoading) return null;\n\n const { customEditorLoader, ...defaultProps } = props;\n\n if (customEditorLoader) return <>{customEditorLoader}</>;\n\n return <DefaultEditorLoader {...defaultProps} />;\n}\n","import {\n useConnectCrypto,\n useConnectDid,\n useUndoRedoShortcuts,\n useUserPermissions,\n} from '#hooks';\nimport {\n themeAtom,\n useGetDocumentModelModule,\n useGetEditor,\n useUser,\n} from '#store';\nimport {\n addActionContext,\n type DocumentDispatchCallback,\n signOperation,\n useDocumentDispatch,\n} from '#utils';\nimport { getRevisionFromDate, useTimelineItems } from '@powerhousedao/common';\nimport {\n Button,\n DocumentToolbar,\n RevisionHistory,\n type TimelineItem,\n} from '@powerhousedao/design-system';\nimport { logger } from 'document-drive';\nimport {\n type Action,\n type ActionErrorCallback,\n type EditorContext,\n type Operation,\n type PHDocument,\n redo,\n undo,\n} from 'document-model';\nimport { useAtomValue } from 'jotai';\nimport { Suspense, useCallback, useEffect, useMemo, useState } from 'react';\nimport { ErrorBoundary, type FallbackProps } from 'react-error-boundary';\nimport { useNavigate } from 'react-router-dom';\nimport { EditorLoader } from './editor-loader.js';\nimport { useModal } from './modal/index.js';\n\ntype Props<TDocument extends PHDocument = PHDocument> = {\n document: TDocument;\n onClose: () => void;\n onExport: () => void;\n onAddOperation: (operation: Operation) => Promise<void>;\n onOpenSwitchboardLink?: () => Promise<void>;\n};\n\nfunction EditorError({ message }: { message: React.ReactNode }) {\n return (\n <div className=\"flex size-full items-center justify-center\">\n <h3 className=\"text-lg font-semibold\">{message}</h3>\n </div>\n );\n}\n\nfunction FallbackEditorError(props: FallbackProps) {\n const message =\n props.error instanceof Error\n ? props.error.message\n : (props.error as string);\n return <EditorError message={message} />;\n}\n\nexport const DocumentEditor: React.FC<Props> = props => {\n const {\n document,\n onClose,\n onExport,\n onAddOperation,\n onOpenSwitchboardLink,\n } = props;\n const documentId = document.header.id;\n const [selectedTimelineItem, setSelectedTimelineItem] =\n useState<TimelineItem | null>(null);\n const [revisionHistoryVisible, setRevisionHistoryVisible] = useState(false);\n const theme = useAtomValue(themeAtom);\n const user = useUser() || undefined;\n const connectDid = useConnectDid();\n const { sign } = useConnectCrypto();\n const getDocumentModelModule = useGetDocumentModelModule();\n const getEditor = useGetEditor();\n const documentType = document.header.documentType;\n const documentModel = useMemo(\n () => (documentType ? getDocumentModelModule(documentType) : undefined),\n [documentType, getDocumentModelModule],\n );\n\n const editor = useMemo(\n () => (documentType ? getEditor(documentType) : undefined),\n [documentType, getEditor],\n );\n\n const [, _dispatch, error] = useDocumentDispatch(\n documentModel?.reducer,\n document,\n );\n const context: EditorContext = useMemo(\n () => ({ theme, user }),\n [theme, user],\n );\n const userPermissions = useUserPermissions();\n\n const timelineItems = useTimelineItems(\n documentId,\n document.header.createdAtUtcIso,\n );\n\n const dispatch = useCallback(\n (action: Action, onErrorCallback?: ActionErrorCallback) => {\n const callback: DocumentDispatchCallback<PHDocument> = (\n operation,\n state,\n ) => {\n if (!documentId) return;\n\n const { prevState } = state;\n\n signOperation(\n operation,\n sign,\n documentId,\n prevState,\n documentModel?.reducer,\n user,\n )\n .then(op => {\n window.documentEditorDebugTools?.pushOperation(\n operation,\n );\n return onAddOperation(op);\n })\n .catch(logger.error);\n };\n\n _dispatch(\n addActionContext(action, connectDid, user),\n callback,\n onErrorCallback,\n );\n },\n [\n _dispatch,\n connectDid,\n documentModel?.reducer,\n onAddOperation,\n documentId,\n sign,\n user,\n ],\n );\n\n const showRevisionHistory = useCallback(\n () => setRevisionHistoryVisible(true),\n [],\n );\n\n const hideRevisionHistory = useCallback(\n () => setRevisionHistoryVisible(false),\n [],\n );\n const handleUndo = useCallback(() => {\n dispatch(undo());\n }, [dispatch]);\n\n const handleRedo = useCallback(() => {\n dispatch(redo());\n }, [dispatch]);\n\n const isLoadingEditor =\n editor === undefined ||\n (editor &&\n !editor.documentTypes.includes(document.header.documentType) &&\n !editor.documentTypes.includes('*'));\n\n const canUndo =\n document.header.revision.global > 0 ||\n document.header.revision.local > 0;\n const canRedo = !!document?.clipboard.length;\n useUndoRedoShortcuts({\n undo: handleUndo,\n redo: handleRedo,\n canUndo,\n canRedo,\n });\n\n useEffect(() => {\n return () => {\n window.documentEditorDebugTools?.clear();\n };\n }, []);\n\n const navigate = useNavigate();\n const { showModal } = useModal();\n\n const [editorError, setEditorError] = useState<\n | {\n error: any;\n info: React.ErrorInfo;\n documentId?: string;\n // clear: () => void;\n }\n | undefined\n >(undefined);\n\n useEffect(() => {\n if (editorError && editorError.documentId !== documentId) {\n setEditorError(undefined);\n }\n }, [editorError, documentId]);\n\n const handleEditorError = useCallback(\n (error: Error, info: React.ErrorInfo) => {\n setEditorError({\n error,\n documentId,\n info,\n });\n },\n [documentId],\n );\n\n if (isLoadingEditor) {\n return <EditorLoader message=\"Loading editor\" />;\n }\n\n if (!documentModel) {\n return (\n <EditorError\n message={\n <div className=\"text-center leading-10\">\n <p>\n Unable to open the document because the document\n model \"{documentType}\" is not supported.\n </p>\n <p>\n Go to the{' '}\n <button\n type=\"button\"\n className=\"cursor-pointer underline\"\n onClick={() => {\n showModal('settingsModal', {\n onRefresh: () => navigate(0),\n });\n }}\n >\n package manager\n </button>{' '}\n to install this document model\n </p>\n </div>\n }\n />\n );\n }\n\n if (!editor) {\n return (\n <EditorError\n message={\n <div className=\"text-center leading-10\">\n <p>\n Unable to open the document because no editor has\n been found\n </p>\n <p>\n Go to the{' '}\n <button\n type=\"button\"\n className=\"cursor-pointer underline\"\n onClick={() => {\n showModal('settingsModal', {\n onRefresh: () => navigate(0),\n });\n }}\n >\n package manager\n </button>{' '}\n an editor for the \"${documentType}\" document type\n </p>\n </div>\n }\n />\n );\n }\n\n const EditorComponent = editor.Component;\n const {\n disableExternalControls,\n documentToolbarEnabled,\n showSwitchboardLink,\n timelineEnabled,\n } = editor.config;\n\n const handleSwitchboardLinkClick =\n showSwitchboardLink !== false ? onOpenSwitchboardLink : undefined;\n return (\n <div className=\"relative h-full\" id=\"document-editor-context\">\n {documentToolbarEnabled &&\n disableExternalControls &&\n !revisionHistoryVisible && (\n <DocumentToolbar\n onClose={onClose}\n onExport={onExport}\n onShowRevisionHistory={showRevisionHistory}\n title={document.header.name}\n onSwitchboardLinkClick={handleSwitchboardLinkClick}\n timelineButtonVisible={timelineEnabled}\n timelineItems={timelineItems.data}\n onTimelineItemClick={setSelectedTimelineItem}\n />\n )}\n {!disableExternalControls && (\n <div className=\"mb-4 flex justify-end gap-10\">\n <Button onClick={onExport}>Export</Button>\n <div className=\"flex gap-4\">\n <Button onClick={handleUndo} disabled={!canUndo}>\n Undo\n </Button>\n <Button onClick={handleRedo} disabled={!canRedo}>\n Redo\n </Button>\n </div>\n <div className=\"flex gap-4\">\n <Button onClick={onClose}>Close</Button>\n </div>\n </div>\n )}\n {revisionHistoryVisible ? (\n <RevisionHistory\n key={documentId}\n documentTitle={document.header.name}\n documentId={document.header.id}\n globalOperations={document.operations.global}\n localOperations={document.operations.local}\n onClose={hideRevisionHistory}\n />\n ) : (\n <Suspense fallback={<EditorLoader />} name=\"EditorLoader\">\n <ErrorBoundary\n fallbackRender={FallbackEditorError}\n key={documentId}\n onError={handleEditorError}\n >\n {!editorError?.error && (\n <EditorComponent\n key={documentId}\n error={error}\n context={{\n ...context,\n readMode: !!selectedTimelineItem,\n selectedTimelineRevision:\n getRevisionFromDate(\n selectedTimelineItem?.startDate,\n selectedTimelineItem?.endDate,\n document.operations.global,\n ),\n }}\n document={document}\n documentNodeName={document.header.name}\n dispatch={dispatch}\n onClose={onClose}\n onExport={onExport}\n canUndo={canUndo}\n canRedo={canRedo}\n undo={handleUndo}\n redo={handleRedo}\n onSwitchboardLinkClick={\n handleSwitchboardLinkClick\n }\n onShowRevisionHistory={showRevisionHistory}\n isAllowedToCreateDocuments={\n userPermissions?.isAllowedToCreateDocuments ??\n false\n }\n isAllowedToEditDocuments={\n userPermissions?.isAllowedToEditDocuments ??\n false\n }\n />\n )}\n </ErrorBoundary>\n </Suspense>\n )}\n </div>\n );\n};\n","import { useDocumentDriveServer } from '#hooks';\nimport { useGetDocumentModelModule } from '#store';\nimport { buildDocumentSubgraphUrl } from '@powerhousedao/reactor-browser/utils/switchboard';\nimport {\n useDriveIsRemote,\n useDriveRemoteUrl,\n useParentFolderId,\n useSelectedDocument,\n useSelectedDrive,\n useSetSelectedNode,\n} from '@powerhousedao/state';\nimport { type Operation, type PHDocument } from 'document-model';\nimport { useCallback, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useModal } from '../components/modal/index.js';\nimport { exportFile, openUrl } from '../utils/index.js';\nimport { validateDocument } from '../utils/validate-document.js';\nimport { DocumentEditor } from './editors.js';\n\nexport function DocumentEditorContainer() {\n const { t } = useTranslation();\n const { showModal } = useModal();\n const { addDocumentOperations } = useDocumentDriveServer();\n const unwrappedSelectedDrive = useSelectedDrive();\n const selectedDocument = useSelectedDocument();\n const parentFolderId = useParentFolderId(selectedDocument?.header.id);\n const documentType = selectedDocument?.header.documentType;\n const isRemoteDrive = useDriveIsRemote(unwrappedSelectedDrive?.header.id);\n const remoteUrl = useDriveRemoteUrl(unwrappedSelectedDrive?.header.id);\n const getDocumentModelModule = useGetDocumentModelModule();\n const documentModelModule = documentType\n ? getDocumentModelModule(documentType)\n : undefined;\n const setSelectedNode = useSetSelectedNode();\n\n const onAddOperation = useCallback(\n async (operation: Operation) => {\n if (!selectedDocument?.header.id) {\n return;\n }\n await addDocumentOperations(selectedDocument.header.id, [\n operation,\n ]);\n },\n [addDocumentOperations, selectedDocument],\n );\n\n const onClose = useCallback(() => {\n setSelectedNode(parentFolderId);\n }, [parentFolderId, setSelectedNode]);\n\n const exportDocument = useCallback(\n (document: PHDocument) => {\n const validationErrors = validateDocument(document);\n\n if (validationErrors.length) {\n showModal('confirmationModal', {\n title: t('modals.exportDocumentWithErrors.title'),\n body: (\n <div>\n <p>{t('modals.exportDocumentWithErrors.body')}</p>\n <ul className=\"mt-4 flex list-disc flex-col items-start px-4 text-xs\">\n {validationErrors.map((error, index) => (\n <li key={index}>{error.message}</li>\n ))}\n </ul>\n </div>\n ),\n cancelLabel: t('common.cancel'),\n continueLabel: t('common.export'),\n onCancel(closeModal) {\n closeModal();\n },\n onContinue(closeModal) {\n closeModal();\n return exportFile(document, getDocumentModelModule);\n },\n });\n } else {\n return exportFile(document, getDocumentModelModule);\n }\n },\n [getDocumentModelModule, showModal, t],\n );\n\n const onExport = useCallback(() => {\n if (selectedDocument) {\n return exportDocument(selectedDocument);\n }\n }, [exportDocument, selectedDocument]);\n\n const onOpenSwitchboardLink = useMemo(() => {\n return isRemoteDrive\n ? async () => {\n if (!selectedDocument?.header.id) {\n console.error('No selected document');\n return;\n }\n\n if (!remoteUrl) {\n console.error('No remote drive url found');\n return;\n }\n\n if (!documentModelModule) {\n console.error('No document model found');\n return;\n }\n\n const url = buildDocumentSubgraphUrl(\n remoteUrl,\n selectedDocument.header.id,\n documentModelModule.documentModel,\n );\n try {\n await openUrl(url);\n } catch (e) {\n console.error('Error opening switchboard link', e);\n }\n }\n : undefined;\n }, [isRemoteDrive, remoteUrl, selectedDocument, documentModelModule]);\n\n if (!selectedDocument) return null;\n\n return (\n <div className=\"flex-1 rounded-2xl bg-gray-50 p-4\">\n <DocumentEditor\n document={selectedDocument}\n onClose={onClose}\n onExport={onExport}\n onAddOperation={onAddOperation}\n onOpenSwitchboardLink={onOpenSwitchboardLink}\n />\n </div>\n );\n}\n","import connectConfig from '#connect-config';\nimport {\n useDocumentDriveServer,\n useDocumentEditor as useDocumentEditorProps,\n useEditorProps,\n useNodeActions,\n useShowDeleteNodeModal,\n} from '#hooks';\nimport {\n useDriveEditor,\n useFilteredDocumentModels,\n useGetDocumentModelModule,\n useGetEditor,\n} from '#store';\nimport { useDocumentDispatch } from '#utils';\nimport { GenericDriveExplorer } from '@powerhousedao/common';\nimport { type IDriveContext } from '@powerhousedao/reactor-browser';\nimport {\n useSelectedDocument,\n useSelectedDrive,\n useSetSelectedNode,\n} from '@powerhousedao/state';\nimport VetraDriveExplorer from '@powerhousedao/vetra/vetra-drive-app';\nimport { driveDocumentModelModule } from 'document-drive';\nimport { type DocumentModelModule, type Operation } from 'document-model';\nimport { useCallback, useMemo } from 'react';\nimport { ErrorBoundary, type FallbackProps } from 'react-error-boundary';\nimport { useModal } from './modal/index.js';\n\nfunction DriveEditorError({ error }: FallbackProps) {\n return (\n <div className=\"mx-auto flex max-w-[80%] flex-1 flex-col items-center justify-center\">\n <h1 className=\"mb-2 text-xl font-semibold\">Error</h1>\n <i>{error instanceof Error ? error.message : error}</i>\n <pre>{JSON.stringify(error, null, 2)}</pre>\n </div>\n );\n}\n\nexport function DriveEditorContainer() {\n const { addDriveOperations, getSyncStatusSync } = useDocumentDriveServer();\n const selectedDrive = useSelectedDrive();\n const selectedDocument = useSelectedDocument();\n const nodeActions = useNodeActions();\n const [, _dispatch, error] = useDocumentDispatch(\n driveDocumentModelModule.reducer,\n selectedDrive,\n );\n const onAddOperation = useCallback(\n async (operation: Operation) => {\n if (!selectedDrive?.header.id) {\n throw new Error('No drive selected');\n }\n await addDriveOperations(selectedDrive.header.id, [operation]);\n },\n [addDriveOperations, selectedDrive?.header.id],\n );\n\n const editorProps = useEditorProps(\n selectedDrive,\n _dispatch,\n onAddOperation,\n );\n\n const { isAllowedToCreateDocuments } = editorProps;\n\n const { showModal } = useModal();\n const showCreateDocumentModal = useCallback(\n (documentModel: DocumentModelModule) => {\n showModal('createDocument', {\n documentModel,\n });\n },\n [showModal],\n );\n const showDeleteNodeModal = useShowDeleteNodeModal();\n const { addFile, addDocument } = useDocumentDriveServer();\n const documentModels = useFilteredDocumentModels() ?? [];\n const getDocumentModelModule = useGetDocumentModelModule();\n const getEditor = useGetEditor();\n const analyticsDatabaseName = connectConfig.analytics.databaseName;\n const showSearchBar = false;\n const setSelectedNode = useSetSelectedNode();\n\n const driveContext: IDriveContext = useMemo(\n () => ({\n ...nodeActions,\n showSearchBar,\n isAllowedToCreateDocuments,\n documentModels,\n analyticsDatabaseName,\n getSyncStatusSync,\n getDocumentModelModule,\n getEditor,\n addFile,\n showCreateDocumentModal,\n showDeleteNodeModal,\n useDocumentEditorProps,\n addDocument,\n setSelectedNode,\n }),\n [\n nodeActions,\n isAllowedToCreateDocuments,\n documentModels,\n addFile,\n addDocument,\n getSyncStatusSync,\n getDocumentModelModule,\n getEditor,\n showDeleteNodeModal,\n showCreateDocumentModal,\n setSelectedNode,\n ],\n );\n\n const driveEditor = useDriveEditor(\n selectedDrive?.header.meta?.preferredEditor,\n );\n\n let DriveEditorComponent =\n driveEditor?.Component ?? GenericDriveExplorer.Component;\n\n // TODO: remove this after vetra command refactor\n if (selectedDrive?.header.meta?.preferredEditor === 'vetra-drive-app') {\n DriveEditorComponent = VetraDriveExplorer.Component;\n }\n\n if (selectedDocument || !selectedDrive) return null;\n\n return (\n <ErrorBoundary\n fallbackRender={DriveEditorError}\n key={selectedDrive.header.id}\n >\n <DriveEditorComponent\n {...editorProps}\n context={{\n ...editorProps.context,\n ...driveContext,\n }}\n onSwitchboardLinkClick={undefined} // TODO\n document={selectedDrive}\n error={error}\n />\n </ErrorBoundary>\n );\n}\n","import {\n useDocument,\n useDocumentEditorProps,\n type User,\n} from '@powerhousedao/reactor-browser';\nimport { type DocumentModelModule, type PHDocument } from 'document-model';\n\nimport { useConnectCrypto, useConnectDid } from '#hooks';\nimport { useReactor } from '@powerhousedao/state';\n\nexport interface DocumentEditorProps {\n driveId: string | undefined;\n documentId: string | undefined;\n documentType: string | undefined;\n documentModelModule: DocumentModelModule<PHDocument> | undefined;\n user?: User;\n}\n\nexport function useDocumentEditor(props: DocumentEditorProps) {\n const { driveId, documentId, documentType, documentModelModule, user } =\n props;\n\n const reactor = useReactor();\n const connectDid = useConnectDid();\n const { sign } = useConnectCrypto();\n\n const doc = useDocument(reactor, { documentId, documentType });\n\n const documentEditorProps = useDocumentEditorProps(reactor, {\n nodeId: documentId,\n driveId: driveId,\n document: doc,\n documentModelModule,\n connectDid,\n sign,\n user,\n });\n\n return documentEditorProps;\n}\n","import { useModal } from '#components';\nimport { themeAtom, useGetDocumentModelModule, useUser } from '#store';\nimport {\n addActionContext,\n type DocumentDispatch,\n type DocumentDispatchCallback,\n exportFile,\n signOperation,\n validateDocument,\n} from '#utils';\nimport {\n useParentFolder,\n useSelectedDrive,\n useSetSelectedNode,\n} from '@powerhousedao/state';\nimport { logger } from 'document-drive';\nimport {\n type Action,\n type ActionErrorCallback,\n type EditorContext,\n type Operation,\n type PHDocument,\n redo,\n undo,\n} from 'document-model';\nimport { useAtomValue } from 'jotai';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useConnectCrypto, useConnectDid } from './useConnectCrypto.js';\nimport { useUserPermissions } from './useUserPermissions.js';\n\nexport interface EditorProps {\n context: EditorContext;\n canUndo: boolean;\n canRedo: boolean;\n undo: () => void;\n redo: () => void;\n onClose: () => void;\n onExport: () => void;\n onShowRevisionHistory: () => void;\n isAllowedToCreateDocuments: boolean;\n isAllowedToEditDocuments: boolean;\n}\n\nexport function useEditorDispatch<T extends PHDocument = PHDocument>(\n document: T | undefined,\n documentDispatch: DocumentDispatch<T>,\n onAddOperation: (operation: Operation) => Promise<void>,\n) {\n const user = useUser() || undefined;\n const connectDid = useConnectDid();\n const { sign } = useConnectCrypto();\n const documentType = document?.header.documentType;\n const getDocumentModelModule = useGetDocumentModelModule();\n const documentModelModule = useMemo(\n () => (documentType ? getDocumentModelModule(documentType) : undefined),\n [documentType, getDocumentModelModule],\n );\n\n const dispatch = useCallback(\n (action: Action, onErrorCallback?: ActionErrorCallback) => {\n const callback: DocumentDispatchCallback<PHDocument> = (\n operation,\n state,\n ) => {\n if (!document?.header.id) return;\n\n const { prevState } = state;\n\n signOperation(\n operation,\n sign,\n document.header.id,\n prevState,\n documentModelModule?.reducer,\n user,\n )\n .then(op => {\n window.documentEditorDebugTools?.pushOperation(\n operation,\n );\n return onAddOperation(op);\n })\n .catch(logger.error);\n };\n\n documentDispatch(\n addActionContext(action, connectDid, user),\n callback,\n onErrorCallback,\n );\n },\n [\n documentDispatch,\n connectDid,\n documentModelModule?.reducer,\n onAddOperation,\n document?.header.id,\n sign,\n user,\n ],\n );\n\n return dispatch;\n}\n\nexport function useEditorProps<T extends PHDocument = PHDocument>(\n document: T | undefined,\n documentDispatch: DocumentDispatch<T>,\n onAddOperation: (operation: Operation) => Promise<void>,\n) {\n const { t } = useTranslation();\n const { showModal } = useModal();\n const theme = useAtomValue(themeAtom);\n const user = useUser() || undefined;\n const userPermissions = useUserPermissions();\n const selectedDrive = useSelectedDrive();\n const parentFolder = useParentFolder(document?.header.id);\n const setSelectedNode = useSetSelectedNode();\n const context = useMemo(() => ({ theme, user }), [theme, user]);\n const getDocumentModelModule = useGetDocumentModelModule();\n\n const canUndo =\n !!document &&\n (document.header.revision.global > 0 ||\n document.header.revision.local > 0);\n const canRedo = !!document?.clipboard.length;\n\n const dispatch = useEditorDispatch(\n document,\n documentDispatch,\n onAddOperation,\n );\n\n const handleUndo = useCallback(() => {\n dispatch(undo());\n }, [dispatch]);\n\n const handleRedo = useCallback(() => {\n dispatch(redo());\n }, [dispatch]);\n\n const onClose = useCallback(() => {\n setSelectedNode(parentFolder?.id);\n }, [parentFolder, setSelectedNode]);\n\n const exportDocument = useCallback(\n (document: PHDocument) => {\n const validationErrors = validateDocument(document);\n\n if (validationErrors.length) {\n showModal('confirmationModal', {\n title: t('modals.exportDocumentWithErrors.title'),\n body: (\n <div>\n <p>{t('modals.exportDocumentWithErrors.body')}</p>\n <ul className=\"mt-4 flex list-disc flex-col items-start px-4 text-xs\">\n {validationErrors.map((error, index) => (\n <li key={index}>{error.message}</li>\n ))}\n </ul>\n </div>\n ),\n cancelLabel: t('common.cancel'),\n continueLabel: t('common.export'),\n onCancel(closeModal) {\n closeModal();\n },\n onContinue(closeModal) {\n closeModal();\n return exportFile(document, getDocumentModelModule);\n },\n });\n } else {\n return exportFile(document, getDocumentModelModule);\n }\n },\n [getDocumentModelModule, showModal, t],\n );\n\n const onExport = useCallback(() => {\n if (document) {\n return exportDocument(document);\n }\n }, [exportDocument, document]);\n\n const [revisionHistoryVisible, setRevisionHistoryVisible] = useState(false);\n const showRevisionHistory = useCallback(\n () => setRevisionHistoryVisible(true),\n [],\n );\n\n return {\n dispatch,\n revisionHistoryVisible,\n context,\n canUndo,\n canRedo,\n undo: handleUndo,\n redo: handleRedo,\n onClose,\n onExport,\n onShowRevisionHistory: showRevisionHistory,\n isAllowedToCreateDocuments:\n userPermissions?.isAllowedToCreateDocuments ?? false,\n isAllowedToEditDocuments:\n userPermissions?.isAllowedToEditDocuments ?? false,\n };\n}\n","import { type TNodeActions } from '@powerhousedao/design-system';\nimport {\n useSelectedDrive,\n useSelectedFolder,\n useSelectedParentFolder,\n useSetSelectedNode,\n} from '@powerhousedao/state';\nimport { type Node } from 'document-drive';\nimport { useCallback, useMemo } from 'react';\nimport { useDocumentDriveServer } from './useDocumentDriveServer.js';\nexport function useDebugHandlers() {\n const { removeTrigger, addTrigger, registerNewPullResponderTrigger } =\n useDocumentDriveServer();\n\n const onAddTrigger = useCallback(\n async (driveId: string) => {\n const url = window.prompt('url') || '';\n\n const pullResponderTrigger = await registerNewPullResponderTrigger(\n driveId,\n url,\n { pullInterval: 6000 },\n );\n if (!pullResponderTrigger) return;\n await addTrigger(driveId, pullResponderTrigger);\n },\n [addTrigger, registerNewPullResponderTrigger],\n );\n\n const onRemoveTrigger = useCallback(\n async (driveId: string) => {\n const triggerId = window.prompt('triggerId:');\n\n if (triggerId) {\n await removeTrigger(driveId, triggerId);\n }\n },\n [removeTrigger],\n );\n\n const onAddInvalidTrigger = useCallback(\n async (driveId: string) => {\n const url = window.prompt('url') || '';\n\n await addTrigger(driveId, {\n id: 'some-invalid-id',\n type: 'PullResponder',\n data: {\n interval: '3000',\n listenerId: 'invalid-listener-id',\n url,\n },\n });\n },\n [addTrigger],\n );\n\n return {\n onAddTrigger,\n onRemoveTrigger,\n onAddInvalidTrigger,\n };\n}\n\nexport function useNodeActions(): TNodeActions {\n const selectedDrive = useSelectedDrive();\n const selectedFolder = useSelectedFolder();\n const selectedParentFolder = useSelectedParentFolder();\n const setSelectedNode = useSetSelectedNode();\n const { addFolder, addFile, renameNode, copyNode, moveNode } =\n useDocumentDriveServer();\n\n const onAddFile = useCallback(\n async (file: File, parent: Node | undefined) => {\n if (!selectedDrive?.header.id) return;\n\n const fileName = file.name.replace(/\\.zip$/gim, '');\n\n return await addFile(\n file,\n selectedDrive.header.id,\n fileName,\n parent?.id,\n );\n },\n [addFile, selectedDrive?.header.id],\n );\n\n const onAddFolder = useCallback(\n async (name: string, parent: { id: string } | undefined) => {\n if (!selectedDrive?.header.id) return;\n\n return await addFolder(selectedDrive.header.id, name, parent?.id);\n },\n [addFolder, selectedDrive?.header.id],\n );\n\n const onRenameNode = useCallback(\n async (newName: string, node: Node): Promise<Node | undefined> => {\n if (!selectedDrive?.header.id) return;\n\n return await renameNode(selectedDrive.header.id, node.id, newName);\n },\n [renameNode, selectedDrive?.header.id],\n );\n\n const onCopyNode = useCallback(\n async (src: Node, target: Node | undefined) => {\n await copyNode(src, target);\n },\n [copyNode],\n );\n\n const onMoveNode = useCallback(\n async (src: Node, target: Node | undefined) => {\n await moveNode(src, target);\n },\n [moveNode],\n );\n\n const onDuplicateNode = useCallback(\n async (src: Node) => {\n await copyNode(src, selectedFolder ?? selectedParentFolder);\n },\n [copyNode, selectedFolder, selectedParentFolder],\n );\n\n const onAddAndSelectNewFolder = useCallback(\n async (name: string) => {\n if (!name) return;\n\n const newFolder = await onAddFolder(\n name,\n selectedFolder ?? selectedParentFolder,\n );\n\n if (newFolder) {\n setSelectedNode(newFolder.id);\n }\n },\n [onAddFolder, selectedFolder, selectedParentFolder, setSelectedNode],\n );\n\n return useMemo(\n () => ({\n onAddFile,\n onAddFolder,\n onRenameNode,\n onCopyNode,\n onMoveNode,\n onDuplicateNode,\n onAddAndSelectNewFolder,\n }),\n [\n onAddFolder,\n onAddFile,\n onCopyNode,\n onMoveNode,\n onRenameNode,\n onDuplicateNode,\n onAddAndSelectNewFolder,\n ],\n );\n}\n","import { useContext, createContext, useState, useCallback, useRef, useLayoutEffect, useEffect } from 'react';\nimport { jsx } from 'react/jsx-runtime';\n\nfunction _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\n\nvar reservedModifierKeywords = ['shift', 'alt', 'meta', 'mod', 'ctrl'];\nvar mappedKeys = {\n esc: 'escape',\n \"return\": 'enter',\n '.': 'period',\n ',': 'comma',\n '-': 'slash',\n ' ': 'space',\n '`': 'backquote',\n '#': 'backslash',\n '+': 'bracketright',\n ShiftLeft: 'shift',\n ShiftRight: 'shift',\n AltLeft: 'alt',\n AltRight: 'alt',\n MetaLeft: 'meta',\n MetaRight: 'meta',\n OSLeft: 'meta',\n OSRight: 'meta',\n ControlLeft: 'ctrl',\n ControlRight: 'ctrl'\n};\nfunction mapKey(key) {\n return (key && mappedKeys[key] || key || '').trim().toLowerCase().replace(/key|digit|numpad|arrow/, '');\n}\nfunction isHotkeyModifier(key) {\n return reservedModifierKeywords.includes(key);\n}\nfunction parseKeysHookInput(keys, splitKey) {\n if (splitKey === void 0) {\n splitKey = ',';\n }\n return keys.split(splitKey);\n}\nfunction parseHotkey(hotkey, combinationKey, description) {\n if (combinationKey === void 0) {\n combinationKey = '+';\n }\n var keys = hotkey.toLocaleLowerCase().split(combinationKey).map(function (k) {\n return mapKey(k);\n });\n var modifiers = {\n alt: keys.includes('alt'),\n ctrl: keys.includes('ctrl') || keys.includes('control'),\n shift: keys.includes('shift'),\n meta: keys.includes('meta'),\n mod: keys.includes('mod')\n };\n var singleCharKeys = keys.filter(function (k) {\n return !reservedModifierKeywords.includes(k);\n });\n return _extends({}, modifiers, {\n keys: singleCharKeys,\n description: description,\n hotkey: hotkey\n });\n}\n\n(function () {\n if (typeof document !== 'undefined') {\n document.addEventListener('keydown', function (e) {\n if (e.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n pushToCurrentlyPressedKeys([mapKey(e.key), mapKey(e.code)]);\n });\n document.addEventListener('keyup', function (e) {\n if (e.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n removeFromCurrentlyPressedKeys([mapKey(e.key), mapKey(e.code)]);\n });\n }\n if (typeof window !== 'undefined') {\n window.addEventListener('blur', function () {\n currentlyPressedKeys.clear();\n });\n }\n})();\nvar currentlyPressedKeys = /*#__PURE__*/new Set();\n// https://github.com/microsoft/TypeScript/issues/17002\nfunction isReadonlyArray(value) {\n return Array.isArray(value);\n}\nfunction isHotkeyPressed(key, splitKey) {\n if (splitKey === void 0) {\n splitKey = ',';\n }\n var hotkeyArray = isReadonlyArray(key) ? key : key.split(splitKey);\n return hotkeyArray.every(function (hotkey) {\n return currentlyPressedKeys.has(hotkey.trim().toLowerCase());\n });\n}\nfunction pushToCurrentlyPressedKeys(key) {\n var hotkeyArray = Array.isArray(key) ? key : [key];\n /*\r\n Due to a weird behavior on macOS we need to clear the set if the user pressed down the meta key and presses another key.\r\n https://stackoverflow.com/questions/11818637/why-does-javascript-drop-keyup-events-when-the-metakey-is-pressed-on-mac-browser\r\n Otherwise the set will hold all ever pressed keys while the meta key is down which leads to wrong results.\r\n */\n if (currentlyPressedKeys.has('meta')) {\n currentlyPressedKeys.forEach(function (key) {\n return !isHotkeyModifier(key) && currentlyPressedKeys[\"delete\"](key.toLowerCase());\n });\n }\n hotkeyArray.forEach(function (hotkey) {\n return currentlyPressedKeys.add(hotkey.toLowerCase());\n });\n}\nfunction removeFromCurrentlyPressedKeys(key) {\n var hotkeyArray = Array.isArray(key) ? key : [key];\n /*\r\n Due to a weird behavior on macOS we need to clear the set if the user pressed down the meta key and presses another key.\r\n https://stackoverflow.com/questions/11818637/why-does-javascript-drop-keyup-events-when-the-metakey-is-pressed-on-mac-browser\r\n Otherwise the set will hold all ever pressed keys while the meta key is down which leads to wrong results.\r\n */\n if (key === 'meta') {\n currentlyPressedKeys.clear();\n } else {\n hotkeyArray.forEach(function (hotkey) {\n return currentlyPressedKeys[\"delete\"](hotkey.toLowerCase());\n });\n }\n}\n\nfunction maybePreventDefault(e, hotkey, preventDefault) {\n if (typeof preventDefault === 'function' && preventDefault(e, hotkey) || preventDefault === true) {\n e.preventDefault();\n }\n}\nfunction isHotkeyEnabled(e, hotkey, enabled) {\n if (typeof enabled === 'function') {\n return enabled(e, hotkey);\n }\n return enabled === true || enabled === undefined;\n}\nfunction isKeyboardEventTriggeredByInput(ev) {\n return isHotkeyEnabledOnTag(ev, ['input', 'textarea', 'select']);\n}\nfunction isHotkeyEnabledOnTag(event, enabledOnTags) {\n if (enabledOnTags === void 0) {\n enabledOnTags = false;\n }\n var target = event.target,\n composed = event.composed;\n var targetTagName = null;\n if (isCustomElement(target) && composed) {\n targetTagName = event.composedPath()[0] && event.composedPath()[0].tagName;\n } else {\n targetTagName = target && target.tagName;\n }\n if (isReadonlyArray(enabledOnTags)) {\n return Boolean(targetTagName && enabledOnTags && enabledOnTags.some(function (tag) {\n var _targetTagName;\n return tag.toLowerCase() === ((_targetTagName = targetTagName) == null ? void 0 : _targetTagName.toLowerCase());\n }));\n }\n return Boolean(targetTagName && enabledOnTags && enabledOnTags);\n}\nfunction isCustomElement(element) {\n // We just do a basic check w/o any complex RegEx or validation against the list of legacy names containing a hyphen,\n // as none of them is likely to be an event target, and it won't hurt anyway if we miss.\n // see: https://html.spec.whatwg.org/multipage/custom-elements.html#prod-potentialcustomelementname\n return !!element.tagName && !element.tagName.startsWith(\"-\") && element.tagName.includes(\"-\");\n}\nfunction isScopeActive(activeScopes, scopes) {\n if (activeScopes.length === 0 && scopes) {\n console.warn('A hotkey has the \"scopes\" option set, however no active scopes were found. If you want to use the global scopes feature, you need to wrap your app in a <HotkeysProvider>');\n return true;\n }\n if (!scopes) {\n return true;\n }\n return activeScopes.some(function (scope) {\n return scopes.includes(scope);\n }) || activeScopes.includes('*');\n}\nvar isHotkeyMatchingKeyboardEvent = function isHotkeyMatchingKeyboardEvent(e, hotkey, ignoreModifiers) {\n if (ignoreModifiers === void 0) {\n ignoreModifiers = false;\n }\n var alt = hotkey.alt,\n meta = hotkey.meta,\n mod = hotkey.mod,\n shift = hotkey.shift,\n ctrl = hotkey.ctrl,\n keys = hotkey.keys;\n var pressedKeyUppercase = e.key,\n code = e.code,\n ctrlKey = e.ctrlKey,\n metaKey = e.metaKey,\n shiftKey = e.shiftKey,\n altKey = e.altKey;\n var keyCode = mapKey(code);\n var pressedKey = pressedKeyUppercase.toLowerCase();\n if (!(keys != null && keys.includes(keyCode)) && !(keys != null && keys.includes(pressedKey)) && !['ctrl', 'control', 'unknown', 'meta', 'alt', 'shift', 'os'].includes(keyCode)) {\n return false;\n }\n if (!ignoreModifiers) {\n // We check the pressed keys for compatibility with the keyup event. In keyup events the modifier flags are not set.\n if (alt === !altKey && pressedKey !== 'alt') {\n return false;\n }\n if (shift === !shiftKey && pressedKey !== 'shift') {\n return false;\n }\n // Mod is a special key name that is checking for meta on macOS and ctrl on other platforms\n if (mod) {\n if (!metaKey && !ctrlKey) {\n return false;\n }\n } else {\n if (meta === !metaKey && pressedKey !== 'meta' && pressedKey !== 'os') {\n return false;\n }\n if (ctrl === !ctrlKey && pressedKey !== 'ctrl' && pressedKey !== 'control') {\n return false;\n }\n }\n }\n // All modifiers are correct, now check the key\n // If the key is set, we check for the key\n if (keys && keys.length === 1 && (keys.includes(pressedKey) || keys.includes(keyCode))) {\n return true;\n } else if (keys) {\n // Check if all keys are present in pressedDownKeys set\n return isHotkeyPressed(keys);\n } else if (!keys) {\n // If the key is not set, we only listen for modifiers, that check went alright, so we return true\n return true;\n }\n // There is nothing that matches.\n return false;\n};\n\nvar BoundHotkeysProxyProvider = /*#__PURE__*/createContext(undefined);\nvar useBoundHotkeysProxy = function useBoundHotkeysProxy() {\n return useContext(BoundHotkeysProxyProvider);\n};\nfunction BoundHotkeysProxyProviderProvider(_ref) {\n var addHotkey = _ref.addHotkey,\n removeHotkey = _ref.removeHotkey,\n children = _ref.children;\n return /*#__PURE__*/jsx(BoundHotkeysProxyProvider.Provider, {\n value: {\n addHotkey: addHotkey,\n removeHotkey: removeHotkey\n },\n children: children\n });\n}\n\nfunction deepEqual(x, y) {\n //@ts-ignore\n return x && y && typeof x === 'object' && typeof y === 'object' ? Object.keys(x).length === Object.keys(y).length &&\n //@ts-ignore\n Object.keys(x).reduce(function (isEqual, key) {\n return isEqual && deepEqual(x[key], y[key]);\n }, true) : x === y;\n}\n\nvar HotkeysContext = /*#__PURE__*/createContext({\n hotkeys: [],\n enabledScopes: [],\n toggleScope: function toggleScope() {},\n enableScope: function enableScope() {},\n disableScope: function disableScope() {}\n});\nvar useHotkeysContext = function useHotkeysContext() {\n return useContext(HotkeysContext);\n};\nvar HotkeysProvider = function HotkeysProvider(_ref) {\n var _ref$initiallyActiveS = _ref.initiallyActiveScopes,\n initiallyActiveScopes = _ref$initiallyActiveS === void 0 ? ['*'] : _ref$initiallyActiveS,\n children = _ref.children;\n var _useState = useState((initiallyActiveScopes == null ? void 0 : initiallyActiveScopes.length) > 0 ? initiallyActiveScopes : ['*']),\n internalActiveScopes = _useState[0],\n setInternalActiveScopes = _useState[1];\n var _useState2 = useState([]),\n boundHotkeys = _useState2[0],\n setBoundHotkeys = _useState2[1];\n var enableScope = useCallback(function (scope) {\n setInternalActiveScopes(function (prev) {\n if (prev.includes('*')) {\n return [scope];\n }\n return Array.from(new Set([].concat(prev, [scope])));\n });\n }, []);\n var disableScope = useCallback(function (scope) {\n setInternalActiveScopes(function (prev) {\n if (prev.filter(function (s) {\n return s !== scope;\n }).length === 0) {\n return ['*'];\n } else {\n return prev.filter(function (s) {\n return s !== scope;\n });\n }\n });\n }, []);\n var toggleScope = useCallback(function (scope) {\n setInternalActiveScopes(function (prev) {\n if (prev.includes(scope)) {\n if (prev.filter(function (s) {\n return s !== scope;\n }).length === 0) {\n return ['*'];\n } else {\n return prev.filter(function (s) {\n return s !== scope;\n });\n }\n } else {\n if (prev.includes('*')) {\n return [scope];\n }\n return Array.from(new Set([].concat(prev, [scope])));\n }\n });\n }, []);\n var addBoundHotkey = useCallback(function (hotkey) {\n setBoundHotkeys(function (prev) {\n return [].concat(prev, [hotkey]);\n });\n }, []);\n var removeBoundHotkey = useCallback(function (hotkey) {\n setBoundHotkeys(function (prev) {\n return prev.filter(function (h) {\n return !deepEqual(h, hotkey);\n });\n });\n }, []);\n return /*#__PURE__*/jsx(HotkeysContext.Provider, {\n value: {\n enabledScopes: internalActiveScopes,\n hotkeys: boundHotkeys,\n enableScope: enableScope,\n disableScope: disableScope,\n toggleScope: toggleScope\n },\n children: /*#__PURE__*/jsx(BoundHotkeysProxyProviderProvider, {\n addHotkey: addBoundHotkey,\n removeHotkey: removeBoundHotkey,\n children: children\n })\n });\n};\n\nfunction useDeepEqualMemo(value) {\n var ref = useRef(undefined);\n if (!deepEqual(ref.current, value)) {\n ref.current = value;\n }\n return ref.current;\n}\n\nvar stopPropagation = function stopPropagation(e) {\n e.stopPropagation();\n e.preventDefault();\n e.stopImmediatePropagation();\n};\nvar useSafeLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction useHotkeys(keys, callback, options, dependencies) {\n var _useState = useState(null),\n ref = _useState[0],\n setRef = _useState[1];\n var hasTriggeredRef = useRef(false);\n var _options = !(options instanceof Array) ? options : !(dependencies instanceof Array) ? dependencies : undefined;\n var _keys = isReadonlyArray(keys) ? keys.join(_options == null ? void 0 : _options.splitKey) : keys;\n var _deps = options instanceof Array ? options : dependencies instanceof Array ? dependencies : undefined;\n var memoisedCB = useCallback(callback, _deps != null ? _deps : []);\n var cbRef = useRef(memoisedCB);\n if (_deps) {\n cbRef.current = memoisedCB;\n } else {\n cbRef.current = callback;\n }\n var memoisedOptions = useDeepEqualMemo(_options);\n var _useHotkeysContext = useHotkeysContext(),\n enabledScopes = _useHotkeysContext.enabledScopes;\n var proxy = useBoundHotkeysProxy();\n useSafeLayoutEffect(function () {\n if ((memoisedOptions == null ? void 0 : memoisedOptions.enabled) === false || !isScopeActive(enabledScopes, memoisedOptions == null ? void 0 : memoisedOptions.scopes)) {\n return;\n }\n var listener = function listener(e, isKeyUp) {\n var _e$target;\n if (isKeyUp === void 0) {\n isKeyUp = false;\n }\n if (isKeyboardEventTriggeredByInput(e) && !isHotkeyEnabledOnTag(e, memoisedOptions == null ? void 0 : memoisedOptions.enableOnFormTags)) {\n return;\n }\n // TODO: SINCE THE EVENT IS NOW ATTACHED TO THE REF, THE ACTIVE ELEMENT CAN NEVER BE INSIDE THE REF. THE HOTKEY ONLY TRIGGERS IF THE\n // REF IS THE ACTIVE ELEMENT. THIS IS A PROBLEM SINCE FOCUSED SUB COMPONENTS WON'T TRIGGER THE HOTKEY.\n if (ref !== null) {\n var rootNode = ref.getRootNode();\n if ((rootNode instanceof Document || rootNode instanceof ShadowRoot) && rootNode.activeElement !== ref && !ref.contains(rootNode.activeElement)) {\n stopPropagation(e);\n return;\n }\n }\n if ((_e$target = e.target) != null && _e$target.isContentEditable && !(memoisedOptions != null && memoisedOptions.enableOnContentEditable)) {\n return;\n }\n parseKeysHookInput(_keys, memoisedOptions == null ? void 0 : memoisedOptions.splitKey).forEach(function (key) {\n var _hotkey$keys;\n var hotkey = parseHotkey(key, memoisedOptions == null ? void 0 : memoisedOptions.combinationKey);\n if (isHotkeyMatchingKeyboardEvent(e, hotkey, memoisedOptions == null ? void 0 : memoisedOptions.ignoreModifiers) || (_hotkey$keys = hotkey.keys) != null && _hotkey$keys.includes('*')) {\n if (memoisedOptions != null && memoisedOptions.ignoreEventWhen != null && memoisedOptions.ignoreEventWhen(e)) {\n return;\n }\n if (isKeyUp && hasTriggeredRef.current) {\n return;\n }\n maybePreventDefault(e, hotkey, memoisedOptions == null ? void 0 : memoisedOptions.preventDefault);\n if (!isHotkeyEnabled(e, hotkey, memoisedOptions == null ? void 0 : memoisedOptions.enabled)) {\n stopPropagation(e);\n return;\n }\n // Execute the user callback for that hotkey\n cbRef.current(e, hotkey);\n if (!isKeyUp) {\n hasTriggeredRef.current = true;\n }\n }\n });\n };\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n pushToCurrentlyPressedKeys(mapKey(event.code));\n if ((memoisedOptions == null ? void 0 : memoisedOptions.keydown) === undefined && (memoisedOptions == null ? void 0 : memoisedOptions.keyup) !== true || memoisedOptions != null && memoisedOptions.keydown) {\n listener(event);\n }\n };\n var handleKeyUp = function handleKeyUp(event) {\n if (event.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n removeFromCurrentlyPressedKeys(mapKey(event.code));\n hasTriggeredRef.current = false;\n if (memoisedOptions != null && memoisedOptions.keyup) {\n listener(event, true);\n }\n };\n var domNode = ref || (_options == null ? void 0 : _options.document) || document;\n // @ts-ignore\n domNode.addEventListener('keyup', handleKeyUp, _options == null ? void 0 : _options.eventListenerOptions);\n // @ts-ignore\n domNode.addEventListener('keydown', handleKeyDown, _options == null ? void 0 : _options.eventListenerOptions);\n if (proxy) {\n parseKeysHookInput(_keys, memoisedOptions == null ? void 0 : memoisedOptions.splitKey).forEach(function (key) {\n return proxy.addHotkey(parseHotkey(key, memoisedOptions == null ? void 0 : memoisedOptions.combinationKey, memoisedOptions == null ? void 0 : memoisedOptions.description));\n });\n }\n return function () {\n // @ts-ignore\n domNode.removeEventListener('keyup', handleKeyUp, _options == null ? void 0 : _options.eventListenerOptions);\n // @ts-ignore\n domNode.removeEventListener('keydown', handleKeyDown, _options == null ? void 0 : _options.eventListenerOptions);\n if (proxy) {\n parseKeysHookInput(_keys, memoisedOptions == null ? void 0 : memoisedOptions.splitKey).forEach(function (key) {\n return proxy.removeHotkey(parseHotkey(key, memoisedOptions == null ? void 0 : memoisedOptions.combinationKey, memoisedOptions == null ? void 0 : memoisedOptions.description));\n });\n }\n };\n }, [ref, _keys, memoisedOptions, enabledScopes]);\n return setRef;\n}\n\nfunction useRecordHotkeys() {\n var _useState = useState(new Set()),\n keys = _useState[0],\n setKeys = _useState[1];\n var _useState2 = useState(false),\n isRecording = _useState2[0],\n setIsRecording = _useState2[1];\n var handler = useCallback(function (event) {\n if (event.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n setKeys(function (prev) {\n var newKeys = new Set(prev);\n newKeys.add(mapKey(event.code));\n return newKeys;\n });\n }, []);\n var stop = useCallback(function () {\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', handler);\n setIsRecording(false);\n }\n }, [handler]);\n var start = useCallback(function () {\n setKeys(new Set());\n if (typeof document !== 'undefined') {\n stop();\n document.addEventListener('keydown', handler);\n setIsRecording(true);\n }\n }, [handler, stop]);\n var resetKeys = useCallback(function () {\n setKeys(new Set());\n }, []);\n return [keys, {\n start: start,\n stop: stop,\n resetKeys: resetKeys,\n isRecording: isRecording\n }];\n}\n\nexport { HotkeysProvider, isHotkeyPressed, useHotkeys, useHotkeysContext, useRecordHotkeys };\n//# sourceMappingURL=react-hotkeys-hook.esm.js.map\n","import { useHotkeys } from 'react-hotkeys-hook';\n\nexport interface UseUndoRedoShortcutsProps {\n undo: () => void;\n redo: () => void;\n canUndo: boolean;\n canRedo: boolean;\n}\n\nexport const useUndoRedoShortcuts = (props: UseUndoRedoShortcutsProps) => {\n const { undo, redo, canRedo, canUndo } = props;\n const { isMac } = window.electronAPI?.platformInfo || {};\n\n let undoShortcut = 'ctrl+z';\n let redoShortcut = 'ctrl+y';\n\n if (isMac) {\n undoShortcut = 'mod+z';\n redoShortcut = 'mod+shift+z';\n }\n\n // set handler for undo\n useHotkeys(\n undoShortcut,\n event => {\n event.preventDefault();\n if (canUndo) {\n undo();\n }\n },\n {},\n [canUndo, undo],\n );\n\n // set handler for redo\n useHotkeys(\n redoShortcut,\n event => {\n event.preventDefault();\n if (canRedo) {\n redo();\n }\n },\n {},\n [canRedo, redo],\n );\n};\n","import {\n useConnectConfig,\n useDocumentDriveServer,\n useShowAddDriveModal,\n} from '#hooks';\nimport { useGetAppNameForEditorId } from '#store';\nimport {\n HomeScreen,\n HomeScreenAddDriveItem,\n HomeScreenItem,\n} from '@powerhousedao/design-system';\nimport {\n useDocuments,\n useDrives,\n useLoadableSelectedDocument,\n useLoadableSelectedDrive,\n useLoadableSelectedFolder,\n useSelectedDocument,\n useSelectedDrive,\n useSelectedFolder,\n useSetSelectedDrive,\n} from '@powerhousedao/state';\nimport { type DocumentDriveDocument } from 'document-drive';\nimport { useCallback, useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { DocumentEditorContainer } from '../components/document-editor-container.js';\nimport { DriveEditorContainer } from '../components/drive-editor-container.js';\nimport { DriveIcon } from '../components/drive-icon.js';\nexport default function Content() {\n const { addFile } = useDocumentDriveServer();\n const selectedDrive = useSelectedDrive();\n const selectedFolder = useSelectedFolder();\n const selectedDocument = useSelectedDocument();\n\n useEffect(() => {\n return window.electronAPI?.handleFileOpen(async file => {\n if (!selectedDrive?.header.id || !selectedDocument?.header.id) {\n return;\n }\n\n await addFile(\n file.content,\n selectedDrive.header.id,\n file.name,\n selectedFolder?.id,\n );\n });\n }, [\n selectedDrive?.header.id,\n selectedFolder?.id,\n selectedDocument?.header.id,\n addFile,\n ]);\n\n return (\n <ContentContainer>\n <DocumentEditorContainer />\n <DriveEditorContainer />\n <HomeScreenContainer />\n </ContentContainer>\n );\n}\n\nfunction ContentContainer({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"flex h-full flex-col overflow-auto\" id=\"content-view\">\n {children}\n </div>\n );\n}\n\nfunction HomeScreenContainer() {\n const { pathname } = useLocation();\n const drives = useDrives();\n const loadableSelectedDrive = useLoadableSelectedDrive();\n const loadableSelectedFolder = useLoadableSelectedFolder();\n const loadableSelectedDocument = useLoadableSelectedDocument();\n const showAddDriveModal = useShowAddDriveModal();\n const setSelectedDrive = useSetSelectedDrive();\n const getAppDescriptionForEditorId = useGetAppNameForEditorId();\n const [config] = useConnectConfig();\n const handleDriveClick = useCallback(\n (drive: DocumentDriveDocument) => {\n setSelectedDrive(drive.header.id);\n },\n [setSelectedDrive],\n );\n\n const onAddDriveClick = useCallback(() => {\n showAddDriveModal();\n }, [showAddDriveModal]);\n\n const isLoading =\n loadableSelectedDrive.state === 'loading' ||\n loadableSelectedFolder.state === 'loading' ||\n loadableSelectedDocument.state === 'loading';\n\n const isError =\n loadableSelectedDrive.state === 'hasError' ||\n loadableSelectedFolder.state === 'hasError' ||\n loadableSelectedDocument.state === 'hasError';\n\n const hasSelectedDriveOrFolderOrDocument =\n !isLoading &&\n !isError &&\n (!!loadableSelectedDrive.data ||\n !!loadableSelectedFolder.data ||\n !!loadableSelectedDocument.data);\n\n if (pathname !== '/') {\n return null;\n }\n\n if (hasSelectedDriveOrFolderOrDocument) {\n return null;\n }\n\n return (\n <HomeScreen>\n {drives?.map(drive => {\n const editorId = drive.header.meta?.preferredEditor;\n const appName = editorId\n ? getAppDescriptionForEditorId(editorId)\n : undefined;\n return (\n <HomeScreenItem\n key={drive.header.id}\n title={drive.state.global.name}\n description={appName || 'Drive Explorer App'}\n icon={<DriveIcon drive={drive} />}\n onClick={() => handleDriveClick(drive)}\n />\n );\n })}\n {config.drives.addDriveEnabled && (\n <HomeScreenAddDriveItem onClick={onAddDriveClick} />\n )}\n </HomeScreen>\n );\n}\n"],"file":"assets/content.7P2XZwjp.js"}
|