@rpg-engine/long-bow 0.8.20 → 0.8.22

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 (33) hide show
  1. package/dist/components/InformationCenter/InformationCenter.d.ts +5 -15
  2. package/dist/components/InformationCenter/sections/bestiary/InformationCenterBestiarySection.d.ts +3 -1
  3. package/dist/components/InformationCenter/sections/bestiary/InformationCenterNPCDetails.d.ts +4 -1
  4. package/dist/components/InformationCenter/sections/bestiary/InformationCenterNPCTooltip.d.ts +1 -1
  5. package/dist/components/InformationCenter/sections/faq/InformationCenterFaqSection.d.ts +1 -1
  6. package/dist/components/InformationCenter/sections/items/InformationCenterItemDetails.d.ts +1 -1
  7. package/dist/components/InformationCenter/sections/items/InformationCenterItemTooltip.d.ts +1 -1
  8. package/dist/components/InformationCenter/sections/items/InformationCenterItemsSection.d.ts +2 -1
  9. package/dist/components/InformationCenter/sections/tutorials/InformationCenterTutorialsSection.d.ts +1 -1
  10. package/dist/long-bow.cjs.development.js +793 -660
  11. package/dist/long-bow.cjs.development.js.map +1 -1
  12. package/dist/long-bow.cjs.production.min.js +1 -1
  13. package/dist/long-bow.cjs.production.min.js.map +1 -1
  14. package/dist/long-bow.esm.js +794 -661
  15. package/dist/long-bow.esm.js.map +1 -1
  16. package/dist/mocks/informationCenter.mocks.d.ts +1 -2
  17. package/package.json +2 -2
  18. package/src/components/CraftBook/CraftBook.tsx +1 -1
  19. package/src/components/Dropdown.tsx +25 -3
  20. package/src/components/InformationCenter/InformationCenter.tsx +11 -18
  21. package/src/components/InformationCenter/sections/bestiary/InformationCenterBestiarySection.tsx +58 -7
  22. package/src/components/InformationCenter/sections/bestiary/InformationCenterNPCDetails.tsx +63 -15
  23. package/src/components/InformationCenter/sections/bestiary/InformationCenterNPCTooltip.tsx +7 -6
  24. package/src/components/InformationCenter/sections/faq/InformationCenterFaqSection.tsx +1 -1
  25. package/src/components/InformationCenter/sections/items/InformationCenterItemDetails.tsx +8 -6
  26. package/src/components/InformationCenter/sections/items/InformationCenterItemTooltip.tsx +1 -1
  27. package/src/components/InformationCenter/sections/items/InformationCenterItemsSection.tsx +36 -10
  28. package/src/components/InformationCenter/sections/tutorials/InformationCenterTutorialsSection.tsx +133 -34
  29. package/src/components/shared/PaginatedContent/PaginatedContent.tsx +1 -1
  30. package/src/mocks/informationCenter.mocks.ts +175 -55
  31. package/src/stories/UI/info/InformationCenter.stories.tsx +6 -1
  32. package/dist/components/InformationCenter/InformationCenterTypes.d.ts +0 -79
  33. package/src/components/InformationCenter/InformationCenterTypes.ts +0 -87
@@ -27405,6 +27405,9 @@ var Icon = /*#__PURE__*/styled__default.img.withConfig({
27405
27405
  return width;
27406
27406
  });
27407
27407
 
27408
+ var ITEM_HEIGHT = 35;
27409
+ var MAX_ITEMS_VISIBLE = 10;
27410
+ var MAX_HEIGHT = MAX_ITEMS_VISIBLE * ITEM_HEIGHT;
27408
27411
  var Dropdown = function Dropdown(_ref) {
27409
27412
  var options = _ref.options,
27410
27413
  width = _ref.width,
@@ -27457,7 +27460,8 @@ var Dropdown = function Dropdown(_ref) {
27457
27460
  }, React__default.createElement("label", null, "\u25BC"), " ", selectedOption), React__default.createElement(DropdownOptions$1, {
27458
27461
  className: "rpgui-dropdown-imp",
27459
27462
  opened: opened,
27460
- opensUp: opensUp
27463
+ opensUp: opensUp,
27464
+ optionsCount: options.length
27461
27465
  }, options.map(function (option) {
27462
27466
  return React__default.createElement("li", {
27463
27467
  key: option.id,
@@ -27472,23 +27476,25 @@ var Dropdown = function Dropdown(_ref) {
27472
27476
  var Container$8 = /*#__PURE__*/styled__default.div.withConfig({
27473
27477
  displayName: "Dropdown__Container",
27474
27478
  componentId: "sc-8arn65-0"
27475
- })(["position:relative;width:", ";"], function (props) {
27479
+ })(["position:relative;width:", ";max-height:", "px;"], function (props) {
27476
27480
  return props.width || '100%';
27477
- });
27481
+ }, MAX_HEIGHT);
27478
27482
  var DropdownSelect$1 = /*#__PURE__*/styled__default.p.withConfig({
27479
27483
  displayName: "Dropdown__DropdownSelect",
27480
27484
  componentId: "sc-8arn65-1"
27481
- })(["width:100%;box-sizing:border-box;label{display:inline-block;transform:translateY(-2px);}"]);
27485
+ })(["width:100%;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-height:", "px;label{display:inline-block;transform:translateY(-2px);}"], ITEM_HEIGHT);
27482
27486
  var DropdownOptions$1 = /*#__PURE__*/styled__default.ul.withConfig({
27483
27487
  displayName: "Dropdown__DropdownOptions",
27484
27488
  componentId: "sc-8arn65-2"
27485
- })(["position:absolute;width:100%;max-height:300px;overflow-y:auto;display:", ";box-sizing:border-box;bottom:", ";top:", ";margin:0;padding:0;@media (max-width:768px){padding:8px 0;}"], function (props) {
27489
+ })(["position:absolute;width:100%;max-height:", ";overflow-y:auto;display:", ";box-sizing:border-box;bottom:", ";top:", ";margin:0;padding:0;li{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:8px 12px;min-height:", "px;max-height:", "px;box-sizing:border-box;line-height:1.2;}"], function (props) {
27490
+ return props.opened ? Math.min(props.optionsCount * ITEM_HEIGHT, MAX_HEIGHT) + "px" : '0';
27491
+ }, function (props) {
27486
27492
  return props.opened ? 'block' : 'none';
27487
27493
  }, function (props) {
27488
27494
  return props.opensUp ? '100%' : 'auto';
27489
27495
  }, function (props) {
27490
27496
  return props.opensUp ? 'auto' : '100%';
27491
- });
27497
+ }, ITEM_HEIGHT, ITEM_HEIGHT);
27492
27498
 
27493
27499
  var modalRoot = /*#__PURE__*/document.getElementById('modal-root');
