@nice2dev/ui-graphics 1.3.15 → 1.3.16

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 (294) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/cjs/animation/AnimatedPerson.js +470 -143
  3. package/dist/cjs/animation/AnimationEditor.js +289 -101
  4. package/dist/cjs/animation/Audience.js +83 -61
  5. package/dist/cjs/animation/BodyRenderer.js +69 -28
  6. package/dist/cjs/animation/animationHelper.js +281 -288
  7. package/dist/cjs/animation/characterTypes.js +200 -203
  8. package/dist/cjs/animation/choreoDSL.js +205 -219
  9. package/dist/cjs/animation/choreography.js +4 -32
  10. package/dist/cjs/animation/karaokeIntegration.js +68 -77
  11. package/dist/cjs/animation/lottieExport.js +108 -114
  12. package/dist/cjs/animation/motionPath.js +225 -248
  13. package/dist/cjs/animation/physics.js +227 -254
  14. package/dist/cjs/animation/rig/RigPlayer.js +53 -56
  15. package/dist/cjs/animation/rig/RiggedBody.js +71 -26
  16. package/dist/cjs/animation/rig/choreoRigBridge.js +72 -77
  17. package/dist/cjs/animation/rig/ik.js +13 -18
  18. package/dist/cjs/animation/rig/poseOps.js +34 -41
  19. package/dist/cjs/animation/rig/presets.js +64 -72
  20. package/dist/cjs/animation/rig/rigMath.js +25 -32
  21. package/dist/cjs/animation/rig/rigTypes.js +59 -63
  22. package/dist/cjs/animation/shapes/arms.js +31 -13
  23. package/dist/cjs/animation/shapes/eyes.js +129 -47
  24. package/dist/cjs/animation/shapes/hair.js +72 -45
  25. package/dist/cjs/animation/shapes/heads.js +131 -57
  26. package/dist/cjs/animation/shapes/headwear.js +47 -38
  27. package/dist/cjs/animation/shapes/legs.js +31 -13
  28. package/dist/cjs/animation/shapes/mouths.js +120 -44
  29. package/dist/cjs/animation/shapes/noses.js +80 -25
  30. package/dist/cjs/animation/shapes/outfits.js +101 -39
  31. package/dist/cjs/animation/shapes/torsos.js +15 -11
  32. package/dist/cjs/animation/spineExport.js +103 -121
  33. package/dist/cjs/core/LocalUI.js +108 -43
  34. package/dist/cjs/core/NiceBrushEngine.js +758 -552
  35. package/dist/cjs/core/collaboration.js +249 -251
  36. package/dist/cjs/core/colorBlindness.js +100 -115
  37. package/dist/cjs/core/dragDrop.js +155 -158
  38. package/dist/cjs/core/editorAsk.js +51 -41
  39. package/dist/cjs/core/fixes.js +140 -171
  40. package/dist/cjs/core/gridGuides.js +166 -201
  41. package/dist/cjs/core/historyVisual.js +156 -135
  42. package/dist/cjs/core/i18n.js +13 -14
  43. package/dist/cjs/core/integrations.js +238 -249
  44. package/dist/cjs/core/minimap.js +149 -151
  45. package/dist/cjs/core/plugins.js +98 -113
  46. package/dist/cjs/core/rtl.js +71 -83
  47. package/dist/cjs/core/shortcuts.js +196 -225
  48. package/dist/cjs/core/theme.js +142 -149
  49. package/dist/cjs/core/yjsCollaboration.js +232 -293
  50. package/dist/cjs/design/design-tools.js +12 -22
  51. package/dist/cjs/font/NiceFontEditor.js +877 -316
  52. package/dist/cjs/font/fontFormatUtils.js +388 -448
  53. package/dist/cjs/game/GameAsset2dEditor.js +1201 -392
  54. package/dist/cjs/game/GameAsset2dEditor.module.css.js +146 -5
  55. package/dist/cjs/game/gameAssetTypes.js +7 -16
  56. package/dist/cjs/game/gameAssetUtils.js +390 -413
  57. package/dist/cjs/game/useGameAssetEditor.js +820 -763
  58. package/dist/cjs/index.js +81 -84
  59. package/dist/cjs/nice2dev-ui-graphics.css +1 -1
  60. package/dist/cjs/node_modules/lib0/array.js +8 -70
  61. package/dist/cjs/node_modules/lib0/binary.js +3 -20
  62. package/dist/cjs/node_modules/lib0/broadcastchannel.js +24 -86
  63. package/dist/cjs/node_modules/lib0/buffer.js +15 -82
  64. package/dist/cjs/node_modules/lib0/conditions.js +3 -16
  65. package/dist/cjs/node_modules/lib0/decoding.js +108 -287
  66. package/dist/cjs/node_modules/lib0/dom.js +14 -44
  67. package/dist/cjs/node_modules/lib0/encoding.js +68 -418
  68. package/dist/cjs/node_modules/lib0/environment.js +26 -92
  69. package/dist/cjs/node_modules/lib0/error.js +5 -29
  70. package/dist/cjs/node_modules/lib0/function.js +27 -66
  71. package/dist/cjs/node_modules/lib0/iterator.js +8 -33
  72. package/dist/cjs/node_modules/lib0/logging.common.js +12 -22
  73. package/dist/cjs/node_modules/lib0/logging.js +32 -71
  74. package/dist/cjs/node_modules/lib0/map.js +16 -86
  75. package/dist/cjs/node_modules/lib0/math.js +3 -32
  76. package/dist/cjs/node_modules/lib0/number.js +4 -15
  77. package/dist/cjs/node_modules/lib0/object.js +14 -88
  78. package/dist/cjs/node_modules/lib0/observable.js +38 -78
  79. package/dist/cjs/node_modules/lib0/pair.js +3 -20
  80. package/dist/cjs/node_modules/lib0/prng.js +8 -77
  81. package/dist/cjs/node_modules/lib0/promise.js +6 -30
  82. package/dist/cjs/node_modules/lib0/random.js +8 -23
  83. package/dist/cjs/node_modules/lib0/schema.js +313 -687
  84. package/dist/cjs/node_modules/lib0/set.js +3 -10
  85. package/dist/cjs/node_modules/lib0/storage.js +20 -55
  86. package/dist/cjs/node_modules/lib0/string.js +17 -72
  87. package/dist/cjs/node_modules/lib0/symbol.js +2 -12
  88. package/dist/cjs/node_modules/lib0/time.js +2 -15
  89. package/dist/cjs/node_modules/lib0/trait/equality.js +3 -28
  90. package/dist/cjs/node_modules/lib0/url.js +4 -18
  91. package/dist/cjs/node_modules/lib0/webcrypto.js +2 -5
  92. package/dist/cjs/node_modules/y-protocols/auth.js +5 -19
  93. package/dist/cjs/node_modules/y-protocols/awareness.js +53 -116
  94. package/dist/cjs/node_modules/y-protocols/sync.js +16 -103
  95. package/dist/cjs/node_modules/y-websocket/src/y-websocket.js +77 -219
  96. package/dist/cjs/node_modules/yjs/dist/yjs.js +2128 -4868
  97. package/dist/cjs/photo/FilterThumb.js +37 -25
  98. package/dist/cjs/photo/NiceAITools.js +679 -467
  99. package/dist/cjs/photo/PhotoEditor.js +34 -20
  100. package/dist/cjs/photo/PhotoEditor.module.css.js +296 -5
  101. package/dist/cjs/photo/PhotoEditorCanvas.js +250 -91
  102. package/dist/cjs/photo/PhotoEditorLeftPanel.js +1086 -224
  103. package/dist/cjs/photo/PhotoEditorToolbar.js +135 -19
  104. package/dist/cjs/photo/photoEditorActions.js +89 -72
  105. package/dist/cjs/photo/photoEditorTypes.js +29 -32
  106. package/dist/cjs/photo/photoFilters.js +959 -985
  107. package/dist/cjs/photo/photoOverlays.js +899 -945
  108. package/dist/cjs/photo/photoSelection.js +427 -499
  109. package/dist/cjs/photo/usePhotoEditor.js +739 -741
  110. package/dist/cjs/pixel/HSVPicker.js +191 -175
  111. package/dist/cjs/pixel/PixelEditor.js +159 -48
  112. package/dist/cjs/pixel/PixelEditor.module.css.js +209 -5
  113. package/dist/cjs/pixel/PixelEditorCanvas.js +29 -16
  114. package/dist/cjs/pixel/PixelEditorMenuBar.js +160 -162
  115. package/dist/cjs/pixel/PixelEditorRightPanel.js +377 -45
  116. package/dist/cjs/pixel/PixelEditorStatusBar.js +47 -20
  117. package/dist/cjs/pixel/PixelEditorTimeline.js +106 -23
  118. package/dist/cjs/pixel/PixelEditorToolbar.js +99 -21
  119. package/dist/cjs/pixel/SpriteGeneratorPanel.js +483 -303
  120. package/dist/cjs/pixel/animalGeneratorPresets.js +776 -601
  121. package/dist/cjs/pixel/asepriteFormat.js +511 -560
  122. package/dist/cjs/pixel/buildingGeneratorPresets.js +693 -520
  123. package/dist/cjs/pixel/characterGeneratorPresets.js +644 -544
  124. package/dist/cjs/pixel/pixel-pro.js +52 -63
  125. package/dist/cjs/pixel/pixelEditorExports.js +388 -428
  126. package/dist/cjs/pixel/pixelEditorTypes.js +91 -108
  127. package/dist/cjs/pixel/pixelEditorUtils.js +519 -561
  128. package/dist/cjs/pixel/spriteGeneratorCore.js +206 -257
  129. package/dist/cjs/pixel/usePixelEditor.js +1321 -1343
  130. package/dist/cjs/texture/Nice3DTexturePainter.js +707 -440
  131. package/dist/cjs/ui/NiceUIDesigner.js +954 -527
  132. package/dist/cjs/vector/NiceSvgToCode.js +586 -446
  133. package/dist/cjs/vector/VectorEditor.js +290 -117
  134. package/dist/cjs/vector/VectorEditor.module.css.js +86 -5
  135. package/dist/cjs/vector/VectorEditorMenuBar.js +333 -275
  136. package/dist/cjs/vector/VectorEditorRightPanel.js +1094 -371
  137. package/dist/cjs/vector/VectorEditorShapeRenderer.js +198 -60
  138. package/dist/cjs/vector/VectorEditorStatusBar.js +39 -13
  139. package/dist/cjs/vector/useVectorEditor.js +848 -889
  140. package/dist/cjs/vector/vectorAnimation.js +110 -137
  141. package/dist/cjs/vector/vectorBooleanOps.js +398 -485
  142. package/dist/cjs/vector/vectorEditorExport.js +201 -203
  143. package/dist/cjs/vector/vectorEditorImport.js +173 -189
  144. package/dist/cjs/vector/vectorEditorTypes.js +42 -49
  145. package/dist/cjs/vector/vectorGradients.js +151 -174
  146. package/dist/cjs/vector/vectorIconExport.js +52 -59
  147. package/dist/cjs/vector/vectorIconImport.js +169 -219
  148. package/dist/esm/animation/AnimatedPerson.js +470 -141
  149. package/dist/esm/animation/AnimationEditor.js +290 -100
  150. package/dist/esm/animation/Audience.js +83 -59
  151. package/dist/esm/animation/BodyRenderer.js +71 -25
  152. package/dist/esm/animation/animationHelper.js +284 -287
  153. package/dist/esm/animation/characterTypes.js +204 -202
  154. package/dist/esm/animation/choreoDSL.js +212 -218
  155. package/dist/esm/animation/choreography.js +8 -31
  156. package/dist/esm/animation/karaokeIntegration.js +74 -76
  157. package/dist/esm/animation/lottieExport.js +112 -113
  158. package/dist/esm/animation/motionPath.js +235 -247
  159. package/dist/esm/animation/physics.js +235 -253
  160. package/dist/esm/animation/rig/RigPlayer.js +53 -54
  161. package/dist/esm/animation/rig/RiggedBody.js +71 -24
  162. package/dist/esm/animation/rig/choreoRigBridge.js +74 -76
  163. package/dist/esm/animation/rig/ik.js +14 -17
  164. package/dist/esm/animation/rig/poseOps.js +37 -40
  165. package/dist/esm/animation/rig/presets.js +70 -71
  166. package/dist/esm/animation/rig/rigMath.js +28 -31
  167. package/dist/esm/animation/rig/rigTypes.js +62 -62
  168. package/dist/esm/animation/shapes/arms.js +32 -12
  169. package/dist/esm/animation/shapes/eyes.js +135 -46
  170. package/dist/esm/animation/shapes/hair.js +80 -44
  171. package/dist/esm/animation/shapes/heads.js +140 -56
  172. package/dist/esm/animation/shapes/headwear.js +54 -37
  173. package/dist/esm/animation/shapes/legs.js +32 -12
  174. package/dist/esm/animation/shapes/mouths.js +127 -43
  175. package/dist/esm/animation/shapes/noses.js +87 -24
  176. package/dist/esm/animation/shapes/outfits.js +106 -38
  177. package/dist/esm/animation/shapes/torsos.js +16 -10
  178. package/dist/esm/animation/spineExport.js +106 -120
  179. package/dist/esm/core/LocalUI.js +111 -42
  180. package/dist/esm/core/NiceBrushEngine.js +761 -551
  181. package/dist/esm/core/collaboration.js +255 -250
  182. package/dist/esm/core/colorBlindness.js +106 -114
  183. package/dist/esm/core/dragDrop.js +157 -157
  184. package/dist/esm/core/editorAsk.js +53 -40
  185. package/dist/esm/core/fixes.js +145 -170
  186. package/dist/esm/core/gridGuides.js +178 -200
  187. package/dist/esm/core/historyVisual.js +158 -134
  188. package/dist/esm/core/i18n.js +15 -13
  189. package/dist/esm/core/integrations.js +244 -248
  190. package/dist/esm/core/minimap.js +151 -150
  191. package/dist/esm/core/plugins.js +102 -112
  192. package/dist/esm/core/rtl.js +77 -82
  193. package/dist/esm/core/shortcuts.js +200 -224
  194. package/dist/esm/core/theme.js +150 -148
  195. package/dist/esm/core/yjsCollaboration.js +240 -292
  196. package/dist/esm/design/design-tools.js +13 -21
  197. package/dist/esm/font/NiceFontEditor.js +880 -315
  198. package/dist/esm/font/fontFormatUtils.js +394 -447
  199. package/dist/esm/game/GameAsset2dEditor.js +1202 -391
  200. package/dist/esm/game/GameAsset2dEditor.module.css.js +146 -3
  201. package/dist/esm/game/gameAssetTypes.js +8 -15
  202. package/dist/esm/game/gameAssetUtils.js +408 -412
  203. package/dist/esm/game/useGameAssetEditor.js +821 -762
  204. package/dist/esm/index.js +332 -69
  205. package/dist/esm/nice2dev-ui-graphics.css +1 -1
  206. package/dist/esm/node_modules/lib0/array.js +15 -69
  207. package/dist/esm/node_modules/lib0/binary.js +14 -19
  208. package/dist/esm/node_modules/lib0/broadcastchannel.js +27 -85
  209. package/dist/esm/node_modules/lib0/buffer.js +20 -80
  210. package/dist/esm/node_modules/lib0/conditions.js +4 -15
  211. package/dist/esm/node_modules/lib0/decoding.js +128 -286
  212. package/dist/esm/node_modules/lib0/dom.js +20 -43
  213. package/dist/esm/node_modules/lib0/encoding.js +90 -415
  214. package/dist/esm/node_modules/lib0/environment.js +33 -91
  215. package/dist/esm/node_modules/lib0/error.js +8 -28
  216. package/dist/esm/node_modules/lib0/function.js +31 -65
  217. package/dist/esm/node_modules/lib0/iterator.js +11 -32
  218. package/dist/esm/node_modules/lib0/logging.common.js +22 -21
  219. package/dist/esm/node_modules/lib0/logging.js +44 -70
  220. package/dist/esm/node_modules/lib0/map.js +21 -85
  221. package/dist/esm/node_modules/lib0/math.js +9 -31
  222. package/dist/esm/node_modules/lib0/number.js +7 -14
  223. package/dist/esm/node_modules/lib0/object.js +26 -87
  224. package/dist/esm/node_modules/lib0/observable.js +40 -77
  225. package/dist/esm/node_modules/lib0/pair.js +5 -19
  226. package/dist/esm/node_modules/lib0/prng.js +15 -76
  227. package/dist/esm/node_modules/lib0/promise.js +7 -29
  228. package/dist/esm/node_modules/lib0/random.js +10 -22
  229. package/dist/esm/node_modules/lib0/schema.js +367 -686
  230. package/dist/esm/node_modules/lib0/set.js +4 -9
  231. package/dist/esm/node_modules/lib0/storage.js +23 -54
  232. package/dist/esm/node_modules/lib0/string.js +26 -71
  233. package/dist/esm/node_modules/lib0/symbol.js +3 -11
  234. package/dist/esm/node_modules/lib0/time.js +3 -14
  235. package/dist/esm/node_modules/lib0/trait/equality.js +5 -27
  236. package/dist/esm/node_modules/lib0/url.js +5 -17
  237. package/dist/esm/node_modules/lib0/webcrypto.js +3 -4
  238. package/dist/esm/node_modules/y-protocols/auth.js +7 -18
  239. package/dist/esm/node_modules/y-protocols/awareness.js +58 -115
  240. package/dist/esm/node_modules/y-protocols/sync.js +26 -102
  241. package/dist/esm/node_modules/y-websocket/src/y-websocket.js +82 -218
  242. package/dist/esm/node_modules/yjs/dist/yjs.js +2263 -4899
  243. package/dist/esm/photo/FilterThumb.js +37 -23
  244. package/dist/esm/photo/NiceAITools.js +685 -466
  245. package/dist/esm/photo/PhotoEditor.js +34 -18
  246. package/dist/esm/photo/PhotoEditor.module.css.js +296 -3
  247. package/dist/esm/photo/PhotoEditorCanvas.js +250 -89
  248. package/dist/esm/photo/PhotoEditorLeftPanel.js +1086 -222
  249. package/dist/esm/photo/PhotoEditorToolbar.js +135 -17
  250. package/dist/esm/photo/photoEditorActions.js +93 -71
  251. package/dist/esm/photo/photoEditorTypes.js +32 -31
  252. package/dist/esm/photo/photoFilters.js +967 -984
  253. package/dist/esm/photo/photoOverlays.js +913 -944
  254. package/dist/esm/photo/photoSelection.js +438 -498
  255. package/dist/esm/photo/usePhotoEditor.js +740 -740
  256. package/dist/esm/pixel/HSVPicker.js +192 -174
  257. package/dist/esm/pixel/PixelEditor.js +160 -47
  258. package/dist/esm/pixel/PixelEditor.module.css.js +209 -3
  259. package/dist/esm/pixel/PixelEditorCanvas.js +29 -14
  260. package/dist/esm/pixel/PixelEditorMenuBar.js +160 -160
  261. package/dist/esm/pixel/PixelEditorRightPanel.js +377 -43
  262. package/dist/esm/pixel/PixelEditorStatusBar.js +47 -18
  263. package/dist/esm/pixel/PixelEditorTimeline.js +106 -21
  264. package/dist/esm/pixel/PixelEditorToolbar.js +99 -19
  265. package/dist/esm/pixel/SpriteGeneratorPanel.js +483 -301
  266. package/dist/esm/pixel/animalGeneratorPresets.js +782 -600
  267. package/dist/esm/pixel/asepriteFormat.js +517 -559
  268. package/dist/esm/pixel/buildingGeneratorPresets.js +699 -519
  269. package/dist/esm/pixel/characterGeneratorPresets.js +650 -543
  270. package/dist/esm/pixel/pixel-pro.js +53 -62
  271. package/dist/esm/pixel/pixelEditorExports.js +397 -427
  272. package/dist/esm/pixel/pixelEditorTypes.js +103 -107
  273. package/dist/esm/pixel/pixelEditorUtils.js +551 -560
  274. package/dist/esm/pixel/spriteGeneratorCore.js +223 -256
  275. package/dist/esm/pixel/usePixelEditor.js +1322 -1342
  276. package/dist/esm/texture/Nice3DTexturePainter.js +709 -439
  277. package/dist/esm/ui/NiceUIDesigner.js +957 -526
  278. package/dist/esm/vector/NiceSvgToCode.js +589 -445
  279. package/dist/esm/vector/VectorEditor.js +291 -116
  280. package/dist/esm/vector/VectorEditor.module.css.js +86 -3
  281. package/dist/esm/vector/VectorEditorMenuBar.js +333 -273
  282. package/dist/esm/vector/VectorEditorRightPanel.js +1094 -369
  283. package/dist/esm/vector/VectorEditorShapeRenderer.js +199 -59
  284. package/dist/esm/vector/VectorEditorStatusBar.js +39 -11
  285. package/dist/esm/vector/useVectorEditor.js +849 -888
  286. package/dist/esm/vector/vectorAnimation.js +115 -136
  287. package/dist/esm/vector/vectorBooleanOps.js +401 -484
  288. package/dist/esm/vector/vectorEditorExport.js +207 -202
  289. package/dist/esm/vector/vectorEditorImport.js +174 -188
  290. package/dist/esm/vector/vectorEditorTypes.js +50 -48
  291. package/dist/esm/vector/vectorGradients.js +158 -173
  292. package/dist/esm/vector/vectorIconExport.js +53 -58
  293. package/dist/esm/vector/vectorIconImport.js +171 -218
  294. package/package.json +9 -15
