@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.
Files changed (432) hide show
  1. package/apps/com/eden/editor/dist/assets/css-DQU6DXDx.js +3 -0
  2. package/apps/com/eden/editor/dist/assets/editor-BRA9licV.css +1 -0
  3. package/apps/com/eden/editor/dist/assets/editor.main-DAsyVptA.js +677 -0
  4. package/apps/com/eden/editor/dist/assets/editor.worker-B4pQIWZD.js +12 -0
  5. package/apps/com/eden/editor/dist/assets/html-CTBLac3N.js +1 -0
  6. package/apps/com/eden/editor/dist/assets/index-B7GgDQ9I.css +1 -0
  7. package/apps/com/eden/editor/dist/assets/index-BWJI9cyM.js +2 -0
  8. package/apps/com/eden/editor/dist/assets/ini-BvajGCUy.js +1 -0
  9. package/apps/com/eden/editor/dist/assets/javascript-DJ6Ya8pi.js +1 -0
  10. package/apps/com/eden/editor/dist/assets/jsonMode-BA0kYRDI.js +10 -0
  11. package/apps/com/eden/editor/dist/assets/less-GGFNNJHn.js +2 -0
  12. package/apps/com/eden/editor/dist/assets/markdown-B811l8j2.js +1 -0
  13. package/apps/com/eden/editor/dist/assets/shell-CsDZo4DB.js +1 -0
  14. package/apps/com/eden/editor/dist/assets/typescript-C7BsmV0J.js +1 -0
  15. package/apps/com/eden/editor/dist/assets/yaml-QL02lm_B.js +1 -0
  16. package/apps/com/eden/editor/dist/index.html +13 -0
  17. package/apps/com/eden/editor/icon.svg +22 -0
  18. package/apps/com/eden/editor/index.html +12 -0
  19. package/apps/com/eden/editor/manifest.json +58 -0
  20. package/apps/com/eden/editor/node_modules/.bin/browserslist +21 -0
  21. package/apps/com/eden/editor/node_modules/.bin/tsc +21 -0
  22. package/apps/com/eden/editor/node_modules/.bin/tsserver +21 -0
  23. package/apps/com/eden/editor/node_modules/.bin/vite +21 -0
  24. package/apps/com/eden/editor/package.json +21 -0
  25. package/apps/com/eden/editor/src/App.tsx +212 -0
  26. package/apps/com/eden/editor/src/components/ErrorBanner.tsx +13 -0
  27. package/apps/com/eden/editor/src/components/LazyMonacoEditor.tsx +154 -0
  28. package/apps/com/eden/editor/src/components/TabBar.tsx +36 -0
  29. package/apps/com/eden/editor/src/components/Toolbar.tsx +39 -0
  30. package/apps/com/eden/editor/src/components/WelcomeScreen.tsx +49 -0
  31. package/apps/com/eden/editor/src/components/index.ts +11 -0
  32. package/apps/com/eden/editor/src/index.tsx +10 -0
  33. package/apps/com/eden/editor/src/styles.css +319 -0
  34. package/apps/com/eden/editor/src/types.ts +69 -0
  35. package/apps/com/eden/editor/tsconfig.json +24 -0
  36. package/apps/com/eden/editor/vite.config.mts +67 -0
  37. package/apps/com/eden/eveshell/assets/apps-grid-icon.svg +17 -0
  38. package/apps/com/eden/eveshell/assets/default-icon.svg +17 -0
  39. package/apps/com/eden/eveshell/dist/assets/index-BS2yCXxK.css +1 -0
  40. package/apps/com/eden/eveshell/dist/assets/index-De0NEh_d.js +1 -0
  41. package/apps/com/eden/eveshell/dist/index.html +13 -0
  42. package/apps/com/eden/eveshell/index.html +12 -0
  43. package/apps/com/eden/eveshell/manifest.json +28 -0
  44. package/apps/com/eden/eveshell/node_modules/.bin/tsc +21 -0
  45. package/apps/com/eden/eveshell/node_modules/.bin/tsserver +21 -0
  46. package/apps/com/eden/eveshell/node_modules/.bin/vite +21 -0
  47. package/apps/com/eden/eveshell/package.json +20 -0
  48. package/apps/com/eden/eveshell/src/components/AllApps.tsx +228 -0
  49. package/apps/com/eden/eveshell/src/components/AppContextMenu.tsx +125 -0
  50. package/apps/com/eden/eveshell/src/components/AppIcon.tsx +40 -0
  51. package/apps/com/eden/eveshell/src/components/Clock.tsx +35 -0
  52. package/apps/com/eden/eveshell/src/components/Dock.tsx +147 -0
  53. package/apps/com/eden/eveshell/src/components/ShellOverlay.tsx +343 -0
  54. package/apps/com/eden/eveshell/src/icon-cache.ts +38 -0
  55. package/apps/com/eden/eveshell/src/index.tsx +11 -0
  56. package/apps/com/eden/eveshell/src/styles.css +409 -0
  57. package/apps/com/eden/eveshell/src/types.ts +5 -0
  58. package/apps/com/eden/eveshell/tsconfig.json +37 -0
  59. package/apps/com/eden/eveshell/vite.config.mts +23 -0
  60. package/apps/com/eden/example/appbus/client-a/app.js +239 -0
  61. package/apps/com/eden/example/appbus/client-a/index.html +48 -0
  62. package/apps/com/eden/example/appbus/client-a/manifest.json +27 -0
  63. package/apps/com/eden/example/appbus/client-a/styles.css +52 -0
  64. package/apps/com/eden/example/appbus/client-b/app.js +130 -0
  65. package/apps/com/eden/example/appbus/client-b/index.html +35 -0
  66. package/apps/com/eden/example/appbus/client-b/manifest.json +27 -0
  67. package/apps/com/eden/example/appbus/client-b/styles.css +48 -0
  68. package/apps/com/eden/example/appbus/hub/README.md +18 -0
  69. package/apps/com/eden/example/appbus/hub/backend.js +121 -0
  70. package/apps/com/eden/example/appbus/hub/manifest.json +17 -0
  71. package/apps/com/eden/example/appbus/isolated/app.js +107 -0
  72. package/apps/com/eden/example/appbus/isolated/index.html +35 -0
  73. package/apps/com/eden/example/appbus/isolated/manifest.json +27 -0
  74. package/apps/com/eden/example/appbus/isolated/styles.css +52 -0
  75. package/apps/com/eden/example/calculator/.dev-manifest.json +5 -0
  76. package/apps/com/eden/example/calculator/app.js +95 -0
  77. package/apps/com/eden/example/calculator/icon.svg +19 -0
  78. package/apps/com/eden/example/calculator/index.html +39 -0
  79. package/apps/com/eden/example/calculator/manifest.json +30 -0
  80. package/apps/com/eden/example/calculator/styles.css +83 -0
  81. package/apps/com/eden/example/hello/README.md +3 -0
  82. package/apps/com/eden/example/hello/backend/dist/backend.js +47 -0
  83. package/apps/com/eden/example/hello/backend/node_modules/.bin/tsc +21 -0
  84. package/apps/com/eden/example/hello/backend/node_modules/.bin/tsserver +21 -0
  85. package/apps/com/eden/example/hello/backend/package.json +13 -0
  86. package/apps/com/eden/example/hello/backend/src/backend.ts +58 -0
  87. package/apps/com/eden/example/hello/backend/tsconfig.json +19 -0
  88. package/apps/com/eden/example/hello/frontend/dist/assets/index-D2WAwW3g.css +1 -0
  89. package/apps/com/eden/example/hello/frontend/dist/assets/index-D4bTq3-Q.js +1 -0
  90. package/apps/com/eden/example/hello/frontend/dist/index.html +59 -0
  91. package/apps/com/eden/example/hello/frontend/index.html +59 -0
  92. package/apps/com/eden/example/hello/frontend/node_modules/.bin/tsc +21 -0
  93. package/apps/com/eden/example/hello/frontend/node_modules/.bin/tsserver +21 -0
  94. package/apps/com/eden/example/hello/frontend/node_modules/.bin/vite +21 -0
  95. package/apps/com/eden/example/hello/frontend/package.json +15 -0
  96. package/apps/com/eden/example/hello/frontend/src/App.ts +191 -0
  97. package/apps/com/eden/example/hello/frontend/styles.css +96 -0
  98. package/apps/com/eden/example/hello/frontend/tsconfig.json +16 -0
  99. package/apps/com/eden/example/hello/frontend/vite.config.mts +21 -0
  100. package/apps/com/eden/example/hello/manifest.json +34 -0
  101. package/apps/com/eden/example/hello/shared/protocol.d.ts +38 -0
  102. package/apps/com/eden/example/showcase/app.js +186 -0
  103. package/apps/com/eden/example/showcase/index.html +637 -0
  104. package/apps/com/eden/example/showcase/manifest.json +24 -0
  105. package/apps/com/eden/example/showcase/styles.css +195 -0
  106. package/apps/com/eden/files/.dev-manifest.json +5 -0
  107. package/apps/com/eden/files/dist/assets/index-BOw4ESi3.js +1 -0
  108. package/apps/com/eden/files/dist/assets/index-BPH5FvSW.css +1 -0
  109. package/apps/com/eden/files/dist/index.html +13 -0
  110. package/apps/com/eden/files/icon.svg +15 -0
  111. package/apps/com/eden/files/index.html +12 -0
  112. package/apps/com/eden/files/manifest.json +28 -0
  113. package/apps/com/eden/files/node_modules/.bin/tsc +21 -0
  114. package/apps/com/eden/files/node_modules/.bin/tsserver +21 -0
  115. package/apps/com/eden/files/node_modules/.bin/vite +21 -0
  116. package/apps/com/eden/files/node_modules/.vite/deps/_metadata.json +46 -0
  117. package/apps/com/eden/files/node_modules/.vite/deps/chunk-5W77UGHT.js +1253 -0
  118. package/apps/com/eden/files/node_modules/.vite/deps/chunk-5W77UGHT.js.map +7 -0
  119. package/apps/com/eden/files/node_modules/.vite/deps/chunk-K4SCX2FD.js +1809 -0
  120. package/apps/com/eden/files/node_modules/.vite/deps/chunk-K4SCX2FD.js.map +7 -0
  121. package/apps/com/eden/files/node_modules/.vite/deps/package.json +3 -0
  122. package/apps/com/eden/files/node_modules/.vite/deps/solid-js.js +112 -0
  123. package/apps/com/eden/files/node_modules/.vite/deps/solid-js.js.map +7 -0
  124. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_h.js +122 -0
  125. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_h.js.map +7 -0
  126. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_html.js +606 -0
  127. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_html.js.map +7 -0
  128. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_store.js +455 -0
  129. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_store.js.map +7 -0
  130. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_web.js +147 -0
  131. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_web.js.map +7 -0
  132. package/apps/com/eden/files/package-lock.json +1754 -0
  133. package/apps/com/eden/files/package.json +20 -0
  134. package/apps/com/eden/files/src/App.tsx +387 -0
  135. package/apps/com/eden/files/src/components/FileExplorerHeader.tsx +90 -0
  136. package/apps/com/eden/files/src/components/FileItem.tsx +70 -0
  137. package/apps/com/eden/files/src/components/FileList.tsx +77 -0
  138. package/apps/com/eden/files/src/components/Modal.tsx +48 -0
  139. package/apps/com/eden/files/src/components/Omnibox.tsx +241 -0
  140. package/apps/com/eden/files/src/dialogs/CreateFileDialog.tsx +71 -0
  141. package/apps/com/eden/files/src/dialogs/CreateFolderDialog.tsx +68 -0
  142. package/apps/com/eden/files/src/dialogs/DeleteConfirmDialog.tsx +35 -0
  143. package/apps/com/eden/files/src/dialogs/DisplayOptionsModal.tsx +122 -0
  144. package/apps/com/eden/files/src/dialogs/ErrorDialog.tsx +28 -0
  145. package/apps/com/eden/files/src/index.tsx +9 -0
  146. package/apps/com/eden/files/src/styles.css +595 -0
  147. package/apps/com/eden/files/src/types.ts +20 -0
  148. package/apps/com/eden/files/src/utils.ts +44 -0
  149. package/apps/com/eden/files/tsconfig.json +27 -0
  150. package/apps/com/eden/files/vite.config.mts +23 -0
  151. package/apps/com/eden/settings/dist/assets/index-CTkJneTg.js +1 -0
  152. package/apps/com/eden/settings/dist/assets/index-GIMJANTM.css +1 -0
  153. package/apps/com/eden/settings/dist/index.html +13 -0
  154. package/apps/com/eden/settings/icon.svg +15 -0
  155. package/apps/com/eden/settings/index.html +12 -0
  156. package/apps/com/eden/settings/manifest.json +28 -0
  157. package/apps/com/eden/settings/node_modules/.bin/tsc +21 -0
  158. package/apps/com/eden/settings/node_modules/.bin/tsserver +21 -0
  159. package/apps/com/eden/settings/node_modules/.bin/vite +21 -0
  160. package/apps/com/eden/settings/package.json +21 -0
  161. package/apps/com/eden/settings/src/App.css +168 -0
  162. package/apps/com/eden/settings/src/App.tsx +301 -0
  163. package/apps/com/eden/settings/src/components/SettingInput.tsx +131 -0
  164. package/apps/com/eden/settings/src/index.tsx +9 -0
  165. package/apps/com/eden/settings/tsconfig.json +21 -0
  166. package/apps/com/eden/settings/vite.config.mts +22 -0
  167. package/apps/com/eden/toaster/README.md +89 -0
  168. package/apps/com/eden/toaster/dist/assets/index-8JMcmBCJ.css +1 -0
  169. package/apps/com/eden/toaster/dist/assets/index-C4cVyh7j.js +16 -0
  170. package/apps/com/eden/toaster/dist/index.html +16 -0
  171. package/apps/com/eden/toaster/index.html +16 -0
  172. package/apps/com/eden/toaster/manifest.json +28 -0
  173. package/apps/com/eden/toaster/node_modules/.bin/vite +21 -0
  174. package/apps/com/eden/toaster/package.json +15 -0
  175. package/apps/com/eden/toaster/src/styles.css +159 -0
  176. package/apps/com/eden/toaster/src/toaster.ts +470 -0
  177. package/apps/com/eden/toaster/tsconfig.json +28 -0
  178. package/apps/com/eden/toaster/vite.config.mts +18 -0
  179. package/apps/com/eden/webbrowser/.dev-manifest.json +5 -0
  180. package/apps/com/eden/webbrowser/icon.svg +20 -0
  181. package/apps/com/eden/webbrowser/index.html +141 -0
  182. package/apps/com/eden/webbrowser/manifest.json +23 -0
  183. package/apps/com/eden/webbrowser/node_modules/.bin/vite +21 -0
  184. package/apps/com/eden/webbrowser/node_modules/.vite/deps/_metadata.json +8 -0
  185. package/apps/com/eden/webbrowser/node_modules/.vite/deps/package.json +3 -0
  186. package/apps/com/eden/webbrowser/package.json +13 -0
  187. package/apps/com/eden/webbrowser/vite.config.mts +11 -0
  188. package/dist/Eden.d.ts +40 -0
  189. package/dist/Eden.d.ts.map +1 -0
  190. package/dist/Eden.js +186 -0
  191. package/dist/Eden.js.map +1 -0
  192. package/dist/SystemHandler.d.ts +11 -0
  193. package/dist/SystemHandler.d.ts.map +1 -0
  194. package/dist/SystemHandler.js +53 -0
  195. package/dist/SystemHandler.js.map +1 -0
  196. package/dist/app-frame/frame-injector.js +19 -0
  197. package/dist/app-frame/frame-injector.js.map +7 -0
  198. package/dist/app-frame/frame.css +186 -0
  199. package/dist/app-runtime/app-preload.js +2 -0
  200. package/dist/app-runtime/app-preload.js.map +7 -0
  201. package/dist/app-runtime/backend-preload.js +2 -0
  202. package/dist/app-runtime/backend-preload.js.map +7 -0
  203. package/dist/appbus/AppChannelHandler.d.ts +65 -0
  204. package/dist/appbus/AppChannelHandler.d.ts.map +1 -0
  205. package/dist/appbus/AppChannelHandler.js +120 -0
  206. package/dist/appbus/AppChannelHandler.js.map +1 -0
  207. package/dist/appbus/AppChannelManager.d.ts +80 -0
  208. package/dist/appbus/AppChannelManager.d.ts.map +1 -0
  209. package/dist/appbus/AppChannelManager.js +312 -0
  210. package/dist/appbus/AppChannelManager.js.map +1 -0
  211. package/dist/appbus/index.d.ts +2 -0
  212. package/dist/appbus/index.d.ts.map +1 -0
  213. package/dist/appbus/index.js +18 -0
  214. package/dist/appbus/index.js.map +1 -0
  215. package/dist/db/DbHandler.d.ts +119 -0
  216. package/dist/db/DbHandler.d.ts.map +1 -0
  217. package/dist/db/DbHandler.js +204 -0
  218. package/dist/db/DbHandler.js.map +1 -0
  219. package/dist/db/DbManager.d.ts +49 -0
  220. package/dist/db/DbManager.d.ts.map +1 -0
  221. package/dist/db/DbManager.js +172 -0
  222. package/dist/db/DbManager.js.map +1 -0
  223. package/dist/db/index.d.ts +3 -0
  224. package/dist/db/index.d.ts.map +1 -0
  225. package/dist/db/index.js +8 -0
  226. package/dist/db/index.js.map +1 -0
  227. package/dist/edencss/eden-tokens.css +1 -0
  228. package/dist/edencss/eden.css +1 -0
  229. package/dist/file-open/FileOpenHandler.d.ts +59 -0
  230. package/dist/file-open/FileOpenHandler.d.ts.map +1 -0
  231. package/dist/file-open/FileOpenHandler.js +122 -0
  232. package/dist/file-open/FileOpenHandler.js.map +1 -0
  233. package/dist/file-open/FileOpenManager.d.ts +91 -0
  234. package/dist/file-open/FileOpenManager.d.ts.map +1 -0
  235. package/dist/file-open/FileOpenManager.js +411 -0
  236. package/dist/file-open/FileOpenManager.js.map +1 -0
  237. package/dist/file-open/index.d.ts +3 -0
  238. package/dist/file-open/index.d.ts.map +1 -0
  239. package/dist/file-open/index.js +8 -0
  240. package/dist/file-open/index.js.map +1 -0
  241. package/dist/filesystem/FilesystemHandler.d.ts +65 -0
  242. package/dist/filesystem/FilesystemHandler.d.ts.map +1 -0
  243. package/dist/filesystem/FilesystemHandler.js +134 -0
  244. package/dist/filesystem/FilesystemHandler.js.map +1 -0
  245. package/dist/filesystem/FilesystemManager.d.ts +70 -0
  246. package/dist/filesystem/FilesystemManager.d.ts.map +1 -0
  247. package/dist/filesystem/FilesystemManager.js +236 -0
  248. package/dist/filesystem/FilesystemManager.js.map +1 -0
  249. package/dist/filesystem/index.d.ts +3 -0
  250. package/dist/filesystem/index.d.ts.map +1 -0
  251. package/dist/filesystem/index.js +8 -0
  252. package/dist/filesystem/index.js.map +1 -0
  253. package/dist/foundation/foundation-preload.js +15 -0
  254. package/dist/foundation/foundation.css +40 -0
  255. package/dist/foundation/foundation.html +22 -0
  256. package/dist/foundation/foundation.js +69 -0
  257. package/dist/hotreload-config.d.ts +8 -0
  258. package/dist/hotreload-config.d.ts.map +1 -0
  259. package/dist/hotreload-config.js +73 -0
  260. package/dist/hotreload-config.js.map +1 -0
  261. package/dist/index.d.ts +7 -0
  262. package/dist/index.d.ts.map +1 -0
  263. package/dist/index.js +20 -0
  264. package/dist/index.js.map +1 -0
  265. package/dist/ipc/CommandDecorators.d.ts +72 -0
  266. package/dist/ipc/CommandDecorators.d.ts.map +1 -0
  267. package/dist/ipc/CommandDecorators.js +49 -0
  268. package/dist/ipc/CommandDecorators.js.map +1 -0
  269. package/dist/ipc/CommandRegistry.d.ts +77 -0
  270. package/dist/ipc/CommandRegistry.d.ts.map +1 -0
  271. package/dist/ipc/CommandRegistry.js +175 -0
  272. package/dist/ipc/CommandRegistry.js.map +1 -0
  273. package/dist/ipc/EdenEmitter.d.ts +54 -0
  274. package/dist/ipc/EdenEmitter.d.ts.map +1 -0
  275. package/dist/ipc/EdenEmitter.js +81 -0
  276. package/dist/ipc/EdenEmitter.js.map +1 -0
  277. package/dist/ipc/EventHandler.d.ts +21 -0
  278. package/dist/ipc/EventHandler.d.ts.map +1 -0
  279. package/dist/ipc/EventHandler.js +87 -0
  280. package/dist/ipc/EventHandler.js.map +1 -0
  281. package/dist/ipc/EventSubscriberManager.d.ts +67 -0
  282. package/dist/ipc/EventSubscriberManager.d.ts.map +1 -0
  283. package/dist/ipc/EventSubscriberManager.js +204 -0
  284. package/dist/ipc/EventSubscriberManager.js.map +1 -0
  285. package/dist/ipc/IPCBridge.d.ts +60 -0
  286. package/dist/ipc/IPCBridge.d.ts.map +1 -0
  287. package/dist/ipc/IPCBridge.js +186 -0
  288. package/dist/ipc/IPCBridge.js.map +1 -0
  289. package/dist/ipc/PermissionRegistry.d.ts +52 -0
  290. package/dist/ipc/PermissionRegistry.d.ts.map +1 -0
  291. package/dist/ipc/PermissionRegistry.js +120 -0
  292. package/dist/ipc/PermissionRegistry.js.map +1 -0
  293. package/dist/ipc/index.d.ts +7 -0
  294. package/dist/ipc/index.d.ts.map +1 -0
  295. package/dist/ipc/index.js +23 -0
  296. package/dist/ipc/index.js.map +1 -0
  297. package/dist/main.d.ts +2 -0
  298. package/dist/main.d.ts.map +1 -0
  299. package/dist/main.js +15 -0
  300. package/dist/main.js.map +1 -0
  301. package/dist/notification/NotificationHandler.d.ts +16 -0
  302. package/dist/notification/NotificationHandler.d.ts.map +1 -0
  303. package/dist/notification/NotificationHandler.js +39 -0
  304. package/dist/notification/NotificationHandler.js.map +1 -0
  305. package/dist/notification/NotificationManager.d.ts +32 -0
  306. package/dist/notification/NotificationManager.d.ts.map +1 -0
  307. package/dist/notification/NotificationManager.js +66 -0
  308. package/dist/notification/NotificationManager.js.map +1 -0
  309. package/dist/notification/index.d.ts +3 -0
  310. package/dist/notification/index.d.ts.map +1 -0
  311. package/dist/notification/index.js +19 -0
  312. package/dist/notification/index.js.map +1 -0
  313. package/dist/package-manager/PackageHandler.d.ts +50 -0
  314. package/dist/package-manager/PackageHandler.d.ts.map +1 -0
  315. package/dist/package-manager/PackageHandler.js +107 -0
  316. package/dist/package-manager/PackageHandler.js.map +1 -0
  317. package/dist/package-manager/PackageManager.d.ts +73 -0
  318. package/dist/package-manager/PackageManager.d.ts.map +1 -0
  319. package/dist/package-manager/PackageManager.js +373 -0
  320. package/dist/package-manager/PackageManager.js.map +1 -0
  321. package/dist/package-manager/index.d.ts +3 -0
  322. package/dist/package-manager/index.d.ts.map +1 -0
  323. package/dist/package-manager/index.js +8 -0
  324. package/dist/package-manager/index.js.map +1 -0
  325. package/dist/process-manager/AutostartManager.d.ts +15 -0
  326. package/dist/process-manager/AutostartManager.d.ts.map +1 -0
  327. package/dist/process-manager/AutostartManager.js +56 -0
  328. package/dist/process-manager/AutostartManager.js.map +1 -0
  329. package/dist/process-manager/BackendManager.d.ts +63 -0
  330. package/dist/process-manager/BackendManager.d.ts.map +1 -0
  331. package/dist/process-manager/BackendManager.js +272 -0
  332. package/dist/process-manager/BackendManager.js.map +1 -0
  333. package/dist/process-manager/ProcessHandler.d.ts +29 -0
  334. package/dist/process-manager/ProcessHandler.d.ts.map +1 -0
  335. package/dist/process-manager/ProcessHandler.js +66 -0
  336. package/dist/process-manager/ProcessHandler.js.map +1 -0
  337. package/dist/process-manager/ProcessManager.d.ts +94 -0
  338. package/dist/process-manager/ProcessManager.d.ts.map +1 -0
  339. package/dist/process-manager/ProcessManager.js +286 -0
  340. package/dist/process-manager/ProcessManager.js.map +1 -0
  341. package/dist/process-manager/index.d.ts +5 -0
  342. package/dist/process-manager/index.d.ts.map +1 -0
  343. package/dist/process-manager/index.js +12 -0
  344. package/dist/process-manager/index.js.map +1 -0
  345. package/dist/settings/EdenSettings.d.ts +8 -0
  346. package/dist/settings/EdenSettings.d.ts.map +1 -0
  347. package/dist/settings/EdenSettings.js +148 -0
  348. package/dist/settings/EdenSettings.js.map +1 -0
  349. package/dist/settings/SettingsHandler.d.ts +117 -0
  350. package/dist/settings/SettingsHandler.d.ts.map +1 -0
  351. package/dist/settings/SettingsHandler.js +199 -0
  352. package/dist/settings/SettingsHandler.js.map +1 -0
  353. package/dist/settings/SettingsManager.d.ts +64 -0
  354. package/dist/settings/SettingsManager.d.ts.map +1 -0
  355. package/dist/settings/SettingsManager.js +221 -0
  356. package/dist/settings/SettingsManager.js.map +1 -0
  357. package/dist/settings/index.d.ts +4 -0
  358. package/dist/settings/index.d.ts.map +1 -0
  359. package/dist/settings/index.js +11 -0
  360. package/dist/settings/index.js.map +1 -0
  361. package/dist/utils/cachedFileReader.d.ts +46 -0
  362. package/dist/utils/cachedFileReader.d.ts.map +1 -0
  363. package/dist/utils/cachedFileReader.js +100 -0
  364. package/dist/utils/cachedFileReader.js.map +1 -0
  365. package/dist/view-manager/DevToolsManager.d.ts +29 -0
  366. package/dist/view-manager/DevToolsManager.d.ts.map +1 -0
  367. package/dist/view-manager/DevToolsManager.js +88 -0
  368. package/dist/view-manager/DevToolsManager.js.map +1 -0
  369. package/dist/view-manager/FloatingWindowController.d.ts +44 -0
  370. package/dist/view-manager/FloatingWindowController.d.ts.map +1 -0
  371. package/dist/view-manager/FloatingWindowController.js +124 -0
  372. package/dist/view-manager/FloatingWindowController.js.map +1 -0
  373. package/dist/view-manager/LayoutCalculator.d.ts +49 -0
  374. package/dist/view-manager/LayoutCalculator.d.ts.map +1 -0
  375. package/dist/view-manager/LayoutCalculator.js +94 -0
  376. package/dist/view-manager/LayoutCalculator.js.map +1 -0
  377. package/dist/view-manager/MouseTracker.d.ts +65 -0
  378. package/dist/view-manager/MouseTracker.d.ts.map +1 -0
  379. package/dist/view-manager/MouseTracker.js +114 -0
  380. package/dist/view-manager/MouseTracker.js.map +1 -0
  381. package/dist/view-manager/TilingManager.d.ts +61 -0
  382. package/dist/view-manager/TilingManager.d.ts.map +1 -0
  383. package/dist/view-manager/TilingManager.js +142 -0
  384. package/dist/view-manager/TilingManager.js.map +1 -0
  385. package/dist/view-manager/ViewCreator.d.ts +72 -0
  386. package/dist/view-manager/ViewCreator.d.ts.map +1 -0
  387. package/dist/view-manager/ViewCreator.js +277 -0
  388. package/dist/view-manager/ViewCreator.js.map +1 -0
  389. package/dist/view-manager/ViewHandler.d.ts +112 -0
  390. package/dist/view-manager/ViewHandler.d.ts.map +1 -0
  391. package/dist/view-manager/ViewHandler.js +307 -0
  392. package/dist/view-manager/ViewHandler.js.map +1 -0
  393. package/dist/view-manager/ViewLifecycle.d.ts +66 -0
  394. package/dist/view-manager/ViewLifecycle.d.ts.map +1 -0
  395. package/dist/view-manager/ViewLifecycle.js +142 -0
  396. package/dist/view-manager/ViewLifecycle.js.map +1 -0
  397. package/dist/view-manager/ViewManager.d.ts +112 -0
  398. package/dist/view-manager/ViewManager.d.ts.map +1 -0
  399. package/dist/view-manager/ViewManager.js +422 -0
  400. package/dist/view-manager/ViewManager.js.map +1 -0
  401. package/dist/view-manager/index.d.ts +11 -0
  402. package/dist/view-manager/index.d.ts.map +1 -0
  403. package/dist/view-manager/index.js +23 -0
  404. package/dist/view-manager/index.js.map +1 -0
  405. package/dist/view-manager/types.d.ts +24 -0
  406. package/dist/view-manager/types.d.ts.map +1 -0
  407. package/dist/view-manager/types.js +11 -0
  408. package/dist/view-manager/types.js.map +1 -0
  409. package/edencss/README.md +214 -0
  410. package/edencss/components/badges.css +180 -0
  411. package/edencss/components/buttons.css +221 -0
  412. package/edencss/components/cards.css +201 -0
  413. package/edencss/components/inputs.css +424 -0
  414. package/edencss/components/lists.css +242 -0
  415. package/edencss/components/modals.css +207 -0
  416. package/edencss/components/progress.css +186 -0
  417. package/edencss/components/sidebar.css +232 -0
  418. package/edencss/components/tabs.css +189 -0
  419. package/edencss/eden.css +16 -0
  420. package/edencss/index.ts +11 -0
  421. package/edencss/style-dictionary.config.mjs +75 -0
  422. package/edencss/tokens-pink.json +163 -0
  423. package/edencss/tokens.css +121 -0
  424. package/edencss/tokens.d.ts +111 -0
  425. package/edencss/tokens.json +369 -0
  426. package/edencss/tokens.ts +125 -0
  427. package/edencss/utilities.css +423 -0
  428. package/foundation/foundation-preload.js +15 -0
  429. package/foundation/foundation.css +40 -0
  430. package/foundation/foundation.html +22 -0
  431. package/foundation/foundation.js +69 -0
  432. package/package.json +55 -0
