@rpg-engine/long-bow 0.2.85 → 0.2.87

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 (34) 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 +361 -75
  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 +362 -76
  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 +30 -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 +137 -0
  23. package/src/components/Item/Inventory/ItemSlot.tsx +144 -25
  24. package/src/components/RangeSlider.tsx +37 -14
  25. package/src/mocks/itemContainer.mocks.ts +1 -1
  26. package/src/stories/EquipmentSet.stories.tsx +4 -0
  27. package/src/stories/ItemContainer.stories.tsx +82 -15
  28. package/src/stories/ItemQuantitySelector.stories.tsx +26 -0
  29. package/src/stories/RangeSlider.stories.tsx +10 -9
  30. package/src/.DS_Store +0 -0
  31. package/src/components/NPCDialog/.DS_Store +0 -0
  32. package/src/components/NPCDialog/img/.DS_Store +0 -0
  33. package/src/mocks/.DS_Store +0 -0
  34. 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,95 @@ 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
+ }, item && React.createElement(Draggable, {
33634
+ onStop: function onStop() {
33635
+ if (wasDragged) {
33636
+ setWasDragged(false);
33637
+ var target = dragContainer.current;
33638
+ if (!target || !wasDragged) return;
33639
+ var style = window.getComputedStyle(target);
33640
+ var matrix = new DOMMatrixReadOnly(style.transform);
33641
+ var x = matrix.m41;
33642
+ var y = matrix.m42;
33643
+ setDragPosition({
33644
+ x: x,
33645
+ y: y
33646
+ });
33647
+ setTimeout(function () {
33648
+ if (checkIfItemCanBeMoved()) {
33649
+ if (item.stackQty && item.stackQty !== 1 && openQuantitySelector) openQuantitySelector(item.stackQty, onSuccesfulDrag);else onSuccesfulDrag(item.stackQty);
33650
+ } else {
33651
+ resetItem();
33652
+ setDragPosition({
33653
+ x: 0,
33654
+ y: 0
33655
+ });
33656
+ }
33657
+ }, 100);
33658
+ } else if (item) {
33659
+ if (!isContextMenuDisabled) setIsContextMenuVisible(!isContextMenuVisible);
33660
+ onClick(item.type, containerType, item);
33661
+ }
33662
+ },
33663
+ onStart: function onStart() {
33664
+ if (onDragStart) onDragStart(item, slotIndex, containerType);
33665
+ },
33666
+ onDrag: function onDrag() {
33667
+ setWasDragged(true);
33668
+ setIsFocused(true);
33669
+ },
33670
+ position: dragPosition
33671
+ }, React.createElement(ItemContainer, {
33672
+ ref: dragContainer,
33673
+ isFocused: isFocused,
33570
33674
  onMouseOver: function onMouseOver(event) {
33571
- return _onMouseOver(event, slotIndex, item, event.clientX, event.clientY);
33675
+ _onMouseOver(event, slotIndex, item, event.clientX, event.clientY);
33572
33676
  },
33573
33677
  onMouseOut: function onMouseOut() {
33574
33678
  if (_onMouseOut) _onMouseOut();
33575
33679
  },
33576
33680
  onMouseEnter: function onMouseEnter() {
33577
- return setTooltipVisible(true);
33681
+ setTooltipVisible(true);
33578
33682
  },
33579
33683
  onMouseLeave: function onMouseLeave() {
33580
- return setTooltipVisible(false);
33581
- },
33582
- onClick: function onClick() {
33583
33684
  setTooltipVisible(false);
33584
- if (item) {
33585
- if (!isContextMenuDisabled) {
33586
- setIsContextMenuVisible(!isContextMenuVisible);
33587
- }
33588
- _onClick(item.type, containerType, item);
33589
- }
33590
33685
  }
33591
- }, !isContextMenuDisabled && isContextMenuVisible && contextActions && React.createElement(RelativeListMenu, {
33686
+ }, onRenderSlot(item))), isTooltipVisible && item && React.createElement(ItemTooltip, {
33687
+ label: item.name
33688
+ }), !isContextMenuDisabled && isContextMenuVisible && contextActions && React.createElement(RelativeListMenu, {
33592
33689
  options: contextActions,
33593
33690
  onSelected: function onSelected(optionId) {
33594
33691
  setIsContextMenuVisible(false);
@@ -33599,21 +33696,25 @@ var ItemSlot = /*#__PURE__*/observer(function (_ref) {
33599
33696
  onOutsideClick: function onOutsideClick() {
33600
33697
  setIsContextMenuVisible(false);
33601
33698
  }
33602
- }), isTooltipVisible && item && React.createElement(ItemTooltip, {
33603
- label: item.name
33604
- }), onRenderSlot(item));
33699
+ }));
33605
33700
  });
