@treenity/mods 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.
- package/board/board.test.ts +212 -0
- package/board/client.ts +1 -0
- package/board/seed.ts +26 -0
- package/board/server.ts +5 -0
- package/board/types.ts +87 -0
- package/board/view.tsx +574 -0
- package/brahman/CLAUDE.md +18 -0
- package/brahman/brahman.test.ts +855 -0
- package/brahman/client.ts +2 -0
- package/brahman/helpers.ts +374 -0
- package/brahman/server.ts +2 -0
- package/brahman/service.ts +328 -0
- package/brahman/types.ts +727 -0
- package/brahman/view.tsx +73 -0
- package/brahman/views/action-cards.tsx +615 -0
- package/brahman/views/bot-view.tsx +76 -0
- package/brahman/views/chat-editor.tsx +782 -0
- package/brahman/views/chat-preview.tsx +266 -0
- package/brahman/views/menu-editor.tsx +451 -0
- package/brahman/views/page-layout.tsx +285 -0
- package/brahman/views/tstring-input.tsx +84 -0
- package/cafe/CLAUDE.md +7 -0
- package/cafe/seed.ts +8 -0
- package/cafe/server.ts +2 -0
- package/cafe/types.ts +32 -0
- package/canary/seed.ts +8 -0
- package/canary/server.ts +3 -0
- package/canary/service.ts +101 -0
- package/canary/types.ts +16 -0
- package/dist/board/client.d.ts +2 -0
- package/dist/board/client.d.ts.map +1 -0
- package/dist/board/client.js +2 -0
- package/dist/board/client.js.map +1 -0
- package/dist/board/seed.d.ts +2 -0
- package/dist/board/seed.d.ts.map +1 -0
- package/dist/board/seed.js +23 -0
- package/dist/board/seed.js.map +1 -0
- package/dist/board/server.d.ts +3 -0
- package/dist/board/server.d.ts.map +1 -0
- package/dist/board/server.js +5 -0
- package/dist/board/server.js.map +1 -0
- package/dist/board/types.d.ts +45 -0
- package/dist/board/types.d.ts.map +1 -0
- package/dist/board/types.js +82 -0
- package/dist/board/types.js.map +1 -0
- package/dist/board/view.d.ts +2 -0
- package/dist/board/view.d.ts.map +1 -0
- package/dist/board/view.js +254 -0
- package/dist/board/view.js.map +1 -0
- package/dist/brahman/client.d.ts +3 -0
- package/dist/brahman/client.d.ts.map +1 -0
- package/dist/brahman/client.js +3 -0
- package/dist/brahman/client.js.map +1 -0
- package/dist/brahman/helpers.d.ts +51 -0
- package/dist/brahman/helpers.d.ts.map +1 -0
- package/dist/brahman/helpers.js +321 -0
- package/dist/brahman/helpers.js.map +1 -0
- package/dist/brahman/server.d.ts +3 -0
- package/dist/brahman/server.d.ts.map +1 -0
- package/dist/brahman/server.js +3 -0
- package/dist/brahman/server.js.map +1 -0
- package/dist/brahman/service.d.ts +2 -0
- package/dist/brahman/service.d.ts.map +1 -0
- package/dist/brahman/service.js +310 -0
- package/dist/brahman/service.js.map +1 -0
- package/dist/brahman/types.d.ts +335 -0
- package/dist/brahman/types.d.ts.map +1 -0
- package/dist/brahman/types.js +633 -0
- package/dist/brahman/types.js.map +1 -0
- package/dist/brahman/view.d.ts +2 -0
- package/dist/brahman/view.d.ts.map +1 -0
- package/dist/brahman/view.js +47 -0
- package/dist/brahman/view.js.map +1 -0
- package/dist/brahman/views/action-cards.d.ts +60 -0
- package/dist/brahman/views/action-cards.d.ts.map +1 -0
- package/dist/brahman/views/action-cards.js +283 -0
- package/dist/brahman/views/action-cards.js.map +1 -0
- package/dist/brahman/views/bot-view.d.ts +5 -0
- package/dist/brahman/views/bot-view.d.ts.map +1 -0
- package/dist/brahman/views/bot-view.js +14 -0
- package/dist/brahman/views/bot-view.js.map +1 -0
- package/dist/brahman/views/chat-editor.d.ts +5 -0
- package/dist/brahman/views/chat-editor.d.ts.map +1 -0
- package/dist/brahman/views/chat-editor.js +306 -0
- package/dist/brahman/views/chat-editor.js.map +1 -0
- package/dist/brahman/views/chat-preview.d.ts +5 -0
- package/dist/brahman/views/chat-preview.d.ts.map +1 -0
- package/dist/brahman/views/chat-preview.js +145 -0
- package/dist/brahman/views/chat-preview.js.map +1 -0
- package/dist/brahman/views/menu-editor.d.ts +11 -0
- package/dist/brahman/views/menu-editor.d.ts.map +1 -0
- package/dist/brahman/views/menu-editor.js +171 -0
- package/dist/brahman/views/menu-editor.js.map +1 -0
- package/dist/brahman/views/page-layout.d.ts +5 -0
- package/dist/brahman/views/page-layout.d.ts.map +1 -0
- package/dist/brahman/views/page-layout.js +114 -0
- package/dist/brahman/views/page-layout.js.map +1 -0
- package/dist/brahman/views/tstring-input.d.ts +15 -0
- package/dist/brahman/views/tstring-input.d.ts.map +1 -0
- package/dist/brahman/views/tstring-input.js +23 -0
- package/dist/brahman/views/tstring-input.js.map +1 -0
- package/dist/cafe/seed.d.ts +2 -0
- package/dist/cafe/seed.d.ts.map +1 -0
- package/dist/cafe/seed.js +7 -0
- package/dist/cafe/seed.js.map +1 -0
- package/dist/cafe/server.d.ts +3 -0
- package/dist/cafe/server.d.ts.map +1 -0
- package/dist/cafe/server.js +3 -0
- package/dist/cafe/server.js.map +1 -0
- package/dist/cafe/types.d.ts +2 -0
- package/dist/cafe/types.d.ts.map +1 -0
- package/dist/cafe/types.js +31 -0
- package/dist/cafe/types.js.map +1 -0
- package/dist/canary/seed.d.ts +2 -0
- package/dist/canary/seed.d.ts.map +1 -0
- package/dist/canary/seed.js +7 -0
- package/dist/canary/seed.js.map +1 -0
- package/dist/canary/server.d.ts +4 -0
- package/dist/canary/server.d.ts.map +1 -0
- package/dist/canary/server.js +4 -0
- package/dist/canary/server.js.map +1 -0
- package/dist/canary/service.d.ts +2 -0
- package/dist/canary/service.d.ts.map +1 -0
- package/dist/canary/service.js +101 -0
- package/dist/canary/service.js.map +1 -0
- package/dist/canary/types.d.ts +9 -0
- package/dist/canary/types.d.ts.map +1 -0
- package/dist/canary/types.js +13 -0
- package/dist/canary/types.js.map +1 -0
- package/dist/doc/client.d.ts +3 -0
- package/dist/doc/client.d.ts.map +1 -0
- package/dist/doc/client.js +5 -0
- package/dist/doc/client.js.map +1 -0
- package/dist/doc/fs-codec.d.ts +2 -0
- package/dist/doc/fs-codec.d.ts.map +1 -0
- package/dist/doc/fs-codec.js +44 -0
- package/dist/doc/fs-codec.js.map +1 -0
- package/dist/doc/markdown.d.ts +13 -0
- package/dist/doc/markdown.d.ts.map +1 -0
- package/dist/doc/markdown.js +250 -0
- package/dist/doc/markdown.js.map +1 -0
- package/dist/doc/prefab.d.ts +2 -0
- package/dist/doc/prefab.d.ts.map +1 -0
- package/dist/doc/prefab.js +23 -0
- package/dist/doc/prefab.js.map +1 -0
- package/dist/doc/renderers.d.ts +2 -0
- package/dist/doc/renderers.d.ts.map +1 -0
- package/dist/doc/renderers.js +94 -0
- package/dist/doc/renderers.js.map +1 -0
- package/dist/doc/seed.d.ts +2 -0
- package/dist/doc/seed.d.ts.map +1 -0
- package/dist/doc/seed.js +9 -0
- package/dist/doc/seed.js.map +1 -0
- package/dist/doc/server.d.ts +6 -0
- package/dist/doc/server.d.ts.map +1 -0
- package/dist/doc/server.js +6 -0
- package/dist/doc/server.js.map +1 -0
- package/dist/doc/slash-command.d.ts +3 -0
- package/dist/doc/slash-command.d.ts.map +1 -0
- package/dist/doc/slash-command.js +123 -0
- package/dist/doc/slash-command.js.map +1 -0
- package/dist/doc/slash-menu.d.ts +15 -0
- package/dist/doc/slash-menu.d.ts.map +1 -0
- package/dist/doc/slash-menu.js +54 -0
- package/dist/doc/slash-menu.js.map +1 -0
- package/dist/doc/text.d.ts +2 -0
- package/dist/doc/text.d.ts.map +1 -0
- package/dist/doc/text.js +22 -0
- package/dist/doc/text.js.map +1 -0
- package/dist/doc/toolbar.d.ts +5 -0
- package/dist/doc/toolbar.d.ts.map +1 -0
- package/dist/doc/toolbar.js +15 -0
- package/dist/doc/toolbar.js.map +1 -0
- package/dist/doc/treenity-block-view.d.ts +2 -0
- package/dist/doc/treenity-block-view.d.ts.map +1 -0
- package/dist/doc/treenity-block-view.js +37 -0
- package/dist/doc/treenity-block-view.js.map +1 -0
- package/dist/doc/treenity-block.d.ts +3 -0
- package/dist/doc/treenity-block.d.ts.map +1 -0
- package/dist/doc/treenity-block.js +27 -0
- package/dist/doc/treenity-block.js.map +1 -0
- package/dist/doc/types.d.ts +2 -0
- package/dist/doc/types.d.ts.map +1 -0
- package/dist/doc/types.js +10 -0
- package/dist/doc/types.js.map +1 -0
- package/dist/launcher/client.d.ts +5 -0
- package/dist/launcher/client.d.ts.map +1 -0
- package/dist/launcher/client.js +5 -0
- package/dist/launcher/client.js.map +1 -0
- package/dist/launcher/icons.d.ts +2 -0
- package/dist/launcher/icons.d.ts.map +1 -0
- package/dist/launcher/icons.js +57 -0
- package/dist/launcher/icons.js.map +1 -0
- package/dist/launcher/seed.d.ts +2 -0
- package/dist/launcher/seed.d.ts.map +1 -0
- package/dist/launcher/seed.js +36 -0
- package/dist/launcher/seed.js.map +1 -0
- package/dist/launcher/server.d.ts +3 -0
- package/dist/launcher/server.d.ts.map +1 -0
- package/dist/launcher/server.js +3 -0
- package/dist/launcher/server.js.map +1 -0
- package/dist/launcher/types.d.ts +21 -0
- package/dist/launcher/types.d.ts.map +1 -0
- package/dist/launcher/types.js +47 -0
- package/dist/launcher/types.js.map +1 -0
- package/dist/launcher/view.d.ts +2 -0
- package/dist/launcher/view.d.ts.map +1 -0
- package/dist/launcher/view.js +187 -0
- package/dist/launcher/view.js.map +1 -0
- package/dist/launcher/widgets.d.ts +2 -0
- package/dist/launcher/widgets.d.ts.map +1 -0
- package/dist/launcher/widgets.js +73 -0
- package/dist/launcher/widgets.js.map +1 -0
- package/dist/mindmap/branch.d.ts +17 -0
- package/dist/mindmap/branch.d.ts.map +1 -0
- package/dist/mindmap/branch.js +47 -0
- package/dist/mindmap/branch.js.map +1 -0
- package/dist/mindmap/client.d.ts +3 -0
- package/dist/mindmap/client.d.ts.map +1 -0
- package/dist/mindmap/client.js +3 -0
- package/dist/mindmap/client.js.map +1 -0
- package/dist/mindmap/radial-tree.d.ts +14 -0
- package/dist/mindmap/radial-tree.d.ts.map +1 -0
- package/dist/mindmap/radial-tree.js +184 -0
- package/dist/mindmap/radial-tree.js.map +1 -0
- package/dist/mindmap/sidebar.d.ts +8 -0
- package/dist/mindmap/sidebar.d.ts.map +1 -0
- package/dist/mindmap/sidebar.js +24 -0
- package/dist/mindmap/sidebar.js.map +1 -0
- package/dist/mindmap/types.d.ts +8 -0
- package/dist/mindmap/types.d.ts.map +1 -0
- package/dist/mindmap/types.js +10 -0
- package/dist/mindmap/types.js.map +1 -0
- package/dist/mindmap/use-tree-data.d.ts +14 -0
- package/dist/mindmap/use-tree-data.d.ts.map +1 -0
- package/dist/mindmap/use-tree-data.js +95 -0
- package/dist/mindmap/use-tree-data.js.map +1 -0
- package/dist/mindmap/view.d.ts +3 -0
- package/dist/mindmap/view.d.ts.map +1 -0
- package/dist/mindmap/view.js +141 -0
- package/dist/mindmap/view.js.map +1 -0
- package/dist/sensor-demo/client.d.ts +2 -0
- package/dist/sensor-demo/client.d.ts.map +1 -0
- package/dist/sensor-demo/client.js +2 -0
- package/dist/sensor-demo/client.js.map +1 -0
- package/dist/sensor-demo/server.d.ts +2 -0
- package/dist/sensor-demo/server.d.ts.map +1 -0
- package/dist/sensor-demo/server.js +2 -0
- package/dist/sensor-demo/server.js.map +1 -0
- package/dist/sensor-demo/service.d.ts +2 -0
- package/dist/sensor-demo/service.d.ts.map +1 -0
- package/dist/sensor-demo/service.js +27 -0
- package/dist/sensor-demo/service.js.map +1 -0
- package/dist/sensor-demo/types.d.ts +15 -0
- package/dist/sensor-demo/types.d.ts.map +1 -0
- package/dist/sensor-demo/types.js +18 -0
- package/dist/sensor-demo/types.js.map +1 -0
- package/dist/sensor-demo/view.d.ts +2 -0
- package/dist/sensor-demo/view.d.ts.map +1 -0
- package/dist/sensor-demo/view.js +33 -0
- package/dist/sensor-demo/view.js.map +1 -0
- package/dist/sensor-generator/action.d.ts +2 -0
- package/dist/sensor-generator/action.d.ts.map +1 -0
- package/dist/sensor-generator/action.js +23 -0
- package/dist/sensor-generator/action.js.map +1 -0
- package/dist/sensor-generator/client.d.ts +2 -0
- package/dist/sensor-generator/client.d.ts.map +1 -0
- package/dist/sensor-generator/client.js +2 -0
- package/dist/sensor-generator/client.js.map +1 -0
- package/dist/sensor-generator/server.d.ts +2 -0
- package/dist/sensor-generator/server.d.ts.map +1 -0
- package/dist/sensor-generator/server.js +2 -0
- package/dist/sensor-generator/server.js.map +1 -0
- package/dist/sensor-generator/view.d.ts +2 -0
- package/dist/sensor-generator/view.d.ts.map +1 -0
- package/dist/sensor-generator/view.js +64 -0
- package/dist/sensor-generator/view.js.map +1 -0
- package/dist/sim/client.d.ts +2 -0
- package/dist/sim/client.d.ts.map +1 -0
- package/dist/sim/client.js +2 -0
- package/dist/sim/client.js.map +1 -0
- package/dist/sim/seed.d.ts +2 -0
- package/dist/sim/seed.d.ts.map +1 -0
- package/dist/sim/seed.js +50 -0
- package/dist/sim/seed.js.map +1 -0
- package/dist/sim/server.d.ts +3 -0
- package/dist/sim/server.d.ts.map +1 -0
- package/dist/sim/server.js +3 -0
- package/dist/sim/server.js.map +1 -0
- package/dist/sim/service.d.ts +4 -0
- package/dist/sim/service.d.ts.map +1 -0
- package/dist/sim/service.js +528 -0
- package/dist/sim/service.js.map +1 -0
- package/dist/sim/types.d.ts +63 -0
- package/dist/sim/types.d.ts.map +1 -0
- package/dist/sim/types.js +57 -0
- package/dist/sim/types.js.map +1 -0
- package/dist/sim/view.d.ts +2 -0
- package/dist/sim/view.d.ts.map +1 -0
- package/dist/sim/view.js +205 -0
- package/dist/sim/view.js.map +1 -0
- package/dist/table/client.d.ts +4 -0
- package/dist/table/client.d.ts.map +1 -0
- package/dist/table/client.js +4 -0
- package/dist/table/client.js.map +1 -0
- package/dist/table/edit.d.ts +2 -0
- package/dist/table/edit.d.ts.map +1 -0
- package/dist/table/edit.js +115 -0
- package/dist/table/edit.js.map +1 -0
- package/dist/table/server.d.ts +2 -0
- package/dist/table/server.d.ts.map +1 -0
- package/dist/table/server.js +2 -0
- package/dist/table/server.js.map +1 -0
- package/dist/table/types.d.ts +18 -0
- package/dist/table/types.d.ts.map +1 -0
- package/dist/table/types.js +13 -0
- package/dist/table/types.js.map +1 -0
- package/dist/table/use-debounced-sync.d.ts +8 -0
- package/dist/table/use-debounced-sync.d.ts.map +1 -0
- package/dist/table/use-debounced-sync.js +56 -0
- package/dist/table/use-debounced-sync.js.map +1 -0
- package/dist/table/view.d.ts +2 -0
- package/dist/table/view.d.ts.map +1 -0
- package/dist/table/view.js +199 -0
- package/dist/table/view.js.map +1 -0
- package/dist/tasks/server.d.ts +2 -0
- package/dist/tasks/server.d.ts.map +1 -0
- package/dist/tasks/server.js +2 -0
- package/dist/tasks/server.js.map +1 -0
- package/dist/tasks/types.d.ts +22 -0
- package/dist/tasks/types.d.ts.map +1 -0
- package/dist/tasks/types.js +34 -0
- package/dist/tasks/types.js.map +1 -0
- package/dist/three/client.d.ts +2 -0
- package/dist/three/client.d.ts.map +1 -0
- package/dist/three/client.js +2 -0
- package/dist/three/client.js.map +1 -0
- package/dist/three/seed.d.ts +2 -0
- package/dist/three/seed.d.ts.map +1 -0
- package/dist/three/seed.js +45 -0
- package/dist/three/seed.js.map +1 -0
- package/dist/three/server.d.ts +3 -0
- package/dist/three/server.d.ts.map +1 -0
- package/dist/three/server.js +3 -0
- package/dist/three/server.js.map +1 -0
- package/dist/three/types.d.ts +178 -0
- package/dist/three/types.d.ts.map +1 -0
- package/dist/three/types.js +209 -0
- package/dist/three/types.js.map +1 -0
- package/dist/three/view.d.ts +2 -0
- package/dist/three/view.d.ts.map +1 -0
- package/dist/three/view.js +307 -0
- package/dist/three/view.js.map +1 -0
- package/dist/todo/client.d.ts +3 -0
- package/dist/todo/client.d.ts.map +1 -0
- package/dist/todo/client.js +3 -0
- package/dist/todo/client.js.map +1 -0
- package/dist/todo/seed.d.ts +2 -0
- package/dist/todo/seed.d.ts.map +1 -0
- package/dist/todo/seed.js +8 -0
- package/dist/todo/seed.js.map +1 -0
- package/dist/todo/server.d.ts +3 -0
- package/dist/todo/server.d.ts.map +1 -0
- package/dist/todo/server.js +3 -0
- package/dist/todo/server.js.map +1 -0
- package/dist/todo/types.d.ts +15 -0
- package/dist/todo/types.d.ts.map +1 -0
- package/dist/todo/types.js +29 -0
- package/dist/todo/types.js.map +1 -0
- package/dist/todo/view.d.ts +2 -0
- package/dist/todo/view.d.ts.map +1 -0
- package/dist/todo/view.js +27 -0
- package/dist/todo/view.js.map +1 -0
- package/dist/whisper/client.d.ts +2 -0
- package/dist/whisper/client.d.ts.map +1 -0
- package/dist/whisper/client.js +2 -0
- package/dist/whisper/client.js.map +1 -0
- package/dist/whisper/inbox.d.ts +2 -0
- package/dist/whisper/inbox.d.ts.map +1 -0
- package/dist/whisper/inbox.js +50 -0
- package/dist/whisper/inbox.js.map +1 -0
- package/dist/whisper/route.d.ts +10 -0
- package/dist/whisper/route.d.ts.map +1 -0
- package/dist/whisper/route.js +154 -0
- package/dist/whisper/route.js.map +1 -0
- package/dist/whisper/seed.d.ts +2 -0
- package/dist/whisper/seed.d.ts.map +1 -0
- package/dist/whisper/seed.js +14 -0
- package/dist/whisper/seed.js.map +1 -0
- package/dist/whisper/server.d.ts +5 -0
- package/dist/whisper/server.d.ts.map +1 -0
- package/dist/whisper/server.js +5 -0
- package/dist/whisper/server.js.map +1 -0
- package/dist/whisper/service.d.ts +2 -0
- package/dist/whisper/service.d.ts.map +1 -0
- package/dist/whisper/service.js +26 -0
- package/dist/whisper/service.js.map +1 -0
- package/dist/whisper/types.d.ts +38 -0
- package/dist/whisper/types.d.ts.map +1 -0
- package/dist/whisper/types.js +45 -0
- package/dist/whisper/types.js.map +1 -0
- package/dist/whisper/view.d.ts +2 -0
- package/dist/whisper/view.d.ts.map +1 -0
- package/dist/whisper/view.js +40 -0
- package/dist/whisper/view.js.map +1 -0
- package/doc/CLAUDE.md +49 -0
- package/doc/client.ts +5 -0
- package/doc/editor.css +283 -0
- package/doc/fs-codec.test.ts +119 -0
- package/doc/fs-codec.ts +50 -0
- package/doc/markdown.test.ts +152 -0
- package/doc/markdown.ts +284 -0
- package/doc/prefab.ts +26 -0
- package/doc/renderers.tsx +126 -0
- package/doc/seed.ts +10 -0
- package/doc/server.ts +5 -0
- package/doc/slash-command.ts +136 -0
- package/doc/slash-menu.tsx +91 -0
- package/doc/text.ts +20 -0
- package/doc/toolbar.tsx +86 -0
- package/doc/treenity-block-view.tsx +116 -0
- package/doc/treenity-block.ts +31 -0
- package/doc/types.ts +10 -0
- package/launcher/client.ts +4 -0
- package/launcher/icons.tsx +234 -0
- package/launcher/launcher.css +64 -0
- package/launcher/seed.ts +41 -0
- package/launcher/server.ts +2 -0
- package/launcher/types.ts +53 -0
- package/launcher/view.tsx +401 -0
- package/launcher/widgets.tsx +171 -0
- package/mindmap/branch.tsx +163 -0
- package/mindmap/client.ts +2 -0
- package/mindmap/mindmap.css +243 -0
- package/mindmap/sidebar.tsx +127 -0
- package/mindmap/types.ts +10 -0
- package/mindmap/view.tsx +247 -0
- package/package.json +75 -0
- package/sensor-demo/CLAUDE.md +3 -0
- package/sensor-demo/client.ts +1 -0
- package/sensor-demo/server.ts +1 -0
- package/sensor-demo/service.ts +27 -0
- package/sensor-demo/types.ts +20 -0
- package/sensor-demo/view.tsx +64 -0
- package/sensor-generator/CLAUDE.md +3 -0
- package/sensor-generator/action.ts +28 -0
- package/sensor-generator/client.ts +1 -0
- package/sensor-generator/server.ts +1 -0
- package/sensor-generator/view.tsx +107 -0
- package/sim/CLAUDE.md +16 -0
- package/sim/client.ts +1 -0
- package/sim/seed.ts +55 -0
- package/sim/server.ts +2 -0
- package/sim/service.ts +594 -0
- package/sim/sim.test.ts +282 -0
- package/sim/types.ts +87 -0
- package/sim/view.tsx +446 -0
- package/table/client.ts +3 -0
- package/table/edit.tsx +241 -0
- package/table/server.ts +1 -0
- package/table/types.ts +22 -0
- package/table/use-debounced-sync.ts +67 -0
- package/table/view.tsx +339 -0
- package/tasks/CLAUDE.md +6 -0
- package/tasks/server.ts +1 -0
- package/tasks/types.ts +36 -0
- package/three/CLAUDE.md +6 -0
- package/three/client.ts +1 -0
- package/three/seed.ts +54 -0
- package/three/server.ts +2 -0
- package/three/types.ts +238 -0
- package/three/view.tsx +453 -0
- package/todo/client.ts +2 -0
- package/todo/seed.ts +9 -0
- package/todo/server.ts +2 -0
- package/todo/types.ts +32 -0
- package/todo/view.tsx +67 -0
- package/whisper/CLAUDE.md +16 -0
- package/whisper/client.ts +1 -0
- package/whisper/inbox.ts +54 -0
- package/whisper/route.ts +182 -0
- package/whisper/seed.ts +15 -0
- package/whisper/server.ts +4 -0
- package/whisper/service.ts +29 -0
- package/whisper/types.ts +51 -0
- package/whisper/view.tsx +81 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// AgentSim shared types — used by both service (backend) and view (frontend)
|
|
2
|
+
// Classes per CLAUDE.md: "Exception: for entity definition could be used"
|
|
3
|
+
import { registerType } from '@treenity/core/comp';
|
|
4
|
+
/** Agent 2D map position and interaction radius */
|
|
5
|
+
export class SimPosition {
|
|
6
|
+
x = 0;
|
|
7
|
+
y = 0;
|
|
8
|
+
radius = 200;
|
|
9
|
+
}
|
|
10
|
+
/** Agent identity — name, icon, description */
|
|
11
|
+
export class SimDescriptive {
|
|
12
|
+
name = '';
|
|
13
|
+
icon = '';
|
|
14
|
+
/** @format textarea */
|
|
15
|
+
description = '';
|
|
16
|
+
}
|
|
17
|
+
/** Agent memory — accumulated observations */
|
|
18
|
+
export class SimMemory {
|
|
19
|
+
entries = [];
|
|
20
|
+
}
|
|
21
|
+
/** Simulation world config — dimensions, round timing */
|
|
22
|
+
export class SimConfig {
|
|
23
|
+
width = 600;
|
|
24
|
+
height = 400;
|
|
25
|
+
roundDelay = 5000;
|
|
26
|
+
running = false;
|
|
27
|
+
model;
|
|
28
|
+
}
|
|
29
|
+
/** Current simulation round — phase and event log */
|
|
30
|
+
export class SimRound {
|
|
31
|
+
current = 0;
|
|
32
|
+
phase = 'idle';
|
|
33
|
+
log = [];
|
|
34
|
+
}
|
|
35
|
+
/** Agent event inbox — received events per round */
|
|
36
|
+
export class SimEvents {
|
|
37
|
+
entries = [];
|
|
38
|
+
}
|
|
39
|
+
/** Agent AI config — system prompt and model override */
|
|
40
|
+
export class SimAi {
|
|
41
|
+
/** @format textarea */
|
|
42
|
+
systemPrompt = '';
|
|
43
|
+
model;
|
|
44
|
+
}
|
|
45
|
+
/** Proximity cache — nearby agents within radius */
|
|
46
|
+
export class SimNearby {
|
|
47
|
+
agents = [];
|
|
48
|
+
}
|
|
49
|
+
registerType('sim.position', SimPosition);
|
|
50
|
+
registerType('sim.descriptive', SimDescriptive);
|
|
51
|
+
registerType('sim.memory', SimMemory);
|
|
52
|
+
registerType('sim.config', SimConfig);
|
|
53
|
+
registerType('sim.round', SimRound);
|
|
54
|
+
registerType('sim.events', SimEvents);
|
|
55
|
+
registerType('sim.ai', SimAi);
|
|
56
|
+
registerType('sim.nearby', SimNearby);
|
|
57
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../sim/types.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,0EAA0E;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,mDAAmD;AACnD,MAAM,OAAO,WAAW;IACtB,CAAC,GAAG,CAAC,CAAC;IACN,CAAC,GAAG,CAAC,CAAC;IACN,MAAM,GAAG,GAAG,CAAC;CACd;AAED,+CAA+C;AAC/C,MAAM,OAAO,cAAc;IACzB,IAAI,GAAG,EAAE,CAAC;IACV,IAAI,GAAG,EAAE,CAAC;IACV,uBAAuB;IACvB,WAAW,GAAG,EAAE,CAAC;CAClB;AAED,8CAA8C;AAC9C,MAAM,OAAO,SAAS;IACpB,OAAO,GAAa,EAAE,CAAC;CACxB;AAED,yDAAyD;AACzD,MAAM,OAAO,SAAS;IACpB,KAAK,GAAG,GAAG,CAAC;IACZ,MAAM,GAAG,GAAG,CAAC;IACb,UAAU,GAAG,IAAI,CAAC;IAClB,OAAO,GAAG,KAAK,CAAC;IAChB,KAAK,CAAU;CAChB;AAED,qDAAqD;AACrD,MAAM,OAAO,QAAQ;IACnB,OAAO,GAAG,CAAC,CAAC;IACZ,KAAK,GAAG,MAAM,CAAC;IACf,GAAG,GAAiB,EAAE,CAAC;CACxB;AAED,oDAAoD;AACpD,MAAM,OAAO,SAAS;IACpB,OAAO,GAAiB,EAAE,CAAC;CAC5B;AAED,yDAAyD;AACzD,MAAM,OAAO,KAAK;IAChB,uBAAuB;IACvB,YAAY,GAAG,EAAE,CAAC;IAClB,KAAK,CAAU;CAChB;AAED,oDAAoD;AACpD,MAAM,OAAO,SAAS;IACpB,MAAM,GAAa,EAAE,CAAC;CACvB;AAuBD,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAC1C,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAChD,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACtC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACtC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACpC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACtC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9B,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../sim/view.tsx"],"names":[],"mappings":""}
|
package/dist/sim/view.js
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// AgentSim views — World map + Agent card + Item card
|
|
3
|
+
// WorldView: controls, spatial map with entities + proximity links, event log
|
|
4
|
+
// AgentView: profile, editable prompt, memory, event inbox
|
|
5
|
+
// ItemView: description card
|
|
6
|
+
import { getComponent, register } from '@treenity/core';
|
|
7
|
+
import { useCurrentNode } from '@treenity/react/context';
|
|
8
|
+
import { useChildren } from '@treenity/react/hooks';
|
|
9
|
+
import { trpc } from '@treenity/react/trpc';
|
|
10
|
+
import { useCallback, useMemo, useRef, useState } from 'react';
|
|
11
|
+
import { SimAi, SimConfig, SimDescriptive, SimEvents, SimMemory, SimNearby, SimPosition, SimRound, } from './types';
|
|
12
|
+
function buildLinks(entities) {
|
|
13
|
+
const posByName = new Map();
|
|
14
|
+
for (const a of entities) {
|
|
15
|
+
const d = getComponent(a, SimDescriptive);
|
|
16
|
+
const p = getComponent(a, SimPosition);
|
|
17
|
+
if (d && p)
|
|
18
|
+
posByName.set(d.name, p);
|
|
19
|
+
}
|
|
20
|
+
const links = [];
|
|
21
|
+
const seen = new Set();
|
|
22
|
+
for (const a of entities) {
|
|
23
|
+
const desc = getComponent(a, SimDescriptive);
|
|
24
|
+
const pos = getComponent(a, SimPosition);
|
|
25
|
+
const nearby = getComponent(a, SimNearby);
|
|
26
|
+
if (!desc || !pos || !nearby?.agents)
|
|
27
|
+
continue;
|
|
28
|
+
for (const other of nearby.agents) {
|
|
29
|
+
const key = [desc.name, other].sort().join('|');
|
|
30
|
+
if (seen.has(key))
|
|
31
|
+
continue;
|
|
32
|
+
seen.add(key);
|
|
33
|
+
const op = posByName.get(other);
|
|
34
|
+
if (!op)
|
|
35
|
+
continue;
|
|
36
|
+
const d = Math.sqrt((pos.x - op.x) ** 2 + (pos.y - op.y) ** 2);
|
|
37
|
+
const maxR = Math.max(pos.radius, op.radius);
|
|
38
|
+
links.push({
|
|
39
|
+
x1: pos.x, y1: pos.y, x2: op.x, y2: op.y,
|
|
40
|
+
opacity: maxR > 0 ? 0.15 + 0.35 * (1 - d / maxR) : 0.3,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return links;
|
|
45
|
+
}
|
|
46
|
+
const btn = {
|
|
47
|
+
padding: '4px 12px',
|
|
48
|
+
borderRadius: 'var(--radius)',
|
|
49
|
+
border: '1px solid var(--border)',
|
|
50
|
+
background: 'var(--surface)',
|
|
51
|
+
color: 'var(--text)',
|
|
52
|
+
cursor: 'pointer',
|
|
53
|
+
fontSize: 11,
|
|
54
|
+
};
|
|
55
|
+
function formatAction(e) {
|
|
56
|
+
const msg = e.data?.message;
|
|
57
|
+
if (e.action.startsWith('speak') && msg)
|
|
58
|
+
return `"${msg}"`;
|
|
59
|
+
if (e.action === 'move')
|
|
60
|
+
return `→ (${e.data.x}, ${e.data.y})`;
|
|
61
|
+
if (e.action.includes('→'))
|
|
62
|
+
return e.action;
|
|
63
|
+
return e.action;
|
|
64
|
+
}
|
|
65
|
+
// ── WorldView ──
|
|
66
|
+
function errMsg(e) {
|
|
67
|
+
if (e instanceof Error)
|
|
68
|
+
return e.message;
|
|
69
|
+
return String(e);
|
|
70
|
+
}
|
|
71
|
+
function WorldView() {
|
|
72
|
+
const node = useCurrentNode();
|
|
73
|
+
const children = useChildren(node.$path, { watchNew: true });
|
|
74
|
+
const [selected, setSelected] = useState(null);
|
|
75
|
+
const [error, setError] = useState(null);
|
|
76
|
+
const mapRef = useRef(null);
|
|
77
|
+
const call = useCallback((p) => {
|
|
78
|
+
setError(null);
|
|
79
|
+
trpc.execute.mutate(p).catch((e) => setError(errMsg(e)));
|
|
80
|
+
}, []);
|
|
81
|
+
const cfg = getComponent(node, SimConfig);
|
|
82
|
+
const round = getComponent(node, SimRound);
|
|
83
|
+
const entities = children.filter((n) => n.$type === 'sim.agent' || n.$type === 'sim.item');
|
|
84
|
+
const W = cfg?.width ?? 600;
|
|
85
|
+
const H = cfg?.height ?? 400;
|
|
86
|
+
const log = round?.log ?? [];
|
|
87
|
+
const lastRound = (round?.current ?? 1) - 1;
|
|
88
|
+
const links = useMemo(() => buildLinks(entities), [entities]);
|
|
89
|
+
const toggle = useCallback(() => {
|
|
90
|
+
call({ path: node.$path, action: cfg?.running ? 'stop' : 'start' });
|
|
91
|
+
}, [node.$path, cfg?.running, call]);
|
|
92
|
+
const onMapClick = useCallback((e) => {
|
|
93
|
+
if (!selected || !mapRef.current)
|
|
94
|
+
return;
|
|
95
|
+
const rect = mapRef.current.getBoundingClientRect();
|
|
96
|
+
const x = Math.round(e.clientX - rect.left);
|
|
97
|
+
const y = Math.round(e.clientY - rect.top);
|
|
98
|
+
call({ path: selected, action: 'move', data: { x, y } });
|
|
99
|
+
}, [selected, call]);
|
|
100
|
+
const setSpeed = useCallback((delay) => {
|
|
101
|
+
call({ path: node.$path, action: 'set-config', data: { roundDelay: delay } });
|
|
102
|
+
}, [node.$path, call]);
|
|
103
|
+
return (_jsxs("div", { style: { fontFamily: 'var(--mono)', fontSize: 13 }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 8, marginBottom: 12, flexWrap: 'wrap' }, children: [_jsx("button", { onClick: toggle, style: {
|
|
104
|
+
...btn,
|
|
105
|
+
background: cfg?.running ? 'var(--danger, #c44)' : 'var(--accent)',
|
|
106
|
+
color: '#fff',
|
|
107
|
+
fontWeight: 600,
|
|
108
|
+
}, children: cfg?.running ? 'Stop' : 'Start' }), _jsxs("span", { style: { color: 'var(--text-2)' }, children: ["R", round?.current ?? 0] }), round?.phase === 'thinking' && (_jsx("span", { style: { color: 'var(--accent)' }, children: "thinking..." })), _jsx("span", { style: { color: 'var(--text-3)', fontSize: 11 }, children: "|" }), [1000, 3000, 5000, 10000].map((d) => (_jsxs("button", { onClick: () => setSpeed(d), style: {
|
|
109
|
+
...btn,
|
|
110
|
+
background: cfg?.roundDelay === d ? 'var(--accent)' : 'var(--surface)',
|
|
111
|
+
color: cfg?.roundDelay === d ? '#fff' : 'var(--text-2)',
|
|
112
|
+
}, children: [d / 1000, "s"] }, d))), _jsxs("span", { style: { color: 'var(--text-3)', marginLeft: 'auto', fontSize: 11 }, children: [entities.length, " entities", selected && ` · click map to move`] })] }), error && (_jsx("div", { onClick: () => setError(null), style: { padding: '6px 12px', marginBottom: 8, background: 'var(--danger, #c44)', color: '#fff', borderRadius: 'var(--radius)', fontSize: 12, cursor: 'pointer' }, children: error })), _jsxs("div", { ref: mapRef, onClick: onMapClick, style: {
|
|
113
|
+
position: 'relative',
|
|
114
|
+
width: W,
|
|
115
|
+
height: H,
|
|
116
|
+
background: 'var(--surface)',
|
|
117
|
+
border: '1px solid var(--border)',
|
|
118
|
+
borderRadius: 'var(--radius)',
|
|
119
|
+
overflow: 'hidden',
|
|
120
|
+
cursor: selected ? 'crosshair' : 'default',
|
|
121
|
+
}, children: [_jsx("svg", { style: { position: 'absolute', inset: 0, pointerEvents: 'none', zIndex: 1 }, width: W, height: H, children: links.map((l, i) => (_jsx("line", { x1: l.x1, y1: l.y1, x2: l.x2, y2: l.y2, stroke: "var(--accent, #6366f1)", strokeWidth: 1.5, opacity: l.opacity }, i))) }), entities.map((a) => {
|
|
122
|
+
const pos = getComponent(a, SimPosition);
|
|
123
|
+
const desc = getComponent(a, SimDescriptive);
|
|
124
|
+
if (!pos)
|
|
125
|
+
return null;
|
|
126
|
+
const isSel = selected === a.$path;
|
|
127
|
+
const isItem = a.$type === 'sim.item';
|
|
128
|
+
return (_jsxs("div", { children: [_jsx("div", { style: {
|
|
129
|
+
position: 'absolute',
|
|
130
|
+
left: pos.x - pos.radius,
|
|
131
|
+
top: pos.y - pos.radius,
|
|
132
|
+
width: pos.radius * 2,
|
|
133
|
+
height: pos.radius * 2,
|
|
134
|
+
borderRadius: '50%',
|
|
135
|
+
border: `1px dashed ${isSel ? 'var(--accent)' : 'var(--border)'}`,
|
|
136
|
+
opacity: isSel ? 0.5 : 0.2,
|
|
137
|
+
pointerEvents: 'none',
|
|
138
|
+
} }), _jsx("div", { onClick: (e) => { e.stopPropagation(); setSelected(isSel ? null : a.$path); }, style: {
|
|
139
|
+
position: 'absolute',
|
|
140
|
+
left: pos.x - (isItem ? 12 : 16),
|
|
141
|
+
top: pos.y - (isItem ? 12 : 16),
|
|
142
|
+
width: isItem ? 24 : 32,
|
|
143
|
+
height: isItem ? 24 : 32,
|
|
144
|
+
borderRadius: isItem ? 'var(--radius)' : '50%',
|
|
145
|
+
background: isItem ? 'var(--surface)' : 'var(--accent)',
|
|
146
|
+
border: isSel ? '2px solid #fff' : `1px solid ${isItem ? 'var(--border)' : 'transparent'}`,
|
|
147
|
+
boxShadow: isSel ? '0 0 0 2px var(--accent)' : 'none',
|
|
148
|
+
display: 'flex',
|
|
149
|
+
alignItems: 'center',
|
|
150
|
+
justifyContent: 'center',
|
|
151
|
+
fontSize: isItem ? 14 : 16,
|
|
152
|
+
zIndex: 2,
|
|
153
|
+
cursor: 'pointer',
|
|
154
|
+
}, title: `${desc?.name} (${pos.x}, ${pos.y}) r=${pos.radius} [${a.$type}]`, children: desc?.icon ?? '?' }), _jsx("div", { style: {
|
|
155
|
+
position: 'absolute',
|
|
156
|
+
left: pos.x,
|
|
157
|
+
top: pos.y + (isItem ? 14 : 18),
|
|
158
|
+
transform: 'translateX(-50%)',
|
|
159
|
+
fontSize: 10,
|
|
160
|
+
color: isSel ? 'var(--accent)' : 'var(--text-2)',
|
|
161
|
+
fontWeight: isSel ? 600 : 400,
|
|
162
|
+
whiteSpace: 'nowrap',
|
|
163
|
+
zIndex: 2,
|
|
164
|
+
pointerEvents: 'none',
|
|
165
|
+
}, children: desc?.name })] }, a.$path));
|
|
166
|
+
}), entities.length === 0 && (_jsx("div", { style: { position: 'absolute', inset: 0, display: 'flex', alignItems: 'center', justifyContent: 'center', color: 'var(--text-3)' }, children: "No entities \u2014 add sim.agent or sim.item children" }))] }), _jsxs("div", { style: { marginTop: 12, maxHeight: 240, overflowY: 'auto' }, children: [_jsxs("div", { style: { fontSize: 11, color: 'var(--text-3)', textTransform: 'uppercase', letterSpacing: 0.5, marginBottom: 6 }, children: ["Event Log (", log.length, ")"] }), log.length === 0 && (_jsx("div", { style: { color: 'var(--text-3)', padding: 8 }, children: "No events yet \u2014 press Start" })), [...log].reverse().map((e, i) => (_jsxs("div", { style: {
|
|
167
|
+
display: 'flex',
|
|
168
|
+
gap: 8,
|
|
169
|
+
padding: '4px 8px',
|
|
170
|
+
background: e.round === lastRound ? 'var(--accent-bg, rgba(99,102,241,0.08))' : 'transparent',
|
|
171
|
+
borderRadius: 'var(--radius)',
|
|
172
|
+
fontSize: 12,
|
|
173
|
+
}, children: [_jsxs("span", { style: { minWidth: 28, color: 'var(--text-3)' }, children: ["R", e.round] }), _jsx("span", { children: e.icon }), _jsx("span", { style: { color: 'var(--accent)', minWidth: 48 }, children: e.agent }), _jsx("span", { style: { color: 'var(--text-2)', flex: 1 }, children: formatAction(e) }), e.heardBy?.length ? (_jsxs("span", { style: { color: 'var(--text-3)', fontSize: 10 }, children: ["heard: ", e.heardBy.join(', ')] })) : null] }, `${e.ts}-${i}`)))] })] }));
|
|
174
|
+
}
|
|
175
|
+
// ── AgentView ──
|
|
176
|
+
function AgentView() {
|
|
177
|
+
const node = useCurrentNode();
|
|
178
|
+
const desc = getComponent(node, SimDescriptive);
|
|
179
|
+
const pos = getComponent(node, SimPosition);
|
|
180
|
+
const mem = getComponent(node, SimMemory);
|
|
181
|
+
const ai = getComponent(node, SimAi);
|
|
182
|
+
const events = getComponent(node, SimEvents)?.entries ?? [];
|
|
183
|
+
const [editPrompt, setEditPrompt] = useState(null);
|
|
184
|
+
const [error, setError] = useState(null);
|
|
185
|
+
const savePrompt = useCallback(() => {
|
|
186
|
+
if (editPrompt === null)
|
|
187
|
+
return;
|
|
188
|
+
setError(null);
|
|
189
|
+
trpc.execute.mutate({ path: node.$path, action: 'update', data: { systemPrompt: editPrompt } })
|
|
190
|
+
.catch((e) => setError(errMsg(e)));
|
|
191
|
+
setEditPrompt(null);
|
|
192
|
+
}, [node.$path, editPrompt]);
|
|
193
|
+
return (_jsxs("div", { style: { fontFamily: 'var(--mono)', fontSize: 13, maxWidth: 500 }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 12, marginBottom: 16 }, children: [_jsx("div", { style: { width: 48, height: 48, borderRadius: '50%', background: 'var(--accent)', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: 24 }, children: desc?.icon ?? '?' }), _jsxs("div", { children: [_jsx("div", { style: { fontSize: 16, fontWeight: 600 }, children: desc?.name ?? 'Agent' }), _jsx("div", { style: { color: 'var(--text-2)', fontSize: 12 }, children: desc?.description })] })] }), error && (_jsx("div", { onClick: () => setError(null), style: { padding: '6px 12px', marginBottom: 8, background: 'var(--danger, #c44)', color: '#fff', borderRadius: 'var(--radius)', fontSize: 12, cursor: 'pointer' }, children: error })), pos && (_jsxs("div", { style: { marginBottom: 12, padding: '8px 12px', background: 'var(--surface)', borderRadius: 'var(--radius)' }, children: ["Position: (", pos.x, ", ", pos.y, ") \u00B7 Radius: ", pos.radius] })), _jsxs("div", { style: { marginBottom: 12 }, children: [_jsxs("div", { style: { fontSize: 11, color: 'var(--text-3)', textTransform: 'uppercase', letterSpacing: 0.5, marginBottom: 6, display: 'flex', alignItems: 'center', gap: 8 }, children: ["System Prompt", editPrompt === null && (_jsx("button", { onClick: () => setEditPrompt(ai?.systemPrompt ?? ''), style: { ...btn, fontSize: 10, padding: '2px 8px' }, children: "Edit" }))] }), editPrompt !== null ? (_jsxs("div", { children: [_jsx("textarea", { value: editPrompt, onChange: (e) => setEditPrompt(e.target.value), style: { width: '100%', minHeight: 80, padding: 8, borderRadius: 'var(--radius)', border: '1px solid var(--border)', background: 'var(--surface)', color: 'var(--text)', fontFamily: 'var(--mono)', fontSize: 12, resize: 'vertical' }, autoFocus: true }), _jsxs("div", { style: { display: 'flex', gap: 6, marginTop: 6 }, children: [_jsx("button", { onClick: savePrompt, style: { ...btn, background: 'var(--accent)', color: '#fff' }, children: "Save" }), _jsx("button", { onClick: () => setEditPrompt(null), style: btn, children: "Cancel" })] })] })) : (_jsx("div", { style: { padding: '4px 8px', fontSize: 12, color: 'var(--text-2)', whiteSpace: 'pre-wrap' }, children: ai?.systemPrompt ?? '(none)' }))] }), _jsxs("div", { style: { marginBottom: 12 }, children: [_jsxs("div", { style: { fontSize: 11, color: 'var(--text-3)', textTransform: 'uppercase', letterSpacing: 0.5, marginBottom: 6 }, children: ["Event Inbox (", events.length, ")"] }), events.length === 0 && _jsx("div", { style: { color: 'var(--text-3)', padding: 8 }, children: "No events yet" }), [...events].reverse().slice(0, 15).map((e, i) => (_jsxs("div", { style: { padding: '3px 8px', fontSize: 11, color: 'var(--text-2)', display: 'flex', gap: 6 }, children: [_jsxs("span", { style: { color: 'var(--text-3)', minWidth: 24 }, children: ["R", e.round] }), _jsx("span", { style: { color: 'var(--accent)' }, children: e.from }), _jsxs("span", { children: [e.type, e.to ? `→${e.to}` : ''] }), _jsx("span", { style: { flex: 1, color: 'var(--text-3)' }, children: e.data?.message ? `"${e.data.message}"` : JSON.stringify(e.data).slice(0, 60) })] }, i)))] }), _jsxs("div", { children: [_jsxs("div", { style: { fontSize: 11, color: 'var(--text-3)', textTransform: 'uppercase', letterSpacing: 0.5, marginBottom: 6 }, children: ["Memory (", mem?.entries?.length ?? 0, ")"] }), (!mem?.entries || mem.entries.length === 0) && (_jsx("div", { style: { color: 'var(--text-3)', padding: 8 }, children: "Empty memory" })), mem?.entries?.map((e, i) => (_jsx("div", { style: { padding: '4px 8px', fontSize: 12, color: 'var(--text-2)', background: i === (mem.entries.length ?? 0) - 1 ? 'var(--accent-bg, rgba(99,102,241,0.08))' : 'transparent', borderRadius: 'var(--radius)' }, children: e }, i)))] })] }));
|
|
194
|
+
}
|
|
195
|
+
// ── ItemView ──
|
|
196
|
+
function ItemView() {
|
|
197
|
+
const node = useCurrentNode();
|
|
198
|
+
const desc = getComponent(node, SimDescriptive);
|
|
199
|
+
const pos = getComponent(node, SimPosition);
|
|
200
|
+
return (_jsxs("div", { style: { fontFamily: 'var(--mono)', fontSize: 13, maxWidth: 400 }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 12, marginBottom: 12 }, children: [_jsx("div", { style: { width: 40, height: 40, borderRadius: 'var(--radius)', background: 'var(--surface)', border: '1px solid var(--border)', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: 20 }, children: desc?.icon ?? '?' }), _jsxs("div", { children: [_jsx("div", { style: { fontSize: 14, fontWeight: 600 }, children: desc?.name ?? 'Item' }), _jsx("div", { style: { color: 'var(--text-2)', fontSize: 12 }, children: desc?.description })] })] }), pos && (_jsxs("div", { style: { padding: '8px 12px', background: 'var(--surface)', borderRadius: 'var(--radius)', fontSize: 12, color: 'var(--text-2)' }, children: ["Position: (", pos.x, ", ", pos.y, ") \u00B7 Radius: ", pos.radius] }))] }));
|
|
201
|
+
}
|
|
202
|
+
register('sim.world', 'react', WorldView);
|
|
203
|
+
register('sim.agent', 'react', AgentView);
|
|
204
|
+
register('sim.item', 'react', ItemView);
|
|
205
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../sim/view.tsx"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8EAA8E;AAC9E,2DAA2D;AAC3D,6BAA6B;AAE7B,OAAO,EAAE,YAAY,EAAiB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAEL,KAAK,EACL,SAAS,EACT,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,GACT,MAAM,SAAS,CAAC;AAIjB,SAAS,UAAU,CAAC,QAAoB;IACtC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2C,CAAC;IACrE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM;YAAE,SAAS;QAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,EAAE;gBAAE,SAAS;YAClB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxC,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;aACvD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,GAAG,GAAG;IACV,OAAO,EAAE,UAAU;IACnB,YAAY,EAAE,eAAe;IAC7B,MAAM,EAAE,yBAAyB;IACjC,UAAU,EAAE,gBAAgB;IAC5B,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,EAAE;CACJ,CAAC;AAEX,SAAS,YAAY,CAAC,CAAa;IACjC,MAAM,GAAG,GAAI,CAAC,CAAC,IAAY,EAAE,OAAO,CAAC;IACrC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG;QAAE,OAAO,IAAI,GAAG,GAAG,CAAC;IAC3D,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,MAAO,CAAC,CAAC,IAAY,CAAC,CAAC,KAAM,CAAC,CAAC,IAAY,CAAC,CAAC,GAAG,CAAC;IACjF,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,CAAC,CAAC,MAAM,CAAC;AAClB,CAAC;AAED,kBAAkB;AAElB,SAAS,MAAM,CAAC,CAAU;IACxB,IAAI,CAAC,YAAY,KAAK;QAAE,OAAO,CAAC,CAAC,OAAO,CAAC;IACzC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE5C,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAA4C,EAAE,EAAE;QACxE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;IACrG,MAAM,CAAC,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,CAAC;IAC5B,MAAM,CAAC,GAAG,GAAG,EAAE,MAAM,IAAI,GAAG,CAAC;IAC7B,MAAM,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAErC,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,CAAmC,EAAE,EAAE;QACtC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QACzC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACpD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC,EACD,CAAC,QAAQ,EAAE,IAAI,CAAC,CACjB,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,KAAa,EAAE,EAAE;QAChB,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAChF,CAAC,EACD,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CACnB,CAAC;IAEF,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,aAErD,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAC/F,iBACE,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;4BACL,GAAG,GAAG;4BACN,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,eAAe;4BAClE,KAAK,EAAE,MAAM;4BACb,UAAU,EAAE,GAAG;yBAChB,YAEA,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GACzB,EACT,gBAAM,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,kBAAI,KAAK,EAAE,OAAO,IAAI,CAAC,IAAQ,EACrE,KAAK,EAAE,KAAK,KAAK,UAAU,IAAI,CAC9B,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,4BAAoB,CAC5D,EACD,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAU,EAC9D,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACpC,kBAEE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC1B,KAAK,EAAE;4BACL,GAAG,GAAG;4BACN,UAAU,EAAE,GAAG,EAAE,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB;4BACtE,KAAK,EAAE,GAAG,EAAE,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe;yBACxD,aAEA,CAAC,GAAG,IAAI,UARJ,CAAC,CASC,CACV,CAAC,EACF,gBAAM,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,aACtE,QAAQ,CAAC,MAAM,eACf,QAAQ,IAAI,sBAAsB,IAC9B,IACH,EAEL,KAAK,IAAI,CACR,cAAK,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAClM,KAAK,GACF,CACP,EAGD,eACE,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE;oBACL,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,CAAC;oBACT,UAAU,EAAE,gBAAgB;oBAC5B,MAAM,EAAE,yBAAyB;oBACjC,YAAY,EAAE,eAAe;oBAC7B,QAAQ,EAAE,QAAQ;oBAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;iBAC3C,aAED,cACE,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAC3E,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,CAAC,YAER,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACnB,eAEE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EACtC,MAAM,EAAC,wBAAwB,EAC/B,WAAW,EAAE,GAAG,EAChB,OAAO,EAAE,CAAC,CAAC,OAAO,IAJb,CAAC,CAKN,CACH,CAAC,GACE,EAEL,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAW,EAAE,EAAE;wBAC5B,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;wBACzC,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;wBAC7C,IAAI,CAAC,GAAG;4BAAE,OAAO,IAAI,CAAC;wBACtB,MAAM,KAAK,GAAG,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC;wBACnC,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC;wBACtC,OAAO,CACL,0BACE,cACE,KAAK,EAAE;wCACL,QAAQ,EAAE,UAAU;wCACpB,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM;wCACxB,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM;wCACvB,KAAK,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC;wCACrB,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC;wCACtB,YAAY,EAAE,KAAK;wCACnB,MAAM,EAAE,cAAc,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,EAAE;wCACjE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;wCAC1B,aAAa,EAAE,MAAM;qCACtB,GACD,EACF,cACE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC7E,KAAK,EAAE;wCACL,QAAQ,EAAE,UAAU;wCACpB,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wCAChC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wCAC/B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;wCACvB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;wCACxB,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK;wCAC9C,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe;wCACvD,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,EAAE;wCAC1F,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM;wCACrD,OAAO,EAAE,MAAM;wCACf,UAAU,EAAE,QAAQ;wCACpB,cAAc,EAAE,QAAQ;wCACxB,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;wCAC1B,MAAM,EAAE,CAAC;wCACT,MAAM,EAAE,SAAS;qCAClB,EACD,KAAK,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,GAAG,YAEvE,IAAI,EAAE,IAAI,IAAI,GAAG,GACd,EACN,cACE,KAAK,EAAE;wCACL,QAAQ,EAAE,UAAU;wCACpB,IAAI,EAAE,GAAG,CAAC,CAAC;wCACX,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wCAC/B,SAAS,EAAE,kBAAkB;wCAC7B,QAAQ,EAAE,EAAE;wCACZ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe;wCAChD,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;wCAC7B,UAAU,EAAE,QAAQ;wCACpB,MAAM,EAAE,CAAC;wCACT,aAAa,EAAE,MAAM;qCACtB,YAEA,IAAI,EAAE,IAAI,GACP,KApDE,CAAC,CAAC,KAAK,CAqDX,CACP,CAAC;oBACJ,CAAC,CAAC,EAED,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CACxB,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,sEAEjI,CACP,IACG,EAGN,eAAK,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,aAC9D,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,4BACvG,GAAG,CAAC,MAAM,SAClB,EACL,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CACnB,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,iDAAmC,CACtF,EACA,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAChC,eAEE,KAAK,EAAE;4BACL,OAAO,EAAE,MAAM;4BACf,GAAG,EAAE,CAAC;4BACN,OAAO,EAAE,SAAS;4BAClB,UAAU,EAAE,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,aAAa;4BAC7F,YAAY,EAAE,eAAe;4BAC7B,QAAQ,EAAE,EAAE;yBACb,aAED,gBAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,kBAAI,CAAC,CAAC,KAAK,IAAQ,EACxE,yBAAO,CAAC,CAAC,IAAI,GAAQ,EACrB,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAG,CAAC,CAAC,KAAK,GAAQ,EACvE,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,YAAG,YAAY,CAAC,CAAC,CAAC,GAAQ,EACzE,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CACnB,gBAAM,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,wBAC3C,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IACvB,CACR,CAAC,CAAC,CAAC,IAAI,KAlBH,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAmBf,CACP,CAAC,IACE,IACF,CACP,CAAC;AACJ,CAAC;AAED,kBAAkB;AAElB,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;IAE5D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAClE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO;QAChC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC;aAC5F,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAE7B,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,aAEpE,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aAC9E,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,YACnK,IAAI,EAAE,IAAI,IAAI,GAAG,GACd,EACN,0BACE,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,YAAG,IAAI,EAAE,IAAI,IAAI,OAAO,GAAO,EAC5E,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAG,IAAI,EAAE,WAAW,GAAO,IAC3E,IACF,EAEL,KAAK,IAAI,CACR,cAAK,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAClM,KAAK,GACF,CACP,EAEA,GAAG,IAAI,CACN,eAAK,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,4BACpG,GAAG,CAAC,CAAC,QAAI,GAAG,CAAC,CAAC,uBAAqB,GAAG,CAAC,MAAM,IACrD,CACP,EAGD,eAAK,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aAC9B,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,8BAEjK,UAAU,KAAK,IAAI,IAAI,CACtB,iBAAQ,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,YAAY,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,qBAAe,CACjI,IACG,EACL,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CACrB,0BACE,mBACE,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,yBAAyB,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EACtO,SAAS,SACT,EACF,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,aACnD,iBAAQ,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAe,EACzG,iBAAQ,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,uBAAiB,IACnE,IACF,CACP,CAAC,CAAC,CAAC,CACF,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,YAC7F,EAAE,EAAE,YAAY,IAAI,QAAQ,GACzB,CACP,IACG,EAGN,eAAK,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aAC9B,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,8BACrG,MAAM,CAAC,MAAM,SACvB,EACL,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,8BAAqB,EAC9F,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAChD,eAAa,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,aACvG,gBAAM,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAI,CAAC,CAAC,KAAK,IAAQ,EACxE,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,YAAG,CAAC,CAAC,IAAI,GAAQ,EACxD,2BAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAQ,EAC7C,eAAM,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,YAC5C,CAAC,CAAC,IAAY,EAAE,OAAO,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,IAAY,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAC3F,KANC,CAAC,CAOL,CACP,CAAC,IACE,EAGN,0BACE,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,yBAC1G,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,SAC9B,EACL,CAAC,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAC9C,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,6BAAoB,CACvE,EACA,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAC3B,cAAa,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,YACzN,CAAC,IADM,CAAC,CAEL,CACP,CAAC,IACE,IACF,CACP,CAAC;AACJ,CAAC;AAED,iBAAiB;AAEjB,SAAS,QAAQ;IACf,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAE5C,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,aACpE,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aAC9E,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,YACjN,IAAI,EAAE,IAAI,IAAI,GAAG,GACd,EACN,0BACE,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,YAAG,IAAI,EAAE,IAAI,IAAI,MAAM,GAAO,EAC3E,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAG,IAAI,EAAE,WAAW,GAAO,IAC3E,IACF,EACL,GAAG,IAAI,CACN,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,4BACxH,GAAG,CAAC,CAAC,QAAI,GAAG,CAAC,CAAC,uBAAqB,GAAG,CAAC,MAAM,IACrD,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,SAAgB,CAAC,CAAC;AACjD,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,SAAgB,CAAC,CAAC;AACjD,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,QAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../table/client.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../table/client.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../table/edit.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { isComponent, register } from '@treenity/core';
|
|
3
|
+
import { useCurrentNode } from '@treenity/react/context';
|
|
4
|
+
import { useChildren } from '@treenity/react/hooks';
|
|
5
|
+
import { useSchema } from '@treenity/react/schema-loader';
|
|
6
|
+
import { Button } from '@treenity/react/ui/button';
|
|
7
|
+
import { Checkbox } from '@treenity/react/ui/checkbox';
|
|
8
|
+
import { Input } from '@treenity/react/ui/input';
|
|
9
|
+
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@treenity/react/ui/select';
|
|
10
|
+
import { useMemo, useState } from 'react';
|
|
11
|
+
// ── Build field tree from schema + data sample ──
|
|
12
|
+
function buildFieldTree(schema, sample) {
|
|
13
|
+
const nodes = [];
|
|
14
|
+
const seen = new Set();
|
|
15
|
+
if (schema?.properties) {
|
|
16
|
+
for (const [key, prop] of Object.entries(schema.properties)) {
|
|
17
|
+
if (key.startsWith('$'))
|
|
18
|
+
continue;
|
|
19
|
+
seen.add(key);
|
|
20
|
+
nodes.push({ key, label: prop.title || key });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
for (const row of sample.slice(0, 10)) {
|
|
24
|
+
for (const [key, val] of Object.entries(row)) {
|
|
25
|
+
if (key.startsWith('$') || seen.has(key))
|
|
26
|
+
continue;
|
|
27
|
+
seen.add(key);
|
|
28
|
+
if (isComponent(val)) {
|
|
29
|
+
const children = Object.keys(val)
|
|
30
|
+
.filter(k => !k.startsWith('$'))
|
|
31
|
+
.map(k => ({ key: `${key}.${k}`, label: k }));
|
|
32
|
+
nodes.push({ key, label: key, type: val.$type, children });
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
nodes.push({ key, label: key });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return nodes;
|
|
40
|
+
}
|
|
41
|
+
// ── Helpers ──
|
|
42
|
+
function resolveDisplayType(child, field) {
|
|
43
|
+
if (!field)
|
|
44
|
+
return child.$type;
|
|
45
|
+
const val = child[field];
|
|
46
|
+
return val?.$type ?? '';
|
|
47
|
+
}
|
|
48
|
+
// ── Edit View ──
|
|
49
|
+
function TableEditView({ value, onChange }) {
|
|
50
|
+
const node = useCurrentNode();
|
|
51
|
+
const children = useChildren(node.$path, { watch: true, limit: 1000 });
|
|
52
|
+
const state = value;
|
|
53
|
+
const emit = (patch) => {
|
|
54
|
+
if (!onChange)
|
|
55
|
+
return;
|
|
56
|
+
onChange({ ...value, ...patch });
|
|
57
|
+
};
|
|
58
|
+
// Detect types
|
|
59
|
+
const { types, typeMap } = useMemo(() => {
|
|
60
|
+
const map = new Map();
|
|
61
|
+
for (const child of children) {
|
|
62
|
+
const dt = resolveDisplayType(child, state.field ?? '');
|
|
63
|
+
if (!dt)
|
|
64
|
+
continue;
|
|
65
|
+
const arr = map.get(dt) ?? [];
|
|
66
|
+
arr.push(child);
|
|
67
|
+
map.set(dt, arr);
|
|
68
|
+
}
|
|
69
|
+
return { typeMap: map, types: [...map.keys()] };
|
|
70
|
+
}, [children, state.field]);
|
|
71
|
+
const activeType = state.displayType && types.includes(state.displayType)
|
|
72
|
+
? state.displayType
|
|
73
|
+
: types[0] ?? '';
|
|
74
|
+
const sample = useMemo(() => {
|
|
75
|
+
const matched = typeMap.get(activeType) ?? [];
|
|
76
|
+
return matched.slice(0, 10);
|
|
77
|
+
}, [typeMap, activeType]);
|
|
78
|
+
const schema = useSchema(activeType);
|
|
79
|
+
const fieldTree = useMemo(() => buildFieldTree(schema ?? null, sample), [schema, sample]);
|
|
80
|
+
const savedColumns = state.columns?.[activeType] ?? [];
|
|
81
|
+
const hasCustomColumns = savedColumns.length > 0;
|
|
82
|
+
const toggleField = (key, label) => {
|
|
83
|
+
let cols = savedColumns.length > 0 ? [...savedColumns] : fieldTree.map(f => ({ field: f.key, label: f.label, visible: true }));
|
|
84
|
+
const idx = cols.findIndex(c => c.field === key);
|
|
85
|
+
if (idx >= 0) {
|
|
86
|
+
cols[idx] = { ...cols[idx], visible: !cols[idx].visible };
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
cols.push({ field: key, label, visible: true });
|
|
90
|
+
}
|
|
91
|
+
emit({ columns: { ...state.columns, [activeType]: cols } });
|
|
92
|
+
};
|
|
93
|
+
const resetColumns = () => {
|
|
94
|
+
const next = { ...state.columns };
|
|
95
|
+
delete next[activeType];
|
|
96
|
+
emit({ columns: next });
|
|
97
|
+
};
|
|
98
|
+
const isFieldVisible = (key) => {
|
|
99
|
+
if (!hasCustomColumns)
|
|
100
|
+
return true;
|
|
101
|
+
const col = savedColumns.find(c => c.field === key);
|
|
102
|
+
return col?.visible !== false;
|
|
103
|
+
};
|
|
104
|
+
const [expanded, setExpanded] = useState(new Set());
|
|
105
|
+
const toggleExpand = (key) => {
|
|
106
|
+
setExpanded(prev => {
|
|
107
|
+
const next = new Set(prev);
|
|
108
|
+
next.has(key) ? next.delete(key) : next.add(key);
|
|
109
|
+
return next;
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
return (_jsxs("div", { className: "flex flex-col gap-3 text-xs", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsxs("label", { className: "flex items-center gap-2", children: [_jsx("span", { className: "w-20 text-muted-foreground", children: "Page size" }), _jsx(Input, { type: "number", min: 1, max: 1000, className: "h-7 w-20 text-xs", value: state.pageSize ?? 25, onChange: e => emit({ pageSize: Number(e.target.value) || 25 }) })] }), _jsxs("label", { className: "flex items-center gap-2", children: [_jsx("span", { className: "w-20 text-muted-foreground", children: "Field" }), _jsx(Input, { type: "text", placeholder: "(node itself)", className: "h-7 flex-1 text-xs", value: state.field ?? '', onChange: e => emit({ field: e.target.value }) })] }), types.length > 1 && (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "w-20 text-muted-foreground", children: "Type" }), _jsxs(Select, { value: activeType, onValueChange: v => emit({ displayType: v }), children: [_jsx(SelectTrigger, { className: "h-7 flex-1 text-xs", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: types.map(t => (_jsxs(SelectItem, { value: t, children: [t, " (", typeMap.get(t)?.length ?? 0, ")"] }, t))) })] })] }))] }), _jsxs("div", { className: "flex flex-col gap-1", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("span", { className: "font-medium text-muted-foreground", children: ["Columns", activeType ? ` — ${activeType}` : ''] }), hasCustomColumns && (_jsx(Button, { variant: "ghost", size: "sm", className: "h-5 text-[10px]", onClick: resetColumns, children: "reset" }))] }), fieldTree.length === 0 && (_jsx("div", { className: "py-2 text-muted-foreground", children: "No fields detected" })), _jsx("div", { className: "flex flex-col gap-0.5", children: fieldTree.map(field => (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-1.5 rounded px-1 py-0.5 hover:bg-muted/50", children: [field.children ? (_jsx(Button, { variant: "ghost", size: "sm", className: "h-4 w-4 p-0 text-muted-foreground", onClick: () => toggleExpand(field.key), children: expanded.has(field.key) ? '▾' : '▸' })) : (_jsx("span", { className: "w-4" })), _jsxs("label", { className: "flex flex-1 cursor-pointer items-center gap-1.5", children: [_jsx(Checkbox, { checked: isFieldVisible(field.key), onChange: () => toggleField(field.key, field.label) }), _jsx("span", { children: field.label }), field.type && (_jsx("span", { className: "text-[10px] text-muted-foreground/50", children: field.type }))] })] }), field.children && expanded.has(field.key) && (_jsx("div", { className: "ml-5 flex flex-col gap-0.5", children: field.children.map(sub => (_jsxs("label", { className: "flex cursor-pointer items-center gap-1.5 rounded px-1 py-0.5 hover:bg-muted/50", children: [_jsx(Checkbox, { checked: isFieldVisible(sub.key), onChange: () => toggleField(sub.key, sub.label) }), _jsx("span", { children: sub.label })] }, sub.key))) }))] }, field.key))) })] })] }));
|
|
113
|
+
}
|
|
114
|
+
register('ui.table', 'react:edit', TableEditView);
|
|
115
|
+
//# sourceMappingURL=edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../table/edit.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../table/server.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../table/server.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type ColumnConfig = {
|
|
2
|
+
field: string;
|
|
3
|
+
label?: string;
|
|
4
|
+
visible?: boolean;
|
|
5
|
+
width?: number;
|
|
6
|
+
filter?: string;
|
|
7
|
+
};
|
|
8
|
+
/** Table view — paginates children, auto-columns from schema, per-column filters */
|
|
9
|
+
export declare class UITable {
|
|
10
|
+
displayType: string;
|
|
11
|
+
field: string;
|
|
12
|
+
pageSize: number;
|
|
13
|
+
page: number;
|
|
14
|
+
sort: string;
|
|
15
|
+
sortDir: 'asc' | 'desc';
|
|
16
|
+
columns: Record<string, ColumnConfig[]>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../table/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,oFAAoF;AACpF,qBAAa,OAAO;IAClB,WAAW,SAAM;IACjB,KAAK,SAAM;IACX,QAAQ,SAAM;IACd,IAAI,SAAK;IACT,IAAI,SAAM;IACV,OAAO,EAAE,KAAK,GAAG,MAAM,CAAS;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAM;CAC9C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { registerType } from '@treenity/core/comp';
|
|
2
|
+
/** Table view — paginates children, auto-columns from schema, per-column filters */
|
|
3
|
+
export class UITable {
|
|
4
|
+
displayType = '';
|
|
5
|
+
field = '';
|
|
6
|
+
pageSize = 25;
|
|
7
|
+
page = 0;
|
|
8
|
+
sort = '';
|
|
9
|
+
sortDir = 'asc';
|
|
10
|
+
columns = {};
|
|
11
|
+
}
|
|
12
|
+
registerType('ui.table', UITable);
|
|
13
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../table/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAUnD,oFAAoF;AACpF,MAAM,OAAO,OAAO;IAClB,WAAW,GAAG,EAAE,CAAC;IACjB,KAAK,GAAG,EAAE,CAAC;IACX,QAAQ,GAAG,EAAE,CAAC;IACd,IAAI,GAAG,CAAC,CAAC;IACT,IAAI,GAAG,EAAE,CAAC;IACV,OAAO,GAAmB,KAAK,CAAC;IAChC,OAAO,GAAmC,EAAE,CAAC;CAC9C;AAED,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type NodeData } from '@treenity/core';
|
|
2
|
+
/**
|
|
3
|
+
* Local state mirror with debounced persistence to tree.
|
|
4
|
+
* Updates local state immediately for responsive UI,
|
|
5
|
+
* then persists via set() after `delay` ms of inactivity.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useDebouncedSync<T extends object>(node: NodeData, componentKey: string, defaults?: T, delay?: number): [T, (patch: Partial<T>) => void];
|
|
8
|
+
//# sourceMappingURL=use-debounced-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-debounced-sync.d.ts","sourceRoot":"","sources":["../../table/use-debounced-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAQtE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAC/C,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,CAAC,EACZ,KAAK,SAAM,GACV,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAgDlC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { AnyType, getComponent } from '@treenity/core';
|
|
2
|
+
import { set } from '@treenity/react/hooks';
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
const getField = (node, key) => getComponent(node, AnyType, key);
|
|
5
|
+
/**
|
|
6
|
+
* Local state mirror with debounced persistence to tree.
|
|
7
|
+
* Updates local state immediately for responsive UI,
|
|
8
|
+
* then persists via set() after `delay` ms of inactivity.
|
|
9
|
+
*/
|
|
10
|
+
export function useDebouncedSync(node, componentKey, defaults, delay = 500) {
|
|
11
|
+
const init = () => ({ ...defaults, ...getField(node, componentKey) });
|
|
12
|
+
const [local, setLocal] = useState(init);
|
|
13
|
+
const timerRef = useRef(null);
|
|
14
|
+
const pendingRef = useRef(false);
|
|
15
|
+
const latestLocal = useRef(local);
|
|
16
|
+
latestLocal.current = local;
|
|
17
|
+
// Sync from external updates when no local pending changes
|
|
18
|
+
const nodeRef = useRef(node);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (nodeRef.current === node)
|
|
21
|
+
return;
|
|
22
|
+
nodeRef.current = node;
|
|
23
|
+
if (!pendingRef.current) {
|
|
24
|
+
setLocal(({ ...defaults, ...getField(node, componentKey) }));
|
|
25
|
+
}
|
|
26
|
+
}, [node, componentKey]);
|
|
27
|
+
const flush = useCallback(() => {
|
|
28
|
+
const comp = getField(nodeRef.current, componentKey) ?? {};
|
|
29
|
+
const updated = { ...nodeRef.current, [componentKey]: { ...comp, ...latestLocal.current } };
|
|
30
|
+
set(updated);
|
|
31
|
+
pendingRef.current = false;
|
|
32
|
+
}, [componentKey]);
|
|
33
|
+
const update = useCallback((patch) => {
|
|
34
|
+
setLocal(prev => {
|
|
35
|
+
const next = { ...prev, ...patch };
|
|
36
|
+
latestLocal.current = next;
|
|
37
|
+
return next;
|
|
38
|
+
});
|
|
39
|
+
pendingRef.current = true;
|
|
40
|
+
if (timerRef.current)
|
|
41
|
+
clearTimeout(timerRef.current);
|
|
42
|
+
timerRef.current = setTimeout(flush, delay);
|
|
43
|
+
}, [flush, delay]);
|
|
44
|
+
// Flush on unmount
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
return () => {
|
|
47
|
+
if (timerRef.current) {
|
|
48
|
+
clearTimeout(timerRef.current);
|
|
49
|
+
if (pendingRef.current)
|
|
50
|
+
flush();
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}, [flush]);
|
|
54
|
+
return [local, update];
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=use-debounced-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-debounced-sync.js","sourceRoot":"","sources":["../../table/use-debounced-sync.ts"],"names":[],"mappings":"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"}
|