jaml-ui 0.27.0 → 0.29.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 (68) hide show
  1. package/README.md +13 -17
  2. package/dist/assets/{searchPoolWorker-CejAnH4a.js → searchPoolWorker-C4xj1WA_.js} +9 -4
  3. package/dist/assets/searchPoolWorker-C4xj1WA_.js.map +1 -0
  4. package/dist/chunks/{Layer-BBPJFHfs.js → Layer-Ckd_T6Fw.js} +1 -1
  5. package/dist/chunks/{Layer-BBPJFHfs.js.map → Layer-Ckd_T6Fw.js.map} +1 -1
  6. package/dist/chunks/{assets-RWUiFSTc.js → assets-D80i9sMq.js} +1 -1
  7. package/dist/chunks/{assets-RWUiFSTc.js.map → assets-D80i9sMq.js.map} +1 -1
  8. package/dist/chunks/runtime-C-It0krH.js +10 -0
  9. package/dist/chunks/runtime-C-It0krH.js.map +1 -0
  10. package/dist/chunks/{searchPoolWorker-CTtPOuxF.js → searchPoolWorker-hVVM49SD.js} +2 -2
  11. package/dist/chunks/searchPoolWorker-hVVM49SD.js.map +1 -0
  12. package/dist/chunks/{spriteMapper-CFjN0_TV.js → spriteMapper-C4_5G1Z6.js} +10 -6
  13. package/dist/chunks/spriteMapper-C4_5G1Z6.js.map +1 -0
  14. package/dist/chunks/{tokens-B65Fzble.js → tokens-Qrhlekc4.js} +1 -1
  15. package/dist/chunks/{tokens-B65Fzble.js.map → tokens-Qrhlekc4.js.map} +1 -1
  16. package/dist/chunks/ui-D_9HO9OO.js +3127 -0
  17. package/dist/chunks/ui-D_9HO9OO.js.map +1 -0
  18. package/dist/components/JamlAestheticSelector.d.ts +2 -3
  19. package/dist/components/JamlIdeToolbar.d.ts +3 -1
  20. package/dist/components/JamlSeedInput.d.ts +14 -4
  21. package/dist/components/JamlSeedSpinner.d.ts +7 -0
  22. package/dist/components/Jamlyzer.d.ts +5 -1
  23. package/dist/components/PaginatedFilterBrowser.d.ts +3 -0
  24. package/dist/components/RunConfigModal.d.ts +1 -1
  25. package/dist/components/jamlSeedUtils.d.ts +1 -0
  26. package/dist/config.d.ts +7 -4
  27. package/dist/core.js +8 -8
  28. package/dist/core.js.map +1 -1
  29. package/dist/decode/motelyItemFormats.d.ts +3124 -0
  30. package/dist/hooks/useAnalyzer.d.ts +0 -11
  31. package/dist/hooks/useIntersectionObserver.d.ts +1 -1
  32. package/dist/hooks/useMotelyRuntime.d.ts +2 -2
  33. package/dist/hooks/useSearch.d.ts +3 -3
  34. package/dist/index.d.ts +3 -7
  35. package/dist/index.js +3590 -4352
  36. package/dist/index.js.map +1 -1
  37. package/dist/lib/hooks/useDragScroll.d.ts +1 -1
  38. package/dist/lib/motely/runtime.d.ts +3 -0
  39. package/dist/motely.d.ts +3 -2
  40. package/dist/motely.js +2101 -24
  41. package/dist/motely.js.map +1 -1
  42. package/dist/providers/MotelyProvider.d.ts +11 -0
  43. package/dist/r3f.js +4 -4
  44. package/dist/r3f.js.map +1 -1
  45. package/dist/ui/JimboBadge.d.ts +2 -3
  46. package/dist/ui/JimboPanelSpinner.d.ts +15 -0
  47. package/dist/ui/JimboTextInput.d.ts +5 -0
  48. package/dist/ui/PanelSplitter.d.ts +2 -1
  49. package/dist/ui/footer.d.ts +7 -1
  50. package/dist/ui/hooks.d.ts +2 -3
  51. package/dist/ui/jimbo.css +1 -1
  52. package/dist/ui/panel.d.ts +2 -4
  53. package/dist/ui.d.ts +3 -0
  54. package/dist/ui.js +3 -3
  55. package/jaml.schema.json +341 -287
  56. package/package.json +20 -24
  57. package/DESIGN.md +0 -236
  58. package/dist/assets/searchPoolWorker-CejAnH4a.js.map +0 -1
  59. package/dist/chunks/motelyItemDecoder-CRhfNIGU.js +0 -219
  60. package/dist/chunks/motelyItemDecoder-CRhfNIGU.js.map +0 -1
  61. package/dist/chunks/searchPoolWorker-CTtPOuxF.js.map +0 -1
  62. package/dist/chunks/spriteMapper-CFjN0_TV.js.map +0 -1
  63. package/dist/chunks/ui-BBUfR6RM.js +0 -1386
  64. package/dist/chunks/ui-BBUfR6RM.js.map +0 -1
  65. package/dist/components/AnalyzerExplorer.d.ts +0 -47
  66. package/dist/motelyBoot.d.ts +0 -15
  67. package/dist/ui/ide/DeckSprite.d.ts +0 -1
  68. package/dist/ui/ide/RegexTool.d.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"motely.js","names":[],"sources":["../src/decode/motelySprite.ts","../src/motelyDisplay.ts"],"sourcesContent":["import { decodeMotelyItem, type MotelyRenderableCategory } from \"./motelyItemDecoder.js\";\r\nimport { getSpriteData, SHEET_META } from \"../sprites/spriteMapper.js\";\r\nimport { RANK_MAP, SUIT_MAP } from \"../sprites/spriteData.js\";\r\nimport { resolveJamlAssetUrl } from \"../assets.js\";\r\n\r\nexport interface MotelySpriteData {\r\n atlasPath: string;\r\n gridCol: number;\r\n gridRow: number;\r\n gridCols: number;\r\n gridRows: number;\r\n displayName: string;\r\n category: MotelyRenderableCategory;\r\n}\r\n\r\n/**\r\n * Given a raw motely-wasm item value (which may be a bitpacked integer or raw MotelyItemType),\r\n * resolves it to a sprite atlas path and grid coordinates for rendering.\r\n */\r\nexport function motelyItemToSprite(rawValue: number): MotelySpriteData | null {\r\n const decoded = decodeMotelyItem(rawValue);\r\n if (!decoded) return null;\r\n\r\n if (decoded.category === \"playing\" && decoded.rank && decoded.suit) {\r\n const col = RANK_MAP[decoded.rank];\r\n const row = SUIT_MAP[decoded.suit];\r\n if (col !== undefined && row !== undefined) {\r\n return {\r\n atlasPath: resolveJamlAssetUrl('deck'),\r\n gridCol: col,\r\n gridRow: row,\r\n gridCols: 13,\r\n gridRows: 4,\r\n displayName: decoded.displayName,\r\n category: \"playing\"\r\n };\r\n }\r\n }\r\n\r\n const sprite = getSpriteData(decoded.displayName);\r\n if (!sprite) return null;\r\n\r\n const meta = SHEET_META[sprite.type];\r\n if (!meta) return null;\r\n\r\n return {\r\n atlasPath: resolveJamlAssetUrl(meta.assetKey),\r\n gridCol: sprite.pos.x,\r\n gridRow: sprite.pos.y,\r\n gridCols: meta.cols,\r\n gridRows: meta.rows,\r\n displayName: decoded.displayName,\r\n category: decoded.category\r\n };\r\n}\r\n\r\n/**\r\n * Resolves a sprite by name and category without needing a Motely integer.\r\n */\r\nexport function getMotelySpriteByName(name: string, category: MotelyRenderableCategory = \"unknown\"): MotelySpriteData | null {\r\n if (category === \"playing\") {\r\n // Attempt to parse \"Rank of Suit\"\r\n const match = /^(.*?)\\s+of\\s+(.*?)$/i.exec(name);\r\n if (match) {\r\n const rank = match[1];\r\n const suit = match[2];\r\n const col = RANK_MAP[rank];\r\n const row = SUIT_MAP[suit];\r\n if (col !== undefined && row !== undefined) {\r\n return {\r\n atlasPath: resolveJamlAssetUrl('deck'),\r\n gridCol: col,\r\n gridRow: row,\r\n gridCols: 13,\r\n gridRows: 4,\r\n displayName: name,\r\n category: \"playing\"\r\n };\r\n }\r\n }\r\n }\r\n\r\n const sprite = getSpriteData(name);\r\n if (!sprite) return null;\r\n\r\n const meta = SHEET_META[sprite.type];\r\n if (!meta) return null;\r\n\r\n return {\r\n atlasPath: resolveJamlAssetUrl(meta.assetKey),\r\n gridCol: sprite.pos.x,\r\n gridRow: sprite.pos.y,\r\n gridCols: meta.cols,\r\n gridRows: meta.rows,\r\n displayName: name,\r\n category\r\n };\r\n}\r\n","import { Motely } from \"./motelyBoot.js\";\n\ntype RuntimeEnum = Record<string, string | number>;\ntype MotelyRuntimeEnums = typeof Motely & Record<string, RuntimeEnum>;\n\nconst MotelyEnums = Motely as MotelyRuntimeEnums;\n\nfunction runtimeEnumKey(\n enumObject: Record<string, unknown>,\n value: number,\n): string | null {\n const key = enumObject[String(value)];\n return typeof key === \"string\" && key.length > 0 ? key : null;\n}\n\nexport function motelyBossDisplayName(value: number): string {\n const key = runtimeEnumKey(MotelyEnums.MotelyBossBlind, value & 0xff);\n return key ?? `boss#${value}`;\n}\n\nexport function motelyBossDisplayNameFromKey(key: string): string {\n return key;\n}\n\nexport function motelyVoucherDisplayName(value: number): string {\n const key = runtimeEnumKey(MotelyEnums.MotelyVoucher, value);\n return key ?? `voucher#${value}`;\n}\n\nexport function motelyVoucherDisplayNameFromKey(key: string): string {\n return key;\n}\n\nexport function motelyTagDisplayName(value: number): string {\n const key = runtimeEnumKey(MotelyEnums.MotelyTag, value);\n return key ?? `tag#${value}`;\n}\n\nexport function motelyTagDisplayNameFromKey(key: string): string {\n return key;\n}\n\nexport function motelyBoosterPackDisplayName(value: number): string {\n const key = runtimeEnumKey(MotelyEnums.MotelyBoosterPack, value);\n return key ?? `pack#${value}`;\n}\n\nexport function motelyBoosterPackDisplayNameFromKey(key: string): string {\n return `${key} Pack`;\n}\n\nexport function motelyItemDisplayNameFromKey(key: string): string {\n return key;\n}\n\nexport function motelyItemDisplayNameFromValue(value: number): string {\n const key = runtimeEnumKey(MotelyEnums.MotelyItemType, value & 0xffff);\n return key ?? `item#${value}`;\n}\n"],"mappings":";;;;;AAmBA,SAAgB,EAAmB,GAA2C;CAC5E,IAAM,IAAU,EAAiB,EAAS;CAC1C,IAAI,CAAC,GAAS,OAAO;CAErB,IAAI,EAAQ,aAAa,aAAa,EAAQ,QAAQ,EAAQ,MAAM;EAClE,IAAM,IAAM,EAAS,EAAQ,OACvB,IAAM,EAAS,EAAQ;EAC7B,IAAI,MAAQ,KAAA,KAAa,MAAQ,KAAA,GAC/B,OAAO;GACL,WAAW,EAAoB,OAAO;GACtC,SAAS;GACT,SAAS;GACT,UAAU;GACV,UAAU;GACV,aAAa,EAAQ;GACrB,UAAU;GACX;;CAIL,IAAM,IAAS,EAAc,EAAQ,YAAY;CACjD,IAAI,CAAC,GAAQ,OAAO;CAEpB,IAAM,IAAO,EAAW,EAAO;CAG/B,OAFK,IAEE;EACL,WAAW,EAAoB,EAAK,SAAS;EAC7C,SAAS,EAAO,IAAI;EACpB,SAAS,EAAO,IAAI;EACpB,UAAU,EAAK;EACf,UAAU,EAAK;EACf,aAAa,EAAQ;EACrB,UAAU,EAAQ;EACnB,GAViB;;AAgBpB,SAAgB,EAAsB,GAAc,IAAqC,WAAoC;CAC3H,IAAI,MAAa,WAAW;EAE1B,IAAM,IAAQ,wBAAwB,KAAK,EAAK;EAChD,IAAI,GAAO;GACP,IAAM,IAAO,EAAM,IACb,IAAO,EAAM,IACb,IAAM,EAAS,IACf,IAAM,EAAS;GACrB,IAAI,MAAQ,KAAA,KAAa,MAAQ,KAAA,GAC/B,OAAO;IACL,WAAW,EAAoB,OAAO;IACtC,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,aAAa;IACb,UAAU;IACX;;;CAKT,IAAM,IAAS,EAAc,EAAK;CAClC,IAAI,CAAC,GAAQ,OAAO;CAEpB,IAAM,IAAO,EAAW,EAAO;CAG/B,OAFK,IAEE;EACL,WAAW,EAAoB,EAAK,SAAS;EAC7C,SAAS,EAAO,IAAI;EACpB,SAAS,EAAO,IAAI;EACpB,UAAU,EAAK;EACf,UAAU,EAAK;EACf,aAAa;EACb;EACD,GAViB;;;;ACjFpB,IAAM,IAAc;AAEpB,SAAS,EACP,GACA,GACe;CACf,IAAM,IAAM,EAAW,OAAO,EAAM;CACpC,OAAO,OAAO,KAAQ,YAAY,EAAI,SAAS,IAAI,IAAM;;AAG3D,SAAgB,EAAsB,GAAuB;CAE3D,OADY,EAAe,EAAY,iBAAiB,IAAQ,IACzD,IAAO,QAAQ;;AAGxB,SAAgB,EAA6B,GAAqB;CAChE,OAAO;;AAGT,SAAgB,EAAyB,GAAuB;CAE9D,OADY,EAAe,EAAY,eAAe,EAC/C,IAAO,WAAW;;AAG3B,SAAgB,EAAgC,GAAqB;CACnE,OAAO;;AAGT,SAAgB,EAAqB,GAAuB;CAE1D,OADY,EAAe,EAAY,WAAW,EAC3C,IAAO,OAAO;;AAGvB,SAAgB,EAA4B,GAAqB;CAC/D,OAAO;;AAGT,SAAgB,EAA6B,GAAuB;CAElE,OADY,EAAe,EAAY,mBAAmB,EACnD,IAAO,QAAQ;;AAGxB,SAAgB,EAAoC,GAAqB;CACvE,OAAO,GAAG,EAAI;;AAGhB,SAAgB,EAA6B,GAAqB;CAChE,OAAO;;AAGT,SAAgB,EAA+B,GAAuB;CAEpE,OADY,EAAe,EAAY,gBAAgB,IAAQ,MACxD,IAAO,QAAQ"}
