@edenapp/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/com/eden/editor/dist/assets/css-DQU6DXDx.js +3 -0
- package/apps/com/eden/editor/dist/assets/editor-BRA9licV.css +1 -0
- package/apps/com/eden/editor/dist/assets/editor.main-DAsyVptA.js +677 -0
- package/apps/com/eden/editor/dist/assets/editor.worker-B4pQIWZD.js +12 -0
- package/apps/com/eden/editor/dist/assets/html-CTBLac3N.js +1 -0
- package/apps/com/eden/editor/dist/assets/index-B7GgDQ9I.css +1 -0
- package/apps/com/eden/editor/dist/assets/index-BWJI9cyM.js +2 -0
- package/apps/com/eden/editor/dist/assets/ini-BvajGCUy.js +1 -0
- package/apps/com/eden/editor/dist/assets/javascript-DJ6Ya8pi.js +1 -0
- package/apps/com/eden/editor/dist/assets/jsonMode-BA0kYRDI.js +10 -0
- package/apps/com/eden/editor/dist/assets/less-GGFNNJHn.js +2 -0
- package/apps/com/eden/editor/dist/assets/markdown-B811l8j2.js +1 -0
- package/apps/com/eden/editor/dist/assets/shell-CsDZo4DB.js +1 -0
- package/apps/com/eden/editor/dist/assets/typescript-C7BsmV0J.js +1 -0
- package/apps/com/eden/editor/dist/assets/yaml-QL02lm_B.js +1 -0
- package/apps/com/eden/editor/dist/index.html +13 -0
- package/apps/com/eden/editor/icon.svg +22 -0
- package/apps/com/eden/editor/index.html +12 -0
- package/apps/com/eden/editor/manifest.json +58 -0
- package/apps/com/eden/editor/node_modules/.bin/browserslist +21 -0
- package/apps/com/eden/editor/node_modules/.bin/tsc +21 -0
- package/apps/com/eden/editor/node_modules/.bin/tsserver +21 -0
- package/apps/com/eden/editor/node_modules/.bin/vite +21 -0
- package/apps/com/eden/editor/package.json +21 -0
- package/apps/com/eden/editor/src/App.tsx +212 -0
- package/apps/com/eden/editor/src/components/ErrorBanner.tsx +13 -0
- package/apps/com/eden/editor/src/components/LazyMonacoEditor.tsx +154 -0
- package/apps/com/eden/editor/src/components/TabBar.tsx +36 -0
- package/apps/com/eden/editor/src/components/Toolbar.tsx +39 -0
- package/apps/com/eden/editor/src/components/WelcomeScreen.tsx +49 -0
- package/apps/com/eden/editor/src/components/index.ts +11 -0
- package/apps/com/eden/editor/src/index.tsx +10 -0
- package/apps/com/eden/editor/src/styles.css +319 -0
- package/apps/com/eden/editor/src/types.ts +69 -0
- package/apps/com/eden/editor/tsconfig.json +24 -0
- package/apps/com/eden/editor/vite.config.mts +67 -0
- package/apps/com/eden/eveshell/assets/apps-grid-icon.svg +17 -0
- package/apps/com/eden/eveshell/assets/default-icon.svg +17 -0
- package/apps/com/eden/eveshell/dist/assets/index-BS2yCXxK.css +1 -0
- package/apps/com/eden/eveshell/dist/assets/index-De0NEh_d.js +1 -0
- package/apps/com/eden/eveshell/dist/index.html +13 -0
- package/apps/com/eden/eveshell/index.html +12 -0
- package/apps/com/eden/eveshell/manifest.json +28 -0
- package/apps/com/eden/eveshell/node_modules/.bin/tsc +21 -0
- package/apps/com/eden/eveshell/node_modules/.bin/tsserver +21 -0
- package/apps/com/eden/eveshell/node_modules/.bin/vite +21 -0
- package/apps/com/eden/eveshell/package.json +20 -0
- package/apps/com/eden/eveshell/src/components/AllApps.tsx +228 -0
- package/apps/com/eden/eveshell/src/components/AppContextMenu.tsx +125 -0
- package/apps/com/eden/eveshell/src/components/AppIcon.tsx +40 -0
- package/apps/com/eden/eveshell/src/components/Clock.tsx +35 -0
- package/apps/com/eden/eveshell/src/components/Dock.tsx +147 -0
- package/apps/com/eden/eveshell/src/components/ShellOverlay.tsx +343 -0
- package/apps/com/eden/eveshell/src/icon-cache.ts +38 -0
- package/apps/com/eden/eveshell/src/index.tsx +11 -0
- package/apps/com/eden/eveshell/src/styles.css +409 -0
- package/apps/com/eden/eveshell/src/types.ts +5 -0
- package/apps/com/eden/eveshell/tsconfig.json +37 -0
- package/apps/com/eden/eveshell/vite.config.mts +23 -0
- package/apps/com/eden/example/appbus/client-a/app.js +239 -0
- package/apps/com/eden/example/appbus/client-a/index.html +48 -0
- package/apps/com/eden/example/appbus/client-a/manifest.json +27 -0
- package/apps/com/eden/example/appbus/client-a/styles.css +52 -0
- package/apps/com/eden/example/appbus/client-b/app.js +130 -0
- package/apps/com/eden/example/appbus/client-b/index.html +35 -0
- package/apps/com/eden/example/appbus/client-b/manifest.json +27 -0
- package/apps/com/eden/example/appbus/client-b/styles.css +48 -0
- package/apps/com/eden/example/appbus/hub/README.md +18 -0
- package/apps/com/eden/example/appbus/hub/backend.js +121 -0
- package/apps/com/eden/example/appbus/hub/manifest.json +17 -0
- package/apps/com/eden/example/appbus/isolated/app.js +107 -0
- package/apps/com/eden/example/appbus/isolated/index.html +35 -0
- package/apps/com/eden/example/appbus/isolated/manifest.json +27 -0
- package/apps/com/eden/example/appbus/isolated/styles.css +52 -0
- package/apps/com/eden/example/calculator/.dev-manifest.json +5 -0
- package/apps/com/eden/example/calculator/app.js +95 -0
- package/apps/com/eden/example/calculator/icon.svg +19 -0
- package/apps/com/eden/example/calculator/index.html +39 -0
- package/apps/com/eden/example/calculator/manifest.json +30 -0
- package/apps/com/eden/example/calculator/styles.css +83 -0
- package/apps/com/eden/example/hello/README.md +3 -0
- package/apps/com/eden/example/hello/backend/dist/backend.js +47 -0
- package/apps/com/eden/example/hello/backend/node_modules/.bin/tsc +21 -0
- package/apps/com/eden/example/hello/backend/node_modules/.bin/tsserver +21 -0
- package/apps/com/eden/example/hello/backend/package.json +13 -0
- package/apps/com/eden/example/hello/backend/src/backend.ts +58 -0
- package/apps/com/eden/example/hello/backend/tsconfig.json +19 -0
- package/apps/com/eden/example/hello/frontend/dist/assets/index-D2WAwW3g.css +1 -0
- package/apps/com/eden/example/hello/frontend/dist/assets/index-D4bTq3-Q.js +1 -0
- package/apps/com/eden/example/hello/frontend/dist/index.html +59 -0
- package/apps/com/eden/example/hello/frontend/index.html +59 -0
- package/apps/com/eden/example/hello/frontend/node_modules/.bin/tsc +21 -0
- package/apps/com/eden/example/hello/frontend/node_modules/.bin/tsserver +21 -0
- package/apps/com/eden/example/hello/frontend/node_modules/.bin/vite +21 -0
- package/apps/com/eden/example/hello/frontend/package.json +15 -0
- package/apps/com/eden/example/hello/frontend/src/App.ts +191 -0
- package/apps/com/eden/example/hello/frontend/styles.css +96 -0
- package/apps/com/eden/example/hello/frontend/tsconfig.json +16 -0
- package/apps/com/eden/example/hello/frontend/vite.config.mts +21 -0
- package/apps/com/eden/example/hello/manifest.json +34 -0
- package/apps/com/eden/example/hello/shared/protocol.d.ts +38 -0
- package/apps/com/eden/example/showcase/app.js +186 -0
- package/apps/com/eden/example/showcase/index.html +637 -0
- package/apps/com/eden/example/showcase/manifest.json +24 -0
- package/apps/com/eden/example/showcase/styles.css +195 -0
- package/apps/com/eden/files/.dev-manifest.json +5 -0
- package/apps/com/eden/files/dist/assets/index-BOw4ESi3.js +1 -0
- package/apps/com/eden/files/dist/assets/index-BPH5FvSW.css +1 -0
- package/apps/com/eden/files/dist/index.html +13 -0
- package/apps/com/eden/files/icon.svg +15 -0
- package/apps/com/eden/files/index.html +12 -0
- package/apps/com/eden/files/manifest.json +28 -0
- package/apps/com/eden/files/node_modules/.bin/tsc +21 -0
- package/apps/com/eden/files/node_modules/.bin/tsserver +21 -0
- package/apps/com/eden/files/node_modules/.bin/vite +21 -0
- package/apps/com/eden/files/node_modules/.vite/deps/_metadata.json +46 -0
- package/apps/com/eden/files/node_modules/.vite/deps/chunk-5W77UGHT.js +1253 -0
- package/apps/com/eden/files/node_modules/.vite/deps/chunk-5W77UGHT.js.map +7 -0
- package/apps/com/eden/files/node_modules/.vite/deps/chunk-K4SCX2FD.js +1809 -0
- package/apps/com/eden/files/node_modules/.vite/deps/chunk-K4SCX2FD.js.map +7 -0
- package/apps/com/eden/files/node_modules/.vite/deps/package.json +3 -0
- package/apps/com/eden/files/node_modules/.vite/deps/solid-js.js +112 -0
- package/apps/com/eden/files/node_modules/.vite/deps/solid-js.js.map +7 -0
- package/apps/com/eden/files/node_modules/.vite/deps/solid-js_h.js +122 -0
- package/apps/com/eden/files/node_modules/.vite/deps/solid-js_h.js.map +7 -0
- package/apps/com/eden/files/node_modules/.vite/deps/solid-js_html.js +606 -0
- package/apps/com/eden/files/node_modules/.vite/deps/solid-js_html.js.map +7 -0
- package/apps/com/eden/files/node_modules/.vite/deps/solid-js_store.js +455 -0
- package/apps/com/eden/files/node_modules/.vite/deps/solid-js_store.js.map +7 -0
- package/apps/com/eden/files/node_modules/.vite/deps/solid-js_web.js +147 -0
- package/apps/com/eden/files/node_modules/.vite/deps/solid-js_web.js.map +7 -0
- package/apps/com/eden/files/package-lock.json +1754 -0
- package/apps/com/eden/files/package.json +20 -0
- package/apps/com/eden/files/src/App.tsx +387 -0
- package/apps/com/eden/files/src/components/FileExplorerHeader.tsx +90 -0
- package/apps/com/eden/files/src/components/FileItem.tsx +70 -0
- package/apps/com/eden/files/src/components/FileList.tsx +77 -0
- package/apps/com/eden/files/src/components/Modal.tsx +48 -0
- package/apps/com/eden/files/src/components/Omnibox.tsx +241 -0
- package/apps/com/eden/files/src/dialogs/CreateFileDialog.tsx +71 -0
- package/apps/com/eden/files/src/dialogs/CreateFolderDialog.tsx +68 -0
- package/apps/com/eden/files/src/dialogs/DeleteConfirmDialog.tsx +35 -0
- package/apps/com/eden/files/src/dialogs/DisplayOptionsModal.tsx +122 -0
- package/apps/com/eden/files/src/dialogs/ErrorDialog.tsx +28 -0
- package/apps/com/eden/files/src/index.tsx +9 -0
- package/apps/com/eden/files/src/styles.css +595 -0
- package/apps/com/eden/files/src/types.ts +20 -0
- package/apps/com/eden/files/src/utils.ts +44 -0
- package/apps/com/eden/files/tsconfig.json +27 -0
- package/apps/com/eden/files/vite.config.mts +23 -0
- package/apps/com/eden/settings/dist/assets/index-CTkJneTg.js +1 -0
- package/apps/com/eden/settings/dist/assets/index-GIMJANTM.css +1 -0
- package/apps/com/eden/settings/dist/index.html +13 -0
- package/apps/com/eden/settings/icon.svg +15 -0
- package/apps/com/eden/settings/index.html +12 -0
- package/apps/com/eden/settings/manifest.json +28 -0
- package/apps/com/eden/settings/node_modules/.bin/tsc +21 -0
- package/apps/com/eden/settings/node_modules/.bin/tsserver +21 -0
- package/apps/com/eden/settings/node_modules/.bin/vite +21 -0
- package/apps/com/eden/settings/package.json +21 -0
- package/apps/com/eden/settings/src/App.css +168 -0
- package/apps/com/eden/settings/src/App.tsx +301 -0
- package/apps/com/eden/settings/src/components/SettingInput.tsx +131 -0
- package/apps/com/eden/settings/src/index.tsx +9 -0
- package/apps/com/eden/settings/tsconfig.json +21 -0
- package/apps/com/eden/settings/vite.config.mts +22 -0
- package/apps/com/eden/toaster/README.md +89 -0
- package/apps/com/eden/toaster/dist/assets/index-8JMcmBCJ.css +1 -0
- package/apps/com/eden/toaster/dist/assets/index-C4cVyh7j.js +16 -0
- package/apps/com/eden/toaster/dist/index.html +16 -0
- package/apps/com/eden/toaster/index.html +16 -0
- package/apps/com/eden/toaster/manifest.json +28 -0
- package/apps/com/eden/toaster/node_modules/.bin/vite +21 -0
- package/apps/com/eden/toaster/package.json +15 -0
- package/apps/com/eden/toaster/src/styles.css +159 -0
- package/apps/com/eden/toaster/src/toaster.ts +470 -0
- package/apps/com/eden/toaster/tsconfig.json +28 -0
- package/apps/com/eden/toaster/vite.config.mts +18 -0
- package/apps/com/eden/webbrowser/.dev-manifest.json +5 -0
- package/apps/com/eden/webbrowser/icon.svg +20 -0
- package/apps/com/eden/webbrowser/index.html +141 -0
- package/apps/com/eden/webbrowser/manifest.json +23 -0
- package/apps/com/eden/webbrowser/node_modules/.bin/vite +21 -0
- package/apps/com/eden/webbrowser/node_modules/.vite/deps/_metadata.json +8 -0
- package/apps/com/eden/webbrowser/node_modules/.vite/deps/package.json +3 -0
- package/apps/com/eden/webbrowser/package.json +13 -0
- package/apps/com/eden/webbrowser/vite.config.mts +11 -0
- package/dist/Eden.d.ts +40 -0
- package/dist/Eden.d.ts.map +1 -0
- package/dist/Eden.js +186 -0
- package/dist/Eden.js.map +1 -0
- package/dist/SystemHandler.d.ts +11 -0
- package/dist/SystemHandler.d.ts.map +1 -0
- package/dist/SystemHandler.js +53 -0
- package/dist/SystemHandler.js.map +1 -0
- package/dist/app-frame/frame-injector.js +19 -0
- package/dist/app-frame/frame-injector.js.map +7 -0
- package/dist/app-frame/frame.css +186 -0
- package/dist/app-runtime/app-preload.js +2 -0
- package/dist/app-runtime/app-preload.js.map +7 -0
- package/dist/app-runtime/backend-preload.js +2 -0
- package/dist/app-runtime/backend-preload.js.map +7 -0
- package/dist/appbus/AppChannelHandler.d.ts +65 -0
- package/dist/appbus/AppChannelHandler.d.ts.map +1 -0
- package/dist/appbus/AppChannelHandler.js +120 -0
- package/dist/appbus/AppChannelHandler.js.map +1 -0
- package/dist/appbus/AppChannelManager.d.ts +80 -0
- package/dist/appbus/AppChannelManager.d.ts.map +1 -0
- package/dist/appbus/AppChannelManager.js +312 -0
- package/dist/appbus/AppChannelManager.js.map +1 -0
- package/dist/appbus/index.d.ts +2 -0
- package/dist/appbus/index.d.ts.map +1 -0
- package/dist/appbus/index.js +18 -0
- package/dist/appbus/index.js.map +1 -0
- package/dist/db/DbHandler.d.ts +119 -0
- package/dist/db/DbHandler.d.ts.map +1 -0
- package/dist/db/DbHandler.js +204 -0
- package/dist/db/DbHandler.js.map +1 -0
- package/dist/db/DbManager.d.ts +49 -0
- package/dist/db/DbManager.d.ts.map +1 -0
- package/dist/db/DbManager.js +172 -0
- package/dist/db/DbManager.js.map +1 -0
- package/dist/db/index.d.ts +3 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +8 -0
- package/dist/db/index.js.map +1 -0
- package/dist/edencss/eden-tokens.css +1 -0
- package/dist/edencss/eden.css +1 -0
- package/dist/file-open/FileOpenHandler.d.ts +59 -0
- package/dist/file-open/FileOpenHandler.d.ts.map +1 -0
- package/dist/file-open/FileOpenHandler.js +122 -0
- package/dist/file-open/FileOpenHandler.js.map +1 -0
- package/dist/file-open/FileOpenManager.d.ts +91 -0
- package/dist/file-open/FileOpenManager.d.ts.map +1 -0
- package/dist/file-open/FileOpenManager.js +411 -0
- package/dist/file-open/FileOpenManager.js.map +1 -0
- package/dist/file-open/index.d.ts +3 -0
- package/dist/file-open/index.d.ts.map +1 -0
- package/dist/file-open/index.js +8 -0
- package/dist/file-open/index.js.map +1 -0
- package/dist/filesystem/FilesystemHandler.d.ts +65 -0
- package/dist/filesystem/FilesystemHandler.d.ts.map +1 -0
- package/dist/filesystem/FilesystemHandler.js +134 -0
- package/dist/filesystem/FilesystemHandler.js.map +1 -0
- package/dist/filesystem/FilesystemManager.d.ts +70 -0
- package/dist/filesystem/FilesystemManager.d.ts.map +1 -0
- package/dist/filesystem/FilesystemManager.js +236 -0
- package/dist/filesystem/FilesystemManager.js.map +1 -0
- package/dist/filesystem/index.d.ts +3 -0
- package/dist/filesystem/index.d.ts.map +1 -0
- package/dist/filesystem/index.js +8 -0
- package/dist/filesystem/index.js.map +1 -0
- package/dist/foundation/foundation-preload.js +15 -0
- package/dist/foundation/foundation.css +40 -0
- package/dist/foundation/foundation.html +22 -0
- package/dist/foundation/foundation.js +69 -0
- package/dist/hotreload-config.d.ts +8 -0
- package/dist/hotreload-config.d.ts.map +1 -0
- package/dist/hotreload-config.js +73 -0
- package/dist/hotreload-config.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/ipc/CommandDecorators.d.ts +72 -0
- package/dist/ipc/CommandDecorators.d.ts.map +1 -0
- package/dist/ipc/CommandDecorators.js +49 -0
- package/dist/ipc/CommandDecorators.js.map +1 -0
- package/dist/ipc/CommandRegistry.d.ts +77 -0
- package/dist/ipc/CommandRegistry.d.ts.map +1 -0
- package/dist/ipc/CommandRegistry.js +175 -0
- package/dist/ipc/CommandRegistry.js.map +1 -0
- package/dist/ipc/EdenEmitter.d.ts +54 -0
- package/dist/ipc/EdenEmitter.d.ts.map +1 -0
- package/dist/ipc/EdenEmitter.js +81 -0
- package/dist/ipc/EdenEmitter.js.map +1 -0
- package/dist/ipc/EventHandler.d.ts +21 -0
- package/dist/ipc/EventHandler.d.ts.map +1 -0
- package/dist/ipc/EventHandler.js +87 -0
- package/dist/ipc/EventHandler.js.map +1 -0
- package/dist/ipc/EventSubscriberManager.d.ts +67 -0
- package/dist/ipc/EventSubscriberManager.d.ts.map +1 -0
- package/dist/ipc/EventSubscriberManager.js +204 -0
- package/dist/ipc/EventSubscriberManager.js.map +1 -0
- package/dist/ipc/IPCBridge.d.ts +60 -0
- package/dist/ipc/IPCBridge.d.ts.map +1 -0
- package/dist/ipc/IPCBridge.js +186 -0
- package/dist/ipc/IPCBridge.js.map +1 -0
- package/dist/ipc/PermissionRegistry.d.ts +52 -0
- package/dist/ipc/PermissionRegistry.d.ts.map +1 -0
- package/dist/ipc/PermissionRegistry.js +120 -0
- package/dist/ipc/PermissionRegistry.js.map +1 -0
- package/dist/ipc/index.d.ts +7 -0
- package/dist/ipc/index.d.ts.map +1 -0
- package/dist/ipc/index.js +23 -0
- package/dist/ipc/index.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +15 -0
- package/dist/main.js.map +1 -0
- package/dist/notification/NotificationHandler.d.ts +16 -0
- package/dist/notification/NotificationHandler.d.ts.map +1 -0
- package/dist/notification/NotificationHandler.js +39 -0
- package/dist/notification/NotificationHandler.js.map +1 -0
- package/dist/notification/NotificationManager.d.ts +32 -0
- package/dist/notification/NotificationManager.d.ts.map +1 -0
- package/dist/notification/NotificationManager.js +66 -0
- package/dist/notification/NotificationManager.js.map +1 -0
- package/dist/notification/index.d.ts +3 -0
- package/dist/notification/index.d.ts.map +1 -0
- package/dist/notification/index.js +19 -0
- package/dist/notification/index.js.map +1 -0
- package/dist/package-manager/PackageHandler.d.ts +50 -0
- package/dist/package-manager/PackageHandler.d.ts.map +1 -0
- package/dist/package-manager/PackageHandler.js +107 -0
- package/dist/package-manager/PackageHandler.js.map +1 -0
- package/dist/package-manager/PackageManager.d.ts +73 -0
- package/dist/package-manager/PackageManager.d.ts.map +1 -0
- package/dist/package-manager/PackageManager.js +373 -0
- package/dist/package-manager/PackageManager.js.map +1 -0
- package/dist/package-manager/index.d.ts +3 -0
- package/dist/package-manager/index.d.ts.map +1 -0
- package/dist/package-manager/index.js +8 -0
- package/dist/package-manager/index.js.map +1 -0
- package/dist/process-manager/AutostartManager.d.ts +15 -0
- package/dist/process-manager/AutostartManager.d.ts.map +1 -0
- package/dist/process-manager/AutostartManager.js +56 -0
- package/dist/process-manager/AutostartManager.js.map +1 -0
- package/dist/process-manager/BackendManager.d.ts +63 -0
- package/dist/process-manager/BackendManager.d.ts.map +1 -0
- package/dist/process-manager/BackendManager.js +272 -0
- package/dist/process-manager/BackendManager.js.map +1 -0
- package/dist/process-manager/ProcessHandler.d.ts +29 -0
- package/dist/process-manager/ProcessHandler.d.ts.map +1 -0
- package/dist/process-manager/ProcessHandler.js +66 -0
- package/dist/process-manager/ProcessHandler.js.map +1 -0
- package/dist/process-manager/ProcessManager.d.ts +94 -0
- package/dist/process-manager/ProcessManager.d.ts.map +1 -0
- package/dist/process-manager/ProcessManager.js +286 -0
- package/dist/process-manager/ProcessManager.js.map +1 -0
- package/dist/process-manager/index.d.ts +5 -0
- package/dist/process-manager/index.d.ts.map +1 -0
- package/dist/process-manager/index.js +12 -0
- package/dist/process-manager/index.js.map +1 -0
- package/dist/settings/EdenSettings.d.ts +8 -0
- package/dist/settings/EdenSettings.d.ts.map +1 -0
- package/dist/settings/EdenSettings.js +148 -0
- package/dist/settings/EdenSettings.js.map +1 -0
- package/dist/settings/SettingsHandler.d.ts +117 -0
- package/dist/settings/SettingsHandler.d.ts.map +1 -0
- package/dist/settings/SettingsHandler.js +199 -0
- package/dist/settings/SettingsHandler.js.map +1 -0
- package/dist/settings/SettingsManager.d.ts +64 -0
- package/dist/settings/SettingsManager.d.ts.map +1 -0
- package/dist/settings/SettingsManager.js +221 -0
- package/dist/settings/SettingsManager.js.map +1 -0
- package/dist/settings/index.d.ts +4 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +11 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/utils/cachedFileReader.d.ts +46 -0
- package/dist/utils/cachedFileReader.d.ts.map +1 -0
- package/dist/utils/cachedFileReader.js +100 -0
- package/dist/utils/cachedFileReader.js.map +1 -0
- package/dist/view-manager/DevToolsManager.d.ts +29 -0
- package/dist/view-manager/DevToolsManager.d.ts.map +1 -0
- package/dist/view-manager/DevToolsManager.js +88 -0
- package/dist/view-manager/DevToolsManager.js.map +1 -0
- package/dist/view-manager/FloatingWindowController.d.ts +44 -0
- package/dist/view-manager/FloatingWindowController.d.ts.map +1 -0
- package/dist/view-manager/FloatingWindowController.js +124 -0
- package/dist/view-manager/FloatingWindowController.js.map +1 -0
- package/dist/view-manager/LayoutCalculator.d.ts +49 -0
- package/dist/view-manager/LayoutCalculator.d.ts.map +1 -0
- package/dist/view-manager/LayoutCalculator.js +94 -0
- package/dist/view-manager/LayoutCalculator.js.map +1 -0
- package/dist/view-manager/MouseTracker.d.ts +65 -0
- package/dist/view-manager/MouseTracker.d.ts.map +1 -0
- package/dist/view-manager/MouseTracker.js +114 -0
- package/dist/view-manager/MouseTracker.js.map +1 -0
- package/dist/view-manager/TilingManager.d.ts +61 -0
- package/dist/view-manager/TilingManager.d.ts.map +1 -0
- package/dist/view-manager/TilingManager.js +142 -0
- package/dist/view-manager/TilingManager.js.map +1 -0
- package/dist/view-manager/ViewCreator.d.ts +72 -0
- package/dist/view-manager/ViewCreator.d.ts.map +1 -0
- package/dist/view-manager/ViewCreator.js +277 -0
- package/dist/view-manager/ViewCreator.js.map +1 -0
- package/dist/view-manager/ViewHandler.d.ts +112 -0
- package/dist/view-manager/ViewHandler.d.ts.map +1 -0
- package/dist/view-manager/ViewHandler.js +307 -0
- package/dist/view-manager/ViewHandler.js.map +1 -0
- package/dist/view-manager/ViewLifecycle.d.ts +66 -0
- package/dist/view-manager/ViewLifecycle.d.ts.map +1 -0
- package/dist/view-manager/ViewLifecycle.js +142 -0
- package/dist/view-manager/ViewLifecycle.js.map +1 -0
- package/dist/view-manager/ViewManager.d.ts +112 -0
- package/dist/view-manager/ViewManager.d.ts.map +1 -0
- package/dist/view-manager/ViewManager.js +422 -0
- package/dist/view-manager/ViewManager.js.map +1 -0
- package/dist/view-manager/index.d.ts +11 -0
- package/dist/view-manager/index.d.ts.map +1 -0
- package/dist/view-manager/index.js +23 -0
- package/dist/view-manager/index.js.map +1 -0
- package/dist/view-manager/types.d.ts +24 -0
- package/dist/view-manager/types.d.ts.map +1 -0
- package/dist/view-manager/types.js +11 -0
- package/dist/view-manager/types.js.map +1 -0
- package/edencss/README.md +214 -0
- package/edencss/components/badges.css +180 -0
- package/edencss/components/buttons.css +221 -0
- package/edencss/components/cards.css +201 -0
- package/edencss/components/inputs.css +424 -0
- package/edencss/components/lists.css +242 -0
- package/edencss/components/modals.css +207 -0
- package/edencss/components/progress.css +186 -0
- package/edencss/components/sidebar.css +232 -0
- package/edencss/components/tabs.css +189 -0
- package/edencss/eden.css +16 -0
- package/edencss/index.ts +11 -0
- package/edencss/style-dictionary.config.mjs +75 -0
- package/edencss/tokens-pink.json +163 -0
- package/edencss/tokens.css +121 -0
- package/edencss/tokens.d.ts +111 -0
- package/edencss/tokens.json +369 -0
- package/edencss/tokens.ts +125 -0
- package/edencss/utilities.css +423 -0
- package/foundation/foundation-preload.js +15 -0
- package/foundation/foundation.css +40 -0
- package/foundation/foundation.html +22 -0
- package/foundation/foundation.js +69 -0
- package/package.json +55 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { For, Show, createSignal, onMount } from "solid-js";
|
|
2
|
+
import AppIcon from "./AppIcon";
|
|
3
|
+
import Clock from "./Clock";
|
|
4
|
+
import { AppInfo } from "../types";
|
|
5
|
+
import { ContextMenuData } from "./AppContextMenu";
|
|
6
|
+
import appsViewIcon from "../../assets/apps-grid-icon.svg";
|
|
7
|
+
|
|
8
|
+
interface DockProps {
|
|
9
|
+
runningApps: AppInfo[]; // Running apps that are NOT pinned
|
|
10
|
+
pinnedApps: AppInfo[]; // Pinned apps (may or may not be running)
|
|
11
|
+
onAppClick: (appId: string) => void;
|
|
12
|
+
onShowAllApps: () => void;
|
|
13
|
+
onContextMenu: (menu: ContextMenuData) => void;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default function Dock(props: DockProps) {
|
|
17
|
+
let containerRef: HTMLDivElement | undefined;
|
|
18
|
+
let dockRef: HTMLDivElement | undefined;
|
|
19
|
+
const [isInitial, setIsInitial] = createSignal(true);
|
|
20
|
+
|
|
21
|
+
onMount(() => {
|
|
22
|
+
// Remove the initial class after animation completes
|
|
23
|
+
setTimeout(() => {
|
|
24
|
+
setIsInitial(false);
|
|
25
|
+
}, 300); // Match animation duration
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
function handleMouseMove(e: MouseEvent) {
|
|
29
|
+
if (!containerRef) return;
|
|
30
|
+
const bounds = containerRef.getBoundingClientRect();
|
|
31
|
+
const mouseX = e.clientX;
|
|
32
|
+
|
|
33
|
+
const sigma = 70; // cursor influence radius (px)
|
|
34
|
+
const maxScale = 1.25; // maximum magnification
|
|
35
|
+
|
|
36
|
+
containerRef.classList.add("magnify-active");
|
|
37
|
+
|
|
38
|
+
const icons = containerRef.querySelectorAll<HTMLDivElement>(".app-icon");
|
|
39
|
+
icons.forEach((icon) => {
|
|
40
|
+
const iconBox = icon.querySelector<HTMLDivElement>(".icon-container");
|
|
41
|
+
if (!iconBox) return;
|
|
42
|
+
const rect = icon.getBoundingClientRect();
|
|
43
|
+
const centerX = rect.left + rect.width / 2;
|
|
44
|
+
const d = Math.abs(mouseX - centerX);
|
|
45
|
+
const influence = Math.exp(-(d * d) / (2 * sigma * sigma)); // gaussian falloff
|
|
46
|
+
const scale = 1 + (maxScale - 1) * influence;
|
|
47
|
+
// pass influence to CSS var; lift entire tile and scale just the icon
|
|
48
|
+
icon.style.setProperty("--influence", influence.toFixed(3));
|
|
49
|
+
const lift = -8 * influence;
|
|
50
|
+
icon.style.transform = `translateY(${lift.toFixed(1)}px)`;
|
|
51
|
+
icon.style.zIndex = `${Math.round(scale * 100)}`; // larger sits above
|
|
52
|
+
iconBox.style.transform = `scale(${scale.toFixed(3)})`;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function handleMouseLeave() {
|
|
57
|
+
if (!containerRef) return;
|
|
58
|
+
containerRef.classList.remove("magnify-active");
|
|
59
|
+
const appIcons = containerRef.querySelectorAll<HTMLDivElement>(".app-icon");
|
|
60
|
+
appIcons.forEach((icon) => {
|
|
61
|
+
const iconBox = icon.querySelector<HTMLDivElement>(".icon-container");
|
|
62
|
+
if (iconBox) {
|
|
63
|
+
iconBox.style.transform = "";
|
|
64
|
+
}
|
|
65
|
+
icon.style.transform = "";
|
|
66
|
+
icon.style.zIndex = "";
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return (
|
|
71
|
+
<div class="dock" classList={{ "dock-initial": isInitial() }} ref={dockRef}>
|
|
72
|
+
<div class="dock-left">
|
|
73
|
+
<div
|
|
74
|
+
class="app-icons magnify"
|
|
75
|
+
ref={containerRef}
|
|
76
|
+
onMouseMove={handleMouseMove}
|
|
77
|
+
onMouseLeave={handleMouseLeave}
|
|
78
|
+
>
|
|
79
|
+
{/* Running apps (not pinned) */}
|
|
80
|
+
<For each={props.runningApps}>
|
|
81
|
+
{(app) => (
|
|
82
|
+
<AppIcon
|
|
83
|
+
appId={app.id}
|
|
84
|
+
appName={app.name}
|
|
85
|
+
isRunning={app.isRunning}
|
|
86
|
+
onClick={() => props.onAppClick(app.id)}
|
|
87
|
+
onContextMenu={(e) => {
|
|
88
|
+
e.preventDefault();
|
|
89
|
+
props.onContextMenu({
|
|
90
|
+
appId: app.id,
|
|
91
|
+
appName: app.name,
|
|
92
|
+
isRunning: app.isRunning,
|
|
93
|
+
left: e.clientX,
|
|
94
|
+
bottom: 72,
|
|
95
|
+
});
|
|
96
|
+
}}
|
|
97
|
+
/>
|
|
98
|
+
)}
|
|
99
|
+
</For>
|
|
100
|
+
|
|
101
|
+
{/* Separator between running and pinned */}
|
|
102
|
+
<Show when={props.runningApps.length > 0 && props.pinnedApps.length > 0}>
|
|
103
|
+
<div class="separator"></div>
|
|
104
|
+
</Show>
|
|
105
|
+
|
|
106
|
+
{/* Pinned apps */}
|
|
107
|
+
<For each={props.pinnedApps}>
|
|
108
|
+
{(app) => (
|
|
109
|
+
<AppIcon
|
|
110
|
+
appId={app.id}
|
|
111
|
+
appName={app.name}
|
|
112
|
+
isRunning={app.isRunning}
|
|
113
|
+
onClick={() => props.onAppClick(app.id)}
|
|
114
|
+
onContextMenu={(e) => {
|
|
115
|
+
e.preventDefault();
|
|
116
|
+
console.log(e.clientX, e.clientY);
|
|
117
|
+
props.onContextMenu({
|
|
118
|
+
appId: app.id,
|
|
119
|
+
appName: app.name,
|
|
120
|
+
isRunning: app.isRunning,
|
|
121
|
+
left: e.clientX,
|
|
122
|
+
bottom: 72,
|
|
123
|
+
});
|
|
124
|
+
}}
|
|
125
|
+
/>
|
|
126
|
+
)}
|
|
127
|
+
</For>
|
|
128
|
+
|
|
129
|
+
{/* Separator before All Apps button */}
|
|
130
|
+
<Show when={props.runningApps.length > 0 || props.pinnedApps.length > 0}>
|
|
131
|
+
<div class="separator"></div>
|
|
132
|
+
</Show>
|
|
133
|
+
|
|
134
|
+
<AppIcon
|
|
135
|
+
appId="apps-view"
|
|
136
|
+
appName="All Apps"
|
|
137
|
+
icon={appsViewIcon}
|
|
138
|
+
onClick={props.onShowAllApps}
|
|
139
|
+
/>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
<div class="dock-right">
|
|
143
|
+
<Clock />
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
);
|
|
147
|
+
}
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
import { createSignal, onMount, onCleanup, Show } from "solid-js";
|
|
2
|
+
import Dock from "./Dock";
|
|
3
|
+
import AllApps from "./AllApps";
|
|
4
|
+
import AppContextMenu, { ContextMenuData } from "./AppContextMenu";
|
|
5
|
+
import {
|
|
6
|
+
ViewBounds,
|
|
7
|
+
WindowSize,
|
|
8
|
+
AppManifest,
|
|
9
|
+
AppInstance,
|
|
10
|
+
} from "@edenapp/types";
|
|
11
|
+
import { AppInfo } from "../types";
|
|
12
|
+
|
|
13
|
+
// Constants
|
|
14
|
+
const DOCK_HEIGHT = 72; // Should match --eden-layout-dock-height in pixels
|
|
15
|
+
|
|
16
|
+
// Database key for persisting pinned dock apps
|
|
17
|
+
const PINNED_DOCK_APPS_KEY = "pinned-dock-apps";
|
|
18
|
+
|
|
19
|
+
export default function ShellOverlay() {
|
|
20
|
+
const [runningApps, setRunningApps] = createSignal<AppInstance[]>([]);
|
|
21
|
+
const [installedApps, setInstalledApps] = createSignal<AppManifest[]>([]);
|
|
22
|
+
const [pinnedDockApps, setPinnedDockApps] = createSignal<string[]>([]);
|
|
23
|
+
const [showAllApps, setShowAllApps] = createSignal(false);
|
|
24
|
+
const [dockContextMenu, setDockContextMenu] = createSignal<ContextMenuData | null>(null);
|
|
25
|
+
|
|
26
|
+
// Load pinned apps from database
|
|
27
|
+
const loadPinnedApps = async () => {
|
|
28
|
+
try {
|
|
29
|
+
const result = await window.edenAPI.shellCommand("db/get", {
|
|
30
|
+
key: PINNED_DOCK_APPS_KEY,
|
|
31
|
+
});
|
|
32
|
+
if (result.value) {
|
|
33
|
+
const parsed = JSON.parse(result.value);
|
|
34
|
+
if (Array.isArray(parsed)) {
|
|
35
|
+
setPinnedDockApps(parsed);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
} catch (error) {
|
|
39
|
+
console.error("Failed to load pinned dock apps:", error);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
// Save pinned apps to database
|
|
44
|
+
const savePinnedApps = async (appIds: string[]) => {
|
|
45
|
+
try {
|
|
46
|
+
await window.edenAPI.shellCommand("db/set", {
|
|
47
|
+
key: PINNED_DOCK_APPS_KEY,
|
|
48
|
+
value: JSON.stringify(appIds),
|
|
49
|
+
});
|
|
50
|
+
} catch (error) {
|
|
51
|
+
console.error("Failed to save pinned dock apps:", error);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
// Add an app to the dock (pin it)
|
|
56
|
+
const handleAddToDock = async (appId: string) => {
|
|
57
|
+
const current = pinnedDockApps();
|
|
58
|
+
if (!current.includes(appId)) {
|
|
59
|
+
const updated = [...current, appId];
|
|
60
|
+
setPinnedDockApps(updated);
|
|
61
|
+
await savePinnedApps(updated);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
// Remove an app from the dock (unpin it)
|
|
66
|
+
const handleRemoveFromDock = async (appId: string) => {
|
|
67
|
+
const current = pinnedDockApps();
|
|
68
|
+
const updated = current.filter((id) => id !== appId);
|
|
69
|
+
setPinnedDockApps(updated);
|
|
70
|
+
await savePinnedApps(updated);
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// Check if an app is pinned to the dock
|
|
74
|
+
const isAppPinned = (appId: string): boolean => {
|
|
75
|
+
return pinnedDockApps().includes(appId);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// Running apps that are NOT pinned (for the left section of dock)
|
|
79
|
+
const dockRunningApps = (): AppInfo[] => {
|
|
80
|
+
return runningApps()
|
|
81
|
+
.filter((instance) => !pinnedDockApps().includes(instance.manifest.id))
|
|
82
|
+
.map((instance) => ({
|
|
83
|
+
id: instance.manifest.id,
|
|
84
|
+
name: instance.manifest.name,
|
|
85
|
+
isRunning: true,
|
|
86
|
+
}));
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
// Pinned apps with their running status (for the right section of dock)
|
|
90
|
+
const dockPinnedApps = (): AppInfo[] => {
|
|
91
|
+
const runningIds = new Set(runningApps().map((i) => i.manifest.id));
|
|
92
|
+
const installed = installedApps();
|
|
93
|
+
|
|
94
|
+
return pinnedDockApps()
|
|
95
|
+
.map((appId) => {
|
|
96
|
+
const manifest = installed.find((m) => m.id === appId);
|
|
97
|
+
if (!manifest) return null;
|
|
98
|
+
return {
|
|
99
|
+
id: appId,
|
|
100
|
+
name: manifest.name,
|
|
101
|
+
isRunning: runningIds.has(appId),
|
|
102
|
+
};
|
|
103
|
+
})
|
|
104
|
+
.filter((app): app is AppInfo => app !== null);
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
// All installed apps for the apps view
|
|
108
|
+
const allApps = (): AppInfo[] => {
|
|
109
|
+
const runningIds = new Set(runningApps().map((i) => i.manifest.id));
|
|
110
|
+
return installedApps().map((app) => ({
|
|
111
|
+
id: app.id,
|
|
112
|
+
name: app.name,
|
|
113
|
+
isRunning: runningIds.has(app.id),
|
|
114
|
+
}));
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const loadSystemInfo = async () => {
|
|
118
|
+
try {
|
|
119
|
+
// Fetch installed apps from package manager
|
|
120
|
+
const installed = await window.edenAPI.shellCommand("package/list", {});
|
|
121
|
+
if (Array.isArray(installed)) {
|
|
122
|
+
setInstalledApps(installed);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Fetch running apps from process manager
|
|
126
|
+
const running = await window.edenAPI.shellCommand("process/list", {});
|
|
127
|
+
if (Array.isArray(running)) {
|
|
128
|
+
setRunningApps(running);
|
|
129
|
+
}
|
|
130
|
+
} catch (error) {
|
|
131
|
+
console.error("Failed to load system info:", error);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// Helper function to calculate bounds based on mode and window size
|
|
136
|
+
const calculateBounds = (
|
|
137
|
+
mode: "dock" | "fullscreen",
|
|
138
|
+
windowSize: WindowSize
|
|
139
|
+
) => {
|
|
140
|
+
return mode === "fullscreen"
|
|
141
|
+
? { x: 0, y: 0, width: windowSize.width, height: windowSize.height }
|
|
142
|
+
: {
|
|
143
|
+
x: 0,
|
|
144
|
+
y: windowSize.height - DOCK_HEIGHT,
|
|
145
|
+
width: windowSize.width,
|
|
146
|
+
height: DOCK_HEIGHT,
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
// Helper function to update overlay bounds via API
|
|
151
|
+
const updateOverlayBounds = async (bounds: ViewBounds) => {
|
|
152
|
+
try {
|
|
153
|
+
await window.edenAPI.shellCommand("view/update-view-bounds", {
|
|
154
|
+
appId: "com.eden.eveshell",
|
|
155
|
+
bounds,
|
|
156
|
+
});
|
|
157
|
+
} catch (error) {
|
|
158
|
+
console.error("Failed to update overlay bounds:", error);
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
const requestResize = async (mode: "dock" | "fullscreen") => {
|
|
163
|
+
try {
|
|
164
|
+
// Get current window bounds
|
|
165
|
+
const windowSize = await window.edenAPI.shellCommand(
|
|
166
|
+
"view/window-size",
|
|
167
|
+
{}
|
|
168
|
+
);
|
|
169
|
+
const bounds = calculateBounds(mode, windowSize);
|
|
170
|
+
await updateOverlayBounds(bounds);
|
|
171
|
+
} catch (error) {
|
|
172
|
+
console.error("Failed to resize overlay:", error);
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
const handleAppClick = async (appId: string) => {
|
|
177
|
+
const isRunning = runningApps().some((app) => app.manifest.id === appId);
|
|
178
|
+
|
|
179
|
+
if (isRunning) {
|
|
180
|
+
// App is running, focus/show it
|
|
181
|
+
try {
|
|
182
|
+
await window.edenAPI.shellCommand("view/focus-app", { appId });
|
|
183
|
+
} catch (error) {
|
|
184
|
+
console.error("Failed to focus app:", error);
|
|
185
|
+
}
|
|
186
|
+
} else {
|
|
187
|
+
// App is not running, launch it
|
|
188
|
+
try {
|
|
189
|
+
await window.edenAPI.shellCommand("process/launch", { appId });
|
|
190
|
+
// Add a small delay before refreshing to let the app start
|
|
191
|
+
setTimeout(() => {
|
|
192
|
+
loadSystemInfo();
|
|
193
|
+
}, 500);
|
|
194
|
+
} catch (error) {
|
|
195
|
+
console.error("Failed to launch app:", error);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
const handleShowAllApps = async () => {
|
|
201
|
+
const next = !showAllApps();
|
|
202
|
+
setShowAllApps(next);
|
|
203
|
+
|
|
204
|
+
// Resize overlay
|
|
205
|
+
await requestResize(next ? "fullscreen" : "dock");
|
|
206
|
+
|
|
207
|
+
// Refresh installed apps when opening the apps view
|
|
208
|
+
if (next) {
|
|
209
|
+
loadSystemInfo();
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
const handleStopApp = async (appId: string) => {
|
|
214
|
+
try {
|
|
215
|
+
await window.edenAPI.shellCommand("process/stop", { appId });
|
|
216
|
+
// Refresh app list
|
|
217
|
+
setTimeout(() => {
|
|
218
|
+
loadSystemInfo();
|
|
219
|
+
}, 300);
|
|
220
|
+
} catch (error) {
|
|
221
|
+
console.error("Failed to stop app:", error);
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
const handleUninstallApp = async (appId: string) => {
|
|
226
|
+
try {
|
|
227
|
+
// Confirm before uninstalling
|
|
228
|
+
if (confirm(`Are you sure you want to uninstall this app?`)) {
|
|
229
|
+
await window.edenAPI.shellCommand("package/uninstall", { appId });
|
|
230
|
+
// Refresh app list
|
|
231
|
+
await loadSystemInfo();
|
|
232
|
+
}
|
|
233
|
+
} catch (error) {
|
|
234
|
+
console.error("Failed to uninstall app:", error);
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
// Handle context menu from dock - resize to fullscreen so menu fits
|
|
239
|
+
const handleDockContextMenu = async (menu: ContextMenuData) => {
|
|
240
|
+
await requestResize("fullscreen");
|
|
241
|
+
setDockContextMenu(menu);
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
// Close dock context menu and resize back to dock
|
|
245
|
+
const handleCloseDockContextMenu = async () => {
|
|
246
|
+
setDockContextMenu(null);
|
|
247
|
+
if (!showAllApps()) {
|
|
248
|
+
await requestResize("dock");
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
onMount(() => {
|
|
253
|
+
// Event handlers
|
|
254
|
+
const handleAppLifecycle = () => loadSystemInfo();
|
|
255
|
+
|
|
256
|
+
const handleBoundsChange = (data: {
|
|
257
|
+
workspaceBounds: ViewBounds;
|
|
258
|
+
windowSize: WindowSize;
|
|
259
|
+
}) => {
|
|
260
|
+
const { windowSize } = data;
|
|
261
|
+
const mode = showAllApps() ? "fullscreen" : "dock";
|
|
262
|
+
const bounds = calculateBounds(mode, windowSize);
|
|
263
|
+
updateOverlayBounds(bounds);
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
// Register cleanup synchronously (must happen before any async work)
|
|
267
|
+
onCleanup(() => {
|
|
268
|
+
window.edenAPI.unsubscribe("process/launched", handleAppLifecycle);
|
|
269
|
+
window.edenAPI.unsubscribe("process/stopped", handleAppLifecycle);
|
|
270
|
+
window.edenAPI.unsubscribe(
|
|
271
|
+
"view/global-bounds-changed",
|
|
272
|
+
handleBoundsChange
|
|
273
|
+
);
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
// Async initialization
|
|
277
|
+
(async () => {
|
|
278
|
+
// Load initial system info and pinned apps
|
|
279
|
+
loadSystemInfo();
|
|
280
|
+
loadPinnedApps();
|
|
281
|
+
|
|
282
|
+
// Set initial overlay size
|
|
283
|
+
await requestResize("dock");
|
|
284
|
+
|
|
285
|
+
try {
|
|
286
|
+
// Subscribe to events
|
|
287
|
+
await window.edenAPI.subscribe("process/launched", handleAppLifecycle);
|
|
288
|
+
await window.edenAPI.subscribe("process/stopped", handleAppLifecycle);
|
|
289
|
+
await window.edenAPI.subscribe(
|
|
290
|
+
"view/global-bounds-changed",
|
|
291
|
+
handleBoundsChange
|
|
292
|
+
);
|
|
293
|
+
} catch (error) {
|
|
294
|
+
console.error("Failed to subscribe to events:", error);
|
|
295
|
+
}
|
|
296
|
+
})();
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
return (
|
|
300
|
+
<div
|
|
301
|
+
class="shell-overlay"
|
|
302
|
+
data-mode={showAllApps() || dockContextMenu() ? "fullscreen" : "dock"}
|
|
303
|
+
>
|
|
304
|
+
{/* AllApps appears above the dock when active */}
|
|
305
|
+
<Show when={showAllApps()}>
|
|
306
|
+
<AllApps
|
|
307
|
+
apps={allApps()}
|
|
308
|
+
onClose={handleShowAllApps}
|
|
309
|
+
onAppClick={handleAppClick}
|
|
310
|
+
onStopApp={handleStopApp}
|
|
311
|
+
onUninstallApp={handleUninstallApp}
|
|
312
|
+
isAppPinned={isAppPinned}
|
|
313
|
+
onAddToDock={handleAddToDock}
|
|
314
|
+
onRemoveFromDock={handleRemoveFromDock}
|
|
315
|
+
/>
|
|
316
|
+
</Show>
|
|
317
|
+
|
|
318
|
+
{/* Dock is always visible */}
|
|
319
|
+
<Dock
|
|
320
|
+
runningApps={dockRunningApps()}
|
|
321
|
+
pinnedApps={dockPinnedApps()}
|
|
322
|
+
onAppClick={handleAppClick}
|
|
323
|
+
onShowAllApps={handleShowAllApps}
|
|
324
|
+
onContextMenu={handleDockContextMenu}
|
|
325
|
+
/>
|
|
326
|
+
|
|
327
|
+
{/* Context menu for dock apps */}
|
|
328
|
+
<Show when={dockContextMenu()}>
|
|
329
|
+
{(menu) => (
|
|
330
|
+
<AppContextMenu
|
|
331
|
+
menu={menu()}
|
|
332
|
+
isAppPinned={isAppPinned}
|
|
333
|
+
onStopApp={handleStopApp}
|
|
334
|
+
onAddToDock={handleAddToDock}
|
|
335
|
+
onRemoveFromDock={handleRemoveFromDock}
|
|
336
|
+
onUninstallApp={handleUninstallApp}
|
|
337
|
+
onClose={handleCloseDockContextMenu}
|
|
338
|
+
/>
|
|
339
|
+
)}
|
|
340
|
+
</Show>
|
|
341
|
+
</div>
|
|
342
|
+
);
|
|
343
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Cache for fetched icons to avoid redundant API calls
|
|
2
|
+
const iconCache = new Map<string, string | undefined>();
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Fetch an app icon as a base64 data URL
|
|
6
|
+
*/
|
|
7
|
+
export async function fetchAppIcon(appId: string): Promise<string | undefined> {
|
|
8
|
+
// Check cache first
|
|
9
|
+
if (iconCache.has(appId)) {
|
|
10
|
+
return iconCache.get(appId);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
try {
|
|
14
|
+
const result = await window.edenAPI.shellCommand("package/get-icon", {
|
|
15
|
+
appId,
|
|
16
|
+
});
|
|
17
|
+
iconCache.set(appId, result.icon);
|
|
18
|
+
return result.icon;
|
|
19
|
+
} catch (error) {
|
|
20
|
+
console.warn(`Failed to fetch icon for ${appId}:`, error);
|
|
21
|
+
iconCache.set(appId, undefined);
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Clear the icon cache (useful for refreshing after app updates)
|
|
28
|
+
*/
|
|
29
|
+
export function clearIconCache(): void {
|
|
30
|
+
iconCache.clear();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Remove a specific app's icon from cache
|
|
35
|
+
*/
|
|
36
|
+
export function invalidateIconCache(appId: string): void {
|
|
37
|
+
iconCache.delete(appId);
|
|
38
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { render } from "solid-js/web";
|
|
2
|
+
import ShellOverlay from "./components/ShellOverlay";
|
|
3
|
+
import "./styles.css";
|
|
4
|
+
|
|
5
|
+
const root = document.getElementById("root");
|
|
6
|
+
|
|
7
|
+
if (!root) {
|
|
8
|
+
throw new Error("Root element not found");
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
render(() => <ShellOverlay />, root);
|