{"version":3,"file":"js/520-6a31e34b4890e89e1f52.js","mappings":"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","sources":["webpack://gohiring-mpt/./frontend/bundles/components/common/balloon_icon.js","webpack://gohiring-mpt/./frontend/bundles/components/common/styles/dropdown.js","webpack://gohiring-mpt/./frontend/bundles/components/common/dropdown/dropdown_button.js","webpack://gohiring-mpt/./frontend/bundles/components/common/dropdown/lib/utils.js","webpack://gohiring-mpt/./frontend/bundles/components/common/dropdown/dropdown.js","webpack://gohiring-mpt/./frontend/bundles/components/common/dropdown/dropdown_footer.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/country_select.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/field.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/form.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/color_picker.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/checkbox.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/date_input/styles.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/date_input/utils.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/date_input/month_year_list.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/date_input/month_year_dropdown.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/date_input/calendar_header.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/date_input/date_picker.js","webpack://gohiring-mpt/./frontend/bundles/components/common/styles/editor.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/editor/utils.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/editor/index.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/styles.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/utils.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/select_image/preview.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/select_image/use_image_dimensions.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/select_image/row.js","webpack://gohiring-mpt/./frontend/bundles/lib/use_is_visible.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/select_image/list.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/select_image/use_generate_select_image_values.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/select_image/index.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/upload_image/drop_zone.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/upload_image/use_generate_image_upload_values.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/upload_image/image_upload.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/upload_image/index.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/modal.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/use_generate_image_uploader_values.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/image_uploader/index.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/radio_button.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/tags_field.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/input_field.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/input_wrapper.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/label.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/select/styles.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/select/select_components.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/select/select.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/select/use_select_values.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/select/utils.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/select/form_select.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/toggle_field.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/utils.js","webpack://gohiring-mpt/./frontend/bundles/components/common/form/validations.js","webpack://gohiring-mpt/./frontend/bundles/components/common/icon_with_popover.js","webpack://gohiring-mpt/./frontend/bundles/components/common/inline_confirmation.js","webpack://gohiring-mpt/./frontend/bundles/components/common/notification/style.js","webpack://gohiring-mpt/./frontend/bundles/components/common/notification/notification_text.js","webpack://gohiring-mpt/./frontend/bundles/components/common/notification/utils.js","webpack://gohiring-mpt/./frontend/bundles/components/common/notification/use_notification_values.js","webpack://gohiring-mpt/./frontend/bundles/components/common/notification/index.js","webpack://gohiring-mpt/./frontend/bundles/components/common/styles/popover.js","webpack://gohiring-mpt/./frontend/bundles/components/common/popover/popover.js","webpack://gohiring-mpt/./frontend/bundles/components/common/popover/use_popover.js","webpack://gohiring-mpt/./frontend/bundles/components/common/progress_bar.js","webpack://gohiring-mpt/./frontend/bundles/components/common/styles/search_term.js","webpack://gohiring-mpt/./frontend/bundles/components/common/search_term.js","webpack://gohiring-mpt/./frontend/bundles/components/common/styles/button.js","webpack://gohiring-mpt/./frontend/bundles/components/common/styles/filters.js","webpack://gohiring-mpt/./frontend/bundles/components/common/styles/form.js","webpack://gohiring-mpt/./frontend/bundles/components/common/styles/text.js","webpack://gohiring-mpt/./frontend/bundles/components/common/tabs.js","webpack://gohiring-mpt/./frontend/bundles/consts.js","webpack://gohiring-mpt/./frontend/bundles/lib/analytics_tracker.js","webpack://gohiring-mpt/./frontend/bundles/lib/list.js","webpack://gohiring-mpt/./frontend/bundles/lib/use_filters.js","webpack://gohiring-mpt/./frontend/bundles/lib/use_query.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from './icon';\nimport styled from 'styled-components';\nimport { lightGray, blue } from './styles/variables';\n\nconst IndicatorWrapper = styled.div`\n display: flex;\n align-items: center;\n position: relative;\n & > span {\n display: flex;\n }\n .material-icons-outlined {\n color: ${lightGray};\n }\n`;\n\nconst Indicator = styled.div`\n background: ${blue};\n height: 6px;\n width: 6px;\n border-radius: 50%;\n position: absolute;\n top: 4px;\n left: 16px;\n`;\n\nconst BalloonIcon = ({ icon, tooltip, large, size, trackingId }) => (\n \n \n \n);\n\nBalloonIcon.defaultProps = {\n large: false,\n size: null,\n};\n\nBalloonIcon.propTypes = {\n tooltip: PropTypes.string,\n icon: PropTypes.string.isRequired,\n large: PropTypes.bool,\n size: PropTypes.number,\n trackingId: PropTypes.string,\n};\n\nexport const IconWithIndicator = ({ showIndicator, ...iconProps }) => {\n return (\n \n \n {showIndicator ? : null}\n \n );\n};\n\nIconWithIndicator.propTypes = {\n ...BalloonIcon.propTypes,\n showIndicator: PropTypes.bool,\n name: PropTypes.string,\n icon: PropTypes.string,\n};\n\nexport default BalloonIcon;\n","import { styled } from 'styled-components';\n\nimport { iconsFont } from './variables';\n\nexport const StyledSelectAllButtonWrapper = styled.div`\n padding: 0;\n & > div {\n text-transform: none;\n display: flex;\n gap: 8px;\n align-items: center;\n padding: 0;\n &:active {\n background-image: none;\n }\n button {\n padding: 8px 18px;\n border: none;\n background: inherit;\n span.material-symbols-outlined {\n margin-left: 0;\n }\n }\n button:first-child {\n padding-right: 0;\n }\n button:last-child {\n padding-left: 0;\n display: flex;\n align-items: center;\n }\n }\n`;\n\nexport const StyledSelectAllButton = styled.span`\n padding: 8px 18px;\n border: none;\n background: inherit;\n`;\n\n// we use span instead of button because the\n// wrapper element is already a button, so it will\n// raise an error\nexport const Button = styled.span`\n text-transform: none;\n padding-left: 4px;\n padding-right: 12px;\n\n .material-symbols-outlined {\n color: #666;\n font-size: 18px;\n }\n\n span {\n vertical-align: middle;\n margin-left: 12px;\n }\n span + span,\n span.material-symbols-outlined {\n margin-left: 6px;\n }\n\n &:hover {\n cursor: pointer;\n }\n\n &::after {\n font-family: ${iconsFont};\n padding-left: 3px;\n vertical-align: middle;\n }\n &.closed::after {\n content: 'arrow_drop_down';\n }\n &.open::after {\n content: 'arrow_drop_up';\n }\n`;\n","import PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport Icon from '../icon';\nimport { Separator } from '../styles/filters';\nimport {\n Button,\n StyledSelectAllButton,\n StyledSelectAllButtonWrapper,\n} from '../styles/dropdown';\nimport { Flex } from '../styles/flex';\n\n/**\n * A button component used as a trigger for the MultiChoiceDropdown component.\n *\n * Props:\n * className,\n * id: http id attribute assign to the button element.\n * label: text to be displayed inside the button elemet;\n * selectedCount: number indicating the ammount of selected options.\n * onClick,\n */\nexport const DropdownButton = ({\n className,\n children,\n id,\n label,\n icon,\n selectedCount,\n onClick,\n}) => {\n return (\n \n {children || (\n <>\n {icon && }\n {label}\n {selectedCount ? ` · ${selectedCount}` : null}\n \n )}\n \n );\n};\n\nDropdownButton.propTypes = {\n className: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n icon: PropTypes.string,\n selectedCount: PropTypes.number,\n onClick: PropTypes.func,\n};\n\n/**\n * A button component used as a trigger for the MultiChoiceDropdown component.\n * It consists of two segments: On the left side there is a text part,\n * separated by the vertical line we render an arrow icon on the right side.\n * These two segments have their own, separate, onClick actions.\n *\n * Props:\n * className,\n * disabled,\n * id: http id attribute assign to the button element.\n * label: text to be displayed inside the button elemet;\n * openDropdown: a callback function to be called on the arrow icon click\n * onClick: a callback function executed when button text is clicked\n * selectedCount: number indicating the ammount of selected options.\n * tooltip,\n */\nexport const SelectAllDropdownButton = ({\n className,\n disabled,\n icon,\n id,\n label,\n onClick,\n openDropdown,\n selectedCount,\n tooltip,\n}) => {\n return (\n \n
\n {\n e.preventDefault();\n e.stopPropagation();\n onClick();\n }}\n >\n \n {icon && }\n \n {label}\n {selectedCount ? ` · ${selectedCount}` : null}\n \n \n \n \n \n
\n \n );\n};\n\nSelectAllDropdownButton.propTypes = {\n className: PropTypes.string,\n id: PropTypes.string,\n selectedCount: PropTypes.number,\n icon: PropTypes.string,\n disabled: PropTypes.bool,\n tooltip: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n openDropdown: PropTypes.func.isRequired,\n};\n\nSelectAllDropdownButton.defaultProps = {\n className: '',\n};\n\nconst StyledSeparator = styled(Separator)`\n max-height: 24px;\n`;\n\nconst StyledIcon = styled(Icon)`\n margin-right: 16px;\n`;\n","export const generateDropdownButtonClassNames = ({ active, shown }) =>\n `${active ? 'active ' : ''}${shown ? 'open' : 'closed'}`;\n\nexport const generateDropdownId = ({ htmlIdPrefix }) =>\n `${htmlIdPrefix}-dropdown`;\n","import PropTypes from 'prop-types';\nimport { useCallback } from 'react';\n\nimport { usePopover } from '../popover/use_popover';\nimport { DropdownButton } from './dropdown_button';\nimport { generateDropdownButtonClassNames } from './lib/utils';\n\nexport const Dropdown = ({\n active,\n buttonLabel,\n children,\n htmlIdPrefix,\n icon,\n selectedCount,\n style,\n}) => {\n const { Popover, toggle: toggleVisibility, shown } = usePopover();\n\n // we don't want to provide toggleVisibility with an\n // event param, it would prevent closing of the other open\n // dropdown menus\n const onDropdownButtonClick = useCallback(\n () => toggleVisibility(),\n [toggleVisibility]\n );\n\n return (\n \n }\n hideArrow={true}\n placement=\"bottom-start\"\n style={{ ...DROPDOWN_POPOVER_STYLE, ...style }}\n >\n {children}\n \n );\n};\n\nDropdown.propTypes = {\n active: PropTypes.bool,\n buttonLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n children: PropTypes.element,\n htmlIdPrefix: PropTypes.string,\n icon: PropTypes.string,\n selectedCount: PropTypes.number,\n style: PropTypes.object,\n};\n\nexport const DROPDOWN_POPOVER_STYLE = {\n width: 'inherit',\n maxHeight: '420px',\n minWidth: '160px',\n overflowY: 'auto',\n padding: 0,\n};\n","import PropTypes from 'prop-types';\n\nimport useI18n from '../../../lib/use_i18n';\nimport { Flex } from '../styles/flex';\n\nexport const DropdownFooter = ({ handleReset, handleFilter, ...style }) => {\n const { translate } = useI18n();\n return (\n \n \n {translate('app.actions.reset')}\n \n \n {translate('app.actions.filter')}\n \n \n );\n};\n\nDropdownFooter.propTypes = {\n handleReset: PropTypes.func.isRequired,\n handleFilter: PropTypes.func.isRequired,\n};\n","import React, { useMemo } from 'react';\n\nimport { CountriesContext } from '../../../contexts';\nimport { SelectField } from './select';\n\n/**\n * Renders a dropdown with countries.\n *\n * \n */\n\nconst CountrySelectWrapper = ({ name, label, required, emptyOption }) => (\n \n {(countries) => (\n \n )}\n \n);\n\nconst CountrySelect = ({ countries, required, emptyOption, label, name }) => {\n const options = useMemo(() => {\n const options = countries.map(([code, name]) => ({\n value: code,\n label: name,\n }));\n if (!required || emptyOption) {\n options.unshift({ value: '', label: '-' });\n }\n return options;\n }, [countries, required, emptyOption]);\n\n return (\n \n );\n};\n\nexport default CountrySelectWrapper;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { Field as FormField } from 'react-final-form';\nimport styled from 'styled-components';\nimport useI18n from '../../../lib/use_i18n';\nimport { disabledStyle } from '../styles/form';\nimport { generateValidations } from './validations';\n\nconst StyledFormField = styled(FormField)`\n ${({ disabled }) => (disabled ? disabledStyle : '')}\n opacity: 1;\n`;\n\n// Without this, the final form would remove empty fields from\n// form values. This is problematic because it would not\n// overwrite an initial truthy value with an empty string,\n// when making rest calls, from onSubmit callback.\nconst identity = (value) => value;\n\n// Value prop on input field should not be `null` but `undefined`\n// or an empty string. However from the backend side we receive\n// null for the non-existing values. In the Input components we override\n// the null with the appropriate value, but that would make a field 'dirty'\n// if not for this custom equality check.\nconst isEqual = (valueA, valueB) => {\n if (valueA || valueB) {\n return valueA === valueB;\n }\n return true;\n};\n\n/**\n * A wrapper around the react-final-form Field component,\n * extended to handle `required` validation.\n * we could also pass the `customMessage` to be shown if the required\n * validation fails, instead of showing the generic one\n **/\nexport const Field = ({\n children,\n customMessage,\n disabled,\n required,\n validate,\n ...fieldProps\n}) => {\n const { translate } = useI18n();\n const validations = useMemo(\n () =>\n generateValidations({\n required,\n validate,\n translate,\n disabled,\n customMessage,\n multi: fieldProps.multi,\n }),\n [required, validate, translate, disabled, customMessage]\n );\n\n // In order to re-trigger the validation if disabled/required values\n // are changed we have modify the data prop on the Field component\n return (\n \n {children}\n \n );\n};\n\nField.propTypes = {\n ...Field.propTypes,\n customMessage: PropTypes.string,\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n validate: PropTypes.func,\n};\n","import PropTypes from 'prop-types';\nimport React, { useContext, useEffect, useRef } from 'react';\nimport { Form as FinalForm } from 'react-final-form';\nimport { FormContext } from '../../../contexts';\nimport { randomUUID } from '../../../utils';\n\nconst RENDER_PROPS = ['component', 'render', 'children'];\n\n// It receives react final form object as an argument, and uses form\n// state to calculate whether the form is dirty (returns a boolean).\n// We cannot simply use the 'dirty' value from the form state\n// because we want to ignore cases when value is changed programmatically\nconst calculateDirty = (form) => {\n const { dirtyFields, modified, submitting } = form.getState();\n // check if there are dirty fields, and make sure that they are\n // edited by user, and not programmatically\n return Object.keys(dirtyFields).some(\n (field) => !submitting && dirtyFields[field] && modified[field]\n );\n};\n\n// a function that returns modified render prop for the Final Form component\n// this way we are able to bake in \"prevent leave page\" functionality directly\n// into the Form component. If the `forcePreventUnload` is false we decide onbeforeunload\n// value based on the 'dirtyFields' value\nconst renderWrapper =\n (render, forcePreventUnload, formId, setDirty) => (props) => {\n const isDirty = forcePreventUnload ? true : calculateDirty(props.form);\n useEffect(() => {\n setDirty({ id: formId, isDirty: isDirty });\n }, [isDirty]);\n\n return render(props);\n };\n\n// A wrapper function that return props, and modify some of them if necessary.\nconst handleProps = (\n props,\n preventUnload,\n forcePreventUnload,\n idRef,\n setDirty\n) => {\n if (preventUnload || forcePreventUnload) {\n RENDER_PROPS.some((renderProp) => {\n if (props[renderProp]) {\n props[renderProp] = renderWrapper(\n props[renderProp],\n forcePreventUnload,\n idRef.current,\n setDirty\n );\n return true;\n }\n });\n }\n const { onSubmit } = props;\n\n props.onSubmit = async (values, form, callback) => {\n // here we make sure set form to not dirty before\n // submitting. This will allow us to switch page on\n // successfull submit, given that form in question is\n // the only form on page, or all the other forms are\n // not dirty as well\n await setDirty({ id: idRef.current, isDirty: false });\n const errors = await onSubmit(values, form, callback);\n\n // restore the value of onbeforeunload if there are errors,\n // since we've never left the page\n if (errors) {\n setDirty({ id: idRef.current, isDirty: calculateDirty(form) });\n }\n\n return errors;\n };\n return props;\n};\n\n/**\n * We created a wrapper around the react-final-form `Form` component because\n * we wanted to expand it with functionality of being able to prevent the\n * page unload (changing the page) if there are unsaved changes.\n * To be able to do that we expanded `Form` with a `preventUnload` property, which, if\n * set to `true` would check whether the form has `dirty` fields.\n * it would raise a modal if there are indeed such fields, asking the user to confirm its choice.\n * All other props (besides the `preventUnload`) will be passed to the react-final-form\n * component. Expected behavior is same as the one of the library component, with added\n * \"ask user before changing the page if there are unsaved changes\" functionality.\n * when `forcePreventUnload` is true, we will raise a dialog on any attempted page change,\n * regardless of the `dirty` value\n **/\nexport const Form = ({ preventUnload, forcePreventUnload, ...formProps }) => {\n const idRef = useRef(randomUUID());\n const setDirty = useContext(FormContext);\n\n useEffect(() => {\n return () => {\n setDirty(idRef.current, false);\n };\n });\n\n return (\n \n );\n};\n\nForm.propTypes = {\n ...FinalForm.propTypes,\n preventUnload: PropTypes.bool,\n forcePreventUnload: PropTypes.bool,\n};\n","import PropTypes from 'prop-types';\nimport { ChromePicker } from 'react-color';\nimport styled from 'styled-components';\nimport useVisibility from '../../../lib/use_visibility';\nimport { Field } from './field';\nimport { InputWrapper } from './input_wrapper';\nimport { getError } from './utils';\n\nconst PreviewColor = styled.div`\n width: 20px;\n height: 20px;\n position: relative;\n border: 1px solid #eed;\n border-radius: 3px;\n margin-top: -26px;\n float: right;\n`;\n\nconst StyledColorPicker = styled.div`\n position: absolute;\n z-index: 2;\n`;\n\nconst Overlay = styled.div`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n`;\nexport const ColorPicker = ({ name, hint, label, labelProps, hintId }) => {\n const { show, shown, hide } = useVisibility();\n return (\n \n {({ input, meta }) => (\n \n \n \n {shown && (\n \n \n input.onChange(e.hex)}\n />\n \n )}\n \n )}\n \n );\n};\n\nColorPicker.propTypes = {\n name: PropTypes.string.isRequired,\n hint: PropTypes.string,\n label: PropTypes.string,\n labelProps: PropTypes.object,\n hintId: PropTypes.string,\n};\n","import styled from 'styled-components';\nimport PropTypes from 'prop-types';\nimport { Flex } from '../styles/flex';\nimport { Checkbox, ErrorWrapper } from '../styles/form';\nimport { Field } from './field';\nimport { getError } from './utils';\n\nconst StyledLabel = styled.label`\n margin-bottom: 0;\n display: flex;\n gap: 16px;\n line-height: 18px;\n cursor: pointer;\n`;\n\nexport const CheckboxField = ({\n customMessage,\n error: externalError,\n id,\n label,\n name,\n required,\n}) => (\n \n {({ meta, input }) => {\n const error = externalError || getError(meta);\n const className = error ? 'has-error' : '';\n return (\n \n \n \n {label}\n \n {error}\n \n );\n }}\n \n);\n\nCheckboxField.propTypes = {\n customMessage: PropTypes.string,\n error: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.any,\n name: PropTypes.string.isRequired,\n required: PropTypes.bool,\n};\n","import { createGlobalStyle, styled } from 'styled-components';\nimport { withCustomProps, withOpacity } from '../../styles/utils';\nimport {\n backgroundBlue,\n backgroundGray,\n borderLightGray,\n darkGray,\n deepBlue,\n fontFamily,\n fontSizeS,\n gray,\n lightBlue,\n lightGray,\n placeholderGray,\n popoverZIndex,\n} from '../../styles/variables';\n\n// classes responsible for setting the background color of the selected items (days, months, years, quarters).\nconst selectedClasses = `.react-datepicker__day--selected, .react-datepicker__day--in-selecting-range, .react-datepicker__day--in-range, .react-datepicker__month-text--selected, .react-datepicker__month-text--in-selecting-range, .react-datepicker__month-text--in-range, .react-datepicker__quarter-text--selected, .react-datepicker__quarter-text--in-selecting-range, .react-datepicker__quarter-text--in-range, .react-datepicker__year-text--selected, .react-datepicker__year-text--in-selecting-range, .react-datepicker__year-text--in-range`;\n\n// classes responsible for setting the background color of hovered items\nconst hoverClasses = `.react-datepicker__day:hover, .react-datepicker__month-text:hover, .react-datepicker__quarter-text:hover, .react-datepicker__year-text:hover`;\n\n// classes describing calendar item, e.g. day of the week in the header or number in the calendar body\nconst calendarItemClasses = `.react-datepicker__day-name, .react-datepicker__day, .react-datepicker__time-name`;\n\n// classesresponsible for the style of `today` item\nconst todayClass = `.react-datepicker__day--today, .react-datepicker__month-text--today, .react-datepicker__quarter-text--today, .react-datepicker__year-text--today`;\n\n// classes responsible for setting the background color of current keybord navigation position\nconst keyboardSelectedClasses = `.react-datepicker__day--keyboard-selected, .react-datepicker__month-text--keyboard-selected, .react-datepicker__quarter-text--keyboard-selected, .react-datepicker__year-text--keyboard-selected`;\n\n// classes describing the look of a disabled item\nconst disabledClasses = `.react-datepicker__day--disabled, .react-datepicker__month-text--disabled, .react-datepicker__quarter-text--disabled, .react-datepicker__year-text--disabled`;\n\n// classes active for the items that are between seleced minimum and **hovered** maximum, limits included\nconst inSelecetingRangeClasses = `.react-datepicker__day--in-selecting-range, .react-datepicker__month-text--in-selecting-range, .react-datepicker__quarter-text--in-selecting-range, .react-datepicker__year-text--in-selecting-range`;\n\n// first and last item that also falls under `inSelecetingRangeClasses`\nconst selectingRangeLimits = `.react-datepicker__day--selecting-range-start, .react-datepicker__day--selecting-range-end`;\n\nconst StyledDateInputWrapper = styled.label`\n width: 100%;\n display: flex;\n color: ${lightGray};\n input {\n height: 39px;\n width: 100%;\n &:focus-visible {\n outline: none;\n }\n }\n\n .react-datepicker__close-icon::after {\n color: ${lightGray};\n background: transparent;\n font-size: 18px;\n }\n`;\n\nexport const DATEPICKER_WRAPPER_ID = 'datepicker-portal';\n\nexport const DateInputWrapper = ({ children, id }) => {\n return (\n \n \n {children}\n \n );\n};\n\n// we want to change the default react-datepicker style to be more in line with our ui.\n// To do that, we are overriding the existing style (found in react-datepicker.css).\nexport const DatePickerStyle = createGlobalStyle`\n #${DATEPICKER_WRAPPER_ID} {\n background-color: transparent;\n .react-datepicker-wrapper {\n width: 100%;\n }\n .react-datepicker-popper {\n z-index: ${popoverZIndex + 100}\n }\n\n .react-datepicker {\n font-family: ${fontFamily};\n color: ${lightGray};\n display: flex;\n }\n\n .react-datepicker__month-container {\n padding: 16px;\n &:not(:last-child){\n border-right: 1px solid ${borderLightGray}\n }\n\n }\n \n .react-datepicker__header {\n border-bottom: none;\n background: transparent;\n cursor: initial;\n .react-datepicker__day-names {\n margin-bottom: 0;\n border-radius: 3px;\n .react-datepicker__day-name {\n font-weight: bold;\n color: ${lightGray};\n }\n }\n }\n\n ${calendarItemClasses} {\n width: 36px;\n line-height: 36px;\n font-size: ${fontSizeS};\n color: ${darkGray};\n }\n\n ${hoverClasses}, ${selectedClasses}, ${todayClass}, ${keyboardSelectedClasses} {\n border-radius: 50%;\n }\n\n ${hoverClasses} {\n &:not(${selectedClasses}, ${keyboardSelectedClasses}) {\n background-color: ${withOpacity(backgroundBlue, 0.4)};\n }\n }\n\n ${selectedClasses} {\n background: ${deepBlue};\n color: white;\n &:focus-visible {\n outline: none;\n }\n }\n\n ${todayClass} {\n font-weight: normal;\n border: 1px solid ${lightGray};\n }\n\n ${keyboardSelectedClasses} {\n &:not(${selectedClasses}) {\n background: ${backgroundBlue};\n }\n &:focus-visible {\n outline: none;\n }\n }\n\n ${disabledClasses} {\n background: ${backgroundGray};\n border-radius: 50%;\n pointer-events: none;\n color: ${gray}\n }\n\n ${inSelecetingRangeClasses} {\n background-color: ${withOpacity(deepBlue, 0.4)};\n color: white;\n }\n\n ${selectingRangeLimits}{\n background-color: ${deepBlue}\n }\n\n .react-datepicker__day--outside-month {\n color: ${gray};\n }\n .react-datepicker__day-names,\n .react-datepicker__week {\n cursor: initial;\n }\n }\n`;\n\nexport const DateInputIconWrapper = styled.div`\n display: flex;\n align-items: center;\n & > * {\n height: 24px;\n }\n .material-symbols-outlined {\n cursor: pointer;\n color: ${placeholderGray};\n }\n .material-symbols-outlined:hover {\n color: ${lightBlue};\n }\n`;\n\nexport const MonthYearItem = withCustomProps(styled.li`\n list-style: none;\n button {\n width: 100%;\n background: transparent;\n border: none;\n padding: 3px 16px;\n justify-content: flex-start;\n text-align: left;\n color: ${darkGray};\n display: flex;\n align-items: center;\n &:hover {\n background: ${backgroundBlue};\n }\n ${({ today }) => today && 'font-weight: bold;'}\n ${({ active }) => active && activeMonthStyle}\n }\n`);\n\nconst activeMonthStyle = `\n background: ${deepBlue}; \n color: white;\n &:hover {\n background: ${deepBlue}; \n }\n`;\n\nexport const HeaderTextWrapper = styled.div`\n position: relative;\n height: 40px;\n width: 100%;\n h4 {\n height: 40px;\n margin: 0;\n height: 100%;\n text-align: center;\n font-size: 16px;\n display: flex;\n align-items: center;\n }\n & > [role='button'] {\n height: 40px;\n width: 100%;\n background: transparent !important;\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 8px;\n &:after {\n font-size: 16px;\n }\n }\n ul {\n margin-top: -10px;\n }\n`;\n\nexport const MonthYearListWrapper = styled.ul`\n display: inline-flex;\n flex-direction: column;\n padding: 8px 0;\n background: white;\n border: 1px solid ${borderLightGray};\n border-radius: 3px;\n box-shadow: 0 0 1px 0 ${lightGray};\n float: left;\n transform: translateX(-50%);\n left: 50%;\n position: relative;\n z-index: ${popoverZIndex + 10};\n`;\n\nexport const CalendarHeaderWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n width: 100%;\n cursor: initial;\n`;\n\nexport const ChangeMonthButton = styled.span.attrs({ role: 'button' })`\n width: 36px;\n background: transparent;\n display: flex;\n align-items: center;\n border: none;\n ${({ disabled }) => disabled && disabledStyle}\n display: flex;\n justify-content: flex-end;\n`;\n\nconst disabledStyle = `visibility: hidden; pointer-events: none;`;\n","import { format } from 'date-fns';\nimport de from 'date-fns/locale/de';\n\nimport useI18n from '../../../../lib/use_i18n';\n\nexport const objToISODate = (dateObj) =>\n !dateObj\n ? null\n : [\n dateObj?.getFullYear(),\n (dateObj?.getMonth() + 1).toString().padStart(2, '0'),\n dateObj?.getDate().toString().padStart(2, '0'),\n ].join('-');\n\n// we are getting the date value as d.M.yyyy (if re rendering page after the unrelated submit error)\n// or yyyy-MM-dd string from ruby form\n// we need to transform it to js Date obj.\n// it would become redundant once we migrate whole publication form to the react side\nexport const stringToDate = (dateString) => {\n if (!dateString) return null;\n if (dateString instanceof Date) return dateString;\n\n const isDotFormating = dateString.includes('.');\n\n if (!isDotFormating) return new Date(dateString);\n\n var parts = dateString.split('.'); // Split the date string by '.' or '-' characters\n isDotFormating && parts.reverse();\n\n // Create a new Date object with the parsed day, month, and year\n return new Date(parts.join('-'));\n};\n\n// Takes an ISO date string or null and returns either that date or 3 months ago,\n// whichever is more recent. Used to determine the earliest selectable date.\nconst calculateStartDate = (dateValue) => {\n const currentDate = new Date();\n const inputDate = dateValue ? new Date(dateValue) : null;\n\n // Calculate three months ago\n const threeMonthsAgo = new Date();\n threeMonthsAgo.setMonth(currentDate.getMonth() - 3);\n\n // Determine the starting date\n return inputDate && inputDate >= threeMonthsAgo ? inputDate : threeMonthsAgo;\n};\n\n// Takes a start date and generates an array of the next 12 months.\n// Each month object contains: { year: number, month: number (0-11), date: Date }\nconst generateMonthOptions = (startDate) => {\n return Array.from({ length: 12 }, (_, i) => {\n const year = startDate.getFullYear();\n const month = startDate.getMonth() + i;\n const date = new Date(year, month, 1); // Creates a new Date instance for the first day of the month\n return {\n year: date.getFullYear(),\n month: date.getMonth(),\n date,\n };\n });\n};\n\n// Creates a list of 12 months starting from either the provided date\n// or 3 months ago (whichever is more recent)\nexport const generateYearMonthList = (dateValue) => {\n const startDate = calculateStartDate(dateValue);\n return generateMonthOptions(startDate);\n};\n\nconst LOCALES = {\n de,\n};\n\n// Returns a function that formats dates as \"Month YYYY\" in the current locale\n// Example: \"Januar 2024\" for German locale\nexport const useGetMonthYearText = () => {\n const { locale } = useI18n();\n const getMonthYearText = (date) =>\n format(date, 'MMMM yyyy', { locale: LOCALES[locale] });\n\n return getMonthYearText;\n};\n","import PropTypes from 'prop-types';\nimport { isSameMonth } from 'date-fns';\n\nimport { MonthYearItem, MonthYearListWrapper } from './styles';\nimport { generateYearMonthList, useGetMonthYearText } from './utils';\n\n/**\n * Provides a scrollable list of month/year combinations for selection.\n * Displays up to 12 months starting from either the minimum date or three months ago.\n * Highlights current month and today's month for better user orientation.\n *\n * Props:\n * minDate: optional minimum date that restricts the earliest shown month\n * onItemClick: callback function triggered when a month/year combination is selected\n * displayDate: currently selected date used to highlight the active month\n */\nexport const MonthYearList = ({ minDate, onItemClick, displayDate }) => {\n const monthOptions = generateYearMonthList(minDate);\n const getMonthYearText = useGetMonthYearText();\n return (\n \n {monthOptions.map(({ month, year, date }) => (\n \n {\n e.preventDefault();\n onItemClick({ month, year });\n }}\n >\n {getMonthYearText(date)}\n \n \n ))}\n \n );\n};\n\nMonthYearList.propTypes = {\n minDate: PropTypes.instanceOf(Date),\n onItemClick: PropTypes.func.isRequired,\n displayDate: PropTypes.instanceOf(Date).isRequired,\n};\n","import PropTypes from 'prop-types';\n\nimport useVisibility from '../../../../lib/use_visibility';\nimport {\n DropdownButton,\n generateDropdownButtonClassNames,\n} from '../../dropdown';\nimport { MonthYearList } from './month_year_list';\nimport { HeaderTextWrapper } from './styles';\nimport { useGetMonthYearText } from './utils';\n\n/**\n * Provides a dropdown component for selecting month and year combinations.\n * Displays the current month/year and expands to show a list of available options\n * when clicked.\n *\n * Props:\n * date: currently selected date used to display current month/year\n * minDate: optional minimum date that restricts the earliest selectable month/year\n * changeMonth: callback function that handles month selection change,\n * provided by the react-datepicker component\n * changeYear: callback function that handles the year selection change,\n * provided by the react-datepicker component\n */\nexport const MonthYearDropdown = ({\n date,\n minDate,\n changeMonth,\n changeYear,\n}) => {\n const getMonthYearText = useGetMonthYearText();\n const { hide, shown, toggleVisibility } = useVisibility();\n const onItemClick = ({ month, year }) => {\n changeYear(year);\n changeMonth(month);\n hide();\n };\n return (\n \n {\n e.preventDefault();\n toggleVisibility();\n }}\n >\n

{getMonthYearText(date)}

\n \n {shown && (\n \n )}\n
\n );\n};\n\nMonthYearDropdown.propTypes = {\n date: PropTypes.instanceOf(Date).isRequired,\n minDate: PropTypes.instanceOf(Date),\n changeMonth: PropTypes.func.isRequired,\n changeYear: PropTypes.func.isRequired,\n};\n","import PropTypes from 'prop-types';\n\nimport Icon from '../../icon';\nimport { MonthYearDropdown } from './month_year_dropdown';\nimport { CalendarHeaderWrapper, ChangeMonthButton } from './styles';\n\n/**\n * Provides the CalendarHeader component for the DateInput's calendar navigation.\n * Handles month/year navigation and selection through a combination of arrow buttons\n * and a dropdown menu.\n *\n * Props:\n * changeMonth: callback function to handle month changes from the dropdown,\n * provided by the react-datepicker component\n * changeYear: callback function to handle year changes from the dropdown,\n * provided by the react-datepicker component\n * customHeaderCount: index of current header, from 0 to `monthsShown`,\n * provided by the react-datepicker component\n * decreaseMonth: callback function to handle previous month button click,\n * provided by the react-datepicker component\n * increaseMonth: callback function to handle next month button click,\n * provided by the react-datepicker component\n * minDate: optional minimum date that restricts how far back users can navigate\n * monthsShown: total shown months count\n * nextMonthButtonDisabled: determines if the next month button should be disabled,\n * provided by the react-datepicker component\n * prevMonthButtonDisabled: determines if the previous month button should be disabled,\n * provided by the react-datepicker component\n */\nexport const CalendarHeader = ({\n changeYear,\n changeMonth,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n minDate,\n monthDate,\n customHeaderCount,\n monthsShown,\n}) => {\n const isFirst = customHeaderCount === 0;\n const isLast = customHeaderCount === monthsShown - 1;\n const changeMonthWithOffset = (month) => {\n changeMonth(month - customHeaderCount);\n };\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nCalendarHeader.propTypes = {\n date: PropTypes.instanceOf(Date).isRequired,\n changeYear: PropTypes.func.isRequired,\n changeMonth: PropTypes.func.isRequired,\n decreaseMonth: PropTypes.func.isRequired,\n increaseMonth: PropTypes.func.isRequired,\n prevMonthButtonDisabled: PropTypes.bool.isRequired,\n nextMonthButtonDisabled: PropTypes.bool.isRequired,\n minDate: PropTypes.instanceOf(Date),\n};\n","import de from 'date-fns/locale/de';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport DatePicker, { registerLocale } from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\n\nimport useI18n from '../../../../lib/use_i18n';\nimport BalloonIcon from '../../balloon_icon';\nimport { Field } from '../field';\nimport { InputWrapper } from '../input_wrapper';\nimport { getError } from '../utils';\nimport { CalendarHeader } from './calendar_header';\nimport {\n DateInputIconWrapper,\n DateInputWrapper,\n DATEPICKER_WRAPPER_ID,\n} from './styles';\nimport { objToISODate, stringToDate } from './utils';\n\nregisterLocale('de', de);\n\nconst DEFAULT_FORMAT = 'P'; // takes default format from locale\n\nconst FORMAT = {\n de: 'd.M.yyyy', // the default one would be \"dd.MM.yyyy\"\n};\n\n/**\n * Provides a standalone date input component with calendar picker functionality.\n * Handles date formatting, validation, and locale-specific display.\n *\n * Props:\n * errorText: error message to display below the input\n * hint: helper text to display below the input\n * hintId: id for the hint element for accessibility\n * inline: if true, text input field will not be rendered, but we will immedately\n * see the calendar components.\n * format: custom date format string\n * label: label text for the input\n * labelProps: additional props for the label component\n * name: unique identifier for the input\n * required: whether the field is required\n * value: current date value\n * minDate: earliest selectable date\n * maxDate: latest selectable date\n * monthsShown: the number of months visible when calendar component is opened.\n * it defaults to 1 for date picker, but 2 for range picker.\n * onChange: callback function when date changes\n *\n *\n * Beside above mentioned props, we can provde the DateInput component\n * with any valid DatePicker props, and it will passed down to the DatePicker\n * component.\n * To see all available options visit https://reactdatepicker.com/\n */\nexport const DateInput = ({\n errorText,\n format,\n hint,\n hintId,\n inline,\n label,\n labelProps,\n maxDate,\n minDate,\n monthsShown,\n name,\n onChange,\n required,\n value,\n ...datePickerProps\n}) => {\n const { locale } = useI18n('date_input');\n const dateFormat = format || FORMAT[locale] || DEFAULT_FORMAT;\n return (\n \n \n (\n \n )}\n portalId={DATEPICKER_WRAPPER_ID}\n monthsShown={monthsShown}\n inline={inline}\n {...datePickerProps}\n />\n {!inline && (\n \n \n \n )}\n \n \n );\n};\n\nDateInput.defaultProps = {\n monthsShown: 1,\n isClearable: true,\n};\n\nDateInput.propTypes = {\n errorText: PropTypes.string,\n format: PropTypes.string,\n hint: PropTypes.string,\n hintId: PropTypes.string,\n initialValue: PropTypes.string, //received from rails d.M.yyyy\n label: PropTypes.string,\n name: PropTypes.string,\n required: PropTypes.bool,\n value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string]),\n};\n\n/**\n * Provides a form-integrated wrapper for the DateInput component.\n * Handles form state management and date format conversion between ISO and Date object.\n *\n * Props:\n * dateFormat: custom date format string\n * name: unique identifier for the form field\n * label: label text for the input\n * labelProps: additional props for the label component\n * required: whether the field is required\n * minDate: earliest selectable date\n * maxDate: latest selectable date\n * fieldProps: additional props passed to the Field component\n */\nexport const FormDateInput = ({\n dateFormat,\n hint,\n hintId,\n label,\n labelProps,\n maxDate,\n minDate,\n name,\n required,\n ...fieldProps\n}) => {\n return (\n \n {({ input, meta }) => (\n \n )}\n \n );\n};\n\nFormDateInput.propTypes = {\n ...Field.propTypes,\n dateFormat: PropTypes.string,\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n labelProps: PropTypes.object,\n required: PropTypes.bool,\n minDate: PropTypes.instanceOf(Date),\n maxDate: PropTypes.instanceOf(Date),\n};\n","import ReactQuill from 'react-quill';\nimport styled, { css, keyframes } from 'styled-components';\nimport { InputWrapper } from '../form/input_wrapper';\nimport { disabledStyle } from './form';\nimport {\n borderButtonLightGray,\n borderLightGray,\n fontSize,\n lightBlue,\n lightGray,\n red,\n} from './variables';\n\n// because oveflow would be visible before the transition ends\n// creating visual bug, if we rely on transition only\nconst heightTransition = keyframes`\n from {\n height: 0;\n overflow: hidden;\n }\n to {\n height: 32px; /* Adjust to your desired height */\n overflow: visible;\n }\n`;\nconst animationDuration = '0.3s';\n\n// overriding the quill snow theme to match our own.\nexport const StyledQuill = styled(ReactQuill)`\n ${({ disabled }) => (disabled ? disabledStyle : '')}\n ${({ hide }) => (hide ? 'display: none;' : '')}\n .ql-toolbar.ql-snow {\n display: flex;\n border: none;\n padding: 0;\n overflow: ${({ isExpanded }) => (!isExpanded ? 'hidden' : 'visible')};\n transition: height 0.3s ease;\n height: ${({ isExpanded, disabled }) =>\n isExpanded && !disabled ? '32px' : '0'};\n animation: ${({ isExpanded }) =>\n isExpanded\n ? css`\n ${heightTransition} ${animationDuration} ease\n `\n : 'none'};\n button {\n border: 1px solid ${borderButtonLightGray};\n height: 32px;\n width: 32px;\n padding: 0;\n span {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 32px;\n width: 32px;\n }\n }\n button:first-child {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n button:not(:first-child) {\n border-left: none;\n }\n button:last-child {\n border-top-right-radius: 3px;\n border-bottsdsaom-right-radius: 3px;\n }\n .ql-formats:last-child {\n margin-left: auto;\n margin-right: 0;\n }\n\n // shortcuts label styling\n .ql-shortcuts {\n border-top: none;\n border-left: none;\n border-bottom: none;\n padding-right: 16px;\n width: auto;\n span {\n color: ${lightBlue};\n width: auto;\n &:after {\n text-align: left;\n }\n }\n }\n }\n .ql-toolbar.ql-snow + .ql-container.ql-snow {\n margin-top: 8px;\n border-radius: 3px;\n border: 1px solid ${borderLightGray};\n ${({ isActive }) =>\n isActive ? `box-shadow: inset 0 -2px 0 ${lightBlue};` : ''};\n }\n .ql-tooltip {\n z-index: 2000;\n }\n .ql-editor {\n font-size: ${fontSize};\n h3,\n h2 {\n font-size: 18px;\n line-height: 1.9;\n }\n p {\n margin-bottom: 10.5px; //to match the StepStone\n }\n }\n\n // quill uses css for localization, quite unfortunate,\n // luckily we only need them for the link popoup. We should probably\n // consider making it a custom component if this proves insufficient\n .ql-snow .ql-tooltip::before {\n content: '${({ translations }) => translations?.linkVisit}';\n }\n .ql-snow .ql-tooltip .ql-action::after {\n content: '${({ translations }) => translations?.linkEdit}';\n }\n .ql-snow .ql-tooltip .ql-remove::before {\n content: '${({ translations }) => translations?.linkRemove}';\n }\n .ql-snow .ql-tooltip[data-mode='link']::before {\n content: '${({ translations }) => translations?.linkLabel}';\n }\n .ql-snow .ql-tooltip[data-mode='link'] .ql-action::after {\n content: '${({ translations }) => translations?.linkSave}';\n }\n`;\n\nexport const PlaceholderQuill = styled(StyledQuill)`\n .ql-toolbar.ql-snow {\n display: none;\n }\n * {\n color: ${lightGray};\n opacity: 0.9;\n }\n`;\n\nexport const StyledInputWrapper = styled(InputWrapper)`\n &.has-error .ql-toolbar.ql-snow + .ql-container.ql-snow {\n box-shadow: inset 0 -2px 0 ${red};\n }\n`;\n","// a mapping for material icons/editor actions\n// the keys in this object should correspond with the TOOLBAR actions.\n// the values are the names of the corresponding material icons\n// if the toolbar value is an object we assume that\n// the key will look like this ${key}_${value}, e.g. header_3\nexport const ICON_NAME = {\n bold: 'format_bold',\n italic: 'format_italic',\n underline: 'format_underlined',\n link: 'insert_link',\n header_3: 'text_fields',\n undo: 'undo',\n redo: 'redo',\n list_ordered: 'format_list_numbered',\n list_bullet: 'format_list_bulleted',\n};\n\nconst generateShortcutsItem = ({ label, title }) =>\n `
${label}
`;\n\nconst generateIcon = ({ type, title }) =>\n `${ICON_NAME[type]}`;\n\nconst TOOLBAR = [\n [{ header: '3' }, 'bold', 'italic', 'underline', 'link'],\n [{ list: 'bullet' }, { list: 'ordered' }],\n ['shortcuts', 'undo', 'redo'],\n];\n\nconst flattenArray = (arr) => {\n const flattened = [];\n for (let i = 0; i < arr.length; i++) {\n if (Array.isArray(arr[i])) {\n flattened.push(...flattenArray(arr[i]));\n } else {\n flattened.push(arr[i]);\n }\n }\n return flattened;\n};\n\n// register material icons for the quill toolbar\nexport const generateIcons = ({ Quill, translate, toolbar = TOOLBAR }) => {\n const icons = Quill.import('ui/icons');\n const flattenedToolbar = flattenArray(toolbar);\n\n flattenedToolbar.forEach((item) => {\n if (item === 'shortcuts') {\n const title = translate(`.${item}.tooltip`);\n const label = translate(`.${item}.label`);\n icons[item] = generateShortcutsItem({ label, title });\n } else if (typeof item === 'string') {\n const title = translate(`.${item}`);\n icons[item] = generateIcon({ type: item, title });\n } else {\n const [key, value] = Object.entries(item)[0];\n const iconName = `${key}_${value}`;\n const title = translate(`.${iconName}`);\n icons[key][value] = generateIcon({ type: iconName, title });\n }\n });\n};\n\n// remove color styling from the pasted text\nconst attributesToDelete = ['color', 'background'];\nconst sanitizeClipboardMatcher = (node, delta) => {\n delta.ops = delta.ops.map((op) => {\n const attributes = { ...op.attributes };\n attributesToDelete.forEach((key) => delete attributes[key]);\n return {\n ...op,\n attributes,\n };\n });\n return delta;\n};\n\n// to be able to access quills `this`,\n// we musn't use arrow functions\nfunction headerShortcutHandler(range) {\n const formatValue = !this.quill.getFormat(range.index).header ? '3' : false;\n this.quill.format('header', formatValue);\n}\n\nfunction undoChange() {\n this.quill.history.undo();\n}\nfunction redoChange() {\n this.quill.history.redo();\n}\n// this const will be used as the modules prop for the\n// react-quill component\nexport const generateModules = (Quill) => ({\n toolbar: {\n container: TOOLBAR,\n handlers: {\n undo: undoChange,\n redo: redoChange,\n shortcuts: () => {}, // suppressing the warnings\n },\n },\n history: {\n delay: 500,\n maxStack: 100,\n userOnly: true,\n },\n clipboard: {\n // if true, quill would try to 'refactor' the html which leads us\n // to risk of falling into infinite loop given our lineBreakMatcher\n // and parse prop on EditorField component.\n // related to the issue https://github.com/gohiring/mpt/issues/1858\n // exapmle of problematic html:\n // 1.

Title


Subtitle

\n // 2.

Title


Subtitle

\n // 3.

Title

Text

Subtitle

\n // these would cause an infinite loop\n matchVisual: false,\n matchers: [\n ['BR', lineBreakMatcher],\n [Node.ELEMENT_NODE, sanitizeClipboardMatcher],\n ],\n },\n keyboard: {\n bindings: {\n linebreak: {\n key: 13,\n shiftKey: true,\n handler: function (range) {\n const [currentLeaf] = this.quill.getLeaf(range.index);\n const [nextLeaf] = this.quill.getLeaf(range.index + 1);\n\n // add 'break' blot which we defined inside the setup func\n this.quill.insertEmbed(\n range.index,\n SOFT_BREAK,\n true,\n Quill.sources.USER\n );\n\n // Insert a second break if:\n // At the end of the text area, OR next leaf has a different parent.\n if (nextLeaf === null || currentLeaf.parent !== nextLeaf.parent) {\n this.quill.insertEmbed(\n range.index,\n SOFT_BREAK,\n true,\n Quill.sources.USER\n );\n }\n\n // move the cursor forward\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n },\n },\n // ctrl + H => text to heading\n headerShortcut: {\n key: 'H',\n shortKey: true,\n handler: headerShortcutHandler,\n },\n // ctrl + Y => redo\n redoShortcut: {\n key: 'Y',\n shortKey: true,\n handler: redoChange,\n },\n },\n },\n});\n\n// translations for internal quill components\nexport const generateTranslations = ({ translate }) => ({\n linkLabel: translate('.addLinkLabel'),\n visitLink: translate('.visitLink'),\n linkSave: translate('app.actions.save'),\n linkEdit: translate('app.actions.edit'),\n linkRemove: translate('app.actions.delete'),\n});\n\nconst lineBreakMatcher = (node, delta) => {\n // a quick-fix for https://github.com/gohiring/mpt/issues/1853\n // adding a white space before the line break prevent the quill from crashing\n // examples of problematic html:\n // 1.

Kontakt


Not
ok

\n // 2.

Kontakt


This is still
not ok

\n delta.ops = [{ insert: ' ' }, { insert: { [SOFT_BREAK]: '' } }];\n return delta;\n};\n\nconst SOFT_BREAK = 'SoftBreak';\n\n// allowed values for the indent (margin-left)\n// strings from \"0em\" to \"9em\"\nconst ALLOWED_INDENTS = Array(10)\n .fill()\n .map((_, index) => index + 'em');\n\nexport const setup = (Quill) => {\n const Break = Quill.import('blots/break');\n const Embed = Quill.import('blots/embed');\n const Parchment = Quill.import('parchment');\n\n // adds inline styles to the indented items.\n // the default behavior is to add the class instead.\n // that does not work for us because quill's style is not available\n // in job boards\n // TODO (nikola 13.12.2023): this is a temporary hack that does not solve the issue\n // with the nested lists(which are still not supported),\n // but mimics the appearance of the nested lists to a certain point\n class IndentAttributor extends Parchment.Attributor.Style {\n add(node, value) {\n // if there are some styling that would clash with ours,\n // do not override it.\n if (node.style.marginLeft && !node.style.marginLeft.includes('em')) {\n return false;\n // if the value indicates the in/decrement calculate new value\n } else if (typeof value === 'string' && /^[+-]1$/.test(value)) {\n return super.add(node, `${calculateIndentMargine({ node, value })}em`);\n\n // if the value is given explicitly just apply the appropriate style\n // could be number that matches the index of allowed value, or the value itself\n } else {\n const normalizedValue =\n typeof value === 'number' ? `${value}em` : value;\n return super.add(node, normalizedValue);\n }\n }\n }\n\n const IndentStyle = new IndentAttributor('indent', 'margin-left', {\n scope: Parchment.Scope.BLOCK,\n whitelist: ALLOWED_INDENTS,\n });\n Quill.register(IndentStyle, true);\n\n class SoftBreak extends Break {\n length() {\n return 1;\n }\n value() {\n return '\\n';\n }\n\n insertInto(parent, ref) {\n Embed.prototype.insertInto.call(this, parent, ref);\n }\n }\n SoftBreak.blotName = SOFT_BREAK;\n SoftBreak.tagName = 'BR';\n Quill.register(SoftBreak);\n};\n\n// value could be either the string '-1' or '+1'\nconst calculateIndentMargine = ({ node, value }) => {\n const step = Number(value);\n if (!node.style.marginLeft) {\n return step;\n } else {\n const [currentIndent] = node.style.marginLeft.split('em');\n return Number(currentIndent) + step;\n }\n};\n","import PropTypes from 'prop-types';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useForm } from 'react-final-form';\nimport ReactQuill from 'react-quill';\nimport 'react-quill/dist/quill.snow.css';\nimport useI18n from '../../../../lib/use_i18n';\nimport {\n PlaceholderQuill,\n StyledInputWrapper,\n StyledQuill,\n} from '../../styles/editor';\n\nimport { HiddenInput } from '../../styles/form';\nimport { Field } from '../field';\nimport { getError, normalizeInitialValue } from '../utils';\nimport {\n generateIcons,\n generateModules,\n generateTranslations,\n setup,\n} from './utils';\n\n/**\n * Editor component renders wysiwyg editor. its value can be\n * rendered as html. The list of editing commands can be found\n * in the ./utils.js TOOLBAR const.\n *\n * className: Additional CSS class name for the component.\n * disabled: Determines whether the editor is disabled or not.\n * errorText: The error message to display, if any.\n * hint: A popup text for the help icon in the top right.\n * hintId: An id for the help icon button wrapper.\n * initialValue: The initial value of the editor.\n * inputAttrs: Additional attributes to be applied to the hidden input element.\n * label: The label text for the editor.\n * name: The name of the input field.\n * namespace: For generating tracking id for potential error messages.\n * placeholder: The placeholder text for the editor.\n * required: affect how the label will look.\n */\n\nsetup(ReactQuill.Quill);\nconst modules = generateModules(ReactQuill.Quill);\n\nexport const Editor = ({\n className,\n disabled,\n errorText,\n form,\n hint,\n hintId,\n inputAttrs,\n label,\n labelProps,\n name,\n namespace,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n required,\n value,\n}) => {\n const [localValue, setLocalValue] = useState(value);\n const [isActive, setIsActive] = useState(false);\n const [isExpanded, setIsExpanded] = useState(false);\n const [showPlaceholder, setShowPlaceholder] = useState(\n Boolean(!value && placeholder)\n );\n const handleOnChange = (value, delta, source) => {\n const quill = quillRef?.current?.getEditor();\n\n // prevent empty paragraph to appear as non-empty value\n const normalizedValue = quill?.getLength() > 1 ? value : '';\n\n setLocalValue(normalizedValue);\n\n // when we receive external data the editor will format it,\n // making field effectively dirty, so we have to reset the form with the\n // formatted value. This is done only if no manual changes have been made:\n // e.g. loading initial values, reseting the form..\n if (normalizedValue && form && source === 'api') {\n normalizeInitialValue({ form, value: normalizedValue, name });\n } else {\n onChange && onChange(normalizedValue);\n }\n };\n\n const quillRef = useRef(null);\n const initialized = useRef(false);\n const { translate } = useI18n('app.form.editor');\n\n if (!initialized.current) {\n generateIcons({ Quill: ReactQuill.Quill, translate });\n initialized.current = true;\n }\n // actions on the first render\n useEffect(() => {\n if (value) {\n const quill = quillRef.current.getEditor();\n const delta = quill.clipboard.convert(value);\n quill.setContents(delta);\n }\n }, []); //eslint-disable-line\n\n useEffect(() => {\n // if showPlaceholder changes value to false, we want to focus\n // on quill editor if active\n if (!showPlaceholder && isActive) {\n const quill = quillRef.current.getEditor();\n quill.focus();\n }\n }, [showPlaceholder, isActive]); //eslint-disable-line\n\n useEffect(() => {\n // hide placeholder on focus\n isActive && setShowPlaceholder(false);\n }, [isActive]);\n\n useEffect(() => {\n // hide placeholder on programatic value change\n // e.g. fill values from profile/draft\n setShowPlaceholder(!isActive && !value && placeholder);\n }, [value, placeholder, isActive]);\n\n return (\n \n {\n setIsActive(true);\n }}\n >\n {/* Quill does not support html as a placeholder, so we had to\n implement two versions of the editor: one will be utilized\n as a placeholder that shows html, the other one is 'real' editor */}\n \n \n\n {\n setIsActive(false);\n if (!quillRef.current.editingArea.contains(document.activeElement)) {\n setIsExpanded(false);\n }\n onBlur && onBlur();\n }}\n onChange={handleOnChange}\n onFocus={() => {\n setIsActive(true);\n setIsExpanded(true);\n onFocus && onFocus();\n }}\n ref={quillRef}\n theme={'snow'}\n translations={generateTranslations({ translate })}\n value={onChange ? value : localValue}\n />\n {\n // we take focus from FocusOnError, and handle it so that\n // the quill editor becomes active\n setIsActive(true);\n }}\n value={onChange ? value : localValue}\n />\n \n );\n};\n\nEditor.defaultProps = {\n errorText: null,\n additionalHiddenFields: null,\n};\n\nEditor.propTypes = {\n additionalHiddenFields: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string.isRequired,\n value: PropTypes.string,\n })\n ),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n errorText: PropTypes.string,\n hint: PropTypes.string,\n hintId: PropTypes.string,\n inputAttrs: PropTypes.object,\n label: PropTypes.string,\n name: PropTypes.string.isRequired,\n namespace: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n placeholder: PropTypes.string,\n required: PropTypes.bool,\n value: PropTypes.string,\n};\n\nexport const EditorField = ({\n additionalHiddenFields,\n className,\n disabled,\n hint,\n hintId,\n inputAttrs,\n label,\n labelProps,\n name,\n namespace,\n placeholder,\n required,\n ...fieldProps\n}) => {\n const form = useForm();\n return (\n \n {({ input, meta }) => (\n \n )}\n \n );\n};\n\nEditorField.propTypes = {\n ...Field.propTypes,\n ...Editor.propTypes,\n};\n","import styled from 'styled-components';\nimport { Flex } from '../../styles/flex';\nimport {\n backgroundBlue,\n borderLightGray,\n gray,\n lightBlue,\n} from '../../styles/variables';\n\nexport const BrowseButtonContainer = styled.div`\n margin: 16px 0;\n`;\n\nexport const ImageUploadContainer = styled.div`\n align-items: center;\n background: none;\n border: 2px dotted ${borderLightGray};\n color: ${gray};\n display: flex;\n height: 100%;\n justify-content: center;\n padding: 24px 30px;\n text-align: center;\n flex-grow: 1;\n`;\n\nexport const ButtonsWrapper = styled.div`\n display: flex;\n gap: 10px;\n margin-top: auto;\n justify-content: end;\n`;\n\nexport const ContainerWithSelectedImage = styled.div`\n display: flex;\n min-height: 150px;\n height: 100%;\n flex-grow: 1;\n & > * {\n flex: 1;\n flex-grow: 1;\n }\n img {\n width: max-content;\n }\n`;\n\nexport const NoImageButton = styled.button`\n border: none;\n background: transparent;\n min-width: 100px;\n .select-image {\n display: none;\n }\n &:hover {\n .select-image {\n display: block;\n }\n .no-image {\n display: none;\n }\n *,\n span.material-symbols-outlined {\n color: ${lightBlue};\n }\n }\n`;\n\nexport const ActionButton = styled.button`\n display: flex;\n align-items: center;\n padding: 12px;\n height: fit-content;\n &:first-child {\n margin-left: 8px;\n }\n`;\n\nexport const ImageContainer = styled.div`\n align-items: center;\n justify-content: center;\n width: 100%;\n display: flex;\n overflow: hidden;\n min-height: ${({ imageHeight }) => imageHeight || 150}px;\n img {\n max-width: 100%;\n height: ${({ imageHeight }) => (imageHeight ? `${imageHeight}px` : 'auto')};\n margin-bottom: 8px;\n }\n .material-symbols-outlined {\n font-size: 24px;\n background-color: #fff;\n color: #bbb;\n border-radius: 3px;\n margin: 5px;\n }\n`;\n\nconst activeRowStyle = `\n background: ${lightBlue};\n color: white;\n`;\n\nexport const StyledImageRow = styled(Flex)`\n width: 100%;\n min-height: 40px;\n justify-content: space-between;\n align-items: center;\n border-radius: 3px;\n padding: 4px;\n cursor: pointer;\n ${({ active }) => (active ? activeRowStyle : '')}\n // buttons are invisible by default\n & > div > button {\n display: none;\n }\n // we show them on hover\n &:hover {\n & > div > button {\n display: inherit;\n }\n ${({ active }) => (!active ? `background: ${backgroundBlue};` : '')}\n }\n form {\n width: 100%;\n }\n`;\n\nexport const RenameInputWrapper = styled(Flex)`\n background: ${backgroundBlue};\n border-bottom: 2px solid ${borderLightGray};\n button {\n display: block !important;\n }\n input {\n border: none;\n background: transparent;\n outline: none;\n flex-grow: 2;\n }\n`;\n","export const fileValidator = async ({\n file,\n maxFileSize,\n maxWidth,\n minWidth,\n translate,\n validFileFormats,\n}) => {\n return (\n validateFileSize({ file, maxFileSize, translate }) ||\n validateFileFormats({ file, translate, validFileFormats }) ||\n (await validateImageWidth({ file, minWidth, maxWidth, translate }))\n );\n};\n\nconst validateFileSize = ({ file, maxFileSize, translate }) => {\n if (file && file.size && file.size > maxFileSize) {\n return translate('image_uploader.errors.size', {\n size: humanFileSize(maxFileSize, 'mb'),\n });\n }\n};\n\nconst validateFileFormats = ({ file, validFileFormats, translate }) => {\n if (\n file &&\n validFileFormats.every(\n (fileExtension) => FILE_TYPES[fileExtension] !== file.type\n )\n ) {\n return translate('image_uploader.errors.format', {\n formats: formatsToText({ formats: validFileFormats, translate }),\n });\n }\n};\n\nconst validateImageWidth = async ({ file, minWidth, maxWidth, translate }) => {\n if (minWidth || maxWidth) {\n return new Promise((resolve) => {\n const image = new Image();\n\n image.addEventListener('load', () => {\n if (minWidth && image.width < minWidth) {\n resolve(\n translate('image_uploader.errors.min_width', {\n minWidth,\n })\n );\n }\n if (maxWidth && image.width > maxWidth) {\n resolve(\n translate('image_uploader.errors.max_width', {\n maxWidth,\n })\n );\n }\n\n resolve();\n });\n\n image.src = URL.createObjectURL(file);\n });\n }\n};\n\nexport const formatsToText = ({ translate, formats }) =>\n formats.reduce((acc, format, index) => {\n const separator = acc\n ? index === formats.length - 1\n ? ` ${translate('app.or')} `\n : ', '\n : '';\n return `${acc}${separator}${format}`;\n });\n\nconst FILE_TYPES = {\n png: 'image/png',\n jpeg: 'image/jpeg',\n gif: 'image/gif',\n};\n\n// Aux: Convert file size from bytes to mb or kb to show in message and errors\nexport const humanFileSize = (bytes, unit) => {\n const factor = unit === 'mb' ? 1024 * 1024 : 1024;\n\n return Math.round(((bytes || 0) / factor) * 100) / 100;\n};\n\n// calculates greatest common denominator\nconst gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\nexport const aspectRatio = ({ width, height }) => {\n if (!width || !height) {\n return null;\n }\n const divisor = gcd(width, height);\n return `${width / divisor}:${height / divisor}`;\n};\n\nexport const dimensionsToString = ({ width, height }) => {\n return `${width} x ${height} px`;\n};\n\nexport const imageFitRecommendedDimensions = ({\n recommendedDimensions,\n imageDimensions,\n}) =>\n recommendedDimensions.width === imageDimensions.width &&\n recommendedDimensions.height === imageDimensions.height;\n","import styled from 'styled-components';\nimport useI18n from '../../../../../lib/use_i18n';\nimport { Notification } from '../../../notification';\nimport { Span } from '../../../styles/text';\nimport { borderLightGray, fontSizeXS, gray } from '../../../styles/variables';\nimport {\n aspectRatio,\n dimensionsToString,\n imageFitRecommendedDimensions,\n} from '../utils';\nimport { useImageDimensions } from './use_image_dimensions';\n\nconst IMAGE_CROPPER_LINK = `https://imagecropper.stepstone.com/?lang=`;\nexport const Preview = ({ selectedImage, recommendedDimensions }) => {\n const { translate, formattedDate, generateLink, locale } = useI18n(\n 'image_uploader.select_image'\n );\n const imageDimensions = useImageDimensions(selectedImage?.url);\n return (\n \n \n {translate('app.actions.preview')}\n \n \n \n \n {selectedImage && (\n
\n {selectedImage?.name}\n \n {translate('.uploaded_on')}{' '}\n {formattedDate(selectedImage?.created_at)}\n \n \n \n {translate('.ratio')}:{' '}\n {aspectRatio(imageDimensions)}\n \n \n {translate('.dimensions')}:{' '}\n {dimensionsToString(imageDimensions)}\n \n \n {!imageFitRecommendedDimensions({\n imageDimensions,\n recommendedDimensions,\n }) && (\n \n )}\n
\n )}\n
\n );\n};\n\nconst ImgWrapper = styled.div`\n overflow: hidden;\n max-width: 100%;\n max-height: 100%;\n flex-shrink: 3;\n & > img {\n width: auto;\n max-height: 100%;\n max-width: fit-content;\n border: 1px solid ${borderLightGray};\n border-radius: 3px;\n }\n`;\n\nconst RatioDimensions = styled.div`\n display: flex;\n gap: 16px;\n &:not(:last-child) {\n margin-bottom: 12px;\n }\n`;\n\nconst Details = styled.div`\n display: flex;\n flex-direction: column;\n color: ${gray};\n font-size: ${fontSizeXS};\n`;\n\nconst PreviewWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`;\n","import { useEffect, useState } from 'react';\n\nexport const useImageDimensions = (src) => {\n const [imageDimensions, setImageDimensions] = useState({\n width: 0,\n height: 0,\n });\n\n useEffect(() => {\n if (!src) return;\n\n const img = new Image();\n img.src = src;\n\n const handleLoad = () => {\n const width = img.naturalWidth;\n const height = img.naturalHeight;\n\n setImageDimensions({ width, height });\n };\n\n img.onload = handleLoad;\n\n return () => {\n img.onload = null;\n };\n }, [src]);\n\n return imageDimensions;\n};\n","import { useRef } from 'react';\nimport { Form } from 'react-final-form';\nimport styled from 'styled-components';\nimport useI18n from '../../../../../lib/use_i18n';\nimport { useIsVisible } from '../../../../../lib/use_is_visible';\nimport useVisibility from '../../../../../lib/use_visibility';\nimport Icon from '../../../icon';\nimport InlineConfirmation from '../../../inline_confirmation';\nimport { MODAL_WRAPPER_ID } from '../../../modal/modal';\nimport { BorderlessButton } from '../../../styles/button';\nimport { Flex } from '../../../styles/flex';\nimport { Field } from '../../field';\nimport { RenameInputWrapper, StyledImageRow } from '../styles';\n\nexport const ImageRow = ({\n onClick,\n handleDelete,\n generateHandleUpdate,\n image,\n active,\n listRef,\n onDoubleClick,\n}) => {\n const rowRef = useRef();\n const isVisible = useIsVisible(rowRef, listRef);\n const {\n shown: isRenaming,\n show: showNameInput,\n hide: hideNameInput,\n } = useVisibility(rowRef, false, true, `#${MODAL_WRAPPER_ID}`);\n\n const handleUpdate = generateHandleUpdate(hideNameInput);\n\n return (\n onClick(image)}\n onDoubleClick={!isRenaming ? () => onDoubleClick(image) : undefined}\n >\n {isVisible ? (\n isRenaming ? (\n \n ) : (\n \n )\n ) : null}\n \n );\n};\n\nconst Row = ({ image, showNameInput, handleDelete }) => {\n const { translate } = useI18n('image_uploader.select_image');\n return (\n <>\n \n \n {image.name}\n \n \n showNameInput()}\n >\n \n \n handleDelete(image)}\n >\n {(deleteCallback) => (\n {\n e.stopPropagation();\n deleteCallback();\n }}\n >\n \n \n )}\n \n \n \n );\n};\n\nconst RenameInput = ({ image, handleSubmit }) => {\n const { translate } = useI18n();\n return (\n
\n {({ handleSubmit }) => (\n \n \n \n {({ input }) => (\n e.target.select()}\n />\n )}\n \n \n {translate('app.actions.save')}\n \n \n \n )}\n \n );\n};\n\nconst ImageName = styled.span`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nconst Button = styled.button`\n background: transparent;\n border: none;\n display: flex;\n align-items: center;\n`;\n\nconst Thumbnail = styled.img`\n max-height: 30px;\n min-width: 40px;\n width: 40px;\n`;\n","import { useEffect, useMemo, useState } from 'react';\n\n// A custom hook that receives an element and an optional\n// parent element (defaults to body) and returns a boolean\n// value based on whether the element in question\n// is visible inside the said element.\n// This information is useful if we want to prevent unnecessary\n// image or complex component renders.\nexport const useIsVisible = (elRef, containerRef) => {\n const [isIntersecting, setIntersecting] = useState(false);\n\n const observer = useMemo(\n () =>\n new IntersectionObserver(\n ([entry]) => setIntersecting(entry.isIntersecting),\n { root: containerRef?.current }\n ),\n [elRef, containerRef] //eslint-disable-line\n );\n\n useEffect(() => {\n observer.observe(elRef.current);\n return () => observer.disconnect();\n }, []); //eslint-disable-line\n\n return isIntersecting;\n};\n","import { useRef } from 'react';\n\nimport useI18n from '../../../../../lib/use_i18n';\nimport { Flex } from '../../../styles/flex';\nimport { Span } from '../../../styles/text';\nimport { fontSizeXS, gray } from '../../../styles/variables';\nimport { ImageRow } from './row';\n\nexport const List = ({\n close,\n deleteImage,\n generateHandleUpdate,\n handleSelect,\n items,\n selectedImage,\n setSelectedImage,\n totalCount,\n}) => {\n const { translate } = useI18n('image_uploader.select_image');\n const listRef = useRef();\n\n return (\n \n \n {translate('.images', {\n count: items.length,\n totalCount,\n })}\n \n {items.map((image) => (\n {\n handleSelect(image);\n close();\n }}\n />\n ))}\n \n );\n};\n","import { useEffect, useState } from 'react';\n\nimport useFilters from '../../../../../lib/use_filters';\nimport useQuery from '../../../../../lib/use_query';\n\nexport const useGenerateSelectImageValues = ({\n fetchImages,\n handleDelete,\n selectedImageUrl,\n handleRename,\n}) => {\n const [selectedImage, setSelectedImage] = useState(null);\n const { data: images = [], setData: setImages } = useQuery(\n 'mediaAssets',\n fetchImages\n );\n const {\n items,\n filters: { search },\n } = useFilters(\n images,\n {},\n { order: { by: 'name', ascending: true } },\n ['name'],\n { minMatchCharLength: 1 }\n );\n\n const deleteImage = async (image) => {\n handleDelete && (await handleDelete(image.id));\n\n // remove deleted image from displayed images list\n setImages(items.filter((img) => img.url !== image.url));\n\n // if we are deleting the selected image,\n // fallback to the fitsr image\n if (image.url === selectedImage.url) {\n const newSelectedImage = items.find((img) => img.url !== image.url);\n setSelectedImage(newSelectedImage);\n }\n };\n\n // this is called after the handleRename callback. once we are sure that\n // the image is renamed successfully, we want to update image list(localImages)\n // and selectedImage to reflect those changes\n const updateImageList = (image) => {\n setSelectedImage(image);\n setImages((images) =>\n images.map((oldImage) => (oldImage.id === image.id ? image : oldImage))\n );\n };\n\n const generateHandleUpdate = (hideNameInput) => async (image) => {\n try {\n await handleRename(image);\n updateImageList(image);\n hideNameInput();\n } catch (error) {\n return error?.response?.data;\n }\n };\n\n // automatically set selecetd image if selectedImage is falsy\n // e.g. after fetching the images for the first time.\n // the selected image will be picked based on the form url value,\n // before it falls back to the first image in list\n useEffect(() => {\n if (items.length && !selectedImage) {\n const newSelectedImage =\n items.find(({ url }) => selectedImageUrl === url) || items[0];\n setSelectedImage(newSelectedImage);\n }\n }, [items, Boolean(selectedImage), setSelectedImage, selectedImageUrl]); //eslint-disable-line\n\n return {\n deleteImage,\n generateHandleUpdate,\n items,\n search,\n selectedImage,\n setSelectedImage,\n totalCount: images?.length || 0,\n };\n};\n","import styled from 'styled-components';\n\nimport useI18n from '../../../../../lib/use_i18n';\nimport SearchTerm from '../../../search_term';\nimport { BorderlessButton } from '../../../styles/button';\nimport { ButtonsWrapper, Flex } from '../../../styles/flex';\nimport { Span } from '../../../styles/text';\nimport { fontSizeXS, gray } from '../../../styles/variables';\nimport { Preview } from './preview';\nimport { List } from './list';\nimport { useGenerateSelectImageValues } from './use_generate_select_image_values';\n\nexport const SelectImage = ({\n close,\n handleDelete,\n handleRename,\n handleSelect,\n setActiveTab,\n selectedImageUrl,\n fetchImages,\n recommendedDimensions,\n}) => {\n const { translate } = useI18n('image_uploader.select_image');\n const {\n deleteImage,\n generateHandleUpdate,\n totalCount,\n items,\n search,\n selectedImage,\n setSelectedImage,\n } = useGenerateSelectImageValues({\n handleDelete,\n handleRename,\n selectedImageUrl,\n fetchImages,\n });\n return totalCount ? (\n \n \n \n \n \n \n \n \n {\n handleSelect(selectedImage);\n close();\n }}\n className=\"btn btn-primary\"\n >\n {translate('app.actions.select')}\n \n \n \n ) : (\n \n {translate('.no_images')}\n setActiveTab('upload')}>\n {translate('.upload_image')}\n \n \n );\n};\n\nconst NoImagesWrapper = styled.div`\n flex-grow: 1;\n height: 100%;\n * {\n font-size: ${fontSizeXS};\n }\n`;\n\nconst ListAndPreviewWrapper = styled.div`\n flex-grow: 1;\n overflow: hidden;\n gap: 8px;\n height: 100%;\n display: flex;\n & > div {\n width: 50%;\n }\n`;\n","import React from 'react';\nimport useI18n from '../../../../../lib/use_i18n';\nimport Icon from '../../../icon';\nimport { BrowseButtonContainer, ImageUploadContainer } from '../styles';\nimport { humanFileSize } from '../utils';\n\nexport const DropZone = ({\n validFileFormats,\n formatHint,\n getInputProps,\n getRootProps,\n maxFileSize,\n open,\n}) => {\n const { translate } = useI18n('image_uploader');\n return (\n \n \n\n
\n \n\n
\n {translate('.format_and_size', {\n size: humanFileSize(maxFileSize, 'mb'),\n })}\n
\n
{formatHint}
\n
\n {validFileFormats\n ?.map((fileExtension) => fileExtension.toUpperCase())\n .join(', ')}\n
\n\n \n \n \n
{translate('.drag_and_drop')}
\n
\n
\n );\n};\n","import { useState } from 'react';\n\nexport const useGenerateImageUploadValues = ({\n handleUpload,\n setFile,\n setFileError,\n handleSelect,\n uploadErrorMsg,\n close,\n file,\n successMsg,\n}) => {\n const [uploadError, setUploadError] = useState(null);\n const [uploading, setUploading] = useState(false);\n const [requestController, setRequestController] = useState(null);\n const [progress, setProgress] = useState(0);\n const reset = () => {\n setProgress(0);\n setUploading(false);\n setFileError(null);\n setUploadError(null);\n setFile(null);\n };\n\n const onUpload = ({ url } = {}) => {\n reset();\n handleSelect({ url, name: file.name });\n Flash.success(successMsg);\n close();\n };\n\n const onUploadProgress = (event) => {\n setProgress(Math.round((100 * event.loaded) / event.total));\n };\n\n const onError = () => {\n setUploadError(uploadErrorMsg);\n setUploading(false);\n };\n\n const upload = async () => {\n setUploading(true);\n const abortController = new AbortController();\n setRequestController(abortController);\n const signal = abortController.signal;\n\n await handleUpload({\n file,\n onUploadProgress,\n onSuccess: onUpload,\n signal,\n onError,\n });\n };\n\n const onCancel = () => {\n setProgress(0);\n setUploading(false);\n requestController.abort();\n };\n\n return {\n uploadError,\n uploading,\n reset,\n progress,\n upload,\n onCancel,\n };\n};\n","import React from 'react';\nimport useI18n from '../../../../../lib/use_i18n';\nimport { ProgressBar } from '../../../progress_bar';\nimport { Flex } from '../../../styles/flex';\nimport { ErrorWrapper } from '../../../styles/form';\nimport { gray } from '../../../styles/variables';\nimport { ButtonsWrapper, ContainerWithSelectedImage } from '../styles';\nimport { humanFileSize } from '../utils';\nimport { useGenerateImageUploadValues } from './use_generate_image_upload_values';\n\nexport const ImageUpload = ({\n file,\n handleUpload,\n setFile,\n handleSelect,\n uploadErrorMsg,\n fileError,\n setFileError,\n successMsg,\n close,\n}) => {\n const { translate } = useI18n('image_uploader');\n\n const { uploadError, uploading, reset, progress, upload, onCancel } =\n useGenerateImageUploadValues({\n setFile,\n setFileError,\n handleSelect,\n handleUpload,\n uploadErrorMsg,\n file,\n close,\n successMsg,\n });\n return (\n \n \n {!fileError && (\n \n )}\n {file.name}\n {humanFileSize(file.size, 'kb')} KB\n\n {(fileError || uploadError) && (\n {fileError || uploadError}\n )}\n\n {!uploading ? (\n \n \n {translate('.buttons.discard')}\n \n \n {translate('.buttons.upload')}\n \n \n ) : (\n \n )}\n \n \n );\n};\n\nconst Uploading = ({ progress, onCancel }) => {\n const { translate } = useI18n('image_uploader');\n return (\n
\n \n \n
{progress}%
\n
\n\n \n \n {translate('.buttons.cancel')}\n \n \n
\n );\n};\n","import React, { useState } from 'react';\nimport { useDropzone } from 'react-dropzone';\nimport useI18n from '../../../../../lib/use_i18n';\nimport { DropZone } from './drop_zone';\nimport { ImageUpload } from './image_upload';\nimport { fileValidator } from '../utils';\n\nexport const UploadImage = ({\n close,\n formatHint,\n handleSelect,\n handleUpload,\n maxFileSize,\n maxWidth,\n minWidth,\n successMsg,\n uploadErrorMsg,\n validFileFormats,\n}) => {\n const { translate } = useI18n('image_uploader');\n const [fileError, setFileError] = useState(null);\n const [file, setFile] = useState();\n const { getRootProps, getInputProps, open } = useDropzone({\n noClick: true,\n noKeyboard: true,\n onDrop: async (files) => {\n setFileError(null);\n const [fileAdded] = files.map((file) =>\n Object.assign(file, {\n preview: URL.createObjectURL(file),\n })\n );\n setFile(fileAdded);\n setFileError(\n await fileValidator({\n file: fileAdded,\n maxFileSize,\n maxWidth,\n minWidth,\n translate,\n validFileFormats,\n })\n );\n },\n });\n\n return !file ? (\n \n ) : (\n \n );\n};\n","import React, { useCallback } from 'react';\nimport styled from 'styled-components';\nimport { HELPCENTER_URL } from '../../../../consts';\nimport useI18n from '../../../../lib/use_i18n';\nimport { Link } from '../../styles/text';\nimport { modalZIndex } from '../../styles/variables';\nimport { Tabs } from '../../tabs';\nimport { SelectImage } from './select_image';\nimport { UploadImage } from './upload_image';\n\nexport const ImageUploadModal = ({\n Modal,\n allowSelect,\n close,\n fetchImages,\n formatHint,\n handleDelete,\n handleRename,\n handleSelect,\n handleUpload,\n images,\n name,\n selectedImageUrl,\n maxFileSize,\n maxWidth,\n minWidth,\n modalTitle,\n successMsg,\n uploadErrorMsg,\n validFileFormats,\n recommendedDimensions,\n}) => {\n const { translate } = useI18n('image_uploader');\n const UploadImageWithProps = useCallback(\n () => (\n <>\n \n \n \n ),\n [\n close,\n formatHint,\n handleSelect,\n handleUpload,\n maxFileSize,\n maxWidth,\n minWidth,\n successMsg,\n uploadErrorMsg,\n validFileFormats,\n ]\n );\n return (\n \n {allowSelect ? (\n (\n <>\n \n \n \n ),\n },\n {\n name: 'upload',\n label: translate('.upload_tab'),\n component: UploadImageWithProps,\n },\n ]}\n />\n ) : (\n \n )}\n \n );\n};\n\nconst StyledLink = styled(Link)`\n margin-top: -30px;\n z-index: ${modalZIndex + 10};\n`;\n\nconst HelpLink = ({ offset }) => {\n const LinkeEl = offset ? StyledLink : Link;\n const { translate } = useI18n('image_uploader');\n\n return (\n \n {translate('.help_link')}\n \n );\n};\n","import { useEffect, useState } from 'react';\nimport { validateImage } from '../../../../store';\n\n// A helper hook that takes away the complexity from the ImageUploader\n// component. It calculates and updates provided props and returns only the\n// necessary values for the ImageUploader to consume.\nexport const useGenerateImageUploaderValues = ({\n handleError,\n initialImageUrl,\n instantValidation,\n onChange,\n validationError,\n}) => {\n const shouldValidate =\n instantValidation && initialImageUrl && !validationError;\n const [remoteValidationError, setRemoteValidationError] =\n useState(validationError);\n const [validatingRemoteImage, setValidatingRemoteImage] =\n useState(shouldValidate);\n const [imageUrl, setImageUrl] = useState(initialImageUrl);\n\n const handleRemoteValidateResult = (error = null) => {\n setRemoteValidationError(error);\n setValidatingRemoteImage(false);\n };\n\n // If component receives pre-assigned imageUrl it has to call backend to validate it\n // The url could be broken or pointing to an invalid image.\n useEffect(() => {\n (async () => {\n try {\n if (shouldValidate) {\n await validateImage(initialImageUrl);\n handleRemoteValidateResult();\n }\n } catch (error) {\n handleRemoteValidateResult(error?.response?.data?.error);\n }\n })();\n }, []); //eslint-disable-line\n\n useEffect(() => {\n setImageUrl(initialImageUrl);\n }, [initialImageUrl]);\n\n useEffect(() => {\n onChange?.(imageUrl);\n }, [imageUrl]); //eslint-disable-line\n\n useEffect(() => {\n handleError &&\n handleError({\n error: remoteValidationError,\n isValidating: validatingRemoteImage,\n });\n }, [remoteValidationError, validatingRemoteImage]); //eslint-disable-line\n\n const handleSelect = ({ url }) => {\n setImageUrl(url);\n setRemoteValidationError();\n };\n\n const handleRemoveConfirmation = async (hideConfirmation) => {\n setImageUrl('');\n setRemoteValidationError();\n setValidatingRemoteImage(false);\n hideConfirmation();\n };\n\n const showImage =\n !validatingRemoteImage && !remoteValidationError && imageUrl;\n\n return {\n handleRemoveConfirmation,\n handleSelect,\n imageUrl,\n showImage,\n };\n};\n","import PropTypes from 'prop-types';\nimport React, { useMemo, useState } from 'react';\nimport { ActionButton, ImageContainer, NoImageButton } from './styles';\n\nimport useI18n from '../../../../lib/use_i18n';\nimport Icon from '../../icon';\nimport IconWithPopover from '../../icon_with_popover';\nimport InlineConfirmation from '../../inline_confirmation';\nimport { useModal } from '../../modal';\nimport { Flex } from '../../styles/flex';\nimport { Field } from '../field';\nimport { InputWrapper } from '../input_wrapper';\nimport { Label } from '../label';\nimport { getError } from '../utils';\nimport { ImageUploadModal } from './modal';\nimport { useGenerateImageUploaderValues } from './use_generate_image_uploader_values';\n\n/**\n * Shows an image with edit and delete buttons.\n *\n * Available props:\n * allowSelect: there are cases (company logo), where we do not support selecting an existing image.\n * the value is true by default\n * alt: alt text for the displayed image\n * editId: ID for the edit button\n * formatHint: text hint about accepted format\n * handleDelete: image delete callback, receives an image object\n * handleError: receives the error text or a falsy value, and a boolean value indicating is validation in progress\n * handleRename: receives an image obj {id, name, ...}. It is called after user tries to rename the image.\n * handleUpload: receives the file to be uploaded, as well as onSuccess, onError, and onUploadProgress callbacks\n * height: Height (in pixels) for the image container\n * imageUrl: URL to image, if empty it will show \"No image\", if present it shows the image\n * images: an array of images to choose from if the allowSelect is true.\n * image object should have a name and an url props\n * instantValidation: when true, the given image url will be validated. By default, the image isn't validated we assume\n * it is uploaded on our servers.\n * maxFileSize: Max allowed size in bytes for images (default 1Mb)\n * maxWidth: Max width (in pixels) to accept the image. If null or empty this validation will be skipped\n * minWidth: Min width (in pixels) to accept the image. If null or empty this validation will be skipped\n * modalTitle: text for the modal title\n * successMsg: text for the success Flash message\n * uploadErrorMsg: text for the upload error message\n * validFileFormats: Array of file extensions for accepted images\n * validationError: A validation error from the backend\n * width: Width (in pixels) for the image container\n */\n\nconst ImageUploader = ({\n allowSelect,\n alt,\n editId,\n fetchImages,\n formatHint,\n handleDelete,\n handleError,\n handleUpload,\n handleRename,\n height,\n hint,\n hintId,\n imageUrl: initialImageUrl,\n instantValidation,\n labelProps,\n maxFileSize,\n maxWidth,\n minWidth,\n modalTitle,\n name,\n onChange,\n successMsg,\n uploadErrorMsg,\n validFileFormats,\n validationError,\n width,\n recommendedDimensions,\n}) => {\n const { translate } = useI18n('image_uploader');\n const { Modal, open, close: closeModal } = useModal();\n\n // passing event object to the open modal would prevent open tooltips from closing\n const openModal = () => open();\n\n const { handleRemoveConfirmation, handleSelect, imageUrl, showImage } =\n useGenerateImageUploaderValues({\n handleError,\n initialImageUrl,\n instantValidation,\n onChange,\n validationError,\n });\n return (\n
\n \n \n \n \n \n \n \n\n \n {(confirmationCallback) => (\n \n \n \n \n \n )}\n \n {hint ? (\n \n ) : null}\n \n \n \n {showImage ? (\n {alt\n ) : (\n \n \n
{translate('.no_image')}
\n
{translate('.select_img')}
\n \n )}\n
\n
\n\n \n\n \n
\n );\n};\n\nImageUploader.propTypes = {\n allowSelect: PropTypes.bool,\n alt: PropTypes.string,\n editId: PropTypes.string,\n fetchImages: PropTypes.func,\n formatHint: PropTypes.string,\n handleDelete: PropTypes.func,\n handleError: PropTypes.func,\n handleRename: PropTypes.func,\n handleUpload: PropTypes.func.isRequired,\n height: PropTypes.number.isRequired,\n hint: PropTypes.string,\n hintId: PropTypes.string,\n imageUrl: PropTypes.string,\n images: PropTypes.arrayOf(\n PropTypes.shape({\n url: PropTypes.string,\n name: PropTypes.string,\n })\n ),\n instantValidation: PropTypes.bool,\n labelProps: PropTypes.shape(Label.propTypes),\n maxFileSize: PropTypes.number,\n maxWidth: PropTypes.number,\n minWidth: PropTypes.number,\n modalTitle: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n successMsg: PropTypes.string.isRequired,\n uploadErrorMsg: PropTypes.string.isRequired,\n validFileFormats: PropTypes.arrayOf(PropTypes.string),\n validationError: PropTypes.string,\n width: PropTypes.number,\n};\n\nImageUploader.defaultProps = {\n allowSelect: true,\n instantValidation: false,\n maxFileSize: 1048576,\n showNotification: false,\n validFileFormats: ['png', 'jpeg'],\n};\n\nexport const ImageUploaderField = ({\n disabled,\n handleError,\n hint,\n hintId,\n label,\n labelProps,\n name,\n required,\n ...imageUploaderProps\n}) => {\n // we want to inform the Form that there are errors\n // regarding the image field, to avoid unnecessary submits.\n // To do that we utilize the data param on the Field component.\n // By default, `data` is an object. We are memoizing it\n // to prevent unnecessary re-renders.\n const [error, setError] = useState();\n const data = useMemo(() => ({ error }), [error]);\n return (\n {\n return meta?.data?.error;\n }}\n name={name}\n data={data}\n >\n {({ input, meta }) => (\n \n {\n setError(error);\n handleError && handleError({ error, isValidating });\n }}\n imageUrl={input.value}\n />\n \n )}\n \n );\n};\n","import React, { useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { Field } from 'react-final-form';\n\nimport { InputWrapper } from './input_wrapper';\nimport {\n CheckboxWrapper,\n OptionLabel,\n StyledRadioButtonCard,\n StyledRadioInput,\n} from '../styles/form';\nimport { getError } from './utils';\nimport Icon from '../icon';\nimport { Flex } from '../styles/flex';\n\nexport const RadioButton = ({ checked, label, name, onChange, value }) => {\n return (\n \n \n \n {label}\n \n \n );\n};\n\nRadioButton.propTypes = {\n checked: PropTypes.bool,\n label: PropTypes.string,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n PropTypes.number,\n ]),\n};\n\nexport const RadioButtonCard = ({\n checked,\n icon,\n label,\n name,\n onChange,\n tooltip,\n value,\n}) => {\n return (\n \n \n
{label}
\n