jaml-ui 4.4.0 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/assets/jammy-seed-mascot.png +0 -0
  2. package/dist/assets/8BitDeck-B09C1jGy.png +0 -0
  3. package/dist/assets/BlindChips-Bnvhn76w.png +0 -0
  4. package/dist/assets/Boosters-Bqv_YhIn.png +0 -0
  5. package/dist/assets/Editions-B3YPqPOl.png +0 -0
  6. package/dist/assets/Enhancers-DhIlUuTX.png +0 -0
  7. package/dist/assets/Jokers-1egXSFFQ.png +0 -0
  8. package/dist/assets/Tarots-DkrFk7iW.png +0 -0
  9. package/dist/assets/Vouchers-Cdp8BeSE.png +0 -0
  10. package/dist/assets/balatro-stake-chips-BdO-bw7c.png +0 -0
  11. package/dist/assets/jammy-seed-mascot-BdoW3O33.png +0 -0
  12. package/dist/assets/m6x11plus-C8RqtTtG.ttf +0 -0
  13. package/dist/assets/stickers-B6y5vEyc.png +0 -0
  14. package/dist/assets/tags-BdxcVWR4.png +0 -0
  15. package/dist/chunks/JimboSwipeDeck-DbzWak3V.js +2051 -0
  16. package/dist/chunks/JimboSwipeDeck-DbzWak3V.js.map +1 -0
  17. package/dist/chunks/spriteMapper-gImEz0wa.js +501 -0
  18. package/dist/chunks/spriteMapper-gImEz0wa.js.map +1 -0
  19. package/dist/components/DailyRitualView.d.ts +17 -0
  20. package/dist/components/DeckStakePicker.d.ts +12 -0
  21. package/dist/components/JamlIdeToolbar.d.ts +2 -5
  22. package/dist/components/JamlIdeVisual.d.ts +2 -1
  23. package/dist/components/Jamlyzer.d.ts +14 -2
  24. package/dist/components/JamlyzerBulk.d.ts +5 -4
  25. package/dist/components/JamlyzerView.d.ts +1 -12
  26. package/dist/components/SeedLab.d.ts +12 -0
  27. package/dist/components/jamlSeedUtils.d.ts +1 -0
  28. package/dist/components/jamlyzer/JamlyzerAnteDetails.d.ts +4 -0
  29. package/dist/components/jamlyzer/JamlyzerErraticDeck.d.ts +2 -2
  30. package/dist/components/jamlyzer/JamlyzerPackSection.d.ts +1 -5
  31. package/dist/components/jamlyzer/JamlyzerPulls.d.ts +2 -2
  32. package/dist/components/jamlyzer/JamlyzerSeedCard.d.ts +21 -0
  33. package/dist/components/jamlyzer/JamlyzerTape.d.ts +10 -0
  34. package/dist/components/jamlyzer/highlight.d.ts +3 -3
  35. package/dist/core.js +2 -2
  36. package/dist/decode/motelyItemDecoder.d.ts +1 -0
  37. package/dist/decode/motelySprite.d.ts +10 -13
  38. package/dist/decode/motelySpriteLut.generated.d.ts +2 -0
  39. package/dist/index.d.ts +13 -1
  40. package/dist/index.js +20802 -17361
  41. package/dist/index.js.map +1 -1
  42. package/dist/json-render/JimboJsonRenderer.d.ts +21 -0
  43. package/dist/json-render/catalog.d.ts +304 -180
  44. package/dist/json-render/index.d.ts +5 -30
  45. package/dist/json-render/registry.d.ts +2 -12
  46. package/dist/lib/daily/ritual.d.ts +43 -0
  47. package/dist/lib/jaml/{parseClauses.d.ts → jaml.d.ts} +17 -13
  48. package/dist/lib/jaml/rarity.d.ts +53 -0
  49. package/dist/lib/jaml/rarityData.generated.d.ts +727 -0
  50. package/dist/ui/JimboApp.d.ts +8 -6
  51. package/dist/ui/JimboBackground.d.ts +5 -13
  52. package/dist/ui/JimboButton.d.ts +1 -1
  53. package/dist/ui/JimboDock.d.ts +21 -0
  54. package/dist/ui/JimboMascot.d.ts +51 -5
  55. package/dist/ui/JimboOrbitalMenu.d.ts +81 -9
  56. package/dist/ui/JimboPanelSpinner.d.ts +14 -0
  57. package/dist/ui/JimboSeedCopyChip.d.ts +1 -2
  58. package/dist/ui/JimboShopBelt.d.ts +9 -0
  59. package/dist/ui/dockTree.d.ts +31 -0
  60. package/dist/ui/hooks.d.ts +1 -1
  61. package/dist/ui/jammySeedMascotImage.d.ts +1 -1
  62. package/dist/ui/jimbo.css +1 -1
  63. package/dist/ui/orbitalLayout.d.ts +149 -0
  64. package/dist/ui/orbitalMenuStore.d.ts +70 -0
  65. package/dist/ui/tokens.d.ts +9 -36
  66. package/dist/ui/useMotionPreference.d.ts +19 -0
  67. package/dist/ui.d.ts +17 -3
  68. package/dist/ui.js +77 -34
  69. package/dist/vocab.d.ts +26 -0
  70. package/package.json +36 -40
  71. package/README.md +0 -78
  72. package/assets/fonts/README.md +0 -14
  73. package/dist/chunks/JimboSwipeDeck-Cbe5Jdmw.js +0 -986
  74. package/dist/chunks/JimboSwipeDeck-Cbe5Jdmw.js.map +0 -1
  75. package/dist/chunks/motelyItemDecoder-Cb-RjvQ0.js +0 -692
  76. package/dist/chunks/motelyItemDecoder-Cb-RjvQ0.js.map +0 -1
  77. package/dist/chunks/spriteMapper-Dfr2_j0_.js +0 -501
  78. package/dist/chunks/spriteMapper-Dfr2_j0_.js.map +0 -1
  79. package/dist/components/jamlyzer/JamlyzerRail.d.ts +0 -14
  80. package/dist/json-render/builders/analyzer.d.ts +0 -23
  81. package/dist/json-render/builders/encyclopedia.d.ts +0 -14
  82. package/dist/json-render/builders/search.d.ts +0 -24
  83. package/dist/json-render/components/domain.d.ts +0 -59
  84. package/dist/json-render/components/game.d.ts +0 -18
  85. package/dist/json-render/components/layout.d.ts +0 -47
  86. package/dist/json-render/components/mascot.d.ts +0 -23
  87. package/dist/json-render/components/reference.d.ts +0 -39
  88. package/dist/json-render/engine.d.ts +0 -38
  89. package/dist/json-render/knowledge/bosses.d.ts +0 -18
  90. package/dist/json-render/knowledge/decks.d.ts +0 -22
  91. package/dist/json-render/knowledge/jokers.d.ts +0 -23
  92. package/dist/json-render/knowledge/synergies.d.ts +0 -21
  93. package/dist/lib/motely/jamlParse.d.ts +0 -4
  94. package/dist/lib/motely/runtime.d.ts +0 -1
  95. package/dist/motely.d.ts +0 -4
  96. package/dist/motely.js +0 -84
  97. package/dist/motely.js.map +0 -1
