jaml-ui 0.14.0 → 0.14.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.
Files changed (48) hide show
  1. package/assets/Balatro Seed Curator (DesignsV2)/Assets/Decks/playing_cards_metadata.json +230 -55
  2. package/dist/components/AnalyzerExplorer.js +75 -90
  3. package/dist/components/CardFan.js +2 -2
  4. package/dist/components/GameCard.js +9 -9
  5. package/dist/components/JamlIde.d.ts +2 -1
  6. package/dist/components/JamlIde.js +6 -4
  7. package/dist/components/JamlIdeToolbar.js +1 -0
  8. package/dist/components/{PlayingCard.d.ts → Standardcard.d.ts} +2 -2
  9. package/dist/components/{PlayingCard.js → Standardcard.js} +1 -1
  10. package/dist/decode/motelyItemDecoder.d.ts +3 -3
  11. package/dist/decode/motelyItemDecoder.js +12 -12
  12. package/dist/decode/packedBalatroItem.d.ts +1 -1
  13. package/dist/decode/packedBalatroItem.js +2 -2
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/motely.d.ts +1 -1
  17. package/dist/motely.js +1 -1
  18. package/dist/ui/jimboTabs.js +1 -1
  19. package/dist/utils/itemUtils.d.ts +1 -1
  20. package/dist/utils/itemUtils.js +3 -3
  21. package/package.json +4 -4
  22. package/dist/data/balatro-jokers.json +0 -1241
  23. package/dist/r3f/BalatroJokerMesh3D.d.ts +0 -8
  24. package/dist/r3f/BalatroJokerMesh3D.js +0 -98
  25. package/dist/r3f/BalatroJokerPreview3D.d.ts +0 -14
  26. package/dist/r3f/BalatroJokerPreview3D.js +0 -30
  27. package/dist/r3f/BalatroPlayingCard3D.d.ts +0 -22
  28. package/dist/r3f/BalatroPlayingCard3D.js +0 -62
  29. package/dist/r3f/cardConstants.d.ts +0 -16
  30. package/dist/r3f/cardConstants.js +0 -14
  31. package/dist/r3f/compositedAtlas.d.ts +0 -5
  32. package/dist/r3f/compositedAtlas.js +0 -56
  33. package/dist/r3f/gridUV.d.ts +0 -22
  34. package/dist/r3f/gridUV.js +0 -30
  35. package/dist/r3f/index.d.ts +0 -12
  36. package/dist/r3f/index.js +0 -13
  37. package/dist/r3f/jokerRegistry.d.ts +0 -28
  38. package/dist/r3f/jokerRegistry.js +0 -40
  39. package/dist/r3f/jokerTilt.d.ts +0 -8
  40. package/dist/r3f/jokerTilt.js +0 -41
  41. package/dist/r3f/magneticTilt.d.ts +0 -18
  42. package/dist/r3f/magneticTilt.js +0 -34
  43. package/dist/r3f/playingCardTypes.d.ts +0 -24
  44. package/dist/r3f/playingCardTypes.js +0 -32
  45. package/dist/r3f/playingCardVisuals.d.ts +0 -7
  46. package/dist/r3f/playingCardVisuals.js +0 -45
  47. package/dist/r3f/usePlayingCardTexture.d.ts +0 -7
  48. package/dist/r3f/usePlayingCardTexture.js +0 -92
@@ -28,7 +28,7 @@ function normalizeCardSuit(raw) {
28
28
  return "Spades";
29
29
  return raw.trim();
30
30
  }
