jaml-ui 0.21.1 → 0.21.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -126,10 +126,22 @@ Import pure helpers from `jaml-ui/core` for server components. For local workspa
126
126
  const nextConfig = { transpilePackages: ["jaml-ui"] };
127
127
  ```
128
128
 
129
+ ## Search Worker Architecture
130
+
131
+ The library provides `useAnalyzer` to interact with `motely-wasm`'s search context natively.
132
+ **Important:** As of `motely-wasm@14.3.3`, the search worker utilizes Vite's `?worker&inline` pattern. You no longer need to pass `motelyWasmUrl`.
133
+
134
+ Ensure `motely-wasm` is imported and booted at the module level in your application:
135
+
136
+ ```tsx
137
+ import { boot } from "motely-wasm";
138
+ boot(); // Call early in your application lifecycle
139
+ ```
140
+
129
141
  ## Peer dependencies
130
142
 
131
143
  | Peer | Required for |
132
144
  |------|-------------|
133
145
  | `react`, `react-dom` | All components |
134
- | `motely-wasm ^10 \|\| ^11 \|\| ^12` | `jaml-ui/motely`, `AnalyzerExplorer` data |
146
+ | `motely-wasm ^14.3.3` | `jaml-ui/motely`, `AnalyzerExplorer`, `useAnalyzer` data |
135
147
  | `three`, `@react-three/fiber`, `@react-three/drei`, `@react-spring/three` | `jaml-ui/r3f` only |
@@ -69,7 +69,7 @@ export function buildStreamHandle(live, ante, key) {
69
69
  case "shopJoker":
70
70
  return joker(() => ctx.createShopJokerStream(ante, Motely.MotelyJokerStreamFlags.Default), (stream) => ctx.getNextShopJoker(stream));
71
71
  case "soulJoker":
72
- return fixedRarityJoker(() => ctx.createSoulJokerStream(ante, Motely.MotelyJokerFixedRarityStreamFlags.Default), (stream) => ctx.getNextSoulJoker(stream));
72
+ return fixedRarityJoker(() => ctx.createLegendaryJokerStream(ante, Motely.MotelyJokerFixedRarityStreamFlags.Default), (stream) => ctx.getNextLegendaryJoker(stream));
73
73
  case "rareTagJoker":
74
74
  return fixedRarityJoker(() => ctx.createRareTagJokerStream(ante, Motely.MotelyJokerFixedRarityStreamFlags.Default), (stream) => ctx.getNextRareTagJoker(stream));
75
75
  case "uncommonTagJoker":
package/dist/ui/hooks.js CHANGED
@@ -592,6 +592,7 @@ export function useDOMMagneticTilt(enabled = true) {
592
592
  transformStyle: enabled ? 'preserve-3d' : undefined,
593
593
  transformOrigin: enabled ? 'center center' : undefined,
594
594
  willChange: enabled ? 'transform' : undefined,
595
+ pointerEvents: enabled ? 'none' : undefined,
595
596
  };
596
597
  return { handlers, tiltStyle, isHovered };
597
598
  }
package/dist/ui/panel.js CHANGED
@@ -32,9 +32,9 @@ export function JimboButton({ tone = 'orange', size = 'md', fullWidth = false, d
32
32
  const textSize = size === 'xs' ? 'xs' : size === 'sm' ? 'sm' : size === 'lg' ? 'lg' : 'md';
33
33
  const { handlers, tiltStyle } = useDOMMagneticTilt(!disabled);
34
34
  return (_jsx("div", { className: `j-btn j-btn--${tone} j-btn--${size} ${fullWidth ? 'j-btn--full' : ''} ${disabled ? 'j-btn--disabled' : ''} ${className}`, "data-pressed": pressed, onMouseDown: () => { if (!disabled)
35
- setPressed(true); }, onMouseUp: () => setPressed(false), onMouseLeave: (e) => { setPressed(false); handlers.onPointerLeave?.(); }, onTouchStart: () => { if (!disabled)
35
+ setPressed(true); }, onMouseUp: () => setPressed(false), onMouseLeave: (e) => { setPressed(false); }, onTouchStart: () => { if (!disabled)
36
36
  setPressed(true); }, onTouchEnd: () => setPressed(false), onClick: () => { if (!disabled)
37
- onClick?.(); }, onPointerEnter: handlers.onPointerEnter, onPointerMove: handlers.onPointerMove, style: style, children: _jsxs("div", { style: { ...tiltStyle, width: '100%' }, children: [_jsx("div", { className: "j-btn__shadow", style: { background: sh } }), _jsx("div", { className: "j-btn__face", style: { background: fg }, children: _jsx(JimboText, { size: textSize, uppercase: uppercase, children: children }) })] }) }));
37
+ onClick?.(); }, onPointerEnter: handlers.onPointerEnter, onPointerMove: handlers.onPointerMove, onPointerLeave: handlers.onPointerLeave, style: style, children: _jsxs("div", { style: { ...tiltStyle, width: '100%' }, children: [_jsx("div", { className: "j-btn__shadow", style: { background: sh } }), _jsx("div", { className: "j-btn__face", style: { background: fg }, children: _jsx(JimboText, { size: textSize, uppercase: uppercase, children: children }) })] }) }));
38
38
  }
39
39
  export function JimboBackButton({ onClick }) {
40
40
  return (_jsx("div", { className: "j-flex j-justify-center j-w-full", style: { padding: '4px 0' }, children: _jsx(JimboButton, { tone: "orange", size: "md", fullWidth: true, onClick: onClick, children: "Back" }) }));
@@ -0,0 +1,1010 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://www.seedfinder.app/jaml.schema.json",
4
+ "version": "14.3.3",
5
+ "title": "JAML — Jimbo's Ante Markup Language",
6
+ "description": "JSON Schema for JAML (.jaml), Motely's Balatro seed search language. Use it for validation, completions, and editor tooling.",
7
+ "type": "object",
8
+ "$defs": {
9
+ "JamlCriterion": {
10
+ "type": "object",
11
+ "properties": {
12
+ "joker": {
13
+ "$ref": "#/$defs/Joker"
14
+ },
15
+ "jokers": {
16
+ "type": "array",
17
+ "items": {
18
+ "$ref": "#/$defs/Joker"
19
+ }
20
+ },
21
+ "commonJoker": {
22
+ "$ref": "#/$defs/CommonJoker"
23
+ },
24
+ "commonJokers": {
25
+ "type": "array",
26
+ "items": {
27
+ "$ref": "#/$defs/CommonJoker"
28
+ }
29
+ },
30
+ "uncommonJoker": {
31
+ "$ref": "#/$defs/UncommonJoker"
32
+ },
33
+ "uncommonJokers": {
34
+ "type": "array",
35
+ "items": {
36
+ "$ref": "#/$defs/UncommonJoker"
37
+ }
38
+ },
39
+ "rareJoker": {
40
+ "$ref": "#/$defs/RareJoker"
41
+ },
42
+ "rareJokers": {
43
+ "type": "array",
44
+ "items": {
45
+ "$ref": "#/$defs/RareJoker"
46
+ }
47
+ },
48
+ "legendaryJoker": {
49
+ "$ref": "#/$defs/LegendaryJoker"
50
+ },
51
+ "voucher": {
52
+ "$ref": "#/$defs/Voucher"
53
+ },
54
+ "vouchers": {
55
+ "type": "array",
56
+ "items": {
57
+ "$ref": "#/$defs/Voucher"
58
+ }
59
+ },
60
+ "tarot": {
61
+ "$ref": "#/$defs/Tarot"
62
+ },
63
+ "tarotCard": {
64
+ "$ref": "#/$defs/Tarot"
65
+ },
66
+ "spectral": {
67
+ "$ref": "#/$defs/Spectral"
68
+ },
69
+ "spectralCard": {
70
+ "$ref": "#/$defs/Spectral"
71
+ },
72
+ "planet": {
73
+ "$ref": "#/$defs/Planet"
74
+ },
75
+ "planetCard": {
76
+ "$ref": "#/$defs/Planet"
77
+ },
78
+ "boss": {
79
+ "$ref": "#/$defs/Boss"
80
+ },
81
+ "tag": {
82
+ "$ref": "#/$defs/Tag"
83
+ },
84
+ "smallBlindTag": {
85
+ "$ref": "#/$defs/Tag"
86
+ },
87
+ "bigBlindTag": {
88
+ "$ref": "#/$defs/Tag"
89
+ },
90
+ "standardCard": true,
91
+ "erraticRank": {
92
+ "$ref": "#/$defs/Rank"
93
+ },
94
+ "erraticSuit": {
95
+ "$ref": "#/$defs/Suit"
96
+ },
97
+ "erraticCard": {
98
+ "type": "string"
99
+ },
100
+ "startingDraw": {
101
+ "type": "string"
102
+ },
103
+ "event": {
104
+ "type": "string"
105
+ },
106
+ "luckyMoney": {
107
+ "type": "array",
108
+ "items": {
109
+ "type": "integer"
110
+ }
111
+ },
112
+ "luckyMult": {
113
+ "type": "array",
114
+ "items": {
115
+ "type": "integer"
116
+ }
117
+ },
118
+ "misprintMult": {
119
+ "type": "array",
120
+ "items": {
121
+ "type": "integer"
122
+ }
123
+ },
124
+ "wheelOfFortune": {
125
+ "type": "array",
126
+ "items": {
127
+ "type": "integer"
128
+ }
129
+ },
130
+ "cavendishExtinct": {
131
+ "type": "array",
132
+ "items": {
133
+ "type": "integer"
134
+ }
135
+ },
136
+ "grosMichelExtinct": {
137
+ "type": "array",
138
+ "items": {
139
+ "type": "integer"
140
+ }
141
+ },
142
+ "spaceLevelup": {
143
+ "type": "array",
144
+ "items": {
145
+ "type": "integer"
146
+ }
147
+ },
148
+ "businessPayout": {
149
+ "type": "array",
150
+ "items": {
151
+ "type": "integer"
152
+ }
153
+ },
154
+ "bloodstoneTrigger": {
155
+ "type": "array",
156
+ "items": {
157
+ "type": "integer"
158
+ }
159
+ },
160
+ "parkingPayout": {
161
+ "type": "array",
162
+ "items": {
163
+ "type": "integer"
164
+ }
165
+ },
166
+ "glassDestroy": {
167
+ "type": "array",
168
+ "items": {
169
+ "type": "integer"
170
+ }
171
+ },
172
+ "wheelStaysFlipped": {
173
+ "type": "array",
174
+ "items": {
175
+ "type": "integer"
176
+ }
177
+ },
178
+ "antes": {
179
+ "type": "array",
180
+ "items": {
181
+ "type": "integer"
182
+ }
183
+ },
184
+ "score": {
185
+ "type": "integer"
186
+ },
187
+ "min": {
188
+ "type": "integer"
189
+ },
190
+ "max": {
191
+ "type": "integer"
192
+ },
193
+ "label": {
194
+ "type": "string"
195
+ },
196
+ "edition": {
197
+ "$ref": "#/$defs/Edition"
198
+ },
199
+ "stickers": {
200
+ "type": "array",
201
+ "items": {
202
+ "$ref": "#/$defs/Sticker"
203
+ }
204
+ },
205
+ "seal": {
206
+ "$ref": "#/$defs/Seal"
207
+ },
208
+ "enhancement": {
209
+ "$ref": "#/$defs/Enhancement"
210
+ },
211
+ "rank": {
212
+ "$ref": "#/$defs/Rank"
213
+ },
214
+ "suit": {
215
+ "$ref": "#/$defs/Suit"
216
+ },
217
+ "rolls": {
218
+ "type": "array",
219
+ "items": {
220
+ "type": "integer"
221
+ }
222
+ },
223
+ "soulEditionRolls": {
224
+ "type": "integer"
225
+ },
226
+ "soulCardOnly": {
227
+ "type": "boolean"
228
+ },
229
+ "and": {
230
+ "type": "array",
231
+ "items": {
232
+ "$ref": "#/$defs/JamlCriterion"
233
+ }
234
+ },
235
+ "or": {
236
+ "type": "array",
237
+ "items": {
238
+ "$ref": "#/$defs/JamlCriterion"
239
+ }
240
+ },
241
+ "clauses": {
242
+ "type": "array",
243
+ "items": {
244
+ "$ref": "#/$defs/JamlCriterion"
245
+ }
246
+ },
247
+ "mode": {
248
+ "$ref": "#/$defs/Mode"
249
+ },
250
+ "shopItems": {
251
+ "type": "array",
252
+ "items": {
253
+ "type": "integer"
254
+ }
255
+ },
256
+ "boosterPacks": {
257
+ "type": "array",
258
+ "items": {
259
+ "type": "integer"
260
+ }
261
+ },
262
+ "minShopItem": {
263
+ "type": "integer"
264
+ },
265
+ "maxShopItem": {
266
+ "type": "integer"
267
+ },
268
+ "sources": {
269
+ "$ref": "#/$defs/JamlSources"
270
+ }
271
+ }
272
+ },
273
+ "Joker": {
274
+ "type": "string",
275
+ "enum": [
276
+ "Joker",
277
+ "GreedyJoker",
278
+ "LustyJoker",
279
+ "WrathfulJoker",
280
+ "GluttonousJoker",
281
+ "JollyJoker",
282
+ "ZanyJoker",
283
+ "MadJoker",
284
+ "CrazyJoker",
285
+ "DrollJoker",
286
+ "SlyJoker",
287
+ "WilyJoker",
288
+ "CleverJoker",
289
+ "DeviousJoker",
290
+ "CraftyJoker",
291
+ "HalfJoker",
292
+ "CreditCard",
293
+ "Banner",
294
+ "MysticSummit",
295
+ "EightBall",
296
+ "Misprint",
297
+ "RaisedFist",
298
+ "ChaostheClown",
299
+ "ScaryFace",
300
+ "AbstractJoker",
301
+ "DelayedGratification",
302
+ "GrosMichel",
303
+ "EvenSteven",
304
+ "OddTodd",
305
+ "Scholar",
306
+ "BusinessCard",
307
+ "Supernova",
308
+ "RideTheBus",
309
+ "Egg",
310
+ "Runner",
311
+ "IceCream",
312
+ "Splash",
313
+ "BlueJoker",
314
+ "FacelessJoker",
315
+ "GreenJoker",
316
+ "Superposition",
317
+ "ToDoList",
318
+ "Cavendish",
319
+ "RedCard",
320
+ "SquareJoker",
321
+ "RiffRaff",
322
+ "Photograph",
323
+ "ReservedParking",
324
+ "MailInRebate",
325
+ "Hallucination",
326
+ "FortuneTeller",
327
+ "Juggler",
328
+ "Drunkard",
329
+ "GoldenJoker",
330
+ "Popcorn",
331
+ "WalkieTalkie",
332
+ "SmileyFace",
333
+ "GoldenTicket",
334
+ "Swashbuckler",
335
+ "HangingChad",
336
+ "ShootTheMoon",
337
+ "JokerStencil",
338
+ "FourFingers",
339
+ "Mime",
340
+ "CeremonialDagger",
341
+ "MarbleJoker",
342
+ "LoyaltyCard",
343
+ "Dusk",
344
+ "Fibonacci",
345
+ "SteelJoker",
346
+ "Hack",
347
+ "Pareidolia",
348
+ "SpaceJoker",
349
+ "Burglar",
350
+ "Blackboard",
351
+ "SixthSense",
352
+ "Constellation",
353
+ "Hiker",
354
+ "CardSharp",
355
+ "Madness",
356
+ "Seance",
357
+ "Vampire",
358
+ "Shortcut",
359
+ "Hologram",
360
+ "Cloud9",
361
+ "Rocket",
362
+ "MidasMask",
363
+ "Luchador",
364
+ "GiftCard",
365
+ "TurtleBean",
366
+ "Erosion",
367
+ "ToTheMoon",
368
+ "StoneJoker",
369
+ "LuckyCat",
370
+ "Bull",
371
+ "DietCola",
372
+ "TradingCard",
373
+ "FlashCard",
374
+ "SpareTrousers",
375
+ "Ramen",
376
+ "Seltzer",
377
+ "Castle",
378
+ "MrBones",
379
+ "Acrobat",
380
+ "SockAndBuskin",
381
+ "Troubadour",
382
+ "Certificate",
383
+ "SmearedJoker",
384
+ "Throwback",
385
+ "RoughGem",
386
+ "Bloodstone",
387
+ "Arrowhead",
388
+ "OnyxAgate",
389
+ "GlassJoker",
390
+ "Showman",
391
+ "FlowerPot",
392
+ "MerryAndy",
393
+ "OopsAll6s",
394
+ "TheIdol",
395
+ "SeeingDouble",
396
+ "Matador",
397
+ "Satellite",
398
+ "Cartomancer",
399
+ "Astronomer",
400
+ "Bootstraps",
401
+ "DNA",
402
+ "Vagabond",
403
+ "Baron",
404
+ "Obelisk",
405
+ "BaseballCard",
406
+ "AncientJoker",
407
+ "Campfire",
408
+ "Blueprint",
409
+ "WeeJoker",
410
+ "HitTheRoad",
411
+ "TheDuo",
412
+ "TheTrio",
413
+ "TheFamily",
414
+ "TheOrder",
415
+ "TheTribe",
416
+ "Stuntman",
417
+ "InvisibleJoker",
418
+ "Brainstorm",
419
+ "DriversLicense",
420
+ "BurntJoker",
421
+ "Canio",
422
+ "Triboulet",
423
+ "Yorick",
424
+ "Chicot",
425
+ "Perkeo",
426
+ "any"
427
+ ]
428
+ },
429
+ "CommonJoker": {
430
+ "type": "string",
431
+ "enum": [
432
+ "Joker",
433
+ "GreedyJoker",
434
+ "LustyJoker",
435
+ "WrathfulJoker",
436
+ "GluttonousJoker",
437
+ "JollyJoker",
438
+ "ZanyJoker",
439
+ "MadJoker",
440
+ "CrazyJoker",
441
+ "DrollJoker",
442
+ "SlyJoker",
443
+ "WilyJoker",
444
+ "CleverJoker",
445
+ "DeviousJoker",
446
+ "CraftyJoker",
447
+ "HalfJoker",
448
+ "CreditCard",
449
+ "Banner",
450
+ "MysticSummit",
451
+ "EightBall",
452
+ "Misprint",
453
+ "RaisedFist",
454
+ "ChaostheClown",
455
+ "ScaryFace",
456
+ "AbstractJoker",
457
+ "DelayedGratification",
458
+ "GrosMichel",
459
+ "EvenSteven",
460
+ "OddTodd",
461
+ "Scholar",
462
+ "BusinessCard",
463
+ "Supernova",
464
+ "RideTheBus",
465
+ "Egg",
466
+ "Runner",
467
+ "IceCream",
468
+ "Splash",
469
+ "BlueJoker",
470
+ "FacelessJoker",
471
+ "GreenJoker",
472
+ "Superposition",
473
+ "ToDoList",
474
+ "Cavendish",
475
+ "RedCard",
476
+ "SquareJoker",
477
+ "RiffRaff",
478
+ "Photograph",
479
+ "ReservedParking",
480
+ "MailInRebate",
481
+ "Hallucination",
482
+ "FortuneTeller",
483
+ "Juggler",
484
+ "Drunkard",
485
+ "GoldenJoker",
486
+ "Popcorn",
487
+ "WalkieTalkie",
488
+ "SmileyFace",
489
+ "GoldenTicket",
490
+ "Swashbuckler",
491
+ "HangingChad",
492
+ "ShootTheMoon",
493
+ "any"
494
+ ]
495
+ },
496
+ "UncommonJoker": {
497
+ "type": "string",
498
+ "enum": [
499
+ "JokerStencil",
500
+ "FourFingers",
501
+ "Mime",
502
+ "CeremonialDagger",
503
+ "MarbleJoker",
504
+ "LoyaltyCard",
505
+ "Dusk",
506
+ "Fibonacci",
507
+ "SteelJoker",
508
+ "Hack",
509
+ "Pareidolia",
510
+ "SpaceJoker",
511
+ "Burglar",
512
+ "Blackboard",
513
+ "SixthSense",
514
+ "Constellation",
515
+ "Hiker",
516
+ "CardSharp",
517
+ "Madness",
518
+ "Seance",
519
+ "Vampire",
520
+ "Shortcut",
521
+ "Hologram",
522
+ "Cloud9",
523
+ "Rocket",
524
+ "MidasMask",
525
+ "Luchador",
526
+ "GiftCard",
527
+ "TurtleBean",
528
+ "Erosion",
529
+ "ToTheMoon",
530
+ "StoneJoker",
531
+ "LuckyCat",
532
+ "Bull",
533
+ "DietCola",
534
+ "TradingCard",
535
+ "FlashCard",
536
+ "SpareTrousers",
537
+ "Ramen",
538
+ "Seltzer",
539
+ "Castle",
540
+ "MrBones",
541
+ "Acrobat",
542
+ "SockAndBuskin",
543
+ "Troubadour",
544
+ "Certificate",
545
+ "SmearedJoker",
546
+ "Throwback",
547
+ "RoughGem",
548
+ "Bloodstone",
549
+ "Arrowhead",
550
+ "OnyxAgate",
551
+ "GlassJoker",
552
+ "Showman",
553
+ "FlowerPot",
554
+ "MerryAndy",
555
+ "OopsAll6s",
556
+ "TheIdol",
557
+ "SeeingDouble",
558
+ "Matador",
559
+ "Satellite",
560
+ "Cartomancer",
561
+ "Astronomer",
562
+ "Bootstraps",
563
+ "any"
564
+ ]
565
+ },
566
+ "RareJoker": {
567
+ "type": "string",
568
+ "enum": [
569
+ "DNA",
570
+ "Vagabond",
571
+ "Baron",
572
+ "Obelisk",
573
+ "BaseballCard",
574
+ "AncientJoker",
575
+ "Campfire",
576
+ "Blueprint",
577
+ "WeeJoker",
578
+ "HitTheRoad",
579
+ "TheDuo",
580
+ "TheTrio",
581
+ "TheFamily",
582
+ "TheOrder",
583
+ "TheTribe",
584
+ "Stuntman",
585
+ "InvisibleJoker",
586
+ "Brainstorm",
587
+ "DriversLicense",
588
+ "BurntJoker",
589
+ "any"
590
+ ]
591
+ },
592
+ "LegendaryJoker": {
593
+ "type": "string",
594
+ "enum": [
595
+ "Canio",
596
+ "Triboulet",
597
+ "Yorick",
598
+ "Chicot",
599
+ "Perkeo",
600
+ "any"
601
+ ]
602
+ },
603
+ "Voucher": {
604
+ "type": "string",
605
+ "enum": [
606
+ "Overstock",
607
+ "OverstockPlus",
608
+ "ClearanceSale",
609
+ "Liquidation",
610
+ "Hone",
611
+ "GlowUp",
612
+ "RerollSurplus",
613
+ "RerollGlut",
614
+ "CrystalBall",
615
+ "OmenGlobe",
616
+ "Telescope",
617
+ "Observatory",
618
+ "Grabber",
619
+ "NachoTong",
620
+ "Wasteful",
621
+ "Recyclomancy",
622
+ "TarotMerchant",
623
+ "TarotTycoon",
624
+ "PlanetMerchant",
625
+ "PlanetTycoon",
626
+ "SeedMoney",
627
+ "MoneyTree",
628
+ "Blank",
629
+ "Antimatter",
630
+ "MagicTrick",
631
+ "Illusion",
632
+ "Hieroglyph",
633
+ "Petroglyph",
634
+ "DirectorsCut",
635
+ "Retcon",
636
+ "PaintBrush",
637
+ "Palette"
638
+ ]
639
+ },
640
+ "Tarot": {
641
+ "type": "string",
642
+ "enum": [
643
+ "TheFool",
644
+ "TheMagician",
645
+ "TheHighPriestess",
646
+ "TheEmpress",
647
+ "TheEmperor",
648
+ "TheHierophant",
649
+ "TheLovers",
650
+ "TheChariot",
651
+ "Justice",
652
+ "TheHermit",
653
+ "TheWheelOfFortune",
654
+ "Strength",
655
+ "TheHangedMan",
656
+ "Death",
657
+ "Temperance",
658
+ "TheDevil",
659
+ "TheTower",
660
+ "TheStar",
661
+ "TheMoon",
662
+ "TheSun",
663
+ "Judgement",
664
+ "TheWorld"
665
+ ]
666
+ },
667
+ "Planet": {
668
+ "type": "string",
669
+ "enum": [
670
+ "Mercury",
671
+ "Venus",
672
+ "Earth",
673
+ "Mars",
674
+ "Jupiter",
675
+ "Saturn",
676
+ "Uranus",
677
+ "Neptune",
678
+ "Pluto",
679
+ "PlanetX",
680
+ "Ceres",
681
+ "Eris"
682
+ ]
683
+ },
684
+ "Spectral": {
685
+ "type": "string",
686
+ "enum": [
687
+ "Familiar",
688
+ "Grim",
689
+ "Incantation",
690
+ "Talisman",
691
+ "Aura",
692
+ "Wraith",
693
+ "Sigil",
694
+ "Ouija",
695
+ "Ectoplasm",
696
+ "Immolate",
697
+ "Ankh",
698
+ "DejaVu",
699
+ "Hex",
700
+ "Trance",
701
+ "Medium",
702
+ "Cryptid",
703
+ "TheSoul",
704
+ "BlackHole"
705
+ ]
706
+ },
707
+ "Tag": {
708
+ "type": "string",
709
+ "enum": [
710
+ "UncommonTag",
711
+ "RareTag",
712
+ "NegativeTag",
713
+ "FoilTag",
714
+ "HolographicTag",
715
+ "PolychromeTag",
716
+ "InvestmentTag",
717
+ "VoucherTag",
718
+ "BossTag",
719
+ "StandardTag",
720
+ "CharmTag",
721
+ "MeteorTag",
722
+ "BuffoonTag",
723
+ "HandyTag",
724
+ "GarbageTag",
725
+ "EtherealTag",
726
+ "CouponTag",
727
+ "DoubleTag",
728
+ "JuggleTag",
729
+ "D6Tag",
730
+ "TopupTag",
731
+ "SpeedTag",
732
+ "OrbitalTag",
733
+ "EconomyTag"
734
+ ]
735
+ },
736
+ "Boss": {
737
+ "type": "string",
738
+ "enum": [
739
+ "TheClub",
740
+ "TheGoad",
741
+ "TheHead",
742
+ "TheHook",
743
+ "TheManacle",
744
+ "ThePillar",
745
+ "ThePsychic",
746
+ "TheWindow",
747
+ "TheArm",
748
+ "TheFish",
749
+ "TheFlint",
750
+ "TheHouse",
751
+ "TheMark",
752
+ "TheMouth",
753
+ "TheNeedle",
754
+ "TheWall",
755
+ "TheWater",
756
+ "TheWheel",
757
+ "TheEye",
758
+ "TheTooth",
759
+ "ThePlant",
760
+ "TheSerpent",
761
+ "TheOx",
762
+ "AmberAcorn",
763
+ "CeruleanBell",
764
+ "CrimsonHeart",
765
+ "VerdantLeaf",
766
+ "VioletVessel"
767
+ ]
768
+ },
769
+ "Deck": {
770
+ "type": "string",
771
+ "enum": [
772
+ "Red",
773
+ "Blue",
774
+ "Yellow",
775
+ "Green",
776
+ "Black",
777
+ "Magic",
778
+ "Nebula",
779
+ "Ghost",
780
+ "Abandoned",
781
+ "Checkered",
782
+ "Zodiac",
783
+ "Painted",
784
+ "Anaglyph",
785
+ "Plasma",
786
+ "Erratic"
787
+ ]
788
+ },
789
+ "Stake": {
790
+ "type": "string",
791
+ "enum": [
792
+ "White",
793
+ "Red",
794
+ "Green",
795
+ "Black",
796
+ "Blue",
797
+ "Purple",
798
+ "Orange",
799
+ "Gold"
800
+ ]
801
+ },
802
+ "Edition": {
803
+ "type": "string",
804
+ "enum": [
805
+ "None",
806
+ "Foil",
807
+ "Holographic",
808
+ "Polychrome",
809
+ "Negative"
810
+ ]
811
+ },
812
+ "Seal": {
813
+ "type": "string",
814
+ "enum": [
815
+ "Gold",
816
+ "Red",
817
+ "Blue",
818
+ "Purple"
819
+ ]
820
+ },
821
+ "Enhancement": {
822
+ "type": "string",
823
+ "enum": [
824
+ "Bonus",
825
+ "Mult",
826
+ "Wild",
827
+ "Glass",
828
+ "Steel",
829
+ "Stone",
830
+ "Gold",
831
+ "Lucky"
832
+ ]
833
+ },
834
+ "Rank": {
835
+ "type": "string",
836
+ "enum": [
837
+ "Two",
838
+ "Three",
839
+ "Four",
840
+ "Five",
841
+ "Six",
842
+ "Seven",
843
+ "Eight",
844
+ "Nine",
845
+ "Ten",
846
+ "Jack",
847
+ "Queen",
848
+ "King",
849
+ "Ace"
850
+ ]
851
+ },
852
+ "Suit": {
853
+ "type": "string",
854
+ "enum": [
855
+ "Clubs",
856
+ "Diamonds",
857
+ "Hearts",
858
+ "Spades"
859
+ ]
860
+ },
861
+ "Sticker": {
862
+ "type": "string",
863
+ "enum": [
864
+ "Eternal",
865
+ "Perishable",
866
+ "Rental"
867
+ ]
868
+ },
869
+ "Mode": {
870
+ "type": "string",
871
+ "enum": [
872
+ "any",
873
+ "all",
874
+ "none"
875
+ ]
876
+ },
877
+ "StandardCard": {
878
+ "anyOf": [
879
+ {
880
+ "type": "string"
881
+ },
882
+ {
883
+ "type": "object",
884
+ "properties": {
885
+ "rank": {
886
+ "$ref": "#/$defs/Rank"
887
+ },
888
+ "suit": {
889
+ "$ref": "#/$defs/Suit"
890
+ },
891
+ "seal": {
892
+ "$ref": "#/$defs/Seal"
893
+ },
894
+ "enhancement": {
895
+ "$ref": "#/$defs/Enhancement"
896
+ },
897
+ "edition": {
898
+ "$ref": "#/$defs/Edition"
899
+ }
900
+ }
901
+ }
902
+ ]
903
+ },
904
+ "JamlSources": {
905
+ "type": "object",
906
+ "properties": {
907
+ "shopItems": {
908
+ "type": "array",
909
+ "items": {
910
+ "type": "integer"
911
+ }
912
+ },
913
+ "boosterPacks": {
914
+ "type": "array",
915
+ "items": {
916
+ "type": "integer"
917
+ }
918
+ },
919
+ "minShopItem": {
920
+ "type": "integer"
921
+ },
922
+ "maxShopItem": {
923
+ "type": "integer"
924
+ },
925
+ "requireMega": {
926
+ "type": "boolean"
927
+ }
928
+ }
929
+ }
930
+ },
931
+ "properties": {
932
+ "id": {
933
+ "type": "string"
934
+ },
935
+ "name": {
936
+ "type": "string"
937
+ },
938
+ "author": {
939
+ "type": "string"
940
+ },
941
+ "dateCreated": {
942
+ "type": "string"
943
+ },
944
+ "description": {
945
+ "type": "string"
946
+ },
947
+ "deck": {
948
+ "$ref": "#/$defs/Deck"
949
+ },
950
+ "stake": {
951
+ "$ref": "#/$defs/Stake"
952
+ },
953
+ "defaults": {
954
+ "type": "object",
955
+ "properties": {
956
+ "antes": {
957
+ "type": "array",
958
+ "items": {
959
+ "type": "integer"
960
+ }
961
+ },
962
+ "boosterPacks": {
963
+ "type": "array",
964
+ "items": {
965
+ "type": "integer"
966
+ }
967
+ },
968
+ "shopItems": {
969
+ "type": "array",
970
+ "items": {
971
+ "type": "integer"
972
+ }
973
+ },
974
+ "score": {
975
+ "type": "integer"
976
+ }
977
+ }
978
+ },
979
+ "must": {
980
+ "type": "array",
981
+ "items": {
982
+ "$ref": "#/$defs/JamlCriterion"
983
+ }
984
+ },
985
+ "should": {
986
+ "type": "array",
987
+ "items": {
988
+ "$ref": "#/$defs/JamlCriterion"
989
+ }
990
+ },
991
+ "mustNot": {
992
+ "type": "array",
993
+ "items": {
994
+ "$ref": "#/$defs/JamlCriterion"
995
+ }
996
+ },
997
+ "hashtags": {
998
+ "type": "array",
999
+ "items": {
1000
+ "type": "string"
1001
+ }
1002
+ },
1003
+ "seeds": {
1004
+ "type": "array",
1005
+ "items": {
1006
+ "type": "string"
1007
+ }
1008
+ }
1009
+ }
1010
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jaml-ui",
3
- "version": "0.21.1",
3
+ "version": "0.21.2",
4
4
  "description": "Balatro rendering components, sprite metadata, and optional Motely helpers for React apps.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -27,6 +27,7 @@
27
27
  "import": "./dist/r3f.js"
28
28
  },
29
29
  "./fonts.css": "./fonts.css",
30
+ "./jaml.schema.json": "./jaml.schema.json",
30
31
  "./package.json": "./package.json"
31
32
  },
32
33
  "sideEffects": [
@@ -38,12 +39,13 @@
38
39
  "assets/fonts",
39
40
  "fonts.css",
40
41
  "dist/ui/jimbo.css",
42
+ "jaml.schema.json",
41
43
  "README.md",
42
44
  "DESIGN.md",
43
45
  "LICENSE"
44
46
  ],
45
47
  "scripts": {
46
- "build": "tsc --pretty false && node -e \"const fs=require('fs');fs.mkdirSync('dist/ui',{recursive:true});fs.copyFileSync('src/ui/jimbo.css','dist/ui/jimbo.css')\"",
48
+ "build": "tsc --pretty false && node -e \"const fs=require('fs');fs.mkdirSync('dist/ui',{recursive:true});fs.copyFileSync('src/ui/jimbo.css','dist/ui/jimbo.css');fs.copyFileSync('node_modules/motely-wasm/jaml.schema.json','jaml.schema.json');\"",
47
49
  "dev": "tsc --watch",
48
50
  "demo": "vite --config demo/vite.config.ts",
49
51
  "typecheck": "tsc --noEmit --pretty false",
@@ -82,7 +84,7 @@
82
84
  "@react-three/drei": ">=9.0.0",
83
85
  "@react-three/fiber": ">=8.0.0",
84
86
  "monaco-editor": ">=0.50.0",
85
- "motely-wasm": "^14.3.1",
87
+ "motely-wasm": "^14.3.3",
86
88
  "react": "^18.2.0 || ^19.0.0",
87
89
  "react-dom": "^18.2.0 || ^19.0.0",
88
90
  "react-icons": ">=5.0.0",
@@ -119,7 +121,7 @@
119
121
  "@types/three": "^0.184.0",
120
122
  "@vitejs/plugin-react": "^5.0.4",
121
123
  "monaco-editor": "^0.55.1",
122
- "motely-wasm": "^14.2.41",
124
+ "motely-wasm": "^14.3.3",
123
125
  "react": "^19.2.4",
124
126
  "react-dom": "^19.2.4",
125
127
  "react-icons": "^5.6.0",