@oasys/oecs 0.5.4 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/CHANGELOG.md +1223 -266
  2. package/README.md +217 -112
  3. package/dist/core/ecs/access_check.d.cts +29 -29
  4. package/dist/core/ecs/access_check.d.ts +29 -29
  5. package/dist/core/ecs/access_check.d.ts.map +1 -1
  6. package/dist/core/ecs/archetype.d.cts +217 -209
  7. package/dist/core/ecs/archetype.d.ts +217 -209
  8. package/dist/core/ecs/archetype.d.ts.map +1 -1
  9. package/dist/core/ecs/archetype_closure.d.cts +23 -0
  10. package/dist/core/ecs/archetype_closure.d.ts +23 -0
  11. package/dist/core/ecs/archetype_closure.d.ts.map +1 -0
  12. package/dist/core/ecs/archetype_graph.d.cts +33 -33
  13. package/dist/core/ecs/archetype_graph.d.ts +33 -33
  14. package/dist/core/ecs/archetype_graph.d.ts.map +1 -1
  15. package/dist/core/ecs/archetype_types.d.cts +55 -0
  16. package/dist/core/ecs/archetype_types.d.ts +55 -0
  17. package/dist/core/ecs/archetype_types.d.ts.map +1 -0
  18. package/dist/core/ecs/change_feed.d.cts +53 -0
  19. package/dist/core/ecs/change_feed.d.ts +53 -0
  20. package/dist/core/ecs/change_feed.d.ts.map +1 -0
  21. package/dist/core/ecs/changed_query.d.cts +36 -0
  22. package/dist/core/ecs/changed_query.d.ts +36 -0
  23. package/dist/core/ecs/changed_query.d.ts.map +1 -0
  24. package/dist/core/ecs/chunk_columns.d.cts +49 -0
  25. package/dist/core/ecs/chunk_columns.d.ts +49 -0
  26. package/dist/core/ecs/chunk_columns.d.ts.map +1 -0
  27. package/dist/core/ecs/command_log.d.cts +26 -26
  28. package/dist/core/ecs/command_log.d.ts +26 -26
  29. package/dist/core/ecs/command_log.d.ts.map +1 -1
  30. package/dist/core/ecs/component.d.cts +43 -42
  31. package/dist/core/ecs/component.d.ts +43 -42
  32. package/dist/core/ecs/component.d.ts.map +1 -1
  33. package/dist/core/ecs/component_registry.d.cts +53 -0
  34. package/dist/core/ecs/component_registry.d.ts +53 -0
  35. package/dist/core/ecs/component_registry.d.ts.map +1 -0
  36. package/dist/core/ecs/compute_backend.d.cts +18 -7
  37. package/dist/core/ecs/compute_backend.d.ts +18 -7
  38. package/dist/core/ecs/compute_backend.d.ts.map +1 -1
  39. package/dist/core/ecs/deferred_commands.d.cts +15 -14
  40. package/dist/core/ecs/deferred_commands.d.ts +15 -14
  41. package/dist/core/ecs/deferred_commands.d.ts.map +1 -1
  42. package/dist/core/ecs/dispatch_trace.d.cts +32 -31
  43. package/dist/core/ecs/dispatch_trace.d.ts +32 -31
  44. package/dist/core/ecs/dispatch_trace.d.ts.map +1 -1
  45. package/dist/core/ecs/ecs.d.cts +289 -270
  46. package/dist/core/ecs/ecs.d.ts +289 -270
  47. package/dist/core/ecs/ecs.d.ts.map +1 -1
  48. package/dist/core/ecs/ecs_memory.d.cts +134 -136
  49. package/dist/core/ecs/ecs_memory.d.ts +134 -136
  50. package/dist/core/ecs/ecs_memory.d.ts.map +1 -1
  51. package/dist/core/ecs/ecs_options.d.cts +89 -0
  52. package/dist/core/ecs/ecs_options.d.ts +89 -0
  53. package/dist/core/ecs/ecs_options.d.ts.map +1 -0
  54. package/dist/core/ecs/entity.d.cts +4 -4
  55. package/dist/core/ecs/entity.d.ts +4 -4
  56. package/dist/core/ecs/entity_allocator.d.cts +20 -18
  57. package/dist/core/ecs/entity_allocator.d.ts +20 -18
  58. package/dist/core/ecs/entity_allocator.d.ts.map +1 -1
  59. package/dist/core/ecs/event.d.cts +36 -22
  60. package/dist/core/ecs/event.d.ts +36 -22
  61. package/dist/core/ecs/event.d.ts.map +1 -1
  62. package/dist/core/ecs/facades.d.cts +12 -126
  63. package/dist/core/ecs/facades.d.ts +12 -126
  64. package/dist/core/ecs/facades.d.ts.map +1 -1
  65. package/dist/core/ecs/frame_stepper.d.cts +12 -12
  66. package/dist/core/ecs/frame_stepper.d.ts +12 -12
  67. package/dist/core/ecs/frame_stepper.d.ts.map +1 -1
  68. package/dist/core/ecs/frame_trace.d.cts +32 -32
  69. package/dist/core/ecs/frame_trace.d.ts +32 -32
  70. package/dist/core/ecs/frame_trace.d.ts.map +1 -1
  71. package/dist/core/ecs/host_commands.d.cts +103 -85
  72. package/dist/core/ecs/host_commands.d.ts +103 -85
  73. package/dist/core/ecs/host_commands.d.ts.map +1 -1
  74. package/dist/core/ecs/index.d.cts +21 -11
  75. package/dist/core/ecs/index.d.ts +21 -11
  76. package/dist/core/ecs/index.d.ts.map +1 -1
  77. package/dist/core/ecs/observer.d.cts +39 -120
  78. package/dist/core/ecs/observer.d.ts +39 -120
  79. package/dist/core/ecs/observer.d.ts.map +1 -1
  80. package/dist/core/ecs/phase.d.cts +79 -0
  81. package/dist/core/ecs/phase.d.ts +79 -0
  82. package/dist/core/ecs/phase.d.ts.map +1 -0
  83. package/dist/core/ecs/plugin.d.cts +125 -0
  84. package/dist/core/ecs/plugin.d.ts +125 -0
  85. package/dist/core/ecs/plugin.d.ts.map +1 -0
  86. package/dist/core/ecs/plugin_slots.d.cts +26 -0
  87. package/dist/core/ecs/plugin_slots.d.ts +26 -0
  88. package/dist/core/ecs/plugin_slots.d.ts.map +1 -0
  89. package/dist/core/ecs/query.d.cts +208 -578
  90. package/dist/core/ecs/query.d.ts +208 -578
  91. package/dist/core/ecs/query.d.ts.map +1 -1
  92. package/dist/core/ecs/query_cache.d.cts +130 -0
  93. package/dist/core/ecs/query_cache.d.ts +130 -0
  94. package/dist/core/ecs/query_cache.d.ts.map +1 -0
  95. package/dist/core/ecs/query_registry.d.cts +47 -0
  96. package/dist/core/ecs/query_registry.d.ts +47 -0
  97. package/dist/core/ecs/query_registry.d.ts.map +1 -0
  98. package/dist/core/ecs/query_terms.d.cts +126 -0
  99. package/dist/core/ecs/query_terms.d.ts +126 -0
  100. package/dist/core/ecs/query_terms.d.ts.map +1 -0
  101. package/dist/core/ecs/ref.d.cts +100 -39
  102. package/dist/core/ecs/ref.d.ts +100 -39
  103. package/dist/core/ecs/ref.d.ts.map +1 -1
  104. package/dist/core/ecs/relation.d.cts +101 -182
  105. package/dist/core/ecs/relation.d.ts +101 -182
  106. package/dist/core/ecs/relation.d.ts.map +1 -1
  107. package/dist/core/ecs/resource.d.cts +13 -13
  108. package/dist/core/ecs/resource.d.ts +13 -13
  109. package/dist/core/ecs/resource_registry.d.cts +5 -5
  110. package/dist/core/ecs/resource_registry.d.ts +5 -5
  111. package/dist/core/ecs/resource_registry.d.ts.map +1 -1
  112. package/dist/core/ecs/row_kinds.d.cts +24 -0
  113. package/dist/core/ecs/row_kinds.d.ts +24 -0
  114. package/dist/core/ecs/row_kinds.d.ts.map +1 -0
  115. package/dist/core/ecs/run_condition.d.cts +23 -23
  116. package/dist/core/ecs/run_condition.d.ts +23 -23
  117. package/dist/core/ecs/run_condition.d.ts.map +1 -1
  118. package/dist/core/ecs/schedule.d.cts +91 -120
  119. package/dist/core/ecs/schedule.d.ts +91 -120
  120. package/dist/core/ecs/schedule.d.ts.map +1 -1
  121. package/dist/core/ecs/schedule_plan.d.cts +33 -0
  122. package/dist/core/ecs/schedule_plan.d.ts +33 -0
  123. package/dist/core/ecs/schedule_plan.d.ts.map +1 -0
  124. package/dist/core/ecs/snapshot.d.cts +77 -0
  125. package/dist/core/ecs/snapshot.d.ts +77 -0
  126. package/dist/core/ecs/snapshot.d.ts.map +1 -0
  127. package/dist/core/ecs/snapshot_mount.d.cts +42 -0
  128. package/dist/core/ecs/snapshot_mount.d.ts +42 -0
  129. package/dist/core/ecs/snapshot_mount.d.ts.map +1 -0
  130. package/dist/core/ecs/sparse_store.d.cts +108 -51
  131. package/dist/core/ecs/sparse_store.d.ts +108 -51
  132. package/dist/core/ecs/sparse_store.d.ts.map +1 -1
  133. package/dist/core/ecs/store.d.cts +527 -473
  134. package/dist/core/ecs/store.d.ts +527 -473
  135. package/dist/core/ecs/store.d.ts.map +1 -1
  136. package/dist/core/ecs/store_layout_listener.d.cts +6 -6
  137. package/dist/core/ecs/store_layout_listener.d.ts +6 -6
  138. package/dist/core/ecs/store_types.d.cts +122 -0
  139. package/dist/core/ecs/store_types.d.ts +122 -0
  140. package/dist/core/ecs/store_types.d.ts.map +1 -0
  141. package/dist/core/ecs/system.d.cts +146 -61
  142. package/dist/core/ecs/system.d.ts +146 -61
  143. package/dist/core/ecs/system.d.ts.map +1 -1
  144. package/dist/core/ecs/system_context.d.cts +296 -0
  145. package/dist/core/ecs/system_context.d.ts +296 -0
  146. package/dist/core/ecs/system_context.d.ts.map +1 -0
  147. package/dist/core/ecs/system_set.d.cts +48 -0
  148. package/dist/core/ecs/system_set.d.ts +48 -0
  149. package/dist/core/ecs/system_set.d.ts.map +1 -0
  150. package/dist/core/ecs/utils/arrays.d.cts +15 -1
  151. package/dist/core/ecs/utils/arrays.d.ts +15 -1
  152. package/dist/core/ecs/utils/arrays.d.ts.map +1 -1
  153. package/dist/core/ecs/utils/error.d.cts +82 -6
  154. package/dist/core/ecs/utils/error.d.ts +82 -6
  155. package/dist/core/ecs/utils/error.d.ts.map +1 -1
  156. package/dist/core/ecs/utils/plugin_error.d.cts +10 -0
  157. package/dist/core/ecs/utils/plugin_error.d.ts +10 -0
  158. package/dist/core/ecs/utils/plugin_error.d.ts.map +1 -0
  159. package/dist/core/restore_errors.d.cts +30 -0
  160. package/dist/core/restore_errors.d.ts +30 -0
  161. package/dist/core/restore_errors.d.ts.map +1 -0
  162. package/dist/core/store/action_ring.d.cts +44 -44
  163. package/dist/core/store/action_ring.d.ts +44 -44
  164. package/dist/core/store/action_ring.d.ts.map +1 -1
  165. package/dist/core/store/allocator.d.cts +149 -95
  166. package/dist/core/store/allocator.d.ts +149 -95
  167. package/dist/core/store/allocator.d.ts.map +1 -1
  168. package/dist/core/store/buffer_backed_column.d.cts +17 -17
  169. package/dist/core/store/buffer_backed_column.d.ts +17 -17
  170. package/dist/core/store/buffer_backed_column.d.ts.map +1 -1
  171. package/dist/core/store/column_store.d.cts +124 -86
  172. package/dist/core/store/column_store.d.ts +124 -86
  173. package/dist/core/store/column_store.d.ts.map +1 -1
  174. package/dist/core/store/command_dispatch.d.cts +14 -15
  175. package/dist/core/store/command_dispatch.d.ts +14 -15
  176. package/dist/core/store/command_dispatch.d.ts.map +1 -1
  177. package/dist/core/store/command_ring.d.cts +36 -39
  178. package/dist/core/store/command_ring.d.ts +36 -39
  179. package/dist/core/store/command_ring.d.ts.map +1 -1
  180. package/dist/core/store/descriptor.d.cts +34 -17
  181. package/dist/core/store/descriptor.d.ts +34 -17
  182. package/dist/core/store/descriptor.d.ts.map +1 -1
  183. package/dist/core/store/entity_index.d.cts +34 -35
  184. package/dist/core/store/entity_index.d.ts +34 -35
  185. package/dist/core/store/entity_index.d.ts.map +1 -1
  186. package/dist/core/store/event_ring.d.cts +36 -38
  187. package/dist/core/store/event_ring.d.ts +36 -38
  188. package/dist/core/store/event_ring.d.ts.map +1 -1
  189. package/dist/core/store/extend.d.cts +13 -7
  190. package/dist/core/store/extend.d.ts +13 -7
  191. package/dist/core/store/extend.d.ts.map +1 -1
  192. package/dist/core/store/grow.d.cts +2 -2
  193. package/dist/core/store/grow.d.ts +2 -2
  194. package/dist/core/store/grow.d.ts.map +1 -1
  195. package/dist/core/store/header.d.cts +31 -27
  196. package/dist/core/store/header.d.ts +31 -27
  197. package/dist/core/store/header.d.ts.map +1 -1
  198. package/dist/core/store/index.d.cts +10 -10
  199. package/dist/core/store/index.d.ts +10 -10
  200. package/dist/core/store/index.d.ts.map +1 -1
  201. package/dist/core/store/layout_ops.d.cts +71 -62
  202. package/dist/core/store/layout_ops.d.ts +71 -62
  203. package/dist/core/store/layout_ops.d.ts.map +1 -1
  204. package/dist/core/store/region_table.d.cts +28 -21
  205. package/dist/core/store/region_table.d.ts +28 -21
  206. package/dist/core/store/region_table.d.ts.map +1 -1
  207. package/dist/core/store/snapshot.d.cts +31 -16
  208. package/dist/core/store/snapshot.d.ts +31 -16
  209. package/dist/core/store/snapshot.d.ts.map +1 -1
  210. package/dist/core/store/state_hash.d.cts +12 -12
  211. package/dist/core/store/state_hash.d.ts +12 -12
  212. package/dist/core/store/state_hash.d.ts.map +1 -1
  213. package/dist/core/store/store_regions.d.cts +10 -10
  214. package/dist/core/store/store_regions.d.ts +10 -10
  215. package/dist/core/store/store_regions.d.ts.map +1 -1
  216. package/dist/core/store/vendored_abi/abi.d.cts +27 -2
  217. package/dist/core/store/vendored_abi/abi.d.ts +27 -2
  218. package/dist/core/store/vendored_abi/abi.d.ts.map +1 -1
  219. package/dist/host_commands-B2KMx8O2.cjs +1 -0
  220. package/dist/host_commands-ClVPvhSa.cjs +2 -0
  221. package/dist/host_commands-CwxVQS1z.js +1524 -0
  222. package/dist/host_commands-nJvTy88E.js +1667 -0
  223. package/dist/index.cjs +1 -1
  224. package/dist/index.d.cts +15 -10
  225. package/dist/index.d.ts +15 -10
  226. package/dist/index.d.ts.map +1 -1
  227. package/dist/index.development.cjs +1 -1
  228. package/dist/index.development.js +5804 -5203
  229. package/dist/index.js +5323 -4764
  230. package/dist/internal.cjs +2 -2
  231. package/dist/internal.d.cts +5 -2
  232. package/dist/internal.d.ts +5 -2
  233. package/dist/internal.d.ts.map +1 -1
  234. package/dist/internal.development.cjs +1 -1
  235. package/dist/internal.development.js +70 -20
  236. package/dist/internal.js +138 -83
  237. package/dist/plugins/abi-D3V-QUSf.cjs +1 -0
  238. package/dist/plugins/abi-NP8pNxpd.js +42 -0
  239. package/dist/plugins/arrays-Dr_1hCjL.js +28 -0
  240. package/dist/plugins/arrays-Dt-Joc4i.cjs +1 -0
  241. package/dist/plugins/assertions-gtDVfbnQ.js +6 -0
  242. package/dist/plugins/assertions-z5GQd_bB.cjs +1 -0
  243. package/dist/{extensions → plugins}/editor/editor.d.cts +54 -54
  244. package/dist/{extensions → plugins}/editor/editor.d.ts +54 -54
  245. package/dist/plugins/editor/editor.d.ts.map +1 -0
  246. package/dist/{extensions → plugins}/editor/field_handle.d.cts +12 -12
  247. package/dist/{extensions → plugins}/editor/field_handle.d.ts +12 -12
  248. package/dist/plugins/editor/field_handle.d.ts.map +1 -0
  249. package/dist/plugins/editor/index.d.cts +22 -0
  250. package/dist/plugins/editor/index.d.ts +22 -0
  251. package/dist/plugins/editor/index.d.ts.map +1 -0
  252. package/dist/plugins/editor.cjs +1 -0
  253. package/dist/plugins/editor.d.cts +1 -0
  254. package/dist/plugins/editor.d.ts +1 -0
  255. package/dist/plugins/editor.development.cjs +1 -0
  256. package/dist/{extensions/editor/index.development.js → plugins/editor.development.js} +81 -64
  257. package/dist/{extensions/editor/index.js → plugins/editor.js} +81 -64
  258. package/dist/plugins/events/event_channel.d.cts +13 -0
  259. package/dist/plugins/events/event_channel.d.ts +13 -0
  260. package/dist/plugins/events/event_channel.d.ts.map +1 -0
  261. package/dist/plugins/events/event_registry.d.cts +22 -0
  262. package/dist/plugins/events/event_registry.d.ts +22 -0
  263. package/dist/plugins/events/event_registry.d.ts.map +1 -0
  264. package/dist/plugins/events/facade.d.cts +26 -0
  265. package/dist/plugins/events/facade.d.ts +26 -0
  266. package/dist/plugins/events/facade.d.ts.map +1 -0
  267. package/dist/plugins/events/index.d.cts +10 -0
  268. package/dist/plugins/events/index.d.ts +10 -0
  269. package/dist/plugins/events/index.d.ts.map +1 -0
  270. package/dist/plugins/events.cjs +1 -0
  271. package/dist/plugins/events.d.cts +1 -0
  272. package/dist/plugins/events.d.ts +1 -0
  273. package/dist/plugins/events.development.cjs +1 -0
  274. package/dist/plugins/events.development.js +174 -0
  275. package/dist/plugins/events.js +159 -0
  276. package/dist/plugins/observers/index.d.cts +23 -0
  277. package/dist/plugins/observers/index.d.ts +23 -0
  278. package/dist/plugins/observers/index.d.ts.map +1 -0
  279. package/dist/plugins/observers/observer_registry.d.cts +101 -0
  280. package/dist/plugins/observers/observer_registry.d.ts +101 -0
  281. package/dist/plugins/observers/observer_registry.d.ts.map +1 -0
  282. package/dist/plugins/observers.cjs +1 -0
  283. package/dist/plugins/observers.d.cts +1 -0
  284. package/dist/plugins/observers.d.ts +1 -0
  285. package/dist/plugins/observers.development.cjs +1 -0
  286. package/dist/plugins/observers.development.js +431 -0
  287. package/dist/plugins/observers.js +403 -0
  288. package/dist/plugins/relation_store-BsoegrZh.js +313 -0
  289. package/dist/plugins/relation_store-DQKSnxsm.cjs +1 -0
  290. package/dist/plugins/relation_store-RBhpcE28.cjs +1 -0
  291. package/dist/plugins/relation_store-RqW5Snx6.js +328 -0
  292. package/dist/plugins/relations/builtin_relations.d.cts +48 -0
  293. package/dist/plugins/relations/builtin_relations.d.ts +48 -0
  294. package/dist/plugins/relations/builtin_relations.d.ts.map +1 -0
  295. package/dist/plugins/relations/facade.d.cts +73 -0
  296. package/dist/plugins/relations/facade.d.ts +73 -0
  297. package/dist/plugins/relations/facade.d.ts.map +1 -0
  298. package/dist/plugins/relations/index.d.cts +11 -0
  299. package/dist/plugins/relations/index.d.ts +11 -0
  300. package/dist/plugins/relations/index.d.ts.map +1 -0
  301. package/dist/{core/ecs → plugins/relations}/relation_service.d.cts +85 -97
  302. package/dist/{core/ecs → plugins/relations}/relation_service.d.ts +85 -97
  303. package/dist/plugins/relations/relation_service.d.ts.map +1 -0
  304. package/dist/plugins/relations/relation_store.d.cts +177 -0
  305. package/dist/plugins/relations/relation_store.d.ts +177 -0
  306. package/dist/plugins/relations/relation_store.d.ts.map +1 -0
  307. package/dist/plugins/relations.cjs +1 -0
  308. package/dist/plugins/relations.d.cts +1 -0
  309. package/dist/plugins/relations.d.ts +1 -0
  310. package/dist/plugins/relations.development.cjs +1 -0
  311. package/dist/plugins/relations.development.js +603 -0
  312. package/dist/plugins/relations.js +553 -0
  313. package/dist/plugins/snapshots/index.d.cts +33 -0
  314. package/dist/plugins/snapshots/index.d.ts +33 -0
  315. package/dist/plugins/snapshots/index.d.ts.map +1 -0
  316. package/dist/plugins/snapshots/resume.d.cts +57 -0
  317. package/dist/plugins/snapshots/resume.d.ts +57 -0
  318. package/dist/plugins/snapshots/resume.d.ts.map +1 -0
  319. package/dist/plugins/snapshots/snapshot_service.d.cts +59 -0
  320. package/dist/plugins/snapshots/snapshot_service.d.ts +59 -0
  321. package/dist/plugins/snapshots/snapshot_service.d.ts.map +1 -0
  322. package/dist/plugins/snapshots.cjs +1 -0
  323. package/dist/plugins/snapshots.d.cts +1 -0
  324. package/dist/plugins/snapshots.d.ts +1 -0
  325. package/dist/plugins/snapshots.development.cjs +1 -0
  326. package/dist/plugins/snapshots.development.js +737 -0
  327. package/dist/plugins/snapshots.js +737 -0
  328. package/dist/plugins/solid/index.d.cts +8 -0
  329. package/dist/plugins/solid/index.d.ts +8 -0
  330. package/dist/plugins/solid/index.d.ts.map +1 -0
  331. package/dist/plugins/solid/solid.d.cts +97 -0
  332. package/dist/plugins/solid/solid.d.ts +97 -0
  333. package/dist/plugins/solid/solid.d.ts.map +1 -0
  334. package/dist/plugins/solid.cjs +1 -0
  335. package/dist/plugins/solid.d.cts +1 -0
  336. package/dist/plugins/solid.d.ts +1 -0
  337. package/dist/plugins/solid.development.cjs +1 -0
  338. package/dist/plugins/solid.development.js +319 -0
  339. package/dist/plugins/solid.js +319 -0
  340. package/dist/plugins/workers/index.d.cts +75 -0
  341. package/dist/plugins/workers/index.d.ts +75 -0
  342. package/dist/plugins/workers/index.d.ts.map +1 -0
  343. package/dist/plugins/workers/node_threads.d.cts +25 -0
  344. package/dist/plugins/workers/node_threads.d.ts +25 -0
  345. package/dist/plugins/workers/node_threads.d.ts.map +1 -0
  346. package/dist/plugins/workers/plan.d.cts +61 -0
  347. package/dist/plugins/workers/plan.d.ts +61 -0
  348. package/dist/plugins/workers/plan.d.ts.map +1 -0
  349. package/dist/plugins/workers/pool.d.cts +144 -0
  350. package/dist/plugins/workers/pool.d.ts +144 -0
  351. package/dist/plugins/workers/pool.d.ts.map +1 -0
  352. package/dist/plugins/workers/protocol.d.cts +112 -0
  353. package/dist/plugins/workers/protocol.d.ts +112 -0
  354. package/dist/plugins/workers/protocol.d.ts.map +1 -0
  355. package/dist/plugins/workers/worker_bind.d.cts +64 -0
  356. package/dist/plugins/workers/worker_bind.d.ts +64 -0
  357. package/dist/plugins/workers/worker_bind.d.ts.map +1 -0
  358. package/dist/plugins/workers/worker_loop.d.cts +14 -0
  359. package/dist/plugins/workers/worker_loop.d.ts +14 -0
  360. package/dist/plugins/workers/worker_loop.d.ts.map +1 -0
  361. package/dist/plugins/workers.cjs +1 -0
  362. package/dist/plugins/workers.d.cts +1 -0
  363. package/dist/plugins/workers.d.ts +1 -0
  364. package/dist/plugins/workers.development.cjs +1 -0
  365. package/dist/plugins/workers.development.js +596 -0
  366. package/dist/plugins/workers.js +474 -0
  367. package/dist/primitives.cjs +1 -1
  368. package/dist/primitives.d.cts +4 -4
  369. package/dist/primitives.d.ts +4 -4
  370. package/dist/primitives.development.cjs +1 -1
  371. package/dist/primitives.development.js +66 -22
  372. package/dist/primitives.js +66 -22
  373. package/dist/shared-BKl12xF1.js +132 -0
  374. package/dist/shared-Dk-pACZT.cjs +1 -0
  375. package/dist/shared.cjs +1 -1
  376. package/dist/shared.d.cts +7 -7
  377. package/dist/shared.d.ts +7 -7
  378. package/dist/shared.d.ts.map +1 -1
  379. package/dist/shared.development.cjs +1 -1
  380. package/dist/shared.development.js +4 -3
  381. package/dist/shared.js +4 -3
  382. package/dist/topological_sort-Cc_yXqPT.js +346 -0
  383. package/dist/topological_sort-vp1imU6D.cjs +1 -0
  384. package/dist/type_primitives/assertions.d.cts +12 -16
  385. package/dist/type_primitives/assertions.d.ts +12 -16
  386. package/dist/type_primitives/assertions.d.ts.map +1 -1
  387. package/dist/type_primitives/binary_heap/binary_heap.d.cts +2 -6
  388. package/dist/type_primitives/binary_heap/binary_heap.d.ts +2 -6
  389. package/dist/type_primitives/binary_heap/binary_heap.d.ts.map +1 -1
  390. package/dist/type_primitives/bitset/bitset.d.cts +7 -11
  391. package/dist/type_primitives/bitset/bitset.d.ts +7 -11
  392. package/dist/type_primitives/bitset/bitset.d.ts.map +1 -1
  393. package/dist/type_primitives/brand.d.cts +2 -7
  394. package/dist/type_primitives/brand.d.ts +2 -7
  395. package/dist/type_primitives/brand.d.ts.map +1 -1
  396. package/dist/type_primitives/error.d.cts +1 -2
  397. package/dist/type_primitives/error.d.ts +1 -2
  398. package/dist/type_primitives/error.d.ts.map +1 -1
  399. package/dist/type_primitives/index.d.cts +1 -1
  400. package/dist/type_primitives/index.d.ts +1 -1
  401. package/dist/type_primitives/sparse_map/sparse_map.d.cts +3 -7
  402. package/dist/type_primitives/sparse_map/sparse_map.d.ts +3 -7
  403. package/dist/type_primitives/sparse_map/sparse_map.d.ts.map +1 -1
  404. package/dist/type_primitives/sparse_set/sparse_set.d.cts +2 -6
  405. package/dist/type_primitives/sparse_set/sparse_set.d.ts +2 -6
  406. package/dist/type_primitives/sparse_set/sparse_set.d.ts.map +1 -1
  407. package/dist/type_primitives/topological_sort/topological_sort.d.cts +1 -5
  408. package/dist/type_primitives/topological_sort/topological_sort.d.ts +1 -5
  409. package/dist/type_primitives/topological_sort/topological_sort.d.ts.map +1 -1
  410. package/dist/type_primitives/typed_arrays/typed_arrays.d.cts +16 -15
  411. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts +16 -15
  412. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts.map +1 -1
  413. package/dist/utils/error.d.ts.map +1 -1
  414. package/dist/version.d.cts +3 -3
  415. package/dist/version.d.ts +3 -3
  416. package/dist/worker.cjs +1 -0
  417. package/dist/worker.d.cts +17 -0
  418. package/dist/worker.d.ts +17 -0
  419. package/dist/worker.d.ts.map +1 -0
  420. package/dist/worker.development.cjs +1 -0
  421. package/dist/worker.development.js +253 -0
  422. package/dist/worker.js +253 -0
  423. package/package.json +363 -191
  424. package/dist/core/ecs/builtin_relations.d.cts +0 -43
  425. package/dist/core/ecs/builtin_relations.d.ts +0 -43
  426. package/dist/core/ecs/builtin_relations.d.ts.map +0 -1
  427. package/dist/core/ecs/event_registry.d.cts +0 -22
  428. package/dist/core/ecs/event_registry.d.ts +0 -22
  429. package/dist/core/ecs/event_registry.d.ts.map +0 -1
  430. package/dist/core/ecs/relation_service.d.ts.map +0 -1
  431. package/dist/core/ecs/resume.d.cts +0 -85
  432. package/dist/core/ecs/resume.d.ts +0 -85
  433. package/dist/core/ecs/resume.d.ts.map +0 -1
  434. package/dist/core/ecs/snapshot_service.d.cts +0 -94
  435. package/dist/core/ecs/snapshot_service.d.ts +0 -94
  436. package/dist/core/ecs/snapshot_service.d.ts.map +0 -1
  437. package/dist/extensions/editor/editor.d.ts.map +0 -1
  438. package/dist/extensions/editor/field_handle.d.ts.map +0 -1
  439. package/dist/extensions/editor/index.cjs +0 -1
  440. package/dist/extensions/editor/index.d.cts +0 -21
  441. package/dist/extensions/editor/index.d.ts +0 -21
  442. package/dist/extensions/editor/index.d.ts.map +0 -1
  443. package/dist/extensions/editor/index.development.cjs +0 -1
  444. package/dist/extensions/reactive/ecs_sync.d.cts +0 -214
  445. package/dist/extensions/reactive/ecs_sync.d.ts +0 -214
  446. package/dist/extensions/reactive/ecs_sync.d.ts.map +0 -1
  447. package/dist/extensions/reactive/index.cjs +0 -1
  448. package/dist/extensions/reactive/index.d.cts +0 -23
  449. package/dist/extensions/reactive/index.d.ts +0 -23
  450. package/dist/extensions/reactive/index.d.ts.map +0 -1
  451. package/dist/extensions/reactive/index.development.cjs +0 -1
  452. package/dist/extensions/reactive/index.development.js +0 -215
  453. package/dist/extensions/reactive/index.js +0 -215
  454. package/dist/extensions/solid/index.cjs +0 -1
  455. package/dist/extensions/solid/index.d.cts +0 -6
  456. package/dist/extensions/solid/index.d.ts +0 -6
  457. package/dist/extensions/solid/index.d.ts.map +0 -1
  458. package/dist/extensions/solid/index.development.cjs +0 -1
  459. package/dist/extensions/solid/index.development.js +0 -40
  460. package/dist/extensions/solid/index.js +0 -36
  461. package/dist/extensions/solid/kernel_solid.d.cts +0 -45
  462. package/dist/extensions/solid/kernel_solid.d.ts +0 -45
  463. package/dist/extensions/solid/kernel_solid.d.ts.map +0 -1
  464. package/dist/host_commands-BlR3oZ3x.js +0 -2406
  465. package/dist/host_commands-C2cpU3yC.cjs +0 -1
  466. package/dist/internal-BoxWl4dG.js +0 -2565
  467. package/dist/internal-CGBEwfeB.cjs +0 -2
  468. package/dist/interop-CT-REx0W.cjs +0 -1
  469. package/dist/interop-CcY6ASQc.js +0 -18
  470. package/dist/interop-DqxleBo7.js +0 -18
  471. package/dist/interop-T1HZ-Dpa.cjs +0 -1
  472. package/dist/kernel-Cz2Kxlwl.js +0 -240
  473. package/dist/kernel-DgyrLFjW.js +0 -227
  474. package/dist/kernel-sw7ScKWu.cjs +0 -1
  475. package/dist/kernel-yWV3XnAb.cjs +0 -1
  476. package/dist/reactive/array.d.cts +0 -24
  477. package/dist/reactive/array.d.ts +0 -24
  478. package/dist/reactive/array.d.ts.map +0 -1
  479. package/dist/reactive/index.cjs +0 -1
  480. package/dist/reactive/index.d.cts +0 -11
  481. package/dist/reactive/index.d.ts +0 -11
  482. package/dist/reactive/index.d.ts.map +0 -1
  483. package/dist/reactive/index.development.cjs +0 -1
  484. package/dist/reactive/index.development.js +0 -18
  485. package/dist/reactive/index.js +0 -18
  486. package/dist/reactive/interop.d.cts +0 -19
  487. package/dist/reactive/interop.d.ts +0 -19
  488. package/dist/reactive/interop.d.ts.map +0 -1
  489. package/dist/reactive/kernel.d.cts +0 -73
  490. package/dist/reactive/kernel.d.ts +0 -73
  491. package/dist/reactive/kernel.d.ts.map +0 -1
  492. package/dist/reactive/map.d.cts +0 -16
  493. package/dist/reactive/map.d.ts +0 -16
  494. package/dist/reactive/map.d.ts.map +0 -1
  495. package/dist/reactive/shallow.d.cts +0 -11
  496. package/dist/reactive/shallow.d.ts +0 -11
  497. package/dist/reactive/shallow.d.ts.map +0 -1
  498. package/dist/reactive/struct.d.cts +0 -10
  499. package/dist/reactive/struct.d.ts +0 -10
  500. package/dist/reactive/struct.d.ts.map +0 -1
  501. package/dist/shallow-Bs39EPh1.js +0 -150
  502. package/dist/shallow-C5YmTbtb.cjs +0 -1
  503. package/dist/shallow-CiFC70Dz.js +0 -159
  504. package/dist/shallow-DQ8aG51_.cjs +0 -1
  505. package/dist/shared-B4v0L1cw.js +0 -109
  506. package/dist/shared-DU78k0pU.cjs +0 -1
  507. package/dist/topological_sort-BDvEyb9W.cjs +0 -1
  508. package/dist/topological_sort-DK6EjpWa.js +0 -135
  509. package/dist/typed_arrays-D3NmwtCG.cjs +0 -1
  510. package/dist/typed_arrays-DIVwVy5_.js +0 -258
