@rpg-engine/long-bow 0.8.13 → 0.8.15

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.
@@ -1,7 +1,7 @@
1
- import React from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  export interface IConfirmModalProps {
3
3
  onConfirm: () => void;
4
4
  onClose: () => void;
5
- message?: string;
5
+ message?: string | ReactNode;
6
6
  }
7
7
  export declare const ConfirmModal: React.FC<IConfirmModalProps>;
@@ -1,10 +1,14 @@
1
1
  import React from 'react';
2
- interface Props {
2
+ interface IColorSelectorProps {
3
3
  selectedColor: string;
4
4
  isOpen: boolean;
5
5
  onClose: () => void;
6
6
  onConfirm: (color: string) => void;
7
7
  onChange: (color: string) => void;
8
+ costWarning?: {
9
+ cost: number;
10
+ currency?: string;
11
+ };
8
12
  }
9
- export declare const ColorSelector: React.FC<Props>;
13
+ export declare const ColorSelector: React.FC<IColorSelectorProps>;
10
14
  export {};
@@ -631,6 +631,8 @@ var SpriteFromAtlas = function SpriteFromAtlas(_ref) {
631
631
  return null;
632
632
  }
633
633
  var normalizedTintColor = toUppercaseHexColor(tintColor);
634
+ // For white tint, we'll use a very light gray instead
635
+ var effectiveTintColor = normalizedTintColor === '#FFFFFF' ? '#EEEEEE' : normalizedTintColor;
634
636
  return React__default.createElement(Container$1, {
635
637
  width: width,
636
638
  height: height,
@@ -647,7 +649,7 @@ var SpriteFromAtlas = function SpriteFromAtlas(_ref) {
647
649
  style: imgStyle,
648
650
  centered: centered,
649
651
  borderRadius: borderRadius,
650
- tintColor: normalizedTintColor
652
+ tintColor: effectiveTintColor
651
653
  }));
652
654
  };