33606
33701
  var Container$a = /*#__PURE__*/styled.div.withConfig({
33607
33702
  displayName: "ItemSlot__Container",
33608
33703
  componentId: "sc-l2j5ef-0"
33609
33704
  })(["margin:0.1rem;.sprite-from-atlas-img{position:relative;top:1.5rem;left:1.5rem;}position:relative;"]);
33705
+ var ItemContainer = /*#__PURE__*/styled.div.withConfig({
33706
+ displayName: "ItemSlot__ItemContainer",
33707
+ componentId: "sc-l2j5ef-1"
33708
+ })(["width:100%;height:100%;position:relative;", ""], function (props) {
33709
+ return props.isFocused && 'z-index: 100; pointer-events: none;';
33710
+ });
33610
33711
  var ItemQtyContainer = /*#__PURE__*/styled.div.withConfig({
33611
33712
  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;"]);
33713
+ componentId: "sc-l2j5ef-2"
33714
+ })(["position:relative;width:85%;height:16px;top:25px;left:2px;pointer-events:none;display:flex;justify-content:flex-end;"]);
33614
33715
  var ItemQty = /*#__PURE__*/styled.span.withConfig({
33615
33716
  displayName: "ItemSlot__ItemQty",
33616
- componentId: "sc-l2j5ef-2"
33717
+ componentId: "sc-l2j5ef-3"
33617
33718
  })(["&.regular{font-size:", ";}&.small{font-size:", ";}"], uiFonts.size.small, uiFonts.size.xsmall);
33618
33719
 
33619
33720
  var EquipmentSet = function EquipmentSet(_ref) {
@@ -33623,7 +33724,11 @@ var EquipmentSet = function EquipmentSet(_ref) {
33623
33724
  _onSelected = _ref.onSelected,
33624
33725
  onItemClick = _ref.onItemClick,
33625
33726
  atlasIMG = _ref.atlasIMG,
33626
- atlasJSON = _ref.atlasJSON;
33727
+ atlasJSON = _ref.atlasJSON,
33728
+ onItemDragEnd = _ref.onItemDragEnd,
33729
+ onItemDragStart = _ref.onItemDragStart,
33730
+ onItemPlaceDrop = _ref.onItemPlaceDrop,
33731
+ checkIfItemCanBeMoved = _ref.checkIfItemCanBeMoved;
33627
33732
  var neck = equipmentSet.neck,
33628
33733
  leftHand = equipmentSet.leftHand,
33629
33734
  ring = equipmentSet.ring,
@@ -33659,6 +33764,16 @@ var EquipmentSet = function EquipmentSet(_ref) {
33659
33764
  onSelected: function onSelected(optionId) {
33660
33765
  if (_onSelected) _onSelected(optionId);
33661
33766
  },
33767
+ onDragStart: function onDragStart(item, slotIndex, itemContainerType) {
33768
+ if (onItemDragStart) onItemDragStart(item, slotIndex, itemContainerType);
33769
+ },
33770
+ onDragEnd: function onDragEnd(quantity) {
33771
+ if (onItemDragEnd) onItemDragEnd(quantity);
33772
+ },
33773
+ checkIfItemCanBeMoved: checkIfItemCanBeMoved,
33774
+ onPlaceDrop: function onPlaceDrop(item, slotIndex, itemContainerType) {
33775
+ if (onItemPlaceDrop) onItemPlaceDrop(item, slotIndex, itemContainerType);
33776
+ },
33662
33777
  atlasIMG: atlasIMG,
33663
33778
  atlasJSON: atlasJSON
33664
33779
  });
@@ -33679,11 +33794,11 @@ var EquipmentSet = function EquipmentSet(_ref) {
33679
33794
  var EquipmentSetContainer = /*#__PURE__*/styled.div.withConfig({
33680
33795
  displayName: "EquipmentSet__EquipmentSetContainer",
33681
33796
  componentId: "sc-1wuddg2-0"
33682
- })(["width:inherit;display:flex;justify-content:center;flex-wrap:wrap;flex-direction:row;"]);
33797
+ })(["width:inherit;display:flex;justify-content:center;flex-wrap:wrap;flex-direction:row;touch-action:none;"]);
33683
33798
  var EquipmentColumn = /*#__PURE__*/styled.div.withConfig({
33684
33799
  displayName: "EquipmentSet__EquipmentColumn",
33685
33800
  componentId: "sc-1wuddg2-1"
33686
- })(["display:flex;justify-content:center;flex-wrap:wrap;flex-direction:column;"]);
33801
+ })(["display:flex;justify-content:center;flex-wrap:wrap;flex-direction:column;touch-action:none;"]);
33687
33802
 