@@ -1,15 +1,15 @@
1
1
  import { ComponentDef, ComponentHandle, ComponentSchema, EntityID, CompleteFieldValues, HostCommand, HostCommandQueue, SpawnEntries } from '../../core/ecs/index.cjs';
2
2
  /**
3
- * Reads the committed value of one `(entity, component, field)` slot the editor
3
+ * Reads the committed value of one `(entity, component, field)` slot, the editor
4
4
  * uses it to seed a `setField` inverse with the value the edit replaced. Wire it
5
- * to the reactive read channel (e.g. a `reactiveMap`/`reactiveStruct` projection)
6
- * or to `ecs.getField`; `undefined` for an unknown slot falls back to `0`.
5
+ * to a live read channel, such as a `@oasys/oecs/solid` view, or to
6
+ * `ecs.getField`. `undefined` for an unknown slot falls back to `0`.
7
7
  */
8
8
  export type FieldReader = (entityId: EntityID, def: ComponentDef, field: string) => number | undefined;
9
9
  /**
10
10
  * A reified, undoable unit of editor work: the `forward` commands and their
11
11
  * `inverse`, both plain `HostCommand` data on the one bus. The arrays are mutable
12
- * internally (the spawn/despawn id finalizers patch a slot at apply time) but the
12
+ * internally (the spawn and despawn id finalizers patch a slot at apply time) but the
13
13
  * type handed back from {@link Editor.transaction} is read-only.
14
14
  */
