@rpg-engine/long-bow 0.1.29 → 0.1.35

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,10 +1,10 @@
1
1
  import React from 'react';
2
- export declare enum IButtonTypes {
2
+ export declare enum ButtonTypes {
3
3
  RPGUIButton = "rpgui-button",
4
4
  RPGUIGoldButton = "rpgui-button golden"
5
5
  }
6
- export interface IButtonsProps {
6
+ export interface IButtonProps {
7
7
  children: React.ReactNode;
8
- type: IButtonTypes;
8
+ buttonType: ButtonTypes;
9
9
  }
10
- export declare const Button: React.FC<IButtonsProps>;
10
+ export declare const Button: React.FC<IButtonProps & React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>>;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ export interface ICheckItems {
3
+ label: string;
4
+ value: string;
5
+ }
6
+ export interface ICheckProps {
7
+ items: ICheckItems[];
8
+ onChange: (selectedValues: IChecklistSelectedValues) => void;
9
+ }
10
+ interface IChecklistSelectedValues {
11
+ [label: string]: boolean;
12
+ }
13
+ export declare const CheckButton: React.FC<ICheckProps>;
14
+ export {};
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ export interface IOptionsProps {
3
+ id: number;
4
+ value: string;
5
+ option: string;
6
+ }
7
+ export interface IDropdownProps {
8
+ options: IOptionsProps[];
9
+ width?: string;
10
+ onChange: (value: string) => void;
11
+ }
12
+ export declare const Dropdown: React.FC<IDropdownProps>;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export interface IInputProps extends React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement> {
3
+ }
4
+ export declare const Input: React.FC<IInputProps>;
@@ -8,6 +8,7 @@ export interface IListMenuProps {
8
8
  y: number;
9
9
  options: IListMenuOption[];
10
10
  onSelected: (selectedOptionId: string) => void;
11
+ fontSize?: number;
11
12
  }
12
13
  export declare const ListMenu: React.FC<IListMenuProps>;
13
14
  export {};
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export interface IBarProps {
3
+ max: number;
4
+ value: number;
5
+ color: 'red' | 'blue' | 'green';
6
+ }
7
+ export declare const ProgressBar: React.FC<IBarProps>;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export interface IRadioItems {
3
+ label: string;
4
+ value: string;
5
+ }
6
+ export interface IRadioProps {
7
+ name: string;
8
+ items: IRadioItems[];
9
+ onChange: (value: string) => void;
10
+ }
11
+ export declare const InputRadio: React.FC<IRadioProps>;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export interface ITextArea extends React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement> {
3
+ }
4
+ export declare const TextArea: React.FC<ITextArea>;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface IProps {
3
+ maxLines?: number;
4
+ children: React.ReactNode;
5
+ }
6
+ export declare const Truncate: React.FC<IProps>;
7
+ export {};
package/dist/index.d.ts CHANGED
@@ -1,9 +1,15 @@
1
1
  export * from './components/Button';
2
+ export * from './components/CheckButton';
3
+ export * from './components/Dropdown';
4
+ export * from './components/Input';
2
5
  export * from './components/ListMenu';
3
6
  export * from './components/NPCDialog/NPCDialog';
4
7
  export * from './components/NPCDialog/QuestionDialog/QuestionDialog';
8
+ export * from './components/RadioButton';
5
9
  export * from './components/RangeSlider';
6
10
  export * from './components/RPGUIContainer';
7
11
  export * from './components/RPGUIRoot';
12
+ export * from './components/TextArea';
13
+ export * from './components/Truncate';
8
14
  export * from './components/typography/DynamicText';
9
15
  export { useEventListener } from './hooks/useEventListener';
@@ -6,10 +6,28 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
6
6
 
7
7
  var React = require('react');
8
8
  var React__default = _interopDefault(React);
9
- require('rpgui/rpgui.min.css');
10
- require('rpgui/rpgui.min.js');
11
9
  var styled = _interopDefault(require('styled-components'));
12
10
  var uuid = require('uuid');
11
+ require('rpgui/rpgui.min.css');
12
+ require('rpgui/rpgui.min.js');
13
+
14
+ function _extends() {
15
+ _extends = Object.assign || function (target) {
16
+ for (var i = 1; i < arguments.length; i++) {
17
+ var source = arguments[i];
18
+
19
+ for (var key in source) {
20
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
21
+ target[key] = source[key];
22
+ }
23
+ }
24
+ }
25
+
26
+ return target;
27
+ };
28
+
29
+ return _extends.apply(this, arguments);
30
+ }
13
31
 
14
32
  function _objectWithoutPropertiesLoose(source, excluded) {
15
33
  if (source == null) return {};
@@ -26,6 +44,72 @@ function _objectWithoutPropertiesLoose(source, excluded) {
26
44
  return target;
27
45
  }
28
46
 
47
+ var _excluded = ["children", "buttonType"];
48
+
49
+ (function (ButtonTypes) {
50
+ ButtonTypes["RPGUIButton"] = "rpgui-button";
51
+ ButtonTypes["RPGUIGoldButton"] = "rpgui-button golden";
52
+ })(exports.ButtonTypes || (exports.ButtonTypes = {}));
53
+
54
+ var Button = function Button(_ref) {
55
+ var children = _ref.children,
56
+ buttonType = _ref.buttonType,
57
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
58
+
59
+ return React__default.createElement(ButtonContainer, Object.assign({
60
+ className: "" + buttonType
61
+ }, props), React__default.createElement("p", null, children));
62
+ };
63
+ var ButtonContainer = /*#__PURE__*/styled.button.withConfig({
64
+ displayName: "Button__ButtonContainer",
65
+ componentId: "sc-obzd3o-0"
66
+ })(["height:45px;font-size:11.5px;"]);
67
+
68
+ var CheckButton = function CheckButton(_ref) {
69
+ var items = _ref.items,
70
+ onChange = _ref.onChange;
71
+
72
+ var generateSelectedValuesList = function generateSelectedValuesList() {
73
+ var selectedValues = {};
74
+ items.forEach(function (item) {
75
+ selectedValues[item.label] = false;
76
+ });
77
+ return selectedValues;
78
+ };
79
+
80
+ var _useState = React.useState(generateSelectedValuesList()),
81
+ selectedValues = _useState[0],
82
+ setSelectedValues = _useState[1];
83
+
84
+ var handleClick = function handleClick(label) {
85
+ var _extends2;
86
+
87
+ setSelectedValues(_extends({}, selectedValues, (_extends2 = {}, _extends2[label] = !selectedValues[label], _extends2)));
88
+ };
89
+
90
+ React.useEffect(function () {
91
+ if (selectedValues) {
92
+ onChange(selectedValues);
93
+ }
94
+ }, [selectedValues]);
95
+ return React__default.createElement("div", {
96
+ id: "elemento-checkbox"
97
+ }, items == null ? void 0 : items.map(function (element, index) {
98
+ return React__default.createElement("div", {
99
+ key: element.label + "_" + index
100
+ }, React__default.createElement("input", {
101
+ className: "rpgui-checkbox",
102
+ type: "checkbox",
103
+ checked: selectedValues[element.label],
104
+ onChange: function onChange() {}
105
+ }), React__default.createElement("label", {
106
+ onClick: function onClick() {
107
+ return handleClick(element.label);
108
+ }
109
+ }, element.label), React__default.createElement("br", null));
110
+ }));
111
+ };
112
+
29
113
  var _RPGUI = RPGUI;
30
114
  var RPGUIRoot = function RPGUIRoot(_ref) {
31
115
  var children = _ref.children;
@@ -34,32 +118,62 @@ var RPGUIRoot = function RPGUIRoot(_ref) {
34
118
  }, children);
35
119
  };
36
120
 
37
- var _excluded = ["children", "type"];
121
+ var Dropdown = function Dropdown(_ref) {
122
+ var options = _ref.options,
123
+ width = _ref.width,
124
+ onChange = _ref.onChange;
125
+ var dropdownId = uuid.v4();
126
+
127
+ var _useState = React.useState(''),
128
+ selectedValue = _useState[0],
129
+ setSelectedValue = _useState[1];
38
130
 
39
- (function (IButtonTypes) {
40
- IButtonTypes["RPGUIButton"] = "rpgui-button";
41
- IButtonTypes["RPGUIGoldButton"] = "rpgui-button golden";
42
- })(exports.IButtonTypes || (exports.IButtonTypes = {}));
131
+ React.useEffect(function () {
132
+ var element = document.getElementById("rpgui-dropdown-" + dropdownId);
43
133
 
44
- var Button = function Button(_ref) {
45
- var children = _ref.children,
46
- type = _ref.type,
47
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
134
+ var dropdownValue = _RPGUI.get_value(element);
48
135
 
49
- return React__default.createElement(RPGUIRoot, null, React__default.createElement("button", Object.assign({
50
- className: type,
51
- type: "button"
52
- }, props), React__default.createElement("p", null, children)));
136
+ setSelectedValue(dropdownValue);
137
+ element == null ? void 0 : element.addEventListener('change', function (event) {
138
+ setSelectedValue(event == null ? void 0 : event.target.value);
139
+ });
140
+ }, []);
141
+ React.useEffect(function () {
142
+ if (selectedValue) {
143
+ onChange(selectedValue);
144
+ }
145
+ }, [selectedValue]);
146
+ return React__default.createElement("select", {
147
+ id: "rpgui-dropdown-" + dropdownId,
148
+ style: {
149
+ width: width
150
+ },
151
+ className: "rpgui-dropdown"
152
+ }, options.map(function (option) {
153
+ return React__default.createElement("option", {
154
+ key: option.id,
155
+ value: option.value
156
+ }, option.option);
157
+ }));
158
+ };
159
+
160
+ var Input = function Input(_ref) {
161
+ var props = _extends({}, _ref);
162
+
163
+ return React__default.createElement("input", Object.assign({}, props));
53
164
  };
54
165
 
55
166
  var ListMenu = function ListMenu(_ref) {
56
167
  var options = _ref.options,
57
168
  onSelected = _ref.onSelected,
58
169
  x = _ref.x,
59
- y = _ref.y;
60
- return React__default.createElement(RPGUIRoot, null, React__default.createElement(Container, {
170
+ y = _ref.y,
171
+ _ref$fontSize = _ref.fontSize,
172
+ fontSize = _ref$fontSize === void 0 ? 0.8 : _ref$fontSize;
173
+ return React__default.createElement(Container, {
61
174
  x: x,
62
- y: y
175
+ y: y,
176
+ fontSize: fontSize
63
177
  }, React__default.createElement("ul", {
64
178
  className: "rpgui-list-imp",
65
179
  style: {
@@ -72,15 +186,17 @@ var ListMenu = function ListMenu(_ref) {
72
186
  onSelected(params.id);
73
187
  }
74
188
  }, params.text);
75
- }))));
189
+ })));
76
190
  };
