@rpg-engine/long-bow 0.4.7 → 0.4.8

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 (177) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +181 -181
  3. package/dist/components/ConfirmModal.d.ts +8 -0
  4. package/dist/components/DraggableContainer.d.ts +1 -0
  5. package/dist/components/Item/Inventory/ItemSlot.d.ts +7 -7
  6. package/dist/components/Marketplace/BuyPanel.d.ts +22 -0
  7. package/dist/components/Marketplace/ManagmentPanel.d.ts +18 -0
  8. package/dist/components/Marketplace/Marketplace.d.ts +22 -9
  9. package/dist/components/Marketplace/MarketplaceRows.d.ts +3 -1
  10. package/dist/components/Marketplace/{__mocks__ → filters}/index.d.ts +1 -3
  11. package/dist/components/Pager.d.ts +9 -0
  12. package/dist/long-bow.cjs.development.js +1540 -1163
  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 +1594 -1217
  17. package/dist/long-bow.esm.js.map +1 -1
  18. package/package.json +100 -100
  19. package/src/components/Abstractions/ModalPortal.tsx +22 -22
  20. package/src/components/Abstractions/SlotsContainer.tsx +62 -62
  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 +98 -98
  32. package/src/components/CharacterStatus/CharacterStatus.tsx +120 -120
  33. package/src/components/Chat/Chat.tsx +196 -196
  34. package/src/components/Chatdeprecated/ChatDeprecated.tsx +198 -198
  35. package/src/components/CheckButton.tsx +65 -65
  36. package/src/components/CircularController/CircularController.tsx +282 -282
  37. package/src/components/ConfirmModal.tsx +87 -0
  38. package/src/components/CraftBook/CraftBook.tsx +286 -286
  39. package/src/components/CraftBook/CraftingRecipe.tsx +161 -161
  40. package/src/components/CraftBook/MockItems.ts +101 -101
  41. package/src/components/DraggableContainer.tsx +183 -180
  42. package/src/components/Dropdown.tsx +14 -6
  43. package/src/components/DropdownSelectorContainer.tsx +42 -42
  44. package/src/components/Equipment/EquipmentSet.tsx +199 -199
  45. package/src/components/HistoryDialog.tsx +104 -104
  46. package/src/components/Input.tsx +15 -15
  47. package/src/components/InputRadio.tsx +41 -41
  48. package/src/components/Item/Cards/ItemInfo.tsx +298 -298
  49. package/src/components/Item/Cards/ItemInfoDisplay.tsx +135 -135
  50. package/src/components/Item/Cards/ItemInfoWrapper.tsx +62 -62
  51. package/src/components/Item/Cards/ItemTooltip.tsx +83 -83
  52. package/src/components/Item/Cards/MobileItemTooltip.tsx +149 -149
  53. package/src/components/Item/Inventory/ErrorBoundary.tsx +42 -42
  54. package/src/components/Item/Inventory/ItemContainer.tsx +231 -231
  55. package/src/components/Item/Inventory/ItemContainerTypes.ts +6 -6
  56. package/src/components/Item/Inventory/ItemQuantitySelector.tsx +138 -138
  57. package/src/components/Item/Inventory/ItemSlot.tsx +595 -580
  58. package/src/components/Item/Inventory/itemContainerHelper.ts +175 -175
  59. package/src/components/ListMenu.tsx +63 -63
  60. package/src/components/Marketplace/BuyPanel.tsx +296 -0
  61. package/src/components/Marketplace/ManagmentPanel.tsx +247 -0
  62. package/src/components/Marketplace/Marketplace.tsx +106 -132
  63. package/src/components/Marketplace/MarketplaceRows.tsx +161 -171
  64. package/src/components/Marketplace/{__mocks__ → filters}/index.tsx +67 -65
  65. package/src/components/Multitab/Tab.tsx +66 -66
  66. package/src/components/Multitab/TabBody.tsx +13 -13
  67. package/src/components/Multitab/TabsContainer.tsx +97 -97
  68. package/src/components/NPCDialog/NPCDialog.tsx +121 -121
  69. package/src/components/NPCDialog/NPCDialogText.tsx +113 -113
  70. package/src/components/NPCDialog/NPCMultiDialog.tsx +159 -159
  71. package/src/components/NPCDialog/QuestionDialog/QuestionDialog.tsx +237 -237
  72. package/src/components/Pager.tsx +94 -0
  73. package/src/components/ProgressBar.tsx +95 -95
  74. package/src/components/PropertySelect/PropertySelect.tsx +106 -106
  75. package/src/components/QuestInfo/QuestInfo.tsx +233 -233
  76. package/src/components/QuestList.tsx +135 -135
  77. package/src/components/RPGUIContainer.tsx +47 -47
  78. package/src/components/RPGUIForceRenderStart.tsx +45 -45
  79. package/src/components/RPGUIRoot.tsx +14 -14
  80. package/src/components/RadioButton.tsx +53 -53
  81. package/src/components/RadioInput/RadioButton.tsx +96 -96
  82. package/src/components/RadioInput/RadioInput.tsx +102 -102
  83. package/src/components/RadioInput/instruments.ts +15 -15
  84. package/src/components/RangeSlider.tsx +78 -78
  85. package/src/components/RelativeListMenu.tsx +90 -90
  86. package/src/components/ScrollList.tsx +79 -79
  87. package/src/components/Shortcuts/Shortcuts.tsx +193 -193
  88. package/src/components/Shortcuts/ShortcutsSetter.tsx +139 -139
  89. package/src/components/Shortcuts/SingleShortcut.ts +82 -82
  90. package/src/components/Shortcuts/useShortcutCooldown.ts +23 -23
  91. package/src/components/SimpleProgressBar.tsx +62 -62
  92. package/src/components/SkillProgressBar.tsx +198 -198
  93. package/src/components/SkillsContainer.tsx +213 -213
  94. package/src/components/Spellbook/Spell.tsx +235 -236
  95. package/src/components/Spellbook/Spellbook.tsx +145 -161
  96. package/src/components/Spellbook/cards/MobileSpellTooltip.tsx +137 -137
  97. package/src/components/Spellbook/cards/SpellInfo.tsx +134 -134
  98. package/src/components/Spellbook/cards/SpellInfoDisplay.tsx +31 -31
  99. package/src/components/Spellbook/cards/SpellInfoWrapper.tsx +48 -48
  100. package/src/components/Spellbook/cards/SpellTooltip.tsx +70 -70
  101. package/src/components/Spellbook/constants.ts +7 -7
  102. package/src/components/Spellbook/mockSpells.ts +84 -84
  103. package/src/components/StaticBook/StaticBook.tsx +103 -103
  104. package/src/components/TextArea.tsx +11 -11
  105. package/src/components/TimeWidget/DayNightPeriod/DayNightPeriod.tsx +35 -35
  106. package/src/components/TimeWidget/TimeWidget.tsx +65 -65
  107. package/src/components/TradingMenu/TradingItemRow.tsx +199 -199
  108. package/src/components/TradingMenu/TradingMenu.tsx +219 -219
  109. package/src/components/TradingMenu/items.mock.ts +48 -48
  110. package/src/components/Truncate.tsx +25 -25
  111. package/src/components/itemSelector/ItemSelector.tsx +136 -136
  112. package/src/components/shared/Column.tsx +16 -16
  113. package/src/components/shared/Ellipsis.tsx +76 -68
  114. package/src/components/shared/SpriteFromAtlas.tsx +104 -104
  115. package/src/components/typography/DynamicText.tsx +49 -49
  116. package/src/constants/uiColors.ts +20 -20
  117. package/src/constants/uiDevices.ts +3 -3
  118. package/src/constants/uiFonts.ts +12 -12
  119. package/src/hooks/useEventListener.ts +21 -21
  120. package/src/hooks/useOutsideAlerter.ts +25 -25
  121. package/src/index.tsx +42 -42
  122. package/src/libs/CastingTypeHelper.ts +7 -7
  123. package/src/libs/StringHelpers.ts +3 -3
  124. package/src/libs/itemCounter.ts +21 -21
  125. package/src/mocks/atlas/entities/entities.json +20215 -20215
  126. package/src/mocks/atlas/icons/icons.json +735 -735
  127. package/src/mocks/atlas/items/items.json +12086 -12086
  128. package/src/mocks/equipmentSet.mocks.ts +391 -391
  129. package/src/mocks/itemContainer.mocks.ts +605 -605
  130. package/src/mocks/skills.mocks.ts +130 -130
  131. package/src/stories/Arrow.stories.tsx +26 -26
  132. package/src/stories/Button.stories.tsx +36 -36
  133. package/src/stories/CharacterSelection.stories.tsx +44 -44
  134. package/src/stories/CharacterStatus.stories.tsx +29 -29
  135. package/src/stories/Chat.stories.tsx +187 -187
  136. package/src/stories/ChatDeprecated.stories.tsx +170 -170
  137. package/src/stories/CheckButton.stories.tsx +48 -48
  138. package/src/stories/CircullarController.stories.tsx +37 -37
  139. package/src/stories/CraftBook.stories.tsx +42 -42
  140. package/src/stories/DayNightPeriod.stories.tsx +27 -27
  141. package/src/stories/DraggableContainer.stories.tsx +28 -28
  142. package/src/stories/Dropdown.stories.tsx +46 -46
  143. package/src/stories/DropdownSelectorContainer.stories.tsx +41 -41
  144. package/src/stories/EquipmentSet.stories.tsx +65 -65
  145. package/src/stories/HistoryDialog.stories.tsx +61 -61
  146. package/src/stories/ItemContainer.stories.tsx +201 -201
  147. package/src/stories/ItemInfoDisplay.stories.tsx +33 -33
  148. package/src/stories/ItemQuantitySelector.stories.tsx +26 -26
  149. package/src/stories/ItemSelector.stories.tsx +77 -77
  150. package/src/stories/ItemTradingComponent.stories.tsx +35 -35
  151. package/src/stories/ListMenu.stories.tsx +56 -56
  152. package/src/stories/Marketplace.stories.tsx +53 -42
  153. package/src/stories/MarketplaceRows.stories.tsx +28 -28
  154. package/src/stories/Multitab.stories.tsx +51 -51
  155. package/src/stories/NPCDialog.stories.tsx +130 -130
  156. package/src/stories/NPCMultiDialog.stories.tsx +71 -71
  157. package/src/stories/ProgressBar.stories.tsx +23 -23
  158. package/src/stories/PropertySelect.stories.tsx +40 -40
  159. package/src/stories/QuestInfo.stories.tsx +107 -107
  160. package/src/stories/QuestList.stories.tsx +82 -82
  161. package/src/stories/RPGUIContainers.stories.tsx +42 -42
  162. package/src/stories/RadioButton.stories.tsx +49 -49
  163. package/src/stories/RadioInput.stories.tsx +34 -34
  164. package/src/stories/RangeSlider.stories.tsx +64 -64
  165. package/src/stories/ScrollList.stories.tsx +85 -85
  166. package/src/stories/Shortcuts.stories.tsx +39 -39
  167. package/src/stories/SimpleProgressBar.stories.tsx +22 -22
  168. package/src/stories/SkillProgressBar.stories.tsx +34 -34
  169. package/src/stories/SkillsContainer.stories.tsx +35 -35
  170. package/src/stories/SpellInfoDisplay.stories.tsx +27 -27
  171. package/src/stories/Spellbook.stories.tsx +104 -104
  172. package/src/stories/StaticBook.stories.tsx +32 -32
  173. package/src/stories/Text.stories.tsx +42 -42
  174. package/src/stories/TimeWidget.stories.tsx +27 -27
  175. package/src/stories/TradingMenu.stories.tsx +47 -47
  176. package/src/types/eventTypes.ts +4 -4
  177. package/src/types/index.d.ts +2 -2