15
15
  export interface EditorTransaction {
@@ -17,24 +17,24 @@ export interface EditorTransaction {
17
17
  readonly inverse: readonly HostCommand[];
18
18
  }
19
19
  /**
20
- * Accumulates the `forward`/`inverse` commands for ONE transaction. Each method
20
+ * Accumulates the `forward` and `inverse` commands for one transaction. Each method
21
21
  * appends a forward command and its inverse, computing the inverse from the
22
- * shadow / read channel where needed. Spawn and despawn install id-finalizers
22
+ * shadow and read channel where needed. Spawn and despawn install id-finalizers
23
23
  * (via `HostCommand.onSpawned`) that patch the apply-time id into the right slot.
24
24
  *
25
- * Obtained from {@link Editor.transaction}; not constructed directly.
25
+ * Obtained from {@link Editor.transaction}. Never constructed directly.
26
26
  */
27
27
  export declare class TransactionBuilder {
28
- private readonly readField;
29
- private readonly shadow;
30
- /** Values staged by THIS build, layered over the editor's shared shadow. Kept
28
+ private readonly _readField;
29
+ private readonly _shadow;
30
+ /** Values staged by this build, layered over the editor's shared shadow. Kept
31
31
  * transaction-local so an aborted build (the callback throws before commit)
32
- * leaves the shared shadow untouched a phantom staged value would poison
33
- * `pendingField` and seed the NEXT edit's inverse with a value the world never
34
- * held. The one merge point into the shared shadow is commit's `applyShadow`. */
35
- private readonly staged;
32
+ * leaves the shared shadow untouched, a phantom staged value would poison
33
+ * `pendingField` and seed the next edit's inverse with a value the world never
34
+ * held. The one merge point into the shared shadow is commit's `_applyShadow`. */
35
+ private readonly _staged;
36
36
  /** @internal */
37
- constructor(readField: FieldReader, shadow: Map<string, number>);
37
+ constructor(_readField: FieldReader, _shadow: Map<string, number>);
38
38
  private get _txn();
39
39
  /**
40
40
  * Spawn an entity carrying `components`. Inverse: despawn the created entity,
@@ -45,26 +45,26 @@ export declare class TransactionBuilder {
45
45
  spawn<Defs extends readonly ComponentDef[]>(components: SpawnEntries<Defs>, onSpawned?: (entityId: EntityID) => void): this;
46
46
  /**
47
47
  * Despawn `entityId`. Inverse: respawn from `restore` (the components+values to
48
- * recreate read them from the channel before despawning). Undo respawns the
49
- * DATA, not the identity: the new entity gets a fresh id, and the respawn's
48
+ * recreate, read them from the channel before despawning). Undo respawns the
49
+ * data, not the identity: the new entity gets a fresh id, and the respawn's
50
50
  * `onSpawned` rewrites this despawn's target so redo removes the respawned
51
51
  * entity rather than the dead original.
52
52
  */
53
53
  despawn<Defs extends readonly ComponentDef[]>(entityId: EntityID, restore: SpawnEntries<Defs>): this;
54
54
  /**
55
55
  * Set `field` of `def` on `entityId` to `value`. Inverse: set it back to the value
56
- * this edit replaced read from the staged overlay / shadow (so stacked edits,
56
+ * this edit replaced, read from the staged overlay and shadow (so stacked edits,
57
57
  * within one build or before a commit, invert correctly) or, failing that, the
58
58
  * read channel (`0` if unknown).
59
59
  */
60
60
  setField<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, field: string & keyof S, value: number): this;
61
61
  /** Attach `def` (with complete `values`) to `entityId`. Inverse: remove it.
62
- * Bare `add` the namespaced-handle grammar (matches `ctx.commands.add` and
62
+ * Bare `add`, the namespaced-handle grammar (matches `ctx.commands.add` and
63
63
  * the queue's `add`), not `addComponent`. */
64
64
  add<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, values: CompleteFieldValues<S>): this;