@@ -1,295 +1,268 @@
1
- 'use strict';
2
-
3
- var rigMath = require('./rig/rigMath.js');
4
- var rigTypes = require('./rig/rigTypes.js');
5
-
6
- /**
7
- * physics.ts — 2D physics simulation for animation (ragdoll, cloth).
8
- *
9
- * Verlet integration with constraints for realistic body/cloth simulation.
10
- */
11
- // ── Constants ───────────────────────────────────────────────────
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const rigMath = require("./rig/rigMath.js");
4
+ const rigTypes = require("./rig/rigTypes.js");
12
5
  const DEFAULT_PHYSICS = {
13
- gravity: { x: 0, y: 980 },
14
- damping: 0.99,
15
- iterations: 4,
16
- timestep: 1 / 60,
6
+ gravity: { x: 0, y: 980 },
7
+ damping: 0.99,
8
+ iterations: 4,
9
+ timestep: 1 / 60
17
10
  };
18
- // ── Verlet Engine ───────────────────────────────────────────────
19
11
  function createParticle(x, y, mass = 1, pinned = false) {
20
- const p = { pos: { x, y }, prev: { x, y }, acc: { x: 0, y: 0 }, mass, pinned };
21
- Object.defineProperty(p, 'x', {
22
- get() {
23
- return this.pos.x;
24
- },
25
- set(v) {
26
- this.pos.x = v;
27
- },
28
- enumerable: false,
29
- configurable: true,
30
- });
31
- Object.defineProperty(p, 'y', {
32
- get() {
33
- return this.pos.y;
34
- },
35
- set(v) {
36
- this.pos.y = v;
37
- },
38
- enumerable: false,
39
- configurable: true,
40
- });
41
- return p;
12
+ const p = { pos: { x, y }, prev: { x, y }, acc: { x: 0, y: 0 }, mass, pinned };
13
+ Object.defineProperty(p, "x", {
14
+ get() {
15
+ return this.pos.x;
16
+ },
17
+ set(v) {
18
+ this.pos.x = v;
19
+ },
20
+ enumerable: false,
21
+ configurable: true
22
+ });
23
+ Object.defineProperty(p, "y", {
24
+ get() {
25
+ return this.pos.y;
26
+ },
27
+ set(v) {
28
+ this.pos.y = v;
29
+ },
30
+ enumerable: false,
31
+ configurable: true
32
+ });
33
+ return p;
42
34
  }
