@almadar/std 16.200.0 → 16.202.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 (90) hide show
  1. package/behaviors/lolo/ui/core/molecules/ui-command-palette.lolo +116 -0
  2. package/behaviors/lolo/ui/core/molecules/ui-file-tree.lolo +5 -0
  3. package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +55 -0
  4. package/behaviors/lolo/ui/core/organisms/ui-dock-layout.lolo +186 -0
  5. package/behaviors/lolo/ui/core/organisms/ui-split-pane.lolo +37 -1
  6. package/behaviors/lolo/ui/game/atoms/std-audio-cue.lolo +138 -0
  7. package/behaviors/lolo/ui/game/atoms/std-camera-rig.lolo +158 -0
  8. package/behaviors/lolo/ui/game/atoms/std-coef-pad.lolo +5 -3
  9. package/behaviors/lolo/ui/game/atoms/std-platformer-body.lolo +14 -5
  10. package/behaviors/lolo/ui/game/atoms/ui-canvas-2d.lolo +42 -0
  11. package/behaviors/lolo/ui/game/atoms/ui-canvas.lolo +42 -0
  12. package/behaviors/lolo/ui/game/atoms/ui-game-audio-cue.lolo +68 -0
  13. package/behaviors/lolo/ui/game/atoms/ui-game-audio-toggle.lolo +13 -0
  14. package/behaviors/lolo/ui/learning/atoms/ui-algo-graph-canvas.lolo +1 -0
  15. package/behaviors/lolo/ui/learning/atoms/ui-algorithm-canvas.lolo +1 -0
  16. package/behaviors/lolo/ui/learning/atoms/ui-biology-canvas.lolo +1 -0
  17. package/behaviors/lolo/ui/learning/atoms/ui-chemistry-canvas.lolo +1 -0
  18. package/behaviors/lolo/ui/learning/atoms/ui-learning-canvas.lolo +7 -0
  19. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +19 -0
  20. package/behaviors/lolo/ui/learning/atoms/ui-physics-canvas.lolo +1 -0
  21. package/behaviors/registry/infra/atoms/std-approval-gate.orb +20 -10
  22. package/behaviors/registry/infra/atoms/std-cache-aside.orb +62 -31
  23. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +32 -16
  24. package/behaviors/registry/infra/atoms/std-data-erasure.orb +16 -8
  25. package/behaviors/registry/infra/atoms/std-mod-queue.orb +16 -8
  26. package/behaviors/registry/infra/atoms/std-rate-limiter.orb +28 -14
  27. package/behaviors/registry/infra/organisms/std-status-lifecycle-control.orb +2 -1
  28. package/behaviors/registry/ml/organisms/std-escalating-decision.orb +10 -5
  29. package/behaviors/registry/ml/organisms/std-knowledge-tracing.orb +4 -2
  30. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +2 -1
  31. package/behaviors/registry/ui/core/atoms/std-browse.orb +6 -3
  32. package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +2 -1
  33. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +4 -2
  34. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +6 -3
  35. package/behaviors/registry/ui/core/atoms/std-export.orb +4 -2
  36. package/behaviors/registry/ui/core/atoms/std-gallery.orb +18 -9
  37. package/behaviors/registry/ui/core/atoms/std-import.orb +4 -2
  38. package/behaviors/registry/ui/core/atoms/std-list.orb +6 -3
  39. package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +589 -0
  40. package/behaviors/registry/ui/core/molecules/ui-file-tree.orb +8 -0
  41. package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +285 -0
  42. package/behaviors/registry/ui/core/organisms/ui-dock-layout.orb +521 -0
  43. package/behaviors/registry/ui/core/organisms/ui-split-pane.orb +109 -2
  44. package/behaviors/registry/ui/game/atoms/std-audio-cue.orb +653 -0
  45. package/behaviors/registry/ui/game/atoms/std-camera-rig.orb +813 -0
  46. package/behaviors/registry/ui/game/atoms/std-coef-pad.orb +170 -4
  47. package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +84 -7
  48. package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +135 -0
  49. package/behaviors/registry/ui/game/atoms/ui-canvas.orb +134 -0
  50. package/behaviors/registry/ui/game/atoms/ui-game-audio-cue.orb +258 -0
  51. package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +48 -0
  52. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +8 -4
  53. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +6 -3
  54. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +10 -5
  55. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +8 -4
  56. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +8 -4
  57. package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +6 -3
  58. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +8 -4
  59. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +12 -6
  60. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +8 -4
  61. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +6 -3
  62. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +9 -0
  63. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +13 -0
  64. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +13 -0
  65. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +13 -0
  66. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +21 -0
  67. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +39 -0
  68. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +13 -0
  69. package/behaviors/registry/ui/marketing/atoms/std-marketing-article.orb +2 -1
  70. package/behaviors/registry/ui/marketing/atoms/std-marketing-footer.orb +2 -1
  71. package/behaviors/registry/ui/marketing/atoms/std-marketing-split.orb +2 -1
  72. package/behaviors/registry/ui/marketing/atoms/std-marketing-stats.orb +2 -1
  73. package/behaviors/registry/ui/marketing/atoms/std-marketing-steps.orb +2 -1
  74. package/behaviors/registry/ui/marketing/atoms/std-marketing-team.orb +2 -1
  75. package/dist/behaviors/exports-reader.js +3668 -2878
  76. package/dist/behaviors/functions/index.d.ts +673 -6
  77. package/dist/behaviors/functions/index.js +3650 -2879
  78. package/dist/behaviors/index.d.ts +2 -2
  79. package/dist/behaviors/index.js +3679 -2879
  80. package/dist/behaviors/query.d.ts +88 -4
  81. package/dist/behaviors/query.js +3679 -2879
  82. package/dist/behaviors-embeddings.hash.json +3 -3
  83. package/dist/behaviors-embeddings.json +33 -9
  84. package/dist/behaviors-registry.json +125308 -3773
  85. package/dist/index.d.ts +2 -2
  86. package/dist/index.js +3679 -2879
  87. package/dist/knob-embeddings.hash.json +3 -3
  88. package/dist/knob-embeddings.json +1 -1
  89. package/dist/registry/factory-signatures.json +1 -1
  90. package/package.json +3 -3
