{"version":3,"file":"hooks.36a6d822.js","sources":["../../../frontend/features/common/components/Input/index.js","../../../frontend/features/common/components/Radio/index.js","../../../frontend/features/common/components/RadioGroup/index.js","../../../frontend/features/ideation/components/base/TextAreaInput/index.js","../../../frontend/features/common/components/YoutubeEmbedder/index.js","../../../frontend/features/engagement/enums/InputType.js","../../../frontend/features/engagement/components/inputs/ButtonSelectInput/Option/index.js","../../../frontend/features/engagement/components/inputs/ButtonSelectInput/index.js","../../../frontend/features/engagement/components/inputs/CardSelectInput/Card/index.js","../../../frontend/features/engagement/components/inputs/CardSelectInput/index.js","../../../frontend/features/engagement/components/inputs/RadioSelectInput/index.js","../../../node_modules/react-leaflet/esm/hooks.js"],"sourcesContent":["/* eslint-disable react/prop-types */\n// Libraries\nimport React, { forwardRef } from 'react';\nimport classNames from 'classnames';\n\nconst Input = forwardRef(({ className, ariaLabel, ...props }, ref) => (\n <input\n type=\"text\"\n aria-label={ariaLabel}\n className={classNames(className, 'input is-medium')}\n {...props}\n ref={ref}\n />\n));\n\nexport default Input;\n","// Libraries\nimport React from 'react';\nimport classNames from 'classnames';\n\nconst Radio = ({ className, type, checked, ...props }) => (\n <input\n tabIndex={0}\n aria-checked={checked}\n checked={checked}\n className={classNames(className, 'radio__control-input')}\n type=\"radio\"\n {...props}\n />\n);\n\nexport default Radio;\n","// Libraries\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\n\n// Utilities\nimport { generateHtmlIdForLabel } from '../../utils/helpers';\n\n// Components\nimport Radio from '../Radio';\n\nexport class RadioGroup extends PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n selectedOption: props.initialValue,\n };\n }\n\n getOptionClickHandler = (id) => () => {\n const { onChange } = this.props;\n const { selectedOption } = this.state;\n\n if (selectedOption !== id) {\n this.setState({\n selectedOption: id,\n });\n\n if (onChange) {\n onChange(id);\n }\n }\n };\n\n renderOption = ({ id, label }) => {\n const { selectedOption } = this.state;\n const { t } = this.props;\n const htmlId = generateHtmlIdForLabel(`${label}-${id}`);\n\n return (\n <div key={id} className=\"radio\">\n <label htmlFor={htmlId} className=\"radio__control-label is-primary-color\">\n <Radio\n id={htmlId}\n checked={selectedOption === id}\n onChange={this.getOptionClickHandler(id)}\n />\n <div className=\"radio__control-display\" />\n {t(label, { defaultValue: label })}\n </label>\n </div>\n );\n };\n\n render() {\n const { options } = this.props;\n\n return (\n <div className=\"radio-group\" role=\"group\" tabIndex={0}>\n {options.map(this.renderOption)}\n </div>\n );\n }\n}\n\nRadioGroup.propTypes = {\n t: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n label: PropTypes.string.isRequired,\n })\n ).isRequired,\n initialValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onChange: PropTypes.func,\n};\n\nRadioGroup.defaultProps = {\n initialValue: null,\n onChange: null,\n};\n\nexport default withTranslation()(RadioGroup);\n","// Libraries\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\nconst TextAreaInput = ({\n id,\n name,\n label,\n register,\n validations,\n renderHelpItems,\n error,\n placeholder,\n}) => {\n const { t } = useTranslation();\n\n return (\n <div className=\"input-section\">\n <label className=\"label is-primary-color\" htmlFor={id}>\n {label}\n {validations.required ? ' *' : ''}\n </label>\n <textarea\n id={id}\n aria-label={label}\n className={classNames('textarea input is-medium', { 'is-danger': error })}\n placeholder={placeholder}\n {...register(name, validations)}\n />\n {renderHelpItems()}\n {error && <span className=\"input-error\">{t(error.message)}</span>}\n </div>\n );\n};\n\nTextAreaInput.propTypes = {\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n register: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n validations: PropTypes.objectOf(PropTypes.any),\n renderHelpItems: PropTypes.func,\n error: PropTypes.shape({ message: PropTypes.string.isRequired }),\n placeholder: PropTypes.string,\n};\n\nTextAreaInput.defaultProps = {\n validations: {},\n renderHelpItems: () => {},\n error: null,\n placeholder: '',\n};\n\nexport default TextAreaInput;\n","// Libraries\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst YoutubeEmbedder = ({ id }) => (\n <div className=\"youtube-embedder\">\n <div className=\"video-embedder\">\n <iframe\n title=\"Youtube video\"\n src={`https://www.youtube.com/embed/${id}?rel=0`}\n frameBorder=\"0\"\n allowFullScreen\n />\n </div>\n </div>\n);\n\nYoutubeEmbedder.propTypes = {\n id: PropTypes.string.isRequired,\n};\n\nexport default YoutubeEmbedder;\n","export default Object.freeze({\n BUTTON: 'button',\n});\n","// Libraries\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nconst Option = ({ id, label, selected, onClick }) => (\n <div className={classNames('select-input-option', { selected })}>\n <input\n type=\"radio\"\n id={`select-option-${id}`}\n aria-label={label}\n aria-checked={selected}\n checked={selected}\n onChange={onClick}\n />\n <label htmlFor={`select-option-${id}`} className=\"is-secondary-color is-primary-outline\">\n {label}\n </label>\n </div>\n);\n\nOption.propTypes = {\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n label: PropTypes.string.isRequired,\n selected: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n};\n\nexport default Option;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Option from './Option';\n\n/**\n * Text options selector component.\n * Can be used both as radio buttons or checkboxes (single / multi selection).\n */\nclass ButtonSelectInput extends Component {\n static propTypes = {\n /**\n * Array of options.\n */\n options: PropTypes.arrayOf(\n PropTypes.shape({\n /**\n * ID used to uniquely identify the option.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * Label to show in option's card.\n */\n label: PropTypes.string.isRequired,\n })\n ).isRequired,\n /**\n * (Optional) Initial selected option.\n */\n initialValue: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n /**\n * (Optional) Allow multiple selections. Defaults to false.\n */\n multipleSelection: PropTypes.bool,\n /**\n * (Optional) Callback to run when selection is changed.\n * Array of selected option ID's is passed to callback as first argument.\n */\n onChange: PropTypes.func,\n };\n\n static defaultProps = {\n initialValue: [],\n multipleSelection: false,\n onChange: null,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n selectedOptions: new Set(props.initialValue),\n };\n }\n\n getOptionClickHandler = (id) => () => {\n const { multipleSelection, onChange } = this.props;\n const { selectedOptions } = this.state;\n const isSelected = selectedOptions.has(id);\n\n if (!multipleSelection) {\n selectedOptions.clear();\n }\n\n if (isSelected) {\n selectedOptions.delete(id);\n } else {\n selectedOptions.add(id);\n }\n\n const newSelectedOptions = new Set(selectedOptions);\n\n this.setState({\n selectedOptions: newSelectedOptions,\n });\n\n if (onChange) {\n onChange([...newSelectedOptions]);\n }\n };\n\n render() {\n const { options } = this.props;\n const { selectedOptions } = this.state;\n\n return (\n <div className=\"select-input\" data-test=\"select-input\" role=\"group\" tabIndex={0}>\n {options.map(({ id, label }) => (\n <Option\n key={id}\n id={id}\n label={label}\n selected={selectedOptions.has(id)}\n onClick={this.getOptionClickHandler(id)}\n />\n ))}\n </div>\n );\n }\n}\n\nexport default ButtonSelectInput;\n","// Libraries\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\n// Components\nimport YoutubeEmbedder from 'common/components/YoutubeEmbedder';\n\nconst Card = ({ label, imageUrl, youtubeId, selected, onClick }) => (\n <div className={classNames('checkbox-cards-input-card', 'card', { selected })} onClick={onClick}>\n {imageUrl && (\n <div className=\"card-image\">\n <figure className=\"image is-4by3\">\n <img src={imageUrl} draggable={false} alt=\"\" />\n </figure>\n </div>\n )}\n {youtubeId && <YoutubeEmbedder id={youtubeId} />}\n <div className=\"card-content\">\n <div className=\"content\">\n <span className=\"label is-primary-color\">{label}</span>\n <div className=\"checkbox\">\n <i className=\"fas fa-check\" />\n </div>\n </div>\n </div>\n </div>\n);\n\nCard.propTypes = {\n label: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n youtubeId: PropTypes.string,\n selected: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n};\n\nCard.defaultProps = {\n imageUrl: null,\n youtubeId: null,\n};\n\nexport default Card;\n","// Libraries\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport Card from './Card';\n\n// Constants\nconst SPACE = 'Space';\n\nclass CardSelectInput extends PureComponent {\n state = {\n selectedOptions: new Set(),\n cardId: null,\n };\n\n componentDidMount() {\n const { initialValue } = this.props;\n this.setState({ selectedOptions: new Set(initialValue) });\n }\n\n addKeyDownListener = (id) => {\n this.setState({ cardId: id });\n document.addEventListener('keydown', this.handleKeyDown);\n };\n\n removeKeyDownListener = () => {\n this.setState({ cardId: null });\n document.removeEventListener('keydown', this.handleKeyDown);\n };\n\n handleKeyDown = (event) => {\n const { cardId } = this.state;\n if (event.code === SPACE) {\n event.preventDefault();\n this.getCardClickHandler(cardId);\n }\n };\n\n getCardClickHandler = (id) => {\n const { multipleSelection, onChange } = this.props;\n const { selectedOptions } = this.state;\n const isSelected = selectedOptions.has(id);\n\n if (!multipleSelection) {\n selectedOptions.clear();\n }\n\n if (isSelected) {\n selectedOptions.delete(id);\n } else {\n selectedOptions.add(id);\n }\n\n const newSelectedOptions = new Set(selectedOptions);\n\n this.setState({\n selectedOptions: newSelectedOptions,\n });\n\n if (onChange) {\n onChange([...newSelectedOptions]);\n }\n };\n\n render() {\n const { options, multipleSelection } = this.props;\n const { selectedOptions } = this.state;\n\n return (\n <div className=\"card-select-input\">\n <div className=\"columns\">\n {options.map(({ id, label, imageUrl, youtubeId }) => (\n <div\n tabIndex={0}\n className=\"column\"\n key={id}\n aria-label={`${label}-selector`}\n onFocus={() => this.addKeyDownListener(id)}\n onBlur={() => this.removeKeyDownListener(id)}\n role={multipleSelection ? 'checkbox' : 'radio'}\n aria-checked={selectedOptions.has(id)}\n >\n <Card\n label={label}\n imageUrl={imageUrl}\n youtubeId={youtubeId}\n selected={selectedOptions.has(id)}\n onClick={() => this.getCardClickHandler(id)}\n />\n </div>\n ))}\n </div>\n </div>\n );\n }\n}\n\nCardSelectInput.propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n label: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n youtubeId: PropTypes.string,\n })\n ).isRequired,\n initialValue: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n multipleSelection: PropTypes.bool,\n onChange: PropTypes.func,\n};\n\nCardSelectInput.defaultProps = {\n initialValue: [],\n multipleSelection: false,\n onChange: null,\n};\n\nexport default CardSelectInput;\n","// Libraries\nimport React, { PureComponent, createRef } from 'react';\nimport { withTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\n\n// Components\nimport RadioGroup from 'common/components/RadioGroup';\nimport Input from 'common/components/Input';\n\n// Enumerables\nimport InputFormat from '../../../enums/InputFormat';\n\nexport class RadioSelectInput extends PureComponent {\n textChoiceInputRef = createRef();\n\n constructor(props) {\n super(props);\n\n const { options } = props;\n const textChoiceIndex = options.findIndex(({ format }) => format === InputFormat.TEXT_CHOICE);\n let textChoiceOptionId = null;\n\n if (textChoiceIndex !== -1) {\n const textChoiceOption = options.splice(textChoiceIndex, 1)[0];\n // Move text choice option to the end\n options.push(textChoiceOption);\n textChoiceOptionId = textChoiceOption.id;\n }\n\n this.state = {\n options,\n textChoiceOptionId,\n selectedOptionId: props.initialValue,\n textChoiceValue: props.initialTextChoiceValue,\n };\n }\n\n fireOnChange = () => {\n const { onChange } = this.props;\n const { selectedOptionId, textChoiceOptionId, textChoiceValue } = this.state;\n\n if (onChange) {\n onChange(selectedOptionId, selectedOptionId === textChoiceOptionId ? textChoiceValue : true);\n }\n };\n\n handleChange = (selectedOptionId) => {\n this.setState({ selectedOptionId }, () => {\n this.fireOnChange();\n\n if (this.textChoiceInputRef.current) {\n this.textChoiceInputRef.current.focus();\n }\n });\n };\n\n handleTextChoiceChange = ({ target: { value: textChoiceValue } }) => {\n this.setState({ textChoiceValue }, this.fireOnChange);\n };\n\n render() {\n const { options, selectedOptionId, textChoiceOptionId, textChoiceValue } = this.state;\n // eslint-disable-next-line react/prop-types\n const { t } = this.props;\n return (\n <div className=\"radio-select-input\">\n <RadioGroup\n options={options}\n initialValue={selectedOptionId}\n onChange={this.handleChange}\n />\n {textChoiceOptionId && (\n <Input\n value={textChoiceValue}\n onChange={this.handleTextChoiceChange}\n disabled={textChoiceOptionId !== selectedOptionId}\n ref={this.textChoiceInputRef}\n ariaLabel={t('Other (please specify)')}\n />\n )}\n </div>\n );\n }\n}\n\nRadioSelectInput.propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n label: PropTypes.string.isRequired,\n format: PropTypes.string.isRequired,\n })\n ).isRequired,\n initialValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n initialTextChoiceValue: PropTypes.string,\n onChange: PropTypes.func,\n};\n\nRadioSelectInput.defaultProps = {\n initialValue: null,\n initialTextChoiceValue: '',\n onChange: null,\n};\n\nexport default withTranslation()(RadioSelectInput);\n","import { useLeafletContext } from '@react-leaflet/core';\nimport { useEffect } from 'react';\nexport function useMap() {\n return useLeafletContext().map;\n}\nexport function useMapEvent(type, handler) {\n const map = useMap();\n useEffect(function addMapEventHandler() {\n // @ts-ignore event type\n map.on(type, handler);\n return function removeMapEventHandler() {\n // @ts-ignore event type\n map.off(type, handler);\n };\n }, [map, type, handler]);\n return map;\n}\nexport function useMapEvents(handlers) {\n const map = useMap();\n useEffect(function addMapEventHandlers() {\n map.on(handlers);\n return function removeMapEventHandlers() {\n map.off(handlers);\n };\n }, [map, handlers]);\n return map;\n}"],"names":["Input","forwardRef","className","ariaLabel","props","ref","React","classNames","Radio","type","checked","RadioGroup","PureComponent","__publicField","id","onChange","selectedOption","label","t","htmlId","generateHtmlIdForLabel","options","PropTypes","RadioGroup$1","withTranslation","TextAreaInput","name","register","validations","renderHelpItems","error","placeholder","useTranslation","YoutubeEmbedder","InputType","Option","selected","onClick","ButtonSelectInput","Component","multipleSelection","selectedOptions","isSelected","newSelectedOptions","Card","imageUrl","youtubeId","SPACE","CardSelectInput","event","cardId","initialValue","RadioSelectInput","createRef","selectedOptionId","textChoiceOptionId","textChoiceValue","textChoiceIndex","format","InputFormat","textChoiceOption","RadioSelectInput$1","useMap","useLeafletContext","useMapEvents","handlers","map","useEffect"],"mappings":"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"}