65
65
  /**
66
66
  * Detach `def` from `entityId`. Inverse: re-add it from `restore` (the field values
67
- * to recreate read them from the channel before removing). Bare `remove` see `add`.
67
+ * to recreate, read them from the channel before removing). Bare `remove`, see `add`.
68
68
  */
69
69
  remove<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, restore: CompleteFieldValues<S>): this;
70
70
  /** Disable `entityId`. Inverse: enable it. */
@@ -73,40 +73,40 @@ export declare class TransactionBuilder {
73
73
  enable(entityId: EntityID): this;
74
74
  }
75
75
  /**
76
- * The editor's undo/redo manager over a {@link HostCommandQueue}. Each action is a
77
- * reified {@link EditorTransaction} pushed onto the undo stack; `undo()`/`redo()`
78
- * enqueue its inverse/forward on the SAME bus. The single-action methods
79
- * (`spawn`, `setField`, …) are sugar for one-command transactions; `transaction`
76
+ * The editor's undo and redo manager over a {@link HostCommandQueue}. Each action is a
77
+ * reified {@link EditorTransaction} pushed onto the undo stack. `undo()` and `redo()`
78
+ * enqueue its inverse and forward on the same bus. The single-action methods
79
+ * (`spawn`, `setField`, …) are sugar for one-command transactions. `transaction`
80
80
  * groups several into one undo entry.
81
81
  *
82
82
  * Construct with the queue and a {@link FieldReader} for the committed read
83
83
  * channel (used to seed `setField` inverses).
84
84
  */
