@rpg-engine/long-bow 0.2.86 → 0.2.88

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 (35) hide show
  1. package/dist/components/Abstractions/SlotsContainer.d.ts +1 -0
  2. package/dist/components/DraggableContainer.d.ts +1 -0
  3. package/dist/components/Equipment/EquipmentSet.d.ts +4 -0
  4. package/dist/components/Input.d.ts +1 -0
  5. package/dist/components/Item/Inventory/ItemContainer.d.ts +8 -0
  6. package/dist/components/Item/Inventory/ItemQuantitySelector.d.ts +7 -0
  7. package/dist/components/Item/Inventory/ItemSlot.d.ts +5 -0
  8. package/dist/components/RangeSlider.d.ts +1 -0
  9. package/dist/long-bow.cjs.development.js +382 -77
  10. package/dist/long-bow.cjs.development.js.map +1 -1
  11. package/dist/long-bow.cjs.production.min.js +1 -1
  12. package/dist/long-bow.cjs.production.min.js.map +1 -1
  13. package/dist/long-bow.esm.js +383 -78
  14. package/dist/long-bow.esm.js.map +1 -1
  15. package/dist/stories/ItemQuantitySelector.stories.d.ts +5 -0
  16. package/package.json +1 -1
  17. package/src/components/Abstractions/SlotsContainer.tsx +3 -0
  18. package/src/components/DraggableContainer.tsx +3 -0
  19. package/src/components/Equipment/EquipmentSet.tsx +37 -0
  20. package/src/components/Input.tsx +6 -2
  21. package/src/components/Item/Inventory/ItemContainer.tsx +92 -6
  22. package/src/components/Item/Inventory/ItemQuantitySelector.tsx +142 -0
  23. package/src/components/Item/Inventory/ItemSlot.tsx +147 -24
  24. package/src/components/ListMenu.tsx +1 -2
  25. package/src/components/RangeSlider.tsx +37 -14
  26. package/src/mocks/itemContainer.mocks.ts +1 -1
  27. package/src/stories/EquipmentSet.stories.tsx +4 -0
  28. package/src/stories/ItemContainer.stories.tsx +82 -15
  29. package/src/stories/ItemQuantitySelector.stories.tsx +26 -0
  30. package/src/stories/RangeSlider.stories.tsx +10 -9
  31. package/src/.DS_Store +0 -0
  32. package/src/components/NPCDialog/.DS_Store +0 -0
  33. package/src/components/NPCDialog/img/.DS_Store +0 -0
  34. package/src/mocks/.DS_Store +0 -0
  35. package/src/mocks/atlas/.DS_Store +0 -0
@@ -32718,9 +32718,13 @@ var uiColors = {
32718
32718
  brownGreen: '#346524'
32719
32719
  };
32720
32720
 
32721
+ var _excluded$2 = ["innerRef"];
32721
32722
  var Input = function Input(_ref) {
32722
32723
  var props = _extends({}, (_objectDestructuringEmpty(_ref), _ref));
32723
- return React.createElement("input", Object.assign({}, props));
32724
+ var rest = _objectWithoutPropertiesLoose(props, _excluded$2);
32725
+ return React.createElement("input", Object.assign({}, rest, {
32726
+ ref: props.innerRef
32727
+ }));
32724
32728
  };
32725
32729
 
32726
32730
  var RPGUIContainerTypes;