77
191
  var Container = /*#__PURE__*/styled.div.withConfig({
78
192
  displayName: "ListMenu__Container",
79
193
  componentId: "sc-i9097t-0"
80
- })(["display:flex;flex-direction:column;width:100%;justify-content:start;align-items:flex-start;position:absolute;top:", "px;left:", "px;"], function (props) {
194
+ })(["display:flex;flex-direction:column;width:100%;justify-content:start;align-items:flex-start;position:absolute;top:", "px;left:", "px;li{font-size:", "em;}"], function (props) {
81
195
  return props.y || 0;
82
196
  }, function (props) {
83
197
  return props.x || 0;
198
+ }, function (props) {
199
+ return props.fontSize;
84
200
  });
85
201
  var ListElement = /*#__PURE__*/styled.li.withConfig({
86
202
  displayName: "ListMenu__ListElement",
@@ -433,7 +549,7 @@ var NPCDialog = function NPCDialog(_ref) {
433
549
  showGoNextIndicator = _useState[0],
434
550
  setShowGoNextIndicator = _useState[1];
435
551
 
436
- return React__default.createElement(RPGUIRoot, null, React__default.createElement(RPGUIContainer, {
552
+ return React__default.createElement(RPGUIContainer, {
437
553
  type: exports.RPGUIContainerTypes.FramedGold,
438
554
  width: isQuestionDialog ? '600px' : '50%',
439
555
  height: '180px'
@@ -469,7 +585,7 @@ var NPCDialog = function NPCDialog(_ref) {
469
585
  }))), showGoNextIndicator && React__default.createElement(PressSpaceIndicator, {
470
586
  right: type === exports.NPCDialogType.TextOnly ? '1rem' : '10.5rem',
471
587
  src: img$1
472
- }))));
588
+ })));
473
589
  };
