@rpg-engine/long-bow 0.3.57 → 0.3.59

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 (157) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +181 -181
  3. package/dist/components/CircularController/CircularController.d.ts +7 -4
  4. package/dist/components/Item/Inventory/ItemContainer.d.ts +4 -1
  5. package/dist/components/Item/Inventory/ItemSlot.d.ts +1 -0
  6. package/dist/components/Shortcuts/Shortcuts.d.ts +12 -0
  7. package/dist/components/Shortcuts/ShortcutsSetter.d.ts +12 -0
  8. package/dist/components/Shortcuts/SingleShortcut.d.ts +1 -0
  9. package/dist/components/Spellbook/Spellbook.d.ts +5 -3
  10. package/dist/components/Spellbook/constants.d.ts +3 -3
  11. package/dist/index.d.ts +1 -1
  12. package/dist/long-bow.cjs.development.js +1168 -1025
  13. package/dist/long-bow.cjs.development.js.map +1 -1
  14. package/dist/long-bow.cjs.production.min.js +1 -1
  15. package/dist/long-bow.cjs.production.min.js.map +1 -1
  16. package/dist/long-bow.esm.js +831 -687
  17. package/dist/long-bow.esm.js.map +1 -1
  18. package/dist/stories/{QuickSpells.stories.d.ts → Shortcuts.stories.d.ts} +2 -2
  19. package/package.json +100 -100
  20. package/src/components/Abstractions/SlotsContainer.tsx +45 -45
  21. package/src/components/Arrow/SelectArrow.tsx +69 -69
  22. package/src/components/Arrow/img/arrow01-left-clicked.png +0 -0
  23. package/src/components/Arrow/img/arrow01-left.png +0 -0
  24. package/src/components/Arrow/img/arrow01-right-clicked.png +0 -0
  25. package/src/components/Arrow/img/arrow01-right.png +0 -0
  26. package/src/components/Arrow/img/arrow02-left-clicked.png +0 -0
  27. package/src/components/Arrow/img/arrow02-left.png +0 -0
  28. package/src/components/Arrow/img/arrow02-right-clicked.png +0 -0
  29. package/src/components/Arrow/img/arrow02-right.png +0 -0
  30. package/src/components/Button.tsx +40 -40
  31. package/src/components/Character/CharacterSelection.tsx +96 -96
  32. package/src/components/CharacterStatus/CharacterStatus.tsx +120 -120
  33. package/src/components/Chat/Chat.tsx +195 -195
  34. package/src/components/Chatdeprecated/ChatDeprecated.tsx +198 -198
  35. package/src/components/CheckButton.tsx +65 -65
  36. package/src/components/CircularController/CircularController.tsx +245 -162
  37. package/src/components/CraftBook/CraftBook.tsx +224 -224
  38. package/src/components/CraftBook/MockItems.ts +46 -46
  39. package/src/components/DraggableContainer.tsx +153 -153
  40. package/src/components/Dropdown.tsx +90 -90
  41. package/src/components/DropdownSelectorContainer.tsx +42 -42
  42. package/src/components/Equipment/EquipmentSet.tsx +190 -190
  43. package/src/components/HistoryDialog.tsx +104 -104
  44. package/src/components/Input.tsx +15 -15
  45. package/src/components/Item/Cards/ItemTooltip.tsx +33 -33
  46. package/src/components/Item/Inventory/ErrorBoundary.tsx +42 -42
  47. package/src/components/Item/Inventory/ItemContainer.tsx +210 -175
  48. package/src/components/Item/Inventory/ItemContainerTypes.ts +6 -6
  49. package/src/components/Item/Inventory/ItemQuantitySelector.tsx +138 -138
  50. package/src/components/Item/Inventory/ItemSlot.tsx +501 -467
  51. package/src/components/Item/Inventory/itemContainerHelper.ts +156 -156
  52. package/src/components/ListMenu.tsx +63 -63
  53. package/src/components/Multitab/Tab.tsx +66 -66
  54. package/src/components/Multitab/TabBody.tsx +13 -13
  55. package/src/components/Multitab/TabsContainer.tsx +97 -97
  56. package/src/components/NPCDialog/NPCDialog.tsx +121 -121
  57. package/src/components/NPCDialog/NPCDialogText.tsx +113 -113
  58. package/src/components/NPCDialog/NPCMultiDialog.tsx +159 -159
  59. package/src/components/NPCDialog/QuestionDialog/QuestionDialog.tsx +237 -237
  60. package/src/components/ProgressBar.tsx +92 -92
  61. package/src/components/PropertySelect/PropertySelect.tsx +106 -106
  62. package/src/components/QuestInfo/QuestInfo.tsx +230 -230
  63. package/src/components/QuestList.tsx +129 -129
  64. package/src/components/RPGUIContainer.tsx +47 -47
  65. package/src/components/RPGUIForceRenderStart.tsx +45 -45
  66. package/src/components/RPGUIRoot.tsx +14 -14
  67. package/src/components/RadioButton.tsx +53 -53
  68. package/src/components/RadioInput/RadioButton.tsx +96 -96
  69. package/src/components/RadioInput/RadioInput.tsx +102 -102
  70. package/src/components/RadioInput/instruments.ts +15 -15
  71. package/src/components/RangeSlider.tsx +78 -78
  72. package/src/components/RelativeListMenu.tsx +83 -83
  73. package/src/components/ScrollList.tsx +79 -79
  74. package/src/components/Shortcuts/Shortcuts.tsx +129 -0
  75. package/src/components/Shortcuts/ShortcutsSetter.tsx +132 -0
  76. package/src/components/Shortcuts/SingleShortcut.ts +61 -0
  77. package/src/components/SimpleProgressBar.tsx +62 -62
  78. package/src/components/SkillProgressBar.tsx +133 -133
  79. package/src/components/SkillsContainer.tsx +198 -198
  80. package/src/components/Spellbook/Spell.tsx +201 -201
  81. package/src/components/Spellbook/Spellbook.tsx +150 -144
  82. package/src/components/Spellbook/constants.ts +8 -12
  83. package/src/components/Spellbook/mockSpells.ts +60 -60
  84. package/src/components/StaticBook/StaticBook.tsx +103 -103
  85. package/src/components/TextArea.tsx +11 -11
  86. package/src/components/TimeWidget/DayNightPeriod/DayNightPeriod.tsx +35 -35
  87. package/src/components/TimeWidget/TimeWidget.tsx +63 -63
  88. package/src/components/TradingMenu/TradingItemRow.tsx +193 -193
  89. package/src/components/TradingMenu/TradingMenu.tsx +203 -203
  90. package/src/components/TradingMenu/items.mock.ts +96 -96
  91. package/src/components/Truncate.tsx +25 -25
  92. package/src/components/itemSelector/ItemSelector.tsx +136 -136
  93. package/src/components/shared/Column.tsx +16 -16
  94. package/src/components/shared/Ellipsis.tsx +65 -65
  95. package/src/components/shared/SpriteFromAtlas.tsx +102 -102
  96. package/src/components/typography/DynamicText.tsx +49 -49
  97. package/src/constants/uiColors.ts +20 -20
  98. package/src/constants/uiDevices.ts +3 -3
  99. package/src/constants/uiFonts.ts +12 -12
  100. package/src/hooks/useEventListener.ts +21 -21
  101. package/src/hooks/useOutsideAlerter.ts +25 -25
  102. package/src/index.tsx +40 -40
  103. package/src/libs/StringHelpers.ts +3 -3
  104. package/src/mocks/atlas/entities/entities.json +20215 -20215
  105. package/src/mocks/atlas/icons/icons.json +735 -735
  106. package/src/mocks/atlas/items/items.json +12086 -12086
  107. package/src/mocks/equipmentSet.mocks.ts +393 -393
  108. package/src/mocks/itemContainer.mocks.ts +562 -560
  109. package/src/mocks/skills.mocks.ts +128 -128
  110. package/src/stories/Arrow.stories.tsx +26 -26
  111. package/src/stories/Button.stories.tsx +36 -36
  112. package/src/stories/CharacterSelection.stories.tsx +45 -45
  113. package/src/stories/CharacterStatus.stories.tsx +29 -29
  114. package/src/stories/Chat.stories.tsx +187 -187
  115. package/src/stories/ChatDeprecated.stories.tsx +170 -170
  116. package/src/stories/CheckButton.stories.tsx +48 -48
  117. package/src/stories/CircullarController.stories.tsx +37 -33
  118. package/src/stories/CraftBook.stories.tsx +40 -40
  119. package/src/stories/DayNightPeriod.stories.tsx +27 -27
  120. package/src/stories/DraggableContainer.stories.tsx +28 -28
  121. package/src/stories/Dropdown.stories.tsx +46 -46
  122. package/src/stories/DropdownSelectorContainer.stories.tsx +41 -41
  123. package/src/stories/EquipmentSet.stories.tsx +65 -65
  124. package/src/stories/HistoryDialog.stories.tsx +61 -61
  125. package/src/stories/ItemContainer.stories.tsx +198 -124
  126. package/src/stories/ItemQuantitySelector.stories.tsx +26 -26
  127. package/src/stories/ItemSelector.stories.tsx +77 -77
  128. package/src/stories/ItemTradingComponent.stories.tsx +35 -35
  129. package/src/stories/ListMenu.stories.tsx +56 -56
  130. package/src/stories/Multitab.stories.tsx +51 -51
  131. package/src/stories/NPCDialog.stories.tsx +130 -130
  132. package/src/stories/NPCMultiDialog.stories.tsx +71 -71
  133. package/src/stories/ProgressBar.stories.tsx +23 -23
  134. package/src/stories/PropertySelect.stories.tsx +40 -40
  135. package/src/stories/QuestInfo.stories.tsx +107 -107
  136. package/src/stories/QuestList.stories.tsx +82 -82
  137. package/src/stories/RPGUIContainers.stories.tsx +42 -42
  138. package/src/stories/RadioButton.stories.tsx +49 -49
  139. package/src/stories/RadioInput.stories.tsx +34 -34
  140. package/src/stories/RangeSlider.stories.tsx +64 -64
  141. package/src/stories/ScrollList.stories.tsx +85 -85
  142. package/src/stories/Shortcuts.stories.tsx +39 -0
  143. package/src/stories/SimpleProgressBar.stories.tsx +22 -22
  144. package/src/stories/SkillProgressBar.stories.tsx +34 -34
  145. package/src/stories/SkillsContainer.stories.tsx +35 -35
  146. package/src/stories/Spellbook.stories.tsx +104 -107
  147. package/src/stories/StaticBook.stories.tsx +32 -32
  148. package/src/stories/Text.stories.tsx +42 -42
  149. package/src/stories/TimeWidget.stories.tsx +27 -27
  150. package/src/stories/TradingMenu.stories.tsx +45 -45
  151. package/src/types/eventTypes.ts +4 -4
  152. package/src/types/index.d.ts +2 -2
  153. package/dist/components/Spellbook/QuickSpells.d.ts +0 -10
  154. package/dist/components/Spellbook/SpellbookShortcuts.d.ts +0 -10
  155. package/src/components/Spellbook/QuickSpells.tsx +0 -120
  156. package/src/components/Spellbook/SpellbookShortcuts.tsx +0 -77
  157. package/src/stories/QuickSpells.stories.tsx +0 -38
@@ -1,6 +1,6 @@
1
1
  import React, { Component, useState, useEffect, useRef, useMemo, Fragment } from 'react';
2
2
  import styled from 'styled-components';
3
- import { GRID_WIDTH, GRID_HEIGHT, ItemSubType, ItemContainerType, ItemType, ItemSocketEventsDisplayLabels, ActionsForInventory, ActionsForEquipmentSet, ActionsForLoot, ActionsForMapContainer, ItemRarities, getItemTextureKeyPath, ItemSlotType, isMobileOrTablet, getSPForLevel, PeriodOfDay } from '@rpg-engine/shared';
3
+ import { GRID_WIDTH, GRID_HEIGHT, ShortcutType, getItemTextureKeyPath, ItemSubType, ItemContainerType, ItemType, ItemSocketEventsDisplayLabels, ActionsForInventory, ActionsForEquipmentSet, ActionsForLoot, ActionsForMapContainer, ItemRarities, ItemSlotType, getSPForLevel, PeriodOfDay, isMobileOrTablet } from '@rpg-engine/shared';
4
4
  import dayjs from 'dayjs';
5
5
  import { ErrorBoundary as ErrorBoundary$1 } from 'react-error-boundary';
6
6
  import { RxPaperPlane } from 'react-icons/rx';
@@ -33049,62 +33049,20 @@ var CheckButton = function CheckButton(_ref) {
33049
33049
  }));
33050
33050
  };
33051
33051
 
33052
- var QuickSpells = function QuickSpells(_ref) {
33053
- var quickSpells = _ref.quickSpells,
33054
- onSpellCast = _ref.onSpellCast,
33055
- mana = _ref.mana,
33056
- _ref$isBlockedCasting = _ref.isBlockedCastingByKeyboard,
33057
- isBlockedCastingByKeyboard = _ref$isBlockedCasting === void 0 ? false : _ref$isBlockedCasting;
33058
- useEffect(function () {
33059
- var handleKeyDown = function handleKeyDown(e) {
33060
- if (isBlockedCastingByKeyboard) return;
33061
- var shortcutIndex = Number(e.key) - 1;
33062
- if (shortcutIndex >= 0 && shortcutIndex <= 3) {
33063
- var shortcut = quickSpells[shortcutIndex];
33064
- if (shortcut != null && shortcut.key && mana >= (shortcut == null ? void 0 : shortcut.manaCost)) {
33065
- onSpellCast(shortcut.key);
33066
- }
33067
- }
33068
- };
33069
- window.addEventListener('keydown', handleKeyDown);
33070
- return function () {
33071
- window.removeEventListener('keydown', handleKeyDown);
33072
- };
33073
- }, [quickSpells, isBlockedCastingByKeyboard]);
33074
- return React.createElement(List, null, Array.from({
33075
- length: 4
33076
- }).map(function (_, i) {
33077
- var _quickSpells$i, _quickSpells$i2, _quickSpells$i3, _quickSpells$i4, _quickSpells$i5;
33078
- return React.createElement(SpellShortcut, {
33079
- key: i,
33080
- onPointerDown: onSpellCast.bind(null, (_quickSpells$i = quickSpells[i]) == null ? void 0 : _quickSpells$i.key),
33081
- disabled: mana < ((_quickSpells$i2 = quickSpells[i]) == null ? void 0 : _quickSpells$i2.manaCost)
33082
- }, React.createElement("span", {
33083
- className: "mana"
33084
- }, ((_quickSpells$i3 = quickSpells[i]) == null ? void 0 : _quickSpells$i3.key) && ((_quickSpells$i4 = quickSpells[i]) == null ? void 0 : _quickSpells$i4.manaCost)), React.createElement("span", {
33085
- className: "magicWords"
33086
- }, (_quickSpells$i5 = quickSpells[i]) == null ? void 0 : _quickSpells$i5.magicWords.split(' ').map(function (word) {
33087
- return word[0];
33088
- })), React.createElement("span", {
33089
- className: "keyboard"
33090
- }, i + 1));
33091
- }));
33092
- };
33093
- var SpellShortcut = /*#__PURE__*/styled.button.withConfig({
33094
- displayName: "QuickSpells__SpellShortcut",
33095
- componentId: "sc-41yq7s-0"
33096
- })(["width:3rem;height:3rem;background-color:", ";border:2px solid ", ";border-radius:50%;text-transform:uppercase;font-size:0.7rem;font-weight:bold;display:flex;align-items:center;justify-content:center;position:relative;span{pointer-events:none;}.mana{position:absolute;top:-5px;right:0;font-size:0.65rem;color:", ";}.magicWords{margin-top:4px;}.keyboard{position:absolute;bottom:-5px;left:0;font-size:0.65rem;color:", ";}&:hover,&:focus{background-color:", ";}&:active{background-color:", ";}&:disabled{opacity:0.5;}"], uiColors.lightGray, uiColors.darkGray, uiColors.blue, uiColors.yellow, uiColors.darkGray, uiColors.gray);
33097
- var List = /*#__PURE__*/styled.p.withConfig({
33098
- displayName: "QuickSpells__List",
33099
- componentId: "sc-41yq7s-1"
33100
- })(["width:100%;display:flex;align-items:center;justify-content:center;gap:0.5rem;box-sizing:border-box;margin:0 !important;"]);
33052
+ var SingleShortcut = /*#__PURE__*/styled.button.withConfig({
33053
+ displayName: "SingleShortcut",
33054
+ componentId: "sc-vz5ev8-0"
33055
+ })(["width:3rem;height:3rem;background-color:", ";border:2px solid ", ";border-radius:50%;text-transform:uppercase;font-size:0.7rem;font-weight:bold;display:flex;align-items:center;justify-content:center;position:relative;span{pointer-events:none;}.mana{position:absolute;top:-5px;right:0;font-size:0.65rem;color:", ";}.qty{position:absolute;top:-5px;right:0;font-size:0.65rem;}.magicWords{margin-top:4px;}.keyboard{position:absolute;bottom:-5px;left:0;font-size:0.65rem;color:", ";}&:hover,&:focus{background-color:", ";}&:active{background-color:", ";}&:disabled{opacity:0.5;}"], uiColors.lightGray, uiColors.darkGray, uiColors.blue, uiColors.yellow, uiColors.darkGray, uiColors.gray);
33101
33056
 
33102
33057
  var CircularController = function CircularController(_ref) {
33103
- var onActionPointerDown = _ref.onActionPointerDown,
33058
+ var onActionClick = _ref.onActionClick,
33104
33059
  onCancelClick = _ref.onCancelClick,
33105
- onSpellClick = _ref.onSpellClick,
33060
+ onShortcutClick = _ref.onShortcutClick,
33106
33061
  mana = _ref.mana,
33107
- spells = _ref.spells;
33062
+ shortcuts = _ref.shortcuts,
33063
+ inventory = _ref.inventory,
33064
+ atlasIMG = _ref.atlasIMG,
33065
+ atlasJSON = _ref.atlasJSON;
33108
33066
  var onTouchStart = function onTouchStart(e) {
33109
33067
  var target = e.target;
33110
33068
  target == null ? void 0 : target.classList.add('active');
@@ -33116,28 +33074,73 @@ var CircularController = function CircularController(_ref) {
33116
33074
  }, 100);
33117
33075
  action();
33118
33076
  };