31
- function parsePlayingCardName(name) {
31
+ function parseStandardcardName(name) {
32
32
  const trimmed = name.trim();
33
33
  const ofMatch = /^(A|K|Q|J|10|[2-9]|Ace|King|Queen|Jack)\s+of\s+(Hearts|Clubs|Diamonds|Spades)$/i.exec(trimmed);
34
34
  if (ofMatch) {
@@ -137,15 +137,15 @@ function resolvePackedAnalyzerItem(item, scale) {
137
137
  return { kind: "voucher", voucherName: baseName };
138
138
  }
139
139
  }
140
- const playingCard = parsePlayingCardName(displayName) ?? parsePlayingCardName(baseName);
141
- if (playingCard) {
140
+ const standardcard = parseStandardcardName(displayName) ?? parseStandardcardName(baseName);
141
+ if (standardcard) {
142
142
  return {
143
143
  kind: "playing",
144
144
  type: "playing",
145
145
  card: {
146
146
  name: displayName,
147
- rank: playingCard.rank,
148
- suit: playingCard.suit,
147
+ rank: standardcard.rank,
148
+ suit: standardcard.suit,
149
149
  scale,
150
150
  },
151
151
  };
@@ -182,15 +182,15 @@ export function resolveAnalyzerShopItem(item, scale = 1) {
182
182
  return { kind: "voucher", voucherName: baseName };
183
183
  }
184
184
  }
185
- const playingCard = parsePlayingCardName(displayName) ?? parsePlayingCardName(baseName);
186
- if (playingCard) {
185
+ const standardcard = parseStandardcardName(displayName) ?? parseStandardcardName(baseName);
186
+ if (standardcard) {
187
187
  return {
188
188
  kind: "playing",
189
189
  type: "playing",
190
190
  card: {
191
191
  name: displayName,
192
- rank: playingCard.rank,
193
- suit: playingCard.suit,
192
+ rank: standardcard.rank,
193
+ suit: standardcard.suit,
194
194
  scale,
195
195
  },
196
196
  };
@@ -17,6 +17,7 @@ export interface JamlIdeProps {
17
17
  defaultMode?: JamlIdeMode;
18
18
  searchResults?: JamlIdeSearchResult[];
19
19
  className?: string;
20
+ style?: React.CSSProperties;
20
21
  title?: string;
21
22
  actions?: React.ReactNode;
22
23
  codePlaceholder?: string;
@@ -31,4 +32,4 @@ export interface JamlIdeProps {
31
32
  }
32
33
  export type { JamlVisualFilter } from "./JamlIdeVisual.js";
33
34
  export type { JamlVisualClause, JamlZone } from "./JamlIdeVisual.js";
34
- export declare function JamlIde({ jaml, defaultJaml, onChange, defaultMode, searchResults, className, title, actions, codePlaceholder, onSearch, isSearching, visualFilter, onVisualFilterChange, }: JamlIdeProps): import("react/jsx-runtime").JSX.Element;
35
+ export declare function JamlIde({ jaml, defaultJaml, onChange, defaultMode, searchResults, className, style, title, actions, codePlaceholder, onSearch, isSearching, visualFilter, onVisualFilterChange, }: JamlIdeProps): import("react/jsx-runtime").JSX.Element;
@@ -54,7 +54,7 @@ function ResultsView({ results }) {
54
54
  textAlign: "left",
55
55
  }, children: [_jsx("span", { style: {
56
56
  fontFamily: "m6x11plus, monospace",
57
- fontWeight: 700,
57
+ fontWeight: "normal",
58
58
  fontSize: 14,
59
59
  letterSpacing: 1,
60
60
  color: JimboColorOption.GOLD_TEXT,
@@ -65,7 +65,7 @@ function ResultsView({ results }) {
65
65
  color: result.score > 0 ? JimboColorOption.GREEN_TEXT : JimboColorOption.GREY,
66
66
  minWidth: 36,
67
67
  textAlign: "right",
68
- }, children: result.score })] })) : null, hasTally ? (_jsx("span", { style: { fontSize: 10, color: JimboColorOption.GREY, marginLeft: 2 }, children: isOpen ? "▲" : "▼" })) : null] }), isOpen && hasTally ? (_jsx("div", { style: {
68
+ }, children: result.score })] })) : null, hasTally ? (_jsx("span", { style: { fontSize: 11, color: JimboColorOption.GREY, marginLeft: 2 }, children: isOpen ? "▲" : "▼" })) : null] }), isOpen && hasTally ? (_jsx("div", { style: {
69
69
  borderTop: `1px solid ${JimboColorOption.PANEL_EDGE}`,
70
70
  padding: "8px 12px 10px",
71
71
  display: "flex",
@@ -91,7 +91,7 @@ function ResultsView({ results }) {
91
91
  }) })) : null] }, result.seed));