85
85
  export declare class Editor {
86
- private readonly queue;
87
- private readonly readField;
88
- private readonly undoStack;
89
- private readonly redoStack;
90
- /** onChange subscribers see {@link onChange}. */
91
- private readonly listeners;
86
+ private readonly _queue;
87
+ private readonly _readField;
88
+ private readonly _undoStack;
89
+ private readonly _redoStack;
90
+ /** onChange subscribers, see {@link onChange}. */
91
+ private readonly _listeners;
92
92
  /** Per-`(entity, component, field)` shadow of edited values, for inverse correctness. */
93
- private readonly shadow;
94
- constructor(queue: HostCommandQueue, readField: FieldReader);
93
+ private readonly _shadow;
94
+ constructor(_queue: HostCommandQueue, _readField: FieldReader);
95
95
  /**
96
- * Group several actions into ONE undo entry. Build them on the passed
97
- * {@link TransactionBuilder}; the whole group commits (enqueues its forward
98
- * commands) and lands on the undo stack atomically, clearing the redo stack.
96
+ * Group several actions into one undo entry. Build them on the passed
97
+ * {@link TransactionBuilder}. The whole group commits, which enqueues its
98
+ * forward commands, and lands on the undo stack atomically, clearing the redo stack.
99
99
  */
100
100
  transaction(build: (tx: TransactionBuilder) => void): EditorTransaction;
101
101
  /** Spawn `components` as its own undo entry. `onSpawned` reports the new id. */
102
102
  spawn<Defs extends readonly ComponentDef[]>(components: SpawnEntries<Defs>, onSpawned?: (entityId: EntityID) => void): EditorTransaction;
103
- /** Despawn `entityId` as its own undo entry; `restore` recreates it on undo. */
103
+ /** Despawn `entityId` as its own undo entry. `restore` recreates it on undo. */
104
104
  despawn<Defs extends readonly ComponentDef[]>(entityId: EntityID, restore: SpawnEntries<Defs>): EditorTransaction;
105
105
  /** Set one field as its own undo entry. */
106
106
  setField<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, field: string & keyof S, value: number): EditorTransaction;
107
107
  /** Attach a component as its own undo entry. Bare `add` (see `TransactionBuilder.add`). */
108
108
  add<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, values: CompleteFieldValues<S>): EditorTransaction;
109
- /** Detach a component as its own undo entry; `restore` re-adds it on undo. Bare `remove`. */
109
+ /** Detach a component as its own undo entry. `restore` re-adds it on undo. Bare `remove`. */
110
110
  remove<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, restore: CompleteFieldValues<S>): EditorTransaction;
111
111
  /** Disable `entityId` as its own undo entry. */
112
112
  disable(entityId: EntityID): EditorTransaction;
