@rpg-engine/long-bow 0.8.230 → 0.8.232

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 (30) hide show
  1. package/dist/components/Quests/QuestInfo/QuestInfo.d.ts +3 -1
  2. package/dist/components/Quests/QuestInfo/QuestObjectivesSection.d.ts +8 -0
  3. package/dist/components/Quests/QuestInfo/QuestRequirementsSection.d.ts +8 -0
  4. package/dist/components/Quests/QuestInfo/QuestRewardsSection.d.ts +8 -0
  5. package/dist/components/Quests/QuestInfo/QuestSectionTypes.d.ts +8 -0
  6. package/dist/components/Quests/QuestList.d.ts +4 -5
  7. package/dist/components/Quests/QuestListRow.d.ts +15 -0
  8. package/dist/components/Tutorial/TutorialStepper.d.ts +2 -0
  9. package/dist/index.d.ts +1 -0
  10. package/dist/long-bow.cjs.development.js +473 -156
  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 +474 -158
  15. package/dist/long-bow.esm.js.map +1 -1
  16. package/package.json +1 -1
  17. package/src/components/Item/Cards/ItemTooltip.tsx +27 -16
  18. package/src/components/Quests/QuestInfo/QuestInfo.tsx +57 -68
  19. package/src/components/Quests/QuestInfo/QuestObjectivesSection.tsx +114 -0
  20. package/src/components/Quests/QuestInfo/QuestRequirementsSection.tsx +74 -0
  21. package/src/components/Quests/QuestInfo/QuestRewardsSection.tsx +128 -0
  22. package/src/components/Quests/QuestInfo/QuestSectionTypes.ts +8 -0
  23. package/src/components/Quests/QuestList.tsx +12 -87
  24. package/src/components/Quests/QuestListRow.tsx +178 -0
  25. package/src/components/Store/CartView.tsx +3 -2
  26. package/src/components/Store/MetadataCollector.tsx +28 -1
  27. package/src/components/Store/__test__/MetadataCollector.spec.tsx +12 -3
  28. package/src/components/Tutorial/TutorialStepper.tsx +2 -0
  29. package/src/components/shared/SimpleTooltip.tsx +32 -19
  30. package/src/index.tsx +1 -1