474
590
  var Container$4 = /*#__PURE__*/styled.div.withConfig({
475
591
  displayName: "NPCDialog__Container",
@@ -498,6 +614,41 @@ var PressSpaceIndicator = /*#__PURE__*/styled.img.withConfig({
498
614
  return right;
499
615
  });
500
616
 
617
+ var InputRadio = function InputRadio(_ref) {
618
+ var name = _ref.name,
619
+ items = _ref.items,
620
+ onChange = _ref.onChange;
621
+
622
+ var _useState = React.useState(),
623
+ selectedValue = _useState[0],
624
+ setSelectedValue = _useState[1];
625
+
626
+ var handleClick = function handleClick() {
627
+ var element = document.querySelector("input[name=" + name + "]:checked");
628
+ var elementValue = element.value;
629
+ setSelectedValue(elementValue);
630
+ };
631
+
632
+ React.useEffect(function () {
633
+ if (selectedValue) {
634
+ onChange(selectedValue);
635
+ }
636
+ }, [selectedValue]);
637
+ return React__default.createElement("div", {
638
+ id: "elemento-radio"
639
+ }, items.map(function (element) {
640
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("input", {
641
+ key: element.value,
642
+ className: "rpgui-radio",
643
+ value: element.value,
644
+ name: name,
645
+ type: "radio"
646
+ }), React__default.createElement("label", {
647
+ onClick: handleClick
648
+ }, element.label), React__default.createElement("br", null));
649
+ }));
650
+ };
651
+
501
652
  (function (RangeSliderType) {
502
653
  RangeSliderType["Slider"] = "rpgui-slider";
503
654
  RangeSliderType["GoldSlider"] = "rpgui-slider golden";
@@ -531,12 +682,12 @@ var RangeSlider = function RangeSlider(_ref) {
531
682
  onChange(Number(value));
532
683
  };
533
684
 
534
- return React__default.createElement(RPGUIRoot, null, React__default.createElement("div", {
685
+ return React__default.createElement("div", {
535
686
  onMouseUp: onHandleMouseUp,
536
687
  onMouseDown: function onMouseDown() {
537
688
  return setWasMouseDownFirst(true);
538
689
  }
539
- }, React__default.createElement(Input, {
690
+ }, React__default.createElement(Input$1, {
540
691
  className: type === exports.RangeSliderType.Slider ? exports.RangeSliderType.Slider : exports.RangeSliderType.GoldSlider,
541
692
  type: "range",
542
693
  style: {
@@ -545,21 +696,49 @@ var RangeSlider = function RangeSlider(_ref) {
545
696
  min: valueMin,
546
697
  max: valueMax,
547
698
  id: "rpgui-slider-" + sliderId
548
- })));
699
+ }));
549
700
  };
550
- var Input = /*#__PURE__*/styled.input.withConfig({
701
+ var Input$1 = /*#__PURE__*/styled.input.withConfig({
551
702
  displayName: "RangeSlider__Input",
552
703
  componentId: "sc-v8mte9-0"
553
704
  })(["opacity:0;"]);
554
705
 
706
+ var TextArea = function TextArea(_ref) {
707
+ var props = _extends({}, _ref);
708
+
709
+ return React__default.createElement("textarea", Object.assign({}, props));
710
+ };
711
+
712
+ /* eslint-disable react/require-default-props */
713
+ var Truncate = function Truncate(_ref) {
714
+ var _ref$maxLines = _ref.maxLines,
715
+ maxLines = _ref$maxLines === void 0 ? 1 : _ref$maxLines,
716
+ children = _ref.children;
717
+ return React__default.createElement(Container$5, {
718
+ maxLines: maxLines
719
+ }, children);
720
+ };
721
+ var Container$5 = /*#__PURE__*/styled.div.withConfig({
722
+ displayName: "Truncate__Container",
723
+ componentId: "sc-6x00qb-0"
724
+ })(["display:-webkit-box;max-width:100%;max-height:100%;-webkit-line-clamp:", ";-webkit-box-orient:vertical;overflow:hidden;"], function (props) {
725
+ return props.maxLines;
726
+ });
727
+
555
728
  exports.Button = Button;
729
+ exports.CheckButton = CheckButton;
730
+ exports.Dropdown = Dropdown;
556
731
  exports.DynamicText = DynamicText;
732
+ exports.Input = Input;
733
+ exports.InputRadio = InputRadio;
557
734
  exports.ListMenu = ListMenu;
558
735
  exports.NPCDialog = NPCDialog;
559
736
  exports.QuestionDialog = QuestionDialog;
560
737
  exports.RPGUIContainer = RPGUIContainer;
561
738
  exports.RPGUIRoot = RPGUIRoot;
562
739
  exports.RangeSlider = RangeSlider;
740
+ exports.TextArea = TextArea;
741
+ exports.Truncate = Truncate;
563
742
  exports._RPGUI = _RPGUI;
564
743
  exports.useEventListener = useEventListener;
565
744
  //# sourceMappingURL=long-bow.cjs.development.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"long-bow.cjs.development.js","sources":["../src/components/RPGUIRoot.tsx","../src/components/Button.tsx","../src/components/ListMenu.tsx","../src/components/RPGUIContainer.tsx","../src/components/NPCDialog/img/npcDialog/npcThumbnails/alice.png","../src/components/NPCDialog/img/space.gif","../src/libs/StringHelpers.ts","../src/components/typography/DynamicText.tsx","../src/components/NPCDialog/NPCDialogText.tsx","../src/hooks/useEventListener.ts","../src/components/NPCDialog/QuestionDialog/QuestionDialog.tsx","../src/components/NPCDialog/NPCDialog.tsx","../src/components/RangeSlider.tsx"],"sourcesContent":["import React from 'react';\nimport 'rpgui/rpgui.min.css';\nimport 'rpgui/rpgui.min.js';\n\ninterface IProps {\n children: React.ReactNode;\n}\n\n//@ts-ignore\nexport const _RPGUI = RPGUI;\n\nexport const RPGUIRoot: React.FC<IProps> = ({ children }) => {\n return <div className=\"rpgui-content\">{children}</div>;\n};\n","import React from 'react';\nimport { RPGUIRoot } from './RPGUIRoot';\n\nexport enum IButtonTypes {\n RPGUIButton = 'rpgui-button',\n RPGUIGoldButton = 'rpgui-button golden',\n}\n\nexport interface IButtonsProps {\n children: React.ReactNode;\n type: IButtonTypes;\n}\n\nexport const Button: React.FC<IButtonsProps> = ({\n children,\n type,\n ...props\n}) => {\n return (\n <RPGUIRoot>\n <button className={type} type=\"button\" {...props}>\n <p>{children}</p>\n </button>\n </RPGUIRoot>\n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { RPGUIRoot } from './RPGUIRoot';\n\ninterface IListMenuOption {\n id: string;\n text: string;\n}\n\nexport interface IListMenuProps {\n x: number;\n y: number;\n options: IListMenuOption[];\n onSelected: (selectedOptionId: string) => void;\n}\n\nexport const ListMenu: React.FC<IListMenuProps> = ({\n options,\n onSelected,\n x,\n y,\n}) => {\n return (\n <RPGUIRoot>\n <Container x={x} y={y}>\n <ul className=\"rpgui-list-imp\" style={{ overflow: 'hidden' }}>\n {options.map((params) => (\n <ListElement\n key={params.text}\n onClick={() => {\n onSelected(params.id);\n }}\n >\n {params.text}\n </ListElement>\n ))}\n </ul>\n </Container>\n </RPGUIRoot>\n );\n};\n\ninterface IContainerProps {\n x?: number;\n y?: number;\n}\n\nconst Container = styled.div<IContainerProps>`\n display: flex;\n flex-direction: column;\n width: 100%;\n justify-content: start;\n align-items: flex-start;\n position: absolute;\n top: ${(props) => props.y || 0}px;\n left: ${(props) => props.x || 0}px;\n`;\n\nconst ListElement = styled.li`\n margin-right: 0.5rem;\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport enum RPGUIContainerTypes {\n Framed = 'framed',\n FramedGold = 'framed-golden',\n FramedGold2 = 'framed-golden-2',\n FramedGrey = 'framed-grey',\n}\nexport interface IRPGUIContainerProps {\n type: RPGUIContainerTypes;\n children: React.ReactNode;\n width?: string;\n height?: string;\n}\n\nexport const RPGUIContainer: React.FC<IRPGUIContainerProps> = ({\n children,\n type,\n width = '50%',\n height,\n}) => {\n return (\n <Container\n width={width}\n height={height || 'auto'}\n className={`rpgui-container ${type}`}\n >\n {children}\n </Container>\n );\n};\n\ninterface IContainerProps {\n width: string;\n height: string;\n}\n\nconst Container = styled.div<IContainerProps>`\n height: ${(props) => props.height};\n width: ${({ width }) => width};\n display: flex;\n flex-wrap: wrap;\n image-rendering: pixelated;\n`;\n","const img = require('./alice.png'); export default img;","const img = require('./space.gif'); export default img;","export const chunkString = (str: string, length: number) => {\n return str.match(new RegExp('.{1,' + length + '}', 'g'));\n};\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\ninterface IProps {\n text: string;\n onFinish?: () => void;\n onStart?: () => void;\n}\n\nexport const DynamicText: React.FC<IProps> = ({ text, onFinish, onStart }) => {\n const [textState, setTextState] = useState<string>('');\n\n useEffect(() => {\n let i = 0;\n const interval = setInterval(() => {\n // on every interval, show one more character\n\n if (i === 0) {\n if (onStart) {\n onStart();\n }\n }\n\n if (i < text.length) {\n setTextState(text.substring(0, i + 1));\n i++;\n } else {\n clearInterval(interval);\n if (onFinish) {\n onFinish();\n }\n }\n }, 50);\n\n return () => {\n clearInterval(interval);\n };\n }, [text]);\n\n return <TextContainer>{textState}</TextContainer>;\n};\n\nconst TextContainer = styled.p`\n font-size: 0.7rem !important;\n color: white;\n text-shadow: 1px 1px 0px #000000;\n letter-spacing: 1.2px;\n word-break: normal;\n`;\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { chunkString } from '../../libs/StringHelpers';\nimport { DynamicText } from '../typography/DynamicText';\n\ninterface IProps {\n text: string;\n onClose: () => void;\n onEndStep: () => void;\n onStartStep: () => void;\n}\n\nexport const NPCDialogText: React.FC<IProps> = ({\n text,\n onClose,\n onEndStep,\n onStartStep,\n}) => {\n const textChunks = chunkString(text, 85);\n\n const [chunkIndex, setChunkIndex] = useState<number>(0);\n\n const onHandleSpacePress = (event: KeyboardEvent) => {\n if (event.code === 'Space') {\n const hasNextChunk = textChunks?.[chunkIndex + 1] || false;\n\n if (hasNextChunk) {\n setChunkIndex((prev) => prev + 1);\n } else {\n // if there's no more text chunks, close the dialog\n onClose();\n }\n }\n };\n\n useEffect(() => {\n document.addEventListener('keydown', onHandleSpacePress);\n\n return () => document.removeEventListener('keydown', onHandleSpacePress);\n }, [chunkIndex]);\n\n return (\n <Container>\n <DynamicText\n text={textChunks?.[chunkIndex] || ''}\n onFinish={onEndStep}\n onStart={onStartStep}\n />\n </Container>\n );\n};\n\nconst Container = styled.div``;\n","import React from 'react';\n\n//@ts-ignore\nexport const useEventListener = (type, handler, el = window) => {\n const savedHandler = React.useRef();\n\n React.useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n React.useEffect(() => {\n //@ts-ignore\n const listener = (e) => savedHandler.current(e);\n\n el.addEventListener(type, listener);\n\n return () => {\n el.removeEventListener(type, listener);\n };\n }, [type, el]);\n};\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { useEventListener } from '../../../hooks/useEventListener';\nimport { DynamicText } from '../../typography/DynamicText';\n\nexport interface IQuestionDialogAnswer {\n id: number;\n text: string;\n nextQuestionId?: number;\n}\n\nexport interface IQuestionDialog {\n id: number;\n text: string;\n answerIds?: number[];\n}\n\nexport interface IProps {\n questions: IQuestionDialog[];\n answers: IQuestionDialogAnswer[];\n onClose: () => void;\n}\n\nexport const QuestionDialog: React.FC<IProps> = ({\n questions,\n answers,\n onClose,\n}) => {\n const [currentQuestion, setCurrentQuestion] = useState(questions[0]);\n\n const [canShowAnswers, setCanShowAnswers] = useState<boolean>(false);\n\n const onGetFirstAnswer = () => {\n if (!currentQuestion.answerIds || currentQuestion.answerIds.length === 0) {\n return null;\n }\n\n const firstAnswerId = currentQuestion.answerIds![0];\n\n return answers.find((answer) => answer.id === firstAnswerId);\n };\n\n const [currentAnswer, setCurrentAnswer] =\n useState<IQuestionDialogAnswer | null>(onGetFirstAnswer()!);\n\n useEffect(() => {\n setCurrentAnswer(onGetFirstAnswer()!);\n }, [currentQuestion]);\n\n const onGetAnswers = (answerIds: number[]) => {\n return answerIds.map((answerId: number) =>\n answers.find((answer) => answer.id === answerId)\n );\n };\n\n const onKeyPress = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'ArrowDown':\n // select next answer, if any.\n // if no next answer, select first answer\n // const nextAnswer = onGetAnswers(currentQuestion.answerIds!).find(\n // (answer) => answer?.id === currentAnswer!.id + 1\n // );\n\n const nextAnswerIndex = onGetAnswers(\n currentQuestion.answerIds!\n ).findIndex((answer) => answer?.id === currentAnswer!.id + 1);\n\n const nextAnswerID = currentQuestion.answerIds![nextAnswerIndex];\n\n // console.log(nextAnswerIndex);\n\n const nextAnswer = onGetAnswers(currentQuestion.answerIds!).find(\n (answer) => answer?.id === nextAnswerID\n );\n\n setCurrentAnswer(nextAnswer || onGetFirstAnswer()!);\n\n break;\n case 'ArrowUp':\n // select previous answer, if any.\n // if no previous answer, select last answer\n\n const previousAnswerIndex = onGetAnswers(\n currentQuestion.answerIds!\n ).findIndex((answer) => answer?.id === currentAnswer!.id - 1);\n\n const previousAnswerID =\n currentQuestion.answerIds &&\n currentQuestion.answerIds[previousAnswerIndex];\n\n const previousAnswer = onGetAnswers(currentQuestion.answerIds!).find(\n (answer) => answer?.id === previousAnswerID\n );\n\n if (previousAnswer) {\n setCurrentAnswer(previousAnswer);\n } else {\n setCurrentAnswer(onGetAnswers(currentQuestion.answerIds!).pop()!);\n }\n\n break;\n case 'Enter':\n setCanShowAnswers(false);\n\n if (!currentAnswer?.nextQuestionId) {\n onClose();\n return;\n } else {\n setCurrentQuestion(\n questions.find(\n (question) => question.id === currentAnswer!.nextQuestionId\n )!\n );\n }\n\n break;\n }\n };\n useEventListener('keydown', onKeyPress);\n\n const onAnswerClick = (answer: IQuestionDialogAnswer) => {\n setCanShowAnswers(false);\n if (answer.nextQuestionId) {\n // if there is a next question, go to it\n setCurrentQuestion(\n questions.find((question) => question.id === answer.nextQuestionId)!\n );\n } else {\n // else, finish dialog!\n onClose();\n }\n };\n\n const onRenderCurrentAnswers = () => {\n const answerIds = currentQuestion.answerIds;\n if (!answerIds) {\n return null;\n }\n\n const answers = onGetAnswers(answerIds);\n\n if (!answers) {\n return null;\n }\n\n return answers.map((answer) => {\n const isSelected = currentAnswer?.id === answer?.id;\n const selectedColor = isSelected ? 'yellow' : 'white';\n\n if (answer) {\n return (\n <AnswerRow key={`answer_${answer.id}`}>\n <AnswerSelectedIcon color={selectedColor}>\n {isSelected ? 'X' : null}\n </AnswerSelectedIcon>\n\n <Answer\n key={answer.id}\n onClick={() => onAnswerClick(answer)}\n color={selectedColor}\n >\n {answer.text}\n </Answer>\n </AnswerRow>\n );\n }\n\n return null;\n });\n };\n\n return (\n <Container>\n <QuestionContainer>\n <DynamicText\n text={currentQuestion.text}\n onStart={() => setCanShowAnswers(false)}\n onFinish={() => setCanShowAnswers(true)}\n />\n </QuestionContainer>\n\n {canShowAnswers && (\n <AnswersContainer>{onRenderCurrentAnswers()}</AnswersContainer>\n )}\n </Container>\n );\n};\n\nconst Container = styled.div`\n display: flex;\n\n word-break: break-all;\n\n box-sizing: border-box;\n justify-content: flex-start;\n align-items: flex-start;\n flex-wrap: wrap;\n`;\n\nconst QuestionContainer = styled.div`\n flex: 100%;\n width: 100%;\n`;\n\nconst AnswersContainer = styled.div`\n flex: 100%;\n`;\n\ninterface IAnswerProps {\n color: string;\n}\n\nconst Answer = styled.p<IAnswerProps>`\n flex: auto;\n color: ${(props) => props.color} !important;\n font-size: 0.65rem !important;\n background: inherit;\n border: none;\n`;\n\nconst AnswerSelectedIcon = styled.span<IAnswerProps>`\n flex: 5% 0 0;\n color: ${(props) => props.color} !important;\n`;\n\nconst AnswerRow = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n margin-bottom: 0.5rem;\n height: 22px;\n\n p {\n line-height: unset;\n margin-top: 0;\n margin-bottom: 0rem;\n }\n`;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { RPGUIContainer, RPGUIContainerTypes } from '../RPGUIContainer';\nimport { RPGUIRoot } from '../RPGUIRoot';\nimport aliceDefaultThumbnail from './img/npcDialog/npcThumbnails/alice.png';\nimport pressSpaceGif from './img/space.gif';\nimport { NPCDialogText } from './NPCDialogText';\nimport {\n IQuestionDialog,\n IQuestionDialogAnswer,\n QuestionDialog,\n} from './QuestionDialog/QuestionDialog';\n\nexport enum NPCDialogType {\n TextOnly = 'TextOnly',\n TextAndThumbnail = 'TextAndThumbnail',\n}\n\nexport interface INPCDialogProps {\n text?: string;\n type: NPCDialogType;\n imagePath?: string;\n onClose?: () => void;\n isQuestionDialog?: boolean;\n answers?: IQuestionDialogAnswer[];\n questions?: IQuestionDialog[];\n}\n\nexport const NPCDialog: React.FC<INPCDialogProps> = ({\n text,\n type,\n onClose,\n imagePath,\n isQuestionDialog = false,\n questions,\n answers,\n}) => {\n const [showGoNextIndicator, setShowGoNextIndicator] =\n useState<boolean>(false);\n\n return (\n <RPGUIRoot>\n <RPGUIContainer\n type={RPGUIContainerTypes.FramedGold}\n width={isQuestionDialog ? '600px' : '50%'}\n height={'180px'}\n >\n {isQuestionDialog && questions && answers ? (\n <>\n <TextContainer\n flex={type === NPCDialogType.TextAndThumbnail ? '70%' : '100%'}\n >\n <QuestionDialog\n questions={questions}\n answers={answers}\n onClose={() => {\n if (onClose) {\n onClose();\n }\n }}\n />\n </TextContainer>\n {type === NPCDialogType.TextAndThumbnail && (\n <ThumbnailContainer>\n <NPCThumbnail src={imagePath || aliceDefaultThumbnail} />\n </ThumbnailContainer>\n )}\n </>\n ) : (\n <>\n <Container>\n <TextContainer\n flex={type === NPCDialogType.TextAndThumbnail ? '70%' : '100%'}\n >\n <NPCDialogText\n onStartStep={() => setShowGoNextIndicator(false)}\n onEndStep={() => setShowGoNextIndicator(true)}\n text={text || 'No text provided.'}\n onClose={() => {\n if (onClose) {\n onClose();\n }\n }}\n />\n </TextContainer>\n {type === NPCDialogType.TextAndThumbnail && (\n <ThumbnailContainer>\n <NPCThumbnail src={imagePath || aliceDefaultThumbnail} />\n </ThumbnailContainer>\n )}\n </Container>\n {showGoNextIndicator && (\n <PressSpaceIndicator\n right={type === NPCDialogType.TextOnly ? '1rem' : '10.5rem'}\n src={pressSpaceGif}\n />\n )}\n </>\n )}\n </RPGUIContainer>\n </RPGUIRoot>\n );\n};\n\nconst Container = styled.div`\n display: flex;\n width: 100%;\n height: 100%;\n\n box-sizing: border-box;\n justify-content: center;\n align-items: flex-start;\n position: relative;\n`;\n\ninterface ITextContainerProps {\n flex: string;\n}\n\nconst TextContainer = styled.div<ITextContainerProps>`\n flex: ${({ flex }) => flex} 0 0;\n width: 355px;\n`;\n\nconst ThumbnailContainer = styled.div`\n flex: 30% 0 0;\n display: flex;\n justify-content: flex-end;\n`;\n\nconst NPCThumbnail = styled.img`\n image-rendering: pixelated;\n height: 128px;\n width: 128px;\n`;\n\ninterface IPressSpaceIndicatorProps {\n right: string;\n}\n\nconst PressSpaceIndicator = styled.img<IPressSpaceIndicatorProps>`\n position: absolute;\n right: ${({ right }) => right};\n bottom: 1rem;\n height: 20.7px;\n image-rendering: -webkit-optimize-contrast;\n`;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { v4 as uuidv4 } from 'uuid';\nimport { useEventListener } from '../hooks/useEventListener';\nimport { RPGUIRoot, _RPGUI } from './RPGUIRoot';\n\nexport enum RangeSliderType {\n Slider = 'rpgui-slider',\n GoldSlider = 'rpgui-slider golden',\n}\n\nexport interface IRangeSliderProps {\n type: RangeSliderType;\n valueMin: number;\n valueMax: number;\n width: string;\n onChange: (value: number) => void;\n}\n\nexport const RangeSlider: React.FC<IRangeSliderProps> = ({\n type,\n valueMin,\n valueMax,\n width,\n onChange,\n}) => {\n const sliderId = uuidv4();\n\n const [wasMouseDownFirst, setWasMouseDownFirst] = useState<boolean>(false);\n\n useEventListener('mouseup', () => {\n if (wasMouseDownFirst) {\n onHandleMouseUp();\n }\n setWasMouseDownFirst(false);\n });\n\n const onHandleMouseUp = () => {\n const rpguiSlider = document.getElementById(`rpgui-slider-${sliderId}`);\n const value = _RPGUI.get_value(rpguiSlider);\n\n onChange(Number(value));\n };\n\n return (\n <RPGUIRoot>\n <div\n onMouseUp={onHandleMouseUp}\n onMouseDown={() => setWasMouseDownFirst(true)}\n >\n <Input\n className={\n type === RangeSliderType.Slider\n ? RangeSliderType.Slider\n : RangeSliderType.GoldSlider\n }\n type=\"range\"\n style={{ width: width }}\n min={valueMin}\n max={valueMax}\n id={`rpgui-slider-${sliderId}`}\n />\n </div>\n </RPGUIRoot>\n );\n};\n\nconst Input = styled.input`\n opacity: 0;\n`;\n"],"names":["_RPGUI","RPGUI","RPGUIRoot","children","React","className","IButtonTypes","Button","type","props","ListMenu","options","onSelected","x","y","Container","style","overflow","map","params","ListElement","key","text","onClick","id","styled","div","li","RPGUIContainerTypes","RPGUIContainer","width","height","img","chunkString","str","length","match","RegExp","DynamicText","onFinish","onStart","useState","textState","setTextState","useEffect","i","interval","setInterval","substring","clearInterval","TextContainer","p","NPCDialogText","onClose","onEndStep","onStartStep","textChunks","chunkIndex","setChunkIndex","onHandleSpacePress","event","code","hasNextChunk","prev","document","addEventListener","removeEventListener","useEventListener","handler","el","window","savedHandler","useRef","current","listener","e","QuestionDialog","questions","answers","currentQuestion","setCurrentQuestion","canShowAnswers","setCanShowAnswers","onGetFirstAnswer","answerIds","firstAnswerId","find","answer","currentAnswer","setCurrentAnswer","onGetAnswers","answerId","onKeyPress","nextAnswerIndex","findIndex","nextAnswerID","nextAnswer","previousAnswerIndex","previousAnswerID","previousAnswer","pop","nextQuestionId","question","onAnswerClick","onRenderCurrentAnswers","isSelected","selectedColor","AnswerRow","AnswerSelectedIcon","color","Answer","QuestionContainer","AnswersContainer","span","NPCDialogType","NPCDialog","imagePath","isQuestionDialog","showGoNextIndicator","setShowGoNextIndicator","FramedGold","flex","TextAndThumbnail","ThumbnailContainer","NPCThumbnail","src","aliceDefaultThumbnail","PressSpaceIndicator","right","TextOnly","pressSpaceGif","RangeSliderType","RangeSlider","valueMin","valueMax","onChange","sliderId","uuidv4","wasMouseDownFirst","setWasMouseDownFirst","onHandleMouseUp","rpguiSlider","getElementById","value","get_value","Number","onMouseUp","onMouseDown","Input","Slider","GoldSlider","min","max","input"],"mappings":"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"}
1
+ {"version":3,"file":"long-bow.cjs.development.js","sources":["../src/components/Button.tsx","../src/components/CheckButton.tsx","../src/components/RPGUIRoot.tsx","../src/components/Dropdown.tsx","../src/components/Input.tsx","../src/components/ListMenu.tsx","../src/components/RPGUIContainer.tsx","../src/components/NPCDialog/img/npcDialog/npcThumbnails/alice.png","../src/components/NPCDialog/img/space.gif","../src/libs/StringHelpers.ts","../src/components/typography/DynamicText.tsx","../src/components/NPCDialog/NPCDialogText.tsx","../src/hooks/useEventListener.ts","../src/components/NPCDialog/QuestionDialog/QuestionDialog.tsx","../src/components/NPCDialog/NPCDialog.tsx","../src/components/RadioButton.tsx","../src/components/RangeSlider.tsx","../src/components/TextArea.tsx","../src/components/Truncate.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\n\nexport enum ButtonTypes {\n RPGUIButton = 'rpgui-button',\n RPGUIGoldButton = 'rpgui-button golden',\n}\n\nexport interface IButtonProps {\n children: React.ReactNode;\n buttonType: ButtonTypes;\n}\n\nexport const Button: React.FC<\n IButtonProps &\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n> = ({ children, buttonType, ...props }) => {\n return (\n <ButtonContainer className={`${buttonType}`} {...props}>\n <p>{children}</p>\n </ButtonContainer>\n );\n};\n\nconst ButtonContainer = styled.button<any>`\n height: 45px;\n font-size: 11.5px;\n`;\n","import React, { useEffect, useState } from 'react';\n\nexport interface ICheckItems {\n label: string;\n value: string;\n}\n\nexport interface ICheckProps {\n items: ICheckItems[];\n onChange: (selectedValues: IChecklistSelectedValues) => void;\n}\n\ninterface IChecklistSelectedValues {\n [label: string]: boolean;\n}\n\nexport const CheckButton: React.FC<ICheckProps> = ({ items, onChange }) => {\n const generateSelectedValuesList = () => {\n const selectedValues: IChecklistSelectedValues = {};\n\n items.forEach((item) => {\n selectedValues[item.label] = false;\n });\n\n return selectedValues;\n };\n\n const [selectedValues, setSelectedValues] =\n useState<IChecklistSelectedValues>(generateSelectedValuesList());\n\n const handleClick = (label: string) => {\n setSelectedValues({\n ...selectedValues,\n [label]: !selectedValues[label],\n });\n };\n\n useEffect(() => {\n if (selectedValues) {\n onChange(selectedValues);\n }\n }, [selectedValues]);\n\n return (\n <div id=\"elemento-checkbox\">\n {items?.map((element, index) => {\n return (\n <div key={`${element.label}_${index}`}>\n <input\n className=\"rpgui-checkbox\"\n type=\"checkbox\"\n checked={selectedValues[element.label]}\n onChange={() => {}}\n />\n <label onClick={() => handleClick(element.label)}>\n {element.label}\n </label>\n <br />\n </div>\n );\n })}\n </div>\n );\n};\n","import React from 'react';\nimport 'rpgui/rpgui.min.css';\nimport 'rpgui/rpgui.min.js';\n\ninterface IProps {\n children: React.ReactNode;\n}\n\n//@ts-ignore\nexport const _RPGUI = RPGUI;\n\nexport const RPGUIRoot: React.FC<IProps> = ({ children }) => {\n return <div className=\"rpgui-content\">{children}</div>;\n};\n","import React, { useEffect, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport { _RPGUI } from './RPGUIRoot';\n\nexport interface IOptionsProps {\n id: number;\n value: string;\n option: string;\n}\n\nexport interface IDropdownProps {\n options: IOptionsProps[];\n width?: string;\n onChange: (value: string) => void;\n}\n\nexport const Dropdown: React.FC<IDropdownProps> = ({\n options,\n width,\n onChange,\n}) => {\n const dropdownId = uuidv4();\n\n const [selectedValue, setSelectedValue] = useState<string>('');\n\n useEffect(() => {\n const element = document.getElementById(`rpgui-dropdown-${dropdownId}`);\n const dropdownValue = _RPGUI.get_value(element);\n setSelectedValue(dropdownValue);\n\n element?.addEventListener('change', (event: any) => {\n setSelectedValue(event?.target.value);\n });\n }, []);\n\n useEffect(() => {\n if (selectedValue) {\n onChange(selectedValue);\n }\n }, [selectedValue]);\n\n return (\n <select\n id={`rpgui-dropdown-${dropdownId}`}\n style={{ width: width }}\n className=\"rpgui-dropdown\"\n >\n {options.map((option) => {\n return (\n <option key={option.id} value={option.value}>\n {option.option}\n </option>\n );\n })}\n </select>\n );\n};\n","import React from 'react';\n\nexport interface IInputProps\n extends React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n > {}\n\nexport const Input: React.FC<IInputProps> = ({ ...props }) => {\n return <input {...props} />;\n};\n","import React from 'react';\nimport styled from 'styled-components';\n\ninterface IListMenuOption {\n id: string;\n text: string;\n}\n\nexport interface IListMenuProps {\n x: number;\n y: number;\n options: IListMenuOption[];\n onSelected: (selectedOptionId: string) => void;\n fontSize?: number;\n}\n\nexport const ListMenu: React.FC<IListMenuProps> = ({\n options,\n onSelected,\n x,\n y,\n fontSize = 0.8,\n}) => {\n return (\n <Container x={x} y={y} fontSize={fontSize}>\n <ul className=\"rpgui-list-imp\" style={{ overflow: 'hidden' }}>\n {options.map((params) => (\n <ListElement\n key={params.text}\n onClick={() => {\n onSelected(params.id);\n }}\n >\n {params.text}\n </ListElement>\n ))}\n </ul>\n </Container>\n );\n};\n\ninterface IContainerProps {\n x?: number;\n y?: number;\n fontSize?: number;\n}\n\nconst Container = styled.div<IContainerProps>`\n display: flex;\n flex-direction: column;\n width: 100%;\n justify-content: start;\n align-items: flex-start;\n position: absolute;\n top: ${(props) => props.y || 0}px;\n left: ${(props) => props.x || 0}px;\n\n li {\n font-size: ${(props) => props.fontSize}em;\n }\n`;\n\nconst ListElement = styled.li`\n margin-right: 0.5rem;\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport enum RPGUIContainerTypes {\n Framed = 'framed',\n FramedGold = 'framed-golden',\n FramedGold2 = 'framed-golden-2',\n FramedGrey = 'framed-grey',\n}\nexport interface IRPGUIContainerProps {\n type: RPGUIContainerTypes;\n children: React.ReactNode;\n width?: string;\n height?: string;\n}\n\nexport const RPGUIContainer: React.FC<IRPGUIContainerProps> = ({\n children,\n type,\n width = '50%',\n height,\n}) => {\n return (\n <Container\n width={width}\n height={height || 'auto'}\n className={`rpgui-container ${type}`}\n >\n {children}\n </Container>\n );\n};\n\ninterface IContainerProps {\n width: string;\n height: string;\n}\n\nconst Container = styled.div<IContainerProps>`\n height: ${(props) => props.height};\n width: ${({ width }) => width};\n display: flex;\n flex-wrap: wrap;\n image-rendering: pixelated;\n`;\n","const img = require('./alice.png'); export default img;","const img = require('./space.gif'); export default img;","export const chunkString = (str: string, length: number) => {\n return str.match(new RegExp('.{1,' + length + '}', 'g'));\n};\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\ninterface IProps {\n text: string;\n onFinish?: () => void;\n onStart?: () => void;\n}\n\nexport const DynamicText: React.FC<IProps> = ({ text, onFinish, onStart }) => {\n const [textState, setTextState] = useState<string>('');\n\n useEffect(() => {\n let i = 0;\n const interval = setInterval(() => {\n // on every interval, show one more character\n\n if (i === 0) {\n if (onStart) {\n onStart();\n }\n }\n\n if (i < text.length) {\n setTextState(text.substring(0, i + 1));\n i++;\n } else {\n clearInterval(interval);\n if (onFinish) {\n onFinish();\n }\n }\n }, 50);\n\n return () => {\n clearInterval(interval);\n };\n }, [text]);\n\n return <TextContainer>{textState}</TextContainer>;\n};\n\nconst TextContainer = styled.p`\n font-size: 0.7rem !important;\n color: white;\n text-shadow: 1px 1px 0px #000000;\n letter-spacing: 1.2px;\n word-break: normal;\n`;\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { chunkString } from '../../libs/StringHelpers';\nimport { DynamicText } from '../typography/DynamicText';\n\ninterface IProps {\n text: string;\n onClose: () => void;\n onEndStep: () => void;\n onStartStep: () => void;\n}\n\nexport const NPCDialogText: React.FC<IProps> = ({\n text,\n onClose,\n onEndStep,\n onStartStep,\n}) => {\n const textChunks = chunkString(text, 85);\n\n const [chunkIndex, setChunkIndex] = useState<number>(0);\n\n const onHandleSpacePress = (event: KeyboardEvent) => {\n if (event.code === 'Space') {\n const hasNextChunk = textChunks?.[chunkIndex + 1] || false;\n\n if (hasNextChunk) {\n setChunkIndex((prev) => prev + 1);\n } else {\n // if there's no more text chunks, close the dialog\n onClose();\n }\n }\n };\n\n useEffect(() => {\n document.addEventListener('keydown', onHandleSpacePress);\n\n return () => document.removeEventListener('keydown', onHandleSpacePress);\n }, [chunkIndex]);\n\n return (\n <Container>\n <DynamicText\n text={textChunks?.[chunkIndex] || ''}\n onFinish={onEndStep}\n onStart={onStartStep}\n />\n </Container>\n );\n};\n\nconst Container = styled.div``;\n","import React from 'react';\n\n//@ts-ignore\nexport const useEventListener = (type, handler, el = window) => {\n const savedHandler = React.useRef();\n\n React.useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n React.useEffect(() => {\n //@ts-ignore\n const listener = (e) => savedHandler.current(e);\n\n el.addEventListener(type, listener);\n\n return () => {\n el.removeEventListener(type, listener);\n };\n }, [type, el]);\n};\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { useEventListener } from '../../../hooks/useEventListener';\nimport { DynamicText } from '../../typography/DynamicText';\n\nexport interface IQuestionDialogAnswer {\n id: number;\n text: string;\n nextQuestionId?: number;\n}\n\nexport interface IQuestionDialog {\n id: number;\n text: string;\n answerIds?: number[];\n}\n\nexport interface IProps {\n questions: IQuestionDialog[];\n answers: IQuestionDialogAnswer[];\n onClose: () => void;\n}\n\nexport const QuestionDialog: React.FC<IProps> = ({\n questions,\n answers,\n onClose,\n}) => {\n const [currentQuestion, setCurrentQuestion] = useState(questions[0]);\n\n const [canShowAnswers, setCanShowAnswers] = useState<boolean>(false);\n\n const onGetFirstAnswer = () => {\n if (!currentQuestion.answerIds || currentQuestion.answerIds.length === 0) {\n return null;\n }\n\n const firstAnswerId = currentQuestion.answerIds![0];\n\n return answers.find((answer) => answer.id === firstAnswerId);\n };\n\n const [currentAnswer, setCurrentAnswer] =\n useState<IQuestionDialogAnswer | null>(onGetFirstAnswer()!);\n\n useEffect(() => {\n setCurrentAnswer(onGetFirstAnswer()!);\n }, [currentQuestion]);\n\n const onGetAnswers = (answerIds: number[]) => {\n return answerIds.map((answerId: number) =>\n answers.find((answer) => answer.id === answerId)\n );\n };\n\n const onKeyPress = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'ArrowDown':\n // select next answer, if any.\n // if no next answer, select first answer\n // const nextAnswer = onGetAnswers(currentQuestion.answerIds!).find(\n // (answer) => answer?.id === currentAnswer!.id + 1\n // );\n\n const nextAnswerIndex = onGetAnswers(\n currentQuestion.answerIds!\n ).findIndex((answer) => answer?.id === currentAnswer!.id + 1);\n\n const nextAnswerID = currentQuestion.answerIds![nextAnswerIndex];\n\n // console.log(nextAnswerIndex);\n\n const nextAnswer = onGetAnswers(currentQuestion.answerIds!).find(\n (answer) => answer?.id === nextAnswerID\n );\n\n setCurrentAnswer(nextAnswer || onGetFirstAnswer()!);\n\n break;\n case 'ArrowUp':\n // select previous answer, if any.\n // if no previous answer, select last answer\n\n const previousAnswerIndex = onGetAnswers(\n currentQuestion.answerIds!\n ).findIndex((answer) => answer?.id === currentAnswer!.id - 1);\n\n const previousAnswerID =\n currentQuestion.answerIds &&\n currentQuestion.answerIds[previousAnswerIndex];\n\n const previousAnswer = onGetAnswers(currentQuestion.answerIds!).find(\n (answer) => answer?.id === previousAnswerID\n );\n\n if (previousAnswer) {\n setCurrentAnswer(previousAnswer);\n } else {\n setCurrentAnswer(onGetAnswers(currentQuestion.answerIds!).pop()!);\n }\n\n break;\n case 'Enter':\n setCanShowAnswers(false);\n\n if (!currentAnswer?.nextQuestionId) {\n onClose();\n return;\n } else {\n setCurrentQuestion(\n questions.find(\n (question) => question.id === currentAnswer!.nextQuestionId\n )!\n );\n }\n\n break;\n }\n };\n useEventListener('keydown', onKeyPress);\n\n const onAnswerClick = (answer: IQuestionDialogAnswer) => {\n setCanShowAnswers(false);\n if (answer.nextQuestionId) {\n // if there is a next question, go to it\n setCurrentQuestion(\n questions.find((question) => question.id === answer.nextQuestionId)!\n );\n } else {\n // else, finish dialog!\n onClose();\n }\n };\n\n const onRenderCurrentAnswers = () => {\n const answerIds = currentQuestion.answerIds;\n if (!answerIds) {\n return null;\n }\n\n const answers = onGetAnswers(answerIds);\n\n if (!answers) {\n return null;\n }\n\n return answers.map((answer) => {\n const isSelected = currentAnswer?.id === answer?.id;\n const selectedColor = isSelected ? 'yellow' : 'white';\n\n if (answer) {\n return (\n <AnswerRow key={`answer_${answer.id}`}>\n <AnswerSelectedIcon color={selectedColor}>\n {isSelected ? 'X' : null}\n </AnswerSelectedIcon>\n\n <Answer\n key={answer.id}\n onClick={() => onAnswerClick(answer)}\n color={selectedColor}\n >\n {answer.text}\n </Answer>\n </AnswerRow>\n );\n }\n\n return null;\n });\n };\n\n return (\n <Container>\n <QuestionContainer>\n <DynamicText\n text={currentQuestion.text}\n onStart={() => setCanShowAnswers(false)}\n onFinish={() => setCanShowAnswers(true)}\n />\n </QuestionContainer>\n\n {canShowAnswers && (\n <AnswersContainer>{onRenderCurrentAnswers()}</AnswersContainer>\n )}\n </Container>\n );\n};\n\nconst Container = styled.div`\n display: flex;\n\n word-break: break-all;\n\n box-sizing: border-box;\n justify-content: flex-start;\n align-items: flex-start;\n flex-wrap: wrap;\n`;\n\nconst QuestionContainer = styled.div`\n flex: 100%;\n width: 100%;\n`;\n\nconst AnswersContainer = styled.div`\n flex: 100%;\n`;\n\ninterface IAnswerProps {\n color: string;\n}\n\nconst Answer = styled.p<IAnswerProps>`\n flex: auto;\n color: ${(props) => props.color} !important;\n font-size: 0.65rem !important;\n background: inherit;\n border: none;\n`;\n\nconst AnswerSelectedIcon = styled.span<IAnswerProps>`\n flex: 5% 0 0;\n color: ${(props) => props.color} !important;\n`;\n\nconst AnswerRow = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n margin-bottom: 0.5rem;\n height: 22px;\n\n p {\n line-height: unset;\n margin-top: 0;\n margin-bottom: 0rem;\n }\n`;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { RPGUIContainer, RPGUIContainerTypes } from '../RPGUIContainer';\nimport aliceDefaultThumbnail from './img/npcDialog/npcThumbnails/alice.png';\nimport pressSpaceGif from './img/space.gif';\nimport { NPCDialogText } from './NPCDialogText';\nimport {\n IQuestionDialog,\n IQuestionDialogAnswer,\n QuestionDialog,\n} from './QuestionDialog/QuestionDialog';\n\nexport enum NPCDialogType {\n TextOnly = 'TextOnly',\n TextAndThumbnail = 'TextAndThumbnail',\n}\n\nexport interface INPCDialogProps {\n text?: string;\n type: NPCDialogType;\n imagePath?: string;\n onClose?: () => void;\n isQuestionDialog?: boolean;\n answers?: IQuestionDialogAnswer[];\n questions?: IQuestionDialog[];\n}\n\nexport const NPCDialog: React.FC<INPCDialogProps> = ({\n text,\n type,\n onClose,\n imagePath,\n isQuestionDialog = false,\n questions,\n answers,\n}) => {\n const [showGoNextIndicator, setShowGoNextIndicator] =\n useState<boolean>(false);\n\n return (\n <RPGUIContainer\n type={RPGUIContainerTypes.FramedGold}\n width={isQuestionDialog ? '600px' : '50%'}\n height={'180px'}\n >\n {isQuestionDialog && questions && answers ? (\n <>\n <TextContainer\n flex={type === NPCDialogType.TextAndThumbnail ? '70%' : '100%'}\n >\n <QuestionDialog\n questions={questions}\n answers={answers}\n onClose={() => {\n if (onClose) {\n onClose();\n }\n }}\n />\n </TextContainer>\n {type === NPCDialogType.TextAndThumbnail && (\n <ThumbnailContainer>\n <NPCThumbnail src={imagePath || aliceDefaultThumbnail} />\n </ThumbnailContainer>\n )}\n </>\n ) : (\n <>\n <Container>\n <TextContainer\n flex={type === NPCDialogType.TextAndThumbnail ? '70%' : '100%'}\n >\n <NPCDialogText\n onStartStep={() => setShowGoNextIndicator(false)}\n onEndStep={() => setShowGoNextIndicator(true)}\n text={text || 'No text provided.'}\n onClose={() => {\n if (onClose) {\n onClose();\n }\n }}\n />\n </TextContainer>\n {type === NPCDialogType.TextAndThumbnail && (\n <ThumbnailContainer>\n <NPCThumbnail src={imagePath || aliceDefaultThumbnail} />\n </ThumbnailContainer>\n )}\n </Container>\n {showGoNextIndicator && (\n <PressSpaceIndicator\n right={type === NPCDialogType.TextOnly ? '1rem' : '10.5rem'}\n src={pressSpaceGif}\n />\n )}\n </>\n )}\n </RPGUIContainer>\n );\n};\n\nconst Container = styled.div`\n display: flex;\n width: 100%;\n height: 100%;\n\n box-sizing: border-box;\n justify-content: center;\n align-items: flex-start;\n position: relative;\n`;\n\ninterface ITextContainerProps {\n flex: string;\n}\n\nconst TextContainer = styled.div<ITextContainerProps>`\n flex: ${({ flex }) => flex} 0 0;\n width: 355px;\n`;\n\nconst ThumbnailContainer = styled.div`\n flex: 30% 0 0;\n display: flex;\n justify-content: flex-end;\n`;\n\nconst NPCThumbnail = styled.img`\n image-rendering: pixelated;\n height: 128px;\n width: 128px;\n`;\n\ninterface IPressSpaceIndicatorProps {\n right: string;\n}\n\nconst PressSpaceIndicator = styled.img<IPressSpaceIndicatorProps>`\n position: absolute;\n right: ${({ right }) => right};\n bottom: 1rem;\n height: 20.7px;\n image-rendering: -webkit-optimize-contrast;\n`;\n","import React, { useEffect, useState } from 'react';\n\nexport interface IRadioItems {\n label: string;\n value: string;\n}\n\nexport interface IRadioProps {\n name: string;\n items: IRadioItems[];\n onChange: (value: string) => void;\n}\n\nexport const InputRadio: React.FC<IRadioProps> = ({\n name,\n items,\n onChange,\n}) => {\n const [selectedValue, setSelectedValue] = useState<string>();\n const handleClick = () => {\n let element = document.querySelector(\n `input[name=${name}]:checked`\n ) as HTMLInputElement;\n const elementValue = element.value;\n setSelectedValue(elementValue);\n };\n\n useEffect(() => {\n if (selectedValue) {\n onChange(selectedValue);\n }\n }, [selectedValue]);\n\n return (\n <div id=\"elemento-radio\">\n {items.map((element) => {\n return (\n <>\n <input\n key={element.value}\n className=\"rpgui-radio\"\n value={element.value}\n name={name}\n type=\"radio\"\n />\n <label onClick={handleClick}>{element.label}</label>\n <br />\n </>\n );\n })}\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { v4 as uuidv4 } from 'uuid';\nimport { useEventListener } from '../hooks/useEventListener';\nimport { _RPGUI } from './RPGUIRoot';\n\nexport enum RangeSliderType {\n Slider = 'rpgui-slider',\n GoldSlider = 'rpgui-slider golden',\n}\n\nexport interface IRangeSliderProps {\n type: RangeSliderType;\n valueMin: number;\n valueMax: number;\n width: string;\n onChange: (value: number) => void;\n}\n\nexport const RangeSlider: React.FC<IRangeSliderProps> = ({\n type,\n valueMin,\n valueMax,\n width,\n onChange,\n}) => {\n const sliderId = uuidv4();\n\n const [wasMouseDownFirst, setWasMouseDownFirst] = useState<boolean>(false);\n\n useEventListener('mouseup', () => {\n if (wasMouseDownFirst) {\n onHandleMouseUp();\n }\n setWasMouseDownFirst(false);\n });\n\n const onHandleMouseUp = () => {\n const rpguiSlider = document.getElementById(`rpgui-slider-${sliderId}`);\n const value = _RPGUI.get_value(rpguiSlider);\n\n onChange(Number(value));\n };\n\n return (\n <div\n onMouseUp={onHandleMouseUp}\n onMouseDown={() => setWasMouseDownFirst(true)}\n >\n <Input\n className={\n type === RangeSliderType.Slider\n ? RangeSliderType.Slider\n : RangeSliderType.GoldSlider\n }\n type=\"range\"\n style={{ width: width }}\n min={valueMin}\n max={valueMax}\n id={`rpgui-slider-${sliderId}`}\n />\n </div>\n );\n};\n\nconst Input = styled.input`\n opacity: 0;\n`;\n","import React from 'react';\n\nexport interface ITextArea\n extends React.DetailedHTMLProps<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n HTMLTextAreaElement\n > {}\n\nexport const TextArea: React.FC<ITextArea> = ({ ...props }) => {\n return <textarea {...props} />;\n};\n","/* eslint-disable react/require-default-props */\nimport React from 'react';\nimport styled from 'styled-components';\n\ninterface IProps {\n maxLines?: number;\n children: React.ReactNode;\n}\n\nexport const Truncate: React.FC<IProps> = ({ maxLines = 1, children }) => {\n return <Container maxLines={maxLines}>{children}</Container>;\n};\n\ninterface IContainerProps {\n maxLines: number;\n}\n\nconst Container = styled.div<IContainerProps>`\n display: -webkit-box;\n max-width: 100%;\n max-height: 100%;\n -webkit-line-clamp: ${(props) => props.maxLines};\n -webkit-box-orient: vertical;\n overflow: hidden;\n`;\n"],"names":["ButtonTypes","Button","children","buttonType","props","React","ButtonContainer","className","styled","button","CheckButton","items","onChange","generateSelectedValuesList","selectedValues","forEach","item","label","useState","setSelectedValues","handleClick","useEffect","id","map","element","index","key","type","checked","onClick","_RPGUI","RPGUI","RPGUIRoot","Dropdown","options","width","dropdownId","uuidv4","selectedValue","setSelectedValue","document","getElementById","dropdownValue","get_value","addEventListener","event","target","value","style","option","Input","ListMenu","onSelected","x","y","fontSize","Container","overflow","params","ListElement","text","div","li","RPGUIContainerTypes","RPGUIContainer","height","img","chunkString","str","length","match","RegExp","DynamicText","onFinish","onStart","textState","setTextState","i","interval","setInterval","substring","clearInterval","TextContainer","p","NPCDialogText","onClose","onEndStep","onStartStep","textChunks","chunkIndex","setChunkIndex","onHandleSpacePress","code","hasNextChunk","prev","removeEventListener","useEventListener","handler","el","window","savedHandler","useRef","current","listener","e","QuestionDialog","questions","answers","currentQuestion","setCurrentQuestion","canShowAnswers","setCanShowAnswers","onGetFirstAnswer","answerIds","firstAnswerId","find","answer","currentAnswer","setCurrentAnswer","onGetAnswers","answerId","onKeyPress","nextAnswerIndex","findIndex","nextAnswerID","nextAnswer","previousAnswerIndex","previousAnswerID","previousAnswer","pop","nextQuestionId","question","onAnswerClick","onRenderCurrentAnswers","isSelected","selectedColor","AnswerRow","AnswerSelectedIcon","color","Answer","QuestionContainer","AnswersContainer","span","NPCDialogType","NPCDialog","imagePath","isQuestionDialog","showGoNextIndicator","setShowGoNextIndicator","FramedGold","flex","TextAndThumbnail","ThumbnailContainer","NPCThumbnail","src","aliceDefaultThumbnail","PressSpaceIndicator","right","TextOnly","pressSpaceGif","InputRadio","name","querySelector","elementValue","RangeSliderType","RangeSlider","valueMin","valueMax","sliderId","wasMouseDownFirst","setWasMouseDownFirst","onHandleMouseUp","rpguiSlider","Number","onMouseUp","onMouseDown","Slider","GoldSlider","min","max","input","TextArea","Truncate","maxLines"],"mappings":"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"}