33688
33803
  var IS_MOBILE_OR_TABLET = /*#__PURE__*/isMobile({
33689
33804
  tablet: true
@@ -34232,7 +34347,8 @@ var SlotsContainer = function SlotsContainer(_ref) {
34232
34347
  title = _ref.title,
34233
34348
  onClose = _ref.onClose,
34234
34349
  _onPositionChange = _ref.onPositionChange,
34235
- onOutsideClick = _ref.onOutsideClick;
34350
+ onOutsideClick = _ref.onOutsideClick,
34351
+ initialPosition = _ref.initialPosition;
34236
34352
  return React.createElement(DraggableContainer, {
34237
34353
  title: title,
34238
34354
  type: RPGUIContainerTypes.Framed,
@@ -34253,11 +34369,164 @@ var SlotsContainer = function SlotsContainer(_ref) {
34253
34369
  });
34254
34370
  }
34255
34371
  },
34256
- onOutsideClick: onOutsideClick
34372
+ onOutsideClick: onOutsideClick,
34373
+ initialPosition: initialPosition
34257
34374
  }, children);
34258
34375
  };
34259
34376
 
34260
- var ItemContainer = function ItemContainer(_ref) {
34377
+ var RangeSliderType;
34378
+ (function (RangeSliderType) {
34379
+ RangeSliderType["Slider"] = "rpgui-slider";
34380
+ RangeSliderType["GoldSlider"] = "rpgui-slider golden";
34381
+ })(RangeSliderType || (RangeSliderType = {}));
34382
+ var RangeSlider = function RangeSlider(_ref) {
34383
+ var type = _ref.type,
34384
+ valueMin = _ref.valueMin,
34385
+ valueMax = _ref.valueMax,
34386
+ width = _ref.width,
34387
+ _onChange = _ref.onChange,
34388
+ value = _ref.value;
34389
+ var sliderId = v4();
34390
+ var containerRef = useRef(null);
34391
+ var _useState = useState(0),
34392
+ left = _useState[0],
34393
+ setLeft = _useState[1];
34394
+ useEffect(function () {
34395
+ var _containerRef$current;
34396
+ var calculatedWidth = ((_containerRef$current = containerRef.current) == null ? void 0 : _containerRef$current.clientWidth) || 0;
34397
+ setLeft(Math.max((value - valueMin) / (valueMax - valueMin) * (calculatedWidth - 35) + 10));
34398
+ }, [value, valueMin, valueMax]);
34399
+ var typeClass = type === RangeSliderType.GoldSlider ? 'golden' : '';
34400
+ return React.createElement("div", {
34401
+ style: {
34402
+ width: width,
34403
+ position: 'relative'
34404
+ },
34405
+ className: "rpgui-slider-container " + typeClass,
34406
+ id: "rpgui-slider-" + sliderId,
34407
+ ref: containerRef
34408
+ }, React.createElement("div", {
34409
+ style: {
34410
+ pointerEvents: 'none'
34411
+ }
34412
+ }, React.createElement("div", {
34413
+ className: "rpgui-slider-track " + typeClass
34414
+ }), React.createElement("div", {
34415
+ className: "rpgui-slider-left-edge " + typeClass
34416
+ }), React.createElement("div", {
34417
+ className: "rpgui-slider-right-edge " + typeClass
34418
+ }), React.createElement("div", {
34419
+ className: "rpgui-slider-thumb " + typeClass,
34420
+ style: {
34421
+ left: left
34422
+ }
34423
+ })), React.createElement(Input$1, {
34424
+ type: "range",
34425
+ style: {
34426
+ width: width
34427
+ },
34428
+ min: valueMin,
34429
+ max: valueMax,
34430
+ onChange: function onChange(e) {
34431
+ return _onChange(Number(e.target.value));
34432
+ },
34433
+ value: value,
34434
+ className: "rpgui-cursor-point"
34435
+ }));
34436
+ };
34437
+ var Input$1 = /*#__PURE__*/styled.input.withConfig({
34438
+ displayName: "RangeSlider__Input",
34439
+ componentId: "sc-v8mte9-0"
34440
+ })(["opacity:0;position:absolute;width:100%;height:100%;top:0;left:0;margin-top:-5px;"]);
34441
+
34442
+ var ItemQuantitySelector = function ItemQuantitySelector(_ref) {
34443
+ var quantity = _ref.quantity,
34444
+ onConfirm = _ref.onConfirm,
34445
+ onClose = _ref.onClose;
34446
+ var _useState = useState(quantity),
34447
+ value = _useState[0],
34448
+ setValue = _useState[1];
34449
+ var inputRef = useRef(null);
34450
+ useEffect(function () {
34451
+ if (inputRef.current) {
34452
+ inputRef.current.focus();
34453
+ inputRef.current.select();
34454
+ var closeSelector = function closeSelector(e) {
34455
+ if (e.key === 'Escape') {
34456
+ onClose();
34457
+ }
34458
+ };
34459
+ document.addEventListener('keydown', closeSelector);
34460
+ return function () {
34461
+ document.removeEventListener('keydown', closeSelector);
34462
+ };
34463
+ }
34464
+ return function () {};
34465
+ }, []);
34466
+ return React.createElement(StyledContainer, {
34467
+ type: RPGUIContainerTypes.Framed,
34468
+ width: "25rem"
34469
+ }, React.createElement(CloseButton$2, {
34470
+ className: "container-close",
34471
+ onClick: onClose,
34472
+ onTouchStart: onClose
34473
+ }, "X"), React.createElement("h2", null, "Select quantity to move"), React.createElement(StyledForm, {
34474
+ style: {
34475
+ width: '100%'
34476
+ },
34477
+ onSubmit: function onSubmit(e) {
34478
+ e.preventDefault();
34479
+ var numberValue = Number(value);
34480
+ if (Number.isNaN(numberValue)) {
34481
+ return;
34482
+ }
34483
+ onConfirm(Math.max(1, Math.min(quantity, numberValue)));
34484
+ },
34485
+ noValidate: true
34486
+ }, React.createElement(StyledInput, {
34487
+ innerRef: inputRef,
34488
+ placeholder: "Enter quantity",
34489
+ type: "number",
34490
+ min: 1,
34491
+ max: quantity,
34492
+ value: value,
34493
+ onChange: function onChange(e) {
34494
+ setValue(e.target.value);
34495
+ },
34496
+ onBlur: function onBlur(e) {
34497
+ var newValue = Math.max(1, Math.min(quantity, Number(e.target.value)));
34498
+ setValue(newValue);
34499
+ }
34500
+ }), React.createElement(RangeSlider, {
34501
+ type: RangeSliderType.Slider,
34502
+ valueMin: 1,
34503
+ valueMax: quantity,
34504
+ width: "100%",
34505
+ onChange: setValue,
34506
+ value: value
34507
+ }), React.createElement(Button, {
34508
+ buttonType: ButtonTypes.RPGUIButton,
34509
+ type: "submit"
34510
+ }, "Confirm")));
34511
+ };
34512
+ var StyledContainer = /*#__PURE__*/styled(RPGUIContainer).withConfig({
34513
+ displayName: "ItemQuantitySelector__StyledContainer",
34514
+ componentId: "sc-yfdtpn-0"
34515
+ })(["display:flex;flex-direction:column;align-items:center;"]);
34516
+ var StyledForm = /*#__PURE__*/styled.form.withConfig({
34517
+ displayName: "ItemQuantitySelector__StyledForm",
34518
+ componentId: "sc-yfdtpn-1"
34519
+ })(["display:flex;flex-direction:column;align-items:center;width:100%;"]);
34520
+ var StyledInput = /*#__PURE__*/styled(Input).withConfig({
34521
+ displayName: "ItemQuantitySelector__StyledInput",
34522
+ componentId: "sc-yfdtpn-2"
34523
+ })(["text-align:center;&::-webkit-outer-spin-button,&::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}&[type='number']{-moz-appearance:textfield;}"]);
34524
+ var CloseButton$2 = /*#__PURE__*/styled.div.withConfig({
34525
+ displayName: "ItemQuantitySelector__CloseButton",
34526
+ componentId: "sc-yfdtpn-3"
34527
+ })(["position:absolute;top:3px;right:0px;color:white;z-index:22;font-size:0.8rem;"]);
34528
+
34529
+ var ItemContainer$1 = function ItemContainer(_ref) {
34261
34530
  var itemContainer = _ref.itemContainer,
34262
34531
  onClose = _ref.onClose,
34263
34532
  _onMouseOver = _ref.onMouseOver,
@@ -34267,7 +34536,19 @@ var ItemContainer = function ItemContainer(_ref) {
34267
34536
  atlasJSON = _ref.atlasJSON,
34268
34537
  atlasIMG = _ref.atlasIMG,
34269
34538
  _ref$disableContextMe = _ref.disableContextMenu,
34270
- disableContextMenu = _ref$disableContextMe === void 0 ? false : _ref$disableContextMe;
34539
+ disableContextMenu = _ref$disableContextMe === void 0 ? false : _ref$disableContextMe,
34540
+ onItemDragEnd = _ref.onItemDragEnd,
34541
+ onItemDragStart = _ref.onItemDragStart,
34542
+ onItemPlaceDrop = _ref.onItemPlaceDrop,
34543
+ checkIfItemCanBeMoved = _ref.checkIfItemCanBeMoved,
34544
+ initialPosition = _ref.initialPosition;
34545
+ var _useState = useState({
34546
+ isOpen: false,
34547
+ maxQuantity: 1,
34548
+ callback: function callback(_quantity) {}
34549
+ }),
34550
+ quantitySelect = _useState[0],
34551
+ setQuantitySelect = _useState[1];
34271
34552
  var onRenderSlots = function onRenderSlots() {
34272
34553
  var slots = [];
34273
34554
  for (var i = 0; i < itemContainer.slotQty; i++) {
@@ -34287,23 +34568,63 @@ var ItemContainer = function ItemContainer(_ref) {
34287
34568
  onSelected: function onSelected(optionId, item) {
34288
34569
  if (_onSelected) _onSelected(optionId, item);
34289
34570
  },
34571
+ onDragStart: function onDragStart(item, slotIndex, itemContainerType) {
34572
+ if (onItemDragStart) onItemDragStart(item, slotIndex, itemContainerType);
34573
+ },
34574
+ onDragEnd: function onDragEnd(quantity) {
34575
+ if (onItemDragEnd) onItemDragEnd(quantity);
34576
+ },
34577
+ checkIfItemCanBeMoved: checkIfItemCanBeMoved,
34578
+ openQuantitySelector: function openQuantitySelector(maxQuantity, callback) {
34579
+ setQuantitySelect({
34580
+ isOpen: true,
34581
+ maxQuantity: maxQuantity,
34582
+ callback: callback
34583
+ });
34584
+ },
34585
+ onPlaceDrop: function onPlaceDrop(item, slotIndex, itemContainerType) {
34586
+ if (onItemPlaceDrop) onItemPlaceDrop(item, slotIndex, itemContainerType);
34587
+ },
34290
34588
  atlasIMG: atlasIMG,
34291
34589
  atlasJSON: atlasJSON
34292
34590
  }));
34293
34591
  }
34294
34592
  return slots;
34295
34593
  };
34296
- return React.createElement(SlotsContainer, {
34594
+ return React.createElement(React.Fragment, null, React.createElement(SlotsContainer, {
34297
34595
  title: itemContainer.name || 'Container',
34298
- onClose: onClose
34596
+ onClose: onClose,
34597
+ initialPosition: initialPosition
34299
34598
  }, React.createElement(ItemsContainer, {
34300
34599
  className: "item-container-body"
34301
- }, onRenderSlots()));
34600
+ }, onRenderSlots())), quantitySelect.isOpen && React.createElement(QuantitySelectorContainer, null, React.createElement(ItemQuantitySelector, {
34601
+ quantity: quantitySelect.maxQuantity,
34602
+ onConfirm: function onConfirm(quantity) {
34603
+ quantitySelect.callback(quantity);
34604
+ setQuantitySelect({
34605
+ isOpen: false,
34606
+ maxQuantity: 1,
34607
+ callback: function callback() {}
34608
+ });
34609
+ },
34610
+ onClose: function onClose() {
34611
+ quantitySelect.callback(-1);
34612
+ setQuantitySelect({
34613
+ isOpen: false,
34614
+ maxQuantity: 1,
34615
+ callback: function callback() {}
34616
+ });
34617
+ }
34618
+ })));
34302
34619
  };