@@ -1,201 +1,201 @@
1
- import {
2
- IItem,
3
- IShortcut,
4
- ItemContainerType,
5
- ItemType,
6
- ShortcutType,
7
- } from '@rpg-engine/shared';
8
- import { Meta, Story } from '@storybook/react';
9
- import React, { useEffect, useState } from 'react';
10
- import {
11
- IItemContainerProps,
12
- ItemContainer,
13
- } from '../../src/components/Item/Inventory/ItemContainer';
14
- import { RPGUIRoot } from '../../src/components/RPGUIRoot';
15
- import { equipmentSetMock } from '../../src/mocks/equipmentSet.mocks';
16
- import { itemContainerMock } from '../../src/mocks/itemContainer.mocks';
17
- import {
18
- defaultShortcut,
19
- SHORTCUTS_STORAGE_KEY,
20
- } from '../components/Spellbook/constants';
21
- import atlasJSON from '../mocks/atlas/items/items.json';
22
- import atlasIMG from '../mocks/atlas/items/items.png';
23
-
24
- const meta: Meta = {
25
- title: 'Item Container',
26
- component: ItemContainer,
27
- };
28
-
29
- export default meta;
30
-
31
- const onMouseOver = (_event: any, slotIndex: number, item: IItem | null) => {
32
- if (!item) {
33
- // console.log(`Free at ${slotIndex}` )
34
- return;
35
- }
36
- console.log(`${item.name} at ${slotIndex}`);
37
- };
38
-
39
- const onSelected = (payload: string, item: IItem) => {
40
- console.log('onSelected', payload, item);
41
- };
42
-
43
- const onItemClick = (
44
- item: IItem,
45
- ItemType: ItemType,
46
- itemContainerType: ItemContainerType | null
47
- ) => {
48
- console.log(item, ItemType, itemContainerType, 'was clicked!');
49
- };
50
-
51
- // THIS IS ONLY LONG-BOW EXAMPLE FOR DRAG AND DROP
52
- let dragItem: IItem | null = null;
53
- let dropItem: IItem | null = null;
54
- let allowedToDrop = false;
55
- let dragSlot = -1;
56
- let dropSlot = -1;
57
-
58
- const Template: Story<IItemContainerProps> = () => {
59
- const [itemContainer, setItemContainer] = useState(itemContainerMock);
60
- const [shortcuts, setShortcuts] = useState<IShortcut[]>([]);
61
-
62
- useEffect(() => {
63
- const shortcuts = localStorage.getItem(SHORTCUTS_STORAGE_KEY);
64
- if (shortcuts) {
65
- setShortcuts(JSON.parse(shortcuts));
66
- }
67
- }, []);
68
-
69
- const setItemShortcut = (key: string, index: number) => {
70
- const shortcuts = JSON.parse(
71
- localStorage.getItem(SHORTCUTS_STORAGE_KEY) as string
72
- ) as IShortcut[];
73
-
74
- let item: IItem | null = null;
75
-
76
- Object.keys(itemContainer.slots).forEach(slot => {
77
- const slotItem = itemContainer.slots?.[parseInt(slot)];
78
- if (slotItem && slotItem.key === key) {
79
- item = slotItem;
80
- }
81
- });
82
-
83
- if (!item) {
84
- return;
85
- }
86
-
87
- if (!shortcuts) {
88
- const newShortcuts: IShortcut[] = Array(6).fill(defaultShortcut);
89
-
90
- newShortcuts[index] = {
91
- type: ShortcutType.Item,
92
- payload: item,
93
- };
94
-
95
- localStorage.setItem(SHORTCUTS_STORAGE_KEY, JSON.stringify(newShortcuts));
96
- } else {
97
- shortcuts[index] = {
98
- type: ShortcutType.Item,
99
- payload: item,
100
- };
101
-
102
- localStorage.setItem(SHORTCUTS_STORAGE_KEY, JSON.stringify(shortcuts));
103
- }
104
-
105
- setShortcuts(shortcuts);
106
- };
107
-
108
- const removeShortcut = (index: number) => {
109
- const shortcuts = JSON.parse(
110
- localStorage.getItem(SHORTCUTS_STORAGE_KEY) as string
111
- );
112
-
113
- if (!shortcuts) return;
114
-
115
- shortcuts[index] = defaultShortcut;
116
-
117
- localStorage.setItem(SHORTCUTS_STORAGE_KEY, JSON.stringify(shortcuts));
118
-
119
- setShortcuts(shortcuts);
120
- };
121
-
122
- return (
123
- <RPGUIRoot>
124
- <ItemContainer
125
- itemContainer={itemContainer}
126
- onClose={() => console.log('closing item container')}
127
- onMouseOver={onMouseOver}
128
- onSelected={onSelected}
129
- onItemClick={onItemClick}
130
- checkIfItemCanBeMoved={() => allowedToDrop}
131
- onItemDragEnd={quantity => {
132
- // THIS IS ONLY LONG-BOW EXAMPLE FOR DRAG AND DROP
133
-
134
- if (quantity === 0) {
135
- setItemContainer({ ...itemContainer });
136
- } else if (allowedToDrop && dropSlot !== -1) {
137
- const newContainer = { ...itemContainer };
138
-
139
- if (quantity && dragItem && dragItem.stackQty) {
140
- newContainer.slots[dropSlot] = {
141
- ...dragItem,
142
- stackQty: quantity + (dropItem?.stackQty || 0),
143
- };
144
-
145
- if (dragItem.stackQty - quantity === 0)
146
- newContainer.slots[dragSlot] = null;
147
- else
148
- newContainer.slots[dragSlot] = {
149
- ...dragItem,
150
- stackQty: dragItem.stackQty - quantity,
151
- };
152
- } else {
153
- newContainer.slots[dropSlot] = dragItem;
154
- newContainer.slots[dragSlot] = null;
155
- }
156
- setTimeout(() => {
157
- setItemContainer(newContainer);
158
- }, 100);
159
- }
160
-
161
- allowedToDrop = false;
162
- dropSlot = -1;
163
- dropItem = null;
164
- dragItem = null;
165
- }}
166
- onItemDragStart={(item, slotIndex) => {
167
- dragItem = item;
168
- dragSlot = slotIndex;
169
- }}
170
- onItemPlaceDrop={(item, slotIndex) => {
171
- // THIS IS ONLY LONG-BOW EXAMPLE FOR DRAG AND DROP
172
-
173
- if (
174
- !item ||
175
- (dragItem?.key === item?.key && dragSlot !== slotIndex)
176
- ) {
177
- console.log('allow');
178
- allowedToDrop = true;
179
- dropSlot = slotIndex;
180
- dropItem = item ? item : null;
181
- } else {
182
- allowedToDrop = false;
183
- dropSlot = -1;
184
- dropItem = null;
185
- }
186
- }}
187
- onOutsideDrop={(item, pos) => console.log('drop', item, pos)}
188
- type={ItemContainerType.Inventory}
189
- atlasIMG={atlasIMG}
190
- atlasJSON={atlasJSON}
191
- shortcuts={shortcuts}
192
- setItemShortcut={setItemShortcut}
193
- removeShortcut={removeShortcut}
194
- equipmentSet={equipmentSetMock}
195
- isDepotSystem
196
- />
197
- </RPGUIRoot>
198
- );
199
- };
200
-
201
- export const Default = Template.bind({});
1
+ import {
2
+ IItem,
3
+ IShortcut,
4
+ ItemContainerType,
5
+ ItemType,
6
+ ShortcutType,
7
+ } from '@rpg-engine/shared';
8
+ import { Meta, Story } from '@storybook/react';
9
+ import React, { useEffect, useState } from 'react';
10
+ import {
11
+ IItemContainerProps,
12
+ ItemContainer,
13
+ } from '../../src/components/Item/Inventory/ItemContainer';
14
+ import { RPGUIRoot } from '../../src/components/RPGUIRoot';
15
+ import { equipmentSetMock } from '../../src/mocks/equipmentSet.mocks';
16
+ import { itemContainerMock } from '../../src/mocks/itemContainer.mocks';
17
+ import {
18
+ defaultShortcut,
19
+ SHORTCUTS_STORAGE_KEY,
20
+ } from '../components/Spellbook/constants';
21
+ import atlasJSON from '../mocks/atlas/items/items.json';
22
+ import atlasIMG from '../mocks/atlas/items/items.png';
23
+
24
+ const meta: Meta = {
25
+ title: 'Item Container',
26
+ component: ItemContainer,
27
+ };
28
+
29
+ export default meta;
30
+
31
+ const onMouseOver = (_event: any, slotIndex: number, item: IItem | null) => {
32
+ if (!item) {
33
+ // console.log(`Free at ${slotIndex}` )
34
+ return;
35
+ }
36
+ console.log(`${item.name} at ${slotIndex}`);
37
+ };
38
+
39
+ const onSelected = (payload: string, item: IItem) => {
40
+ console.log('onSelected', payload, item);
41
+ };
42
+
43
+ const onItemClick = (
44
+ item: IItem,
45
+ ItemType: ItemType,
46
+ itemContainerType: ItemContainerType | null
47
+ ) => {
48
+ console.log(item, ItemType, itemContainerType, 'was clicked!');
49
+ };
50
+
51
+ // THIS IS ONLY LONG-BOW EXAMPLE FOR DRAG AND DROP
52
+ let dragItem: IItem | null = null;
53
+ let dropItem: IItem | null = null;
54
+ let allowedToDrop = false;
55
+ let dragSlot = -1;
56
+ let dropSlot = -1;
57
+
58
+ const Template: Story<IItemContainerProps> = () => {
59
+ const [itemContainer, setItemContainer] = useState(itemContainerMock);
60
+ const [shortcuts, setShortcuts] = useState<IShortcut[]>([]);
61
+
62
+ useEffect(() => {
63
+ const shortcuts = localStorage.getItem(SHORTCUTS_STORAGE_KEY);
64
+ if (shortcuts) {
65
+ setShortcuts(JSON.parse(shortcuts));
66
+ }
67
+ }, []);
68
+
69
+ const setItemShortcut = (key: string, index: number) => {
70
+ const shortcuts = JSON.parse(
71
+ localStorage.getItem(SHORTCUTS_STORAGE_KEY) as string
72
+ ) as IShortcut[];
73
+
74
+ let item: IItem | null = null;
75
+
76
+ Object.keys(itemContainer.slots).forEach(slot => {
77
+ const slotItem = itemContainer.slots?.[parseInt(slot)];
78
+ if (slotItem && slotItem.key === key) {
79
+ item = slotItem;
80
+ }
81
+ });
82
+
83
+ if (!item) {
84
+ return;
85
+ }
86
+
87
+ if (!shortcuts) {
88
+ const newShortcuts: IShortcut[] = Array(6).fill(defaultShortcut);
89
+
90
+ newShortcuts[index] = {
91
+ type: ShortcutType.Item,
92
+ payload: item,
93
+ };
94
+
95
+ localStorage.setItem(SHORTCUTS_STORAGE_KEY, JSON.stringify(newShortcuts));
96
+ } else {
97
+ shortcuts[index] = {
98
+ type: ShortcutType.Item,
99
+ payload: item,
100
+ };
101
+
102
+ localStorage.setItem(SHORTCUTS_STORAGE_KEY, JSON.stringify(shortcuts));
103
+ }
104
+
105
+ setShortcuts(shortcuts);
106
+ };
107
+
108
+ const removeShortcut = (index: number) => {
109
+ const shortcuts = JSON.parse(
110
+ localStorage.getItem(SHORTCUTS_STORAGE_KEY) as string
111
+ );
112
+
113
+ if (!shortcuts) return;
114
+
115
+ shortcuts[index] = defaultShortcut;
116
+
117
+ localStorage.setItem(SHORTCUTS_STORAGE_KEY, JSON.stringify(shortcuts));
118
+
119
+ setShortcuts(shortcuts);
120
+ };
121
+
122
+ return (
123
+ <RPGUIRoot>
124
+ <ItemContainer
125
+ itemContainer={itemContainer}
126
+ onClose={() => console.log('closing item container')}
127
+ onMouseOver={onMouseOver}
128
+ onSelected={onSelected}
129
+ onItemClick={onItemClick}
130
+ checkIfItemCanBeMoved={() => allowedToDrop}
131
+ onItemDragEnd={quantity => {
132
+ // THIS IS ONLY LONG-BOW EXAMPLE FOR DRAG AND DROP
133
+
134
+ if (quantity === 0) {
135
+ setItemContainer({ ...itemContainer });
136
+ } else if (allowedToDrop && dropSlot !== -1) {
137
+ const newContainer = { ...itemContainer };
138
+
139
+ if (quantity && dragItem && dragItem.stackQty) {
140
+ newContainer.slots[dropSlot] = {
141
+ ...dragItem,
142
+ stackQty: quantity + (dropItem?.stackQty || 0),
143
+ };
144
+
145
+ if (dragItem.stackQty - quantity === 0)
146
+ newContainer.slots[dragSlot] = null;
147
+ else
148
+ newContainer.slots[dragSlot] = {
149
+ ...dragItem,
150
+ stackQty: dragItem.stackQty - quantity,
151
+ };
152
+ } else {
153
+ newContainer.slots[dropSlot] = dragItem;
154
+ newContainer.slots[dragSlot] = null;
155
+ }
156
+ setTimeout(() => {
157
+ setItemContainer(newContainer);
158
+ }, 100);
159
+ }
160
+
161
+ allowedToDrop = false;
162
+ dropSlot = -1;
163
+ dropItem = null;
164
+ dragItem = null;
165
+ }}
166
+ onItemDragStart={(item, slotIndex) => {
167
+ dragItem = item;
168
+ dragSlot = slotIndex;
169
+ }}
170
+ onItemPlaceDrop={(item, slotIndex) => {
171
+ // THIS IS ONLY LONG-BOW EXAMPLE FOR DRAG AND DROP
172
+
173
+ if (
174
+ !item ||
175
+ (dragItem?.key === item?.key && dragSlot !== slotIndex)
176
+ ) {
177
+ console.log('allow');
178
+ allowedToDrop = true;
179
+ dropSlot = slotIndex;
180
+ dropItem = item ? item : null;
181
+ } else {
182
+ allowedToDrop = false;
183
+ dropSlot = -1;
184
+ dropItem = null;
185
+ }
186
+ }}
187
+ onOutsideDrop={(item, pos) => console.log('drop', item, pos)}
188
+ type={ItemContainerType.Inventory}
189
+ atlasIMG={atlasIMG}
190
+ atlasJSON={atlasJSON}
191
+ shortcuts={shortcuts}
192
+ setItemShortcut={setItemShortcut}
193
+ removeShortcut={removeShortcut}
194
+ equipmentSet={equipmentSetMock}
195
+ isDepotSystem
196
+ />
197
+ </RPGUIRoot>
198
+ );
199
+ };
200
+
201
+ export const Default = Template.bind({});
@@ -1,33 +1,33 @@
1
- import { Story } from '@storybook/react';
2
- import React from 'react';
3
- import {
4
- IItemInfoDisplayProps,
5
- ItemInfoDisplay,
6
- } from '../components/Item/Cards/ItemInfoDisplay';
7
- import { RPGUIRoot } from '../components/RPGUIRoot';
8
- import atlasJSON from '../mocks/atlas/items/items.json';
9
- import atlasIMG from '../mocks/atlas/items/items.png';
10
- import { equipmentSetMock } from '../mocks/equipmentSet.mocks';
11
- import { items } from '../mocks/itemContainer.mocks';
12
-
13
- export default {
14
- title: 'Item info',
15
- component: ItemInfoDisplay,
16
- };
17
-
18
- const Template: Story<IItemInfoDisplayProps> = args => (
19
- <RPGUIRoot>
20
- <div style={{ margin: '2rem' }}>
21
- <ItemInfoDisplay {...args} />
22
- </div>
23
- </RPGUIRoot>
24
- );
25
-
26
- export const Default = Template.bind({});
27
-
28
- Default.args = {
29
- item: items[0],
30
- atlasIMG: atlasIMG,
31
- atlasJSON: atlasJSON,
32
- equipmentSet: equipmentSetMock,
33
- };
1
+ import { Story } from '@storybook/react';
2
+ import React from 'react';
3
+ import {
4
+ IItemInfoDisplayProps,
5
+ ItemInfoDisplay,
6
+ } from '../components/Item/Cards/ItemInfoDisplay';
7
+ import { RPGUIRoot } from '../components/RPGUIRoot';
8
+ import atlasJSON from '../mocks/atlas/items/items.json';
9
+ import atlasIMG from '../mocks/atlas/items/items.png';
10
+ import { equipmentSetMock } from '../mocks/equipmentSet.mocks';
11
+ import { items } from '../mocks/itemContainer.mocks';
12
+
13
+ export default {
14
+ title: 'Item info',
15
+ component: ItemInfoDisplay,
16
+ };
17
+
18
+ const Template: Story<IItemInfoDisplayProps> = args => (
19
+ <RPGUIRoot>
20
+ <div style={{ margin: '2rem' }}>
21
+ <ItemInfoDisplay {...args} />
22
+ </div>
23
+ </RPGUIRoot>
24
+ );
25
+
26
+ export const Default = Template.bind({});
27
+
28
+ Default.args = {
29
+ item: items[0],
30
+ atlasIMG: atlasIMG,
31
+ atlasJSON: atlasJSON,
32
+ equipmentSet: equipmentSetMock,
33
+ };
@@ -1,26 +1,26 @@
1
- import { Meta, Story } from '@storybook/react';
2
- import React from 'react';
3
- import { RPGUIRoot } from '..';
4
- import {
5
- IItemQuantitySelectorProps,
6
- ItemQuantitySelector,
7
- } from '../components/Item/Inventory/ItemQuantitySelector';
8
-
9
- const meta: Meta = {
10
- title: 'Item Quantity Selector',
11
- component: ItemQuantitySelector,
12
- };
13
-
14
- export default meta;
15
-
16
- const Template: Story<IItemQuantitySelectorProps> = args => (
17
- <RPGUIRoot>
18
- <ItemQuantitySelector {...args} />
19
- </RPGUIRoot>
20
- );
21
-
22
- export const Default = Template.bind({});
23
-
24
- Default.args = {
25
- quantity: 10,
26
- };
1
+ import { Meta, Story } from '@storybook/react';
2
+ import React from 'react';
3
+ import { RPGUIRoot } from '..';
4
+ import {
5
+ IItemQuantitySelectorProps,
6
+ ItemQuantitySelector,
7
+ } from '../components/Item/Inventory/ItemQuantitySelector';
8
+
9
+ const meta: Meta = {
10
+ title: 'Item Quantity Selector',
11
+ component: ItemQuantitySelector,
12
+ };
13
+
14
+ export default meta;
15
+
16
+ const Template: Story<IItemQuantitySelectorProps> = args => (
17
+ <RPGUIRoot>
18
+ <ItemQuantitySelector {...args} />
19
+ </RPGUIRoot>
20
+ );
21
+
22
+ export const Default = Template.bind({});
23
+
24
+ Default.args = {
25
+ quantity: 10,
26
+ };
@@ -1,77 +1,77 @@
1
- import { Meta, Story } from '@storybook/react';
2
- import React from 'react';
3
- import { RPGUIRoot } from '..';
4
- import {
5
- IOptionsItemSelectorProps,
6
- ItemSelector,
7
- } from '../components/itemSelector/ItemSelector';
8
- import atlasJSON from '../mocks/atlas/items/items.json';
9
- import atlasIMG from '../mocks/atlas/items/items.png';
10
-
11
- const meta: Meta = {
12
- title: 'Item Selector',
13
- component: ItemSelector,
14
- };
15
-
16
- export default meta;
17
-
18
- const Template: Story = args => (
19
- <RPGUIRoot>
20
- <ItemSelector
21
- atlasIMG={atlasIMG}
22
- atlasJSON={atlasJSON}
23
- options={options}
24
- onSelect={onSelect}
25
- onClose={() => console.log('closing Equipment Set Container')}
26
- {...args}
27
- />
28
- </RPGUIRoot>
29
- );
30
-
31
- export const Default = Template.bind({});
32
-
33
- const onSelect = (value: string): void => {
34
- console.log('Story package', value);
35
- };
36
-
37
- const options: IOptionsItemSelectorProps[] = [
38
- {
39
- name: 'Human',
40
- description: 'Human',
41
- imageKey: 'axes/frost-double-axe.png',
42
- },
43
- {
44
- name: 'Human',
45
- description: 'Human',
46
- imageKey: 'maces/spiked-club.png',
47
- },
48
- {
49
- name: 'Human2',
50
- description: 'Human2',
51
- imageKey: 'axes/frost-double-axe.png',
52
- },
53
- {
54
- name: 'Human3',
55
- description: 'Human3',
56
- imageKey: 'maces/spiked-club.png',
57
- },
58
- {
59
- name: 'Human4',
60
- description: 'Human4',
61
- imageKey: 'axes/frost-double-axe.png',
62
- },
63
- {
64
- name: 'Human5',
65
- description: 'Human5',
66
- imageKey: 'maces/spiked-club.png',
67
- },
68
- {
69
- name: 'Human6',
70
- description: 'Human6',
71
- imageKey: 'axes/frost-double-axe.png',
72
- },
73
- ];
74
-
75
- Default.args = {
76
- options,
77
- };
1
+ import { Meta, Story } from '@storybook/react';
2
+ import React from 'react';
3
+ import { RPGUIRoot } from '..';
4
+ import {
5
+ IOptionsItemSelectorProps,
6
+ ItemSelector,
7
+ } from '../components/itemSelector/ItemSelector';
8
+ import atlasJSON from '../mocks/atlas/items/items.json';
9
+ import atlasIMG from '../mocks/atlas/items/items.png';
10
+
11
+ const meta: Meta = {
12
+ title: 'Item Selector',
13
+ component: ItemSelector,
14
+ };
15
+
16
+ export default meta;
17
+
18
+ const Template: Story = args => (
19
+ <RPGUIRoot>
20
+ <ItemSelector
21
+ atlasIMG={atlasIMG}
22
+ atlasJSON={atlasJSON}
23
+ options={options}
24
+ onSelect={onSelect}
25
+ onClose={() => console.log('closing Equipment Set Container')}
26
+ {...args}
27
+ />
28
+ </RPGUIRoot>
29
+ );
30
+
31
+ export const Default = Template.bind({});
32
+
33
+ const onSelect = (value: string): void => {
34
+ console.log('Story package', value);
35
+ };
36
+
37
+ const options: IOptionsItemSelectorProps[] = [
38
+ {
39
+ name: 'Human',
40
+ description: 'Human',
41
+ imageKey: 'axes/frost-double-axe.png',
42
+ },
43
+ {
44
+ name: 'Human',
45
+ description: 'Human',
46
+ imageKey: 'maces/spiked-club.png',
47
+ },
48
+ {
49
+ name: 'Human2',
50
+ description: 'Human2',
51
+ imageKey: 'axes/frost-double-axe.png',
52
+ },
53
+ {
54
+ name: 'Human3',
55
+ description: 'Human3',
56
+ imageKey: 'maces/spiked-club.png',
57
+ },
58
+ {
59
+ name: 'Human4',
60
+ description: 'Human4',
61
+ imageKey: 'axes/frost-double-axe.png',
62
+ },
63
+ {
64
+ name: 'Human5',
65
+ description: 'Human5',
66
+ imageKey: 'maces/spiked-club.png',
67
+ },
68
+ {
69
+ name: 'Human6',
70
+ description: 'Human6',
71
+ imageKey: 'axes/frost-double-axe.png',
72
+ },
73
+ ];
74
+
75
+ Default.args = {
76
+ options,
77
+ };