@@ -129,6 +129,11 @@
129
129
  "required": true,
130
130
  "type": "number"
131
131
  },
132
+ "b": {
133
+ "name": "b",
134
+ "required": false,
135
+ "type": "number"
136
+ },
132
137
  "h": {
133
138
  "name": "h",
134
139
  "required": true,
@@ -221,7 +226,7 @@
221
226
  "config": {
222
227
  "coefPads": {
223
228
  "default": [],
224
- "description": "One row per pad: id, center (x, y in world units), the mod applied to the road while inside x0..x1 (a scales slope+height, h shifts horizontally, k lifts), and the hint floated on apply, and hop (true = the board teleports the player onto the reshaped surface — use when the mod steps the road far from the pad; false = the skate snap carries the player, preserving speed). applied is stamped at runtime.",
229
+ "description": "One row per pad: id, center (x, y in world units), the mod applied to the road while inside x0..x1 (a scales slope+height, b compresses/stretch period, h shifts horizontally, k lifts), and the hint floated on apply, and hop (true = the board teleports the player onto the reshaped surface — use when the mod steps the road far from the pad; false = the skate snap carries the player, preserving speed). applied is stamped at runtime.",
225
230
  "items": {
226
231
  "properties": {
227
232
  "applied": {
@@ -257,6 +262,11 @@
257
262
  "required": true,
258
263
  "type": "number"
259
264
  },
265
+ "b": {
266
+ "name": "b",
267
+ "required": false,
268
+ "type": "number"
269
+ },
260
270
  "h": {
261
271
  "name": "h",
262
272
  "required": true,
@@ -342,7 +352,7 @@
342
352
  },
343
353
  "emits": [
344
354
  {
345
- "description": "The player stood on an unapplied coefficient pad; carries the pad position and the full mod (x0, x1, a, h, k) so the board appends it to the body authority's curveMods and hops the player onto the reshaped road. Fires once per pad per run.",
355
+ "description": "The player stood on an unapplied coefficient pad; carries the pad position and the full mod (x0, x1, a, b, h, k) so the board appends it to the body authority's curveMods and hops the player onto the reshaped road. Fires once per pad per run.",
346
356
  "event": "COEF_PAD_APPLIED",
347
357
  "eventId": "evt_01M14952XMJ1FAWXKV41ST5G5Y",
348
358
  "payloadSchema": [
@@ -376,6 +386,10 @@
376
386
  "required": true,
377
387
  "type": "number"
378
388
  },
389
+ {
390
+ "name": "b",
391
+ "type": "number"
392
+ },
379
393
  {
380
394
  "name": "h",
381
395
  "required": true,
@@ -487,7 +501,7 @@
487
501
  ]
488
502
  },
489
503
  {
490
- "description": "The player stood on an unapplied coefficient pad; carries the pad position and the full mod (x0, x1, a, h, k) so the board appends it to the body authority's curveMods and hops the player onto the reshaped road. Fires once per pad per run.",
504
+ "description": "The player stood on an unapplied coefficient pad; carries the pad position and the full mod (x0, x1, a, b, h, k) so the board appends it to the body authority's curveMods and hops the player onto the reshaped road. Fires once per pad per run.",
491
505
  "id": "evt_01M14952XMJ1FAWXKV41ST5G5Y",
492
506
  "key": "COEF_PAD_APPLIED",
493
507
  "name": "Coef Pad Applied",
@@ -522,6 +536,10 @@
522
536
  "required": true,
523
537
  "type": "number"
524
538
  },
539
+ {
540
+ "name": "b",
541
+ "type": "number"
542
+ },
525
543
  {
526
544
  "name": "h",
527
545
  "required": true,
@@ -789,6 +807,24 @@
789
807
  "@m",
790
808
  "a"
791
809
  ],
810
+ "b": [
811
+ "if",
812
+ [
813
+ "==",
814
+ [
815
+ "object/get",
816
+ "@m",
817
+ "b"
818
+ ],
819
+ null
820
+ ],
821
+ 1.0,
822
+ [
823
+ "object/get",
824
+ "@m",
825
+ "b"
826
+ ]
827
+ ],
792
828
  "h": [
793
829
  "object/get",
794
830
  "@m",
@@ -920,7 +956,137 @@
920
956
  ]
921
957
  }
922
958
  }
923
- ]
959
+ ],
960
+ "types": {
961
+ "CoefMod": [
962
+ {
963
+ "name": "x0",
964
+ "required": true,
965
+ "type": "number"
966
+ },
967
+ {
968
+ "name": "x1",
969
+ "required": true,
970
+ "type": "number"
971
+ },
972
+ {
973
+ "name": "a",
974
+ "required": true,
975
+ "type": "number"
976
+ },
977
+ {
978
+ "name": "b",
979
+ "type": "number"
980
+ },
981
+ {
982
+ "name": "h",
983
+ "required": true,
984
+ "type": "number"
985
+ },
986
+ {
987
+ "name": "k",
988
+ "required": true,
989
+ "type": "number"
990
+ }
991
+ ],
992
+ "CoefModSample": [
993
+ {
994
+ "name": "x",
995
+ "required": true,
996
+ "type": "number"
997
+ },
998
+ {
999
+ "name": "y",
1000
+ "required": true,
1001
+ "type": "number"
1002
+ }
1003
+ ],
1004
+ "CoefPad": [
1005
+ {
1006
+ "name": "id",
1007
+ "required": true,
1008
+ "type": "string"
1009
+ },
1010
+ {
1011
+ "name": "x",
1012
+ "required": true,
1013
+ "type": "number"
1014
+ },
1015
+ {
1016
+ "name": "y",
1017
+ "required": true,
1018
+ "type": "number"
1019
+ },
1020
+ {
1021
+ "name": "mod",
1022
+ "properties": [
1023
+ {
1024
+ "name": "x0",
1025
+ "required": true,
1026
+ "type": "number"
1027
+ },
1028
+ {
1029
+ "name": "x1",
1030
+ "required": true,
1031
+ "type": "number"
1032
+ },
1033
+ {
1034
+ "name": "a",
1035
+ "required": true,
1036
+ "type": "number"
1037
+ },
1038
+ {
1039
+ "name": "b",
1040
+ "type": "number"
1041
+ },
1042
+ {
1043
+ "name": "h",
1044
+ "required": true,
1045
+ "type": "number"
1046
+ },
1047
+ {
1048
+ "name": "k",
1049
+ "required": true,
1050
+ "type": "number"
1051
+ }
1052
+ ],
1053
+ "required": true,
1054
+ "type": "object"
1055
+ },
1056
+ {
1057
+ "name": "glyph",
1058
+ "type": "string"
1059
+ },
1060
+ {
1061
+ "name": "hint",
1062
+ "type": "string"
1063
+ },
1064
+ {
1065
+ "name": "hop",
1066
+ "type": "boolean"
1067
+ },
1068
+ {
1069
+ "name": "samples",
1070
+ "properties": [
1071
+ {
1072
+ "name": "x",
1073
+ "required": true,
1074
+ "type": "number"
1075
+ },
1076
+ {
1077
+ "name": "y",
1078
+ "required": true,
1079
+ "type": "number"
1080
+ }
1081
+ ],
1082
+ "type": "[object]"
1083
+ },
1084
+ {
1085
+ "name": "applied",
1086
+ "type": "boolean"
1087
+ }
1088
+ ]
1089
+ }
924
1090
  }
925
1091
  ],
