{"version":3,"file":"js/4612-453a8394d5f7b58f5781.js","mappings":"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","sources":["webpack://AYTM/./app/_stock/webpack/lib/hooks/useMultiRef.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/styles/basic/formatted-input.module.scss?e8af","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/formatted-input.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/label.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/webcam.jsx"],"sourcesContent":["import { useRef, createRef } from 'react'\n\nexport default function useMultiRef() {\n const multiRef = useRef(null)\n if (null === multiRef.current) {\n multiRef.current = Array.prototype.map.call(arguments, value => {\n const ref = createRef()\n ref.current = value\n return ref\n })\n }\n return multiRef.current\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"formatted-input-module__component___2elQm\"};","import React, { useRef, useEffect, useCallback, useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport { getVisualSelection, setVisualSelection } from '@aytm/lib/common/content-editable'\nimport { nextFocusableElement, stopEvent, stopDragOver } from '@aytm/lib/common/func'\nimport useMultiRef from '@aytm/lib/hooks/useMultiRef'\n\n// styles\nimport styles from '@aytm/lib/rfd-ui/styles/basic/formatted-input.module.scss'\n\n// mobile browser input duplication fix detection\nconst duplicationFixEnabled = (() => {\n const userAgentMatch = window.navigator.userAgent.match(/Android.*Chrome\\/(\\d+)/) // eslint-disable-line compat/compat\n return userAgentMatch ? parseInt(userAgentMatch[1], 10) <= 74 : false\n})()\n\nFormattedInput.propTypes = {\n readOnly: PropTypes.bool,\n formatter: PropTypes.func.isRequired,\n text: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onSelect: PropTypes.func,\n onChange: PropTypes.func,\n debounce: PropTypes.number,\n handleEnterKey: PropTypes.func,\n handleTabKey: PropTypes.func,\n formatPastedText: PropTypes.func\n}\n\nexport default React.memo(\n FormattedInput,\n (prevProps, nextProps) =>\n prevProps.readOnly === nextProps.readOnly &&\n prevProps.text === nextProps.text &&\n prevProps.className === nextProps.className &&\n prevProps.formatter === nextProps.formatter &&\n prevProps.onFocus === nextProps.onFocus &&\n prevProps.onBlur === nextProps.onBlur &&\n prevProps.onSelect === nextProps.onSelect &&\n prevProps.onChange === nextProps.onChange &&\n prevProps.debounce === nextProps.debounce &&\n prevProps.handleEnterKey === nextProps.handleEnterKey &&\n prevProps.handleTabKey === nextProps.handleTabKey &&\n prevProps.formatPastedText === nextProps.formatPastedText\n)\nexport function FormattedInput(props = {}) {\n const {\n text: props_text,\n onFocus: props_onFocus,\n onBlur: props_onBlur,\n onChange: props_onChange,\n onSelect: props_onSelect,\n formatter: props_formatter,\n debounce: props_debounce,\n handleEnterKey: props_handleEnterKey,\n handleTabKey: props_handleTabKey,\n formatPastedText: props_formatPastedText,\n className: props_className,\n readOnly: props_readOnly,\n style: props_style\n } = props\n\n const [\n inputRef,\n focused,\n selectOnFocus,\n mutationObserver,\n lastInputText,\n lastFormattedHTML,\n lastFormattedText,\n lastSelectionStart,\n lastSelectionEnd,\n mutatedHTML,\n mutatedText\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ] = useMultiRef(null, false, false, null, '', '
', '', 0, 0, '
', '')\n\n // update input\n const inputDebounceTimer = useRef(null)\n const updateInput = useCallback(\n (start, deleteCount, insertedChars, { registerChanges = true, forceUpdate = false } = {}) => {\n // console.log(\n // 'updateInput',\n // {\n // start,\n // deleteCount,\n // insertedChars\n // },\n // { registerChanges, forceUpdate }\n // )\n if (inputRef.current && props_formatter && (0 !== deleteCount || 0 !== insertedChars.length || forceUpdate)) {\n const {\n html: htmlAfterFormat = '
',\n text: inputTextAfterFormat = '',\n selectionStart: selectionStartAfterFormat = 0,\n selectionEnd: selectionEndAfterFormat = 0,\n valid = false,\n empty = true\n } = props_formatter(start, deleteCount, insertedChars)\n // console.log('formatter output', {\n // html: htmlAfterFormat,\n // text: inputTextAfterFormat,\n // selectionStart: selectionStartAfterFormat,\n // selectionEnd: selectionEndAfterFormat,\n // valid,\n // empty\n // })\n lastFormattedHTML.current = htmlAfterFormat || '
'\n if (inputRef.current.innerHTML !== lastFormattedHTML.current) {\n inputRef.current.innerHTML = lastFormattedHTML.current\n lastFormattedHTML.current = inputRef.current.innerHTML\n lastFormattedText.current = inputRef.current.innerText\n }\n if (\n registerChanges &&\n props_onSelect &&\n (lastSelectionStart.current !== selectionStartAfterFormat ||\n lastSelectionEnd.current !== selectionEndAfterFormat)\n ) {\n props_onSelect(selectionStartAfterFormat, selectionEndAfterFormat)\n }\n lastSelectionStart.current = selectionStartAfterFormat\n lastSelectionEnd.current = selectionEndAfterFormat\n setVisualSelection(inputRef.current, selectionStartAfterFormat, selectionEndAfterFormat)\n if (registerChanges && props_onChange && (forceUpdate || lastInputText.current !== inputTextAfterFormat)) {\n if (props_debounce) {\n if (inputDebounceTimer.current) {\n clearTimeout(inputDebounceTimer.current)\n }\n inputDebounceTimer.current = setTimeout(() => {\n inputDebounceTimer.current = null\n props_onChange(inputTextAfterFormat, { valid, empty })\n }, props_debounce)\n } else {\n props_onChange(inputTextAfterFormat, { valid, empty })\n }\n }\n lastInputText.current = inputTextAfterFormat\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props_onChange, props_onSelect, props_formatter, props_debounce]\n )\n\n // focus / blur\n const onFocus = useCallback(\n event => {\n focused.current = true\n selectOnFocus.current = true\n if (null != inputRef.current && null != mutationObserver.current) {\n mutationObserver.current.observe(inputRef.current, {\n characterData: true,\n childList: true,\n subtree: true\n })\n }\n if (props_onFocus) {\n props_onFocus(event)\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props_onFocus]\n )\n const onBlur = useCallback(\n event => {\n if (null != mutationObserver.current) {\n mutationObserver.current.disconnect()\n }\n updateInput(-1, 0, [], { registerChanges: false, forceUpdate: true })\n focused.current = false\n selectOnFocus.current = false\n if (props_onBlur) {\n props_onBlur(event)\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props_onBlur, updateInput]\n )\n\n // manage selection\n const onSelect = useCallback(\n _event => {\n if (null != inputRef.current && focused.current) {\n if (inputRef.current.innerHTML !== lastFormattedHTML.current) {\n // skipped - select is part of mutation\n return\n }\n const [start, end] = getVisualSelection(inputRef.current)\n if (null != start && null != end) {\n if (selectOnFocus.current) {\n selectOnFocus.current = false\n updateInput(end, 0, [], { registerChanges: false, forceUpdate: true })\n if (props_onSelect) {\n props_onSelect(lastSelectionStart.current, lastSelectionEnd.current)\n }\n } else if (lastSelectionStart.current !== start || lastSelectionEnd.current !== end) {\n lastSelectionStart.current = start\n lastSelectionEnd.current = end\n // console.log('onSelect', {\n // lastSelectionStart: lastSelectionStart.current,\n // lastSelectionEnd: lastSelectionEnd.current\n // })\n if (props_onSelect) {\n props_onSelect(lastSelectionStart.current, lastSelectionEnd.current)\n }\n }\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props_onSelect, updateInput]\n )\n\n // register mutation\n const registerMutationDebounceTimer = useRef(null)\n const registerMutation = useCallback(() => {\n if (registerMutationDebounceTimer.current) {\n clearTimeout(registerMutationDebounceTimer.current)\n }\n registerMutationDebounceTimer.current = setTimeout(() => {\n const [mutatedSelectionStart, mutatedSelectionEnd] = getVisualSelection(inputRef.current)\n // console.log('registerMutation', {\n // lastFormattedHTML: lastFormattedHTML.current,\n // lastFormattedText: lastFormattedText.current,\n // mutatedHTML: mutatedHTML.current,\n // mutatedText: mutatedText.current,\n // mutatedSelectionStart,\n // mutatedSelectionEnd,\n // lastSelectionStart: lastSelectionStart.current,\n // lastSelectionEnd: lastSelectionEnd.current\n // })\n registerMutationDebounceTimer.current = null\n\n const mutatedTextBeforeSelection = mutatedText.current.slice(0, mutatedSelectionStart)\n const lastFormattedTextBeforeSelection = lastFormattedText.current.slice(\n 0,\n Math.max(0, lastSelectionStart.current)\n )\n const mutatedTextLengthAfterSelection = mutatedText.current.length - mutatedSelectionEnd\n const lastFormattedTextLengthAfterSelection =\n lastFormattedText.current.length - Math.max(0, lastSelectionEnd.current)\n\n let formatterStart = lastSelectionStart.current\n let deleteCount = lastSelectionEnd.current - lastSelectionStart.current\n const insertedChars = []\n\n if (mutatedTextBeforeSelection !== lastFormattedTextBeforeSelection) {\n const maxTextsLength = Math.max(mutatedTextBeforeSelection.length, lastFormattedTextBeforeSelection.length)\n for (let i = 0; i < maxTextsLength; i++) {\n if (mutatedTextBeforeSelection[i] !== lastFormattedTextBeforeSelection[i]) {\n formatterStart = i\n if (formatterStart < mutatedSelectionStart) {\n insertedChars.push(...mutatedTextBeforeSelection.slice(formatterStart).split(''))\n }\n if (lastSelectionStart.current > formatterStart) {\n deleteCount += lastSelectionStart.current - formatterStart\n }\n break\n }\n }\n }\n if (mutatedTextLengthAfterSelection < lastFormattedTextLengthAfterSelection) {\n deleteCount += lastFormattedTextLengthAfterSelection - mutatedTextLengthAfterSelection\n }\n\n if (duplicationFixEnabled && insertedChars.length > 1) {\n let duplicatedCharsAmount = 0\n for (let i = 1; i < insertedChars.length; i++) {\n if (\n lastFormattedTextBeforeSelection.slice(lastFormattedTextBeforeSelection.length - i) ===\n insertedChars.slice(0, i).join('')\n ) {\n duplicatedCharsAmount = i\n }\n }\n updateInput(\n formatterStart,\n deleteCount,\n 0 < duplicatedCharsAmount ? insertedChars.slice(duplicatedCharsAmount) : insertedChars,\n { registerChanges: true }\n )\n } else {\n updateInput(formatterStart, deleteCount, insertedChars, { registerChanges: true })\n }\n }, 10)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [updateInput])\n\n // manage mutation observer\n useEffect(() => {\n if (mutationObserver.current) {\n mutationObserver.current.disconnect()\n }\n mutationObserver.current =\n 'undefined' !== typeof MutationObserver\n ? new MutationObserver(_mutations => {\n const nextHTML = inputRef.current.innerHTML\n if (lastFormattedHTML.current !== nextHTML) {\n mutatedHTML.current = inputRef.current.innerHTML\n mutatedText.current = inputRef.current.innerText\n // console.log('mutation', {\n // mutatedHTML: mutatedHTML.current,\n // mutatedText: mutatedText.current\n // })\n registerMutation()\n }\n })\n : null\n if (focused.current && mutationObserver.current && inputRef.current) {\n mutationObserver.current.observe(inputRef.current, {\n characterData: true,\n childList: true,\n subtree: true\n })\n }\n return () => {\n if (mutationObserver.current) {\n mutationObserver.current.disconnect()\n mutationObserver.current = null\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputRef.current, registerMutation])\n\n // manage props.text and props.formatter changes\n useEffect(() => {\n updateInput(0, 0, (props_text || '').split(''), { registerChanges: true, forceUpdate: true })\n if (!focused.current) {\n // blurred text changes\n updateInput(-1, 0, [], { registerChanges: false, forceUpdate: true })\n }\n return () => {\n updateInput(0, lastFormattedText.current.length, [], { registerChanges: false, forceUpdate: true })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props_text, props_formatter, updateInput])\n\n // manage focus\n useEffect(() => {\n if (null != inputRef.current && inputRef.current === document.activeElement) {\n focused.current = true\n }\n return () => {\n focused.current = false\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputRef.current])\n\n // manage keys\n const onKeyDown = useCallback(\n event => {\n switch (event.key) {\n case 'Enter': {\n if (null != props_handleEnterKey) {\n props_handleEnterKey({\n selectionStart: lastSelectionStart.current,\n selectionEnd: lastSelectionEnd.current,\n html: lastFormattedHTML.current,\n text: lastFormattedText.current,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n metaKey: event.metaKey,\n updateInput\n }) && stopEvent(event)\n } else if (event.ctrlKey || event.shiftKey || event.altKey || event.metaKey) {\n stopEvent(event)\n break\n } else {\n stopEvent(event)\n const selectionStartBeforeUpdate = lastSelectionStart.current\n const selectionEndBeforeUpdate = lastSelectionEnd.current\n updateInput(lastSelectionStart.current, lastSelectionEnd.current - lastSelectionStart.current, ['\\n'], {\n registerChanges: false\n })\n if (\n selectionStartBeforeUpdate === lastSelectionStart.current &&\n selectionEndBeforeUpdate === lastSelectionEnd.current\n ) {\n // selection has not changed - jump to next focusable item\n const nextFocusable = nextFocusableElement(inputRef.current)\n if (null != nextFocusable && nextFocusable.focus) {\n nextFocusable.focus()\n } else if (inputRef.current && inputRef.current.blur) {\n inputRef.current.blur()\n }\n }\n }\n break\n }\n case 'Tab': {\n if (null != props_handleTabKey) {\n props_handleTabKey({\n selectionStart: lastSelectionStart.current,\n selectionEnd: lastSelectionEnd.current,\n html: lastFormattedHTML.current,\n text: lastFormattedText.current,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n metaKey: event.metaKey,\n updateInput\n }) && stopEvent(event)\n } else if (event.ctrlKey || event.shiftKey || event.altKey || event.metaKey) {\n break\n } else {\n const selectionStartBeforeUpdate = lastSelectionStart.current\n const selectionEndBeforeUpdate = lastSelectionEnd.current\n updateInput(lastSelectionStart.current, lastSelectionEnd.current - lastSelectionStart.current, ['\\t'], {\n registerChanges: false\n })\n if (\n selectionStartBeforeUpdate !== lastSelectionStart.current ||\n selectionEndBeforeUpdate !== lastSelectionEnd.current\n ) {\n // selection changed - skip default action\n stopEvent(event)\n }\n }\n break\n }\n case 'Backspace': {\n stopEvent(event)\n if (event.ctrlKey || event.altKey || event.metaKey) {\n break\n }\n updateInput(\n lastSelectionStart.current,\n lastSelectionEnd.current !== lastSelectionStart.current\n ? lastSelectionEnd.current - lastSelectionStart.current\n : -1,\n [],\n { registerChanges: true }\n )\n break\n }\n case 'Delete': {\n stopEvent(event)\n if (event.ctrlKey || event.altKey || event.metaKey) {\n break\n }\n updateInput(\n lastSelectionStart.current,\n lastSelectionEnd.current !== lastSelectionStart.current\n ? lastSelectionEnd.current - lastSelectionStart.current\n : 1,\n [],\n { registerChanges: true }\n )\n break\n }\n case ' ': {\n stopEvent(event)\n if (event.ctrlKey || event.altKey || event.metaKey) {\n break\n }\n updateInput(lastSelectionStart.current, lastSelectionEnd.current - lastSelectionStart.current, [' '], {\n registerChanges: true\n })\n break\n }\n case 'y':\n case 'z': {\n if (event.ctrlKey) {\n stopEvent(event)\n }\n break\n }\n default: {\n break\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props_handleEnterKey, props_handleTabKey, updateInput]\n )\n\n const onPaste = useCallback(\n event => {\n stopEvent(event)\n let pastedText = ''\n try {\n pastedText = (event.clipboardData || window.clipboardData).getData('text') || ''\n } catch {\n pastedText = ''\n }\n if (pastedText.length) {\n updateInput(\n lastSelectionStart.current,\n lastSelectionEnd.current - lastSelectionStart.current,\n props_formatPastedText ? props_formatPastedText(pastedText).split('') : pastedText.split(''),\n { registerChanges: true }\n )\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props_formatPastedText, updateInput]\n )\n\n // manage className\n const className = useMemo(\n () => `rfd-ui-formatted-input ${styles.component}${props_className ? ' ' + props_className : ''}`,\n [props_className]\n )\n\n return (\n