@@ -114,7 +114,7 @@ export declare class Editor {
114
114
  enable(entityId: EntityID): EditorTransaction;
115
115
  /**
116
116
  * Undo the most recent transaction: enqueue its inverse commands (in reverse
117
- * order a group unwinds last-action-first) on the bus and move it to the redo
117
+ * order, a group unwinds last-action-first) on the bus and move it to the redo
118
118
  * stack. Returns `false` if the undo stack is empty.
119
119
  */
120
120
  undo(): boolean;
@@ -126,47 +126,47 @@ export declare class Editor {
126
126
  redo(): boolean;
127
127
  /** Drop both stacks (e.g. on load). Does not touch the world. */
128
128
  clear(): void;
129
- /** Current stack depths for an "Undo (3)" / "Redo" affordance. */
129
+ /** Current stack depths, for an "Undo (3)" or "Redo" affordance. */
130
130
  depths(): {
131
131
  undo: number;
132
132
  redo: number;
133
133
  };
134
- /** `true` when `undo()` would do something allocation-free. */
134
+ /** `true` when `undo()` would do something, allocation-free. */
135
135
  get canUndo(): boolean;
136
- /** `true` when `redo()` would do something allocation-free. */
136
+ /** `true` when `redo()` would do something, allocation-free. */
137
137
  get canRedo(): boolean;
138
138
  /**
139
- * Subscribe to undo/redo-stack changes: fires after every commit, undo,
140
- * redo, and clear the push signal an "Undo (3)" affordance needs instead
139
+ * Subscribe to undo-stack and redo-stack changes: fires after every commit, undo,
140
+ * redo, and clear, the push signal an "Undo (3)" affordance needs instead
141
141
  * of polling `depths()` per frame. Returns an unsubscribe function.
142
- * Callbacks run synchronously in subscription order; read `canUndo` /
143
- * `canRedo` / `depths()` inside.
142
+ * Callbacks run synchronously in subscription order. Read `canUndo`,
143
+ * `canRedo` and `depths()` inside.
144
144
  */
145
145
  onChange(cb: () => void): () => void;
146
- private notify;
146
+ private _notify;
147
147
  /** Read one committed `(entity, component, field)` slot through the reader
148
- * this editor was constructed with the default read for `fieldHandle`
148
+ * this editor was constructed with, the default read for `fieldHandle`
149
149
  * when no channel thunk is supplied. */
150
150
  committedField(entityId: EntityID, def: ComponentDef, field: string): number | undefined;
151
151
  /**
152
152
  * The pending value the editor believes for a field that the committed read
153
- * channel has NOT caught up to yet (the shadow), or `undefined` if none. Lets an
153
+ * channel has not caught up to yet (the shadow), or `undefined` if none. Lets an
154
154
  * inspector echo an edit between the `set` and the tick that commits it.
155
155
  *
156
156
  * Self-resolving: once the read channel reports the shadowed value (the edit
157
- * landed) or reports `undefined` (the slot is gone: entity despawned or
158
- * component removed) the entry is dropped and this returns `undefined`, so
157
+ * landed), or reports `undefined` (the slot is gone: entity despawned or
158
+ * component removed), the entry is dropped and this returns `undefined`, so
159
159
  * `pending` does not outlive its set→commit window and shadow a later external
160
160
  * write, nor a dead slot's lifetime. The one
161
161
  * residual: if an external write changes the field to a *different* value within
162
162
  * the same window before this is next consulted, `pending` can read stale until
163
163
  * the next edit to the slot. `value` (the read channel) is always the source of
164
- * truth; `pending` is only the optimistic bridge.
164
+ * truth. `pending` is only the optimistic bridge.
165
165
  */
166
166
  pendingField(entityId: EntityID, def: ComponentHandle, field: string): number | undefined;
167
167
  /** Enqueue forward commands, record the transaction, clear redo, sync shadow. */
168
- private commit;
169
- /** Keep the setField shadow in step with the commands just enqueued. */
170
- private applyShadow;
168
+ private _commit;
169
+ /** Keep the setField shadow in step with the commands only enqueued. */
170
+ private _applyShadow;
171
171
  }
172
172
  //# sourceMappingURL=editor.d.ts.map
@@ -1,15 +1,15 @@
1
1
  import { ComponentDef, ComponentHandle, ComponentSchema, EntityID, CompleteFieldValues, HostCommand, HostCommandQueue, SpawnEntries } from '../../core/ecs/index.js';
2
2
  /**
3
- * Reads the committed value of one `(entity, component, field)` slot the editor
3
+ * Reads the committed value of one `(entity, component, field)` slot, the editor
4
4
  * uses it to seed a `setField` inverse with the value the edit replaced. Wire it
5
- * to the reactive read channel (e.g. a `reactiveMap`/`reactiveStruct` projection)
6
- * or to `ecs.getField`; `undefined` for an unknown slot falls back to `0`.
5
+ * to a live read channel, such as a `@oasys/oecs/solid` view, or to
6
+ * `ecs.getField`. `undefined` for an unknown slot falls back to `0`.
7
7
  */
8
8
  export type FieldReader = (entityId: EntityID, def: ComponentDef, field: string) => number | undefined;
9
9
  /**
10
10
  * A reified, undoable unit of editor work: the `forward` commands and their
11
11
  * `inverse`, both plain `HostCommand` data on the one bus. The arrays are mutable
12
- * internally (the spawn/despawn id finalizers patch a slot at apply time) but the
12
+ * internally (the spawn and despawn id finalizers patch a slot at apply time) but the
13
13
  * type handed back from {@link Editor.transaction} is read-only.
14
14
  */
15
15
  export interface EditorTransaction {
@@ -17,24 +17,24 @@ export interface EditorTransaction {
17
17
  readonly inverse: readonly HostCommand[];
18
18
  }
19
19
  /**
20
- * Accumulates the `forward`/`inverse` commands for ONE transaction. Each method
20
+ * Accumulates the `forward` and `inverse` commands for one transaction. Each method
21
21
  * appends a forward command and its inverse, computing the inverse from the
22
- * shadow / read channel where needed. Spawn and despawn install id-finalizers
22
+ * shadow and read channel where needed. Spawn and despawn install id-finalizers
23
23
  * (via `HostCommand.onSpawned`) that patch the apply-time id into the right slot.
24
24
  *
25
- * Obtained from {@link Editor.transaction}; not constructed directly.
25
+ * Obtained from {@link Editor.transaction}. Never constructed directly.
26
26
  */
27
27
  export declare class TransactionBuilder {
28
- private readonly readField;
29
- private readonly shadow;
30
- /** Values staged by THIS build, layered over the editor's shared shadow. Kept
28
+ private readonly _readField;
29
+ private readonly _shadow;
30
+ /** Values staged by this build, layered over the editor's shared shadow. Kept
31
31
  * transaction-local so an aborted build (the callback throws before commit)
32
- * leaves the shared shadow untouched a phantom staged value would poison
33
- * `pendingField` and seed the NEXT edit's inverse with a value the world never
34
- * held. The one merge point into the shared shadow is commit's `applyShadow`. */
35
- private readonly staged;
32
+ * leaves the shared shadow untouched, a phantom staged value would poison
33
+ * `pendingField` and seed the next edit's inverse with a value the world never
34
+ * held. The one merge point into the shared shadow is commit's `_applyShadow`. */
35
+ private readonly _staged;
36
36
  /** @internal */
37
- constructor(readField: FieldReader, shadow: Map<string, number>);
37
+ constructor(_readField: FieldReader, _shadow: Map<string, number>);
38
38
  private get _txn();
39
39
  /**
40
40
  * Spawn an entity carrying `components`. Inverse: despawn the created entity,
@@ -45,26 +45,26 @@ export declare class TransactionBuilder {
45
45
  spawn<Defs extends readonly ComponentDef[]>(components: SpawnEntries<Defs>, onSpawned?: (entityId: EntityID) => void): this;
46
46
  /**
47
47
  * Despawn `entityId`. Inverse: respawn from `restore` (the components+values to
48
- * recreate read them from the channel before despawning). Undo respawns the
49
- * DATA, not the identity: the new entity gets a fresh id, and the respawn's
48
+ * recreate, read them from the channel before despawning). Undo respawns the
49
+ * data, not the identity: the new entity gets a fresh id, and the respawn's
50
50
  * `onSpawned` rewrites this despawn's target so redo removes the respawned
51
51
  * entity rather than the dead original.
52
52
  */
53
53
  despawn<Defs extends readonly ComponentDef[]>(entityId: EntityID, restore: SpawnEntries<Defs>): this;
54
54
  /**
55
55
  * Set `field` of `def` on `entityId` to `value`. Inverse: set it back to the value
56
- * this edit replaced read from the staged overlay / shadow (so stacked edits,
56
+ * this edit replaced, read from the staged overlay and shadow (so stacked edits,
57
57
  * within one build or before a commit, invert correctly) or, failing that, the
58
58
  * read channel (`0` if unknown).
59
59
  */
60
60
  setField<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, field: string & keyof S, value: number): this;
61
61
  /** Attach `def` (with complete `values`) to `entityId`. Inverse: remove it.
62
- * Bare `add` the namespaced-handle grammar (matches `ctx.commands.add` and
62
+ * Bare `add`, the namespaced-handle grammar (matches `ctx.commands.add` and
63
63
  * the queue's `add`), not `addComponent`. */
64
64
  add<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, values: CompleteFieldValues<S>): this;
65
65
  /**
66
66
  * Detach `def` from `entityId`. Inverse: re-add it from `restore` (the field values
67
- * to recreate read them from the channel before removing). Bare `remove` see `add`.
67
+ * to recreate, read them from the channel before removing). Bare `remove`, see `add`.
68
68
  */
69
69
  remove<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, restore: CompleteFieldValues<S>): this;
70
70
  /** Disable `entityId`. Inverse: enable it. */
@@ -73,40 +73,40 @@ export declare class TransactionBuilder {
73
73
  enable(entityId: EntityID): this;
74
74
  }
75
75
  /**
76
- * The editor's undo/redo manager over a {@link HostCommandQueue}. Each action is a
77
- * reified {@link EditorTransaction} pushed onto the undo stack; `undo()`/`redo()`
78
- * enqueue its inverse/forward on the SAME bus. The single-action methods
79
- * (`spawn`, `setField`, …) are sugar for one-command transactions; `transaction`
76
+ * The editor's undo and redo manager over a {@link HostCommandQueue}. Each action is a
77
+ * reified {@link EditorTransaction} pushed onto the undo stack. `undo()` and `redo()`
78
+ * enqueue its inverse and forward on the same bus. The single-action methods
79
+ * (`spawn`, `setField`, …) are sugar for one-command transactions. `transaction`
80
80
  * groups several into one undo entry.
81
81
  *
82
82
  * Construct with the queue and a {@link FieldReader} for the committed read
83
83
  * channel (used to seed `setField` inverses).
84
84
  */
85
85
  export declare class Editor {
86
- private readonly queue;
87
- private readonly readField;
88
- private readonly undoStack;
89
- private readonly redoStack;
90
- /** onChange subscribers see {@link onChange}. */
91
- private readonly listeners;
86
+ private readonly _queue;
87
+ private readonly _readField;
88
+ private readonly _undoStack;
89
+ private readonly _redoStack;
90
+ /** onChange subscribers, see {@link onChange}. */
91
+ private readonly _listeners;
92
92
  /** Per-`(entity, component, field)` shadow of edited values, for inverse correctness. */
93
- private readonly shadow;
94
- constructor(queue: HostCommandQueue, readField: FieldReader);
93
+ private readonly _shadow;
94
+ constructor(_queue: HostCommandQueue, _readField: FieldReader);
95
95
  /**
96
- * Group several actions into ONE undo entry. Build them on the passed
97
- * {@link TransactionBuilder}; the whole group commits (enqueues its forward
98
- * commands) and lands on the undo stack atomically, clearing the redo stack.
96
+ * Group several actions into one undo entry. Build them on the passed
97
+ * {@link TransactionBuilder}. The whole group commits, which enqueues its
98
+ * forward commands, and lands on the undo stack atomically, clearing the redo stack.
99
99
  */
100
100
  transaction(build: (tx: TransactionBuilder) => void): EditorTransaction;
101
101
  /** Spawn `components` as its own undo entry. `onSpawned` reports the new id. */
102
102
  spawn<Defs extends readonly ComponentDef[]>(components: SpawnEntries<Defs>, onSpawned?: (entityId: EntityID) => void): EditorTransaction;
103
- /** Despawn `entityId` as its own undo entry; `restore` recreates it on undo. */
103
+ /** Despawn `entityId` as its own undo entry. `restore` recreates it on undo. */
104
104
  despawn<Defs extends readonly ComponentDef[]>(entityId: EntityID, restore: SpawnEntries<Defs>): EditorTransaction;
105
105
  /** Set one field as its own undo entry. */
106
106
  setField<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, field: string & keyof S, value: number): EditorTransaction;