@@ -32960,7 +32964,12 @@ var DraggableContainer = function DraggableContainer(_ref) {
32960
32964
  imgWidth = _ref$imgWidth === void 0 ? '20px' : _ref$imgWidth,
32961
32965
  cancelDrag = _ref.cancelDrag,
32962
32966
  onPositionChange = _ref.onPositionChange,
32963
- onOutsideClick = _ref.onOutsideClick;
32967
+ onOutsideClick = _ref.onOutsideClick,
32968
+ _ref$initialPosition = _ref.initialPosition,
32969
+ initialPosition = _ref$initialPosition === void 0 ? {
32970
+ x: 0,
32971
+ y: 0
32972
+ } : _ref$initialPosition;
32964
32973
  var draggableRef = useRef(null);
32965
32974
  useOutsideClick(draggableRef, 'item-container');
32966
32975
  useEffect(function () {
@@ -32985,7 +32994,8 @@ var DraggableContainer = function DraggableContainer(_ref) {
32985
32994
  y: data.y
32986
32995
  });
32987
32996
  }
32988
- }
32997
+ },
32998
+ defaultPosition: initialPosition
32989
32999
  }, React.createElement(Container$6, {
32990
33000
  ref: draggableRef,
32991
33001
  width: width,
@@ -33458,22 +33468,44 @@ var ItemSlot = /*#__PURE__*/observer(function (_ref) {
33458
33468
  slotSpriteMask = _ref.slotSpriteMask,
33459
33469
  _onMouseOver = _ref.onMouseOver,
33460
33470
  _onMouseOut = _ref.onMouseOut,
33461
- _onClick = _ref.onClick,
33471
+ onClick = _ref.onClick,
33462
33472
  _onSelected = _ref.onSelected,
33463
33473
  atlasJSON = _ref.atlasJSON,
33464
33474
  atlasIMG = _ref.atlasIMG,
33465
33475
  _ref$isContextMenuDis = _ref.isContextMenuDisabled,
33466
- isContextMenuDisabled = _ref$isContextMenuDis === void 0 ? false : _ref$isContextMenuDis;
33476
+ isContextMenuDisabled = _ref$isContextMenuDis === void 0 ? false : _ref$isContextMenuDis,
33477
+ onDragEnd = _ref.onDragEnd,
33478
+ onDragStart = _ref.onDragStart,
33479
+ onPlaceDrop = _ref.onPlaceDrop,
33480
+ checkIfItemCanBeMoved = _ref.checkIfItemCanBeMoved,
33481
+ openQuantitySelector = _ref.openQuantitySelector;
33467
33482
  var _useState = useState(false),
33468
33483
  isTooltipVisible = _useState[0],
33469
33484
  setTooltipVisible = _useState[1];
33470
33485
  var _useState2 = useState(false),
33471
33486
  isContextMenuVisible = _useState2[0],
33472
33487
  setIsContextMenuVisible = _useState2[1];
33473
- var _useState3 = useState([]),
33474
- contextActions = _useState3[0],
33475
- setContextActions = _useState3[1];
33488
+ var _useState3 = useState(false),
33489
+ isFocused = _useState3[0],
33490
+ setIsFocused = _useState3[1];
33491
+ var _useState4 = useState(false),
33492
+ wasDragged = _useState4[0],
33493
+ setWasDragged = _useState4[1];
33494
+ var _useState5 = useState({
33495
+ x: 0,
33496
+ y: 0
33497
+ }),
33498
+ dragPosition = _useState5[0],
33499
+ setDragPosition = _useState5[1];
33500
+ var dragContainer = useRef(null);
33501
+ var _useState6 = useState([]),
33502
+ contextActions = _useState6[0],
33503
+ setContextActions = _useState6[1];
33476
33504
  useEffect(function () {
33505
+ setDragPosition({
33506
+ x: 0,
33507
+ y: 0
33508
+ });
33477
33509
  if (item) {
33478
33510
  setContextActions(generateContextMenu(item, containerType));
33479
33511
  }
@@ -33565,30 +33597,105 @@ var ItemSlot = /*#__PURE__*/observer(function (_ref) {
33565
33597
  return renderItem(itemToRender);
33566
33598
  }
33567
33599
  };
33600
+ var resetItem = function resetItem() {
33601
+ setTooltipVisible(false);
33602
+ setIsFocused(false);
33603
+ setWasDragged(false);
33604
+ };
33605
+ var onSuccesfulDrag = function onSuccesfulDrag(quantity) {
33606
+ resetItem();
33607
+ if (quantity === -1) setDragPosition({
33608
+ x: 0,
33609
+ y: 0
33610
+ });else if (item) {
33611
+ onDragEnd(quantity);
33612
+ resetItem();
33613
+ }
33614
+ };
33568
33615
  return React.createElement(Container$a, {
33569
33616
  className: "rpgui-icon empty-slot",
33617
+ onMouseUp: function onMouseUp() {
33618
+ var data = item ? item : null;
33619
+ if (onPlaceDrop) onPlaceDrop(data, slotIndex, containerType);
33620
+ },
33621
+ onTouchEnd: function onTouchEnd(e) {
33622
+ var _document$elementFrom;
33623
+ var _e$changedTouches$ = e.changedTouches[0],
33624
+ clientX = _e$changedTouches$.clientX,
33625
+ clientY = _e$changedTouches$.clientY;
33626
+ var simulatedEvent = new MouseEvent('mouseup', {
33627
+ clientX: clientX,
33628
+ clientY: clientY,
33629
+ bubbles: true
33630
+ });
33631
+ (_document$elementFrom = document.elementFromPoint(clientX, clientY)) == null ? void 0 : _document$elementFrom.dispatchEvent(simulatedEvent);
33632
+ }
33633
+ }, React.createElement(Draggable, {
33634
+ defaultClassName: item ? 'draggable' : 'empty-slot',
33635
+ onStop: function onStop() {
33636
+ if (!item) {
33637
+ return;
33638
+ }
33639
+ if (wasDragged) {
33640
+ setWasDragged(false);
33641
+ var target = dragContainer.current;
33642
+ if (!target || !wasDragged) return;
33643
+ var style = window.getComputedStyle(target);
33644
+ var matrix = new DOMMatrixReadOnly(style.transform);
33645
+ var x = matrix.m41;
33646
+ var y = matrix.m42;
33647
+ setDragPosition({
33648
+ x: x,
33649
+ y: y
33650
+ });
33651
+ setTimeout(function () {
33652
+ if (checkIfItemCanBeMoved()) {
33653
+ if (item.stackQty && item.stackQty !== 1 && openQuantitySelector) openQuantitySelector(item.stackQty, onSuccesfulDrag);else onSuccesfulDrag(item.stackQty);
33654
+ } else {
33655
+ resetItem();
33656
+ setDragPosition({
33657
+ x: 0,
33658
+ y: 0
33659
+ });
33660
+ }
33661
+ }, 100);
33662
+ } else if (item) {
33663
+ if (!isContextMenuDisabled) setIsContextMenuVisible(!isContextMenuVisible);
33664
+ onClick(item.type, containerType, item);
33665
+ }
33666
+ },
33667
+ onStart: function onStart() {
33668
+ if (!item) {
33669
+ return;
33670
+ }
33671
+ if (onDragStart) {
33672
+ onDragStart(item, slotIndex, containerType);
33673
+ }
33674
+ },
33675
+ onDrag: function onDrag() {
33676
+ setWasDragged(true);
33677
+ setIsFocused(true);
33678
+ },
33679
+ position: dragPosition,
33680
+ cancel: ".empty-slot"
33681
+ }, React.createElement(ItemContainer, {
33682
+ ref: dragContainer,
33683
+ isFocused: isFocused,
33570
33684
  onMouseOver: function onMouseOver(event) {
33571
- return _onMouseOver(event, slotIndex, item, event.clientX, event.clientY);
33685
+ _onMouseOver(event, slotIndex, item, event.clientX, event.clientY);
33572
33686
  },
33573
33687
  onMouseOut: function onMouseOut() {
33574
33688
  if (_onMouseOut) _onMouseOut();
33575
33689
  },
33576
33690
  onMouseEnter: function onMouseEnter() {
33577
- return setTooltipVisible(true);
33691
+ setTooltipVisible(true);
33578
33692
  },
33579
33693
  onMouseLeave: function onMouseLeave() {
33580
- return setTooltipVisible(false);
33581
- },
33582
- onClick: function onClick() {
33583
33694
  setTooltipVisible(false);
33584
- if (item) {
33585
- if (!isContextMenuDisabled) {
33586
- setIsContextMenuVisible(!isContextMenuVisible);
33587
- }
33588
- _onClick(item.type, containerType, item);
33589
- }
33590
33695
  }
33591
- }, !isContextMenuDisabled && isContextMenuVisible && contextActions && React.createElement(RelativeListMenu, {
33696
+ }, onRenderSlot(item))), isTooltipVisible && item && React.createElement(ItemTooltip, {
33697
+ label: item.name
33698
+ }), !isContextMenuDisabled && isContextMenuVisible && contextActions && React.createElement(RelativeListMenu, {
33592
33699
  options: contextActions,
33593
33700
  onSelected: function onSelected(optionId) {
33594
33701
  setIsContextMenuVisible(false);
@@ -33599,21 +33706,25 @@ var ItemSlot = /*#__PURE__*/observer(function (_ref) {
33599
33706
  onOutsideClick: function onOutsideClick() {
33600
33707
  setIsContextMenuVisible(false);
33601
33708
  }
33602
- }), isTooltipVisible && item && React.createElement(ItemTooltip, {
33603
- label: item.name
33604
- }), onRenderSlot(item));
33709
+ }));
33605
33710
  });
33606
33711
  var Container$a = /*#__PURE__*/styled.div.withConfig({
33607
33712
  displayName: "ItemSlot__Container",
33608
33713
  componentId: "sc-l2j5ef-0"
33609
33714
  })(["margin:0.1rem;.sprite-from-atlas-img{position:relative;top:1.5rem;left:1.5rem;}position:relative;"]);
33715
+ var ItemContainer = /*#__PURE__*/styled.div.withConfig({
33716
+ displayName: "ItemSlot__ItemContainer",
33717
+ componentId: "sc-l2j5ef-1"
33718
+ })(["width:100%;height:100%;position:relative;", ""], function (props) {
33719
+ return props.isFocused && 'z-index: 100; pointer-events: none;';
33720
+ });
33610
33721
  var ItemQtyContainer = /*#__PURE__*/styled.div.withConfig({
33611
33722
  displayName: "ItemSlot__ItemQtyContainer",
33612
- componentId: "sc-l2j5ef-1"
33613
- })(["position:relative;width:85%;height:16px;top:25px;left:2px;display:flex;justify-content:flex-end;"]);
33723
+ componentId: "sc-l2j5ef-2"
33724
+ })(["position:relative;width:85%;height:16px;top:25px;left:2px;pointer-events:none;display:flex;justify-content:flex-end;"]);
33614
33725
  var ItemQty = /*#__PURE__*/styled.span.withConfig({
33615
33726
  displayName: "ItemSlot__ItemQty",
33616
- componentId: "sc-l2j5ef-2"
33727
+ componentId: "sc-l2j5ef-3"
33617
33728
  })(["&.regular{font-size:", ";}&.small{font-size:", ";}"], uiFonts.size.small, uiFonts.size.xsmall);
33618
33729
 
33619
33730
  var EquipmentSet = function EquipmentSet(_ref) {
@@ -33623,7 +33734,11 @@ var EquipmentSet = function EquipmentSet(_ref) {
33623
33734
  _onSelected = _ref.onSelected,
33624
33735
  onItemClick = _ref.onItemClick,
33625
33736
  atlasIMG = _ref.atlasIMG,
33626
- atlasJSON = _ref.atlasJSON;
33737
+ atlasJSON = _ref.atlasJSON,
33738
+ onItemDragEnd = _ref.onItemDragEnd,
33739
+ onItemDragStart = _ref.onItemDragStart,
33740
+ onItemPlaceDrop = _ref.onItemPlaceDrop,
33741
+ checkIfItemCanBeMoved = _ref.checkIfItemCanBeMoved;
33627
33742
  var neck = equipmentSet.neck,
33628
33743
  leftHand = equipmentSet.leftHand,
33629
33744
  ring = equipmentSet.ring,
@@ -33659,6 +33774,22 @@ var EquipmentSet = function EquipmentSet(_ref) {
33659
33774
  onSelected: function onSelected(optionId) {
33660
33775
  if (_onSelected) _onSelected(optionId);
33661
33776
  },
33777
+ onDragStart: function onDragStart(item, slotIndex, itemContainerType) {
33778
+ if (!item) {
33779
+ return;
33780
+ }
33781
+ if (onItemDragStart) onItemDragStart(item, slotIndex, itemContainerType);
33782
+ },
33783
+ onDragEnd: function onDragEnd(quantity) {
33784
+ if (onItemDragEnd) onItemDragEnd(quantity);
33785
+ },
33786
+ checkIfItemCanBeMoved: checkIfItemCanBeMoved,
33787
+ onPlaceDrop: function onPlaceDrop(item, slotIndex, itemContainerType) {
33788
+ if (!item) {
33789
+ return;
33790
+ }
33791
+ if (onItemPlaceDrop) onItemPlaceDrop(item, slotIndex, itemContainerType);
33792
+ },
33662
33793
  atlasIMG: atlasIMG,
33663
33794
  atlasJSON: atlasJSON
33664
33795
  });
@@ -33679,11 +33810,11 @@ var EquipmentSet = function EquipmentSet(_ref) {
33679
33810
  var EquipmentSetContainer = /*#__PURE__*/styled.div.withConfig({
33680
33811
  displayName: "EquipmentSet__EquipmentSetContainer",
33681
33812
  componentId: "sc-1wuddg2-0"
33682
- })(["width:inherit;display:flex;justify-content:center;flex-wrap:wrap;flex-direction:row;"]);
33813
+ })(["width:inherit;display:flex;justify-content:center;flex-wrap:wrap;flex-direction:row;touch-action:none;"]);
33683
33814
  var EquipmentColumn = /*#__PURE__*/styled.div.withConfig({
33684
33815
  displayName: "EquipmentSet__EquipmentColumn",
33685
33816
  componentId: "sc-1wuddg2-1"
33686
- })(["display:flex;justify-content:center;flex-wrap:wrap;flex-direction:column;"]);
33817
+ })(["display:flex;justify-content:center;flex-wrap:wrap;flex-direction:column;touch-action:none;"]);
33687
33818
 
33688
33819
  var IS_MOBILE_OR_TABLET = /*#__PURE__*/isMobile({
33689
33820
  tablet: true
@@ -34232,7 +34363,8 @@ var SlotsContainer = function SlotsContainer(_ref) {
34232
34363
  title = _ref.title,
34233
34364
  onClose = _ref.onClose,
34234
34365
  _onPositionChange = _ref.onPositionChange,
34235
- onOutsideClick = _ref.onOutsideClick;
34366
+ onOutsideClick = _ref.onOutsideClick,
34367
+ initialPosition = _ref.initialPosition;
34236
34368
  return React.createElement(DraggableContainer, {
34237
34369
  title: title,
34238
34370
  type: RPGUIContainerTypes.Framed,
@@ -34253,11 +34385,168 @@ var SlotsContainer = function SlotsContainer(_ref) {
34253
34385
  });
34254
34386
  }
34255
34387
  },
34256
- onOutsideClick: onOutsideClick
34388
+ onOutsideClick: onOutsideClick,
34389
+ initialPosition: initialPosition
34257
34390
  }, children);
34258
34391
  };