@@ -0,0 +1,21 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/home/dariusz/Desktop/eden/node_modules/.pnpm/vite@5.4.21_@types+node@22.19.1/node_modules/vite/bin/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/vite@5.4.21_@types+node@22.19.1/node_modules/vite/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/vite@5.4.21_@types+node@22.19.1/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/home/dariusz/Desktop/eden/node_modules/.pnpm/vite@5.4.21_@types+node@22.19.1/node_modules/vite/bin/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/vite@5.4.21_@types+node@22.19.1/node_modules/vite/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/vite@5.4.21_@types+node@22.19.1/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
19
+ else
20
+ exec node "$basedir/../vite/bin/vite.js" "$@"
21
+ fi
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "com.eden.toaster",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "vite build",
9
+ "preview": "vite preview"
10
+ },
11
+ "devDependencies": {
12
+ "@edenapp/types": "workspace:*",
13
+ "vite": "^5.4.14"
14
+ }
15
+ }
@@ -0,0 +1,159 @@
1
+ /* Eden Toaster Styles */
2
+
3
+ * {
4
+ margin: 0;
5
+ padding: 0;
6
+ box-sizing: border-box;
7
+ }
8
+
9
+ body {
10
+ margin: 0;
11
+ padding: 0;
12
+ background: transparent;
13
+ font-family: var(--eden-font-family-base);
14
+ overflow: hidden;
15
+ }
16
+
17
+ #toast-container {
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: var(--eden-space-md);
21
+ width: 100%;
22
+ }
23
+
24
+ .toast {
25
+ min-width: 320px;
26
+ max-width: 320px;
27
+ max-height: 400px; /* Clip very long messages */
28
+ padding: var(--eden-space-lg) var(--eden-space-lg);
29
+ padding-bottom: calc(
30
+ var(--eden-space-lg) + var(--eden-space-sm) + 4px
31
+ ); /* Extra space for progress bar */
32
+ overflow: hidden;
33
+
34
+ /* Override eden-card-glass large shadow due to restricted view's size */
35
+ box-shadow: var(--eden-shadow-xs);
36
+ }
37
+
38
+ .toast-inner {
39
+ display: flex;
40
+ align-items: center;
41
+ gap: var(--eden-space-md);
42
+ }
43
+
44
+ .toast-content {
45
+ flex: 1;
46
+ min-width: 0;
47
+ }
48
+
49
+ .toast-title {
50
+ font-size: var(--eden-font-size-md);
51
+ font-weight: var(--eden-font-weight-semibold);
52
+ color: var(--eden-color-text-primary);
53
+ margin-bottom: var(--eden-space-xs);
54
+ white-space: nowrap;
55
+ overflow: hidden;
56
+ text-overflow: ellipsis;
57
+ }
58
+
59
+ .toast-message {
60
+ font-size: var(--eden-font-size-sm);
61
+ color: var(--eden-color-text-secondary);
62
+ line-height: var(--eden-font-line-height-normal);
63
+ word-wrap: break-word;
64
+ overflow-wrap: break-word;
65
+ /* Clamp to ~15 lines with ellipsis */
66
+ display: -webkit-box;
67
+ -webkit-line-clamp: 15;
68
+ line-clamp: 15;
69
+ -webkit-box-orient: vertical;
70
+ overflow: hidden;
71
+ }
72
+
73
+ .toast-dismiss {
74
+ flex-shrink: 0;
75
+ background: none;
76
+ border: none;
77
+ color: var(--eden-color-text-muted);
78
+ font-size: var(--eden-font-size-xl);
79
+ cursor: pointer;
80
+ padding: var(--eden-space-xs);
81
+ border-radius: var(--eden-radius-sm);
82
+ transition: color var(--eden-transition-fast),
83
+ background var(--eden-transition-fast);
84
+ }
85
+
86
+ .toast-dismiss:hover {
87
+ color: var(--eden-color-text-primary);
88
+ background: var(--eden-color-bg-glass-light);
89
+ }
90
+
91
+ /* Progress container - positioned at bottom */
92
+ .toast-progress-container {
93
+ position: absolute;
94
+ bottom: var(--eden-space-sm);
95
+ left: var(--eden-space-md);
96
+ right: var(--eden-space-md);
97
+ }
98
+
99
+ /* Override eden-progress sizing for toast */
100
+ .toast-progress-container .eden-progress {
101
+ height: 4px;
102
+ border: none;
103
+ background: var(--eden-color-bg-glass-light);
104
+ }
105
+
106
+ /* Decaying progress bar animation */
107
+ .toast-progress-container .eden-progress-bar {
108
+ animation: toast-decay linear forwards;
109
+ }
110
+
111
+ @keyframes toast-decay {
112
+ from {
113
+ width: 100%;
114
+ }
115
+ to {
116
+ width: 0%;
117
+ }
118
+ }
119
+
120
+ /* Ensure toast has relative positioning for progress bar */
121
+ .toast {
122
+ position: relative;
123
+ }
124
+
125
+ /* ===== Notification Type Variants ===== */
126
+
127
+ /* Success */
128
+ .toast-success .eden-progress-bar {
129
+ background: linear-gradient(
130
+ 90deg,
131
+ var(--eden-color-success),
132
+ var(--eden-color-success-hover)
133
+ );
134
+ box-shadow: 0 0 10px rgba(81, 207, 102, 0.5);
135
+ }
136
+
137
+ /* Warning */
138
+ .toast-warning .eden-progress-bar {
139
+ background: var(--eden-color-warning);
140
+ box-shadow: 0 0 10px rgba(255, 217, 61, 0.5);
141
+ }
142
+
143
+ /* Danger */
144
+ .toast-danger .eden-progress-bar {
145
+ background: linear-gradient(
146
+ 90deg,
147
+ var(--eden-color-danger),
148
+ var(--eden-color-danger-hover)
149
+ );
150
+ box-shadow: 0 0 10px rgba(255, 59, 48, 0.5);
151
+ }
152
+
153
+ /* ===== Dismiss All Button ===== */
154
+ .dismiss-all-btn {
155
+ margin-bottom: var(--eden-space-sm);
156
+ width: 100%;
157
+ font-size: var(--eden-font-size-sm);
158
+ padding: var(--eden-space-sm) var(--eden-space-md);
159
+ }
@@ -0,0 +1,470 @@
1
+ /**
2
+ * Eden Toaster - Toast Notification Display
3
+ *
4
+ * Subscribes to notification events and displays toasts in the configured corner.
5
+ * Dynamically resizes the overlay based on visible toast count.
6
+ * Handles timeout/pause logic locally.
7
+ */
8
+
9
+ import type { WindowSize, ViewBounds, Notification } from "@edenapp/types";
10
+
11
+ // Configuration
12
+ interface ToasterConfig {
13
+ corner: "top-left" | "top-right" | "bottom-left" | "bottom-right";
14
+ toastWidth: number;
15
+ spacing: number;
16
+ marginX: number;
17
+ marginY: number;
18
+ }
19
+
20
+ const CONFIG: ToasterConfig = {
21
+ corner: "bottom-right",
22
+ toastWidth: 320,
23
+ spacing: 16,
24
+ marginX: 16,
25
+ marginY: 96,
26
+ };
27
+
28
+ interface ActiveToast extends Notification {
29
+ element: HTMLElement;
30
+ timeoutId: number | null;
31
+ remainingTime: number;
32
+ isPaused: boolean;
33
+ isHoverPaused: boolean;
34
+ startTime: number;
35
+ }
36
+
37
+ // Visible toasts currently displayed
38
+ const visibleToasts = new Map<string, ActiveToast>();
39
+
40
+ // Queue of pending notifications (waiting to be shown)
41
+ const pendingQueue: Notification[] = [];
42
+
43
+ let windowSize: WindowSize | null = null;
44
+
45
+ /**
46
+ * Get current window size from Eden API
47
+ */
48
+ async function fetchWindowSize(): Promise<WindowSize> {
49
+ try {
50
+ const size = await window.edenAPI.shellCommand("view/window-size", {});
51
+ windowSize = size;
52
+ return size;
53
+ } catch (err) {
54
+ console.error("Failed to get window size:", err);
55
+ return { width: 1280, height: 800 };
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Calculate max available height for toasts
61
+ */
62
+ function getMaxHeight(): number {
63
+ const ws = windowSize || { width: 1280, height: 800 };
64
+ return ws.height - CONFIG.marginY * 2;
65
+ }
66
+
67
+ /**
68
+ * Calculate current total height of visible toasts
69
+ */
70
+ function getVisibleToastsHeight(): number {
71
+ let totalHeight = 0;
72
+ let count = 0;
73
+ for (const toast of visibleToasts.values()) {
74
+ totalHeight += toast.element.offsetHeight || 100;
75
+ count++;
76
+ }
77
+ if (count > 1) {
78
+ totalHeight += (count - 1) * CONFIG.spacing;
79
+ }
80
+ return totalHeight;
81
+ }
82
+
83
+ /**
84
+ * Check if there's room for another toast
85
+ */
86
+ function hasRoomForToast(estimatedHeight: number = 120): boolean {
87
+ const currentHeight = getVisibleToastsHeight();
88
+ const maxHeight = getMaxHeight();
89
+ const neededHeight =
90
+ currentHeight +
91
+ (visibleToasts.size > 0 ? CONFIG.spacing : 0) +
92
+ estimatedHeight;
93
+ return neededHeight <= maxHeight;
94
+ }
95
+
96
+ /**
97
+ * Calculate overlay bounds based on visible toast heights
98
+ */
99
+ function calculateBounds(): ViewBounds {
100
+ const container = document.getElementById("toast-container");
101
+
102
+ if (visibleToasts.size === 0 || !container) {
103
+ return { x: 0, y: 0, width: 0, height: 0 };
104
+ }
105
+
106
+ const ws = windowSize || { width: 1280, height: 800 };
107
+
108
+ // Use container's scrollHeight to get actual content height
109
+ const totalHeight = container.scrollHeight;
110
+
111
+ const width = CONFIG.toastWidth;
112
+ const height = totalHeight;
113
+
114
+ // Calculate position based on corner
115
+ let x: number, y: number;
116
+ switch (CONFIG.corner) {
117
+ case "top-left":
118
+ x = CONFIG.marginX;
119
+ y = CONFIG.marginY;
120
+ break;
121
+ case "top-right":
122
+ x = ws.width - width - CONFIG.marginX;
123
+ y = CONFIG.marginY;
124
+ break;
125
+ case "bottom-left":
126
+ x = CONFIG.marginX;
127
+ y = ws.height - height - CONFIG.marginY;
128
+ break;
129
+ case "bottom-right":
130
+ default:
131
+ x = ws.width - width - CONFIG.marginX;
132
+ y = ws.height - height - CONFIG.marginY;
133
+ break;
134
+ }
135
+
136
+ return { x, y, width, height };
137
+ }
138
+
139
+ /**
140
+ * Update overlay bounds via Eden API
141
+ */
142
+ async function updateOverlayBounds(): Promise<void> {
143
+ const bounds = calculateBounds();
144
+ try {
145
+ await window.edenAPI.shellCommand("view/update-view-bounds", {
146
+ appId: "com.eden.toaster",
147
+ bounds,
148
+ });
149
+ } catch (err) {
150
+ console.error("Failed to update overlay bounds:", err);
151
+ }
152
+ }
153
+
154
+ /**
155
+ * Escape HTML to prevent XSS
156
+ */
157
+ function escapeHtml(text: string): string {
158
+ const div = document.createElement("div");
159
+ div.textContent = text;
160
+ return div.innerHTML;
161
+ }
162
+
163
+ /**
164
+ * Show next toast from the pending queue
165
+ */
166
+ function showNextPendingToast(): void {
167
+ if (pendingQueue.length === 0) return;
168
+ if (!hasRoomForToast()) return;
169
+
170
+ // Get the oldest pending notification (FIFO)
171
+ const notification = pendingQueue.shift()!;
172
+ displayToast(notification);
173
+ }
174
+
175
+ /**
176
+ * Dismiss a toast locally
177
+ */
178
+ function dismissToast(id: string): void {
179
+ const toast = visibleToasts.get(id);
180
+ if (!toast) return;
181
+
182
+ // Clear timeout
183
+ if (toast.timeoutId !== null) {
184
+ clearTimeout(toast.timeoutId);
185
+ }
186
+
187
+ // Remove immediately
188
+ toast.element.remove();
189
+ visibleToasts.delete(id);
190
+ updateDismissAllButton();
191
+ updateOverlayBounds();
192
+
193
+ // Try to show next pending toast
194
+ showNextPendingToast();
195
+ }
196
+
197
+ /**
198
+ * Dismiss all visible toasts and clear pending queue
199
+ */
200
+ function dismissAllToasts(): void {
201
+ // Clear pending queue
202
+ pendingQueue.length = 0;
203
+
204
+ // Dismiss all visible toasts immediately
205
+ for (const toast of visibleToasts.values()) {
206
+ if (toast.timeoutId !== null) {
207
+ clearTimeout(toast.timeoutId);
208
+ }
209
+ toast.element.remove();
210
+ }
211
+ visibleToasts.clear();
212
+ updateDismissAllButton();
213
+ updateOverlayBounds();
214
+ }
215
+
216
+ /**
217
+ * Show/hide the dismiss all button based on toast count
218
+ */
219
+ function updateDismissAllButton(): void {
220
+ const container = document.getElementById("toast-container");
221
+ if (!container) return;
222
+
223
+ let btn = document.getElementById("dismiss-all-btn");
224
+ const totalCount = visibleToasts.size + pendingQueue.length;
225
+
226
+ if (totalCount > 1) {
227
+ // Show button
228
+ if (!btn) {
229
+ btn = document.createElement("button");
230
+ btn.id = "dismiss-all-btn";
231
+ btn.className = "dismiss-all-btn eden-btn eden-btn-ghost";
232
+ btn.textContent = "Dismiss All";
233
+ btn.addEventListener("click", dismissAllToasts);
234
+ // Prepend so it's always at the top
235
+ container.prepend(btn);
236
+ }
237
+ // Update count
238
+ btn.textContent = `Dismiss All (${totalCount})`;
239
+ } else {
240
+ // Hide button
241
+ if (btn) {
242
+ btn.remove();
243
+ }
244
+ }
245
+ }
246
+
247
+ /**
248
+ * Pause toast timeout (on hover)
249
+ */
250
+ function pauseToast(id: string): void {
251
+ const toast = visibleToasts.get(id);
252
+ if (!toast || toast.isHoverPaused) return;
253
+
254
+ toast.isHoverPaused = true;
255
+
256
+ if (!toast.isPaused) {
257
+ doPauseToast(toast);
258
+ }
259
+ }
260
+
261
+ /**
262
+ * Resume toast timeout (on mouse leave)
263
+ */
264
+ function resumeToast(id: string): void {
265
+ const toast = visibleToasts.get(id);
266
+ if (!toast || !toast.isHoverPaused) return;
267
+
268
+ toast.isHoverPaused = false;
269
+
270
+ if (toast.isPaused) {
271
+ doResumeToast(toast);
272
+ }
273
+ }
274
+
275
+ /**
276
+ * Actually pause the toast timer and animation
277
+ */
278
+ function doPauseToast(toast: ActiveToast): void {
279
+ if (toast.isPaused) return;
280
+
281
+ // Clear current timeout
282
+ if (toast.timeoutId !== null) {
283
+ clearTimeout(toast.timeoutId);
284
+ toast.timeoutId = null;
285
+ }
286
+
287
+ // Calculate remaining time
288
+ const elapsed = Date.now() - toast.startTime;
289
+ toast.remainingTime = Math.max(0, toast.remainingTime - elapsed);
290
+ toast.isPaused = true;
291
+
292
+ // Pause the progress bar animation
293
+ const progressBar = toast.element.querySelector(
294
+ ".eden-progress-bar"
295
+ ) as HTMLElement;
296
+ if (progressBar) {
297
+ progressBar.style.animationPlayState = "paused";
298
+ }
299
+ }
300
+
301
+ /**
302
+ * Actually resume the toast timer and animation
303
+ */
304
+ function doResumeToast(toast: ActiveToast): void {
305
+ if (!toast.isPaused) return;
306
+
307
+ toast.isPaused = false;
308
+ toast.startTime = Date.now();
309
+
310
+ // Resume the progress bar animation
311
+ const progressBar = toast.element.querySelector(
312
+ ".eden-progress-bar"
313
+ ) as HTMLElement;
314
+ if (progressBar) {
315
+ progressBar.style.animationPlayState = "running";
316
+ }
317
+
318
+ // Set new timeout with remaining time
319
+ if (toast.remainingTime > 0) {
320
+ toast.timeoutId = window.setTimeout(() => {
321
+ dismissToast(toast.id);
322
+ }, toast.remainingTime);
323
+ } else {
324
+ dismissToast(toast.id);
325
+ }
326
+ }
327
+
328
+ /**
329
+ * Create a toast element
330
+ */
331
+ function createToastElement(notification: Notification): HTMLElement {
332
+ const toast = document.createElement("div");
333
+ const type = notification.type || "info";
334
+ const isPersistent = !notification.timeout || notification.timeout <= 0;
335
+ toast.className = `toast eden-card-glass toast-${type}${
336
+ isPersistent ? " toast-persistent" : ""
337
+ }`;
338
+ toast.dataset.id = notification.id;
339
+
340
+ // Build progress bar HTML only for non-persistent notifications
341
+ const progressHtml = isPersistent
342
+ ? ""
343
+ : `
344
+ <div class="toast-progress-container">
345
+ <div class="eden-progress">
346
+ <div class="eden-progress-bar" style="animation-duration: ${notification.timeout}ms;"></div>
347
+ </div>
348
+ </div>
349
+ `;
350
+
351
+ toast.innerHTML = `
352
+ <div class="toast-inner">
353
+ <div class="toast-content">
354
+ <div class="toast-title">${escapeHtml(notification.title)}</div>
355
+ <div class="toast-message">${escapeHtml(notification.message)}</div>
356
+ </div>
357
+ <button class="toast-dismiss" aria-label="Dismiss">×</button>
358
+ </div>
359
+ ${progressHtml}
360
+ `;
361
+
362
+ // Handle dismiss click
363
+ const dismissBtn = toast.querySelector(".toast-dismiss");
364
+ dismissBtn?.addEventListener("click", (e) => {
365
+ e.stopPropagation();
366
+ dismissToast(notification.id);
367
+ });
368
+
369
+ // Pause on hover (only for non-persistent)
370
+ if (!isPersistent) {
371
+ toast.addEventListener("mouseenter", () => {
372
+ pauseToast(notification.id);
373
+ });
374
+
375
+ // Resume on mouse leave
376
+ toast.addEventListener("mouseleave", () => {
377
+ resumeToast(notification.id);
378
+ });
379
+ }
380
+
381
+ return toast;
382
+ }
383
+
384
+ /**
385
+ * Display a toast (actually render it)
386
+ */
387
+ function displayToast(notification: Notification): void {
388
+ const container = document.getElementById("toast-container");
389
+ if (!container) return;
390
+
391
+ const element = createToastElement(notification);
392
+
393
+ // Always append at the end - oldest at bottom, newest at top
394
+ container.appendChild(element);
395
+
396
+ const isPersistent = !notification.timeout || notification.timeout <= 0;
397
+
398
+ // Set up timeout only for non-persistent notifications
399
+ let timeoutId: number | null = null;
400
+ if (!isPersistent) {
401
+ timeoutId = window.setTimeout(() => {
402
+ dismissToast(notification.id);
403
+ }, notification.timeout);
404
+ }
405
+
406
+ const toast: ActiveToast = {
407
+ ...notification,
408
+ element,
409
+ timeoutId,
410
+ remainingTime: notification.timeout ?? 0,
411
+ isPaused: false,
412
+ isHoverPaused: false,
413
+ startTime: Date.now(),
414
+ };
415
+
416
+ visibleToasts.set(notification.id, toast);
417
+
418
+ // Update dismiss all button and bounds
419
+ updateDismissAllButton();
420
+ updateOverlayBounds();
421
+ }
422
+
423
+ /**
424
+ * Handle new toast notification
425
+ */
426
+ function handleToastAdded(data: { notification: Notification }): void {
427
+ const { notification } = data;
428
+
429
+ if (hasRoomForToast()) {
430
+ // Show immediately
431
+ displayToast(notification);
432
+ } else {
433
+ // Add to pending queue (will be shown when space is available)
434
+ pendingQueue.push(notification);
435
+ updateDismissAllButton();
436
+ console.log(
437
+ `Toast queued: ${notification.id} (${pendingQueue.length} pending)`
438
+ );
439
+ }
440
+ }
441
+
442
+ /**
443
+ * Initialize the toaster
444
+ */
445
+ async function init(): Promise<void> {
446
+ console.log("Eden Toaster initializing...");
447
+
448
+ // Fetch initial window size
449
+ await fetchWindowSize();
450
+
451
+ // Subscribe to notification events
452
+ window.edenAPI.subscribe("notification/added", handleToastAdded);
453
+
454
+ // Subscribe to window size changes
455
+ window.edenAPI.subscribe(
456
+ "view/global-bounds-changed",
457
+ (data: { windowSize: WindowSize }) => {
458
+ windowSize = data.windowSize;
459
+ updateOverlayBounds();
460
+ }
461
+ );
462
+
463
+ // Initial bounds (0x0)
464
+ await updateOverlayBounds();
465
+
466
+ console.log("Eden Toaster ready!");
467
+ }
468
+
469
+ // Start
470
+ init();
@@ -0,0 +1,28 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "useDefineForClassFields": true,
5
+ "module": "ESNext",
6
+ "lib": [
7
+ "ES2020",
8
+ "DOM",
9
+ "DOM.Iterable"
10
+ ],
11
+ "skipLibCheck": true,
12
+ "moduleResolution": "bundler",
13
+ "allowImportingTsExtensions": true,
14
+ "resolveJsonModule": true,
15
+ "isolatedModules": true,
16
+ "noEmit": true,
17
+ "strict": true,
18
+ "noUnusedLocals": true,
19
+ "noUnusedParameters": true,
20
+ "noFallthroughCasesInSwitch": true,
21
+ "types": [
22
+ "@edenapp/types"
23
+ ]
24
+ },
25
+ "include": [
26
+ "src"
27
+ ]
28
+ }
@@ -0,0 +1,18 @@
1
+ import { defineConfig } from "vite";
2
+ import * as path from "path";
3
+
4
+ export default defineConfig({
5
+ root: __dirname,
6
+ base: "./",
7
+ build: {
8
+ outDir: "dist",
9
+ emptyOutDir: true,
10
+ rollupOptions: {
11
+ input: path.resolve(__dirname, "index.html"),
12
+ },
13
+ },
14
+ server: {
15
+ port: 5200,
16
+ strictPort: true,
17
+ },
18
+ });