107
107
  /** Attach a component as its own undo entry. Bare `add` (see `TransactionBuilder.add`). */
108
108
  add<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, values: CompleteFieldValues<S>): EditorTransaction;
109
- /** Detach a component as its own undo entry; `restore` re-adds it on undo. Bare `remove`. */
109
+ /** Detach a component as its own undo entry. `restore` re-adds it on undo. Bare `remove`. */
110
110
  remove<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, restore: CompleteFieldValues<S>): EditorTransaction;
111
111
  /** Disable `entityId` as its own undo entry. */
112
112
  disable(entityId: EntityID): EditorTransaction;
@@ -114,7 +114,7 @@ export declare class Editor {
114
114
  enable(entityId: EntityID): EditorTransaction;
115
115
  /**
116
116
  * Undo the most recent transaction: enqueue its inverse commands (in reverse
117
- * order a group unwinds last-action-first) on the bus and move it to the redo
117
+ * order, a group unwinds last-action-first) on the bus and move it to the redo
118
118
  * stack. Returns `false` if the undo stack is empty.
119
119
  */
120
120
  undo(): boolean;
@@ -126,47 +126,47 @@ export declare class Editor {
126
126
  redo(): boolean;
127
127
  /** Drop both stacks (e.g. on load). Does not touch the world. */
128
128
  clear(): void;
129
- /** Current stack depths for an "Undo (3)" / "Redo" affordance. */
129
+ /** Current stack depths, for an "Undo (3)" or "Redo" affordance. */
130
130
  depths(): {
131
131
  undo: number;
132
132
  redo: number;
133
133
  };
134
- /** `true` when `undo()` would do something allocation-free. */
134
+ /** `true` when `undo()` would do something, allocation-free. */
135
135
  get canUndo(): boolean;
136
- /** `true` when `redo()` would do something allocation-free. */
136
+ /** `true` when `redo()` would do something, allocation-free. */
137
137
  get canRedo(): boolean;
138
138
  /**
139
- * Subscribe to undo/redo-stack changes: fires after every commit, undo,
140
- * redo, and clear the push signal an "Undo (3)" affordance needs instead
139
+ * Subscribe to undo-stack and redo-stack changes: fires after every commit, undo,
140
+ * redo, and clear, the push signal an "Undo (3)" affordance needs instead
141
141
  * of polling `depths()` per frame. Returns an unsubscribe function.
142
- * Callbacks run synchronously in subscription order; read `canUndo` /
143
- * `canRedo` / `depths()` inside.
142
+ * Callbacks run synchronously in subscription order. Read `canUndo`,
143
+ * `canRedo` and `depths()` inside.
144
144
  */
145
145
  onChange(cb: () => void): () => void;
146
- private notify;
146
+ private _notify;
147
147
  /** Read one committed `(entity, component, field)` slot through the reader
148
- * this editor was constructed with the default read for `fieldHandle`
148
+ * this editor was constructed with, the default read for `fieldHandle`
149
149
  * when no channel thunk is supplied. */
150
150
  committedField(entityId: EntityID, def: ComponentDef, field: string): number | undefined;
151
151
  /**
152
152
  * The pending value the editor believes for a field that the committed read
153
- * channel has NOT caught up to yet (the shadow), or `undefined` if none. Lets an
153
+ * channel has not caught up to yet (the shadow), or `undefined` if none. Lets an
154
154
  * inspector echo an edit between the `set` and the tick that commits it.
155
155
  *
156
156
  * Self-resolving: once the read channel reports the shadowed value (the edit
157
- * landed) or reports `undefined` (the slot is gone: entity despawned or
158
- * component removed) the entry is dropped and this returns `undefined`, so
157
+ * landed), or reports `undefined` (the slot is gone: entity despawned or
158
+ * component removed), the entry is dropped and this returns `undefined`, so
159
159
  * `pending` does not outlive its set→commit window and shadow a later external
160
160
  * write, nor a dead slot's lifetime. The one
161
161
  * residual: if an external write changes the field to a *different* value within
162
162
  * the same window before this is next consulted, `pending` can read stale until
163
163
  * the next edit to the slot. `value` (the read channel) is always the source of
164
- * truth; `pending` is only the optimistic bridge.
164
+ * truth. `pending` is only the optimistic bridge.
165
165
  */
166
166
  pendingField(entityId: EntityID, def: ComponentHandle, field: string): number | undefined;
167
167
  /** Enqueue forward commands, record the transaction, clear redo, sync shadow. */
168
- private commit;
169
- /** Keep the setField shadow in step with the commands just enqueued. */
170
- private applyShadow;
168
+ private _commit;
169
+ /** Keep the setField shadow in step with the commands only enqueued. */
170
+ private _applyShadow;
171
171
  }
172
172
  //# sourceMappingURL=editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../src/plugins/editor/editor.ts"],"names":[],"mappings":"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"}
@@ -2,38 +2,38 @@ import { ComponentDef, ComponentSchema, EntityID } from '../../core/ecs/index.cj
2
2
  import { Editor } from './editor.cjs';
3
3
  /**
4
4
  * A two-way handle on one `(entity, component, field)` slot. `value` reads the
5
- * reactive channel (tracked, if read in a tracking scope); `set` enqueues an
5
+ * live channel, tracked when read inside a tracking scope. `set` enqueues an
6
6
  * undoable `setField` command via the editor.
7
7
  */
8
8
  export interface FieldHandle {
9
9
  /**
10
- * The field's current value through the reactive read channel `undefined`
10
+ * The field's current value through the live read channel, `undefined`
11
11
  * until the channel has it (e.g. before the spawn's first commit). Read inside
12
- * a tracking scope to subscribe to the channel; the value reflects the last
13
- * COMMITTED tick, so a fresh `set` shows up on the next tick.
12
+ * a tracking scope to subscribe to the channel. The value reflects the last
13
+ * committed tick, so a fresh `set` shows up on the next tick.
14
14
  */
15
15
  readonly value: number | undefined;
16
- /** Enqueue an undoable `setField` for this slot; applied at the next tick. */
16
+ /** Enqueue an undoable `setField` for this slot. Applied at the next tick. */
17
17
  set(value: number): void;
18
18
  /**
19
19
  * The editor's pending (not-yet-committed) value for this slot, or `undefined`
20
- * if none a NON-reactive read of the editor shadow, for an optimistic echo
20
+ * if none, an untracked read of the editor shadow, for an optimistic echo
21
21
  * between the `set` and its commit. Self-resolves to `undefined` once the read
22
- * channel catches up, so it does not outlive the edit. Not a substitute for
23
- * `value` in a tracking scope (it does not subscribe); `value` is the source of
24
- * truth.
22
+ * channel catches up, so it does not outlive the edit. It does not subscribe,
23
+ * so it is no substitute for `value` inside a tracking scope. `value` is the
24
+ * source of truth.
25
25
  */
26
26
  readonly pending: number | undefined;
27
27
  }
28
28
  /**
29
29
  * Build a {@link FieldHandle} for one `(entityId, def, field)` slot. `read` is the
30
- * tracked read of the reactive channel for this field (e.g.
31
- * `() => sync.map.get(entityId)?.x`); `set` routes through `editor.setField`, so the
30
+ * tracked read of the live channel for this field, for example
31
+ * `() => view.cell(entityId)()?.x`. `set` routes through `editor.setField`, so the
32
32
  * edit is queued, batched, and undoable.
33
33
  *
34
34
  * `read` is optional: omitted, the handle reads through the editor's own
35
35
  * committed-channel reader (`editor.committedField`). That default is correct
36
- * but NOT reactive supply the channel thunk when the handle's `value` must
36
+ * but untracked, so pass the channel thunk when the handle's `value` must
37
37
  * subscribe inside a tracking scope.
38
38
  */
39
39
  export declare function fieldHandle<S extends ComponentSchema>(editor: Editor, entityId: EntityID, def: ComponentDef<S>, field: string & keyof S, read?: () => number | undefined): FieldHandle;
@@ -2,38 +2,38 @@ import { ComponentDef, ComponentSchema, EntityID } from '../../core/ecs/index.js
2
2
  import { Editor } from './editor.js';
3
3
  /**
4
4
  * A two-way handle on one `(entity, component, field)` slot. `value` reads the
5
- * reactive channel (tracked, if read in a tracking scope); `set` enqueues an
5
+ * live channel, tracked when read inside a tracking scope. `set` enqueues an
6
6
  * undoable `setField` command via the editor.
7
7
  */
8
8
  export interface FieldHandle {
9
9
  /**
10
- * The field's current value through the reactive read channel `undefined`
10
+ * The field's current value through the live read channel, `undefined`
11
11
  * until the channel has it (e.g. before the spawn's first commit). Read inside
12
- * a tracking scope to subscribe to the channel; the value reflects the last
13
- * COMMITTED tick, so a fresh `set` shows up on the next tick.
12
+ * a tracking scope to subscribe to the channel. The value reflects the last
13
+ * committed tick, so a fresh `set` shows up on the next tick.
14
14
  */
15
15
  readonly value: number | undefined;
16
- /** Enqueue an undoable `setField` for this slot; applied at the next tick. */
16
+ /** Enqueue an undoable `setField` for this slot. Applied at the next tick. */
17
17
  set(value: number): void;
18
18
  /**
19
19
  * The editor's pending (not-yet-committed) value for this slot, or `undefined`
20
- * if none a NON-reactive read of the editor shadow, for an optimistic echo
20
+ * if none, an untracked read of the editor shadow, for an optimistic echo
21
21
  * between the `set` and its commit. Self-resolves to `undefined` once the read
22
- * channel catches up, so it does not outlive the edit. Not a substitute for
23
- * `value` in a tracking scope (it does not subscribe); `value` is the source of
24
- * truth.
22
+ * channel catches up, so it does not outlive the edit. It does not subscribe,
23
+ * so it is no substitute for `value` inside a tracking scope. `value` is the
24
+ * source of truth.
25
25
  */
26
26
  readonly pending: number | undefined;
27
27
  }
28
28
  /**
29
29
  * Build a {@link FieldHandle} for one `(entityId, def, field)` slot. `read` is the
30
- * tracked read of the reactive channel for this field (e.g.
31
- * `() => sync.map.get(entityId)?.x`); `set` routes through `editor.setField`, so the
30
+ * tracked read of the live channel for this field, for example
31
+ * `() => view.cell(entityId)()?.x`. `set` routes through `editor.setField`, so the
32
32
  * edit is queued, batched, and undoable.
33
33
  *
34
34
  * `read` is optional: omitted, the handle reads through the editor's own
35
35
  * committed-channel reader (`editor.committedField`). That default is correct
36
- * but NOT reactive supply the channel thunk when the handle's `value` must
36
+ * but untracked, so pass the channel thunk when the handle's `value` must
37
37
  * subscribe inside a tracking scope.
38
38
  */
39
39
  export declare function fieldHandle<S extends ComponentSchema>(editor: Editor, entityId: EntityID, def: ComponentDef<S>, field: string & keyof S, read?: () => number | undefined): FieldHandle;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field_handle.d.ts","sourceRoot":"","sources":["../../../src/plugins/editor/field_handle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,8EAA8E;IAC9E,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,EACpD,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,EACvB,IAAI,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,GAC7B,WAAW,CAcb"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The host write seam's editor layer.
3
+ *
4
+ * Reified undo and redo, and the inspector field handle, built on the shipped
5
+ * typed `HostCommandQueue`. Undo and redo are application policy, so this ships
6
+ * on its own subpath and not in the world core. A caller constructs an `Editor`
7
+ * itself, and a world installs nothing for it. It pulls no third-party
8
+ * dependency, because the field handle reads through a caller-supplied thunk.
9
+ *
10
+ * - `Editor`, reified `EditorTransaction`s on undo and redo stacks, with
11
+ * transaction grouping. `undo()` and `redo()` enqueue the inverse and forward on the
12
+ * same bus, applied at the next schedule head (undo is only another command).
13
+ * - `fieldHandle`, pairs a read of a live channel with a `setField` command, so
14
+ * an inspector field feels two-way while staying safe and undoable.
15
+ *
16
+ * Reachable as `@oasys/oecs/editor`. Pair it with `@oasys/oecs/solid`, whose
17
+ * `ecs.solid.component` and `ecs.solid.singleton` views are the read side the
18
+ * field handle reads through.
19
+ */
20
+ export { Editor, TransactionBuilder, type EditorTransaction, type FieldReader } from './editor.cjs';
21
+ export { fieldHandle, type FieldHandle } from './field_handle.cjs';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The host write seam's editor layer.
3
+ *
4
+ * Reified undo and redo, and the inspector field handle, built on the shipped
5
+ * typed `HostCommandQueue`. Undo and redo are application policy, so this ships
6
+ * on its own subpath and not in the world core. A caller constructs an `Editor`
7
+ * itself, and a world installs nothing for it. It pulls no third-party
8
+ * dependency, because the field handle reads through a caller-supplied thunk.
9
+ *
10
+ * - `Editor`, reified `EditorTransaction`s on undo and redo stacks, with
11
+ * transaction grouping. `undo()` and `redo()` enqueue the inverse and forward on the
12
+ * same bus, applied at the next schedule head (undo is only another command).
13
+ * - `fieldHandle`, pairs a read of a live channel with a `setField` command, so
14
+ * an inspector field feels two-way while staying safe and undoable.
15
+ *
16
+ * Reachable as `@oasys/oecs/editor`. Pair it with `@oasys/oecs/solid`, whose
17
+ * `ecs.solid.component` and `ecs.solid.singleton` views are the read side the
18
+ * field handle reads through.
19
+ */
20
+ export { Editor, TransactionBuilder, type EditorTransaction, type FieldReader } from './editor.js';
21
+ export { fieldHandle, type FieldHandle } from './field_handle.js';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/editor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function o(r,t,e){return`${r}:${t.id}:${e}`}const a=new WeakMap;class h{constructor(t,e){this._readField=t,this._shadow=e,a.set(this,{forward:[],inverse:[]})}_staged=new Map;get _txn(){return a.get(this)}spawn(t,e){const s={kind:"despawn",eid:0};return this._txn.inverse.push(s),this._txn.forward.push({kind:"spawn",components:t,onSpawned:n=>{s.eid=n,e?.(n)}}),this}despawn(t,e){const s={kind:"despawn",eid:t};return this._txn.forward.push(s),this._txn.inverse.push({kind:"spawn",components:e,onSpawned:n=>{s.eid=n}}),this}setField(t,e,s,n){const i=o(t,e,s),d=this._staged.get(i)??this._shadow.get(i)??this._readField(t,e,s)??0;return this._staged.set(i,n),this._txn.forward.push({kind:"set_field",eid:t,def:e,field:s,value:n}),this._txn.inverse.push({kind:"set_field",eid:t,def:e,field:s,value:d}),this}add(t,e,s){return this._txn.forward.push({kind:"add_component",eid:t,def:e,values:s}),this._txn.inverse.push({kind:"remove_component",eid:t,def:e}),this}remove(t,e,s){return this._txn.forward.push({kind:"remove_component",eid:t,def:e}),this._txn.inverse.push({kind:"add_component",eid:t,def:e,values:s}),this}disable(t){return this._txn.forward.push({kind:"disable",eid:t}),this._txn.inverse.push({kind:"enable",eid:t}),this}enable(t){return this._txn.forward.push({kind:"enable",eid:t}),this._txn.inverse.push({kind:"disable",eid:t}),this}}class u{constructor(t,e){this._queue=t,this._readField=e}_undoStack=[];_redoStack=[];_listeners=[];_shadow=new Map;transaction(t){const e=new h(this._readField,this._shadow);return t(e),this._commit(a.get(e))}spawn(t,e){return this.transaction(s=>s.spawn(t,e))}despawn(t,e){return this.transaction(s=>s.despawn(t,e))}setField(t,e,s,n){return this.transaction(i=>i.setField(t,e,s,n))}add(t,e,s){return this.transaction(n=>n.add(t,e,s))}remove(t,e,s){return this.transaction(n=>n.remove(t,e,s))}disable(t){return this.transaction(e=>e.disable(t))}enable(t){return this.transaction(e=>e.enable(t))}undo(){const t=this._undoStack.pop();if(t===void 0)return!1;const e=t.inverse.slice().reverse();for(const s of e)this._queue.push(s);return this._applyShadow(e),this._redoStack.push(t),this._notify(),!0}redo(){const t=this._redoStack.pop();if(t===void 0)return!1;for(const e of t.forward)this._queue.push(e);return this._applyShadow(t.forward),this._undoStack.push(t),this._notify(),!0}clear(){this._undoStack.length=0,this._redoStack.length=0,this._shadow.clear(),this._notify()}depths(){return{undo:this._undoStack.length,redo:this._redoStack.length}}get canUndo(){return this._undoStack.length>0}get canRedo(){return this._redoStack.length>0}onChange(t){return this._listeners.push(t),()=>{const e=this._listeners.indexOf(t);e!==-1&&this._listeners.splice(e,1)}}_notify(){for(const t of this._listeners.slice())t()}committedField(t,e,s){return this._readField(t,e,s)}pendingField(t,e,s){const n=o(t,e,s),i=this._shadow.get(n);if(i===void 0)return;const d=this._readField(t,e,s);if(d===i||d===void 0){this._shadow.delete(n);return}return i}_commit(t){if(t.forward.length===0)return t;for(const e of t.forward)this._queue.push(e);return this._applyShadow(t.forward),this._undoStack.push(t),this._redoStack.length=0,this._notify(),t}_applyShadow(t){for(const e of t)e.kind==="set_field"&&this._shadow.set(o(e.eid,e.def,e.field),e.value)}}function c(r,t,e,s,n){return{get value(){return n!==void 0?n():r.committedField(t,e,s)},set(i){r.setField(t,e,s,i)},get pending(){return r.pendingField(t,e,s)}}}exports.Editor=u;exports.TransactionBuilder=h;exports.fieldHandle=c;
@@ -0,0 +1 @@
1
+ export * from "./editor/index.cjs";
@@ -0,0 +1 @@
1
+ export * from "./editor/index.js";