34303
34620
  var ItemsContainer = /*#__PURE__*/styled.div.withConfig({
34304
34621
  displayName: "ItemContainer__ItemsContainer",
34305
34622
  componentId: "sc-15y5p9l-0"
34306
34623
  })(["max-width:280px;display:flex;justify-content:center;flex-wrap:wrap;"]);
34624
+ var QuantitySelectorContainer = /*#__PURE__*/styled.div.withConfig({
34625
+ displayName: "ItemContainer__QuantitySelectorContainer",
34626
+ componentId: "sc-15y5p9l-1"
34627
+ })(["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
34628
 
34308
34629
  var ListMenu = function ListMenu(_ref) {
34309
34630
  var options = _ref.options,
@@ -34603,41 +34924,6 @@ var InputRadio = function InputRadio(_ref) {
34603
34924
  }));
34604
34925
  };
34605
34926
 
34606
- var RangeSliderType;
34607
- (function (RangeSliderType) {
34608
- RangeSliderType["Slider"] = "rpgui-slider";
34609
- RangeSliderType["GoldSlider"] = "rpgui-slider golden";
34610
- })(RangeSliderType || (RangeSliderType = {}));
34611
- var RangeSlider = function RangeSlider(_ref) {
34612
- var type = _ref.type,
34613
- valueMin = _ref.valueMin,
34614
- valueMax = _ref.valueMax,
34615
- width = _ref.width,
34616
- onChange = _ref.onChange;
34617
- var sliderId = v4();
34618
- var onHandleMouseUp = function onHandleMouseUp() {
34619
- var rpguiSlider = document.getElementById("rpgui-slider-" + sliderId);
34620
- var value = _RPGUI.get_value(rpguiSlider);
34621
- onChange(Number(value));
34622
- };
34623
- return React.createElement("div", {
34624
- onMouseUp: onHandleMouseUp
34625
- }, React.createElement(Input$1, {
34626
- className: type === RangeSliderType.Slider ? RangeSliderType.Slider : RangeSliderType.GoldSlider,
34627
- type: "range",
34628
- style: {
34629
- width: width
34630
- },
34631
- min: valueMin,
34632
- max: valueMax,
34633
- id: "rpgui-slider-" + sliderId
34634
- }));
34635
- };
34636
- var Input$1 = /*#__PURE__*/styled.input.withConfig({
34637
- displayName: "RangeSlider__Input",
34638
- componentId: "sc-v8mte9-0"
34639
- })(["opacity:0;"]);
34640
-
34641
34927
  var SimpleProgressBar = function SimpleProgressBar(_ref) {
34642
34928
  var value = _ref.value,
34643
34929
  _ref$bgColor = _ref.bgColor,
@@ -34807,7 +35093,7 @@ var SkillsContainer = function SkillsContainer(_ref) {
34807
35093
  };
34808
35094
  return React.createElement(SkillsDraggableContainer, {
34809
35095
  title: "Skills"
34810
- }, onCloseButton && React.createElement(CloseButton$2, {
35096
+ }, onCloseButton && React.createElement(CloseButton$3, {
34811
35097
  onClick: onCloseButton,
34812
35098
  onTouchStart: onCloseButton
34813
35099
  }, "X"), React.createElement(SkillSplitDiv, null, React.createElement("p", null, "General"), React.createElement("hr", {
@@ -34837,7 +35123,7 @@ var SkillSplitDiv = /*#__PURE__*/styled.div.withConfig({
34837
35123
  displayName: "SkillsContainer__SkillSplitDiv",
34838
35124
  componentId: "sc-1g0c67q-1"
34839
35125
  })(["width:100%;font-size:11px;hr{margin:0;margin-bottom:1rem;padding:0px;}p{margin-bottom:0px;}"]);
34840
- var CloseButton$2 = /*#__PURE__*/styled.div.withConfig({
35126
+ var CloseButton$3 = /*#__PURE__*/styled.div.withConfig({
34841
35127
  displayName: "SkillsContainer__CloseButton",
34842
35128
  componentId: "sc-1g0c67q-2"
34843
35129
  })(["position:absolute;top:2px;right:2px;color:white;z-index:22;font-size:0.7rem;"]);
@@ -34872,7 +35158,7 @@ var TimeWidget = function TimeWidget(_ref) {
34872
35158
  var onClose = _ref.onClose,
34873
35159
  TimeClock = _ref.TimeClock,
34874
35160
  periodOfDay = _ref.periodOfDay;
34875
- return React.createElement(Draggable, null, React.createElement(WidgetContainer, null, React.createElement(CloseButton$3, {
35161
+ return React.createElement(Draggable, null, React.createElement(WidgetContainer, null, React.createElement(CloseButton$4, {
34876
35162
  onClick: onClose
34877
35163
  }, "X"), React.createElement(DayNightContainer, null, React.createElement(DayNightPeriod, {
34878
35164
  periodOfDay: periodOfDay
@@ -34886,7 +35172,7 @@ var Time = /*#__PURE__*/styled.div.withConfig({
34886
35172
  displayName: "TimeWidget__Time",
34887
35173
  componentId: "sc-1ja236h-1"
34888
35174
  })(["top:0.75rem;right:0.5rem;position:absolute;font-size:", ";color:white;"], uiFonts.size.small);
34889
- var CloseButton$3 = /*#__PURE__*/styled.p.withConfig({
35175
+ var CloseButton$4 = /*#__PURE__*/styled.p.withConfig({
34890
35176
  displayName: "TimeWidget__CloseButton",
34891
35177
  componentId: "sc-1ja236h-2"
34892
35178
  })(["position:absolute;top:-0.5rem;margin:0;right:-0.2rem;font-size:", " !important;z-index:1;"], uiFonts.size.small);
@@ -35199,5 +35485,5 @@ var ButtonWrapper$2 = /*#__PURE__*/styled.div.withConfig({
35199
35485
  componentId: "sc-gptoxp-5"
35200
35486
  })(["display:flex;justify-content:space-around;padding-top:20px;width:100%;"]);
35201
35487
 
35202
- 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 };
35488
+ 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 };
35203
35489
  //# sourceMappingURL=long-bow.esm.js.map