34259
34392
 
34260
- var ItemContainer = function ItemContainer(_ref) {
34393
+ var RangeSliderType;
34394
+ (function (RangeSliderType) {
34395
+ RangeSliderType["Slider"] = "rpgui-slider";
34396
+ RangeSliderType["GoldSlider"] = "rpgui-slider golden";
34397
+ })(RangeSliderType || (RangeSliderType = {}));
34398
+ var RangeSlider = function RangeSlider(_ref) {
34399
+ var type = _ref.type,
34400
+ valueMin = _ref.valueMin,
34401
+ valueMax = _ref.valueMax,
34402
+ width = _ref.width,
34403
+ _onChange = _ref.onChange,
34404
+ value = _ref.value;
34405
+ var sliderId = v4();
34406
+ var containerRef = useRef(null);
34407
+ var _useState = useState(0),
34408
+ left = _useState[0],
34409
+ setLeft = _useState[1];
34410
+ useEffect(function () {
34411
+ var _containerRef$current;
34412
+ var calculatedWidth = ((_containerRef$current = containerRef.current) == null ? void 0 : _containerRef$current.clientWidth) || 0;
34413
+ setLeft(Math.max((value - valueMin) / (valueMax - valueMin) * (calculatedWidth - 35) + 10));
34414
+ }, [value, valueMin, valueMax]);
34415
+ var typeClass = type === RangeSliderType.GoldSlider ? 'golden' : '';
34416
+ return React.createElement("div", {
34417
+ style: {
34418
+ width: width,
34419
+ position: 'relative'
34420
+ },
34421
+ className: "rpgui-slider-container " + typeClass,
34422
+ id: "rpgui-slider-" + sliderId,
34423
+ ref: containerRef
34424
+ }, React.createElement("div", {
34425
+ style: {
34426
+ pointerEvents: 'none'
34427
+ }
34428
+ }, React.createElement("div", {
34429
+ className: "rpgui-slider-track " + typeClass
34430
+ }), React.createElement("div", {
34431
+ className: "rpgui-slider-left-edge " + typeClass
34432
+ }), React.createElement("div", {
34433
+ className: "rpgui-slider-right-edge " + typeClass
34434
+ }), React.createElement("div", {
34435
+ className: "rpgui-slider-thumb " + typeClass,
34436
+ style: {
34437
+ left: left
34438
+ }
34439
+ })), React.createElement(Input$1, {
34440
+ type: "range",
34441
+ style: {
34442
+ width: width
34443
+ },
34444
+ min: valueMin,
34445
+ max: valueMax,
34446
+ onChange: function onChange(e) {
34447
+ return _onChange(Number(e.target.value));
34448
+ },
34449
+ value: value,
34450
+ className: "rpgui-cursor-point"
34451
+ }));
34452
+ };
34453
+ var Input$1 = /*#__PURE__*/styled.input.withConfig({
34454
+ displayName: "RangeSlider__Input",
34455
+ componentId: "sc-v8mte9-0"
34456
+ })(["opacity:0;position:absolute;width:100%;height:100%;top:0;left:0;margin-top:-5px;"]);
34457
+
34458
+ var ItemQuantitySelector = function ItemQuantitySelector(_ref) {
34459
+ var quantity = _ref.quantity,
34460
+ onConfirm = _ref.onConfirm,
34461
+ onClose = _ref.onClose;
34462
+ var _useState = useState(quantity),
34463
+ value = _useState[0],
34464
+ setValue = _useState[1];
34465
+ var inputRef = useRef(null);
34466
+ useEffect(function () {
34467
+ if (inputRef.current) {
34468
+ inputRef.current.focus();
34469
+ inputRef.current.select();
34470
+ var closeSelector = function closeSelector(e) {
34471
+ if (e.key === 'Escape') {
34472
+ onClose();
34473
+ }
34474
+ };
34475
+ document.addEventListener('keydown', closeSelector);
34476
+ return function () {
34477
+ document.removeEventListener('keydown', closeSelector);
34478
+ };
34479
+ }
34480
+ return function () {};
34481
+ }, []);
34482
+ return React.createElement(StyledContainer, {
34483
+ type: RPGUIContainerTypes.Framed,
34484
+ width: "25rem"
34485
+ }, React.createElement(CloseButton$2, {
34486
+ className: "container-close",
34487
+ onClick: onClose,
34488
+ onTouchStart: onClose
34489
+ }, "X"), React.createElement("h2", null, "Select quantity to move"), React.createElement(StyledForm, {
34490
+ style: {
34491
+ width: '100%'
34492
+ },
34493
+ onSubmit: function onSubmit(e) {
34494
+ e.preventDefault();
34495
+ var numberValue = Number(value);
34496
+ if (Number.isNaN(numberValue)) {
34497
+ return;
34498
+ }
34499
+ onConfirm(Math.max(1, Math.min(quantity, numberValue)));
34500
+ },
34501
+ noValidate: true
34502
+ }, React.createElement(StyledInput, {
34503
+ innerRef: inputRef,
34504
+ placeholder: "Enter quantity",
34505
+ type: "number",
34506
+ min: 1,
34507
+ max: quantity,
34508
+ value: value,
34509
+ onChange: function onChange(e) {
34510
+ if (Number(e.target.value) >= quantity) {
34511
+ setValue(quantity);
34512
+ return;
34513
+ }
34514
+ setValue(e.target.value);
34515
+ },
34516
+ onBlur: function onBlur(e) {
34517
+ var newValue = Math.max(1, Math.min(quantity, Number(e.target.value)));
34518
+ setValue(newValue);
34519
+ }
34520
+ }), React.createElement(RangeSlider, {
34521
+ type: RangeSliderType.Slider,
34522
+ valueMin: 1,
34523
+ valueMax: quantity,
34524
+ width: "100%",
34525
+ onChange: setValue,
34526
+ value: value
34527
+ }), React.createElement(Button, {
34528
+ buttonType: ButtonTypes.RPGUIButton,
34529
+ type: "submit"
34530
+ }, "Confirm")));
34531
+ };
34532
+ var StyledContainer = /*#__PURE__*/styled(RPGUIContainer).withConfig({
34533
+ displayName: "ItemQuantitySelector__StyledContainer",
34534
+ componentId: "sc-yfdtpn-0"
34535
+ })(["display:flex;flex-direction:column;align-items:center;"]);
34536
+ var StyledForm = /*#__PURE__*/styled.form.withConfig({
34537
+ displayName: "ItemQuantitySelector__StyledForm",
34538
+ componentId: "sc-yfdtpn-1"
34539
+ })(["display:flex;flex-direction:column;align-items:center;width:100%;"]);
34540
+ var StyledInput = /*#__PURE__*/styled(Input).withConfig({
34541
+ displayName: "ItemQuantitySelector__StyledInput",
34542
+ componentId: "sc-yfdtpn-2"
34543
+ })(["text-align:center;&::-webkit-outer-spin-button,&::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}&[type='number']{-moz-appearance:textfield;}"]);
34544
+ var CloseButton$2 = /*#__PURE__*/styled.div.withConfig({
34545
+ displayName: "ItemQuantitySelector__CloseButton",
34546
+ componentId: "sc-yfdtpn-3"
34547
+ })(["position:absolute;top:3px;right:0px;color:white;z-index:22;font-size:0.8rem;"]);
34548
+
34549
+ var ItemContainer$1 = function ItemContainer(_ref) {
34261
34550
  var itemContainer = _ref.itemContainer,
34262
34551
  onClose = _ref.onClose,
34263
34552
  _onMouseOver = _ref.onMouseOver,
@@ -34267,7 +34556,19 @@ var ItemContainer = function ItemContainer(_ref) {
34267
34556
  atlasJSON = _ref.atlasJSON,
34268
34557
  atlasIMG = _ref.atlasIMG,
34269
34558
  _ref$disableContextMe = _ref.disableContextMenu,
34270
- disableContextMenu = _ref$disableContextMe === void 0 ? false : _ref$disableContextMe;
34559
+ disableContextMenu = _ref$disableContextMe === void 0 ? false : _ref$disableContextMe,
34560
+ onItemDragEnd = _ref.onItemDragEnd,
34561
+ onItemDragStart = _ref.onItemDragStart,
34562
+ onItemPlaceDrop = _ref.onItemPlaceDrop,
34563
+ checkIfItemCanBeMoved = _ref.checkIfItemCanBeMoved,
34564
+ initialPosition = _ref.initialPosition;
34565
+ var _useState = useState({
34566
+ isOpen: false,
34567
+ maxQuantity: 1,
34568
+ callback: function callback(_quantity) {}
34569
+ }),
34570
+ quantitySelect = _useState[0],
34571
+ setQuantitySelect = _useState[1];
34271
34572
  var onRenderSlots = function onRenderSlots() {
34272
34573
  var slots = [];
34273
34574
  for (var i = 0; i < itemContainer.slotQty; i++) {
@@ -34287,23 +34588,63 @@ var ItemContainer = function ItemContainer(_ref) {
34287
34588
  onSelected: function onSelected(optionId, item) {
34288
34589
  if (_onSelected) _onSelected(optionId, item);
34289
34590
  },
34591
+ onDragStart: function onDragStart(item, slotIndex, itemContainerType) {
34592
+ if (onItemDragStart) onItemDragStart(item, slotIndex, itemContainerType);
34593
+ },
34594
+ onDragEnd: function onDragEnd(quantity) {
34595
+ if (onItemDragEnd) onItemDragEnd(quantity);
34596
+ },
34597
+ checkIfItemCanBeMoved: checkIfItemCanBeMoved,
34598
+ openQuantitySelector: function openQuantitySelector(maxQuantity, callback) {
34599
+ setQuantitySelect({
34600
+ isOpen: true,
34601
+ maxQuantity: maxQuantity,
34602
+ callback: callback
34603
+ });
34604
+ },
34605
+ onPlaceDrop: function onPlaceDrop(item, slotIndex, itemContainerType) {
34606
+ if (onItemPlaceDrop) onItemPlaceDrop(item, slotIndex, itemContainerType);
34607
+ },
34290
34608
  atlasIMG: atlasIMG,
34291
34609
  atlasJSON: atlasJSON
34292
34610
  }));
34293
34611
  }
34294
34612
  return slots;
34295
34613
  };
34296
- return React.createElement(SlotsContainer, {
34614
+ return React.createElement(React.Fragment, null, React.createElement(SlotsContainer, {
34297
34615
  title: itemContainer.name || 'Container',
34298
- onClose: onClose
34616
+ onClose: onClose,
34617
+ initialPosition: initialPosition
34299
34618
  }, React.createElement(ItemsContainer, {
34300
34619
  className: "item-container-body"
34301
- }, onRenderSlots()));
34620
+ }, onRenderSlots())), quantitySelect.isOpen && React.createElement(QuantitySelectorContainer, null, React.createElement(ItemQuantitySelector, {
34621
+ quantity: quantitySelect.maxQuantity,
34622
+ onConfirm: function onConfirm(quantity) {
34623
+ quantitySelect.callback(quantity);
34624
+ setQuantitySelect({
34625
+ isOpen: false,
34626
+ maxQuantity: 1,
34627
+ callback: function callback() {}
34628
+ });
34629
+ },
34630
+ onClose: function onClose() {
34631
+ quantitySelect.callback(-1);
34632
+ setQuantitySelect({
34633
+ isOpen: false,
34634
+ maxQuantity: 1,
34635
+ callback: function callback() {}
34636
+ });
34637
+ }
34638
+ })));
34302
34639
  };