92
92
  }) }));
93
93
  }
94
- export function JamlIde({ jaml, defaultJaml, onChange, defaultMode = "code", searchResults = [], className = "", title = "JAML IDE", actions, codePlaceholder = "Enter JAML...", onSearch, isSearching = false, visualFilter, onVisualFilterChange, }) {
94
+ export function JamlIde({ jaml, defaultJaml, onChange, defaultMode = "code", searchResults = [], className = "", style, title = "JAML IDE", actions, codePlaceholder = "Enter JAML...", onSearch, isSearching = false, visualFilter, onVisualFilterChange, }) {
95
95
  const [mode, setMode] = useState(defaultMode);
96
96
  const [internalText, setInternalText] = useState(jaml ?? defaultJaml ?? "");
97
97
  const [lastJamlProp, setLastJamlProp] = useState(jaml);
@@ -151,13 +151,15 @@ export function JamlIde({ jaml, defaultJaml, onChange, defaultMode = "code", sea
151
151
  boxShadow: `0 3px 0 0 ${JimboColorOption.BORDER_SOUTH}`,
152
152
  background: JimboColorOption.DARK_GREY,
153
153
  color: JimboColorOption.WHITE,
154
+ ...style,
154
155
  }, children: [_jsxs("div", { style: {
155
156
  display: "flex",
156
157
  alignItems: "center",
157
158
  justifyContent: "space-between",
159
+ flexWrap: "wrap",
158
160
  gap: 12,
159
161
  padding: "10px 14px",
160
162
  borderBottom: `1px solid ${JimboColorOption.PANEL_EDGE}`,
161
163
  background: JimboColorOption.TEAL_GREY,
162
- }, children: [_jsxs("div", { children: [_jsx("div", { style: { fontSize: 14, fontWeight: 800, fontFamily: "m6x11plus, monospace", color: JimboColorOption.GOLD_TEXT }, children: title }), _jsx("div", { style: { fontSize: 11, color: JimboColorOption.GREY }, children: "Jimbo's Ante Markup Language" })] }), actions ? _jsx("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: actions }) : null] }), _jsx(JamlIdeToolbar, { mode: mode, onModeChange: setMode, resultCount: results.length, onSearch: onSearch, isSearching: isSearching }), _jsxs("div", { style: { flex: 1, minHeight: 0, overflow: "auto", background: JimboColorOption.DARKEST }, children: [mode === "visual" ? (_jsx(JamlIdeVisual, { filter: activeFilter, onChange: handleVisualFilterChange })) : null, mode === "code" ? (_jsx(JamlCodeEditor, { value: text, onChange: handleTextChange, placeholder: codePlaceholder })) : null, mode === "map" ? _jsx(JamlMapPreview, { jaml: text }) : null, mode === "results" ? (_jsx("div", { style: { padding: 12 }, children: _jsx(ResultsView, { results: results }) })) : null] })] }));
164
+ }, children: [_jsxs("div", { children: [_jsx("div", { style: { fontSize: 16, fontWeight: "normal", fontFamily: "m6x11plus, monospace", color: JimboColorOption.GOLD_TEXT }, children: title }), _jsx("div", { style: { fontSize: 11, color: JimboColorOption.GREY }, children: "Jimbo's Ante Markup Language" })] }), actions ? _jsx("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: actions }) : null] }), _jsx(JamlIdeToolbar, { mode: mode, onModeChange: setMode, resultCount: results.length, onSearch: onSearch, isSearching: isSearching }), _jsxs("div", { style: { flex: 1, minHeight: 0, overflow: "auto", background: JimboColorOption.DARKEST }, children: [mode === "visual" ? (_jsx(JamlIdeVisual, { filter: activeFilter, onChange: handleVisualFilterChange })) : null, mode === "code" ? (_jsx(JamlCodeEditor, { value: text, onChange: handleTextChange, placeholder: codePlaceholder })) : null, mode === "map" ? _jsx(JamlMapPreview, { jaml: text }) : null, mode === "results" ? (_jsx("div", { style: { padding: 12 }, children: _jsx(ResultsView, { results: results }) })) : null] })] }));
163
165
  }
@@ -14,6 +14,7 @@ export function JamlIdeToolbar({ mode, onModeChange, resultCount = 0, className
14
14
  display: "flex",
15
15
  alignItems: "center",
16
16
  justifyContent: "space-between",
17
+ flexWrap: "wrap",
17
18
  gap: 8,
18
19
  padding: "10px 10px 6px",
19
20
  borderBottom: `1px solid ${JimboColorOption.PANEL_EDGE}`,
@@ -4,7 +4,7 @@ export type CardRank = 'Ace' | 'King' | 'Queen' | 'Jack' | '10' | '9' | '8' | '7
4
4
  export type CardEnhancement = 'bonus' | 'mult' | 'wild' | 'glass' | 'steel' | 'stone' | 'gold' | 'lucky' | null;
5
5
  export type CardSeal = 'gold' | 'red' | 'blue' | 'purple' | null;
6
6
  export type CardEdition = 'Foil' | 'Holographic' | 'Polychrome' | 'Negative' | null;
7
- interface RealPlayingCardProps {
7
+ interface RealStandardcardProps {
8
8
  suit: CardSuit;
9
9
  rank: CardRank;
10
10
  enhancement?: CardEnhancement;
@@ -14,5 +14,5 @@ interface RealPlayingCardProps {
14
14
  size?: number;
15
15
  style?: React.CSSProperties;
16
16
  }
17
- export declare function RealPlayingCard({ suit, rank, enhancement, seal, edition, className, size, style }: RealPlayingCardProps): import("react/jsx-runtime").JSX.Element | null;
17
+ export declare function RealStandardcard({ suit, rank, enhancement, seal, edition, className, size, style }: RealStandardcardProps): import("react/jsx-runtime").JSX.Element | null;
18
18
  export {};
@@ -7,7 +7,7 @@ const CARD_WIDTH = 71;
7
7
  const CARD_HEIGHT = 95;
8
8
  const RANK_ALIAS = { A: 'Ace', K: 'King', Q: 'Queen', J: 'Jack' };
9
9
  const pascal = (s) => s[0].toUpperCase() + s.slice(1).toLowerCase();
10
- export function RealPlayingCard({ suit, rank, enhancement, seal, edition, className, size = 71, style }) {
10
+ export function RealStandardcard({ suit, rank, enhancement, seal, edition, className, size = 71, style }) {
11
11
  const rankKey = RANK_ALIAS[rank] ?? rank;
12
12
  const suitKey = pascal(suit);
13
13
  const col = RANK_MAP[rankKey];
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * MotelyItem.Value is a packed integer. The MotelyItemType enum
5
5
  * uses packed integers where the top nibble encodes category:
6
- * 0x1000 = PlayingCard, 0x2000 = Spectral, 0x3000 = Tarot,
6
+ * 0x1000 = Standardcard, 0x2000 = Spectral, 0x3000 = Tarot,
7
7
  * 0x4000 = Planet, 0x5000 = Joker, 0xF000 = Invalid
8
8
  */
9
9
  import { type CardCategory } from "../utils/itemUtils.js";
@@ -46,8 +46,8 @@ export declare function motelyItemRenderCategory(input: MotelyItemInput): Motely
46
46
  export declare function motelyItemEditionName(input: MotelyItemInput): "Foil" | "Holographic" | "Polychrome" | "Negative" | null;
47
47
  export declare function motelyItemSealName(input: MotelyItemInput): "Gold" | "Red" | "Blue" | "Purple" | null;
48
48
  export declare function motelyItemEnhancementName(input: MotelyItemInput): string | null;
49
- export declare function motelyPlayingCardSuitName(input: MotelyItemInput): "Clubs" | "Diamonds" | "Hearts" | "Spades" | null;
50
- export declare function motelyPlayingCardRankName(input: MotelyItemInput): string | null;
49
+ export declare function motelyStandardcardSuitName(input: MotelyItemInput): "Clubs" | "Diamonds" | "Hearts" | "Spades" | null;
50
+ export declare function motelyStandardcardRankName(input: MotelyItemInput): string | null;
51
51
  /** Get the enum key name for a MotelyItemType value. */
52
52
  export declare function motelyItemTypeName(input: MotelyItemInput): string;
53
53
  /** Get the category string for a MotelyItemType value. */
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * MotelyItem.Value is a packed integer. The MotelyItemType enum
5
5
  * uses packed integers where the top nibble encodes category:
6
- * 0x1000 = PlayingCard, 0x2000 = Spectral, 0x3000 = Tarot,
6
+ * 0x1000 = Standardcard, 0x2000 = Spectral, 0x3000 = Tarot,
7
7
  * 0x4000 = Planet, 0x5000 = Joker, 0xF000 = Invalid
8
8
  */
9
9
  import { Motely } from "motely-wasm";
@@ -15,7 +15,7 @@ const VALUE_SEAL_MASK = 0x70000;
15
15
  const VALUE_ENHANCEMENT_MASK = 0x780000;
16
16
  const VALUE_EDITION_MASK = 0x3800000;
17
17
  const CATEGORY_TO_TYPE = {
18
- 0x1000: "Playing Card",
18
+ 0x1000: "Standard card",
19
19
  0x2000: "Spectral",
20
20
  0x3000: "Tarot",
21
21
  0x4000: "Planet",
@@ -45,7 +45,7 @@ function runtimeEnumName(enumObject, value) {
45
45
  const enumKey = enumObject[String(value)];
46
46
  return typeof enumKey === "string" && enumKey.length > 0 ? enumKey : null;
47
47
  }
48
- function parsePlayingCardEnumKey(enumKey) {
48
+ function parseStandardcardEnumKey(enumKey) {
49
49
  const match = /^([CDHS])(10|[2-9JQKA])$/.exec(enumKey);
50
50
  if (!match)
51
51
  return null;
@@ -142,22 +142,22 @@ export function motelyItemEnhancementName(input) {
142
142
  const enumKey = runtimeEnumName(Motely.MotelyItemEnhancement, resolveEnhancementValue(input));
143
143
  return enumKey === null || enumKey === "None" ? null : enumKey;
144
144
  }
145
- export function motelyPlayingCardSuitName(input) {
145
+ export function motelyStandardcardSuitName(input) {
146
146
  const runtimeItem = asRuntimeItem(input);
147
- const directSuit = runtimeEnumName(Motely.MotelyPlayingCardSuit, finiteNumber(runtimeItem?.suit));
147
+ const directSuit = runtimeEnumName(Motely.MotelyStandardcardSuit, finiteNumber(runtimeItem?.suit));
148
148
  if (directSuit === "Clubs" || directSuit === "Diamonds" || directSuit === "Hearts" || directSuit === "Spades") {
149
149
  return directSuit;
150
150
  }
151
- const parsed = parsePlayingCardEnumKey(motelyItemTypeName(input));
151
+ const parsed = parseStandardcardEnumKey(motelyItemTypeName(input));
152
152
  return parsed?.suit ?? null;
153
153
  }
154
- export function motelyPlayingCardRankName(input) {
154
+ export function motelyStandardcardRankName(input) {
155
155
  const runtimeItem = asRuntimeItem(input);
156
- const directRank = runtimeEnumName(Motely.MotelyPlayingCardRank, finiteNumber(runtimeItem?.rank));
156
+ const directRank = runtimeEnumName(Motely.MotelyStandardcardRank, finiteNumber(runtimeItem?.rank));
157
157
  const normalizedDirect = rankNameFromEnum(directRank);
158
158
  if (normalizedDirect !== null)
159
159
  return normalizedDirect;
160
- const parsed = parsePlayingCardEnumKey(motelyItemTypeName(input));
160
+ const parsed = parseStandardcardEnumKey(motelyItemTypeName(input));
161
161
  return parsed?.rank ?? null;
162
162
  }
163
163
  /** Get the enum key name for a MotelyItemType value. */
@@ -175,7 +175,7 @@ export function motelyItemCategory(input) {
175
175
  return "Unknown";
176
176
  const renderCategory = motelyItemRenderCategory(itemType);
177
177
  if (renderCategory === "playing")
178
- return "Playing Card";
178
+ return "Standard card";
179
179
  if (renderCategory === "spectral")
180
180
  return "Spectral";
181
181
  if (renderCategory === "tarot")
@@ -206,8 +206,8 @@ export function decodeMotelyItem(input) {
206
206
  return null;
207
207
  }
208
208
  const category = motelyItemRenderCategory(itemType);
209
- const rank = motelyPlayingCardRankName(itemType);
210
- const suit = motelyPlayingCardSuitName(itemType);
209
+ const rank = motelyStandardcardRankName(itemType);
210
+ const suit = motelyStandardcardSuitName(itemType);
211
211
  base = {
212
212
  itemType,
213
213
  enumKey,
@@ -1,6 +1,6 @@
1
1
  /** Bit-packed shop/card ids (Balatro item encoding). */
2
2
  export declare const BalatroItemCategory: {
3
- readonly PlayingCard: 1;
3
+ readonly Standardcard: 1;
4
4
  readonly Spectral: 2;
5
5
  readonly Tarot: 3;
6
6
  readonly Planet: 4;
@@ -1,6 +1,6 @@
1
1
  /** Bit-packed shop/card ids (Balatro item encoding). */
2
2
  export const BalatroItemCategory = {
3
- PlayingCard: 1,
3
+ Standardcard: 1,
4
4
  Spectral: 2,
5
5
  Tarot: 3,
6
6
  Planet: 4,
@@ -22,5 +22,5 @@ export function packedItemIndex(packed) {
22
22
  }
23
23
  export function isPackedItemValid(packed) {
24
24
  const category = packedItemCategory(packed);
25
- return category >= BalatroItemCategory.PlayingCard && category <= BalatroItemCategory.Joker;
25
+ return category >= BalatroItemCategory.Standardcard && category <= BalatroItemCategory.Joker;
26
26
  }
package/dist/index.d.ts CHANGED
@@ -18,7 +18,7 @@ export { JimboTooltip, type JimboTooltipProps, type JimboTooltipMode, type Jimbo
18
18
  export { JamlIdeToolbar, type JamlIdeMode, type JamlIdeToolbarProps, } from "./components/JamlIdeToolbar.js";
19
19
  export { CardList, type CardListProps } from "./components/CardList.js";
20
20
  export { CardFan, type CardFanProps } from "./components/CardFan.js";
21
- export { RealPlayingCard, type CardSuit, type CardRank, type CardEnhancement, type CardSeal, type CardEdition, } from "./components/PlayingCard.js";
21
+ export { RealStandardcard, type CardSuit, type CardRank, type CardEnhancement, type CardSeal, type CardEdition, } from "./components/Standardcard.js";
22
22
  export { DeckSprite, DECK_SPRITE_POS, STAKE_SPRITE_POS, type DeckSpriteProps, } from "./components/DeckSprite.js";
23
23
  export { MotelyVersionBadge, type MotelyVersionBadgeProps, type MotelyCapabilities, } from "./components/MotelyVersionBadge.js";
24
24
  export { extractVisualJamlItems, type JamlPreviewGroups, type JamlPreviewItem, type JamlPreviewSection, type JamlPreviewVisualType, } from "./utils/jamlMapPreview.js";
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ export { JimboTooltip, } from "./ui/jimboTooltip.js";
19
19
  export { JamlIdeToolbar, } from "./components/JamlIdeToolbar.js";
20
20
  export { CardList } from "./components/CardList.js";
21
21
  export { CardFan } from "./components/CardFan.js";
22
- export { RealPlayingCard, } from "./components/PlayingCard.js";
22
+ export { RealStandardcard, } from "./components/Standardcard.js";
23
23
  export { DeckSprite, DECK_SPRITE_POS, STAKE_SPRITE_POS, } from "./components/DeckSprite.js";
24
24
  export { MotelyVersionBadge, } from "./components/MotelyVersionBadge.js";
25
25
  export { extractVisualJamlItems, } from "./utils/jamlMapPreview.js";
package/dist/motely.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { decodeMotelyItem, decodeMotelyItemToJamlCard, motelyItemTypeName, motelyItemCategory, motelyItemDisplayName, motelyItemRenderCategory, motelyItemEditionName, motelyItemSealName, motelyItemEnhancementName, motelyPlayingCardRankName, motelyPlayingCardSuitName, decodeMotelyItemName, resolveMotelyItemType, warmMotelyItemCache, motelyItemCacheSize, type DecodedMotelyItem, type MotelyItemInput, type MotelyJamlCard, type MotelyRenderableCategory, type MotelyRuntimeItem, } from "./decode/motelyItemDecoder.js";
1
+ export { decodeMotelyItem, decodeMotelyItemToJamlCard, motelyItemTypeName, motelyItemCategory, motelyItemDisplayName, motelyItemRenderCategory, motelyItemEditionName, motelyItemSealName, motelyItemEnhancementName, motelyStandardcardRankName, motelyStandardcardSuitName, decodeMotelyItemName, resolveMotelyItemType, warmMotelyItemCache, motelyItemCacheSize, type DecodedMotelyItem, type MotelyItemInput, type MotelyJamlCard, type MotelyRenderableCategory, type MotelyRuntimeItem, } from "./decode/motelyItemDecoder.js";
2
2
  export { MOTELY_DISPLAY_SCHEMA, motelyBossDisplayName, motelyBossDisplayNameFromKey, motelyBossKeyFromDisplayName, motelyBoosterPackDisplayName, motelyBoosterPackDisplayNameFromKey, motelyBoosterPackKeyFromDisplayName, motelyItemDisplayNameFromKey, motelyItemDisplayNameFromValue, motelyTagDisplayName, motelyTagDisplayNameFromKey, motelyTagKeyFromDisplayName, motelyVoucherDisplayName, motelyVoucherDisplayNameFromKey, motelyVoucherKeyFromDisplayName, type MotelyBoosterPackKey, type MotelyBossKey, type MotelyDisplaySchema, type MotelyTagKey, type MotelyVoucherKey, } from "./motelyDisplay.js";
package/dist/motely.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- export { decodeMotelyItem, decodeMotelyItemToJamlCard, motelyItemTypeName, motelyItemCategory, motelyItemDisplayName, motelyItemRenderCategory, motelyItemEditionName, motelyItemSealName, motelyItemEnhancementName, motelyPlayingCardRankName, motelyPlayingCardSuitName, decodeMotelyItemName, resolveMotelyItemType, warmMotelyItemCache, motelyItemCacheSize, } from "./decode/motelyItemDecoder.js";
2
+ export { decodeMotelyItem, decodeMotelyItemToJamlCard, motelyItemTypeName, motelyItemCategory, motelyItemDisplayName, motelyItemRenderCategory, motelyItemEditionName, motelyItemSealName, motelyItemEnhancementName, motelyStandardcardRankName, motelyStandardcardSuitName, decodeMotelyItemName, resolveMotelyItemType, warmMotelyItemCache, motelyItemCacheSize, } from "./decode/motelyItemDecoder.js";
3
3
  export { MOTELY_DISPLAY_SCHEMA, motelyBossDisplayName, motelyBossDisplayNameFromKey, motelyBossKeyFromDisplayName, motelyBoosterPackDisplayName, motelyBoosterPackDisplayNameFromKey, motelyBoosterPackKeyFromDisplayName, motelyItemDisplayNameFromKey, motelyItemDisplayNameFromValue, motelyTagDisplayName, motelyTagDisplayNameFromKey, motelyTagKeyFromDisplayName, motelyVoucherDisplayName, motelyVoucherDisplayNameFromKey, motelyVoucherKeyFromDisplayName, } from "./motelyDisplay.js";
@@ -9,7 +9,7 @@ import { JimboText } from './jimboText.js';
9
9
  * button and animates only on the active one.
10
10
  */
11
11
  export function JimboTabs({ tabs, activeTab, onTabChange, className = '', style }) {
12
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: className, style: { display: 'flex', gap: 8, alignItems: 'flex-end', ...style }, children: tabs.map((tab) => (_jsx(TabButton, { label: tab.label, active: activeTab === tab.id, onClick: () => onTabChange(tab.id) }, tab.id))) }), _jsx("style", { children: JIMBO_BOUNCE_KEYFRAMES })] }));
12
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: className, style: { display: 'flex', gap: 8, alignItems: 'flex-end', flexWrap: 'wrap', ...style }, children: tabs.map((tab) => (_jsx(TabButton, { label: tab.label, active: activeTab === tab.id, onClick: () => onTabChange(tab.id) }, tab.id))) }), _jsx("style", { children: JIMBO_BOUNCE_KEYFRAMES })] }));
13
13
  }
14
14
  const JIMBO_BOUNCE_KEYFRAMES = `
15
15
  @keyframes jimbo-bounce {
@@ -7,5 +7,5 @@ export declare const CATEGORY_COLORS: Record<CardCategory, {
7
7
  border: string;
8
8
  text: string;
9
9
  }>;
10
- /** Suit color for playing cards */
10
+ /** Suit color for standard cards */
11
11
  export declare function getSuitColor(enumKey: string): string;
@@ -17,7 +17,7 @@ export function getItemDisplayName(enumKey) {
17
17
  };
18
18
  if (specials[enumKey])
19
19
  return specials[enumKey];
20
- // Playing cards: C2 = 2 of Clubs, D10 = 10 of Diamonds, etc.
20
+ // Standard cards: C2 = 2 of Clubs, D10 = 10 of Diamonds, etc.
21
21
  const suitMap = { C: "♣", D: "♦", H: "♥", S: "♠" };
22
22
  const cardMatch = enumKey.match(/^([CDHS])([2-9JQKA]|10)$/);
23
23
  if (cardMatch) {
@@ -52,7 +52,7 @@ export function getItemCategory(enumKey) {
52
52
  return "planet";
53
53
  if (SPECTRAL_NAMES.has(enumKey))
54
54
  return "spectral";
55
- // Everything else between the playing cards and Invalid is a joker
55
+ // Everything else between the standard cards and Invalid is a joker
56
56
  return "joker";
57
57
  }
58
58
  export const CATEGORY_COLORS = {
@@ -63,7 +63,7 @@ export const CATEGORY_COLORS = {
63
63
  playing: { bg: "bg-neutral-100 dark:bg-neutral-800", border: "border-neutral-300 dark:border-neutral-600", text: "text-neutral-900 dark:text-neutral-100" },
64
64
  unknown: { bg: "bg-neutral-900/30", border: "border-neutral-500/50", text: "text-neutral-300" },
65
65
  };
66
- /** Suit color for playing cards */
66
+ /** Suit color for standard cards */
67
67
  export function getSuitColor(enumKey) {
68
68
  if (enumKey.startsWith("H") || enumKey.startsWith("D"))
69
69
  return "text-red-500";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jaml-ui",
3
- "version": "0.14.0",
3
+ "version": "0.14.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",
@@ -76,7 +76,7 @@
76
76
  "@react-spring/three": ">=9.0.0",
77
77
  "@react-three/fiber": ">=8.0.0",
78
78
  "monaco-editor": ">=0.50.0",
79
- "motely-wasm": "^10.2.0 || ^11.0.0 || ^12.0.0 || ^13.0.0",
79
+ "motely-wasm": "^10.2.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0",
80
80
  "react": "^18.2.0 || ^19.0.0",
81
81
  "react-dom": "^18.2.0 || ^19.0.0",
82
82
  "react-icons": ">=5.0.0",
@@ -108,8 +108,8 @@
108
108
  "@types/three": "^0.184.0",
109
109
  "@vitejs/plugin-react": "^5.0.4",
110
110
  "monaco-editor": "^0.55.1",
111
- "motely-wasm": "^13.0.1",
112
- "react": "^19.2.4",
111
+ "motely-wasm": "link:../JammySeedFinder/src/MotelyJAML/Motely.Wasm/bin/motely-wasm",
112
+ "react": "^19.2.4",
113
113
  "react-dom": "^19.2.4",
114
114
  "react-icons": "^5.6.0",
115
115
  "three": "^0.184.0",