@rpg-engine/long-bow 0.1.36 → 0.1.39

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.
@@ -3,5 +3,6 @@ export interface IBarProps {
3
3
  max: number;
4
4
  value: number;
5
5
  color: 'red' | 'blue' | 'green';
6
+ displayText?: boolean;
6
7
  }
7
8
  export declare const ProgressBar: React.FC<IBarProps>;
@@ -617,7 +617,9 @@ var PressSpaceIndicator = /*#__PURE__*/styled.img.withConfig({
617
617
  var ProgressBar = function ProgressBar(_ref) {
618
618
  var max = _ref.max,
619
619
  value = _ref.value,
620
- color = _ref.color;
620
+ color = _ref.color,
621
+ _ref$displayText = _ref.displayText,
622
+ displayText = _ref$displayText === void 0 ? true : _ref$displayText;
621
623
 
622
624
  var calculatePercentageValue = function calculatePercentageValue(max, value) {
623
625
  if (value > max) {
@@ -627,11 +629,11 @@ var ProgressBar = function ProgressBar(_ref) {
627
629
  return value * 100 / max;
628
630
  };
629
631
 
630
- return React__default.createElement(RPGUIRoot, null, React__default.createElement(Container$5, {
632
+ return React__default.createElement(Container$5, {
631
633
  className: "rpgui-progress",
632
634
  "data-value": calculatePercentageValue(max, value) / 100,
633
635
  "data-rpguitype": "progress"
634
- }, React__default.createElement("div", {
636
+ }, displayText && React__default.createElement(TextOverlay, null, React__default.createElement(ProgressBarText, null, value, "/", max)), React__default.createElement("div", {
635
637
  className: " rpgui-progress-track"
636
638
  }, React__default.createElement("div", {
637
639
  className: "rpgui-progress-fill " + color + " ",
@@ -643,11 +645,19 @@ var ProgressBar = function ProgressBar(_ref) {
643
645
  className: " rpgui-progress-left-edge"
644
646
  }), React__default.createElement("div", {
645
647
  className: " rpgui-progress-right-edge"
646
- })));
648
+ }));
647
649
  };
650
+ var ProgressBarText = /*#__PURE__*/styled.span.withConfig({
651
+ displayName: "ProgressBar__ProgressBarText",
652
+ componentId: "sc-qa6fzh-0"
653
+ })(["font-size:1rem;color:white;text-align:center;z-index:1;position:absolute;left:50%;transform:translateX(-50%);top:12px;"]);
654
+ var TextOverlay = /*#__PURE__*/styled.div.withConfig({
655
+ displayName: "ProgressBar__TextOverlay",
656
+ componentId: "sc-qa6fzh-1"
657
+ })(["width:100%;position:relative;"]);
648
658
  var Container$5 = /*#__PURE__*/styled.div.withConfig({
649
659
  displayName: "ProgressBar__Container",
650
- componentId: "sc-qa6fzh-0"
660
+ componentId: "sc-qa6fzh-2"
651
661
  })(["display:flex;flex-direction:column;width:20%;justify-content:start;align-items:flex-start;"]);
652
662
 
653
663
  var InputRadio = function InputRadio(_ref) {
@@ -1 +1 @@
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/ProgressBar.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 from 'react';\nimport styled from 'styled-components';\nimport { RPGUIRoot } from './RPGUIRoot';\n\nexport interface IBarProps {\n max: number;\n value: number;\n color: 'red' | 'blue' | 'green';\n}\n\nexport const ProgressBar: React.FC<IBarProps> = ({ max, value, color }) => {\n const calculatePercentageValue = function (max: number, value: number) {\n if (value > max) {\n value = max;\n }\n return (value * 100) / max;\n };\n\n return (\n <RPGUIRoot>\n <Container\n className=\"rpgui-progress\"\n data-value={calculatePercentageValue(max, value) / 100}\n data-rpguitype=\"progress\"\n >\n <div className=\" rpgui-progress-track\">\n <div\n className={`rpgui-progress-fill ${color} `}\n style={{\n left: '0px',\n width: calculatePercentageValue(max, value) + '%',\n }}\n ></div>\n </div>\n <div className=\" rpgui-progress-left-edge\"></div>\n <div className=\" rpgui-progress-right-edge\"></div>\n </Container>\n </RPGUIRoot>\n );\n};\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n width: 20%;\n justify-content: start;\n align-items: flex-start;\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","ProgressBar","max","calculatePercentageValue","left","InputRadio","name","querySelector","elementValue","RangeSliderType","RangeSlider","valueMin","valueMax","sliderId","wasMouseDownFirst","setWasMouseDownFirst","onHandleMouseUp","rpguiSlider","Number","onMouseUp","onMouseDown","Slider","GoldSlider","min","input","TextArea","Truncate","maxLines"],"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/ProgressBar.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 from 'react';\nimport styled from 'styled-components';\n\nexport interface IBarProps {\n max: number;\n value: number;\n color: 'red' | 'blue' | 'green';\n displayText?: boolean;\n}\n\nexport const ProgressBar: React.FC<IBarProps> = ({\n max,\n value,\n color,\n displayText = true,\n}) => {\n const calculatePercentageValue = function (max: number, value: number) {\n if (value > max) {\n value = max;\n }\n return (value * 100) / max;\n };\n\n return (\n <Container\n className=\"rpgui-progress\"\n data-value={calculatePercentageValue(max, value) / 100}\n data-rpguitype=\"progress\"\n >\n {displayText && (\n <TextOverlay>\n <ProgressBarText>\n {value}/{max}\n </ProgressBarText>\n </TextOverlay>\n )}\n <div className=\" rpgui-progress-track\">\n <div\n className={`rpgui-progress-fill ${color} `}\n style={{\n left: '0px',\n width: calculatePercentageValue(max, value) + '%',\n }}\n ></div>\n </div>\n <div className=\" rpgui-progress-left-edge\"></div>\n <div className=\" rpgui-progress-right-edge\"></div>\n </Container>\n );\n};\n\nconst ProgressBarText = styled.span`\n font-size: 1rem;\n color: white;\n text-align: center;\n z-index: 1;\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n top: 12px;\n`;\n\nconst TextOverlay = styled.div`\n width: 100%;\n position: relative;\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n width: 20%;\n justify-content: start;\n align-items: flex-start;\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","ProgressBar","max","displayText","calculatePercentageValue","TextOverlay","ProgressBarText","left","InputRadio","name","querySelector","elementValue","RangeSliderType","RangeSlider","valueMin","valueMax","sliderId","wasMouseDownFirst","setWasMouseDownFirst","onHandleMouseUp","rpguiSlider","Number","onMouseUp","onMouseDown","Slider","GoldSlider","min","input","TextArea","Truncate","maxLines"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,WAAYA;AACVA,EAAAA,0BAAA,iBAAA;AACAA,EAAAA,8BAAA,wBAAA;AACD,CAHD,EAAYA,mBAAW,KAAXA,mBAAW,KAAA,CAAvB;;IAUaC,MAAM,GAMf,SANSA,MAMT;MAAGC,gBAAAA;MAAUC,kBAAAA;MAAeC;;AAC9B,SACEC,4BAAA,CAACC,eAAD;AAAiBC,IAAAA,SAAS,OAAKJ;KAAkBC,MAAjD,EACEC,4BAAA,IAAA,MAAA,EAAIH,QAAJ,CADF,CADF;AAKD;AAED,IAAMI,eAAe,gBAAGE,MAAM,CAACC,MAAV;AAAA;AAAA;AAAA,qCAArB;;ICXaC,WAAW,GAA0B,SAArCA,WAAqC;MAAGC,aAAAA;MAAOC,gBAAAA;;AAC1D,MAAMC,0BAA0B,GAAG,SAA7BA,0BAA6B;AACjC,QAAMC,cAAc,GAA6B,EAAjD;AAEAH,IAAAA,KAAK,CAACI,OAAN,CAAc,UAACC,IAAD;AACZF,MAAAA,cAAc,CAACE,IAAI,CAACC,KAAN,CAAd,GAA6B,KAA7B;AACD,KAFD;AAIA,WAAOH,cAAP;AACD,GARD;;AAUA,kBACEI,cAAQ,CAA2BL,0BAA0B,EAArD,CADV;AAAA,MAAOC,cAAP;AAAA,MAAuBK,iBAAvB;;AAGA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACH,KAAD;;;AAClBE,IAAAA,iBAAiB,cACZL,cADY,6BAEdG,KAFc,IAEN,CAACH,cAAc,CAACG,KAAD,CAFT,cAAjB;AAID,GALD;;AAOAI,EAAAA,eAAS,CAAC;AACR,QAAIP,cAAJ,EAAoB;AAClBF,MAAAA,QAAQ,CAACE,cAAD,CAAR;AACD;AACF,GAJQ,EAIN,CAACA,cAAD,CAJM,CAAT;AAMA,SACET,4BAAA,MAAA;AAAKiB,IAAAA,EAAE,EAAC;GAAR,EACGX,KADH,oBACGA,KAAK,CAAEY,GAAP,CAAW,UAACC,OAAD,EAAUC,KAAV;AACV,WACEpB,4BAAA,MAAA;AAAKqB,MAAAA,GAAG,EAAKF,OAAO,CAACP,KAAb,SAAsBQ;KAA9B,EACEpB,4BAAA,QAAA;AACEE,MAAAA,SAAS,EAAC;AACVoB,MAAAA,IAAI,EAAC;AACLC,MAAAA,OAAO,EAAEd,cAAc,CAACU,OAAO,CAACP,KAAT;AACvBL,MAAAA,QAAQ,EAAE;KAJZ,CADF,EAOEP,4BAAA,QAAA;AAAOwB,MAAAA,OAAO,EAAE;AAAA,eAAMT,WAAW,CAACI,OAAO,CAACP,KAAT,CAAjB;AAAA;KAAhB,EACGO,OAAO,CAACP,KADX,CAPF,EAUEZ,4BAAA,KAAA,MAAA,CAVF,CADF;AAcD,GAfA,CADH,CADF;AAoBD,CA/CM;;ICPMyB,MAAM,GAAGC,KAAf;AAEP,IAAaC,SAAS,GAAqB,SAA9BA,SAA8B;MAAG9B,gBAAAA;AAC5C,SAAOG,4BAAA,MAAA;AAAKE,IAAAA,SAAS,EAAC;GAAf,EAAgCL,QAAhC,CAAP;AACD,CAFM;;ICKM+B,QAAQ,GAA6B,SAArCA,QAAqC;MAChDC,eAAAA;MACAC,aAAAA;MACAvB,gBAAAA;AAEA,MAAMwB,UAAU,GAAGC,OAAM,EAAzB;;AAEA,kBAA0CnB,cAAQ,CAAS,EAAT,CAAlD;AAAA,MAAOoB,aAAP;AAAA,MAAsBC,gBAAtB;;AAEAlB,EAAAA,eAAS,CAAC;AACR,QAAMG,OAAO,GAAGgB,QAAQ,CAACC,cAAT,qBAA0CL,UAA1C,CAAhB;;AACA,QAAMM,aAAa,GAAGZ,MAAM,CAACa,SAAP,CAAiBnB,OAAjB,CAAtB;;AACAe,IAAAA,gBAAgB,CAACG,aAAD,CAAhB;AAEAlB,IAAAA,OAAO,QAAP,YAAAA,OAAO,CAAEoB,gBAAT,CAA0B,QAA1B,EAAoC,UAACC,KAAD;AAClCN,MAAAA,gBAAgB,CAACM,KAAD,oBAACA,KAAK,CAAEC,MAAP,CAAcC,KAAf,CAAhB;AACD,KAFD;AAGD,GARQ,EAQN,EARM,CAAT;AAUA1B,EAAAA,eAAS,CAAC;AACR,QAAIiB,aAAJ,EAAmB;AACjB1B,MAAAA,QAAQ,CAAC0B,aAAD,CAAR;AACD;AACF,GAJQ,EAIN,CAACA,aAAD,CAJM,CAAT;AAMA,SACEjC,4BAAA,SAAA;AACEiB,IAAAA,EAAE,sBAAoBc;AACtBY,IAAAA,KAAK,EAAE;AAAEb,MAAAA,KAAK,EAAEA;AAAT;AACP5B,IAAAA,SAAS,EAAC;GAHZ,EAKG2B,OAAO,CAACX,GAAR,CAAY,UAAC0B,MAAD;AACX,WACE5C,4BAAA,SAAA;AAAQqB,MAAAA,GAAG,EAAEuB,MAAM,CAAC3B;AAAIyB,MAAAA,KAAK,EAAEE,MAAM,CAACF;KAAtC,EACGE,MAAM,CAACA,MADV,CADF;AAKD,GANA,CALH,CADF;AAeD,CAxCM;;ICRMC,KAAK,GAA0B,SAA/BA,KAA+B;MAAM9C;;AAChD,SAAOC,4BAAA,QAAA,oBAAWD,MAAX,CAAP;AACD,CAFM;;ICQM+C,QAAQ,GAA6B,SAArCA,QAAqC;MAChDjB,eAAAA;MACAkB,kBAAAA;MACAC,SAAAA;MACAC,SAAAA;2BACAC;MAAAA,sCAAW;AAEX,SACElD,4BAAA,CAACmD,SAAD;AAAWH,IAAAA,CAAC,EAAEA;AAAGC,IAAAA,CAAC,EAAEA;AAAGC,IAAAA,QAAQ,EAAEA;GAAjC,EACElD,4BAAA,KAAA;AAAIE,IAAAA,SAAS,EAAC;AAAiByC,IAAAA,KAAK,EAAE;AAAES,MAAAA,QAAQ,EAAE;AAAZ;GAAtC,EACGvB,OAAO,CAACX,GAAR,CAAY,UAACmC,MAAD;AAAA,WACXrD,4BAAA,CAACsD,WAAD;AACEjC,MAAAA,GAAG,EAAEgC,MAAM,CAACE;AACZ/B,MAAAA,OAAO,EAAE;AACPuB,QAAAA,UAAU,CAACM,MAAM,CAACpC,EAAR,CAAV;AACD;KAJH,EAMGoC,MAAM,CAACE,IANV,CADW;AAAA,GAAZ,CADH,CADF,CADF;AAgBD,CAvBM;AA+BP,IAAMJ,SAAS,gBAAGhD,MAAM,CAACqD,GAAV;AAAA;AAAA;AAAA,kKAON,UAACzD,KAAD;AAAA,SAAWA,KAAK,CAACkD,CAAN,IAAW,CAAtB;AAAA,CAPM,EAQL,UAAClD,KAAD;AAAA,SAAWA,KAAK,CAACiD,CAAN,IAAW,CAAtB;AAAA,CARK,EAWE,UAACjD,KAAD;AAAA,SAAWA,KAAK,CAACmD,QAAjB;AAAA,CAXF,CAAf;AAeA,IAAMI,WAAW,gBAAGnD,MAAM,CAACsD,EAAV;AAAA;AAAA;AAAA,4BAAjB;;AC3DA,WAAYC;AACVA,EAAAA,6BAAA,WAAA;AACAA,EAAAA,iCAAA,kBAAA;AACAA,EAAAA,kCAAA,oBAAA;AACAA,EAAAA,iCAAA,gBAAA;AACD,CALD,EAAYA,2BAAmB,KAAnBA,2BAAmB,KAAA,CAA/B;;AAaA,IAAaC,cAAc,GAAmC,SAAjDA,cAAiD;MAC5D9D,gBAAAA;MACAyB,YAAAA;wBACAQ;MAAAA,gCAAQ;MACR8B,cAAAA;AAEA,SACE5D,4BAAA,CAACmD,WAAD;AACErB,IAAAA,KAAK,EAAEA;AACP8B,IAAAA,MAAM,EAAEA,MAAM,IAAI;AAClB1D,IAAAA,SAAS,uBAAqBoB;GAHhC,EAKGzB,QALH,CADF;AASD,CAfM;AAsBP,IAAMsD,WAAS,gBAAGhD,MAAM,CAACqD,GAAV;AAAA;AAAA;AAAA,sFACH,UAACzD,KAAD;AAAA,SAAWA,KAAK,CAAC6D,MAAjB;AAAA,CADG,EAEJ;AAAA,MAAG9B,KAAH,SAAGA,KAAH;AAAA,SAAeA,KAAf;AAAA,CAFI,CAAf;;ACtCA,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;;ACAnC,MAAM+B,KAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;;ACA5B,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,GAAD,EAAcC,MAAd;AACzB,SAAOD,GAAG,CAACE,KAAJ,CAAU,IAAIC,MAAJ,CAAW,SAASF,MAAT,GAAkB,GAA7B,EAAkC,GAAlC,CAAV,CAAP;AACD,CAFM;;ICSMG,WAAW,GAAqB,SAAhCA,WAAgC;MAAGZ,YAAAA;MAAMa,gBAAAA;MAAUC,eAAAA;;AAC9D,kBAAkCxD,cAAQ,CAAS,EAAT,CAA1C;AAAA,MAAOyD,SAAP;AAAA,MAAkBC,YAAlB;;AAEAvD,EAAAA,eAAS,CAAC;AACR,QAAIwD,CAAC,GAAG,CAAR;AACA,QAAMC,QAAQ,GAAGC,WAAW,CAAC;AAC3B;AAEA,UAAIF,CAAC,KAAK,CAAV,EAAa;AACX,YAAIH,OAAJ,EAAa;AACXA,UAAAA,OAAO;AACR;AACF;;AAED,UAAIG,CAAC,GAAGjB,IAAI,CAACS,MAAb,EAAqB;AACnBO,QAAAA,YAAY,CAAChB,IAAI,CAACoB,SAAL,CAAe,CAAf,EAAkBH,CAAC,GAAG,CAAtB,CAAD,CAAZ;AACAA,QAAAA,CAAC;AACF,OAHD,MAGO;AACLI,QAAAA,aAAa,CAACH,QAAD,CAAb;;AACA,YAAIL,QAAJ,EAAc;AACZA,UAAAA,QAAQ;AACT;AACF;AACF,KAlB2B,EAkBzB,EAlByB,CAA5B;AAoBA,WAAO;AACLQ,MAAAA,aAAa,CAACH,QAAD,CAAb;AACD,KAFD;AAGD,GAzBQ,EAyBN,CAAClB,IAAD,CAzBM,CAAT;AA2BA,SAAOvD,4BAAA,CAAC6E,aAAD,MAAA,EAAgBP,SAAhB,CAAP;AACD,CA/BM;AAiCP,IAAMO,aAAa,gBAAG1E,MAAM,CAAC2E,CAAV;AAAA;AAAA;AAAA,uHAAnB;;AC9BO,IAAMC,aAAa,GAAqB,SAAlCA,aAAkC;MAC7CxB,YAAAA;MACAyB,eAAAA;MACAC,iBAAAA;MACAC,mBAAAA;AAEA,MAAMC,UAAU,GAAGrB,WAAW,CAACP,IAAD,EAAO,EAAP,CAA9B;;AAEA,kBAAoC1C,cAAQ,CAAS,CAAT,CAA5C;AAAA,MAAOuE,UAAP;AAAA,MAAmBC,aAAnB;;AAEA,MAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAAC9C,KAAD;AACzB,QAAIA,KAAK,CAAC+C,IAAN,KAAe,OAAnB,EAA4B;AAC1B,UAAMC,YAAY,GAAG,CAAAL,UAAU,QAAV,YAAAA,UAAU,CAAGC,UAAU,GAAG,CAAhB,CAAV,KAAgC,KAArD;;AAEA,UAAII,YAAJ,EAAkB;AAChBH,QAAAA,aAAa,CAAC,UAACI,IAAD;AAAA,iBAAUA,IAAI,GAAG,CAAjB;AAAA,SAAD,CAAb;AACD,OAFD,MAEO;AACL;AACAT,QAAAA,OAAO;AACR;AACF;AACF,GAXD;;AAaAhE,EAAAA,eAAS,CAAC;AACRmB,IAAAA,QAAQ,CAACI,gBAAT,CAA0B,SAA1B,EAAqC+C,kBAArC;AAEA,WAAO;AAAA,aAAMnD,QAAQ,CAACuD,mBAAT,CAA6B,SAA7B,EAAwCJ,kBAAxC,CAAN;AAAA,KAAP;AACD,GAJQ,EAIN,CAACF,UAAD,CAJM,CAAT;AAMA,SACEpF,4BAAA,CAACmD,WAAD,MAAA,EACEnD,4BAAA,CAACmE,WAAD;AACEZ,IAAAA,IAAI,EAAE,CAAA4B,UAAU,QAAV,YAAAA,UAAU,CAAGC,UAAH,CAAV,KAA4B;AAClChB,IAAAA,QAAQ,EAAEa;AACVZ,IAAAA,OAAO,EAAEa;GAHX,CADF,CADF;AASD,CAtCM;AAwCP,IAAM/B,WAAS,gBAAGhD,MAAM,CAACqD,GAAV;AAAA;AAAA;AAAA,QAAf;;ICjDamC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACrE,IAAD,EAAOsE,OAAP,EAAgBC,EAAhB;MAAgBA;AAAAA,IAAAA,KAAKC;;;AACnD,MAAMC,YAAY,GAAG/F,cAAK,CAACgG,MAAN,EAArB;AAEAhG,EAAAA,cAAK,CAACgB,SAAN,CAAgB;AACd+E,IAAAA,YAAY,CAACE,OAAb,GAAuBL,OAAvB;AACD,GAFD,EAEG,CAACA,OAAD,CAFH;AAIA5F,EAAAA,cAAK,CAACgB,SAAN,CAAgB;AACd;AACA,QAAMkF,QAAQ,GAAG,SAAXA,QAAW,CAACC,CAAD;AAAA,aAAOJ,YAAY,CAACE,OAAb,CAAqBE,CAArB,CAAP;AAAA,KAAjB;;AAEAN,IAAAA,EAAE,CAACtD,gBAAH,CAAoBjB,IAApB,EAA0B4E,QAA1B;AAEA,WAAO;AACLL,MAAAA,EAAE,CAACH,mBAAH,CAAuBpE,IAAvB,EAA6B4E,QAA7B;AACD,KAFD;AAGD,GATD,EASG,CAAC5E,IAAD,EAAOuE,EAAP,CATH;AAUD,CAjBM;;ICoBMO,cAAc,GAAqB,SAAnCA,cAAmC;MAC9CC,iBAAAA;MACAC,eAAAA;MACAtB,eAAAA;;AAEA,kBAA8CnE,cAAQ,CAACwF,SAAS,CAAC,CAAD,CAAV,CAAtD;AAAA,MAAOE,eAAP;AAAA,MAAwBC,kBAAxB;;AAEA,mBAA4C3F,cAAQ,CAAU,KAAV,CAApD;AAAA,MAAO4F,cAAP;AAAA,MAAuBC,iBAAvB;;AAEA,MAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB;AACvB,QAAI,CAACJ,eAAe,CAACK,SAAjB,IAA8BL,eAAe,CAACK,SAAhB,CAA0B5C,MAA1B,KAAqC,CAAvE,EAA0E;AACxE,aAAO,IAAP;AACD;;AAED,QAAM6C,aAAa,GAAGN,eAAe,CAACK,SAAhB,CAA2B,CAA3B,CAAtB;AAEA,WAAON,OAAO,CAACQ,IAAR,CAAa,UAACC,MAAD;AAAA,aAAYA,MAAM,CAAC9F,EAAP,KAAc4F,aAA1B;AAAA,KAAb,CAAP;AACD,GARD;;AAUA,mBACEhG,cAAQ,CAA+B8F,gBAAgB,EAA/C,CADV;AAAA,MAAOK,aAAP;AAAA,MAAsBC,gBAAtB;;AAGAjG,EAAAA,eAAS,CAAC;AACRiG,IAAAA,gBAAgB,CAACN,gBAAgB,EAAjB,CAAhB;AACD,GAFQ,EAEN,CAACJ,eAAD,CAFM,CAAT;;AAIA,MAAMW,YAAY,GAAG,SAAfA,YAAe,CAACN,SAAD;AACnB,WAAOA,SAAS,CAAC1F,GAAV,CAAc,UAACiG,QAAD;AAAA,aACnBb,OAAO,CAACQ,IAAR,CAAa,UAACC,MAAD;AAAA,eAAYA,MAAM,CAAC9F,EAAP,KAAckG,QAA1B;AAAA,OAAb,CADmB;AAAA,KAAd,CAAP;AAGD,GAJD;;AAMA,MAAMC,UAAU,GAAG,SAAbA,UAAa,CAACjB,CAAD;AACjB,YAAQA,CAAC,CAAC9E,GAAV;AACE,WAAK,WAAL;AACE;AACA;AACA;AACA;AACA;AAEA,YAAMgG,eAAe,GAAGH,YAAY,CAClCX,eAAe,CAACK,SADkB,CAAZ,CAEtBU,SAFsB,CAEZ,UAACP,MAAD;AAAA,iBAAY,CAAAA,MAAM,QAAN,YAAAA,MAAM,CAAE9F,EAAR,MAAe+F,aAAc,CAAC/F,EAAf,GAAoB,CAA/C;AAAA,SAFY,CAAxB;AAIA,YAAMsG,YAAY,GAAGhB,eAAe,CAACK,SAAhB,CAA2BS,eAA3B,CAArB,CAXF;;AAeE,YAAMG,UAAU,GAAGN,YAAY,CAACX,eAAe,CAACK,SAAjB,CAAZ,CAAyCE,IAAzC,CACjB,UAACC,MAAD;AAAA,iBAAY,CAAAA,MAAM,QAAN,YAAAA,MAAM,CAAE9F,EAAR,MAAesG,YAA3B;AAAA,SADiB,CAAnB;AAIAN,QAAAA,gBAAgB,CAACO,UAAU,IAAIb,gBAAgB,EAA/B,CAAhB;AAEA;;AACF,WAAK,SAAL;AACE;AACA;AAEA,YAAMc,mBAAmB,GAAGP,YAAY,CACtCX,eAAe,CAACK,SADsB,CAAZ,CAE1BU,SAF0B,CAEhB,UAACP,MAAD;AAAA,iBAAY,CAAAA,MAAM,QAAN,YAAAA,MAAM,CAAE9F,EAAR,MAAe+F,aAAc,CAAC/F,EAAf,GAAoB,CAA/C;AAAA,SAFgB,CAA5B;AAIA,YAAMyG,gBAAgB,GACpBnB,eAAe,CAACK,SAAhB,IACAL,eAAe,CAACK,SAAhB,CAA0Ba,mBAA1B,CAFF;AAIA,YAAME,cAAc,GAAGT,YAAY,CAACX,eAAe,CAACK,SAAjB,CAAZ,CAAyCE,IAAzC,CACrB,UAACC,MAAD;AAAA,iBAAY,CAAAA,MAAM,QAAN,YAAAA,MAAM,CAAE9F,EAAR,MAAeyG,gBAA3B;AAAA,SADqB,CAAvB;;AAIA,YAAIC,cAAJ,EAAoB;AAClBV,UAAAA,gBAAgB,CAACU,cAAD,CAAhB;AACD,SAFD,MAEO;AACLV,UAAAA,gBAAgB,CAACC,YAAY,CAACX,eAAe,CAACK,SAAjB,CAAZ,CAAyCgB,GAAzC,EAAD,CAAhB;AACD;;AAED;;AACF,WAAK,OAAL;AACElB,QAAAA,iBAAiB,CAAC,KAAD,CAAjB;;AAEA,YAAI,EAACM,aAAD,YAACA,aAAa,CAAEa,cAAhB,CAAJ,EAAoC;AAClC7C,UAAAA,OAAO;AACP;AACD,SAHD,MAGO;AACLwB,UAAAA,kBAAkB,CAChBH,SAAS,CAACS,IAAV,CACE,UAACgB,QAAD;AAAA,mBAAcA,QAAQ,CAAC7G,EAAT,KAAgB+F,aAAc,CAACa,cAA7C;AAAA,WADF,CADgB,CAAlB;AAKD;;AAED;AA5DJ;AA8DD,GA/DD;;AAgEAlC,EAAAA,gBAAgB,CAAC,SAAD,EAAYyB,UAAZ,CAAhB;;AAEA,MAAMW,aAAa,GAAG,SAAhBA,aAAgB,CAAChB,MAAD;AACpBL,IAAAA,iBAAiB,CAAC,KAAD,CAAjB;;AACA,QAAIK,MAAM,CAACc,cAAX,EAA2B;AACzB;AACArB,MAAAA,kBAAkB,CAChBH,SAAS,CAACS,IAAV,CAAe,UAACgB,QAAD;AAAA,eAAcA,QAAQ,CAAC7G,EAAT,KAAgB8F,MAAM,CAACc,cAArC;AAAA,OAAf,CADgB,CAAlB;AAGD,KALD,MAKO;AACL;AACA7C,MAAAA,OAAO;AACR;AACF,GAXD;;AAaA,MAAMgD,sBAAsB,GAAG,SAAzBA,sBAAyB;AAC7B,QAAMpB,SAAS,GAAGL,eAAe,CAACK,SAAlC;;AACA,QAAI,CAACA,SAAL,EAAgB;AACd,aAAO,IAAP;AACD;;AAED,QAAMN,OAAO,GAAGY,YAAY,CAACN,SAAD,CAA5B;;AAEA,QAAI,CAACN,OAAL,EAAc;AACZ,aAAO,IAAP;AACD;;AAED,WAAOA,OAAO,CAACpF,GAAR,CAAY,UAAC6F,MAAD;AACjB,UAAMkB,UAAU,GAAG,CAAAjB,aAAa,QAAb,YAAAA,aAAa,CAAE/F,EAAf,OAAsB8F,MAAtB,oBAAsBA,MAAM,CAAE9F,EAA9B,CAAnB;AACA,UAAMiH,aAAa,GAAGD,UAAU,GAAG,QAAH,GAAc,OAA9C;;AAEA,UAAIlB,MAAJ,EAAY;AACV,eACE/G,4BAAA,CAACmI,SAAD;AAAW9G,UAAAA,GAAG,cAAY0F,MAAM,CAAC9F;SAAjC,EACEjB,4BAAA,CAACoI,kBAAD;AAAoBC,UAAAA,KAAK,EAAEH;SAA3B,EACGD,UAAU,GAAG,GAAH,GAAS,IADtB,CADF,EAKEjI,4BAAA,CAACsI,MAAD;AACEjH,UAAAA,GAAG,EAAE0F,MAAM,CAAC9F;AACZO,UAAAA,OAAO,EAAE;AAAA,mBAAMuG,aAAa,CAAChB,MAAD,CAAnB;AAAA;AACTsB,UAAAA,KAAK,EAAEH;SAHT,EAKGnB,MAAM,CAACxD,IALV,CALF,CADF;AAeD;;AAED,aAAO,IAAP;AACD,KAvBM,CAAP;AAwBD,GApCD;;AAsCA,SACEvD,4BAAA,CAACmD,WAAD,MAAA,EACEnD,4BAAA,CAACuI,iBAAD,MAAA,EACEvI,4BAAA,CAACmE,WAAD;AACEZ,IAAAA,IAAI,EAAEgD,eAAe,CAAChD;AACtBc,IAAAA,OAAO,EAAE;AAAA,aAAMqC,iBAAiB,CAAC,KAAD,CAAvB;AAAA;AACTtC,IAAAA,QAAQ,EAAE;AAAA,aAAMsC,iBAAiB,CAAC,IAAD,CAAvB;AAAA;GAHZ,CADF,CADF,EASGD,cAAc,IACbzG,4BAAA,CAACwI,gBAAD,MAAA,EAAmBR,sBAAsB,EAAzC,CAVJ,CADF;AAeD,CApKM;AAsKP,IAAM7E,WAAS,gBAAGhD,MAAM,CAACqD,GAAV;AAAA;AAAA;AAAA,iIAAf;AAWA,IAAM+E,iBAAiB,gBAAGpI,MAAM,CAACqD,GAAV;AAAA;AAAA;AAAA,6BAAvB;AAKA,IAAMgF,gBAAgB,gBAAGrI,MAAM,CAACqD,GAAV;AAAA;AAAA;AAAA,kBAAtB;AAQA,IAAM8E,MAAM,gBAAGnI,MAAM,CAAC2E,CAAV;AAAA;AAAA;AAAA,qGAED,UAAC/E,KAAD;AAAA,SAAWA,KAAK,CAACsI,KAAjB;AAAA,CAFC,CAAZ;AAQA,IAAMD,kBAAkB,gBAAGjI,MAAM,CAACsI,IAAV;AAAA;AAAA;AAAA,2CAEb,UAAC1I,KAAD;AAAA,SAAWA,KAAK,CAACsI,KAAjB;AAAA,CAFa,CAAxB;AAKA,IAAMF,SAAS,gBAAGhI,MAAM,CAACqD,GAAV;AAAA;AAAA;AAAA,oKAAf;;ACtNA,WAAYkF;AACVA,EAAAA,yBAAA,aAAA;AACAA,EAAAA,iCAAA,qBAAA;AACD,CAHD,EAAYA,qBAAa,KAAbA,qBAAa,KAAA,CAAzB;;AAeA,IAAaC,SAAS,GAA8B,SAAvCA,SAAuC;MAClDpF,YAAAA;MACAjC,YAAAA;MACA0D,gBAAAA;MACA4D,iBAAAA;mCACAC;MAAAA,sDAAmB;MACnBxC,iBAAAA;MACAC,eAAAA;;AAEA,kBACEzF,cAAQ,CAAU,KAAV,CADV;AAAA,MAAOiI,mBAAP;AAAA,MAA4BC,sBAA5B;;AAGA,SACE/I,4BAAA,CAAC2D,cAAD;AACErC,IAAAA,IAAI,EAAEoC,2BAAmB,CAACsF;AAC1BlH,IAAAA,KAAK,EAAE+G,gBAAgB,GAAG,OAAH,GAAa;AACpCjF,IAAAA,MAAM,EAAE;GAHV,EAKGiF,gBAAgB,IAAIxC,SAApB,IAAiCC,OAAjC,GACCtG,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAAC6E,eAAD;AACEoE,IAAAA,IAAI,EAAE3H,IAAI,KAAKoH,qBAAa,CAACQ,gBAAvB,GAA0C,KAA1C,GAAkD;GAD1D,EAGElJ,4BAAA,CAACoG,cAAD;AACEC,IAAAA,SAAS,EAAEA;AACXC,IAAAA,OAAO,EAAEA;AACTtB,IAAAA,OAAO,EAAE;AACP,UAAIA,QAAJ,EAAa;AACXA,QAAAA,QAAO;AACR;AACF;GAPH,CAHF,CADF,EAcG1D,IAAI,KAAKoH,qBAAa,CAACQ,gBAAvB,IACClJ,4BAAA,CAACmJ,kBAAD,MAAA,EACEnJ,4BAAA,CAACoJ,YAAD;AAAcC,IAAAA,GAAG,EAAET,SAAS,IAAIU;GAAhC,CADF,CAfJ,CADD,GAsBCtJ,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAACmD,WAAD,MAAA,EACEnD,4BAAA,CAAC6E,eAAD;AACEoE,IAAAA,IAAI,EAAE3H,IAAI,KAAKoH,qBAAa,CAACQ,gBAAvB,GAA0C,KAA1C,GAAkD;GAD1D,EAGElJ,4BAAA,CAAC+E,aAAD;AACEG,IAAAA,WAAW,EAAE;AAAA,aAAM6D,sBAAsB,CAAC,KAAD,CAA5B;AAAA;AACb9D,IAAAA,SAAS,EAAE;AAAA,aAAM8D,sBAAsB,CAAC,IAAD,CAA5B;AAAA;AACXxF,IAAAA,IAAI,EAAEA,IAAI,IAAI;AACdyB,IAAAA,OAAO,EAAE;AACP,UAAIA,QAAJ,EAAa;AACXA,QAAAA,QAAO;AACR;AACF;GARH,CAHF,CADF,EAeG1D,IAAI,KAAKoH,qBAAa,CAACQ,gBAAvB,IACClJ,4BAAA,CAACmJ,kBAAD,MAAA,EACEnJ,4BAAA,CAACoJ,YAAD;AAAcC,IAAAA,GAAG,EAAET,SAAS,IAAIU;GAAhC,CADF,CAhBJ,CADF,EAsBGR,mBAAmB,IAClB9I,4BAAA,CAACuJ,mBAAD;AACEC,IAAAA,KAAK,EAAElI,IAAI,KAAKoH,qBAAa,CAACe,QAAvB,GAAkC,MAAlC,GAA2C;AAClDJ,IAAAA,GAAG,EAAEK;GAFP,CAvBJ,CA3BJ,CADF;AA4DD,CAxEM;AA0EP,IAAMvG,WAAS,gBAAGhD,MAAM,CAACqD,GAAV;AAAA;AAAA;AAAA,kIAAf;AAeA,IAAMqB,eAAa,gBAAG1E,MAAM,CAACqD,GAAV;AAAA;AAAA;AAAA,mCACT;AAAA,MAAGyF,IAAH,SAAGA,IAAH;AAAA,SAAcA,IAAd;AAAA,CADS,CAAnB;AAKA,IAAME,kBAAkB,gBAAGhJ,MAAM,CAACqD,GAAV;AAAA;AAAA;AAAA,2DAAxB;AAMA,IAAM4F,YAAY,gBAAGjJ,MAAM,CAAC0D,GAAV;AAAA;AAAA;AAAA,2DAAlB;AAUA,IAAM0F,mBAAmB,gBAAGpJ,MAAM,CAAC0D,GAAV;AAAA;AAAA;AAAA,0GAEd;AAAA,MAAG2F,KAAH,SAAGA,KAAH;AAAA,SAAeA,KAAf;AAAA,CAFc,CAAzB;;IC/HaG,WAAW,GAAwB,SAAnCA,WAAmC;MAC9CC,WAAAA;MACAlH,aAAAA;MACA2F,aAAAA;8BACAwB;MAAAA,4CAAc;;AAEd,MAAMC,wBAAwB,GAAG,SAA3BA,wBAA2B,CAAUF,GAAV,EAAuBlH,KAAvB;AAC/B,QAAIA,KAAK,GAAGkH,GAAZ,EAAiB;AACflH,MAAAA,KAAK,GAAGkH,GAAR;AACD;;AACD,WAAQlH,KAAK,GAAG,GAAT,GAAgBkH,GAAvB;AACD,GALD;;AAOA,SACE5J,4BAAA,CAACmD,WAAD;AACEjD,IAAAA,SAAS,EAAC;kBACE4J,wBAAwB,CAACF,GAAD,EAAMlH,KAAN,CAAxB,GAAuC;sBACpC;GAHjB,EAKGmH,WAAW,IACV7J,4BAAA,CAAC+J,WAAD,MAAA,EACE/J,4BAAA,CAACgK,eAAD,MAAA,EACGtH,KADH,KAAA,EACWkH,GADX,CADF,CANJ,EAYE5J,4BAAA,MAAA;AAAKE,IAAAA,SAAS,EAAC;GAAf,EACEF,4BAAA,MAAA;AACEE,IAAAA,SAAS,2BAAyBmI,KAAzB;AACT1F,IAAAA,KAAK,EAAE;AACLsH,MAAAA,IAAI,EAAE,KADD;AAELnI,MAAAA,KAAK,EAAEgI,wBAAwB,CAACF,GAAD,EAAMlH,KAAN,CAAxB,GAAuC;AAFzC;GAFT,CADF,CAZF,EAqBE1C,4BAAA,MAAA;AAAKE,IAAAA,SAAS,EAAC;GAAf,CArBF,EAsBEF,4BAAA,MAAA;AAAKE,IAAAA,SAAS,EAAC;GAAf,CAtBF,CADF;AA0BD,CAvCM;AAyCP,IAAM8J,eAAe,gBAAG7J,MAAM,CAACsI,IAAV;AAAA;AAAA;AAAA,8HAArB;AAWA,IAAMsB,WAAW,gBAAG5J,MAAM,CAACqD,GAAV;AAAA;AAAA;AAAA,qCAAjB;AAKA,IAAML,WAAS,gBAAGhD,MAAM,CAACqD,GAAV;AAAA;AAAA;AAAA,kGAAf;;ICtDa0G,UAAU,GAA0B,SAApCA,UAAoC;MAC/CC,YAAAA;MACA7J,aAAAA;MACAC,gBAAAA;;AAEA,kBAA0CM,cAAQ,EAAlD;AAAA,MAAOoB,aAAP;AAAA,MAAsBC,gBAAtB;;AACA,MAAMnB,WAAW,GAAG,SAAdA,WAAc;AAClB,QAAII,OAAO,GAAGgB,QAAQ,CAACiI,aAAT,iBACED,IADF,eAAd;AAGA,QAAME,YAAY,GAAGlJ,OAAO,CAACuB,KAA7B;AACAR,IAAAA,gBAAgB,CAACmI,YAAD,CAAhB;AACD,GAND;;AAQArJ,EAAAA,eAAS,CAAC;AACR,QAAIiB,aAAJ,EAAmB;AACjB1B,MAAAA,QAAQ,CAAC0B,aAAD,CAAR;AACD;AACF,GAJQ,EAIN,CAACA,aAAD,CAJM,CAAT;AAMA,SACEjC,4BAAA,MAAA;AAAKiB,IAAAA,EAAE,EAAC;GAAR,EACGX,KAAK,CAACY,GAAN,CAAU,UAACC,OAAD;AACT,WACEnB,4BAAA,wBAAA,MAAA,EACEA,4BAAA,QAAA;AACEqB,MAAAA,GAAG,EAAEF,OAAO,CAACuB;AACbxC,MAAAA,SAAS,EAAC;AACVwC,MAAAA,KAAK,EAAEvB,OAAO,CAACuB;AACfyH,MAAAA,IAAI,EAAEA;AACN7I,MAAAA,IAAI,EAAC;KALP,CADF,EAQEtB,4BAAA,QAAA;AAAOwB,MAAAA,OAAO,EAAET;KAAhB,EAA8BI,OAAO,CAACP,KAAtC,CARF,EASEZ,4BAAA,KAAA,MAAA,CATF,CADF;AAaD,GAdA,CADH,CADF;AAmBD,CAvCM;;ACPP,WAAYsK;AACVA,EAAAA,yBAAA,iBAAA;AACAA,EAAAA,6BAAA,wBAAA;AACD,CAHD,EAAYA,uBAAe,KAAfA,uBAAe,KAAA,CAA3B;;AAaA,IAAaC,WAAW,GAAgC,SAA3CA,WAA2C;MACtDjJ,YAAAA;MACAkJ,gBAAAA;MACAC,gBAAAA;MACA3I,aAAAA;MACAvB,gBAAAA;AAEA,MAAMmK,QAAQ,GAAG1I,OAAM,EAAvB;;AAEA,kBAAkDnB,cAAQ,CAAU,KAAV,CAA1D;AAAA,MAAO8J,iBAAP;AAAA,MAA0BC,oBAA1B;;AAEAjF,EAAAA,gBAAgB,CAAC,SAAD,EAAY;AAC1B,QAAIgF,iBAAJ,EAAuB;AACrBE,MAAAA,eAAe;AAChB;;AACDD,IAAAA,oBAAoB,CAAC,KAAD,CAApB;AACD,GALe,CAAhB;;AAOA,MAAMC,eAAe,GAAG,SAAlBA,eAAkB;AACtB,QAAMC,WAAW,GAAG3I,QAAQ,CAACC,cAAT,mBAAwCsI,QAAxC,CAApB;;AACA,QAAMhI,KAAK,GAAGjB,MAAM,CAACa,SAAP,CAAiBwI,WAAjB,CAAd;;AAEAvK,IAAAA,QAAQ,CAACwK,MAAM,CAACrI,KAAD,CAAP,CAAR;AACD,GALD;;AAOA,SACE1C,4BAAA,MAAA;AACEgL,IAAAA,SAAS,EAAEH;AACXI,IAAAA,WAAW,EAAE;AAAA,aAAML,oBAAoB,CAAC,IAAD,CAA1B;AAAA;GAFf,EAIE5K,4BAAA,CAAC6C,OAAD;AACE3C,IAAAA,SAAS,EACPoB,IAAI,KAAKgJ,uBAAe,CAACY,MAAzB,GACIZ,uBAAe,CAACY,MADpB,GAEIZ,uBAAe,CAACa;AAEtB7J,IAAAA,IAAI,EAAC;AACLqB,IAAAA,KAAK,EAAE;AAAEb,MAAAA,KAAK,EAAEA;AAAT;AACPsJ,IAAAA,GAAG,EAAEZ;AACLZ,IAAAA,GAAG,EAAEa;AACLxJ,IAAAA,EAAE,oBAAkByJ;GAVtB,CAJF,CADF;AAmBD,CA5CM;AA8CP,IAAM7H,OAAK,gBAAG1C,MAAM,CAACkL,KAAV;AAAA;AAAA;AAAA,kBAAX;;ICzDaC,QAAQ,GAAwB,SAAhCA,QAAgC;MAAMvL;;AACjD,SAAOC,4BAAA,WAAA,oBAAcD,MAAd,CAAP;AACD,CAFM;;ACRP;AACA,IAQawL,QAAQ,GAAqB,SAA7BA,QAA6B;2BAAGC;MAAAA,sCAAW;MAAG3L,gBAAAA;AACzD,SAAOG,4BAAA,CAACmD,WAAD;AAAWqI,IAAAA,QAAQ,EAAEA;GAArB,EAAgC3L,QAAhC,CAAP;AACD,CAFM;AAQP,IAAMsD,WAAS,gBAAGhD,MAAM,CAACqD,GAAV;AAAA;AAAA;AAAA,gIAIS,UAACzD,KAAD;AAAA,SAAWA,KAAK,CAACyL,QAAjB;AAAA,CAJT,CAAf;;;;;;;;;;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),n=e(t),r=e(require("styled-components")),i=require("uuid");function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}require("rpgui/rpgui.min.css"),require("rpgui/rpgui.min.js");var a,l=["children","buttonType"];(a=exports.ButtonTypes||(exports.ButtonTypes={})).RPGUIButton="rpgui-button",a.RPGUIGoldButton="rpgui-button golden";var u,s=r.button.withConfig({displayName:"Button__ButtonContainer",componentId:"sc-obzd3o-0"})(["height:45px;font-size:11.5px;"]),c=RPGUI,d=function(e){return n.createElement("div",{className:"rpgui-content"},e.children)},p=r.div.withConfig({displayName:"ListMenu__Container",componentId:"sc-i9097t-0"})(["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(e){return e.y||0}),(function(e){return e.x||0}),(function(e){return e.fontSize})),m=r.li.withConfig({displayName:"ListMenu__ListElement",componentId:"sc-i9097t-1"})(["margin-right:0.5rem;"]);(u=exports.RPGUIContainerTypes||(exports.RPGUIContainerTypes={})).Framed="framed",u.FramedGold="framed-golden",u.FramedGold2="framed-golden-2",u.FramedGrey="framed-grey";var f=function(e){var t=e.width;return n.createElement(g,{width:void 0===t?"50%":t,height:e.height||"auto",className:"rpgui-container "+e.type},e.children)},g=r.div.withConfig({displayName:"RPGUIContainer__Container",componentId:"sc-a8l4p8-0"})(["height:",";width:",";display:flex;flex-wrap:wrap;image-rendering:pixelated;"],(function(e){return e.height}),(function(e){return e.width}));const x=require("./alice.png"),h=require("./space.gif");var v,w=function(e){var r=e.text,i=e.onFinish,o=e.onStart,a=t.useState(""),l=a[0],u=a[1];return t.useEffect((function(){var e=0,t=setInterval((function(){0===e&&o&&o(),e<r.length?(u(r.substring(0,e+1)),e++):(clearInterval(t),i&&i())}),50);return function(){clearInterval(t)}}),[r]),n.createElement(y,null,l)},y=r.p.withConfig({displayName:"DynamicText__TextContainer",componentId:"sc-1ggl9nd-0"})(["font-size:0.7rem !important;color:white;text-shadow:1px 1px 0px #000000;letter-spacing:1.2px;word-break:normal;"]),E=function(e){var r=e.onClose,i=e.onEndStep,o=e.onStartStep,a=e.text.match(new RegExp(".{1,85}","g")),l=t.useState(0),u=l[0],s=l[1],c=function(e){"Space"===e.code&&((null==a?void 0:a[u+1])?s((function(e){return e+1})):r())};return t.useEffect((function(){return document.addEventListener("keydown",c),function(){return document.removeEventListener("keydown",c)}}),[u]),n.createElement(b,null,n.createElement(w,{text:(null==a?void 0:a[u])||"",onFinish:i,onStart:o}))},b=r.div.withConfig({displayName:"NPCDialogText__Container",componentId:"sc-1cxkdh9-0"})([""]),C=function(e,t,r){void 0===r&&(r=window);var i=n.useRef();n.useEffect((function(){i.current=t}),[t]),n.useEffect((function(){var t=function(e){return i.current(e)};return r.addEventListener(e,t),function(){r.removeEventListener(e,t)}}),[e,r])},I=function(e){var r=e.questions,i=e.answers,o=e.onClose,a=t.useState(r[0]),l=a[0],u=a[1],s=t.useState(!1),c=s[0],d=s[1],p=function(){if(!l.answerIds||0===l.answerIds.length)return null;var e=l.answerIds[0];return i.find((function(t){return t.id===e}))},m=t.useState(p()),f=m[0],g=m[1];t.useEffect((function(){g(p())}),[l]);var x=function(e){return e.map((function(e){return i.find((function(t){return t.id===e}))}))};return C("keydown",(function(e){switch(e.key){case"ArrowDown":var t=x(l.answerIds).findIndex((function(e){return(null==e?void 0:e.id)===f.id+1})),n=l.answerIds[t],i=x(l.answerIds).find((function(e){return(null==e?void 0:e.id)===n}));g(i||p());break;case"ArrowUp":var a=x(l.answerIds).findIndex((function(e){return(null==e?void 0:e.id)===f.id-1})),s=l.answerIds&&l.answerIds[a],c=x(l.answerIds).find((function(e){return(null==e?void 0:e.id)===s}));g(c||x(l.answerIds).pop());break;case"Enter":if(d(!1),null==f||!f.nextQuestionId)return void o();u(r.find((function(e){return e.id===f.nextQuestionId})))}})),n.createElement(N,null,n.createElement(_,null,n.createElement(w,{text:l.text,onStart:function(){return d(!1)},onFinish:function(){return d(!0)}})),c&&n.createElement(T,null,function(){var e=l.answerIds;if(!e)return null;var t=x(e);return t?t.map((function(e){var t=(null==f?void 0:f.id)===(null==e?void 0:e.id),i=t?"yellow":"white";return e?n.createElement(P,{key:"answer_"+e.id},n.createElement(k,{color:i},t?"X":null),n.createElement(S,{key:e.id,onClick:function(){return function(e){d(!1),e.nextQuestionId?u(r.find((function(t){return t.id===e.nextQuestionId}))):o()}(e)},color:i},e.text)):null})):null}()))},N=r.div.withConfig({displayName:"QuestionDialog__Container",componentId:"sc-bxc5u0-0"})(["display:flex;word-break:break-all;box-sizing:border-box;justify-content:flex-start;align-items:flex-start;flex-wrap:wrap;"]),_=r.div.withConfig({displayName:"QuestionDialog__QuestionContainer",componentId:"sc-bxc5u0-1"})(["flex:100%;width:100%;"]),T=r.div.withConfig({displayName:"QuestionDialog__AnswersContainer",componentId:"sc-bxc5u0-2"})(["flex:100%;"]),S=r.p.withConfig({displayName:"QuestionDialog__Answer",componentId:"sc-bxc5u0-3"})(["flex:auto;color:"," !important;font-size:0.65rem !important;background:inherit;border:none;"],(function(e){return e.color})),k=r.span.withConfig({displayName:"QuestionDialog__AnswerSelectedIcon",componentId:"sc-bxc5u0-4"})(["flex:5% 0 0;color:"," !important;"],(function(e){return e.color})),P=r.div.withConfig({displayName:"QuestionDialog__AnswerRow",componentId:"sc-bxc5u0-5"})(["display:flex;flex-wrap:wrap;justify-content:center;align-items:center;margin-bottom:0.5rem;height:22px;p{line-height:unset;margin-top:0;margin-bottom:0rem;}"]);(v=exports.NPCDialogType||(exports.NPCDialogType={})).TextOnly="TextOnly",v.TextAndThumbnail="TextAndThumbnail";var D,R=r.div.withConfig({displayName:"NPCDialog__Container",componentId:"sc-1b4aw74-0"})(["display:flex;width:100%;height:100%;box-sizing:border-box;justify-content:center;align-items:flex-start;position:relative;"]),G=r.div.withConfig({displayName:"NPCDialog__TextContainer",componentId:"sc-1b4aw74-1"})(["flex:"," 0 0;width:355px;"],(function(e){return e.flex})),j=r.div.withConfig({displayName:"NPCDialog__ThumbnailContainer",componentId:"sc-1b4aw74-2"})(["flex:30% 0 0;display:flex;justify-content:flex-end;"]),q=r.img.withConfig({displayName:"NPCDialog__NPCThumbnail",componentId:"sc-1b4aw74-3"})(["image-rendering:pixelated;height:128px;width:128px;"]),A=r.img.withConfig({displayName:"NPCDialog__PressSpaceIndicator",componentId:"sc-1b4aw74-4"})(["position:absolute;right:",";bottom:1rem;height:20.7px;image-rendering:-webkit-optimize-contrast;"],(function(e){return e.right})),L=r.div.withConfig({displayName:"ProgressBar__Container",componentId:"sc-qa6fzh-0"})(["display:flex;flex-direction:column;width:20%;justify-content:start;align-items:flex-start;"]);(D=exports.RangeSliderType||(exports.RangeSliderType={})).Slider="rpgui-slider",D.GoldSlider="rpgui-slider golden";var Q=r.input.withConfig({displayName:"RangeSlider__Input",componentId:"sc-v8mte9-0"})(["opacity:0;"]),z=r.div.withConfig({displayName:"Truncate__Container",componentId:"sc-6x00qb-0"})(["display:-webkit-box;max-width:100%;max-height:100%;-webkit-line-clamp:",";-webkit-box-orient:vertical;overflow:hidden;"],(function(e){return e.maxLines}));exports.Button=function(e){var t=e.children,r=e.buttonType,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(i[n]=e[n]);return i}(e,l);return n.createElement(s,Object.assign({className:""+r},i),n.createElement("p",null,t))},exports.CheckButton=function(e){var r=e.items,i=e.onChange,a=t.useState(function(){var e={};return r.forEach((function(t){e[t.label]=!1})),e}()),l=a[0],u=a[1];return t.useEffect((function(){l&&i(l)}),[l]),n.createElement("div",{id:"elemento-checkbox"},null==r?void 0:r.map((function(e,t){return n.createElement("div",{key:e.label+"_"+t},n.createElement("input",{className:"rpgui-checkbox",type:"checkbox",checked:l[e.label],onChange:function(){}}),n.createElement("label",{onClick:function(){var t,n;u(o({},l,((n={})[t=e.label]=!l[t],n)))}},e.label),n.createElement("br",null))})))},exports.Dropdown=function(e){var r=e.options,o=e.width,a=e.onChange,l=i.v4(),u=t.useState(""),s=u[0],d=u[1];return t.useEffect((function(){var e=document.getElementById("rpgui-dropdown-"+l),t=c.get_value(e);d(t),null==e||e.addEventListener("change",(function(e){d(null==e?void 0:e.target.value)}))}),[]),t.useEffect((function(){s&&a(s)}),[s]),n.createElement("select",{id:"rpgui-dropdown-"+l,style:{width:o},className:"rpgui-dropdown"},r.map((function(e){return n.createElement("option",{key:e.id,value:e.value},e.option)})))},exports.DynamicText=w,exports.Input=function(e){var t=o({},e);return n.createElement("input",Object.assign({},t))},exports.InputRadio=function(e){var r=e.name,i=e.items,o=e.onChange,a=t.useState(),l=a[0],u=a[1],s=function(){var e=document.querySelector("input[name="+r+"]:checked");u(e.value)};return t.useEffect((function(){l&&o(l)}),[l]),n.createElement("div",{id:"elemento-radio"},i.map((function(e){return n.createElement(n.Fragment,null,n.createElement("input",{key:e.value,className:"rpgui-radio",value:e.value,name:r,type:"radio"}),n.createElement("label",{onClick:s},e.label),n.createElement("br",null))})))},exports.ListMenu=function(e){var t=e.onSelected,r=e.fontSize;return n.createElement(p,{x:e.x,y:e.y,fontSize:void 0===r?.8:r},n.createElement("ul",{className:"rpgui-list-imp",style:{overflow:"hidden"}},e.options.map((function(e){return n.createElement(m,{key:e.text,onClick:function(){t(e.id)}},e.text)}))))},exports.NPCDialog=function(e){var r=e.text,i=e.type,o=e.onClose,a=e.imagePath,l=e.isQuestionDialog,u=void 0!==l&&l,s=e.questions,c=e.answers,d=t.useState(!1),p=d[0],m=d[1];return n.createElement(f,{type:exports.RPGUIContainerTypes.FramedGold,width:u?"600px":"50%",height:"180px"},u&&s&&c?n.createElement(n.Fragment,null,n.createElement(G,{flex:i===exports.NPCDialogType.TextAndThumbnail?"70%":"100%"},n.createElement(I,{questions:s,answers:c,onClose:function(){o&&o()}})),i===exports.NPCDialogType.TextAndThumbnail&&n.createElement(j,null,n.createElement(q,{src:a||x}))):n.createElement(n.Fragment,null,n.createElement(R,null,n.createElement(G,{flex:i===exports.NPCDialogType.TextAndThumbnail?"70%":"100%"},n.createElement(E,{onStartStep:function(){return m(!1)},onEndStep:function(){return m(!0)},text:r||"No text provided.",onClose:function(){o&&o()}})),i===exports.NPCDialogType.TextAndThumbnail&&n.createElement(j,null,n.createElement(q,{src:a||x}))),p&&n.createElement(A,{right:i===exports.NPCDialogType.TextOnly?"1rem":"10.5rem",src:h})))},exports.ProgressBar=function(e){var t=e.max,r=e.value,i=e.color,o=function(e,t){return t>e&&(t=e),100*t/e};return n.createElement(d,null,n.createElement(L,{className:"rpgui-progress","data-value":o(t,r)/100,"data-rpguitype":"progress"},n.createElement("div",{className:" rpgui-progress-track"},n.createElement("div",{className:"rpgui-progress-fill "+i+" ",style:{left:"0px",width:o(t,r)+"%"}})),n.createElement("div",{className:" rpgui-progress-left-edge"}),n.createElement("div",{className:" rpgui-progress-right-edge"})))},exports.QuestionDialog=I,exports.RPGUIContainer=f,exports.RPGUIRoot=d,exports.RangeSlider=function(e){var r=e.type,o=e.valueMin,a=e.valueMax,l=e.width,u=e.onChange,s=i.v4(),d=t.useState(!1),p=d[0],m=d[1];C("mouseup",(function(){p&&f(),m(!1)}));var f=function(){var e=document.getElementById("rpgui-slider-"+s),t=c.get_value(e);u(Number(t))};return n.createElement("div",{onMouseUp:f,onMouseDown:function(){return m(!0)}},n.createElement(Q,{className:r===exports.RangeSliderType.Slider?exports.RangeSliderType.Slider:exports.RangeSliderType.GoldSlider,type:"range",style:{width:l},min:o,max:a,id:"rpgui-slider-"+s}))},exports.TextArea=function(e){var t=o({},e);return n.createElement("textarea",Object.assign({},t))},exports.Truncate=function(e){var t=e.maxLines;return n.createElement(z,{maxLines:void 0===t?1:t},e.children)},exports._RPGUI=c,exports.useEventListener=C;
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),n=e(t),r=e(require("styled-components")),i=require("uuid");function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}require("rpgui/rpgui.min.css"),require("rpgui/rpgui.min.js");var a,l=["children","buttonType"];(a=exports.ButtonTypes||(exports.ButtonTypes={})).RPGUIButton="rpgui-button",a.RPGUIGoldButton="rpgui-button golden";var u,s=r.button.withConfig({displayName:"Button__ButtonContainer",componentId:"sc-obzd3o-0"})(["height:45px;font-size:11.5px;"]),c=RPGUI,d=r.div.withConfig({displayName:"ListMenu__Container",componentId:"sc-i9097t-0"})(["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(e){return e.y||0}),(function(e){return e.x||0}),(function(e){return e.fontSize})),p=r.li.withConfig({displayName:"ListMenu__ListElement",componentId:"sc-i9097t-1"})(["margin-right:0.5rem;"]);(u=exports.RPGUIContainerTypes||(exports.RPGUIContainerTypes={})).Framed="framed",u.FramedGold="framed-golden",u.FramedGold2="framed-golden-2",u.FramedGrey="framed-grey";var m=function(e){var t=e.width;return n.createElement(f,{width:void 0===t?"50%":t,height:e.height||"auto",className:"rpgui-container "+e.type},e.children)},f=r.div.withConfig({displayName:"RPGUIContainer__Container",componentId:"sc-a8l4p8-0"})(["height:",";width:",";display:flex;flex-wrap:wrap;image-rendering:pixelated;"],(function(e){return e.height}),(function(e){return e.width}));const g=require("./alice.png"),x=require("./space.gif");var h,v=function(e){var r=e.text,i=e.onFinish,o=e.onStart,a=t.useState(""),l=a[0],u=a[1];return t.useEffect((function(){var e=0,t=setInterval((function(){0===e&&o&&o(),e<r.length?(u(r.substring(0,e+1)),e++):(clearInterval(t),i&&i())}),50);return function(){clearInterval(t)}}),[r]),n.createElement(w,null,l)},w=r.p.withConfig({displayName:"DynamicText__TextContainer",componentId:"sc-1ggl9nd-0"})(["font-size:0.7rem !important;color:white;text-shadow:1px 1px 0px #000000;letter-spacing:1.2px;word-break:normal;"]),y=function(e){var r=e.onClose,i=e.onEndStep,o=e.onStartStep,a=e.text.match(new RegExp(".{1,85}","g")),l=t.useState(0),u=l[0],s=l[1],c=function(e){"Space"===e.code&&((null==a?void 0:a[u+1])?s((function(e){return e+1})):r())};return t.useEffect((function(){return document.addEventListener("keydown",c),function(){return document.removeEventListener("keydown",c)}}),[u]),n.createElement(E,null,n.createElement(v,{text:(null==a?void 0:a[u])||"",onFinish:i,onStart:o}))},E=r.div.withConfig({displayName:"NPCDialogText__Container",componentId:"sc-1cxkdh9-0"})([""]),b=function(e,t,r){void 0===r&&(r=window);var i=n.useRef();n.useEffect((function(){i.current=t}),[t]),n.useEffect((function(){var t=function(e){return i.current(e)};return r.addEventListener(e,t),function(){r.removeEventListener(e,t)}}),[e,r])},C=function(e){var r=e.questions,i=e.answers,o=e.onClose,a=t.useState(r[0]),l=a[0],u=a[1],s=t.useState(!1),c=s[0],d=s[1],p=function(){if(!l.answerIds||0===l.answerIds.length)return null;var e=l.answerIds[0];return i.find((function(t){return t.id===e}))},m=t.useState(p()),f=m[0],g=m[1];t.useEffect((function(){g(p())}),[l]);var x=function(e){return e.map((function(e){return i.find((function(t){return t.id===e}))}))};return b("keydown",(function(e){switch(e.key){case"ArrowDown":var t=x(l.answerIds).findIndex((function(e){return(null==e?void 0:e.id)===f.id+1})),n=l.answerIds[t],i=x(l.answerIds).find((function(e){return(null==e?void 0:e.id)===n}));g(i||p());break;case"ArrowUp":var a=x(l.answerIds).findIndex((function(e){return(null==e?void 0:e.id)===f.id-1})),s=l.answerIds&&l.answerIds[a],c=x(l.answerIds).find((function(e){return(null==e?void 0:e.id)===s}));g(c||x(l.answerIds).pop());break;case"Enter":if(d(!1),null==f||!f.nextQuestionId)return void o();u(r.find((function(e){return e.id===f.nextQuestionId})))}})),n.createElement(I,null,n.createElement(N,null,n.createElement(v,{text:l.text,onStart:function(){return d(!1)},onFinish:function(){return d(!0)}})),c&&n.createElement(_,null,function(){var e=l.answerIds;if(!e)return null;var t=x(e);return t?t.map((function(e){var t=(null==f?void 0:f.id)===(null==e?void 0:e.id),i=t?"yellow":"white";return e?n.createElement(P,{key:"answer_"+e.id},n.createElement(S,{color:i},t?"X":null),n.createElement(T,{key:e.id,onClick:function(){return function(e){d(!1),e.nextQuestionId?u(r.find((function(t){return t.id===e.nextQuestionId}))):o()}(e)},color:i},e.text)):null})):null}()))},I=r.div.withConfig({displayName:"QuestionDialog__Container",componentId:"sc-bxc5u0-0"})(["display:flex;word-break:break-all;box-sizing:border-box;justify-content:flex-start;align-items:flex-start;flex-wrap:wrap;"]),N=r.div.withConfig({displayName:"QuestionDialog__QuestionContainer",componentId:"sc-bxc5u0-1"})(["flex:100%;width:100%;"]),_=r.div.withConfig({displayName:"QuestionDialog__AnswersContainer",componentId:"sc-bxc5u0-2"})(["flex:100%;"]),T=r.p.withConfig({displayName:"QuestionDialog__Answer",componentId:"sc-bxc5u0-3"})(["flex:auto;color:"," !important;font-size:0.65rem !important;background:inherit;border:none;"],(function(e){return e.color})),S=r.span.withConfig({displayName:"QuestionDialog__AnswerSelectedIcon",componentId:"sc-bxc5u0-4"})(["flex:5% 0 0;color:"," !important;"],(function(e){return e.color})),P=r.div.withConfig({displayName:"QuestionDialog__AnswerRow",componentId:"sc-bxc5u0-5"})(["display:flex;flex-wrap:wrap;justify-content:center;align-items:center;margin-bottom:0.5rem;height:22px;p{line-height:unset;margin-top:0;margin-bottom:0rem;}"]);(h=exports.NPCDialogType||(exports.NPCDialogType={})).TextOnly="TextOnly",h.TextAndThumbnail="TextAndThumbnail";var k,D=r.div.withConfig({displayName:"NPCDialog__Container",componentId:"sc-1b4aw74-0"})(["display:flex;width:100%;height:100%;box-sizing:border-box;justify-content:center;align-items:flex-start;position:relative;"]),R=r.div.withConfig({displayName:"NPCDialog__TextContainer",componentId:"sc-1b4aw74-1"})(["flex:"," 0 0;width:355px;"],(function(e){return e.flex})),G=r.div.withConfig({displayName:"NPCDialog__ThumbnailContainer",componentId:"sc-1b4aw74-2"})(["flex:30% 0 0;display:flex;justify-content:flex-end;"]),z=r.img.withConfig({displayName:"NPCDialog__NPCThumbnail",componentId:"sc-1b4aw74-3"})(["image-rendering:pixelated;height:128px;width:128px;"]),j=r.img.withConfig({displayName:"NPCDialog__PressSpaceIndicator",componentId:"sc-1b4aw74-4"})(["position:absolute;right:",";bottom:1rem;height:20.7px;image-rendering:-webkit-optimize-contrast;"],(function(e){return e.right})),q=r.span.withConfig({displayName:"ProgressBar__ProgressBarText",componentId:"sc-qa6fzh-0"})(["font-size:1rem;color:white;text-align:center;z-index:1;position:absolute;left:50%;transform:translateX(-50%);top:12px;"]),B=r.div.withConfig({displayName:"ProgressBar__TextOverlay",componentId:"sc-qa6fzh-1"})(["width:100%;position:relative;"]),A=r.div.withConfig({displayName:"ProgressBar__Container",componentId:"sc-qa6fzh-2"})(["display:flex;flex-direction:column;width:20%;justify-content:start;align-items:flex-start;"]);(k=exports.RangeSliderType||(exports.RangeSliderType={})).Slider="rpgui-slider",k.GoldSlider="rpgui-slider golden";var L=r.input.withConfig({displayName:"RangeSlider__Input",componentId:"sc-v8mte9-0"})(["opacity:0;"]),O=r.div.withConfig({displayName:"Truncate__Container",componentId:"sc-6x00qb-0"})(["display:-webkit-box;max-width:100%;max-height:100%;-webkit-line-clamp:",";-webkit-box-orient:vertical;overflow:hidden;"],(function(e){return e.maxLines}));exports.Button=function(e){var t=e.children,r=e.buttonType,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(i[n]=e[n]);return i}(e,l);return n.createElement(s,Object.assign({className:""+r},i),n.createElement("p",null,t))},exports.CheckButton=function(e){var r=e.items,i=e.onChange,a=t.useState(function(){var e={};return r.forEach((function(t){e[t.label]=!1})),e}()),l=a[0],u=a[1];return t.useEffect((function(){l&&i(l)}),[l]),n.createElement("div",{id:"elemento-checkbox"},null==r?void 0:r.map((function(e,t){return n.createElement("div",{key:e.label+"_"+t},n.createElement("input",{className:"rpgui-checkbox",type:"checkbox",checked:l[e.label],onChange:function(){}}),n.createElement("label",{onClick:function(){var t,n;u(o({},l,((n={})[t=e.label]=!l[t],n)))}},e.label),n.createElement("br",null))})))},exports.Dropdown=function(e){var r=e.options,o=e.width,a=e.onChange,l=i.v4(),u=t.useState(""),s=u[0],d=u[1];return t.useEffect((function(){var e=document.getElementById("rpgui-dropdown-"+l),t=c.get_value(e);d(t),null==e||e.addEventListener("change",(function(e){d(null==e?void 0:e.target.value)}))}),[]),t.useEffect((function(){s&&a(s)}),[s]),n.createElement("select",{id:"rpgui-dropdown-"+l,style:{width:o},className:"rpgui-dropdown"},r.map((function(e){return n.createElement("option",{key:e.id,value:e.value},e.option)})))},exports.DynamicText=v,exports.Input=function(e){var t=o({},e);return n.createElement("input",Object.assign({},t))},exports.InputRadio=function(e){var r=e.name,i=e.items,o=e.onChange,a=t.useState(),l=a[0],u=a[1],s=function(){var e=document.querySelector("input[name="+r+"]:checked");u(e.value)};return t.useEffect((function(){l&&o(l)}),[l]),n.createElement("div",{id:"elemento-radio"},i.map((function(e){return n.createElement(n.Fragment,null,n.createElement("input",{key:e.value,className:"rpgui-radio",value:e.value,name:r,type:"radio"}),n.createElement("label",{onClick:s},e.label),n.createElement("br",null))})))},exports.ListMenu=function(e){var t=e.onSelected,r=e.fontSize;return n.createElement(d,{x:e.x,y:e.y,fontSize:void 0===r?.8:r},n.createElement("ul",{className:"rpgui-list-imp",style:{overflow:"hidden"}},e.options.map((function(e){return n.createElement(p,{key:e.text,onClick:function(){t(e.id)}},e.text)}))))},exports.NPCDialog=function(e){var r=e.text,i=e.type,o=e.onClose,a=e.imagePath,l=e.isQuestionDialog,u=void 0!==l&&l,s=e.questions,c=e.answers,d=t.useState(!1),p=d[0],f=d[1];return n.createElement(m,{type:exports.RPGUIContainerTypes.FramedGold,width:u?"600px":"50%",height:"180px"},u&&s&&c?n.createElement(n.Fragment,null,n.createElement(R,{flex:i===exports.NPCDialogType.TextAndThumbnail?"70%":"100%"},n.createElement(C,{questions:s,answers:c,onClose:function(){o&&o()}})),i===exports.NPCDialogType.TextAndThumbnail&&n.createElement(G,null,n.createElement(z,{src:a||g}))):n.createElement(n.Fragment,null,n.createElement(D,null,n.createElement(R,{flex:i===exports.NPCDialogType.TextAndThumbnail?"70%":"100%"},n.createElement(y,{onStartStep:function(){return f(!1)},onEndStep:function(){return f(!0)},text:r||"No text provided.",onClose:function(){o&&o()}})),i===exports.NPCDialogType.TextAndThumbnail&&n.createElement(G,null,n.createElement(z,{src:a||g}))),p&&n.createElement(j,{right:i===exports.NPCDialogType.TextOnly?"1rem":"10.5rem",src:x})))},exports.ProgressBar=function(e){var t=e.max,r=e.value,i=e.color,o=e.displayText,a=void 0===o||o,l=function(e,t){return t>e&&(t=e),100*t/e};return n.createElement(A,{className:"rpgui-progress","data-value":l(t,r)/100,"data-rpguitype":"progress"},a&&n.createElement(B,null,n.createElement(q,null,r,"/",t)),n.createElement("div",{className:" rpgui-progress-track"},n.createElement("div",{className:"rpgui-progress-fill "+i+" ",style:{left:"0px",width:l(t,r)+"%"}})),n.createElement("div",{className:" rpgui-progress-left-edge"}),n.createElement("div",{className:" rpgui-progress-right-edge"}))},exports.QuestionDialog=C,exports.RPGUIContainer=m,exports.RPGUIRoot=function(e){return n.createElement("div",{className:"rpgui-content"},e.children)},exports.RangeSlider=function(e){var r=e.type,o=e.valueMin,a=e.valueMax,l=e.width,u=e.onChange,s=i.v4(),d=t.useState(!1),p=d[0],m=d[1];b("mouseup",(function(){p&&f(),m(!1)}));var f=function(){var e=document.getElementById("rpgui-slider-"+s),t=c.get_value(e);u(Number(t))};return n.createElement("div",{onMouseUp:f,onMouseDown:function(){return m(!0)}},n.createElement(L,{className:r===exports.RangeSliderType.Slider?exports.RangeSliderType.Slider:exports.RangeSliderType.GoldSlider,type:"range",style:{width:l},min:o,max:a,id:"rpgui-slider-"+s}))},exports.TextArea=function(e){var t=o({},e);return n.createElement("textarea",Object.assign({},t))},exports.Truncate=function(e){var t=e.maxLines;return n.createElement(O,{maxLines:void 0===t?1:t},e.children)},exports._RPGUI=c,exports.useEventListener=b;
2
2
  //# sourceMappingURL=long-bow.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"long-bow.cjs.production.min.js","sources":["../src/components/Button.tsx","../src/components/RPGUIContainer.tsx","../src/components/RPGUIRoot.tsx","../src/components/ListMenu.tsx","../src/components/NPCDialog/img/npcDialog/npcThumbnails/alice.png","../src/components/NPCDialog/img/space.gif","../src/libs/StringHelpers.ts","../src/components/NPCDialog/NPCDialog.tsx","../src/components/typography/DynamicText.tsx","../src/components/NPCDialog/NPCDialogText.tsx","../src/hooks/useEventListener.ts","../src/components/NPCDialog/QuestionDialog/QuestionDialog.tsx","../src/components/RangeSlider.tsx","../src/components/ProgressBar.tsx","../src/components/Truncate.tsx","../src/components/CheckButton.tsx","../src/components/Dropdown.tsx","../src/components/Input.tsx","../src/components/RadioButton.tsx","../src/components/TextArea.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 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","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 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","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, { 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';\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 { 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';\nimport styled from 'styled-components';\nimport { RPGUIRoot } from './RPGUIRoot';\n\nexport interface IBarProps {\n max: number;\n value: number;\n color: 'red' | 'blue' | 'green';\n}\n\nexport const ProgressBar: React.FC<IBarProps> = ({ max, value, color }) => {\n const calculatePercentageValue = function (max: number, value: number) {\n if (value > max) {\n value = max;\n }\n return (value * 100) / max;\n };\n\n return (\n <RPGUIRoot>\n <Container\n className=\"rpgui-progress\"\n data-value={calculatePercentageValue(max, value) / 100}\n data-rpguitype=\"progress\"\n >\n <div className=\" rpgui-progress-track\">\n <div\n className={`rpgui-progress-fill ${color} `}\n style={{\n left: '0px',\n width: calculatePercentageValue(max, value) + '%',\n }}\n ></div>\n </div>\n <div className=\" rpgui-progress-left-edge\"></div>\n <div className=\" rpgui-progress-right-edge\"></div>\n </Container>\n </RPGUIRoot>\n );\n};\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n width: 20%;\n justify-content: start;\n align-items: flex-start;\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","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, { 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, { 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 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"],"names":["ButtonTypes","RPGUIContainerTypes","ButtonContainer","styled","button","_RPGUI","RPGUI","RPGUIRoot","React","className","children","Container","div","props","y","x","fontSize","ListElement","li","RPGUIContainer","width","height","type","img","require","NPCDialogType","DynamicText","text","onFinish","onStart","useState","textState","setTextState","useEffect","i","interval","setInterval","length","substring","clearInterval","TextContainer","p","NPCDialogText","onClose","onEndStep","onStartStep","textChunks","match","RegExp","chunkIndex","setChunkIndex","onHandleSpacePress","event","code","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","id","currentAnswer","setCurrentAnswer","onGetAnswers","map","answerId","key","nextAnswerIndex","findIndex","nextAnswerID","nextAnswer","previousAnswerIndex","previousAnswerID","previousAnswer","pop","nextQuestionId","question","QuestionContainer","AnswersContainer","isSelected","selectedColor","AnswerRow","AnswerSelectedIcon","color","Answer","onClick","onAnswerClick","onRenderCurrentAnswers","span","RangeSliderType","flex","ThumbnailContainer","NPCThumbnail","PressSpaceIndicator","right","Input","input","maxLines","buttonType","items","onChange","selectedValues","forEach","item","label","generateSelectedValuesList","setSelectedValues","element","index","checked","options","dropdownId","uuidv4","selectedValue","setSelectedValue","getElementById","dropdownValue","get_value","target","value","style","option","name","handleClick","querySelector","onSelected","overflow","params","imagePath","isQuestionDialog","showGoNextIndicator","setShowGoNextIndicator","FramedGold","TextAndThumbnail","src","aliceDefaultThumbnail","TextOnly","pressSpaceGif","max","calculatePercentageValue","left","valueMin","valueMax","sliderId","wasMouseDownFirst","setWasMouseDownFirst","onHandleMouseUp","rpguiSlider","Number","onMouseUp","onMouseDown","Slider","GoldSlider","min"],"mappings":"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"}
1
+ {"version":3,"file":"long-bow.cjs.production.min.js","sources":["../src/components/Button.tsx","../src/components/RPGUIContainer.tsx","../src/components/RPGUIRoot.tsx","../src/components/ListMenu.tsx","../src/components/NPCDialog/img/npcDialog/npcThumbnails/alice.png","../src/components/NPCDialog/img/space.gif","../src/libs/StringHelpers.ts","../src/components/NPCDialog/NPCDialog.tsx","../src/components/typography/DynamicText.tsx","../src/components/NPCDialog/NPCDialogText.tsx","../src/hooks/useEventListener.ts","../src/components/NPCDialog/QuestionDialog/QuestionDialog.tsx","../src/components/RangeSlider.tsx","../src/components/ProgressBar.tsx","../src/components/Truncate.tsx","../src/components/CheckButton.tsx","../src/components/Dropdown.tsx","../src/components/Input.tsx","../src/components/RadioButton.tsx","../src/components/TextArea.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 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","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 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","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, { 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';\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 { 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';\nimport styled from 'styled-components';\n\nexport interface IBarProps {\n max: number;\n value: number;\n color: 'red' | 'blue' | 'green';\n displayText?: boolean;\n}\n\nexport const ProgressBar: React.FC<IBarProps> = ({\n max,\n value,\n color,\n displayText = true,\n}) => {\n const calculatePercentageValue = function (max: number, value: number) {\n if (value > max) {\n value = max;\n }\n return (value * 100) / max;\n };\n\n return (\n <Container\n className=\"rpgui-progress\"\n data-value={calculatePercentageValue(max, value) / 100}\n data-rpguitype=\"progress\"\n >\n {displayText && (\n <TextOverlay>\n <ProgressBarText>\n {value}/{max}\n </ProgressBarText>\n </TextOverlay>\n )}\n <div className=\" rpgui-progress-track\">\n <div\n className={`rpgui-progress-fill ${color} `}\n style={{\n left: '0px',\n width: calculatePercentageValue(max, value) + '%',\n }}\n ></div>\n </div>\n <div className=\" rpgui-progress-left-edge\"></div>\n <div className=\" rpgui-progress-right-edge\"></div>\n </Container>\n );\n};\n\nconst ProgressBarText = styled.span`\n font-size: 1rem;\n color: white;\n text-align: center;\n z-index: 1;\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n top: 12px;\n`;\n\nconst TextOverlay = styled.div`\n width: 100%;\n position: relative;\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n width: 20%;\n justify-content: start;\n align-items: flex-start;\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","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, { 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, { 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 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"],"names":["ButtonTypes","RPGUIContainerTypes","ButtonContainer","styled","button","_RPGUI","RPGUI","Container","div","props","y","x","fontSize","ListElement","li","RPGUIContainer","width","React","height","className","type","children","img","require","NPCDialogType","DynamicText","text","onFinish","onStart","useState","textState","setTextState","useEffect","i","interval","setInterval","length","substring","clearInterval","TextContainer","p","NPCDialogText","onClose","onEndStep","onStartStep","textChunks","match","RegExp","chunkIndex","setChunkIndex","onHandleSpacePress","event","code","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","id","currentAnswer","setCurrentAnswer","onGetAnswers","map","answerId","key","nextAnswerIndex","findIndex","nextAnswerID","nextAnswer","previousAnswerIndex","previousAnswerID","previousAnswer","pop","nextQuestionId","question","QuestionContainer","AnswersContainer","isSelected","selectedColor","AnswerRow","AnswerSelectedIcon","color","Answer","onClick","onAnswerClick","onRenderCurrentAnswers","span","RangeSliderType","flex","ThumbnailContainer","NPCThumbnail","PressSpaceIndicator","right","ProgressBarText","TextOverlay","Input","input","maxLines","buttonType","items","onChange","selectedValues","forEach","item","label","generateSelectedValuesList","setSelectedValues","element","index","checked","options","dropdownId","uuidv4","selectedValue","setSelectedValue","getElementById","dropdownValue","get_value","target","value","style","option","name","handleClick","querySelector","onSelected","overflow","params","imagePath","isQuestionDialog","showGoNextIndicator","setShowGoNextIndicator","FramedGold","TextAndThumbnail","src","aliceDefaultThumbnail","TextOnly","pressSpaceGif","max","displayText","calculatePercentageValue","left","valueMin","valueMax","sliderId","wasMouseDownFirst","setWasMouseDownFirst","onHandleMouseUp","rpguiSlider","Number","onMouseUp","onMouseDown","Slider","GoldSlider","min"],"mappings":"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"}
@@ -615,7 +615,9 @@ var PressSpaceIndicator = /*#__PURE__*/styled.img.withConfig({
615
615
  var ProgressBar = function ProgressBar(_ref) {
616
616
  var max = _ref.max,
617
617
  value = _ref.value,
618
- color = _ref.color;
618
+ color = _ref.color,
619
+ _ref$displayText = _ref.displayText,
620
+ displayText = _ref$displayText === void 0 ? true : _ref$displayText;
619
621
 
620
622
  var calculatePercentageValue = function calculatePercentageValue(max, value) {
621
623
  if (value > max) {
@@ -625,11 +627,11 @@ var ProgressBar = function ProgressBar(_ref) {
625
627
  return value * 100 / max;
626
628
  };
627
629
 
628
- return React.createElement(RPGUIRoot, null, React.createElement(Container$5, {
630
+ return React.createElement(Container$5, {
629
631
  className: "rpgui-progress",
630
632
  "data-value": calculatePercentageValue(max, value) / 100,
631
633
  "data-rpguitype": "progress"
632
- }, React.createElement("div", {
634
+ }, displayText && React.createElement(TextOverlay, null, React.createElement(ProgressBarText, null, value, "/", max)), React.createElement("div", {
633
635
  className: " rpgui-progress-track"
634
636
  }, React.createElement("div", {
635
637
  className: "rpgui-progress-fill " + color + " ",
@@ -641,11 +643,19 @@ var ProgressBar = function ProgressBar(_ref) {
641
643
  className: " rpgui-progress-left-edge"
642
644
  }), React.createElement("div", {
643
645
  className: " rpgui-progress-right-edge"
644
- })));
646
+ }));
645
647
  };
648
+ var ProgressBarText = /*#__PURE__*/styled.span.withConfig({
649
+ displayName: "ProgressBar__ProgressBarText",
650
+ componentId: "sc-qa6fzh-0"
651
+ })(["font-size:1rem;color:white;text-align:center;z-index:1;position:absolute;left:50%;transform:translateX(-50%);top:12px;"]);
652
+ var TextOverlay = /*#__PURE__*/styled.div.withConfig({
653
+ displayName: "ProgressBar__TextOverlay",
654
+ componentId: "sc-qa6fzh-1"
655
+ })(["width:100%;position:relative;"]);
646
656
  var Container$5 = /*#__PURE__*/styled.div.withConfig({
647
657
  displayName: "ProgressBar__Container",
648
- componentId: "sc-qa6fzh-0"
658
+ componentId: "sc-qa6fzh-2"
649
659
  })(["display:flex;flex-direction:column;width:20%;justify-content:start;align-items:flex-start;"]);
650
660
 
651
661
  var InputRadio = function InputRadio(_ref) {
@@ -1 +1 @@
1
- {"version":3,"file":"long-bow.esm.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/ProgressBar.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 from 'react';\nimport styled from 'styled-components';\nimport { RPGUIRoot } from './RPGUIRoot';\n\nexport interface IBarProps {\n max: number;\n value: number;\n color: 'red' | 'blue' | 'green';\n}\n\nexport const ProgressBar: React.FC<IBarProps> = ({ max, value, color }) => {\n const calculatePercentageValue = function (max: number, value: number) {\n if (value > max) {\n value = max;\n }\n return (value * 100) / max;\n };\n\n return (\n <RPGUIRoot>\n <Container\n className=\"rpgui-progress\"\n data-value={calculatePercentageValue(max, value) / 100}\n data-rpguitype=\"progress\"\n >\n <div className=\" rpgui-progress-track\">\n <div\n className={`rpgui-progress-fill ${color} `}\n style={{\n left: '0px',\n width: calculatePercentageValue(max, value) + '%',\n }}\n ></div>\n </div>\n <div className=\" rpgui-progress-left-edge\"></div>\n <div className=\" rpgui-progress-right-edge\"></div>\n </Container>\n </RPGUIRoot>\n );\n};\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n width: 20%;\n justify-content: start;\n align-items: flex-start;\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","ProgressBar","max","calculatePercentageValue","left","InputRadio","name","querySelector","elementValue","RangeSliderType","RangeSlider","valueMin","valueMax","sliderId","wasMouseDownFirst","setWasMouseDownFirst","onHandleMouseUp","rpguiSlider","Number","onMouseUp","onMouseDown","Slider","GoldSlider","min","input","TextArea","Truncate","maxLines"],"mappings":"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"}
1
+ {"version":3,"file":"long-bow.esm.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/ProgressBar.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 from 'react';\nimport styled from 'styled-components';\n\nexport interface IBarProps {\n max: number;\n value: number;\n color: 'red' | 'blue' | 'green';\n displayText?: boolean;\n}\n\nexport const ProgressBar: React.FC<IBarProps> = ({\n max,\n value,\n color,\n displayText = true,\n}) => {\n const calculatePercentageValue = function (max: number, value: number) {\n if (value > max) {\n value = max;\n }\n return (value * 100) / max;\n };\n\n return (\n <Container\n className=\"rpgui-progress\"\n data-value={calculatePercentageValue(max, value) / 100}\n data-rpguitype=\"progress\"\n >\n {displayText && (\n <TextOverlay>\n <ProgressBarText>\n {value}/{max}\n </ProgressBarText>\n </TextOverlay>\n )}\n <div className=\" rpgui-progress-track\">\n <div\n className={`rpgui-progress-fill ${color} `}\n style={{\n left: '0px',\n width: calculatePercentageValue(max, value) + '%',\n }}\n ></div>\n </div>\n <div className=\" rpgui-progress-left-edge\"></div>\n <div className=\" rpgui-progress-right-edge\"></div>\n </Container>\n );\n};\n\nconst ProgressBarText = styled.span`\n font-size: 1rem;\n color: white;\n text-align: center;\n z-index: 1;\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n top: 12px;\n`;\n\nconst TextOverlay = styled.div`\n width: 100%;\n position: relative;\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n width: 20%;\n justify-content: start;\n align-items: flex-start;\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","ProgressBar","max","displayText","calculatePercentageValue","TextOverlay","ProgressBarText","left","InputRadio","name","querySelector","elementValue","RangeSliderType","RangeSlider","valueMin","valueMax","sliderId","wasMouseDownFirst","setWasMouseDownFirst","onHandleMouseUp","rpguiSlider","Number","onMouseUp","onMouseDown","Slider","GoldSlider","min","input","TextArea","Truncate","maxLines"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rpg-engine/long-bow",
3
- "version": "0.1.36",
3
+ "version": "0.1.39",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -1,14 +1,19 @@
1
1
  import React from 'react';
2
2
  import styled from 'styled-components';
3
- import { RPGUIRoot } from './RPGUIRoot';
4
3
 
5
4
  export interface IBarProps {
6
5
  max: number;
7
6
  value: number;
8
7
  color: 'red' | 'blue' | 'green';
8
+ displayText?: boolean;
9
9
  }
10
10
 
11
- export const ProgressBar: React.FC<IBarProps> = ({ max, value, color }) => {
11
+ export const ProgressBar: React.FC<IBarProps> = ({
12
+ max,
13
+ value,
14
+ color,
15
+ displayText = true,
16
+ }) => {
12
17
  const calculatePercentageValue = function (max: number, value: number) {
13
18
  if (value > max) {
14
19
  value = max;
@@ -17,28 +22,49 @@ export const ProgressBar: React.FC<IBarProps> = ({ max, value, color }) => {
17
22
  };
18
23
 
19
24
  return (
20
- <RPGUIRoot>
21
- <Container
22
- className="rpgui-progress"
23
- data-value={calculatePercentageValue(max, value) / 100}
24
- data-rpguitype="progress"
25
- >
26
- <div className=" rpgui-progress-track">
27
- <div
28
- className={`rpgui-progress-fill ${color} `}
29
- style={{
30
- left: '0px',
31
- width: calculatePercentageValue(max, value) + '%',
32
- }}
33
- ></div>
34
- </div>
35
- <div className=" rpgui-progress-left-edge"></div>
36
- <div className=" rpgui-progress-right-edge"></div>
37
- </Container>
38
- </RPGUIRoot>
25
+ <Container
26
+ className="rpgui-progress"
27
+ data-value={calculatePercentageValue(max, value) / 100}
28
+ data-rpguitype="progress"
29
+ >
30
+ {displayText && (
31
+ <TextOverlay>
32
+ <ProgressBarText>
33
+ {value}/{max}
34
+ </ProgressBarText>
35
+ </TextOverlay>
36
+ )}
37
+ <div className=" rpgui-progress-track">
38
+ <div
39
+ className={`rpgui-progress-fill ${color} `}
40
+ style={{
41
+ left: '0px',
42
+ width: calculatePercentageValue(max, value) + '%',
43
+ }}
44
+ ></div>
45
+ </div>
46
+ <div className=" rpgui-progress-left-edge"></div>
47
+ <div className=" rpgui-progress-right-edge"></div>
48
+ </Container>
39
49
  );
40
50
  };
41
51
 
52
+ const ProgressBarText = styled.span`
53
+ font-size: 1rem;
54
+ color: white;
55
+ text-align: center;
56
+ z-index: 1;
57
+ position: absolute;
58
+ left: 50%;
59
+ transform: translateX(-50%);
60
+ top: 12px;
61
+ `;
62
+
63
+ const TextOverlay = styled.div`
64
+ width: 100%;
65
+ position: relative;
66
+ `;
67
+
42
68
  const Container = styled.div`
43
69
  display: flex;
44
70
  flex-direction: column;