926
1092
  "schemaVersion": 1,
@@ -145,6 +145,15 @@
145
145
  "parent": "trt_01M0H2SJBBCZW9WSQ3YBCVRKM2",
146
146
  "renames": []
147
147
  },
148
+ "evt_01M1KCHVK8J2707S2GJT2NE4YC": {
149
+ "bakedName": "CURVE_MOD_CLEAR",
150
+ "curName": "CURVE_MOD_CLEAR",
151
+ "id": "evt_01M1KCHVK8J2707S2GJT2NE4YC",
152
+ "kind": "event",
153
+ "owner": "workspace",
154
+ "parent": "trt_01M0H2SJBBCZW9WSQ3YBCVRKM2",
155
+ "renames": []
156
+ },
148
157
  "orb_01M0H2SJBB6B28C7NXBC5BWW23": {
149
158
  "bakedName": "PlatformerBodyOrbital",
150
159
  "curName": "PlatformerBodyOrbital",
@@ -257,6 +266,11 @@
257
266
  "required": true,
258
267
  "type": "number"
259
268
  },
269
+ "b": {
270
+ "name": "b",
271
+ "required": true,
272
+ "type": "number"
273
+ },
260
274
  "h": {
261
275
  "name": "h",
262
276
  "required": true,
@@ -342,7 +356,7 @@
342
356
  "config": {
343
357
  "curveModsEnabled": {
344
358
  "default": false,
345
- "description": "When true, entity.curveMods reshape the skate surface inside each mod's x-range: the road samples the base curve at (x − h) and applies a·y + k (slope scales by a) — coefficient pads lift/tilt the segment the player is riding. Multiple overlapping mods stack by summing each mod's delta from the base surface; a mod whose shifted sample leaves the curve range is skipped. Default off: boards without coef pads pay nothing.",
359
+ "description": "When true, entity.curveMods reshape the skate surface inside each mod's x-range: the road samples the base curve at b·(x − h) and applies a·y + k (slope scales by a·b) — coefficient pads lift/tilt/compress the segment the player is riding. Multiple overlapping mods stack by summing each mod's delta from the base surface; a mod whose shifted sample leaves the curve range is skipped. Default off: boards without coef pads pay nothing.",
346
360
  "label": "Curve Mods Enabled",
347
361
  "tier": "domain",
348
362
  "type": "boolean"
@@ -797,6 +811,13 @@
797
811
  ],
798
812
  "scope": "external",
799
813
  "tier": "domain"
814
+ },
815
+ {
816
+ "description": "Curve mods were cleared; the skate surface is back to the base skateCurve until a new mod is added.",
817
+ "event": "CURVE_MOD_CLEAR",
818
+ "eventId": "evt_01M1KCHVK8J2707S2GJT2NE4YC",
819
+ "scope": "external",
820
+ "tier": "domain"
800
821
  }
801
822
  ],