1
+ {"version":3,"file":"motely.js","names":[],"sources":["../src/decode/motelyItemFormats.ts","../src/decode/motelyItemDecoder.ts","../src/decode/motelySprite.ts","../src/motelyDisplay.ts","../src/hooks/useJamlLibrary.ts","../src/providers/MotelyProvider.tsx","../src/hooks/useMotelyRuntime.ts"],"sourcesContent":["export const MOTELY_ITEM_FORMATS_BY_VALUE = Object.freeze({\n 4096: Object.freeze({ value: 4096, enumName: \"TwoOfClubs\", displayName: \"2 of Clubs\", category: \"Standardcard\" }),\n 4097: Object.freeze({ value: 4097, enumName: \"ThreeOfClubs\", displayName: \"3 of Clubs\", category: \"Standardcard\" }),\n 4098: Object.freeze({ value: 4098, enumName: \"FourOfClubs\", displayName: \"4 of Clubs\", category: \"Standardcard\" }),\n 4099: Object.freeze({ value: 4099, enumName: \"FiveOfClubs\", displayName: \"5 of Clubs\", category: \"Standardcard\" }),\n 4100: Object.freeze({ value: 4100, enumName: \"SixOfClubs\", displayName: \"6 of Clubs\", category: \"Standardcard\" }),\n 4101: Object.freeze({ value: 4101, enumName: \"SevenOfClubs\", displayName: \"7 of Clubs\", category: \"Standardcard\" }),\n 4102: Object.freeze({ value: 4102, enumName: \"EightOfClubs\", displayName: \"8 of Clubs\", category: \"Standardcard\" }),\n 4103: Object.freeze({ value: 4103, enumName: \"NineOfClubs\", displayName: \"9 of Clubs\", category: \"Standardcard\" }),\n 4104: Object.freeze({ value: 4104, enumName: \"TenOfClubs\", displayName: \"10 of Clubs\", category: \"Standardcard\" }),\n 4105: Object.freeze({ value: 4105, enumName: \"JackOfClubs\", displayName: \"Jack of Clubs\", category: \"Standardcard\" }),\n 4106: Object.freeze({ value: 4106, enumName: \"QueenOfClubs\", displayName: \"Queen of Clubs\", category: \"Standardcard\" }),\n 4107: Object.freeze({ value: 4107, enumName: \"KingOfClubs\", displayName: \"King of Clubs\", category: \"Standardcard\" }),\n 4108: Object.freeze({ value: 4108, enumName: \"AceOfClubs\", displayName: \"Ace of Clubs\", category: \"Standardcard\" }),\n 4112: Object.freeze({ value: 4112, enumName: \"TwoOfDiamonds\", displayName: \"2 of Diamonds\", category: \"Standardcard\" }),\n 4113: Object.freeze({ value: 4113, enumName: \"ThreeOfDiamonds\", displayName: \"3 of Diamonds\", category: \"Standardcard\" }),\n 4114: Object.freeze({ value: 4114, enumName: \"FourOfDiamonds\", displayName: \"4 of Diamonds\", category: \"Standardcard\" }),\n 4115: Object.freeze({ value: 4115, enumName: \"FiveOfDiamonds\", displayName: \"5 of Diamonds\", category: \"Standardcard\" }),\n 4116: Object.freeze({ value: 4116, enumName: \"SixOfDiamonds\", displayName: \"6 of Diamonds\", category: \"Standardcard\" }),\n 4117: Object.freeze({ value: 4117, enumName: \"SevenOfDiamonds\", displayName: \"7 of Diamonds\", category: \"Standardcard\" }),\n 4118: Object.freeze({ value: 4118, enumName: \"EightOfDiamonds\", displayName: \"8 of Diamonds\", category: \"Standardcard\" }),\n 4119: Object.freeze({ value: 4119, enumName: \"NineOfDiamonds\", displayName: \"9 of Diamonds\", category: \"Standardcard\" }),\n 4120: Object.freeze({ value: 4120, enumName: \"TenOfDiamonds\", displayName: \"10 of Diamonds\", category: \"Standardcard\" }),\n 4121: Object.freeze({ value: 4121, enumName: \"JackOfDiamonds\", displayName: \"Jack of Diamonds\", category: \"Standardcard\" }),\n 4122: Object.freeze({ value: 4122, enumName: \"QueenOfDiamonds\", displayName: \"Queen of Diamonds\", category: \"Standardcard\" }),\n 4123: Object.freeze({ value: 4123, enumName: \"KingOfDiamonds\", displayName: \"King of Diamonds\", category: \"Standardcard\" }),\n 4124: Object.freeze({ value: 4124, enumName: \"AceOfDiamonds\", displayName: \"Ace of Diamonds\", category: \"Standardcard\" }),\n 4128: Object.freeze({ value: 4128, enumName: \"TwoOfHearts\", displayName: \"2 of Hearts\", category: \"Standardcard\" }),\n 4129: Object.freeze({ value: 4129, enumName: \"ThreeOfHearts\", displayName: \"3 of Hearts\", category: \"Standardcard\" }),\n 4130: Object.freeze({ value: 4130, enumName: \"FourOfHearts\", displayName: \"4 of Hearts\", category: \"Standardcard\" }),\n 4131: Object.freeze({ value: 4131, enumName: \"FiveOfHearts\", displayName: \"5 of Hearts\", category: \"Standardcard\" }),\n 4132: Object.freeze({ value: 4132, enumName: \"SixOfHearts\", displayName: \"6 of Hearts\", category: \"Standardcard\" }),\n 4133: Object.freeze({ value: 4133, enumName: \"SevenOfHearts\", displayName: \"7 of Hearts\", category: \"Standardcard\" }),\n 4134: Object.freeze({ value: 4134, enumName: \"EightOfHearts\", displayName: \"8 of Hearts\", category: \"Standardcard\" }),\n 4135: Object.freeze({ value: 4135, enumName: \"NineOfHearts\", displayName: \"9 of Hearts\", category: \"Standardcard\" }),\n 4136: Object.freeze({ value: 4136, enumName: \"TenOfHearts\", displayName: \"10 of Hearts\", category: \"Standardcard\" }),\n 4137: Object.freeze({ value: 4137, enumName: \"JackOfHearts\", displayName: \"Jack of Hearts\", category: \"Standardcard\" }),\n 4138: Object.freeze({ value: 4138, enumName: \"QueenOfHearts\", displayName: \"Queen of Hearts\", category: \"Standardcard\" }),\n 4139: Object.freeze({ value: 4139, enumName: \"KingOfHearts\", displayName: \"King of Hearts\", category: \"Standardcard\" }),\n 4140: Object.freeze({ value: 4140, enumName: \"AceOfHearts\", displayName: \"Ace of Hearts\", category: \"Standardcard\" }),\n 4144: Object.freeze({ value: 4144, enumName: \"TwoOfSpades\", displayName: \"2 of Spades\", category: \"Standardcard\" }),\n 4145: Object.freeze({ value: 4145, enumName: \"ThreeOfSpades\", displayName: \"3 of Spades\", category: \"Standardcard\" }),\n 4146: Object.freeze({ value: 4146, enumName: \"FourOfSpades\", displayName: \"4 of Spades\", category: \"Standardcard\" }),\n 4147: Object.freeze({ value: 4147, enumName: \"FiveOfSpades\", displayName: \"5 of Spades\", category: \"Standardcard\" }),\n 4148: Object.freeze({ value: 4148, enumName: \"SixOfSpades\", displayName: \"6 of Spades\", category: \"Standardcard\" }),\n 4149: Object.freeze({ value: 4149, enumName: \"SevenOfSpades\", displayName: \"7 of Spades\", category: \"Standardcard\" }),\n 4150: Object.freeze({ value: 4150, enumName: \"EightOfSpades\", displayName: \"8 of Spades\", category: \"Standardcard\" }),\n 4151: Object.freeze({ value: 4151, enumName: \"NineOfSpades\", displayName: \"9 of Spades\", category: \"Standardcard\" }),\n 4152: Object.freeze({ value: 4152, enumName: \"TenOfSpades\", displayName: \"10 of Spades\", category: \"Standardcard\" }),\n 4153: Object.freeze({ value: 4153, enumName: \"JackOfSpades\", displayName: \"Jack of Spades\", category: \"Standardcard\" }),\n 4154: Object.freeze({ value: 4154, enumName: \"QueenOfSpades\", displayName: \"Queen of Spades\", category: \"Standardcard\" }),\n 4155: Object.freeze({ value: 4155, enumName: \"KingOfSpades\", displayName: \"King of Spades\", category: \"Standardcard\" }),\n 4156: Object.freeze({ value: 4156, enumName: \"AceOfSpades\", displayName: \"Ace of Spades\", category: \"Standardcard\" }),\n 8192: Object.freeze({ value: 8192, enumName: \"Familiar\", displayName: \"Familiar\", category: \"SpectralCard\" }),\n 8193: Object.freeze({ value: 8193, enumName: \"Grim\", displayName: \"Grim\", category: \"SpectralCard\" }),\n 8194: Object.freeze({ value: 8194, enumName: \"Incantation\", displayName: \"Incantation\", category: \"SpectralCard\" }),\n 8195: Object.freeze({ value: 8195, enumName: \"Talisman\", displayName: \"Talisman\", category: \"SpectralCard\" }),\n 8196: Object.freeze({ value: 8196, enumName: \"Aura\", displayName: \"Aura\", category: \"SpectralCard\" }),\n 8197: Object.freeze({ value: 8197, enumName: \"Wraith\", displayName: \"Wraith\", category: \"SpectralCard\" }),\n 8198: Object.freeze({ value: 8198, enumName: \"Sigil\", displayName: \"Sigil\", category: \"SpectralCard\" }),\n 8199: Object.freeze({ value: 8199, enumName: \"Ouija\", displayName: \"Ouija\", category: \"SpectralCard\" }),\n 8200: Object.freeze({ value: 8200, enumName: \"Ectoplasm\", displayName: \"Ectoplasm\", category: \"SpectralCard\" }),\n 8201: Object.freeze({ value: 8201, enumName: \"Immolate\", displayName: \"Immolate\", category: \"SpectralCard\" }),\n 8202: Object.freeze({ value: 8202, enumName: \"Ankh\", displayName: \"Ankh\", category: \"SpectralCard\" }),\n 8203: Object.freeze({ value: 8203, enumName: \"DejaVu\", displayName: \"Deja Vu\", category: \"SpectralCard\" }),\n 8204: Object.freeze({ value: 8204, enumName: \"Hex\", displayName: \"Hex\", category: \"SpectralCard\" }),\n 8205: Object.freeze({ value: 8205, enumName: \"Trance\", displayName: \"Trance\", category: \"SpectralCard\" }),\n 8206: Object.freeze({ value: 8206, enumName: \"Medium\", displayName: \"Medium\", category: \"SpectralCard\" }),\n 8207: Object.freeze({ value: 8207, enumName: \"Cryptid\", displayName: \"Cryptid\", category: \"SpectralCard\" }),\n 8208: Object.freeze({ value: 8208, enumName: \"TheSoul\", displayName: \"The Soul\", category: \"SpectralCard\" }),\n 8209: Object.freeze({ value: 8209, enumName: \"BlackHole\", displayName: \"Black Hole\", category: \"SpectralCard\" }),\n 12288: Object.freeze({ value: 12288, enumName: \"TheFool\", displayName: \"The Fool\", category: \"TarotCard\" }),\n 12289: Object.freeze({ value: 12289, enumName: \"TheMagician\", displayName: \"The Magician\", category: \"TarotCard\" }),\n 12290: Object.freeze({ value: 12290, enumName: \"TheHighPriestess\", displayName: \"The High Priestess\", category: \"TarotCard\" }),\n 12291: Object.freeze({ value: 12291, enumName: \"TheEmpress\", displayName: \"The Empress\", category: \"TarotCard\" }),\n 12292: Object.freeze({ value: 12292, enumName: \"TheEmperor\", displayName: \"The Emperor\", category: \"TarotCard\" }),\n 12293: Object.freeze({ value: 12293, enumName: \"TheHierophant\", displayName: \"The Hierophant\", category: \"TarotCard\" }),\n 12294: Object.freeze({ value: 12294, enumName: \"TheLovers\", displayName: \"The Lovers\", category: \"TarotCard\" }),\n 12295: Object.freeze({ value: 12295, enumName: \"TheChariot\", displayName: \"The Chariot\", category: \"TarotCard\" }),\n 12296: Object.freeze({ value: 12296, enumName: \"Justice\", displayName: \"Justice\", category: \"TarotCard\" }),\n 12297: Object.freeze({ value: 12297, enumName: \"TheHermit\", displayName: \"The Hermit\", category: \"TarotCard\" }),\n 12298: Object.freeze({ value: 12298, enumName: \"TheWheelOfFortune\", displayName: \"The Wheel of Fortune\", category: \"TarotCard\" }),\n 12299: Object.freeze({ value: 12299, enumName: \"Strength\", displayName: \"Strength\", category: \"TarotCard\" }),\n 12300: Object.freeze({ value: 12300, enumName: \"TheHangedMan\", displayName: \"The Hanged Man\", category: \"TarotCard\" }),\n 12301: Object.freeze({ value: 12301, enumName: \"Death\", displayName: \"Death\", category: \"TarotCard\" }),\n 12302: Object.freeze({ value: 12302, enumName: \"Temperance\", displayName: \"Temperance\", category: \"TarotCard\" }),\n 12303: Object.freeze({ value: 12303, enumName: \"TheDevil\", displayName: \"The Devil\", category: \"TarotCard\" }),\n 12304: Object.freeze({ value: 12304, enumName: \"TheTower\", displayName: \"The Tower\", category: \"TarotCard\" }),\n 12305: Object.freeze({ value: 12305, enumName: \"TheStar\", displayName: \"The Star\", category: \"TarotCard\" }),\n 12306: Object.freeze({ value: 12306, enumName: \"TheMoon\", displayName: \"The Moon\", category: \"TarotCard\" }),\n 12307: Object.freeze({ value: 12307, enumName: \"TheSun\", displayName: \"The Sun\", category: \"TarotCard\" }),\n 12308: Object.freeze({ value: 12308, enumName: \"Judgement\", displayName: \"Judgement\", category: \"TarotCard\" }),\n 12309: Object.freeze({ value: 12309, enumName: \"TheWorld\", displayName: \"The World\", category: \"TarotCard\" }),\n 16384: Object.freeze({ value: 16384, enumName: \"Mercury\", displayName: \"Mercury\", category: \"PlanetCard\" }),\n 16385: Object.freeze({ value: 16385, enumName: \"Venus\", displayName: \"Venus\", category: \"PlanetCard\" }),\n 16386: Object.freeze({ value: 16386, enumName: \"Earth\", displayName: \"Earth\", category: \"PlanetCard\" }),\n 16387: Object.freeze({ value: 16387, enumName: \"Mars\", displayName: \"Mars\", category: \"PlanetCard\" }),\n 16388: Object.freeze({ value: 16388, enumName: \"Jupiter\", displayName: \"Jupiter\", category: \"PlanetCard\" }),\n 16389: Object.freeze({ value: 16389, enumName: \"Saturn\", displayName: \"Saturn\", category: \"PlanetCard\" }),\n 16390: Object.freeze({ value: 16390, enumName: \"Uranus\", displayName: \"Uranus\", category: \"PlanetCard\" }),\n 16391: Object.freeze({ value: 16391, enumName: \"Neptune\", displayName: \"Neptune\", category: \"PlanetCard\" }),\n 16392: Object.freeze({ value: 16392, enumName: \"Pluto\", displayName: \"Pluto\", category: \"PlanetCard\" }),\n 16393: Object.freeze({ value: 16393, enumName: \"PlanetX\", displayName: \"Planet X\", category: \"PlanetCard\" }),\n 16394: Object.freeze({ value: 16394, enumName: \"Ceres\", displayName: \"Ceres\", category: \"PlanetCard\" }),\n 16395: Object.freeze({ value: 16395, enumName: \"Eris\", displayName: \"Eris\", category: \"PlanetCard\" }),\n 20480: Object.freeze({ value: 20480, enumName: \"Joker\", displayName: \"Joker\", category: \"Joker\" }),\n 20481: Object.freeze({ value: 20481, enumName: \"GreedyJoker\", displayName: \"Greedy Joker\", category: \"Joker\" }),\n 20482: Object.freeze({ value: 20482, enumName: \"LustyJoker\", displayName: \"Lusty Joker\", category: \"Joker\" }),\n 20483: Object.freeze({ value: 20483, enumName: \"WrathfulJoker\", displayName: \"Wrathful Joker\", category: \"Joker\" }),\n 20484: Object.freeze({ value: 20484, enumName: \"GluttonousJoker\", displayName: \"Gluttonous Joker\", category: \"Joker\" }),\n 20485: Object.freeze({ value: 20485, enumName: \"JollyJoker\", displayName: \"Jolly Joker\", category: \"Joker\" }),\n 20486: Object.freeze({ value: 20486, enumName: \"ZanyJoker\", displayName: \"Zany Joker\", category: \"Joker\" }),\n 20487: Object.freeze({ value: 20487, enumName: \"MadJoker\", displayName: \"Mad Joker\", category: \"Joker\" }),\n 20488: Object.freeze({ value: 20488, enumName: \"CrazyJoker\", displayName: \"Crazy Joker\", category: \"Joker\" }),\n 20489: Object.freeze({ value: 20489, enumName: \"DrollJoker\", displayName: \"Droll Joker\", category: \"Joker\" }),\n 20490: Object.freeze({ value: 20490, enumName: \"SlyJoker\", displayName: \"Sly Joker\", category: \"Joker\" }),\n 20491: Object.freeze({ value: 20491, enumName: \"WilyJoker\", displayName: \"Wily Joker\", category: \"Joker\" }),\n 20492: Object.freeze({ value: 20492, enumName: \"CleverJoker\", displayName: \"Clever Joker\", category: \"Joker\" }),\n 20493: Object.freeze({ value: 20493, enumName: \"DeviousJoker\", displayName: \"Devious Joker\", category: \"Joker\" }),\n 20494: Object.freeze({ value: 20494, enumName: \"CraftyJoker\", displayName: \"Crafty Joker\", category: \"Joker\" }),\n 20495: Object.freeze({ value: 20495, enumName: \"HalfJoker\", displayName: \"Half Joker\", category: \"Joker\" }),\n 20496: Object.freeze({ value: 20496, enumName: \"CreditCard\", displayName: \"Credit Card\", category: \"Joker\" }),\n 20497: Object.freeze({ value: 20497, enumName: \"Banner\", displayName: \"Banner\", category: \"Joker\" }),\n 20498: Object.freeze({ value: 20498, enumName: \"MysticSummit\", displayName: \"Mystic Summit\", category: \"Joker\" }),\n 20499: Object.freeze({ value: 20499, enumName: \"EightBall\", displayName: \"8 Ball\", category: \"Joker\" }),\n 20500: Object.freeze({ value: 20500, enumName: \"Misprint\", displayName: \"Misprint\", category: \"Joker\" }),\n 20501: Object.freeze({ value: 20501, enumName: \"RaisedFist\", displayName: \"Raised Fist\", category: \"Joker\" }),\n 20502: Object.freeze({ value: 20502, enumName: \"ChaostheClown\", displayName: \"Chaos the Clown\", category: \"Joker\" }),\n 20503: Object.freeze({ value: 20503, enumName: \"ScaryFace\", displayName: \"Scary Face\", category: \"Joker\" }),\n 20504: Object.freeze({ value: 20504, enumName: \"AbstractJoker\", displayName: \"Abstract Joker\", category: \"Joker\" }),\n 20505: Object.freeze({ value: 20505, enumName: \"DelayedGratification\", displayName: \"Delayed Gratification\", category: \"Joker\" }),\n 20506: Object.freeze({ value: 20506, enumName: \"GrosMichel\", displayName: \"Gros Michel\", category: \"Joker\" }),\n 20507: Object.freeze({ value: 20507, enumName: \"EvenSteven\", displayName: \"Even Steven\", category: \"Joker\" }),\n 20508: Object.freeze({ value: 20508, enumName: \"OddTodd\", displayName: \"Odd Todd\", category: \"Joker\" }),\n 20509: Object.freeze({ value: 20509, enumName: \"Scholar\", displayName: \"Scholar\", category: \"Joker\" }),\n 20510: Object.freeze({ value: 20510, enumName: \"BusinessCard\", displayName: \"Business Card\", category: \"Joker\" }),\n 20511: Object.freeze({ value: 20511, enumName: \"Supernova\", displayName: \"Supernova\", category: \"Joker\" }),\n 20512: Object.freeze({ value: 20512, enumName: \"RideTheBus\", displayName: \"Ride the Bus\", category: \"Joker\" }),\n 20513: Object.freeze({ value: 20513, enumName: \"Egg\", displayName: \"Egg\", category: \"Joker\" }),\n 20514: Object.freeze({ value: 20514, enumName: \"Runner\", displayName: \"Runner\", category: \"Joker\" }),\n 20515: Object.freeze({ value: 20515, enumName: \"IceCream\", displayName: \"Ice Cream\", category: \"Joker\" }),\n 20516: Object.freeze({ value: 20516, enumName: \"Splash\", displayName: \"Splash\", category: \"Joker\" }),\n 20517: Object.freeze({ value: 20517, enumName: \"BlueJoker\", displayName: \"Blue Joker\", category: \"Joker\" }),\n 20518: Object.freeze({ value: 20518, enumName: \"FacelessJoker\", displayName: \"Faceless Joker\", category: \"Joker\" }),\n 20519: Object.freeze({ value: 20519, enumName: \"GreenJoker\", displayName: \"Green Joker\", category: \"Joker\" }),\n 20520: Object.freeze({ value: 20520, enumName: \"Superposition\", displayName: \"Superposition\", category: \"Joker\" }),\n 20521: Object.freeze({ value: 20521, enumName: \"ToDoList\", displayName: \"To Do List\", category: \"Joker\" }),\n 20522: Object.freeze({ value: 20522, enumName: \"Cavendish\", displayName: \"Cavendish\", category: \"Joker\" }),\n 20523: Object.freeze({ value: 20523, enumName: \"RedCard\", displayName: \"Red Card\", category: \"Joker\" }),\n 20524: Object.freeze({ value: 20524, enumName: \"SquareJoker\", displayName: \"Square Joker\", category: \"Joker\" }),\n 20525: Object.freeze({ value: 20525, enumName: \"RiffRaff\", displayName: \"Riff-raff\", category: \"Joker\" }),\n 20526: Object.freeze({ value: 20526, enumName: \"Photograph\", displayName: \"Photograph\", category: \"Joker\" }),\n 20527: Object.freeze({ value: 20527, enumName: \"ReservedParking\", displayName: \"Reserved Parking\", category: \"Joker\" }),\n 20528: Object.freeze({ value: 20528, enumName: \"MailInRebate\", displayName: \"Mail In Rebate\", category: \"Joker\" }),\n 20529: Object.freeze({ value: 20529, enumName: \"Hallucination\", displayName: \"Hallucination\", category: \"Joker\" }),\n 20530: Object.freeze({ value: 20530, enumName: \"FortuneTeller\", displayName: \"Fortune Teller\", category: \"Joker\" }),\n 20531: Object.freeze({ value: 20531, enumName: \"Juggler\", displayName: \"Juggler\", category: \"Joker\" }),\n 20532: Object.freeze({ value: 20532, enumName: \"Drunkard\", displayName: \"Drunkard\", category: \"Joker\" }),\n 20533: Object.freeze({ value: 20533, enumName: \"GoldenJoker\", displayName: \"Golden Joker\", category: \"Joker\" }),\n 20534: Object.freeze({ value: 20534, enumName: \"Popcorn\", displayName: \"Popcorn\", category: \"Joker\" }),\n 20535: Object.freeze({ value: 20535, enumName: \"WalkieTalkie\", displayName: \"Walkie Talkie\", category: \"Joker\" }),\n 20536: Object.freeze({ value: 20536, enumName: \"SmileyFace\", displayName: \"Smiley Face\", category: \"Joker\" }),\n 20537: Object.freeze({ value: 20537, enumName: \"GoldenTicket\", displayName: \"Golden Ticket\", category: \"Joker\" }),\n 20538: Object.freeze({ value: 20538, enumName: \"Swashbuckler\", displayName: \"Swashbuckler\", category: \"Joker\" }),\n 20539: Object.freeze({ value: 20539, enumName: \"HangingChad\", displayName: \"Hanging Chad\", category: \"Joker\" }),\n 20540: Object.freeze({ value: 20540, enumName: \"ShootTheMoon\", displayName: \"Shoot the Moon\", category: \"Joker\" }),\n 21504: Object.freeze({ value: 21504, enumName: \"JokerStencil\", displayName: \"Joker Stencil\", category: \"Joker\" }),\n 21505: Object.freeze({ value: 21505, enumName: \"FourFingers\", displayName: \"Four Fingers\", category: \"Joker\" }),\n 21506: Object.freeze({ value: 21506, enumName: \"Mime\", displayName: \"Mime\", category: \"Joker\" }),\n 21507: Object.freeze({ value: 21507, enumName: \"CeremonialDagger\", displayName: \"Ceremonial Dagger\", category: \"Joker\" }),\n 21508: Object.freeze({ value: 21508, enumName: \"MarbleJoker\", displayName: \"Marble Joker\", category: \"Joker\" }),\n 21509: Object.freeze({ value: 21509, enumName: \"LoyaltyCard\", displayName: \"Loyalty Card\", category: \"Joker\" }),\n 21510: Object.freeze({ value: 21510, enumName: \"Dusk\", displayName: \"Dusk\", category: \"Joker\" }),\n 21511: Object.freeze({ value: 21511, enumName: \"Fibonacci\", displayName: \"Fibonacci\", category: \"Joker\" }),\n 21512: Object.freeze({ value: 21512, enumName: \"SteelJoker\", displayName: \"Steel Joker\", category: \"Joker\" }),\n 21513: Object.freeze({ value: 21513, enumName: \"Hack\", displayName: \"Hack\", category: \"Joker\" }),\n 21514: Object.freeze({ value: 21514, enumName: \"Pareidolia\", displayName: \"Pareidolia\", category: \"Joker\" }),\n 21515: Object.freeze({ value: 21515, enumName: \"SpaceJoker\", displayName: \"Space Joker\", category: \"Joker\" }),\n 21516: Object.freeze({ value: 21516, enumName: \"Burglar\", displayName: \"Burglar\", category: \"Joker\" }),\n 21517: Object.freeze({ value: 21517, enumName: \"Blackboard\", displayName: \"Blackboard\", category: \"Joker\" }),\n 21518: Object.freeze({ value: 21518, enumName: \"SixthSense\", displayName: \"Sixth Sense\", category: \"Joker\" }),\n 21519: Object.freeze({ value: 21519, enumName: \"Constellation\", displayName: \"Constellation\", category: \"Joker\" }),\n 21520: Object.freeze({ value: 21520, enumName: \"Hiker\", displayName: \"Hiker\", category: \"Joker\" }),\n 21521: Object.freeze({ value: 21521, enumName: \"CardSharp\", displayName: \"Card Sharp\", category: \"Joker\" }),\n 21522: Object.freeze({ value: 21522, enumName: \"Madness\", displayName: \"Madness\", category: \"Joker\" }),\n 21523: Object.freeze({ value: 21523, enumName: \"Seance\", displayName: \"Seance\", category: \"Joker\" }),\n 21524: Object.freeze({ value: 21524, enumName: \"Vampire\", displayName: \"Vampire\", category: \"Joker\" }),\n 21525: Object.freeze({ value: 21525, enumName: \"Shortcut\", displayName: \"Shortcut\", category: \"Joker\" }),\n 21526: Object.freeze({ value: 21526, enumName: \"Hologram\", displayName: \"Hologram\", category: \"Joker\" }),\n 21527: Object.freeze({ value: 21527, enumName: \"Cloud9\", displayName: \"Cloud 9\", category: \"Joker\" }),\n 21528: Object.freeze({ value: 21528, enumName: \"Rocket\", displayName: \"Rocket\", category: \"Joker\" }),\n 21529: Object.freeze({ value: 21529, enumName: \"MidasMask\", displayName: \"Midas Mask\", category: \"Joker\" }),\n 21530: Object.freeze({ value: 21530, enumName: \"Luchador\", displayName: \"Luchador\", category: \"Joker\" }),\n 21531: Object.freeze({ value: 21531, enumName: \"GiftCard\", displayName: \"Gift Card\", category: \"Joker\" }),\n 21532: Object.freeze({ value: 21532, enumName: \"TurtleBean\", displayName: \"Turtle Bean\", category: \"Joker\" }),\n 21533: Object.freeze({ value: 21533, enumName: \"Erosion\", displayName: \"Erosion\", category: \"Joker\" }),\n 21534: Object.freeze({ value: 21534, enumName: \"ToTheMoon\", displayName: \"To the Moon\", category: \"Joker\" }),\n 21535: Object.freeze({ value: 21535, enumName: \"StoneJoker\", displayName: \"Stone Joker\", category: \"Joker\" }),\n 21536: Object.freeze({ value: 21536, enumName: \"LuckyCat\", displayName: \"Lucky Cat\", category: \"Joker\" }),\n 21537: Object.freeze({ value: 21537, enumName: \"Bull\", displayName: \"Bull\", category: \"Joker\" }),\n 21538: Object.freeze({ value: 21538, enumName: \"DietCola\", displayName: \"Diet Cola\", category: \"Joker\" }),\n 21539: Object.freeze({ value: 21539, enumName: \"TradingCard\", displayName: \"Trading Card\", category: \"Joker\" }),\n 21540: Object.freeze({ value: 21540, enumName: \"FlashCard\", displayName: \"Flash Card\", category: \"Joker\" }),\n 21541: Object.freeze({ value: 21541, enumName: \"SpareTrousers\", displayName: \"Spare Trousers\", category: \"Joker\" }),\n 21542: Object.freeze({ value: 21542, enumName: \"Ramen\", displayName: \"Ramen\", category: \"Joker\" }),\n 21543: Object.freeze({ value: 21543, enumName: \"Seltzer\", displayName: \"Seltzer\", category: \"Joker\" }),\n 21544: Object.freeze({ value: 21544, enumName: \"Castle\", displayName: \"Castle\", category: \"Joker\" }),\n 21545: Object.freeze({ value: 21545, enumName: \"MrBones\", displayName: \"Mr. Bones\", category: \"Joker\" }),\n 21546: Object.freeze({ value: 21546, enumName: \"Acrobat\", displayName: \"Acrobat\", category: \"Joker\" }),\n 21547: Object.freeze({ value: 21547, enumName: \"SockAndBuskin\", displayName: \"Sock and Buskin\", category: \"Joker\" }),\n 21548: Object.freeze({ value: 21548, enumName: \"Troubadour\", displayName: \"Troubadour\", category: \"Joker\" }),\n 21549: Object.freeze({ value: 21549, enumName: \"Certificate\", displayName: \"Certificate\", category: \"Joker\" }),\n 21550: Object.freeze({ value: 21550, enumName: \"SmearedJoker\", displayName: \"Smeared Joker\", category: \"Joker\" }),\n 21551: Object.freeze({ value: 21551, enumName: \"Throwback\", displayName: \"Throwback\", category: \"Joker\" }),\n 21552: Object.freeze({ value: 21552, enumName: \"RoughGem\", displayName: \"Rough Gem\", category: \"Joker\" }),\n 21553: Object.freeze({ value: 21553, enumName: \"Bloodstone\", displayName: \"Bloodstone\", category: \"Joker\" }),\n 21554: Object.freeze({ value: 21554, enumName: \"Arrowhead\", displayName: \"Arrowhead\", category: \"Joker\" }),\n 21555: Object.freeze({ value: 21555, enumName: \"OnyxAgate\", displayName: \"Onyx Agate\", category: \"Joker\" }),\n 21556: Object.freeze({ value: 21556, enumName: \"GlassJoker\", displayName: \"Glass Joker\", category: \"Joker\" }),\n 21557: Object.freeze({ value: 21557, enumName: \"Showman\", displayName: \"Showman\", category: \"Joker\" }),\n 21558: Object.freeze({ value: 21558, enumName: \"FlowerPot\", displayName: \"Flower Pot\", category: \"Joker\" }),\n 21559: Object.freeze({ value: 21559, enumName: \"MerryAndy\", displayName: \"Merry Andy\", category: \"Joker\" }),\n 21560: Object.freeze({ value: 21560, enumName: \"OopsAll6s\", displayName: \"Oops! All 6s\", category: \"Joker\" }),\n 21561: Object.freeze({ value: 21561, enumName: \"TheIdol\", displayName: \"The Idol\", category: \"Joker\" }),\n 21562: Object.freeze({ value: 21562, enumName: \"SeeingDouble\", displayName: \"Seeing Double\", category: \"Joker\" }),\n 21563: Object.freeze({ value: 21563, enumName: \"Matador\", displayName: \"Matador\", category: \"Joker\" }),\n 21564: Object.freeze({ value: 21564, enumName: \"Satellite\", displayName: \"Satellite\", category: \"Joker\" }),\n 21565: Object.freeze({ value: 21565, enumName: \"Cartomancer\", displayName: \"Cartomancer\", category: \"Joker\" }),\n 21566: Object.freeze({ value: 21566, enumName: \"Astronomer\", displayName: \"Astronomer\", category: \"Joker\" }),\n 21567: Object.freeze({ value: 21567, enumName: \"Bootstraps\", displayName: \"Bootstraps\", category: \"Joker\" }),\n 22528: Object.freeze({ value: 22528, enumName: \"DNA\", displayName: \"DNA\", category: \"Joker\" }),\n 22529: Object.freeze({ value: 22529, enumName: \"Vagabond\", displayName: \"Vagabond\", category: \"Joker\" }),\n 22530: Object.freeze({ value: 22530, enumName: \"Baron\", displayName: \"Baron\", category: \"Joker\" }),\n 22531: Object.freeze({ value: 22531, enumName: \"Obelisk\", displayName: \"Obelisk\", category: \"Joker\" }),\n 22532: Object.freeze({ value: 22532, enumName: \"BaseballCard\", displayName: \"Baseball Card\", category: \"Joker\" }),\n 22533: Object.freeze({ value: 22533, enumName: \"AncientJoker\", displayName: \"Ancient Joker\", category: \"Joker\" }),\n 22534: Object.freeze({ value: 22534, enumName: \"Campfire\", displayName: \"Campfire\", category: \"Joker\" }),\n 22535: Object.freeze({ value: 22535, enumName: \"Blueprint\", displayName: \"Blueprint\", category: \"Joker\" }),\n 22536: Object.freeze({ value: 22536, enumName: \"WeeJoker\", displayName: \"Wee Joker\", category: \"Joker\" }),\n 22537: Object.freeze({ value: 22537, enumName: \"HitTheRoad\", displayName: \"Hit the Road\", category: \"Joker\" }),\n 22538: Object.freeze({ value: 22538, enumName: \"TheDuo\", displayName: \"The Duo\", category: \"Joker\" }),\n 22539: Object.freeze({ value: 22539, enumName: \"TheTrio\", displayName: \"The Trio\", category: \"Joker\" }),\n 22540: Object.freeze({ value: 22540, enumName: \"TheFamily\", displayName: \"The Family\", category: \"Joker\" }),\n 22541: Object.freeze({ value: 22541, enumName: \"TheOrder\", displayName: \"The Order\", category: \"Joker\" }),\n 22542: Object.freeze({ value: 22542, enumName: \"TheTribe\", displayName: \"The Tribe\", category: \"Joker\" }),\n 22543: Object.freeze({ value: 22543, enumName: \"Stuntman\", displayName: \"Stuntman\", category: \"Joker\" }),\n 22544: Object.freeze({ value: 22544, enumName: \"InvisibleJoker\", displayName: \"Invisible Joker\", category: \"Joker\" }),\n 22545: Object.freeze({ value: 22545, enumName: \"Brainstorm\", displayName: \"Brainstorm\", category: \"Joker\" }),\n 22546: Object.freeze({ value: 22546, enumName: \"DriversLicense\", displayName: \"Driver\\u0027s License\", category: \"Joker\" }),\n 22547: Object.freeze({ value: 22547, enumName: \"BurntJoker\", displayName: \"Burnt Joker\", category: \"Joker\" }),\n 23552: Object.freeze({ value: 23552, enumName: \"Canio\", displayName: \"Canio\", category: \"Joker\" }),\n 23553: Object.freeze({ value: 23553, enumName: \"Triboulet\", displayName: \"Triboulet\", category: \"Joker\" }),\n 23554: Object.freeze({ value: 23554, enumName: \"Yorick\", displayName: \"Yorick\", category: \"Joker\" }),\n 23555: Object.freeze({ value: 23555, enumName: \"Chicot\", displayName: \"Chicot\", category: \"Joker\" }),\n 23556: Object.freeze({ value: 23556, enumName: \"Perkeo\", displayName: \"Perkeo\", category: \"Joker\" }),\n 61440: Object.freeze({ value: 61440, enumName: \"Invalid\", displayName: \"Invalid\", category: \"Invalid\" }),\n 61441: Object.freeze({ value: 61441, enumName: \"NotImplemented\", displayName: \"Not Implemented\", category: \"Invalid\" }),\n 61442: Object.freeze({ value: 61442, enumName: \"JokerExcludedByStream\", displayName: \"Joker Excluded By Stream\", category: \"Invalid\" }),\n 61443: Object.freeze({ value: 61443, enumName: \"PlanetExcludedByStream\", displayName: \"Planet Excluded By Stream\", category: \"Invalid\" }),\n 61444: Object.freeze({ value: 61444, enumName: \"TarotExcludedByStream\", displayName: \"Tarot Excluded By Stream\", category: \"Invalid\" }),\n 61445: Object.freeze({ value: 61445, enumName: \"SpectralExcludedByStream\", displayName: \"Spectral Excluded By Stream\", category: \"Invalid\" }),\n});\n\nexport const MOTELY_ITEM_FORMATS_BY_ENUM_NAME = Object.freeze({\n AbstractJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20504],\n AceOfClubs: MOTELY_ITEM_FORMATS_BY_VALUE[4108],\n AceOfDiamonds: MOTELY_ITEM_FORMATS_BY_VALUE[4124],\n AceOfHearts: MOTELY_ITEM_FORMATS_BY_VALUE[4140],\n AceOfSpades: MOTELY_ITEM_FORMATS_BY_VALUE[4156],\n Acrobat: MOTELY_ITEM_FORMATS_BY_VALUE[21546],\n AncientJoker: MOTELY_ITEM_FORMATS_BY_VALUE[22533],\n Ankh: MOTELY_ITEM_FORMATS_BY_VALUE[8202],\n Arrowhead: MOTELY_ITEM_FORMATS_BY_VALUE[21554],\n Astronomer: MOTELY_ITEM_FORMATS_BY_VALUE[21566],\n Aura: MOTELY_ITEM_FORMATS_BY_VALUE[8196],\n Banner: MOTELY_ITEM_FORMATS_BY_VALUE[20497],\n Baron: MOTELY_ITEM_FORMATS_BY_VALUE[22530],\n BaseballCard: MOTELY_ITEM_FORMATS_BY_VALUE[22532],\n BlackHole: MOTELY_ITEM_FORMATS_BY_VALUE[8209],\n Blackboard: MOTELY_ITEM_FORMATS_BY_VALUE[21517],\n Bloodstone: MOTELY_ITEM_FORMATS_BY_VALUE[21553],\n BlueJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20517],\n Blueprint: MOTELY_ITEM_FORMATS_BY_VALUE[22535],\n Bootstraps: MOTELY_ITEM_FORMATS_BY_VALUE[21567],\n Brainstorm: MOTELY_ITEM_FORMATS_BY_VALUE[22545],\n Bull: MOTELY_ITEM_FORMATS_BY_VALUE[21537],\n Burglar: MOTELY_ITEM_FORMATS_BY_VALUE[21516],\n BurntJoker: MOTELY_ITEM_FORMATS_BY_VALUE[22547],\n BusinessCard: MOTELY_ITEM_FORMATS_BY_VALUE[20510],\n Campfire: MOTELY_ITEM_FORMATS_BY_VALUE[22534],\n Canio: MOTELY_ITEM_FORMATS_BY_VALUE[23552],\n CardSharp: MOTELY_ITEM_FORMATS_BY_VALUE[21521],\n Cartomancer: MOTELY_ITEM_FORMATS_BY_VALUE[21565],\n Castle: MOTELY_ITEM_FORMATS_BY_VALUE[21544],\n Cavendish: MOTELY_ITEM_FORMATS_BY_VALUE[20522],\n CeremonialDagger: MOTELY_ITEM_FORMATS_BY_VALUE[21507],\n Ceres: MOTELY_ITEM_FORMATS_BY_VALUE[16394],\n Certificate: MOTELY_ITEM_FORMATS_BY_VALUE[21549],\n ChaostheClown: MOTELY_ITEM_FORMATS_BY_VALUE[20502],\n Chicot: MOTELY_ITEM_FORMATS_BY_VALUE[23555],\n CleverJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20492],\n Cloud9: MOTELY_ITEM_FORMATS_BY_VALUE[21527],\n Constellation: MOTELY_ITEM_FORMATS_BY_VALUE[21519],\n CraftyJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20494],\n CrazyJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20488],\n CreditCard: MOTELY_ITEM_FORMATS_BY_VALUE[20496],\n Cryptid: MOTELY_ITEM_FORMATS_BY_VALUE[8207],\n DNA: MOTELY_ITEM_FORMATS_BY_VALUE[22528],\n Death: MOTELY_ITEM_FORMATS_BY_VALUE[12301],\n DejaVu: MOTELY_ITEM_FORMATS_BY_VALUE[8203],\n DelayedGratification: MOTELY_ITEM_FORMATS_BY_VALUE[20505],\n DeviousJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20493],\n DietCola: MOTELY_ITEM_FORMATS_BY_VALUE[21538],\n DriversLicense: MOTELY_ITEM_FORMATS_BY_VALUE[22546],\n DrollJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20489],\n Drunkard: MOTELY_ITEM_FORMATS_BY_VALUE[20532],\n Dusk: MOTELY_ITEM_FORMATS_BY_VALUE[21510],\n Earth: MOTELY_ITEM_FORMATS_BY_VALUE[16386],\n Ectoplasm: MOTELY_ITEM_FORMATS_BY_VALUE[8200],\n Egg: MOTELY_ITEM_FORMATS_BY_VALUE[20513],\n EightBall: MOTELY_ITEM_FORMATS_BY_VALUE[20499],\n EightOfClubs: MOTELY_ITEM_FORMATS_BY_VALUE[4102],\n EightOfDiamonds: MOTELY_ITEM_FORMATS_BY_VALUE[4118],\n EightOfHearts: MOTELY_ITEM_FORMATS_BY_VALUE[4134],\n EightOfSpades: MOTELY_ITEM_FORMATS_BY_VALUE[4150],\n Eris: MOTELY_ITEM_FORMATS_BY_VALUE[16395],\n Erosion: MOTELY_ITEM_FORMATS_BY_VALUE[21533],\n EvenSteven: MOTELY_ITEM_FORMATS_BY_VALUE[20507],\n FacelessJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20518],\n Familiar: MOTELY_ITEM_FORMATS_BY_VALUE[8192],\n Fibonacci: MOTELY_ITEM_FORMATS_BY_VALUE[21511],\n FiveOfClubs: MOTELY_ITEM_FORMATS_BY_VALUE[4099],\n FiveOfDiamonds: MOTELY_ITEM_FORMATS_BY_VALUE[4115],\n FiveOfHearts: MOTELY_ITEM_FORMATS_BY_VALUE[4131],\n FiveOfSpades: MOTELY_ITEM_FORMATS_BY_VALUE[4147],\n FlashCard: MOTELY_ITEM_FORMATS_BY_VALUE[21540],\n FlowerPot: MOTELY_ITEM_FORMATS_BY_VALUE[21558],\n FortuneTeller: MOTELY_ITEM_FORMATS_BY_VALUE[20530],\n FourFingers: MOTELY_ITEM_FORMATS_BY_VALUE[21505],\n FourOfClubs: MOTELY_ITEM_FORMATS_BY_VALUE[4098],\n FourOfDiamonds: MOTELY_ITEM_FORMATS_BY_VALUE[4114],\n FourOfHearts: MOTELY_ITEM_FORMATS_BY_VALUE[4130],\n FourOfSpades: MOTELY_ITEM_FORMATS_BY_VALUE[4146],\n GiftCard: MOTELY_ITEM_FORMATS_BY_VALUE[21531],\n GlassJoker: MOTELY_ITEM_FORMATS_BY_VALUE[21556],\n GluttonousJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20484],\n GoldenJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20533],\n GoldenTicket: MOTELY_ITEM_FORMATS_BY_VALUE[20537],\n GreedyJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20481],\n GreenJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20519],\n Grim: MOTELY_ITEM_FORMATS_BY_VALUE[8193],\n GrosMichel: MOTELY_ITEM_FORMATS_BY_VALUE[20506],\n Hack: MOTELY_ITEM_FORMATS_BY_VALUE[21513],\n HalfJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20495],\n Hallucination: MOTELY_ITEM_FORMATS_BY_VALUE[20529],\n HangingChad: MOTELY_ITEM_FORMATS_BY_VALUE[20539],\n Hex: MOTELY_ITEM_FORMATS_BY_VALUE[8204],\n Hiker: MOTELY_ITEM_FORMATS_BY_VALUE[21520],\n HitTheRoad: MOTELY_ITEM_FORMATS_BY_VALUE[22537],\n Hologram: MOTELY_ITEM_FORMATS_BY_VALUE[21526],\n IceCream: MOTELY_ITEM_FORMATS_BY_VALUE[20515],\n Immolate: MOTELY_ITEM_FORMATS_BY_VALUE[8201],\n Incantation: MOTELY_ITEM_FORMATS_BY_VALUE[8194],\n Invalid: MOTELY_ITEM_FORMATS_BY_VALUE[61440],\n InvisibleJoker: MOTELY_ITEM_FORMATS_BY_VALUE[22544],\n JackOfClubs: MOTELY_ITEM_FORMATS_BY_VALUE[4105],\n JackOfDiamonds: MOTELY_ITEM_FORMATS_BY_VALUE[4121],\n JackOfHearts: MOTELY_ITEM_FORMATS_BY_VALUE[4137],\n JackOfSpades: MOTELY_ITEM_FORMATS_BY_VALUE[4153],\n Joker: MOTELY_ITEM_FORMATS_BY_VALUE[20480],\n JokerExcludedByStream: MOTELY_ITEM_FORMATS_BY_VALUE[61442],\n JokerStencil: MOTELY_ITEM_FORMATS_BY_VALUE[21504],\n JollyJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20485],\n Judgement: MOTELY_ITEM_FORMATS_BY_VALUE[12308],\n Juggler: MOTELY_ITEM_FORMATS_BY_VALUE[20531],\n Jupiter: MOTELY_ITEM_FORMATS_BY_VALUE[16388],\n Justice: MOTELY_ITEM_FORMATS_BY_VALUE[12296],\n KingOfClubs: MOTELY_ITEM_FORMATS_BY_VALUE[4107],\n KingOfDiamonds: MOTELY_ITEM_FORMATS_BY_VALUE[4123],\n KingOfHearts: MOTELY_ITEM_FORMATS_BY_VALUE[4139],\n KingOfSpades: MOTELY_ITEM_FORMATS_BY_VALUE[4155],\n LoyaltyCard: MOTELY_ITEM_FORMATS_BY_VALUE[21509],\n Luchador: MOTELY_ITEM_FORMATS_BY_VALUE[21530],\n LuckyCat: MOTELY_ITEM_FORMATS_BY_VALUE[21536],\n LustyJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20482],\n MadJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20487],\n Madness: MOTELY_ITEM_FORMATS_BY_VALUE[21522],\n MailInRebate: MOTELY_ITEM_FORMATS_BY_VALUE[20528],\n MarbleJoker: MOTELY_ITEM_FORMATS_BY_VALUE[21508],\n Mars: MOTELY_ITEM_FORMATS_BY_VALUE[16387],\n Matador: MOTELY_ITEM_FORMATS_BY_VALUE[21563],\n Medium: MOTELY_ITEM_FORMATS_BY_VALUE[8206],\n Mercury: MOTELY_ITEM_FORMATS_BY_VALUE[16384],\n MerryAndy: MOTELY_ITEM_FORMATS_BY_VALUE[21559],\n MidasMask: MOTELY_ITEM_FORMATS_BY_VALUE[21529],\n Mime: MOTELY_ITEM_FORMATS_BY_VALUE[21506],\n Misprint: MOTELY_ITEM_FORMATS_BY_VALUE[20500],\n MrBones: MOTELY_ITEM_FORMATS_BY_VALUE[21545],\n MysticSummit: MOTELY_ITEM_FORMATS_BY_VALUE[20498],\n Neptune: MOTELY_ITEM_FORMATS_BY_VALUE[16391],\n NineOfClubs: MOTELY_ITEM_FORMATS_BY_VALUE[4103],\n NineOfDiamonds: MOTELY_ITEM_FORMATS_BY_VALUE[4119],\n NineOfHearts: MOTELY_ITEM_FORMATS_BY_VALUE[4135],\n NineOfSpades: MOTELY_ITEM_FORMATS_BY_VALUE[4151],\n NotImplemented: MOTELY_ITEM_FORMATS_BY_VALUE[61441],\n Obelisk: MOTELY_ITEM_FORMATS_BY_VALUE[22531],\n OddTodd: MOTELY_ITEM_FORMATS_BY_VALUE[20508],\n OnyxAgate: MOTELY_ITEM_FORMATS_BY_VALUE[21555],\n OopsAll6s: MOTELY_ITEM_FORMATS_BY_VALUE[21560],\n Ouija: MOTELY_ITEM_FORMATS_BY_VALUE[8199],\n Pareidolia: MOTELY_ITEM_FORMATS_BY_VALUE[21514],\n Perkeo: MOTELY_ITEM_FORMATS_BY_VALUE[23556],\n Photograph: MOTELY_ITEM_FORMATS_BY_VALUE[20526],\n PlanetExcludedByStream: MOTELY_ITEM_FORMATS_BY_VALUE[61443],\n PlanetX: MOTELY_ITEM_FORMATS_BY_VALUE[16393],\n Pluto: MOTELY_ITEM_FORMATS_BY_VALUE[16392],\n Popcorn: MOTELY_ITEM_FORMATS_BY_VALUE[20534],\n QueenOfClubs: MOTELY_ITEM_FORMATS_BY_VALUE[4106],\n QueenOfDiamonds: MOTELY_ITEM_FORMATS_BY_VALUE[4122],\n QueenOfHearts: MOTELY_ITEM_FORMATS_BY_VALUE[4138],\n QueenOfSpades: MOTELY_ITEM_FORMATS_BY_VALUE[4154],\n RaisedFist: MOTELY_ITEM_FORMATS_BY_VALUE[20501],\n Ramen: MOTELY_ITEM_FORMATS_BY_VALUE[21542],\n RedCard: MOTELY_ITEM_FORMATS_BY_VALUE[20523],\n ReservedParking: MOTELY_ITEM_FORMATS_BY_VALUE[20527],\n RideTheBus: MOTELY_ITEM_FORMATS_BY_VALUE[20512],\n RiffRaff: MOTELY_ITEM_FORMATS_BY_VALUE[20525],\n Rocket: MOTELY_ITEM_FORMATS_BY_VALUE[21528],\n RoughGem: MOTELY_ITEM_FORMATS_BY_VALUE[21552],\n Runner: MOTELY_ITEM_FORMATS_BY_VALUE[20514],\n Satellite: MOTELY_ITEM_FORMATS_BY_VALUE[21564],\n Saturn: MOTELY_ITEM_FORMATS_BY_VALUE[16389],\n ScaryFace: MOTELY_ITEM_FORMATS_BY_VALUE[20503],\n Scholar: MOTELY_ITEM_FORMATS_BY_VALUE[20509],\n Seance: MOTELY_ITEM_FORMATS_BY_VALUE[21523],\n SeeingDouble: MOTELY_ITEM_FORMATS_BY_VALUE[21562],\n Seltzer: MOTELY_ITEM_FORMATS_BY_VALUE[21543],\n SevenOfClubs: MOTELY_ITEM_FORMATS_BY_VALUE[4101],\n SevenOfDiamonds: MOTELY_ITEM_FORMATS_BY_VALUE[4117],\n SevenOfHearts: MOTELY_ITEM_FORMATS_BY_VALUE[4133],\n SevenOfSpades: MOTELY_ITEM_FORMATS_BY_VALUE[4149],\n ShootTheMoon: MOTELY_ITEM_FORMATS_BY_VALUE[20540],\n Shortcut: MOTELY_ITEM_FORMATS_BY_VALUE[21525],\n Showman: MOTELY_ITEM_FORMATS_BY_VALUE[21557],\n Sigil: MOTELY_ITEM_FORMATS_BY_VALUE[8198],\n SixOfClubs: MOTELY_ITEM_FORMATS_BY_VALUE[4100],\n SixOfDiamonds: MOTELY_ITEM_FORMATS_BY_VALUE[4116],\n SixOfHearts: MOTELY_ITEM_FORMATS_BY_VALUE[4132],\n SixOfSpades: MOTELY_ITEM_FORMATS_BY_VALUE[4148],\n SixthSense: MOTELY_ITEM_FORMATS_BY_VALUE[21518],\n SlyJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20490],\n SmearedJoker: MOTELY_ITEM_FORMATS_BY_VALUE[21550],\n SmileyFace: MOTELY_ITEM_FORMATS_BY_VALUE[20536],\n SockAndBuskin: MOTELY_ITEM_FORMATS_BY_VALUE[21547],\n SpaceJoker: MOTELY_ITEM_FORMATS_BY_VALUE[21515],\n SpareTrousers: MOTELY_ITEM_FORMATS_BY_VALUE[21541],\n SpectralExcludedByStream: MOTELY_ITEM_FORMATS_BY_VALUE[61445],\n Splash: MOTELY_ITEM_FORMATS_BY_VALUE[20516],\n SquareJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20524],\n SteelJoker: MOTELY_ITEM_FORMATS_BY_VALUE[21512],\n StoneJoker: MOTELY_ITEM_FORMATS_BY_VALUE[21535],\n Strength: MOTELY_ITEM_FORMATS_BY_VALUE[12299],\n Stuntman: MOTELY_ITEM_FORMATS_BY_VALUE[22543],\n Supernova: MOTELY_ITEM_FORMATS_BY_VALUE[20511],\n Superposition: MOTELY_ITEM_FORMATS_BY_VALUE[20520],\n Swashbuckler: MOTELY_ITEM_FORMATS_BY_VALUE[20538],\n Talisman: MOTELY_ITEM_FORMATS_BY_VALUE[8195],\n TarotExcludedByStream: MOTELY_ITEM_FORMATS_BY_VALUE[61444],\n Temperance: MOTELY_ITEM_FORMATS_BY_VALUE[12302],\n TenOfClubs: MOTELY_ITEM_FORMATS_BY_VALUE[4104],\n TenOfDiamonds: MOTELY_ITEM_FORMATS_BY_VALUE[4120],\n TenOfHearts: MOTELY_ITEM_FORMATS_BY_VALUE[4136],\n TenOfSpades: MOTELY_ITEM_FORMATS_BY_VALUE[4152],\n TheChariot: MOTELY_ITEM_FORMATS_BY_VALUE[12295],\n TheDevil: MOTELY_ITEM_FORMATS_BY_VALUE[12303],\n TheDuo: MOTELY_ITEM_FORMATS_BY_VALUE[22538],\n TheEmperor: MOTELY_ITEM_FORMATS_BY_VALUE[12292],\n TheEmpress: MOTELY_ITEM_FORMATS_BY_VALUE[12291],\n TheFamily: MOTELY_ITEM_FORMATS_BY_VALUE[22540],\n TheFool: MOTELY_ITEM_FORMATS_BY_VALUE[12288],\n TheHangedMan: MOTELY_ITEM_FORMATS_BY_VALUE[12300],\n TheHermit: MOTELY_ITEM_FORMATS_BY_VALUE[12297],\n TheHierophant: MOTELY_ITEM_FORMATS_BY_VALUE[12293],\n TheHighPriestess: MOTELY_ITEM_FORMATS_BY_VALUE[12290],\n TheIdol: MOTELY_ITEM_FORMATS_BY_VALUE[21561],\n TheLovers: MOTELY_ITEM_FORMATS_BY_VALUE[12294],\n TheMagician: MOTELY_ITEM_FORMATS_BY_VALUE[12289],\n TheMoon: MOTELY_ITEM_FORMATS_BY_VALUE[12306],\n TheOrder: MOTELY_ITEM_FORMATS_BY_VALUE[22541],\n TheSoul: MOTELY_ITEM_FORMATS_BY_VALUE[8208],\n TheStar: MOTELY_ITEM_FORMATS_BY_VALUE[12305],\n TheSun: MOTELY_ITEM_FORMATS_BY_VALUE[12307],\n TheTower: MOTELY_ITEM_FORMATS_BY_VALUE[12304],\n TheTribe: MOTELY_ITEM_FORMATS_BY_VALUE[22542],\n TheTrio: MOTELY_ITEM_FORMATS_BY_VALUE[22539],\n TheWheelOfFortune: MOTELY_ITEM_FORMATS_BY_VALUE[12298],\n TheWorld: MOTELY_ITEM_FORMATS_BY_VALUE[12309],\n ThreeOfClubs: MOTELY_ITEM_FORMATS_BY_VALUE[4097],\n ThreeOfDiamonds: MOTELY_ITEM_FORMATS_BY_VALUE[4113],\n ThreeOfHearts: MOTELY_ITEM_FORMATS_BY_VALUE[4129],\n ThreeOfSpades: MOTELY_ITEM_FORMATS_BY_VALUE[4145],\n Throwback: MOTELY_ITEM_FORMATS_BY_VALUE[21551],\n ToDoList: MOTELY_ITEM_FORMATS_BY_VALUE[20521],\n ToTheMoon: MOTELY_ITEM_FORMATS_BY_VALUE[21534],\n TradingCard: MOTELY_ITEM_FORMATS_BY_VALUE[21539],\n Trance: MOTELY_ITEM_FORMATS_BY_VALUE[8205],\n Triboulet: MOTELY_ITEM_FORMATS_BY_VALUE[23553],\n Troubadour: MOTELY_ITEM_FORMATS_BY_VALUE[21548],\n TurtleBean: MOTELY_ITEM_FORMATS_BY_VALUE[21532],\n TwoOfClubs: MOTELY_ITEM_FORMATS_BY_VALUE[4096],\n TwoOfDiamonds: MOTELY_ITEM_FORMATS_BY_VALUE[4112],\n TwoOfHearts: MOTELY_ITEM_FORMATS_BY_VALUE[4128],\n TwoOfSpades: MOTELY_ITEM_FORMATS_BY_VALUE[4144],\n Uranus: MOTELY_ITEM_FORMATS_BY_VALUE[16390],\n Vagabond: MOTELY_ITEM_FORMATS_BY_VALUE[22529],\n Vampire: MOTELY_ITEM_FORMATS_BY_VALUE[21524],\n Venus: MOTELY_ITEM_FORMATS_BY_VALUE[16385],\n WalkieTalkie: MOTELY_ITEM_FORMATS_BY_VALUE[20535],\n WeeJoker: MOTELY_ITEM_FORMATS_BY_VALUE[22536],\n WilyJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20491],\n Wraith: MOTELY_ITEM_FORMATS_BY_VALUE[8197],\n WrathfulJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20483],\n Yorick: MOTELY_ITEM_FORMATS_BY_VALUE[23554],\n ZanyJoker: MOTELY_ITEM_FORMATS_BY_VALUE[20486],\n});\n","import { MOTELY_ITEM_FORMATS_BY_VALUE } from \"./motelyItemFormats.js\";\n\ntype MotelyItemCategoryName = \"Standardcard\" | \"SpectralCard\" | \"TarotCard\" | \"PlanetCard\" | \"Joker\" | \"Invalid\";\n\nconst CATEGORY_MAP: Record<MotelyItemCategoryName, MotelyRenderableCategory> = {\n Standardcard: \"playing\",\n SpectralCard: \"spectral\",\n TarotCard: \"tarot\",\n PlanetCard: \"planet\",\n Joker: \"joker\",\n Invalid: \"unknown\",\n};\n\nconst RANKS = [\"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"Jack\", \"Queen\", \"King\", \"Ace\"] as const;\nconst SUITS = [\"Clubs\", \"Diamonds\", \"Hearts\", \"Spades\"] as const;\nconst EDITIONS = [\"Base\", \"Foil\", \"Holographic\", \"Polychrome\", \"Negative\"] as const;\nconst SEALS = [\"None\", \"Gold\", \"Red\", \"Blue\", \"Purple\"] as const;\n\ntype RankName = (typeof RANKS)[number];\ntype SuitName = (typeof SUITS)[number];\n\nexport type CardCategory = \"joker\" | \"consumable\" | \"playing\" | \"spectral\" | \"tarot\" | \"planet\";\nexport type MotelyRenderableCategory = CardCategory | \"unknown\";\n\nexport type MotelyItemInput = number | MotelyRuntimeItem | null | undefined;\n\nexport interface MotelyRuntimeItem {\n type?: number;\n value?: number;\n edition?: number;\n seal?: number;\n enhancement?: number;\n suit?: number;\n rank?: number;\n}\n\nexport interface DecodedMotelyItem {\n itemType: number;\n enumKey: string;\n displayName: string;\n category: MotelyRenderableCategory;\n edition: \"Foil\" | \"Holographic\" | \"Polychrome\" | \"Negative\" | null;\n seal: \"Gold\" | \"Red\" | \"Blue\" | \"Purple\" | null;\n enhancement: string | null;\n rank: string | null;\n suit: \"Clubs\" | \"Diamonds\" | \"Hearts\" | \"Spades\" | null;\n}\n\nexport interface MotelyJamlCard {\n type: \"joker\" | \"consumable\" | \"playing\";\n card: {\n name: string;\n edition?: \"Foil\" | \"Holographic\" | \"Polychrome\" | \"Negative\";\n seal?: string;\n enhancements?: string[];\n rank?: string;\n suit?: string;\n scale?: number;\n };\n}\n\nfunction itemFormat(itemType: number) {\n return MOTELY_ITEM_FORMATS_BY_VALUE[itemType as keyof typeof MOTELY_ITEM_FORMATS_BY_VALUE];\n}\n\nfunction spaceSplit(value: string): string {\n return value.replace(/([a-z])([A-Z])/g, \"$1 $2\").replace(/([A-Z]+)([A-Z][a-z])/g, \"$1 $2\");\n}\n\nfunction resolvePackedValue(input: MotelyItemInput): number | null {\n if (input == null) return null;\n if (typeof input === \"number\") return Number.isFinite(input) ? input : null;\n return input.value ?? input.type ?? null;\n}\n\nexport function resolveMotelyItemType(input: MotelyItemInput): number | null {\n const val = resolvePackedValue(input);\n return val !== null ? val & 0xffff : null;\n}\n\nexport function motelyItemTypeName(input: MotelyItemInput): string {\n const itemType = resolveMotelyItemType(input);\n if (itemType === null) return \"Unknown\";\n return itemFormat(itemType)?.enumName ?? `item#${itemType}`;\n}\n\nexport function motelyItemCategory(itemType: number): MotelyRenderableCategory {\n const category = itemFormat(itemType)?.category as MotelyItemCategoryName | undefined;\n return category ? CATEGORY_MAP[category] ?? \"unknown\" : \"unknown\";\n}\n\nexport function motelyItemRenderCategory(input: MotelyItemInput): MotelyRenderableCategory {\n const itemType = resolveMotelyItemType(input);\n if (itemType === null) return \"unknown\";\n return motelyItemCategory(itemType);\n}\n\nexport function motelyItemDisplayName(input: MotelyItemInput): string {\n const itemType = resolveMotelyItemType(input);\n if (itemType === null) return \"Unknown\";\n return itemFormat(itemType)?.displayName ?? spaceSplit(motelyItemTypeName(input));\n}\n\nexport function motelyItemEditionName(input: MotelyItemInput): \"Foil\" | \"Holographic\" | \"Polychrome\" | \"Negative\" | null {\n if (input == null) return null;\n const val = typeof input === \"number\" ? input : input.edition;\n if (val == null) return null;\n const key = EDITIONS[val as keyof typeof EDITIONS];\n if (!key || key === \"Base\") return null;\n return key as \"Foil\" | \"Holographic\" | \"Polychrome\" | \"Negative\";\n}\n\nexport function motelyItemSealName(input: MotelyItemInput): \"Gold\" | \"Red\" | \"Blue\" | \"Purple\" | null {\n if (input == null) return null;\n const val = typeof input === \"number\" ? null : input.seal;\n if (val == null) return null;\n const key = SEALS[val as keyof typeof SEALS];\n if (!key || key === \"None\") return null;\n return key as \"Gold\" | \"Red\" | \"Blue\" | \"Purple\";\n}\n\nexport function motelyItemEnhancementName(input: MotelyItemInput): string | null {\n if (input == null) return null;\n const val = typeof input === \"number\" ? null : input.enhancement;\n if (val == null) return null;\n // Enhancements are not part of the current motely-wasm JS contract.\n return null;\n}\n\nexport function motelyStandardcardRankName(input: MotelyItemInput): string | null {\n if (input == null) return null;\n if (motelyItemRenderCategory(input) !== \"playing\") return null;\n const val = typeof input === \"number\" ? resolveMotelyItemType(input) : input.rank;\n if (val == null) return null;\n if (typeof input === \"number\") return RANKS[val & 0xf] ?? null;\n return RANKS[val] as RankName | undefined ?? null;\n}\n\nexport function motelyStandardcardSuitName(input: MotelyItemInput): \"Clubs\" | \"Diamonds\" | \"Hearts\" | \"Spades\" | null {\n if (input == null) return null;\n if (motelyItemRenderCategory(input) !== \"playing\") return null;\n const val = typeof input === \"number\" ? resolveMotelyItemType(input) : input.suit;\n if (val == null) return null;\n if (typeof input === \"number\") return SUITS[(val >> 4) & 0xf] ?? null;\n return SUITS[val] as SuitName | undefined ?? null;\n}\n\nexport function decodeMotelyItemName(input: MotelyItemInput): string {\n return motelyItemTypeName(input);\n}\n\nexport function decodeMotelyItem(input: MotelyItemInput): DecodedMotelyItem | null {\n const itemType = resolveMotelyItemType(input);\n if (itemType === null) return null;\n\n const format = itemFormat(itemType);\n const enumKeyStr = format?.enumName ?? `Unknown_${itemType}`;\n const category = motelyItemCategory(itemType);\n const displayName = format?.displayName ?? spaceSplit(enumKeyStr);\n\n return {\n itemType,\n enumKey: enumKeyStr,\n displayName,\n category,\n edition: motelyItemEditionName(input),\n seal: motelyItemSealName(input),\n enhancement: motelyItemEnhancementName(input),\n rank: motelyStandardcardRankName(input),\n suit: motelyStandardcardSuitName(input),\n };\n}\n\nexport function decodeMotelyItemToJamlCard(input: MotelyItemInput, scale?: number): MotelyJamlCard | null {\n const decoded = decodeMotelyItem(input);\n if (!decoded) return null;\n\n const type: \"joker\" | \"consumable\" | \"playing\" =\n decoded.category === \"joker\" ? \"joker\"\n : decoded.category === \"playing\" ? \"playing\"\n : \"consumable\";\n\n return {\n type,\n card: {\n name: decoded.displayName,\n edition: decoded.edition ?? undefined,\n seal: decoded.seal ?? undefined,\n enhancements: decoded.enhancement ? [decoded.enhancement] : undefined,\n rank: decoded.rank ?? undefined,\n suit: decoded.suit ?? undefined,\n scale,\n },\n };\n}\n\nexport function warmMotelyItemCache(): void { /* no-op */ }\nexport function motelyItemCacheSize(): number { return 0; }\n","import { decodeMotelyItem, type MotelyRenderableCategory } from \"./motelyItemDecoder.js\";\r\nimport { getSpriteData, SHEET_META } from \"../sprites/spriteMapper.js\";\r\nimport { RANK_MAP, SUIT_MAP } from \"../sprites/spriteData.js\";\r\nimport { resolveJamlAssetUrl } from \"../assets.js\";\r\n\r\nexport interface MotelySpriteData {\r\n atlasPath: string;\r\n gridCol: number;\r\n gridRow: number;\r\n gridCols: number;\r\n gridRows: number;\r\n displayName: string;\r\n category: MotelyRenderableCategory;\r\n}\r\n\r\n/**\r\n * Given a raw motely-wasm item value (which may be a bitpacked integer or raw MotelyItemType),\r\n * resolves it to a sprite atlas path and grid coordinates for rendering.\r\n */\r\nexport function motelyItemToSprite(rawValue: number): MotelySpriteData | null {\r\n const decoded = decodeMotelyItem(rawValue);\r\n if (!decoded) return null;\r\n\r\n if (decoded.category === \"playing\" && decoded.rank && decoded.suit) {\r\n const col = RANK_MAP[decoded.rank];\r\n const row = SUIT_MAP[decoded.suit];\r\n if (col !== undefined && row !== undefined) {\r\n return {\r\n atlasPath: resolveJamlAssetUrl('deck'),\r\n gridCol: col,\r\n gridRow: row,\r\n gridCols: 13,\r\n gridRows: 4,\r\n displayName: decoded.displayName,\r\n category: \"playing\"\r\n };\r\n }\r\n }\r\n\r\n const sprite = getSpriteData(decoded.displayName);\r\n if (!sprite) return null;\r\n\r\n const meta = SHEET_META[sprite.type];\r\n if (!meta) return null;\r\n\r\n return {\r\n atlasPath: resolveJamlAssetUrl(meta.assetKey),\r\n gridCol: sprite.pos.x,\r\n gridRow: sprite.pos.y,\r\n gridCols: meta.cols,\r\n gridRows: meta.rows,\r\n displayName: decoded.displayName,\r\n category: decoded.category\r\n };\r\n}\r\n\r\n/**\r\n * Resolves a sprite by name and category without needing a Motely integer.\r\n */\r\nexport function getMotelySpriteByName(name: string, category: MotelyRenderableCategory = \"unknown\"): MotelySpriteData | null {\r\n if (category === \"playing\") {\r\n // Attempt to parse \"Rank of Suit\"\r\n const match = /^(.*?)\\s+of\\s+(.*?)$/i.exec(name);\r\n if (match) {\r\n const rank = match[1];\r\n const suit = match[2];\r\n const col = RANK_MAP[rank];\r\n const row = SUIT_MAP[suit];\r\n if (col !== undefined && row !== undefined) {\r\n return {\r\n atlasPath: resolveJamlAssetUrl('deck'),\r\n gridCol: col,\r\n gridRow: row,\r\n gridCols: 13,\r\n gridRows: 4,\r\n displayName: name,\r\n category: \"playing\"\r\n };\r\n }\r\n }\r\n }\r\n\r\n const sprite = getSpriteData(name);\r\n if (!sprite) return null;\r\n\r\n const meta = SHEET_META[sprite.type];\r\n if (!meta) return null;\r\n\r\n return {\r\n atlasPath: resolveJamlAssetUrl(meta.assetKey),\r\n gridCol: sprite.pos.x,\r\n gridRow: sprite.pos.y,\r\n gridCols: meta.cols,\r\n gridRows: meta.rows,\r\n displayName: name,\r\n category\r\n };\r\n}\r\n","import { Motely } from \"motely-wasm\";\nimport { MOTELY_ITEM_FORMATS_BY_VALUE } from \"./decode/motelyItemFormats.js\";\n\ntype RuntimeEnum = Record<string, string | number>;\ntype MotelyRuntimeEnums = typeof Motely & Record<string, RuntimeEnum>;\n\nconst MotelyEnums = Motely as MotelyRuntimeEnums;\n\nfunction runtimeEnumKey(\n enumObject: Record<string, unknown>,\n value: number,\n): string | null {\n const key = enumObject[String(value)];\n return typeof key === \"string\" && key.length > 0 ? key : null;\n}\n\nexport function motelyBossDisplayName(value: number): string {\n const key = runtimeEnumKey(MotelyEnums.MotelyBossBlind, value & 0xff);\n return key ?? `boss#${value}`;\n}\n\nexport function motelyBossDisplayNameFromKey(key: string): string {\n return key;\n}\n\nexport function motelyVoucherDisplayName(value: number): string {\n const key = runtimeEnumKey(MotelyEnums.MotelyVoucher, value);\n return key ?? `voucher#${value}`;\n}\n\nexport function motelyVoucherDisplayNameFromKey(key: string): string {\n return key;\n}\n\nexport function motelyTagDisplayName(value: number): string {\n const key = runtimeEnumKey(MotelyEnums.MotelyTag, value);\n return key ?? `tag#${value}`;\n}\n\nexport function motelyTagDisplayNameFromKey(key: string): string {\n return key;\n}\n\nexport function motelyBoosterPackDisplayName(value: number): string {\n const key = runtimeEnumKey(MotelyEnums.MotelyBoosterPack, value);\n return key ?? `pack#${value}`;\n}\n\nexport function motelyBoosterPackDisplayNameFromKey(key: string): string {\n return `${key} Pack`;\n}\n\nexport function motelyItemDisplayNameFromKey(key: string): string {\n return key;\n}\n\nexport function motelyItemDisplayNameFromValue(value: number): string {\n const itemType = value & 0xffff;\n return MOTELY_ITEM_FORMATS_BY_VALUE[itemType as keyof typeof MOTELY_ITEM_FORMATS_BY_VALUE]?.displayName ?? `item#${value}`;\n}\n","\"use client\";\n\nimport { useCallback, useState } from \"react\";\nimport { Motely } from \"motely-wasm\";\nimport { ensureMotelyReady } from \"../lib/motely/runtime.js\";\nimport { IFileMounter, PermissionMode } from \"motely-wasm/bootsharp/file-system\";\n\ntype FileSystemPackage = typeof import(\"@rewaffle/bootsharp-file-system\");\n\nlet fileSystemPackage: FileSystemPackage | null = null;\nlet fileSystemInitError: unknown = null;\n\ntry {\n fileSystemPackage = await import(\"@rewaffle/bootsharp-file-system\");\n fileSystemPackage.init(IFileMounter);\n} catch (error) {\n fileSystemInitError = error;\n}\n\nexport type JamlLibraryStatus = \"idle\" | \"unsupported\" | \"mounting\" | \"ready\" | \"error\";\n\nexport interface UseJamlLibraryState {\n status: JamlLibraryStatus;\n rootId: string | null;\n files: string[];\n error: string | null;\n mount: () => Promise<void>;\n unmount: () => Promise<void>;\n loadFile: (uri: string) => Promise<string>;\n saveFile: (uri: string, content: string) => Promise<void>;\n refresh: () => void;\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\n\nexport function useJamlLibrary(): UseJamlLibraryState {\n const isFileSystemReady = fileSystemPackage !== null;\n const [status, setStatus] = useState<JamlLibraryStatus>(() => isFileSystemReady ? \"idle\" : \"unsupported\");\n const [rootId, setRootId] = useState<string | null>(null);\n const [files, setFiles] = useState<string[]>([]);\n const [error, setError] = useState<string | null>(() =>\n isFileSystemReady ? null : errorMessage(fileSystemInitError ?? \"Bootsharp FileSystem package is not available.\"),\n );\n\n const refresh = useCallback(() => {\n if (!rootId) return;\n setFiles((prev) => [...prev]);\n }, [rootId]);\n\n const mount = useCallback(async () => {\n if (!isFileSystemReady) {\n setStatus(\"unsupported\");\n setError(errorMessage(fileSystemInitError ?? \"Bootsharp FileSystem package is not available.\"));\n return;\n }\n\n setStatus(\"mounting\");\n setError(null);\n\n try {\n await ensureMotelyReady();\n const pickedRoot = await Motely.pickRoot({ mode: PermissionMode.ReadWrite, id: \"jaml-library\" });\n if (!pickedRoot) {\n setStatus(\"idle\");\n return;\n }\n\n const mountedRoot = await Motely.mountRoot(pickedRoot, { mode: PermissionMode.ReadWrite });\n setRootId(mountedRoot);\n setFiles([]);\n setStatus(\"ready\");\n } catch (err) {\n setStatus(\"error\");\n setError(errorMessage(err));\n }\n }, [isFileSystemReady]);\n\n const unmount = useCallback(async () => {\n if (!rootId) return;\n await ensureMotelyReady();\n await Motely.unmountRoot(rootId);\n setRootId(null);\n setFiles([]);\n setStatus(isFileSystemReady ? \"idle\" : \"unsupported\");\n }, [isFileSystemReady, rootId]);\n\n const loadFile = useCallback(async (uri: string) => {\n if (!rootId) throw new Error(\"JAML library is not mounted.\");\n await ensureMotelyReady();\n return await Motely.readTextFile(rootId, uri);\n }, [rootId]);\n\n const saveFile = useCallback(async (uri: string, content: string) => {\n if (!rootId) throw new Error(\"JAML library is not mounted.\");\n await ensureMotelyReady();\n await Motely.writeTextFile(rootId, uri, content);\n setFiles((prev) => (prev.includes(uri) ? prev : [...prev, uri]).sort((a, b) => a.localeCompare(b)));\n }, [rootId]);\n\n return { status, rootId, files, error, mount, unmount, loadFile, saveFile, refresh };\n}\n","\"use client\";\n\nimport { createContext, useContext, useEffect, useState, type ReactNode } from \"react\";\nimport bootsharp from \"motely-wasm\";\nimport { ensureMotelyReady, type MotelyRuntimeStatus } from \"../lib/motely/runtime.js\";\n\nexport interface MotelyContextValue {\n status: MotelyRuntimeStatus;\n error: string | null;\n}\n\nexport const MotelyContext = createContext<MotelyContextValue | null>(null);\n\nfunction currentStatus(): MotelyRuntimeStatus {\n switch (bootsharp.getStatus()) {\n case bootsharp.BootStatus.Booted: return \"ready\";\n case bootsharp.BootStatus.Booting: return \"booting\";\n default: return \"idle\";\n }\n}\n\nexport function MotelyProvider({ children }: { children: ReactNode }) {\n const [status, setStatus] = useState<MotelyRuntimeStatus>(currentStatus);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n if (status === \"ready\") return;\n setStatus(\"booting\");\n ensureMotelyReady()\n .then(() => setStatus(\"ready\"))\n .catch((err) => {\n setStatus(\"error\");\n setError(err instanceof Error ? err.message : String(err));\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <MotelyContext.Provider value={{ status, error }}>\n {children}\n </MotelyContext.Provider>\n );\n}\n\nexport function useMotelyContext(): MotelyContextValue | null {\n return useContext(MotelyContext);\n}\n","\"use client\";\n\nimport { useCallback, useMemo, useState } from \"react\";\nimport bootsharp from \"motely-wasm\";\nimport { ensureMotelyReady, type MotelyRuntimeStatus } from \"../lib/motely/runtime.js\";\nimport { useMotelyContext } from \"../providers/MotelyProvider.js\";\n\nexport type { MotelyRuntimeStatus };\n\nexport interface UseMotelyRuntimeState {\n status: MotelyRuntimeStatus;\n ready: boolean;\n error: string | null;\n fsReady: boolean;\n fsError: string | null;\n ensureReady: () => Promise<void>;\n}\n\nfunction currentStatus(): MotelyRuntimeStatus {\n switch (bootsharp.getStatus()) {\n case bootsharp.BootStatus.Booted: return \"ready\";\n case bootsharp.BootStatus.Booting: return \"booting\";\n default: return \"idle\";\n }\n}\n\nexport function useMotelyRuntime(): UseMotelyRuntimeState {\n const ctx = useMotelyContext();\n const [localStatus, setLocalStatus] = useState<MotelyRuntimeStatus>(currentStatus);\n const [localError, setLocalError] = useState<string | null>(null);\n\n const status = ctx?.status ?? localStatus;\n const error = ctx?.error ?? localError;\n\n const ensureReady = useCallback(async () => {\n try {\n if (!ctx) {\n setLocalStatus(currentStatus());\n if (bootsharp.getStatus() === bootsharp.BootStatus.Standby) {\n setLocalStatus(\"booting\");\n await ensureMotelyReady();\n }\n setLocalStatus(currentStatus());\n } else {\n await ensureMotelyReady();\n }\n } catch (err) {\n if (!ctx) {\n setLocalStatus(\"error\");\n setLocalError(err instanceof Error ? err.message : String(err));\n }\n throw err;\n }\n }, [ctx]);\n\n return useMemo(\n () => ({\n status,\n ready: status === \"ready\",\n error,\n fsReady: false,\n fsError: null,\n ensureReady,\n }),\n [error, ensureReady, status],\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ import { MotelyRuntimeStatus } from '../lib/motely/runtime.js';
3
+ export interface MotelyContextValue {
4
+ status: MotelyRuntimeStatus;
5
+ error: string | null;
6
+ }
7
+ export declare const MotelyContext: import('react').Context<MotelyContextValue | null>;
8
+ export declare function MotelyProvider({ children }: {
9
+ children: ReactNode;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ export declare function useMotelyContext(): MotelyContextValue | null;
package/dist/r3f.js CHANGED
@@ -1,5 +1,5 @@
1
- import { n as e } from "./chunks/assets-RWUiFSTc.js";
2
- import { n as t } from "./chunks/tokens-B65Fzble.js";
1
+ import { n as e } from "./chunks/tokens-Qrhlekc4.js";
2
+ import { n as t } from "./chunks/assets-D80i9sMq.js";
3
3
  import { memo as n, useMemo as r, useRef as i, useState as a } from "react";
4
4
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
5
  import { useFrame as c, useLoader as l } from "@react-three/fiber";
@@ -212,7 +212,7 @@ function b({ sprite: e, width: t = 3.4, height: n = 4.5, yLockOnly: i = !1, posi
212
212
  }
213
213
  //#endregion
214
214
  //#region src/r3f/JimboText3D.tsx
215
- function x({ children: n, color: r = t.WHITE, outlineColor: i = t.BLACK, outlineWidth: a = .05, position: s = [
215
+ function x({ children: n, color: r = e.WHITE, outlineColor: i = e.BLACK, outlineWidth: a = .05, position: s = [
216
216
  0,
217
217
  0,
218
218
  0
@@ -223,7 +223,7 @@ function x({ children: n, color: r = t.WHITE, outlineColor: i = t.BLACK, outline
223
223
  color: r,
224
224
  outlineColor: i,
225
225
  outlineWidth: a,
226
- font: e("font"),
226
+ font: t("font"),
227
227
  anchorX: "center",
228
228
  anchorY: "middle",
229
229
  children: n
package/dist/r3f.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"r3f.js","names":[],"sources":["../src/r3f/Card3D.tsx","../src/r3f/JimboBillboard.tsx","../src/r3f/JimboText3D.tsx"],"sourcesContent":["'use client'\r\n\r\nimport { useRef, useMemo, useState, memo } from 'react'\r\nimport { useFrame, useLoader, type ThreeEvent } from '@react-three/fiber'\r\nimport { useSpring, animated } from '@react-spring/three'\r\nimport * as THREE from 'three'\r\nimport type { MotelySpriteData } from '../decode/motelySprite.js'\r\n\r\n// eslint-disable-next-line react-refresh/only-export-components\r\nexport const CARD_DIMENSIONS = { WIDTH: 0.7, HEIGHT: 0.95, DEPTH: 0.02 } as const\r\n// eslint-disable-next-line react-refresh/only-export-components\r\nexport const CARD_MAGNET = {\r\n MAX_TILT_X: 0.36,\r\n MAX_TILT_Y: 0.42,\r\n MAX_SHIFT: 0.038,\r\n TWIST_Z: 0.11,\r\n LERP_IN: 18,\r\n LERP_OUT: 10,\r\n} as const\r\n\r\nfunction useSpriteTexture(sprite: MotelySpriteData) {\r\n const texture = useLoader(THREE.TextureLoader, sprite.atlasPath);\r\n \r\n return useMemo(() => {\r\n const t = texture.clone();\r\n t.colorSpace = THREE.SRGBColorSpace;\r\n t.magFilter = THREE.NearestFilter;\r\n t.minFilter = THREE.NearestFilter;\r\n t.repeat.set(1 / sprite.gridCols, 1 / sprite.gridRows);\r\n t.offset.set(\r\n sprite.gridCol / sprite.gridCols,\r\n 1 - ((sprite.gridRow + 1) / sprite.gridRows)\r\n );\r\n t.needsUpdate = true;\r\n return t;\r\n }, [texture, sprite.gridCol, sprite.gridRow, sprite.gridCols, sprite.gridRows]);\r\n}\r\n\r\nexport interface Card3DProps {\r\n sprite: MotelySpriteData\r\n position?: [number, number, number]\r\n rotation?: [number, number, number]\r\n selected?: boolean\r\n highlighted?: boolean\r\n onClick?: () => void\r\n onPointerEnter?: () => void\r\n onPointerLeave?: () => void\r\n}\r\n\r\nexport const Card3D = memo(function Card3D({\r\n sprite,\r\n position = [0, 0, 0],\r\n rotation = [0, 0, 0],\r\n selected = false,\r\n highlighted = false,\r\n onClick,\r\n onPointerEnter,\r\n onPointerLeave,\r\n}: Card3DProps) {\r\n const tiltRef = useRef<THREE.Group>(null)\r\n const target = useRef({ rx: 0, ry: 0, rz: 0, ox: 0, oy: 0 })\r\n const [hovered, setHovered] = useState(false)\r\n\r\n const texture = useSpriteTexture(sprite)\r\n\r\n const { posY, scale } = useSpring({\r\n posY: selected ? 0.3 : hovered ? 0.15 : 0,\r\n scale: hovered ? 1.08 : selected ? 1.05 : 1,\r\n config: { tension: 300, friction: 20 },\r\n })\r\n\r\n useFrame((_state, dt) => {\r\n const g = tiltRef.current\r\n if (!g) return\r\n const t = target.current\r\n const rate = hovered ? CARD_MAGNET.LERP_IN : CARD_MAGNET.LERP_OUT\r\n const a = 1 - Math.exp(-rate * dt)\r\n g.rotation.x = THREE.MathUtils.lerp(g.rotation.x, t.rx, a)\r\n g.rotation.y = THREE.MathUtils.lerp(g.rotation.y, t.ry, a)\r\n g.rotation.z = THREE.MathUtils.lerp(g.rotation.z, t.rz, a)\r\n g.position.x = THREE.MathUtils.lerp(g.position.x, t.ox, a)\r\n g.position.y = THREE.MathUtils.lerp(g.position.y, t.oy, a)\r\n })\r\n\r\n const glowColor = useMemo(() => highlighted ? '#e4b643' : '#ffffff', [highlighted])\r\n\r\n const onMove = (e: ThreeEvent<PointerEvent>) => {\r\n e.stopPropagation()\r\n const uv = e.uv\r\n if (!uv) return\r\n const nx = THREE.MathUtils.clamp((uv.x - 0.5) * 2, -1, 1)\r\n const ny = THREE.MathUtils.clamp((uv.y - 0.5) * 2, -1, 1)\r\n target.current.ry = -nx * CARD_MAGNET.MAX_TILT_Y\r\n target.current.rx = ny * CARD_MAGNET.MAX_TILT_X\r\n target.current.rz = -nx * ny * CARD_MAGNET.TWIST_Z\r\n target.current.ox = nx * CARD_MAGNET.MAX_SHIFT\r\n target.current.oy = -ny * CARD_MAGNET.MAX_SHIFT * 0.65\r\n }\r\n\r\n const reset = () => { target.current = { rx: 0, ry: 0, rz: 0, ox: 0, oy: 0 } }\r\n\r\n if (!texture) return null\r\n\r\n return (\r\n <animated.group\r\n position-x={position[0]}\r\n position-y={posY.to((y) => position[1] + y)}\r\n position-z={position[2]}\r\n rotation-x={rotation[0]}\r\n rotation-y={rotation[1]}\r\n rotation-z={rotation[2]}\r\n scale={scale}\r\n >\r\n {/* Invisible hit mesh that does not shift or twist, preventing boop-cancel loops */}\r\n <mesh\r\n visible={false}\r\n onClick={(e) => { e.stopPropagation(); onClick?.() }}\r\n onPointerMove={onMove}\r\n onPointerEnter={(e) => { e.stopPropagation(); setHovered(true); onPointerEnter?.(); document.body.style.cursor = 'pointer' }}\r\n onPointerLeave={(e) => { e.stopPropagation(); setHovered(false); reset(); onPointerLeave?.(); document.body.style.cursor = 'auto' }}\r\n >\r\n <boxGeometry args={[CARD_DIMENSIONS.WIDTH, CARD_DIMENSIONS.HEIGHT, CARD_DIMENSIONS.DEPTH * 2]} />\r\n <meshBasicMaterial />\r\n </mesh>\r\n\r\n <group ref={tiltRef}>\r\n {highlighted && (\r\n <pointLight color={glowColor} intensity={1.5} distance={1} position={[0, 0, 0.1]} />\r\n )}\r\n <mesh castShadow receiveShadow>\r\n <boxGeometry args={[CARD_DIMENSIONS.WIDTH, CARD_DIMENSIONS.HEIGHT, CARD_DIMENSIONS.DEPTH]} />\r\n <meshBasicMaterial attach=\"material-4\" map={texture} toneMapped={false} />\r\n <meshStandardMaterial attach=\"material-5\" color=\"#1a1a2e\" metalness={0.2} roughness={0.8} />\r\n <meshStandardMaterial attach=\"material-0\" color=\"#f5f5dc\" />\r\n <meshStandardMaterial attach=\"material-1\" color=\"#f5f5dc\" />\r\n <meshStandardMaterial attach=\"material-2\" color=\"#f5f5dc\" />\r\n <meshStandardMaterial attach=\"material-3\" color=\"#f5f5dc\" />\r\n </mesh>\r\n {selected && (\r\n <mesh position={[0, 0, -CARD_DIMENSIONS.DEPTH]}>\r\n <ringGeometry args={[0.45, 0.5, 32]} />\r\n <meshBasicMaterial color=\"#e4b643\" transparent opacity={0.8} />\r\n </mesh>\r\n )}\r\n </group>\r\n </animated.group>\r\n )\r\n})\r\n","import React, { useMemo } from 'react'\r\nimport { Billboard } from '@react-three/drei'\r\nimport { useLoader } from '@react-three/fiber'\r\nimport * as THREE from 'three'\r\nimport type { MotelySpriteData } from '../decode/motelySprite.js'\r\n\r\nexport interface JimboBillboardProps {\r\n sprite: MotelySpriteData | null\r\n label?: string\r\n width?: number\r\n height?: number\r\n yLockOnly?: boolean\r\n position?: [number, number, number]\r\n}\r\n\r\nexport function JimboBillboard(props: JimboBillboardProps) {\r\n if (!props.sprite) return null;\r\n return <JimboBillboardInner {...props} sprite={props.sprite} />;\r\n}\r\n\r\nfunction JimboBillboardInner({\r\n sprite,\r\n width = 3.4,\r\n height = 4.5,\r\n yLockOnly = false,\r\n position = [0, 0, 0]\r\n}: Omit<JimboBillboardProps, 'sprite'> & { sprite: MotelySpriteData }) {\r\n // Memoize texture to avoid per-render allocation\r\n const texture = useLoader(THREE.TextureLoader, sprite.atlasPath);\r\n\r\n const clonedTexture = useMemo(() => {\r\n const tex = texture.clone();\r\n tex.magFilter = THREE.NearestFilter;\r\n tex.minFilter = THREE.NearestFilter;\r\n // Set up sprite cropping\r\n tex.repeat.set(1 / sprite.gridCols, 1 / sprite.gridRows);\r\n tex.offset.set(\r\n sprite.gridCol / sprite.gridCols,\r\n 1 - ((sprite.gridRow + 1) / sprite.gridRows)\r\n );\r\n tex.needsUpdate = true;\r\n return tex;\r\n }, [texture, sprite.gridCol, sprite.gridRow, sprite.gridCols, sprite.gridRows]);\r\n\r\n const material = useMemo(() => {\r\n return new THREE.MeshBasicMaterial({\r\n map: clonedTexture,\r\n transparent: true,\r\n alphaTest: 0.5\r\n });\r\n }, [clonedTexture]);\r\n\r\n return (\r\n <Billboard\r\n lockY={yLockOnly}\r\n lockX={false}\r\n lockZ={false}\r\n position={position}\r\n >\r\n <mesh material={material}>\r\n <planeGeometry args={[width, height]} />\r\n </mesh>\r\n </Billboard>\r\n )\r\n}\r\n","import React from 'react'\r\nimport { Text } from '@react-three/drei'\r\nimport { resolveJamlAssetUrl } from '../assets.js'\r\nimport { JimboColorOption } from '../ui/tokens.js'\r\n\r\nexport interface JimboText3DProps {\r\n children: string\r\n color?: string\r\n outlineColor?: string\r\n outlineWidth?: number\r\n position?: [number, number, number]\r\n fontSize?: number\r\n}\r\n\r\nexport function JimboText3D({\r\n children,\r\n color = JimboColorOption.WHITE,\r\n outlineColor = JimboColorOption.BLACK,\r\n outlineWidth = 0.05,\r\n position = [0, 0, 0],\r\n fontSize = 1\r\n}: JimboText3DProps) {\r\n // We use the m6x11plus font from assets if possible, or fallback\r\n return (\r\n <Text\r\n position={position}\r\n fontSize={fontSize}\r\n color={color}\r\n outlineColor={outlineColor}\r\n outlineWidth={outlineWidth}\r\n font={resolveJamlAssetUrl('font')}\r\n anchorX=\"center\"\r\n anchorY=\"middle\"\r\n >\r\n {children}\r\n </Text>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;AASA,IAAa,IAAkB;CAAE,OAAO;CAAK,QAAQ;CAAM,OAAO;CAAM,EAE3D,IAAc;CACzB,YAAY;CACZ,YAAY;CACZ,WAAW;CACX,SAAS;CACT,SAAS;CACT,UAAU;CACX;AAED,SAAS,EAAiB,GAA0B;CAClD,IAAM,IAAU,EAAU,EAAM,eAAe,EAAO,UAAU;CAEhE,OAAO,QAAc;EACnB,IAAM,IAAI,EAAQ,OAAO;EAUzB,OATA,EAAE,aAAa,EAAM,gBACrB,EAAE,YAAY,EAAM,eACpB,EAAE,YAAY,EAAM,eACpB,EAAE,OAAO,IAAI,IAAI,EAAO,UAAU,IAAI,EAAO,SAAS,EACtD,EAAE,OAAO,IACP,EAAO,UAAU,EAAO,UACxB,KAAM,EAAO,UAAU,KAAK,EAAO,SACpC,EACD,EAAE,cAAc,IACT;IACN;EAAC;EAAS,EAAO;EAAS,EAAO;EAAS,EAAO;EAAU,EAAO;EAAS,CAAC;;AAcjF,IAAa,IAAS,EAAK,SAAgB,EACzC,WACA,cAAW;CAAC;CAAG;CAAG;CAAE,EACpB,cAAW;CAAC;CAAG;CAAG;CAAE,EACpB,cAAW,IACX,iBAAc,IACd,YACA,mBACA,qBACc;CACd,IAAM,IAAU,EAAoB,KAAK,EACnC,IAAS,EAAO;EAAE,IAAI;EAAG,IAAI;EAAG,IAAI;EAAG,IAAI;EAAG,IAAI;EAAG,CAAC,EACtD,CAAC,GAAS,KAAc,EAAS,GAAM,EAEvC,IAAU,EAAiB,EAAO,EAElC,EAAE,SAAM,aAAU,EAAU;EAChC,MAAM,IAAW,KAAM,IAAU,MAAO;EACxC,OAAO,IAAU,OAAO,IAAW,OAAO;EAC1C,QAAQ;GAAE,SAAS;GAAK,UAAU;GAAI;EACvC,CAAC;CAEF,GAAU,GAAQ,MAAO;EACvB,IAAM,IAAI,EAAQ;EAClB,IAAI,CAAC,GAAG;EACR,IAAM,IAAI,EAAO,SACX,IAAO,IAAU,EAAY,UAAU,EAAY,UACnD,IAAI,IAAI,KAAK,IAAI,CAAC,IAAO,EAAG;EAKlC,AAJA,EAAE,SAAS,IAAI,EAAM,UAAU,KAAK,EAAE,SAAS,GAAG,EAAE,IAAI,EAAE,EAC1D,EAAE,SAAS,IAAI,EAAM,UAAU,KAAK,EAAE,SAAS,GAAG,EAAE,IAAI,EAAE,EAC1D,EAAE,SAAS,IAAI,EAAM,UAAU,KAAK,EAAE,SAAS,GAAG,EAAE,IAAI,EAAE,EAC1D,EAAE,SAAS,IAAI,EAAM,UAAU,KAAK,EAAE,SAAS,GAAG,EAAE,IAAI,EAAE,EAC1D,EAAE,SAAS,IAAI,EAAM,UAAU,KAAK,EAAE,SAAS,GAAG,EAAE,IAAI,EAAE;GAC1D;CAEF,IAAM,IAAY,QAAc,IAAc,YAAY,WAAW,CAAC,EAAY,CAAC,EAE7E,KAAU,MAAgC;EAC9C,EAAE,iBAAiB;EACnB,IAAM,IAAK,EAAE;EACb,IAAI,CAAC,GAAI;EACT,IAAM,IAAK,EAAM,UAAU,OAAO,EAAG,IAAI,MAAO,GAAG,IAAI,EAAE,EACnD,IAAK,EAAM,UAAU,OAAO,EAAG,IAAI,MAAO,GAAG,IAAI,EAAE;EAKzD,AAJA,EAAO,QAAQ,KAAK,CAAC,IAAK,EAAY,YACtC,EAAO,QAAQ,KAAM,IAAK,EAAY,YACtC,EAAO,QAAQ,KAAK,CAAC,IAAK,IAAK,EAAY,SAC3C,EAAO,QAAQ,KAAM,IAAK,EAAY,WACtC,EAAO,QAAQ,KAAK,CAAC,IAAK,EAAY,YAAY;IAG9C,UAAc;EAAE,EAAO,UAAU;GAAE,IAAI;GAAG,IAAI;GAAG,IAAI;GAAG,IAAI;GAAG,IAAI;GAAG;;CAI5E,OAFK,IAGH,kBAAC,EAAS,OAAV;EACE,cAAY,EAAS;EACrB,cAAY,EAAK,IAAI,MAAM,EAAS,KAAK,EAAE;EAC3C,cAAY,EAAS;EACrB,cAAY,EAAS;EACrB,cAAY,EAAS;EACrB,cAAY,EAAS;EACd;YAPT,CAUE,kBAAC,QAAD;GACE,SAAS;GACT,UAAU,MAAM;IAAuB,AAArB,EAAE,iBAAiB,EAAE,KAAW;;GAClD,eAAe;GACf,iBAAiB,MAAM;IAA6D,AAA3D,EAAE,iBAAiB,EAAE,EAAW,GAAK,EAAE,KAAkB,EAAE,SAAS,KAAK,MAAM,SAAS;;GACjH,iBAAiB,MAAM;IAAuE,AAArE,EAAE,iBAAiB,EAAE,EAAW,GAAM,EAAE,GAAO,EAAE,KAAkB,EAAE,SAAS,KAAK,MAAM,SAAS;;aAL7H,CAOE,kBAAC,eAAD,EAAa,MAAM;IAAC,EAAgB;IAAO,EAAgB;IAAQ,EAAgB,QAAQ;IAAE,EAAI,CAAA,EACjG,kBAAC,qBAAD,EAAqB,CAAA,CAChB;MAEP,kBAAC,SAAD;GAAO,KAAK;aAAZ;IACG,KACC,kBAAC,cAAD;KAAY,OAAO;KAAW,WAAW;KAAK,UAAU;KAAG,UAAU;MAAC;MAAG;MAAG;MAAI;KAAI,CAAA;IAEtF,kBAAC,QAAD;KAAM,YAAA;KAAW,eAAA;eAAjB;MACE,kBAAC,eAAD,EAAa,MAAM;OAAC,EAAgB;OAAO,EAAgB;OAAQ,EAAgB;OAAM,EAAI,CAAA;MAC7F,kBAAC,qBAAD;OAAmB,QAAO;OAAa,KAAK;OAAS,YAAY;OAAS,CAAA;MAC1E,kBAAC,wBAAD;OAAsB,QAAO;OAAa,OAAM;OAAU,WAAW;OAAK,WAAW;OAAO,CAAA;MAC5F,kBAAC,wBAAD;OAAsB,QAAO;OAAa,OAAM;OAAY,CAAA;MAC5D,kBAAC,wBAAD;OAAsB,QAAO;OAAa,OAAM;OAAY,CAAA;MAC5D,kBAAC,wBAAD;OAAsB,QAAO;OAAa,OAAM;OAAY,CAAA;MAC5D,kBAAC,wBAAD;OAAsB,QAAO;OAAa,OAAM;OAAY,CAAA;MACvD;;IACN,KACC,kBAAC,QAAD;KAAM,UAAU;MAAC;MAAG;MAAG,CAAC,EAAgB;MAAM;eAA9C,CACE,kBAAC,gBAAD,EAAc,MAAM;MAAC;MAAM;MAAK;MAAG,EAAI,CAAA,EACvC,kBAAC,qBAAD;MAAmB,OAAM;MAAU,aAAA;MAAY,SAAS;MAAO,CAAA,CAC1D;;IAEH;KACO;MA5CE;EA8CrB;;;ACpIF,SAAgB,EAAe,GAA4B;CAEzD,OADK,EAAM,SACJ,kBAAC,GAAD;EAAqB,GAAI;EAAO,QAAQ,EAAM;EAAU,CAAA,GADrC;;AAI5B,SAAS,EAAoB,EAC3B,WACA,WAAQ,KACR,YAAS,KACT,eAAY,IACZ,cAAW;CAAC;CAAG;CAAG;CAAE,IACiD;CAErE,IAAM,IAAU,EAAU,EAAM,eAAe,EAAO,UAAU,EAE1D,IAAgB,QAAc;EAClC,IAAM,IAAM,EAAQ,OAAO;EAU3B,OATA,EAAI,YAAY,EAAM,eACtB,EAAI,YAAY,EAAM,eAEtB,EAAI,OAAO,IAAI,IAAI,EAAO,UAAU,IAAI,EAAO,SAAS,EACxD,EAAI,OAAO,IACT,EAAO,UAAU,EAAO,UACxB,KAAM,EAAO,UAAU,KAAK,EAAO,SACpC,EACD,EAAI,cAAc,IACX;IACN;EAAC;EAAS,EAAO;EAAS,EAAO;EAAS,EAAO;EAAU,EAAO;EAAS,CAAC;CAU/E,OACE,kBAAC,GAAD;EACE,OAAO;EACP,OAAO;EACP,OAAO;EACG;YAEV,kBAAC,QAAD;GAAgB,UAfH,QACR,IAAI,EAAM,kBAAkB;IACjC,KAAK;IACL,aAAa;IACb,WAAW;IACZ,CAAC,EACD,CAAC,EAAc,CASE;aACd,kBAAC,iBAAD,EAAe,MAAM,CAAC,GAAO,EAAO,EAAI,CAAA;GACnC,CAAA;EACG,CAAA;;;;AChDhB,SAAgB,EAAY,EAC1B,aACA,WAAQ,EAAiB,OACzB,kBAAe,EAAiB,OAChC,kBAAe,KACf,cAAW;CAAC;CAAG;CAAG;CAAE,EACpB,cAAW,KACQ;CAEnB,OACE,kBAAC,GAAD;EACY;EACA;EACH;EACO;EACA;EACd,MAAM,EAAoB,OAAO;EACjC,SAAQ;EACR,SAAQ;EAEP;EACI,CAAA"}
1
+ {"version":3,"file":"r3f.js","names":[],"sources":["../src/r3f/Card3D.tsx","../src/r3f/JimboBillboard.tsx","../src/r3f/JimboText3D.tsx"],"sourcesContent":["'use client'\r\n\r\nimport { useRef, useMemo, useState, memo } from 'react'\r\nimport { useFrame, useLoader, type ThreeEvent } from '@react-three/fiber'\r\nimport { useSpring, animated } from '@react-spring/three'\r\nimport * as THREE from 'three'\r\nimport type { MotelySpriteData } from '../decode/motelySprite.js'\r\n\r\n// eslint-disable-next-line react-refresh/only-export-components\r\nexport const CARD_DIMENSIONS = { WIDTH: 0.7, HEIGHT: 0.95, DEPTH: 0.02 } as const\r\n// eslint-disable-next-line react-refresh/only-export-components\r\nexport const CARD_MAGNET = {\r\n MAX_TILT_X: 0.36,\r\n MAX_TILT_Y: 0.42,\r\n MAX_SHIFT: 0.038,\r\n TWIST_Z: 0.11,\r\n LERP_IN: 18,\r\n LERP_OUT: 10,\r\n} as const\r\n\r\nfunction useSpriteTexture(sprite: MotelySpriteData) {\r\n const texture = useLoader(THREE.TextureLoader, sprite.atlasPath);\r\n \r\n return useMemo(() => {\r\n const t = texture.clone();\r\n t.colorSpace = THREE.SRGBColorSpace;\r\n t.magFilter = THREE.NearestFilter;\r\n t.minFilter = THREE.NearestFilter;\r\n t.repeat.set(1 / sprite.gridCols, 1 / sprite.gridRows);\r\n t.offset.set(\r\n sprite.gridCol / sprite.gridCols,\r\n 1 - ((sprite.gridRow + 1) / sprite.gridRows)\r\n );\r\n t.needsUpdate = true;\r\n return t;\r\n }, [texture, sprite.gridCol, sprite.gridRow, sprite.gridCols, sprite.gridRows]);\r\n}\r\n\r\nexport interface Card3DProps {\r\n sprite: MotelySpriteData\r\n position?: [number, number, number]\r\n rotation?: [number, number, number]\r\n selected?: boolean\r\n highlighted?: boolean\r\n onClick?: () => void\r\n onPointerEnter?: () => void\r\n onPointerLeave?: () => void\r\n}\r\n\r\nexport const Card3D = memo(function Card3D({\r\n sprite,\r\n position = [0, 0, 0],\r\n rotation = [0, 0, 0],\r\n selected = false,\r\n highlighted = false,\r\n onClick,\r\n onPointerEnter,\r\n onPointerLeave,\r\n}: Card3DProps) {\r\n const tiltRef = useRef<THREE.Group>(null)\r\n const target = useRef({ rx: 0, ry: 0, rz: 0, ox: 0, oy: 0 })\r\n const [hovered, setHovered] = useState(false)\r\n\r\n const texture = useSpriteTexture(sprite)\r\n\r\n const { posY, scale } = useSpring({\r\n posY: selected ? 0.3 : hovered ? 0.15 : 0,\r\n scale: hovered ? 1.08 : selected ? 1.05 : 1,\r\n config: { tension: 300, friction: 20 },\r\n })\r\n\r\n useFrame((_state, dt) => {\r\n const g = tiltRef.current\r\n if (!g) return\r\n const t = target.current\r\n const rate = hovered ? CARD_MAGNET.LERP_IN : CARD_MAGNET.LERP_OUT\r\n const a = 1 - Math.exp(-rate * dt)\r\n g.rotation.x = THREE.MathUtils.lerp(g.rotation.x, t.rx, a)\r\n g.rotation.y = THREE.MathUtils.lerp(g.rotation.y, t.ry, a)\r\n g.rotation.z = THREE.MathUtils.lerp(g.rotation.z, t.rz, a)\r\n g.position.x = THREE.MathUtils.lerp(g.position.x, t.ox, a)\r\n g.position.y = THREE.MathUtils.lerp(g.position.y, t.oy, a)\r\n })\r\n\r\n const glowColor = useMemo(() => highlighted ? '#e4b643' : '#ffffff', [highlighted])\r\n\r\n const onMove = (e: ThreeEvent<PointerEvent>) => {\r\n e.stopPropagation()\r\n const uv = e.uv\r\n if (!uv) return\r\n const nx = THREE.MathUtils.clamp((uv.x - 0.5) * 2, -1, 1)\r\n const ny = THREE.MathUtils.clamp((uv.y - 0.5) * 2, -1, 1)\r\n target.current.ry = -nx * CARD_MAGNET.MAX_TILT_Y\r\n target.current.rx = ny * CARD_MAGNET.MAX_TILT_X\r\n target.current.rz = -nx * ny * CARD_MAGNET.TWIST_Z\r\n target.current.ox = nx * CARD_MAGNET.MAX_SHIFT\r\n target.current.oy = -ny * CARD_MAGNET.MAX_SHIFT * 0.65\r\n }\r\n\r\n const reset = () => { target.current = { rx: 0, ry: 0, rz: 0, ox: 0, oy: 0 } }\r\n\r\n if (!texture) return null\r\n\r\n return (\r\n <animated.group\r\n position-x={position[0]}\r\n position-y={posY.to((y) => position[1] + y)}\r\n position-z={position[2]}\r\n rotation-x={rotation[0]}\r\n rotation-y={rotation[1]}\r\n rotation-z={rotation[2]}\r\n scale={scale}\r\n >\r\n {/* Invisible hit mesh that does not shift or twist, preventing boop-cancel loops */}\r\n <mesh\r\n visible={false}\r\n onClick={(e) => { e.stopPropagation(); onClick?.() }}\r\n onPointerMove={onMove}\r\n onPointerEnter={(e) => { e.stopPropagation(); setHovered(true); onPointerEnter?.(); document.body.style.cursor = 'pointer' }}\r\n onPointerLeave={(e) => { e.stopPropagation(); setHovered(false); reset(); onPointerLeave?.(); document.body.style.cursor = 'auto' }}\r\n >\r\n <boxGeometry args={[CARD_DIMENSIONS.WIDTH, CARD_DIMENSIONS.HEIGHT, CARD_DIMENSIONS.DEPTH * 2]} />\r\n <meshBasicMaterial />\r\n </mesh>\r\n\r\n <group ref={tiltRef}>\r\n {highlighted && (\r\n <pointLight color={glowColor} intensity={1.5} distance={1} position={[0, 0, 0.1]} />\r\n )}\r\n <mesh castShadow receiveShadow>\r\n <boxGeometry args={[CARD_DIMENSIONS.WIDTH, CARD_DIMENSIONS.HEIGHT, CARD_DIMENSIONS.DEPTH]} />\r\n <meshBasicMaterial attach=\"material-4\" map={texture} toneMapped={false} />\r\n <meshStandardMaterial attach=\"material-5\" color=\"#1a1a2e\" metalness={0.2} roughness={0.8} />\r\n <meshStandardMaterial attach=\"material-0\" color=\"#f5f5dc\" />\r\n <meshStandardMaterial attach=\"material-1\" color=\"#f5f5dc\" />\r\n <meshStandardMaterial attach=\"material-2\" color=\"#f5f5dc\" />\r\n <meshStandardMaterial attach=\"material-3\" color=\"#f5f5dc\" />\r\n </mesh>\r\n {selected && (\r\n <mesh position={[0, 0, -CARD_DIMENSIONS.DEPTH]}>\r\n <ringGeometry args={[0.45, 0.5, 32]} />\r\n <meshBasicMaterial color=\"#e4b643\" transparent opacity={0.8} />\r\n </mesh>\r\n )}\r\n </group>\r\n </animated.group>\r\n )\r\n})\r\n","import React, { useMemo } from 'react'\r\nimport { Billboard } from '@react-three/drei'\r\nimport { useLoader } from '@react-three/fiber'\r\nimport * as THREE from 'three'\r\nimport type { MotelySpriteData } from '../decode/motelySprite.js'\r\n\r\nexport interface JimboBillboardProps {\r\n sprite: MotelySpriteData | null\r\n label?: string\r\n width?: number\r\n height?: number\r\n yLockOnly?: boolean\r\n position?: [number, number, number]\r\n}\r\n\r\nexport function JimboBillboard(props: JimboBillboardProps) {\r\n if (!props.sprite) return null;\r\n return <JimboBillboardInner {...props} sprite={props.sprite} />;\r\n}\r\n\r\nfunction JimboBillboardInner({\r\n sprite,\r\n width = 3.4,\r\n height = 4.5,\r\n yLockOnly = false,\r\n position = [0, 0, 0]\r\n}: Omit<JimboBillboardProps, 'sprite'> & { sprite: MotelySpriteData }) {\r\n // Memoize texture to avoid per-render allocation\r\n const texture = useLoader(THREE.TextureLoader, sprite.atlasPath);\r\n\r\n const clonedTexture = useMemo(() => {\r\n const tex = texture.clone();\r\n tex.magFilter = THREE.NearestFilter;\r\n tex.minFilter = THREE.NearestFilter;\r\n // Set up sprite cropping\r\n tex.repeat.set(1 / sprite.gridCols, 1 / sprite.gridRows);\r\n tex.offset.set(\r\n sprite.gridCol / sprite.gridCols,\r\n 1 - ((sprite.gridRow + 1) / sprite.gridRows)\r\n );\r\n tex.needsUpdate = true;\r\n return tex;\r\n }, [texture, sprite.gridCol, sprite.gridRow, sprite.gridCols, sprite.gridRows]);\r\n\r\n const material = useMemo(() => {\r\n return new THREE.MeshBasicMaterial({\r\n map: clonedTexture,\r\n transparent: true,\r\n alphaTest: 0.5\r\n });\r\n }, [clonedTexture]);\r\n\r\n return (\r\n <Billboard\r\n lockY={yLockOnly}\r\n lockX={false}\r\n lockZ={false}\r\n position={position}\r\n >\r\n <mesh material={material}>\r\n <planeGeometry args={[width, height]} />\r\n </mesh>\r\n </Billboard>\r\n )\r\n}\r\n","import React from 'react'\r\nimport { Text } from '@react-three/drei'\r\nimport { resolveJamlAssetUrl } from '../assets.js'\r\nimport { JimboColorOption } from '../ui/tokens.js'\r\n\r\nexport interface JimboText3DProps {\r\n children: string\r\n color?: string\r\n outlineColor?: string\r\n outlineWidth?: number\r\n position?: [number, number, number]\r\n fontSize?: number\r\n}\r\n\r\nexport function JimboText3D({\r\n children,\r\n color = JimboColorOption.WHITE,\r\n outlineColor = JimboColorOption.BLACK,\r\n outlineWidth = 0.05,\r\n position = [0, 0, 0],\r\n fontSize = 1\r\n}: JimboText3DProps) {\r\n // We use the m6x11plus font from assets if possible, or fallback\r\n return (\r\n <Text\r\n position={position}\r\n fontSize={fontSize}\r\n color={color}\r\n outlineColor={outlineColor}\r\n outlineWidth={outlineWidth}\r\n font={resolveJamlAssetUrl('font')}\r\n anchorX=\"center\"\r\n anchorY=\"middle\"\r\n >\r\n {children}\r\n </Text>\r\n )\r\n}\r\n"],"mappings":"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"}
@@ -1,13 +1,12 @@
1
1
  import { default as React } from 'react';
2
2
  export type JimboBadgeTone = 'dark' | 'blue' | 'red' | 'green' | 'gold' | 'grey' | 'orange' | 'purple';
3
- export interface JimboBadgeProps {
3
+ export interface JimboBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
4
4
  size?: 'sm' | 'md';
5
5
  tone?: JimboBadgeTone;
6
6
  children: React.ReactNode;
7
- className?: string;
8
7
  }
9
8
  /**
10
9
  * Small colored label pill. Matches Balatro's in-game tag/rarity badges.
11
10
  * All styling via jimbo.css `.j-badge` classes.
12
11
  */
13
- export declare function JimboBadge({ size, tone, className, children }: JimboBadgeProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function JimboBadge({ size, tone, className, children, ...props }: JimboBadgeProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { default as React } from 'react';
2
+ export interface JimboPanelSpinnerProps {
3
+ label?: React.ReactNode;
4
+ title: React.ReactNode;
5
+ description?: React.ReactNode;
6
+ media?: React.ReactNode;
7
+ meta?: React.ReactNode;
8
+ className?: string;
9
+ style?: React.CSSProperties;
10
+ onPrev?: () => void;
11
+ onNext?: () => void;
12
+ prevDisabled?: boolean;
13
+ nextDisabled?: boolean;
14
+ }
15
+ export declare function JimboPanelSpinner({ label, title, description, media, meta, className, style, onPrev, onNext, prevDisabled, nextDisabled, }: JimboPanelSpinnerProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ export interface JimboTextInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
3
+ invalid?: boolean;
4
+ }
5
+ export declare const JimboTextInput: React.ForwardRefExoticComponent<JimboTextInputProps & React.RefAttributes<HTMLInputElement>>;
@@ -1,7 +1,8 @@
1
1
  export interface PanelSplitterProps {
2
2
  "aria-label"?: string;
3
+ className?: string;
3
4
  onDrag: (delta: number) => void;
4
5
  onKeyAdjust?: (delta: number) => void;
5
6
  orientation?: "vertical" | "horizontal";
6
7
  }
7
- export declare function PanelSplitter({ orientation, onDrag, onKeyAdjust, "aria-label": ariaLabel, }: PanelSplitterProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare function PanelSplitter({ orientation, onDrag, onKeyAdjust, className, "aria-label": ariaLabel, }: PanelSplitterProps): import("react/jsx-runtime").JSX.Element;
@@ -1,8 +1,14 @@
1
+ import { default as React } from 'react';
1
2
  export interface JimboBalatroFooterProps {
3
+ /** Fade the footer out */
4
+ hidden?: boolean;
5
+ /** Extra className */
2
6
  className?: string;
7
+ /** Optional inline children */
8
+ children?: React.ReactNode;
3
9
  }
4
10
  /**
5
11
  * Attribution footer with animated suit cycle.
6
12
  * Always rendered — required attribution for using Balatro art.
7
13
  */
8
- export declare function JimboBalatroFooter({ className }: JimboBalatroFooterProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function JimboBalatroFooter({ hidden, className, children }: JimboBalatroFooterProps): import("react/jsx-runtime").JSX.Element | null;
@@ -49,8 +49,8 @@ export declare function useJamlCardRenderer({ layers, invert, hoverTilt, }: {
49
49
  hoverTilt?: boolean;
50
50
  }): {
51
51
  canvasRef: React.RefObject<HTMLCanvasElement | null>;
52
- containerStyle: React.CSSProperties;
53
- canvasStyle: React.CSSProperties;
52
+ containerRef: React.RefObject<HTMLDivElement | null>;
53
+ ratio: number;
54
54
  handlers: {
55
55
  onPointerEnter: ((event: React.PointerEvent) => void) | undefined;
56
56
  onPointerLeave: (() => void) | undefined;
@@ -59,7 +59,6 @@ export declare function useJamlCardRenderer({ layers, invert, hoverTilt, }: {
59
59
  };
60
60
  /**
61
61
  * Tracks which 'ante' section is currently most visible in a scrollable container.
62
- * Used in JamlAnalyzerFullscreen and AnalyzerExplorer.
63
62
  */
64
63
  export declare function useAnteTracker(antes: {
65
64
  ante: number;