@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,42 +1,42 @@
1
- import React, { Component, ErrorInfo, ReactNode } from 'react';
2
- import atlasJSON from '../../../mocks/atlas/items/items.json';
3
- import atlasIMG from '../../../mocks/atlas/items/items.png';
4
- import { SpriteFromAtlas } from '../../shared/SpriteFromAtlas';
5
-
6
- interface Props {
7
- children?: ReactNode;
8
- }
9
-
10
- interface State {
11
- hasError: boolean;
12
- }
13
-
14
- export class ErrorBoundary extends Component<Props, State> {
15
- public state: State = {
16
- hasError: false,
17
- };
18
-
19
- public static getDerivedStateFromError(_: Error): State {
20
- // Update state so the next render will show the fallback UI.
21
- return { hasError: true };
22
- }
23
-
24
- public componentDidCatch(error: Error, errorInfo: ErrorInfo) {
25
- console.error('Uncaught error:', error, errorInfo);
26
- }
27
-
28
- public render() {
29
- if (this.state.hasError) {
30
- return (
31
- <SpriteFromAtlas
32
- atlasIMG={atlasIMG}
33
- atlasJSON={atlasJSON}
34
- spriteKey={'others/no-image.png'}
35
- imgScale={3}
36
- />
37
- );
38
- }
39
-
40
- return this.props.children;
41
- }
42
- }
1
+ import React, { Component, ErrorInfo, ReactNode } from 'react';
2
+ import atlasJSON from '../../../mocks/atlas/items/items.json';
3
+ import atlasIMG from '../../../mocks/atlas/items/items.png';
4
+ import { SpriteFromAtlas } from '../../shared/SpriteFromAtlas';
5
+
6
+ interface Props {
7
+ children?: ReactNode;
8
+ }
9
+
10
+ interface State {
11
+ hasError: boolean;
12
+ }
13
+
14
+ export class ErrorBoundary extends Component<Props, State> {
15
+ public state: State = {
16
+ hasError: false,
17
+ };
18
+
19
+ public static getDerivedStateFromError(_: Error): State {
20
+ // Update state so the next render will show the fallback UI.
21
+ return { hasError: true };
22
+ }
23
+
24
+ public componentDidCatch(error: Error, errorInfo: ErrorInfo) {
25
+ console.error('Uncaught error:', error, errorInfo);
26
+ }
27
+
28
+ public render() {
29
+ if (this.state.hasError) {
30
+ return (
31
+ <SpriteFromAtlas
32
+ atlasIMG={atlasIMG}
33
+ atlasJSON={atlasJSON}
34
+ spriteKey={'others/no-image.png'}
35
+ imgScale={3}
36
+ />
37
+ );
38
+ }
39
+
40
+ return this.props.children;
41
+ }
42
+ }
@@ -1,175 +1,210 @@
1
- import { IItem, IItemContainer, ItemContainerType } from '@rpg-engine/shared';
2
- import React, { useState } from 'react';
3
- import styled from 'styled-components';
4
- import { SlotsContainer } from '../../Abstractions/SlotsContainer';
5
- import { ItemQuantitySelector } from './ItemQuantitySelector';
6
-
7
- import { IPosition } from '../../../types/eventTypes';
8
- import { ItemSlot } from './ItemSlot';
9
-
10
- export interface IItemContainerProps {
11
- itemContainer: IItemContainer;
12
- onClose?: () => void;
13
- onItemClick?: (
14
- item: IItem,
15
- ItemType: IItem['type'],
16
- itemContainerType: ItemContainerType | null
17
- ) => void;
18
- onItemDragStart?: (
19
- item: IItem,
20
- slotIndex: number,
21
- itemContainerType: ItemContainerType | null
22
- ) => void;
23
- onItemDragEnd?: (quantity?: number) => void;
24
- onOutsideDrop?: (item: IItem, position: IPosition) => void;
25
- onItemPlaceDrop?: (
26
- item: IItem | null,
27
- slotIndex: number,
28
- itemContainerType: ItemContainerType | null
29
- ) => void;
30
- dragScale?: number;
31
- checkIfItemCanBeMoved: () => boolean;
32
- checkIfItemShouldDragEnd?: () => boolean;
33
- onMouseOver?: (e: any, slotIndex: number, item: IItem | null) => void;
34
- onSelected?: (optionId: string, item: IItem) => void;
35
- type: ItemContainerType;
36
- atlasJSON: any;
37
- atlasIMG: any;
38
- disableContextMenu?: boolean;
39
- initialPosition?: { x: number; y: number };
40
- }
41
-
42
- export const ItemContainer: React.FC<IItemContainerProps> = ({
43
- itemContainer,
44
- onClose,
45
- onMouseOver,
46
- onSelected,
47
- onItemClick,
48
- type,
49
- atlasJSON,
50
- atlasIMG,
51
- disableContextMenu = false,
52
- onItemDragEnd,
53
- onItemDragStart,
54
- onItemPlaceDrop,
55
- onOutsideDrop,
56
- checkIfItemCanBeMoved,
57
- initialPosition,
58
- checkIfItemShouldDragEnd,
59
- dragScale,
60
- }) => {
61
- const [quantitySelect, setQuantitySelect] = useState({
62
- isOpen: false,
63
- maxQuantity: 1,
64
- callback: (_quantity: number) => {},
65
- });
66
-
67
- const onRenderSlots = () => {
68
- const slots = [];
69
-
70
- for (let i = 0; i < itemContainer.slotQty; i++) {
71
- slots.push(
72
- <ItemSlot
73
- isContextMenuDisabled={disableContextMenu}
74
- key={i}
75
- slotIndex={i}
76
- item={itemContainer.slots?.[i] || null}
77
- itemContainerType={type}
78
- onMouseOver={(event, slotIndex, item) => {
79
- if (onMouseOver) onMouseOver(event, slotIndex, item);
80
- }}
81
- onPointerDown={(ItemType, ContainerType, item) => {
82
- if (onItemClick) onItemClick(item, ItemType, ContainerType);
83
- }}
84
- onSelected={(optionId: string, item: IItem) => {
85
- if (onSelected) onSelected(optionId, item);
86
- }}
87
- onDragStart={(item, slotIndex, itemContainerType) => {
88
- if (onItemDragStart)
89
- onItemDragStart(item, slotIndex, itemContainerType);
90
- }}
91
- onDragEnd={quantity => {
92
- if (onItemDragEnd) onItemDragEnd(quantity);
93
- }}
94
- dragScale={dragScale}
95
- checkIfItemCanBeMoved={checkIfItemCanBeMoved}
96
- checkIfItemShouldDragEnd={checkIfItemShouldDragEnd}
97
- openQuantitySelector={(maxQuantity, callback) => {
98
- setQuantitySelect({
99
- isOpen: true,
100
- maxQuantity,
101
- callback,
102
- });
103
- }}
104
- onPlaceDrop={(item, slotIndex, itemContainerType) => {
105
- if (onItemPlaceDrop)
106
- onItemPlaceDrop(item, slotIndex, itemContainerType);
107
- }}
108
- onOutsideDrop={(item, position) => {
109
- if (onOutsideDrop) onOutsideDrop(item, position);
110
- }}
111
- atlasIMG={atlasIMG}
112
- atlasJSON={atlasJSON}
113
- />
114
- );
115
- }
116
- return slots;
117
- };
118
-
119
- return (
120
- <>
121
- <SlotsContainer
122
- title={itemContainer.name || 'Container'}
123
- onClose={onClose}
124
- initialPosition={initialPosition}
125
- >
126
- <ItemsContainer className="item-container-body">
127
- {onRenderSlots()}
128
- </ItemsContainer>
129
- </SlotsContainer>
130
- {quantitySelect.isOpen && (
131
- <QuantitySelectorContainer>
132
- <ItemQuantitySelector
133
- quantity={quantitySelect.maxQuantity}
134
- onConfirm={quantity => {
135
- quantitySelect.callback(quantity);
136
- setQuantitySelect({
137
- isOpen: false,
138
- maxQuantity: 1,
139
- callback: () => {},
140
- });
141
- }}
142
- onClose={() => {
143
- quantitySelect.callback(-1);
144
- setQuantitySelect({
145
- isOpen: false,
146
- maxQuantity: 1,
147
- callback: () => {},
148
- });
149
- }}
150
- />
151
- </QuantitySelectorContainer>
152
- )}
153
- </>
154
- );
155
- };
156
-
157
- const ItemsContainer = styled.div`
158
- max-width: 280px;
159
- display: flex;
160
- justify-content: center;
161
- flex-wrap: wrap;
162
- `;
163
-
164
- const QuantitySelectorContainer = styled.div`
165
- position: absolute;
166
- top: 0;
167
- left: 0;
168
- width: 100vw;
169
- height: 100vh;
170
- z-index: 100;
171
- display: flex;
172
- justify-content: center;
173
- align-items: center;
174
- background-color: rgba(0, 0, 0, 0.5);
175
- `;
1
+ import {
2
+ IItem,
3
+ IItemContainer,
4
+ IShortcut,
5
+ ItemContainerType,
6
+ ItemType,
7
+ } from '@rpg-engine/shared';
8
+ import React, { useState } from 'react';
9
+ import styled from 'styled-components';
10
+ import { SlotsContainer } from '../../Abstractions/SlotsContainer';
11
+ import { ItemQuantitySelector } from './ItemQuantitySelector';
12
+
13
+ import { IPosition } from '../../../types/eventTypes';
14
+ import { ShortcutsSetter } from '../../Shortcuts/ShortcutsSetter';
15
+ import { ItemSlot } from './ItemSlot';
16
+
17
+ export interface IItemContainerProps {
18
+ itemContainer: IItemContainer;
19
+ onClose?: () => void;
20
+ onItemClick?: (
21
+ item: IItem,
22
+ ItemType: IItem['type'],
23
+ itemContainerType: ItemContainerType | null
24
+ ) => void;
25
+ onItemDragStart?: (
26
+ item: IItem,
27
+ slotIndex: number,
28
+ itemContainerType: ItemContainerType | null
29
+ ) => void;
30
+ onItemDragEnd?: (quantity?: number) => void;
31
+ onOutsideDrop?: (item: IItem, position: IPosition) => void;
32
+ onItemPlaceDrop?: (
33
+ item: IItem | null,
34
+ slotIndex: number,
35
+ itemContainerType: ItemContainerType | null
36
+ ) => void;
37
+ dragScale?: number;
38
+ checkIfItemCanBeMoved: () => boolean;
39
+ checkIfItemShouldDragEnd?: () => boolean;
40
+ onMouseOver?: (e: any, slotIndex: number, item: IItem | null) => void;
41
+ onSelected?: (optionId: string, item: IItem) => void;
42
+ type: ItemContainerType;
43
+ atlasJSON: any;
44
+ atlasIMG: any;
45
+ disableContextMenu?: boolean;
46
+ initialPosition?: { x: number; y: number };
47
+ shortcuts?: IShortcut[];
48
+ setItemShortcut?: (key: string, index: number) => void;
49
+ removeShortcut?: (index: number) => void;
50
+ }
51
+
52
+ export const ItemContainer: React.FC<IItemContainerProps> = ({
53
+ itemContainer,
54
+ onClose,
55
+ onMouseOver,
56
+ onSelected,
57
+ onItemClick,
58
+ type,
59
+ atlasJSON,
60
+ atlasIMG,
61
+ disableContextMenu = false,
62
+ onItemDragEnd,
63
+ onItemDragStart,
64
+ onItemPlaceDrop,
65
+ onOutsideDrop,
66
+ checkIfItemCanBeMoved,
67
+ initialPosition,
68
+ checkIfItemShouldDragEnd,
69
+ dragScale,
70
+ shortcuts,
71
+ setItemShortcut,
72
+ removeShortcut,
73
+ }) => {
74
+ const [quantitySelect, setQuantitySelect] = useState({
75
+ isOpen: false,
76
+ maxQuantity: 1,
77
+ callback: (_quantity: number) => {},
78
+ });
79
+ const [settingShortcutIndex, setSettingShortcutIndex] = useState(-1);
80
+
81
+ const onRenderSlots = () => {
82
+ const slots = [];
83
+
84
+ for (let i = 0; i < itemContainer.slotQty; i++) {
85
+ slots.push(
86
+ <ItemSlot
87
+ isContextMenuDisabled={disableContextMenu}
88
+ key={i}
89
+ slotIndex={i}
90
+ item={itemContainer.slots?.[i] || null}
91
+ itemContainerType={type}
92
+ onMouseOver={(event, slotIndex, item) => {
93
+ if (onMouseOver) onMouseOver(event, slotIndex, item);
94
+ }}
95
+ onPointerDown={(itemType, containerType, item) => {
96
+ if (settingShortcutIndex !== -1) {
97
+ setSettingShortcutIndex(-1);
98
+
99
+ if (
100
+ itemType === ItemType.Consumable ||
101
+ itemType === ItemType.Tool
102
+ ) {
103
+ setItemShortcut?.(item.key, settingShortcutIndex);
104
+ }
105
+ } else if (onItemClick) onItemClick(item, itemType, containerType);
106
+ }}
107
+ onSelected={(optionId: string, item: IItem) => {
108
+ if (onSelected) onSelected(optionId, item);
109
+ }}
110
+ onDragStart={(item, slotIndex, itemContainerType) => {
111
+ if (onItemDragStart)
112
+ onItemDragStart(item, slotIndex, itemContainerType);
113
+ }}
114
+ onDragEnd={quantity => {
115
+ if (onItemDragEnd) onItemDragEnd(quantity);
116
+ }}
117
+ dragScale={dragScale}
118
+ checkIfItemCanBeMoved={checkIfItemCanBeMoved}
119
+ checkIfItemShouldDragEnd={checkIfItemShouldDragEnd}
120
+ openQuantitySelector={(maxQuantity, callback) => {
121
+ setQuantitySelect({
122
+ isOpen: true,
123
+ maxQuantity,
124
+ callback,
125
+ });
126
+ }}
127
+ onPlaceDrop={(item, slotIndex, itemContainerType) => {
128
+ if (onItemPlaceDrop)
129
+ onItemPlaceDrop(item, slotIndex, itemContainerType);
130
+ }}
131
+ onOutsideDrop={(item, position) => {
132
+ if (onOutsideDrop) onOutsideDrop(item, position);
133
+ }}
134
+ atlasIMG={atlasIMG}
135
+ atlasJSON={atlasJSON}
136
+ isSelectingShortcut={settingShortcutIndex !== -1}
137
+ />
138
+ );
139
+ }
140
+ return slots;
141
+ };
142
+
143
+ return (
144
+ <>
145
+ <SlotsContainer
146
+ title={itemContainer.name || 'Container'}
147
+ onClose={onClose}
148
+ initialPosition={initialPosition}
149
+ >
150
+ {type === ItemContainerType.Inventory &&
151
+ shortcuts &&
152
+ removeShortcut && (
153
+ <ShortcutsSetter
154
+ setSettingShortcutIndex={setSettingShortcutIndex}
155
+ settingShortcutIndex={settingShortcutIndex}
156
+ shortcuts={shortcuts}
157
+ removeShortcut={removeShortcut}
158
+ atlasIMG={atlasIMG}
159
+ atlasJSON={atlasJSON}
160
+ />
161
+ )}
162
+ <ItemsContainer className="item-container-body">
163
+ {onRenderSlots()}
164
+ </ItemsContainer>
165
+ </SlotsContainer>
166
+ {quantitySelect.isOpen && (
167
+ <QuantitySelectorContainer>
168
+ <ItemQuantitySelector
169
+ quantity={quantitySelect.maxQuantity}
170
+ onConfirm={quantity => {
171
+ quantitySelect.callback(quantity);
172
+ setQuantitySelect({
173
+ isOpen: false,
174
+ maxQuantity: 1,
175
+ callback: () => {},
176
+ });
177
+ }}
178
+ onClose={() => {
179
+ quantitySelect.callback(-1);
180
+ setQuantitySelect({
181
+ isOpen: false,
182
+ maxQuantity: 1,
183
+ callback: () => {},
184
+ });
185
+ }}
186
+ />
187
+ </QuantitySelectorContainer>
188
+ )}
189
+ </>
190
+ );
191
+ };
192
+
193
+ const ItemsContainer = styled.div`
194
+ display: flex;
195
+ justify-content: center;
196
+ flex-wrap: wrap;
197
+ `;
198
+
199
+ const QuantitySelectorContainer = styled.div`
200
+ position: absolute;
201
+ top: 0;
202
+ left: 0;
203
+ width: 100vw;
204
+ height: 100vh;
205
+ z-index: 100;
206
+ display: flex;
207
+ justify-content: center;
208
+ align-items: center;
209
+ background-color: rgba(0, 0, 0, 0.5);
210
+ `;
@@ -1,6 +1,6 @@
1
- export enum SlotContainerType {
2
- INVENTORY = 'Inventory',
3
- EQUIPMENT_SET = 'EquipmentSet',
4
- LOOT = 'Loot',
5
- MAP_CONTAINER = 'Map-Container',
6
- }
1
+ export enum SlotContainerType {
2
+ INVENTORY = 'Inventory',
3
+ EQUIPMENT_SET = 'EquipmentSet',
4
+ LOOT = 'Loot',
5
+ MAP_CONTAINER = 'Map-Container',
6
+ }