653
655
  var Container$1 = /*#__PURE__*/styled__default.div.withConfig({
@@ -663,7 +665,7 @@ var Container$1 = /*#__PURE__*/styled__default.div.withConfig({
663
665
  var ImgSprite = /*#__PURE__*/styled__default.div.withConfig({
664
666
  displayName: "SpriteFromAtlas__ImgSprite",
665
667
  componentId: "sc-1lpani8-1"
666
- })(["width:", "px;height:", "px;background-image:url(", ");background-position:-", "px -", "px;transform:scale(", ");position:relative;top:", ";left:", ";filter:", ";opacity:", ";border-radius:", ";overflow:hidden;"], function (props) {
668
+ })(["width:", "px;height:", "px;background-image:url(", ");background-position:-", "px -", "px;transform:scale(", ");position:relative;top:", ";left:", ";opacity:", ";border-radius:", ";overflow:hidden;", " ", ""], function (props) {
667
669
  return props.frame.w;
668
670
  }, function (props) {
669
671
  return props.frame.h;
@@ -679,15 +681,14 @@ var ImgSprite = /*#__PURE__*/styled__default.div.withConfig({
679
681
  return props.centered ? '0' : '8px';
680
682
  }, function (props) {
681
683
  return props.centered ? '0' : '8px';
682
- }, function (props) {
683
- var filters = [];
684
- if (props.grayScale) filters.push('grayscale(100%)');
685
- if (props.tintColor) filters.push("brightness(0.8) contrast(1.2) sepia(100%) hue-rotate(" + (props.tintColor === '#FFD700' ? '40deg' : '210deg') + ") saturate(400%)");
686
- return filters.length ? filters.join(' ') : 'none';
687
684
  }, function (props) {
688
685
  return props.opacity;
689
686
  }, function (props) {
690
687
  return props.borderRadius || '0';
688
+ }, function (props) {
689
+ return props.grayScale && styled.css(["filter:grayscale(100%);"]);
690
+ }, function (props) {
691
+ return props.tintColor && styled.css(["&::before{content:'';position:absolute;top:0;left:0;width:", "px;height:", "px;background-color:", ";mix-blend-mode:multiply;opacity:0.6;pointer-events:none;-webkit-mask-image:url(", ");-webkit-mask-position:-", "px -", "px;mask-image:url(", ");mask-position:-", "px -", "px;}&::after{content:'';position:absolute;top:0;left:0;width:", "px;height:", "px;background-color:", ";mix-blend-mode:soft-light;opacity:0.6;pointer-events:none;-webkit-mask-image:url(", ");-webkit-mask-position:-", "px -", "px;mask-image:url(", ");mask-position:-", "px -", "px;}"], props.frame.w, props.frame.h, props.tintColor, props.atlasIMG, props.frame.x, props.frame.y, props.atlasIMG, props.frame.x, props.frame.y, props.frame.w, props.frame.h, props.tintColor, props.atlasIMG, props.frame.x, props.frame.y, props.atlasIMG, props.frame.x, props.frame.y);
691
692
  });
692
693
 
693
694
  var frames = {
@@ -32768,48 +32769,139 @@ var ItemsContainer = /*#__PURE__*/styled__default.div.withConfig({
32768
32769
  return isFullScreen && '50%';
32769
32770
  });
32770
32771
 
32772
+ var ConfirmModal = function ConfirmModal(_ref) {
32773
+ var onConfirm = _ref.onConfirm,
32774
+ onClose = _ref.onClose,
32775
+ _ref$message = _ref.message,
32776
+ message = _ref$message === void 0 ? 'Are you sure?' : _ref$message;
32777
+ var handleConfirm = function handleConfirm(e) {
32778
+ e.preventDefault();
32779
+ e.stopPropagation();
32780
+ onConfirm();
32781
+ };
32782
+ var handleClose = function handleClose(e) {
32783
+ e.preventDefault();
32784
+ e.stopPropagation();
32785
+ onClose();
32786
+ };
32787
+ return React__default.createElement(ModalPortal, null, React__default.createElement(Background, null), React__default.createElement(Container$t, {
32788
+ onClick: handleClose
32789
+ }, React__default.createElement(DraggableContainer, {
32790
+ width: "auto",
32791
+ dragDisabled: true
32792
+ }, React__default.createElement(Wrapper$1, {
32793
+ onClick: function onClick(e) {
32794
+ return e.stopPropagation();
32795
+ }
32796
+ }, typeof message === 'string' ? React__default.createElement("p", null, message) : message, React__default.createElement(ButtonsWrapper, null, React__default.createElement("div", {
32797
+ className: "cancel-button"
32798
+ }, React__default.createElement(Button, {
32799
+ buttonType: exports.ButtonTypes.RPGUIButton,
32800
+ onClick: handleClose
32801
+ }, "No")), React__default.createElement(Button, {
32802
+ buttonType: exports.ButtonTypes.RPGUIButton,
32803
+ onClick: handleConfirm
32804
+ }, "Yes"))))));
32805
+ };
32806
+ var Background = /*#__PURE__*/styled__default.div.withConfig({
32807
+ displayName: "ConfirmModal__Background",
32808
+ componentId: "sc-11qkyu1-0"
32809
+ })(["position:absolute;width:100%;height:100%;background-color:#000000;opacity:0.5;left:0;top:0;z-index:1000;"]);
32810
+ var Container$t = /*#__PURE__*/styled__default.div.withConfig({
32811
+ displayName: "ConfirmModal__Container",
32812
+ componentId: "sc-11qkyu1-1"
32813
+ })(["position:absolute;width:100%;height:100%;left:0;top:0;display:flex;justify-content:center;align-items:center;z-index:1001;"]);
32814
+ var Wrapper$1 = /*#__PURE__*/styled__default.div.withConfig({
32815
+ displayName: "ConfirmModal__Wrapper",
32816
+ componentId: "sc-11qkyu1-2"
32817
+ })(["p{margin:0;}"]);
32818
+ var ButtonsWrapper = /*#__PURE__*/styled__default.div.withConfig({
32819
+ displayName: "ConfirmModal__ButtonsWrapper",
32820
+ componentId: "sc-11qkyu1-3"
32821
+ })(["display:flex;justify-content:flex-end;gap:5px;margin-top:5px;.cancel-button{filter:grayscale(0.7);}"]);
32822
+
32771
32823
  var ColorSelector = function ColorSelector(_ref) {
32772
32824
  var selectedColor = _ref.selectedColor,
32773
32825
  isOpen = _ref.isOpen,
32774
32826
  onClose = _ref.onClose,
32775
32827
  onConfirm = _ref.onConfirm,
32776
- _onChange = _ref.onChange;
32828
+ _onChange = _ref.onChange,
32829
+ costWarning = _ref.costWarning;
32777
32830
  var _useState = React.useState(selectedColor),
32778
32831
  currentColor = _useState[0],
32779
32832
  setCurrentColor = _useState[1];
32833
+ var _useState2 = React.useState(false),
32834
+ showConfirmModal = _useState2[0],
32835
+ setShowConfirmModal = _useState2[1];
32780
32836
  React.useEffect(function () {
32781
32837
  if (isOpen) setCurrentColor(selectedColor);
32782
32838
  }, [isOpen, selectedColor]);
32783
- var handleConfirm = function handleConfirm() {
32839
+ var handleConfirm = function handleConfirm(e) {
32840
+ e.preventDefault();
32841
+ if (costWarning) {
32842
+ setShowConfirmModal(true);
32843
+ } else {
32844
+ onConfirm(currentColor);
32845
+ onClose();
32846
+ }
32847
+ };
32848
+ var handleConfirmCost = function handleConfirmCost() {
32784
32849
  onConfirm(currentColor);
32850
+ setShowConfirmModal(false);
32785
32851
  onClose();
32786
32852
  };
32853
+ var handleClose = function handleClose() {
32854
+ setShowConfirmModal(false);
32855
+ };
32856
+ var renderConfirmMessage = function renderConfirmMessage() {
32857
+ return React__default.createElement(ConfirmContent, null, React__default.createElement("p", null, "Cost:", React__default.createElement(CostDisplay, null, costWarning == null ? void 0 : costWarning.cost.toLocaleString(), (costWarning == null ? void 0 : costWarning.currency) || ' gold')), React__default.createElement("p", null, "Proceed with color change?"));
32858
+ };
32787
32859
  if (!isOpen) return null;
32788
- return isOpen ? React__default.createElement(DraggableContainer, {
32860
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(DraggableContainer, {
32789
32861
  type: exports.RPGUIContainerTypes.Framed,
32790
32862
  cancelDrag: ".react-colorful",
32791
- width: "20rem",
32863
+ width: "25rem",
32792
32864
  onCloseButton: onClose
32793
- }, React__default.createElement(Container$t, null, React__default.createElement(Header$3, null, "Select Color"), React__default.createElement(reactColorful.HexColorPicker, {
32865
+ }, React__default.createElement(Container$u, null, React__default.createElement(Header$3, null, "Select Color"), React__default.createElement(ColorPickerWrapper, null, React__default.createElement(reactColorful.HexColorPicker, {
32794
32866
  color: currentColor,
32795
32867
  onChange: function onChange(color) {
32796
32868
  setCurrentColor(color);
32797
32869
  _onChange(color);
32798
32870
  }
32799
- }), React__default.createElement(Button, {
32871
+ })), React__default.createElement(ButtonContainer$2, null, React__default.createElement(Button, {
32800
32872
  buttonType: exports.ButtonTypes.RPGUIButton,
32801
32873
  type: "button",
32802
32874
  onClick: handleConfirm
32803
- }, "Confirm"))) : null;
32875
+ }, "Confirm")))), showConfirmModal && costWarning && React__default.createElement(ConfirmModal, {
32876
+ message: renderConfirmMessage(),
32877
+ onConfirm: handleConfirmCost,
32878
+ onClose: handleClose
32879
+ }));
32804
32880
  };
32805
- var Container$t = /*#__PURE__*/styled__default.div.withConfig({
32881
+ var Container$u = /*#__PURE__*/styled__default.div.withConfig({
32806
32882
  displayName: "ItemPropertyColorSelector__Container",
32807
32883
  componentId: "sc-me1r4z-0"
32808
- })(["padding:2rem;text-align:center;background:inherit;"]);
32884
+ })(["text-align:center;background:inherit;display:flex;flex-direction:column;gap:1.5rem;align-items:center;width:100%;max-width:24rem;margin:0 auto;"]);
32809
32885
  var Header$3 = /*#__PURE__*/styled__default.h2.withConfig({
32810
32886
  displayName: "ItemPropertyColorSelector__Header",
32811
32887
  componentId: "sc-me1r4z-1"
32812
- })(["font-family:'Press Start 2P',cursive;color:white;font-size:1rem;margin-bottom:1rem;"]);
32888
+ })(["color:white;font-size:1rem;margin:0;width:100%;text-align:center;"]);
32889
+ var ColorPickerWrapper = /*#__PURE__*/styled__default.div.withConfig({
32890
+ displayName: "ItemPropertyColorSelector__ColorPickerWrapper",
32891
+ componentId: "sc-me1r4z-2"
32892
+ })(["display:flex;justify-content:center;width:100%;.react-colorful{width:100%;max-width:200px;}"]);
32893
+ var ButtonContainer$2 = /*#__PURE__*/styled__default.div.withConfig({
32894
+ displayName: "ItemPropertyColorSelector__ButtonContainer",
32895
+ componentId: "sc-me1r4z-3"
32896
+ })(["display:flex;justify-content:center;width:100%;"]);
32897
+ var ConfirmContent = /*#__PURE__*/styled__default.div.withConfig({
32898
+ displayName: "ItemPropertyColorSelector__ConfirmContent",
32899
+ componentId: "sc-me1r4z-4"
32900
+ })(["display:flex;flex-direction:column;gap:0.5rem;text-align:center;font-family:'Press Start 2P',cursive;font-size:0.75rem;"]);
32901
+ var CostDisplay = /*#__PURE__*/styled__default.span.withConfig({
32902
+ displayName: "ItemPropertyColorSelector__CostDisplay",
32903
+ componentId: "sc-me1r4z-5"
32904
+ })(["color:", " !important;"], uiColors.yellow);
32813
32905
 
32814
32906
  var ItemPropertySimpleHandler = function ItemPropertySimpleHandler(_ref) {
32815
32907
  var isOpen = _ref.isOpen,
@@ -33140,7 +33232,7 @@ var ListMenu = function ListMenu(_ref) {
33140
33232
  onSelected = _ref.onSelected,
33141
33233
  x = _ref.x,
33142
33234
  y = _ref.y;
33143
- return React__default.createElement(Container$u, {
33235
+ return React__default.createElement(Container$v, {
33144
33236
  x: x,
33145
33237
  y: y
33146
33238
  }, React__default.createElement("ul", {
@@ -33157,7 +33249,7 @@ var ListMenu = function ListMenu(_ref) {
33157
33249
  }, (params == null ? void 0 : params.text) || 'No text');
33158
33250
  })));
33159
33251
  };
33160
- var Container$u = /*#__PURE__*/styled__default.div.withConfig({
33252
+ var Container$v = /*#__PURE__*/styled__default.div.withConfig({
33161
33253
  displayName: "ListMenu__Container",
33162
33254
  componentId: "sc-i9097t-0"
33163
33255
  })(["display:flex;flex-direction:column;width:100%;justify-content:start;align-items:flex-start;position:absolute;top:", "px;left:", "px;li{font-size:", ";}"], function (props) {
@@ -33176,7 +33268,7 @@ var Pager = function Pager(_ref) {
33176
33268
  itemsPerPage = _ref.itemsPerPage,
33177
33269
  onPageChange = _ref.onPageChange;
33178
33270
  var totalPages = Math.ceil(totalItems / itemsPerPage);
33179
- return React__default.createElement(Container$v, null, React__default.createElement("p", null, "Total items: ", totalItems), React__default.createElement(PagerContainer, null, React__default.createElement("button", {
33271
+ return React__default.createElement(Container$w, null, React__default.createElement("p", null, "Total items: ", totalItems), React__default.createElement(PagerContainer, null, React__default.createElement("button", {
33180
33272
  disabled: currentPage === 1,
33181
33273
  onPointerDown: function onPointerDown() {
33182
33274
  return onPageChange(Math.max(currentPage - 1, 1));
@@ -33190,7 +33282,7 @@ var Pager = function Pager(_ref) {
33190
33282
  }
33191
33283
  }, '>')));
33192
33284
  };
33193
- var Container$v = /*#__PURE__*/styled__default.div.withConfig({
33285
+ var Container$w = /*#__PURE__*/styled__default.div.withConfig({
33194
33286
  displayName: "Pager__Container",
33195
33287
  componentId: "sc-1ekmf50-0"
33196
33288
  })(["display:flex;flex-direction:column;align-items:center;p{margin:0;font-size:", ";}"], uiFonts.size.xsmall);
@@ -33199,46 +33291,6 @@ var PagerContainer = /*#__PURE__*/styled__default.div.withConfig({
33199
33291
  componentId: "sc-1ekmf50-1"
33200
33292
  })(["display:flex;justify-content:center;align-items:center;gap:5px;p{margin:0;}div{color:white;}button{width:40px;height:40px;background-color:", ";border:none;border-radius:5px;color:white;:hover{background-color:", ";}:disabled{opacity:0.5;}&.active{background-color:", ";font-weight:bold;color:black;}}"], uiColors.darkGray, uiColors.lightGray, uiColors.orange);
33201
33293
 
33202
- var ConfirmModal = function ConfirmModal(_ref) {
33203
- var onConfirm = _ref.onConfirm,
33204
- onClose = _ref.onClose,
33205
- message = _ref.message;
33206
- return React__default.createElement(ModalPortal, null, React__default.createElement(Background, null), React__default.createElement(Container$w, {
33207
- onPointerDown: onClose
33208
- }, React__default.createElement(DraggableContainer, {
33209
- width: "auto",
33210
- dragDisabled: true
33211
- }, React__default.createElement(Wrapper$1, {
33212
- onPointerDown: function onPointerDown(e) {
33213
- return e.stopPropagation();
33214
- }
33215
- }, React__default.createElement("p", null, message != null ? message : 'Are you sure?'), React__default.createElement(ButtonsWrapper, null, React__default.createElement("div", {
33216
- className: "cancel-button"
33217
- }, React__default.createElement(Button, {
33218
- buttonType: exports.ButtonTypes.RPGUIButton,
33219
- onPointerDown: onClose
33220
- }, "No")), React__default.createElement(Button, {
33221
- buttonType: exports.ButtonTypes.RPGUIButton,
33222
- onPointerDown: onConfirm
33223
- }, "Yes"))))));
33224
- };
33225
- var Background = /*#__PURE__*/styled__default.div.withConfig({
33226
- displayName: "ConfirmModal__Background",
33227
- componentId: "sc-11qkyu1-0"
33228
- })(["position:absolute;width:100%;height:100%;background-color:#000000;opacity:0.5;left:0;top:0;z-index:1000;"]);
33229
- var Container$w = /*#__PURE__*/styled__default.div.withConfig({
33230
- displayName: "ConfirmModal__Container",
33231
- componentId: "sc-11qkyu1-1"
33232
- })(["position:absolute;width:100%;height:100%;left:0;top:0;display:flex;justify-content:center;align-items:center;z-index:1001;"]);
33233
- var Wrapper$1 = /*#__PURE__*/styled__default.div.withConfig({
33234
- displayName: "ConfirmModal__Wrapper",
33235
- componentId: "sc-11qkyu1-2"
33236
- })(["p{margin:0;}"]);
33237
- var ButtonsWrapper = /*#__PURE__*/styled__default.div.withConfig({
33238
- displayName: "ConfirmModal__ButtonsWrapper",
33239
- componentId: "sc-11qkyu1-3"
33240
- })(["display:flex;justify-content:flex-end;gap:5px;margin-top:5px;.cancel-button{filter:grayscale(0.7);}"]);
33241
-
33242
33294
  var MarketplaceRows = function MarketplaceRows(_ref) {
33243
33295
  var atlasJSON = _ref.atlasJSON,
33244
33296
  atlasIMG = _ref.atlasIMG,
@@ -33284,7 +33336,7 @@ var MarketplaceRows = function MarketplaceRows(_ref) {
33284
33336
  maxLines: 1,
33285
33337
  maxWidth: "200px",
33286
33338
  fontSize: "10px"
33287
- }, "$", itemPrice)))), React__default.createElement(ButtonContainer$2, null, React__default.createElement(Button, {
33339
+ }, "$", itemPrice)))), React__default.createElement(ButtonContainer$3, null, React__default.createElement(Button, {
33288
33340
  buttonType: exports.ButtonTypes.RPGUIButton,
33289
33341
  disabled: disabled,
33290
33342
  onPointerDown: function onPointerDown() {
@@ -33326,7 +33378,7 @@ var PriceValue = /*#__PURE__*/styled__default.div.withConfig({
33326
33378
  displayName: "MarketplaceRows__PriceValue",
33327
33379
  componentId: "sc-wmpr1o-7"
33328
33380
  })(["margin-left:40px;"]);
33329
- var ButtonContainer$2 = /*#__PURE__*/styled__default.div.withConfig({
33381
+ var ButtonContainer$3 = /*#__PURE__*/styled__default.div.withConfig({
33330
33382
  displayName: "MarketplaceRows__ButtonContainer",
33331
33383
  componentId: "sc-wmpr1o-8"
33332
33384
  })(["margin:auto;"]);
@@ -34094,7 +34146,7 @@ var PartyManagerRow = function PartyManagerRow(_ref) {
34094
34146
  }, charName, " ", isCurrentUser ? '(You)' : '', " ", isLeader ? '(Leader)' : '')), React__default.createElement(TextContainer$5, null, React__default.createElement(Ellipsis, {
34095
34147
  maxLines: 1,
34096
34148
  maxWidth: "300px"
34097
- }, charClass)), React__default.createElement(ButtonContainer$3, null, canRemove && React__default.createElement(HighlightedText, {
34149
+ }, charClass)), React__default.createElement(ButtonContainer$4, null, canRemove && React__default.createElement(HighlightedText, {
34098
34150
  onPointerDown: function onPointerDown() {
34099
34151
  return onRemovePlayer(id);
34100
34152
  }
@@ -34112,7 +34164,7 @@ var TextContainer$5 = /*#__PURE__*/styled__default.div.withConfig({
34112
34164
  displayName: "PartyManagerRows__TextContainer",
34113
34165
  componentId: "sc-uqajew-1"
34114
34166
  })(["color:", ";overflow:hidden;white-space:nowrap;text-overflow:ellipsis;"], uiColors.white);
34115
- var ButtonContainer$3 = /*#__PURE__*/styled__default.div.withConfig({
34167
+ var ButtonContainer$4 = /*#__PURE__*/styled__default.div.withConfig({
34116
34168
  displayName: "PartyManagerRows__ButtonContainer",
34117
34169
  componentId: "sc-uqajew-2"
34118
34170
  })(["display:flex;align-items:center;gap:1rem;justify-content:flex-start;"]);