@@ -0,0 +1,501 @@
1
+ const T = new URL("../assets/8BitDeck-B09C1jGy.png", import.meta.url).href, k = new URL("../assets/BlindChips-Bnvhn76w.png", import.meta.url).href, d = new URL("../assets/Boosters-Bqv_YhIn.png", import.meta.url).href, g = new URL("../assets/Editions-B3YPqPOl.png", import.meta.url).href, S = new URL("../assets/Enhancers-DhIlUuTX.png", import.meta.url).href, C = new URL("../assets/Jokers-1egXSFFQ.png", import.meta.url).href, J = new URL("../assets/Tarots-DkrFk7iW.png", import.meta.url).href, M = new URL("../assets/Vouchers-Cdp8BeSE.png", import.meta.url).href, B = new URL("../assets/stickers-B6y5vEyc.png", import.meta.url).href, f = new URL("../assets/tags-BdxcVWR4.png", import.meta.url).href, P = new URL("../assets/balatro-stake-chips-BdO-bw7c.png", import.meta.url).href, E = new URL("../assets/m6x11plus-C8RqtTtG.ttf", import.meta.url).href, b = {
2
+ deck: "8BitDeck.png",
3
+ blinds: "BlindChips.png",
4
+ boosters: "Boosters.png",
5
+ editions: "Editions.png",
6
+ enhancers: "Enhancers.png",
7
+ jokers: "Jokers.png",
8
+ tarots: "Tarots.png",
9
+ vouchers: "Vouchers.png",
10
+ stickers: "stickers.png",
11
+ tags: "tags.png",
12
+ stakes: "balatro-stake-chips.png",
13
+ font: "fonts/m6x11plus.ttf"
14
+ }, w = {
15
+ deck: T,
16
+ blinds: k,
17
+ boosters: d,
18
+ editions: g,
19
+ enhancers: S,
20
+ jokers: C,
21
+ tarots: J,
22
+ vouchers: M,
23
+ stickers: B,
24
+ tags: f,
25
+ stakes: P,
26
+ font: E
27
+ };
28
+ function R(e) {
29
+ const o = w[e];
30
+ if (!o)
31
+ throw new Error(`Unknown Jaml asset '${e}'.`);
32
+ return o;
33
+ }
34
+ function a(e, o, n) {
35
+ return {
36
+ asset: e,
37
+ fileName: b[e],
38
+ columns: o,
39
+ rows: n,
40
+ get src() {
41
+ return R(e);
42
+ }
43
+ };
44
+ }
45
+ const H = {
46
+ jokers: a("jokers", 10, 16),
47
+ tarots: a("tarots", 10, 6),
48
+ deck: a("deck", 13, 4),
49
+ enhancers: a("enhancers", 7, 5),
50
+ editions: a("editions", 5, 1),
51
+ stickers: a("stickers", 5, 3),
52
+ blinds: a("blinds", 21, 31),
53
+ vouchers: a("vouchers", 9, 4),
54
+ tags: a("tags", 6, 5),
55
+ boosters: a("boosters", 4, 9),
56
+ stakes: a("stakes", 5, 2)
57
+ }, y = [
58
+ { name: "Joker", pos: { x: 0, y: 0 } },
59
+ { name: "Greedy Joker", pos: { x: 6, y: 1 } },
60
+ { name: "Lusty Joker", pos: { x: 7, y: 1 } },
61
+ { name: "Wrathful Joker", pos: { x: 8, y: 1 } },
62
+ { name: "Gluttonous Joker", pos: { x: 9, y: 1 } },
63
+ { name: "Jolly Joker", pos: { x: 2, y: 0 } },
64
+ { name: "Zany Joker", pos: { x: 3, y: 0 } },
65
+ { name: "Mad Joker", pos: { x: 4, y: 0 } },
66
+ { name: "Crazy Joker", pos: { x: 5, y: 0 } },
67
+ { name: "Droll Joker", pos: { x: 6, y: 0 } },
68
+ { name: "Sly Joker", pos: { x: 0, y: 14 } },
69
+ { name: "Wily Joker", pos: { x: 1, y: 14 } },
70
+ { name: "Clever Joker", pos: { x: 2, y: 14 } },
71
+ { name: "Devious Joker", pos: { x: 3, y: 14 } },
72
+ { name: "Crafty Joker", pos: { x: 4, y: 14 } },
73
+ { name: "Half Joker", pos: { x: 7, y: 0 } },
74
+ { name: "Joker Stencil", pos: { x: 2, y: 5 } },
75
+ { name: "Four Fingers", pos: { x: 6, y: 6 } },
76
+ { name: "Mime", pos: { x: 4, y: 1 } },
77
+ { name: "Credit Card", pos: { x: 5, y: 1 } },
78
+ { name: "Ceremonial Dagger", pos: { x: 5, y: 5 } },
79
+ { name: "Banner", pos: { x: 1, y: 2 } },
80
+ { name: "Mystic Summit", pos: { x: 2, y: 2 } },
81
+ { name: "Marble Joker", pos: { x: 3, y: 2 } },
82
+ { name: "Loyalty Card", pos: { x: 4, y: 2 } },
83
+ { name: "8 Ball", pos: { x: 0, y: 5 } },
84
+ { name: "Misprint", pos: { x: 6, y: 2 } },
85
+ { name: "Dusk", pos: { x: 4, y: 7 } },
86
+ { name: "Raised Fist", pos: { x: 8, y: 2 } },
87
+ { name: "Chaos the Clown", pos: { x: 1, y: 0 } },
88
+ { name: "Fibonacci", pos: { x: 1, y: 5 } },
89
+ { name: "Steel Joker", pos: { x: 7, y: 2 } },
90
+ { name: "Scary Face", pos: { x: 2, y: 3 } },
91
+ { name: "Abstract Joker", pos: { x: 3, y: 3 } },
92
+ { name: "Delayed Gratification", pos: { x: 4, y: 3 } },
93
+ { name: "Hack", pos: { x: 5, y: 2 } },
94
+ { name: "Pareidolia", pos: { x: 6, y: 3 } },
95
+ { name: "Gros Michel", pos: { x: 7, y: 6 } },
96
+ { name: "Even Steven", pos: { x: 8, y: 3 } },
97
+ { name: "Odd Todd", pos: { x: 9, y: 3 } },
98
+ { name: "Scholar", pos: { x: 3, y: 6 } },
99
+ { name: "Business Card", pos: { x: 1, y: 4 } },
100
+ { name: "Supernova", pos: { x: 2, y: 4 } },
101
+ { name: "Ride the Bus", pos: { x: 1, y: 6 } },
102
+ { name: "Space Joker", pos: { x: 3, y: 5 } },
103
+ { name: "Egg", pos: { x: 0, y: 10 } },
104
+ { name: "Burglar", pos: { x: 1, y: 10 } },
105
+ { name: "Blackboard", pos: { x: 2, y: 10 } },
106
+ { name: "Runner", pos: { x: 3, y: 10 } },
107
+ { name: "Ice Cream", pos: { x: 4, y: 10 } },
108
+ { name: "DNA", pos: { x: 5, y: 10 } },
109
+ { name: "Splash", pos: { x: 6, y: 10 } },
110
+ { name: "Blue Joker", pos: { x: 7, y: 10 } },
111
+ { name: "Sixth Sense", pos: { x: 8, y: 10 } },
112
+ { name: "Constellation", pos: { x: 9, y: 10 } },
113
+ { name: "Hiker", pos: { x: 0, y: 11 } },
114
+ { name: "Faceless Joker", pos: { x: 1, y: 11 } },
115
+ { name: "Green Joker", pos: { x: 2, y: 11 } },
116
+ { name: "Superposition", pos: { x: 3, y: 11 } },
117
+ { name: "To Do List", pos: { x: 4, y: 11 } },
118
+ { name: "Cavendish", pos: { x: 5, y: 11 } },
119
+ { name: "Card Sharp", pos: { x: 6, y: 11 } },
120
+ { name: "Red Card", pos: { x: 7, y: 11 } },
121
+ { name: "Madness", pos: { x: 8, y: 11 } },
122
+ { name: "Square Joker", pos: { x: 9, y: 11 } },
123
+ { name: "Seance", pos: { x: 0, y: 12 } },
124
+ { name: "Riff-raff", pos: { x: 1, y: 12 } },
125
+ { name: "Vampire", pos: { x: 2, y: 12 } },
126
+ { name: "Shortcut", pos: { x: 3, y: 12 } },
127
+ { name: "Hologram", pos: { x: 4, y: 12 } },
128
+ { name: "Vagabond", pos: { x: 5, y: 12 } },
129
+ { name: "Baron", pos: { x: 6, y: 12 } },
130
+ { name: "Cloud 9", pos: { x: 7, y: 12 } },
131
+ { name: "Rocket", pos: { x: 8, y: 12 } },
132
+ { name: "Obelisk", pos: { x: 9, y: 12 } },
133
+ { name: "Midas Mask", pos: { x: 0, y: 13 } },
134
+ { name: "Luchador", pos: { x: 1, y: 13 } },
135
+ { name: "Photograph", pos: { x: 2, y: 13 } },
136
+ { name: "Gift Card", pos: { x: 3, y: 13 } },
137
+ { name: "Turtle Bean", pos: { x: 4, y: 13 } },
138
+ { name: "Erosion", pos: { x: 5, y: 13 } },
139
+ { name: "Reserved Parking", pos: { x: 6, y: 13 } },
140
+ { name: "Mail In Rebate", pos: { x: 7, y: 13 } },
141
+ { name: "To the Moon", pos: { x: 8, y: 13 } },
142
+ { name: "Hallucination", pos: { x: 9, y: 13 } },
143
+ { name: "Fortune Teller", pos: { x: 7, y: 5 } },
144
+ { name: "Juggler", pos: { x: 0, y: 1 } },
145
+ { name: "Drunkard", pos: { x: 1, y: 1 } },
146
+ { name: "Stone Joker", pos: { x: 9, y: 0 } },
147
+ { name: "Golden Joker", pos: { x: 9, y: 2 } },
148
+ { name: "Lucky Cat", pos: { x: 5, y: 14 } },
149
+ { name: "Baseball Card", pos: { x: 6, y: 14 } },
150
+ { name: "Bull", pos: { x: 7, y: 14 } },
151
+ { name: "Diet Cola", pos: { x: 8, y: 14 } },
152
+ { name: "Trading Card", pos: { x: 9, y: 14 } },
153
+ { name: "Flash Card", pos: { x: 0, y: 15 } },
154
+ { name: "Popcorn", pos: { x: 1, y: 15 } },
155
+ { name: "Spare Trousers", pos: { x: 4, y: 15 } },
156
+ { name: "Ancient Joker", pos: { x: 7, y: 15 } },
157
+ { name: "Ramen", pos: { x: 2, y: 15 } },
158
+ { name: "Walkie Talkie", pos: { x: 8, y: 15 } },
159
+ { name: "Seltzer", pos: { x: 3, y: 15 } },
160
+ { name: "Castle", pos: { x: 9, y: 15 } },
161
+ { name: "Smiley Face", pos: { x: 6, y: 15 } },
162
+ { name: "Campfire", pos: { x: 5, y: 15 } },
163
+ { name: "Golden Ticket", pos: { x: 5, y: 3 } },
164
+ { name: "Mr. Bones", pos: { x: 3, y: 4 } },
165
+ { name: "Acrobat", pos: { x: 2, y: 1 } },
166
+ { name: "Sock and Buskin", pos: { x: 3, y: 1 } },
167
+ { name: "Swashbuckler", pos: { x: 9, y: 5 } },
168
+ { name: "Troubadour", pos: { x: 0, y: 2 } },
169
+ { name: "Certificate", pos: { x: 8, y: 8 } },
170
+ { name: "Smeared Joker", pos: { x: 4, y: 6 } },
171
+ { name: "Throwback", pos: { x: 5, y: 7 } },
172
+ { name: "Hanging Chad", pos: { x: 9, y: 6 } },
173
+ { name: "Rough Gem", pos: { x: 9, y: 7 } },
174
+ { name: "Bloodstone", pos: { x: 0, y: 8 } },
175
+ { name: "Arrowhead", pos: { x: 1, y: 8 } },
176
+ { name: "Onyx Agate", pos: { x: 2, y: 8 } },
177
+ { name: "Glass Joker", pos: { x: 1, y: 3 } },
178
+ { name: "Showman", pos: { x: 6, y: 5 } },
179
+ { name: "Flower Pot", pos: { x: 0, y: 6 } },
180
+ { name: "Blueprint", pos: { x: 0, y: 3 } },
181
+ { name: "Wee Joker", pos: { x: 0, y: 4 } },
182
+ { name: "Merry Andy", pos: { x: 8, y: 0 } },
183
+ { name: "Oops! All 6s", pos: { x: 5, y: 6 } },
184
+ { name: "The Idol", pos: { x: 6, y: 7 } },
185
+ { name: "Seeing Double", pos: { x: 4, y: 4 } },
186
+ { name: "Matador", pos: { x: 4, y: 5 } },
187
+ { name: "Hit the Road", pos: { x: 8, y: 5 } },
188
+ { name: "The Duo", pos: { x: 5, y: 4 } },
189
+ { name: "The Trio", pos: { x: 6, y: 4 } },
190
+ { name: "The Family", pos: { x: 7, y: 4 } },
191
+ { name: "The Order", pos: { x: 8, y: 4 } },
192
+ { name: "The Tribe", pos: { x: 9, y: 4 } },
193
+ { name: "Stuntman", pos: { x: 8, y: 6 } },
194
+ { name: "Invisible Joker", pos: { x: 1, y: 7 } },
195
+ { name: "Brainstorm", pos: { x: 7, y: 7 } },
196
+ { name: "Satellite", pos: { x: 8, y: 7 } },
197
+ { name: "Shoot the Moon", pos: { x: 2, y: 6 } },
198
+ { name: "Drivers License", pos: { x: 0, y: 7 } },
199
+ { name: "Cartomancer", pos: { x: 7, y: 3 } },
200
+ { name: "Astronomer", pos: { x: 2, y: 7 } },
201
+ { name: "Burnt Joker", pos: { x: 3, y: 7 } },
202
+ { name: "Bootstraps", pos: { x: 9, y: 8 } },
203
+ { name: "Canio", pos: { x: 3, y: 8 } },
204
+ { name: "Triboulet", pos: { x: 4, y: 8 } },
205
+ { name: "Yorick", pos: { x: 5, y: 8 } },
206
+ { name: "Chicot", pos: { x: 6, y: 8 } },
207
+ { name: "Perkeo", pos: { x: 7, y: 8 } }
208
+ ], t = [
209
+ { name: "Hologram", pos: { x: 2, y: 9 }, animated: !0 },
210
+ { name: "Canio", pos: { x: 3, y: 9 }, animated: !0 },
211
+ { name: "Triboulet", pos: { x: 4, y: 9 }, animated: !0 },
212
+ { name: "Yorick", pos: { x: 5, y: 9 }, animated: !0 },
213
+ { name: "Chicot", pos: { x: 6, y: 9 }, animated: !0 },
214
+ { name: "Perkeo", pos: { x: 7, y: 9 }, animated: !0 }
215
+ ], x = [
216
+ { name: "The Soul", pos: { x: 0, y: 1 }, animated: !0 }
217
+ ], l = [
218
+ { name: "The Fool", pos: { x: 0, y: 0 } },
219
+ { name: "The Magician", pos: { x: 1, y: 0 } },
220
+ { name: "The High Priestess", pos: { x: 2, y: 0 } },
221
+ { name: "The Empress", pos: { x: 3, y: 0 } },
222
+ { name: "The Emperor", pos: { x: 4, y: 0 } },
223
+ { name: "The Hierophant", pos: { x: 5, y: 0 } },
224
+ { name: "The Lovers", pos: { x: 6, y: 0 } },
225
+ { name: "The Chariot", pos: { x: 7, y: 0 } },
226
+ { name: "Justice", pos: { x: 8, y: 0 } },
227
+ { name: "The Hermit", pos: { x: 9, y: 0 } },
228
+ { name: "The Wheel of Fortune", pos: { x: 0, y: 1 } },
229
+ { name: "Strength", pos: { x: 1, y: 1 } },
230
+ { name: "The Hanged Man", pos: { x: 2, y: 1 } },
231
+ { name: "Death", pos: { x: 3, y: 1 } },
232
+ { name: "Temperance", pos: { x: 4, y: 1 } },
233
+ { name: "The Devil", pos: { x: 5, y: 1 } },
234
+ { name: "The Tower", pos: { x: 6, y: 1 } },
235
+ { name: "The Star", pos: { x: 7, y: 1 } },
236
+ { name: "The Moon", pos: { x: 8, y: 1 } },
237
+ { name: "The Sun", pos: { x: 9, y: 1 } },
238
+ { name: "Judgement", pos: { x: 0, y: 2 } },
239
+ { name: "The World", pos: { x: 1, y: 2 } },
240
+ { name: "Mercury", pos: { x: 0, y: 3 } },
241
+ { name: "Venus", pos: { x: 1, y: 3 } },
242
+ { name: "Earth", pos: { x: 2, y: 3 } },
243
+ { name: "Mars", pos: { x: 3, y: 3 } },
244
+ { name: "Jupiter", pos: { x: 4, y: 3 } },
245
+ { name: "Saturn", pos: { x: 5, y: 3 } },
246
+ { name: "Uranus", pos: { x: 6, y: 3 } },
247
+ { name: "Neptune", pos: { x: 7, y: 3 } },
248
+ { name: "Pluto", pos: { x: 8, y: 3 } },
249
+ { name: "Planet X", pos: { x: 9, y: 2 } },
250
+ { name: "Ceres", pos: { x: 8, y: 2 } },
251
+ { name: "Eris", pos: { x: 3, y: 2 } },
252
+ { name: "Familiar", pos: { x: 0, y: 4 } },
253
+ { name: "Grim", pos: { x: 1, y: 4 } },
254
+ { name: "Incantation", pos: { x: 2, y: 4 } },
255
+ { name: "Talisman", pos: { x: 3, y: 4 } },
256
+ { name: "Aura", pos: { x: 4, y: 4 } },
257
+ { name: "Wraith", pos: { x: 5, y: 4 } },
258
+ { name: "Sigil", pos: { x: 6, y: 4 } },
259
+ { name: "Ouija", pos: { x: 7, y: 4 } },
260
+ { name: "Ectoplasm", pos: { x: 8, y: 4 } },
261
+ { name: "Immolate", pos: { x: 9, y: 4 } },
262
+ { name: "Ankh", pos: { x: 0, y: 5 } },
263
+ { name: "Deja Vu", pos: { x: 1, y: 5 } },
264
+ { name: "Hex", pos: { x: 2, y: 5 } },
265
+ { name: "Trance", pos: { x: 3, y: 5 } },
266
+ { name: "Medium", pos: { x: 4, y: 5 } },
267
+ { name: "Cryptid", pos: { x: 5, y: 5 } },
268
+ { name: "The Soul", pos: { x: 2, y: 2 } },
269
+ { name: "Black Hole", pos: { x: 9, y: 3 } }
270
+ ], i = [
271
+ { name: "Uncommon Tag", pos: { x: 0, y: 0 } },
272
+ { name: "Rare Tag", pos: { x: 1, y: 0 } },
273
+ { name: "Negative Tag", pos: { x: 2, y: 0 } },
274
+ { name: "Foil Tag", pos: { x: 3, y: 0 } },
275
+ { name: "Holographic Tag", pos: { x: 0, y: 1 } },
276
+ { name: "Polychrome Tag", pos: { x: 1, y: 1 } },
277
+ { name: "Investment Tag", pos: { x: 2, y: 1 } },
278
+ { name: "Voucher Tag", pos: { x: 3, y: 1 } },
279
+ { name: "Boss Tag", pos: { x: 0, y: 2 } },
280
+ { name: "Standard Tag", pos: { x: 1, y: 2 } },
281
+ { name: "Charm Tag", pos: { x: 2, y: 2 } },
282
+ { name: "Meteor Tag", pos: { x: 3, y: 2 } },
283
+ { name: "Buffoon Tag", pos: { x: 4, y: 2 } },
284
+ { name: "Handy Tag", pos: { x: 1, y: 3 } },
285
+ { name: "Garbage Tag", pos: { x: 2, y: 3 } },
286
+ { name: "Ethereal Tag", pos: { x: 3, y: 3 } },
287
+ { name: "Coupon Tag", pos: { x: 4, y: 0 } },
288
+ { name: "Double Tag", pos: { x: 5, y: 0 } },
289
+ { name: "Juggle Tag", pos: { x: 5, y: 1 } },
290
+ { name: "D6 Tag", pos: { x: 5, y: 3 } },
291
+ { name: "Top-up Tag", pos: { x: 4, y: 1 } },
292
+ { name: "Speed Tag", pos: { x: 0, y: 3 } },
293
+ { name: "Orbital Tag", pos: { x: 5, y: 2 } },
294
+ { name: "Economy Tag", pos: { x: 4, y: 3 } }
295
+ ], c = [
296
+ { name: "Overstock", pos: { x: 0, y: 0 } },
297
+ { name: "Clearance Sale", pos: { x: 3, y: 0 } },
298
+ { name: "Hone", pos: { x: 4, y: 0 } },
299
+ { name: "Reroll Surplus", pos: { x: 0, y: 2 } },
300
+ { name: "Crystal Ball", pos: { x: 2, y: 2 } },
301
+ { name: "Telescope", pos: { x: 3, y: 2 } },
302
+ { name: "Grabber", pos: { x: 5, y: 0 } },
303
+ { name: "Wasteful", pos: { x: 6, y: 0 } },
304
+ { name: "Tarot Merchant", pos: { x: 1, y: 0 } },
305
+ { name: "Planet Merchant", pos: { x: 2, y: 0 } },
306
+ { name: "Seed Money", pos: { x: 1, y: 2 } },
307
+ { name: "Blank", pos: { x: 7, y: 0 } },
308
+ { name: "Magic Trick", pos: { x: 4, y: 2 } },
309
+ { name: "Hieroglyph", pos: { x: 5, y: 2 } },
310
+ { name: "Director's Cut", pos: { x: 6, y: 2 } },
311
+ { name: "Paint Brush", pos: { x: 7, y: 2 } },
312
+ { name: "Overstock Plus", pos: { x: 0, y: 1 } },
313
+ { name: "Liquidation", pos: { x: 3, y: 1 } },
314
+ { name: "Glow Up", pos: { x: 4, y: 1 } },
315
+ { name: "Reroll Glut", pos: { x: 0, y: 3 } },
316
+ { name: "Omen Globe", pos: { x: 2, y: 3 } },
317
+ { name: "Observatory", pos: { x: 3, y: 3 } },
318
+ { name: "Nacho Tong", pos: { x: 5, y: 1 } },
319
+ { name: "Recyclomancy", pos: { x: 6, y: 1 } },
320
+ { name: "Tarot Tycoon", pos: { x: 1, y: 1 } },
321
+ { name: "Planet Tycoon", pos: { x: 2, y: 1 } },
322
+ { name: "Money Tree", pos: { x: 1, y: 3 } },
323
+ { name: "Antimatter", pos: { x: 7, y: 1 } },
324
+ { name: "Illusion", pos: { x: 4, y: 3 } },
325
+ { name: "Petroglyph", pos: { x: 5, y: 3 } },
326
+ { name: "Retcon", pos: { x: 6, y: 3 } },
327
+ { name: "Palette", pos: { x: 7, y: 3 } }
328
+ ], h = [
329
+ { name: "Small Blind", pos: { x: 0, y: 0 } },
330
+ { name: "Big Blind", pos: { x: 0, y: 1 } },
331
+ { name: "The Ox", pos: { x: 0, y: 2 } },
332
+ { name: "The Hook", pos: { x: 0, y: 7 } },
333
+ { name: "The Mouth", pos: { x: 0, y: 18 } },
334
+ { name: "The Fish", pos: { x: 0, y: 5 } },
335
+ { name: "The Club", pos: { x: 0, y: 4 } },
336
+ { name: "The Manacle", pos: { x: 0, y: 8 } },
337
+ { name: "The Tooth", pos: { x: 0, y: 22 } },
338
+ { name: "The Wall", pos: { x: 0, y: 9 } },
339
+ { name: "The House", pos: { x: 0, y: 3 } },
340
+ { name: "The Mark", pos: { x: 0, y: 23 } },
341
+ { name: "Cerulean Bell", pos: { x: 0, y: 26 } },
342
+ { name: "The Wheel", pos: { x: 0, y: 10 } },
343
+ { name: "The Arm", pos: { x: 0, y: 11 } },
344
+ { name: "The Psychic", pos: { x: 0, y: 12 } },
345
+ { name: "The Goad", pos: { x: 0, y: 13 } },
346
+ { name: "The Water", pos: { x: 0, y: 14 } },
347
+ { name: "The Eye", pos: { x: 0, y: 17 } },
348
+ { name: "The Plant", pos: { x: 0, y: 19 } },
349
+ { name: "The Needle", pos: { x: 0, y: 20 } },
350
+ { name: "The Head", pos: { x: 0, y: 21 } },
351
+ { name: "Verdant Leaf", pos: { x: 0, y: 28 } },
352
+ { name: "Violet Vessel", pos: { x: 0, y: 29 } },
353
+ { name: "The Window", pos: { x: 0, y: 6 } },
354
+ { name: "The Serpent", pos: { x: 0, y: 15 } },
355
+ { name: "The Pillar", pos: { x: 0, y: 16 } },
356
+ { name: "The Flint", pos: { x: 0, y: 24 } },
357
+ { name: "Amber Acorn", pos: { x: 0, y: 27 } },
358
+ { name: "Crimson Heart", pos: { x: 0, y: 25 } }
359
+ ], u = [
360
+ { name: "Arcana Pack", pos: { x: 0, y: 0 } },
361
+ { name: "Celestial Pack", pos: { x: 0, y: 1 } },
362
+ { name: "Jumbo Arcana Pack", pos: { x: 0, y: 2 } },
363
+ { name: "Mega Arcana Pack", pos: { x: 2, y: 2 } },
364
+ { name: "Jumbo Celestial Pack", pos: { x: 0, y: 3 } },
365
+ { name: "Mega Celestial Pack", pos: { x: 2, y: 3 } },
366
+ { name: "Spectral Pack", pos: { x: 0, y: 4 } },
367
+ { name: "Jumbo Spectral Pack", pos: { x: 2, y: 4 } },
368
+ { name: "Mega Spectral Pack", pos: { x: 3, y: 4 } },
369
+ { name: "Standard Pack", pos: { x: 0, y: 6 } },
370
+ { name: "Jumbo Standard Pack", pos: { x: 0, y: 7 } },
371
+ { name: "Mega Standard Pack", pos: { x: 2, y: 7 } },
372
+ { name: "Buffoon Pack", pos: { x: 0, y: 8 } },
373
+ { name: "Jumbo Buffoon Pack", pos: { x: 2, y: 8 } },
374
+ { name: "Mega Buffoon Pack", pos: { x: 3, y: 8 } }
375
+ ], v = {
376
+ Foil: 1,
377
+ Holographic: 2,
378
+ Polychrome: 3
379
+ }, F = {
380
+ Eternal: { x: 0, y: 0 },
381
+ Perishable: { x: 0, y: 2 },
382
+ Rental: { x: 1, y: 2 }
383
+ }, G = {
384
+ 2: 0,
385
+ 3: 1,
386
+ 4: 2,
387
+ 5: 3,
388
+ 6: 4,
389
+ 7: 5,
390
+ 8: 6,
391
+ 9: 7,
392
+ 10: 8,
393
+ Jack: 9,
394
+ Queen: 10,
395
+ King: 11,
396
+ Ace: 12
397
+ }, O = {
398
+ Hearts: 0,
399
+ Clubs: 1,
400
+ Diamonds: 2,
401
+ Spades: 3
402
+ }, _ = {
403
+ Bonus: { x: 1, y: 1 },
404
+ Mult: { x: 2, y: 1 },
405
+ Wild: { x: 3, y: 1 },
406
+ Glass: { x: 5, y: 1 },
407
+ Steel: { x: 6, y: 1 },
408
+ Stone: { x: 5, y: 0 },
409
+ Gold: { x: 6, y: 0 },
410
+ Lucky: { x: 4, y: 1 }
411
+ }, I = {
412
+ "Gold Seal": { x: 2, y: 0 },
413
+ "Purple Seal": { x: 4, y: 4 },
414
+ "Red Seal": { x: 5, y: 4 },
415
+ "Blue Seal": { x: 6, y: 4 },
416
+ Gold: { x: 2, y: 0 },
417
+ Purple: { x: 4, y: 4 },
418
+ Red: { x: 5, y: 4 },
419
+ Blue: { x: 6, y: 4 }
420
+ };
421
+ new Map(y.map((e) => [e.name, e]));
422
+ new Map(t.map((e) => [e.name, e]));
423
+ new Map(l.map((e) => [e.name, e]));
424
+ new Map(x.map((e) => [e.name, e]));
425
+ new Map(i.map((e) => [e.name, e]));
426
+ new Map(c.map((e) => [e.name, e]));
427
+ new Map(h.map((e) => [e.name, e]));
428
+ new Map(u.map((e) => [e.name, e]));
429
+ const V = {
430
+ Jokers: { cols: 10, rows: 16, assetKey: "jokers" },
431
+ Tarots: { cols: 10, rows: 6, assetKey: "tarots" },
432
+ Vouchers: { cols: 9, rows: 4, assetKey: "vouchers" },
433
+ Boosters: { cols: 4, rows: 9, assetKey: "boosters" },
434
+ BlindChips: { cols: 21, rows: 31, assetKey: "blinds" },
435
+ tags: { cols: 6, rows: 5, assetKey: "tags" },
436
+ Enhancers: { cols: 7, rows: 5, assetKey: "enhancers" },
437
+ Editions: { cols: 5, rows: 1, assetKey: "editions" },
438
+ Stakes: { cols: 5, rows: 2, assetKey: "stakes" },
439
+ Decks: { cols: 13, rows: 4, assetKey: "deck" }
440
+ }, m = (e) => e.toLowerCase().replace(/\s+/g, ""), A = (e) => e.replace(/^(Joker|Tarot|Planet|Voucher|Pack|Edition|Tag) [|:] /i, "").trim(), p = /* @__PURE__ */ new Map();
441
+ function s(e, o) {
442
+ for (const n of e) {
443
+ if (!n.name || !n.pos) continue;
444
+ const r = m(n.name);
445
+ p.has(r) || p.set(r, { pos: n.pos, type: o });
446
+ }
447
+ }
448
+ s(y, "Jokers");
449
+ s(t, "Jokers");
450
+ s(l, "Tarots");
451
+ s(x ?? [], "Tarots");
452
+ s(c, "Vouchers");
453
+ s(h, "BlindChips");
454
+ s(i, "tags");
455
+ s(u ?? [], "Boosters");
456
+ const U = {
457
+ Jokers: { x: 9, y: 9 },
458
+ // grey card back (legendary face row)
459
+ Tarots: { x: 4, y: 2 },
460
+ // blank consumable
461
+ Vouchers: { x: 8, y: 2 },
462
+ // mystery voucher
463
+ Boosters: { x: 0, y: 5 },
464
+ // grey empty pack
465
+ tags: { x: 3, y: 4 },
466
+ // grey ? tag
467
+ BlindChips: { x: 0, y: 30 }
468
+ // grey ? blind
469
+ };
470
+ function L(e) {
471
+ return { pos: U[e] ?? { x: 0, y: 0 }, type: e };
472
+ }
473
+ function D(e) {
474
+ return p.get(m(A(e))) ?? p.get(m(e)) ?? null;
475
+ }
476
+ function K(e, o = "Jokers") {
477
+ return D(e) ?? L(o);
478
+ }
479
+ export {
480
+ u as B,
481
+ x as C,
482
+ _ as E,
483
+ b as J,
484
+ G as R,
485
+ I as S,
486
+ i as T,
487
+ c as V,
488
+ O as a,
489
+ h as b,
490
+ v as c,
491
+ y as d,
492
+ t as e,
493
+ H as f,
494
+ F as g,
495
+ l as h,
496
+ D as i,
497
+ K as j,
498
+ V as k,
499
+ R as r
500
+ };
501
+ //# sourceMappingURL=spriteMapper-gImEz0wa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spriteMapper-gImEz0wa.js","sources":["../../assets/8BitDeck.png","../../assets/BlindChips.png","../../assets/Boosters.png","../../assets/Editions.png","../../assets/Enhancers.png","../../assets/Jokers.png","../../assets/Tarots.png","../../assets/Vouchers.png","../../assets/stickers.png","../../assets/tags.png","../../assets/balatro-stake-chips.png","../../assets/fonts/m6x11plus.ttf","../../src/assets.ts","../../src/sprites/spriteData.ts","../../src/sprites/spriteMapper.ts"],"sourcesContent":["export default import.meta.ROLLUP_FILE_URL_BGIFyDMr;","export default import.meta.ROLLUP_FILE_URL_DMh_QeRL;","export default import.meta.ROLLUP_FILE_URL_COx3MZw_;","export default import.meta.ROLLUP_FILE_URL_W7a1Wa6Z;","export default import.meta.ROLLUP_FILE_URL_BIpMstho;","export default import.meta.ROLLUP_FILE_URL_Du2tizvn;","export default import.meta.ROLLUP_FILE_URL_CookWv8k;","export default import.meta.ROLLUP_FILE_URL_DizuAhlq;","export default import.meta.ROLLUP_FILE_URL_Cf6HljDE;","export default import.meta.ROLLUP_FILE_URL_CA9fdRUV;","export default import.meta.ROLLUP_FILE_URL_BJlY5yw6;","export default import.meta.ROLLUP_FILE_URL_CA3bFlPJ;","import deckUrl from \"../assets/8BitDeck.png\";\nimport blindsUrl from \"../assets/BlindChips.png\";\nimport boostersUrl from \"../assets/Boosters.png\";\nimport editionsUrl from \"../assets/Editions.png\";\nimport enhancersUrl from \"../assets/Enhancers.png\";\nimport jokersUrl from \"../assets/Jokers.png\";\nimport tarotsUrl from \"../assets/Tarots.png\";\nimport vouchersUrl from \"../assets/Vouchers.png\";\nimport stickersUrl from \"../assets/stickers.png\";\nimport tagsUrl from \"../assets/tags.png\";\nimport stakesUrl from \"../assets/balatro-stake-chips.png\";\nimport fontUrl from \"../assets/fonts/m6x11plus.ttf\";\n\nexport const JAML_ASSET_FILES = {\n deck: \"8BitDeck.png\",\n blinds: \"BlindChips.png\",\n boosters: \"Boosters.png\",\n editions: \"Editions.png\",\n enhancers: \"Enhancers.png\",\n jokers: \"Jokers.png\",\n tarots: \"Tarots.png\",\n vouchers: \"Vouchers.png\",\n stickers: \"stickers.png\",\n tags: \"tags.png\",\n stakes: \"balatro-stake-chips.png\",\n font: \"fonts/m6x11plus.ttf\",\n} as const;\n\nexport type JamlAssetKey = keyof typeof JAML_ASSET_FILES;\nexport type JamlAssetFile = (typeof JAML_ASSET_FILES)[JamlAssetKey];\n\nconst ASSET_URLS: Record<JamlAssetKey, string> = {\n deck: deckUrl,\n blinds: blindsUrl,\n boosters: boostersUrl,\n editions: editionsUrl,\n enhancers: enhancersUrl,\n jokers: jokersUrl,\n tarots: tarotsUrl,\n vouchers: vouchersUrl,\n stickers: stickersUrl,\n tags: tagsUrl,\n stakes: stakesUrl,\n font: fontUrl,\n};\n\nexport function resolveJamlAssetUrl(asset: JamlAssetKey): string {\n const url = ASSET_URLS[asset];\n if (!url) {\n throw new Error(`Unknown Jaml asset '${asset}'.`);\n }\n return url;\n}\n","/**\n * Sprite sheet position data for all Balatro game elements.\n * Extracted from Blueprint's const.ts — maps item names to {x, y} grid positions\n * within their respective sprite sheets.\n */\n\nimport { JAML_ASSET_FILES, resolveJamlAssetUrl, type JamlAssetKey } from \"../assets.js\";\n\nexport interface SpritePos {\n x: number;\n y: number;\n}\n\nexport interface SpriteEntry {\n name: string;\n pos: SpritePos;\n animated?: boolean;\n}\n\nexport interface SpriteSheetInfo {\n readonly asset: JamlAssetKey;\n readonly fileName: string;\n readonly columns: number;\n readonly rows: number;\n readonly src: string;\n}\n\nfunction defineSpriteSheet(asset: JamlAssetKey, columns: number, rows: number): SpriteSheetInfo {\n return {\n asset,\n fileName: JAML_ASSET_FILES[asset],\n columns,\n rows,\n get src() {\n return resolveJamlAssetUrl(asset);\n },\n };\n}\n\n/** Sprite sheet grid dimensions */\nexport const SPRITE_SHEETS = {\n jokers: defineSpriteSheet(\"jokers\", 10, 16),\n tarots: defineSpriteSheet(\"tarots\", 10, 6),\n deck: defineSpriteSheet(\"deck\", 13, 4),\n enhancers: defineSpriteSheet(\"enhancers\", 7, 5),\n editions: defineSpriteSheet(\"editions\", 5, 1),\n stickers: defineSpriteSheet(\"stickers\", 5, 3),\n blinds: defineSpriteSheet(\"blinds\", 21, 31),\n vouchers: defineSpriteSheet(\"vouchers\", 9, 4),\n tags: defineSpriteSheet(\"tags\", 6, 5),\n boosters: defineSpriteSheet(\"boosters\", 4, 9),\n stakes: defineSpriteSheet(\"stakes\", 5, 2),\n} as const;\n\nexport const JOKERS: SpriteEntry[] = [\n { name: \"Joker\", pos: { x: 0, y: 0 } }, { name: \"Greedy Joker\", pos: { x: 6, y: 1 } }, { name: \"Lusty Joker\", pos: { x: 7, y: 1 } }, { name: \"Wrathful Joker\", pos: { x: 8, y: 1 } }, { name: \"Gluttonous Joker\", pos: { x: 9, y: 1 } }, { name: \"Jolly Joker\", pos: { x: 2, y: 0 } }, { name: \"Zany Joker\", pos: { x: 3, y: 0 } }, { name: \"Mad Joker\", pos: { x: 4, y: 0 } }, { name: \"Crazy Joker\", pos: { x: 5, y: 0 } }, { name: \"Droll Joker\", pos: { x: 6, y: 0 } }, { name: \"Sly Joker\", pos: { x: 0, y: 14 } }, { name: \"Wily Joker\", pos: { x: 1, y: 14 } }, { name: \"Clever Joker\", pos: { x: 2, y: 14 } }, { name: \"Devious Joker\", pos: { x: 3, y: 14 } }, { name: \"Crafty Joker\", pos: { x: 4, y: 14 } }, { name: \"Half Joker\", pos: { x: 7, y: 0 } }, { name: \"Joker Stencil\", pos: { x: 2, y: 5 } }, { name: \"Four Fingers\", pos: { x: 6, y: 6 } }, { name: \"Mime\", pos: { x: 4, y: 1 } }, { name: \"Credit Card\", pos: { x: 5, y: 1 } }, { name: \"Ceremonial Dagger\", pos: { x: 5, y: 5 } }, { name: \"Banner\", pos: { x: 1, y: 2 } }, { name: \"Mystic Summit\", pos: { x: 2, y: 2 } }, { name: \"Marble Joker\", pos: { x: 3, y: 2 } }, { name: \"Loyalty Card\", pos: { x: 4, y: 2 } }, { name: \"8 Ball\", pos: { x: 0, y: 5 } }, { name: \"Misprint\", pos: { x: 6, y: 2 } }, { name: \"Dusk\", pos: { x: 4, y: 7 } }, { name: \"Raised Fist\", pos: { x: 8, y: 2 } }, { name: \"Chaos the Clown\", pos: { x: 1, y: 0 } }, { name: \"Fibonacci\", pos: { x: 1, y: 5 } }, { name: \"Steel Joker\", pos: { x: 7, y: 2 } }, { name: \"Scary Face\", pos: { x: 2, y: 3 } }, { name: \"Abstract Joker\", pos: { x: 3, y: 3 } }, { name: \"Delayed Gratification\", pos: { x: 4, y: 3 } }, { name: \"Hack\", pos: { x: 5, y: 2 } }, { name: \"Pareidolia\", pos: { x: 6, y: 3 } }, { name: \"Gros Michel\", pos: { x: 7, y: 6 } }, { name: \"Even Steven\", pos: { x: 8, y: 3 } }, { name: \"Odd Todd\", pos: { x: 9, y: 3 } }, { name: \"Scholar\", pos: { x: 3, y: 6 } }, { name: \"Business Card\", pos: { x: 1, y: 4 } }, { name: \"Supernova\", pos: { x: 2, y: 4 } }, { name: \"Ride the Bus\", pos: { x: 1, y: 6 } }, { name: \"Space Joker\", pos: { x: 3, y: 5 } }, { name: \"Egg\", pos: { x: 0, y: 10 } }, { name: \"Burglar\", pos: { x: 1, y: 10 } }, { name: \"Blackboard\", pos: { x: 2, y: 10 } }, { name: \"Runner\", pos: { x: 3, y: 10 } }, { name: \"Ice Cream\", pos: { x: 4, y: 10 } }, { name: \"DNA\", pos: { x: 5, y: 10 } }, { name: \"Splash\", pos: { x: 6, y: 10 } }, { name: \"Blue Joker\", pos: { x: 7, y: 10 } }, { name: \"Sixth Sense\", pos: { x: 8, y: 10 } }, { name: \"Constellation\", pos: { x: 9, y: 10 } }, { name: \"Hiker\", pos: { x: 0, y: 11 } }, { name: \"Faceless Joker\", pos: { x: 1, y: 11 } }, { name: \"Green Joker\", pos: { x: 2, y: 11 } }, { name: \"Superposition\", pos: { x: 3, y: 11 } }, { name: \"To Do List\", pos: { x: 4, y: 11 } }, { name: \"Cavendish\", pos: { x: 5, y: 11 } }, { name: \"Card Sharp\", pos: { x: 6, y: 11 } }, { name: \"Red Card\", pos: { x: 7, y: 11 } }, { name: \"Madness\", pos: { x: 8, y: 11 } }, { name: \"Square Joker\", pos: { x: 9, y: 11 } }, { name: \"Seance\", pos: { x: 0, y: 12 } }, { name: \"Riff-raff\", pos: { x: 1, y: 12 } }, { name: \"Vampire\", pos: { x: 2, y: 12 } }, { name: \"Shortcut\", pos: { x: 3, y: 12 } }, { name: \"Hologram\", pos: { x: 4, y: 12 } }, { name: \"Vagabond\", pos: { x: 5, y: 12 } }, { name: \"Baron\", pos: { x: 6, y: 12 } }, { name: \"Cloud 9\", pos: { x: 7, y: 12 } }, { name: \"Rocket\", pos: { x: 8, y: 12 } }, { name: \"Obelisk\", pos: { x: 9, y: 12 } }, { name: \"Midas Mask\", pos: { x: 0, y: 13 } }, { name: \"Luchador\", pos: { x: 1, y: 13 } }, { name: \"Photograph\", pos: { x: 2, y: 13 } }, { name: \"Gift Card\", pos: { x: 3, y: 13 } }, { name: \"Turtle Bean\", pos: { x: 4, y: 13 } }, { name: \"Erosion\", pos: { x: 5, y: 13 } }, { name: \"Reserved Parking\", pos: { x: 6, y: 13 } }, { name: \"Mail In Rebate\", pos: { x: 7, y: 13 } }, { name: \"To the Moon\", pos: { x: 8, y: 13 } }, { name: \"Hallucination\", pos: { x: 9, y: 13 } }, { name: \"Fortune Teller\", pos: { x: 7, y: 5 } }, { name: \"Juggler\", pos: { x: 0, y: 1 } }, { name: \"Drunkard\", pos: { x: 1, y: 1 } }, { name: \"Stone Joker\", pos: { x: 9, y: 0 } }, { name: \"Golden Joker\", pos: { x: 9, y: 2 } }, { name: \"Lucky Cat\", pos: { x: 5, y: 14 } }, { name: \"Baseball Card\", pos: { x: 6, y: 14 } }, { name: \"Bull\", pos: { x: 7, y: 14 } }, { name: \"Diet Cola\", pos: { x: 8, y: 14 } }, { name: \"Trading Card\", pos: { x: 9, y: 14 } }, { name: \"Flash Card\", pos: { x: 0, y: 15 } }, { name: \"Popcorn\", pos: { x: 1, y: 15 } }, { name: \"Spare Trousers\", pos: { x: 4, y: 15 } }, { name: \"Ancient Joker\", pos: { x: 7, y: 15 } }, { name: \"Ramen\", pos: { x: 2, y: 15 } }, { name: \"Walkie Talkie\", pos: { x: 8, y: 15 } }, { name: \"Seltzer\", pos: { x: 3, y: 15 } }, { name: \"Castle\", pos: { x: 9, y: 15 } }, { name: \"Smiley Face\", pos: { x: 6, y: 15 } }, { name: \"Campfire\", pos: { x: 5, y: 15 } }, { name: \"Golden Ticket\", pos: { x: 5, y: 3 } }, { name: \"Mr. Bones\", pos: { x: 3, y: 4 } }, { name: \"Acrobat\", pos: { x: 2, y: 1 } }, { name: \"Sock and Buskin\", pos: { x: 3, y: 1 } }, { name: \"Swashbuckler\", pos: { x: 9, y: 5 } }, { name: \"Troubadour\", pos: { x: 0, y: 2 } }, { name: \"Certificate\", pos: { x: 8, y: 8 } }, { name: \"Smeared Joker\", pos: { x: 4, y: 6 } }, { name: \"Throwback\", pos: { x: 5, y: 7 } }, { name: \"Hanging Chad\", pos: { x: 9, y: 6 } }, { name: \"Rough Gem\", pos: { x: 9, y: 7 } }, { name: \"Bloodstone\", pos: { x: 0, y: 8 } }, { name: \"Arrowhead\", pos: { x: 1, y: 8 } }, { name: \"Onyx Agate\", pos: { x: 2, y: 8 } }, { name: \"Glass Joker\", pos: { x: 1, y: 3 } }, { name: \"Showman\", pos: { x: 6, y: 5 } }, { name: \"Flower Pot\", pos: { x: 0, y: 6 } }, { name: \"Blueprint\", pos: { x: 0, y: 3 } }, { name: \"Wee Joker\", pos: { x: 0, y: 4 } }, { name: \"Merry Andy\", pos: { x: 8, y: 0 } }, { name: \"Oops! All 6s\", pos: { x: 5, y: 6 } }, { name: \"The Idol\", pos: { x: 6, y: 7 } }, { name: \"Seeing Double\", pos: { x: 4, y: 4 } }, { name: \"Matador\", pos: { x: 4, y: 5 } }, { name: \"Hit the Road\", pos: { x: 8, y: 5 } }, { name: \"The Duo\", pos: { x: 5, y: 4 } }, { name: \"The Trio\", pos: { x: 6, y: 4 } }, { name: \"The Family\", pos: { x: 7, y: 4 } }, { name: \"The Order\", pos: { x: 8, y: 4 } }, { name: \"The Tribe\", pos: { x: 9, y: 4 } }, { name: \"Stuntman\", pos: { x: 8, y: 6 } }, { name: \"Invisible Joker\", pos: { x: 1, y: 7 } }, { name: \"Brainstorm\", pos: { x: 7, y: 7 } }, { name: \"Satellite\", pos: { x: 8, y: 7 } }, { name: \"Shoot the Moon\", pos: { x: 2, y: 6 } }, { name: \"Drivers License\", pos: { x: 0, y: 7 } }, { name: \"Cartomancer\", pos: { x: 7, y: 3 } }, { name: \"Astronomer\", pos: { x: 2, y: 7 } }, { name: \"Burnt Joker\", pos: { x: 3, y: 7 } }, { name: \"Bootstraps\", pos: { x: 9, y: 8 } }, { name: \"Canio\", pos: { x: 3, y: 8 } }, { name: \"Triboulet\", pos: { x: 4, y: 8 } }, { name: \"Yorick\", pos: { x: 5, y: 8 } }, { name: \"Chicot\", pos: { x: 6, y: 8 } }, { name: \"Perkeo\", pos: { x: 7, y: 8 } },\n];\n\nexport const JOKER_FACES: SpriteEntry[] = [\n { name: \"Hologram\", pos: { x: 2, y: 9 }, animated: true },\n { name: \"Canio\", pos: { x: 3, y: 9 }, animated: true },\n { name: \"Triboulet\", pos: { x: 4, y: 9 }, animated: true },\n { name: \"Yorick\", pos: { x: 5, y: 9 }, animated: true },\n { name: \"Chicot\", pos: { x: 6, y: 9 }, animated: true },\n { name: \"Perkeo\", pos: { x: 7, y: 9 }, animated: true },\n];\n\nexport const CONSUMABLE_FACES: SpriteEntry[] = [\n { name: \"The Soul\", pos: { x: 0, y: 1 }, animated: true },\n];\n\nexport const TAROTS_AND_PLANETS: SpriteEntry[] = [\n { name: \"The Fool\", pos: { x: 0, y: 0 } }, { name: \"The Magician\", pos: { x: 1, y: 0 } }, { name: \"The High Priestess\", pos: { x: 2, y: 0 } }, { name: \"The Empress\", pos: { x: 3, y: 0 } }, { name: \"The Emperor\", pos: { x: 4, y: 0 } }, { name: \"The Hierophant\", pos: { x: 5, y: 0 } }, { name: \"The Lovers\", pos: { x: 6, y: 0 } }, { name: \"The Chariot\", pos: { x: 7, y: 0 } }, { name: \"Justice\", pos: { x: 8, y: 0 } }, { name: \"The Hermit\", pos: { x: 9, y: 0 } }, { name: \"The Wheel of Fortune\", pos: { x: 0, y: 1 } }, { name: \"Strength\", pos: { x: 1, y: 1 } }, { name: \"The Hanged Man\", pos: { x: 2, y: 1 } }, { name: \"Death\", pos: { x: 3, y: 1 } }, { name: \"Temperance\", pos: { x: 4, y: 1 } }, { name: \"The Devil\", pos: { x: 5, y: 1 } }, { name: \"The Tower\", pos: { x: 6, y: 1 } }, { name: \"The Star\", pos: { x: 7, y: 1 } }, { name: \"The Moon\", pos: { x: 8, y: 1 } }, { name: \"The Sun\", pos: { x: 9, y: 1 } }, { name: \"Judgement\", pos: { x: 0, y: 2 } }, { name: \"The World\", pos: { x: 1, y: 2 } }, { name: \"Mercury\", pos: { x: 0, y: 3 } }, { name: \"Venus\", pos: { x: 1, y: 3 } }, { name: \"Earth\", pos: { x: 2, y: 3 } }, { name: \"Mars\", pos: { x: 3, y: 3 } }, { name: \"Jupiter\", pos: { x: 4, y: 3 } }, { name: \"Saturn\", pos: { x: 5, y: 3 } }, { name: \"Uranus\", pos: { x: 6, y: 3 } }, { name: \"Neptune\", pos: { x: 7, y: 3 } }, { name: \"Pluto\", pos: { x: 8, y: 3 } }, { name: \"Planet X\", pos: { x: 9, y: 2 } }, { name: \"Ceres\", pos: { x: 8, y: 2 } }, { name: \"Eris\", pos: { x: 3, y: 2 } }, { name: \"Familiar\", pos: { x: 0, y: 4 } }, { name: \"Grim\", pos: { x: 1, y: 4 } }, { name: \"Incantation\", pos: { x: 2, y: 4 } }, { name: \"Talisman\", pos: { x: 3, y: 4 } }, { name: \"Aura\", pos: { x: 4, y: 4 } }, { name: \"Wraith\", pos: { x: 5, y: 4 } }, { name: \"Sigil\", pos: { x: 6, y: 4 } }, { name: \"Ouija\", pos: { x: 7, y: 4 } }, { name: \"Ectoplasm\", pos: { x: 8, y: 4 } }, { name: \"Immolate\", pos: { x: 9, y: 4 } }, { name: \"Ankh\", pos: { x: 0, y: 5 } }, { name: \"Deja Vu\", pos: { x: 1, y: 5 } }, { name: \"Hex\", pos: { x: 2, y: 5 } }, { name: \"Trance\", pos: { x: 3, y: 5 } }, { name: \"Medium\", pos: { x: 4, y: 5 } }, { name: \"Cryptid\", pos: { x: 5, y: 5 } }, { name: \"The Soul\", pos: { x: 2, y: 2 } }, { name: \"Black Hole\", pos: { x: 9, y: 3 } },\n];\n\nexport const TAGS: SpriteEntry[] = [\n { name: \"Uncommon Tag\", pos: { x: 0, y: 0 } }, { name: \"Rare Tag\", pos: { x: 1, y: 0 } }, { name: \"Negative Tag\", pos: { x: 2, y: 0 } }, { name: \"Foil Tag\", pos: { x: 3, y: 0 } }, { name: \"Holographic Tag\", pos: { x: 0, y: 1 } }, { name: \"Polychrome Tag\", pos: { x: 1, y: 1 } }, { name: \"Investment Tag\", pos: { x: 2, y: 1 } }, { name: \"Voucher Tag\", pos: { x: 3, y: 1 } }, { name: \"Boss Tag\", pos: { x: 0, y: 2 } }, { name: \"Standard Tag\", pos: { x: 1, y: 2 } }, { name: \"Charm Tag\", pos: { x: 2, y: 2 } }, { name: \"Meteor Tag\", pos: { x: 3, y: 2 } }, { name: \"Buffoon Tag\", pos: { x: 4, y: 2 } }, { name: \"Handy Tag\", pos: { x: 1, y: 3 } }, { name: \"Garbage Tag\", pos: { x: 2, y: 3 } }, { name: \"Ethereal Tag\", pos: { x: 3, y: 3 } }, { name: \"Coupon Tag\", pos: { x: 4, y: 0 } }, { name: \"Double Tag\", pos: { x: 5, y: 0 } }, { name: \"Juggle Tag\", pos: { x: 5, y: 1 } }, { name: \"D6 Tag\", pos: { x: 5, y: 3 } }, { name: \"Top-up Tag\", pos: { x: 4, y: 1 } }, { name: \"Speed Tag\", pos: { x: 0, y: 3 } }, { name: \"Orbital Tag\", pos: { x: 5, y: 2 } }, { name: \"Economy Tag\", pos: { x: 4, y: 3 } },\n];\n\nexport const VOUCHERS: SpriteEntry[] = [\n { name: \"Overstock\", pos: { x: 0, y: 0 } }, { name: \"Clearance Sale\", pos: { x: 3, y: 0 } }, { name: \"Hone\", pos: { x: 4, y: 0 } }, { name: \"Reroll Surplus\", pos: { x: 0, y: 2 } }, { name: \"Crystal Ball\", pos: { x: 2, y: 2 } }, { name: \"Telescope\", pos: { x: 3, y: 2 } }, { name: \"Grabber\", pos: { x: 5, y: 0 } }, { name: \"Wasteful\", pos: { x: 6, y: 0 } }, { name: \"Tarot Merchant\", pos: { x: 1, y: 0 } }, { name: \"Planet Merchant\", pos: { x: 2, y: 0 } }, { name: \"Seed Money\", pos: { x: 1, y: 2 } }, { name: \"Blank\", pos: { x: 7, y: 0 } }, { name: \"Magic Trick\", pos: { x: 4, y: 2 } }, { name: \"Hieroglyph\", pos: { x: 5, y: 2 } }, { name: \"Director's Cut\", pos: { x: 6, y: 2 } }, { name: \"Paint Brush\", pos: { x: 7, y: 2 } }, { name: \"Overstock Plus\", pos: { x: 0, y: 1 } }, { name: \"Liquidation\", pos: { x: 3, y: 1 } }, { name: \"Glow Up\", pos: { x: 4, y: 1 } }, { name: \"Reroll Glut\", pos: { x: 0, y: 3 } }, { name: \"Omen Globe\", pos: { x: 2, y: 3 } }, { name: \"Observatory\", pos: { x: 3, y: 3 } }, { name: \"Nacho Tong\", pos: { x: 5, y: 1 } }, { name: \"Recyclomancy\", pos: { x: 6, y: 1 } }, { name: \"Tarot Tycoon\", pos: { x: 1, y: 1 } }, { name: \"Planet Tycoon\", pos: { x: 2, y: 1 } }, { name: \"Money Tree\", pos: { x: 1, y: 3 } }, { name: \"Antimatter\", pos: { x: 7, y: 1 } }, { name: \"Illusion\", pos: { x: 4, y: 3 } }, { name: \"Petroglyph\", pos: { x: 5, y: 3 } }, { name: \"Retcon\", pos: { x: 6, y: 3 } }, { name: \"Palette\", pos: { x: 7, y: 3 } },\n];\n\nexport const BOSSES: SpriteEntry[] = [\n { name: \"Small Blind\", pos: { x: 0, y: 0 } }, { name: \"Big Blind\", pos: { x: 0, y: 1 } }, { name: \"The Ox\", pos: { x: 0, y: 2 } }, { name: \"The Hook\", pos: { x: 0, y: 7 } }, { name: \"The Mouth\", pos: { x: 0, y: 18 } }, { name: \"The Fish\", pos: { x: 0, y: 5 } }, { name: \"The Club\", pos: { x: 0, y: 4 } }, { name: \"The Manacle\", pos: { x: 0, y: 8 } }, { name: \"The Tooth\", pos: { x: 0, y: 22 } }, { name: \"The Wall\", pos: { x: 0, y: 9 } }, { name: \"The House\", pos: { x: 0, y: 3 } }, { name: \"The Mark\", pos: { x: 0, y: 23 } }, { name: \"Cerulean Bell\", pos: { x: 0, y: 26 } }, { name: \"The Wheel\", pos: { x: 0, y: 10 } }, { name: \"The Arm\", pos: { x: 0, y: 11 } }, { name: \"The Psychic\", pos: { x: 0, y: 12 } }, { name: \"The Goad\", pos: { x: 0, y: 13 } }, { name: \"The Water\", pos: { x: 0, y: 14 } }, { name: \"The Eye\", pos: { x: 0, y: 17 } }, { name: \"The Plant\", pos: { x: 0, y: 19 } }, { name: \"The Needle\", pos: { x: 0, y: 20 } }, { name: \"The Head\", pos: { x: 0, y: 21 } }, { name: \"Verdant Leaf\", pos: { x: 0, y: 28 } }, { name: \"Violet Vessel\", pos: { x: 0, y: 29 } }, { name: \"The Window\", pos: { x: 0, y: 6 } }, { name: \"The Serpent\", pos: { x: 0, y: 15 } }, { name: \"The Pillar\", pos: { x: 0, y: 16 } }, { name: \"The Flint\", pos: { x: 0, y: 24 } }, { name: \"Amber Acorn\", pos: { x: 0, y: 27 } }, { name: \"Crimson Heart\", pos: { x: 0, y: 25 } },\n];\n\nexport const BOOSTER_PACKS: SpriteEntry[] = [\n { name: \"Arcana Pack\", pos: { x: 0, y: 0 } }, { name: \"Celestial Pack\", pos: { x: 0, y: 1 } }, { name: \"Jumbo Arcana Pack\", pos: { x: 0, y: 2 } }, { name: \"Mega Arcana Pack\", pos: { x: 2, y: 2 } }, { name: \"Jumbo Celestial Pack\", pos: { x: 0, y: 3 } }, { name: \"Mega Celestial Pack\", pos: { x: 2, y: 3 } }, { name: \"Spectral Pack\", pos: { x: 0, y: 4 } }, { name: \"Jumbo Spectral Pack\", pos: { x: 2, y: 4 } }, { name: \"Mega Spectral Pack\", pos: { x: 3, y: 4 } }, { name: \"Standard Pack\", pos: { x: 0, y: 6 } }, { name: \"Jumbo Standard Pack\", pos: { x: 0, y: 7 } }, { name: \"Mega Standard Pack\", pos: { x: 2, y: 7 } }, { name: \"Buffoon Pack\", pos: { x: 0, y: 8 } }, { name: \"Jumbo Buffoon Pack\", pos: { x: 2, y: 8 } }, { name: \"Mega Buffoon Pack\", pos: { x: 3, y: 8 } },\n];\n\nexport const EDITION_MAP: Record<string, number> = {\n Foil: 1,\n Holographic: 2,\n Polychrome: 3,\n};\n\nexport const STICKER_MAP: Record<string, SpritePos> = {\n Eternal: { x: 0, y: 0 },\n Perishable: { x: 0, y: 2 },\n Rental: { x: 1, y: 2 },\n};\n\nexport const RANK_MAP: Record<string, number> = {\n \"2\": 0, \"3\": 1, \"4\": 2, \"5\": 3, \"6\": 4, \"7\": 5, \"8\": 6, \"9\": 7, \"10\": 8, Jack: 9, Queen: 10, King: 11, Ace: 12,\n};\n\nexport const SUIT_MAP: Record<string, number> = {\n Hearts: 0, Clubs: 1, Diamonds: 2, Spades: 3,\n};\n\nexport const ENHANCER_MAP: Record<string, SpritePos> = {\n Bonus: { x: 1, y: 1 }, Mult: { x: 2, y: 1 }, Wild: { x: 3, y: 1 }, Glass: { x: 5, y: 1 }, Steel: { x: 6, y: 1 }, Stone: { x: 5, y: 0 }, Gold: { x: 6, y: 0 }, Lucky: { x: 4, y: 1 },\n};\n\nexport const SEAL_MAP: Record<string, SpritePos> = {\n \"Gold Seal\": { x: 2, y: 0 }, \"Purple Seal\": { x: 4, y: 4 }, \"Red Seal\": { x: 5, y: 4 }, \"Blue Seal\": { x: 6, y: 4 },\n Gold: { x: 2, y: 0 }, Purple: { x: 4, y: 4 }, Red: { x: 5, y: 4 }, Blue: { x: 6, y: 4 },\n};\n\n/** Build fast lookup maps */\nconst jokerMap = new Map(JOKERS.map((j) => [j.name, j]));\nconst jokerFaceMap = new Map(JOKER_FACES.map((j) => [j.name, j]));\nconst consumableMap = new Map(TAROTS_AND_PLANETS.map((t) => [t.name, t]));\nconst consumableFaceMap = new Map(CONSUMABLE_FACES.map((c) => [c.name, c]));\nconst tagMap = new Map(TAGS.map((t) => [t.name, t]));\nconst voucherMap = new Map(VOUCHERS.map((v) => [v.name, v]));\nconst bossMap = new Map(BOSSES.map((b) => [b.name, b]));\nconst boosterMap = new Map(BOOSTER_PACKS.map((b) => [b.name, b]));\n\nexport function findJoker(name: string) { return jokerMap.get(name); }\nexport function findJokerFace(name: string) { return jokerFaceMap.get(name); }\nexport function findConsumable(name: string) { return consumableMap.get(name); }\nexport function findConsumableFace(name: string) { return consumableFaceMap.get(name); }\nexport function findTag(name: string) { return tagMap.get(name); }\nexport function findVoucher(name: string) { return voucherMap.get(name); }\nexport function findBoss(name: string) { return bossMap.get(name); }\nexport function findBooster(name: string) { return boosterMap.get(name); }\n","import {\n JOKERS, JOKER_FACES, TAROTS_AND_PLANETS, CONSUMABLE_FACES,\n VOUCHERS, BOSSES, TAGS, BOOSTER_PACKS,\n type SpriteEntry,\n} from \"./spriteData.js\";\n\nexport interface SpritePos {\n x: number;\n y: number;\n}\n\nexport type SpriteSheetType =\n | \"Jokers\" | \"Tarots\" | \"Vouchers\" | \"Boosters\"\n | \"Enhancers\" | \"Editions\" | \"BlindChips\" | \"tags\"\n | \"Stakes\" | \"Decks\";\n\nimport type { JamlAssetKey } from '../assets.js';\n\nexport const SHEET_META: Record<SpriteSheetType, { cols: number; rows: number; assetKey: JamlAssetKey }> = {\n Jokers: { cols: 10, rows: 16, assetKey: 'jokers' },\n Tarots: { cols: 10, rows: 6, assetKey: 'tarots' },\n Vouchers: { cols: 9, rows: 4, assetKey: 'vouchers' },\n Boosters: { cols: 4, rows: 9, assetKey: 'boosters' },\n BlindChips:{ cols: 21, rows: 31, assetKey: 'blinds' },\n tags: { cols: 6, rows: 5, assetKey: 'tags' },\n Enhancers: { cols: 7, rows: 5, assetKey: 'enhancers' },\n Editions: { cols: 5, rows: 1, assetKey: 'editions' },\n Stakes: { cols: 5, rows: 2, assetKey: 'stakes' },\n Decks: { cols: 13, rows: 4, assetKey: 'deck' },\n};\n\nexport interface SpriteData {\n pos: SpritePos;\n type: SpriteSheetType;\n}\n\nconst normalize = (name: string): string => name.toLowerCase().replace(/\\s+/g, \"\");\nconst stripPrefix = (name: string): string =>\n name.replace(/^(Joker|Tarot|Planet|Voucher|Pack|Edition|Tag) [|:] /i, \"\").trim();\n\nconst ITEM_MAP = new Map<string, SpriteData>();\n\nfunction registerAll(items: SpriteEntry[], type: SpriteSheetType) {\n for (const item of items) {\n if (!item.name || !item.pos) continue;\n const key = normalize(item.name);\n if (!ITEM_MAP.has(key)) {\n ITEM_MAP.set(key, { pos: item.pos, type });\n }\n }\n}\n\nregisterAll(JOKERS, \"Jokers\");\nregisterAll(JOKER_FACES, \"Jokers\");\nregisterAll(TAROTS_AND_PLANETS, \"Tarots\");\nregisterAll(CONSUMABLE_FACES ?? [], \"Tarots\");\nregisterAll(VOUCHERS, \"Vouchers\");\nregisterAll(BOSSES, \"BlindChips\");\nregisterAll(TAGS, \"tags\");\nregisterAll(BOOSTER_PACKS ?? [], \"Boosters\");\n\n/**\n * Per-sheet mystery/back card positions for unknown items.\n * Used as fallback when an item name can't be resolved.\n */\nexport const MYSTERY_SPRITES: Partial<Record<SpriteSheetType, SpritePos>> = {\n Jokers: { x: 9, y: 9 }, // grey card back (legendary face row)\n Tarots: { x: 4, y: 2 }, // blank consumable\n Vouchers: { x: 8, y: 2 }, // mystery voucher\n Boosters: { x: 0, y: 5 }, // grey empty pack\n tags: { x: 3, y: 4 }, // grey ? tag\n BlindChips: { x: 0, y: 30 }, // grey ? blind\n};\n\n/** Get the mystery/fallback sprite for a given sheet type. */\nexport function getMysterySprite(sheet: SpriteSheetType): SpriteData {\n return { pos: MYSTERY_SPRITES[sheet] ?? { x: 0, y: 0 }, type: sheet };\n}\n\n/** Look up sprite data by name. Accepts display names (\"Icy Joker\"), enum keys (\"IcyJoker\"), and \"Joker | Name\" prefixed forms. */\nexport function getSpriteData(name: string): SpriteData | null {\n return ITEM_MAP.get(normalize(stripPrefix(name))) ?? ITEM_MAP.get(normalize(name)) ?? null;\n}\n\n/**\n * Wildcard \"Any\" sprites from the Enhancers sheet.\n * Used in the JAML visual editor when a clause value is \"Any\" (e.g. `legendaryJoker: Any`).\n */\nexport const WILDCARD_SPRITES = {\n /** Grey silhouette — Enhancers row 3 col 5. For generic \"Any\" items. */\n anySilhouette: { pos: { x: 5, y: 3 }, type: \"Enhancers\" as SpriteSheetType },\n /** Grey ? circle — Enhancers row 3 col 6. For \"boss: Any\" etc. */\n anyMystery: { pos: { x: 6, y: 3 }, type: \"Enhancers\" as SpriteSheetType },\n /** Red X debuff — Editions row 0 col 4. For mustNot zone indicator. */\n mustNotDebuff: { pos: { x: 4, y: 0 }, type: \"Editions\" as SpriteSheetType },\n /** The Soul card — Tarots row 2 col 2. Base for \"legendaryJoker: Any\" (they spawn from Soul). */\n anyLegendary: { pos: { x: 2, y: 2 }, type: \"Tarots\" as SpriteSheetType },\n /** Blank spectral back — Tarots row 2 col 5. For \"spectralCard: Any\". */\n anySpectral: { pos: { x: 5, y: 2 }, type: \"Tarots\" as SpriteSheetType },\n /** Blank tarot back — Tarots row 2 col 6. For \"tarotCard: Any\". */\n anyTarot: { pos: { x: 6, y: 2 }, type: \"Tarots\" as SpriteSheetType },\n /** Blank planet back — Tarots row 2 col 7. For \"planetCard: Any\". */\n anyPlanet: { pos: { x: 7, y: 2 }, type: \"Tarots\" as SpriteSheetType },\n} as const;\n\n/** Look up sprite data by name, falling back to the mystery card for the given sheet if not found. */\nexport function getSpriteDataOrMystery(name: string, fallbackSheet: SpriteSheetType = \"Jokers\"): SpriteData {\n return getSpriteData(name) ?? getMysterySprite(fallbackSheet);\n}\n"],"names":["deckUrl","blindsUrl","boostersUrl","editionsUrl","enhancersUrl","jokersUrl","tarotsUrl","vouchersUrl","stickersUrl","tagsUrl","stakesUrl","fontUrl","JAML_ASSET_FILES","ASSET_URLS","resolveJamlAssetUrl","asset","url","defineSpriteSheet","columns","rows","SPRITE_SHEETS","JOKERS","JOKER_FACES","CONSUMABLE_FACES","TAROTS_AND_PLANETS","TAGS","VOUCHERS","BOSSES","BOOSTER_PACKS","EDITION_MAP","STICKER_MAP","RANK_MAP","SUIT_MAP","ENHANCER_MAP","SEAL_MAP","j","t","c","v","b","SHEET_META","normalize","name","stripPrefix","ITEM_MAP","registerAll","items","type","item","key","MYSTERY_SPRITES","getMysterySprite","sheet","getSpriteData","getSpriteDataOrMystery","fallbackSheet"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { default as React } from 'react';
2
+ import { DailyRitual } from '../lib/daily/ritual.js';
3
+ export interface DailyRitualViewProps {
4
+ /** The ritual to render. Provide this or {@link jaml}; `ritual` wins if both are given. */
5
+ ritual?: DailyRitual;
6
+ /** Raw JAML source; parsed into a ritual when `ritual` is not supplied. */
7
+ jaml?: string;
8
+ /** Which day this is, for the header badge. Runtime info, not part of the ritual file. */
9
+ dayNumber?: number;
10
+ /** Formatted date for the header badge, e.g. "Fri, Aug 21". */
11
+ dateString?: string;
12
+ onLoadJaml?: (jaml: string) => void;
13
+ onPlayRitual?: (ritual: DailyRitual) => void;
14
+ className?: string;
15
+ style?: React.CSSProperties;
16
+ }
17
+ export declare function DailyRitualView({ ritual: ritualProp, jaml, dayNumber, dateString, onLoadJaml, onPlayRitual, className, style, }: DailyRitualViewProps): React.JSX.Element;
@@ -0,0 +1,12 @@
1
+ declare const DECKS: readonly string[];
2
+ declare const STAKES: readonly string[];
3
+ export interface DeckStakePickerProps {
4
+ deck: string;
5
+ stake: string;
6
+ onDeckChange: (deck: string) => void;
7
+ onStakeChange: (stake: string) => void;
8
+ className?: string;
9
+ }
10
+ /** New-run deck + stake cyclers. Sprites from the atlas, names from Motely enums. */
11
+ export declare function DeckStakePicker({ deck, stake, onDeckChange, onStakeChange, className, }: DeckStakePickerProps): import("react").JSX.Element;
12
+ export { DECKS as DECK_PICKER_NAMES, STAKES as STAKE_PICKER_NAMES };