incanto 0.33.0 → 0.34.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 (42) hide show
  1. package/dist/2d.d.ts +2 -2
  2. package/dist/2d.js +3 -3
  3. package/dist/3d.d.ts +3 -3
  4. package/dist/3d.js +4 -4
  5. package/dist/{behavior-CKwTCjfR.d.ts → behavior-CtPScDMo.d.ts} +9 -0
  6. package/dist/{create-game-D2QU5x7S.js → create-game-CFNqoqOX.js} +5 -5
  7. package/dist/{create-game-sFuTLqjD.js → create-game-QTfghzwM.js} +5 -5
  8. package/dist/debug.d.ts +1 -1
  9. package/dist/{duplicate-BgnG1Lqz.js → duplicate-DlOvknDO.js} +1 -1
  10. package/dist/{environment-presets-CQtEGogB.js → environment-presets-B6WiUsaO.js} +2 -2
  11. package/dist/{gameplay-BpQCbABv.js → gameplay-BxFtmfSe.js} +2 -2
  12. package/dist/gameplay.d.ts +1 -1
  13. package/dist/gameplay.js +1 -1
  14. package/dist/index.d.ts +53 -3
  15. package/dist/index.js +4 -4
  16. package/dist/{loader-Buk8Bu1h.js → loader-BwR0DxeM.js} +13 -0
  17. package/dist/{loader-COn5fS0o.d.ts → loader-DmXfj6Uv.d.ts} +1 -1
  18. package/dist/net.d.ts +1 -1
  19. package/dist/net.js +3 -3
  20. package/dist/{pathfinding-DUw9mir9.d.ts → pathfinding-DRCe89SI.d.ts} +1 -1
  21. package/dist/{physics-2d-DjXR5DMu.js → physics-2d-BuyAwsW5.js} +2 -2
  22. package/dist/{physics-3d-DF8npb1O.js → physics-3d-C8Kn_Nyb.js} +3 -3
  23. package/dist/react.d.ts +1 -1
  24. package/dist/react.js +1 -1
  25. package/dist/{register-FIJtNbub.js → register-BLPC10Mj.js} +3 -3
  26. package/dist/{register-CscIzJEO.js → register-G3edsjJ2.js} +208 -10
  27. package/dist/{register-CtI-itec.js → register-OodmuUMK.js} +2 -2
  28. package/dist/{test-BRxLd2jH.js → test-C4B5znap.js} +10 -10
  29. package/dist/test.d.ts +2 -2
  30. package/dist/test.js +1 -1
  31. package/dist/vite.js +1 -1
  32. package/editor/assets/{agent8-BdDP3xKW.js → agent8-BTODHtdM.js} +1 -1
  33. package/editor/assets/{debug-DbjTyTlC.js → debug-CJEz4EwC.js} +1 -1
  34. package/editor/assets/{index-BWCudoz1.js → index-BYCso8Bf.js} +90 -90
  35. package/editor/index.html +1 -1
  36. package/package.json +1 -1
  37. package/schemas/scene.schema.json +142 -6
  38. package/skills/incanto-hud.md +57 -1
  39. package/skills/incanto-node-reference.md +45 -6
  40. package/templates-app/beacon-isle-3d/package.json +1 -1
  41. package/templates-app/tps-3d/package.json +1 -1
  42. package/templates-app/village-quest-3d/package.json +1 -1
package/editor/index.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Incanto Scene Editor</title>
7
7
  <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><rect width='16' height='16' rx='3' fill='%236ee7dc'/><text x='8' y='12' text-anchor='middle' font-size='11' font-family='monospace' fill='%230e1018'>i</text></svg>" />
8
- <script type="module" crossorigin src="./assets/index-BWCudoz1.js"></script>
8
+ <script type="module" crossorigin src="./assets/index-BYCso8Bf.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="./assets/GameServer-C56iOUgF.js">
10
10
  </head>
11
11
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "incanto",
3
- "version": "0.33.0",
3
+ "version": "0.34.0",
4
4
  "description": "Vibe-coding-first web game engine SDK — JSON-driven scenes on three.js",