34303
34640
  var ItemsContainer = /*#__PURE__*/styled.div.withConfig({
34304
34641
  displayName: "ItemContainer__ItemsContainer",
34305
34642
  componentId: "sc-15y5p9l-0"
34306
34643
  })(["max-width:280px;display:flex;justify-content:center;flex-wrap:wrap;"]);
34644
+ var QuantitySelectorContainer = /*#__PURE__*/styled.div.withConfig({
34645
+ displayName: "ItemContainer__QuantitySelectorContainer",
34646
+ componentId: "sc-15y5p9l-1"
34647
+ })(["position:absolute;top:0;left:0;width:100vw;height:100vh;z-index:100;display:flex;justify-content:center;align-items:center;background-color:rgba(0,0,0,0.5);"]);
34307
34648
 
34308
34649
  var ListMenu = function ListMenu(_ref) {
34309
34650
  var options = _ref.options,
@@ -34321,8 +34662,7 @@ var ListMenu = function ListMenu(_ref) {
34321
34662
  }, options.map(function (params, index) {
34322
34663
  return React.createElement(ListElement$1, {
34323
34664
  key: (params == null ? void 0 : params.id) || index,
34324
- onClick: function onClick(e) {
34325
- e.stopPropagation();
34665
+ onClick: function onClick() {
34326
34666
  onSelected(params == null ? void 0 : params.id);
34327
34667
  }
34328
34668
  }, (params == null ? void 0 : params.text) || 'No text');
@@ -34604,41 +34944,6 @@ var InputRadio = function InputRadio(_ref) {
34604
34944
  }));
34605
34945
  };
34606
34946
 
34607
- var RangeSliderType;
34608
- (function (RangeSliderType) {
34609
- RangeSliderType["Slider"] = "rpgui-slider";
34610
- RangeSliderType["GoldSlider"] = "rpgui-slider golden";
34611
- })(RangeSliderType || (RangeSliderType = {}));
34612
- var RangeSlider = function RangeSlider(_ref) {
34613
- var type = _ref.type,
34614
- valueMin = _ref.valueMin,
34615
- valueMax = _ref.valueMax,
34616
- width = _ref.width,
34617
- onChange = _ref.onChange;
34618
- var sliderId = v4();
34619
- var onHandleMouseUp = function onHandleMouseUp() {
34620
- var rpguiSlider = document.getElementById("rpgui-slider-" + sliderId);
34621
- var value = _RPGUI.get_value(rpguiSlider);
34622
- onChange(Number(value));
34623
- };
34624
- return React.createElement("div", {
34625
- onMouseUp: onHandleMouseUp
34626
- }, React.createElement(Input$1, {
34627
- className: type === RangeSliderType.Slider ? RangeSliderType.Slider : RangeSliderType.GoldSlider,
34628
- type: "range",
34629
- style: {
34630
- width: width
34631
- },
34632
- min: valueMin,
34633
- max: valueMax,
34634
- id: "rpgui-slider-" + sliderId
34635
- }));
34636
- };
34637
- var Input$1 = /*#__PURE__*/styled.input.withConfig({
34638
- displayName: "RangeSlider__Input",
34639
- componentId: "sc-v8mte9-0"
34640
- })(["opacity:0;"]);
34641
-
34642
34947
  var SimpleProgressBar = function SimpleProgressBar(_ref) {
34643
34948
  var value = _ref.value,
34644
34949
  _ref$bgColor = _ref.bgColor,
@@ -34808,7 +35113,7 @@ var SkillsContainer = function SkillsContainer(_ref) {
34808
35113
  };
34809
35114
  return React.createElement(SkillsDraggableContainer, {
34810
35115
  title: "Skills"
34811
- }, onCloseButton && React.createElement(CloseButton$2, {
35116
+ }, onCloseButton && React.createElement(CloseButton$3, {
34812
35117
  onClick: onCloseButton,
34813
35118
  onTouchStart: onCloseButton
34814
35119
  }, "X"), React.createElement(SkillSplitDiv, null, React.createElement("p", null, "General"), React.createElement("hr", {
@@ -34838,7 +35143,7 @@ var SkillSplitDiv = /*#__PURE__*/styled.div.withConfig({
34838
35143
  displayName: "SkillsContainer__SkillSplitDiv",
34839
35144
  componentId: "sc-1g0c67q-1"
34840
35145
  })(["width:100%;font-size:11px;hr{margin:0;margin-bottom:1rem;padding:0px;}p{margin-bottom:0px;}"]);
34841
- var CloseButton$2 = /*#__PURE__*/styled.div.withConfig({
35146
+ var CloseButton$3 = /*#__PURE__*/styled.div.withConfig({
34842
35147
  displayName: "SkillsContainer__CloseButton",
34843
35148
  componentId: "sc-1g0c67q-2"
34844
35149
  })(["position:absolute;top:2px;right:2px;color:white;z-index:22;font-size:0.7rem;"]);
@@ -34873,7 +35178,7 @@ var TimeWidget = function TimeWidget(_ref) {
34873
35178
  var onClose = _ref.onClose,
34874
35179
  TimeClock = _ref.TimeClock,
34875
35180
  periodOfDay = _ref.periodOfDay;
34876
- return React.createElement(Draggable, null, React.createElement(WidgetContainer, null, React.createElement(CloseButton$3, {
35181
+ return React.createElement(Draggable, null, React.createElement(WidgetContainer, null, React.createElement(CloseButton$4, {
34877
35182
  onClick: onClose
34878
35183
  }, "X"), React.createElement(DayNightContainer, null, React.createElement(DayNightPeriod, {
34879
35184
  periodOfDay: periodOfDay
@@ -34887,7 +35192,7 @@ var Time = /*#__PURE__*/styled.div.withConfig({
34887
35192
  displayName: "TimeWidget__Time",
34888
35193
  componentId: "sc-1ja236h-1"
34889
35194
  })(["top:0.75rem;right:0.5rem;position:absolute;font-size:", ";color:white;"], uiFonts.size.small);
34890
- var CloseButton$3 = /*#__PURE__*/styled.p.withConfig({
35195
+ var CloseButton$4 = /*#__PURE__*/styled.p.withConfig({
34891
35196
  displayName: "TimeWidget__CloseButton",
34892
35197
  componentId: "sc-1ja236h-2"
34893
35198
  })(["position:absolute;top:-0.5rem;margin:0;right:-0.2rem;font-size:", " !important;z-index:1;"], uiFonts.size.small);
@@ -35200,5 +35505,5 @@ var ButtonWrapper$2 = /*#__PURE__*/styled.div.withConfig({
35200
35505
  componentId: "sc-gptoxp-5"
35201
35506
  })(["display:flex;justify-content:space-around;padding-top:20px;width:100%;"]);
35202
35507
 
35203
- export { Button, ButtonTypes, CharacterSelection, Chat, CheckButton, CraftBook, DraggableContainer, Dropdown, DropdownSelectorContainer, DynamicText, EquipmentSet, ErrorBoundary, HistoryDialog, ImgSide, Input, InputRadio, ItemContainer, ItemSelector, ItemSlot, ListMenu, NPCDialog, NPCDialogType, NPCMultiDialog, ProgressBar, PropertySelect, QuestInfo, QuestList, QuestionDialog, RPGUIContainer, RPGUIContainerTypes, RPGUIRoot, RangeSlider, RangeSliderType, SkillProgressBar, SkillsContainer, SpriteFromAtlas, TextArea, TimeWidget, TradingMenu, Truncate, _RPGUI, useEventListener };
35508
+ export { Button, ButtonTypes, CharacterSelection, Chat, CheckButton, 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, SkillProgressBar, SkillsContainer, SpriteFromAtlas, TextArea, TimeWidget, TradingMenu, Truncate, _RPGUI, useEventListener };
35204
35509
  //# sourceMappingURL=long-bow.esm.js.map