@treenity/react 3.0.0 → 3.0.1

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 (369) hide show
  1. package/README.md +91 -0
  2. package/dist/AclEditor.d.ts +1 -1
  3. package/dist/AclEditor.d.ts.map +1 -1
  4. package/dist/AclEditor.js +5 -5
  5. package/dist/AclEditor.js.map +1 -1
  6. package/dist/ActionCards.d.ts +9 -0
  7. package/dist/ActionCards.d.ts.map +1 -0
  8. package/dist/ActionCards.js +96 -0
  9. package/dist/ActionCards.js.map +1 -0
  10. package/dist/App.d.ts.map +1 -1
  11. package/dist/App.js +71 -185
  12. package/dist/App.js.map +1 -1
  13. package/dist/ComponentSection.d.ts +15 -0
  14. package/dist/ComponentSection.d.ts.map +1 -0
  15. package/dist/ComponentSection.js +25 -0
  16. package/dist/ComponentSection.js.map +1 -0
  17. package/dist/ErrorBoundary.d.ts +18 -0
  18. package/dist/ErrorBoundary.d.ts.map +1 -0
  19. package/dist/ErrorBoundary.js +17 -0
  20. package/dist/ErrorBoundary.js.map +1 -0
  21. package/dist/Inspector.d.ts +1 -0
  22. package/dist/Inspector.d.ts.map +1 -1
  23. package/dist/Inspector.js +22 -347
  24. package/dist/Inspector.js.map +1 -1
  25. package/dist/Login.d.ts +8 -0
  26. package/dist/Login.d.ts.map +1 -0
  27. package/dist/Login.js +45 -0
  28. package/dist/Login.js.map +1 -0
  29. package/dist/NodeEditor.d.ts +11 -0
  30. package/dist/NodeEditor.d.ts.map +1 -0
  31. package/dist/NodeEditor.js +157 -0
  32. package/dist/NodeEditor.js.map +1 -0
  33. package/dist/Tree.d.ts +1 -0
  34. package/dist/Tree.d.ts.map +1 -1
  35. package/dist/Tree.js +8 -27
  36. package/dist/Tree.js.map +1 -1
  37. package/dist/bind/engine.js +1 -1
  38. package/dist/bind/engine.js.map +1 -1
  39. package/dist/bind/eval.d.ts +1 -1
  40. package/dist/bind/eval.d.ts.map +1 -1
  41. package/dist/bind/hook.d.ts +1 -1
  42. package/dist/bind/hook.d.ts.map +1 -1
  43. package/dist/bind/hook.js +1 -1
  44. package/dist/bind/hook.js.map +1 -1
  45. package/dist/cache.d.ts +1 -1
  46. package/dist/cache.d.ts.map +1 -1
  47. package/dist/cache.js +4 -0
  48. package/dist/cache.js.map +1 -1
  49. package/dist/client-tree.d.ts +1 -2
  50. package/dist/client-tree.d.ts.map +1 -1
  51. package/dist/client-tree.js +12 -5
  52. package/dist/client-tree.js.map +1 -1
  53. package/dist/client.d.ts +1 -1
  54. package/dist/client.d.ts.map +1 -1
  55. package/dist/client.js +2 -4
  56. package/dist/client.js.map +1 -1
  57. package/dist/components/ConfirmDialog.d.ts +9 -0
  58. package/dist/components/ConfirmDialog.d.ts.map +1 -0
  59. package/dist/components/ConfirmDialog.js +6 -0
  60. package/dist/components/ConfirmDialog.js.map +1 -0
  61. package/dist/components/ConfirmPopover.d.ts +8 -0
  62. package/dist/components/ConfirmPopover.d.ts.map +1 -0
  63. package/dist/components/ConfirmPopover.js +9 -0
  64. package/dist/components/ConfirmPopover.js.map +1 -0
  65. package/dist/components/PathBreadcrumb.d.ts +5 -0
  66. package/dist/components/PathBreadcrumb.d.ts.map +1 -0
  67. package/dist/components/PathBreadcrumb.js +16 -0
  68. package/dist/components/PathBreadcrumb.js.map +1 -0
  69. package/dist/components/lib/utils.d.ts +3 -0
  70. package/dist/components/lib/utils.d.ts.map +1 -0
  71. package/dist/components/lib/utils.js +6 -0
  72. package/dist/components/lib/utils.js.map +1 -0
  73. package/dist/components/ui/accordion.js +1 -1
  74. package/dist/components/ui/accordion.js.map +1 -1
  75. package/dist/components/ui/alert-dialog.d.ts +19 -0
  76. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  77. package/dist/components/ui/alert-dialog.js +42 -0
  78. package/dist/components/ui/alert-dialog.js.map +1 -0
  79. package/dist/components/ui/badge.js +1 -1
  80. package/dist/components/ui/badge.js.map +1 -1
  81. package/dist/components/ui/breadcrumb.d.ts +12 -0
  82. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  83. package/dist/components/ui/breadcrumb.js +28 -0
  84. package/dist/components/ui/breadcrumb.js.map +1 -0
  85. package/dist/components/ui/button.d.ts +9 -8
  86. package/dist/components/ui/button.d.ts.map +1 -1
  87. package/dist/components/ui/button.js +26 -21
  88. package/dist/components/ui/button.js.map +1 -1
  89. package/dist/components/ui/card.d.ts +10 -0
  90. package/dist/components/ui/card.d.ts.map +1 -0
  91. package/dist/components/ui/card.js +25 -0
  92. package/dist/components/ui/card.js.map +1 -0
  93. package/dist/components/ui/checkbox.js +1 -1
  94. package/dist/components/ui/checkbox.js.map +1 -1
  95. package/dist/components/ui/collapsible.d.ts +6 -0
  96. package/dist/components/ui/collapsible.d.ts.map +1 -0
  97. package/dist/components/ui/collapsible.js +13 -0
  98. package/dist/components/ui/collapsible.js.map +1 -0
  99. package/dist/components/ui/command.d.ts +19 -0
  100. package/dist/components/ui/command.d.ts.map +1 -0
  101. package/dist/components/ui/command.js +35 -0
  102. package/dist/components/ui/command.js.map +1 -0
  103. package/dist/components/ui/dialog.d.ts.map +1 -1
  104. package/dist/components/ui/dialog.js +1 -1
  105. package/dist/components/ui/dialog.js.map +1 -1
  106. package/dist/components/ui/drawer.js +1 -1
  107. package/dist/components/ui/drawer.js.map +1 -1
  108. package/dist/components/ui/dropdown-menu.d.ts +26 -0
  109. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  110. package/dist/components/ui/dropdown-menu.js +52 -0
  111. package/dist/components/ui/dropdown-menu.js.map +1 -0
  112. package/dist/components/ui/form-field.d.ts +7 -0
  113. package/dist/components/ui/form-field.d.ts.map +1 -0
  114. package/dist/components/ui/form-field.js +17 -0
  115. package/dist/components/ui/form-field.js.map +1 -0
  116. package/dist/components/ui/input.js +1 -1
  117. package/dist/components/ui/input.js.map +1 -1
  118. package/dist/components/ui/label.js +1 -1
  119. package/dist/components/ui/label.js.map +1 -1
  120. package/dist/components/ui/pagination.d.ts +14 -0
  121. package/dist/components/ui/pagination.d.ts.map +1 -0
  122. package/dist/components/ui/pagination.js +30 -0
  123. package/dist/components/ui/pagination.js.map +1 -0
  124. package/dist/components/ui/popover.js +2 -2
  125. package/dist/components/ui/popover.js.map +1 -1
  126. package/dist/components/ui/progress.js +1 -1
  127. package/dist/components/ui/progress.js.map +1 -1
  128. package/dist/components/ui/resizable.d.ts +8 -0
  129. package/dist/components/ui/resizable.d.ts.map +1 -0
  130. package/dist/components/ui/resizable.js +14 -0
  131. package/dist/components/ui/resizable.js.map +1 -0
  132. package/dist/components/ui/scroll-area.d.ts +6 -0
  133. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  134. package/dist/components/ui/scroll-area.js +13 -0
  135. package/dist/components/ui/scroll-area.js.map +1 -0
  136. package/dist/components/ui/select.js +1 -1
  137. package/dist/components/ui/select.js.map +1 -1
  138. package/dist/components/ui/separator.d.ts +5 -0
  139. package/dist/components/ui/separator.d.ts.map +1 -0
  140. package/dist/components/ui/separator.js +9 -0
  141. package/dist/components/ui/separator.js.map +1 -0
  142. package/dist/components/ui/sheet.d.ts +15 -0
  143. package/dist/components/ui/sheet.d.ts.map +1 -0
  144. package/dist/components/ui/sheet.js +40 -0
  145. package/dist/components/ui/sheet.js.map +1 -0
  146. package/dist/components/ui/skeleton.d.ts +3 -0
  147. package/dist/components/ui/skeleton.d.ts.map +1 -0
  148. package/dist/components/ui/skeleton.js +7 -0
  149. package/dist/components/ui/skeleton.js.map +1 -0
  150. package/dist/components/ui/slider.js +1 -1
  151. package/dist/components/ui/slider.js.map +1 -1
  152. package/dist/components/ui/switch.js +1 -1
  153. package/dist/components/ui/switch.js.map +1 -1
  154. package/dist/components/ui/table.d.ts +11 -0
  155. package/dist/components/ui/table.d.ts.map +1 -0
  156. package/dist/components/ui/table.js +29 -0
  157. package/dist/components/ui/table.js.map +1 -0
  158. package/dist/components/ui/tabs.d.ts +12 -0
  159. package/dist/components/ui/tabs.d.ts.map +1 -0
  160. package/dist/components/ui/tabs.js +29 -0
  161. package/dist/components/ui/tabs.js.map +1 -0
  162. package/dist/components/ui/textarea.js +1 -1
  163. package/dist/components/ui/textarea.js.map +1 -1
  164. package/dist/components/ui/toggle-group.d.ts +10 -0
  165. package/dist/components/ui/toggle-group.d.ts.map +1 -0
  166. package/dist/components/ui/toggle-group.js +23 -0
  167. package/dist/components/ui/toggle-group.js.map +1 -0
  168. package/dist/components/ui/toggle.d.ts +10 -0
  169. package/dist/components/ui/toggle.d.ts.map +1 -0
  170. package/dist/components/ui/toggle.js +27 -0
  171. package/dist/components/ui/toggle.js.map +1 -0
  172. package/dist/components/ui/tooltip.js +1 -1
  173. package/dist/components/ui/tooltip.js.map +1 -1
  174. package/dist/context/index.d.ts +27 -10
  175. package/dist/context/index.d.ts.map +1 -1
  176. package/dist/context/index.js +43 -36
  177. package/dist/context/index.js.map +1 -1
  178. package/dist/events.d.ts +10 -0
  179. package/dist/events.d.ts.map +1 -0
  180. package/dist/events.js +78 -0
  181. package/dist/events.js.map +1 -0
  182. package/dist/fiber-tree.d.ts +3 -0
  183. package/dist/fiber-tree.d.ts.map +1 -0
  184. package/dist/fiber-tree.js +93 -0
  185. package/dist/fiber-tree.js.map +1 -0
  186. package/dist/hooks.d.ts +5 -2
  187. package/dist/hooks.d.ts.map +1 -1
  188. package/dist/hooks.js +66 -6
  189. package/dist/hooks.js.map +1 -1
  190. package/dist/idb.d.ts +1 -1
  191. package/dist/idb.d.ts.map +1 -1
  192. package/dist/lib/to-plain.d.ts +2 -0
  193. package/dist/lib/to-plain.d.ts.map +1 -0
  194. package/dist/lib/to-plain.js +21 -0
  195. package/dist/lib/to-plain.js.map +1 -0
  196. package/dist/main.d.ts +1 -1
  197. package/dist/main.d.ts.map +1 -1
  198. package/dist/main.js +4 -3
  199. package/dist/main.js.map +1 -1
  200. package/dist/mods/clients.d.ts +3 -0
  201. package/dist/mods/clients.d.ts.map +1 -0
  202. package/dist/mods/clients.js +4 -0
  203. package/dist/mods/clients.js.map +1 -0
  204. package/dist/mods/editor-ui/FieldLabel.d.ts +15 -0
  205. package/dist/mods/editor-ui/FieldLabel.d.ts.map +1 -0
  206. package/dist/mods/editor-ui/FieldLabel.js +55 -0
  207. package/dist/mods/editor-ui/FieldLabel.js.map +1 -0
  208. package/dist/mods/editor-ui/client.d.ts +1 -1
  209. package/dist/mods/editor-ui/client.d.ts.map +1 -1
  210. package/dist/mods/editor-ui/client.js +1 -1
  211. package/dist/mods/editor-ui/client.js.map +1 -1
  212. package/dist/mods/editor-ui/default-edit.d.ts +2 -0
  213. package/dist/mods/editor-ui/default-edit.d.ts.map +1 -0
  214. package/dist/mods/editor-ui/default-edit.js +54 -0
  215. package/dist/mods/editor-ui/default-edit.js.map +1 -0
  216. package/dist/mods/editor-ui/default-view.d.ts +8 -1
  217. package/dist/mods/editor-ui/default-view.d.ts.map +1 -1
  218. package/dist/mods/editor-ui/default-view.js +8 -5
  219. package/dist/mods/editor-ui/default-view.js.map +1 -1
  220. package/dist/mods/editor-ui/dir-view.js +0 -2
  221. package/dist/mods/editor-ui/dir-view.js.map +1 -1
  222. package/dist/mods/editor-ui/empty-placeholder.d.ts +5 -0
  223. package/dist/mods/editor-ui/empty-placeholder.d.ts.map +1 -0
  224. package/dist/mods/editor-ui/empty-placeholder.js +14 -0
  225. package/dist/mods/editor-ui/empty-placeholder.js.map +1 -0
  226. package/dist/mods/editor-ui/form-field.d.ts +17 -0
  227. package/dist/mods/editor-ui/form-field.d.ts.map +1 -0
  228. package/dist/mods/editor-ui/form-field.js +68 -0
  229. package/dist/mods/editor-ui/form-field.js.map +1 -0
  230. package/dist/mods/editor-ui/form-fields.d.ts +1 -2
  231. package/dist/mods/editor-ui/form-fields.d.ts.map +1 -1
  232. package/dist/mods/editor-ui/form-fields.js +56 -60
  233. package/dist/mods/editor-ui/form-fields.js.map +1 -1
  234. package/dist/mods/editor-ui/layout-view.js +3 -2
  235. package/dist/mods/editor-ui/layout-view.js.map +1 -1
  236. package/dist/mods/editor-ui/list-items.js +1 -1
  237. package/dist/mods/editor-ui/list-items.js.map +1 -1
  238. package/dist/mods/editor-ui/node-utils.d.ts +2 -2
  239. package/dist/mods/editor-ui/node-utils.d.ts.map +1 -1
  240. package/dist/mods/editor-ui/node-utils.js +4 -5
  241. package/dist/mods/editor-ui/node-utils.js.map +1 -1
  242. package/dist/mods/editor-ui/type-picker.d.ts +15 -0
  243. package/dist/mods/editor-ui/type-picker.d.ts.map +1 -0
  244. package/dist/mods/editor-ui/type-picker.js +69 -0
  245. package/dist/mods/editor-ui/type-picker.js.map +1 -0
  246. package/dist/mods/editor-ui/user-view.js +1 -1
  247. package/dist/mods/editor-ui/user-view.js.map +1 -1
  248. package/dist/mods/servers.d.ts +1 -0
  249. package/dist/mods/servers.d.ts.map +1 -0
  250. package/dist/mods/servers.js +4 -0
  251. package/dist/mods/servers.js.map +1 -0
  252. package/dist/mods/treenity/groups/index.js +1 -1
  253. package/dist/mods/treenity/groups/index.js.map +1 -1
  254. package/dist/mods/treenity/preview.js +1 -1
  255. package/dist/mods/treenity/preview.js.map +1 -1
  256. package/dist/mods/treenity/ref-view.js +1 -1
  257. package/dist/mods/treenity/ref-view.js.map +1 -1
  258. package/dist/mods/treenity/schema-form.js +1 -1
  259. package/dist/mods/treenity/schema-form.js.map +1 -1
  260. package/dist/mods/treenity/seed.js +1 -1
  261. package/dist/mods/treenity/seed.js.map +1 -1
  262. package/dist/mods/treenity/type-view.js +1 -1
  263. package/dist/mods/treenity/type-view.js.map +1 -1
  264. package/dist/schema-loader.d.ts +1 -1
  265. package/dist/schema-loader.d.ts.map +1 -1
  266. package/dist/schema-loader.js +1 -1
  267. package/dist/schema-loader.js.map +1 -1
  268. package/dist/symbols.d.ts +5 -0
  269. package/dist/symbols.d.ts.map +1 -0
  270. package/dist/symbols.js +16 -0
  271. package/dist/symbols.js.map +1 -0
  272. package/dist/trpc.d.ts +10 -3
  273. package/dist/trpc.d.ts.map +1 -1
  274. package/package.json +74 -8
  275. package/src/AclEditor.tsx +11 -18
  276. package/src/ActionCards.tsx +224 -0
  277. package/src/App.tsx +204 -385
  278. package/src/ComponentSection.tsx +113 -0
  279. package/src/ErrorBoundary.tsx +37 -0
  280. package/src/Inspector.css +54 -0
  281. package/src/Inspector.tsx +73 -793
  282. package/src/Login.tsx +97 -0
  283. package/src/NodeEditor.tsx +300 -0
  284. package/src/Tree.css +91 -0
  285. package/src/Tree.tsx +40 -43
  286. package/src/bind/bind.test.ts +1 -1
  287. package/src/bind/engine.ts +1 -1
  288. package/src/bind/eval.ts +1 -1
  289. package/src/bind/hook.ts +1 -1
  290. package/src/bind/pipes.ts +1 -1
  291. package/src/cache.ts +5 -1
  292. package/src/client-tree.test.ts +1 -1
  293. package/src/client-tree.ts +22 -16
  294. package/src/client.ts +2 -4
  295. package/src/components/ConfirmDialog.tsx +34 -0
  296. package/src/components/ConfirmPopover.tsx +41 -0
  297. package/src/components/PathBreadcrumb.tsx +36 -0
  298. package/src/components/lib/utils.ts +6 -0
  299. package/src/components/lib/utils.ts.bak +6 -0
  300. package/src/components/ui/accordion.tsx +1 -1
  301. package/src/components/ui/alert-dialog.tsx +189 -0
  302. package/src/components/ui/badge.tsx +1 -1
  303. package/src/components/ui/breadcrumb.tsx +108 -0
  304. package/src/components/ui/button.tsx +53 -31
  305. package/src/components/ui/card.tsx +91 -0
  306. package/src/components/ui/checkbox.tsx +1 -1
  307. package/src/components/ui/collapsible.tsx +31 -0
  308. package/src/components/ui/command.tsx +177 -0
  309. package/src/components/ui/dialog.tsx +1 -2
  310. package/src/components/ui/drawer.tsx +1 -1
  311. package/src/components/ui/dropdown-menu.tsx +256 -0
  312. package/src/components/ui/form-field.tsx +37 -0
  313. package/src/components/ui/input.tsx +1 -1
  314. package/src/components/ui/label.tsx +1 -1
  315. package/src/components/ui/pagination.tsx +127 -0
  316. package/src/components/ui/popover.tsx +2 -2
  317. package/src/components/ui/progress.tsx +1 -1
  318. package/src/components/ui/resizable.tsx +47 -0
  319. package/src/components/ui/scroll-area.tsx +55 -0
  320. package/src/components/ui/select.tsx +1 -1
  321. package/src/components/ui/separator.tsx +27 -0
  322. package/src/components/ui/sheet.tsx +140 -0
  323. package/src/components/ui/skeleton.tsx +13 -0
  324. package/src/components/ui/slider.tsx +1 -1
  325. package/src/components/ui/switch.tsx +1 -1
  326. package/src/components/ui/table.tsx +115 -0
  327. package/src/components/ui/tabs.tsx +88 -0
  328. package/src/components/ui/textarea.tsx +1 -1
  329. package/src/components/ui/toggle-group.tsx +82 -0
  330. package/src/components/ui/toggle.tsx +46 -0
  331. package/src/components/ui/tooltip.tsx +1 -1
  332. package/src/context/index.tsx +75 -42
  333. package/src/events.ts +81 -0
  334. package/src/fiber-tree.ts +112 -0
  335. package/src/hooks.ts +88 -9
  336. package/src/idb.ts +1 -1
  337. package/src/lib/to-plain.ts +21 -0
  338. package/src/main.tsx +3 -1
  339. package/src/mods/clients.ts +3 -0
  340. package/src/mods/editor-ui/FieldLabel.tsx +124 -0
  341. package/src/mods/editor-ui/client.ts +1 -1
  342. package/src/mods/editor-ui/default-edit.tsx +99 -0
  343. package/src/mods/editor-ui/default-view.tsx +13 -8
  344. package/src/mods/editor-ui/dir-view.tsx +2 -2
  345. package/src/mods/editor-ui/editor-ui.css +174 -0
  346. package/src/mods/editor-ui/empty-placeholder.tsx +39 -0
  347. package/src/mods/editor-ui/form-field.tsx +144 -0
  348. package/src/mods/editor-ui/form-fields.tsx +132 -113
  349. package/src/mods/editor-ui/layout-view.tsx +4 -2
  350. package/src/mods/editor-ui/list-items.tsx +2 -2
  351. package/src/mods/editor-ui/node-utils.ts +4 -5
  352. package/src/mods/editor-ui/type-picker.tsx +147 -0
  353. package/src/mods/editor-ui/user-view.tsx +1 -1
  354. package/src/mods/servers.ts +2 -0
  355. package/src/mods/treenity/groups/index.tsx +1 -1
  356. package/src/mods/treenity/preview.tsx +1 -1
  357. package/src/mods/treenity/ref-view.tsx +1 -1
  358. package/src/mods/treenity/schema-form.tsx +1 -1
  359. package/src/mods/treenity/seed.ts +1 -1
  360. package/src/mods/treenity/type-view.tsx +1 -1
  361. package/src/optimistic.test.ts +111 -0
  362. package/src/remote-tree.test.ts +1 -1
  363. package/src/remote-tree.ts +1 -1
  364. package/src/root.css +117 -0
  365. package/src/schema-loader.ts +1 -1
  366. package/src/symbols.ts +18 -0
  367. package/src/index.html +0 -14
  368. package/src/style.css +0 -1269
  369. package/src/vite-env.d.ts +0 -3
