{"version":3,"file":"TagsInput-BM25WNjb.js","sources":["../../../app/javascript/hooks/selectors.tsx","../../../app/javascript/components/templates/operations/mailOperations/Tag.tsx","../../../app/javascript/components/templates/operations/mailOperations/TagsInput.tsx"],"sourcesContent":["export const classSelectors = {\n wrapper: \"react-tag-input\",\n input: \"react-tag-input__input\",\n tag: \"react-tag-input__tag\",\n tagContent: \"react-tag-input__tag__content\",\n tagRemove: \"react-tag-input__tag__remove\",\n tagRemoveReadOnly: \"react-tag-input__tag__remove-readonly\",\n};\n","import React from \"react\";\nimport { classSelectors } from \"../../../../hooks/selectors\";\nimport { getImageUrl } from \"../../../../commons/assets_path\";\n\ninterface Props {\n value: { id?: number; display_name: string; test_value?: string; icon_path?: string };\n index: number;\n readOnly: boolean;\n remove: (i: number) => void;\n}\n\nexport function Tag(props: Props) {\n const remove = () => props.remove(props.index);\n const { value, readOnly } = props;\n\n const tagRemoveClass = !readOnly\n ? classSelectors.tagRemove\n : `${classSelectors.tagRemove} ${classSelectors.tagRemoveReadOnly}`;\n\n return (\n
\n {value?.icon_path && \"\"}\n
\n {value.display_name}\n
\n {value?.test_value && (\n \n {value.test_value}\n

\n )}\n
\n \n
\n
\n );\n}\n","import React, { LegacyRef, useState } from \"react\";\nimport { Tag } from \"./Tag\";\nimport { classSelectors } from \"../../../../hooks/selectors\";\ntype Tags = { id?: number; display_name: string; test_value?: string; icon_path?: string }[];\n\nexport interface ReactTagInputProps {\n id?: string;\n tags: Tags;\n onChange: React.Dispatch>;\n placeholder?: string;\n maxTags?: number;\n validator?: (val: string) => boolean;\n readOnly?: boolean;\n targetRef?: LegacyRef | undefined;\n isOnlyTag?: boolean;\n}\n\ninterface State {\n input: string;\n}\n\nexport default function ReactTagInput(props: ReactTagInputProps) {\n const [state, setState] = useState({ input: \"\" });\n const inputRef: React.RefObject = React.createRef();\n\n const onInputChange = (e: React.ChangeEvent) => {\n setState({ input: e.target.value });\n };\n\n const onInputKeyDown = (e: React.KeyboardEvent) => {\n const { input } = state;\n const { validator } = props;\n\n if (e.code === \"Enter\" || e.code === \"Space\" || e.code === \"Tab\") {\n e.preventDefault();\n if (input === \"\") {\n return;\n }\n const valid = validator !== undefined ? validator(input) : true;\n if (!valid) {\n return;\n }\n addTag(input);\n }\n };\n\n const onInputBlur = (e: React.ChangeEvent) => {\n const { input } = state;\n const { validator } = props;\n e.preventDefault();\n if (input === \"\") {\n return;\n }\n const valid = validator !== undefined ? validator(input) : true;\n if (!valid) {\n return;\n }\n addTag(input);\n };\n\n const addTag = (value: string) => {\n const tags = [...props.tags];\n if (tags.every((tag) => tag.display_name !== value)) {\n props.onChange((prev) => [...prev, { display_name: value }]);\n }\n setState({ input: \"\" });\n };\n\n const removeTag = (i: number) => {\n const tags = [...props.tags];\n tags.splice(i, 1);\n props.onChange(tags);\n inputRef?.current && inputRef.current.focus();\n };\n\n // const updateTag = (i: number, value: string) => {\n // const tags = [...props.tags];\n // const numOccurencesOfValue = tags.reduce(\n // (prev, currentValue, index) => prev + (currentValue === value && index !== i ? 1 : 0),\n // 0,\n // );\n // if (numOccurencesOfValue > 0) {\n // tags.splice(i, 1);\n // } else {\n // tags[i] = value;\n // }\n // props.onChange(tags);\n // };\n\n const { input } = state;\n\n const { id, tags, placeholder, maxTags, readOnly, targetRef = null, isOnlyTag = true } = props;\n\n const maxTagsReached = maxTags !== undefined ? tags.length >= maxTags : false;\n\n const showInput = !readOnly && !maxTagsReached;\n\n return (\n
\n {isOnlyTag\n ? tags.map((tag, i) => )\n : tags.map((tag, i) =>\n tag?.id ? (\n \n ) : (\n tag.display_name\n ),\n )}\n\n {showInput && (\n \n )}\n
\n );\n}\n"],"names":["classSelectors","Tag","props","remove","value","readOnly","tagRemoveClass","jsxs","jsx","getImageUrl","ReactTagInput","state","setState","useState","inputRef","React","onInputChange","onInputKeyDown","input","validator","addTag","onInputBlur","tag","prev","removeTag","i","tags","id","placeholder","maxTags","targetRef","isOnlyTag","maxTagsReached","showInput"],"mappings":"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"}