33119
- return React.createElement(ButtonsContainer, null, React.createElement(SpellsContainer, null, Array.from({
33120
- length: 4
33121
- }).map(function (_, i) {
33122
- var variant = i === 0 ? 'top' : i === 3 ? 'bottom' : '';
33123
- var spell = spells[i];
33124
- var onSpellClickBinded = spell ? onSpellClick.bind(null, spell.key) : function () {};
33077
+ var renderShortcut = function renderShortcut(i) {
33078
+ var _shortcuts$i, _shortcuts$i2, _shortcuts$i4, _payload$manaCost;
33079
+ var variant = '';
33080
+ if (i === 0) variant = 'top';else if (i >= 3) variant = "bottom-" + (i - 3);
33081
+ var onShortcutClickBinded = ((_shortcuts$i = shortcuts[i]) == null ? void 0 : _shortcuts$i.type) !== ShortcutType.None ? onShortcutClick.bind(null, i) : function () {};
33082
+ if (((_shortcuts$i2 = shortcuts[i]) == null ? void 0 : _shortcuts$i2.type) === ShortcutType.Item) {
33083
+ var _shortcuts$i3;
33084
+ var _payload = (_shortcuts$i3 = shortcuts[i]) == null ? void 0 : _shortcuts$i3.payload;
33085
+ var itemsFromEquipment = [];
33086
+ if (inventory) {
33087
+ Object.keys(inventory.slots).forEach(function (i) {
33088
+ var _inventory$slots$inde;
33089
+ var index = parseInt(i);
33090
+ if (((_inventory$slots$inde = inventory.slots[index]) == null ? void 0 : _inventory$slots$inde.key) === (_payload == null ? void 0 : _payload.key)) {
33091
+ itemsFromEquipment.push(inventory.slots[index]);
33092
+ }
33093
+ });
33094
+ }
33095
+ var totalQty = itemsFromEquipment.reduce(function (acc, item) {
33096
+ return acc + ((item == null ? void 0 : item.stackQty) || 1);
33097
+ }, 0);
33098
+ return React.createElement(StyledShortcut, {
33099
+ key: i,
33100
+ onTouchStart: onTouchStart,
33101
+ onTouchEnd: onTouchEnd.bind(null, onShortcutClickBinded),
33102
+ disabled: false,
33103
+ className: variant
33104
+ }, _payload && React.createElement(SpriteFromAtlas, {
33105
+ atlasIMG: atlasIMG,
33106
+ atlasJSON: atlasJSON,
33107
+ spriteKey: getItemTextureKeyPath({
33108
+ key: _payload.texturePath,
33109
+ texturePath: _payload.texturePath,
33110
+ stackQty: _payload.stackQty || 1
33111
+ }, atlasJSON),
33112
+ width: 32,
33113
+ height: 32,
33114
+ imgScale: 1.4,
33115
+ imgStyle: {
33116
+ left: '4px'
33117
+ }
33118
+ }), React.createElement("span", {
33119
+ className: "qty"
33120
+ }, totalQty));
33121
+ }
33122
+ var payload = (_shortcuts$i4 = shortcuts[i]) == null ? void 0 : _shortcuts$i4.payload;
33125
33123
  return React.createElement(StyledShortcut, {
33126
33124
  key: i,
33127
- disabled: mana < (spell == null ? void 0 : spell.manaCost),
33128
33125
  onTouchStart: onTouchStart,
33129
- onTouchEnd: onTouchEnd.bind(null, onSpellClickBinded),
33126
+ onTouchEnd: onTouchEnd.bind(null, onShortcutClickBinded),
33127
+ disabled: mana < ((_payload$manaCost = payload == null ? void 0 : payload.manaCost) != null ? _payload$manaCost : 0),
33130
33128
  className: variant
33131
33129
  }, React.createElement("span", {
33132
33130
  className: "mana"
33133
- }, (spell == null ? void 0 : spell.key) && (spell == null ? void 0 : spell.manaCost)), React.createElement("span", {
33131
+ }, payload && payload.manaCost), React.createElement("span", {
33134
33132
  className: "magicWords"
33135
- }, spell == null ? void 0 : spell.magicWords.split(' ').map(function (word) {
33133
+ }, payload == null ? void 0 : payload.magicWords.split(' ').map(function (word) {
33136
33134
  return word[0];
33137
33135
  })));
33136
+ };
33137
+ return React.createElement(ButtonsContainer, null, React.createElement(ShortcutsContainer, null, Array.from({
33138
+ length: 6
33139
+ }).map(function (_, i) {
33140
+ return renderShortcut(i);
33138
33141
  })), React.createElement(Button$2, {
33139
33142
  onTouchStart: onTouchStart,
33140
- onTouchEnd: onTouchEnd.bind(null, onActionPointerDown)
33143
+ onTouchEnd: onTouchEnd.bind(null, onActionClick)
33141
33144
  }, React.createElement("div", {
33142
33145
  className: "rpgui-icon sword"
33143
33146
  })), React.createElement(CancelButton, {
@@ -33148,7 +33151,7 @@ var CircularController = function CircularController(_ref) {
33148
33151
  var Button$2 = /*#__PURE__*/styled.button.withConfig({
33149
33152
  displayName: "CircularController__Button",
33150
33153
  componentId: "sc-1fewf3h-0"
33151
- })(["width:4.3rem;height:4.3rem;background-color:", ";border:2px solid ", ";border-radius:50%;text-transform:uppercase;font-size:0.7rem;font-weight:bold;display:flex;align-items:center;justify-content:center;position:relative;transition:background-color 0.1s;&.active{background-color:", ";}.sword{transform:rotate(-45deg);height:2.5rem;width:1.9rem;pointer-events:none;}"], uiColors.lightGray, uiColors.darkGray, uiColors.gray);
33154
+ })(["width:4.3rem;height:4.3rem;background-color:", ";border:2px solid ", ";border-radius:50%;text-transform:uppercase;font-size:0.7rem;font-weight:bold;display:flex;align-items:center;justify-content:center;position:relative;transition:background-color 0.1s;margin-top:-3rem;&.active{background-color:", ";}.sword{transform:rotate(-45deg);height:2.5rem;width:1.9rem;pointer-events:none;}"], uiColors.lightGray, uiColors.darkGray, uiColors.gray);
33152
33155
  var CancelButton = /*#__PURE__*/styled(Button$2).withConfig({
33153
33156
  displayName: "CircularController__CancelButton",
33154
33157
  componentId: "sc-1fewf3h-1"
@@ -33157,14 +33160,14 @@ var ButtonsContainer = /*#__PURE__*/styled.div.withConfig({
33157
33160
  displayName: "CircularController__ButtonsContainer",
33158
33161
  componentId: "sc-1fewf3h-2"
33159
33162
  })(["display:flex;align-items:center;justify-content:center;gap:0.5rem;"]);
33160
- var SpellsContainer = /*#__PURE__*/styled.div.withConfig({
33161
- displayName: "CircularController__SpellsContainer",
33163
+ var ShortcutsContainer = /*#__PURE__*/styled.div.withConfig({
33164
+ displayName: "CircularController__ShortcutsContainer",
33162
33165
  componentId: "sc-1fewf3h-3"
33163
- })(["display:flex;align-items:center;justify-content:center;gap:0.4rem;flex-direction:column;.top{transform:translate(93%,25%);}.bottom{transform:translate(93%,-25%);}"]);
33164
- var StyledShortcut = /*#__PURE__*/styled(SpellShortcut).withConfig({
33166
+ })(["display:flex;align-items:center;justify-content:center;gap:0.5rem;flex-direction:column;margin-top:3rem;.top{transform:translate(93%,25%);}.bottom-0{transform:translate(93%,-25%);}.bottom-1{transform:translate(-120%,calc(-5.5rem));}.bottom-2{transform:translate(-30%,calc(-5.5rem - 25%));}"]);
33167
+ var StyledShortcut = /*#__PURE__*/styled(SingleShortcut).withConfig({
33165
33168
  displayName: "CircularController__StyledShortcut",
33166
33169
  componentId: "sc-1fewf3h-4"
33167
- })(["width:2.5rem;height:2.5rem;transition:background-color 0.1s;.mana{font-size:0.5rem;}&:hover,&:focus,&:active{background-color:", ";}&.active{background-color:", ";}"], uiColors.lightGray, uiColors.gray);
33170
+ })(["width:2.5rem;height:2.5rem;transition:background-color 0.1s;.mana,.qty{font-size:0.5rem;}&:hover,&:focus,&:active{background-color:", ";}&.active{background-color:", ";}"], uiColors.lightGray, uiColors.gray);
33168
33171
 
33169
33172
  function useOutsideClick(ref, id) {
33170
33173
  useEffect(function () {
@@ -33729,7 +33732,8 @@ var ItemSlot = /*#__PURE__*/observer(function (_ref) {
33729
33732
  checkIfItemCanBeMoved = _ref.checkIfItemCanBeMoved,
33730
33733
  openQuantitySelector = _ref.openQuantitySelector,
33731
33734
  checkIfItemShouldDragEnd = _ref.checkIfItemShouldDragEnd,
33732
- dragScale = _ref.dragScale;
33735
+ dragScale = _ref.dragScale,
33736
+ isSelectingShortcut = _ref.isSelectingShortcut;
33733
33737
  var _useState = useState(false),
33734
33738
  isTooltipVisible = _useState[0],
33735
33739
  setTooltipVisible = _useState[1];
@@ -33893,12 +33897,14 @@ var ItemSlot = /*#__PURE__*/observer(function (_ref) {
33893
33897
  bubbles: true
33894
33898
  });
33895
33899
  (_document$elementFrom = document.elementFromPoint(clientX, clientY)) == null ? void 0 : _document$elementFrom.dispatchEvent(simulatedEvent);
33896
- }
33900
+ },
33901
+ isSelectingShortcut: isSelectingShortcut && ((item == null ? void 0 : item.type) === ItemType.Consumable || (item == null ? void 0 : item.type) === ItemType.Tool)
33897
33902
  }, React.createElement(Draggable, {
33903
+ axis: isSelectingShortcut ? 'none' : 'both',
33898
33904
  defaultClassName: item ? 'draggable' : 'empty-slot',
33899
33905
  scale: dragScale,
33900
33906
  onStop: function onStop(e, data) {
33901
- if (wasDragged && item) {
33907
+ if (wasDragged && item && !isSelectingShortcut) {
33902
33908
  var _e$target;
33903
33909
  //@ts-ignore
33904
33910
  var classes = Array.from((_e$target = e.target) == null ? void 0 : _e$target.classList);
@@ -33936,12 +33942,12 @@ var ItemSlot = /*#__PURE__*/observer(function (_ref) {
33936
33942
  }
33937
33943
  }, 100);
33938
33944
  } else if (item) {
33939
- if (!isContextMenuDisabled) setIsContextMenuVisible(!isContextMenuVisible);
33945
+ if (!isContextMenuDisabled && !isSelectingShortcut) setIsContextMenuVisible(!isContextMenuVisible);
33940
33946
  onPointerDown(item.type, containerType, item);
33941
33947
  }
33942
33948
  },
33943
33949
  onStart: function onStart() {
33944
- if (!item) {
33950
+ if (!item || isSelectingShortcut) {
33945
33951
  return;
33946
33952
  }
33947
33953
  if (onDragStart) {
@@ -34003,7 +34009,7 @@ var rarityColor = function rarityColor(item) {
34003
34009
  var Container$a = /*#__PURE__*/styled.div.withConfig({
34004
34010
  displayName: "ItemSlot__Container",
34005
34011
  componentId: "sc-l2j5ef-0"
34006
- })(["margin:0.1rem;.sprite-from-atlas-img{position:relative;top:1.5rem;left:1.5rem;border-color:", ";box-shadow:", " inset,", ";}position:relative;"], function (_ref2) {
34012
+ })(["margin:0.1rem;.sprite-from-atlas-img{position:relative;top:1.5rem;left:1.5rem;border-color:", ";box-shadow:", " inset,", ";}position:relative;&::before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-radius:12px;pointer-events:none;animation:", ";@keyframes bg-color-change{0%{background-color:rgba(255 255 255 / 0.5);}50%{background-color:transparent;}100%{background-color:rgba(255 255 255 / 0.5);}}}"], function (_ref2) {
34007
34013
  var item = _ref2.item;
34008
34014
  return rarityColor(item);
34009
34015
  }, function (_ref3) {
@@ -34012,6 +34018,9 @@ var Container$a = /*#__PURE__*/styled.div.withConfig({
34012
34018
  }, function (_ref4) {
34013
34019
  var item = _ref4.item;
34014
34020
  return "0 0 4px 3px " + rarityColor(item);
34021
+ }, function (_ref5) {
34022
+ var isSelectingShortcut = _ref5.isSelectingShortcut;
34023
+ return isSelectingShortcut ? 'bg-color-change 1s infinite' : 'none';
34015
34024
  });
34016
34025
  var ItemContainer = /*#__PURE__*/styled.div.withConfig({
34017
34026
  displayName: "ItemSlot__ItemContainer",
@@ -34122,546 +34131,6 @@ var EquipmentColumn = /*#__PURE__*/styled.div.withConfig({
34122
34131
  componentId: "sc-1wuddg2-1"
34123
34132
  })(["display:flex;justify-content:center;flex-wrap:wrap;flex-direction:column;touch-action:none;"]);
34124
34133
 
34125
- var IS_MOBILE_OR_TABLET = /*#__PURE__*/isMobileOrTablet();
34126
-
34127
- var chunkString = function chunkString(str, length) {
34128
- return str.match(new RegExp('.{1,' + length + '}', 'g'));
34129
- };
34130
-
34131
- var DynamicText = function DynamicText(_ref) {
34132
- var text = _ref.text,
34133
- onFinish = _ref.onFinish,
34134
- onStart = _ref.onStart;
34135
- var _useState = useState(''),
34136
- textState = _useState[0],
34137
- setTextState = _useState[1];
34138
- useEffect(function () {
34139
- var i = 0;
34140
- var interval = setInterval(function () {
34141
- // on every interval, show one more character
34142
- if (i === 0) {
34143
- if (onStart) {
34144
- onStart();
34145
- }
34146
- }
34147
- if (i < text.length) {
34148
- setTextState(text.substring(0, i + 1));
34149
- i++;
34150
- } else {
34151
- clearInterval(interval);
34152
- if (onFinish) {
34153
- onFinish();
34154
- }
34155
- }
34156
- }, 50);
34157
- return function () {
34158
- clearInterval(interval);
34159
- };
34160
- }, [text]);
34161
- return React.createElement(TextContainer, null, textState);
34162
- };
34163
- var TextContainer = /*#__PURE__*/styled.p.withConfig({
34164
- displayName: "DynamicText__TextContainer",
34165
- componentId: "sc-1ggl9nd-0"
34166
- })(["font-size:0.7rem !important;color:white;text-shadow:1px 1px 0px #000000;letter-spacing:1.2px;word-break:normal;"]);
34167
-
34168
- var img$6 = 'data:image/gif;base64,R0lGODlhEAAQAPIAAAAAABQYLiw1TUBJc2hvmQAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtJbWFnZU1hZ2ljaw1nYW1tYT0wLjQ1NDU1ACH5BAEUAAAALAAAAAAQABAAAAM9CLrc/lCFGSKYJJP5AhlguDnBMIVgxXgmJapSSp3mKs/pKrT0IMCXUk+2Cgh2oSOnaDz+lswZpSOFUq2KBAAh/wtJbWFnZU1hZ2ljaw1nYW1tYT0wLjQ1NDU1ACH5BAEUAAAALAAAAAAQABAAAAIzhI+py90Bg4OjDrjCELxfFQhQx0mIJkaeaYRp5LJADMdnqXbyOJLYTdKBejjZoRaZJBMFACH/C0ltYWdlTWFnaWNrDWdhbW1hPTAuNDU0NTUAIfkEARQAAAAsAAAAABAAEAAAAjKEj6nL7Y+CDE6OO+QKQ/ifKYEgfR4VddPohQe7lmR0xidNTib65uacYP2AQWGuMlEUAAA7';
34169
-
34170
- var img$7 = 'data:image/gif;base64,R0lGODlhQAAgAPIAAAAAAA0NDRERESIiIigoKFlZWf///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtJbWFnZU1hZ2ljaw5nYW1tYT0wLjQ1NDU0NQAh+QQBFAAAACwAAAAAQAAgAAAD/wi63P4wykmrvTjrzbv/YAgIZGmeaKquakQWcCzPdG3fNukIeO//PQGDBywafcIF8chswpKKZcxApTqvNOiIZi0YsODncFaFlcNOrdTbJVff0/c3Lp/Xs2N37cy2ndt6ZnhKXHdsc4d7VnwyfIxqPWWOXXWLgHSGYoSNbZKVZp2WiJyjg1GFcaClqaqJhasyUAFrh3Cur3KqubWXBQIBAAEDtDeMaEEDAcLEx2gCycvN0jHPysPT09XR2M3a19zH3gTM4EYCBNDD4yzs7e4r48nB6gT19vf4+fr7/P3P8sKGvRtIkMUAeQoCHlzIsKHDhxAjSoTWQJnFixgzatzIsQWjRQYJAAAh/wtJbWFnZU1hZ2ljaw5nYW1tYT0wLjQ1NDU0NQAh+QQBFAAAACwAAAAAQAAgAAAD8Ai63P4wykmrvTjrzbv/YCiOlGCeaKqubMtGZiHPdG3feI6bjqD/wOBPwPAJj0ggcWFMOp+ypaI5M1it0KxNCqDKsAWDdhwt1q5fMPnJ9aJt17g4HafJ3/et+Tzn99V+aThqfTNtcHlhhIBVWG+BdDSHOmiPeHdij3aYhZONf46YkZGanzpSAV6KjaOIpqWtNwIBAAEDqqKKhZuJnHSwAgMBtqo5sGs5wcO3yM01ysTO0gXQzNPN1cXXUNnbyNna3kcmwrW3Lujp6ugD5bbn6/HyLe20Cu/t+fr7/P3+/wCF2VswrKDBgwgTKlzIsCCDBAA7';
34171
-
34172
- var NPCDialogText = function NPCDialogText(_ref) {
34173
- var text = _ref.text,
34174
- onClose = _ref.onClose,
34175
- onEndStep = _ref.onEndStep,
34176
- onStartStep = _ref.onStartStep,
34177
- type = _ref.type;
34178
- var windowSize = useRef([window.innerWidth, window.innerHeight]);
34179
- function maxCharacters(width) {
34180
- // Set the font size to 16 pixels
34181
- var fontSize = 11.2;
34182
- // Calculate the number of characters that can fit in one line
34183
- var charactersPerLine = Math.floor(width / 2 / fontSize);
34184
- // Calculate the number of lines that can fit in the div
34185
- var linesPerDiv = Math.floor(180 / fontSize);
34186
- // Calculate the maximum number of characters that can fit in the div
34187
- var maxCharacters = charactersPerLine * linesPerDiv;
34188
- // Return the maximum number of characters
34189
- return Math.round(maxCharacters / 5);
34190
- }
34191
- var textChunks = chunkString(text, maxCharacters(windowSize.current[0]));
34192
- var _useState = useState(0),
34193
- chunkIndex = _useState[0],
34194
- setChunkIndex = _useState[1];
34195
- var onHandleSpacePress = function onHandleSpacePress(event) {
34196
- if (event.code === 'Space') {
34197
- goToNextStep();
34198
- }
34199
- };
34200
- var goToNextStep = function goToNextStep() {
34201
- var hasNextChunk = (textChunks == null ? void 0 : textChunks[chunkIndex + 1]) || false;
34202
- if (hasNextChunk) {
34203
- setChunkIndex(function (prev) {
34204
- return prev + 1;
34205
- });
34206
- } else {
34207
- // if there's no more text chunks, close the dialog
34208
- onClose();
34209
- }
34210
- };
34211
- useEffect(function () {
34212
- document.addEventListener('keydown', onHandleSpacePress);
34213
- return function () {
34214
- return document.removeEventListener('keydown', onHandleSpacePress);
34215
- };
34216
- }, [chunkIndex]);
34217
- var _useState2 = useState(false),
34218
- showGoNextIndicator = _useState2[0],
34219
- setShowGoNextIndicator = _useState2[1];
34220
- return React.createElement(Container$b, null, React.createElement(DynamicText, {
34221
- text: (textChunks == null ? void 0 : textChunks[chunkIndex]) || '',
34222
- onFinish: function onFinish() {
34223
- setShowGoNextIndicator(true);
34224
- onEndStep && onEndStep();
34225
- },
34226
- onStart: function onStart() {
34227
- setShowGoNextIndicator(false);
34228
- onStartStep && onStartStep();
34229
- }
34230
- }), showGoNextIndicator && React.createElement(PressSpaceIndicator, {
34231
- right: type === NPCDialogType.TextOnly ? '1rem' : '10.5rem',
34232
- src: IS_MOBILE_OR_TABLET ? img$6 : img$7,
34233
- onPointerDown: function onPointerDown() {
34234
- goToNextStep();
34235
- }
34236
- }));
34237
- };
34238
- var Container$b = /*#__PURE__*/styled.div.withConfig({
34239
- displayName: "NPCDialogText__Container",
34240
- componentId: "sc-1cxkdh9-0"
34241
- })([""]);
34242
- var PressSpaceIndicator = /*#__PURE__*/styled.img.withConfig({
34243
- displayName: "NPCDialogText__PressSpaceIndicator",
34244
- componentId: "sc-1cxkdh9-1"
34245
- })(["position:absolute;right:", ";bottom:1rem;height:20.7px;image-rendering:-webkit-optimize-contrast;"], function (_ref2) {
34246
- var right = _ref2.right;
34247
- return right;
34248
- });
34249
-
34250
- //@ts-ignore
34251
- var useEventListener = function useEventListener(type, handler, el) {
34252
- if (el === void 0) {
34253
- el = window;
34254
- }
34255
- var savedHandler = React.useRef();
34256
- React.useEffect(function () {
34257
- savedHandler.current = handler;
34258
- }, [handler]);
34259
- React.useEffect(function () {
34260
- //@ts-ignore
34261
- var listener = function listener(e) {
34262
- return savedHandler.current(e);
34263
- };
34264
- el.addEventListener(type, listener);
34265
- return function () {
34266
- el.removeEventListener(type, listener);
34267
- };
34268
- }, [type, el]);
34269
- };
34270
-
34271
- var QuestionDialog = function QuestionDialog(_ref) {
34272
- var questions = _ref.questions,
34273
- answers = _ref.answers,
34274
- onClose = _ref.onClose;
34275
- var _useState = useState(questions[0]),
34276
- currentQuestion = _useState[0],
34277
- setCurrentQuestion = _useState[1];
34278
- var _useState2 = useState(false),
34279
- canShowAnswers = _useState2[0],
34280
- setCanShowAnswers = _useState2[1];
34281
- var onGetFirstAnswer = function onGetFirstAnswer() {
34282
- if (!currentQuestion.answerIds || currentQuestion.answerIds.length === 0) {
34283
- return null;
34284
- }
34285
- var firstAnswerId = currentQuestion.answerIds[0];
34286
- return answers.find(function (answer) {
34287
- return answer.id === firstAnswerId;
34288
- });
34289
- };
34290
- var _useState3 = useState(onGetFirstAnswer()),
34291
- currentAnswer = _useState3[0],
34292
- setCurrentAnswer = _useState3[1];
34293
- useEffect(function () {
34294
- setCurrentAnswer(onGetFirstAnswer());
34295
- }, [currentQuestion]);
34296
- var onGetAnswers = function onGetAnswers(answerIds) {
34297
- return answerIds.map(function (answerId) {
34298
- return answers.find(function (answer) {
34299
- return answer.id === answerId;
34300
- });
34301
- });
34302
- };
34303
- var onKeyPress = function onKeyPress(e) {
34304
- switch (e.key) {
34305
- case 'ArrowDown':
34306
- // select next answer, if any.
34307
- // if no next answer, select first answer
34308
- // const nextAnswer = onGetAnswers(currentQuestion.answerIds!).find(
34309
- // (answer) => answer?.id === currentAnswer!.id + 1
34310
- // );
34311
- var nextAnswerIndex = onGetAnswers(currentQuestion.answerIds).findIndex(function (answer) {
34312
- return (answer == null ? void 0 : answer.id) === currentAnswer.id + 1;
34313
- });
34314
- var nextAnswerID = currentQuestion.answerIds[nextAnswerIndex];
34315
- var nextAnswer = onGetAnswers(currentQuestion.answerIds).find(function (answer) {
34316
- return (answer == null ? void 0 : answer.id) === nextAnswerID;
34317
- });
34318
- setCurrentAnswer(nextAnswer || onGetFirstAnswer());
34319
- break;
34320
- case 'ArrowUp':
34321
- // select previous answer, if any.
34322
- // if no previous answer, select last answer
34323
- var previousAnswerIndex = onGetAnswers(currentQuestion.answerIds).findIndex(function (answer) {
34324
- return (answer == null ? void 0 : answer.id) === currentAnswer.id - 1;
34325
- });
34326
- var previousAnswerID = currentQuestion.answerIds && currentQuestion.answerIds[previousAnswerIndex];
34327
- var previousAnswer = onGetAnswers(currentQuestion.answerIds).find(function (answer) {
34328
- return (answer == null ? void 0 : answer.id) === previousAnswerID;
34329
- });
34330
- if (previousAnswer) {
34331
- setCurrentAnswer(previousAnswer);
34332
- } else {
34333
- setCurrentAnswer(onGetAnswers(currentQuestion.answerIds).pop());
34334
- }
34335
- break;
34336
- case 'Enter':
34337
- setCanShowAnswers(false);
34338
- if (!(currentAnswer != null && currentAnswer.nextQuestionId)) {
34339
- onClose();
34340
- return;
34341
- } else {
34342
- setCurrentQuestion(questions.find(function (question) {
34343
- return question.id === currentAnswer.nextQuestionId;
34344
- }));
34345
- }
34346
- break;
34347
- }
34348
- };
34349
- useEventListener('keydown', onKeyPress);
34350
- var onAnswerClick = function onAnswerClick(answer) {
34351
- setCanShowAnswers(false);
34352
- if (answer.nextQuestionId) {
34353
- // if there is a next question, go to it
34354
- setCurrentQuestion(questions.find(function (question) {
34355
- return question.id === answer.nextQuestionId;
34356
- }));
34357
- } else {
34358
- // else, finish dialog!
34359
- onClose();
34360
- }
34361
- };
34362
- var onRenderCurrentAnswers = function onRenderCurrentAnswers() {
34363
- var answerIds = currentQuestion.answerIds;
34364
- if (!answerIds) {
34365
- return null;
34366
- }
34367
- var answers = onGetAnswers(answerIds);
34368
- if (!answers) {
34369
- return null;
34370
- }
34371
- return answers.map(function (answer) {
34372
- var isSelected = (currentAnswer == null ? void 0 : currentAnswer.id) === (answer == null ? void 0 : answer.id);
34373
- var selectedColor = isSelected ? 'yellow' : 'white';
34374
- if (answer) {
34375
- return React.createElement(AnswerRow, {
34376
- key: "answer_" + answer.id
34377
- }, React.createElement(AnswerSelectedIcon, {
34378
- color: selectedColor
34379
- }, isSelected ? 'X' : null), React.createElement(Answer, {
34380
- key: answer.id,
34381
- onPointerDown: function onPointerDown() {
34382
- return onAnswerClick(answer);
34383
- },
34384
- color: selectedColor
34385
- }, answer.text));
34386
- }
34387
- return null;
34388
- });
34389
- };
34390
- return React.createElement(Container$c, null, React.createElement(QuestionContainer, null, React.createElement(DynamicText, {
34391
- text: currentQuestion.text,
34392
- onStart: function onStart() {
34393
- return setCanShowAnswers(false);
34394
- },
34395
- onFinish: function onFinish() {
34396
- return setCanShowAnswers(true);
34397
- }
34398
- })), canShowAnswers && React.createElement(AnswersContainer, null, onRenderCurrentAnswers()));
34399
- };
34400
- var Container$c = /*#__PURE__*/styled.div.withConfig({
34401
- displayName: "QuestionDialog__Container",
34402
- componentId: "sc-bxc5u0-0"
34403
- })(["display:flex;word-break:break-all;box-sizing:border-box;justify-content:flex-start;align-items:flex-start;flex-wrap:wrap;"]);
34404
- var QuestionContainer = /*#__PURE__*/styled.div.withConfig({
34405
- displayName: "QuestionDialog__QuestionContainer",
34406
- componentId: "sc-bxc5u0-1"
34407
- })(["flex:100%;width:100%;"]);
34408
- var AnswersContainer = /*#__PURE__*/styled.div.withConfig({
34409
- displayName: "QuestionDialog__AnswersContainer",
34410
- componentId: "sc-bxc5u0-2"
34411
- })(["flex:100%;"]);
34412
- var Answer = /*#__PURE__*/styled.p.withConfig({
34413
- displayName: "QuestionDialog__Answer",
34414
- componentId: "sc-bxc5u0-3"
34415
- })(["flex:auto;color:", " !important;font-size:0.65rem !important;background:inherit;border:none;"], function (props) {
34416
- return props.color;
34417
- });
34418
- var AnswerSelectedIcon = /*#__PURE__*/styled.span.withConfig({
34419
- displayName: "QuestionDialog__AnswerSelectedIcon",
34420
- componentId: "sc-bxc5u0-4"
34421
- })(["flex:5% 0 0;color:", " !important;"], function (props) {
34422
- return props.color;
34423
- });
34424
- var AnswerRow = /*#__PURE__*/styled.div.withConfig({
34425
- displayName: "QuestionDialog__AnswerRow",
34426
- componentId: "sc-bxc5u0-5"
34427
- })(["display:flex;flex-wrap:wrap;justify-content:center;align-items:center;margin-bottom:0.5rem;height:22px;p{line-height:unset;margin-top:0;margin-bottom:0rem;}"]);
34428
-
34429
- var img$8 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAP1BMVEUAAAA7FyVxQTsUEBPj5v////+5v/tCJDOOUlIiHBr1oJfptaO6dWr61rhzFy1bMTjoanMUNGQoXMQkn97+88DQ3IhAAAAAAXRSTlMAQObYZgAAAAFiS0dEBfhv6ccAAAAHdElNRQfmAw4VOBC7c5LYAAABM0lEQVQ4y3XRi5KDIAwFUAUkbrBgpP//rZsHVHQ009qZ3tPboNN0zmwzvcw8O5sX4y0NOg/Et3jRCXF+ziULorjkOQ9gE24dvuUAzq08DiCO4pe3WN7zCP56vmpubBReQYC11YPS86ySxxCsAABTSgjb5m4g8nfbxvFHBkH2OEEvAItVuCuIsgGgl+Gcr7kDXxhEAx55A2SQEEeQeZwUaIP8Tbo05B0RFPhItAjgj1w6cDnhLluDj+Egkh3pCCP4pKQAw1IPO0W9Nti5gW9RP2dKA3BZd2Dw+baYX+Nt4GM00O4S3kEpF6Alb2Bv4LeC3kkGfAW0/p0RPoJVKr63ghHsKuRh5DIUKOAlGOwrtt9fQekAEfmhZslHUDoglB0zjfkJigN7UnTQQ4GBWomoVhEN/AOPSBh38gy+fwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0wMy0xNFQyMTo1NTo1MSswMDowMJcc0eEAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMDMtMTRUMjE6NTU6NTErMDA6MDDmQWldAAAAAElFTkSuQmCC';
34430
-
34431
- var NPCDialogType;
34432
- (function (NPCDialogType) {
34433
- NPCDialogType["TextOnly"] = "TextOnly";
34434
- NPCDialogType["TextAndThumbnail"] = "TextAndThumbnail";
34435
- })(NPCDialogType || (NPCDialogType = {}));
34436
- var NPCDialog = function NPCDialog(_ref) {
34437
- var text = _ref.text,
34438
- type = _ref.type,
34439
- _onClose = _ref.onClose,
34440
- imagePath = _ref.imagePath,
34441
- _ref$isQuestionDialog = _ref.isQuestionDialog,
34442
- isQuestionDialog = _ref$isQuestionDialog === void 0 ? false : _ref$isQuestionDialog,
34443
- questions = _ref.questions,
34444
- answers = _ref.answers;
34445
- return React.createElement(RPGUIContainer, {
34446
- type: RPGUIContainerTypes.FramedGold,
34447
- width: isQuestionDialog ? '600px' : '80%',
34448
- height: '180px'
34449
- }, isQuestionDialog && questions && answers ? React.createElement(React.Fragment, null, React.createElement(TextContainer$1, {
34450
- flex: type === NPCDialogType.TextAndThumbnail ? '70%' : '100%'
34451
- }, React.createElement(QuestionDialog, {
34452
- questions: questions,
34453
- answers: answers,
34454
- onClose: function onClose() {
34455
- if (_onClose) {
34456
- _onClose();
34457
- }
34458
- }
34459
- })), type === NPCDialogType.TextAndThumbnail && React.createElement(ThumbnailContainer, null, React.createElement(NPCThumbnail, {
34460
- src: imagePath || img$8
34461
- }))) : React.createElement(React.Fragment, null, React.createElement(Container$d, null, React.createElement(TextContainer$1, {
34462
- flex: type === NPCDialogType.TextAndThumbnail ? '70%' : '100%'
34463
- }, React.createElement(NPCDialogText, {
34464
- type: type,
34465
- text: text || 'No text provided.',
34466
- onClose: function onClose() {
34467
- if (_onClose) {
34468
- _onClose();
34469
- }
34470
- }
34471
- })), type === NPCDialogType.TextAndThumbnail && React.createElement(ThumbnailContainer, null, React.createElement(NPCThumbnail, {
34472
- src: imagePath || img$8
34473
- })))));
34474
- };
34475
- var Container$d = /*#__PURE__*/styled.div.withConfig({
34476
- displayName: "NPCDialog__Container",
34477
- componentId: "sc-1b4aw74-0"
34478
- })(["display:flex;width:100%;height:100%;box-sizing:border-box;justify-content:center;align-items:flex-start;position:relative;"]);
34479
- var TextContainer$1 = /*#__PURE__*/styled.div.withConfig({
34480
- displayName: "NPCDialog__TextContainer",
34481
- componentId: "sc-1b4aw74-1"
34482
- })(["flex:", " 0 0;width:355px;"], function (_ref2) {
34483
- var flex = _ref2.flex;
34484
- return flex;
34485
- });
34486
- var ThumbnailContainer = /*#__PURE__*/styled.div.withConfig({
34487
- displayName: "NPCDialog__ThumbnailContainer",
34488
- componentId: "sc-1b4aw74-2"
34489
- })(["flex:30% 0 0;display:flex;justify-content:flex-end;"]);
34490
- var NPCThumbnail = /*#__PURE__*/styled.img.withConfig({
34491
- displayName: "NPCDialog__NPCThumbnail",
34492
- componentId: "sc-1b4aw74-3"
34493
- })(["image-rendering:pixelated;height:128px;width:128px;"]);
34494
-
34495
- var ImgSide;
34496
- (function (ImgSide) {
34497
- ImgSide["right"] = "right";
34498
- ImgSide["left"] = "left";
34499
- })(ImgSide || (ImgSide = {}));
34500
- var NPCMultiDialog = function NPCMultiDialog(_ref) {
34501
- var _textAndTypeArray$sli;
34502
- var _onClose = _ref.onClose,
34503
- textAndTypeArray = _ref.textAndTypeArray;
34504
- var _useState = useState(false),
34505
- showGoNextIndicator = _useState[0],
34506
- setShowGoNextIndicator = _useState[1];
34507
- var _useState2 = useState(0),
34508
- slide = _useState2[0],
34509
- setSlide = _useState2[1];
34510
- var onHandleSpacePress = function onHandleSpacePress(event) {
34511
- if (event.code === 'Space') {
34512
- if (slide < (textAndTypeArray == null ? void 0 : textAndTypeArray.length) - 1) {
34513
- setSlide(function (prev) {
34514
- return prev + 1;
34515
- });
34516
- } else {
34517
- // if there's no more text chunks, close the dialog
34518
- _onClose();
34519
- }
34520
- }
34521
- };
34522
- useEffect(function () {
34523
- document.addEventListener('keydown', onHandleSpacePress);
34524
- return function () {
34525
- return document.removeEventListener('keydown', onHandleSpacePress);
34526
- };
34527
- }, [slide]);
34528
- return React.createElement(RPGUIContainer, {
34529
- type: RPGUIContainerTypes.FramedGold,
34530
- width: '50%',
34531
- height: '180px'
34532
- }, React.createElement(React.Fragment, null, React.createElement(Container$e, null, ((_textAndTypeArray$sli = textAndTypeArray[slide]) == null ? void 0 : _textAndTypeArray$sli.imageSide) === 'right' && React.createElement(React.Fragment, null, React.createElement(TextContainer$2, {
34533
- flex: '70%'
34534
- }, React.createElement(NPCDialogText, {
34535
- onStartStep: function onStartStep() {
34536
- return setShowGoNextIndicator(false);
34537
- },
34538
- onEndStep: function onEndStep() {
34539
- return setShowGoNextIndicator(true);
34540
- },
34541
- text: textAndTypeArray[slide].text || 'No text provided.',
34542
- onClose: function onClose() {
34543
- if (_onClose) {
34544
- _onClose();
34545
- }
34546
- }
34547
- })), React.createElement(ThumbnailContainer$1, null, React.createElement(NPCThumbnail$1, {
34548
- src: textAndTypeArray[slide].imagePath || img$8
34549
- })), showGoNextIndicator && React.createElement(PressSpaceIndicator$1, {
34550
- right: '10.5rem',
34551
- src: img$7
34552
- })), textAndTypeArray[slide].imageSide === 'left' && React.createElement(React.Fragment, null, React.createElement(ThumbnailContainer$1, null, React.createElement(NPCThumbnail$1, {
34553
- src: textAndTypeArray[slide].imagePath || img$8
34554
- })), React.createElement(TextContainer$2, {
34555
- flex: '70%'
34556
- }, React.createElement(NPCDialogText, {
34557
- onStartStep: function onStartStep() {
34558
- return setShowGoNextIndicator(false);
34559
- },
34560
- onEndStep: function onEndStep() {
34561
- return setShowGoNextIndicator(true);
34562
- },
34563
- text: textAndTypeArray[slide].text || 'No text provided.',
34564
- onClose: function onClose() {
34565
- if (_onClose) {
34566
- _onClose();
34567
- }
34568
- }
34569
- })), showGoNextIndicator && React.createElement(PressSpaceIndicator$1, {
34570
- right: '1rem',
34571
- src: img$7
34572
- }))), ")"));
34573
- };
34574
- var Container$e = /*#__PURE__*/styled.div.withConfig({
34575
- displayName: "NPCMultiDialog__Container",
34576
- componentId: "sc-rvu5wg-0"
34577
- })(["display:flex;width:100%;height:100%;box-sizing:border-box;justify-content:center;align-items:flex-start;position:relative;"]);
34578
- var TextContainer$2 = /*#__PURE__*/styled.div.withConfig({
34579
- displayName: "NPCMultiDialog__TextContainer",
34580
- componentId: "sc-rvu5wg-1"
34581
- })(["flex:", " 0 0;width:355px;"], function (_ref2) {
34582
- var flex = _ref2.flex;
34583
- return flex;
34584
- });
34585
- var ThumbnailContainer$1 = /*#__PURE__*/styled.div.withConfig({
34586
- displayName: "NPCMultiDialog__ThumbnailContainer",
34587
- componentId: "sc-rvu5wg-2"
34588
- })(["flex:30% 0 0;display:flex;justify-content:flex-end;"]);
34589
- var NPCThumbnail$1 = /*#__PURE__*/styled.img.withConfig({
34590
- displayName: "NPCMultiDialog__NPCThumbnail",
34591
- componentId: "sc-rvu5wg-3"
34592
- })(["image-rendering:pixelated;height:128px;width:128px;"]);
34593
- var PressSpaceIndicator$1 = /*#__PURE__*/styled.img.withConfig({
34594
- displayName: "NPCMultiDialog__PressSpaceIndicator",
34595
- componentId: "sc-rvu5wg-4"
34596
- })(["position:absolute;right:", ";bottom:1rem;height:20.7px;image-rendering:-webkit-optimize-contrast;"], function (_ref3) {
34597
- var right = _ref3.right;
34598
- return right;
34599
- });
34600
-
34601
- var HistoryDialog = function HistoryDialog(_ref) {
34602
- var backgroundImgPath = _ref.backgroundImgPath,
34603
- fullCoverBackground = _ref.fullCoverBackground,
34604
- questions = _ref.questions,
34605
- answers = _ref.answers,
34606
- text = _ref.text,
34607
- imagePath = _ref.imagePath,
34608
- textAndTypeArray = _ref.textAndTypeArray,
34609
- onClose = _ref.onClose;
34610
- var _useState = useState(0),
34611
- img = _useState[0],
34612
- setImage = _useState[1];
34613
- var onHandleSpacePress = function onHandleSpacePress(event) {
34614
- if (event.code === 'Space') {
34615
- if (img < (backgroundImgPath == null ? void 0 : backgroundImgPath.length) - 1) {
34616
- setImage(function (prev) {
34617
- return prev + 1;
34618
- });
34619
- } else {
34620
- // if there's no more text chunks, close the dialog
34621
- onClose();
34622
- }
34623
- }
34624
- };
34625
- useEffect(function () {
34626
- document.addEventListener('keydown', onHandleSpacePress);
34627
- return function () {
34628
- return document.removeEventListener('keydown', onHandleSpacePress);
34629
- };
34630
- }, [backgroundImgPath]);
34631
- return React.createElement(BackgroundContainer, {
34632
- imgPath: backgroundImgPath[img],
34633
- fullImg: fullCoverBackground
34634
- }, React.createElement(DialogContainer, null, textAndTypeArray ? React.createElement(NPCMultiDialog, {
34635
- textAndTypeArray: textAndTypeArray,
34636
- onClose: onClose
34637
- }) : questions && answers ? React.createElement(QuestionDialog, {
34638
- questions: questions,
34639
- answers: answers,
34640
- onClose: onClose
34641
- }) : text && imagePath ? React.createElement(NPCDialog, {
34642
- text: text,
34643
- imagePath: imagePath,
34644
- onClose: onClose,
34645
- type: NPCDialogType.TextAndThumbnail
34646
- }) : React.createElement(NPCDialog, {
34647
- text: text,
34648
- onClose: onClose,
34649
- type: NPCDialogType.TextOnly
34650
- })));
34651
- };
34652
- var BackgroundContainer = /*#__PURE__*/styled.div.withConfig({
34653
- displayName: "HistoryDialog__BackgroundContainer",
34654
- componentId: "sc-u6oe75-0"
34655
- })(["width:100%;height:100%;background-image:url(", ");background-size:", ";display:flex;justify-content:space-evenly;align-items:center;"], function (props) {
34656
- return props.imgPath;
34657
- }, function (props) {
34658
- return props.imgPath ? 'cover' : 'auto';
34659
- });
34660
- var DialogContainer = /*#__PURE__*/styled.div.withConfig({
34661
- displayName: "HistoryDialog__DialogContainer",
34662
- componentId: "sc-u6oe75-1"
34663
- })(["display:flex;justify-content:center;padding-top:200px;"]);
34664
-
34665
34134
  var SlotsContainer = function SlotsContainer(_ref) {
34666
34135
  var children = _ref.children,
34667
34136
  title = _ref.title,
@@ -34677,8 +34146,8 @@ var SlotsContainer = function SlotsContainer(_ref) {
34677
34146
  onClose();
34678
34147
  }
34679
34148
  },
34680
- width: "330px",
34681
- cancelDrag: ".item-container-body",
34149
+ width: "400px",
34150
+ cancelDrag: ".item-container-body, #shortcuts_list",
34682
34151
  onPositionChange: function onPositionChange(_ref2) {
34683
34152
  var x = _ref2.x,
34684
34153
  y = _ref2.y;
@@ -34849,6 +34318,72 @@ var CloseButton$2 = /*#__PURE__*/styled.div.withConfig({
34849
34318
  componentId: "sc-yfdtpn-3"
34850
34319
  })(["position:absolute;top:3px;right:0px;color:white;z-index:22;font-size:0.8rem;"]);
34851
34320
 
34321
+ var ShortcutsSetter = function ShortcutsSetter(_ref) {
34322
+ var setSettingShortcutIndex = _ref.setSettingShortcutIndex,
34323
+ settingShortcutIndex = _ref.settingShortcutIndex,
34324
+ shortcuts = _ref.shortcuts,
34325
+ removeShortcut = _ref.removeShortcut,
34326
+ atlasJSON = _ref.atlasJSON,
34327
+ atlasIMG = _ref.atlasIMG;
34328
+ var getContent = function getContent(index) {
34329
+ var _shortcuts$index, _shortcuts$index3;
34330
+ if (((_shortcuts$index = shortcuts[index]) == null ? void 0 : _shortcuts$index.type) === ShortcutType.Item) {
34331
+ var _shortcuts$index2;
34332
+ var _payload = (_shortcuts$index2 = shortcuts[index]) == null ? void 0 : _shortcuts$index2.payload;
34333
+ if (!_payload) return null;
34334
+ return React.createElement(SpriteFromAtlas, {
34335
+ atlasIMG: atlasIMG,
34336
+ atlasJSON: atlasJSON,
34337
+ spriteKey: getItemTextureKeyPath({
34338
+ key: _payload.texturePath,
34339
+ texturePath: _payload.texturePath,
34340
+ stackQty: _payload.stackQty || 1
34341
+ }, atlasJSON),
34342
+ width: 32,
34343
+ height: 32,
34344
+ imgScale: 1.6,
34345
+ imgStyle: {
34346
+ left: '5px'
34347
+ }
34348
+ });
34349
+ }
34350
+ var payload = (_shortcuts$index3 = shortcuts[index]) == null ? void 0 : _shortcuts$index3.payload;
34351
+ return React.createElement("span", null, payload == null ? void 0 : payload.magicWords.split(' ').map(function (word) {
34352
+ return word[0];
34353
+ }));
34354
+ };
34355
+ return React.createElement(Container$b, null, React.createElement("p", null, "Shortcuts:"), React.createElement(List, {
34356
+ id: "shortcuts_list"
34357
+ }, Array.from({
34358
+ length: 6
34359
+ }).map(function (_, i) {
34360
+ return React.createElement(Shortcut, {
34361
+ key: i,
34362
+ onPointerDown: function onPointerDown() {
34363
+ removeShortcut(i);
34364
+ if (!shortcuts[i] || shortcuts[i].type === ShortcutType.None) setSettingShortcutIndex(i);
34365
+ },
34366
+ disabled: settingShortcutIndex !== -1 && settingShortcutIndex !== i,
34367
+ isBeingSet: settingShortcutIndex === i
34368
+ }, getContent(i));
34369
+ })));
34370
+ };
34371
+ var Container$b = /*#__PURE__*/styled.div.withConfig({
34372
+ displayName: "ShortcutsSetter__Container",
34373
+ componentId: "sc-xuouuf-0"
34374
+ })(["p{margin:0;margin-left:0.5rem;}"]);
34375
+ var Shortcut = /*#__PURE__*/styled.button.withConfig({
34376
+ displayName: "ShortcutsSetter__Shortcut",
34377
+ componentId: "sc-xuouuf-1"
34378
+ })(["width:2.6rem;height:2.6rem;background-color:", ";border:2px solid ", ";border-radius:50%;text-transform:uppercase;font-size:0.7rem;font-weight:bold;display:flex;align-items:center;justify-content:center;span{margin-top:4px;}&:hover,&:focus{background-color:", ";}&:active{background-color:", ";}&:disabled{opacity:0.5;}"], uiColors.lightGray, function (_ref2) {
34379
+ var isBeingSet = _ref2.isBeingSet;
34380
+ return isBeingSet ? uiColors.yellow : uiColors.darkGray;
34381
+ }, uiColors.darkGray, uiColors.gray);
34382
+ var List = /*#__PURE__*/styled.div.withConfig({
34383
+ displayName: "ShortcutsSetter__List",
34384
+ componentId: "sc-xuouuf-2"
34385
+ })(["width:100%;display:flex;align-items:center;gap:0.5rem;padding-bottom:0.5rem;padding-left:0.5rem;box-sizing:border-box;margin:0 !important;"]);
34386
+
34852
34387
  var ItemContainer$1 = function ItemContainer(_ref) {
34853
34388
  var itemContainer = _ref.itemContainer,
34854
34389
  onClose = _ref.onClose,
@@ -34867,7 +34402,10 @@ var ItemContainer$1 = function ItemContainer(_ref) {
34867
34402
  checkIfItemCanBeMoved = _ref.checkIfItemCanBeMoved,
34868
34403
  initialPosition = _ref.initialPosition,
34869
34404
  checkIfItemShouldDragEnd = _ref.checkIfItemShouldDragEnd,
34870
- dragScale = _ref.dragScale;
34405
+ dragScale = _ref.dragScale,
34406
+ shortcuts = _ref.shortcuts,
34407
+ setItemShortcut = _ref.setItemShortcut,
34408
+ removeShortcut = _ref.removeShortcut;
34871
34409
  var _useState = useState({
34872
34410
  isOpen: false,
34873
34411
  maxQuantity: 1,
@@ -34875,6 +34413,9 @@ var ItemContainer$1 = function ItemContainer(_ref) {
34875
34413
  }),
34876
34414
  quantitySelect = _useState[0],
34877
34415
  setQuantitySelect = _useState[1];
34416
+ var _useState2 = useState(-1),
34417
+ settingShortcutIndex = _useState2[0],
34418
+ setSettingShortcutIndex = _useState2[1];
34878
34419
  var onRenderSlots = function onRenderSlots() {
34879
34420
  var slots = [];
34880
34421
  for (var i = 0; i < itemContainer.slotQty; i++) {
@@ -34888,8 +34429,13 @@ var ItemContainer$1 = function ItemContainer(_ref) {
34888
34429
  onMouseOver: function onMouseOver(event, slotIndex, item) {
34889
34430
  if (_onMouseOver) _onMouseOver(event, slotIndex, item);
34890
34431
  },
34891
- onPointerDown: function onPointerDown(ItemType, ContainerType, item) {
34892
- if (onItemClick) onItemClick(item, ItemType, ContainerType);
34432
+ onPointerDown: function onPointerDown(itemType, containerType, item) {
34433
+ if (settingShortcutIndex !== -1) {
34434
+ setSettingShortcutIndex(-1);
34435
+ if (itemType === ItemType.Consumable || itemType === ItemType.Tool) {
34436
+ setItemShortcut == null ? void 0 : setItemShortcut(item.key, settingShortcutIndex);
34437
+ }
34438
+ } else if (onItemClick) onItemClick(item, itemType, containerType);
34893
34439
  },
34894
34440
  onSelected: function onSelected(optionId, item) {
34895
34441
  if (_onSelected) _onSelected(optionId, item);
@@ -34917,7 +34463,8 @@ var ItemContainer$1 = function ItemContainer(_ref) {
34917
34463
  if (_onOutsideDrop) _onOutsideDrop(item, position);
34918
34464
  },
34919
34465
  atlasIMG: atlasIMG,
34920
- atlasJSON: atlasJSON
34466
+ atlasJSON: atlasJSON,
34467
+ isSelectingShortcut: settingShortcutIndex !== -1
34921
34468
  }));
34922
34469
  }
34923
34470
  return slots;
@@ -34926,7 +34473,14 @@ var ItemContainer$1 = function ItemContainer(_ref) {
34926
34473
  title: itemContainer.name || 'Container',
34927
34474
  onClose: onClose,
34928
34475
  initialPosition: initialPosition
34929
- }, React.createElement(ItemsContainer, {
34476
+ }, type === ItemContainerType.Inventory && shortcuts && removeShortcut && React.createElement(ShortcutsSetter, {
34477
+ setSettingShortcutIndex: setSettingShortcutIndex,
34478
+ settingShortcutIndex: settingShortcutIndex,
34479
+ shortcuts: shortcuts,
34480
+ removeShortcut: removeShortcut,
34481
+ atlasIMG: atlasIMG,
34482
+ atlasJSON: atlasJSON
34483
+ }), React.createElement(ItemsContainer, {
34930
34484
  className: "item-container-body"
34931
34485
  }, onRenderSlots())), quantitySelect.isOpen && React.createElement(QuantitySelectorContainer, null, React.createElement(ItemQuantitySelector, {
34932
34486
  quantity: quantitySelect.maxQuantity,
@@ -34951,7 +34505,7 @@ var ItemContainer$1 = function ItemContainer(_ref) {
34951
34505
  var ItemsContainer = /*#__PURE__*/styled.div.withConfig({
34952
34506
  displayName: "ItemContainer__ItemsContainer",
34953
34507
  componentId: "sc-15y5p9l-0"
34954
- })(["max-width:280px;display:flex;justify-content:center;flex-wrap:wrap;"]);
34508
+ })(["display:flex;justify-content:center;flex-wrap:wrap;"]);
34955
34509
  var QuantitySelectorContainer = /*#__PURE__*/styled.div.withConfig({
34956
34510
  displayName: "ItemContainer__QuantitySelectorContainer",
34957
34511
  componentId: "sc-15y5p9l-1"
@@ -35048,7 +34602,7 @@ var ListMenu = function ListMenu(_ref) {
35048
34602
  onSelected = _ref.onSelected,
35049
34603
  x = _ref.x,
35050
34604
  y = _ref.y;
35051
- return React.createElement(Container$f, {
34605
+ return React.createElement(Container$c, {
35052
34606
  x: x,
35053
34607
  y: y
35054
34608
  }, React.createElement("ul", {
@@ -35065,7 +34619,7 @@ var ListMenu = function ListMenu(_ref) {
35065
34619
  }, (params == null ? void 0 : params.text) || 'No text');
35066
34620
  })));
35067
34621
  };
35068
- var Container$f = /*#__PURE__*/styled.div.withConfig({
34622
+ var Container$c = /*#__PURE__*/styled.div.withConfig({
35069
34623
  displayName: "ListMenu__Container",
35070
34624
  componentId: "sc-i9097t-0"
35071
34625
  })(["display:flex;flex-direction:column;width:100%;justify-content:start;align-items:flex-start;position:absolute;top:", "px;left:", "px;li{font-size:", ";}"], function (props) {
@@ -35078,6 +34632,332 @@ var ListElement$1 = /*#__PURE__*/styled.li.withConfig({
35078
34632
  componentId: "sc-i9097t-1"
35079
34633
  })(["margin-right:0.5rem;"]);
35080
34634
 
34635
+ var img$6 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAP1BMVEUAAAA7FyVxQTsUEBPj5v////+5v/tCJDOOUlIiHBr1oJfptaO6dWr61rhzFy1bMTjoanMUNGQoXMQkn97+88DQ3IhAAAAAAXRSTlMAQObYZgAAAAFiS0dEBfhv6ccAAAAHdElNRQfmAw4VOBC7c5LYAAABM0lEQVQ4y3XRi5KDIAwFUAUkbrBgpP//rZsHVHQ009qZ3tPboNN0zmwzvcw8O5sX4y0NOg/Et3jRCXF+ziULorjkOQ9gE24dvuUAzq08DiCO4pe3WN7zCP56vmpubBReQYC11YPS86ySxxCsAABTSgjb5m4g8nfbxvFHBkH2OEEvAItVuCuIsgGgl+Gcr7kDXxhEAx55A2SQEEeQeZwUaIP8Tbo05B0RFPhItAjgj1w6cDnhLluDj+Egkh3pCCP4pKQAw1IPO0W9Nti5gW9RP2dKA3BZd2Dw+baYX+Nt4GM00O4S3kEpF6Alb2Bv4LeC3kkGfAW0/p0RPoJVKr63ghHsKuRh5DIUKOAlGOwrtt9fQekAEfmhZslHUDoglB0zjfkJigN7UnTQQ4GBWomoVhEN/AOPSBh38gy+fwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0wMy0xNFQyMTo1NTo1MSswMDowMJcc0eEAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMDMtMTRUMjE6NTU6NTErMDA6MDDmQWldAAAAAElFTkSuQmCC';
34636
+
34637
+ var img$7 = 'data:image/gif;base64,R0lGODlhQAAgAPIAAAAAAA0NDRERESIiIigoKFlZWf///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtJbWFnZU1hZ2ljaw5nYW1tYT0wLjQ1NDU0NQAh+QQBFAAAACwAAAAAQAAgAAAD/wi63P4wykmrvTjrzbv/YAgIZGmeaKquakQWcCzPdG3fNukIeO//PQGDBywafcIF8chswpKKZcxApTqvNOiIZi0YsODncFaFlcNOrdTbJVff0/c3Lp/Xs2N37cy2ndt6ZnhKXHdsc4d7VnwyfIxqPWWOXXWLgHSGYoSNbZKVZp2WiJyjg1GFcaClqaqJhasyUAFrh3Cur3KqubWXBQIBAAEDtDeMaEEDAcLEx2gCycvN0jHPysPT09XR2M3a19zH3gTM4EYCBNDD4yzs7e4r48nB6gT19vf4+fr7/P3P8sKGvRtIkMUAeQoCHlzIsKHDhxAjSoTWQJnFixgzatzIsQWjRQYJAAAh/wtJbWFnZU1hZ2ljaw5nYW1tYT0wLjQ1NDU0NQAh+QQBFAAAACwAAAAAQAAgAAAD8Ai63P4wykmrvTjrzbv/YCiOlGCeaKqubMtGZiHPdG3feI6bjqD/wOBPwPAJj0ggcWFMOp+ypaI5M1it0KxNCqDKsAWDdhwt1q5fMPnJ9aJt17g4HafJ3/et+Tzn99V+aThqfTNtcHlhhIBVWG+BdDSHOmiPeHdij3aYhZONf46YkZGanzpSAV6KjaOIpqWtNwIBAAEDqqKKhZuJnHSwAgMBtqo5sGs5wcO3yM01ysTO0gXQzNPN1cXXUNnbyNna3kcmwrW3Lujp6ugD5bbn6/HyLe20Cu/t+fr7/P3+/wCF2VswrKDBgwgTKlzIsCCDBAA7';
34638
+
34639
+ var ImgSide;
34640
+ (function (ImgSide) {
34641
+ ImgSide["right"] = "right";
34642
+ ImgSide["left"] = "left";
34643
+ })(ImgSide || (ImgSide = {}));
34644
+ var NPCMultiDialog = function NPCMultiDialog(_ref) {
34645
+ var _textAndTypeArray$sli;
34646
+ var _onClose = _ref.onClose,
34647
+ textAndTypeArray = _ref.textAndTypeArray;
34648
+ var _useState = useState(false),
34649
+ showGoNextIndicator = _useState[0],
34650
+ setShowGoNextIndicator = _useState[1];
34651
+ var _useState2 = useState(0),
34652
+ slide = _useState2[0],
34653
+ setSlide = _useState2[1];
34654
+ var onHandleSpacePress = function onHandleSpacePress(event) {
34655
+ if (event.code === 'Space') {
34656
+ if (slide < (textAndTypeArray == null ? void 0 : textAndTypeArray.length) - 1) {
34657
+ setSlide(function (prev) {
34658
+ return prev + 1;
34659
+ });
34660
+ } else {
34661
+ // if there's no more text chunks, close the dialog
34662
+ _onClose();
34663
+ }
34664
+ }
34665
+ };
34666
+ useEffect(function () {
34667
+ document.addEventListener('keydown', onHandleSpacePress);
34668
+ return function () {
34669
+ return document.removeEventListener('keydown', onHandleSpacePress);
34670
+ };
34671
+ }, [slide]);
34672
+ return React.createElement(RPGUIContainer, {
34673
+ type: RPGUIContainerTypes.FramedGold,
34674
+ width: '50%',
34675
+ height: '180px'
34676
+ }, React.createElement(React.Fragment, null, React.createElement(Container$d, null, ((_textAndTypeArray$sli = textAndTypeArray[slide]) == null ? void 0 : _textAndTypeArray$sli.imageSide) === 'right' && React.createElement(React.Fragment, null, React.createElement(TextContainer, {
34677
+ flex: '70%'
34678
+ }, React.createElement(NPCDialogText, {
34679
+ onStartStep: function onStartStep() {
34680
+ return setShowGoNextIndicator(false);
34681
+ },
34682
+ onEndStep: function onEndStep() {
34683
+ return setShowGoNextIndicator(true);
34684
+ },
34685
+ text: textAndTypeArray[slide].text || 'No text provided.',
34686
+ onClose: function onClose() {
34687
+ if (_onClose) {
34688
+ _onClose();
34689
+ }
34690
+ }
34691
+ })), React.createElement(ThumbnailContainer, null, React.createElement(NPCThumbnail, {
34692
+ src: textAndTypeArray[slide].imagePath || img$6
34693
+ })), showGoNextIndicator && React.createElement(PressSpaceIndicator, {
34694
+ right: '10.5rem',
34695
+ src: img$7
34696
+ })), textAndTypeArray[slide].imageSide === 'left' && React.createElement(React.Fragment, null, React.createElement(ThumbnailContainer, null, React.createElement(NPCThumbnail, {
34697
+ src: textAndTypeArray[slide].imagePath || img$6
34698
+ })), React.createElement(TextContainer, {
34699
+ flex: '70%'
34700
+ }, React.createElement(NPCDialogText, {
34701
+ onStartStep: function onStartStep() {
34702
+ return setShowGoNextIndicator(false);
34703
+ },
34704
+ onEndStep: function onEndStep() {
34705
+ return setShowGoNextIndicator(true);
34706
+ },
34707
+ text: textAndTypeArray[slide].text || 'No text provided.',
34708
+ onClose: function onClose() {
34709
+ if (_onClose) {
34710
+ _onClose();
34711
+ }
34712
+ }
34713
+ })), showGoNextIndicator && React.createElement(PressSpaceIndicator, {
34714
+ right: '1rem',
34715
+ src: img$7
34716
+ }))), ")"));
34717
+ };
34718
+ var Container$d = /*#__PURE__*/styled.div.withConfig({
34719
+ displayName: "NPCMultiDialog__Container",
34720
+ componentId: "sc-rvu5wg-0"
34721
+ })(["display:flex;width:100%;height:100%;box-sizing:border-box;justify-content:center;align-items:flex-start;position:relative;"]);
34722
+ var TextContainer = /*#__PURE__*/styled.div.withConfig({
34723
+ displayName: "NPCMultiDialog__TextContainer",
34724
+ componentId: "sc-rvu5wg-1"
34725
+ })(["flex:", " 0 0;width:355px;"], function (_ref2) {
34726
+ var flex = _ref2.flex;
34727
+ return flex;
34728
+ });
34729
+ var ThumbnailContainer = /*#__PURE__*/styled.div.withConfig({
34730
+ displayName: "NPCMultiDialog__ThumbnailContainer",
34731
+ componentId: "sc-rvu5wg-2"
34732
+ })(["flex:30% 0 0;display:flex;justify-content:flex-end;"]);
34733
+ var NPCThumbnail = /*#__PURE__*/styled.img.withConfig({
34734
+ displayName: "NPCMultiDialog__NPCThumbnail",
34735
+ componentId: "sc-rvu5wg-3"
34736
+ })(["image-rendering:pixelated;height:128px;width:128px;"]);
34737
+ var PressSpaceIndicator = /*#__PURE__*/styled.img.withConfig({
34738
+ displayName: "NPCMultiDialog__PressSpaceIndicator",
34739
+ componentId: "sc-rvu5wg-4"
34740
+ })(["position:absolute;right:", ";bottom:1rem;height:20.7px;image-rendering:-webkit-optimize-contrast;"], function (_ref3) {
34741
+ var right = _ref3.right;
34742
+ return right;
34743
+ });
34744
+
34745
+ //@ts-ignore
34746
+ var useEventListener = function useEventListener(type, handler, el) {
34747
+ if (el === void 0) {
34748
+ el = window;
34749
+ }
34750
+ var savedHandler = React.useRef();
34751
+ React.useEffect(function () {
34752
+ savedHandler.current = handler;
34753
+ }, [handler]);
34754
+ React.useEffect(function () {
34755
+ //@ts-ignore
34756
+ var listener = function listener(e) {
34757
+ return savedHandler.current(e);
34758
+ };
34759
+ el.addEventListener(type, listener);
34760
+ return function () {
34761
+ el.removeEventListener(type, listener);
34762
+ };
34763
+ }, [type, el]);
34764
+ };
34765
+
34766
+ var DynamicText = function DynamicText(_ref) {
34767
+ var text = _ref.text,
34768
+ onFinish = _ref.onFinish,
34769
+ onStart = _ref.onStart;
34770
+ var _useState = useState(''),
34771
+ textState = _useState[0],
34772
+ setTextState = _useState[1];
34773
+ useEffect(function () {
34774
+ var i = 0;
34775
+ var interval = setInterval(function () {
34776
+ // on every interval, show one more character
34777
+ if (i === 0) {
34778
+ if (onStart) {
34779
+ onStart();
34780
+ }
34781
+ }
34782
+ if (i < text.length) {
34783
+ setTextState(text.substring(0, i + 1));
34784
+ i++;
34785
+ } else {
34786
+ clearInterval(interval);
34787
+ if (onFinish) {
34788
+ onFinish();
34789
+ }
34790
+ }
34791
+ }, 50);
34792
+ return function () {
34793
+ clearInterval(interval);
34794
+ };
34795
+ }, [text]);
34796
+ return React.createElement(TextContainer$1, null, textState);
34797
+ };
34798
+ var TextContainer$1 = /*#__PURE__*/styled.p.withConfig({
34799
+ displayName: "DynamicText__TextContainer",
34800
+ componentId: "sc-1ggl9nd-0"
34801
+ })(["font-size:0.7rem !important;color:white;text-shadow:1px 1px 0px #000000;letter-spacing:1.2px;word-break:normal;"]);
34802
+
34803
+ var QuestionDialog = function QuestionDialog(_ref) {
34804
+ var questions = _ref.questions,
34805
+ answers = _ref.answers,
34806
+ onClose = _ref.onClose;
34807
+ var _useState = useState(questions[0]),
34808
+ currentQuestion = _useState[0],
34809
+ setCurrentQuestion = _useState[1];
34810
+ var _useState2 = useState(false),
34811
+ canShowAnswers = _useState2[0],
34812
+ setCanShowAnswers = _useState2[1];
34813
+ var onGetFirstAnswer = function onGetFirstAnswer() {
34814
+ if (!currentQuestion.answerIds || currentQuestion.answerIds.length === 0) {
34815
+ return null;
34816
+ }
34817
+ var firstAnswerId = currentQuestion.answerIds[0];
34818
+ return answers.find(function (answer) {
34819
+ return answer.id === firstAnswerId;
34820
+ });
34821
+ };
34822
+ var _useState3 = useState(onGetFirstAnswer()),
34823
+ currentAnswer = _useState3[0],
34824
+ setCurrentAnswer = _useState3[1];
34825
+ useEffect(function () {
34826
+ setCurrentAnswer(onGetFirstAnswer());
34827
+ }, [currentQuestion]);
34828
+ var onGetAnswers = function onGetAnswers(answerIds) {
34829
+ return answerIds.map(function (answerId) {
34830
+ return answers.find(function (answer) {
34831
+ return answer.id === answerId;
34832
+ });
34833
+ });
34834
+ };
34835
+ var onKeyPress = function onKeyPress(e) {
34836
+ switch (e.key) {
34837
+ case 'ArrowDown':
34838
+ // select next answer, if any.
34839
+ // if no next answer, select first answer
34840
+ // const nextAnswer = onGetAnswers(currentQuestion.answerIds!).find(
34841
+ // (answer) => answer?.id === currentAnswer!.id + 1
34842
+ // );
34843
+ var nextAnswerIndex = onGetAnswers(currentQuestion.answerIds).findIndex(function (answer) {
34844
+ return (answer == null ? void 0 : answer.id) === currentAnswer.id + 1;
34845
+ });
34846
+ var nextAnswerID = currentQuestion.answerIds[nextAnswerIndex];
34847
+ var nextAnswer = onGetAnswers(currentQuestion.answerIds).find(function (answer) {
34848
+ return (answer == null ? void 0 : answer.id) === nextAnswerID;
34849
+ });
34850
+ setCurrentAnswer(nextAnswer || onGetFirstAnswer());
34851
+ break;
34852
+ case 'ArrowUp':
34853
+ // select previous answer, if any.
34854
+ // if no previous answer, select last answer
34855
+ var previousAnswerIndex = onGetAnswers(currentQuestion.answerIds).findIndex(function (answer) {
34856
+ return (answer == null ? void 0 : answer.id) === currentAnswer.id - 1;
34857
+ });
34858
+ var previousAnswerID = currentQuestion.answerIds && currentQuestion.answerIds[previousAnswerIndex];
34859
+ var previousAnswer = onGetAnswers(currentQuestion.answerIds).find(function (answer) {
34860
+ return (answer == null ? void 0 : answer.id) === previousAnswerID;
34861
+ });
34862
+ if (previousAnswer) {
34863
+ setCurrentAnswer(previousAnswer);
34864
+ } else {
34865
+ setCurrentAnswer(onGetAnswers(currentQuestion.answerIds).pop());
34866
+ }
34867
+ break;
34868
+ case 'Enter':
34869
+ setCanShowAnswers(false);
34870
+ if (!(currentAnswer != null && currentAnswer.nextQuestionId)) {
34871
+ onClose();
34872
+ return;
34873
+ } else {
34874
+ setCurrentQuestion(questions.find(function (question) {
34875
+ return question.id === currentAnswer.nextQuestionId;
34876
+ }));
34877
+ }
34878
+ break;
34879
+ }
34880
+ };
34881
+ useEventListener('keydown', onKeyPress);
34882
+ var onAnswerClick = function onAnswerClick(answer) {
34883
+ setCanShowAnswers(false);
34884
+ if (answer.nextQuestionId) {
34885
+ // if there is a next question, go to it
34886
+ setCurrentQuestion(questions.find(function (question) {
34887
+ return question.id === answer.nextQuestionId;
34888
+ }));
34889
+ } else {
34890
+ // else, finish dialog!
34891
+ onClose();
34892
+ }
34893
+ };
34894
+ var onRenderCurrentAnswers = function onRenderCurrentAnswers() {
34895
+ var answerIds = currentQuestion.answerIds;
34896
+ if (!answerIds) {
34897
+ return null;
34898
+ }
34899
+ var answers = onGetAnswers(answerIds);
34900
+ if (!answers) {
34901
+ return null;
34902
+ }
34903
+ return answers.map(function (answer) {
34904
+ var isSelected = (currentAnswer == null ? void 0 : currentAnswer.id) === (answer == null ? void 0 : answer.id);
34905
+ var selectedColor = isSelected ? 'yellow' : 'white';
34906
+ if (answer) {
34907
+ return React.createElement(AnswerRow, {
34908
+ key: "answer_" + answer.id
34909
+ }, React.createElement(AnswerSelectedIcon, {
34910
+ color: selectedColor
34911
+ }, isSelected ? 'X' : null), React.createElement(Answer, {
34912
+ key: answer.id,
34913
+ onPointerDown: function onPointerDown() {
34914
+ return onAnswerClick(answer);
34915
+ },
34916
+ color: selectedColor
34917
+ }, answer.text));
34918
+ }
34919
+ return null;
34920
+ });
34921
+ };
34922
+ return React.createElement(Container$e, null, React.createElement(QuestionContainer, null, React.createElement(DynamicText, {
34923
+ text: currentQuestion.text,
34924
+ onStart: function onStart() {
34925
+ return setCanShowAnswers(false);
34926
+ },
34927
+ onFinish: function onFinish() {
34928
+ return setCanShowAnswers(true);
34929
+ }
34930
+ })), canShowAnswers && React.createElement(AnswersContainer, null, onRenderCurrentAnswers()));
34931
+ };
34932
+ var Container$e = /*#__PURE__*/styled.div.withConfig({
34933
+ displayName: "QuestionDialog__Container",
34934
+ componentId: "sc-bxc5u0-0"
34935
+ })(["display:flex;word-break:break-all;box-sizing:border-box;justify-content:flex-start;align-items:flex-start;flex-wrap:wrap;"]);
34936
+ var QuestionContainer = /*#__PURE__*/styled.div.withConfig({
34937
+ displayName: "QuestionDialog__QuestionContainer",
34938
+ componentId: "sc-bxc5u0-1"
34939
+ })(["flex:100%;width:100%;"]);
34940
+ var AnswersContainer = /*#__PURE__*/styled.div.withConfig({
34941
+ displayName: "QuestionDialog__AnswersContainer",
34942
+ componentId: "sc-bxc5u0-2"
34943
+ })(["flex:100%;"]);
34944
+ var Answer = /*#__PURE__*/styled.p.withConfig({
34945
+ displayName: "QuestionDialog__Answer",
34946
+ componentId: "sc-bxc5u0-3"
34947
+ })(["flex:auto;color:", " !important;font-size:0.65rem !important;background:inherit;border:none;"], function (props) {
34948
+ return props.color;
34949
+ });
34950
+ var AnswerSelectedIcon = /*#__PURE__*/styled.span.withConfig({
34951
+ displayName: "QuestionDialog__AnswerSelectedIcon",
34952
+ componentId: "sc-bxc5u0-4"
34953
+ })(["flex:5% 0 0;color:", " !important;"], function (props) {
34954
+ return props.color;
34955
+ });
34956
+ var AnswerRow = /*#__PURE__*/styled.div.withConfig({
34957
+ displayName: "QuestionDialog__AnswerRow",
34958
+ componentId: "sc-bxc5u0-5"
34959
+ })(["display:flex;flex-wrap:wrap;justify-content:center;align-items:center;margin-bottom:0.5rem;height:22px;p{line-height:unset;margin-top:0;margin-bottom:0rem;}"]);
34960
+
35081
34961
  var ProgressBar = function ProgressBar(_ref) {
35082
34962
  var max = _ref.max,
35083
34963
  value = _ref.value,
@@ -35095,7 +34975,7 @@ var ProgressBar = function ProgressBar(_ref) {
35095
34975
  }
35096
34976
  return value * 100 / max;
35097
34977
  };
35098
- return React.createElement(Container$g, {
34978
+ return React.createElement(Container$f, {
35099
34979
  className: "rpgui-progress",
35100
34980
  "data-value": calculatePercentageValue(max, value) / 100,
35101
34981
  "data-rpguitype": "progress",
@@ -35124,7 +35004,7 @@ var TextOverlay$1 = /*#__PURE__*/styled.div.withConfig({
35124
35004
  displayName: "ProgressBar__TextOverlay",
35125
35005
  componentId: "sc-qa6fzh-1"
35126
35006
  })(["width:100%;position:relative;"]);
35127
- var Container$g = /*#__PURE__*/styled.div.withConfig({
35007
+ var Container$f = /*#__PURE__*/styled.div.withConfig({
35128
35008
  displayName: "ProgressBar__Container",
35129
35009
  componentId: "sc-qa6fzh-2"
35130
35010
  })(["display:flex;flex-direction:column;min-width:", "px;width:", "%;justify-content:start;align-items:flex-start;", ""], function (props) {
@@ -35135,7 +35015,7 @@ var Container$g = /*#__PURE__*/styled.div.withConfig({
35135
35015
  return props.style;
35136
35016
  });
35137
35017
 
35138
- var img$9 = 'data:image/png;base64,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';
35018
+ var img$8 = 'data:image/png;base64,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';
35139
35019
 
35140
35020
  var QuestInfo = function QuestInfo(_ref) {
35141
35021
  var quests = _ref.quests,
@@ -35177,7 +35057,7 @@ var QuestInfo = function QuestInfo(_ref) {
35177
35057
  }), React.createElement(QuestContainer, null, React.createElement(TitleContainer$1, {
35178
35058
  className: "drag-handler"
35179
35059
  }, React.createElement(Title$3, null, React.createElement(Thumbnail, {
35180
- src: quests[currentIndex].thumbnail || img$9
35060
+ src: quests[currentIndex].thumbnail || img$8
35181
35061
  }), quests[currentIndex].title), React.createElement(QuestSplitDiv, null, React.createElement("hr", {
35182
35062
  className: "golden"
35183
35063
  }))), React.createElement(Content, null, React.createElement("p", null, quests[currentIndex].description)), React.createElement(QuestColumn, {
@@ -35196,7 +35076,7 @@ var QuestInfo = function QuestInfo(_ref) {
35196
35076
  })))) : React.createElement(QuestsContainer, null, React.createElement(QuestContainer, null, React.createElement(TitleContainer$1, {
35197
35077
  className: "drag-handler"
35198
35078
  }, React.createElement(Title$3, null, React.createElement(Thumbnail, {
35199
- src: quests[0].thumbnail || img$9
35079
+ src: quests[0].thumbnail || img$8
35200
35080
  }), quests[0].title), React.createElement(QuestSplitDiv, null, React.createElement("hr", {
35201
35081
  className: "golden"
35202
35082
  }))), React.createElement(Content, null, React.createElement("p", null, quests[0].description)), React.createElement(QuestColumn, {
@@ -35339,13 +35219,96 @@ var RPGUIRoot = function RPGUIRoot(_ref) {
35339
35219
  }, children);
35340
35220
  };
35341
35221
 
35222
+ var Shortcuts = function Shortcuts(_ref) {
35223
+ var shortcuts = _ref.shortcuts,
35224
+ onShortcutCast = _ref.onShortcutCast,
35225
+ mana = _ref.mana,
35226
+ _ref$isBlockedCasting = _ref.isBlockedCastingByKeyboard,
35227
+ isBlockedCastingByKeyboard = _ref$isBlockedCasting === void 0 ? false : _ref$isBlockedCasting,
35228
+ atlasJSON = _ref.atlasJSON,
35229
+ atlasIMG = _ref.atlasIMG,
35230
+ inventory = _ref.inventory;
35231
+ useEffect(function () {
35232
+ var handleKeyDown = function handleKeyDown(e) {
35233
+ if (isBlockedCastingByKeyboard) return;
35234
+ var shortcutIndex = Number(e.key) - 1;
35235
+ if (shortcutIndex >= 0 && shortcutIndex <= 5) {
35236
+ onShortcutCast(shortcutIndex);
35237
+ }
35238
+ };
35239
+ window.addEventListener('keydown', handleKeyDown);
35240
+ return function () {
35241
+ window.removeEventListener('keydown', handleKeyDown);
35242
+ };
35243
+ }, [shortcuts, isBlockedCastingByKeyboard]);
35244
+ return React.createElement(List$1, null, Array.from({
35245
+ length: 6
35246
+ }).map(function (_, i) {
35247
+ var _shortcuts$i, _shortcuts$i3, _payload$manaCost;
35248
+ if (((_shortcuts$i = shortcuts[i]) == null ? void 0 : _shortcuts$i.type) === ShortcutType.Item) {
35249
+ var _shortcuts$i2;
35250
+ var _payload = (_shortcuts$i2 = shortcuts[i]) == null ? void 0 : _shortcuts$i2.payload;
35251
+ var itemsFromEquipment = [];
35252
+ if (inventory) {
35253
+ Object.keys(inventory.slots).forEach(function (i) {
35254
+ var _inventory$slots$inde;
35255
+ var index = parseInt(i);
35256
+ if (((_inventory$slots$inde = inventory.slots[index]) == null ? void 0 : _inventory$slots$inde.key) === (_payload == null ? void 0 : _payload.key)) {
35257
+ itemsFromEquipment.push(inventory.slots[index]);
35258
+ }
35259
+ });
35260
+ }
35261
+ var totalQty = itemsFromEquipment.reduce(function (acc, item) {
35262
+ return acc + ((item == null ? void 0 : item.stackQty) || 1);
35263
+ }, 0);
35264
+ return React.createElement(SingleShortcut, {
35265
+ key: i,
35266
+ onPointerDown: onShortcutCast.bind(null, i),
35267
+ disabled: false
35268
+ }, _payload && React.createElement(SpriteFromAtlas, {
35269
+ atlasIMG: atlasIMG,
35270
+ atlasJSON: atlasJSON,
35271
+ spriteKey: getItemTextureKeyPath({
35272
+ key: _payload.texturePath,
35273
+ texturePath: _payload.texturePath,
35274
+ stackQty: _payload.stackQty || 1
35275
+ }, atlasJSON),
35276
+ width: 32,
35277
+ height: 32
35278
+ }), React.createElement("span", {
35279
+ className: "qty"
35280
+ }, totalQty), React.createElement("span", {
35281
+ className: "keyboard"
35282
+ }, i + 1));
35283
+ }
35284
+ var payload = (_shortcuts$i3 = shortcuts[i]) == null ? void 0 : _shortcuts$i3.payload;
35285
+ return React.createElement(SingleShortcut, {
35286
+ key: i,
35287
+ onPointerDown: onShortcutCast.bind(null, i),
35288
+ disabled: mana < ((_payload$manaCost = payload == null ? void 0 : payload.manaCost) != null ? _payload$manaCost : 0)
35289
+ }, React.createElement("span", {
35290
+ className: "mana"
35291
+ }, payload && payload.manaCost), React.createElement("span", {
35292
+ className: "magicWords"
35293
+ }, payload == null ? void 0 : payload.magicWords.split(' ').map(function (word) {
35294
+ return word[0];
35295
+ })), React.createElement("span", {
35296
+ className: "keyboard"
35297
+ }, i + 1));
35298
+ }));
35299
+ };
35300
+ var List$1 = /*#__PURE__*/styled.p.withConfig({
35301
+ displayName: "Shortcuts__List",
35302
+ componentId: "sc-kgtsi7-0"
35303
+ })(["width:100%;display:flex;align-items:center;justify-content:center;gap:0.5rem;box-sizing:border-box;margin:0 !important;"]);
35304
+
35342
35305
  var SimpleProgressBar = function SimpleProgressBar(_ref) {
35343
35306
  var value = _ref.value,
35344
35307
  _ref$bgColor = _ref.bgColor,
35345
35308
  bgColor = _ref$bgColor === void 0 ? 'red' : _ref$bgColor,
35346
35309
  _ref$margin = _ref.margin,
35347
35310
  margin = _ref$margin === void 0 ? 20 : _ref$margin;
35348
- return React.createElement(Container$h, {
35311
+ return React.createElement(Container$g, {
35349
35312
  className: "simple-progress-bar"
35350
35313
  }, React.createElement(ProgressBarContainer, {
35351
35314
  margin: margin
@@ -35354,7 +35317,7 @@ var SimpleProgressBar = function SimpleProgressBar(_ref) {
35354
35317
  bgColor: bgColor
35355
35318
  }))));
35356
35319
  };
35357
- var Container$h = /*#__PURE__*/styled.div.withConfig({
35320
+ var Container$g = /*#__PURE__*/styled.div.withConfig({
35358
35321
  displayName: "SimpleProgressBar__Container",
35359
35322
  componentId: "sc-mbeil3-0"
35360
35323
  })(["display:flex;justify-content:center;align-items:center;width:100%;"]);
@@ -35581,7 +35544,7 @@ var Spell = function Spell(_ref) {
35581
35544
  isSettingShortcut = _ref.isSettingShortcut,
35582
35545
  minMagicLevelRequired = _ref.minMagicLevelRequired;
35583
35546
  var disabled = isSettingShortcut ? charMagicLevel < minMagicLevelRequired : manaCost > charMana || charMagicLevel < minMagicLevelRequired;
35584
- return React.createElement(Container$i, {
35547
+ return React.createElement(Container$h, {
35585
35548
  disabled: disabled,
35586
35549
  onPointerDown: onPointerDown == null ? void 0 : onPointerDown.bind(null, spellKey),
35587
35550
  isSettingShortcut: isSettingShortcut && !disabled,
@@ -35594,7 +35557,7 @@ var Spell = function Spell(_ref) {
35594
35557
  className: "mana"
35595
35558
  }, manaCost)));
35596
35559
  };
35597
- var Container$i = /*#__PURE__*/styled.button.withConfig({
35560
+ var Container$h = /*#__PURE__*/styled.button.withConfig({
35598
35561
  displayName: "Spell__Container",
35599
35562
  componentId: "sc-j96fa2-0"
35600
35563
  })(["display:block;background:none;border:2px solid transparent;border-radius:1rem;width:100%;display:flex;height:5rem;gap:1rem;align-items:center;padding:0 1rem;text-align:left;position:relative;animation:", ";@keyframes border-color-change{0%{border-color:", ";}50%{border-color:transparent;}100%{border-color:", ";}}&:hover,&:focus{background-color:", ";}&:active{background:none;}"], function (_ref2) {
@@ -35630,43 +35593,6 @@ var Overlay = /*#__PURE__*/styled.p.withConfig({
35630
35593
  componentId: "sc-j96fa2-7"
35631
35594
  })(["margin:0 !important;position:absolute;top:0;left:0;width:100%;height:100%;border-radius:1rem;display:flex;justify-content:center;align-items:center;color:", ";font-size:", " !important;font-weight:bold;z-index:10;background-color:rgba(0 0 0 / 0.2);"], uiColors.yellow, uiFonts.size.large);
35632
35595
 
35633
- var SpellbookShortcuts = function SpellbookShortcuts(_ref) {
35634
- var setSettingShortcutIndex = _ref.setSettingShortcutIndex,
35635
- settingShortcutIndex = _ref.settingShortcutIndex,
35636
- shortcuts = _ref.shortcuts,
35637
- removeShortcut = _ref.removeShortcut;
35638
- return React.createElement(List$1, {
35639
- id: "shortcuts_list"
35640
- }, "Spells shortcuts:", Array.from({
35641
- length: 4
35642
- }).map(function (_, i) {
35643
- var _shortcuts$i2;
35644
- return React.createElement(SpellShortcut$1, {
35645
- key: i,
35646
- onPointerDown: function onPointerDown() {
35647
- var _shortcuts$i;
35648
- removeShortcut(i);
35649
- if (!((_shortcuts$i = shortcuts[i]) != null && _shortcuts$i.key)) setSettingShortcutIndex(i);
35650
- },
35651
- disabled: settingShortcutIndex !== -1 && settingShortcutIndex !== i,
35652
- isBeingSet: settingShortcutIndex === i
35653
- }, React.createElement("span", null, (_shortcuts$i2 = shortcuts[i]) == null ? void 0 : _shortcuts$i2.magicWords.split(' ').map(function (word) {
35654
- return word[0];
35655
- })));
35656
- }));
35657
- };
35658
- var SpellShortcut$1 = /*#__PURE__*/styled.button.withConfig({
35659
- displayName: "SpellbookShortcuts__SpellShortcut",
35660
- componentId: "sc-fr4a0d-0"
35661
- })(["width:2.6rem;height:2.6rem;background-color:", ";border:2px solid ", ";border-radius:50%;text-transform:uppercase;font-size:0.7rem;font-weight:bold;display:flex;align-items:center;justify-content:center;span{margin-top:4px;}&:hover,&:focus{background-color:", ";}&:active{background-color:", ";}&:disabled{opacity:0.5;}"], uiColors.lightGray, function (_ref2) {
35662
- var isBeingSet = _ref2.isBeingSet;
35663
- return isBeingSet ? uiColors.yellow : uiColors.darkGray;
35664
- }, uiColors.darkGray, uiColors.gray);
35665
- var List$1 = /*#__PURE__*/styled.p.withConfig({
35666
- displayName: "SpellbookShortcuts__List",
35667
- componentId: "sc-fr4a0d-1"
35668
- })(["width:100%;display:flex;align-items:center;justify-content:flex-end;gap:0.5rem;padding:0.5rem;box-sizing:border-box;margin:0 !important;"]);
35669
-
35670
35596
  var Spellbook = function Spellbook(_ref) {
35671
35597
  var onClose = _ref.onClose,
35672
35598
  onInputFocus = _ref.onInputFocus,
@@ -35676,8 +35602,10 @@ var Spellbook = function Spellbook(_ref) {
35676
35602
  mana = _ref.mana,
35677
35603
  onSpellClick = _ref.onSpellClick,
35678
35604
  setSpellShortcut = _ref.setSpellShortcut,
35679
- spellShortcuts = _ref.spellShortcuts,
35680
- removeSpellShortcut = _ref.removeSpellShortcut;
35605
+ shortcuts = _ref.shortcuts,
35606
+ removeShortcut = _ref.removeShortcut,
35607
+ atlasIMG = _ref.atlasIMG,
35608
+ atlasJSON = _ref.atlasJSON;
35681
35609
  var _useState = useState(''),
35682
35610
  search = _useState[0],
35683
35611
  setSearch = _useState[1];
@@ -35714,11 +35642,13 @@ var Spellbook = function Spellbook(_ref) {
35714
35642
  width: "inherit",
35715
35643
  height: "inherit",
35716
35644
  cancelDrag: "#spellbook-search, #shortcuts_list, .spell"
35717
- }, React.createElement(Container$j, null, React.createElement(Title$6, null, "Learned Spells"), React.createElement(SpellbookShortcuts, {
35645
+ }, React.createElement(Container$i, null, React.createElement(Title$6, null, "Learned Spells"), React.createElement(ShortcutsSetter, {
35718
35646
  setSettingShortcutIndex: setSettingShortcutIndex,
35719
35647
  settingShortcutIndex: settingShortcutIndex,
35720
- shortcuts: spellShortcuts,
35721
- removeShortcut: removeSpellShortcut
35648
+ shortcuts: shortcuts,
35649
+ removeShortcut: removeShortcut,
35650
+ atlasIMG: atlasIMG,
35651
+ atlasJSON: atlasJSON
35722
35652
  }), React.createElement(Input, {
35723
35653
  placeholder: "Search for spell",
35724
35654
  value: search,
@@ -35744,7 +35674,7 @@ var Title$6 = /*#__PURE__*/styled.h1.withConfig({
35744
35674
  displayName: "Spellbook__Title",
35745
35675
  componentId: "sc-r02nfq-0"
35746
35676
  })(["font-size:", " !important;margin-bottom:0 !important;"], uiFonts.size.large);
35747
- var Container$j = /*#__PURE__*/styled.div.withConfig({
35677
+ var Container$i = /*#__PURE__*/styled.div.withConfig({
35748
35678
  displayName: "Spellbook__Container",
35749
35679
  componentId: "sc-r02nfq-1"
35750
35680
  })(["width:100%;height:100%;color:white;display:flex;flex-direction:column;"]);
@@ -35758,16 +35688,16 @@ var TextArea = function TextArea(_ref) {
35758
35688
  return React.createElement("textarea", Object.assign({}, props));
35759
35689
  };
35760
35690
 
35761
- var img$a = 'data:image/gif;base64,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';
35691
+ var img$9 = 'data:image/gif;base64,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';
35762
35692
 
35763
- var img$b = 'data:image/gif;base64,R0lGODlhTgBNAPMAAAAAALcILyZ31ESZ+lrC/1Ds//vvpv3wo4G8//////38+QAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtJbWFnZU1hZ2ljaw1nYW1tYT0wLjQ1NDU1ACH5BAEUAAAAIf4gQ3JlYXRlZCB3aXRoIGV6Z2lmLmNvbSBHSUYgbWFrZXIALAAAAABOAE0AAAT/EMhJq7046827/2AojmRpnmiqrmzrvnAsz2tg37hNq7jg/0AfbjeyAQfIpBIJ1BE5N99ySmUKbk9M4FftUn+BLMXoLXev4exWYG5/r8+te/5Nz+T0vBIu2yL+gIGCg4SFgXwvfoaLjIyILIqNkpOAjymRlAgHm5ybmZV2KHh0naWcepYlo22mradzqUUClK61nJSxIJiMrgm+v664oSKrXqa/yMmmbrkexVXHydK+y2bNULON0dPTppLXGs9UpdzlCaVt4FpsZuTm5ejWwx3iU53v753p89jtnPj49JVRZ2ELgYMFoP0DaE6gF4JjBBycSCChEncMucV7yC+DQYoI/y8uzAjvFUddEkGGRHKPZMlN8lCqXDmgpctuJs90XDdzpc2bynJWgSjh40yLP4ECE1pHZs8CB5MqPcd0ClEARlVCjTpy6kadTrWC7KpU4NaDVndeyNqT64GpSzedBblHbcGUbSmSddlprsokV7HizUtAKsO+hAkMCCw48UTD+RAnZsw2L0aApfy2pTw48eWGczX3ZNzYsdtNAf2KVkm6tOnC2+JqXg2ytWBStiSLzWv7dh5XBnS/Pti7nj9TW2kT7u1bT03dBZSPtuuMnfMkqqXXpl79uhLR2icyj+gdSfjN3FF6Pz89kXU3itnPHO/xfXlm6VXZv3+ShnH+gOUnikAUAFpFny7/XYeGGBOssR8qQjBYQRQPpoOGgHc4WOEeYGAYB4VBBDGEhMTkYCKJKKao4oostujiizDGKOOMF0QAACH/C0ltYWdlTWFnaWNrDWdhbW1hPTAuNDU0NTUAIfkEARQAAAAsAAAAAE4ATQAABP8QyEmrvTjrzbv/YCiOZGmeaKqubOu+cCzPa2DfuE2ruOD/QB9uN7IBB8ikEgnUETk333JKZQpuT0zgV+1Sf4Esxegtd6/h7FZgbn+vz617/k3P5PS8Ei7bIv6AgYKDhIWBfC9+houMjIgsio2Sk4CPKZGUmY2WJnh6B6ChoHpMdieec6KqoXqcRQKaq7Khmq4gmI2zurSUth6oZbMJw8Szc74dwF2rxM3Oq27IG7iGzM7Xw6uT0hnKVNbY2NBm3Bfe36Lh6gmq0aa/bGaq6+vt5O/J8cGh9PSibeUqbCFAoMAyfv38sSoTcMJAggQNTkmXsN5Chvg0PIRYcMm8iur/7HlpCGAjR4lIKIIMefFMxm4COEJEOUDlSnEtq5A0eTKJzZvPcta5FVNmRJ8IgV77h5Go0YgEayZV2ozpyJdaihotAPEnVXZCp+zUepLjx69gF3KFuGTsU6Negf5bazSJ27dmp1IVRfdpqRA838YFyRcvRJISAj89e1NV37eIS5I1zLiiY8OHscLEnFevP7oHHkPWvJkzwcohH4s2GjnxZMyol4peLbO161SyloKiTZug7du4dRkobLo26Wn6gs9a29vwb+B5ls9s/vS5w+R0Lp+kztH6dVJTVnP3ffzDOTrjR7c43yZ99fIi2FchMMA9a/ivwIP3jlx/Hv5QYOefQUtxSDGgTgCaJx8paIhxnYH+geGgQEYIGA0a+NFQIYRngJGhGlEEIeIQE8aXw4klpqjiiiy26OKLMMYo44w0XhABACH/C0ltYWdlTWFnaWNrDWdhbW1hPTAuNDU0NTUAIfkEARQAAAAsAAAAAE4ATQAABP8QyEmrvTjrzbv/YCiOZGmeaKqubOu+cCzPa2DfuE2ruOD/QB9uN7IBB8ikEgnUETk333JKZQpuT0zgV+1Sf4Esxegtd6/h7FZgbn+vz617/k3P5PS8Ei7bIv6AgYKDhIWBfC9+houMjIgsio2Sk4CPKZGUmY2WJnh6n2d2J555B6anpqCcRQKaf6iwp64IqyCYk7G5spq1HqRmusGndL0dv166CcrLunPFG7eLscvU1bGUzxnHVdPV3sqxbtkX21Td39/hbeMV5VOw6PEJsOKivmzAqPLy9GbsYwIIFCijbx+/Yf7sQQlIoOFAc6cMGkS1TqGGLQ0zPlxSUGI8ign/bTHMKJBjR4/pQHr5BwAjyZJKTqJMmaoMS5cvNw6QOdMawpUWtY0kqZNnT2Y/Q4l86bAhEqNH5yWtcnOoxow7I0b1plLpB5xXSUI9qrIAyT1BtVhlSgDeVqTDzLJlkpbcWrZjUVKUy5bAAJYt777M6xEV376AA/cdrHXr3sUNE4Nd7JasYciR66rFnLGyXr4DDiPWvJnzOYkHRItmmljCZMqe+a1e/bK1a3z5CM+jLXCx7dtzklFTcJlzbdIXcbcRVpw35N/A6TDnW8A5W+gT3HXRpdo6SezZlUuHRdt75hriQZkf3UJ7m/XXkYtwX8UvfNbyWYFSlZ8E/f1LgGdMRXoAUtXfKFIUSJWAtvyXBxpihJcggGBE2I4RBK6DxoF9rDHhGWBwSEQPQZQ4hIXz5aAiiiy26OKLMMYo44w01mjjjRdEAAAh/wtJbWFnZU1hZ2ljaw1nYW1tYT0wLjQ1NDU1ACH5BAEUAAAALAAAAABOAE0AAAT/EMhJq7046827/2AojmRpnmiqrmzrvnAsz2tg37hNq7jg/0AfbjeyAQfIpBIJ1BE5N99ySmUKbk9M4FftUn+BLMXoLXev4exWYG5/r8+te/5Nz+T0vBIu2yL+gIGCg4SFgXwvfoaLjIyILIqNkpOAjymRlJmNliZ4ep9ndieeoKV7oiWYmgesrayah6giqpSutq2wf5wgpG63v616ux+9ZcDHwXPDHbSLwAnQ0cCZyxvFXbfR2tu3yrLMbL622+TStt6z4WbZ5e3dbdVa6sau7fYJ5/Df1gIF6/X37OUrE8/CFgII/WFrFTCgKzcFxwhAmLAKwIb3HpqJOOEgRQIK/5dcxOguGcF98j6CnDKOpECNXjhK8PgxJJKRLsvBDMVrokqbA3Dm5GaSJzGfNREmETrUHKuNKC/QpFiA4k2GTXUWrSITwFSQKoNizUr0aZKqVplENYhU5UemWTWidTug61e3BFqShXZuLt6uXtvizTt270O/bgEHHvy2MNnDjAkovosXLknIkScLHqx36IG5AxAnXpsyMsLOlxGL/qh45ubKqB2KXk2xtes27Bp+Hkzb9m3csaMp4LvbtErfgec8I4qWNmPkycUhYzW3gPPRl+b9O6b6em3SHq7R+7Xau2Tw4bVLd2X+L/qjppC0x+5CvBkCoY27j2E/Ptf3JPTn30cpOwg4IHQ9qTdgXQiGQMaCSaAhRkdcxAfGhBVEoSA8aAB4xxpSEASGh3FoGEQQQ2A4Sw4squjiizDGKOOMNNZo44045nhBBAAh/wtJbWFnZU1hZ2ljaw1nYW1tYT0wLjQ1NDU1ACH5BAEUAAAALAAAAABOAE0AAAT/EMhJq7046827/2AojmRpnmiqrmzrvnAsz2tg37hNq7jg/0AfbjeyAQfIpBIJ1BE5N99ySmUKbk9M4FftUn+BLMXoLXev4exWYG5/r8+te/5Nz+T0vBIu2yL+gIGCg4SFgXwvfoaLjIyILIqNkpOAjymRlJmNliZ4ep9ndieeoKV7oiWYmgesrayah6giqpSutq2wf5wgpG63v616ux+9ZcDHwXPDHbSLwAnQ0cCZyxvFXbfR2tu3yrLMbL622+TStt6z4WbZ5e3dbdVa6sau7fYJ5/Df1gIF6/X37OUrE8/CFgII/WFrFTCgKzcFxwhAmLAKwIb3HpqJOOEgRQIK/5dcxOguGcF98j6CnDKOpECNXjhK8PgxJJKRLsvBDMVrokqbA3Dm5GaSJzGfNREmETrUHKuNKC/QpFiA4k2GTXUWrSITwFSQKoNizUr0aZKqVplENYhU5UemWTWidTug61e3BFqShXZuLt6uXtvizTt270O/bgEHHvy2MNnDjAkovosXLknIkScLHqx36IG5AxAnXpsyMsLOlxGL/qh45ubKqB2KXk2xtes27Bp+Hkzb9m3csaMp4LvbtErfgec8I4qWNmPkycUhYzW3gPPRl+b9O6b6em3SHq7R+7Xau2Tw4bVLd2X+L/qjppC0x+5CvBkCoY27j2E/Ptf3JPTn30cpOwg4IHQ9qTdgXQiGQMaCSaAhRkdcxAfGhBVEoSA8aAB4xxpSEASGh3FoGEQQQ2A4Sw4squjiizDGKOOMNNZo44045nhBBAAh/wtJbWFnZU1hZ2ljaw1nYW1tYT0wLjQ1NDU1ACH5BAEUAAAALAAAAABOAE0AAAT/EMhJq7046827/2AojmRpnmiqrmzrvnAsz2tg37hNq7jg/0AfbjeyAQfIpBIJ1BE5N99ySmUKbk9M4FftUn+BLMXoLXev4exWYG5/r8+te/5Nz+T0vBIu2yL+gIGCg4SFgXwvfoaLjIyILIqNkpOAjymRlJmNliZ4ep9ndieeeQemp6agnEUCmn+osKeuCKsgmJOxubKatR6kZrrBp3S9Hb9eugnKy7pzxRu3i7HL1NWxlM8Zx1XT1d7KsW7ZF9tU3d/f4W3jFeVTsOjxCbDior5swKjy8vRm7GMCCBQoo28fv2H+7EEJSKDhQHOnDBpEtU6hhi0NMz5cUlBiPIoJ/20xzCiQY0eP6UB6+QcAI8mSSk6iTJmqDEuXLzcOkDnTGsKVFrWNJKmTZ09mP0OJfOmwIRKjR+clrXJzqMaMOyNG9aZS6QecV0lCPaqyAMk9QbVYZUoA3lakw8yyZZKW3Fq2Y1FSlMuWwACWLe++zOsRFd++gAP3Hax1697FDRODXeyWrGHIkeuqxZyxsl6+Aw4j1ryZ8zmJB0SLZppYwmTKnvmtXv2ytWt8+QjPoy1wse3bc5JRU3CZc23SF3G3EVacN+TfwOkw51vAOVvoE9x10aXaOkns2ZVLh0Xbe+Ya4kGZH91Ce5v115GLcF/FL3zW8lmBUpWfBP39S4BnTEV6AFLV3yhSFEiVgLb8lwcaYoSXIIBgRNiOEQSug8aBfawx4RlgcEhED0GUOISF8+WgIoostujiizDGKOOMNNZo440XRAAAIf8LSW1hZ2VNYWdpY2sNZ2FtbWE9MC40NTQ1NQAh+QQBFAAAACwAAAAATgBNAAAE/xDISau9OOvNu/9gKI5kaZ5oqq5s675wLM9rYN+4Tau44P9AH243sgEHyKQSCdQROTffckplCm5PTOBX7VJ/gSzF6C13r+HsVmBuf6/PrXv+Tc/k9LwSLtsi/oCBgoOEhYF8L36Gi4yMiCyKjZKTgI8pkZSZjZYmeHoHoKGgekx2J55zoqqhepxFApqrsqGariCYjbO6tJS2HqhlswnDxLNzvh3AXavEzc6rbsgbuIbMztfDq5PSGcpU1tjY0GbcF97fouHqCarRpr9sZqrr6+3k78nxwaH09KJt5SpsIUCgwDJ+/fyxKhNwwkCCBA1OSZew3kKG+DQ8hFhwybyK6v/seWkIYCNHiUgoggx58UzGbgI4QkQ5QOVKcS2rkDR5MonNm89y1rkVU2ZEnwiBXvuHkajRiARrJlXajOnIl1qKGi0A8SdVdkKn7NR6kuPHr2AXcoW4ZOxTo16B/ltrNInbt2anUhVF92mpEDzfxgXJFy9EkhICPz17U1Xft4hLkjXMuKJjw4exwsTctbI/ugceQ9a8mTMBcJ9lijYaOfFkyp6Xil4ts7XrVLKWgqJNm6Dt27h1GShsujbpafqCz1rb2/Bv4HmWz2z+9LnD5HQun6TO0fp1UlNWc/d9/MM5OuNHtzjfJn318iLYVyEwwD1r+K/Ag/eOXH8e/lBg559BS3FIMaBOAJonHyloiHGdgf6B4aBARggYDRr40VAhhGeAkaEaUQQh4hATxpfDiSWmqOKKLLbo4oswxijjjDReEAEAIf8LSW1hZ2VNYWdpY2sNZ2FtbWE9MC40NTQ1NQAh+QQBFAAAACwAAAAATgBNAAAE/xDISau9OOvNu/9gKI5kaZ5oqq5s675wLM9rYN+4Tau44P9AH243sgEHyKQSCdQROTffckplCm5PTOBX7VJ/gSzF6C13r+HsVmBuf6/PrXv+Tc/k9LwSLtsi/oCBgoOEhYF8L36Gi4yMiCyKjZKTgI8pkZQIB5ucm5mVdih4dJ2lnHqWJaNtpq2nc6lFApSutZyUsSCYjK4Jvr+uuKEiq16mv8jJpm65HsVVx8nSvstmzVCzjdHT06aS1xrPVKXc5QmlbeBabGbk5uXo1sMd4lOd7++d6fPY7Zz4+PSVUWdhC4GDBaD9A2hOoBeCYwQcnEggoRJ3DLnFe8gvg0GKCP8vLswI7xVHXRJBhkRyj2TJTfJQqlw5oKXLbibPdFw3c6XNm8pyVoEo4eNMiz+BAhNaR2bPAgeTKj3HdApRAEZVQo06cupGnU61guyqVODWg1Z3Xsjak+uBqUs3nQW5R23BlG0pknXZaa7KJFex4s1LQCrDvoQJDAgsOPFEw/kQJ2bMNi9GgKX8tqU8OPHlhnM192Tc2LHbTQH9ilZJurTpwtvial4NsrVgUrYki81r+3YeVwZ0vz7Yu54/U1tpE+7tW09N3QWUj7brjJ3zJKql16Ze/boS0donMo/oHUn4zdxRej8/PZF1N4rZzxzv8X15ZulV2b9/koZx/oDlJ4pAFABaRZ8u/12HhhgTrLEfKkIwWEEUD6aDhoB3OFjhHmBgGAeFQQQxhITE5GAiiSimqOKKLLbo4oswxijjjBdEAAA7';
35693
+ var img$a = 'data:image/gif;base64,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';
35764
35694
 
35765
- var img$c = 'data:image/gif;base64,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';
35695
+ var img$b = 'data:image/gif;base64,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';
35766
35696
 
35767
35697
  var DayNightPeriod = function DayNightPeriod(_ref) {
35768
35698
  var _periodOfDaySrcFiles;
35769
35699
  var periodOfDay = _ref.periodOfDay;
35770
- var periodOfDaySrcFiles = (_periodOfDaySrcFiles = {}, _periodOfDaySrcFiles[PeriodOfDay.Morning] = img$b, _periodOfDaySrcFiles[PeriodOfDay.Afternoon] = img$a, _periodOfDaySrcFiles[PeriodOfDay.Night] = img$c, _periodOfDaySrcFiles);
35700
+ var periodOfDaySrcFiles = (_periodOfDaySrcFiles = {}, _periodOfDaySrcFiles[PeriodOfDay.Morning] = img$a, _periodOfDaySrcFiles[PeriodOfDay.Afternoon] = img$9, _periodOfDaySrcFiles[PeriodOfDay.Night] = img$b, _periodOfDaySrcFiles);
35771
35701
  return React.createElement(GifContainer, null, React.createElement("img", {
35772
35702
  src: periodOfDaySrcFiles[periodOfDay]
35773
35703
  }));
@@ -35777,7 +35707,7 @@ var GifContainer = /*#__PURE__*/styled.div.withConfig({
35777
35707
  componentId: "sc-10t97fw-0"
35778
35708
  })(["width:100%;img{width:67%;}"]);
35779
35709
 
35780
- var img$d = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHMAAABHCAYAAAA0qHhdAAAAAXNSR0IArs4c6QAABGRJREFUeJztnb9PGzEUx7+JMjC0Uge6tVsVdTghQP0D2qgjzGz8D8woE2LO/5CNOcwlU9WJRCgDYmWJRAYkFgak6wDv5HPsO9/P8J79WUhicr7nzz3bOV8uHbRPXOXN2x++1LUfYnh4uu8AQK+FulLy7hbHxn96vrh22tjW0b7xPVtH+87bkMbnj1/jh6f7TqfBOmKgurwy6MJ10VRuKqNylwMl7wBy3U5WuetBOhg9om6ZSRaqEtvImJ2zRfL4/GA3eXy494LJzNwBmcpc//9w7wUAMJn1ktdt5bbnaj228qw6VeqWGbctUEXNxn40Fj+2/jn5lHpel8xUd+oqcedsUajum2HkNHEiqf1oDAD4/e1HkWrYMF8uE6GTWQ+j6aryBCh2lVhUXt77bXJpP2i/+tE41e1y5uo2W1cVmfHd4rhxiXnbdZEqReiv76/jpE1q2YbOFNmUwDxsYreO9lkLvbrtJSLp+Xy5xN9/g8TBYPSIboltv0uRWXU/X1zjbnGM08t527tUC7aM1B0UbXiryE1KNGHKUu4ZqjKarpLMpAlQkcxkIxIw7xP3DLVBnzldZbISSUgXqvtwkclSJCFNqDpu0mdqOkOUJ5O1SEKSUHVWWyQzRYgkJAml7KTMzBszRYkkJAhVu1ny49rNpuAskuAaw9VtL/d0nikwY1ZybQQb+udQ+gzKZbXFtGqiq3Y63yoR6m770Rg3wyi1gK1iel1dQNbLqazsX9M2dKib1bPNi6wkbNl5M4w2tUulGIwe8fB031nrhH0RCbzGpgrVJxSEaYXfdoWCrdxE1lUNtnJ9+6PpKrmgSxUVm45IyTIB8zncnbPF2th58nMbo+kq9zUX8t5XpC4SCQSZVpkovzy4MWiHvRRJSBFaZj0z8E6xyvQlKwE5sYbMFEQXlvHSd97apNL3YtomZKYgjDKljCFFkBBzyExBBJmCCDIFEWQKIsgURJApiCBTEEGmILqA26q4b3Bsk5CZgjDKdL1/gCQkxJzI5NitNAXXtugC6HC5NL9N3tqE1cn3MGYKIiVT7V4kjCGuqLFy7WIBw61jOAdTFikxp66bPT/YXbsnm4RF2yz0Hmgy67EcLwHDmCnlKC0D99hVmcmslntQZaCYuWYlYPgWmOkeOaeXc5bB5XF+sLs2yeMs05iC+rh5uBfF0sbO17EyHSf3HkkfMzunl3P2QZWB88SHsO246JmtpBmsSuYZoMmsJ+5Egn6CQFIvlHUkrk2GKFO5ZiiJ1AVKyEogPwDj7BbgN8M1zVwBOSIBtyDYC/VBJOAeCFuhvogEigXDTqhPIoESd4LmItQ3kUC5oKxCgc1LtUkEZIsEKvx6wnsU6rNIoFpwmUKJpsVmCVT2ARAuEqgeoJNQoH6pLhLf6gU8EAnUE2QMoPDPSxSV6ypP2T499EIkUG+gzlnaND5lo0pjv5/Ztljt2l/vRALNBl2q+y2Kj92pjTYaIDXWVZVruPree4nEJhqi6ppokGfhP6xr60VVr5O+AAAAAElFTkSuQmCC';
35710
+ var img$c = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHMAAABHCAYAAAA0qHhdAAAAAXNSR0IArs4c6QAABGRJREFUeJztnb9PGzEUx7+JMjC0Uge6tVsVdTghQP0D2qgjzGz8D8woE2LO/5CNOcwlU9WJRCgDYmWJRAYkFgak6wDv5HPsO9/P8J79WUhicr7nzz3bOV8uHbRPXOXN2x++1LUfYnh4uu8AQK+FulLy7hbHxn96vrh22tjW0b7xPVtH+87bkMbnj1/jh6f7TqfBOmKgurwy6MJ10VRuKqNylwMl7wBy3U5WuetBOhg9om6ZSRaqEtvImJ2zRfL4/GA3eXy494LJzNwBmcpc//9w7wUAMJn1ktdt5bbnaj228qw6VeqWGbctUEXNxn40Fj+2/jn5lHpel8xUd+oqcedsUajum2HkNHEiqf1oDAD4/e1HkWrYMF8uE6GTWQ+j6aryBCh2lVhUXt77bXJpP2i/+tE41e1y5uo2W1cVmfHd4rhxiXnbdZEqReiv76/jpE1q2YbOFNmUwDxsYreO9lkLvbrtJSLp+Xy5xN9/g8TBYPSIboltv0uRWXU/X1zjbnGM08t527tUC7aM1B0UbXiryE1KNGHKUu4ZqjKarpLMpAlQkcxkIxIw7xP3DLVBnzldZbISSUgXqvtwkclSJCFNqDpu0mdqOkOUJ5O1SEKSUHVWWyQzRYgkJAml7KTMzBszRYkkJAhVu1ny49rNpuAskuAaw9VtL/d0nikwY1ZybQQb+udQ+gzKZbXFtGqiq3Y63yoR6m770Rg3wyi1gK1iel1dQNbLqazsX9M2dKib1bPNi6wkbNl5M4w2tUulGIwe8fB031nrhH0RCbzGpgrVJxSEaYXfdoWCrdxE1lUNtnJ9+6PpKrmgSxUVm45IyTIB8zncnbPF2th58nMbo+kq9zUX8t5XpC4SCQSZVpkovzy4MWiHvRRJSBFaZj0z8E6xyvQlKwE5sYbMFEQXlvHSd97apNL3YtomZKYgjDKljCFFkBBzyExBBJmCCDIFEWQKIsgURJApiCBTEEGmILqA26q4b3Bsk5CZgjDKdL1/gCQkxJzI5NitNAXXtugC6HC5NL9N3tqE1cn3MGYKIiVT7V4kjCGuqLFy7WIBw61jOAdTFikxp66bPT/YXbsnm4RF2yz0Hmgy67EcLwHDmCnlKC0D99hVmcmslntQZaCYuWYlYPgWmOkeOaeXc5bB5XF+sLs2yeMs05iC+rh5uBfF0sbO17EyHSf3HkkfMzunl3P2QZWB88SHsO246JmtpBmsSuYZoMmsJ+5Egn6CQFIvlHUkrk2GKFO5ZiiJ1AVKyEogPwDj7BbgN8M1zVwBOSIBtyDYC/VBJOAeCFuhvogEigXDTqhPIoESd4LmItQ3kUC5oKxCgc1LtUkEZIsEKvx6wnsU6rNIoFpwmUKJpsVmCVT2ARAuEqgeoJNQoH6pLhLf6gU8EAnUE2QMoPDPSxSV6ypP2T499EIkUG+gzlnaND5lo0pjv5/Ztljt2l/vRALNBl2q+y2Kj92pjTYaIDXWVZVruPree4nEJhqi6ppokGfhP6xr60VVr5O+AAAAAElFTkSuQmCC';
35781
35711
 
35782
35712
  var TimeWidget = function TimeWidget(_ref) {
35783
35713
  var onClose = _ref.onClose,
@@ -35792,7 +35722,7 @@ var TimeWidget = function TimeWidget(_ref) {
35792
35722
  var WidgetContainer = /*#__PURE__*/styled.div.withConfig({
35793
35723
  displayName: "TimeWidget__WidgetContainer",
35794
35724
  componentId: "sc-1ja236h-0"
35795
- })(["background-image:url(", ");background-size:10rem;background-repeat:no-repeat;width:10rem;position:absolute;height:100px;"], img$d);
35725
+ })(["background-image:url(", ");background-size:10rem;background-repeat:no-repeat;width:10rem;position:absolute;height:100px;"], img$c);
35796
35726
  var Time = /*#__PURE__*/styled.div.withConfig({
35797
35727
  displayName: "TimeWidget__Time",
35798
35728
  componentId: "sc-1ja236h-1"
@@ -36040,16 +35970,230 @@ var Truncate = function Truncate(_ref) {
36040
35970
  var _ref$maxLines = _ref.maxLines,
36041
35971
  maxLines = _ref$maxLines === void 0 ? 1 : _ref$maxLines,
36042
35972
  children = _ref.children;
36043
- return React.createElement(Container$k, {
35973
+ return React.createElement(Container$j, {
36044
35974
  maxLines: maxLines
36045
35975
  }, children);
36046
35976
  };
36047
- var Container$k = /*#__PURE__*/styled.div.withConfig({
35977
+ var Container$j = /*#__PURE__*/styled.div.withConfig({
36048
35978
  displayName: "Truncate__Container",
36049
35979
  componentId: "sc-6x00qb-0"
36050
35980
  })(["display:-webkit-box;max-width:100%;max-height:100%;-webkit-line-clamp:", ";-webkit-box-orient:vertical;overflow:hidden;"], function (props) {
36051
35981
  return props.maxLines;
36052
35982
  });
36053
35983
 
36054
- export { Button, ButtonTypes, CharacterSelection, Chat, ChatDeprecated, CheckButton, CircularController, CraftBook, DraggableContainer, Dropdown, DropdownSelectorContainer, DynamicText, EquipmentSet, ErrorBoundary, HistoryDialog, ImgSide, Input, InputRadio, ItemContainer$1 as ItemContainer, ItemSelector, ItemSlot, ListMenu, NPCDialog, NPCDialogType, NPCMultiDialog, ProgressBar, PropertySelect, QuestInfo, QuestList, QuestionDialog, QuickSpells, RPGUIContainer, RPGUIContainerTypes, RPGUIRoot, RangeSlider, RangeSliderType, SkillProgressBar, SkillsContainer, SpellShortcut, Spellbook, SpriteFromAtlas, TextArea, TimeWidget, TradingMenu, Truncate, _RPGUI, useEventListener };
35984
+ var IS_MOBILE_OR_TABLET = /*#__PURE__*/isMobileOrTablet();
35985
+
35986
+ var chunkString = function chunkString(str, length) {
35987
+ return str.match(new RegExp('.{1,' + length + '}', 'g'));
35988
+ };
35989
+
35990
+ var img$d = 'data:image/gif;base64,R0lGODlhEAAQAPIAAAAAABQYLiw1TUBJc2hvmQAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtJbWFnZU1hZ2ljaw1nYW1tYT0wLjQ1NDU1ACH5BAEUAAAALAAAAAAQABAAAAM9CLrc/lCFGSKYJJP5AhlguDnBMIVgxXgmJapSSp3mKs/pKrT0IMCXUk+2Cgh2oSOnaDz+lswZpSOFUq2KBAAh/wtJbWFnZU1hZ2ljaw1nYW1tYT0wLjQ1NDU1ACH5BAEUAAAALAAAAAAQABAAAAIzhI+py90Bg4OjDrjCELxfFQhQx0mIJkaeaYRp5LJADMdnqXbyOJLYTdKBejjZoRaZJBMFACH/C0ltYWdlTWFnaWNrDWdhbW1hPTAuNDU0NTUAIfkEARQAAAAsAAAAABAAEAAAAjKEj6nL7Y+CDE6OO+QKQ/ifKYEgfR4VddPohQe7lmR0xidNTib65uacYP2AQWGuMlEUAAA7';
35991
+
35992
+ var NPCDialogText = function NPCDialogText(_ref) {
35993
+ var text = _ref.text,
35994
+ onClose = _ref.onClose,
35995
+ onEndStep = _ref.onEndStep,
35996
+ onStartStep = _ref.onStartStep,
35997
+ type = _ref.type;
35998
+ var windowSize = useRef([window.innerWidth, window.innerHeight]);
35999
+ function maxCharacters(width) {
36000
+ // Set the font size to 16 pixels
36001
+ var fontSize = 11.2;
36002
+ // Calculate the number of characters that can fit in one line
36003
+ var charactersPerLine = Math.floor(width / 2 / fontSize);
36004
+ // Calculate the number of lines that can fit in the div
36005
+ var linesPerDiv = Math.floor(180 / fontSize);
36006
+ // Calculate the maximum number of characters that can fit in the div
36007
+ var maxCharacters = charactersPerLine * linesPerDiv;
36008
+ // Return the maximum number of characters
36009
+ return Math.round(maxCharacters / 5);
36010
+ }
36011
+ var textChunks = chunkString(text, maxCharacters(windowSize.current[0]));
36012
+ var _useState = useState(0),
36013
+ chunkIndex = _useState[0],
36014
+ setChunkIndex = _useState[1];
36015
+ var onHandleSpacePress = function onHandleSpacePress(event) {
36016
+ if (event.code === 'Space') {
36017
+ goToNextStep();
36018
+ }
36019
+ };
36020
+ var goToNextStep = function goToNextStep() {
36021
+ var hasNextChunk = (textChunks == null ? void 0 : textChunks[chunkIndex + 1]) || false;
36022
+ if (hasNextChunk) {
36023
+ setChunkIndex(function (prev) {
36024
+ return prev + 1;
36025
+ });
36026
+ } else {
36027
+ // if there's no more text chunks, close the dialog
36028
+ onClose();
36029
+ }
36030
+ };
36031
+ useEffect(function () {
36032
+ document.addEventListener('keydown', onHandleSpacePress);
36033
+ return function () {
36034
+ return document.removeEventListener('keydown', onHandleSpacePress);
36035
+ };
36036
+ }, [chunkIndex]);
36037
+ var _useState2 = useState(false),
36038
+ showGoNextIndicator = _useState2[0],
36039
+ setShowGoNextIndicator = _useState2[1];
36040
+ return React.createElement(Container$k, null, React.createElement(DynamicText, {
36041
+ text: (textChunks == null ? void 0 : textChunks[chunkIndex]) || '',
36042
+ onFinish: function onFinish() {
36043
+ setShowGoNextIndicator(true);
36044
+ onEndStep && onEndStep();
36045
+ },
36046
+ onStart: function onStart() {
36047
+ setShowGoNextIndicator(false);
36048
+ onStartStep && onStartStep();
36049
+ }
36050
+ }), showGoNextIndicator && React.createElement(PressSpaceIndicator$1, {
36051
+ right: type === NPCDialogType.TextOnly ? '1rem' : '10.5rem',
36052
+ src: IS_MOBILE_OR_TABLET ? img$d : img$7,
36053
+ onPointerDown: function onPointerDown() {
36054
+ goToNextStep();
36055
+ }
36056
+ }));
36057
+ };
36058
+ var Container$k = /*#__PURE__*/styled.div.withConfig({
36059
+ displayName: "NPCDialogText__Container",
36060
+ componentId: "sc-1cxkdh9-0"
36061
+ })([""]);
36062
+ var PressSpaceIndicator$1 = /*#__PURE__*/styled.img.withConfig({
36063
+ displayName: "NPCDialogText__PressSpaceIndicator",
36064
+ componentId: "sc-1cxkdh9-1"
36065
+ })(["position:absolute;right:", ";bottom:1rem;height:20.7px;image-rendering:-webkit-optimize-contrast;"], function (_ref2) {
36066
+ var right = _ref2.right;
36067
+ return right;
36068
+ });
36069
+
36070
+ var NPCDialogType;
36071
+ (function (NPCDialogType) {
36072
+ NPCDialogType["TextOnly"] = "TextOnly";
36073
+ NPCDialogType["TextAndThumbnail"] = "TextAndThumbnail";
36074
+ })(NPCDialogType || (NPCDialogType = {}));
36075
+ var NPCDialog = function NPCDialog(_ref) {
36076
+ var text = _ref.text,
36077
+ type = _ref.type,
36078
+ _onClose = _ref.onClose,
36079
+ imagePath = _ref.imagePath,
36080
+ _ref$isQuestionDialog = _ref.isQuestionDialog,
36081
+ isQuestionDialog = _ref$isQuestionDialog === void 0 ? false : _ref$isQuestionDialog,
36082
+ questions = _ref.questions,
36083
+ answers = _ref.answers;
36084
+ return React.createElement(RPGUIContainer, {
36085
+ type: RPGUIContainerTypes.FramedGold,
36086
+ width: isQuestionDialog ? '600px' : '80%',
36087
+ height: '180px'
36088
+ }, isQuestionDialog && questions && answers ? React.createElement(React.Fragment, null, React.createElement(TextContainer$2, {
36089
+ flex: type === NPCDialogType.TextAndThumbnail ? '70%' : '100%'
36090
+ }, React.createElement(QuestionDialog, {
36091
+ questions: questions,
36092
+ answers: answers,
36093
+ onClose: function onClose() {
36094
+ if (_onClose) {
36095
+ _onClose();
36096
+ }
36097
+ }
36098
+ })), type === NPCDialogType.TextAndThumbnail && React.createElement(ThumbnailContainer$1, null, React.createElement(NPCThumbnail$1, {
36099
+ src: imagePath || img$6
36100
+ }))) : React.createElement(React.Fragment, null, React.createElement(Container$l, null, React.createElement(TextContainer$2, {
36101
+ flex: type === NPCDialogType.TextAndThumbnail ? '70%' : '100%'
36102
+ }, React.createElement(NPCDialogText, {
36103
+ type: type,
36104
+ text: text || 'No text provided.',
36105
+ onClose: function onClose() {
36106
+ if (_onClose) {
36107
+ _onClose();
36108
+ }
36109
+ }
36110
+ })), type === NPCDialogType.TextAndThumbnail && React.createElement(ThumbnailContainer$1, null, React.createElement(NPCThumbnail$1, {
36111
+ src: imagePath || img$6
36112
+ })))));
36113
+ };
36114
+ var Container$l = /*#__PURE__*/styled.div.withConfig({
36115
+ displayName: "NPCDialog__Container",
36116
+ componentId: "sc-1b4aw74-0"
36117
+ })(["display:flex;width:100%;height:100%;box-sizing:border-box;justify-content:center;align-items:flex-start;position:relative;"]);
36118
+ var TextContainer$2 = /*#__PURE__*/styled.div.withConfig({
36119
+ displayName: "NPCDialog__TextContainer",
36120
+ componentId: "sc-1b4aw74-1"
36121
+ })(["flex:", " 0 0;width:355px;"], function (_ref2) {
36122
+ var flex = _ref2.flex;
36123
+ return flex;
36124
+ });
36125
+ var ThumbnailContainer$1 = /*#__PURE__*/styled.div.withConfig({
36126
+ displayName: "NPCDialog__ThumbnailContainer",
36127
+ componentId: "sc-1b4aw74-2"
36128
+ })(["flex:30% 0 0;display:flex;justify-content:flex-end;"]);
36129
+ var NPCThumbnail$1 = /*#__PURE__*/styled.img.withConfig({
36130
+ displayName: "NPCDialog__NPCThumbnail",
36131
+ componentId: "sc-1b4aw74-3"
36132
+ })(["image-rendering:pixelated;height:128px;width:128px;"]);
36133
+
36134
+ var HistoryDialog = function HistoryDialog(_ref) {
36135
+ var backgroundImgPath = _ref.backgroundImgPath,
36136
+ fullCoverBackground = _ref.fullCoverBackground,
36137
+ questions = _ref.questions,
36138
+ answers = _ref.answers,
36139
+ text = _ref.text,
36140
+ imagePath = _ref.imagePath,
36141
+ textAndTypeArray = _ref.textAndTypeArray,
36142
+ onClose = _ref.onClose;
36143
+ var _useState = useState(0),
36144
+ img = _useState[0],
36145
+ setImage = _useState[1];
36146
+ var onHandleSpacePress = function onHandleSpacePress(event) {
36147
+ if (event.code === 'Space') {
36148
+ if (img < (backgroundImgPath == null ? void 0 : backgroundImgPath.length) - 1) {
36149
+ setImage(function (prev) {
36150
+ return prev + 1;
36151
+ });
36152
+ } else {
36153
+ // if there's no more text chunks, close the dialog
36154
+ onClose();
36155
+ }
36156
+ }
36157
+ };
36158
+ useEffect(function () {
36159
+ document.addEventListener('keydown', onHandleSpacePress);
36160
+ return function () {
36161
+ return document.removeEventListener('keydown', onHandleSpacePress);
36162
+ };
36163
+ }, [backgroundImgPath]);
36164
+ return React.createElement(BackgroundContainer, {
36165
+ imgPath: backgroundImgPath[img],
36166
+ fullImg: fullCoverBackground
36167
+ }, React.createElement(DialogContainer, null, textAndTypeArray ? React.createElement(NPCMultiDialog, {
36168
+ textAndTypeArray: textAndTypeArray,
36169
+ onClose: onClose
36170
+ }) : questions && answers ? React.createElement(QuestionDialog, {
36171
+ questions: questions,
36172
+ answers: answers,
36173
+ onClose: onClose
36174
+ }) : text && imagePath ? React.createElement(NPCDialog, {
36175
+ text: text,
36176
+ imagePath: imagePath,
36177
+ onClose: onClose,
36178
+ type: NPCDialogType.TextAndThumbnail
36179
+ }) : React.createElement(NPCDialog, {
36180
+ text: text,
36181
+ onClose: onClose,
36182
+ type: NPCDialogType.TextOnly
36183
+ })));
36184
+ };
36185
+ var BackgroundContainer = /*#__PURE__*/styled.div.withConfig({
36186
+ displayName: "HistoryDialog__BackgroundContainer",
36187
+ componentId: "sc-u6oe75-0"
36188
+ })(["width:100%;height:100%;background-image:url(", ");background-size:", ";display:flex;justify-content:space-evenly;align-items:center;"], function (props) {
36189
+ return props.imgPath;
36190
+ }, function (props) {
36191
+ return props.imgPath ? 'cover' : 'auto';
36192
+ });
36193
+ var DialogContainer = /*#__PURE__*/styled.div.withConfig({
36194
+ displayName: "HistoryDialog__DialogContainer",
36195
+ componentId: "sc-u6oe75-1"
36196
+ })(["display:flex;justify-content:center;padding-top:200px;"]);
36197
+
36198
+ export { Button, ButtonTypes, CharacterSelection, Chat, ChatDeprecated, CheckButton, CircularController, CraftBook, DraggableContainer, Dropdown, DropdownSelectorContainer, DynamicText, EquipmentSet, ErrorBoundary, HistoryDialog, ImgSide, Input, InputRadio, ItemContainer$1 as ItemContainer, ItemSelector, ItemSlot, ListMenu, NPCDialog, NPCDialogType, NPCMultiDialog, ProgressBar, PropertySelect, QuestInfo, QuestList, QuestionDialog, RPGUIContainer, RPGUIContainerTypes, RPGUIRoot, RangeSlider, RangeSliderType, Shortcuts, SkillProgressBar, SkillsContainer, Spellbook, SpriteFromAtlas, TextArea, TimeWidget, TradingMenu, Truncate, _RPGUI, useEventListener };
36055
36199
  //# sourceMappingURL=long-bow.esm.js.map