@skbkontur/react-ui 5.3.4 → 5.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/cjs/components/ComboBox/ComboBox.d.ts +4 -1
- package/cjs/components/ComboBox/ComboBox.js +5 -0
- package/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.js +1 -0
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/MaskedInput/MaskedInput.d.ts +8 -0
- package/cjs/components/MaskedInput/MaskedInput.js +23 -2
- package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +3 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js +23 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +3 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.js +8 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
- package/components/ComboBox/ComboBox.d.ts +4 -1
- package/components/FileUploader/FileUploader/FileUploader.js +1 -0
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/MaskedInput/MaskedInput/MaskedInput.js +11 -1
- package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/components/MaskedInput/MaskedInput.d.ts +8 -0
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +33 -12
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +3 -1
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +4 -0
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.d.ts +3 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useContext","useEffect","useImperativeHandle","useRef","useState","globalObject","isBrowser","getAttachedFile","cx","useMemoObject","FileUploaderControlContext","useControlLocale","useUpload","useDrop","ThemeContext","withFileUploaderControlProvider","keyListener","FileUploaderFile","FileUploaderFileList","CommonWrapper","FileUploaderFileValidationResult","useFileUploaderSize","forwardRefAndName","FocusControlWrapper","UploadIcon","globalClasses","jsStyles","stopPropagation","e","FileUploaderDataTids","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","props","ref","_cx","theme","initialFiles","disabled","error","warning","_props$multiple","multiple","_props$width","width","fileUploaderWidth","_props$hideFiles","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","_props$size","size","_props$renderFile","renderFile","inputProps","_objectWithoutPropertiesLoose","_excluded","_useContext","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","inputRef","fileDivRef","isAsync","isSingleMode","_useState","isLinkVisible","setIsLinkVisible","upload","tryValidateAndUpload","forEach","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","validationMessage","wrap","_callee$","_context","prev","next","t0","sent","id","stop","_x","apply","arguments","sizeClassName","small","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","length","filesArray","Array","from","attachedFiles","map","handleDrop","event","dataTransfer","_dataTransfer$files","_useDrop","onDrop","isDraggable","labelRef","_useDrop2","isWindowDraggable","windowRef","current","document","focus","_inputRef$current","isTabPressed","blur","_inputRef$current2","handleRemoveFile","fileId","DataTransfer","filter","f","items","add","originalFile","handleExternalFileDeletion","handleReset","getRootNode","rootNodeRef","_useState2","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","_useState3","hovered","setHovered","uploadButtonClassNames","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","createElement","className","style","onRemove","onMouseEnter","onMouseLeave","choosedFile","chooseFile","String","fromCharCode","afterLinkText","afterLinkText_HasFiles","singleFile","Fragment","orDragHere","onBlurWhenDisabled","_extends","tabIndex","type","visuallyHidden","onClick","FileUploader","memo","displayName"],"sources":["FileUploader.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport type { FileUploaderAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { InstanceWithRootNode } from '../../lib/rootNode';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nimport { useFileUploaderSize } from '../../internal/FileUploaderControl/hooks/useFileUploaderSize';\nimport type { SizeProp } from '../../lib/types/props';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { UploadIcon } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Переводит контрол в состояние валидации \"ошибка\". */\n /** Начальное состояние загруженных файлов */\n initialFiles?: File[];\n /** Состояние ошибки всего контрола */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Задает длину компонента. */\n width?: React.CSSProperties['width'];\n\n /** Задаёт размер контрола. */\n size?: SizeProp;\n\n /** Скрывает отображение файлов. */\n hideFiles?: boolean;\n\n /** Задает функцию, через которую отправляются файлы. Используется для отслеживания статуса загрузки файла.\n * @param {FileUploaderAttachedFile} file - файл, статус загрузки которого необходимо отследить. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n\n /** Задает функцию, которая вызывается при удачной попытке отправки через request. */\n onRequestSuccess?: (fileId: string) => void;\n\n /** Задает функцию, которая вызывается при неудачной попытке отправки через request. */\n onRequestError?: (fileId: string) => void;\n\n /** Определяет функцию валидации каждого файла. Срабатывает после выбора файлов и перед попыткой отправить в request. Чтобы вывести валидацию ошибки, промис должен вернуть строку. * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /** Задает функцию, которая позволяет кастомизировать файлы. Через нее можно вешать кастомные валидации на каждый файл. */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n removeFile: (fileId: string) => void;\n}\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n\n const {\n initialFiles,\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size = 'small',\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult, isMinLengthReached } =\n useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [isLinkVisible, setIsLinkVisible] = useState(true);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles || !newFiles.length) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n if (dataTransfer) {\n if (dataTransfer.files?.length > 0) {\n handleChange(dataTransfer.files);\n }\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser(globalObject)) {\n windowRef.current = globalObject.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n const handleRemoveFile = useCallback(\n (fileId: string) => {\n const dataTransfer = new DataTransfer();\n files\n .filter((f) => f.id !== fileId)\n .forEach((file) => {\n dataTransfer.items.add(file.originalFile);\n });\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n },\n [files],\n );\n\n const handleExternalFileDeletion = useCallback(\n (fileId: string) => {\n removeFile(fileId);\n handleRemoveFile(fileId);\n },\n [handleRemoveFile, removeFile],\n );\n\n const handleReset = useCallback(() => {\n reset();\n const dataTransfer = new DataTransfer();\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, [reset, handleRemoveFile]);\n\n useImperativeHandle(\n ref,\n () => ({\n focus,\n blur,\n reset: handleReset,\n removeFile: handleExternalFileDeletion,\n getRootNode: () => rootNodeRef.current,\n }),\n [ref, blur, focus, handleReset, handleExternalFileDeletion],\n );\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n sizeClassName,\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && jsStyles.disabled(theme),\n !disabled && hovered && jsStyles.hovered(theme),\n !!warning && jsStyles.warning(theme),\n !!error && jsStyles.error(theme),\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(canDrop && jsStyles.windowDragOver(theme));\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), sizeIconClass, disabled && jsStyles.iconDisabled(theme));\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const contentClassNames = cx(jsStyles.content(), hasOneFileForSingle && jsStyles.contentWithFiles());\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n setIsLinkVisible(hasOneFileForSingle ? !isMinLengthReached : true);\n }, [isMinLengthReached, hasOneFileForSingle]);\n\n useEffect(() => {\n if (!files || !files.length || !inputRef.current) {\n return;\n }\n\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file.originalFile));\n inputRef.current.files = dataTransfer.files;\n }, []);\n\n const rootNodeRef = useRef(null);\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n const icon = <UploadIcon size={iconSizes[size]} />;\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={jsStyles.root(theme)}\n style={useMemoObject({ width })}\n ref={rootNodeRef}\n >\n {!hideFiles && !isSingleMode && !!files.length && (\n <FileUploaderFileList renderFile={renderFile} size={size} onRemove={handleRemoveFile} />\n )}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div\n data-tid={FileUploaderDataTids.content}\n className={cx(contentClassNames, { [contentInnerClass]: !files.length || !isSingleMode })}\n >\n {isLinkVisible && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n )}\n {isLinkVisible && String.fromCharCode(0xa0) /* */}\n <div\n className={cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles(theme) : jsStyles.afterLinkText(theme),\n )}\n >\n {hasOneFileForSingle ? (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} size={size} onRemove={handleRemoveFile} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere} \n <div className={uploadButtonIconClassNames}>{icon}</div>\n </>\n )}\n </div>\n </div>\n <FocusControlWrapper onBlurWhenDisabled={() => setFocusedByTab(false)}>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.visuallyHidden()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </FocusControlWrapper>\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\n/**\n * `FileUploader` — контрол для выбора пользователем файла на компьютере и отображения статуса его отправки на сервер.\n *\n * Можно использовать для синхронной отправки данных, например, в форме. Или же можно использовать в асинхронном режиме.\n */\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"],"mappings":"0gBAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,EAAEC,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACxG,SAASC,YAAY,EAAEC,SAAS,QAAQ,0BAA0B;;;AAGlE,SAASC,eAAe,QAAQ,8CAA8C;AAC9E,SAASC,EAAE,QAAQ,2BAA2B;;AAE9C,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,0BAA0B,QAAQ,+DAA+D;AAC1G,SAASC,gBAAgB,QAAQ,2DAA2D;AAC5F,SAASC,SAAS,QAAQ,oDAAoD;AAC9E,SAASC,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,YAAY,QAAQ,gCAAgC;;AAE7D,SAASC,+BAA+B,QAAQ,oEAAoE;AACpH,SAASC,WAAW,QAAQ,8BAA8B;AAC1D,SAASC,gBAAgB,QAAQ,sEAAsE;AACvG,SAASC,oBAAoB,QAAQ,8EAA8E;;AAEnH,SAASC,aAAa,QAAQ,8BAA8B;;AAE5D,SAASC,gCAAgC,QAAQ,qEAAqE;AACtH,SAASC,mBAAmB,QAAQ,8DAA8D;;AAElG,SAASC,iBAAiB,QAAQ,6BAA6B;AAC/D,SAASC,mBAAmB,QAAQ,oCAAoC;;AAExE,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,aAAa,EAAEC,QAAQ,QAAQ,uBAAuB;;AAE/D,IAAMC,eAAwC,GAAG,SAA3CA,eAAwCA,CAAIC,CAAC,UAAKA,CAAC,CAACD,eAAe,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkD3E,OAAO,IAAME,oBAAoB,GAAG;EAClCC,IAAI,EAAE,oBAAoB;EAC1BC,OAAO,EAAE,uBAAuB;EAChCC,IAAI,EAAE,oBAAoB;EAC1BC,KAAK,EAAE;AACT,CAAU;;AAEV,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,IAA8B,EAAEC,QAA4B,UAAKA,QAAQ;;AAEpG,IAAMC,aAAa,GAAGf,iBAAiB,CAAsC,cAAc,EAAE,UAACgB,KAAK,EAAEC,GAAG,EAAK,KAAAC,GAAA;EAC3G,IAAMC,KAAK,GAAGzC,UAAU,CAACc,YAAY,CAAC;;EAEtC;IACE4B,YAAY;;;;;;;;;;;;;;;;;IAiBVJ,KAAK,CAjBPI,YAAY,CACZC,QAAQ,GAgBNL,KAAK,CAhBPK,QAAQ,CACRC,KAAK,GAeHN,KAAK,CAfPM,KAAK,CACLC,OAAO,GAcLP,KAAK,CAdPO,OAAO,CAAAC,eAAA,GAcLR,KAAK,CAbPS,QAAQ,CAARA,QAAQ,GAAAD,eAAA,cAAG,KAAK,GAAAA,eAAA,CAAAE,YAAA,GAadV,KAAK,CAZPW,KAAK,CAALA,KAAK,GAAAD,YAAA,cAAGP,KAAK,CAACS,iBAAiB,GAAAF,YAAA,CAAAG,gBAAA,GAY7Bb,KAAK,CAXPc,SAAS,CAATA,SAAS,GAAAD,gBAAA,cAAG,KAAK,GAAAA,gBAAA,CACjBE,MAAM,GAUJf,KAAK,CAVPe,MAAM,CACNC,OAAO,GASLhB,KAAK,CATPgB,OAAO,CACPC,QAAQ,GAQNjB,KAAK,CARPiB,QAAQ,CACRC,OAAO,GAOLlB,KAAK,CAPPkB,OAAO,CACPC,oBAAoB,GAMlBnB,KAAK,CANPmB,oBAAoB,CACpBC,gBAAgB,GAKdpB,KAAK,CALPoB,gBAAgB,CAChBC,cAAc,GAIZrB,KAAK,CAJPqB,cAAc,CAAAC,WAAA,GAIZtB,KAAK,CAHPuB,IAAI,CAAJA,IAAI,GAAAD,WAAA,cAAG,OAAO,GAAAA,WAAA,CAAAE,iBAAA,GAGZxB,KAAK,CAFPyB,UAAU,CAAVA,UAAU,GAAAD,iBAAA,cAAG5B,iBAAiB,GAAA4B,iBAAA,CAC3BE,UAAU,GAAAC,6BAAA,CACX3B,KAAK,EAAA4B,SAAA;;EAET,IAAAC,WAAA;IACEnE,UAAU,CAACU,0BAA0B,CAAC,CADhC0D,KAAK,GAAAD,WAAA,CAALC,KAAK,CAAEC,QAAQ,GAAAF,WAAA,CAARE,QAAQ,CAAEC,UAAU,GAAAH,WAAA,CAAVG,UAAU,CAAEC,KAAK,GAAAJ,WAAA,CAALI,KAAK,CAAEC,uBAAuB,GAAAL,WAAA,CAAvBK,uBAAuB,CAAEC,kBAAkB,GAAAN,WAAA,CAAlBM,kBAAkB;;EAGvF,IAAMC,MAAM,GAAG/D,gBAAgB,CAAC,CAAC;;EAEjC,IAAMgE,QAAQ,GAAGxE,MAAM,CAAmB,IAAI,CAAC;EAC/C,IAAMyE,UAAU,GAAGzE,MAAM,CAAiB,IAAI,CAAC;;EAE/C,IAAM0E,OAAO,GAAG,CAAC,CAACrB,OAAO;EACzB,IAAMsB,YAAY,GAAG,CAAC/B,QAAQ;;EAE9B,IAAAgC,SAAA,GAA0C3E,QAAQ,CAAC,IAAI,CAAC,CAAjD4E,aAAa,GAAAD,SAAA,IAAEE,gBAAgB,GAAAF,SAAA;EACtC,IAAMG,MAAM,GAAGtE,SAAS,CAAC4C,OAAO,EAAEE,gBAAgB,EAAEC,cAAc,CAAC;;EAEnE,IAAMwB,oBAAoB,GAAGpF,WAAW;IACtC,UAACqE,KAAiC,EAAK;MACrCA,KAAK,CAACgB,OAAO,gCAAAC,IAAA,GAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,CAAC,SAAAC,QAAOtD,IAAI,OAAAuD,iBAAA,QAAAH,mBAAA,CAAAI,IAAA,UAAAC,SAAAC,QAAA,qBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA,UAAAF,QAAA,CAAAG,EAAA;gBACGvC,oBAAoB,MAAAoC,QAAA,CAAAG,EAAA,GAAAH,QAAA,CAAAE,IAAA,YAAAF,QAAA,CAAAE,IAAA,YAAWtC,oBAAoB,CAACtB,IAAI,CAAC,QAAA0D,QAAA,CAAAG,EAAA,GAAAH,QAAA,CAAAI,IAAA,QAA7EP,iBAAiB,GAAAG,QAAA,CAAAG,EAAA;;gBAEvB,IAAI,CAACN,iBAAiB,EAAE;kBACtBb,OAAO,IAAIK,MAAM,CAAC/C,IAAI,CAAC;gBACzB,CAAC,MAAM;kBACLqC,uBAAuB,CAACrC,IAAI,CAAC+D,EAAE,EAAE9E,gCAAgC,CAACwB,KAAK,CAAC8C,iBAAiB,CAAC,CAAC;gBAC7F,CAAC,yBAAAG,QAAA,CAAAM,IAAA,OAAAV,OAAA,GACF,oBAAAW,EAAA,UAAAf,IAAA,CAAAgB,KAAA,OAAAC,SAAA;MAAA,CAAC;IACJ,CAAC;IACD,CAAC7C,oBAAoB,EAAEoB,OAAO,EAAEK,MAAM,EAAEV,uBAAuB;EACjE,CAAC;;EAED,IAAM+B,aAAa,GAAGlF,mBAAmB,CAACwC,IAAI,EAAE;IAC9C2C,KAAK,EAAE9E,QAAQ,CAAC+E,SAAS,CAAChE,KAAK,CAAC;IAChCiE,MAAM,EAAEhF,QAAQ,CAACiF,UAAU,CAAClE,KAAK,CAAC;IAClCmE,KAAK,EAAElF,QAAQ,CAACmF,SAAS,CAACpE,KAAK;EACjC,CAAC,CAAC;;EAEF,IAAMqE,aAAa,GAAGzF,mBAAmB,CAACwC,IAAI,EAAE;IAC9C2C,KAAK,EAAE9E,QAAQ,CAACqF,SAAS,CAACtE,KAAK,CAAC;IAChCiE,MAAM,EAAEhF,QAAQ,CAACsF,UAAU,CAACvE,KAAK,CAAC;IAClCmE,KAAK,EAAElF,QAAQ,CAACuF,SAAS,CAACxE,KAAK;EACjC,CAAC,CAAC;;EAEF,IAAMyE,iBAAiB,GAAG7F,mBAAmB,CAACwC,IAAI,EAAE;IAClD2C,KAAK,EAAE9E,QAAQ,CAACyF,iBAAiB,CAAC1E,KAAK,CAAC;IACxCiE,MAAM,EAAEhF,QAAQ,CAAC0F,kBAAkB,CAAC3E,KAAK,CAAC;IAC1CmE,KAAK,EAAElF,QAAQ,CAAC2F,iBAAiB,CAAC5E,KAAK;EACzC,CAAC,CAAC;;EAEF;EACA,IAAM6E,YAAY,GAAGvH,WAAW;IAC9B,UAACwH,QAAyB,EAAK;MAC7B,IAAI,CAACA,QAAQ,IAAI,CAACA,QAAQ,CAACC,MAAM,EAAE;QACjC;MACF;;MAEA,IAAIC,UAAU,GAAGC,KAAK,CAACC,IAAI,CAACJ,QAAQ,CAAC;;MAErC,IAAIzC,YAAY,EAAE;QAChB2C,UAAU,GAAG,CAACA,UAAU,CAAC,CAAC,CAAC,CAAC;MAC9B;;MAEA,IAAMG,aAAa,GAAGH,UAAU,CAACI,GAAG,CAACtH,eAAe,CAAC;;MAErD,IAAIuE,YAAY,IAAI8C,aAAa,CAACJ,MAAM,IAAIpD,KAAK,CAACoD,MAAM,EAAE;QACxDlD,UAAU,CAACF,KAAK,CAAC,CAAC,CAAC,CAAC8B,EAAE,CAAC;MACzB;;MAEA,IAAI0B,aAAa,CAACJ,MAAM,EAAE;QACxBnD,QAAQ,CAACuD,aAAa,CAAC;QACvBzC,oBAAoB,CAACyC,aAAa,CAAC;MACrC;IACF,CAAC;IACD,CAACzC,oBAAoB,EAAEd,QAAQ,EAAES,YAAY,EAAEV,KAAK,EAAEE,UAAU;EAClE,CAAC;;EAED,IAAMwD,UAAU,GAAG/H,WAAW;IAC5B,UAACgI,KAAgB,EAAK;MACpB,IAAIpF,QAAQ,EAAE;QACZ;MACF;;MAEA,IAAQqF,YAAY,GAAKD,KAAK,CAAtBC,YAAY;MACpB,IAAIA,YAAY,EAAE,KAAAC,mBAAA;QAChB,IAAI,EAAAA,mBAAA,GAAAD,YAAY,CAAC5D,KAAK,qBAAlB6D,mBAAA,CAAoBT,MAAM,IAAG,CAAC,EAAE;UAClCF,YAAY,CAACU,YAAY,CAAC5D,KAAK,CAAC;QAClC;MACF;IACF,CAAC;IACD,CAACkD,YAAY,EAAE3E,QAAQ;EACzB,CAAC;;EAED,IAAAuF,QAAA,GAAuCrH,OAAO,CAAmB,EAAEsH,MAAM,EAAEL,UAAU,CAAC,CAAC,CAAC,CAAhFM,WAAW,GAAAF,QAAA,CAAXE,WAAW,CAAOC,QAAQ,GAAAH,QAAA,CAAb3F,GAAG;EACxB,IAAA+F,SAAA,GAA2DzH,OAAO,CAAW,CAAC,CAAzD0H,iBAAiB,GAAAD,SAAA,CAA9BF,WAAW,CAA0BI,SAAS,GAAAF,SAAA,CAAd/F,GAAG;;EAE3C,IAAIjC,SAAS,CAACD,YAAY,CAAC,EAAE;IAC3BmI,SAAS,CAACC,OAAO,GAAGpI,YAAY,CAACqI,QAAQ;EAC3C;;EAEA,IAAMC,KAAK,GAAG5I,WAAW,CAAC,YAAM,KAAA6I,iBAAA;IAC9B5H,WAAW,CAAC6H,YAAY,GAAG,IAAI;IAC/B,CAAAD,iBAAA,GAAAjE,QAAQ,CAAC8D,OAAO,aAAhBG,iBAAA,CAAkBD,KAAK,CAAC,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;;EAEN,IAAMG,IAAI,GAAG/I,WAAW,CAAC,YAAM,KAAAgJ,kBAAA;IAC7B,CAAAA,kBAAA,GAAApE,QAAQ,CAAC8D,OAAO,aAAhBM,kBAAA,CAAkBD,IAAI,CAAC,CAAC;EAC1B,CAAC,EAAE,EAAE,CAAC;;EAEN,IAAME,gBAAgB,GAAGjJ,WAAW;IAClC,UAACkJ,MAAc,EAAK;MAClB,IAAMjB,YAAY,GAAG,IAAIkB,YAAY,CAAC,CAAC;MACvC9E,KAAK;MACF+E,MAAM,CAAC,UAACC,CAAC,UAAKA,CAAC,CAAClD,EAAE,KAAK+C,MAAM,GAAC;MAC9B7D,OAAO,CAAC,UAACjD,IAAI,EAAK;QACjB6F,YAAY,CAACqB,KAAK,CAACC,GAAG,CAACnH,IAAI,CAACoH,YAAY,CAAC;MAC3C,CAAC,CAAC;MACJ5E,QAAQ,CAAC8D,OAAO,KAAK9D,QAAQ,CAAC8D,OAAO,CAACrE,KAAK,GAAG4D,YAAY,CAAC5D,KAAK,CAAC;IACnE,CAAC;IACD,CAACA,KAAK;EACR,CAAC;;EAED,IAAMoF,0BAA0B,GAAGzJ,WAAW;IAC5C,UAACkJ,MAAc,EAAK;MAClB3E,UAAU,CAAC2E,MAAM,CAAC;MAClBD,gBAAgB,CAACC,MAAM,CAAC;IAC1B,CAAC;IACD,CAACD,gBAAgB,EAAE1E,UAAU;EAC/B,CAAC;;EAED,IAAMmF,WAAW,GAAG1J,WAAW,CAAC,YAAM;IACpCwE,KAAK,CAAC,CAAC;IACP,IAAMyD,YAAY,GAAG,IAAIkB,YAAY,CAAC,CAAC;IACvCvE,QAAQ,CAAC8D,OAAO,KAAK9D,QAAQ,CAAC8D,OAAO,CAACrE,KAAK,GAAG4D,YAAY,CAAC5D,KAAK,CAAC;EACnE,CAAC,EAAE,CAACG,KAAK,EAAEyE,gBAAgB,CAAC,CAAC;;EAE7B9I,mBAAmB;IACjBqC,GAAG;IACH,oBAAO;QACLoG,KAAK,EAALA,KAAK;QACLG,IAAI,EAAJA,IAAI;QACJvE,KAAK,EAAEkF,WAAW;QAClBnF,UAAU,EAAEkF,0BAA0B;QACtCE,WAAW,EAAE,SAAAA,YAAA,UAAMC,WAAW,CAAClB,OAAO;MACxC,CAAC,EAAC;IACF,CAAClG,GAAG,EAAEuG,IAAI,EAAEH,KAAK,EAAEc,WAAW,EAAED,0BAA0B;EAC5D,CAAC;;EAED,IAAAI,UAAA,GAAwCxJ,QAAQ,CAAC,KAAK,CAAC,CAAhDyJ,YAAY,GAAAD,UAAA,IAAEE,eAAe,GAAAF,UAAA;EACpC,IAAMG,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIhC,KAA0C,EAAK;IACxExE,QAAQ,YAARA,QAAQ,CAAGwE,KAAK,CAAC;IACjBT,YAAY,CAACS,KAAK,CAACiC,MAAM,CAAC5F,KAAK,CAAC;EAClC,CAAC;;EAED,IAAM6F,WAAW,GAAG,SAAdA,WAAWA,CAAIrI,CAAqC,EAAK;IAC7D,IAAI,CAACe,QAAQ,EAAE;MACb;MACA;MACAtC,YAAY,CAAC6J,qBAAqB,YAAlC7J,YAAY,CAAC6J,qBAAqB,CAAG,YAAM;QACzC,IAAIlJ,WAAW,CAAC6H,YAAY,EAAE;UAC5BiB,eAAe,CAAC,IAAI,CAAC;QACvB;MACF,CAAC,CAAC;MACFxG,OAAO,YAAPA,OAAO,CAAG1B,CAAC,CAAC;IACd;EACF,CAAC;;EAED,IAAMuI,UAAU,GAAG,SAAbA,UAAUA,CAAIvI,CAAqC,EAAK;IAC5DkI,eAAe,CAAC,KAAK,CAAC;IACtB,IAAI,CAACnH,QAAQ,EAAE;MACbU,MAAM,YAANA,MAAM,CAAGzB,CAAC,CAAC;IACb;EACF,CAAC;;EAED,IAAAwI,UAAA,GAA8BhK,QAAQ,CAAC,KAAK,CAAC,CAAtCiK,OAAO,GAAAD,UAAA,IAAEE,UAAU,GAAAF,UAAA;;EAE1B,IAAMG,sBAAsB,GAAG/J,EAAE;IAC/BkB,QAAQ,CAAC8I,YAAY,CAAC/H,KAAK,CAAC;IAC5B8D,aAAa;IACbsD,YAAY,IAAInI,QAAQ,CAAC+I,iBAAiB,CAAChI,KAAK,CAAC;IACjDE,QAAQ,IAAIjB,QAAQ,CAACiB,QAAQ,CAACF,KAAK,CAAC;IACpC,CAACE,QAAQ,IAAI0H,OAAO,IAAI3I,QAAQ,CAAC2I,OAAO,CAAC5H,KAAK,CAAC;IAC/C,CAAC,CAACI,OAAO,IAAInB,QAAQ,CAACmB,OAAO,CAACJ,KAAK,CAAC;IACpC,CAAC,CAACG,KAAK,IAAIlB,QAAQ,CAACkB,KAAK,CAACH,KAAK,CAAC;IAChC2F,WAAW,IAAI,CAACzF,QAAQ,IAAIjB,QAAQ,CAACgJ,QAAQ,CAACjI,KAAK;EACrD,CAAC;;EAED,IAAMkI,OAAO,GAAGpC,iBAAiB,IAAI,CAAC5F,QAAQ;EAC9C,IAAMiI,6BAA6B,GAAGpK,EAAE,CAACmK,OAAO,IAAIjJ,QAAQ,CAACmJ,cAAc,CAACpI,KAAK,CAAC,CAAC;;EAEnF,IAAMqI,0BAA0B,GAAGtK,EAAE,CAACkB,QAAQ,CAACqJ,IAAI,CAACtI,KAAK,CAAC,EAAEqE,aAAa,EAAEnE,QAAQ,IAAIjB,QAAQ,CAACsJ,YAAY,CAACvI,KAAK,CAAC,CAAC;;EAEpH,IAAMwI,UAAU,GAAG7G,KAAK,CAACoD,MAAM,KAAK,CAAC;EACrC,IAAM0D,mBAAmB,GAAGpG,YAAY,IAAImG,UAAU,IAAI,CAAC7H,SAAS;;EAEpE,IAAM+H,iBAAiB,GAAG3K,EAAE,CAACkB,QAAQ,CAACK,OAAO,CAAC,CAAC,EAAEmJ,mBAAmB,IAAIxJ,QAAQ,CAAC0J,gBAAgB,CAAC,CAAC,CAAC;;EAEpG,IAAMC,cAAc,GAAG7K,EAAE;IACvBkB,QAAQ,CAACM,IAAI,CAACS,KAAK,CAAC;IACpB,CAACE,QAAQ,IAAI0H,OAAO,IAAI3I,QAAQ,CAAC4J,WAAW,CAAC7I,KAAK,CAAC;IACnDE,QAAQ,IAAIjB,QAAQ,CAAC6J,YAAY,CAAC9I,KAAK;EACzC,CAAC;;EAEDxC,SAAS,CAAC,YAAM;IACdgF,gBAAgB,CAACiG,mBAAmB,GAAG,CAACzG,kBAAkB,GAAG,IAAI,CAAC;EACpE,CAAC,EAAE,CAACA,kBAAkB,EAAEyG,mBAAmB,CAAC,CAAC;;EAE7CjL,SAAS,CAAC,YAAM;IACd,IAAI,CAACmE,KAAK,IAAI,CAACA,KAAK,CAACoD,MAAM,IAAI,CAAC7C,QAAQ,CAAC8D,OAAO,EAAE;MAChD;IACF;;IAEA,IAAMT,YAAY,GAAG,IAAIkB,YAAY,CAAC,CAAC;IACvC9E,KAAK,CAACgB,OAAO,CAAC,UAACjD,IAAI,UAAK6F,YAAY,CAACqB,KAAK,CAACC,GAAG,CAACnH,IAAI,CAACoH,YAAY,CAAC,GAAC;IAClE5E,QAAQ,CAAC8D,OAAO,CAACrE,KAAK,GAAG4D,YAAY,CAAC5D,KAAK;EAC7C,CAAC,EAAE,EAAE,CAAC;;EAEN,IAAMuF,WAAW,GAAGxJ,MAAM,CAAC,IAAI,CAAC;;EAEhC,IAAMqL,SAAmC,GAAG;IAC1ChF,KAAK,EAAEiF,QAAQ,CAAChJ,KAAK,CAACiJ,gBAAgB,CAAC;IACvChF,MAAM,EAAE+E,QAAQ,CAAChJ,KAAK,CAACkJ,iBAAiB,CAAC;IACzC/E,KAAK,EAAE6E,QAAQ,CAAChJ,KAAK,CAACmJ,gBAAgB;EACxC,CAAC;EACD,IAAMb,IAAI,gBAAGjL,KAAA,CAAA+L,aAAA,CAACrK,UAAU,IAACqC,IAAI,EAAE2H,SAAS,CAAC3H,IAAI,CAAE,EAAE,CAAC;;EAElD;IACE/D,KAAA,CAAA+L,aAAA,CAAC1K,aAAa,EAAKmB,KAAK;IACtBxC,KAAA,CAAA+L,aAAA;MACE,YAAUhK,oBAAoB,CAACC,IAAK;MACpCgK,SAAS,EAAEpK,QAAQ,CAACI,IAAI,CAACW,KAAK,CAAE;MAChCsJ,KAAK,EAAEtL,aAAa,CAAC,EAAEwC,KAAK,EAALA,KAAK,CAAC,CAAC,CAAE;MAChCV,GAAG,EAAEoH,WAAY;;IAEhB,CAACvG,SAAS,IAAI,CAAC0B,YAAY,IAAI,CAAC,CAACV,KAAK,CAACoD,MAAM;IAC5C1H,KAAA,CAAA+L,aAAA,CAAC3K,oBAAoB,IAAC6C,UAAU,EAAEA,UAAW,EAACF,IAAI,EAAEA,IAAK,EAACmI,QAAQ,EAAEhD,gBAAiB,EAAE,CACxF;;IACDlJ,KAAA,CAAA+L,aAAA,UAAKC,SAAS,EAAElB,6BAA8B;IAC5C9K,KAAA,CAAA+L,aAAA;MACEI,YAAY,EAAE,SAAAA,aAAA,UAAM3B,UAAU,CAAC,IAAI,CAAC,EAAC;MACrC4B,YAAY,EAAE,SAAAA,aAAA,UAAM5B,UAAU,CAAC,KAAK,CAAC,EAAC;MACtC/H,GAAG,EAAE8F,QAAS;MACdyD,SAAS,EAAEvB,sBAAuB;;IAElCzK,KAAA,CAAA+L,aAAA;MACE,YAAUhK,oBAAoB,CAACE,OAAQ;MACvC+J,SAAS,EAAEtL,EAAE,CAAC2K,iBAAiB,GAAA3I,GAAA,OAAAA,GAAA,CAAK0E,iBAAiB,IAAG,CAAC9C,KAAK,CAACoD,MAAM,IAAI,CAAC1C,YAAY,EAAAtC,GAAA,CAAE,CAAE;;IAEzFwC,aAAa;IACZlF,KAAA,CAAA+L,aAAA,WAAM,YAAUhK,oBAAoB,CAACG,IAAK,EAAC8J,SAAS,EAAET,cAAe;IAClEH,mBAAmB,GAAGxG,MAAM,CAACyH,WAAW,GAAGzH,MAAM,CAAC0H;IAC/C,CACP;;IACApH,aAAa,IAAIqH,MAAM,CAACC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5CxM,KAAA,CAAA+L,aAAA;MACEC,SAAS,EAAEtL,EAAE;QACXiB,aAAa,CAAC8K,aAAa;QAC3BrB,mBAAmB,GAAGxJ,QAAQ,CAAC8K,sBAAsB,CAAC/J,KAAK,CAAC,GAAGf,QAAQ,CAAC6K,aAAa,CAAC9J,KAAK;MAC7F,CAAE;;IAEDyI,mBAAmB;IAClBpL,KAAA,CAAA+L,aAAA,UAAKtJ,GAAG,EAAEqC,UAAW,EAACkH,SAAS,EAAEpK,QAAQ,CAAC+K,UAAU,CAAC,CAAE;IACpD1I,UAAU,CAACK,KAAK,CAAC,CAAC,CAAC,eAAEtE,KAAA,CAAA+L,aAAA,CAAC5K,gBAAgB,IAACkB,IAAI,EAAEiC,KAAK,CAAC,CAAC,CAAE,EAACP,IAAI,EAAEA,IAAK,EAACmI,QAAQ,EAAEhD,gBAAiB,EAAE,CAAC;IAC/F,CAAC;;IAENlJ,KAAA,CAAA+L,aAAA,CAAA/L,KAAA,CAAA4M,QAAA;IACGhI,MAAM,CAACiI,UAAU,EAAC,MACnB;IAAA7M,KAAA,CAAA+L,aAAA,UAAKC,SAAS,EAAEhB,0BAA2B,IAAEC,IAAU;IACvD;;IAED;IACF,CAAC;IACNjL,KAAA,CAAA+L,aAAA,CAACtK,mBAAmB,IAACqL,kBAAkB,EAAE,SAAAA,mBAAA,UAAM9C,eAAe,CAAC,KAAK,CAAC,EAAC;IACpEhK,KAAA,CAAA+L,aAAA,UAAAgB,QAAA;IACM7I,UAAU;MACd,YAAUnC,oBAAoB,CAACI,KAAM;MACrCM,GAAG,EAAEoC,QAAS;MACdmI,QAAQ,EAAEnK,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAE;MAC5BoK,IAAI,EAAC,MAAM;MACXpK,QAAQ,EAAEA,QAAS;MACnBI,QAAQ,EAAEA,QAAS;MACnB+I,SAAS,EAAEpK,QAAQ,CAACsL,cAAc,CAAC,CAAE;MACrCC,OAAO,EAAEtL,eAAgB;MACzB4B,QAAQ,EAAEwG,iBAAkB;MAC5BzG,OAAO,EAAE2G,WAAY;MACrB5G,MAAM,EAAE8G,UAAW;IACpB;IACkB;IAChB;IACJ;IACF;IACQ,CAAC;;AAEpB,CAAC,CAAC;;;;AAIF;AACA;AACA;AACA;AACA;AACA,OAAO,IAAM+C,YAAY,GAAGnM,+BAA+B;EACzDjB,KAAK,CAACqN,IAAI,CAAC9K,aAAa;AAC1B,CAAC;AACD6K,YAAY,CAACE,WAAW,GAAG,cAAc","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useContext","useEffect","useImperativeHandle","useRef","useState","globalObject","isBrowser","getAttachedFile","cx","useMemoObject","FileUploaderControlContext","useControlLocale","useUpload","useDrop","ThemeContext","withFileUploaderControlProvider","keyListener","FileUploaderFile","FileUploaderFileList","CommonWrapper","FileUploaderFileValidationResult","useFileUploaderSize","forwardRefAndName","FocusControlWrapper","UploadIcon","globalClasses","jsStyles","stopPropagation","e","FileUploaderDataTids","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","props","ref","_cx","theme","initialFiles","disabled","error","warning","_props$multiple","multiple","_props$width","width","fileUploaderWidth","_props$hideFiles","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","_props$size","size","_props$renderFile","renderFile","inputProps","_objectWithoutPropertiesLoose","_excluded","_useContext","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","inputRef","fileDivRef","isAsync","isSingleMode","_useState","isLinkVisible","setIsLinkVisible","upload","tryValidateAndUpload","forEach","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","validationMessage","wrap","_callee$","_context","prev","next","t0","sent","id","stop","_x","apply","arguments","sizeClassName","small","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","length","filesArray","Array","from","attachedFiles","map","handleDrop","event","dataTransfer","_dataTransfer$files","current","_useDrop","onDrop","isDraggable","labelRef","_useDrop2","isWindowDraggable","windowRef","document","focus","_inputRef$current","isTabPressed","blur","_inputRef$current2","handleRemoveFile","fileId","DataTransfer","filter","f","items","add","originalFile","handleExternalFileDeletion","handleReset","getRootNode","rootNodeRef","_useState2","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","_useState3","hovered","setHovered","uploadButtonClassNames","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","createElement","className","style","onRemove","onMouseEnter","onMouseLeave","choosedFile","chooseFile","String","fromCharCode","afterLinkText","afterLinkText_HasFiles","singleFile","Fragment","orDragHere","onBlurWhenDisabled","_extends","tabIndex","type","visuallyHidden","onClick","FileUploader","memo","displayName"],"sources":["FileUploader.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport type { FileUploaderAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { InstanceWithRootNode } from '../../lib/rootNode';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nimport { useFileUploaderSize } from '../../internal/FileUploaderControl/hooks/useFileUploaderSize';\nimport type { SizeProp } from '../../lib/types/props';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { UploadIcon } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Переводит контрол в состояние валидации \"ошибка\". */\n /** Начальное состояние загруженных файлов */\n initialFiles?: File[];\n /** Состояние ошибки всего контрола */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Задает длину компонента. */\n width?: React.CSSProperties['width'];\n\n /** Задаёт размер контрола. */\n size?: SizeProp;\n\n /** Скрывает отображение файлов. */\n hideFiles?: boolean;\n\n /** Задает функцию, через которую отправляются файлы. Используется для отслеживания статуса загрузки файла.\n * @param {FileUploaderAttachedFile} file - файл, статус загрузки которого необходимо отследить. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n\n /** Задает функцию, которая вызывается при удачной попытке отправки через request. */\n onRequestSuccess?: (fileId: string) => void;\n\n /** Задает функцию, которая вызывается при неудачной попытке отправки через request. */\n onRequestError?: (fileId: string) => void;\n\n /** Определяет функцию валидации каждого файла. Срабатывает после выбора файлов и перед попыткой отправить в request. Чтобы вывести валидацию ошибки, промис должен вернуть строку. * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /** Задает функцию, которая позволяет кастомизировать файлы. Через нее можно вешать кастомные валидации на каждый файл. */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n removeFile: (fileId: string) => void;\n}\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n\n const {\n initialFiles,\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size = 'small',\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult, isMinLengthReached } =\n useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [isLinkVisible, setIsLinkVisible] = useState(true);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles || !newFiles.length) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n if (dataTransfer) {\n if (dataTransfer.files?.length > 0) {\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n handleChange(dataTransfer.files);\n }\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser(globalObject)) {\n windowRef.current = globalObject.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n const handleRemoveFile = useCallback(\n (fileId: string) => {\n const dataTransfer = new DataTransfer();\n files\n .filter((f) => f.id !== fileId)\n .forEach((file) => {\n dataTransfer.items.add(file.originalFile);\n });\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n },\n [files],\n );\n\n const handleExternalFileDeletion = useCallback(\n (fileId: string) => {\n removeFile(fileId);\n handleRemoveFile(fileId);\n },\n [handleRemoveFile, removeFile],\n );\n\n const handleReset = useCallback(() => {\n reset();\n const dataTransfer = new DataTransfer();\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, [reset, handleRemoveFile]);\n\n useImperativeHandle(\n ref,\n () => ({\n focus,\n blur,\n reset: handleReset,\n removeFile: handleExternalFileDeletion,\n getRootNode: () => rootNodeRef.current,\n }),\n [ref, blur, focus, handleReset, handleExternalFileDeletion],\n );\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n sizeClassName,\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && jsStyles.disabled(theme),\n !disabled && hovered && jsStyles.hovered(theme),\n !!warning && jsStyles.warning(theme),\n !!error && jsStyles.error(theme),\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(canDrop && jsStyles.windowDragOver(theme));\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), sizeIconClass, disabled && jsStyles.iconDisabled(theme));\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const contentClassNames = cx(jsStyles.content(), hasOneFileForSingle && jsStyles.contentWithFiles());\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n setIsLinkVisible(hasOneFileForSingle ? !isMinLengthReached : true);\n }, [isMinLengthReached, hasOneFileForSingle]);\n\n useEffect(() => {\n if (!files || !files.length || !inputRef.current) {\n return;\n }\n\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file.originalFile));\n inputRef.current.files = dataTransfer.files;\n }, []);\n\n const rootNodeRef = useRef(null);\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n const icon = <UploadIcon size={iconSizes[size]} />;\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={jsStyles.root(theme)}\n style={useMemoObject({ width })}\n ref={rootNodeRef}\n >\n {!hideFiles && !isSingleMode && !!files.length && (\n <FileUploaderFileList renderFile={renderFile} size={size} onRemove={handleRemoveFile} />\n )}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div\n data-tid={FileUploaderDataTids.content}\n className={cx(contentClassNames, { [contentInnerClass]: !files.length || !isSingleMode })}\n >\n {isLinkVisible && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n )}\n {isLinkVisible && String.fromCharCode(0xa0) /* */}\n <div\n className={cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles(theme) : jsStyles.afterLinkText(theme),\n )}\n >\n {hasOneFileForSingle ? (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} size={size} onRemove={handleRemoveFile} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere} \n <div className={uploadButtonIconClassNames}>{icon}</div>\n </>\n )}\n </div>\n </div>\n <FocusControlWrapper onBlurWhenDisabled={() => setFocusedByTab(false)}>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.visuallyHidden()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </FocusControlWrapper>\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\n/**\n * `FileUploader` — контрол для выбора пользователем файла на компьютере и отображения статуса его отправки на сервер.\n *\n * Можно использовать для синхронной отправки данных, например, в форме. Или же можно использовать в асинхронном режиме.\n */\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
var _excluded = ["mask", "maskChar", "formatChars", "alwaysShowMask", "colored", "imaskProps", "unmask", "onValueChange", "onUnexpectedInput", "onChange", "element", "className"];
|
|
3
|
+
var _excluded = ["mask", "maskChar", "formatChars", "alwaysShowMask", "colored", "imaskProps", "unmask", "onValueChange", "onUnexpectedInput", "onChange", "onBeforePasteValue", "element", "className"];
|
|
4
4
|
import React, { useImperativeHandle, useRef, useState, useEffect, useContext } from 'react';
|
|
5
5
|
import { forwardRefAndName } from "../../../lib/forwardRefAndName";
|
|
6
6
|
import { cx } from "../../../lib/theming/Emotion";
|
|
@@ -45,6 +45,7 @@ export var MaskedInput = forwardRefAndName('MaskedInput', function MaskedInput(p
|
|
|
45
45
|
onValueChange = props.onValueChange,
|
|
46
46
|
onUnexpectedInput = props.onUnexpectedInput,
|
|
47
47
|
onChange = props.onChange,
|
|
48
|
+
onBeforePasteValue = props.onBeforePasteValue,
|
|
48
49
|
element = props.element,
|
|
49
50
|
className = props.className,
|
|
50
51
|
inputProps = _objectWithoutPropertiesLoose(props, _excluded);
|
|
@@ -87,6 +88,7 @@ export var MaskedInput = forwardRefAndName('MaskedInput', function MaskedInput(p
|
|
|
87
88
|
onBlur: handleBlur,
|
|
88
89
|
onInput: handleInput,
|
|
89
90
|
onKeyDown: handleKeyDown,
|
|
91
|
+
onPaste: handlePaste,
|
|
90
92
|
className: cx(globalClasses.root, uiFontGlobalClassesRoot, className, styles.root(theme)),
|
|
91
93
|
element: colored ? /*#__PURE__*/
|
|
92
94
|
React.createElement(ColorableInputElement, {
|
|
@@ -101,6 +103,14 @@ export var MaskedInput = forwardRefAndName('MaskedInput', function MaskedInput(p
|
|
|
101
103
|
}))
|
|
102
104
|
}))
|
|
103
105
|
);
|
|
106
|
+
function handlePaste(event) {
|
|
107
|
+
if (onBeforePasteValue && onValueChange) {
|
|
108
|
+
var _event$clipboardData$, _event$clipboardData;
|
|
109
|
+
event.preventDefault();
|
|
110
|
+
onValueChange == null || onValueChange(onBeforePasteValue((_event$clipboardData$ = (_event$clipboardData = event.clipboardData) == null ? void 0 : _event$clipboardData.getData('text')) != null ? _event$clipboardData$ : ''));
|
|
111
|
+
}
|
|
112
|
+
props.onPaste == null || props.onPaste(event);
|
|
113
|
+
}
|
|
104
114
|
function getCompatibleIMaskProps() {
|
|
105
115
|
return _extends({
|
|
106
116
|
mask: mask.replace(/0/g, '{\\0}'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useImperativeHandle","useRef","useState","useEffect","useContext","forwardRefAndName","cx","Input","isKeyBackspace","isKeyDelete","ThemeContext","globalClasses","styles","getDefinitions","getMaskChar","ColorableInputElement","FixedIMaskInput","getSafeMaskInputType","type","MaskedInput","props","ref","mask","maskChar","formatChars","_props$alwaysShowMask","alwaysShowMask","_props$colored","colored","_props$imaskProps","imaskProps","customIMaskProps","_props$unmask","unmask","onValueChange","onUnexpectedInput","onChange","element","className","inputProps","_objectWithoutPropertiesLoose","_excluded","theme","inputRef","_useState","focused","setFocused","prevValue","value","String","defaultValue","prevSelectionStart","current","Object","assign","selectAll","_inputRef$current","_inputRef$current2","focus","delaySelectAll","_inputRef$current3","input","selectionStart","getCompatibleIMaskProps","uiFontGlobalClassesRoot","createElement","_extends","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","onKeyDown","handleKeyDown","root","showOnFocus","onAccept","handleAccept","replace","placeholderChar","definitions","eager","overwrite","lazy","disabled","_len","arguments","length","args","Array","_key","e","_e$currentTarget","currentTarget","handleUnexpectedInput","_inputRef$current4","selectAllOnFocus","_inputRef$current5","blink","bind","undefined","_e$currentTarget2","selectionEnd"],"sources":["MaskedInput.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState, useEffect, useContext } from 'react';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport type { Ref } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { InputProps, InputType } from '../Input';\nimport { Input } from '../Input';\nimport { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { globalClasses, styles } from './MaskedInput.styles';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers';\nimport { ColorableInputElement } from './ColorableInputElement';\nimport { FixedIMaskInput } from './FixedIMaskInput';\n\nexport interface MaskedProps {\n /** Паттерн маски */\n mask: string;\n\n /** Устанавливает символ маски\n * @default _ */\n maskChar?: string;\n\n /** Задает словарь символов-регулярок для задания маски.\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */\n formatChars?: Record<string, string>;\n\n /** Включает показ символов маски.\n * @default false */\n alwaysShowMask?: boolean;\n\n /** Задает обработчик неправильного ввода.\n * Вторым агрументом будет передан метод вспыхивания акцентным цветом.\n *\n * Если обработчик не задан, то инпут вспыхивает по-умолчанию.\n * @param value значение инпута.\n * @param blink вспыхнуть акцентным цвтетом.\n */\n onUnexpectedInput?: (value: string, blink: () => void) => void;\n\n /** Убирает из value символы, не введённые пользователем\n * @default false */\n unmask?: boolean;\n\n /** Раскрашивает символы маски.\n * @default true\n * @ignore */\n colored?: boolean;\n\n /** Задает пропы для компонента `IMaskInput`. Необходимы для юнит-тестов\n * @ignore */\n imaskProps?: IMaskInputProps<HTMLInputElement>;\n}\n\nexport type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;\n\nexport const getSafeMaskInputType = (type?: InputType): MaskInputType | undefined => {\n if (!type) {\n return type;\n }\n\n switch (type) {\n case 'number':\n case 'date':\n case 'time':\n case 'password':\n return 'text';\n default:\n return type;\n }\n};\n\nexport interface MaskedInputProps\n extends MaskedProps,\n Omit<\n InputProps,\n 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'\n > {\n type?: MaskInputType;\n}\n\n/**\n * Интерфейс пропсов наследуется от `Input`.\n * Из пропсов `Input` исключены некоторые не применимые к полю с маской пропсы и сокращен список возможных значений в type.\n */\nexport const MaskedInput = forwardRefAndName(\n 'MaskedInput',\n function MaskedInput(props: MaskedInputProps, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = {},\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onChange,\n element,\n className,\n ...inputProps\n } = props;\n const theme = useContext(ThemeContext);\n\n const inputRef = useRef<Input>(null);\n\n const [focused, setFocused] = useState(false);\n const prevValue = useRef<string>(props.value || String(props.defaultValue) || '');\n const prevSelectionStart = useRef<number | null>(null);\n\n useImperativeHandle(\n ref,\n () =>\n inputRef.current &&\n Object.assign(inputRef.current, {\n selectAll: () => {\n inputRef.current?.focus();\n inputRef.current?.delaySelectAll();\n },\n }),\n [],\n );\n\n useEffect(() => {\n // Для корректной работы onUnexpectedInput надо знать предыдущий value,\n // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.\n // Поэтому актуальный value при монтировании надо получать вручную\n if (inputRef.current?.input) {\n prevValue.current = inputRef.current.input.value;\n prevSelectionStart.current = inputRef.current.input.selectionStart;\n }\n }, []);\n\n const imaskProps = getCompatibleIMaskProps();\n\n // TODO: Удалить в следующем мажоре\n // Селекторы могут ожидать определённый порядок классов\n const uiFontGlobalClassesRoot = 'react-ui-ui-font-root';\n\n return (\n <Input\n ref={inputRef}\n {...inputProps}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n className={cx(globalClasses.root, uiFontGlobalClassesRoot, className, styles.root(theme))}\n element={\n colored ? (\n <ColorableInputElement showOnFocus={false}>\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n </ColorableInputElement>\n ) : (\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n )\n }\n />\n );\n\n function getCompatibleIMaskProps(): IMaskInputProps<HTMLInputElement> {\n return {\n mask: mask.replace(/0/g, '{\\\\0}') as any,\n placeholderChar: getMaskChar(maskChar),\n definitions: getDefinitions(formatChars),\n // FIXME: Должно быть eager=true, но в imask ломается удаление по delete\n eager: 'append',\n overwrite: 'shift',\n lazy: !alwaysShowMask && (props.disabled || !focused),\n unmask,\n ...customIMaskProps,\n } as IMaskInputProps<HTMLInputElement>;\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n const [value, , e] = args;\n\n // Метод onAccept может вызываться при монтировании, если не задан проп defaultValue.\n // Но нативный input никогда не вызывает onChange при монтировании.\n // Наше событие onValueChange в Input вывается в тех же случаях, что и нативный onChange,\n // поэтому чтобы сохранить консинстентность будем ориентироваться на наличие аргумента e.\n // Он содержит нативное событие, вызвавшее изменение.\n e && onValueChange?.(value);\n !e && (prevValue.current = value);\n }\n\n /**\n * Отслеживаем неожиданные нажатия\n * handleAccept не вызывается когда значение с маской не меняется\n * Сначала вызывается handleAccept, затем handleInput\n */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const { value, selectionStart } = e.currentTarget;\n\n // При вводе неожиданных символов или удалении каретка может перепрыгивать фиксированные символы.\n // Такие случаи не расцениваем как неожиданный ввод, т.к. пользователь может намеренно их вводить.\n if (prevValue.current === value && selectionStart === prevSelectionStart.current) {\n handleUnexpectedInput(value);\n }\n prevValue.current = value;\n prevSelectionStart.current = selectionStart;\n\n props.onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n\n // Если value из пропов отличается от value, которое получит input после обработки,\n // то imask будет ставить каретку за последним валидным символом.\n props.selectAllOnFocus && inputRef.current?.delaySelectAll();\n }\n\n function handleUnexpectedInput(value: string) {\n const blink = inputRef.current?.blink.bind(inputRef.current) || (() => undefined);\n onUnexpectedInput ? onUnexpectedInput(value, blink) : blink();\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const { value, selectionStart, selectionEnd } = e.currentTarget;\n\n if (\n (isKeyBackspace(e) && selectionStart === 0 && selectionEnd === 0) ||\n (isKeyDelete(e) && prevSelectionStart.current === value.length)\n ) {\n // Случаи, когда нажатие клавиш не тригерит `onInput`\n handleUnexpectedInput(value);\n prevValue.current = e.currentTarget.value;\n }\n prevSelectionStart.current = selectionStart;\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useImperativeHandle","useRef","useState","useEffect","useContext","forwardRefAndName","cx","Input","isKeyBackspace","isKeyDelete","ThemeContext","globalClasses","styles","getDefinitions","getMaskChar","ColorableInputElement","FixedIMaskInput","getSafeMaskInputType","type","MaskedInput","props","ref","mask","maskChar","formatChars","_props$alwaysShowMask","alwaysShowMask","_props$colored","colored","_props$imaskProps","imaskProps","customIMaskProps","_props$unmask","unmask","onValueChange","onUnexpectedInput","onChange","onBeforePasteValue","element","className","inputProps","_objectWithoutPropertiesLoose","_excluded","theme","inputRef","_useState","focused","setFocused","prevValue","value","String","defaultValue","prevSelectionStart","current","Object","assign","selectAll","_inputRef$current","_inputRef$current2","focus","delaySelectAll","_inputRef$current3","input","selectionStart","getCompatibleIMaskProps","uiFontGlobalClassesRoot","createElement","_extends","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","onKeyDown","handleKeyDown","onPaste","handlePaste","root","showOnFocus","onAccept","handleAccept","event","_event$clipboardData$","_event$clipboardData","preventDefault","clipboardData","getData","replace","placeholderChar","definitions","eager","overwrite","lazy","disabled","_len","arguments","length","args","Array","_key","e","_e$currentTarget","currentTarget","handleUnexpectedInput","_inputRef$current4","selectAllOnFocus","_inputRef$current5","blink","bind","undefined","_e$currentTarget2","selectionEnd"],"sources":["MaskedInput.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState, useEffect, useContext } from 'react';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport type { Ref } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { InputProps, InputType } from '../Input';\nimport { Input } from '../Input';\nimport { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { globalClasses, styles } from './MaskedInput.styles';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers';\nimport { ColorableInputElement } from './ColorableInputElement';\nimport { FixedIMaskInput } from './FixedIMaskInput';\n\nexport type MaskedInputOnBeforePasteValue = (value: string) => string;\n\nexport interface MaskedProps {\n /** Паттерн маски */\n mask: string;\n\n /** Устанавливает символ маски\n * @default _ */\n maskChar?: string;\n\n /** Задает словарь символов-регулярок для задания маски.\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */\n formatChars?: Record<string, string>;\n\n /** Включает показ символов маски.\n * @default false */\n alwaysShowMask?: boolean;\n\n /** Задает обработчик неправильного ввода.\n * Вторым агрументом будет передан метод вспыхивания акцентным цветом.\n *\n * Если обработчик не задан, то инпут вспыхивает по-умолчанию.\n * @param value значение инпута.\n * @param blink вспыхнуть акцентным цвтетом.\n */\n onUnexpectedInput?: (value: string, blink: () => void) => void;\n\n /** Задает обработчик вставки значения в инпут.\n * В value будет передано значение из буфера обмена.\n * Возвращаемое значение будет использовано как значение инпута.\n * Используется для фильтрации значения при вставке из буфера обмена.\n * @param value значение вставки.\n */\n onBeforePasteValue?: MaskedInputOnBeforePasteValue;\n\n /** Убирает из value символы, не введённые пользователем\n * @default false */\n unmask?: boolean;\n\n /** Раскрашивает символы маски.\n * @default true\n * @ignore */\n colored?: boolean;\n\n /** Задает пропы для компонента `IMaskInput`. Необходимы для юнит-тестов\n * @ignore */\n imaskProps?: IMaskInputProps<HTMLInputElement>;\n}\n\nexport type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;\n\nexport const getSafeMaskInputType = (type?: InputType): MaskInputType | undefined => {\n if (!type) {\n return type;\n }\n\n switch (type) {\n case 'number':\n case 'date':\n case 'time':\n case 'password':\n return 'text';\n default:\n return type;\n }\n};\n\nexport interface MaskedInputProps\n extends MaskedProps,\n Omit<\n InputProps,\n 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'\n > {\n type?: MaskInputType;\n}\n\n/**\n * Интерфейс пропсов наследуется от `Input`.\n * Из пропсов `Input` исключены некоторые не применимые к полю с маской пропсы и сокращен список возможных значений в type.\n */\nexport const MaskedInput = forwardRefAndName(\n 'MaskedInput',\n function MaskedInput(props: MaskedInputProps, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = {},\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onChange,\n onBeforePasteValue,\n element,\n className,\n ...inputProps\n } = props;\n const theme = useContext(ThemeContext);\n\n const inputRef = useRef<Input>(null);\n\n const [focused, setFocused] = useState(false);\n const prevValue = useRef<string>(props.value || String(props.defaultValue) || '');\n const prevSelectionStart = useRef<number | null>(null);\n\n useImperativeHandle(\n ref,\n () =>\n inputRef.current &&\n Object.assign(inputRef.current, {\n selectAll: () => {\n inputRef.current?.focus();\n inputRef.current?.delaySelectAll();\n },\n }),\n [],\n );\n\n useEffect(() => {\n // Для корректной работы onUnexpectedInput надо знать предыдущий value,\n // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.\n // Поэтому актуальный value при монтировании надо получать вручную\n if (inputRef.current?.input) {\n prevValue.current = inputRef.current.input.value;\n prevSelectionStart.current = inputRef.current.input.selectionStart;\n }\n }, []);\n\n const imaskProps = getCompatibleIMaskProps();\n\n // TODO: Удалить в следующем мажоре\n // Селекторы могут ожидать определённый порядок классов\n const uiFontGlobalClassesRoot = 'react-ui-ui-font-root';\n\n return (\n <Input\n ref={inputRef}\n {...inputProps}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n className={cx(globalClasses.root, uiFontGlobalClassesRoot, className, styles.root(theme))}\n element={\n colored ? (\n <ColorableInputElement showOnFocus={false}>\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n </ColorableInputElement>\n ) : (\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n )\n }\n />\n );\n\n function handlePaste(event: React.ClipboardEvent<HTMLInputElement>) {\n if (onBeforePasteValue && onValueChange) {\n event.preventDefault();\n onValueChange?.(onBeforePasteValue(event.clipboardData?.getData('text') ?? ''));\n }\n\n props.onPaste?.(event);\n }\n\n function getCompatibleIMaskProps(): IMaskInputProps<HTMLInputElement> {\n return {\n mask: mask.replace(/0/g, '{\\\\0}') as any,\n placeholderChar: getMaskChar(maskChar),\n definitions: getDefinitions(formatChars),\n // FIXME: Должно быть eager=true, но в imask ломается удаление по delete\n eager: 'append',\n overwrite: 'shift',\n lazy: !alwaysShowMask && (props.disabled || !focused),\n unmask,\n ...customIMaskProps,\n } as IMaskInputProps<HTMLInputElement>;\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n const [value, , e] = args;\n\n // Метод onAccept может вызываться при монтировании, если не задан проп defaultValue.\n // Но нативный input никогда не вызывает onChange при монтировании.\n // Наше событие onValueChange в Input вывается в тех же случаях, что и нативный onChange,\n // поэтому чтобы сохранить консинстентность будем ориентироваться на наличие аргумента e.\n // Он содержит нативное событие, вызвавшее изменение.\n e && onValueChange?.(value);\n !e && (prevValue.current = value);\n }\n\n /**\n * Отслеживаем неожиданные нажатия\n * handleAccept не вызывается когда значение с маской не меняется\n * Сначала вызывается handleAccept, затем handleInput\n */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const { value, selectionStart } = e.currentTarget;\n\n // При вводе неожиданных символов или удалении каретка может перепрыгивать фиксированные символы.\n // Такие случаи не расцениваем как неожиданный ввод, т.к. пользователь может намеренно их вводить.\n if (prevValue.current === value && selectionStart === prevSelectionStart.current) {\n handleUnexpectedInput(value);\n }\n prevValue.current = value;\n prevSelectionStart.current = selectionStart;\n\n props.onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n\n // Если value из пропов отличается от value, которое получит input после обработки,\n // то imask будет ставить каретку за последним валидным символом.\n props.selectAllOnFocus && inputRef.current?.delaySelectAll();\n }\n\n function handleUnexpectedInput(value: string) {\n const blink = inputRef.current?.blink.bind(inputRef.current) || (() => undefined);\n onUnexpectedInput ? onUnexpectedInput(value, blink) : blink();\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const { value, selectionStart, selectionEnd } = e.currentTarget;\n\n if (\n (isKeyBackspace(e) && selectionStart === 0 && selectionEnd === 0) ||\n (isKeyDelete(e) && prevSelectionStart.current === value.length)\n ) {\n // Случаи, когда нажатие клавиш не тригерит `onInput`\n handleUnexpectedInput(value);\n prevValue.current = e.currentTarget.value;\n }\n prevSelectionStart.current = selectionStart;\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { IMaskInputProps } from '@skbkontur/react-imask';
|
|
2
2
|
import type { InputProps, InputType } from '../Input';
|
|
3
3
|
import { Input } from '../Input';
|
|
4
|
+
export type MaskedInputOnBeforePasteValue = (value: string) => string;
|
|
4
5
|
export interface MaskedProps {
|
|
5
6
|
/** Паттерн маски */
|
|
6
7
|
mask: string;
|
|
@@ -21,6 +22,13 @@ export interface MaskedProps {
|
|
|
21
22
|
* @param blink вспыхнуть акцентным цвтетом.
|
|
22
23
|
*/
|
|
23
24
|
onUnexpectedInput?: (value: string, blink: () => void) => void;
|
|
25
|
+
/** Задает обработчик вставки значения в инпут.
|
|
26
|
+
* В value будет передано значение из буфера обмена.
|
|
27
|
+
* Возвращаемое значение будет использовано как значение инпута.
|
|
28
|
+
* Используется для фильтрации значения при вставке из буфера обмена.
|
|
29
|
+
* @param value значение вставки.
|
|
30
|
+
*/
|
|
31
|
+
onBeforePasteValue?: MaskedInputOnBeforePasteValue;
|
|
24
32
|
/** Убирает из value символы, не введённые пользователем
|
|
25
33
|
* @default false */
|
|
26
34
|
unmask?: boolean;
|
|
@@ -17,6 +17,9 @@ import { LoadingIcon } from "../../icons2022/LoadingIcon";
|
|
|
17
17
|
import { Popup } from "../../Popup";
|
|
18
18
|
import { getMenuPositions } from "../../../lib/getMenuPositions";
|
|
19
19
|
import { ZIndex } from "../../ZIndex";
|
|
20
|
+
import { MaskedInput } from "../../../components/MaskedInput";
|
|
21
|
+
import { styles as MaskedInputStyles } from "../../../components/MaskedInput/MaskedInput.styles";
|
|
22
|
+
import { cx } from "../../../lib/theming/Emotion";
|
|
20
23
|
import { ArrowDownIcon } from "../ArrowDownIcon";
|
|
21
24
|
import { ComboBoxMenu } from "../ComboBoxMenu";
|
|
22
25
|
import { ComboBoxRequestStatus } from "../CustomComboBoxTypes";
|
|
@@ -282,18 +285,19 @@ export var ComboBoxView = responsiveLayout(_class = rootNode(_class = (_ComboBox
|
|
|
282
285
|
size = _this$props5.size,
|
|
283
286
|
ariaDescribedby = _this$props5['aria-describedby'],
|
|
284
287
|
ariaLabel = _this$props5['aria-label'],
|
|
285
|
-
showClearIcon = _this$props5.showClearIcon
|
|
286
|
-
|
|
287
|
-
|
|
288
|
+
showClearIcon = _this$props5.showClearIcon,
|
|
289
|
+
mask = _this$props5.mask,
|
|
290
|
+
maskChar = _this$props5.maskChar,
|
|
291
|
+
formatChars = _this$props5.formatChars,
|
|
292
|
+
onBeforePasteInMask = _this$props5.onBeforePasteInMask;
|
|
288
293
|
var rightIcon = this.getRightIcon();
|
|
289
294
|
if (editing) {
|
|
290
|
-
|
|
295
|
+
var inputProps = {
|
|
291
296
|
id: id,
|
|
292
297
|
align: align,
|
|
293
298
|
borderless: borderless,
|
|
294
299
|
disabled: disabled,
|
|
295
300
|
error: error,
|
|
296
|
-
maxLength: this.props.maxLength,
|
|
297
301
|
onBlur: isMobile ? undefined : onInputBlur,
|
|
298
302
|
onValueChange: onInputValueChange,
|
|
299
303
|
onFocus: onInputFocus,
|
|
@@ -303,18 +307,34 @@ export var ComboBoxView = responsiveLayout(_class = rootNode(_class = (_ComboBox
|
|
|
303
307
|
value: textValue || '',
|
|
304
308
|
onKeyDown: onInputKeyDown,
|
|
305
309
|
placeholder: placeholder,
|
|
306
|
-
width:
|
|
310
|
+
width: '100%',
|
|
307
311
|
size: size,
|
|
308
|
-
ref: this.refInput,
|
|
309
312
|
warning: warning,
|
|
310
313
|
inputMode: inputMode,
|
|
311
|
-
autoComplete:
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
314
|
+
autoComplete: 'off',
|
|
315
|
+
'aria-describedby': ariaDescribedby,
|
|
316
|
+
'aria-controls': this.menuId,
|
|
317
|
+
'aria-label': ariaLabel,
|
|
315
318
|
showClearIcon: showClearIcon
|
|
316
|
-
}
|
|
319
|
+
};
|
|
320
|
+
if (mask) {
|
|
321
|
+
return /*#__PURE__*/React.createElement(MaskedInput, _extends({
|
|
322
|
+
ref: this.refInput
|
|
323
|
+
}, inputProps, {
|
|
324
|
+
type: "text",
|
|
325
|
+
mask: mask,
|
|
326
|
+
maskChar: maskChar,
|
|
327
|
+
formatChars: formatChars,
|
|
328
|
+
onBeforePasteValue: onBeforePasteInMask
|
|
329
|
+
}));
|
|
330
|
+
}
|
|
331
|
+
return /*#__PURE__*/React.createElement(Input, _extends({
|
|
332
|
+
ref: this.refInput,
|
|
333
|
+
maxLength: this.props.maxLength
|
|
334
|
+
}, inputProps));
|
|
317
335
|
}
|
|
336
|
+
var _this$getProps4 = this.getProps(),
|
|
337
|
+
renderValue = _this$getProps4.renderValue;
|
|
318
338
|
return /*#__PURE__*/React.createElement(InputLikeText, {
|
|
319
339
|
id: id,
|
|
320
340
|
align: align,
|
|
@@ -332,6 +352,7 @@ export var ComboBoxView = responsiveLayout(_class = rootNode(_class = (_ComboBox
|
|
|
332
352
|
"aria-describedby": ariaDescribedby,
|
|
333
353
|
"aria-controls": this.menuId,
|
|
334
354
|
showClearIcon: showClearIcon,
|
|
355
|
+
className: cx(mask && MaskedInputStyles.root(this.theme)),
|
|
335
356
|
onClearCrossClick: this.props.onClearCrossClick
|
|
336
357
|
}, isNonNullable(value) && renderValue ? renderValue(value) : null);
|
|
337
358
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","getRandomID","isNonNullable","Input","InputLikeText","RenderLayer","Spinner","CommonWrapper","MobilePopup","responsiveLayout","rootNode","getRootNode","createPropsGetter","ThemeContext","LoadingIcon","Popup","getMenuPositions","ZIndex","ArrowDownIcon","ComboBoxMenu","ComboBoxRequestStatus","styles","CustomComboBoxDataTids","getComboBoxTheme","ComboBoxViewIds","menu","ComboBoxView","_class","_ComboBoxView","_React$Component","_this$props$value","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","mobileInput","dropdownContainerRef","createRef","menuId","state","anchorElement","clearCrossShowed","props","showClearIcon","value","toString","getComboBoxMenu","_this$props","items","loading","opened","refMenu","maxMenuHeight","renderTotalCount","renderNotFound","totalCount","size","_this$getProps","repeatRequest","requestStatus","renderItem","itemWrapper","createElement","hasMargin","onValueChange","handleItemSelect","renderAddButton","isMobile","isMobileLayout","renderMenu","_this$getProps2","menuPos","menuAlign","hasShadow","minWidth","priority","priorities","PopupMenu","positions","disablePortal","margin","parseInt","theme","menuOffsetY","ref","renderMobileMenu","rightIcon","_this$props2","onFocus","onInputValueChange","onInputKeyDown","placeholder","textValue","renderSpinner","inputProps","autoComplete","autoFocus","width","onKeyDown","headerChildComponent","_extends","refMobileInput","onCloseRequest","onMobileClose","getParent","handleMobileFocus","_this$mobileInput","onInputClick","focus","item","refInput","input","className","spinnerWrapper","type","caption","dimmed","getRightIcon","_this$props3","drawArrow","_inheritsLoose","_proto","prototype","componentDidMount","updateAnchorElement","parent","setState","componentDidUpdate","prevProps","editing","render","_this2","Consumer","Provider","renderMain","_this$props4","onMouseEnter","onMouseLeave","onMouseOver","_this$getProps3","onClickOutside","onFocusOutside","renderInput","active","comboBoxView","style","root","setRootNode","_this$props5","id","align","borderless","disabled","error","onInputBlur","onInputFocus","warning","refInputLikeText","leftIcon","inputMode","ariaDescribedby","ariaLabel","_this$getProps4","renderValue","maxLength","onBlur","undefined","onClick","onClearCrossClick","Component","__KONTUR_REACT_UI__","displayName","Unknown"],"sources":["ComboBoxView.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport type { InputIconType, InputProps, ShowClearIcon } from '../../components/Input';\nimport { Input } from '../../components/Input';\nimport { InputLikeText } from '../InputLikeText';\nimport type { Menu } from '../Menu';\nimport type { MenuItemState } from '../../components/MenuItem';\nimport { RenderLayer } from '../RenderLayer';\nimport { Spinner } from '../../components/Spinner';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { MobilePopup } from '../MobilePopup';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode, getRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { LoadingIcon } from '../icons2022/LoadingIcon';\nimport type { ComboBoxExtendedItem } from '../../components/ComboBox';\nimport type { SizeProp } from '../../lib/types/props';\nimport { Popup } from '../Popup';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\nimport { ZIndex } from '../ZIndex';\n\nimport { ArrowDownIcon } from './ArrowDownIcon';\nimport { ComboBoxMenu } from './ComboBoxMenu';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { styles } from './CustomComboBox.styles';\nimport { CustomComboBoxDataTids } from './CustomComboBox';\nimport { getComboBoxTheme } from './getComboBoxTheme';\n\ninterface ComboBoxViewProps<T>\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n editing?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n items?: Nullable<Array<ComboBoxExtendedItem<T>>>;\n loading?: boolean;\n /**\n * Позволяет вручную задать текущую позицию выпадающего окна\n */\n menuPos?: 'top' | 'bottom';\n menuAlign?: 'left' | 'right';\n opened?: boolean;\n drawArrow?: boolean;\n placeholder?: string;\n size?: SizeProp;\n textValue?: string;\n totalCount?: number;\n value?: Nullable<T>;\n showClearIcon?: ShowClearIcon;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: string | number;\n maxLength?: number;\n maxMenuHeight?: number | string;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n\n onValueChange?: (value: T) => void;\n onClickOutside?: (e: Event) => void;\n onFocus?: () => void;\n onMobileClose?: () => void;\n onFocusOutside?: () => void;\n onInputBlur?: () => void;\n onInputValueChange?: (value: string) => void;\n onInputFocus?: () => void;\n onInputClick?: () => void;\n onClearCrossClick?: () => void;\n onInputKeyDown?: (e: React.KeyboardEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n itemWrapper?: (item: T) => React.ComponentType;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderValue?: (item: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n refInput?: (input: Nullable<Input>) => void;\n refMenu?: (menu: Nullable<Menu>) => void;\n refInputLikeText?: (inputLikeText: Nullable<InputLikeText>) => void;\n}\n\ntype DefaultProps<T> = Required<\n Pick<\n ComboBoxViewProps<T>,\n | 'renderItem'\n | 'renderValue'\n | 'renderAddButton'\n | 'repeatRequest'\n | 'requestStatus'\n | 'onClickOutside'\n | 'onFocusOutside'\n | 'size'\n | 'width'\n | 'showClearIcon'\n >\n>;\n\nexport const ComboBoxViewIds = {\n menu: 'ComboBoxView__menu',\n};\n\ninterface ComboBoxViewState {\n anchorElement: Nullable<Element>;\n clearCrossShowed: boolean;\n}\n\n@responsiveLayout\n@rootNode\nexport class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>, ComboBoxViewState> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxView';\n public static displayName = 'ComboBoxView';\n\n public static defaultProps: DefaultProps<unknown> = {\n renderItem: (item: any) => item,\n renderValue: (item: any) => item,\n renderAddButton: () => null,\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n onClickOutside: () => {\n /**/\n },\n onFocusOutside: () => {\n /**/\n },\n size: 'small',\n width: 250,\n showClearIcon: 'never',\n };\n\n private getProps = createPropsGetter(ComboBoxView.defaultProps);\n\n private input: Nullable<Input>;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private mobileInput: Nullable<Input> = null;\n private isMobileLayout!: boolean;\n private dropdownContainerRef = React.createRef<Popup>();\n private theme!: Theme;\n private menuId = ComboBoxViewIds.menu + getRandomID();\n\n public state = {\n anchorElement: null,\n clearCrossShowed: this.props.showClearIcon === 'always' && !!this.props.value?.toString(),\n };\n\n public componentDidMount() {\n this.updateAnchorElement();\n\n if (this.props.autoFocus && this.props.onFocus) {\n this.props.onFocus();\n }\n }\n\n updateAnchorElement() {\n const parent = this.getParent();\n const anchorElement = this.state.anchorElement;\n\n if (anchorElement !== parent) {\n this.setState({\n anchorElement: parent,\n });\n }\n }\n\n public componentDidUpdate(prevProps: ComboBoxViewProps<T>) {\n const { input, props } = this;\n\n this.updateAnchorElement();\n\n if (props.editing && !prevProps.editing && input) {\n input.focus();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getComboBoxTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { onMouseEnter, onMouseLeave, onMouseOver, opened } = this.props;\n const { onClickOutside, onFocusOutside, width } = this.getProps();\n\n const isMobile = this.isMobileLayout;\n\n const input = this.renderInput();\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={onClickOutside} onFocusOutside={onFocusOutside} active={opened}>\n <span\n data-tid={CustomComboBoxDataTids.comboBoxView}\n style={{ width }}\n className={styles.root()}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n ref={this.setRootNode}\n >\n {input}\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getComboBoxMenu = () => {\n const { items, loading, opened, refMenu, maxMenuHeight, renderTotalCount, renderNotFound, totalCount, size } =\n this.props;\n\n const { repeatRequest, requestStatus, renderItem, itemWrapper } = this.getProps();\n return (\n <ComboBoxMenu\n hasMargin={false}\n menuId={this.menuId}\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={this.handleItemSelect}\n opened={opened}\n refMenu={refMenu}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n itemWrapper={itemWrapper}\n renderAddButton={this.renderAddButton}\n repeatRequest={repeatRequest}\n requestStatus={requestStatus}\n totalCount={totalCount}\n isMobile={this.isMobileLayout}\n size={size}\n />\n );\n };\n\n private renderMenu = () => {\n const { opened, menuPos, menuAlign } = this.getProps();\n const { anchorElement } = this.state;\n\n return (\n opened &&\n anchorElement && (\n <Popup\n opened\n hasShadow\n minWidth=\"100%\"\n anchorElement={anchorElement}\n priority={ZIndex.priorities.PopupMenu}\n positions={getMenuPositions(menuPos, menuAlign)}\n disablePortal={this.props.disablePortal}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n ref={this.dropdownContainerRef}\n >\n {this.getComboBoxMenu()}\n </Popup>\n )\n );\n };\n\n private renderMobileMenu = () => {\n let rightIcon = null;\n\n const { loading, items, opened, onFocus, onInputValueChange, onInputKeyDown, placeholder, textValue } = this.props;\n if (loading && items && !!items.length) {\n rightIcon = this.renderSpinner();\n }\n\n const inputProps: InputProps = {\n autoComplete: 'off',\n autoFocus: true,\n width: '100%',\n onFocus,\n onValueChange: onInputValueChange,\n onKeyDown: onInputKeyDown,\n value: textValue,\n placeholder,\n rightIcon,\n };\n\n return (\n opened && (\n <MobilePopup\n headerChildComponent={<Input ref={this.refMobileInput} {...inputProps} />}\n onCloseRequest={this.props.onMobileClose}\n opened\n >\n {this.getComboBoxMenu()}\n </MobilePopup>\n )\n );\n };\n\n private getParent = () => {\n return getRootNode(this);\n };\n\n private renderAddButton = (): React.ReactNode => {\n return this.getProps().renderAddButton(this.props.textValue);\n };\n\n private renderInput(): React.ReactNode {\n const isMobile = this.isMobileLayout;\n\n const {\n id,\n align,\n borderless,\n disabled,\n editing,\n error,\n onFocus,\n onInputBlur,\n onInputValueChange,\n onInputFocus,\n onInputClick,\n onInputKeyDown,\n placeholder,\n textValue,\n value,\n warning,\n refInputLikeText,\n leftIcon,\n inputMode,\n size,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n showClearIcon,\n } = this.props;\n\n const { renderValue } = this.getProps();\n\n const rightIcon = this.getRightIcon();\n\n if (editing) {\n return (\n <Input\n id={id}\n align={align}\n borderless={borderless}\n disabled={disabled}\n error={error}\n maxLength={this.props.maxLength}\n onBlur={isMobile ? undefined : onInputBlur}\n onValueChange={onInputValueChange}\n onFocus={onInputFocus}\n onClick={isMobile ? this.handleMobileFocus : onInputClick}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n value={textValue || ''}\n onKeyDown={onInputKeyDown}\n placeholder={placeholder}\n width=\"100%\"\n size={size}\n ref={this.refInput}\n warning={warning}\n inputMode={inputMode}\n autoComplete=\"off\"\n aria-describedby={ariaDescribedby}\n aria-controls={this.menuId}\n aria-label={ariaLabel}\n showClearIcon={showClearIcon}\n />\n );\n }\n\n return (\n <InputLikeText\n id={id}\n align={align}\n borderless={borderless}\n error={error}\n onFocus={onFocus}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n disabled={disabled}\n warning={warning}\n placeholder={placeholder}\n size={size}\n width=\"100%\"\n ref={refInputLikeText}\n aria-describedby={ariaDescribedby}\n aria-controls={this.menuId}\n showClearIcon={showClearIcon}\n onClearCrossClick={this.props.onClearCrossClick}\n >\n {isNonNullable(value) && renderValue ? renderValue(value) : null}\n </InputLikeText>\n );\n }\n\n private handleMobileFocus = () => {\n this.props.onInputClick?.();\n\n this.mobileInput?.focus();\n };\n\n private handleItemSelect = (item: T) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(item);\n }\n\n if (this.isMobileLayout) {\n this.props.onMobileClose?.();\n }\n };\n\n private refInput = (input: Nullable<Input>) => {\n if (this.props.refInput) {\n this.props.refInput(input);\n }\n this.input = input;\n };\n\n private renderSpinner = () => (\n <span className={styles.spinnerWrapper()}>\n <Spinner type=\"mini\" caption=\"\" dimmed />\n </span>\n );\n\n private getRightIcon = () => {\n const { loading, items, drawArrow, rightIcon, size } = this.props;\n\n if (loading && items && !!items.length) {\n return <LoadingIcon size={size} />;\n }\n\n if (rightIcon || drawArrow) {\n return rightIcon || <ArrowDownIcon size={size} />;\n }\n\n return null;\n };\n\n private refMobileInput = (input: Nullable<Input>) => {\n this.mobileInput = input;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","getRandomID","isNonNullable","Input","InputLikeText","RenderLayer","Spinner","CommonWrapper","MobilePopup","responsiveLayout","rootNode","getRootNode","createPropsGetter","ThemeContext","LoadingIcon","Popup","getMenuPositions","ZIndex","MaskedInput","styles","MaskedInputStyles","cx","ArrowDownIcon","ComboBoxMenu","ComboBoxRequestStatus","CustomComboBoxDataTids","getComboBoxTheme","ComboBoxViewIds","menu","ComboBoxView","_class","_ComboBoxView","_React$Component","_this$props$value","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","mobileInput","dropdownContainerRef","createRef","menuId","state","anchorElement","clearCrossShowed","props","showClearIcon","value","toString","getComboBoxMenu","_this$props","items","loading","opened","refMenu","maxMenuHeight","renderTotalCount","renderNotFound","totalCount","size","_this$getProps","repeatRequest","requestStatus","renderItem","itemWrapper","createElement","hasMargin","onValueChange","handleItemSelect","renderAddButton","isMobile","isMobileLayout","renderMenu","_this$getProps2","menuPos","menuAlign","hasShadow","minWidth","priority","priorities","PopupMenu","positions","disablePortal","margin","parseInt","theme","menuOffsetY","ref","renderMobileMenu","rightIcon","_this$props2","onFocus","onInputValueChange","onInputKeyDown","placeholder","textValue","renderSpinner","inputProps","autoComplete","autoFocus","width","onKeyDown","headerChildComponent","_extends","refMobileInput","onCloseRequest","onMobileClose","getParent","handleMobileFocus","_this$mobileInput","onInputClick","focus","item","refInput","input","className","spinnerWrapper","type","caption","dimmed","getRightIcon","_this$props3","drawArrow","_inheritsLoose","_proto","prototype","componentDidMount","updateAnchorElement","parent","setState","componentDidUpdate","prevProps","editing","render","_this2","Consumer","Provider","renderMain","_this$props4","onMouseEnter","onMouseLeave","onMouseOver","_this$getProps3","onClickOutside","onFocusOutside","renderInput","active","comboBoxView","style","root","setRootNode","_this$props5","id","align","borderless","disabled","error","onInputBlur","onInputFocus","warning","refInputLikeText","leftIcon","inputMode","ariaDescribedby","ariaLabel","mask","maskChar","formatChars","onBeforePasteInMask","onBlur","undefined","onClick","onBeforePasteValue","maxLength","_this$getProps4","renderValue","onClearCrossClick","Component","__KONTUR_REACT_UI__","displayName","Unknown"],"sources":["ComboBoxView.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport type { InputIconType, InputProps, ShowClearIcon } from '../../components/Input';\nimport { Input } from '../../components/Input';\nimport { InputLikeText } from '../InputLikeText';\nimport type { Menu } from '../Menu';\nimport type { MenuItemState } from '../../components/MenuItem';\nimport { RenderLayer } from '../RenderLayer';\nimport { Spinner } from '../../components/Spinner';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { MobilePopup } from '../MobilePopup';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode, getRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { LoadingIcon } from '../icons2022/LoadingIcon';\nimport type { ComboBoxExtendedItem } from '../../components/ComboBox';\nimport type { SizeProp } from '../../lib/types/props';\nimport { Popup } from '../Popup';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\nimport { ZIndex } from '../ZIndex';\nimport type { MaskedInputOnBeforePasteValue, MaskedInputProps } from '../../components/MaskedInput';\nimport { MaskedInput } from '../../components/MaskedInput';\nimport { styles as MaskedInputStyles } from '../../components/MaskedInput/MaskedInput.styles';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { ArrowDownIcon } from './ArrowDownIcon';\nimport { ComboBoxMenu } from './ComboBoxMenu';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { styles } from './CustomComboBox.styles';\nimport { CustomComboBoxDataTids } from './CustomComboBox';\nimport { getComboBoxTheme } from './getComboBoxTheme';\n\ninterface ComboBoxViewProps<T>\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n CommonProps,\n Partial<Pick<MaskedInputProps, 'mask' | 'maskChar' | 'formatChars'>> {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n editing?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n items?: Nullable<Array<ComboBoxExtendedItem<T>>>;\n loading?: boolean;\n /**\n * Позволяет вручную задать текущую позицию выпадающего окна\n */\n menuPos?: 'top' | 'bottom';\n menuAlign?: 'left' | 'right';\n opened?: boolean;\n drawArrow?: boolean;\n placeholder?: string;\n size?: SizeProp;\n textValue?: string;\n totalCount?: number;\n value?: Nullable<T>;\n showClearIcon?: ShowClearIcon;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: string | number;\n maxLength?: number;\n maxMenuHeight?: number | string;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n\n onBeforePasteInMask?: MaskedInputOnBeforePasteValue;\n onValueChange?: (value: T) => void;\n onClickOutside?: (e: Event) => void;\n onFocus?: () => void;\n onMobileClose?: () => void;\n onFocusOutside?: () => void;\n onInputBlur?: () => void;\n onInputValueChange?: (value: string) => void;\n onInputFocus?: () => void;\n onInputClick?: () => void;\n onClearCrossClick?: () => void;\n onInputKeyDown?: (e: React.KeyboardEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n itemWrapper?: (item: T) => React.ComponentType;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderValue?: (item: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n refInput?: (input: Nullable<Input>) => void;\n refMenu?: (menu: Nullable<Menu>) => void;\n refInputLikeText?: (inputLikeText: Nullable<InputLikeText>) => void;\n}\n\ntype DefaultProps<T> = Required<\n Pick<\n ComboBoxViewProps<T>,\n | 'renderItem'\n | 'renderValue'\n | 'renderAddButton'\n | 'repeatRequest'\n | 'requestStatus'\n | 'onClickOutside'\n | 'onFocusOutside'\n | 'size'\n | 'width'\n | 'showClearIcon'\n >\n>;\n\nexport const ComboBoxViewIds = {\n menu: 'ComboBoxView__menu',\n};\n\ninterface ComboBoxViewState {\n anchorElement: Nullable<Element>;\n clearCrossShowed: boolean;\n}\n\n@responsiveLayout\n@rootNode\nexport class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>, ComboBoxViewState> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxView';\n public static displayName = 'ComboBoxView';\n\n public static defaultProps: DefaultProps<unknown> = {\n renderItem: (item: any) => item,\n renderValue: (item: any) => item,\n renderAddButton: () => null,\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n onClickOutside: () => {\n /**/\n },\n onFocusOutside: () => {\n /**/\n },\n size: 'small',\n width: 250,\n showClearIcon: 'never',\n };\n\n private getProps = createPropsGetter(ComboBoxView.defaultProps);\n\n private input: Nullable<Input>;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private mobileInput: Nullable<Input> = null;\n private isMobileLayout!: boolean;\n private dropdownContainerRef = React.createRef<Popup>();\n private theme!: Theme;\n private menuId = ComboBoxViewIds.menu + getRandomID();\n\n public state = {\n anchorElement: null,\n clearCrossShowed: this.props.showClearIcon === 'always' && !!this.props.value?.toString(),\n };\n\n public componentDidMount() {\n this.updateAnchorElement();\n\n if (this.props.autoFocus && this.props.onFocus) {\n this.props.onFocus();\n }\n }\n\n updateAnchorElement() {\n const parent = this.getParent();\n const anchorElement = this.state.anchorElement;\n\n if (anchorElement !== parent) {\n this.setState({\n anchorElement: parent,\n });\n }\n }\n\n public componentDidUpdate(prevProps: ComboBoxViewProps<T>) {\n const { input, props } = this;\n\n this.updateAnchorElement();\n\n if (props.editing && !prevProps.editing && input) {\n input.focus();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getComboBoxTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { onMouseEnter, onMouseLeave, onMouseOver, opened } = this.props;\n const { onClickOutside, onFocusOutside, width } = this.getProps();\n\n const isMobile = this.isMobileLayout;\n\n const input = this.renderInput();\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={onClickOutside} onFocusOutside={onFocusOutside} active={opened}>\n <span\n data-tid={CustomComboBoxDataTids.comboBoxView}\n style={{ width }}\n className={styles.root()}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n ref={this.setRootNode}\n >\n {input}\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getComboBoxMenu = () => {\n const { items, loading, opened, refMenu, maxMenuHeight, renderTotalCount, renderNotFound, totalCount, size } =\n this.props;\n\n const { repeatRequest, requestStatus, renderItem, itemWrapper } = this.getProps();\n return (\n <ComboBoxMenu\n hasMargin={false}\n menuId={this.menuId}\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={this.handleItemSelect}\n opened={opened}\n refMenu={refMenu}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n itemWrapper={itemWrapper}\n renderAddButton={this.renderAddButton}\n repeatRequest={repeatRequest}\n requestStatus={requestStatus}\n totalCount={totalCount}\n isMobile={this.isMobileLayout}\n size={size}\n />\n );\n };\n\n private renderMenu = () => {\n const { opened, menuPos, menuAlign } = this.getProps();\n const { anchorElement } = this.state;\n\n return (\n opened &&\n anchorElement && (\n <Popup\n opened\n hasShadow\n minWidth=\"100%\"\n anchorElement={anchorElement}\n priority={ZIndex.priorities.PopupMenu}\n positions={getMenuPositions(menuPos, menuAlign)}\n disablePortal={this.props.disablePortal}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n ref={this.dropdownContainerRef}\n >\n {this.getComboBoxMenu()}\n </Popup>\n )\n );\n };\n\n private renderMobileMenu = () => {\n let rightIcon = null;\n\n const { loading, items, opened, onFocus, onInputValueChange, onInputKeyDown, placeholder, textValue } = this.props;\n if (loading && items && !!items.length) {\n rightIcon = this.renderSpinner();\n }\n\n const inputProps: InputProps = {\n autoComplete: 'off',\n autoFocus: true,\n width: '100%',\n onFocus,\n onValueChange: onInputValueChange,\n onKeyDown: onInputKeyDown,\n value: textValue,\n placeholder,\n rightIcon,\n };\n\n return (\n opened && (\n <MobilePopup\n headerChildComponent={<Input ref={this.refMobileInput} {...inputProps} />}\n onCloseRequest={this.props.onMobileClose}\n opened\n >\n {this.getComboBoxMenu()}\n </MobilePopup>\n )\n );\n };\n\n private getParent = () => {\n return getRootNode(this);\n };\n\n private renderAddButton = (): React.ReactNode => {\n return this.getProps().renderAddButton(this.props.textValue);\n };\n\n private renderInput(): React.ReactNode {\n const isMobile = this.isMobileLayout;\n\n const {\n id,\n align,\n borderless,\n disabled,\n editing,\n error,\n onFocus,\n onInputBlur,\n onInputValueChange,\n onInputFocus,\n onInputClick,\n onInputKeyDown,\n placeholder,\n textValue,\n value,\n warning,\n refInputLikeText,\n leftIcon,\n inputMode,\n size,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n showClearIcon,\n mask,\n maskChar,\n formatChars,\n onBeforePasteInMask,\n } = this.props;\n\n const rightIcon = this.getRightIcon();\n\n if (editing) {\n const inputProps: InputProps = {\n id,\n align,\n borderless,\n disabled,\n error,\n onBlur: isMobile ? undefined : onInputBlur,\n onValueChange: onInputValueChange,\n onFocus: onInputFocus,\n onClick: isMobile ? this.handleMobileFocus : onInputClick,\n leftIcon,\n rightIcon,\n value: textValue || '',\n onKeyDown: onInputKeyDown,\n placeholder,\n width: '100%',\n size,\n warning,\n inputMode,\n autoComplete: 'off',\n 'aria-describedby': ariaDescribedby,\n 'aria-controls': this.menuId,\n 'aria-label': ariaLabel,\n showClearIcon,\n };\n\n if (mask) {\n return (\n <MaskedInput\n ref={this.refInput}\n {...inputProps}\n type=\"text\"\n mask={mask}\n maskChar={maskChar}\n formatChars={formatChars}\n onBeforePasteValue={onBeforePasteInMask}\n />\n );\n }\n\n return <Input ref={this.refInput} maxLength={this.props.maxLength} {...inputProps} />;\n }\n\n const { renderValue } = this.getProps();\n return (\n <InputLikeText\n id={id}\n align={align}\n borderless={borderless}\n error={error}\n onFocus={onFocus}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n disabled={disabled}\n warning={warning}\n placeholder={placeholder}\n size={size}\n width=\"100%\"\n ref={refInputLikeText}\n aria-describedby={ariaDescribedby}\n aria-controls={this.menuId}\n showClearIcon={showClearIcon}\n className={cx(mask && MaskedInputStyles.root(this.theme))}\n onClearCrossClick={this.props.onClearCrossClick}\n >\n {isNonNullable(value) && renderValue ? renderValue(value) : null}\n </InputLikeText>\n );\n }\n\n private handleMobileFocus = () => {\n this.props.onInputClick?.();\n\n this.mobileInput?.focus();\n };\n\n private handleItemSelect = (item: T) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(item);\n }\n\n if (this.isMobileLayout) {\n this.props.onMobileClose?.();\n }\n };\n\n private refInput = (input: Nullable<Input>) => {\n if (this.props.refInput) {\n this.props.refInput(input);\n }\n this.input = input;\n };\n\n private renderSpinner = () => (\n <span className={styles.spinnerWrapper()}>\n <Spinner type=\"mini\" caption=\"\" dimmed />\n </span>\n );\n\n private getRightIcon = () => {\n const { loading, items, drawArrow, rightIcon, size } = this.props;\n\n if (loading && items && !!items.length) {\n return <LoadingIcon size={size} />;\n }\n\n if (rightIcon || drawArrow) {\n return rightIcon || <ArrowDownIcon size={size} />;\n }\n\n return null;\n };\n\n private refMobileInput = (input: Nullable<Input>) => {\n this.mobileInput = input;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,8 +10,9 @@ import type { CommonProps } from '../CommonWrapper';
|
|
|
10
10
|
import type { TGetRootNode } from '../../lib/rootNode';
|
|
11
11
|
import type { ComboBoxExtendedItem } from '../../components/ComboBox';
|
|
12
12
|
import type { SizeProp } from '../../lib/types/props';
|
|
13
|
+
import type { MaskedInputOnBeforePasteValue, MaskedInputProps } from '../../components/MaskedInput';
|
|
13
14
|
import { ComboBoxRequestStatus } from './CustomComboBoxTypes';
|
|
14
|
-
interface ComboBoxViewProps<T> extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, CommonProps {
|
|
15
|
+
interface ComboBoxViewProps<T> extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, CommonProps, Partial<Pick<MaskedInputProps, 'mask' | 'maskChar' | 'formatChars'>> {
|
|
15
16
|
align?: 'left' | 'center' | 'right';
|
|
16
17
|
autoFocus?: boolean;
|
|
17
18
|
borderless?: boolean;
|
|
@@ -47,6 +48,7 @@ interface ComboBoxViewProps<T> extends Pick<AriaAttributes, 'aria-describedby' |
|
|
|
47
48
|
leftIcon?: InputIconType;
|
|
48
49
|
rightIcon?: InputIconType;
|
|
49
50
|
inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];
|
|
51
|
+
onBeforePasteInMask?: MaskedInputOnBeforePasteValue;
|
|
50
52
|
onValueChange?: (value: T) => void;
|
|
51
53
|
onClickOutside?: (e: Event) => void;
|
|
52
54
|
onFocus?: () => void;
|
|
@@ -337,6 +337,10 @@ export var CustomComboBox = responsiveLayout(_class = rootNode(_class = (_Custom
|
|
|
337
337
|
leftIcon: this.props.leftIcon,
|
|
338
338
|
rightIcon: this.props.rightIcon,
|
|
339
339
|
inputMode: this.props.inputMode,
|
|
340
|
+
mask: this.props.mask,
|
|
341
|
+
maskChar: this.props.maskChar,
|
|
342
|
+
formatChars: this.props.formatChars,
|
|
343
|
+
onBeforePasteInMask: this.props.onBeforePasteInMask,
|
|
340
344
|
onValueChange: this.handleValueChange,
|
|
341
345
|
onClickOutside: this.handleClickOutside,
|
|
342
346
|
onFocus: this.handleFocus,
|