43
35
  function stepParticles(particles, config) {
44
- const dt2 = config.timestep * config.timestep;
45
- for (const p of particles) {
46
- if (p.pinned) {
47
- continue;
48
- }
49
- const vx = (p.pos.x - p.prev.x) * config.damping;
50
- const vy = (p.pos.y - p.prev.y) * config.damping;
51
- p.prev.x = p.pos.x;
52
- p.prev.y = p.pos.y;
53
- p.pos.x += vx + (config.gravity.x + p.acc.x) * dt2;
54
- p.pos.y += vy + (config.gravity.y + p.acc.y) * dt2;
55
- p.acc.x = 0;
56
- p.acc.y = 0;
36
+ const dt2 = config.timestep * config.timestep;
37
+ for (const p of particles) {
38
+ if (p.pinned) {
39
+ continue;
57
40
  }
41
+ const vx = (p.pos.x - p.prev.x) * config.damping;
42
+ const vy = (p.pos.y - p.prev.y) * config.damping;
43
+ p.prev.x = p.pos.x;
44
+ p.prev.y = p.pos.y;
45
+ p.pos.x += vx + (config.gravity.x + p.acc.x) * dt2;
46
+ p.pos.y += vy + (config.gravity.y + p.acc.y) * dt2;
47
+ p.acc.x = 0;
48
+ p.acc.y = 0;
49
+ }
58
50
  }
59
51
  function solveConstraints(particles, constraints, iterations) {
60
- for (let i = 0; i < iterations; i++) {
61
- for (const c of constraints) {
62
- const a = particles[c.a];
63
- const b = particles[c.b];
64
- const dx = b.pos.x - a.pos.x;
65
- const dy = b.pos.y - a.pos.y;
66
- const dist = Math.hypot(dx, dy) || 0.001;
67
- const diff = ((c.restLength - dist) / dist) * c.stiffness;
68
- const ox = dx * diff * 0.5;
69
- const oy = dy * diff * 0.5;
70
- if (!a.pinned) {
71
- a.pos.x -= ox;
72
- a.pos.y -= oy;
73
- }
74
- if (!b.pinned) {
75
- b.pos.x += ox;
76
- b.pos.y += oy;
77
- }
78
- }
52
+ for (let i = 0; i < iterations; i++) {
53
+ for (const c of constraints) {
54
+ const a = particles[c.a];
55
+ const b = particles[c.b];
56
+ const dx = b.pos.x - a.pos.x;
57
+ const dy = b.pos.y - a.pos.y;
58
+ const dist = Math.hypot(dx, dy) || 1e-3;
59
+ const diff = (c.restLength - dist) / dist * c.stiffness;
60
+ const ox = dx * diff * 0.5;
61
+ const oy = dy * diff * 0.5;
62
+ if (!a.pinned) {
63
+ a.pos.x -= ox;
64
+ a.pos.y -= oy;
65
+ }
66
+ if (!b.pinned) {
67
+ b.pos.x += ox;
68
+ b.pos.y += oy;
69
+ }
79
70
  }
71
+ }
80
72
  }
81
- // ── Ragdoll ─────────────────────────────────────────────────────
82
73
  const RAGDOLL_BONES = [
83
- { name: 'pelvis', length: 0 },
84
- { name: 'spineLower', parent: 'pelvis', length: 0.1 },
85
- { name: 'spineUpper', parent: 'spineLower', length: 0.1 },
86
- { name: 'neck', parent: 'spineUpper', length: 0.05 },
87
- { name: 'head', parent: 'neck', length: 0.08 },
88
- { name: 'lShoulder', parent: 'spineUpper', length: 0.06 },
89
- { name: 'lUpperArm', parent: 'lShoulder', length: 0.12 },
90
- { name: 'lForearm', parent: 'lUpperArm', length: 0.1 },
91
- { name: 'lHand', parent: 'lForearm', length: 0.05 },
92
- { name: 'rShoulder', parent: 'spineUpper', length: 0.06 },
93
- { name: 'rUpperArm', parent: 'rShoulder', length: 0.12 },
94
- { name: 'rForearm', parent: 'rUpperArm', length: 0.1 },
95
- { name: 'rHand', parent: 'rForearm', length: 0.05 },
96
- { name: 'lThigh', parent: 'pelvis', length: 0.15 },
97
- { name: 'lShin', parent: 'lThigh', length: 0.14 },
98
- { name: 'lFoot', parent: 'lShin', length: 0.05 },
99
- { name: 'rThigh', parent: 'pelvis', length: 0.15 },
100
- { name: 'rShin', parent: 'rThigh', length: 0.14 },
101
- { name: 'rFoot', parent: 'rShin', length: 0.05 },
74
+ { name: "pelvis", length: 0 },
75
+ { name: "spineLower", parent: "pelvis", length: 0.1 },
76
+ { name: "spineUpper", parent: "spineLower", length: 0.1 },
77
+ { name: "neck", parent: "spineUpper", length: 0.05 },
78
+ { name: "head", parent: "neck", length: 0.08 },
79
+ { name: "lShoulder", parent: "spineUpper", length: 0.06 },
80
+ { name: "lUpperArm", parent: "lShoulder", length: 0.12 },
81
+ { name: "lForearm", parent: "lUpperArm", length: 0.1 },
82
+ { name: "lHand", parent: "lForearm", length: 0.05 },
83
+ { name: "rShoulder", parent: "spineUpper", length: 0.06 },
84
+ { name: "rUpperArm", parent: "rShoulder", length: 0.12 },
85
+ { name: "rForearm", parent: "rUpperArm", length: 0.1 },
86
+ { name: "rHand", parent: "rForearm", length: 0.05 },
87
+ { name: "lThigh", parent: "pelvis", length: 0.15 },
88
+ { name: "lShin", parent: "lThigh", length: 0.14 },
89
+ { name: "lFoot", parent: "lShin", length: 0.05 },
90
+ { name: "rThigh", parent: "pelvis", length: 0.15 },
91
+ { name: "rShin", parent: "rThigh", length: 0.14 },
92
+ { name: "rFoot", parent: "rShin", length: 0.05 }
102
93
  ];
103
- /** Create a ragdoll simulation from a rig pose. */
104
94
  function createRagdoll(cfg = {}) {
105
- var _a, _b, _c;
106
- const size = (_a = cfg.size) !== null && _a !== void 0 ? _a : 200;
107
- const offsetX = (_b = cfg.x) !== null && _b !== void 0 ? _b : 0;
108
- const offsetY = (_c = cfg.y) !== null && _c !== void 0 ? _c : 0;
109
- const particles = [];
110
- const constraints = [];
111
- const boneMap = {};
112
- // Create particles for each bone joint
113
- const fk = rigMath.solveFK(rigTypes.DEFAULT_RIG, rigTypes.DEFAULT_POSE, size);
114
- for (const bone of RAGDOLL_BONES) {
115
- const solved = fk[bone.name];
116
- const x = (solved ? solved.x : size / 2) + offsetX;
117
- const y = (solved ? solved.y : size / 2) + offsetY;
118
- boneMap[bone.name] = particles.length;
119
- particles.push(createParticle(x, y));
95
+ const size = cfg.size ?? 200;
96
+ const offsetX = cfg.x ?? 0;
97
+ const offsetY = cfg.y ?? 0;
98
+ const particles = [];
99
+ const constraints = [];
100
+ const boneMap = {};
101
+ const fk = rigMath.solveFK(rigTypes.DEFAULT_RIG, rigTypes.DEFAULT_POSE, size);
102
+ for (const bone of RAGDOLL_BONES) {
103
+ const solved = fk[bone.name];
104
+ const x = (solved ? solved.x : size / 2) + offsetX;
105
+ const y = (solved ? solved.y : size / 2) + offsetY;
106
+ boneMap[bone.name] = particles.length;
107
+ particles.push(createParticle(x, y));
108
+ }
109
+ for (const bone of RAGDOLL_BONES) {
110
+ if (!bone.parent) {
111
+ continue;
120
112
  }
121
- // Create distance constraints along bone chain
122
- for (const bone of RAGDOLL_BONES) {
123
- if (!bone.parent) {
124
- continue;
125
- }
126
- const ai = boneMap[bone.parent];
127
- const bi = boneMap[bone.name];
128
- const restLen = bone.length * size;
129
- constraints.push({ a: ai, b: bi, restLength: restLen, stiffness: 0.8 });
130
- }
131
- return { particles, constraints, boneMap };
113
+ const ai = boneMap[bone.parent];
114
+ const bi = boneMap[bone.name];
115
+ const restLen = bone.length * size;
116
+ constraints.push({ a: ai, b: bi, restLength: restLen, stiffness: 0.8 });
117
+ }
118
+ return { particles, constraints, boneMap };
132
119
  }
133
- /** Step the ragdoll simulation forward by one frame. Returns the same sim for chaining. */
134
120
  function stepRagdoll(sim, configOrDt = {}, gravity) {
135
- const cfg = { ...DEFAULT_PHYSICS };
136
- if (typeof configOrDt === 'number') {
137
- cfg.timestep = configOrDt;
138
- if (typeof gravity === 'number') {
139
- cfg.gravity = { x: 0, y: gravity };
140
- }
141
- else if (gravity) {
142
- cfg.gravity = gravity;
143
- }
144
- }
145
- else {
146
- Object.assign(cfg, configOrDt);
121
+ const cfg = { ...DEFAULT_PHYSICS };
122
+ if (typeof configOrDt === "number") {
123
+ cfg.timestep = configOrDt;
124
+ if (typeof gravity === "number") {
125
+ cfg.gravity = { x: 0, y: gravity };
126
+ } else if (gravity) {
127
+ cfg.gravity = gravity;
147
128
  }
148
- stepParticles(sim.particles, cfg);
149
- solveConstraints(sim.particles, sim.constraints, cfg.iterations);
150
- return sim;
129
+ } else {
130
+ Object.assign(cfg, configOrDt);
131
+ }
132
+ stepParticles(sim.particles, cfg);
133
+ solveConstraints(sim.particles, sim.constraints, cfg.iterations);
134
+ return sim;
151
135
  }
152
- /** Extract a RigPose from the current ragdoll particle positions. */
153
136
  function ragdollToPose(sim) {
154
- const pose = {};
155
- for (const bone of RAGDOLL_BONES) {
156
- if (!bone.parent) {
157
- continue;
158
- }
159
- const ai = sim.boneMap[bone.parent];
160
- const bi = sim.boneMap[bone.name];
161
- const a = sim.particles[ai];
162
- const b = sim.particles[bi];
163
- const angle = (Math.atan2(b.pos.y - a.pos.y, b.pos.x - a.pos.x) * 180) / Math.PI;
164
- pose[bone.name] = angle;
137
+ const pose = {};
138
+ for (const bone of RAGDOLL_BONES) {
139
+ if (!bone.parent) {
140
+ continue;
165
141
  }
166
- return pose;
142
+ const ai = sim.boneMap[bone.parent];
143
+ const bi = sim.boneMap[bone.name];
144
+ const a = sim.particles[ai];
145
+ const b = sim.particles[bi];
146
+ const angle = Math.atan2(b.pos.y - a.pos.y, b.pos.x - a.pos.x) * 180 / Math.PI;
147
+ pose[bone.name] = angle;
148
+ }
149
+ return pose;
167
150
  }
168
- /** Apply a force impulse to a ragdoll particle. Returns the same sim for chaining. */
169
151
  function applyImpulse(sim, boneName, force) {
170
- const idx = sim.boneMap[boneName];
171
- if (idx === undefined) {
172
- return sim;
173
- }
174
- const p = sim.particles[idx];
175
- p.acc.x += force.x / p.mass;
176
- p.acc.y += force.y / p.mass;
152
+ const idx = sim.boneMap[boneName];
153
+ if (idx === void 0) {
177
154
  return sim;
155
+ }
156
+ const p = sim.particles[idx];
157
+ p.acc.x += force.x / p.mass;
158
+ p.acc.y += force.y / p.mass;
159
+ return sim;
178
160
  }
179
161
  function createCloth(cfgOrCols, rowsArg, spacingArg, origin) {
180
- let cfg;
181
- let originX = 0;
182
- let originY = 0;
183
- if (typeof cfgOrCols === 'number') {
184
- const cols = cfgOrCols;
185
- const rows = rowsArg !== null && rowsArg !== void 0 ? rowsArg : cols;
186
- const spacing = spacingArg !== null && spacingArg !== void 0 ? spacingArg : 20;
187
- cfg = { cols, rows, width: cols * spacing, height: rows * spacing };
188
- if (origin) {
189
- originX = origin.x;
190
- originY = origin.y;
191
- }
192
- }
193
- else {
194
- cfg = cfgOrCols;
162
+ let cfg;
163
+ let originX = 0;
164
+ let originY = 0;
165
+ if (typeof cfgOrCols === "number") {
166
+ const cols2 = cfgOrCols;
167
+ const rows2 = rowsArg ?? cols2;
168
+ const spacing = spacingArg ?? 20;
169
+ cfg = { cols: cols2, rows: rows2, width: cols2 * spacing, height: rows2 * spacing };
170
+ if (origin) {
171
+ originX = origin.x;
172
+ originY = origin.y;
195
173
  }
196
- const { width, height, cols, rows, pinTop = true, stiffness = 0.9 } = cfg;
197
- const particles = [];
198
- const constraints = [];
199
- const spacingX = width / cols;
200
- const spacingY = height / rows;
201
- // Create particle grid
202
- for (let r = 0; r <= rows; r++) {
203
- for (let c = 0; c <= cols; c++) {
204
- const x = c * spacingX + originX;
205
- const y = r * spacingY + originY;
206
- const pinned = pinTop && r === 0;
207
- particles.push(createParticle(x, y, 1, pinned));
208
- }
174
+ } else {
175
+ cfg = cfgOrCols;
176
+ }
177
+ const { width, height, cols, rows, pinTop = true, stiffness = 0.9 } = cfg;
178
+ const particles = [];
179
+ const constraints = [];
180
+ const spacingX = width / cols;
181
+ const spacingY = height / rows;
182
+ for (let r = 0; r <= rows; r++) {
183
+ for (let c = 0; c <= cols; c++) {
184
+ const x = c * spacingX + originX;
185
+ const y = r * spacingY + originY;
186
+ const pinned = pinTop && r === 0;
187
+ particles.push(createParticle(x, y, 1, pinned));
209
188
  }
210
- const idx = (r, c) => r * (cols + 1) + c;
211
- // Structural constraints (horizontal + vertical)
212
- for (let r = 0; r <= rows; r++) {
213
- for (let c = 0; c <= cols; c++) {
214
- if (c < cols) {
215
- constraints.push({ a: idx(r, c), b: idx(r, c + 1), restLength: spacingX, stiffness });
216
- }
217
- if (r < rows) {
218
- constraints.push({ a: idx(r, c), b: idx(r + 1, c), restLength: spacingY, stiffness });
219
- }
220
- }
189
+ }
190
+ const idx = (r, c) => r * (cols + 1) + c;
191
+ for (let r = 0; r <= rows; r++) {
192
+ for (let c = 0; c <= cols; c++) {
193
+ if (c < cols) {
194
+ constraints.push({ a: idx(r, c), b: idx(r, c + 1), restLength: spacingX, stiffness });
195
+ }
196
+ if (r < rows) {
197
+ constraints.push({ a: idx(r, c), b: idx(r + 1, c), restLength: spacingY, stiffness });
198
+ }
221
199
  }
222
- // Shear constraints (diagonals for stability)
223
- const diagLen = Math.hypot(spacingX, spacingY);
224
- for (let r = 0; r < rows; r++) {
225
- for (let c = 0; c < cols; c++) {
226
- constraints.push({
227
- a: idx(r, c),
228
- b: idx(r + 1, c + 1),
229
- restLength: diagLen,
230
- stiffness: stiffness * 0.5,
231
- });
232
- constraints.push({
233
- a: idx(r, c + 1),
234
- b: idx(r + 1, c),
235
- restLength: diagLen,
236
- stiffness: stiffness * 0.5,
237
- });
238
- }
200
+ }
201
+ const diagLen = Math.hypot(spacingX, spacingY);
202
+ for (let r = 0; r < rows; r++) {
203
+ for (let c = 0; c < cols; c++) {
204
+ constraints.push({
205
+ a: idx(r, c),
206
+ b: idx(r + 1, c + 1),
207
+ restLength: diagLen,
208
+ stiffness: stiffness * 0.5
209
+ });
210
+ constraints.push({
211
+ a: idx(r, c + 1),
212
+ b: idx(r + 1, c),
213
+ restLength: diagLen,
214
+ stiffness: stiffness * 0.5
215
+ });
239
216
  }
240
- const sim = { particles, constraints, cols, rows };
241
- Object.defineProperty(sim, 'width', {
242
- get() {
243
- return this.cols + 1;
244
- },
245
- enumerable: false,
246
- configurable: true,
247
- });
248
- Object.defineProperty(sim, 'height', {
249
- get() {
250
- return this.rows + 1;
251
- },
252
- enumerable: false,
253
- configurable: true,
254
- });
255
- return sim;
217
+ }
218
+ const sim = { particles, constraints, cols, rows };
219
+ Object.defineProperty(sim, "width", {
220
+ get() {
221
+ return this.cols + 1;
222
+ },
223
+ enumerable: false,
224
+ configurable: true
225
+ });
226
+ Object.defineProperty(sim, "height", {
227
+ get() {
228
+ return this.rows + 1;
229
+ },
230
+ enumerable: false,
231
+ configurable: true
232
+ });
233
+ return sim;
256
234
  }
257
- /** Step the cloth simulation forward by one frame. Returns the same sim for chaining. */
258
235
  function stepCloth(sim, configOrDt = {}, gravity) {
259
- const cfg = { ...DEFAULT_PHYSICS };
260
- if (typeof configOrDt === 'number') {
261
- cfg.timestep = configOrDt;
262
- if (typeof gravity === 'number') {
263
- cfg.gravity = { x: 0, y: gravity };
264
- }
265
- else if (gravity) {
266
- cfg.gravity = gravity;
267
- }
268
- }
269
- else {
270
- Object.assign(cfg, configOrDt);
236
+ const cfg = { ...DEFAULT_PHYSICS };
237
+ if (typeof configOrDt === "number") {
238
+ cfg.timestep = configOrDt;
239
+ if (typeof gravity === "number") {
240
+ cfg.gravity = { x: 0, y: gravity };
241
+ } else if (gravity) {
242
+ cfg.gravity = gravity;
271
243
  }
272
- stepParticles(sim.particles, cfg);
273
- solveConstraints(sim.particles, sim.constraints, cfg.iterations);
274
- return sim;
244
+ } else {
245
+ Object.assign(cfg, configOrDt);
246
+ }
247
+ stepParticles(sim.particles, cfg);
248
+ solveConstraints(sim.particles, sim.constraints, cfg.iterations);
249
+ return sim;
275
250
  }
276
- /** Get cloth vertex positions as objects with x/y/pinned. */
277
251
  function clothVertices(sim) {
278
- return sim.particles.map((p) => ({ x: p.pos.x, y: p.pos.y, pinned: p.pinned }));
252
+ return sim.particles.map((p) => ({ x: p.pos.x, y: p.pos.y, pinned: p.pinned }));
279
253
  }
280
254
  function pinClothParticle(sim, a, b, pinned) {
281
- if (b === undefined) {
282
- if (a >= 0 && a < sim.particles.length) {
283
- sim.particles[a].pinned = true;
284
- }
285
- return;
286
- }
287
- const idx = b * (sim.cols + 1) + a;
288
- if (idx >= 0 && idx < sim.particles.length) {
289
- sim.particles[idx].pinned = pinned !== null && pinned !== void 0 ? pinned : true;
255
+ if (b === void 0) {
256
+ if (a >= 0 && a < sim.particles.length) {
257
+ sim.particles[a].pinned = true;
290
258
  }
259
+ return;
260
+ }
261
+ const idx = b * (sim.cols + 1) + a;
262
+ if (idx >= 0 && idx < sim.particles.length) {
263
+ sim.particles[idx].pinned = pinned ?? true;
264
+ }
291
265
  }
292
-
293
266
  exports.applyImpulse = applyImpulse;
294
267
  exports.clothVertices = clothVertices;
295
268
  exports.createCloth = createCloth;
@@ -1,63 +1,60 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
5
- var choreoRigBridge = require('./choreoRigBridge.js');
6
- var ik = require('./ik.js');
7
- var poseOps = require('./poseOps.js');
8
- var RiggedBody = require('./RiggedBody.js');
9
- var rigMath = require('./rigMath.js');
10
- var rigTypes = require('./rigTypes.js');
11
-
12
- const NiceRigPlayer = /* @__PURE__ */ React.forwardRef(({ character, rig, pose, size, debug }, ref) => {
13
- var _a;
14
- const [current, setCurrent] = React.useState({ ...rigTypes.DEFAULT_POSE, ...(pose !== null && pose !== void 0 ? pose : {}) });
15
- const r = rig !== null && rig !== void 0 ? rig : rigTypes.DEFAULT_RIG;
16
- const S = Math.max(140, Math.floor((_a = size !== null && size !== void 0 ? size : character.size) !== null && _a !== void 0 ? _a : 180));
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
5
+ const choreoRigBridge = require("./choreoRigBridge.js");
6
+ const ik = require("./ik.js");
7
+ const poseOps = require("./poseOps.js");
8
+ const RiggedBody = require("./RiggedBody.js");
9
+ const rigMath = require("./rigMath.js");
10
+ const rigTypes = require("./rigTypes.js");
11
+ const NiceRigPlayer = /* @__PURE__ */ React.forwardRef(
12
+ ({ character, rig, pose, size, debug }, ref) => {
13
+ const [current, setCurrent] = React.useState({ ...rigTypes.DEFAULT_POSE, ...pose ?? {} });
14
+ const r = rig ?? rigTypes.DEFAULT_RIG;
15
+ const S = Math.max(140, Math.floor(size ?? character.size ?? 180));
17
16
  const setNow = (p) => setCurrent({ ...rigTypes.DEFAULT_POSE, ...p });
18
17
  const aimRightHandAt = (x, y) => {
19
- const fk = rigMath.solveFK(r, { ...rigTypes.DEFAULT_POSE, ...current }, S);
20
- const L1 = Math.hypot(fk.rUpperArm.x2 - fk.rUpperArm.x, fk.rUpperArm.y2 - fk.rUpperArm.y);
21
- const L2 = Math.hypot(fk.rForearm.x2 - fk.rForearm.x, fk.rForearm.y2 - fk.rForearm.y);
22
- const { upper, fore } = ik.solveTwoBoneIK(fk.rShoulder.x, fk.rShoulder.y, L1, L2, x, y);
23
- setNow({ ...current, rUpperArm: upper, rForearm: fore });
18
+ const fk = rigMath.solveFK(r, { ...rigTypes.DEFAULT_POSE, ...current }, S);
19
+ const L1 = Math.hypot(fk.rUpperArm.x2 - fk.rUpperArm.x, fk.rUpperArm.y2 - fk.rUpperArm.y);
20
+ const L2 = Math.hypot(fk.rForearm.x2 - fk.rForearm.x, fk.rForearm.y2 - fk.rForearm.y);
21
+ const { upper, fore } = ik.solveTwoBoneIK(fk.rShoulder.x, fk.rShoulder.y, L1, L2, x, y);
22
+ setNow({ ...current, rUpperArm: upper, rForearm: fore });
24
23
  };
25
24
  const raiseCardIK = async (_score, durationMs = 450) => {
26
- const fk = rigMath.solveFK(r, { ...rigTypes.DEFAULT_POSE, ...current }, S);
27
- const tx = fk.head.x2 + S * 0.12;
28
- const ty = fk.head.y2 - S * 0.05;
29
- const L1 = Math.hypot(fk.rUpperArm.x2 - fk.rUpperArm.x, fk.rUpperArm.y2 - fk.rUpperArm.y);
30
- const L2 = Math.hypot(fk.rForearm.x2 - fk.rForearm.x, fk.rForearm.y2 - fk.rForearm.y);
31
- const { upper, fore } = ik.solveTwoBoneIK(fk.rShoulder.x, fk.rShoulder.y, L1, L2, tx, ty);
32
- const target = { ...current, rUpperArm: upper, rForearm: fore, head: 60 };
33
- await poseOps.tweenPose(current, target, durationMs, setNow, poseOps.ease.inOut);
25
+ const fk = rigMath.solveFK(r, { ...rigTypes.DEFAULT_POSE, ...current }, S);
26
+ const tx = fk.head.x2 + S * 0.12;
27
+ const ty = fk.head.y2 - S * 0.05;
28
+ const L1 = Math.hypot(fk.rUpperArm.x2 - fk.rUpperArm.x, fk.rUpperArm.y2 - fk.rUpperArm.y);
29
+ const L2 = Math.hypot(fk.rForearm.x2 - fk.rForearm.x, fk.rForearm.y2 - fk.rForearm.y);
30
+ const { upper, fore } = ik.solveTwoBoneIK(fk.rShoulder.x, fk.rShoulder.y, L1, L2, tx, ty);
31
+ const target = { ...current, rUpperArm: upper, rForearm: fore, head: 60 };
32
+ await poseOps.tweenPose(current, target, durationMs, setNow, poseOps.ease.inOut);
34
33
  };
35
34
  React.useImperativeHandle(ref, () => ({
36
- setPose: setNow,
37
- tweenTo: (p, durationMs = 450) => poseOps.tweenPose(current, { ...rigTypes.DEFAULT_POSE, ...p }, durationMs, setNow, poseOps.ease.inOut),
38
- playChoreo: async (steps, defaultMs = 450) => {
39
- var _a, _b, _c, _d, _e;
40
- let cur = current;
41
- for (const s of steps) {
42
- if (s.pose === 'raiseCard') {
43
- await raiseCardIK(undefined, (_b = (_a = s.options) === null || _a === void 0 ? void 0 : _a.duration) !== null && _b !== void 0 ? _b : defaultMs);
44
- cur = { ...current };
45
- }
46
- else {
47
- const target = choreoRigBridge.rigPoseFor(s.pose);
48
- await poseOps.tweenPose(cur, target, (_d = (_c = s.options) === null || _c === void 0 ? void 0 : _c.duration) !== null && _d !== void 0 ? _d : defaultMs, setNow, poseOps.ease.inOut);
49
- cur = target;
50
- }
51
- const hold = (_e = s.holdMs) !== null && _e !== void 0 ? _e : 0;
52
- if (hold > 0) {
53
- await new Promise((r) => setTimeout(r, hold));
54
- }
55
- }
56
- },
57
- aimRightHandAt,
58
- raiseCardIK,
35
+ setPose: setNow,
36
+ tweenTo: (p, durationMs = 450) => poseOps.tweenPose(current, { ...rigTypes.DEFAULT_POSE, ...p }, durationMs, setNow, poseOps.ease.inOut),
37
+ playChoreo: async (steps, defaultMs = 450) => {
38
+ let cur = current;
39
+ for (const s of steps) {
40
+ if (s.pose === "raiseCard") {
41
+ await raiseCardIK(void 0, s.options?.duration ?? defaultMs);
42
+ cur = { ...current };
43
+ } else {
44
+ const target = choreoRigBridge.rigPoseFor(s.pose);
45
+ await poseOps.tweenPose(cur, target, s.options?.duration ?? defaultMs, setNow, poseOps.ease.inOut);
46
+ cur = target;
47
+ }
48
+ const hold = s.holdMs ?? 0;
49
+ if (hold > 0) {
50
+ await new Promise((r2) => setTimeout(r2, hold));
51
+ }
52
+ }
53
+ },
54
+ aimRightHandAt,
55
+ raiseCardIK
59
56
  }));
60
- return jsxRuntime.jsx(RiggedBody, { character: character, rig: r, pose: current, size: S, debug: debug });
61
- });
62
-
63
- module.exports = NiceRigPlayer;
57
+ return /* @__PURE__ */ jsxRuntime.jsx(RiggedBody.default, { character, rig: r, pose: current, size: S, debug });
58
+ }
59
+ );
60
+ exports.default = NiceRigPlayer;