package/dist/Inspector.js CHANGED
@@ -1,360 +1,35 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // Inspector — view + edit panel for selected node (Unity-style inspector)
3
- // Shell only: delegates rendering to registered views, provides generic edit UI
3
+ // Shell only: header, rendered view, delegates editing to NodeEditor
4
+ import './Inspector.css';
5
+ import { ConfirmDialog } from '#components/ConfirmDialog';
6
+ import { PathBreadcrumb } from '#components/PathBreadcrumb';
7
+ import { Badge } from '#components/ui/badge';
8
+ import { Button } from '#components/ui/button';
9
+ import { ScrollArea } from '#components/ui/scroll-area';
4
10
  import { Render, RenderContext } from '#context';
5
- import { getActions, getActionSchema, getComponents, getPlainFields, getSchema, getViewContexts, pickDefaultContext, } from '#mods/editor-ui/node-utils';
6
- import { resolve, resolveExact } from '@treenity/core/core';
7
- import { createElement, useEffect, useRef, useState } from 'react';
8
- import { AclEditor } from './AclEditor';
9
- import * as cache from './cache';
10
- import { set, usePath } from './hooks';
11
- import { useSchema } from './schema-loader';
12
- import { trpc } from './trpc';
13
- // Breadcrumb from path
14
- function Breadcrumb({ path, onSelect }) {
15
- if (path === '/')
16
- return (_jsx("div", { className: "editor-breadcrumb", children: _jsx("span", { children: "/" }) }));
17
- const parts = path.split('/').filter(Boolean);
18
- const crumbs = [{ label: '/', path: '/' }];
19
- let cur = '';
20
- for (const p of parts) {
21
- cur += '/' + p;
22
- crumbs.push({ label: p, path: cur });
23
- }
24
- return (_jsx("div", { className: "editor-breadcrumb", children: crumbs.map((c, i) => (_jsxs("span", { children: [i > 0 && _jsx("span", { className: "sep", children: "/" }), _jsx("span", { onClick: () => onSelect(c.path), children: c.label === '/' ? 'root' : c.label })] }, c.path))) }));
25
- }
26
- // Pretty-print action result value
27
- function ResultView({ value }) {
28
- if (value === undefined || value === null)
29
- return null;
30
- if (typeof value !== 'object')
31
- return _jsx("span", { className: "font-mono text-[11px]", children: String(value) });
32
- // Object/array with typed $type → render via Render
33
- if ('$type' in value) {
34
- return _jsx(Render, { value: value });
35
- }
36
- // Plain object — key/value pairs
37
- const entries = Object.entries(value);
38
- if (entries.length === 0)
39
- return _jsx("span", { className: "text-muted-foreground text-[11px]", children: "empty" });
40
- return (_jsx("div", { className: "flex flex-col gap-0.5", children: entries.map(([k, v]) => (_jsxs("div", { className: "flex gap-2 text-[11px]", children: [_jsx("span", { className: "text-muted-foreground shrink-0", children: k }), _jsx("span", { className: "font-mono text-foreground/80 truncate", children: typeof v === 'object' && v !== null ? JSON.stringify(v) : String(v ?? '') })] }, k))) }));
41
- }
42
- // Action pills — compact action buttons that expand on click
43
- function ActionCardList({ path, componentName, compType, toast, onActionComplete, }) {
44
- const schema = useSchema(compType);
45
- const [expanded, setExpanded] = useState(null);
46
- const [paramsText, setParamsText] = useState({});
47
- const [schemaData, setSchemaData] = useState({});
48
- const [running, setRunning] = useState(null);
49
- const [results, setResults] = useState({});
50
- const [resultMode, setResultMode] = useState({});
51
- if (schema === undefined)
52
- return null;
53
- const actions = getActions(compType, schema);
54
- if (actions.length === 0)
55
- return null;
56
- async function run(a) {
57
- setRunning(a);
58
- try {
59
- const actionSchema = getActionSchema(compType, a);
60
- let data = {};
61
- if (actionSchema) {
62
- data = schemaData[a] ?? {};
63
- }
64
- else {
65
- const raw = (paramsText[a] ?? '').trim();
66
- if (raw && raw !== '{}') {
67
- try {
68
- data = JSON.parse(raw);
69
- }
70
- catch {
71
- toast('Invalid JSON params');
72
- setRunning(null);
73
- return;
74
- }
75
- }
76
- }
77
- const result = await trpc.execute.mutate({ path, key: componentName, action: a, data });
78
- const fresh = (await trpc.get.query({ path, watch: true }));
79
- if (fresh)
80
- cache.put(fresh);
81
- onActionComplete?.();
82
- setResults((prev) => ({ ...prev, [a]: { ok: true, value: result } }));
83
- setExpanded(a);
84
- }
85
- catch (e) {
86
- setResults((prev) => ({
87
- ...prev,
88
- [a]: { ok: false, value: e instanceof Error ? e.message : String(e) },
89
- }));
90
- setExpanded(a);
91
- }
92
- finally {
93
- setRunning(null);
94
- }
95
- }
96
- return (_jsxs("div", { className: "action-pills", children: [_jsx("div", { className: "flex flex-wrap gap-1.5", children: actions.map((a) => (_jsxs("button", { className: `action-pill${expanded === a ? ' active' : ''}${running === a ? ' running' : ''}`, onClick: () => setExpanded(expanded === a ? null : a), children: [running === a ? '...' : a, results[a] && !results[a].ok && expanded !== a && (_jsx("span", { className: "ml-1 text-destructive", children: "!" })), results[a]?.ok && expanded !== a && (_jsx("span", { className: "ml-1 text-primary/60", children: "\u2713" }))] }, a))) }), expanded && (() => {
97
- const a = expanded;
98
- const actionSchema = getActionSchema(compType, a);
99
- const hasParams = actionSchema !== null && Object.keys(actionSchema.properties).length > 0;
100
- const noParams = actionSchema !== null && Object.keys(actionSchema.properties).length === 0;
101
- const result = results[a];
102
- const mode = resultMode[a] ?? 'pretty';
103
- return (_jsxs("div", { className: "action-detail", children: [hasParams && (_jsx("div", { className: "flex flex-col gap-1.5 mb-2", children: Object.entries(actionSchema.properties).map(([field, prop]) => {
104
- const p = prop;
105
- const val = (schemaData[a] ?? {})[field];
106
- const setField = (v) => setSchemaData((prev) => ({
107
- ...prev,
108
- [a]: { ...(prev[a] ?? {}), [field]: v },
109
- }));
110
- return (_jsxs("div", { className: "action-detail-field", children: [_jsx("label", { children: p.title ?? field }), p.type === 'number' || p.format === 'number' ? (_jsx("input", { type: "number", value: String(val ?? 0), onChange: (e) => setField(Number(e.target.value)) })) : p.type === 'boolean' ? (_jsxs("label", { className: "flex items-center gap-1.5 cursor-pointer", children: [_jsx("input", { type: "checkbox", checked: !!val, className: "w-auto", onChange: (e) => setField(e.target.checked) }), _jsx("span", { className: "text-[11px]", children: val ? 'true' : 'false' })] })) : (_jsx("input", { value: String(val ?? ''), onChange: (e) => setField(e.target.value) }))] }, field));
111
- }) })), !hasParams && !noParams && (_jsx("textarea", { className: "action-params-input mb-2", value: paramsText[a] ?? '{}', onChange: (e) => setParamsText((prev) => ({ ...prev, [a]: e.target.value })), spellCheck: false, rows: 2 })), _jsxs("button", { className: "action-run-btn", disabled: running !== null, onClick: () => run(a), children: [running === a ? '...' : '▶', " ", a] }), result && (_jsx("div", { className: `action-result-box${result.ok ? '' : ' error'}`, children: !result.ok ? (_jsx("span", { className: "text-destructive font-mono text-[11px]", children: String(result.value) })) : result.value === undefined || result.value === null ? (_jsx("span", { className: "text-primary text-[11px]", children: "\u2713 done" })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between mb-1", children: [_jsx("span", { className: "text-[10px] text-muted-foreground uppercase tracking-wider", children: "Result" }), typeof result.value === 'object' && (_jsxs("div", { className: "flex gap-0.5", children: [_jsx("button", { className: `action-mode-btn${mode === 'pretty' ? ' active' : ''}`, onClick: () => setResultMode((p) => ({ ...p, [a]: 'pretty' })), children: "View" }), _jsx("button", { className: `action-mode-btn${mode === 'json' ? ' active' : ''}`, onClick: () => setResultMode((p) => ({ ...p, [a]: 'json' })), children: "JSON" })] }))] }), mode === 'json' ? (_jsx("pre", { className: "text-[11px] font-mono text-foreground/60 whitespace-pre-wrap break-all leading-relaxed", children: JSON.stringify(result.value, null, 2) })) : (_jsx(ResultView, { value: result.value }))] })) }))] }));
112
- })()] }));
113
- }
114
- function renderField(name, fieldSchema, plainData, setPlainData) {
115
- const ctx = fieldSchema.readOnly ? 'react' : 'react:form';
116
- const handler = resolveExact(fieldSchema.type, ctx) ?? resolveExact('string', ctx);
117
- if (!handler)
118
- return (_jsxs("div", { className: "text-[--danger] text-xs", children: ["No form handler: ", fieldSchema.type] }, name));
119
- const fieldData = {
120
- $type: fieldSchema.type,
121
- value: plainData[name],
122
- label: fieldSchema.label,
123
- placeholder: fieldSchema.placeholder,
124
- };
125
- if (fieldSchema.items)
126
- fieldData.items = fieldSchema.items;
127
- if (fieldSchema.enum)
128
- fieldData.enum = fieldSchema.enum;
129
- if (fieldSchema.refType)
130
- fieldData.refType = fieldSchema.refType;
131
- const isComplex = fieldSchema.type === 'object' || fieldSchema.type === 'array';
132
- return (_jsxs("div", { className: isComplex ? 'field stack' : 'field', children: [fieldSchema.type !== 'boolean' && _jsx("label", { children: fieldSchema.label }), createElement(handler, {
133
- value: fieldData,
134
- onChange: fieldSchema.readOnly
135
- ? undefined
136
- : (next) => setPlainData((prev) => ({ ...prev, [name]: next.value })),
137
- })] }, name));
138
- }
139
- // Inline string-array editor for raw component fields without schema
140
- function StringArrayField({ value, onChange, }) {
141
- const [input, setInput] = useState('');
142
- const isStrings = value.every((v) => typeof v === 'string');
143
- if (!isStrings) {
144
- return (_jsx("textarea", { value: JSON.stringify(value, null, 2), onChange: (e) => {
145
- try {
146
- onChange(JSON.parse(e.target.value));
147
- }
148
- catch {
149
- /* typing */
150
- }
151
- } }));
152
- }
153
- const tags = value;
154
- return (_jsxs("div", { className: "flex-1 space-y-1", children: [_jsx("div", { className: "flex flex-wrap gap-1", children: tags.map((tag, i) => (_jsxs("span", { className: "inline-flex items-center gap-0.5 text-[11px] font-mono bg-muted text-foreground/70 px-1.5 py-0.5 rounded", children: [tag, _jsx("button", { type: "button", className: "ml-0.5 border-0 bg-transparent p-0 text-muted-foreground/40 hover:text-foreground leading-none cursor-pointer", onClick: () => onChange(tags.filter((_, j) => j !== i)), children: "\u00D7" })] }, i))) }), _jsx("input", { className: "text-xs w-full", placeholder: "Add item...", value: input, onChange: (e) => setInput(e.target.value), onKeyDown: (e) => {
155
- if (e.key !== 'Enter')
156
- return;
157
- e.preventDefault();
158
- const t = input.trim();
159
- if (t && !tags.includes(t))
160
- onChange([...tags, t]);
161
- setInput('');
162
- } })] }));
163
- }
164
- function NodeCard({ path, type, onChangeType, }) {
165
- const [open, setOpen] = useState(false);
166
- return (_jsxs("div", { className: "card", children: [_jsxs("div", { className: "card-header cursor-pointer select-none", onClick: () => setOpen((v) => !v), children: [_jsx("span", { children: "Node" }), _jsxs("span", { className: "flex items-center gap-2 normal-case tracking-normal font-normal text-[11px] font-mono text-foreground/50", children: [path, _jsx("span", { className: "text-primary", children: type }), open ? (_jsx("svg", { className: "h-3 w-3", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "m6 9 6 6 6-6" }) })) : (_jsx("svg", { className: "h-3 w-3", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "m9 18 6-6-6-6" }) }))] })] }), open && (_jsxs("div", { className: "card-body", children: [_jsxs("div", { className: "field", children: [_jsx("label", { children: "$path" }), _jsx("input", { value: path, readOnly: true })] }), _jsxs("div", { className: "field", children: [_jsx("label", { children: "$type" }), _jsx("input", { value: type, onChange: (e) => onChangeType(e.target.value) })] })] }))] }));
167
- }
168
- function ComponentBody({ ctype, cdata, setCD, path, componentName, toast, onActionComplete, }) {
169
- const cschema = useSchema(ctype);
170
- if (cschema === undefined)
171
- return null;
172
- return (_jsxs("div", { className: "card-body", children: [cschema && Object.keys(cschema.properties).length > 0 ? (Object.entries(cschema.properties).map(([field, prop]) => {
173
- const p = prop;
174
- return renderField(field, {
175
- type: p.format ?? p.type, label: p.title ?? field, placeholder: p.description,
176
- readOnly: p.readOnly, enum: p.enum, items: p.items, refType: p.refType,
177
- }, cdata, setCD);
178
- })) : Object.keys(cdata).length > 0 ? (Object.entries(cdata).map(([k, v]) => (_jsxs("div", { className: `field${Array.isArray(v) || (typeof v === 'object' && v !== null) ? ' stack' : ''}`, children: [_jsx("label", { children: k }), typeof v === 'boolean' ? (_jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [_jsx("input", { type: "checkbox", checked: !!cdata[k], className: "w-auto", onChange: (e) => setCD((prev) => ({ ...prev, [k]: e.target.checked })) }), cdata[k] ? 'true' : 'false'] })) : typeof v === 'number' ? (_jsx("input", { type: "number", value: String(cdata[k] ?? 0), onChange: (e) => setCD((prev) => ({ ...prev, [k]: Number(e.target.value) })) })) : Array.isArray(v) ? (_jsx(StringArrayField, { value: cdata[k], onChange: (next) => setCD((prev) => ({ ...prev, [k]: next })) })) : typeof v === 'object' ? ((() => {
179
- const h = resolve('object', 'react:form');
180
- return h
181
- ? createElement(h, {
182
- value: { $type: 'object', value: cdata[k] },
183
- onChange: (next) => setCD((prev) => ({ ...prev, [k]: next.value })),
184
- })
185
- : _jsx("pre", { className: "text-[11px] font-mono text-foreground/60", children: JSON.stringify(cdata[k], null, 2) });
186
- })()) : (_jsx("input", { value: String(cdata[k] ?? ''), onChange: (e) => setCD((prev) => ({ ...prev, [k]: e.target.value })) }))] }, k)))) : (_jsx("pre", { className: "text-[11px] font-mono text-foreground/60 bg-muted/30 rounded p-2 whitespace-pre-wrap", children: JSON.stringify(cdata, null, 2) })), _jsx(ActionCardList, { path: path, componentName: componentName, compType: ctype, compData: cdata, toast: toast, onActionComplete: onActionComplete })] }));
187
- }
11
+ import { getViewContexts, pickDefaultContext } from '#mods/editor-ui/node-utils';
12
+ import { useState } from 'react';
13
+ import { ErrorBoundary } from './ErrorBoundary';
14
+ import { usePath } from './hooks';
15
+ import { NodeEditor } from './NodeEditor';
188
16
  export function Inspector({ path, currentUserId, onDelete, onAddComponent, onSelect, onSetRoot, toast }) {
189
17
  const node = usePath(path);
190
- const [context, setContext] = useState('react');
18
+ const [confirmDelete, setConfirmDelete] = useState(false);
191
19
  const [editing, setEditing] = useState(false);
192
- const [nodeType, setNodeType] = useState('');
193
- const [compTexts, setCompTexts] = useState({});
194
- const [compData, setCompData] = useState({});
195
- const [plainData, setPlainData] = useState({});
196
- const [tab, setTab] = useState('properties');
197
- const [jsonText, setJsonText] = useState('');
198
- const [collapsed, setCollapsed] = useState(new Set());
199
- const [aclOwner, setAclOwner] = useState('');
200
- const [aclRules, setAclRules] = useState([]);
201
- const [dirty, setDirty] = useState(false);
202
- const [stale, setStale] = useState(false);
203
- const syncedPathRef = useRef(null);
204
- const syncedRevRef = useRef(null);
205
- function syncFromNode(n) {
206
- setNodeType(n.$type);
207
- setAclOwner(n.$owner ?? '');
208
- setAclRules(n.$acl ? [...n.$acl] : []);
209
- const texts = {};
210
- const cdata = {};
211
- for (const [name, comp] of getComponents(n)) {
212
- texts[name] = JSON.stringify(comp, null, 2);
213
- const d = {};
214
- for (const [k, v] of Object.entries(comp)) {
215
- if (!k.startsWith('$'))
216
- d[k] = v;
217
- }
218
- cdata[name] = d;
219
- }
220
- setCompTexts(texts);
221
- setCompData(cdata);
222
- setPlainData(getPlainFields(n));
223
- setJsonText(JSON.stringify(n, null, 2));
224
- setTab('properties');
225
- }
226
- useEffect(() => {
227
- if (!node)
228
- return;
229
- const pathChanged = node.$path !== syncedPathRef.current;
230
- if (pathChanged) {
20
+ const [context, setContext] = useState('react');
21
+ // Reset context when path changes
22
+ const [prevPath, setPrevPath] = useState(path);
23
+ if (path !== prevPath) {
24
+ setPrevPath(path);
25
+ if (node)
231
26
  setContext(pickDefaultContext(node.$type));
232
- syncFromNode(node);
233
- syncedPathRef.current = node.$path;
234
- syncedRevRef.current = node.$rev;
235
- setDirty(false);
236
- setStale(false);
237
- return;
238
- }
239
- if (node.$rev !== syncedRevRef.current) {
240
- if (dirty) {
241
- setStale(true);
242
- }
243
- else {
244
- syncFromNode(node);
245
- syncedRevRef.current = node.$rev;
246
- }
247
- }
248
- }, [node?.$path, node?.$rev]);
249
- // Dirty-tracking wrappers — mark form as edited on any user change
250
- const dSetNodeType = (v) => { setNodeType(v); setDirty(true); };
251
- const dSetCompData = (v) => { setCompData(v); setDirty(true); };
252
- const dSetPlainData = (v) => { setPlainData(v); setDirty(true); };
253
- const dSetJsonText = (v) => { setJsonText(v); setDirty(true); };
254
- const dSetAclOwner = (v) => { setAclOwner(v); setDirty(true); };
255
- const dSetAclRules = (v) => { setAclRules(v); setDirty(true); };
256
- function handleReset() {
257
- if (!node)
258
- return;
259
- const current = cache.get(node.$path) ?? node;
260
- syncFromNode(current);
261
- syncedRevRef.current = current.$rev;
262
- setDirty(false);
263
- setStale(false);
264
27
  }
265
28
  if (!node) {
266
- return (_jsx("div", { className: "editor", children: _jsxs("div", { className: "editor-empty", children: [_jsx("div", { className: "icon", children: "\u260D" }), _jsx("p", { children: "Select a node to inspect" })] }) }));
29
+ return (_jsx("div", { className: "flex flex-1 flex-col overflow-hidden bg-background", children: _jsxs("div", { className: "flex flex-1 flex-col items-center justify-center gap-2 text-muted-foreground/40", children: [_jsx("div", { className: "text-[32px] opacity-30", children: "\u260D" }), _jsx("p", { children: "Select a node to inspect" })] }) }));
267
30
  }
268
31
  const nodeName = node.$path === '/' ? '/' : node.$path.slice(node.$path.lastIndexOf('/') + 1);
269
- const components = getComponents(node);
270
32
  const viewContexts = getViewContexts(node.$type, node);
271
- const schemaHandler = resolve(node.$type, 'schema');
272
- const schema = schemaHandler ? schemaHandler() : null;
273
- // Main component: when the node IS the component (its $type has a registered class).
274
- // Show the class's fields (with defaults as fallback for unset fields).
275
- const mainCompCls = resolve(node.$type, 'class');
276
- const mainCompDefaults = mainCompCls ? new mainCompCls() : null;
277
- async function handleSave() {
278
- if (!node)
279
- return;
280
- let toSave;
281
- if (tab === 'json') {
282
- try {
283
- toSave = JSON.parse(jsonText);
284
- }
285
- catch {
286
- toast('Invalid JSON');
287
- return;
288
- }
289
- }
290
- else {
291
- toSave = { $path: node.$path, $type: nodeType, ...plainData };
292
- if (aclOwner)
293
- toSave.$owner = aclOwner;
294
- if (aclRules.length > 0)
295
- toSave.$acl = aclRules;
296
- for (const [name, comp] of components) {
297
- const ctype = comp.$type;
298
- const cschema = getSchema(ctype);
299
- const cd = compData[name];
300
- if ((cschema || (cd && Object.keys(cd).length > 0)) && cd) {
301
- toSave[name] = { $type: ctype, ...cd };
302
- }
303
- else {
304
- const text = compTexts[name];
305
- if (text === undefined)
306
- continue;
307
- try {
308
- toSave[name] = JSON.parse(text);
309
- }
310
- catch {
311
- toast(`Invalid JSON in component: ${name}`);
312
- return;
313
- }
314
- }
315
- }
316
- }
317
- await set(toSave);
318
- const fresh = cache.get(node.$path);
319
- if (fresh) {
320
- syncFromNode(fresh);
321
- syncedRevRef.current = fresh.$rev;
322
- }
323
- setDirty(false);
324
- setStale(false);
325
- toast('Saved');
326
- }
327
- function handleAdd() {
328
- if (!node)
329
- return;
330
- onAddComponent(node.$path);
331
- }
332
- function handleRemoveComponent(name) {
333
- if (!node)
334
- return;
335
- const next = { ...node };
336
- delete next[name];
337
- set(next);
338
- }
339
- function toggleCollapse(name) {
340
- setCollapsed((prev) => {
341
- const next = new Set(prev);
342
- if (next.has(name))
343
- next.delete(name);
344
- else
345
- next.add(name);
346
- return next;
347
- });
348
- }
349
- return (_jsxs("div", { className: "editor", children: [_jsxs("div", { className: "editor-header", children: [_jsx(Breadcrumb, { path: node.$path, onSelect: onSelect }), _jsxs("div", { className: "editor-title", children: [_jsx("h2", { children: nodeName }), _jsx("span", { className: "editor-type-badge", children: node.$type }), _jsx("a", { href: node.$path, target: "_blank", rel: "noopener", className: "text-[11px] text-[--text-3] hover:text-[--accent] no-underline", children: "View \u2197" }), onSetRoot && (_jsx("button", { className: "sm ghost text-[11px]", onClick: () => onSetRoot(node.$path), title: "Focus subtree", children: "\u2302" })), viewContexts.length > 1 && (_jsx("span", { className: "context-buttons", children: viewContexts.map((c) => (_jsx("button", { className: `sm context-btn${context === c ? ' active' : ''}`, onClick: () => setContext(c), children: c }, c))) })), _jsx("span", { className: "spacer" }), _jsx("button", { className: editing ? 'sm' : 'sm primary', onClick: () => setEditing(!editing), children: editing ? 'Close' : 'Edit' }), _jsx("button", { className: "sm danger", onClick: () => {
350
- if (confirm(`Delete ${node.$path}?`))
351
- onDelete(node.$path);
352
- }, children: "Delete" })] })] }), _jsx("div", { className: "editor-body", children: _jsx(RenderContext, { name: context, children: _jsx("div", { className: "node-view", children: _jsx(Render, { value: node }) }) }) }), _jsxs("div", { className: `edit-panel${editing ? ' open' : ''}`, children: [_jsxs("div", { className: "edit-panel-header", children: [_jsxs("span", { children: ["Edit ", nodeName] }), _jsx("button", { className: "sm ghost", onClick: () => setEditing(false), children: "\u2715" })] }), _jsxs("div", { className: "edit-panel-tabs", children: [_jsx("button", { className: `editor-tab${tab === 'properties' ? ' active' : ''}`, onClick: () => setTab('properties'), children: "Properties" }), _jsx("button", { className: `editor-tab${tab === 'json' ? ' active' : ''}`, onClick: () => {
353
- setTab('json');
354
- setJsonText(JSON.stringify({ ...node, ...plainData }, null, 2));
355
- }, children: "JSON" })] }), _jsx("div", { className: "edit-panel-body", children: tab === 'properties' ? (_jsxs(_Fragment, { children: [_jsx(NodeCard, { path: node.$path, type: nodeType, onChangeType: dSetNodeType }), _jsx(AclEditor, { path: node.$path, owner: aclOwner, rules: aclRules, currentUserId: currentUserId, onChange: (o, r) => {
356
- dSetAclOwner(o);
357
- dSetAclRules(r);
358
- } }), (mainCompCls || schema) && (_jsxs("div", { className: "card", children: [_jsx("div", { className: "card-header", children: node.$type }), _jsx(ComponentBody, { ctype: node.$type, cdata: plainData, setCD: (fn) => dSetPlainData(fn), path: node.$path, componentName: "", toast: toast, onActionComplete: handleReset })] })), components.map(([name, comp]) => (_jsxs("div", { className: "card", children: [_jsxs("div", { className: "card-header cursor-pointer select-none", onClick: () => toggleCollapse(name), children: [_jsx("span", { className: "font-mono text-[12px]", children: name }), _jsxs("span", { className: "flex items-center gap-2", children: [_jsx("span", { className: "component-type", children: comp.$type }), _jsx("button", { className: "sm danger", onClick: (e) => { e.stopPropagation(); handleRemoveComponent(name); }, children: "Remove" })] })] }), !collapsed.has(name) && (_jsx(ComponentBody, { ctype: comp.$type, cdata: compData[name] ?? {}, setCD: (fn) => dSetCompData((prev) => ({ ...prev, [name]: fn(prev[name] ?? {}) })), path: node.$path, componentName: name, toast: toast, onActionComplete: handleReset }))] }, name))), !schema && !mainCompDefaults && Object.keys(plainData).length > 0 && (_jsxs("div", { className: "card", children: [_jsx("div", { className: "card-header", children: "Data" }), _jsx("div", { className: "card-body", children: Object.entries(plainData).map(([k, v]) => (_jsxs("div", { className: "field", children: [_jsx("label", { children: k }), _jsx("input", { value: typeof v === 'string' ? v : JSON.stringify(v), onChange: (e) => dSetPlainData((prev) => ({ ...prev, [k]: e.target.value })) })] }, k))) })] }))] })) : (_jsx("div", { className: "json-view", children: _jsx("textarea", { value: jsonText, onChange: (e) => dSetJsonText(e.target.value), spellCheck: false }) })) }), _jsxs("div", { className: "edit-panel-actions", children: [stale && (_jsx("button", { className: "ghost", onClick: handleReset, title: "Node updated externally", children: "Reset" })), _jsx("button", { className: "primary", onClick: handleSave, children: "Save" }), tab === 'properties' && (_jsx("button", { onClick: handleAdd, children: "+ Component" }))] })] })] }));
33
+ return (_jsxs("div", { className: "editor", children: [_jsxs("div", { className: "px-6 pt-4 pb-3 border-b border-border bg-card shrink-0", children: [_jsx(PathBreadcrumb, { path: node.$path, onSelect: onSelect }), _jsxs("div", { className: "flex items-center gap-2.5 flex-wrap", children: [_jsx("h2", { children: nodeName }), _jsx(Badge, { variant: "outline", className: "font-mono text-[10px]", children: node.$type }), _jsx("a", { href: node.$path, target: "_blank", rel: "noopener", className: "text-[11px] text-muted-foreground hover:text-primary no-underline", children: "View \u2197" }), onSetRoot && (_jsx(Button, { variant: "ghost", size: "sm", className: "h-6 px-1.5 text-[11px]", onClick: () => onSetRoot(node.$path), title: "Focus subtree", children: "\u2302" })), viewContexts.length > 1 && (_jsx("span", { className: "flex gap-0.5", children: viewContexts.map((c) => (_jsx(Button, { variant: context === c ? 'default' : 'ghost', size: "sm", className: "h-6 px-2 text-[11px]", onClick: () => setContext(c), children: c.replace('react:', '') }, c))) })), _jsx("span", { className: "flex-1" }), _jsx(Button, { variant: editing ? 'ghost' : 'default', size: "sm", className: "h-7", onClick: () => setEditing(!editing), children: editing ? 'Close' : 'Edit' }), _jsx(Button, { variant: "destructive", size: "sm", className: "h-7", onClick: () => setConfirmDelete(true), children: "Delete" }), _jsx(ConfirmDialog, { open: confirmDelete, onOpenChange: setConfirmDelete, title: `Delete ${node.$path}?`, description: "This action cannot be undone.", variant: "destructive", onConfirm: () => onDelete(node.$path) })] })] }), _jsx(ScrollArea, { className: "flex-1", children: _jsx("div", { className: "p-4", children: _jsx(ErrorBoundary, { children: _jsx(RenderContext, { name: context, children: _jsx("div", { className: "node-view", children: _jsx(Render, { value: node }) }) }) }) }) }), _jsx(NodeEditor, { node: node, open: editing, onClose: () => setEditing(false), currentUserId: currentUserId, toast: toast, onAddComponent: onAddComponent })] }));
359
34
  }
360
35
  //# sourceMappingURL=Inspector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Inspector.js","sourceRoot":"","sources":["../src/Inspector.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Inspector.js","sourceRoot":"","sources":["../src/Inspector.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function LoginScreen({ onLogin }: {
2
+ onLogin: (userId: string) => void;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ export declare function LoginModal({ onLogin, onClose }: {
5
+ onLogin: (userId: string) => void;
6
+ onClose?: () => void;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=Login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Login.d.ts","sourceRoot":"","sources":["../src/Login.tsx"],"names":[],"mappings":"AAgFA,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,2CAM7E;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,2CAQ3G"}
package/dist/Login.js ADDED
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from '#components/ui/button';
3
+ import { Dialog, DialogContent } from '#components/ui/dialog';
4
+ import { Input } from '#components/ui/input';
5
+ import { Label } from '#components/ui/label';
6
+ import { useState } from 'react';
7
+ import { setToken, trpc } from './trpc';
8
+ function LoginForm({ onLogin }) {
9
+ const [mode, setMode] = useState('login');
10
+ const [userId, setUserId] = useState('');
11
+ const [password, setPassword] = useState('');
12
+ const [err, setErr] = useState(null);
13
+ const [loading, setLoading] = useState(false);
14
+ async function handleSubmit(e) {
15
+ e.preventDefault();
16
+ if (!userId.trim() || !password)
17
+ return;
18
+ setLoading(true);
19
+ setErr(null);
20
+ try {
21
+ const fn = mode === 'register' ? trpc.register : trpc.login;
22
+ const res = await fn.mutate({ userId: userId.trim(), password });
23
+ setToken(res.token);
24
+ onLogin(res.userId);
25
+ }
26
+ catch (e) {
27
+ setErr(e instanceof Error ? e.message : 'Failed');
28
+ }
29
+ finally {
30
+ setLoading(false);
31
+ }
32
+ }
33
+ return (_jsxs("form", { className: "flex flex-col gap-4 w-80 p-8 rounded-lg border border-border bg-card", onSubmit: handleSubmit, children: [_jsxs("div", { className: "flex items-center justify-center gap-2 mb-2", children: [_jsx("img", { src: "/treenity.svg", alt: "", width: "32", height: "32" }), _jsx("span", { className: "text-lg font-semibold", children: "Treenity" })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "userId", children: "User ID" }), _jsx(Input, { id: "userId", autoFocus: true, placeholder: "Enter your user ID", value: userId, onChange: (e) => setUserId(e.target.value) })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "password", children: "Password" }), _jsx(Input, { id: "password", type: "password", placeholder: "Enter password", value: password, onChange: (e) => setPassword(e.target.value) })] }), err && _jsx("p", { className: "text-sm text-destructive", children: err }), _jsx(Button, { type: "submit", disabled: loading || !userId.trim() || !password, children: loading ? '...' : mode === 'register' ? 'Create account' : 'Sign in' }), _jsx(Button, { type: "button", variant: "ghost", onClick: () => {
34
+ setMode((m) => (m === 'login' ? 'register' : 'login'));
35
+ setErr(null);
36
+ }, children: mode === 'login' ? 'No account? Register' : 'Have an account? Sign in' })] }));
37
+ }
38
+ export function LoginScreen({ onLogin }) {
39
+ return (_jsx("div", { className: "flex items-center justify-center h-screen bg-background", children: _jsx(LoginForm, { onLogin: onLogin }) }));
40
+ }
41
+ export function LoginModal({ onLogin, onClose }) {
42
+ return (_jsx(Dialog, { open: true, onOpenChange: (open) => { if (!open && onClose)
43
+ onClose(); }, children: _jsx(DialogContent, { className: "p-0 border-none bg-transparent shadow-none max-w-fit", showCloseButton: !!onClose, children: _jsx(LoginForm, { onLogin: onLogin }) }) }));
44
+ }
45
+ //# sourceMappingURL=Login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Login.js","sourceRoot":"","sources":["../src/Login.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type NodeData } from '@treenity/core';
2
+ export type NodeEditorProps = {
3
+ node: NodeData;
4
+ open: boolean;
5
+ onClose: () => void;
6
+ currentUserId?: string;
7
+ toast: (msg: string) => void;
8
+ onAddComponent: (path: string) => void;
9
+ };
10
+ export declare function NodeEditor({ node, open, onClose, currentUserId, toast, onAddComponent }: NodeEditorProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=NodeEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeEditor.d.ts","sourceRoot":"","sources":["../src/NodeEditor.tsx"],"names":[],"mappings":"AAWA,OAAO,EAA6C,KAAK,QAAQ,EAAW,MAAM,gBAAgB,CAAC;AA2CnG,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,eAAe,2CA4OxG"}