5
5
  "keywords": [
6
6
  "game-engine",
@@ -2723,6 +2723,10 @@
2723
2723
  "visible": {
2724
2724
  "type": "boolean",
2725
2725
  "default": true
2726
+ },
2727
+ "focusNavigation": {
2728
+ "type": "boolean",
2729
+ "default": false
2726
2730
  }
2727
2731
  },
2728
2732
  "additionalProperties": false
@@ -6087,7 +6091,7 @@
6087
6091
  },
6088
6092
  "UiBanner": {
6089
6093
  "type": "object",
6090
- "x-signals": ["bannerShown"],
6094
+ "x-signals": ["dragStarted", "dragCancelled", "droppedOn", "dropped", "bannerShown"],
6091
6095
  "properties": {
6092
6096
  "name": {
6093
6097
  "type": "string"
@@ -6129,6 +6133,18 @@
6129
6133
  "type": "boolean",
6130
6134
  "default": true
6131
6135
  },
6136
+ "focusable": {
6137
+ "type": "boolean",
6138
+ "default": false
6139
+ },
6140
+ "draggable": {
6141
+ "type": "boolean",
6142
+ "default": false
6143
+ },
6144
+ "dropTarget": {
6145
+ "type": "boolean",
6146
+ "default": false
6147
+ },
6132
6148
  "size": {
6133
6149
  "type": "number",
6134
6150
  "default": 42
@@ -6166,6 +6182,7 @@
6166
6182
  },
6167
6183
  "UiBar": {
6168
6184
  "type": "object",
6185
+ "x-signals": ["dragStarted", "dragCancelled", "droppedOn", "dropped"],
6169
6186
  "properties": {
6170
6187
  "name": {
6171
6188
  "type": "string"
@@ -6207,6 +6224,18 @@
6207
6224
  "type": "boolean",
6208
6225
  "default": true
6209
6226
  },
6227
+ "focusable": {
6228
+ "type": "boolean",
6229
+ "default": false
6230
+ },
6231
+ "draggable": {
6232
+ "type": "boolean",
6233
+ "default": false
6234
+ },
6235
+ "dropTarget": {
6236
+ "type": "boolean",
6237
+ "default": false
6238
+ },
6210
6239
  "value": {
6211
6240
  "type": "number",
6212
6241
  "default": 100
@@ -6272,7 +6301,7 @@
6272
6301
  },
6273
6302
  "UiButton": {
6274
6303
  "type": "object",
6275
- "x-signals": ["pressed"],
6304
+ "x-signals": ["dragStarted", "dragCancelled", "droppedOn", "dropped", "pressed"],
6276
6305
  "properties": {
6277
6306
  "name": {
6278
6307
  "type": "string"
@@ -6314,6 +6343,18 @@
6314
6343
  "type": "boolean",
6315
6344
  "default": true
6316
6345
  },
6346
+ "focusable": {
6347
+ "type": "boolean",
6348
+ "default": true
6349
+ },
6350
+ "draggable": {
6351
+ "type": "boolean",
6352
+ "default": false
6353
+ },
6354
+ "dropTarget": {
6355
+ "type": "boolean",
6356
+ "default": false
6357
+ },
6317
6358
  "text": {
6318
6359
  "type": "string",
6319
6360
  "default": "OK"
@@ -6363,7 +6404,15 @@
6363
6404
  },
6364
6405
  "UiDialogue": {
6365
6406
  "type": "object",
6366
- "x-signals": ["lineShown", "choiceMade", "dialogueFinished"],
6407
+ "x-signals": [
6408
+ "dragStarted",
6409
+ "dragCancelled",
6410
+ "droppedOn",
6411
+ "dropped",
6412
+ "lineShown",
6413
+ "choiceMade",
6414
+ "dialogueFinished"
6415
+ ],
6367
6416
  "properties": {
6368
6417
  "name": {
6369
6418
  "type": "string"
@@ -6405,6 +6454,18 @@
6405
6454
  "type": "boolean",
6406
6455
  "default": true
6407
6456
  },
6457
+ "focusable": {
6458
+ "type": "boolean",
6459
+ "default": false
6460
+ },
6461
+ "draggable": {
6462
+ "type": "boolean",
6463
+ "default": false
6464
+ },
6465
+ "dropTarget": {
6466
+ "type": "boolean",
6467
+ "default": false
6468
+ },
6408
6469
  "charsPerSecond": {
6409
6470
  "type": "number",
6410
6471
  "default": 40
@@ -6442,6 +6503,7 @@
6442
6503
  },
6443
6504
  "UiImage": {
6444
6505
  "type": "object",
6506
+ "x-signals": ["dragStarted", "dragCancelled", "droppedOn", "dropped"],
6445
6507
  "properties": {
6446
6508
  "name": {
6447
6509
  "type": "string"
@@ -6483,6 +6545,18 @@
6483
6545
  "type": "boolean",
6484
6546
  "default": true
6485
6547
  },
6548
+ "focusable": {
6549
+ "type": "boolean",
6550
+ "default": false
6551
+ },
6552
+ "draggable": {
6553
+ "type": "boolean",
6554
+ "default": false
6555
+ },
6556
+ "dropTarget": {
6557
+ "type": "boolean",
6558
+ "default": false
6559
+ },
6486
6560
  "src": {
6487
6561
  "type": "string",
6488
6562
  "default": ""
@@ -6537,6 +6611,7 @@
6537
6611
  },
6538
6612
  "UiPanel": {
6539
6613
  "type": "object",
6614
+ "x-signals": ["dragStarted", "dragCancelled", "droppedOn", "dropped"],
6540
6615
  "properties": {
6541
6616
  "name": {
6542
6617
  "type": "string"
@@ -6578,6 +6653,18 @@
6578
6653
  "type": "boolean",
6579
6654
  "default": true
6580
6655
  },
6656
+ "focusable": {
6657
+ "type": "boolean",
6658
+ "default": false
6659
+ },
6660
+ "draggable": {
6661
+ "type": "boolean",
6662
+ "default": false
6663
+ },
6664
+ "dropTarget": {
6665
+ "type": "boolean",
6666
+ "default": false
6667
+ },
6581
6668
  "layout": {
6582
6669
  "type": "string",
6583
6670
  "enum": ["column", "row", "grid"],
@@ -6644,7 +6731,7 @@
6644
6731
  },
6645
6732
  "UiSelect": {
6646
6733
  "type": "object",
6647
- "x-signals": ["changed"],
6734
+ "x-signals": ["dragStarted", "dragCancelled", "droppedOn", "dropped", "changed"],
6648
6735
  "properties": {
6649
6736
  "name": {
6650
6737
  "type": "string"
@@ -6686,6 +6773,18 @@
6686
6773
  "type": "boolean",
6687
6774
  "default": true
6688
6775
  },
6776
+ "focusable": {
6777
+ "type": "boolean",
6778
+ "default": true
6779
+ },
6780
+ "draggable": {
6781
+ "type": "boolean",
6782
+ "default": false
6783
+ },
6784
+ "dropTarget": {
6785
+ "type": "boolean",
6786
+ "default": false
6787
+ },
6689
6788
  "label": {
6690
6789
  "type": "string",
6691
6790
  "default": ""
@@ -6727,7 +6826,7 @@
6727
6826
  },
6728
6827
  "UiSlider": {
6729
6828
  "type": "object",
6730
- "x-signals": ["changed"],
6829
+ "x-signals": ["dragStarted", "dragCancelled", "droppedOn", "dropped", "changed"],
6731
6830
  "properties": {
6732
6831
  "name": {
6733
6832
  "type": "string"
@@ -6769,6 +6868,18 @@
6769
6868
  "type": "boolean",
6770
6869
  "default": true
6771
6870
  },
6871
+ "focusable": {
6872
+ "type": "boolean",
6873
+ "default": true
6874
+ },
6875
+ "draggable": {
6876
+ "type": "boolean",
6877
+ "default": false
6878
+ },
6879
+ "dropTarget": {
6880
+ "type": "boolean",
6881
+ "default": false
6882
+ },
6772
6883
  "label": {
6773
6884
  "type": "string",
6774
6885
  "default": ""
@@ -6826,6 +6937,7 @@
6826
6937
  },
6827
6938
  "UiText": {
6828
6939
  "type": "object",
6940
+ "x-signals": ["dragStarted", "dragCancelled", "droppedOn", "dropped"],
6829
6941
  "properties": {
6830
6942
  "name": {
6831
6943
  "type": "string"
@@ -6867,6 +6979,18 @@
6867
6979
  "type": "boolean",
6868
6980
  "default": true
6869
6981
  },
6982
+ "focusable": {
6983
+ "type": "boolean",
6984
+ "default": false
6985
+ },
6986
+ "draggable": {
6987
+ "type": "boolean",
6988
+ "default": false
6989
+ },
6990
+ "dropTarget": {
6991
+ "type": "boolean",
6992
+ "default": false
6993
+ },
6870
6994
  "text": {
6871
6995
  "type": "string",
6872
6996
  "default": ""
@@ -6912,7 +7036,7 @@
6912
7036
  },
6913
7037
  "UiToggle": {
6914
7038
  "type": "object",
6915
- "x-signals": ["changed"],
7039
+ "x-signals": ["dragStarted", "dragCancelled", "droppedOn", "dropped", "changed"],
6916
7040
  "properties": {
6917
7041
  "name": {
6918
7042
  "type": "string"
@@ -6954,6 +7078,18 @@
6954
7078
  "type": "boolean",
6955
7079
  "default": true
6956
7080
  },
7081
+ "focusable": {
7082
+ "type": "boolean",
7083
+ "default": true
7084
+ },
7085
+ "draggable": {
7086
+ "type": "boolean",
7087
+ "default": false
7088
+ },
7089
+ "dropTarget": {
7090
+ "type": "boolean",
7091
+ "default": false
7092
+ },
6957
7093
  "label": {
6958
7094
  "type": "string",
6959
7095
  "default": ""
@@ -101,7 +101,7 @@ so structure in the tree becomes structure on screen. Panels nest.
101
101
  { "name": "Volume", "type": "UiSlider", "props": { "label": "volume", "value": 0.8 } },
102
102
  { "name": "Invert", "type": "UiToggle", "props": { "label": "invert Y" } },
103
103
  { "name": "Quality", "type": "UiSelect", "props": { "options": "low,medium,high", "value": "high" } },
104
- { "name": "Resume", "type": "UiButton", "props": { "label": "Resume" } }
104
+ { "name": "Resume", "type": "UiButton", "props": { "text": "Resume" } }
105
105
  ] }
106
106
  ```
107
107
 
@@ -121,3 +121,59 @@ widget use `UiButton`'s `pressed`.
121
121
  Setting `.value` from a behavior updates the control and does **NOT** re-emit
122
122
  `changed` — restoring a saved setting must not fire the handler that saved it.
123
123
 
124
+ ## Playable on a controller (focus navigation)
125
+
126
+ A menu you can only click is not playable on a gamepad, and "add controller
127
+ support" was not something a JSON scene could express at all.
128
+
129
+ ```json
130
+ { "name": "Hud", "type": "HudLayer", "props": { "focusNavigation": true }, "children": [ … ] }
131
+ ```
132
+
133
+ Arrow keys / d-pad move the focus between the **focusable** widgets under that
134
+ layer, `Enter` / `A` activates, and the focused one wears a ring.
135
+ `UiButton`/`UiSlider`/`UiToggle`/`UiSelect` are focusable by default;
136
+ `UiText`/`UiBar`/`UiImage`/`UiPanel` are not, so arrowing never lands on a label.
137
+
138
+ What activation MEANS is per widget: a button presses, a toggle flips (left/right
139
+ sets it explicitly, which reads better on a pad), a select walks its list, a
140
+ slider nudges by one `step`.
141
+
142
+ **It is OFF by default**, deliberately: a game whose HUD happens to contain a
143
+ button must not lose its arrow keys the moment one exists. Turn it on for the
144
+ screens that ARE menus and off again when play resumes —
145
+ `hud.focusNavigation = false`. `hud.focus(widget)` sets the starting item, since
146
+ opening a menu should land somewhere rather than nowhere.
147
+
148
+ The gamepad codes are the ones the engine already produces from a pad
149
+ (`Pad12`–`Pad15` d-pad, `Pad0` = A), so nothing extra is declared.
150
+
151
+ ## Dragging things between slots (inventory)
152
+
153
+ An inventory is the one screen where "click it" is not enough, and every game
154
+ that wanted one dropped out of scene JSON to hand-roll pointer handlers. Two
155
+ props and four signals, on the widgets you already have — no new node type:
156
+
157
+ ```json
158
+ { "name": "SlotA", "type": "UiPanel", "props": { "dropTarget": true }, "children": [
159
+ { "name": "Potion", "type": "UiImage", "props": { "src": "$potion", "draggable": true } }
160
+ ] },
161
+ { "name": "SlotB", "type": "UiPanel", "props": { "dropTarget": true } }
162
+ ```
163
+
164
+ | signal | on | args |
165
+ | --- | --- | --- |
166
+ | `dragStarted` | the dragged widget | itself |
167
+ | `droppedOn` | the dragged widget | the target it landed on |
168
+ | `dropped` | the drop target | the widget that landed |
169
+ | `dragCancelled` | the dragged widget | itself (landed on nothing) |
170
+
171
+ Both ends are told, because both usually have work to do: the item leaves its old
172
+ slot, the slot takes it. **Who owns the item is your game's business** — these
173
+ report the GESTURE, not a model, so an inventory that stacks, swaps or refuses is
174
+ your `connections` and a behavior, not a prop nobody could have guessed.
175
+
176
+ A drop on a CHILD of a slot counts as a drop on the slot (the cursor lands on the
177
+ icon inside it, which is the normal case), a drop on nothing cancels, and a
178
+ widget never drops onto itself.
179
+
@@ -394,6 +394,7 @@ Signals: `movementStateChanged(state)`
394
394
  |---|---|---|
395
395
  | `zIndex` | `100` | number |
396
396
  | `visible` | `true` | boolean |
397
+ | `focusNavigation` | `false` | boolean |
397
398
 
398
399
  ## `InstancedMesh3D` — `incanto/3d`
399
400
 
@@ -923,10 +924,13 @@ Signals: `timeout`
923
924
  |---|---|---|
924
925
  | `anchor` | `"center"` | one of: `topLeft` `top` `topRight` `left` `center` `right` `bottomLeft` `bottom` `bottomRight` |
925
926
  | `visible` | `true` | boolean |
927
+ | `focusable` | `false` | boolean |
928
+ | `draggable` | `false` | boolean |
929
+ | `dropTarget` | `false` | boolean |
926
930
  | `size` | `42` | number |
927
931
  | `seconds` | `2` | number |
928
932
 
929
- Signals: `bannerShown`
933
+ Signals: `dragStarted` · `dragCancelled` · `droppedOn` · `dropped` · `bannerShown`
930
934
 
931
935
  ## `UiBar` — `incanto`
932
936
 
@@ -934,6 +938,9 @@ Signals: `bannerShown`
934
938
  |---|---|---|
935
939
  | `anchor` | `"topLeft"` | one of: `topLeft` `top` `topRight` `left` `center` `right` `bottomLeft` `bottom` `bottomRight` |
936
940
  | `visible` | `true` | boolean |
941
+ | `focusable` | `false` | boolean |
942
+ | `draggable` | `false` | boolean |
943
+ | `dropTarget` | `false` | boolean |
937
944
  | `value` | `100` | number |
938
945
  | `max` | `100` | number |
939
946
  | `width` | `180` | number |
@@ -944,19 +951,24 @@ Signals: `bannerShown`
944
951
  | `background` | `"rgba(0,0,0,0.5)"` | string |
945
952
  | `label` | `""` | string |
946
953
 
954
+ Signals: `dragStarted` · `dragCancelled` · `droppedOn` · `dropped`
955
+
947
956
  ## `UiButton` — `incanto`
948
957
 
949
958
  | Prop | Default | Kind |
950
959
  |---|---|---|
951
960
  | `anchor` | `"topLeft"` | one of: `topLeft` `top` `topRight` `left` `center` `right` `bottomLeft` `bottom` `bottomRight` |
952
961
  | `visible` | `true` | boolean |
962
+ | `focusable` | `true` | boolean |
963
+ | `draggable` | `false` | boolean |
964
+ | `dropTarget` | `false` | boolean |
953
965
  | `text` | `"OK"` | string |
954
966
  | `size` | `16` | number |
955
967
  | `color` | `"#ffffff"` | string |
956
968
  | `background` | `"rgba(255,255,255,0.14)"` | string |
957
969
  | `disabled` | `false` | boolean |
958
970
 
959
- Signals: `pressed`
971
+ Signals: `dragStarted` · `dragCancelled` · `droppedOn` · `dropped` · `pressed`
960
972
 
961
973
  ## `UiDialogue` — `incanto`
962
974
 
@@ -964,10 +976,13 @@ Signals: `pressed`
964
976
  |---|---|---|
965
977
  | `anchor` | `"bottom"` | one of: `topLeft` `top` `topRight` `left` `center` `right` `bottomLeft` `bottom` `bottomRight` |
966
978
  | `visible` | `true` | boolean |
979
+ | `focusable` | `false` | boolean |
980
+ | `draggable` | `false` | boolean |
981
+ | `dropTarget` | `false` | boolean |
967
982
  | `charsPerSecond` | `40` | number |
968
983
  | `width` | `520` | number |
969
984
 
970
- Signals: `lineShown` · `choiceMade` · `dialogueFinished`
985
+ Signals: `dragStarted` · `dragCancelled` · `droppedOn` · `dropped` · `lineShown` · `choiceMade` · `dialogueFinished`
971
986
 
972
987
  ## `UiImage` — `incanto`
973
988
 
@@ -975,6 +990,9 @@ Signals: `lineShown` · `choiceMade` · `dialogueFinished`
975
990
  |---|---|---|
976
991
  | `anchor` | `"topLeft"` | one of: `topLeft` `top` `topRight` `left` `center` `right` `bottomLeft` `bottom` `bottomRight` |
977
992
  | `visible` | `true` | boolean |
993
+ | `focusable` | `false` | boolean |
994
+ | `draggable` | `false` | boolean |
995
+ | `dropTarget` | `false` | boolean |
978
996
  | `src` | `""` | string |
979
997
  | `width` | `48` | number |
980
998
  | `height` | `48` | number |
@@ -982,12 +1000,17 @@ Signals: `lineShown` · `choiceMade` · `dialogueFinished`
982
1000
  | `tint` | `""` | string |
983
1001
  | `opacity` | `1` | number |
984
1002
 
1003
+ Signals: `dragStarted` · `dragCancelled` · `droppedOn` · `dropped`
1004
+
985
1005
  ## `UiPanel` — `incanto`
986
1006
 
987
1007
  | Prop | Default | Kind |
988
1008
  |---|---|---|
989
1009
  | `anchor` | `"topLeft"` | one of: `topLeft` `top` `topRight` `left` `center` `right` `bottomLeft` `bottom` `bottomRight` |
990
1010
  | `visible` | `true` | boolean |
1011
+ | `focusable` | `false` | boolean |
1012
+ | `draggable` | `false` | boolean |
1013
+ | `dropTarget` | `false` | boolean |
991
1014
  | `layout` | `"column"` | one of: `column` `row` `grid` |
992
1015
  | `columns` | `4` | number |
993
1016
  | `gap` | `8` | number |
@@ -998,17 +1021,22 @@ Signals: `lineShown` · `choiceMade` · `dialogueFinished`
998
1021
  | `height` | `0` | number |
999
1022
  | `border` | `""` | string |
1000
1023
 
1024
+ Signals: `dragStarted` · `dragCancelled` · `droppedOn` · `dropped`
1025
+
1001
1026
  ## `UiSelect` — `incanto`
1002
1027
 
1003
1028
  | Prop | Default | Kind |
1004
1029
  |---|---|---|
1005
1030
  | `anchor` | `"topLeft"` | one of: `topLeft` `top` `topRight` `left` `center` `right` `bottomLeft` `bottom` `bottomRight` |
1006
1031
  | `visible` | `true` | boolean |
1032
+ | `focusable` | `true` | boolean |
1033
+ | `draggable` | `false` | boolean |
1034
+ | `dropTarget` | `false` | boolean |
1007
1035
  | `label` | `""` | string |
1008
1036
  | `options` | `""` | string |
1009
1037
  | `value` | `""` | string |
1010
1038
 
1011
- Signals: `changed`
1039
+ Signals: `dragStarted` · `dragCancelled` · `droppedOn` · `dropped` · `changed`
1012
1040
 
1013
1041
  ## `UiSlider` — `incanto`
1014
1042
 
@@ -1016,6 +1044,9 @@ Signals: `changed`
1016
1044
  |---|---|---|
1017
1045
  | `anchor` | `"topLeft"` | one of: `topLeft` `top` `topRight` `left` `center` `right` `bottomLeft` `bottom` `bottomRight` |
1018
1046
  | `visible` | `true` | boolean |
1047
+ | `focusable` | `true` | boolean |
1048
+ | `draggable` | `false` | boolean |
1049
+ | `dropTarget` | `false` | boolean |
1019
1050
  | `label` | `""` | string |
1020
1051
  | `value` | `0.5` | number |
1021
1052
  | `min` | `0` | number |
@@ -1024,7 +1055,7 @@ Signals: `changed`
1024
1055
  | `width` | `180` | number |
1025
1056
  | `color` | `"#6ee7dc"` | string |
1026
1057
 
1027
- Signals: `changed`
1058
+ Signals: `dragStarted` · `dragCancelled` · `droppedOn` · `dropped` · `changed`
1028
1059
 
1029
1060
  ## `UiText` — `incanto`
1030
1061
 
@@ -1032,21 +1063,29 @@ Signals: `changed`
1032
1063
  |---|---|---|
1033
1064
  | `anchor` | `"topLeft"` | one of: `topLeft` `top` `topRight` `left` `center` `right` `bottomLeft` `bottom` `bottomRight` |
1034
1065
  | `visible` | `true` | boolean |
1066
+ | `focusable` | `false` | boolean |
1067
+ | `draggable` | `false` | boolean |
1068
+ | `dropTarget` | `false` | boolean |
1035
1069
  | `text` | `""` | string |
1036
1070
  | `size` | `16` | number |
1037
1071
  | `color` | `"#ffffff"` | string |
1038
1072
  | `shadow` | `true` | boolean |
1039
1073
 
1074
+ Signals: `dragStarted` · `dragCancelled` · `droppedOn` · `dropped`
1075
+
1040
1076
  ## `UiToggle` — `incanto`
1041
1077
 
1042
1078
  | Prop | Default | Kind |
1043
1079
  |---|---|---|
1044
1080
  | `anchor` | `"topLeft"` | one of: `topLeft` `top` `topRight` `left` `center` `right` `bottomLeft` `bottom` `bottomRight` |
1045
1081
  | `visible` | `true` | boolean |
1082
+ | `focusable` | `true` | boolean |
1083
+ | `draggable` | `false` | boolean |
1084
+ | `dropTarget` | `false` | boolean |
1046
1085
  | `label` | `""` | string |
1047
1086
  | `value` | `false` | boolean |
1048
1087
 
1049
- Signals: `changed`
1088
+ Signals: `dragStarted` · `dragCancelled` · `droppedOn` · `dropped` · `changed`
1050
1089
 
1051
1090
  ## `VoxelGrid3D` — `incanto/3d`
1052
1091
 
@@ -14,7 +14,7 @@
14
14
  "@dimforge/rapier2d-compat": "0.19.3",
15
15
  "@dimforge/rapier3d-compat": "0.19.3",
16
16
  "@pixiv/three-vrm": "^3.5.3",
17
- "incanto": "^0.33.0",
17
+ "incanto": "^0.34.0",
18
18
  "three": "^0.184.0"
19
19
  },
20
20
  "devDependencies": {
@@ -13,7 +13,7 @@
13
13
  "@dimforge/rapier2d-compat": "0.19.3",
14
14
  "@dimforge/rapier3d-compat": "0.19.3",
15
15
  "@pixiv/three-vrm": "^3.5.3",
16
- "incanto": "^0.33.0",
16
+ "incanto": "^0.34.0",
17
17
  "three": "^0.184.0"
18
18
  },
19
19
  "devDependencies": {
@@ -13,7 +13,7 @@
13
13
  "@dimforge/rapier2d-compat": "0.19.3",
14
14
  "@dimforge/rapier3d-compat": "0.19.3",
15
15
  "@pixiv/three-vrm": "^3.5.3",
16
- "incanto": "^0.33.0",
16
+ "incanto": "^0.34.0",
17
17
  "three": "^0.184.0"
18
18
  },
19
19
  "devDependencies": {