27494
27500
  var ModalPortal = function ModalPortal(_ref) {
@@ -29138,7 +29144,7 @@ var SearchContainer$1 = /*#__PURE__*/styled__default.div.withConfig({
29138
29144
  var ContentContainer = /*#__PURE__*/styled__default.div.withConfig({
29139
29145
  displayName: "CraftBook__ContentContainer",
29140
29146
  componentId: "sc-19q95ue-7"
29141
- })(["flex:1;display:flex;flex-direction:column;padding:16px;padding-right:0;padding-bottom:0;width:100%;position:relative;min-height:250px;overflow:hidden;"]);
29147
+ })(["flex:1;display:flex;flex-direction:column;padding:16px;padding-right:0;padding-bottom:0;width:100%;position:relative;min-height:300px;overflow:hidden;"]);
29142
29148
  var RadioInputScroller = /*#__PURE__*/styled__default.div.withConfig({
29143
29149
  displayName: "CraftBook__RadioInputScroller",
29144
29150
  componentId: "sc-19q95ue-8"
@@ -30968,7 +30974,7 @@ var StyledDropdown = /*#__PURE__*/styled__default(Dropdown).withConfig({
30968
30974
  var PaginatedContent = function PaginatedContent(_ref) {
30969
30975
  var items = _ref.items,
30970
30976
  _ref$itemsPerPage = _ref.itemsPerPage,
30971
- itemsPerPage = _ref$itemsPerPage === void 0 ? 5 : _ref$itemsPerPage,
30977
+ itemsPerPage = _ref$itemsPerPage === void 0 ? 8 : _ref$itemsPerPage,
30972
30978
  renderItem = _ref.renderItem,
30973
30979
  _ref$emptyMessage = _ref.emptyMessage,
30974
30980
  emptyMessage = _ref$emptyMessage === void 0 ? 'No items found' : _ref$emptyMessage,
@@ -31185,202 +31191,157 @@ var SpriteContainer$2 = /*#__PURE__*/styled__default.div.withConfig({
31185
31191
  componentId: "sc-1vguuz8-7"
31186
31192
  })(["width:64px;height:64px;background:rgba(0,0,0,0.3);border-radius:4px;display:flex;justify-content:center;align-items:center;position:relative;.sprite-from-atlas-img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(2);transform-origin:center;}"]);
31187
31193
 
31188
- var ITEMS_PER_PAGE$1 = 5;
31189
- var InformationCenterNPCDetails = function InformationCenterNPCDetails(_ref) {
31190
- var _npc$loots, _npc$skills$strength, _npc$skills$dexterity, _npc$skills$resistanc;
31191
- var npc = _ref.npc,
31194
+ var InformationCenterItemDetails = function InformationCenterItemDetails(_ref) {
31195
+ var item = _ref.item,
31192
31196
  itemsAtlasJSON = _ref.itemsAtlasJSON,
31193
31197
  itemsAtlasIMG = _ref.itemsAtlasIMG,
31194
- entitiesAtlasJSON = _ref.entitiesAtlasJSON,
31195
- entitiesAtlasIMG = _ref.entitiesAtlasIMG,
31198
+ droppedBy = _ref.droppedBy,
31196
31199
  onBack = _ref.onBack;
31197
31200
  var isMobile = shared.isMobileOrTablet();
31198
- var _useState = React.useState(''),
31199
- lootSearchQuery = _useState[0],
31200
- setLootSearchQuery = _useState[1];
31201
- var _useState2 = React.useState(1),
31202
- currentLootPage = _useState2[0],
31203
- setCurrentLootPage = _useState2[1];
31204
- var formatText = function formatText(text) {
31205
- if (typeof text === 'number') {
31206
- return text.toString();
31207
- }
31208
- return text.toString().replace(/([A-Z])/g, ' $1').trim().replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2').replace(/\s+/g, ' ');
31201
+ var renderAllowedSlots = function renderAllowedSlots() {
31202
+ var _item$allowedEquipSlo;
31203
+ if (!((_item$allowedEquipSlo = item.allowedEquipSlotType) != null && _item$allowedEquipSlo.length)) return null;
31204
+ return React__default.createElement(InfoItem, null, React__default.createElement(Label, null, "Equip Slots:"), React__default.createElement(Value, null, item.allowedEquipSlotType.join(', ')));
31209
31205
  };
31210
- var formatRarity = function formatRarity(rarity) {
31211
- switch (rarity) {
31212
- case 0.5:
31213
- return 'Very Rare';
31214
- case 1:
31215
- return 'Rare';
31216
- case 10:
31217
- return 'Uncommon';
31218
- case 15:
31219
- return 'Semi Common';
31220
- case 20:
31221
- return 'Common';
31222
- case 35:
31223
- return 'Very Common';
31224
- default:
31225
- return 'Unknown';
31226
- }
31206
+ var renderRequirements = function renderRequirements() {
31207
+ if (!item.minRequirements) return null;
31208
+ return React__default.createElement(StyledCollapsible, {
31209
+ title: "Requirements",
31210
+ defaultOpen: !isMobile
31211
+ }, React__default.createElement(RequirementsGrid, null, item.minRequirements.level && React__default.createElement(RequirementItem, null, React__default.createElement(Label, null, "Level:"), React__default.createElement(Value, null, item.minRequirements.level)), item.minRequirements.skill && React__default.createElement(RequirementItem, null, React__default.createElement(Label, null, item.minRequirements.skill.name, ":"), React__default.createElement(Value, null, item.minRequirements.skill.level))));
31227
31212
  };
31228
- var filteredLoots = ((_npc$loots = npc.loots) == null ? void 0 : _npc$loots.filter(function (loot) {
31229
- return formatText(loot.itemBlueprintKey).toLowerCase().includes(lootSearchQuery.toLowerCase());
31230
- })) || [];
31231
- var totalLootPages = Math.ceil(filteredLoots.length / ITEMS_PER_PAGE$1);
31232
- var paginatedLoots = filteredLoots.slice((currentLootPage - 1) * ITEMS_PER_PAGE$1, currentLootPage * ITEMS_PER_PAGE$1);
31233
31213
  return React__default.createElement(BaseInformationDetails, {
31234
- name: npc.name,
31235
- spriteKey: npc.key,
31236
- atlasJSON: entitiesAtlasJSON,
31237
- atlasIMG: entitiesAtlasIMG,
31214
+ name: item.name,
31215
+ spriteKey: item.texturePath,
31216
+ atlasJSON: itemsAtlasJSON,
31217
+ atlasIMG: itemsAtlasIMG,
31238
31218
  onBack: onBack
31239
- }, React__default.createElement(InfoSection, null, React__default.createElement(InfoItem, null, React__default.createElement(Label, null, "Type:"), React__default.createElement(Value, null, formatText(npc.subType))), React__default.createElement(InfoItem, null, React__default.createElement(Label, null, "Alignment:"), React__default.createElement(Value, null, formatText(npc.alignment))), React__default.createElement(InfoItem, null, React__default.createElement(Label, null, "Attack Type:"), React__default.createElement(Value, null, formatText(npc.attackType))), React__default.createElement(InfoItem, null, React__default.createElement(Label, null, "Range:"), React__default.createElement(Value, null, formatText(npc.maxRangeAttack))), React__default.createElement(InfoItem, null, React__default.createElement(Label, null, "Speed:"), React__default.createElement(Value, null, formatText(npc.speed)))), React__default.createElement(StyledCollapsible, {
31240
- title: "Stats",
31219
+ }, React__default.createElement(InfoSection, null, React__default.createElement(InfoItem, null, React__default.createElement(Label, null, "Type:"), React__default.createElement(Value, null, item.type)), React__default.createElement(InfoItem, null, React__default.createElement(Label, null, "Subtype:"), React__default.createElement(Value, null, item.subType)), React__default.createElement(InfoItem, null, React__default.createElement(Label, null, "Tier:"), React__default.createElement(Value, null, item.tier)), React__default.createElement(InfoItem, null, React__default.createElement(Label, null, "Rarity:"), React__default.createElement(Value, null, item.rarity)), renderAllowedSlots()), React__default.createElement(StyledCollapsible, {
31220
+ title: "Description",
31241
31221
  defaultOpen: !isMobile
31242
- }, React__default.createElement(StatGrid, null, React__default.createElement(StatItem, null, "HP: ", npc.baseHealth), React__default.createElement(StatItem, null, "Level: ", npc.skills.level), ((_npc$skills$strength = npc.skills.strength) == null ? void 0 : _npc$skills$strength.level) && React__default.createElement(StatItem, null, "Strength: ", npc.skills.strength.level), ((_npc$skills$dexterity = npc.skills.dexterity) == null ? void 0 : _npc$skills$dexterity.level) && React__default.createElement(StatItem, null, "Dexterity: ", npc.skills.dexterity.level), ((_npc$skills$resistanc = npc.skills.resistance) == null ? void 0 : _npc$skills$resistanc.level) && React__default.createElement(StatItem, null, "Resistance: ", npc.skills.resistance.level))), npc.loots && npc.loots.length > 0 && React__default.createElement(StyledCollapsible, {
31243
- title: "Loot",
31222
+ }, React__default.createElement(Description$2, null, item.description || 'No description available.')), React__default.createElement(StyledCollapsible, {
31223
+ title: "Stats",
31244
31224
  defaultOpen: !isMobile
31245
- }, React__default.createElement(LootSearchContainer, null, React__default.createElement(StyledSearchBar$1, {
31246
- value: lootSearchQuery,
31247
- onChange: setLootSearchQuery,
31248
- placeholder: "Search loot..."
31249
- })), React__default.createElement(LootGrid, null, paginatedLoots.map(function (loot, index) {
31250
- return React__default.createElement(LootItem, {
31251
- key: index
31252
- }, React__default.createElement(SpriteFromAtlas, {
31253
- atlasJSON: itemsAtlasJSON,
31254
- atlasIMG: itemsAtlasIMG,
31255
- spriteKey: loot.itemBlueprintKey,
31256
- width: 24,
31257
- height: 24,
31258
- imgScale: 1
31259
- }), React__default.createElement(LootDetails, null, React__default.createElement(LootName, null, formatText(loot.itemBlueprintKey)), React__default.createElement(LootInfo, null, React__default.createElement(LootChance, null, formatRarity(loot.chance)), loot.quantityRange && React__default.createElement(LootQuantity, null, "x", loot.quantityRange[0], "-", loot.quantityRange[1]))));
31260
- })), filteredLoots.length > ITEMS_PER_PAGE$1 && React__default.createElement(PaginationContainer$2, null, React__default.createElement(StyledPagination, {
31261
- currentPage: currentLootPage,
31262
- totalPages: totalLootPages,
31263
- onPageChange: setCurrentLootPage
31264
- }))), npc.entityEffects && npc.entityEffects.length > 0 && React__default.createElement(StyledCollapsible, {
31225
+ }, React__default.createElement(StatGrid, null, React__default.createElement(StatItem, null, "Weight: ", item.weight), React__default.createElement(StatItem, null, "Stack Size: ", item.maxStackSize), item.rangeType && React__default.createElement(StatItem, null, "Range Type: ", item.rangeType), item.basePrice > 0 && React__default.createElement(StatItem, null, "Base Price: ", item.basePrice))), renderRequirements(), item.entityEffects && item.entityEffects.length > 0 && React__default.createElement(StyledCollapsible, {
31265
31226
  title: "Effects",
31266
31227
  defaultOpen: !isMobile
31267
- }, React__default.createElement(EffectsList, null, npc.entityEffects.map(function (effect, index) {
31228
+ }, React__default.createElement(EffectsList, null, item.entityEffects.map(function (effect, index) {
31268
31229
  return React__default.createElement(EffectItem, {
31269
31230
  key: index
31270
- }, formatText(effect));
31271
- }))), npc.areaSpells && npc.areaSpells.length > 0 && React__default.createElement(StyledCollapsible, {
31272
- title: "Spells",
31231
+ }, effect, item.entityEffectChance && React__default.createElement(EffectChance, null, "(", item.entityEffectChance, "%)"));
31232
+ })), item.usableEffectDescription && React__default.createElement(EffectDescription, null, item.usableEffectDescription)), item.equippedBuff && item.equippedBuff.length > 0 && React__default.createElement(StyledCollapsible, {
31233
+ title: "Equipped Buffs",
31273
31234
  defaultOpen: !isMobile
31274
- }, React__default.createElement(SpellsList, null, npc.areaSpells.map(function (spell, index) {
31275
- return React__default.createElement(SpellItem, {
31235
+ }, React__default.createElement(BuffsList, null, item.equippedBuff.map(function (buff, index) {
31236
+ return React__default.createElement(BuffItem, {
31276
31237
  key: index
31277
- }, React__default.createElement(SpellName, null, formatText(spell.spellKey)), React__default.createElement(SpellDetails, null, "Power: ", React__default.createElement(SpellValue, null, formatText(spell.power)), React__default.createElement(Separator, null, "\u2022"), "Chance: ", React__default.createElement(SpellValue, null, spell.probability, "%")));
31238
+ }, React__default.createElement(BuffName, null, buff.trait.replace(/^\w/, function (c) {
31239
+ return c.toUpperCase();
31240
+ })), React__default.createElement(BuffValue, null, "+", buff.buffPercentage, "%"));
31241
+ })), item.equippedBuffDescription && React__default.createElement(BuffDescription, null, item.equippedBuffDescription)), droppedBy.length > 0 && React__default.createElement(StyledCollapsible, {
31242
+ title: "Dropped By",
31243
+ defaultOpen: !isMobile
31244
+ }, React__default.createElement(DropList, null, droppedBy.map(function (npc) {
31245
+ var loot = npc.loots.find(function (l) {
31246
+ return l.itemBlueprintKey === item.key;
31247
+ });
31248
+ return React__default.createElement(DropItem, {
31249
+ key: npc.id
31250
+ }, React__default.createElement(NPCName, null, npc.name), React__default.createElement(DropRate, null, loot == null ? void 0 : loot.chance, "%"));
31278
31251
  }))));
31279
31252
  };
31280
31253
  var InfoSection = /*#__PURE__*/styled__default.div.withConfig({
31281
- displayName: "InformationCenterNPCDetails__InfoSection",
31282
- componentId: "sc-fdu3xl-0"
31254
+ displayName: "InformationCenterItemDetails__InfoSection",
31255
+ componentId: "sc-zwf6pb-0"
31283
31256
  })(["display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px;background:rgba(255,255,255,0.05);padding:12px;border-radius:4px;"]);
31284
31257
  var InfoItem = /*#__PURE__*/styled__default.div.withConfig({
31285
- displayName: "InformationCenterNPCDetails__InfoItem",
31286
- componentId: "sc-fdu3xl-1"
31258
+ displayName: "InformationCenterItemDetails__InfoItem",
31259
+ componentId: "sc-zwf6pb-1"
31287
31260
  })(["display:flex;align-items:center;gap:8px;"]);
31288
31261
  var Label = /*#__PURE__*/styled__default.span.withConfig({
31289
- displayName: "InformationCenterNPCDetails__Label",
31290
- componentId: "sc-fdu3xl-2"
31262
+ displayName: "InformationCenterItemDetails__Label",
31263
+ componentId: "sc-zwf6pb-2"
31291
31264
  })(["color:", ";font-size:0.5rem;opacity:0.8;"], uiColors.yellow);
31292
31265
  var Value = /*#__PURE__*/styled__default.span.withConfig({
31293
- displayName: "InformationCenterNPCDetails__Value",
31294
- componentId: "sc-fdu3xl-3"
31266
+ displayName: "InformationCenterItemDetails__Value",
31267
+ componentId: "sc-zwf6pb-3"
31295
31268
  })(["color:", ";font-size:0.5rem;"], uiColors.white);
31296
31269
  var StyledCollapsible = /*#__PURE__*/styled__default(Collapsible).withConfig({
31297
- displayName: "InformationCenterNPCDetails__StyledCollapsible",
31298
- componentId: "sc-fdu3xl-4"
31270
+ displayName: "InformationCenterItemDetails__StyledCollapsible",
31271
+ componentId: "sc-zwf6pb-4"
31299
31272
  })(["background:rgba(255,255,255,0.05);border-radius:4px;overflow:hidden;"]);
31273
+ var Description$2 = /*#__PURE__*/styled__default.p.withConfig({
31274
+ displayName: "InformationCenterItemDetails__Description",
31275
+ componentId: "sc-zwf6pb-5"
31276
+ })(["color:", ";font-size:0.5rem;margin:0;padding:12px;line-height:1.5;"], uiColors.white);
31300
31277
  var StatGrid = /*#__PURE__*/styled__default.div.withConfig({
31301
- displayName: "InformationCenterNPCDetails__StatGrid",
31302
- componentId: "sc-fdu3xl-5"
31278
+ displayName: "InformationCenterItemDetails__StatGrid",
31279
+ componentId: "sc-zwf6pb-6"
31303
31280
  })(["display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;padding:12px;"]);
31304
31281
  var StatItem = /*#__PURE__*/styled__default.div.withConfig({
31305
- displayName: "InformationCenterNPCDetails__StatItem",
31306
- componentId: "sc-fdu3xl-6"
31282
+ displayName: "InformationCenterItemDetails__StatItem",
31283
+ componentId: "sc-zwf6pb-7"
31307
31284
  })(["color:", ";font-size:0.5rem;background:rgba(255,255,255,0.05);padding:8px;border-radius:4px;"], uiColors.white);
31308
31285
  var EffectsList = /*#__PURE__*/styled__default.div.withConfig({
31309
- displayName: "InformationCenterNPCDetails__EffectsList",
31310
- componentId: "sc-fdu3xl-7"
31286
+ displayName: "InformationCenterItemDetails__EffectsList",
31287
+ componentId: "sc-zwf6pb-8"
31311
31288
  })(["display:flex;flex-wrap:wrap;gap:8px;padding:12px;"]);
31312
31289
  var EffectItem = /*#__PURE__*/styled__default.div.withConfig({
31313
- displayName: "InformationCenterNPCDetails__EffectItem",
31314
- componentId: "sc-fdu3xl-8"
31315
- })(["color:", ";font-size:0.5rem;background:rgba(255,255,255,0.1);padding:4px 8px;border-radius:4px;"], uiColors.white);
31316
- var SpellsList = /*#__PURE__*/styled__default.div.withConfig({
31317
- displayName: "InformationCenterNPCDetails__SpellsList",
31318
- componentId: "sc-fdu3xl-9"
31290
+ displayName: "InformationCenterItemDetails__EffectItem",
31291
+ componentId: "sc-zwf6pb-9"
31292
+ })(["display:flex;align-items:center;gap:4px;color:", ";font-size:0.5rem;background:rgba(255,255,255,0.1);padding:4px 8px;border-radius:4px;"], uiColors.white);
31293
+ var EffectChance = /*#__PURE__*/styled__default.span.withConfig({
31294
+ displayName: "InformationCenterItemDetails__EffectChance",
31295
+ componentId: "sc-zwf6pb-10"
31296
+ })(["color:", ";opacity:0.8;"], uiColors.yellow);
31297
+ var BuffsList = /*#__PURE__*/styled__default.div.withConfig({
31298
+ displayName: "InformationCenterItemDetails__BuffsList",
31299
+ componentId: "sc-zwf6pb-11"
31319
31300
  })(["display:flex;flex-direction:column;gap:8px;padding:12px;"]);
31320
- var SpellItem = /*#__PURE__*/styled__default.div.withConfig({
31321
- displayName: "InformationCenterNPCDetails__SpellItem",
31322
- componentId: "sc-fdu3xl-10"
31323
- })(["display:flex;flex-direction:column;gap:4px;background:rgba(255,255,255,0.05);padding:8px;border-radius:4px;"]);
31324
- var SpellName = /*#__PURE__*/styled__default.div.withConfig({
31325
- displayName: "InformationCenterNPCDetails__SpellName",
31326
- componentId: "sc-fdu3xl-11"
31301
+ var BuffItem = /*#__PURE__*/styled__default.div.withConfig({
31302
+ displayName: "InformationCenterItemDetails__BuffItem",
31303
+ componentId: "sc-zwf6pb-12"
31304
+ })(["display:flex;justify-content:space-between;align-items:center;background:rgba(255,255,255,0.05);padding:8px;border-radius:4px;"]);
31305
+ var BuffName = /*#__PURE__*/styled__default.span.withConfig({
31306
+ displayName: "InformationCenterItemDetails__BuffName",
31307
+ componentId: "sc-zwf6pb-13"
31308
+ })(["color:", ";font-size:0.5rem;"], uiColors.white);
31309
+ var BuffValue = /*#__PURE__*/styled__default.span.withConfig({
31310
+ displayName: "InformationCenterItemDetails__BuffValue",
31311
+ componentId: "sc-zwf6pb-14"
31327
31312
  })(["color:", ";font-size:0.5rem;"], uiColors.yellow);
31328
- var SpellDetails = /*#__PURE__*/styled__default.div.withConfig({
31329
- displayName: "InformationCenterNPCDetails__SpellDetails",
31330
- componentId: "sc-fdu3xl-12"
31331
- })(["display:flex;align-items:center;gap:8px;color:", ";font-size:0.45rem;opacity:0.8;"], uiColors.white);
31332
- var SpellValue = /*#__PURE__*/styled__default.span.withConfig({
31333
- displayName: "InformationCenterNPCDetails__SpellValue",
31334
- componentId: "sc-fdu3xl-13"
31335
- })(["color:", ";"], uiColors.yellow);
31336
- var Separator = /*#__PURE__*/styled__default.span.withConfig({
31337
- displayName: "InformationCenterNPCDetails__Separator",
31338
- componentId: "sc-fdu3xl-14"
31339
- })(["color:", ";opacity:0.5;"], uiColors.yellow);
31340
- var LootSearchContainer = /*#__PURE__*/styled__default.div.withConfig({
31341
- displayName: "InformationCenterNPCDetails__LootSearchContainer",
31342
- componentId: "sc-fdu3xl-15"
31343
- })(["padding:12px 12px 0;"]);
31344
- var StyledSearchBar$1 = /*#__PURE__*/styled__default(SearchBar).withConfig({
31345
- displayName: "InformationCenterNPCDetails__StyledSearchBar",
31346
- componentId: "sc-fdu3xl-16"
31347
- })(["width:100%;"]);
31348
- var LootGrid = /*#__PURE__*/styled__default.div.withConfig({
31349
- displayName: "InformationCenterNPCDetails__LootGrid",
31350
- componentId: "sc-fdu3xl-17"
31351
- })(["display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;padding:12px;"]);
31352
- var LootItem = /*#__PURE__*/styled__default.div.withConfig({
31353
- displayName: "InformationCenterNPCDetails__LootItem",
31354
- componentId: "sc-fdu3xl-18"
31355
- })(["display:flex;align-items:center;gap:8px;background:rgba(255,255,255,0.05);padding:8px;border-radius:4px;"]);
31356
- var LootDetails = /*#__PURE__*/styled__default.div.withConfig({
31357
- displayName: "InformationCenterNPCDetails__LootDetails",
31358
- componentId: "sc-fdu3xl-19"
31359
- })(["flex:1;display:flex;flex-direction:column;gap:4px;"]);
31360
- var LootName = /*#__PURE__*/styled__default.div.withConfig({
31361
- displayName: "InformationCenterNPCDetails__LootName",
31362
- componentId: "sc-fdu3xl-20"
31313
+ var BuffDescription = /*#__PURE__*/styled__default.p.withConfig({
31314
+ displayName: "InformationCenterItemDetails__BuffDescription",
31315
+ componentId: "sc-zwf6pb-15"
31316
+ })(["color:", ";font-size:0.45rem;margin:0;padding:0 12px 12px;font-style:italic;"], uiColors.lightGray);
31317
+ var DropList = /*#__PURE__*/styled__default.div.withConfig({
31318
+ displayName: "InformationCenterItemDetails__DropList",
31319
+ componentId: "sc-zwf6pb-16"
31320
+ })(["display:flex;flex-direction:column;gap:0.5rem;padding:12px;"]);
31321
+ var DropItem = /*#__PURE__*/styled__default.div.withConfig({
31322
+ displayName: "InformationCenterItemDetails__DropItem",
31323
+ componentId: "sc-zwf6pb-17"
31324
+ })(["display:flex;justify-content:space-between;align-items:center;padding:0.5rem;background:rgba(255,255,255,0.05);border-radius:4px;"]);
31325
+ var NPCName = /*#__PURE__*/styled__default.span.withConfig({
31326
+ displayName: "InformationCenterItemDetails__NPCName",
31327
+ componentId: "sc-zwf6pb-18"
31363
31328
  })(["color:", ";font-size:0.5rem;"], uiColors.white);
31364
- var LootInfo = /*#__PURE__*/styled__default.div.withConfig({
31365
- displayName: "InformationCenterNPCDetails__LootInfo",
31366
- componentId: "sc-fdu3xl-21"
31367
- })(["display:flex;align-items:center;gap:8px;"]);
31368
- var LootChance = /*#__PURE__*/styled__default.span.withConfig({
31369
- displayName: "InformationCenterNPCDetails__LootChance",
31370
- componentId: "sc-fdu3xl-22"
31371
- })(["color:", ";font-size:0.45rem;"], uiColors.yellow);
31372
- var LootQuantity = /*#__PURE__*/styled__default.span.withConfig({
31373
- displayName: "InformationCenterNPCDetails__LootQuantity",
31374
- componentId: "sc-fdu3xl-23"
31375
- })(["color:", ";font-size:0.45rem;"], uiColors.lightGray);
31376
- var PaginationContainer$2 = /*#__PURE__*/styled__default.div.withConfig({
31377
- displayName: "InformationCenterNPCDetails__PaginationContainer",
31378
- componentId: "sc-fdu3xl-24"
31379
- })(["display:flex;justify-content:center;padding:12px;"]);
31380
- var StyledPagination = /*#__PURE__*/styled__default(Pagination).withConfig({
31381
- displayName: "InformationCenterNPCDetails__StyledPagination",
31382
- componentId: "sc-fdu3xl-25"
31383
- })(["font-size:0.6rem;"]);
31329
+ var DropRate = /*#__PURE__*/styled__default.span.withConfig({
31330
+ displayName: "InformationCenterItemDetails__DropRate",
31331
+ componentId: "sc-zwf6pb-19"
31332
+ })(["color:", ";font-size:0.5rem;"], uiColors.yellow);
31333
+ var RequirementsGrid = /*#__PURE__*/styled__default.div.withConfig({
31334
+ displayName: "InformationCenterItemDetails__RequirementsGrid",
31335
+ componentId: "sc-zwf6pb-20"
31336
+ })(["display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;padding:12px;"]);
31337
+ var RequirementItem = /*#__PURE__*/styled__default.div.withConfig({
31338
+ displayName: "InformationCenterItemDetails__RequirementItem",
31339
+ componentId: "sc-zwf6pb-21"
31340
+ })(["display:flex;align-items:center;gap:8px;background:rgba(255,255,255,0.05);padding:8px;border-radius:4px;"]);
31341
+ var EffectDescription = /*#__PURE__*/styled__default.p.withConfig({
31342
+ displayName: "InformationCenterItemDetails__EffectDescription",
31343
+ componentId: "sc-zwf6pb-22"
31344
+ })(["color:", ";font-size:0.45rem;margin:8px 0 0;padding:0 12px;font-style:italic;"], uiColors.lightGray);
31384
31345
 
31385
31346
  var TooltipContainer$1 = /*#__PURE__*/styled__default.div.withConfig({
31386
31347
  displayName: "BaseTooltip__TooltipContainer",
@@ -31416,595 +31377,728 @@ var BaseTooltip = function BaseTooltip(_ref) {
31416
31377
  }, children);
31417
31378
  };
31418
31379
 
31419
- var EffectsList$1 = /*#__PURE__*/styled__default.div.withConfig({
31420
- displayName: "InformationCenterNPCTooltip__EffectsList",
31421
- componentId: "sc-j2o39s-0"
31422
- })(["display:flex;gap:8px;flex-wrap:wrap;"]);
31423
- var EffectItem$1 = /*#__PURE__*/styled__default.span.withConfig({
31424
- displayName: "InformationCenterNPCTooltip__EffectItem",
31425
- componentId: "sc-j2o39s-1"
31426
- })(["font-size:0.5rem;color:", ";background:rgba(255,255,255,0.1);padding:2px 6px;border-radius:4px;"], uiColors.white);
31427
- var SpellList = /*#__PURE__*/styled__default.div.withConfig({
31428
- displayName: "InformationCenterNPCTooltip__SpellList",
31429
- componentId: "sc-j2o39s-2"
31430
- })(["display:flex;flex-direction:column;gap:2px;"]);
31431
- var SpellItem$1 = /*#__PURE__*/styled__default.div.withConfig({
31432
- displayName: "InformationCenterNPCTooltip__SpellItem",
31433
- componentId: "sc-j2o39s-3"
31434
- })(["display:flex;align-items:center;justify-content:space-between;font-size:0.5rem;color:", ";background:rgba(255,255,255,0.05);padding:2px 6px;border-radius:4px;"], uiColors.white);
31435
- var SpellInfo = /*#__PURE__*/styled__default.span.withConfig({
31436
- displayName: "InformationCenterNPCTooltip__SpellInfo",
31437
- componentId: "sc-j2o39s-4"
31438
- })(["color:", ";margin-left:8px;opacity:0.8;"], uiColors.yellow);
31439
- var LootList = /*#__PURE__*/styled__default.div.withConfig({
31440
- displayName: "InformationCenterNPCTooltip__LootList",
31441
- componentId: "sc-j2o39s-5"
31442
- })(["display:flex;flex-direction:column;gap:2px;"]);
31443
- var LootItem$1 = /*#__PURE__*/styled__default.div.withConfig({
31444
- displayName: "InformationCenterNPCTooltip__LootItem",
31445
- componentId: "sc-j2o39s-6"
31446
- })(["display:flex;align-items:center;gap:4px;font-size:0.5rem;background:rgba(255,255,255,0.05);padding:4px 6px;border-radius:4px;.sprite-from-atlas-img{top:0px;left:0px;}"]);
31447
- var LootName$1 = /*#__PURE__*/styled__default.span.withConfig({
31448
- displayName: "InformationCenterNPCTooltip__LootName",
31449
- componentId: "sc-j2o39s-7"
31450
- })(["color:", ";flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left:4px;"], uiColors.white);
31451
- var LootChance$1 = /*#__PURE__*/styled__default.span.withConfig({
31452
- displayName: "InformationCenterNPCTooltip__LootChance",
31453
- componentId: "sc-j2o39s-8"
31454
- })(["color:", ";font-size:0.45rem;text-transform:lowercase;opacity:0.8;"], uiColors.yellow);
31455
- var MoreIndicator = /*#__PURE__*/styled__default.div.withConfig({
31456
- displayName: "InformationCenterNPCTooltip__MoreIndicator",
31457
- componentId: "sc-j2o39s-9"
31458
- })(["color:", ";font-size:0.45rem;text-align:center;margin-top:2px;opacity:0.7;"], uiColors.yellow);
31459
- var formatText = function formatText(text) {
31460
- if (typeof text === 'number') {
31461
- return text.toString();
31462
- }
31463
- return text.toString().replace(/([A-Z])/g, ' $1').trim().replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2').replace(/\s+/g, ' ');
31464
- };
31465
- var formatRarity = function formatRarity(rarity) {
31466
- switch (rarity) {
31467
- case 0.5:
31468
- return 'Very Rare';
31469
- case 1:
31470
- return 'Rare';
31471
- case 10:
31472
- return 'Uncommon';
31473
- case 15:
31474
- return 'Semi Common';
31475
- case 20:
31476
- return 'Common';
31477
- case 35:
31478
- return 'Very Common';
31380
+ var ItemHeader$1 = /*#__PURE__*/styled__default.div.withConfig({
31381
+ displayName: "InformationCenterItemTooltip__ItemHeader",
31382
+ componentId: "sc-1ecf9mj-0"
31383
+ })(["display:flex;align-items:center;gap:8px;"]);
31384
+ var Description$3 = /*#__PURE__*/styled__default.div.withConfig({
31385
+ displayName: "InformationCenterItemTooltip__Description",
31386
+ componentId: "sc-1ecf9mj-1"
31387
+ })(["color:", ";font-size:0.5rem;line-height:1.4;margin-top:8px;opacity:0.8;"], uiColors.white);
31388
+ var RarityText = /*#__PURE__*/styled__default.span.withConfig({
31389
+ displayName: "InformationCenterItemTooltip__RarityText",
31390
+ componentId: "sc-1ecf9mj-2"
31391
+ })(["color:", ";font-size:0.5rem;"], function (props) {
31392
+ switch (props.rarity.toLowerCase()) {
31393
+ case 'legendary':
31394
+ return '#ff8c00';
31395
+ case 'rare':
31396
+ return '#0070dd';
31397
+ case 'uncommon':
31398
+ return '#1eff00';
31479
31399
  default:
31480
- return 'Unknown';
31400
+ return '#ffffff';
31481
31401
  }
31482
- };
31483
- var InformationCenterNPCTooltip = function InformationCenterNPCTooltip(_ref) {
31484
- var _npc$skills$strength, _npc$skills$dexterity, _npc$skills$resistanc;
31485
- var npc = _ref.npc,
31486
- itemsAtlasJSON = _ref.itemsAtlasJSON,
31487
- itemsAtlasIMG = _ref.itemsAtlasIMG;
31488
- return React__default.createElement(BaseTooltip, null, React__default.createElement(TooltipTitle$1, null, npc.name), React__default.createElement(StatsContainer, null, React__default.createElement(StatItem$1, null, "HP: ", npc.baseHealth), React__default.createElement(StatItem$1, null, "LVL: ", npc.skills.level), React__default.createElement(StatItem$1, null, "STR: ", ((_npc$skills$strength = npc.skills.strength) == null ? void 0 : _npc$skills$strength.level) || '-'), React__default.createElement(StatItem$1, null, "DEX: ", ((_npc$skills$dexterity = npc.skills.dexterity) == null ? void 0 : _npc$skills$dexterity.level) || '-'), React__default.createElement(StatItem$1, null, "RES: ", ((_npc$skills$resistanc = npc.skills.resistance) == null ? void 0 : _npc$skills$resistanc.level) || '-'), React__default.createElement(StatItem$1, null, "SPD: ", formatText(npc.speed))), npc.entityEffects && npc.entityEffects.length > 0 && React__default.createElement(Section, null, React__default.createElement(SectionTitle, null, "Effects"), React__default.createElement(EffectsList$1, null, npc.entityEffects.map(function (effect) {
31489
- return React__default.createElement(EffectItem$1, {
31490
- key: effect
31491
- }, formatText(effect));
31492
- }))), npc.areaSpells && npc.areaSpells.length > 0 && React__default.createElement(Section, null, React__default.createElement(SectionTitle, null, "Spells"), React__default.createElement(SpellList, null, npc.areaSpells.map(function (spell) {
31493
- return React__default.createElement(SpellItem$1, {
31494
- key: spell.spellKey
31495
- }, formatText(spell.spellKey), React__default.createElement(SpellInfo, null, formatText(spell.power), ", ", spell.probability, "%"));
31496
- }))), npc.loots && npc.loots.length > 0 && React__default.createElement(Section, null, React__default.createElement(SectionTitle, null, "Possible Loot"), React__default.createElement(LootList, null, npc.loots.slice(0, 4).map(function (loot) {
31497
- return React__default.createElement(LootItem$1, {
31498
- key: loot.itemBlueprintKey
31499
- }, React__default.createElement(SpriteFromAtlas, {
31500
- atlasIMG: itemsAtlasIMG,
31501
- atlasJSON: itemsAtlasJSON,
31502
- spriteKey: loot.itemBlueprintKey,
31503
- imgScale: 1
31504
- }), React__default.createElement(LootName$1, null, formatText(loot.itemBlueprintKey)), React__default.createElement(LootChance$1, null, formatRarity(loot.chance)));
31505
- }), npc.loots.length > 4 && React__default.createElement(MoreIndicator, null, "..."))));
31402
+ });
31403
+ var InformationCenterItemTooltip = function InformationCenterItemTooltip(_ref) {
31404
+ var item = _ref.item;
31405
+ return React__default.createElement(BaseTooltip, null, React__default.createElement(ItemHeader$1, null, React__default.createElement(TooltipTitle$1, null, item.name)), React__default.createElement(Description$3, null, item.description), React__default.createElement(Section, null, React__default.createElement(SectionTitle, null, "Details"), React__default.createElement(StatsContainer, null, React__default.createElement(StatItem$1, null, "Type: ", item.type), React__default.createElement(StatItem$1, null, "Weight: ", item.weight), item.attack !== undefined && React__default.createElement(StatItem$1, null, "Attack: ", item.attack), item.defense !== undefined && React__default.createElement(StatItem$1, null, "Defense: ", item.defense), item.tier !== undefined && React__default.createElement(StatItem$1, null, "Tier: ", item.tier), item.rangeType && React__default.createElement(StatItem$1, null, "Range: ", item.rangeType))), React__default.createElement(Section, null, React__default.createElement(SectionTitle, null, "Market"), React__default.createElement(StatsContainer, null, React__default.createElement(StatItem$1, null, "Price: ", item.basePrice), item.rarity && React__default.createElement(StatItem$1, null, "Rarity:", ' ', React__default.createElement(RarityText, {
31406
+ rarity: item.rarity
31407
+ }, item.rarity)))));
31506
31408
  };
31507
31409
 
31508
- var InformationCenterBestiarySection = function InformationCenterBestiarySection(_ref) {
31509
- var bestiaryItems = _ref.bestiaryItems,
31410
+ var TOOLTIP_OFFSET = 200;
31411
+ var formatItemType = function formatItemType(type) {
31412
+ var words = type.split(/(?=[A-Z])/);
31413
+ if (words.length === 1) {
31414
+ return words[0];
31415
+ }
31416
+ return words.map(function (word, index) {
31417
+ if (index === 0) {
31418
+ return word.charAt(0) + '.';
31419
+ }
31420
+ return word;
31421
+ }).join(' ');
31422
+ };
31423
+ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref) {
31424
+ var items = _ref.items,
31425
+ bestiaryItems = _ref.bestiaryItems,
31510
31426
  itemsAtlasJSON = _ref.itemsAtlasJSON,
31511
31427
  itemsAtlasIMG = _ref.itemsAtlasIMG,
31512
- entitiesAtlasJSON = _ref.entitiesAtlasJSON,
31513
- entitiesAtlasIMG = _ref.entitiesAtlasIMG,
31514
31428
  initialSearchQuery = _ref.initialSearchQuery,
31515
31429
  tabId = _ref.tabId;
31516
31430
  var _useState = React.useState(initialSearchQuery),
31517
31431
  searchQuery = _useState[0],
31518
31432
  setSearchQuery = _useState[1];
31519
- var _useState2 = React.useState(null),
31520
- tooltipData = _useState2[0],
31521
- setTooltipData = _useState2[1];
31433
+ var _useState2 = React.useState('all'),
31434
+ selectedItemCategory = _useState2[0],
31435
+ setSelectedItemCategory = _useState2[1];
31522
31436
  var _useState3 = React.useState(null),
31523
- selectedMonster = _useState3[0],
31524
- setSelectedMonster = _useState3[1];
31525
- var _useState4 = React.useState('ontouchstart' in window),
31526
- isTouchDevice = _useState4[0];
31527
- var handleMouseEnter = function handleMouseEnter(monster, event) {
31528
- if (!isTouchDevice && !selectedMonster) {
31529
- setTooltipData({
31530
- npc: monster,
31531
- position: {
31532
- x: event.clientX,
31533
- y: event.clientY
31534
- }
31437
+ hoveredItem = _useState3[0],
31438
+ setHoveredItem = _useState3[1];
31439
+ var _useState4 = React.useState({
31440
+ x: 0,
31441
+ y: 0
31442
+ }),
31443
+ tooltipPosition = _useState4[0],
31444
+ setTooltipPosition = _useState4[1];
31445
+ var _useState5 = React.useState(null),
31446
+ selectedItem = _useState5[0],
31447
+ setSelectedItem = _useState5[1];
31448
+ var itemCategoryOptions = [{
31449
+ id: 0,
31450
+ value: 'all',
31451
+ option: 'All Items'
31452
+ }].concat(Object.values(shared.ItemType).map(function (type, index) {
31453
+ return {
31454
+ id: index + 1,
31455
+ value: type,
31456
+ option: formatItemType(type)
31457
+ };
31458
+ }));
31459
+ var filteredItems = items.filter(function (item) {
31460
+ return (selectedItemCategory === 'all' || item.type === selectedItemCategory) && item.name.toLowerCase().includes(searchQuery.toLowerCase());
31461
+ });
31462
+ var getDroppedByNPCs = function getDroppedByNPCs(itemId, npcs) {
31463
+ return npcs.filter(function (npc) {
31464
+ var _npc$loots;
31465
+ return (_npc$loots = npc.loots) == null ? void 0 : _npc$loots.some(function (loot) {
31466
+ return loot.itemBlueprintKey === itemId;
31467
+ });
31468
+ }) || [];
31469
+ };
31470
+ var handleMouseEnter = function handleMouseEnter(e, item) {
31471
+ setTooltipPosition({
31472
+ x: e.clientX + TOOLTIP_OFFSET,
31473
+ y: e.clientY
31474
+ });
31475
+ setHoveredItem(item);
31476
+ };
31477
+ var handleMouseMove = function handleMouseMove(e) {
31478
+ if (hoveredItem) {
31479
+ setTooltipPosition({
31480
+ x: e.clientX + TOOLTIP_OFFSET,
31481
+ y: e.clientY
31535
31482
  });
31536
31483
  }
31537
31484
  };
31538
31485
  var handleMouseLeave = function handleMouseLeave() {
31539
- if (!isTouchDevice) {
31540
- setTooltipData(null);
31541
- }
31486
+ setHoveredItem(null);
31542
31487
  };
31543
- var handleMouseMove = function handleMouseMove(event) {
31544
- if (!isTouchDevice && tooltipData) {
31545
- setTooltipData(_extends({}, tooltipData, {
31546
- position: {
31547
- x: event.clientX,
31548
- y: event.clientY
31549
- }
31550
- }));
31551
- }
31488
+ var handleTouchStart = function handleTouchStart(e, item) {
31489
+ var touch = e.touches[0];
31490
+ setTooltipPosition({
31491
+ x: touch.clientX + TOOLTIP_OFFSET,
31492
+ y: touch.clientY
31493
+ });
31494
+ setHoveredItem(item);
31552
31495
  };
31553
- var handleTouchStart = function handleTouchStart(monster, event) {
31554
- if (isTouchDevice) {
31555
- event.preventDefault();
31556
- var touch = event.touches[0];
31557
- if ((tooltipData == null ? void 0 : tooltipData.npc.id) === monster.id) {
31558
- setTooltipData(null);
31559
- } else {
31560
- setTooltipData({
31561
- npc: monster,
31562
- position: {
31563
- x: touch.clientX,
31564
- y: touch.clientY
31565
- }
31566
- });
31567
- }
31568
- }
31496
+ var handleItemClick = function handleItemClick(item) {
31497
+ setSelectedItem(item);
31498
+ setHoveredItem(null);
31569
31499
  };
31570
- var handleMonsterClick = function handleMonsterClick(monster) {
31571
- setSelectedMonster(monster);
31572
- setTooltipData(null);
31500
+ var handleSearchChange = function handleSearchChange(newQuery) {
31501
+ setSearchQuery(newQuery);
31502
+ if (newQuery && selectedItemCategory !== 'all') {
31503
+ setSelectedItemCategory('all');
31504
+ }
31573
31505
  };
31574
31506
  var renderItem = function renderItem(item) {
31575
31507
  return React__default.createElement(InformationCenterCell, {
31576
- key: item.id,
31508
+ key: item.key,
31577
31509
  name: item.name,
31578
- spriteKey: item.key,
31579
- atlasJSON: entitiesAtlasJSON,
31580
- atlasIMG: entitiesAtlasIMG,
31581
- onClick: function onClick() {
31582
- return handleMonsterClick(item);
31583
- },
31510
+ spriteKey: item.texturePath,
31511
+ atlasJSON: itemsAtlasJSON,
31512
+ atlasIMG: itemsAtlasIMG,
31584
31513
  onMouseEnter: function onMouseEnter(e) {
31585
- return handleMouseEnter(item, e);
31514
+ return handleMouseEnter(e, item);
31586
31515
  },
31587
- onMouseLeave: handleMouseLeave,
31588
31516
  onMouseMove: handleMouseMove,
31517
+ onMouseLeave: handleMouseLeave,
31589
31518
  onTouchStart: function onTouchStart(e) {
31590
- return handleTouchStart(item, e);
31519
+ return handleTouchStart(e, item);
31520
+ },
31521
+ onClick: function onClick() {
31522
+ return handleItemClick(item);
31591
31523
  }
31592
31524
  });
31593
31525
  };
31594
- var filteredItems = bestiaryItems.filter(function (item) {
31595
- return item.name.toLowerCase().includes(searchQuery.toLowerCase());
31596
- });
31597
31526
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(PaginatedContent, {
31598
31527
  items: filteredItems,
31599
31528
  renderItem: renderItem,
31600
- emptyMessage: "No monsters found",
31601
- tabId: tabId,
31602
- layout: "grid",
31529
+ emptyMessage: "No items found",
31530
+ filterOptions: {
31531
+ options: itemCategoryOptions,
31532
+ selectedOption: selectedItemCategory,
31533
+ onOptionChange: setSelectedItemCategory
31534
+ },
31603
31535
  searchOptions: {
31604
31536
  value: searchQuery,
31605
- onChange: setSearchQuery,
31606
- placeholder: 'Search monsters...'
31537
+ onChange: handleSearchChange,
31538
+ placeholder: 'Search items...'
31607
31539
  },
31540
+ dependencies: [selectedItemCategory],
31541
+ tabId: tabId,
31542
+ layout: "grid",
31608
31543
  itemHeight: "180px"
31609
- }), tooltipData && React__default.createElement(Portal, null, React__default.createElement(TooltipWrapper, {
31544
+ }), hoveredItem && React__default.createElement(TooltipWrapper, {
31610
31545
  style: {
31611
- position: 'fixed',
31612
- left: tooltipData.position.x + 10,
31613
- top: tooltipData.position.y + 10
31546
+ top: tooltipPosition.y,
31547
+ left: tooltipPosition.x
31614
31548
  }
31615
- }, React__default.createElement(InformationCenterNPCTooltip, {
31616
- npc: tooltipData.npc,
31617
- itemsAtlasJSON: itemsAtlasJSON,
31618
- itemsAtlasIMG: itemsAtlasIMG
31619
- }))), selectedMonster && React__default.createElement(InformationCenterNPCDetails, {
31620
- npc: selectedMonster,
31549
+ }, React__default.createElement(InformationCenterItemTooltip, {
31550
+ item: hoveredItem
31551
+ })), selectedItem && React__default.createElement(InformationCenterItemDetails, {
31552
+ item: selectedItem,
31621
31553
  itemsAtlasJSON: itemsAtlasJSON,
31622
31554
  itemsAtlasIMG: itemsAtlasIMG,
31623
- entitiesAtlasJSON: entitiesAtlasJSON,
31624
- entitiesAtlasIMG: entitiesAtlasIMG,
31555
+ droppedBy: getDroppedByNPCs(selectedItem.key, bestiaryItems),
31625
31556
  onBack: function onBack() {
31626
- return setSelectedMonster(null);
31557
+ return setSelectedItem(null);
31627
31558
  }
31628
31559
  }));
31629
31560
  };
31630
31561
  var TooltipWrapper = /*#__PURE__*/styled__default.div.withConfig({
31631
- displayName: "InformationCenterBestiarySection__TooltipWrapper",
31632
- componentId: "sc-e3h0p2-0"
31633
- })(["position:fixed;z-index:1000;pointer-events:none;width:300px;"]);
31562
+ displayName: "InformationCenterItemsSection__TooltipWrapper",
31563
+ componentId: "sc-1wmpapt-0"
31564
+ })(["position:fixed;z-index:1000;pointer-events:none;transition:transform 0.1s ease;"]);
31634
31565
 
31635
- var InformationCenterFAQSection = function InformationCenterFAQSection(_ref) {
31636
- var faqItems = _ref.faqItems,
31637
- initialSearchQuery = _ref.initialSearchQuery,
31638
- tabId = _ref.tabId;
31639
- var _useState = React.useState(initialSearchQuery),
31640
- searchQuery = _useState[0],
31641
- setSearchQuery = _useState[1];
31642
- React.useEffect(function () {
31643
- setSearchQuery(initialSearchQuery);
31644
- }, [initialSearchQuery]);
31645
- var filteredFaqs = React.useMemo(function () {
31646
- if (!searchQuery) return faqItems;
31647
- return faqItems.filter(function (faq) {
31648
- return faq.question.toLowerCase().includes(searchQuery.toLowerCase()) || faq.answer.toLowerCase().includes(searchQuery.toLowerCase());
31649
- });
31650
- }, [searchQuery, faqItems]);
31651
- var renderItem = function renderItem(item) {
31652
- return React__default.createElement(StyledCollapsible$1, {
31653
- title: item.question
31654
- }, React__default.createElement(Answer$1, null, item.answer));
31655
- };
31656
- return React__default.createElement(Container$q, null, React__default.createElement(SearchHeader, {
31657
- searchOptions: {
31658
- value: searchQuery,
31659
- onChange: setSearchQuery,
31660
- placeholder: 'Search FAQs...'
31661
- }
31662
- }), React__default.createElement(PaginatedContent, {
31663
- items: filteredFaqs,
31664
- renderItem: renderItem,
31665
- emptyMessage: "No FAQ items found",
31666
- tabId: tabId,
31667
- layout: "list",
31668
- itemsPerPage: 10
31669
- }));
31566
+ var ITEMS_PER_PAGE$1 = 5;
31567
+ var formatItemName = function formatItemName(itemPath) {
31568
+ var _itemPath$split$pop;
31569
+ var cleanText = ((_itemPath$split$pop = itemPath.split('/').pop()) == null ? void 0 : _itemPath$split$pop.split('.').shift()) || '';
31570
+ return cleanText.split('-').map(function (word) {
31571
+ return word.charAt(0).toUpperCase() + word.slice(1);
31572
+ }).join(' ');
31670
31573
  };
31671
- var Container$q = /*#__PURE__*/styled__default.div.withConfig({
31672
- displayName: "InformationCenterFaqSection__Container",
31673
- componentId: "sc-ofmaa9-0"
31674
- })(["display:flex;flex-direction:column;gap:1rem;width:100%;"]);
31675
- var StyledCollapsible$1 = /*#__PURE__*/styled__default(Collapsible).withConfig({
31676
- displayName: "InformationCenterFaqSection__StyledCollapsible",
31677
- componentId: "sc-ofmaa9-1"
31678
- })(["margin-bottom:0.5rem;&:last-child{margin-bottom:0;}"]);
31679
- var Answer$1 = /*#__PURE__*/styled__default.p.withConfig({
31680
- displayName: "InformationCenterFaqSection__Answer",
31681
- componentId: "sc-ofmaa9-2"
31682
- })(["font-size:0.9rem;color:#ffffff;margin:0;line-height:1.5;"]);
31683
-
31684
- var InformationCenterItemDetails = function InformationCenterItemDetails(_ref) {
31685
- var item = _ref.item,
31574
+ var InformationCenterNPCDetails = function InformationCenterNPCDetails(_ref) {
31575
+ var _npc$loots, _npc$skills$strength, _npc$skills$dexterity, _npc$skills$resistanc;
31576
+ var npc = _ref.npc,
31686
31577
  itemsAtlasJSON = _ref.itemsAtlasJSON,
31687
31578
  itemsAtlasIMG = _ref.itemsAtlasIMG,
31688
- droppedBy = _ref.droppedBy,
31579
+ entitiesAtlasJSON = _ref.entitiesAtlasJSON,
31580
+ entitiesAtlasIMG = _ref.entitiesAtlasIMG,
31581
+ iconAtlasIMG = _ref.iconAtlasIMG,
31582
+ iconAtlasJSON = _ref.iconAtlasJSON,
31689
31583
  onBack = _ref.onBack;
31690
31584
  var isMobile = shared.isMobileOrTablet();
31691
- var renderAllowedSlots = function renderAllowedSlots() {
31692
- var _item$allowedEquipSlo;
31693
- if (!((_item$allowedEquipSlo = item.allowedEquipSlotType) != null && _item$allowedEquipSlo.length)) return null;
31694
- return React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Equip Slots:"), React__default.createElement(Value$1, null, item.allowedEquipSlotType.join(', ')));
31585
+ var _useState = React.useState(''),
31586
+ lootSearchQuery = _useState[0],
31587
+ setLootSearchQuery = _useState[1];
31588
+ var _useState2 = React.useState(1),
31589
+ currentLootPage = _useState2[0],
31590
+ setCurrentLootPage = _useState2[1];
31591
+ var formatText = function formatText(text) {
31592
+ if (typeof text === 'number') {
31593
+ return text.toString();
31594
+ }
31595
+ return text.toString().replace(/([A-Z])/g, ' $1').trim().replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2').replace(/\s+/g, ' ').replace(/^\w/, function (c) {
31596
+ return c.toUpperCase();
31597
+ });
31695
31598
  };
31696
- var renderRequirements = function renderRequirements() {
31697
- if (!item.minRequirements) return null;
31698
- return React__default.createElement(StyledCollapsible$2, {
31699
- title: "Requirements",
31700
- defaultOpen: !isMobile
31701
- }, React__default.createElement(RequirementsGrid, null, item.minRequirements.level && React__default.createElement(RequirementItem, null, React__default.createElement(Label$1, null, "Level:"), React__default.createElement(Value$1, null, item.minRequirements.level)), item.minRequirements.skill && React__default.createElement(RequirementItem, null, React__default.createElement(Label$1, null, item.minRequirements.skill.name, ":"), React__default.createElement(Value$1, null, item.minRequirements.skill.level))));
31599
+ var formatRarity = function formatRarity(rarity) {
31600
+ switch (rarity) {
31601
+ case 0.5:
31602
+ return 'Very Rare';
31603
+ case 1:
31604
+ return 'Rare';
31605
+ case 10:
31606
+ return 'Uncommon';
31607
+ case 15:
31608
+ return 'Semi Common';
31609
+ case 20:
31610
+ return 'Common';
31611
+ case 35:
31612
+ return 'Very Common';
31613
+ default:
31614
+ return 'Unknown';
31615
+ }
31702
31616
  };
31617
+ var filteredLoots = ((_npc$loots = npc.loots) == null ? void 0 : _npc$loots.filter(function (loot) {
31618
+ return formatItemName(loot.itemBlueprintKey).toLowerCase().includes(lootSearchQuery.toLowerCase());
31619
+ })) || [];
31620
+ var totalLootPages = Math.ceil(filteredLoots.length / ITEMS_PER_PAGE$1);
31621
+ var paginatedLoots = filteredLoots.slice((currentLootPage - 1) * ITEMS_PER_PAGE$1, currentLootPage * ITEMS_PER_PAGE$1);
31703
31622
  return React__default.createElement(BaseInformationDetails, {
31704
- name: item.name,
31705
- spriteKey: item.texturePath,
31706
- atlasJSON: itemsAtlasJSON,
31707
- atlasIMG: itemsAtlasIMG,
31623
+ name: npc.name,
31624
+ spriteKey: npc.key,
31625
+ atlasJSON: entitiesAtlasJSON,
31626
+ atlasIMG: entitiesAtlasIMG,
31708
31627
  onBack: onBack
31709
- }, React__default.createElement(InfoSection$1, null, React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Type:"), React__default.createElement(Value$1, null, item.type)), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Subtype:"), React__default.createElement(Value$1, null, item.subType)), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Tier:"), React__default.createElement(Value$1, null, item.tier)), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Rarity:"), React__default.createElement(Value$1, null, item.rarity)), renderAllowedSlots()), React__default.createElement(StyledCollapsible$2, {
31710
- title: "Description",
31711
- defaultOpen: !isMobile
31712
- }, React__default.createElement(Description$2, null, item.description || 'No description available.')), React__default.createElement(StyledCollapsible$2, {
31628
+ }, React__default.createElement(InfoSection$1, null, React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Type:"), React__default.createElement(Value$1, null, formatText(npc.subType))), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Alignment:"), React__default.createElement(Value$1, null, formatText(npc.alignment))), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Attack Type:"), React__default.createElement(Value$1, null, formatText(npc.attackType))), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Range:"), React__default.createElement(Value$1, null, formatText(npc.maxRangeAttack))), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Speed:"), React__default.createElement(Value$1, null, formatText(npc.speed)))), React__default.createElement(StyledCollapsible$1, {
31713
31629
  title: "Stats",
31714
31630
  defaultOpen: !isMobile
31715
- }, React__default.createElement(StatGrid$1, null, React__default.createElement(StatItem$2, null, "Weight: ", item.weight), React__default.createElement(StatItem$2, null, "Stack Size: ", item.maxStackSize), item.rangeType && React__default.createElement(StatItem$2, null, "Range Type: ", item.rangeType), item.basePrice > 0 && React__default.createElement(StatItem$2, null, "Base Price: ", item.basePrice))), renderRequirements(), item.entityEffects && item.entityEffects.length > 0 && React__default.createElement(StyledCollapsible$2, {
31716
- title: "Effects",
31631
+ }, React__default.createElement(StatGrid$1, null, React__default.createElement(StatItem$2, null, "HP: ", npc.baseHealth), React__default.createElement(StatItem$2, null, "Level: ", npc.skills.level), ((_npc$skills$strength = npc.skills.strength) == null ? void 0 : _npc$skills$strength.level) && React__default.createElement(StatItem$2, null, "Strength: ", npc.skills.strength.level), ((_npc$skills$dexterity = npc.skills.dexterity) == null ? void 0 : _npc$skills$dexterity.level) && React__default.createElement(StatItem$2, null, "Dexterity: ", npc.skills.dexterity.level), ((_npc$skills$resistanc = npc.skills.resistance) == null ? void 0 : _npc$skills$resistanc.level) && React__default.createElement(StatItem$2, null, "Resistance: ", npc.skills.resistance.level))), npc.loots && npc.loots.length > 0 && React__default.createElement(StyledCollapsible$1, {
31632
+ title: "Loot",
31717
31633
  defaultOpen: !isMobile
31718
- }, React__default.createElement(EffectsList$2, null, item.entityEffects.map(function (effect, index) {
31719
- return React__default.createElement(EffectItem$2, {
31634
+ }, React__default.createElement(LootSearchContainer, null, React__default.createElement(StyledSearchBar$1, {
31635
+ value: lootSearchQuery,
31636
+ onChange: setLootSearchQuery,
31637
+ placeholder: "Search loot..."
31638
+ })), React__default.createElement(LootGrid, null, paginatedLoots.map(function (loot, index) {
31639
+ return React__default.createElement(LootItem, {
31720
31640
  key: index
31721
- }, effect, item.entityEffectChance && React__default.createElement(EffectChance, null, "(", item.entityEffectChance, "%)"));
31722
- })), item.usableEffectDescription && React__default.createElement(EffectDescription, null, item.usableEffectDescription)), item.equippedBuff && item.equippedBuff.length > 0 && React__default.createElement(StyledCollapsible$2, {
31723
- title: "Equipped Buffs",
31641
+ }, React__default.createElement(SpriteFromAtlas, {
31642
+ atlasJSON: itemsAtlasJSON,
31643
+ atlasIMG: itemsAtlasIMG,
31644
+ spriteKey: loot.itemBlueprintKey,
31645
+ width: 24,
31646
+ height: 24,
31647
+ imgScale: 1
31648
+ }), React__default.createElement(LootDetails, null, React__default.createElement(LootName, null, formatItemName(loot.itemBlueprintKey)), React__default.createElement(LootInfo, null, React__default.createElement(LootChance, null, formatRarity(loot.chance)), loot.quantityRange && React__default.createElement(LootQuantity, null, "x", loot.quantityRange[0], "-", loot.quantityRange[1]))));
31649
+ })), filteredLoots.length > ITEMS_PER_PAGE$1 && React__default.createElement(PaginationContainer$2, null, React__default.createElement(StyledPagination, {
31650
+ currentPage: currentLootPage,
31651
+ totalPages: totalLootPages,
31652
+ onPageChange: setCurrentLootPage
31653
+ }))), npc.entityEffects && npc.entityEffects.length > 0 && React__default.createElement(StyledCollapsible$1, {
31654
+ title: "Effects",
31724
31655
  defaultOpen: !isMobile
31725
- }, React__default.createElement(BuffsList, null, item.equippedBuff.map(function (buff, index) {
31726
- return React__default.createElement(BuffItem, {
31656
+ }, React__default.createElement(EffectsList$1, null, npc.entityEffects.map(function (effect, index) {
31657
+ return React__default.createElement(EffectItem$1, {
31727
31658
  key: index
31728
- }, React__default.createElement(BuffName, null, buff.trait), React__default.createElement(BuffValue, null, "+", buff.buffPercentage, "%"));
31729
- })), item.equippedBuffDescription && React__default.createElement(BuffDescription, null, item.equippedBuffDescription)), droppedBy.length > 0 && React__default.createElement(StyledCollapsible$2, {
31730
- title: "Dropped By",
31659
+ }, formatText(effect));
31660
+ }))), npc.areaSpells && npc.areaSpells.length > 0 && React__default.createElement(StyledCollapsible$1, {
31661
+ title: "Spells",
31731
31662
  defaultOpen: !isMobile
31732
- }, React__default.createElement(DropList, null, droppedBy.map(function (npc) {
31733
- var loot = npc.loots.find(function (l) {
31734
- return l.itemBlueprintKey === item.key;
31735
- });
31736
- return React__default.createElement(DropItem, {
31737
- key: npc.id
31738
- }, React__default.createElement(NPCName, null, npc.name), React__default.createElement(DropRate, null, loot == null ? void 0 : loot.chance, "%"));
31663
+ }, React__default.createElement(SpellsList, null, npc.areaSpells.map(function (spell, index) {
31664
+ return React__default.createElement(SpellItem, {
31665
+ key: index
31666
+ }, React__default.createElement(SpellIconContainer, null, React__default.createElement(SpriteFromAtlas, {
31667
+ atlasJSON: iconAtlasJSON,
31668
+ atlasIMG: iconAtlasIMG,
31669
+ spriteKey: spell.texturePath || spell.spellKey,
31670
+ width: 24,
31671
+ height: 24,
31672
+ imgScale: 1
31673
+ })), React__default.createElement(SpellContent, null, React__default.createElement(SpellName, null, formatText(spell.spellKey)), React__default.createElement(SpellDetails, null, "Power: ", React__default.createElement(SpellValue, null, formatText(spell.power)), React__default.createElement(Separator, null, "\u2022"), "Chance: ", React__default.createElement(SpellValue, null, spell.probability, "%"))));
31739
31674
  }))));
31740
31675
  };
31741
31676
  var InfoSection$1 = /*#__PURE__*/styled__default.div.withConfig({
31742
- displayName: "InformationCenterItemDetails__InfoSection",
31743
- componentId: "sc-zwf6pb-0"
31677
+ displayName: "InformationCenterNPCDetails__InfoSection",
31678
+ componentId: "sc-fdu3xl-0"
31744
31679
  })(["display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px;background:rgba(255,255,255,0.05);padding:12px;border-radius:4px;"]);
31745
31680
  var InfoItem$1 = /*#__PURE__*/styled__default.div.withConfig({
31746
- displayName: "InformationCenterItemDetails__InfoItem",
31747
- componentId: "sc-zwf6pb-1"
31681
+ displayName: "InformationCenterNPCDetails__InfoItem",
31682
+ componentId: "sc-fdu3xl-1"
31748
31683
  })(["display:flex;align-items:center;gap:8px;"]);
31749
31684
  var Label$1 = /*#__PURE__*/styled__default.span.withConfig({
31750
- displayName: "InformationCenterItemDetails__Label",
31751
- componentId: "sc-zwf6pb-2"
31685
+ displayName: "InformationCenterNPCDetails__Label",
31686
+ componentId: "sc-fdu3xl-2"
31752
31687
  })(["color:", ";font-size:0.5rem;opacity:0.8;"], uiColors.yellow);
31753
31688
  var Value$1 = /*#__PURE__*/styled__default.span.withConfig({
31754
- displayName: "InformationCenterItemDetails__Value",
31755
- componentId: "sc-zwf6pb-3"
31689
+ displayName: "InformationCenterNPCDetails__Value",
31690
+ componentId: "sc-fdu3xl-3"
31756
31691
  })(["color:", ";font-size:0.5rem;"], uiColors.white);
31757
- var StyledCollapsible$2 = /*#__PURE__*/styled__default(Collapsible).withConfig({
31758
- displayName: "InformationCenterItemDetails__StyledCollapsible",
31759
- componentId: "sc-zwf6pb-4"
31692
+ var StyledCollapsible$1 = /*#__PURE__*/styled__default(Collapsible).withConfig({
31693
+ displayName: "InformationCenterNPCDetails__StyledCollapsible",
31694
+ componentId: "sc-fdu3xl-4"
31760
31695
  })(["background:rgba(255,255,255,0.05);border-radius:4px;overflow:hidden;"]);
31761
- var Description$2 = /*#__PURE__*/styled__default.p.withConfig({
31762
- displayName: "InformationCenterItemDetails__Description",
31763
- componentId: "sc-zwf6pb-5"
31764
- })(["color:", ";font-size:0.5rem;margin:0;padding:12px;line-height:1.5;"], uiColors.white);
31765
31696
  var StatGrid$1 = /*#__PURE__*/styled__default.div.withConfig({
31766
- displayName: "InformationCenterItemDetails__StatGrid",
31767
- componentId: "sc-zwf6pb-6"
31697
+ displayName: "InformationCenterNPCDetails__StatGrid",
31698
+ componentId: "sc-fdu3xl-5"
31768
31699
  })(["display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;padding:12px;"]);
31769
31700
  var StatItem$2 = /*#__PURE__*/styled__default.div.withConfig({
31770
- displayName: "InformationCenterItemDetails__StatItem",
31771
- componentId: "sc-zwf6pb-7"
31701
+ displayName: "InformationCenterNPCDetails__StatItem",
31702
+ componentId: "sc-fdu3xl-6"
31772
31703
  })(["color:", ";font-size:0.5rem;background:rgba(255,255,255,0.05);padding:8px;border-radius:4px;"], uiColors.white);
31773
- var EffectsList$2 = /*#__PURE__*/styled__default.div.withConfig({
31774
- displayName: "InformationCenterItemDetails__EffectsList",
31775
- componentId: "sc-zwf6pb-8"
31704
+ var EffectsList$1 = /*#__PURE__*/styled__default.div.withConfig({
31705
+ displayName: "InformationCenterNPCDetails__EffectsList",
31706
+ componentId: "sc-fdu3xl-7"
31776
31707
  })(["display:flex;flex-wrap:wrap;gap:8px;padding:12px;"]);
31777
- var EffectItem$2 = /*#__PURE__*/styled__default.div.withConfig({
31778
- displayName: "InformationCenterItemDetails__EffectItem",
31779
- componentId: "sc-zwf6pb-9"
31780
- })(["display:flex;align-items:center;gap:4px;color:", ";font-size:0.5rem;background:rgba(255,255,255,0.1);padding:4px 8px;border-radius:4px;"], uiColors.white);
31781
- var EffectChance = /*#__PURE__*/styled__default.span.withConfig({
31782
- displayName: "InformationCenterItemDetails__EffectChance",
31783
- componentId: "sc-zwf6pb-10"
31784
- })(["color:", ";opacity:0.8;"], uiColors.yellow);
31785
- var BuffsList = /*#__PURE__*/styled__default.div.withConfig({
31786
- displayName: "InformationCenterItemDetails__BuffsList",
31787
- componentId: "sc-zwf6pb-11"
31708
+ var EffectItem$1 = /*#__PURE__*/styled__default.div.withConfig({
31709
+ displayName: "InformationCenterNPCDetails__EffectItem",
31710
+ componentId: "sc-fdu3xl-8"
31711
+ })(["color:", ";font-size:0.5rem;background:rgba(255,255,255,0.1);padding:4px 8px;border-radius:4px;"], uiColors.white);
31712
+ var SpellsList = /*#__PURE__*/styled__default.div.withConfig({
31713
+ displayName: "InformationCenterNPCDetails__SpellsList",
31714
+ componentId: "sc-fdu3xl-9"
31788
31715
  })(["display:flex;flex-direction:column;gap:8px;padding:12px;"]);
31789
- var BuffItem = /*#__PURE__*/styled__default.div.withConfig({
31790
- displayName: "InformationCenterItemDetails__BuffItem",
31791
- componentId: "sc-zwf6pb-12"
31792
- })(["display:flex;justify-content:space-between;align-items:center;background:rgba(255,255,255,0.05);padding:8px;border-radius:4px;"]);
31793
- var BuffName = /*#__PURE__*/styled__default.span.withConfig({
31794
- displayName: "InformationCenterItemDetails__BuffName",
31795
- componentId: "sc-zwf6pb-13"
31796
- })(["color:", ";font-size:0.5rem;"], uiColors.white);
31797
- var BuffValue = /*#__PURE__*/styled__default.span.withConfig({
31798
- displayName: "InformationCenterItemDetails__BuffValue",
31799
- componentId: "sc-zwf6pb-14"
31800
- })(["color:", ";font-size:0.5rem;"], uiColors.yellow);
31801
- var BuffDescription = /*#__PURE__*/styled__default.p.withConfig({
31802
- displayName: "InformationCenterItemDetails__BuffDescription",
31803
- componentId: "sc-zwf6pb-15"
31804
- })(["color:", ";font-size:0.45rem;margin:0;padding:0 12px 12px;font-style:italic;"], uiColors.lightGray);
31805
- var DropList = /*#__PURE__*/styled__default.div.withConfig({
31806
- displayName: "InformationCenterItemDetails__DropList",
31807
- componentId: "sc-zwf6pb-16"
31808
- })(["display:flex;flex-direction:column;gap:0.5rem;padding:12px;"]);
31809
- var DropItem = /*#__PURE__*/styled__default.div.withConfig({
31810
- displayName: "InformationCenterItemDetails__DropItem",
31811
- componentId: "sc-zwf6pb-17"
31812
- })(["display:flex;justify-content:space-between;align-items:center;padding:0.5rem;background:rgba(255,255,255,0.05);border-radius:4px;"]);
31813
- var NPCName = /*#__PURE__*/styled__default.span.withConfig({
31814
- displayName: "InformationCenterItemDetails__NPCName",
31815
- componentId: "sc-zwf6pb-18"
31816
- })(["color:", ";font-size:0.5rem;"], uiColors.white);
31817
- var DropRate = /*#__PURE__*/styled__default.span.withConfig({
31818
- displayName: "InformationCenterItemDetails__DropRate",
31819
- componentId: "sc-zwf6pb-19"
31716
+ var SpellIconContainer = /*#__PURE__*/styled__default.div.withConfig({
31717
+ displayName: "InformationCenterNPCDetails__SpellIconContainer",
31718
+ componentId: "sc-fdu3xl-10"
31719
+ })(["display:flex;padding-right:30px;padding-bottom:30px;"]);
31720
+ var SpellContent = /*#__PURE__*/styled__default.div.withConfig({
31721
+ displayName: "InformationCenterNPCDetails__SpellContent",
31722
+ componentId: "sc-fdu3xl-11"
31723
+ })(["display:flex;flex-direction:column;gap:4px;flex:1;"]);
31724
+ var SpellItem = /*#__PURE__*/styled__default.div.withConfig({
31725
+ displayName: "InformationCenterNPCDetails__SpellItem",
31726
+ componentId: "sc-fdu3xl-12"
31727
+ })(["display:flex;gap:8px;background:rgba(255,255,255,0.05);padding:8px;padding-left:10px;border-radius:4px;align-items:center;"]);
31728
+ var SpellName = /*#__PURE__*/styled__default.div.withConfig({
31729
+ displayName: "InformationCenterNPCDetails__SpellName",
31730
+ componentId: "sc-fdu3xl-13"
31820
31731
  })(["color:", ";font-size:0.5rem;"], uiColors.yellow);
31821
- var RequirementsGrid = /*#__PURE__*/styled__default.div.withConfig({
31822
- displayName: "InformationCenterItemDetails__RequirementsGrid",
31823
- componentId: "sc-zwf6pb-20"
31824
- })(["display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;padding:12px;"]);
31825
- var RequirementItem = /*#__PURE__*/styled__default.div.withConfig({
31826
- displayName: "InformationCenterItemDetails__RequirementItem",
31827
- componentId: "sc-zwf6pb-21"
31732
+ var SpellDetails = /*#__PURE__*/styled__default.div.withConfig({
31733
+ displayName: "InformationCenterNPCDetails__SpellDetails",
31734
+ componentId: "sc-fdu3xl-14"
31735
+ })(["display:flex;align-items:center;gap:8px;color:", ";font-size:0.45rem;opacity:0.8;"], uiColors.white);
31736
+ var SpellValue = /*#__PURE__*/styled__default.span.withConfig({
31737
+ displayName: "InformationCenterNPCDetails__SpellValue",
31738
+ componentId: "sc-fdu3xl-15"
31739
+ })(["color:", ";"], uiColors.yellow);
31740
+ var Separator = /*#__PURE__*/styled__default.span.withConfig({
31741
+ displayName: "InformationCenterNPCDetails__Separator",
31742
+ componentId: "sc-fdu3xl-16"
31743
+ })(["color:", ";opacity:0.5;"], uiColors.yellow);
31744
+ var LootSearchContainer = /*#__PURE__*/styled__default.div.withConfig({
31745
+ displayName: "InformationCenterNPCDetails__LootSearchContainer",
31746
+ componentId: "sc-fdu3xl-17"
31747
+ })(["padding:12px 12px 0;"]);
31748
+ var StyledSearchBar$1 = /*#__PURE__*/styled__default(SearchBar).withConfig({
31749
+ displayName: "InformationCenterNPCDetails__StyledSearchBar",
31750
+ componentId: "sc-fdu3xl-18"
31751
+ })(["width:100%;"]);
31752
+ var LootGrid = /*#__PURE__*/styled__default.div.withConfig({
31753
+ displayName: "InformationCenterNPCDetails__LootGrid",
31754
+ componentId: "sc-fdu3xl-19"
31755
+ })(["display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;padding:12px;"]);
31756
+ var LootItem = /*#__PURE__*/styled__default.div.withConfig({
31757
+ displayName: "InformationCenterNPCDetails__LootItem",
31758
+ componentId: "sc-fdu3xl-20"
31828
31759
  })(["display:flex;align-items:center;gap:8px;background:rgba(255,255,255,0.05);padding:8px;border-radius:4px;"]);
31829
- var EffectDescription = /*#__PURE__*/styled__default.p.withConfig({
31830
- displayName: "InformationCenterItemDetails__EffectDescription",
31831
- componentId: "sc-zwf6pb-22"
31832
- })(["color:", ";font-size:0.45rem;margin:8px 0 0;padding:0 12px;font-style:italic;"], uiColors.lightGray);
31833
-
31834
- var ItemHeader$1 = /*#__PURE__*/styled__default.div.withConfig({
31835
- displayName: "InformationCenterItemTooltip__ItemHeader",
31836
- componentId: "sc-1ecf9mj-0"
31760
+ var LootDetails = /*#__PURE__*/styled__default.div.withConfig({
31761
+ displayName: "InformationCenterNPCDetails__LootDetails",
31762
+ componentId: "sc-fdu3xl-21"
31763
+ })(["flex:1;display:flex;flex-direction:column;gap:4px;"]);
31764
+ var LootName = /*#__PURE__*/styled__default.div.withConfig({
31765
+ displayName: "InformationCenterNPCDetails__LootName",
31766
+ componentId: "sc-fdu3xl-22"
31767
+ })(["color:", ";font-size:0.5rem;"], uiColors.white);
31768
+ var LootInfo = /*#__PURE__*/styled__default.div.withConfig({
31769
+ displayName: "InformationCenterNPCDetails__LootInfo",
31770
+ componentId: "sc-fdu3xl-23"
31837
31771
  })(["display:flex;align-items:center;gap:8px;"]);
31838
- var Description$3 = /*#__PURE__*/styled__default.div.withConfig({
31839
- displayName: "InformationCenterItemTooltip__Description",
31840
- componentId: "sc-1ecf9mj-1"
31841
- })(["color:", ";font-size:0.5rem;line-height:1.4;margin-top:8px;opacity:0.8;"], uiColors.white);
31842
- var RarityText = /*#__PURE__*/styled__default.span.withConfig({
31843
- displayName: "InformationCenterItemTooltip__RarityText",
31844
- componentId: "sc-1ecf9mj-2"
31845
- })(["color:", ";font-size:0.5rem;"], function (props) {
31846
- switch (props.rarity.toLowerCase()) {
31847
- case 'legendary':
31848
- return '#ff8c00';
31849
- case 'rare':
31850
- return '#0070dd';
31851
- case 'uncommon':
31852
- return '#1eff00';
31772
+ var LootChance = /*#__PURE__*/styled__default.span.withConfig({
31773
+ displayName: "InformationCenterNPCDetails__LootChance",
31774
+ componentId: "sc-fdu3xl-24"
31775
+ })(["color:", ";font-size:0.45rem;"], uiColors.yellow);
31776
+ var LootQuantity = /*#__PURE__*/styled__default.span.withConfig({
31777
+ displayName: "InformationCenterNPCDetails__LootQuantity",
31778
+ componentId: "sc-fdu3xl-25"
31779
+ })(["color:", ";font-size:0.45rem;"], uiColors.lightGray);
31780
+ var PaginationContainer$2 = /*#__PURE__*/styled__default.div.withConfig({
31781
+ displayName: "InformationCenterNPCDetails__PaginationContainer",
31782
+ componentId: "sc-fdu3xl-26"
31783
+ })(["display:flex;justify-content:center;padding:12px;"]);
31784
+ var StyledPagination = /*#__PURE__*/styled__default(Pagination).withConfig({
31785
+ displayName: "InformationCenterNPCDetails__StyledPagination",
31786
+ componentId: "sc-fdu3xl-27"
31787
+ })(["font-size:0.6rem;"]);
31788
+
31789
+ var EffectsList$2 = /*#__PURE__*/styled__default.div.withConfig({
31790
+ displayName: "InformationCenterNPCTooltip__EffectsList",
31791
+ componentId: "sc-j2o39s-0"
31792
+ })(["display:flex;gap:8px;flex-wrap:wrap;"]);
31793
+ var EffectItem$2 = /*#__PURE__*/styled__default.span.withConfig({
31794
+ displayName: "InformationCenterNPCTooltip__EffectItem",
31795
+ componentId: "sc-j2o39s-1"
31796
+ })(["font-size:0.5rem;color:", ";background:rgba(255,255,255,0.1);padding:2px 6px;border-radius:4px;"], uiColors.white);
31797
+ var SpellList = /*#__PURE__*/styled__default.div.withConfig({
31798
+ displayName: "InformationCenterNPCTooltip__SpellList",
31799
+ componentId: "sc-j2o39s-2"
31800
+ })(["display:flex;flex-direction:column;gap:2px;"]);
31801
+ var SpellItem$1 = /*#__PURE__*/styled__default.div.withConfig({
31802
+ displayName: "InformationCenterNPCTooltip__SpellItem",
31803
+ componentId: "sc-j2o39s-3"
31804
+ })(["display:flex;align-items:center;justify-content:space-between;font-size:0.5rem;color:", ";background:rgba(255,255,255,0.05);padding:2px 6px;border-radius:4px;"], uiColors.white);
31805
+ var SpellInfo = /*#__PURE__*/styled__default.span.withConfig({
31806
+ displayName: "InformationCenterNPCTooltip__SpellInfo",
31807
+ componentId: "sc-j2o39s-4"
31808
+ })(["color:", ";margin-left:8px;opacity:0.8;"], uiColors.yellow);
31809
+ var LootList = /*#__PURE__*/styled__default.div.withConfig({
31810
+ displayName: "InformationCenterNPCTooltip__LootList",
31811
+ componentId: "sc-j2o39s-5"
31812
+ })(["display:flex;flex-direction:column;gap:2px;"]);
31813
+ var LootItem$1 = /*#__PURE__*/styled__default.div.withConfig({
31814
+ displayName: "InformationCenterNPCTooltip__LootItem",
31815
+ componentId: "sc-j2o39s-6"
31816
+ })(["display:flex;align-items:center;gap:4px;font-size:0.5rem;background:rgba(255,255,255,0.05);padding:4px 6px;border-radius:4px;.sprite-from-atlas-img{top:0px;left:0px;}"]);
31817
+ var LootName$1 = /*#__PURE__*/styled__default.span.withConfig({
31818
+ displayName: "InformationCenterNPCTooltip__LootName",
31819
+ componentId: "sc-j2o39s-7"
31820
+ })(["color:", ";flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left:4px;"], uiColors.white);
31821
+ var LootChance$1 = /*#__PURE__*/styled__default.span.withConfig({
31822
+ displayName: "InformationCenterNPCTooltip__LootChance",
31823
+ componentId: "sc-j2o39s-8"
31824
+ })(["color:", ";font-size:0.45rem;text-transform:lowercase;opacity:0.8;"], uiColors.yellow);
31825
+ var MoreIndicator = /*#__PURE__*/styled__default.div.withConfig({
31826
+ displayName: "InformationCenterNPCTooltip__MoreIndicator",
31827
+ componentId: "sc-j2o39s-9"
31828
+ })(["color:", ";font-size:0.45rem;text-align:center;margin-top:2px;opacity:0.7;"], uiColors.yellow);
31829
+ var formatText = function formatText(text) {
31830
+ if (typeof text === 'number') {
31831
+ return text.toString();
31832
+ }
31833
+ return text.toString().replace(/([A-Z])/g, ' $1').trim().replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2').replace(/\s+/g, ' ');
31834
+ };
31835
+ var formatRarity = function formatRarity(rarity) {
31836
+ switch (rarity) {
31837
+ case 0.5:
31838
+ return 'Very Rare';
31839
+ case 1:
31840
+ return 'Rare';
31841
+ case 10:
31842
+ return 'Uncommon';
31843
+ case 15:
31844
+ return 'Semi Common';
31845
+ case 20:
31846
+ return 'Common';
31847
+ case 35:
31848
+ return 'Very Common';
31853
31849
  default:
31854
- return '#ffffff';
31850
+ return 'Unknown';
31855
31851
  }
31856
- });
31857
- var InformationCenterItemTooltip = function InformationCenterItemTooltip(_ref) {
31858
- var item = _ref.item;
31859
- return React__default.createElement(BaseTooltip, null, React__default.createElement(ItemHeader$1, null, React__default.createElement(TooltipTitle$1, null, item.name)), React__default.createElement(Description$3, null, item.description), React__default.createElement(Section, null, React__default.createElement(SectionTitle, null, "Details"), React__default.createElement(StatsContainer, null, React__default.createElement(StatItem$1, null, "Type: ", item.type), React__default.createElement(StatItem$1, null, "Weight: ", item.weight), item.attack !== undefined && React__default.createElement(StatItem$1, null, "Attack: ", item.attack), item.defense !== undefined && React__default.createElement(StatItem$1, null, "Defense: ", item.defense), item.tier !== undefined && React__default.createElement(StatItem$1, null, "Tier: ", item.tier), item.rangeType && React__default.createElement(StatItem$1, null, "Range: ", item.rangeType))), React__default.createElement(Section, null, React__default.createElement(SectionTitle, null, "Market"), React__default.createElement(StatsContainer, null, React__default.createElement(StatItem$1, null, "Price: ", item.basePrice), item.rarity && React__default.createElement(StatItem$1, null, "Rarity:", ' ', React__default.createElement(RarityText, {
31860
- rarity: item.rarity
31861
- }, item.rarity)))));
31852
+ };
31853
+ var InformationCenterNPCTooltip = function InformationCenterNPCTooltip(_ref) {
31854
+ var _npc$skills$strength, _npc$skills$dexterity, _npc$skills$resistanc;
31855
+ var npc = _ref.npc,
31856
+ itemsAtlasJSON = _ref.itemsAtlasJSON,
31857
+ itemsAtlasIMG = _ref.itemsAtlasIMG;
31858
+ return React__default.createElement(BaseTooltip, null, React__default.createElement(TooltipTitle$1, null, npc.name), React__default.createElement(StatsContainer, null, React__default.createElement(StatItem$1, null, "HP: ", npc.baseHealth), React__default.createElement(StatItem$1, null, "LVL: ", npc.skills.level), React__default.createElement(StatItem$1, null, "STR: ", ((_npc$skills$strength = npc.skills.strength) == null ? void 0 : _npc$skills$strength.level) || '-'), React__default.createElement(StatItem$1, null, "DEX: ", ((_npc$skills$dexterity = npc.skills.dexterity) == null ? void 0 : _npc$skills$dexterity.level) || '-'), React__default.createElement(StatItem$1, null, "RES: ", ((_npc$skills$resistanc = npc.skills.resistance) == null ? void 0 : _npc$skills$resistanc.level) || '-'), React__default.createElement(StatItem$1, null, "SPD: ", formatText(npc.speed))), npc.entityEffects && npc.entityEffects.length > 0 && React__default.createElement(Section, null, React__default.createElement(SectionTitle, null, "Effects"), React__default.createElement(EffectsList$2, null, npc.entityEffects.map(function (effect) {
31859
+ return React__default.createElement(EffectItem$2, {
31860
+ key: effect
31861
+ }, formatText(effect));
31862
+ }))), npc.areaSpells && npc.areaSpells.length > 0 && React__default.createElement(Section, null, React__default.createElement(SectionTitle, null, "Spells"), React__default.createElement(SpellList, null, npc.areaSpells.map(function (spell) {
31863
+ return React__default.createElement(SpellItem$1, {
31864
+ key: spell.spellKey
31865
+ }, formatText(spell.spellKey), React__default.createElement(SpellInfo, null, formatText(spell.power), ", ", spell.probability, "%"));
31866
+ }))), npc.loots && npc.loots.length > 0 && React__default.createElement(Section, null, React__default.createElement(SectionTitle, null, "Possible Loot"), React__default.createElement(LootList, null, npc.loots.slice(0, 4).map(function (loot) {
31867
+ return React__default.createElement(LootItem$1, {
31868
+ key: loot.itemBlueprintKey
31869
+ }, React__default.createElement(SpriteFromAtlas, {
31870
+ atlasIMG: itemsAtlasIMG,
31871
+ atlasJSON: itemsAtlasJSON,
31872
+ spriteKey: loot.itemBlueprintKey,
31873
+ imgScale: 1
31874
+ }), React__default.createElement(LootName$1, null, formatItemName(loot.itemBlueprintKey)), React__default.createElement(LootChance$1, null, formatRarity(loot.chance)));
31875
+ }), npc.loots.length > 4 && React__default.createElement(MoreIndicator, null, "..."))));
31862
31876
  };
31863
31877
 
31864
- var TOOLTIP_OFFSET = 20;
31865
- var InformationCenterItemsSection = function InformationCenterItemsSection(_ref) {
31866
- var items = _ref.items,
31867
- bestiaryItems = _ref.bestiaryItems,
31878
+ var InformationCenterBestiarySection = function InformationCenterBestiarySection(_ref) {
31879
+ var bestiaryItems = _ref.bestiaryItems,
31868
31880
  itemsAtlasJSON = _ref.itemsAtlasJSON,
31869
31881
  itemsAtlasIMG = _ref.itemsAtlasIMG,
31882
+ iconsAtlasIMG = _ref.iconsAtlasIMG,
31883
+ iconsAtlasJSON = _ref.iconsAtlasJSON,
31884
+ entitiesAtlasJSON = _ref.entitiesAtlasJSON,
31885
+ entitiesAtlasIMG = _ref.entitiesAtlasIMG,
31870
31886
  initialSearchQuery = _ref.initialSearchQuery,
31871
31887
  tabId = _ref.tabId;
31872
31888
  var _useState = React.useState(initialSearchQuery),
31873
31889
  searchQuery = _useState[0],
31874
31890
  setSearchQuery = _useState[1];
31875
- var _useState2 = React.useState('all'),
31876
- selectedItemCategory = _useState2[0],
31877
- setSelectedItemCategory = _useState2[1];
31891
+ var _useState2 = React.useState(null),
31892
+ tooltipData = _useState2[0],
31893
+ setTooltipData = _useState2[1];
31878
31894
  var _useState3 = React.useState(null),
31879
- hoveredItem = _useState3[0],
31880
- setHoveredItem = _useState3[1];
31881
- var _useState4 = React.useState({
31882
- x: 0,
31883
- y: 0
31884
- }),
31885
- tooltipPosition = _useState4[0],
31886
- setTooltipPosition = _useState4[1];
31887
- var _useState5 = React.useState(null),
31888
- selectedItem = _useState5[0],
31889
- setSelectedItem = _useState5[1];
31890
- var itemCategoryOptions = [{
31891
- id: 0,
31892
- value: 'all',
31893
- option: 'All Items'
31894
- }, {
31895
- id: 1,
31896
- value: shared.ItemType.Consumable,
31897
- option: 'Consumables'
31898
- }, {
31899
- id: 2,
31900
- value: shared.ItemType.Weapon,
31901
- option: 'Weapons'
31902
- }, {
31903
- id: 3,
31904
- value: shared.ItemType.Armor,
31905
- option: 'Armor'
31906
- }];
31907
- var filteredItems = items.filter(function (item) {
31908
- return (selectedItemCategory === 'all' || item.type === selectedItemCategory) && item.name.toLowerCase().includes(searchQuery.toLowerCase());
31909
- });
31910
- var getDroppedByNPCs = function getDroppedByNPCs(itemId, npcs) {
31911
- return npcs.filter(function (npc) {
31912
- var _npc$loots;
31913
- return (_npc$loots = npc.loots) == null ? void 0 : _npc$loots.some(function (loot) {
31914
- return loot.itemBlueprintKey === itemId;
31915
- });
31916
- }) || [];
31917
- };
31918
- var handleMouseEnter = function handleMouseEnter(e, item) {
31919
- setTooltipPosition({
31920
- x: e.clientX + TOOLTIP_OFFSET,
31921
- y: e.clientY
31922
- });
31923
- setHoveredItem(item);
31924
- };
31925
- var handleMouseMove = function handleMouseMove(e) {
31926
- if (hoveredItem) {
31927
- setTooltipPosition({
31928
- x: e.clientX + TOOLTIP_OFFSET,
31929
- y: e.clientY
31895
+ selectedMonster = _useState3[0],
31896
+ setSelectedMonster = _useState3[1];
31897
+ var _useState4 = React.useState('ontouchstart' in window),
31898
+ isTouchDevice = _useState4[0];
31899
+ var handleMouseEnter = function handleMouseEnter(monster, event) {
31900
+ if (!isTouchDevice && !selectedMonster) {
31901
+ setTooltipData({
31902
+ npc: monster,
31903
+ position: {
31904
+ x: event.clientX,
31905
+ y: event.clientY
31906
+ }
31930
31907
  });
31931
31908
  }
31932
31909
  };
31933
31910
  var handleMouseLeave = function handleMouseLeave() {
31934
- setHoveredItem(null);
31911
+ if (!isTouchDevice) {
31912
+ setTooltipData(null);
31913
+ }
31935
31914
  };
31936
- var handleTouchStart = function handleTouchStart(e, item) {
31937
- var touch = e.touches[0];
31938
- setTooltipPosition({
31939
- x: touch.clientX + TOOLTIP_OFFSET,
31940
- y: touch.clientY
31941
- });
31942
- setHoveredItem(item);
31915
+ var handleMouseMove = function handleMouseMove(event) {
31916
+ if (!isTouchDevice && tooltipData) {
31917
+ setTooltipData(_extends({}, tooltipData, {
31918
+ position: {
31919
+ x: event.clientX,
31920
+ y: event.clientY
31921
+ }
31922
+ }));
31923
+ }
31943
31924
  };
31944
- var handleItemClick = function handleItemClick(item) {
31945
- setSelectedItem(item);
31946
- setHoveredItem(null);
31925
+ var handleTouchStart = function handleTouchStart(monster, event) {
31926
+ if (isTouchDevice) {
31927
+ event.preventDefault();
31928
+ var touch = event.touches[0];
31929
+ if ((tooltipData == null ? void 0 : tooltipData.npc.id) === monster.id) {
31930
+ setTooltipData(null);
31931
+ } else {
31932
+ setTooltipData({
31933
+ npc: monster,
31934
+ position: {
31935
+ x: touch.clientX,
31936
+ y: touch.clientY
31937
+ }
31938
+ });
31939
+ }
31940
+ }
31941
+ };
31942
+ var handleMonsterClick = function handleMonsterClick(monster) {
31943
+ setSelectedMonster(monster);
31944
+ setTooltipData(null);
31947
31945
  };
31946
+ var _useState5 = React.useState('all'),
31947
+ selectedBestiaryCategory = _useState5[0],
31948
+ setSelectedBestiaryCategory = _useState5[1];
31949
+ var bestiaryCategoryOptions = [{
31950
+ id: 0,
31951
+ value: 'all',
31952
+ option: 'All Monsters'
31953
+ }, {
31954
+ id: 1,
31955
+ value: 'bosses',
31956
+ option: 'Bosses'
31957
+ }].concat(Object.entries(shared.NPCAlignment).map(function (_ref2, index) {
31958
+ var value = _ref2[1];
31959
+ return {
31960
+ id: index + 1,
31961
+ value: value,
31962
+ option: formatItemType(value)
31963
+ };
31964
+ }));
31948
31965
  var renderItem = function renderItem(item) {
31949
31966
  return React__default.createElement(InformationCenterCell, {
31950
- key: item.key,
31967
+ key: item.id,
31951
31968
  name: item.name,
31952
- spriteKey: item.texturePath,
31953
- atlasJSON: itemsAtlasJSON,
31954
- atlasIMG: itemsAtlasIMG,
31969
+ spriteKey: item.key,
31970
+ atlasJSON: entitiesAtlasJSON,
31971
+ atlasIMG: entitiesAtlasIMG,
31972
+ onClick: function onClick() {
31973
+ return handleMonsterClick(item);
31974
+ },
31955
31975
  onMouseEnter: function onMouseEnter(e) {
31956
- return handleMouseEnter(e, item);
31976
+ return handleMouseEnter(item, e);
31957
31977
  },
31958
- onMouseMove: handleMouseMove,
31959
31978
  onMouseLeave: handleMouseLeave,
31979
+ onMouseMove: handleMouseMove,
31960
31980
  onTouchStart: function onTouchStart(e) {
31961
- return handleTouchStart(e, item);
31962
- },
31963
- onClick: function onClick() {
31964
- return handleItemClick(item);
31981
+ return handleTouchStart(item, e);
31965
31982
  }
31966
31983
  });
31967
31984
  };
31985
+ var filteredItems = React.useMemo(function () {
31986
+ return bestiaryItems.filter(function (item) {
31987
+ var matchesSearch = item.name.toLowerCase().includes(searchQuery.toLowerCase());
31988
+ var matchesCategory = true;
31989
+ if (selectedBestiaryCategory === 'bosses') {
31990
+ matchesCategory = item.isBoss === true;
31991
+ } else if (selectedBestiaryCategory === shared.NPCAlignment.Hostile) {
31992
+ matchesCategory = item.alignment === shared.NPCAlignment.Hostile && !item.isBoss;
31993
+ } else if (selectedBestiaryCategory !== 'all') {
31994
+ matchesCategory = item.alignment === selectedBestiaryCategory;
31995
+ }
31996
+ return matchesSearch && matchesCategory;
31997
+ });
31998
+ }, [bestiaryItems, searchQuery, selectedBestiaryCategory]);
31999
+ var handleSearchChange = function handleSearchChange(newQuery) {
32000
+ setSearchQuery(newQuery);
32001
+ if (newQuery && selectedBestiaryCategory !== 'all') {
32002
+ setSelectedBestiaryCategory('all');
32003
+ }
32004
+ };
31968
32005
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(PaginatedContent, {
31969
32006
  items: filteredItems,
31970
32007
  renderItem: renderItem,
31971
- emptyMessage: "No items found",
32008
+ emptyMessage: "No monsters found",
32009
+ tabId: tabId,
32010
+ layout: "grid",
31972
32011
  filterOptions: {
31973
- options: itemCategoryOptions,
31974
- selectedOption: selectedItemCategory,
31975
- onOptionChange: setSelectedItemCategory
32012
+ options: bestiaryCategoryOptions,
32013
+ selectedOption: selectedBestiaryCategory,
32014
+ onOptionChange: setSelectedBestiaryCategory
31976
32015
  },
31977
32016
  searchOptions: {
31978
32017
  value: searchQuery,
31979
- onChange: setSearchQuery,
31980
- placeholder: 'Search items...'
32018
+ onChange: handleSearchChange,
32019
+ placeholder: 'Search monsters...'
31981
32020
  },
31982
- dependencies: [selectedItemCategory],
31983
- tabId: tabId,
31984
- layout: "grid",
32021
+ dependencies: [selectedBestiaryCategory],
31985
32022
  itemHeight: "180px"
31986
- }), hoveredItem && React__default.createElement(TooltipWrapper$1, {
32023
+ }), tooltipData && React__default.createElement(Portal, null, React__default.createElement(TooltipWrapper$1, {
31987
32024
  style: {
31988
- top: tooltipPosition.y,
31989
- left: tooltipPosition.x
32025
+ position: 'fixed',
32026
+ left: tooltipData.position.x + 10,
32027
+ top: tooltipData.position.y + 10
31990
32028
  }
31991
- }, React__default.createElement(InformationCenterItemTooltip, {
31992
- item: hoveredItem
31993
- })), selectedItem && React__default.createElement(InformationCenterItemDetails, {
31994
- item: selectedItem,
32029
+ }, React__default.createElement(InformationCenterNPCTooltip, {
32030
+ npc: tooltipData.npc,
32031
+ itemsAtlasJSON: itemsAtlasJSON,
32032
+ itemsAtlasIMG: itemsAtlasIMG
32033
+ }))), selectedMonster && React__default.createElement(InformationCenterNPCDetails, {
32034
+ npc: selectedMonster,
31995
32035
  itemsAtlasJSON: itemsAtlasJSON,
31996
32036
  itemsAtlasIMG: itemsAtlasIMG,
31997
- droppedBy: getDroppedByNPCs(selectedItem.key, bestiaryItems),
32037
+ iconAtlasIMG: iconsAtlasIMG,
32038
+ iconAtlasJSON: iconsAtlasJSON,
32039
+ entitiesAtlasJSON: entitiesAtlasJSON,
32040
+ entitiesAtlasIMG: entitiesAtlasIMG,
31998
32041
  onBack: function onBack() {
31999
- return setSelectedItem(null);
32042
+ return setSelectedMonster(null);
32000
32043
  }
32001
32044
  }));
32002
32045
  };
32003
32046
  var TooltipWrapper$1 = /*#__PURE__*/styled__default.div.withConfig({
32004
- displayName: "InformationCenterItemsSection__TooltipWrapper",
32005
- componentId: "sc-1wmpapt-0"
32006
- })(["position:fixed;z-index:1000;pointer-events:none;transition:transform 0.1s ease;"]);
32047
+ displayName: "InformationCenterBestiarySection__TooltipWrapper",
32048
+ componentId: "sc-e3h0p2-0"
32049
+ })(["position:fixed;z-index:1000;pointer-events:none;width:300px;"]);
32050
+
32051
+ var InformationCenterFAQSection = function InformationCenterFAQSection(_ref) {
32052
+ var faqItems = _ref.faqItems,
32053
+ initialSearchQuery = _ref.initialSearchQuery,
32054
+ tabId = _ref.tabId;
32055
+ var _useState = React.useState(initialSearchQuery),
32056
+ searchQuery = _useState[0],
32057
+ setSearchQuery = _useState[1];
32058
+ React.useEffect(function () {
32059
+ setSearchQuery(initialSearchQuery);
32060
+ }, [initialSearchQuery]);
32061
+ var filteredFaqs = React.useMemo(function () {
32062
+ if (!searchQuery) return faqItems;
32063
+ return faqItems.filter(function (faq) {
32064
+ return faq.question.toLowerCase().includes(searchQuery.toLowerCase()) || faq.answer.toLowerCase().includes(searchQuery.toLowerCase());
32065
+ });
32066
+ }, [searchQuery, faqItems]);
32067
+ var renderItem = function renderItem(item) {
32068
+ return React__default.createElement(StyledCollapsible$2, {
32069
+ title: item.question
32070
+ }, React__default.createElement(Answer$1, null, item.answer));
32071
+ };
32072
+ return React__default.createElement(Container$q, null, React__default.createElement(SearchHeader, {
32073
+ searchOptions: {
32074
+ value: searchQuery,
32075
+ onChange: setSearchQuery,
32076
+ placeholder: 'Search FAQs...'
32077
+ }
32078
+ }), React__default.createElement(PaginatedContent, {
32079
+ items: filteredFaqs,
32080
+ renderItem: renderItem,
32081
+ emptyMessage: "No FAQ items found",
32082
+ tabId: tabId,
32083
+ layout: "list",
32084
+ itemsPerPage: 10
32085
+ }));
32086
+ };
32087
+ var Container$q = /*#__PURE__*/styled__default.div.withConfig({
32088
+ displayName: "InformationCenterFaqSection__Container",
32089
+ componentId: "sc-ofmaa9-0"
32090
+ })(["display:flex;flex-direction:column;gap:1rem;width:100%;"]);
32091
+ var StyledCollapsible$2 = /*#__PURE__*/styled__default(Collapsible).withConfig({
32092
+ displayName: "InformationCenterFaqSection__StyledCollapsible",
32093
+ componentId: "sc-ofmaa9-1"
32094
+ })(["margin-bottom:0.5rem;&:last-child{margin-bottom:0;}"]);
32095
+ var Answer$1 = /*#__PURE__*/styled__default.p.withConfig({
32096
+ displayName: "InformationCenterFaqSection__Answer",
32097
+ componentId: "sc-ofmaa9-2"
32098
+ })(["font-size:0.9rem;color:#ffffff;margin:0;line-height:1.5;"]);
32007
32099
 
32100
+ var ITEMS_PER_PAGE$2 = 3;
32101
+ var GRID_COLUMNS = 3;
32008
32102
  var InformationCenterTutorialsSection = function InformationCenterTutorialsSection(_ref) {
32009
32103
  var videoGuides = _ref.videoGuides,
32010
32104
  initialSearchQuery = _ref.initialSearchQuery,
@@ -32015,90 +32109,127 @@ var InformationCenterTutorialsSection = function InformationCenterTutorialsSecti
32015
32109
  var _useState2 = React.useState('all'),
32016
32110
  selectedCategory = _useState2[0],
32017
32111
  setSelectedCategory = _useState2[1];
32112
+ var _useState3 = React.useState(1),
32113
+ setCurrentPage = _useState3[1];
32114
+ var getYouTubeThumbnail = function getYouTubeThumbnail(videoUrl) {
32115
+ var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/;
32116
+ var match = videoUrl.match(regExp);
32117
+ var videoId = match && match[2].length === 11 ? match[2] : null;
32118
+ return videoId ? "https://img.youtube.com/vi/" + videoId + "/hqdefault.jpg" : '/placeholder-thumbnail.png';
32119
+ };
32018
32120
  var categoryOptions = [{
32019
32121
  id: 0,
32020
32122
  value: 'all',
32021
- option: 'All'
32022
- }, {
32023
- id: 1,
32024
- value: 'Combat',
32025
- option: 'Combat'
32026
- }, {
32027
- id: 2,
32028
- value: 'Crafting',
32029
- option: 'Crafting'
32030
- }, {
32031
- id: 3,
32032
- value: 'Exploration',
32033
- option: 'Exploration'
32034
- }, {
32035
- id: 4,
32036
- value: 'General',
32037
- option: 'General'
32038
- }];
32123
+ option: 'All Categories'
32124
+ }].concat(shared.VideoGuideCategory ? Object.entries(shared.VideoGuideCategory).map(function (_ref2, index) {
32125
+ var value = _ref2[1];
32126
+ return {
32127
+ id: index + 1,
32128
+ value: value,
32129
+ option: formatItemType(value)
32130
+ };
32131
+ }) : [], shared.VideoGuideLanguage ? Object.entries(shared.VideoGuideLanguage).map(function (_ref3, index) {
32132
+ var value = _ref3[1];
32133
+ return {
32134
+ id: index + (shared.VideoGuideCategory ? Object.entries(shared.VideoGuideCategory).length : 0) + 1,
32135
+ value: value,
32136
+ option: formatItemType(value)
32137
+ };
32138
+ }) : []);
32139
+ var handleVideoClick = function handleVideoClick(videoUrl) {
32140
+ window.open(videoUrl, '_blank', 'noopener,noreferrer');
32141
+ };
32039
32142
  var renderItem = function renderItem(guide) {
32040
32143
  return React__default.createElement(GuideItem, {
32041
- key: guide.id
32144
+ key: guide.id,
32145
+ onClick: function onClick() {
32146
+ return handleVideoClick(guide.videoUrl);
32147
+ }
32042
32148
  }, React__default.createElement(GuideThumbnail, null, React__default.createElement("img", {
32043
- src: guide.thumbnailUrl || '/placeholder-thumbnail.png',
32149
+ src: guide.localImage || getYouTubeThumbnail(guide.videoUrl),
32044
32150
  alt: guide.title
32045
- })), React__default.createElement(GuideContent, null, React__default.createElement(GuideTitle, null, guide.title), React__default.createElement(GuideDescription, null, guide.description), React__default.createElement(GuideCategory, null, guide.category)));
32151
+ })), React__default.createElement(GuideContent, null, React__default.createElement(GuideTitle, null, guide.title), React__default.createElement(GuideDescription, null, guide.description), React__default.createElement(GuideLabelsContainer, null, React__default.createElement(GuideCategory, null, guide.category), React__default.createElement(GuideLanguage, null, guide.language))));
32152
+ };
32153
+ var filteredGuides = React.useMemo(function () {
32154
+ return videoGuides.filter(function (guide) {
32155
+ var matchesSearch = guide.title.toLowerCase().includes(searchQuery.toLowerCase()) || guide.description.toLowerCase().includes(searchQuery.toLowerCase());
32156
+ var matchesCategory = selectedCategory === 'all' || Object.values(shared.VideoGuideCategory).includes(selectedCategory) && guide.category === selectedCategory || Object.values(shared.VideoGuideLanguage).includes(selectedCategory) && guide.language === selectedCategory;
32157
+ return matchesSearch && matchesCategory;
32158
+ });
32159
+ }, [videoGuides, searchQuery, selectedCategory]);
32160
+ var handleSearchChange = function handleSearchChange(newQuery) {
32161
+ setSearchQuery(newQuery);
32162
+ setCurrentPage(1);
32163
+ if (newQuery && selectedCategory !== 'all') {
32164
+ setSelectedCategory('all');
32165
+ }
32166
+ };
32167
+ var handleCategoryChange = function handleCategoryChange(category) {
32168
+ setSelectedCategory(category);
32169
+ setCurrentPage(1);
32046
32170
  };
32047
- var filteredGuides = videoGuides.filter(function (guide) {
32048
- return (selectedCategory === 'all' || guide.category === selectedCategory) && (guide.title.toLowerCase().includes(searchQuery.toLowerCase()) || guide.description.toLowerCase().includes(searchQuery.toLowerCase()));
32049
- });
32050
32171
  return React__default.createElement(PaginatedContent, {
32051
32172
  items: filteredGuides,
32052
32173
  renderItem: renderItem,
32053
32174
  emptyMessage: "No guides found",
32054
32175
  searchOptions: {
32055
32176
  value: searchQuery,
32056
- onChange: setSearchQuery,
32177
+ onChange: handleSearchChange,
32057
32178
  placeholder: 'Search guides...'
32058
32179
  },
32059
32180
  filterOptions: {
32060
32181
  options: categoryOptions,
32061
32182
  selectedOption: selectedCategory,
32062
- onOptionChange: setSelectedCategory
32183
+ onOptionChange: handleCategoryChange
32063
32184
  },
32064
32185
  dependencies: [selectedCategory],
32065
32186
  tabId: tabId,
32066
32187
  layout: "grid",
32067
- gridColumns: 3,
32068
- itemsPerPage: 3,
32069
- itemHeight: "400px"
32188
+ gridColumns: GRID_COLUMNS,
32189
+ itemsPerPage: ITEMS_PER_PAGE$2,
32190
+ itemHeight: "320px"
32070
32191
  });
32071
32192
  };
32072
32193
  var GuideItem = /*#__PURE__*/styled__default.div.withConfig({
32073
32194
  displayName: "InformationCenterTutorialsSection__GuideItem",
32074
32195
  componentId: "sc-1gk05vk-0"
32075
- })(["background:rgba(0,0,0,0.3);border-radius:4px;overflow:hidden;border:1px solid ", ";cursor:pointer;transition:transform 0.2s ease;height:100%;&:hover{transform:translateY(-2px);}"], uiColors.darkGray);
32196
+ })(["background:rgba(0,0,0,0.3);border-radius:4px;overflow:hidden;border:1px solid ", ";cursor:pointer;transition:transform 0.2s ease;display:flex;flex-direction:column;height:100%;padding:0;&:hover{transform:translateY(-2px);}"], uiColors.darkGray);
32076
32197
  var GuideThumbnail = /*#__PURE__*/styled__default.div.withConfig({
32077
32198
  displayName: "InformationCenterTutorialsSection__GuideThumbnail",
32078
32199
  componentId: "sc-1gk05vk-1"
32079
- })(["width:100%;height:168px;background:rgba(0,0,0,0.2);overflow:hidden;img{width:100%;height:100%;object-fit:cover;}font-size:0.8rem;line-height:1.8;"]);
32200
+ })(["width:100%;height:168px;background:rgba(0,0,0,0.2);overflow:hidden;img{width:100%;height:100%;object-fit:cover;}"]);
32080
32201
  var GuideContent = /*#__PURE__*/styled__default.div.withConfig({
32081
32202
  displayName: "InformationCenterTutorialsSection__GuideContent",
32082
32203
  componentId: "sc-1gk05vk-2"
32083
- })(["padding:12px;"]);
32204
+ })(["padding:0 12px 12px;flex:1;display:flex;flex-direction:column;"]);
32084
32205
  var GuideTitle = /*#__PURE__*/styled__default.h3.withConfig({
32085
32206
  displayName: "InformationCenterTutorialsSection__GuideTitle",
32086
32207
  componentId: "sc-1gk05vk-3"
32087
- })(["margin:0;font-size:0.6rem;color:", ";font-family:'Press Start 2P',cursive;margin-bottom:8px;"], uiColors.yellow);
32208
+ })(["margin:0;font-size:0.6rem !important;color:", ";font-family:'Press Start 2P',cursive;margin-bottom:5px;"], uiColors.yellow);
32088
32209
  var GuideDescription = /*#__PURE__*/styled__default.p.withConfig({
32089
32210
  displayName: "InformationCenterTutorialsSection__GuideDescription",
32090
32211
  componentId: "sc-1gk05vk-4"
32091
- })(["margin:0;font-size:0.55rem;color:", ";font-family:'Press Start 2P',cursive;margin-bottom:8px;line-height:1.4;"], uiColors.lightGray);
32092
- var GuideCategory = /*#__PURE__*/styled__default.span.withConfig({
32212
+ })(["margin:0;font-size:0.5rem !important;color:", ";text-align:center;font-family:'Press Start 2P',cursive;margin-bottom:8px;line-height:1.4;"], uiColors.lightGray);
32213
+ var GuideCategory = /*#__PURE__*/styled__default.label.withConfig({
32093
32214
  displayName: "InformationCenterTutorialsSection__GuideCategory",
32094
32215
  componentId: "sc-1gk05vk-5"
32095
- })(["font-size:0.5rem;color:", ";font-family:'Press Start 2P',cursive;background:rgba(255,255,255,0.1);padding:4px 8px;border-radius:4px;"], uiColors.yellow);
32216
+ })(["font-size:0.5rem !important;font-family:'Press Start 2P',cursive;color:", " !important;line-height:1.4;&::before{content:'\uD83C\uDFF7\uFE0F';padding-right:6px;font-size:0.7rem;transform:translateY(-2px);display:inline-block;}"], uiColors.yellow);
32217
+ var GuideLanguage = /*#__PURE__*/styled__default.label.withConfig({
32218
+ displayName: "InformationCenterTutorialsSection__GuideLanguage",
32219
+ componentId: "sc-1gk05vk-6"
32220
+ })(["font-size:0.5rem !important;font-family:'Press Start 2P',cursive;color:", " !important;line-height:1.4;&::before{content:'\uD83C\uDF10';padding-right:6px;font-size:0.6rem;transform:translateY(-2px);display:inline-block;}"], uiColors.blue);
32221
+ var GuideLabelsContainer = /*#__PURE__*/styled__default.div.withConfig({
32222
+ displayName: "InformationCenterTutorialsSection__GuideLabelsContainer",
32223
+ componentId: "sc-1gk05vk-7"
32224
+ })(["display:flex;justify-content:space-between;padding:0 6px 6px;"]);
32096
32225
 
32097
32226
  var InformationCenter = function InformationCenter(_ref) {
32098
32227
  var itemsAtlasJSON = _ref.itemsAtlasJSON,
32099
32228
  itemsAtlasIMG = _ref.itemsAtlasIMG,
32100
32229
  entitiesAtlasJSON = _ref.entitiesAtlasJSON,
32101
32230
  entitiesAtlasIMG = _ref.entitiesAtlasIMG,
32231
+ iconsAtlasIMG = _ref.iconsAtlasIMG,
32232
+ iconsAtlasJSON = _ref.iconsAtlasJSON,
32102
32233
  _ref$faqItems = _ref.faqItems,
32103
32234
  faqItems = _ref$faqItems === void 0 ? [] : _ref$faqItems,
32104
32235
  _ref$bestiaryItems = _ref.bestiaryItems,
@@ -32131,6 +32262,8 @@ var InformationCenter = function InformationCenter(_ref) {
32131
32262
  bestiaryItems: bestiaryItems,
32132
32263
  itemsAtlasJSON: itemsAtlasJSON,
32133
32264
  itemsAtlasIMG: itemsAtlasIMG,
32265
+ iconsAtlasIMG: iconsAtlasIMG,
32266
+ iconsAtlasJSON: iconsAtlasJSON,
32134
32267
  entitiesAtlasJSON: entitiesAtlasJSON,
32135
32268
  entitiesAtlasIMG: entitiesAtlasIMG,
32136
32269
  initialSearchQuery: initialSearchQuery,