802
823
  "entityContract": {
@@ -887,6 +908,10 @@
887
908
  "required": true,
888
909
  "type": "number"
889
910
  },
911
+ {
912
+ "name": "b",
913
+ "type": "number"
914
+ },
890
915
  {
891
916
  "name": "h",
892
917
  "required": true,
@@ -899,6 +924,13 @@
899
924
  }
900
925
  ]
901
926
  },
927
+ {
928
+ "description": "Curve mods were cleared; the skate surface is back to the base skateCurve until a new mod is added.",
929
+ "id": "evt_01M1KCHVK8J2707S2GJT2NE4YC",
930
+ "key": "CURVE_MOD_CLEAR",
931
+ "name": "Curve Mod Clear",
932
+ "tier": "domain"
933
+ },
902
934
  {
903
935
  "id": "evt_01M1GJ1RVFG67Q9AE87QG7RWTJ",
904
936
  "key": "SET_TUNING",
@@ -1379,6 +1411,16 @@
1379
1411
  "@entity.curveMods",
1380
1412
  {
1381
1413
  "a": "@payload.a",
1414
+ "b": [
1415
+ "if",
1416
+ [
1417
+ "==",
1418
+ "@payload.b",
1419
+ null
1420
+ ],
1421
+ 1.0,
1422
+ "@payload.b"
1423
+ ],
1382
1424
  "h": "@payload.h",
1383
1425
  "k": "@payload.k",
1384
1426
  "x0": "@payload.x0",
@@ -1393,6 +1435,20 @@
1393
1435
  "guard": "@config.curveModsEnabled",
1394
1436
  "to": "active"
1395
1437
  },
1438
+ {
1439
+ "effects": [
1440
+ [
1441
+ "set",
1442
+ "@entity.curveMods",
1443
+ []
1444
+ ]
1445
+ ],
1446
+ "event": "CURVE_MOD_CLEAR",
1447
+ "eventId": "evt_01M1KCHVK8J2707S2GJT2NE4YC",
1448
+ "from": "active",
1449
+ "guard": "@config.curveModsEnabled",
1450
+ "to": "active"
1451
+ },
1396
1452
  {
1397
1453
  "effects": [
1398
1454
  [
@@ -2228,12 +2284,20 @@
2228
2284
  [
2229
2285
  "modX",
2230
2286
  [
2231
- "-",
2232
- "@cx",
2287
+ "*",
2233
2288
  [
2234
2289
  "object/get",
2235
2290
  "@m",
2236
- "h"
2291
+ "b"
2292
+ ],
2293
+ [
2294
+ "-",
2295
+ "@cx",
2296
+ [
2297
+ "object/get",
2298
+ "@m",
2299
+ "h"
2300
+ ]
2237
2301
  ]
2238
2302
  ]
2239
2303
  ]
@@ -2450,9 +2514,17 @@
2450
2514
  [
2451
2515
  "*",
2452
2516
  [
2453
- "object/get",
2454
- "@m",
2455
- "a"
2517
+ "*",
2518
+ [
2519
+ "object/get",
2520
+ "@m",
2521
+ "a"
2522
+ ],
2523
+ [
2524
+ "object/get",
2525
+ "@m",
2526
+ "b"
2527
+ ]
2456
2528
  ],
2457
2529
  "@modSlope"
2458
2530
  ],
@@ -3221,6 +3293,11 @@
3221
3293
  "required": true,
3222
3294
  "type": "number"
3223
3295
  },
3296
+ {
3297
+ "name": "b",
3298
+ "required": true,
3299
+ "type": "number"
3300
+ },
3224
3301
  {
3225
3302
  "name": "h",
3226
3303
  "required": true,
@@ -55,6 +55,24 @@
55
55
  "parent": "trt_01M055GNYNDBSMRP68BDSWWFFG",
56
56
  "renames": []
57
57
  },
58
+ "evt_01M1M6SDSA6W1GZA9YZJR17DHX": {
59
+ "bakedName": "@config.onSelect",
60
+ "curName": "@config.onSelect",
61
+ "id": "evt_01M1M6SDSA6W1GZA9YZJR17DHX",
62
+ "kind": "event",
63
+ "owner": "workspace",
64
+ "parent": "trt_01M055GNYNDBSMRP68BDSWWFFG",
65
+ "renames": []
66
+ },
67
+ "evt_01M1M6SDSAXEXSM691C4WD5WP1": {
68
+ "bakedName": "@config.onMove",
69
+ "curName": "@config.onMove",
70
+ "id": "evt_01M1M6SDSAXEXSM691C4WD5WP1",
71
+ "kind": "event",
72
+ "owner": "workspace",
73
+ "parent": "trt_01M055GNYNDBSMRP68BDSWWFFG",
74
+ "renames": []
75
+ },
58
76
  "orb_01M055GNYNB72EY2C3M49826C0": {
59
77
  "bakedName": "Canvas2dOrbital",
60
78
  "curName": "Canvas2dOrbital",
@@ -185,6 +203,13 @@
185
203
  "tier": "presentation",
186
204
  "type": "[node]"
187
205
  },
206
+ "editable": {
207
+ "default": false,
208
+ "description": "--- Scene-edit mode (a game studio selecting/dragging drawables). Purely",
209
+ "label": "Editable",
210
+ "tier": "presentation",
211
+ "type": "boolean"
212
+ },
188
213
  "error": {
189
214
  "description": "Error state",
190
215
  "label": "Error",
@@ -274,6 +299,27 @@
274
299
  "tier": "presentation",
275
300
  "type": "Map<string,string>"
276
301
  },
302
+ "moveEvent": {
303
+ "default": "MOVE",
304
+ "description": "Declarative move event, `UI:{moveEvent} { id, x, y }` — fired once on drop.",
305
+ "label": "Move Event",
306
+ "tier": "presentation",
307
+ "type": "event"
308
+ },
309
+ "onMove": {
310
+ "default": "MOVE",
311
+ "description": "Fired once per drag gesture, on drop — before `moveEvent`.",
312
+ "label": "On Move",
313
+ "tier": "presentation",
314
+ "type": "event"
315
+ },
316
+ "onSelect": {
317
+ "default": "SELECT",
318
+ "description": "Fired on a click that changes selection — before `selectEvent`.",
319
+ "label": "On Select",
320
+ "tier": "presentation",
321
+ "type": "event"
322
+ },
277
323
  "projection": {
278
324
  "default": "isometric",
279
325
  "description": "--- Projection ---",
@@ -295,6 +341,19 @@
295
341
  "tier": "presentation",
296
342
  "type": "number"
297
343
  },
344
+ "selectEvent": {
345
+ "default": "SELECT",
346
+ "description": "Declarative selection event, `UI:{selectEvent} { id }`.",
347
+ "label": "Select Event",
348
+ "tier": "presentation",
349
+ "type": "event"
350
+ },
351
+ "selectedId": {
352
+ "description": "The currently-selected drawable id (controlled); `null`/undefined = none.",
353
+ "label": "Selected Id",
354
+ "tier": "presentation",
355
+ "type": "string"
356
+ },
298
357
  "showMinimap": {
299
358
  "default": true,
300
359
  "description": "Toggle minimap overlay.",
@@ -400,6 +459,42 @@
400
459
  "eventId": "evt_01M055GNYPQZ509HNQSND656XT",
401
460
  "scope": "external",
402
461
  "tier": "essential"
462
+ },
463
+ {
464
+ "definerKnob": "onSelect",
465
+ "description": "Fired on a click that changes selection — before `selectEvent`.",
466
+ "event": "@config.onSelect",
467
+ "eventId": "evt_01M1M6SDSA6W1GZA9YZJR17DHX",
468
+ "payloadSchema": [
469
+ {
470
+ "name": "id",
471
+ "type": "string"
472
+ }
473
+ ],
474
+ "scope": "external",
475
+ "tier": "essential"
476
+ },
477
+ {
478
+ "definerKnob": "onMove",
479
+ "description": "Fired once per drag gesture, on drop — before `moveEvent`.",
480
+ "event": "@config.onMove",
481
+ "eventId": "evt_01M1M6SDSAXEXSM691C4WD5WP1",
482
+ "payloadSchema": [
483
+ {
484
+ "name": "id",
485
+ "type": "string"
486
+ },
487
+ {
488
+ "name": "x",
489
+ "type": "number"
490
+ },
491
+ {
492
+ "name": "y",
493
+ "type": "number"
494
+ }
495
+ ],
496
+ "scope": "external",
497
+ "tier": "essential"
403
498
  }
404
499
  ],
405
500
  "entityContract": {
@@ -480,6 +575,40 @@
480
575
  "key": "@config.tileLeaveEvent",
481
576
  "name": "@config.tile leave event",
482
577
  "tier": "essential"
578
+ },
579
+ {
580
+ "description": "Fired on a click that changes selection — before `selectEvent`.",
581
+ "id": "evt_01M1M6SDSA6W1GZA9YZJR17DHX",
582
+ "key": "@config.onSelect",
583
+ "name": "@config.on select",
584
+ "payloadSchema": [
585
+ {
586
+ "name": "id",
587
+ "type": "string"
588
+ }
589
+ ],
590
+ "tier": "essential"
591
+ },
592
+ {
593
+ "description": "Fired once per drag gesture, on drop — before `moveEvent`.",
594
+ "id": "evt_01M1M6SDSAXEXSM691C4WD5WP1",
595
+ "key": "@config.onMove",
596
+ "name": "@config.on move",
597
+ "payloadSchema": [
598
+ {
599
+ "name": "id",
600
+ "type": "string"
601
+ },
602
+ {
603
+ "name": "x",
604
+ "type": "number"
605
+ },
606
+ {
607
+ "name": "y",
608
+ "type": "number"
609
+ }
610
+ ],
611
+ "tier": "essential"
483
612
  }
484
613
  ],
485
614
  "states": [
@@ -502,14 +631,20 @@
502
631
  "children": "@config.children",
503
632
  "className": "@config.className",
504
633
  "drawables": "@config.drawables",
634
+ "editable": "@config.editable",
505
635
  "error": "@config.error",
506
636
  "fit": "@config.fit",
507
637
  "followTarget": "@config.followTarget",
508
638
  "isLoading": "@config.isLoading",
509
639
  "keyMap": "@config.keyMap",
510
640
  "keyUpMap": "@config.keyUpMap",
641
+ "moveEvent": "@config.moveEvent",
642
+ "onMove": "@config.onMove",
643
+ "onSelect": "@config.onSelect",
511
644
  "projection": "@config.projection",
512
645
  "scale": "@config.scale",
646
+ "selectEvent": "@config.selectEvent",
647
+ "selectedId": "@config.selectedId",
513
648
  "showMinimap": "@config.showMinimap",
514
649
  "tileClickEvent": "@config.tileClickEvent",
515
650
  "tileHoverEvent": "@config.tileHoverEvent",