@@ -3738,26 +3738,35 @@ var ItemTooltip = function ItemTooltip(_ref) {
3738
3738
  atlasJSON = _ref.atlasJSON,
3739
3739
  equipmentSet = _ref.equipmentSet;
3740
3740
  var ref = React.useRef(null);
3741
+ var rafId = React.useRef(null);
3741
3742
  React.useEffect(function () {
3742
3743
  var current = ref.current;
3743
3744
  if (current) {
3744
3745
  var handleMouseMove = function handleMouseMove(event) {
3746
+ if (rafId.current !== null) return;
3745
3747
  var clientX = event.clientX,
3746
3748
  clientY = event.clientY;
3747
- // Adjust the position of the tooltip based on the mouse position
3748
- var rect = current.getBoundingClientRect();
3749
- var tooltipWidth = rect.width;
3750
- var tooltipHeight = rect.height;
3751
- var isOffScreenRight = clientX + tooltipWidth + offset > window.innerWidth;
3752
- var isOffScreenBottom = clientY + tooltipHeight + offset > window.innerHeight;
3753
- var x = isOffScreenRight ? clientX - tooltipWidth - offset : clientX + offset;
3754
- var y = isOffScreenBottom ? clientY - tooltipHeight - offset : clientY + offset;
3755
- current.style.transform = "translate(" + x + "px, " + y + "px)";
3756
- current.style.opacity = '1';
3749
+ rafId.current = requestAnimationFrame(function () {
3750
+ rafId.current = null;
3751
+ // Adjust the position of the tooltip based on the mouse position
3752
+ var rect = current.getBoundingClientRect();
3753
+ var tooltipWidth = rect.width;
3754
+ var tooltipHeight = rect.height;
3755
+ var isOffScreenRight = clientX + tooltipWidth + offset > window.innerWidth;
3756
+ var isOffScreenBottom = clientY + tooltipHeight + offset > window.innerHeight;
3757
+ var x = isOffScreenRight ? clientX - tooltipWidth - offset : clientX + offset;
3758
+ var y = isOffScreenBottom ? clientY - tooltipHeight - offset : clientY + offset;
3759
+ current.style.transform = "translate(" + x + "px, " + y + "px)";
3760
+ current.style.opacity = '1';
3761
+ });
3757
3762
  };
3758
3763
  window.addEventListener('mousemove', handleMouseMove);
3759
3764
  return function () {
3760
3765
  window.removeEventListener('mousemove', handleMouseMove);
3766
+ if (rafId.current !== null) {
3767
+ cancelAnimationFrame(rafId.current);
3768
+ rafId.current = null;
3769
+ }
3761
3770
  };
3762
3771
  }
3763
3772
  return;
@@ -5363,6 +5372,7 @@ var SimpleTooltip = function SimpleTooltip(_ref) {
5363
5372
  var tooltipRef = React.useRef(null);
5364
5373
  var triggerRef = React.useRef(null);
5365
5374
  var timeoutRef = React.useRef();
5375
+ var rafId = React.useRef(null);
5366
5376
  var calculatePosition = function calculatePosition() {
5367
5377
  if (!triggerRef.current || !tooltipRef.current) return;
5368
5378
  var triggerRect = triggerRef.current.getBoundingClientRect();
@@ -5414,15 +5424,21 @@ var SimpleTooltip = function SimpleTooltip(_ref) {
5414
5424
  };
5415
5425
  React.useEffect(function () {
5416
5426
  var handleMouseMove = function handleMouseMove(event) {
5417
- if (visible && tooltipRef.current && triggerRef.current) {
5418
- var tooltipRect = tooltipRef.current.getBoundingClientRect();
5419
- var triggerRect = triggerRef.current.getBoundingClientRect();
5420
- var isOutsideTooltip = event.clientX < tooltipRect.left || event.clientX > tooltipRect.right || event.clientY < tooltipRect.top || event.clientY > tooltipRect.bottom;
5421
- var isOutsideTrigger = event.clientX < triggerRect.left || event.clientX > triggerRect.right || event.clientY < triggerRect.top || event.clientY > triggerRect.bottom;
5422
- if (isOutsideTooltip && isOutsideTrigger) {
5423
- hideTooltip();
5427
+ if (rafId.current !== null) return;
5428
+ var clientX = event.clientX,
5429
+ clientY = event.clientY;
5430
+ rafId.current = requestAnimationFrame(function () {
5431
+ rafId.current = null;
5432
+ if (visible && tooltipRef.current && triggerRef.current) {
5433
+ var tooltipRect = tooltipRef.current.getBoundingClientRect();
5434
+ var triggerRect = triggerRef.current.getBoundingClientRect();
5435
+ var isOutsideTooltip = clientX < tooltipRect.left || clientX > tooltipRect.right || clientY < tooltipRect.top || clientY > tooltipRect.bottom;
5436
+ var isOutsideTrigger = clientX < triggerRect.left || clientX > triggerRect.right || clientY < triggerRect.top || clientY > triggerRect.bottom;
5437
+ if (isOutsideTooltip && isOutsideTrigger) {
5438
+ hideTooltip();
5439
+ }
5424
5440
  }
5425
- }
5441
+ });
5426
5442
  };
5427
5443
  var handleScroll = function handleScroll() {
5428
5444
  if (visible) {
@@ -5441,6 +5457,10 @@ var SimpleTooltip = function SimpleTooltip(_ref) {
5441
5457
  document.removeEventListener('mousemove', handleMouseMove);
5442
5458
  window.removeEventListener('scroll', handleScroll);
5443
5459
  window.removeEventListener('resize', handleResize);
5460
+ if (rafId.current !== null) {
5461
+ cancelAnimationFrame(rafId.current);
5462
+ rafId.current = null;
5463
+ }
5444
5464
  clearTimeout(timeoutRef.current);
5445
5465
  };
5446
5466
  }, [visible]);
@@ -15621,21 +15641,239 @@ var Container$E = /*#__PURE__*/styled__default.div.withConfig({
15621
15641
 
15622
15642
  var img$7 = 'data:image/png;base64,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';
15623
15643
 
15644
+ var QuestObjectivesSection = function QuestObjectivesSection(_ref) {
15645
+ var _ref$objectives = _ref.objectives,
15646
+ objectives = _ref$objectives === void 0 ? [] : _ref$objectives,
15647
+ entitiesAtlasJSON = _ref.entitiesAtlasJSON,
15648
+ entitiesAtlasIMG = _ref.entitiesAtlasIMG;
15649
+ if (!objectives.length) {
15650
+ return null;
15651
+ }
15652
+ return React__default.createElement(Section$4, null, React__default.createElement(SectionTitle$4, null, "Objectives"), objectives.map(function (objective, index) {
15653
+ if (objective.type === shared.QuestType.Kill) {
15654
+ var progress = (objective.killCount || 0) + "/" + objective.killCountTarget;
15655
+ var fill = Math.min((objective.killCount || 0) / Math.max(objective.killCountTarget || 1, 1), 1) * 100;
15656
+ return React__default.createElement(ObjectiveBlock, {
15657
+ key: objective.id || index
15658
+ }, (objective.creatures || objective.creatureKeys || []).map(function (creature) {
15659
+ var data = typeof creature === 'string' ? {
15660
+ key: creature,
15661
+ name: creature,
15662
+ texturePath: ''
15663
+ } : creature;
15664
+ return React__default.createElement(ObjectiveRow, {
15665
+ key: data.key
15666
+ }, entitiesAtlasJSON && entitiesAtlasIMG && data.texturePath && React__default.createElement(SpriteFromAtlas, {
15667
+ atlasJSON: entitiesAtlasJSON,
15668
+ atlasIMG: entitiesAtlasIMG,
15669
+ spriteKey: data.texturePath,
15670
+ width: 32,
15671
+ height: 32,
15672
+ imgScale: 1,
15673
+ centered: true
15674
+ }), React__default.createElement(ObjectiveText, null, data.name || data.key), React__default.createElement(ProgressText$1, null, progress));
15675
+ }), React__default.createElement(ProgressBar$2, null, React__default.createElement(ProgressFill$1, {
15676
+ style: {
15677
+ width: fill + "%"
15678
+ }
15679
+ })));
15680
+ }
15681
+ if (objective.type === shared.QuestType.Interaction) {
15682
+ return React__default.createElement(ObjectiveRow, {
15683
+ key: objective.id || index
15684
+ }, React__default.createElement(ObjectiveText, null, "Talk to ", objective.targetNPCkey || 'the quest contact'));
15685
+ }
15686
+ return null;
15687
+ }));
15688
+ };
15689
+ var Section$4 = /*#__PURE__*/styled__default.section.withConfig({
15690
+ displayName: "QuestObjectivesSection__Section",
15691
+ componentId: "sc-yzy6q8-0"
15692
+ })(["margin:10px 18px;"]);
15693
+ var SectionTitle$4 = /*#__PURE__*/styled__default.h2.withConfig({
15694
+ displayName: "QuestObjectivesSection__SectionTitle",
15695
+ componentId: "sc-yzy6q8-1"
15696
+ })(["color:", ";font-size:0.9rem;margin:0 0 8px;"], uiColors.yellow);
15697
+ var ObjectiveBlock = /*#__PURE__*/styled__default.div.withConfig({
15698
+ displayName: "QuestObjectivesSection__ObjectiveBlock",
15699
+ componentId: "sc-yzy6q8-2"
15700
+ })(["margin-bottom:8px;"]);
15701
+ var ObjectiveRow = /*#__PURE__*/styled__default.div.withConfig({
15702
+ displayName: "QuestObjectivesSection__ObjectiveRow",
15703
+ componentId: "sc-yzy6q8-3"
15704
+ })(["color:", ";display:flex;align-items:center;gap:8px;min-height:28px;font-size:0.75rem;"], uiColors.white);
15705
+ var ObjectiveText = /*#__PURE__*/styled__default.span.withConfig({
15706
+ displayName: "QuestObjectivesSection__ObjectiveText",
15707
+ componentId: "sc-yzy6q8-4"
15708
+ })(["flex:1;"]);
15709
+ var ProgressText$1 = /*#__PURE__*/styled__default.span.withConfig({
15710
+ displayName: "QuestObjectivesSection__ProgressText",
15711
+ componentId: "sc-yzy6q8-5"
15712
+ })(["color:", ";"], uiColors.yellow);
15713
+ var ProgressBar$2 = /*#__PURE__*/styled__default.div.withConfig({
15714
+ displayName: "QuestObjectivesSection__ProgressBar",
15715
+ componentId: "sc-yzy6q8-6"
15716
+ })(["height:6px;background:", ";border-radius:3px;overflow:hidden;margin-top:4px;"], uiColors.gray);
15717
+ var ProgressFill$1 = /*#__PURE__*/styled__default.div.withConfig({
15718
+ displayName: "QuestObjectivesSection__ProgressFill",
15719
+ componentId: "sc-yzy6q8-7"
15720
+ })(["height:100%;background:", ";"], uiColors.lightGreen);
15721
+
15722
+ var QuestRequirementsSection = function QuestRequirementsSection(_ref) {
15723
+ var _ref$objectives = _ref.objectives,
15724
+ objectives = _ref$objectives === void 0 ? [] : _ref$objectives,
15725
+ itemsAtlasJSON = _ref.itemsAtlasJSON,
15726
+ itemsAtlasIMG = _ref.itemsAtlasIMG;
15727
+ var items = objectives.filter(function (objective) {
15728
+ return objective.type === shared.QuestType.Interaction;
15729
+ }).flatMap(function (objective) {
15730
+ return objective.items || [];
15731
+ });
15732
+ if (!items.length) {
15733
+ return null;
15734
+ }
15735
+ return React__default.createElement(Section$5, null, React__default.createElement(SectionTitle$5, null, "Requirements"), items.map(function (item) {
15736
+ var hasQty = item.playerHasQty || 0;
15737
+ var isMet = hasQty >= item.qty;
15738
+ return React__default.createElement(RequirementRow, {
15739
+ key: item.itemKey,
15740
+ isMet: isMet
15741
+ }, itemsAtlasJSON && itemsAtlasIMG && item.texturePath && React__default.createElement(ItemInfoWrapper, {
15742
+ item: _extends({}, item, {
15743
+ key: item.itemKey,
15744
+ stackQty: item.qty
15745
+ }),
15746
+ atlasJSON: itemsAtlasJSON,
15747
+ atlasIMG: itemsAtlasIMG
15748
+ }, React__default.createElement(SpriteFromAtlas, {
15749
+ atlasJSON: itemsAtlasJSON,
15750
+ atlasIMG: itemsAtlasIMG,
15751
+ spriteKey: item.texturePath,
15752
+ width: 32,
15753
+ height: 32,
15754
+ imgScale: 1.5,
15755
+ centered: true
15756
+ })), React__default.createElement("span", null, hasQty, "/", item.qty, " ", item.name || item.itemKey));
15757
+ }));
15758
+ };
15759
+ var Section$5 = /*#__PURE__*/styled__default.section.withConfig({
15760
+ displayName: "QuestRequirementsSection__Section",
15761
+ componentId: "sc-cbw9sz-0"
15762
+ })(["margin:10px 18px;"]);
15763
+ var SectionTitle$5 = /*#__PURE__*/styled__default.h2.withConfig({
15764
+ displayName: "QuestRequirementsSection__SectionTitle",
15765
+ componentId: "sc-cbw9sz-1"
15766
+ })(["color:", ";font-size:0.9rem;margin:0 0 8px;"], uiColors.yellow);
15767
+ var RequirementRow = /*#__PURE__*/styled__default.div.withConfig({
15768
+ displayName: "QuestRequirementsSection__RequirementRow",
15769
+ componentId: "sc-cbw9sz-2"
15770
+ })(["color:", ";display:flex;align-items:center;gap:8px;min-height:34px;font-size:0.75rem;"], function (props) {
15771
+ return props.isMet ? uiColors.lightGreen : uiColors.red;
15772
+ });
15773
+
15774
+ var QuestRewardsSection = function QuestRewardsSection(_ref) {
15775
+ var _ref$rewards = _ref.rewards,
15776
+ rewards = _ref$rewards === void 0 ? [] : _ref$rewards,
15777
+ itemsAtlasJSON = _ref.itemsAtlasJSON,
15778
+ itemsAtlasIMG = _ref.itemsAtlasIMG,
15779
+ iconsAtlasJSON = _ref.iconsAtlasJSON,
15780
+ iconsAtlasIMG = _ref.iconsAtlasIMG;
15781
+ var items = rewards.flatMap(function (reward) {
15782
+ return reward.items || [];
15783
+ });
15784
+ var spells = rewards.flatMap(function (reward) {
15785
+ return reward.spells || [];
15786
+ });
15787
+ if (!items.length && !spells.length) {
15788
+ return null;
15789
+ }
15790
+ return React__default.createElement(Section$6, null, React__default.createElement(SectionTitle$6, null, "Rewards"), React__default.createElement(RewardGrid, null, items.map(function (item) {
15791
+ var _item$name;
15792
+ return React__default.createElement(RewardItem$1, {
15793
+ key: item.key + "-" + item.qty
15794
+ }, itemsAtlasJSON && itemsAtlasIMG && item.texturePath ? React__default.createElement(ItemInfoWrapper, {
15795
+ item: _extends({}, item, {
15796
+ key: item.key,
15797
+ stackQty: item.qty
15798
+ }),
15799
+ atlasJSON: itemsAtlasJSON,
15800
+ atlasIMG: itemsAtlasIMG
15801
+ }, React__default.createElement(SpriteFromAtlas, {
15802
+ atlasJSON: itemsAtlasJSON,
15803
+ atlasIMG: itemsAtlasIMG,
15804
+ spriteKey: item.texturePath,
15805
+ width: 32,
15806
+ height: 32,
15807
+ imgScale: 1.5,
15808
+ centered: true
15809
+ })) : React__default.createElement(FallbackIcon, null, ((_item$name = item.name) == null ? void 0 : _item$name[0]) || '?'), item.qty > 1 && React__default.createElement(QtyBadge, null, "x", item.qty), React__default.createElement(RewardName, null, item.name || item.key));
15810
+ }), spells.map(function (spell) {
15811
+ var _spell$name;
15812
+ return React__default.createElement(RewardItem$1, {
15813
+ key: spell.key,
15814
+ title: spell.name || spell.key
15815
+ }, iconsAtlasJSON && iconsAtlasIMG && spell.texturePath ? React__default.createElement(SpriteFromAtlas, {
15816
+ atlasJSON: iconsAtlasJSON,
15817
+ atlasIMG: iconsAtlasIMG,
15818
+ spriteKey: spell.texturePath,
15819
+ width: 32,
15820
+ height: 32,
15821
+ imgScale: 1.5,
15822
+ centered: true
15823
+ }) : React__default.createElement(FallbackIcon, null, ((_spell$name = spell.name) == null ? void 0 : _spell$name[0]) || '?'), React__default.createElement(RewardName, null, spell.name || spell.key));
15824
+ })));
15825
+ };
15826
+ var Section$6 = /*#__PURE__*/styled__default.section.withConfig({
15827
+ displayName: "QuestRewardsSection__Section",
15828
+ componentId: "sc-1eth6wx-0"
15829
+ })(["margin:10px 18px;"]);
15830
+ var SectionTitle$6 = /*#__PURE__*/styled__default.h2.withConfig({
15831
+ displayName: "QuestRewardsSection__SectionTitle",
15832
+ componentId: "sc-1eth6wx-1"
15833
+ })(["color:", ";font-size:0.9rem;margin:0 0 8px;"], uiColors.yellow);
15834
+ var RewardGrid = /*#__PURE__*/styled__default.div.withConfig({
15835
+ displayName: "QuestRewardsSection__RewardGrid",
15836
+ componentId: "sc-1eth6wx-2"
15837
+ })(["display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;"]);
15838
+ var RewardItem$1 = /*#__PURE__*/styled__default.div.withConfig({
15839
+ displayName: "QuestRewardsSection__RewardItem",
15840
+ componentId: "sc-1eth6wx-3"
15841
+ })(["position:relative;min-height:58px;color:", ";display:flex;flex-direction:column;align-items:center;gap:4px;font-size:0.65rem;"], uiColors.white);
15842
+ var FallbackIcon = /*#__PURE__*/styled__default.div.withConfig({
15843
+ displayName: "QuestRewardsSection__FallbackIcon",
15844
+ componentId: "sc-1eth6wx-4"
15845
+ })(["width:32px;height:32px;border:1px solid ", ";display:flex;align-items:center;justify-content:center;color:", ";"], uiColors.gray, uiColors.yellow);
15846
+ var QtyBadge = /*#__PURE__*/styled__default.span.withConfig({
15847
+ displayName: "QuestRewardsSection__QtyBadge",
15848
+ componentId: "sc-1eth6wx-5"
15849
+ })(["position:absolute;top:0;right:18px;background:", ";color:", ";border:1px solid ", ";padding:1px 4px;"], uiColors.darkGray, uiColors.yellow, uiColors.gray);
15850
+ var RewardName = /*#__PURE__*/styled__default.span.withConfig({
15851
+ displayName: "QuestRewardsSection__RewardName",
15852
+ componentId: "sc-1eth6wx-6"
15853
+ })(["text-align:center;"]);
15854
+
15624
15855
  var QuestInfo = function QuestInfo(_ref) {
15625
15856
  var quests = _ref.quests,
15626
15857
  onClose = _ref.onClose,
15627
15858
  buttons = _ref.buttons,
15628
15859
  onChangeQuest = _ref.onChangeQuest,
15629
- scale = _ref.scale;
15860
+ scale = _ref.scale,
15861
+ itemsAtlasJSON = _ref.itemsAtlasJSON,
15862
+ itemsAtlasIMG = _ref.itemsAtlasIMG,
15863
+ entitiesAtlasJSON = _ref.entitiesAtlasJSON,
15864
+ entitiesAtlasIMG = _ref.entitiesAtlasIMG,
15865
+ iconsAtlasJSON = _ref.iconsAtlasJSON,
15866
+ iconsAtlasIMG = _ref.iconsAtlasIMG;
15630
15867
  var _useState = React.useState(0),
15631
15868
  currentIndex = _useState[0],
15632
15869
  setCurrentIndex = _useState[1];
15633
15870
  var questsLength = quests.length - 1;
15871
+ var currentQuest = quests[currentIndex] || quests[0];
15634
15872
  React.useEffect(function () {
15635
- if (onChangeQuest) {
15636
- onChangeQuest(currentIndex, quests[currentIndex]._id);
15873
+ if (onChangeQuest && currentQuest) {
15874
+ onChangeQuest(currentIndex, currentQuest._id);
15637
15875
  }
15638
- }, [currentIndex]);
15876
+ }, [currentIndex, currentQuest]);
15639
15877
  var onLeftClick = function onLeftClick() {
15640
15878
  if (currentIndex === 0) setCurrentIndex(questsLength);else setCurrentIndex(function (index) {
15641
15879
  return index - 1;
@@ -15654,50 +15892,47 @@ var QuestInfo = function QuestInfo(_ref) {
15654
15892
  width: "730px",
15655
15893
  cancelDrag: ".equipment-container-body .arrow-selector",
15656
15894
  scale: scale
15657
- }, quests.length >= 2 ? React__default.createElement(QuestsContainer, null, currentIndex !== 0 && React__default.createElement(SelectArrow, {
15895
+ }, currentQuest && React__default.createElement(QuestsContainer, null, quests.length >= 2 && currentIndex !== 0 && React__default.createElement(SelectArrow, {
15658
15896
  direction: "left",
15659
15897
  onPointerDown: onLeftClick
15660
- }), currentIndex !== quests.length - 1 && React__default.createElement(SelectArrow, {
15898
+ }), quests.length >= 2 && currentIndex !== quests.length - 1 && React__default.createElement(SelectArrow, {
15661
15899
  direction: "right",
15662
15900
  onPointerDown: onRightClick
15663
15901
  }), React__default.createElement(QuestContainer, null, React__default.createElement(TitleContainer$1, {
15664
15902
  className: "drag-handler"
15665
15903
  }, React__default.createElement(Title$h, null, React__default.createElement(Thumbnail, {
15666
- src: quests[currentIndex].thumbnail || img$7
15667
- }), quests[currentIndex].title), React__default.createElement(QuestSplitDiv, null, React__default.createElement("hr", {
15668
- className: "golden"
15669
- }))), React__default.createElement(Content$3, null, React__default.createElement("p", null, quests[currentIndex].description)), React__default.createElement(QuestColumn, {
15670
- className: "dark-background",
15671
- justifyContent: "flex-end"
15672
- }, buttons && buttons.map(function (button, index) {
15673
- return React__default.createElement(Button, {
15674
- key: index,
15675
- onPointerDown: function onPointerDown() {
15676
- return button.onClick(quests[currentIndex]._id, quests[currentIndex].npcId);
15677
- },
15678
- disabled: button.disabled,
15679
- buttonType: exports.ButtonTypes.RPGUIButton,
15680
- id: "button-" + index
15681
- }, button.title);
15682
- })))) : React__default.createElement(QuestsContainer, null, React__default.createElement(QuestContainer, null, React__default.createElement(TitleContainer$1, {
15683
- className: "drag-handler"
15684
- }, React__default.createElement(Title$h, null, React__default.createElement(Thumbnail, {
15685
- src: quests[0].thumbnail || img$7
15686
- }), quests[0].title), React__default.createElement(QuestSplitDiv, null, React__default.createElement("hr", {
15904
+ src: currentQuest.thumbnail || img$7
15905
+ }), currentQuest.title), React__default.createElement(QuestSplitDiv, null, React__default.createElement("hr", {
15687
15906
  className: "golden"
15688
- }))), React__default.createElement(Content$3, null, React__default.createElement("p", null, quests[0].description)), React__default.createElement(QuestColumn, {
15907
+ }))), React__default.createElement(Content$3, null, React__default.createElement("p", null, currentQuest.description)), React__default.createElement(QuestObjectivesSection, {
15908
+ objectives: currentQuest.objectives,
15909
+ entitiesAtlasJSON: entitiesAtlasJSON,
15910
+ entitiesAtlasIMG: entitiesAtlasIMG
15911
+ }), React__default.createElement(QuestRequirementsSection, {
15912
+ objectives: currentQuest.objectives,
15913
+ itemsAtlasJSON: itemsAtlasJSON,
15914
+ itemsAtlasIMG: itemsAtlasIMG
15915
+ }), React__default.createElement(QuestRewardsSection, {
15916
+ rewards: currentQuest.rewards,
15917
+ itemsAtlasJSON: itemsAtlasJSON,
15918
+ itemsAtlasIMG: itemsAtlasIMG,
15919
+ iconsAtlasJSON: iconsAtlasJSON,
15920
+ iconsAtlasIMG: iconsAtlasIMG
15921
+ }), React__default.createElement(QuestColumn, {
15689
15922
  className: "dark-background",
15690
15923
  justifyContent: "flex-end"
15691
15924
  }, buttons && buttons.map(function (button, index) {
15692
- return React__default.createElement(Button, {
15925
+ return React__default.createElement(ButtonWrapper$3, {
15693
15926
  key: index,
15927
+ title: button.disabled ? button.disabledReason : undefined
15928
+ }, React__default.createElement(Button, {
15694
15929
  onPointerDown: function onPointerDown() {
15695
- return button.onClick(quests[0]._id, quests[0].npcId);
15930
+ return button.onClick(currentQuest._id, currentQuest.npcId);
15696
15931
  },
15697
15932
  disabled: button.disabled,
15698
15933
  buttonType: exports.ButtonTypes.RPGUIButton,
15699
15934
  id: "button-" + index
15700
- }, button.title);
15935
+ }, button.title));
15701
15936
  })))));
15702
15937
  };
15703
15938
  var QuestDraggableContainer = /*#__PURE__*/styled__default(DraggableContainer).withConfig({
@@ -15724,70 +15959,74 @@ var QuestColumn = /*#__PURE__*/styled__default(Column).withConfig({
15724
15959
  displayName: "QuestInfo__QuestColumn",
15725
15960
  componentId: "sc-1wccpiy-5"
15726
15961
  })(["padding-top:5px;margin-bottom:20px;display:flex;justify-content:space-evenly;"]);
15962
+ var ButtonWrapper$3 = /*#__PURE__*/styled__default.div.withConfig({
15963
+ displayName: "QuestInfo__ButtonWrapper",
15964
+ componentId: "sc-1wccpiy-6"
15965
+ })(["display:inline-flex;"]);
15727
15966
  var TitleContainer$1 = /*#__PURE__*/styled__default.div.withConfig({
15728
15967
  displayName: "QuestInfo__TitleContainer",
15729
- componentId: "sc-1wccpiy-6"
15968
+ componentId: "sc-1wccpiy-7"
15730
15969
  })(["width:100%;display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;margin-top:1rem;"]);
15731
15970
  var Title$h = /*#__PURE__*/styled__default.h1.withConfig({
15732
15971
  displayName: "QuestInfo__Title",
15733
- componentId: "sc-1wccpiy-7"
15972
+ componentId: "sc-1wccpiy-8"
15734
15973
  })(["color:white;z-index:22;font-size:", " !important;color:", " !important;"], uiFonts.size.medium, uiColors.yellow);
15735
15974
  var Thumbnail = /*#__PURE__*/styled__default.img.withConfig({
15736
15975
  displayName: "QuestInfo__Thumbnail",
15737
- componentId: "sc-1wccpiy-8"
15976
+ componentId: "sc-1wccpiy-9"
15738
15977
  })(["color:white;z-index:22;width:32px * 1.5;margin-right:0.5rem;position:relative;top:-4px;"]);
15739
15978
 
15740
- var QuestList = function QuestList(_ref) {
15741
- var quests = _ref.quests,
15742
- styles = _ref.styles;
15743
- return React__default.createElement(QuestListContainer, {
15744
- style: styles == null ? void 0 : styles.container
15745
- }, quests && quests.length > 0 ? quests.map(function (quest, i) {
15746
- var _formatQuestStatus;
15747
- return React__default.createElement(QuestCard, {
15748
- key: i,
15749
- style: styles == null ? void 0 : styles.card
15750
- }, React__default.createElement(QuestItem, null, React__default.createElement(Label$6, {
15751
- style: styles == null ? void 0 : styles.label
15752
- }, "Title:"), React__default.createElement(Value$2, {
15753
- style: styles == null ? void 0 : styles.value
15754
- }, formatQuestText(quest.title))), React__default.createElement(QuestItem, null, React__default.createElement(Label$6, {
15755
- style: styles == null ? void 0 : styles.label
15756
- }, "Status:"), React__default.createElement(Value$2, {
15757
- style: _extends({}, styles == null ? void 0 : styles.value, {
15758
- color: getQuestStatusColor(quest.status)
15759
- })
15760
- }, (_formatQuestStatus = formatQuestStatus(quest.status)) != null ? _formatQuestStatus : 'Unknown')), React__default.createElement(QuestItem, null, React__default.createElement(Label$6, {
15761
- style: styles == null ? void 0 : styles.label
15762
- }, "Description:"), React__default.createElement(Value$2, {
15763
- style: styles == null ? void 0 : styles.value
15764
- }, quest.description)));
15765
- }) : React__default.createElement(NoQuestContainer, null, React__default.createElement("p", null, "There are no ongoing quests")));
15979
+ var getProgressText = function getProgressText(quest) {
15980
+ var _objective$items;
15981
+ var objective = (quest.objectives || [])[0];
15982
+ if (!objective) {
15983
+ return null;
15984
+ }
15985
+ if (objective.type === shared.QuestType.Kill) {
15986
+ return (objective.killCount || 0) + "/" + objective.killCountTarget;
15987
+ }
15988
+ if (objective.type === shared.QuestType.Interaction && (_objective$items = objective.items) != null && _objective$items.length) {
15989
+ var item = objective.items[0];
15990
+ return "Bring " + (item.playerHasQty || 0) + "/" + item.qty;
15991
+ }
15992
+ return objective.type === shared.QuestType.Interaction && objective.targetNPCkey ? 'Talk' : null;
15993
+ };
15994
+ var QuestListRow = function QuestListRow(_ref) {
15995
+ var quest = _ref.quest,
15996
+ compact = _ref.compact,
15997
+ itemsAtlasJSON = _ref.itemsAtlasJSON,
15998
+ itemsAtlasIMG = _ref.itemsAtlasIMG;
15999
+ var rewardItems = (quest.rewards || []).flatMap(function (reward) {
16000
+ return reward.items || [];
16001
+ });
16002
+ var visibleRewards = rewardItems.slice(0, 6);
16003
+ var overflowCount = Math.max(rewardItems.length - visibleRewards.length, 0);
16004
+ var progressText = getProgressText(quest);
16005
+ return React__default.createElement(QuestCard, null, React__default.createElement(Header$d, null, React__default.createElement(Title$i, null, formatQuestText(quest.title)), React__default.createElement(Status, {
16006
+ style: {
16007
+ color: getQuestStatusColor(quest.status)
16008
+ }
16009
+ }, formatQuestStatus(quest.status) || 'Unknown')), !compact && React__default.createElement(React__default.Fragment, null, React__default.createElement(Description$5, null, quest.description), React__default.createElement(MetaRow$2, null, quest.status === shared.QuestStatus.Completed ? 'Completed' : progressText), !!visibleRewards.length && React__default.createElement(RewardStrip, null, visibleRewards.map(function (item) {
16010
+ var _item$name;
16011
+ return React__default.createElement(RewardIcon$1, {
16012
+ key: item.key + "-" + item.qty
16013
+ }, itemsAtlasJSON && itemsAtlasIMG && item.texturePath ? React__default.createElement(ItemInfoWrapper, {
16014
+ item: _extends({}, item, {
16015
+ stackQty: item.qty
16016
+ }),
16017
+ atlasJSON: itemsAtlasJSON,
16018
+ atlasIMG: itemsAtlasIMG
16019
+ }, React__default.createElement(SpriteFromAtlas, {
16020
+ atlasJSON: itemsAtlasJSON,
16021
+ atlasIMG: itemsAtlasIMG,
16022
+ spriteKey: item.texturePath,
16023
+ width: 24,
16024
+ height: 24,
16025
+ imgScale: 1,
16026
+ centered: true
16027
+ })) : React__default.createElement(FallbackIcon$1, null, ((_item$name = item.name) == null ? void 0 : _item$name[0]) || '?'));
16028
+ }), overflowCount > 0 && React__default.createElement(MoreRewards, null, "+", overflowCount, " more"))));
15766
16029
  };
15767
- var QuestListContainer = /*#__PURE__*/styled__default.div.withConfig({
15768
- displayName: "QuestList__QuestListContainer",
15769
- componentId: "sc-1c1y8sp-0"
15770
- })(["max-height:400px;padding:10px;border-radius:10px;font-size:0.7rem;"]);
15771
- var QuestCard = /*#__PURE__*/styled__default.div.withConfig({
15772
- displayName: "QuestList__QuestCard",
15773
- componentId: "sc-1c1y8sp-1"
15774
- })(["background-color:", ";padding:15px;margin-bottom:10px;border-radius:10px;border:1px solid ", ";display:flex;flex-direction:column;"], uiColors.darkGray, uiColors.gray);
15775
- var QuestItem = /*#__PURE__*/styled__default.div.withConfig({
15776
- displayName: "QuestList__QuestItem",
15777
- componentId: "sc-1c1y8sp-2"
15778
- })(["display:flex;margin-bottom:5px;flex-wrap:wrap;&:last-child{margin-bottom:0;}"]);
15779
- var Label$6 = /*#__PURE__*/styled__default.span.withConfig({
15780
- displayName: "QuestList__Label",
15781
- componentId: "sc-1c1y8sp-3"
15782
- })(["font-weight:bold;color:", " !important;margin-right:10px;"], uiColors.yellow);
15783
- var Value$2 = /*#__PURE__*/styled__default.span.withConfig({
15784
- displayName: "QuestList__Value",
15785
- componentId: "sc-1c1y8sp-4"
15786
- })(["flex-grow:1;color:", ";word-wrap:break-word;"], uiColors.white);
15787
- var NoQuestContainer = /*#__PURE__*/styled__default.div.withConfig({
15788
- displayName: "QuestList__NoQuestContainer",
15789
- componentId: "sc-1c1y8sp-5"
15790
- })(["text-align:center;p{margin-top:5px;color:", ";}"], uiColors.lightGray);
15791
16030
  var formatQuestText = function formatQuestText(text) {
15792
16031
  if (!text) return '';
15793
16032
  return text.split('-').map(function (word) {
@@ -15812,6 +16051,73 @@ var formatQuestStatus = function formatQuestStatus(status) {
15812
16051
  return c.toUpperCase();
15813
16052
  });
15814
16053
  };
16054
+ var QuestCard = /*#__PURE__*/styled__default.div.withConfig({
16055
+ displayName: "QuestListRow__QuestCard",
16056
+ componentId: "sc-s95wf6-0"
16057
+ })(["background-color:", ";padding:12px;margin-bottom:10px;border-radius:8px;border:1px solid ", ";"], uiColors.darkGray, uiColors.gray);
16058
+ var Header$d = /*#__PURE__*/styled__default.div.withConfig({
16059
+ displayName: "QuestListRow__Header",
16060
+ componentId: "sc-s95wf6-1"
16061
+ })(["display:flex;justify-content:space-between;gap:10px;"]);
16062
+ var Title$i = /*#__PURE__*/styled__default.span.withConfig({
16063
+ displayName: "QuestListRow__Title",
16064
+ componentId: "sc-s95wf6-2"
16065
+ })(["color:", ";font-weight:bold;"], uiColors.yellow);
16066
+ var Status = /*#__PURE__*/styled__default.span.withConfig({
16067
+ displayName: "QuestListRow__Status",
16068
+ componentId: "sc-s95wf6-3"
16069
+ })(["white-space:nowrap;"]);
16070
+ var Description$5 = /*#__PURE__*/styled__default.p.withConfig({
16071
+ displayName: "QuestListRow__Description",
16072
+ componentId: "sc-s95wf6-4"
16073
+ })(["color:", ";margin:8px 0;"], uiColors.white);
16074
+ var MetaRow$2 = /*#__PURE__*/styled__default.div.withConfig({
16075
+ displayName: "QuestListRow__MetaRow",
16076
+ componentId: "sc-s95wf6-5"
16077
+ })(["color:", ";font-size:0.7rem;margin-bottom:6px;"], uiColors.lightGreen);
16078
+ var RewardStrip = /*#__PURE__*/styled__default.div.withConfig({
16079
+ displayName: "QuestListRow__RewardStrip",
16080
+ componentId: "sc-s95wf6-6"
16081
+ })(["display:flex;align-items:center;gap:6px;"]);
16082
+ var RewardIcon$1 = /*#__PURE__*/styled__default.div.withConfig({
16083
+ displayName: "QuestListRow__RewardIcon",
16084
+ componentId: "sc-s95wf6-7"
16085
+ })(["width:24px;height:24px;"]);
16086
+ var FallbackIcon$1 = /*#__PURE__*/styled__default.div.withConfig({
16087
+ displayName: "QuestListRow__FallbackIcon",
16088
+ componentId: "sc-s95wf6-8"
16089
+ })(["width:24px;height:24px;border:1px solid ", ";color:", ";display:flex;align-items:center;justify-content:center;"], uiColors.gray, uiColors.yellow);
16090
+ var MoreRewards = /*#__PURE__*/styled__default.span.withConfig({
16091
+ displayName: "QuestListRow__MoreRewards",
16092
+ componentId: "sc-s95wf6-9"
16093
+ })(["color:", ";font-size:0.65rem;"], uiColors.lightGray);
16094
+
16095
+ var QuestList = function QuestList(_ref) {
16096
+ var quests = _ref.quests,
16097
+ compact = _ref.compact,
16098
+ styles = _ref.styles,
16099
+ itemsAtlasJSON = _ref.itemsAtlasJSON,
16100
+ itemsAtlasIMG = _ref.itemsAtlasIMG;
16101
+ return React__default.createElement(QuestListContainer, {
16102
+ style: styles == null ? void 0 : styles.container
16103
+ }, quests && quests.length > 0 ? quests.map(function (quest, i) {
16104
+ return React__default.createElement(QuestListRow, {
16105
+ key: quest._id || i,
16106
+ quest: quest,
16107
+ compact: compact,
16108
+ itemsAtlasJSON: itemsAtlasJSON,
16109
+ itemsAtlasIMG: itemsAtlasIMG
16110
+ });
16111
+ }) : React__default.createElement(NoQuestContainer, null, React__default.createElement("p", null, "There are no ongoing quests")));
16112
+ };
16113
+ var QuestListContainer = /*#__PURE__*/styled__default.div.withConfig({
16114
+ displayName: "QuestList__QuestListContainer",
16115
+ componentId: "sc-1c1y8sp-0"
16116
+ })(["max-height:400px;padding:10px;border-radius:10px;font-size:0.7rem;"]);
16117
+ var NoQuestContainer = /*#__PURE__*/styled__default.div.withConfig({
16118
+ displayName: "QuestList__NoQuestContainer",
16119
+ componentId: "sc-1c1y8sp-1"
16120
+ })(["text-align:center;p{margin-top:5px;color:", ";}"], uiColors.lightGray);
15815
16121
 
15816
16122
  var InputRadio = function InputRadio(_ref) {
15817
16123
  var name = _ref.name,
@@ -15864,9 +16170,9 @@ var RadioSelectCard = function RadioSelectCard(_ref) {
15864
16170
  onClick: onClick,
15865
16171
  "data-testid": testId,
15866
16172
  type: "button"
15867
- }, icon && React__default.createElement(IconWrap, null, icon), React__default.createElement(Body, null, React__default.createElement(Label$7, {
16173
+ }, icon && React__default.createElement(IconWrap, null, icon), React__default.createElement(Body, null, React__default.createElement(Label$6, {
15868
16174
  "$active": active
15869
- }, label), description && React__default.createElement(Description$5, null, description)), badge && React__default.createElement(Badge, {
16175
+ }, label), description && React__default.createElement(Description$6, null, description)), badge && React__default.createElement(Badge, {
15870
16176
  "$active": active
15871
16177
  }, badge));
15872
16178
  };
@@ -15898,14 +16204,14 @@ var Body = /*#__PURE__*/styled__default.div.withConfig({
15898
16204
  displayName: "RadioSelectCard__Body",
15899
16205
  componentId: "sc-12jrcz1-2"
15900
16206
  })(["flex:1 !important;min-width:0 !important;display:flex !important;flex-direction:column !important;gap:0.2rem !important;"]);
15901
- var Label$7 = /*#__PURE__*/styled__default.span.withConfig({
16207
+ var Label$6 = /*#__PURE__*/styled__default.span.withConfig({
15902
16208
  displayName: "RadioSelectCard__Label",
15903
16209
  componentId: "sc-12jrcz1-3"
15904
16210
  })(["font-size:0.72rem !important;font-weight:bold !important;color:", " !important;text-transform:uppercase !important;letter-spacing:0.8px !important;line-height:1.2 !important;"], function (_ref7) {
15905
16211
  var $active = _ref7.$active;
15906
16212
  return $active ? '#f59e0b' : 'rgba(255, 255, 255, 0.9)';
15907
16213
  });
15908
- var Description$5 = /*#__PURE__*/styled__default.span.withConfig({
16214
+ var Description$6 = /*#__PURE__*/styled__default.span.withConfig({
15909
16215
  displayName: "RadioSelectCard__Description",
15910
16216
  componentId: "sc-12jrcz1-4"
15911
16217
  })(["font-size:0.62rem !important;color:rgba(255,255,255,0.45) !important;line-height:1.4 !important;"]);
@@ -16438,11 +16744,11 @@ var SkillInfoModal = function SkillInfoModal(_ref) {
16438
16744
  onPointerDown: onClose
16439
16745
  }), React__default.createElement(ModalContainer$7, null, React__default.createElement(ModalContent$7, {
16440
16746
  onPointerDown: stopPropagation
16441
- }, React__default.createElement(Header$d, null, React__default.createElement(Title$i, {
16747
+ }, React__default.createElement(Header$e, null, React__default.createElement(Title$j, {
16442
16748
  "$color": info.color
16443
16749
  }, info.name), React__default.createElement(CloseButton$g, {
16444
16750
  onPointerDown: onClose
16445
- }, React__default.createElement(fa.FaTimes, null))), React__default.createElement(Section$4, null, React__default.createElement(Label$8, null, "What it does"), React__default.createElement(Text$1, null, info.description)), React__default.createElement(Section$4, null, React__default.createElement(Label$8, null, "How to train"), React__default.createElement(Text$1, null, info.howToTrain)), info.notes && React__default.createElement(Section$4, null, React__default.createElement(Label$8, null, "Notes"), React__default.createElement(Text$1, null, info.notes)))));
16751
+ }, React__default.createElement(fa.FaTimes, null))), React__default.createElement(Section$7, null, React__default.createElement(Label$7, null, "What it does"), React__default.createElement(Text$1, null, info.description)), React__default.createElement(Section$7, null, React__default.createElement(Label$7, null, "How to train"), React__default.createElement(Text$1, null, info.howToTrain)), info.notes && React__default.createElement(Section$7, null, React__default.createElement(Label$7, null, "Notes"), React__default.createElement(Text$1, null, info.notes)))));
16446
16752
  };
16447
16753
  var Overlay$9 = /*#__PURE__*/styled__default.div.withConfig({
16448
16754
  displayName: "SkillInfoModal__Overlay",
@@ -16456,11 +16762,11 @@ var ModalContent$7 = /*#__PURE__*/styled__default.div.withConfig({
16456
16762
  displayName: "SkillInfoModal__ModalContent",
16457
16763
  componentId: "sc-pqkzdj-2"
16458
16764
  })(["background:#1a1a2e;border:2px solid #f59e0b;border-radius:8px;padding:20px 24px 24px;width:340px;max-width:90%;max-height:80dvh;overflow-y:auto;display:flex;flex-direction:column;gap:14px;pointer-events:auto;animation:scaleIn 0.15s ease-out;@keyframes scaleIn{from{transform:scale(0.85);opacity:0;}to{transform:scale(1);opacity:1;}}"]);
16459
- var Header$d = /*#__PURE__*/styled__default.div.withConfig({
16765
+ var Header$e = /*#__PURE__*/styled__default.div.withConfig({
16460
16766
  displayName: "SkillInfoModal__Header",
16461
16767
  componentId: "sc-pqkzdj-3"
16462
16768
  })(["display:flex;align-items:center;gap:8px;"]);
16463
- var Title$i = /*#__PURE__*/styled__default.h3.withConfig({
16769
+ var Title$j = /*#__PURE__*/styled__default.h3.withConfig({
16464
16770
  displayName: "SkillInfoModal__Title",
16465
16771
  componentId: "sc-pqkzdj-4"
16466
16772
  })(["margin:0;flex:1;font-family:'Press Start 2P',cursive;font-size:0.65rem;color:", ";"], function (_ref2) {
@@ -16471,11 +16777,11 @@ var CloseButton$g = /*#__PURE__*/styled__default.button.withConfig({
16471
16777
  displayName: "SkillInfoModal__CloseButton",
16472
16778
  componentId: "sc-pqkzdj-5"
16473
16779
  })(["background:none;border:none;color:rgba(255,255,255,0.6);cursor:pointer;font-size:1rem;padding:4px;display:flex;align-items:center;pointer-events:auto;&:hover{color:#ffffff;}"]);
16474
- var Section$4 = /*#__PURE__*/styled__default.div.withConfig({
16780
+ var Section$7 = /*#__PURE__*/styled__default.div.withConfig({
16475
16781
  displayName: "SkillInfoModal__Section",
16476
16782
  componentId: "sc-pqkzdj-6"
16477
16783
  })(["display:flex;flex-direction:column;gap:6px;"]);
16478
- var Label$8 = /*#__PURE__*/styled__default.span.withConfig({
16784
+ var Label$7 = /*#__PURE__*/styled__default.span.withConfig({
16479
16785
  displayName: "SkillInfoModal__Label",
16480
16786
  componentId: "sc-pqkzdj-7"
16481
16787
  })(["font-size:0.5rem;font-weight:bold;text-transform:uppercase;letter-spacing:0.05em;color:rgba(255,255,255,0.45);"]);
@@ -16788,7 +17094,7 @@ var SpellInfo$1 = function SpellInfo(_ref) {
16788
17094
  castingType = spell.castingType,
16789
17095
  cooldown = spell.cooldown,
16790
17096
  maxDistanceGrid = spell.maxDistanceGrid;
16791
- return React__default.createElement(Container$G, null, React__default.createElement(Header$e, null, React__default.createElement("div", null, React__default.createElement(Title$j, null, name), React__default.createElement(Type$1, null, magicWords))), React__default.createElement(Statistic$1, null, React__default.createElement("div", {
17097
+ return React__default.createElement(Container$G, null, React__default.createElement(Header$f, null, React__default.createElement("div", null, React__default.createElement(Title$k, null, name), React__default.createElement(Type$1, null, magicWords))), React__default.createElement(Statistic$1, null, React__default.createElement("div", {
16792
17098
  className: "label"
16793
17099
  }, "Casting Type:"), React__default.createElement("div", {
16794
17100
  className: "value"
@@ -16812,13 +17118,13 @@ var SpellInfo$1 = function SpellInfo(_ref) {
16812
17118
  className: "label"
16813
17119
  }, "Required Item:"), React__default.createElement("div", {
16814
17120
  className: "value"
16815
- }, requiredItem))), React__default.createElement(Description$6, null, description));
17121
+ }, requiredItem))), React__default.createElement(Description$7, null, description));
16816
17122
  };
16817
17123
  var Container$G = /*#__PURE__*/styled__default.div.withConfig({
16818
17124
  displayName: "SpellInfo__Container",
16819
17125
  componentId: "sc-4hbw3q-0"
16820
17126
  })(["color:white;background-color:#222;border-radius:5px;padding:0.5rem;font-size:", ";border:3px solid ", ";height:max-content;width:30rem;@media (max-width:580px){width:80vw;}"], uiFonts.size.small, uiColors.lightGray);
16821
- var Title$j = /*#__PURE__*/styled__default.div.withConfig({
17127
+ var Title$k = /*#__PURE__*/styled__default.div.withConfig({
16822
17128
  displayName: "SpellInfo__Title",
16823
17129
  componentId: "sc-4hbw3q-1"
16824
17130
  })(["font-size:", ";font-weight:bold;margin-bottom:0.5rem;display:flex;align-items:center;margin:0;"], uiFonts.size.medium);
@@ -16826,11 +17132,11 @@ var Type$1 = /*#__PURE__*/styled__default.div.withConfig({
16826
17132
  displayName: "SpellInfo__Type",
16827
17133
  componentId: "sc-4hbw3q-2"
16828
17134
  })(["font-size:", ";margin-top:0.2rem;color:", ";"], uiFonts.size.small, uiColors.lightGray);
16829
- var Description$6 = /*#__PURE__*/styled__default.div.withConfig({
17135
+ var Description$7 = /*#__PURE__*/styled__default.div.withConfig({
16830
17136
  displayName: "SpellInfo__Description",
16831
17137
  componentId: "sc-4hbw3q-3"
16832
17138
  })(["margin-top:1.5rem;font-size:", ";color:", ";font-style:italic;"], uiFonts.size.small, uiColors.lightGray);
16833
- var Header$e = /*#__PURE__*/styled__default.div.withConfig({
17139
+ var Header$f = /*#__PURE__*/styled__default.div.withConfig({
16834
17140
  displayName: "SpellInfo__Header",
16835
17141
  componentId: "sc-4hbw3q-4"
16836
17142
  })(["display:flex;align-items:center;justify-content:space-between;margin-bottom:0.5rem;"]);
@@ -17057,9 +17363,9 @@ var Spell = function Spell(_ref) {
17057
17363
  imgScale: IMAGE_SCALE,
17058
17364
  containerStyle: CONTAINER_STYLE,
17059
17365
  centered: true
17060
- })), React__default.createElement(Info, null, React__default.createElement(Title$k, null, React__default.createElement("span", null, name), React__default.createElement("span", {
17366
+ })), React__default.createElement(Info, null, React__default.createElement(Title$l, null, React__default.createElement("span", null, name), React__default.createElement("span", {
17061
17367
  className: "spell"
17062
- }, "(", magicWords, ")")), React__default.createElement(Description$7, null, description)), React__default.createElement(Divider$2, null), React__default.createElement(Cost, null, React__default.createElement("span", null, "Mana cost:"), React__default.createElement("span", {
17368
+ }, "(", magicWords, ")")), React__default.createElement(Description$8, null, description)), React__default.createElement(Divider$2, null), React__default.createElement(Cost, null, React__default.createElement("span", null, "Mana cost:"), React__default.createElement("span", {
17063
17369
  className: "mana"
17064
17370
  }, manaCost))));
17065
17371
  };
@@ -17078,11 +17384,11 @@ var Info = /*#__PURE__*/styled__default.span.withConfig({
17078
17384
  displayName: "Spell__Info",
17079
17385
  componentId: "sc-j96fa2-2"
17080
17386
  })(["width:0;flex:1;@media (orientation:portrait){display:none;}"]);
17081
- var Title$k = /*#__PURE__*/styled__default.p.withConfig({
17387
+ var Title$l = /*#__PURE__*/styled__default.p.withConfig({
17082
17388
  displayName: "Spell__Title",
17083
17389
  componentId: "sc-j96fa2-3"
17084
17390
  })(["display:flex;flex-wrap:wrap;align-items:center;margin-bottom:5px;margin:0;span{font-size:", " !important;font-weight:bold !important;color:", " !important;margin-right:0.5rem;}.spell{font-size:", " !important;font-weight:normal !important;color:", " !important;}"], uiFonts.size.medium, uiColors.yellow, uiFonts.size.small, uiColors.lightGray);
17085
- var Description$7 = /*#__PURE__*/styled__default.div.withConfig({
17391
+ var Description$8 = /*#__PURE__*/styled__default.div.withConfig({
17086
17392
  displayName: "Spell__Description",
17087
17393
  componentId: "sc-j96fa2-4"
17088
17394
  })(["font-size:", " !important;line-height:1.1 !important;"], uiFonts.size.small);
@@ -17143,7 +17449,7 @@ var Spellbook = function Spellbook(_ref) {
17143
17449
  height: "inherit",
17144
17450
  cancelDrag: "#spellbook-search, #shortcuts_list, .spell",
17145
17451
  scale: scale
17146
- }, React__default.createElement(Container$K, null, React__default.createElement(Title$l, null, "Learned Spells"), React__default.createElement(ShortcutsSetter, {
17452
+ }, React__default.createElement(Container$K, null, React__default.createElement(Title$m, null, "Learned Spells"), React__default.createElement(ShortcutsSetter, {
17147
17453
  setSettingShortcutIndex: setSettingShortcutIndex,
17148
17454
  settingShortcutIndex: settingShortcutIndex,
17149
17455
  shortcuts: shortcuts,
@@ -17176,7 +17482,7 @@ var Spellbook = function Spellbook(_ref) {
17176
17482
  }, spell)));
17177
17483
  }))));
17178
17484
  };
17179
- var Title$l = /*#__PURE__*/styled__default.h1.withConfig({
17485
+ var Title$m = /*#__PURE__*/styled__default.h1.withConfig({
17180
17486
  displayName: "Spellbook__Title",
17181
17487
  componentId: "sc-r02nfq-0"
17182
17488
  })(["font-size:", " !important;margin-bottom:0 !important;"], uiFonts.size.large);
@@ -37596,7 +37902,7 @@ var PurchaseSuccess = function PurchaseSuccess(_ref) {
37596
37902
  key: i,
37597
37903
  "$i": i
37598
37904
  });
37599
- })), React__default.createElement(Header$f, null, React__default.createElement(TrophyArea, null, React__default.createElement(TrophyIcon, null, React__default.createElement(Sparkle.Sparkle, null))), React__default.createElement(Title$m, null, "PURCHASE COMPLETE!"), React__default.createElement(Subtitle$2, null, "Your items are ready")), React__default.createElement(ItemsList, null, items.map(function (item, i) {
37905
+ })), React__default.createElement(Header$g, null, React__default.createElement(TrophyArea, null, React__default.createElement(TrophyIcon, null, React__default.createElement(Sparkle.Sparkle, null))), React__default.createElement(Title$n, null, "PURCHASE COMPLETE!"), React__default.createElement(Subtitle$2, null, "Your items are ready")), React__default.createElement(ItemsList, null, items.map(function (item, i) {
37600
37906
  var _item$metadata;
37601
37907
  var isCharSkin = item.metadataType === shared.MetadataType.CharacterSkin;
37602
37908
  var spriteKey = isCharSkin && (_item$metadata = item.metadata) != null && _item$metadata.selectedSkinTextureKey ? item.metadata.selectedSkinTextureKey + "/down/standing/0.png" : item.texturePath;
@@ -37643,7 +37949,7 @@ var Spark = /*#__PURE__*/styled__default.div.withConfig({
37643
37949
  }, function (p) {
37644
37950
  return p.$i * 0.2;
37645
37951
  });
37646
- var Header$f = /*#__PURE__*/styled__default.div.withConfig({
37952
+ var Header$g = /*#__PURE__*/styled__default.div.withConfig({
37647
37953
  displayName: "PurchaseSuccess__Header",
37648
37954
  componentId: "sc-18z5q21-3"
37649
37955
  })(["display:flex;flex-direction:column;align-items:center;gap:0.5rem;"]);
@@ -37655,7 +37961,7 @@ var TrophyIcon = /*#__PURE__*/styled__default.div.withConfig({
37655
37961
  displayName: "PurchaseSuccess__TrophyIcon",
37656
37962
  componentId: "sc-18z5q21-5"
37657
37963
  })(["width:64px;height:64px;border-radius:50%;background:rgba(245,158,11,0.15);border:2px solid #f59e0b;display:flex;align-items:center;justify-content:center;animation:", " 2s ease-in-out infinite;svg{font-size:1.75rem;color:#f59e0b;}"], glowPulse);
37658
- var Title$m = /*#__PURE__*/styled__default.h2.withConfig({
37964
+ var Title$n = /*#__PURE__*/styled__default.h2.withConfig({
37659
37965
  displayName: "PurchaseSuccess__Title",
37660
37966
  componentId: "sc-18z5q21-6"
37661
37967
  })(["font-family:'Press Start 2P',cursive;font-size:0.9rem;color:#fef08a;margin:0;text-shadow:0 0 8px rgba(245,158,11,0.6);"]);
@@ -37705,7 +38011,7 @@ var MetadataDisplay = function MetadataDisplay(_ref) {
37705
38011
  metadata = _ref.metadata;
37706
38012
  switch (type) {
37707
38013
  case shared.MetadataType.CharacterSkin:
37708
- return React__default.createElement(MetadataInfo, null, React__default.createElement(MetadataLabel, null, React__default.createElement(InfoBox.InfoBox, null), React__default.createElement("span", null, "Skin:")), React__default.createElement(MetadataValue, null, metadata.selectedSkinName || 'Custom skin'));
38014
+ return React__default.createElement(MetadataInfo, null, React__default.createElement(MetadataLabel, null, React__default.createElement(InfoBox.InfoBox, null), React__default.createElement("span", null, "Skin:")), React__default.createElement(MetadataValue, null, metadata.selectedSkinName || metadata.selectedSkin || 'Custom skin'));
37709
38015
  default:
37710
38016
  return null;
37711
38017
  }
@@ -37818,26 +38124,27 @@ var CartView = function CartView(_ref2) {
37818
38124
  onClose: onCloseStore != null ? onCloseStore : onClose
37819
38125
  });
37820
38126
  }
37821
- return React__default.createElement(Container$M, null, React__default.createElement(Header$g, null, React__default.createElement(Title$n, null, "Shopping Cart (", cartItems.reduce(function (s, ci) {
38127
+ return React__default.createElement(Container$M, null, React__default.createElement(Header$h, null, React__default.createElement(Title$o, null, "Shopping Cart (", cartItems.reduce(function (s, ci) {
37822
38128
  return s + ci.quantity;
37823
38129
  }, 0), ")"), React__default.createElement(CloseButton$i, {
37824
38130
  onPointerDown: onClose
37825
38131
  }, React__default.createElement(Cancel.Cancel, null))), React__default.createElement(MainContent$1, null, cartItems.length === 0 ? React__default.createElement(EmptyCart, null, React__default.createElement(Box.Box, null), "Your cart is empty") : React__default.createElement(CartItems, null, cartItems.map(function (cartItem) {
37826
- var _cartItem$metadata, _cartItem$metadata2, _cartItem$item$region2, _cartItem$item$region3;
38132
+ var _cartItem$metadata$se, _cartItem$metadata, _cartItem$metadata2, _cartItem$metadata3, _cartItem$item$region2, _cartItem$item$region3;
37827
38133
  var getSpriteKey = function getSpriteKey(textureKey) {
37828
38134
  return textureKey + '/down/standing/0.png';
37829
38135
  };
38136
+ var selectedSkinTextureKey = (_cartItem$metadata$se = (_cartItem$metadata = cartItem.metadata) == null ? void 0 : _cartItem$metadata.selectedSkinTextureKey) != null ? _cartItem$metadata$se : (_cartItem$metadata2 = cartItem.metadata) == null ? void 0 : _cartItem$metadata2.selectedSkin;
37830
38137
  return React__default.createElement(CartItemRow, {
37831
38138
  key: cartItem.item.key
37832
38139
  }, React__default.createElement(ItemIconContainer, null, React__default.createElement(SpriteFromAtlas, {
37833
38140
  atlasJSON: cartItem.item.metadataType === shared.MetadataType.CharacterSkin ? characterAtlasJSON : atlasJSON,
37834
38141
  atlasIMG: cartItem.item.metadataType === shared.MetadataType.CharacterSkin ? img$9 : atlasIMG,
37835
- spriteKey: cartItem.item.metadataType === shared.MetadataType.CharacterSkin && (_cartItem$metadata = cartItem.metadata) != null && _cartItem$metadata.selectedSkinTextureKey ? getSpriteKey(cartItem.metadata.selectedSkinTextureKey) : cartItem.item.texturePath,
38142
+ spriteKey: cartItem.item.metadataType === shared.MetadataType.CharacterSkin && selectedSkinTextureKey ? getSpriteKey(selectedSkinTextureKey) : cartItem.item.texturePath,
37836
38143
  width: 24,
37837
38144
  height: 24,
37838
38145
  imgScale: 1.5,
37839
38146
  centered: true
37840
- })), React__default.createElement(ItemDetails$4, null, React__default.createElement(ItemName$6, null, cartItem.item.name), ((_cartItem$metadata2 = cartItem.metadata) == null ? void 0 : _cartItem$metadata2.inputValue) && React__default.createElement(CartMeta, null, cartItem.metadata.inputValue), React__default.createElement(ItemInfo$2, null, React__default.createElement("span", null, currencySymbol, formatPrice((_cartItem$item$region2 = cartItem.item.regionalPrice) != null ? _cartItem$item$region2 : cartItem.item.price)), React__default.createElement("span", null, "\xD7"), React__default.createElement("span", null, cartItem.quantity), React__default.createElement("span", null, "="), React__default.createElement("span", null, currencySymbol, formatPrice(((_cartItem$item$region3 = cartItem.item.regionalPrice) != null ? _cartItem$item$region3 : cartItem.item.price) * cartItem.quantity))), cartItem.metadata && cartItem.item.metadataType && React__default.createElement(MetadataDisplay, {
38147
+ })), React__default.createElement(ItemDetails$4, null, React__default.createElement(ItemName$6, null, cartItem.item.name), ((_cartItem$metadata3 = cartItem.metadata) == null ? void 0 : _cartItem$metadata3.inputValue) && React__default.createElement(CartMeta, null, cartItem.metadata.inputValue), React__default.createElement(ItemInfo$2, null, React__default.createElement("span", null, currencySymbol, formatPrice((_cartItem$item$region2 = cartItem.item.regionalPrice) != null ? _cartItem$item$region2 : cartItem.item.price)), React__default.createElement("span", null, "\xD7"), React__default.createElement("span", null, cartItem.quantity), React__default.createElement("span", null, "="), React__default.createElement("span", null, currencySymbol, formatPrice(((_cartItem$item$region3 = cartItem.item.regionalPrice) != null ? _cartItem$item$region3 : cartItem.item.price) * cartItem.quantity))), cartItem.metadata && cartItem.item.metadataType && React__default.createElement(MetadataDisplay, {
37841
38148
  type: cartItem.item.metadataType,
37842
38149
  metadata: cartItem.metadata
37843
38150
  })), React__default.createElement(CTAButton, {
@@ -37865,11 +38172,11 @@ var Container$M = /*#__PURE__*/styled__default.div.withConfig({
37865
38172
  displayName: "CartView__Container",
37866
38173
  componentId: "sc-ydtyl1-0"
37867
38174
  })(["display:flex;flex-direction:column;width:100%;height:100%;padding:1rem;overflow:hidden;box-sizing:border-box;@media (max-width:480px){padding:0.75rem 0.5rem;}"]);
37868
- var Header$g = /*#__PURE__*/styled__default.div.withConfig({
38175
+ var Header$h = /*#__PURE__*/styled__default.div.withConfig({
37869
38176
  displayName: "CartView__Header",
37870
38177
  componentId: "sc-ydtyl1-1"
37871
38178
  })(["display:flex;justify-content:space-between;align-items:center;flex-shrink:0;"]);
37872
- var Title$n = /*#__PURE__*/styled__default.h2.withConfig({
38179
+ var Title$o = /*#__PURE__*/styled__default.h2.withConfig({
37873
38180
  displayName: "CartView__Title",
37874
38181
  componentId: "sc-ydtyl1-2"
37875
38182
  })(["font-family:'Press Start 2P',cursive;font-size:1rem;color:#ffffff;margin:0;"]);
@@ -38403,6 +38710,17 @@ function uuidv4() {
38403
38710
  });
38404
38711
  }
38405
38712
 
38713
+ var getCharacterSkinMetadata = function getCharacterSkinMetadata(selectedSkinTextureKey, availableCharacters) {
38714
+ var _selectedSkin$name;
38715
+ var selectedSkin = availableCharacters.find(function (character) {
38716
+ return character.textureKey === selectedSkinTextureKey;
38717
+ });
38718
+ return {
38719
+ selectedSkin: selectedSkinTextureKey,
38720
+ selectedSkinName: (_selectedSkin$name = selectedSkin == null ? void 0 : selectedSkin.name) != null ? _selectedSkin$name : selectedSkinTextureKey,
38721
+ selectedSkinTextureKey: selectedSkinTextureKey
38722
+ };
38723
+ };
38406
38724
  var MetadataCollector = function MetadataCollector(_ref) {
38407
38725
  var metadataType = _ref.metadataType,
38408
38726
  config = _ref.config,
@@ -38443,9 +38761,7 @@ var MetadataCollector = function MetadataCollector(_ref) {
38443
38761
  isOpen: true,
38444
38762
  onClose: handleCancel,
38445
38763
  onConfirm: function onConfirm(selectedSkin) {
38446
- return handleCollect({
38447
- selectedSkin: selectedSkin
38448
- });
38764
+ return handleCollect(getCharacterSkinMetadata(selectedSkin, config.availableCharacters || []));
38449
38765
  },
38450
38766
  availableCharacters: config.availableCharacters || [],
38451
38767
  atlasJSON: config.atlasJSON,
@@ -38500,7 +38816,7 @@ var PaymentMethodModal = function PaymentMethodModal(_ref) {
38500
38816
  onClick: stopPropagation,
38501
38817
  onTouchStart: stopPropagation,
38502
38818
  onPointerDown: stopPropagation
38503
- }, React__default.createElement(Header$h, null, React__default.createElement(Title$o, null, "How would you like to pay?"), React__default.createElement(CloseButton$j, {
38819
+ }, React__default.createElement(Header$i, null, React__default.createElement(Title$p, null, "How would you like to pay?"), React__default.createElement(CloseButton$j, {
38504
38820
  onPointerDown: onClose,
38505
38821
  "aria-label": "Close"
38506
38822
  }, React__default.createElement(Cancel.Cancel, null))), React__default.createElement(Options$1, null, React__default.createElement(RadioOption$2, {
@@ -38542,11 +38858,11 @@ var ModalContent$8 = /*#__PURE__*/styled__default.div.withConfig({
38542
38858
  displayName: "PaymentMethodModal__ModalContent",
38543
38859
  componentId: "sc-1dxy6lr-2"
38544
38860
  })(["background:#1a1a2e;border:2px solid #f59e0b;border-radius:8px;padding:20px 24px 24px;min-width:300px;max-width:90%;display:flex;flex-direction:column;gap:16px;pointer-events:auto;animation:scaleIn 0.15s ease-out;@keyframes scaleIn{from{transform:scale(0.85);opacity:0;}to{transform:scale(1);opacity:1;}}"]);
38545
- var Header$h = /*#__PURE__*/styled__default.div.withConfig({
38861
+ var Header$i = /*#__PURE__*/styled__default.div.withConfig({
38546
38862
  displayName: "PaymentMethodModal__Header",
38547
38863
  componentId: "sc-1dxy6lr-3"
38548
38864
  })(["display:flex;align-items:center;justify-content:space-between;"]);
38549
- var Title$o = /*#__PURE__*/styled__default.h3.withConfig({
38865
+ var Title$p = /*#__PURE__*/styled__default.h3.withConfig({
38550
38866
  displayName: "PaymentMethodModal__Title",
38551
38867
  componentId: "sc-1dxy6lr-4"
38552
38868
  })(["margin:0;font-family:'Press Start 2P',cursive;font-size:0.7rem;color:#fef08a;"]);
@@ -38912,7 +39228,7 @@ var StoreCharacterSkinRow = function StoreCharacterSkinRow(_ref) {
38912
39228
  height: 32,
38913
39229
  imgScale: 2,
38914
39230
  centered: true
38915
- }) : React__default.createElement(DefaultIcon, null, "\uD83D\uDC64")), React__default.createElement(ItemDetails$5, null, React__default.createElement(Header$i, null, React__default.createElement(ItemName$7, null, item.name)), availableCharacters.length > 0 && currentCharacter && React__default.createElement(SelectedSkinNav, null, React__default.createElement(SelectedSkin, null, "Selected:"), React__default.createElement(SkinNavArrow, {
39231
+ }) : React__default.createElement(DefaultIcon, null, "\uD83D\uDC64")), React__default.createElement(ItemDetails$5, null, React__default.createElement(Header$j, null, React__default.createElement(ItemName$7, null, item.name)), availableCharacters.length > 0 && currentCharacter && React__default.createElement(SelectedSkinNav, null, React__default.createElement(SelectedSkin, null, "Selected:"), React__default.createElement(SkinNavArrow, {
38916
39232
  direction: "left",
38917
39233
  onPointerDown: handlePreviousSkin,
38918
39234
  size: 24
@@ -39045,7 +39361,7 @@ var SkinNavArrow = /*#__PURE__*/styled__default(SelectArrow).withConfig({
39045
39361
  displayName: "StoreCharacterSkinRow__SkinNavArrow",
39046
39362
  componentId: "sc-81xqsx-10"
39047
39363
  })(["position:static;"]);
39048
- var Header$i = /*#__PURE__*/styled__default.div.withConfig({
39364
+ var Header$j = /*#__PURE__*/styled__default.div.withConfig({
39049
39365
  displayName: "StoreCharacterSkinRow__Header",
39050
39366
  componentId: "sc-81xqsx-11"
39051
39367
  })(["display:flex;align-items:center;gap:0.5rem;"]);
@@ -39854,7 +40170,7 @@ var StoreRedeemSection = function StoreRedeemSection(_ref) {
39854
40170
  height: 32
39855
40171
  })), React__default.createElement(SuccessTitle, null, "Code Redeemed!"), dcAmount != null && React__default.createElement(DCAmountDisplay, null, "+", React__default.createElement(MMORPGNumber, {
39856
40172
  value: dcAmount
39857
- }), " DC"), React__default.createElement(SuccessHint, null, "Your wallet balance has been updated."), React__default.createElement(ButtonWrapper$3, null, React__default.createElement(CTAButton, {
40173
+ }), " DC"), React__default.createElement(SuccessHint, null, "Your wallet balance has been updated."), React__default.createElement(ButtonWrapper$4, null, React__default.createElement(CTAButton, {
39858
40174
  icon: React__default.createElement(Receipt.Receipt, null),
39859
40175
  label: "Redeem Another",
39860
40176
  onClick: handleReset
@@ -39864,13 +40180,13 @@ var StoreRedeemSection = function StoreRedeemSection(_ref) {
39864
40180
  return React__default.createElement(Container$O, null, React__default.createElement(ResultContainer, null, React__default.createElement(ErrorIcon, null, React__default.createElement(WarningDiamond.WarningDiamond, {
39865
40181
  width: 32,
39866
40182
  height: 32
39867
- })), React__default.createElement(ErrorTitle, null, errorMessage), React__default.createElement(ButtonWrapper$3, null, React__default.createElement(CTAButton, {
40183
+ })), React__default.createElement(ErrorTitle, null, errorMessage), React__default.createElement(ButtonWrapper$4, null, React__default.createElement(CTAButton, {
39868
40184
  icon: React__default.createElement(Receipt.Receipt, null),
39869
40185
  label: "Try Again",
39870
40186
  onClick: handleReset
39871
40187
  }))));
39872
40188
  }
39873
- return React__default.createElement(Container$O, null, React__default.createElement(Title$p, null, "Redeem a Voucher Code"), React__default.createElement(Description$8, null, "Enter your voucher code below to receive Definya Coins."), React__default.createElement(InputRow, null, React__default.createElement(CodeInput, {
40189
+ return React__default.createElement(Container$O, null, React__default.createElement(Title$q, null, "Redeem a Voucher Code"), React__default.createElement(Description$9, null, "Enter your voucher code below to receive Definya Coins."), React__default.createElement(InputRow, null, React__default.createElement(CodeInput, {
39874
40190
  type: "text",
39875
40191
  value: code,
39876
40192
  onChange: function onChange(e) {
@@ -39883,7 +40199,7 @@ var StoreRedeemSection = function StoreRedeemSection(_ref) {
39883
40199
  disabled: status === 'loading',
39884
40200
  autoComplete: "off",
39885
40201
  spellCheck: false
39886
- })), React__default.createElement(ButtonWrapper$3, null, React__default.createElement(CTAButton, {
40202
+ })), React__default.createElement(ButtonWrapper$4, null, React__default.createElement(CTAButton, {
39887
40203
  icon: React__default.createElement(Receipt.Receipt, null),
39888
40204
  label: status === 'loading' ? 'Redeeming...' : 'Redeem Code',
39889
40205
  onClick: function onClick() {
@@ -39897,11 +40213,11 @@ var Container$O = /*#__PURE__*/styled__default.div.withConfig({
39897
40213
  displayName: "StoreRedeemSection__Container",
39898
40214
  componentId: "sc-1pzosml-0"
39899
40215
  })(["display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1.5rem;max-width:420px;margin:0 auto;gap:1rem;"]);
39900
- var Title$p = /*#__PURE__*/styled__default.h3.withConfig({
40216
+ var Title$q = /*#__PURE__*/styled__default.h3.withConfig({
39901
40217
  displayName: "StoreRedeemSection__Title",
39902
40218
  componentId: "sc-1pzosml-1"
39903
40219
  })(["font-family:'Press Start 2P',cursive;font-size:0.85rem;color:", ";margin:0;text-align:center;"], uiColors.white);
39904
- var Description$8 = /*#__PURE__*/styled__default.p.withConfig({
40220
+ var Description$9 = /*#__PURE__*/styled__default.p.withConfig({
39905
40221
  displayName: "StoreRedeemSection__Description",
39906
40222
  componentId: "sc-1pzosml-2"
39907
40223
  })(["font-family:'Press Start 2P',cursive;font-size:0.55rem;color:", ";margin:0;text-align:center;line-height:1.6;"], uiColors.lightGray);
@@ -39913,7 +40229,7 @@ var CodeInput = /*#__PURE__*/styled__default.input.withConfig({
39913
40229
  displayName: "StoreRedeemSection__CodeInput",
39914
40230
  componentId: "sc-1pzosml-4"
39915
40231
  })(["width:100%;padding:12px 14px;font-family:'Press Start 2P',cursive;font-size:0.75rem;color:", ";background:rgba(0,0,0,0.4);border:2px solid #f59e0b;border-radius:4px;text-transform:uppercase;letter-spacing:2px;text-align:center;box-sizing:border-box;outline:none;&::placeholder{color:", ";text-transform:none;letter-spacing:0;}&:focus{border-color:#fbbf24;box-shadow:0 0 8px rgba(251,191,36,0.3);}&:disabled{opacity:0.5;cursor:not-allowed;}"], uiColors.white, uiColors.lightGray);
39916
- var ButtonWrapper$3 = /*#__PURE__*/styled__default.div.withConfig({
40232
+ var ButtonWrapper$4 = /*#__PURE__*/styled__default.div.withConfig({
39917
40233
  displayName: "StoreRedeemSection__ButtonWrapper",
39918
40234
  componentId: "sc-1pzosml-5"
39919
40235
  })(["width:100%;margin-top:0.5rem;"]);
@@ -39960,14 +40276,14 @@ var StoreItemDetails = function StoreItemDetails(_ref) {
39960
40276
  if (typeof imageUrl === 'string') return imageUrl;
39961
40277
  return imageUrl["default"] || imageUrl.src;
39962
40278
  };
39963
- return React__default.createElement(Container$P, null, React__default.createElement(Header$j, null, React__default.createElement(BackButton, {
40279
+ return React__default.createElement(Container$P, null, React__default.createElement(Header$k, null, React__default.createElement(BackButton, {
39964
40280
  onClick: onBack
39965
40281
  }, React__default.createElement(ArrowLeft.ArrowLeft, null), React__default.createElement("span", null, "Back"))), React__default.createElement(Content$5, null, React__default.createElement(DetailsGrid, null, React__default.createElement(ItemIcon, null, React__default.createElement("img", {
39966
40282
  src: getImageSrc(),
39967
40283
  alt: item.name
39968
40284
  })), React__default.createElement(ItemInfo$3, null, React__default.createElement(ItemName$9, null, item.name), React__default.createElement(ItemPrice$2, null, currencySymbol, 'priceUSD' in item ? item.priceUSD : (_item$regionalPrice = item.regionalPrice) != null ? _item$regionalPrice : item.price, item.dcPrice ? React__default.createElement(React__default.Fragment, null, ' ', "\xB7 ", React__default.createElement(MMORPGNumber, {
39969
40285
  value: item.dcPrice
39970
- }), " DC") : ''), React__default.createElement(Description$9, null, item.description))), React__default.createElement(Actions$1, null, React__default.createElement(CTAButton, {
40286
+ }), " DC") : ''), React__default.createElement(Description$a, null, item.description))), React__default.createElement(Actions$1, null, React__default.createElement(CTAButton, {
39971
40287
  icon: React__default.createElement(ShoppingCart.ShoppingCart, null),
39972
40288
  label: "Add to Cart",
39973
40289
  onClick: function onClick() {
@@ -39980,7 +40296,7 @@ var Container$P = /*#__PURE__*/styled__default.div.withConfig({
39980
40296
  displayName: "StoreItemDetails__Container",
39981
40297
  componentId: "sc-k3ho5z-0"
39982
40298
  })(["display:flex;flex-direction:column;gap:1.5rem;padding:1.5rem;height:100%;"]);
39983
- var Header$j = /*#__PURE__*/styled__default.div.withConfig({
40299
+ var Header$k = /*#__PURE__*/styled__default.div.withConfig({
39984
40300
  displayName: "StoreItemDetails__Header",
39985
40301
  componentId: "sc-k3ho5z-1"
39986
40302
  })(["display:flex;align-items:center;gap:1rem;"]);
@@ -40012,7 +40328,7 @@ var ItemPrice$2 = /*#__PURE__*/styled__default.div.withConfig({
40012
40328
  displayName: "StoreItemDetails__ItemPrice",
40013
40329
  componentId: "sc-k3ho5z-8"
40014
40330
  })(["font-family:'Press Start 2P',cursive;font-size:1rem;color:#fef08a;"]);
40015
- var Description$9 = /*#__PURE__*/styled__default.p.withConfig({
40331
+ var Description$a = /*#__PURE__*/styled__default.p.withConfig({
40016
40332
  displayName: "StoreItemDetails__Description",
40017
40333
  componentId: "sc-k3ho5z-9"
40018
40334
  })(["margin:0;font-family:'Press Start 2P',cursive;font-size:0.875rem;line-height:1.6;color:#ffffff;"]);
@@ -40705,7 +41021,7 @@ var TradingMenu = function TradingMenu(_ref) {
40705
41021
  width: "500px",
40706
41022
  cancelDrag: "#TraderContainer",
40707
41023
  scale: scale
40708
- }, React__default.createElement(Container$R, null, React__default.createElement(Title$q, null, type.charAt(0).toUpperCase() + type.slice(1), " Menu"), React__default.createElement("hr", {
41024
+ }, React__default.createElement(Container$R, null, React__default.createElement(Title$r, null, type.charAt(0).toUpperCase() + type.slice(1), " Menu"), React__default.createElement("hr", {
40709
41025
  className: "golden"
40710
41026
  }), React__default.createElement(ScrollWrapper, {
40711
41027
  id: "TraderContainer"
@@ -40722,7 +41038,7 @@ var TradingMenu = function TradingMenu(_ref) {
40722
41038
  scale: scale,
40723
41039
  isBuy: isBuy()
40724
41040
  });
40725
- })), React__default.createElement(InfoSection$2, null, React__default.createElement(GoldInfo, null, React__default.createElement("p", null, "Available Gold:"), React__default.createElement("p", null, "$", characterAvailableGold.toFixed(2))), React__default.createElement(GoldInfo, null, React__default.createElement("p", null, "Total:"), React__default.createElement("p", null, "$", sum)), !hasGoldForSale() ? React__default.createElement(AlertText, null, "Sorry, not enough money.") : React__default.createElement(GoldInfo, null, React__default.createElement("p", null, "Final Gold:"), React__default.createElement("p", null, "$", getFinalGold().toFixed(2)))), React__default.createElement(ButtonWrapper$4, null, React__default.createElement(Button, {
41041
+ })), React__default.createElement(InfoSection$2, null, React__default.createElement(GoldInfo, null, React__default.createElement("p", null, "Available Gold:"), React__default.createElement("p", null, "$", characterAvailableGold.toFixed(2))), React__default.createElement(GoldInfo, null, React__default.createElement("p", null, "Total:"), React__default.createElement("p", null, "$", sum)), !hasGoldForSale() ? React__default.createElement(AlertText, null, "Sorry, not enough money.") : React__default.createElement(GoldInfo, null, React__default.createElement("p", null, "Final Gold:"), React__default.createElement("p", null, "$", getFinalGold().toFixed(2)))), React__default.createElement(ButtonWrapper$5, null, React__default.createElement(Button, {
40726
41042
  buttonType: exports.ButtonTypes.RPGUIButton,
40727
41043
  disabled: !hasGoldForSale(),
40728
41044
  onPointerDown: function onPointerDown() {
@@ -40737,7 +41053,7 @@ var Container$R = /*#__PURE__*/styled__default.div.withConfig({
40737
41053
  displayName: "TradingMenu__Container",
40738
41054
  componentId: "sc-1wjsz1l-0"
40739
41055
  })(["width:100%;"]);
40740
- var Title$q = /*#__PURE__*/styled__default.h1.withConfig({
41056
+ var Title$r = /*#__PURE__*/styled__default.h1.withConfig({
40741
41057
  displayName: "TradingMenu__Title",
40742
41058
  componentId: "sc-1wjsz1l-1"
40743
41059
  })(["font-size:0.7rem !important;color:yellow !important;text-align:center;"]);
@@ -40757,7 +41073,7 @@ var AlertText = /*#__PURE__*/styled__default.p.withConfig({
40757
41073
  displayName: "TradingMenu__AlertText",
40758
41074
  componentId: "sc-1wjsz1l-5"
40759
41075
  })(["color:red !important;text-align:center;margin:0.3rem 0;font-size:0.5rem;"]);
40760
- var ButtonWrapper$4 = /*#__PURE__*/styled__default.div.withConfig({
41076
+ var ButtonWrapper$5 = /*#__PURE__*/styled__default.div.withConfig({
40761
41077
  displayName: "TradingMenu__ButtonWrapper",
40762
41078
  componentId: "sc-1wjsz1l-6"
40763
41079
  })(["display:flex;justify-content:space-around;width:100%;margin-top:1rem;"]);
@@ -41015,6 +41331,7 @@ exports.PurchaseSuccess = PurchaseSuccess;
41015
41331
  exports.QuantitySelectorModal = QuantitySelectorModal;
41016
41332
  exports.QuestInfo = QuestInfo;
41017
41333
  exports.QuestList = QuestList;
41334
+ exports.QuestListRow = QuestListRow;
41018
41335
  exports.QuestionDialog = QuestionDialog;
41019
41336
  exports.RPGUIContainer = RPGUIContainer;
41020
41337
  exports.RPGUIRoot = RPGUIRoot;