mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-24 09:25:15 +00:00
1 line
52 KiB
JSON
1 line
52 KiB
JSON
{"ast":null,"code":"import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ownerDocument from '../utils/ownerDocument';\nimport capitalize from '../utils/capitalize';\nimport { refType } from '@material-ui/utils';\nimport Menu from '../Menu/Menu';\nimport { isFilled } from '../InputBase/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\n\nfunction areEqualValues(a, b) {\n if (_typeof(b) === 'object' && b !== null) {\n return a === b;\n }\n\n return String(a) === String(b);\n}\n\nfunction isEmpty(display) {\n return display == null || typeof display === 'string' && !display.trim();\n}\n/**\n * @ignore - internal component.\n */\n\n\nvar SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {\n var ariaLabel = props['aria-label'],\n autoFocus = props.autoFocus,\n autoWidth = props.autoWidth,\n children = props.children,\n classes = props.classes,\n className = props.className,\n defaultValue = props.defaultValue,\n disabled = props.disabled,\n displayEmpty = props.displayEmpty,\n IconComponent = props.IconComponent,\n inputRefProp = props.inputRef,\n labelId = props.labelId,\n _props$MenuProps = props.MenuProps,\n MenuProps = _props$MenuProps === void 0 ? {} : _props$MenuProps,\n multiple = props.multiple,\n name = props.name,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onClose = props.onClose,\n onFocus = props.onFocus,\n onOpen = props.onOpen,\n openProp = props.open,\n readOnly = props.readOnly,\n renderValue = props.renderValue,\n _props$SelectDisplayP = props.SelectDisplayProps,\n SelectDisplayProps = _props$SelectDisplayP === void 0 ? {} : _props$SelectDisplayP,\n tabIndexProp = props.tabIndex,\n type = props.type,\n valueProp = props.value,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"aria-label\", \"autoFocus\", \"autoWidth\", \"children\", \"classes\", \"className\", \"defaultValue\", \"disabled\", \"displayEmpty\", \"IconComponent\", \"inputRef\", \"labelId\", \"MenuProps\", \"multiple\", \"name\", \"onBlur\", \"onChange\", \"onClose\", \"onFocus\", \"onOpen\", \"open\", \"readOnly\", \"renderValue\", \"SelectDisplayProps\", \"tabIndex\", \"type\", \"value\", \"variant\"]);\n\n var _useControlled = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'Select'\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n value = _useControlled2[0],\n setValue = _useControlled2[1];\n\n var inputRef = React.useRef(null);\n\n var _React$useState = React.useState(null),\n displayNode = _React$useState[0],\n setDisplayNode = _React$useState[1];\n\n var _React$useRef = React.useRef(openProp != null),\n isOpenControlled = _React$useRef.current;\n\n var _React$useState2 = React.useState(),\n menuMinWidthState = _React$useState2[0],\n setMenuMinWidthState = _React$useState2[1];\n\n var _React$useState3 = React.useState(false),\n openState = _React$useState3[0],\n setOpenState = _React$useState3[1];\n\n var handleRef = useForkRef(ref, inputRefProp);\n React.useImperativeHandle(handleRef, function () {\n return {\n focus: function focus() {\n displayNode.focus();\n },\n node: inputRef.current,\n value: value\n };\n }, [displayNode, value]);\n React.useEffect(function () {\n if (autoFocus && displayNode) {\n displayNode.focus();\n }\n }, [autoFocus, displayNode]);\n React.useEffect(function () {\n if (displayNode) {\n var label = ownerDocument(displayNode).getElementById(labelId);\n\n if (label) {\n var handler = function handler() {\n if (getSelection().isCollapsed) {\n displayNode.focus();\n }\n };\n\n label.addEventListener('click', handler);\n return function () {\n label.removeEventListener('click', handler);\n };\n }\n }\n\n return undefined;\n }, [labelId, displayNode]);\n\n var update = function update(open, event) {\n if (open) {\n if (onOpen) {\n onOpen(event);\n }\n } else if (onClose) {\n onClose(event);\n }\n\n if (!isOpenControlled) {\n setMenuMinWidthState(autoWidth ? null : displayNode.clientWidth);\n setOpenState(open);\n }\n };\n\n var handleMouseDown = function handleMouseDown(event) {\n // Ignore everything but left-click\n if (event.button !== 0) {\n return;\n } // Hijack the default focus behavior.\n\n\n event.preventDefault();\n displayNode.focus();\n update(true, event);\n };\n\n var handleClose = function handleClose(event) {\n update(false, event);\n };\n\n var childrenArray = React.Children.toArray(children); // Support autofill.\n\n var handleChange = function handleChange(event) {\n var index = childrenArray.map(function (child) {\n return child.props.value;\n }).indexOf(event.target.value);\n\n if (index === -1) {\n return;\n }\n\n var child = childrenArray[index];\n setValue(child.props.value);\n\n if (onChange) {\n onChange(event, child);\n }\n };\n\n var handleItemClick = function handleItemClick(child) {\n return function (event) {\n if (!multiple) {\n update(false, event);\n }\n\n var newValue;\n\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n var itemIndex = value.indexOf(child.props.value);\n\n if (itemIndex === -1) {\n newValue.push(child.props.value);\n } else {\n newValue.splice(itemIndex, 1);\n }\n } else {\n newValue = child.props.value;\n }\n\n if (child.props.onClick) {\n child.props.onClick(event);\n }\n\n if (value === newValue) {\n return;\n }\n\n setValue(newValue);\n\n if (onChange) {\n event.persist(); // Preact support, target is read only property on a native event.\n\n Object.defineProperty(event, 'target', {\n writable: true,\n value: {\n value: newValue,\n name: name\n }\n });\n onChange(event, child);\n }\n };\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (!readOnly) {\n var validKeys = [' ', 'ArrowUp', 'ArrowDown', // The native select doesn't respond to enter on MacOS, but it's recommended by\n // https://www.w3.org/TR/wai-aria-practices/examples/listbox/listbox-collapsible.html\n 'Enter'];\n\n if (validKeys.indexOf(event.key) !== -1) {\n event.preventDefault();\n update(true, event);\n }\n }\n };\n\n var open = displayNode !== null && (isOpenControlled ? openProp : openState);\n\n var handleBlur = function handleBlur(event) {\n // if open event.stopImmediatePropagation\n if (!open && onBlur) {\n event.persist(); // Preact support, target is read only property on a native event.\n\n Object.defineProperty(event, 'target', {\n writable: true,\n value: {\n value: value,\n name: name\n }\n });\n onBlur(event);\n }\n };\n\n delete other['aria-invalid'];\n var display;\n var displaySingle;\n var displayMultiple = [];\n var computeDisplay = false;\n var foundMatch = false; // No need to display any value if the field is empty.\n\n if (isFilled({\n value: value\n }) || displayEmpty) {\n if (renderValue) {\n display = renderValue(value);\n } else {\n computeDisplay = true;\n }\n }\n\n var items = childrenArray.map(function (child) {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Select component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n var selected;\n\n if (multiple) {\n if (!Array.isArray(value)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The `value` prop must be an array when using the `Select` component with `multiple`.\" : _formatMuiErrorMessage(2));\n }\n\n selected = value.some(function (v) {\n return areEqualValues(v, child.props.value);\n });\n\n if (selected && computeDisplay) {\n displayMultiple.push(child.props.children);\n }\n } else {\n selected = areEqualValues(value, child.props.value);\n\n if (selected && computeDisplay) {\n displaySingle = child.props.children;\n }\n }\n\n if (selected) {\n foundMatch = true;\n }\n\n return /*#__PURE__*/React.cloneElement(child, {\n 'aria-selected': selected ? 'true' : undefined,\n onClick: handleItemClick(child),\n onKeyUp: function onKeyUp(event) {\n if (event.key === ' ') {\n // otherwise our MenuItems dispatches a click event\n // it's not behavior of the native <option> and causes\n // the select to close immediately since we open on space keydown\n event.preventDefault();\n }\n\n if (child.props.onKeyUp) {\n child.props.onKeyUp(event);\n }\n },\n role: 'option',\n selected: selected,\n value: undefined,\n // The value is most likely not a valid HTML attribute.\n 'data-value': child.props.value // Instead, we provide it as a data attribute.\n\n });\n });\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(function () {\n if (!foundMatch && !multiple && value !== '') {\n var values = childrenArray.map(function (child) {\n return child.props.value;\n });\n console.warn([\"Material-UI: You have provided an out-of-range value `\".concat(value, \"` for the select \").concat(name ? \"(name=\\\"\".concat(name, \"\\\") \") : '', \"component.\"), \"Consider providing a value that matches one of the available options or ''.\", \"The available values are \".concat(values.filter(function (x) {\n return x != null;\n }).map(function (x) {\n return \"`\".concat(x, \"`\");\n }).join(', ') || '\"\"', \".\")].join('\\n'));\n }\n }, [foundMatch, childrenArray, multiple, name, value]);\n }\n\n if (computeDisplay) {\n display = multiple ? displayMultiple.join(', ') : displaySingle;\n } // Avoid performing a layout computation in the render method.\n\n\n var menuMinWidth = menuMinWidthState;\n\n if (!autoWidth && isOpenControlled && displayNode) {\n menuMinWidth = displayNode.clientWidth;\n }\n\n var tabIndex;\n\n if (typeof tabIndexProp !== 'undefined') {\n tabIndex = tabIndexProp;\n } else {\n tabIndex = disabled ? null : 0;\n }\n\n var buttonId = SelectDisplayProps.id || (name ? \"mui-component-select-\".concat(name) : undefined);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, // TODO v5: merge root and select\n classes.select, classes.selectMenu, classes[variant], className, disabled && classes.disabled),\n ref: setDisplayNode,\n tabIndex: tabIndex,\n role: \"button\",\n \"aria-disabled\": disabled ? 'true' : undefined,\n \"aria-expanded\": open ? 'true' : undefined,\n \"aria-haspopup\": \"listbox\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": [labelId, buttonId].filter(Boolean).join(' ') || undefined,\n onKeyDown: handleKeyDown,\n onMouseDown: disabled || readOnly ? null : handleMouseDown,\n onBlur: handleBlur,\n onFocus: onFocus\n }, SelectDisplayProps, {\n // The id is required for proper a11y\n id: buttonId\n }), isEmpty(display) ?\n /*#__PURE__*/\n // eslint-disable-next-line react/no-danger\n React.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: '​'\n }\n }) : display), /*#__PURE__*/React.createElement(\"input\", _extends({\n value: Array.isArray(value) ? value.join(',') : value,\n name: name,\n ref: inputRef,\n \"aria-hidden\": true,\n onChange: handleChange,\n tabIndex: -1,\n className: classes.nativeInput,\n autoFocus: autoFocus\n }, other)), /*#__PURE__*/React.createElement(IconComponent, {\n className: clsx(classes.icon, classes[\"icon\".concat(capitalize(variant))], open && classes.iconOpen, disabled && classes.disabled)\n }), /*#__PURE__*/React.createElement(Menu, _extends({\n id: \"menu-\".concat(name || ''),\n anchorEl: displayNode,\n open: open,\n onClose: handleClose\n }, MenuProps, {\n MenuListProps: _extends({\n 'aria-labelledby': labelId,\n role: 'listbox',\n disableListWrap: true\n }, MenuProps.MenuListProps),\n PaperProps: _extends({}, MenuProps.PaperProps, {\n style: _extends({\n minWidth: menuMinWidth\n }, MenuProps.PaperProps != null ? MenuProps.PaperProps.style : null)\n })\n }), items));\n});\nprocess.env.NODE_ENV !== \"production\" ? SelectInput.propTypes = {\n /**\n * @ignore\n */\n 'aria-label': PropTypes.string,\n\n /**\n * @ignore\n */\n autoFocus: PropTypes.bool,\n\n /**\n * If `true`, the width of the popover will automatically be set according to the items inside the\n * menu, otherwise it will be at least the width of the select input.\n */\n autoWidth: PropTypes.bool,\n\n /**\n * The option elements to populate the select with.\n * Can be some `<MenuItem>` elements.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * The CSS class name of the select element.\n */\n className: PropTypes.string,\n\n /**\n * The default element value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n\n /**\n * If `true`, the select will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the selected item is displayed even if its value is empty.\n */\n displayEmpty: PropTypes.bool,\n\n /**\n * The icon that displays the arrow.\n */\n IconComponent: PropTypes.elementType.isRequired,\n\n /**\n * Imperative handle implementing `{ value: T, node: HTMLElement, focus(): void }`\n * Equivalent to `ref`\n */\n inputRef: refType,\n\n /**\n * The ID of an element that acts as an additional label. The Select will\n * be labelled by the additional label and the selected value.\n */\n labelId: PropTypes.string,\n\n /**\n * Props applied to the [`Menu`](/api/menu/) element.\n */\n MenuProps: PropTypes.object,\n\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n */\n multiple: PropTypes.bool,\n\n /**\n * Name attribute of the `select` or hidden `input` element.\n */\n name: PropTypes.string,\n\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * Callback function fired when a menu item is selected.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (any).\n * @param {object} [child] The react element that was selected.\n */\n onChange: PropTypes.func,\n\n /**\n * Callback fired when the component requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {object} event The event source of the callback.\n */\n onClose: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * Callback fired when the component requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {object} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n\n /**\n * Control `select` open state.\n */\n open: PropTypes.bool,\n\n /**\n * @ignore\n */\n readOnly: PropTypes.bool,\n\n /**\n * Render the selected value.\n *\n * @param {any} value The `value` provided to the component.\n * @returns {ReactNode}\n */\n renderValue: PropTypes.func,\n\n /**\n * Props applied to the clickable div element.\n */\n SelectDisplayProps: PropTypes.object,\n\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * @ignore\n */\n type: PropTypes.any,\n\n /**\n * The input value.\n */\n value: PropTypes.any,\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default SelectInput;","map":{"version":3,"sources":["/app/node_modules/@material-ui/core/esm/Select/SelectInput.js"],"names":["_extends","_slicedToArray","_objectWithoutProperties","_typeof","formatMuiErrorMessage","_formatMuiErrorMessage","React","isFragment","PropTypes","clsx","ownerDocument","capitalize","refType","Menu","isFilled","useForkRef","useControlled","areEqualValues","a","b","String","isEmpty","display","trim","SelectInput","forwardRef","props","ref","ariaLabel","autoFocus","autoWidth","children","classes","className","defaultValue","disabled","displayEmpty","IconComponent","inputRefProp","inputRef","labelId","_props$MenuProps","MenuProps","multiple","name","onBlur","onChange","onClose","onFocus","onOpen","openProp","open","readOnly","renderValue","_props$SelectDisplayP","SelectDisplayProps","tabIndexProp","tabIndex","type","valueProp","value","_props$variant","variant","other","_useControlled","controlled","default","_useControlled2","setValue","useRef","_React$useState","useState","displayNode","setDisplayNode","_React$useRef","isOpenControlled","current","_React$useState2","menuMinWidthState","setMenuMinWidthState","_React$useState3","openState","setOpenState","handleRef","useImperativeHandle","focus","node","useEffect","label","getElementById","handler","getSelection","isCollapsed","addEventListener","removeEventListener","undefined","update","event","clientWidth","handleMouseDown","button","preventDefault","handleClose","childrenArray","Children","toArray","handleChange","index","map","child","indexOf","target","handleItemClick","newValue","Array","isArray","slice","itemIndex","push","splice","onClick","persist","Object","defineProperty","writable","handleKeyDown","validKeys","key","handleBlur","displaySingle","displayMultiple","computeDisplay","foundMatch","items","isValidElement","process","env","NODE_ENV","console","error","join","selected","Error","some","v","cloneElement","onKeyUp","role","values","warn","concat","filter","x","menuMinWidth","buttonId","id","createElement","Fragment","root","select","selectMenu","Boolean","onKeyDown","onMouseDown","dangerouslySetInnerHTML","__html","nativeInput","icon","iconOpen","anchorEl","MenuListProps","disableListWrap","PaperProps","style","minWidth","propTypes","string","bool","object","isRequired","any","elementType","func","oneOfType","number","oneOf"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,oCAArB;AACA,OAAOC,cAAP,MAA2B,0CAA3B;AACA,OAAOC,wBAAP,MAAqC,oDAArC;AACA,OAAOC,OAAP,MAAoB,mCAApB;AACA,SAASC,qBAAqB,IAAIC,sBAAlC,QAAgE,oBAAhE;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,QAA2B,UAA3B;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,IAAP,MAAiB,MAAjB;AACA,OAAOC,aAAP,MAA0B,wBAA1B;AACA,OAAOC,UAAP,MAAuB,qBAAvB;AACA,SAASC,OAAT,QAAwB,oBAAxB;AACA,OAAOC,IAAP,MAAiB,cAAjB;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,OAAOC,UAAP,MAAuB,qBAAvB;AACA,OAAOC,aAAP,MAA0B,wBAA1B;;AAEA,SAASC,cAAT,CAAwBC,CAAxB,EAA2BC,CAA3B,EAA8B;AAC5B,MAAIhB,OAAO,CAACgB,CAAD,CAAP,KAAe,QAAf,IAA2BA,CAAC,KAAK,IAArC,EAA2C;AACzC,WAAOD,CAAC,KAAKC,CAAb;AACD;;AAED,SAAOC,MAAM,CAACF,CAAD,CAAN,KAAcE,MAAM,CAACD,CAAD,CAA3B;AACD;;AAED,SAASE,OAAT,CAAiBC,OAAjB,EAA0B;AACxB,SAAOA,OAAO,IAAI,IAAX,IAAmB,OAAOA,OAAP,KAAmB,QAAnB,IAA+B,CAACA,OAAO,CAACC,IAAR,EAA1D;AACD;AACD;AACA;AACA;;;AAGA,IAAIC,WAAW,GAAG,aAAalB,KAAK,CAACmB,UAAN,CAAiB,SAASD,WAAT,CAAqBE,KAArB,EAA4BC,GAA5B,EAAiC;AAC/E,MAAIC,SAAS,GAAGF,KAAK,CAAC,YAAD,CAArB;AAAA,MACIG,SAAS,GAAGH,KAAK,CAACG,SADtB;AAAA,MAEIC,SAAS,GAAGJ,KAAK,CAACI,SAFtB;AAAA,MAGIC,QAAQ,GAAGL,KAAK,CAACK,QAHrB;AAAA,MAIIC,OAAO,GAAGN,KAAK,CAACM,OAJpB;AAAA,MAKIC,SAAS,GAAGP,KAAK,CAACO,SALtB;AAAA,MAMIC,YAAY,GAAGR,KAAK,CAACQ,YANzB;AAAA,MAOIC,QAAQ,GAAGT,KAAK,CAACS,QAPrB;AAAA,MAQIC,YAAY,GAAGV,KAAK,CAACU,YARzB;AAAA,MASIC,aAAa,GAAGX,KAAK,CAACW,aAT1B;AAAA,MAUIC,YAAY,GAAGZ,KAAK,CAACa,QAVzB;AAAA,MAWIC,OAAO,GAAGd,KAAK,CAACc,OAXpB;AAAA,MAYIC,gBAAgB,GAAGf,KAAK,CAACgB,SAZ7B;AAAA,MAaIA,SAAS,GAAGD,gBAAgB,KAAK,KAAK,CAA1B,GAA8B,EAA9B,GAAmCA,gBAbnD;AAAA,MAcIE,QAAQ,GAAGjB,KAAK,CAACiB,QAdrB;AAAA,MAeIC,IAAI,GAAGlB,KAAK,CAACkB,IAfjB;AAAA,MAgBIC,MAAM,GAAGnB,KAAK,CAACmB,MAhBnB;AAAA,MAiBIC,QAAQ,GAAGpB,KAAK,CAACoB,QAjBrB;AAAA,MAkBIC,OAAO,GAAGrB,KAAK,CAACqB,OAlBpB;AAAA,MAmBIC,OAAO,GAAGtB,KAAK,CAACsB,OAnBpB;AAAA,MAoBIC,MAAM,GAAGvB,KAAK,CAACuB,MApBnB;AAAA,MAqBIC,QAAQ,GAAGxB,KAAK,CAACyB,IArBrB;AAAA,MAsBIC,QAAQ,GAAG1B,KAAK,CAAC0B,QAtBrB;AAAA,MAuBIC,WAAW,GAAG3B,KAAK,CAAC2B,WAvBxB;AAAA,MAwBIC,qBAAqB,GAAG5B,KAAK,CAAC6B,kBAxBlC;AAAA,MAyBIA,kBAAkB,GAAGD,qBAAqB,KAAK,KAAK,CAA/B,GAAmC,EAAnC,GAAwCA,qBAzBjE;AAAA,MA0BIE,YAAY,GAAG9B,KAAK,CAAC+B,QA1BzB;AAAA,MA2BIC,IAAI,GAAGhC,KAAK,CAACgC,IA3BjB;AAAA,MA4BIC,SAAS,GAAGjC,KAAK,CAACkC,KA5BtB;AAAA,MA6BIC,cAAc,GAAGnC,KAAK,CAACoC,OA7B3B;AAAA,MA8BIA,OAAO,GAAGD,cAAc,KAAK,KAAK,CAAxB,GAA4B,UAA5B,GAAyCA,cA9BvD;AAAA,MA+BIE,KAAK,GAAG7D,wBAAwB,CAACwB,KAAD,EAAQ,CAAC,YAAD,EAAe,WAAf,EAA4B,WAA5B,EAAyC,UAAzC,EAAqD,SAArD,EAAgE,WAAhE,EAA6E,cAA7E,EAA6F,UAA7F,EAAyG,cAAzG,EAAyH,eAAzH,EAA0I,UAA1I,EAAsJ,SAAtJ,EAAiK,WAAjK,EAA8K,UAA9K,EAA0L,MAA1L,EAAkM,QAAlM,EAA4M,UAA5M,EAAwN,SAAxN,EAAmO,SAAnO,EAA8O,QAA9O,EAAwP,MAAxP,EAAgQ,UAAhQ,EAA4Q,aAA5Q,EAA2R,oBAA3R,EAAiT,UAAjT,EAA6T,MAA7T,EAAqU,OAArU,EAA8U,SAA9U,CAAR,CA/BpC;;AAiCA,MAAIsC,cAAc,GAAGhD,aAAa,CAAC;AACjCiD,IAAAA,UAAU,EAAEN,SADqB;AAEjCO,IAAAA,OAAO,EAAEhC,YAFwB;AAGjCU,IAAAA,IAAI,EAAE;AAH2B,GAAD,CAAlC;AAAA,MAKIuB,eAAe,GAAGlE,cAAc,CAAC+D,cAAD,EAAiB,CAAjB,CALpC;AAAA,MAMIJ,KAAK,GAAGO,eAAe,CAAC,CAAD,CAN3B;AAAA,MAOIC,QAAQ,GAAGD,eAAe,CAAC,CAAD,CAP9B;;AASA,MAAI5B,QAAQ,GAAGjC,KAAK,CAAC+D,MAAN,CAAa,IAAb,CAAf;;AAEA,MAAIC,eAAe,GAAGhE,KAAK,CAACiE,QAAN,CAAe,IAAf,CAAtB;AAAA,MACIC,WAAW,GAAGF,eAAe,CAAC,CAAD,CADjC;AAAA,MAEIG,cAAc,GAAGH,eAAe,CAAC,CAAD,CAFpC;;AAIA,MAAII,aAAa,GAAGpE,KAAK,CAAC+D,MAAN,CAAanB,QAAQ,IAAI,IAAzB,CAApB;AAAA,MACIyB,gBAAgB,GAAGD,aAAa,CAACE,OADrC;;AAGA,MAAIC,gBAAgB,GAAGvE,KAAK,CAACiE,QAAN,EAAvB;AAAA,MACIO,iBAAiB,GAAGD,gBAAgB,CAAC,CAAD,CADxC;AAAA,MAEIE,oBAAoB,GAAGF,gBAAgB,CAAC,CAAD,CAF3C;;AAIA,MAAIG,gBAAgB,GAAG1E,KAAK,CAACiE,QAAN,CAAe,KAAf,CAAvB;AAAA,MACIU,SAAS,GAAGD,gBAAgB,CAAC,CAAD,CADhC;AAAA,MAEIE,YAAY,GAAGF,gBAAgB,CAAC,CAAD,CAFnC;;AAIA,MAAIG,SAAS,GAAGpE,UAAU,CAACY,GAAD,EAAMW,YAAN,CAA1B;AACAhC,EAAAA,KAAK,CAAC8E,mBAAN,CAA0BD,SAA1B,EAAqC,YAAY;AAC/C,WAAO;AACLE,MAAAA,KAAK,EAAE,SAASA,KAAT,GAAiB;AACtBb,QAAAA,WAAW,CAACa,KAAZ;AACD,OAHI;AAILC,MAAAA,IAAI,EAAE/C,QAAQ,CAACqC,OAJV;AAKLhB,MAAAA,KAAK,EAAEA;AALF,KAAP;AAOD,GARD,EAQG,CAACY,WAAD,EAAcZ,KAAd,CARH;AASAtD,EAAAA,KAAK,CAACiF,SAAN,CAAgB,YAAY;AAC1B,QAAI1D,SAAS,IAAI2C,WAAjB,EAA8B;AAC5BA,MAAAA,WAAW,CAACa,KAAZ;AACD;AACF,GAJD,EAIG,CAACxD,SAAD,EAAY2C,WAAZ,CAJH;AAKAlE,EAAAA,KAAK,CAACiF,SAAN,CAAgB,YAAY;AAC1B,QAAIf,WAAJ,EAAiB;AACf,UAAIgB,KAAK,GAAG9E,aAAa,CAAC8D,WAAD,CAAb,CAA2BiB,cAA3B,CAA0CjD,OAA1C,CAAZ;;AAEA,UAAIgD,KAAJ,EAAW;AACT,YAAIE,OAAO,GAAG,SAASA,OAAT,GAAmB;AAC/B,cAAIC,YAAY,GAAGC,WAAnB,EAAgC;AAC9BpB,YAAAA,WAAW,CAACa,KAAZ;AACD;AACF,SAJD;;AAMAG,QAAAA,KAAK,CAACK,gBAAN,CAAuB,OAAvB,EAAgCH,OAAhC;AACA,eAAO,YAAY;AACjBF,UAAAA,KAAK,CAACM,mBAAN,CAA0B,OAA1B,EAAmCJ,OAAnC;AACD,SAFD;AAGD;AACF;;AAED,WAAOK,SAAP;AACD,GAnBD,EAmBG,CAACvD,OAAD,EAAUgC,WAAV,CAnBH;;AAqBA,MAAIwB,MAAM,GAAG,SAASA,MAAT,CAAgB7C,IAAhB,EAAsB8C,KAAtB,EAA6B;AACxC,QAAI9C,IAAJ,EAAU;AACR,UAAIF,MAAJ,EAAY;AACVA,QAAAA,MAAM,CAACgD,KAAD,CAAN;AACD;AACF,KAJD,MAIO,IAAIlD,OAAJ,EAAa;AAClBA,MAAAA,OAAO,CAACkD,KAAD,CAAP;AACD;;AAED,QAAI,CAACtB,gBAAL,EAAuB;AACrBI,MAAAA,oBAAoB,CAACjD,SAAS,GAAG,IAAH,GAAU0C,WAAW,CAAC0B,WAAhC,CAApB;AACAhB,MAAAA,YAAY,CAAC/B,IAAD,CAAZ;AACD;AACF,GAbD;;AAeA,MAAIgD,eAAe,GAAG,SAASA,eAAT,CAAyBF,KAAzB,EAAgC;AACpD;AACA,QAAIA,KAAK,CAACG,MAAN,KAAiB,CAArB,EAAwB;AACtB;AACD,KAJmD,CAIlD;;;AAGFH,IAAAA,KAAK,CAACI,cAAN;AACA7B,IAAAA,WAAW,CAACa,KAAZ;AACAW,IAAAA,MAAM,CAAC,IAAD,EAAOC,KAAP,CAAN;AACD,GAVD;;AAYA,MAAIK,WAAW,GAAG,SAASA,WAAT,CAAqBL,KAArB,EAA4B;AAC5CD,IAAAA,MAAM,CAAC,KAAD,EAAQC,KAAR,CAAN;AACD,GAFD;;AAIA,MAAIM,aAAa,GAAGjG,KAAK,CAACkG,QAAN,CAAeC,OAAf,CAAuB1E,QAAvB,CAApB,CA/H+E,CA+HzB;;AAEtD,MAAI2E,YAAY,GAAG,SAASA,YAAT,CAAsBT,KAAtB,EAA6B;AAC9C,QAAIU,KAAK,GAAGJ,aAAa,CAACK,GAAd,CAAkB,UAAUC,KAAV,EAAiB;AAC7C,aAAOA,KAAK,CAACnF,KAAN,CAAYkC,KAAnB;AACD,KAFW,EAETkD,OAFS,CAEDb,KAAK,CAACc,MAAN,CAAanD,KAFZ,CAAZ;;AAIA,QAAI+C,KAAK,KAAK,CAAC,CAAf,EAAkB;AAChB;AACD;;AAED,QAAIE,KAAK,GAAGN,aAAa,CAACI,KAAD,CAAzB;AACAvC,IAAAA,QAAQ,CAACyC,KAAK,CAACnF,KAAN,CAAYkC,KAAb,CAAR;;AAEA,QAAId,QAAJ,EAAc;AACZA,MAAAA,QAAQ,CAACmD,KAAD,EAAQY,KAAR,CAAR;AACD;AACF,GAfD;;AAiBA,MAAIG,eAAe,GAAG,SAASA,eAAT,CAAyBH,KAAzB,EAAgC;AACpD,WAAO,UAAUZ,KAAV,EAAiB;AACtB,UAAI,CAACtD,QAAL,EAAe;AACbqD,QAAAA,MAAM,CAAC,KAAD,EAAQC,KAAR,CAAN;AACD;;AAED,UAAIgB,QAAJ;;AAEA,UAAItE,QAAJ,EAAc;AACZsE,QAAAA,QAAQ,GAAGC,KAAK,CAACC,OAAN,CAAcvD,KAAd,IAAuBA,KAAK,CAACwD,KAAN,EAAvB,GAAuC,EAAlD;AACA,YAAIC,SAAS,GAAGzD,KAAK,CAACkD,OAAN,CAAcD,KAAK,CAACnF,KAAN,CAAYkC,KAA1B,CAAhB;;AAEA,YAAIyD,SAAS,KAAK,CAAC,CAAnB,EAAsB;AACpBJ,UAAAA,QAAQ,CAACK,IAAT,CAAcT,KAAK,CAACnF,KAAN,CAAYkC,KAA1B;AACD,SAFD,MAEO;AACLqD,UAAAA,QAAQ,CAACM,MAAT,CAAgBF,SAAhB,EAA2B,CAA3B;AACD;AACF,OATD,MASO;AACLJ,QAAAA,QAAQ,GAAGJ,KAAK,CAACnF,KAAN,CAAYkC,KAAvB;AACD;;AAED,UAAIiD,KAAK,CAACnF,KAAN,CAAY8F,OAAhB,EAAyB;AACvBX,QAAAA,KAAK,CAACnF,KAAN,CAAY8F,OAAZ,CAAoBvB,KAApB;AACD;;AAED,UAAIrC,KAAK,KAAKqD,QAAd,EAAwB;AACtB;AACD;;AAED7C,MAAAA,QAAQ,CAAC6C,QAAD,CAAR;;AAEA,UAAInE,QAAJ,EAAc;AACZmD,QAAAA,KAAK,CAACwB,OAAN,GADY,CACK;;AAEjBC,QAAAA,MAAM,CAACC,cAAP,CAAsB1B,KAAtB,EAA6B,QAA7B,EAAuC;AACrC2B,UAAAA,QAAQ,EAAE,IAD2B;AAErChE,UAAAA,KAAK,EAAE;AACLA,YAAAA,KAAK,EAAEqD,QADF;AAELrE,YAAAA,IAAI,EAAEA;AAFD;AAF8B,SAAvC;AAOAE,QAAAA,QAAQ,CAACmD,KAAD,EAAQY,KAAR,CAAR;AACD;AACF,KA1CD;AA2CD,GA5CD;;AA8CA,MAAIgB,aAAa,GAAG,SAASA,aAAT,CAAuB5B,KAAvB,EAA8B;AAChD,QAAI,CAAC7C,QAAL,EAAe;AACb,UAAI0E,SAAS,GAAG,CAAC,GAAD,EAAM,SAAN,EAAiB,WAAjB,EAA8B;AAC9C;AACA,aAFgB,CAAhB;;AAIA,UAAIA,SAAS,CAAChB,OAAV,CAAkBb,KAAK,CAAC8B,GAAxB,MAAiC,CAAC,CAAtC,EAAyC;AACvC9B,QAAAA,KAAK,CAACI,cAAN;AACAL,QAAAA,MAAM,CAAC,IAAD,EAAOC,KAAP,CAAN;AACD;AACF;AACF,GAXD;;AAaA,MAAI9C,IAAI,GAAGqB,WAAW,KAAK,IAAhB,KAAyBG,gBAAgB,GAAGzB,QAAH,GAAc+B,SAAvD,CAAX;;AAEA,MAAI+C,UAAU,GAAG,SAASA,UAAT,CAAoB/B,KAApB,EAA2B;AAC1C;AACA,QAAI,CAAC9C,IAAD,IAASN,MAAb,EAAqB;AACnBoD,MAAAA,KAAK,CAACwB,OAAN,GADmB,CACF;;AAEjBC,MAAAA,MAAM,CAACC,cAAP,CAAsB1B,KAAtB,EAA6B,QAA7B,EAAuC;AACrC2B,QAAAA,QAAQ,EAAE,IAD2B;AAErChE,QAAAA,KAAK,EAAE;AACLA,UAAAA,KAAK,EAAEA,KADF;AAELhB,UAAAA,IAAI,EAAEA;AAFD;AAF8B,OAAvC;AAOAC,MAAAA,MAAM,CAACoD,KAAD,CAAN;AACD;AACF,GAdD;;AAgBA,SAAOlC,KAAK,CAAC,cAAD,CAAZ;AACA,MAAIzC,OAAJ;AACA,MAAI2G,aAAJ;AACA,MAAIC,eAAe,GAAG,EAAtB;AACA,MAAIC,cAAc,GAAG,KAArB;AACA,MAAIC,UAAU,GAAG,KAAjB,CApO+E,CAoOvD;;AAExB,MAAItH,QAAQ,CAAC;AACX8C,IAAAA,KAAK,EAAEA;AADI,GAAD,CAAR,IAEExB,YAFN,EAEoB;AAClB,QAAIiB,WAAJ,EAAiB;AACf/B,MAAAA,OAAO,GAAG+B,WAAW,CAACO,KAAD,CAArB;AACD,KAFD,MAEO;AACLuE,MAAAA,cAAc,GAAG,IAAjB;AACD;AACF;;AAED,MAAIE,KAAK,GAAG9B,aAAa,CAACK,GAAd,CAAkB,UAAUC,KAAV,EAAiB;AAC7C,QAAI,EAAE,aAAavG,KAAK,CAACgI,cAAN,CAAqBzB,KAArB,CAAnB,EAAgD;AAC9C,aAAO,IAAP;AACD;;AAED,QAAI0B,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzC,UAAIlI,UAAU,CAACsG,KAAD,CAAd,EAAuB;AACrB6B,QAAAA,OAAO,CAACC,KAAR,CAAc,CAAC,yEAAD,EAA4E,sCAA5E,EAAoHC,IAApH,CAAyH,IAAzH,CAAd;AACD;AACF;;AAED,QAAIC,QAAJ;;AAEA,QAAIlG,QAAJ,EAAc;AACZ,UAAI,CAACuE,KAAK,CAACC,OAAN,CAAcvD,KAAd,CAAL,EAA2B;AACzB,cAAM,IAAIkF,KAAJ,CAAUP,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwC,mGAAxC,GAA8IpI,sBAAsB,CAAC,CAAD,CAA9K,CAAN;AACD;;AAEDwI,MAAAA,QAAQ,GAAGjF,KAAK,CAACmF,IAAN,CAAW,UAAUC,CAAV,EAAa;AACjC,eAAO/H,cAAc,CAAC+H,CAAD,EAAInC,KAAK,CAACnF,KAAN,CAAYkC,KAAhB,CAArB;AACD,OAFU,CAAX;;AAIA,UAAIiF,QAAQ,IAAIV,cAAhB,EAAgC;AAC9BD,QAAAA,eAAe,CAACZ,IAAhB,CAAqBT,KAAK,CAACnF,KAAN,CAAYK,QAAjC;AACD;AACF,KAZD,MAYO;AACL8G,MAAAA,QAAQ,GAAG5H,cAAc,CAAC2C,KAAD,EAAQiD,KAAK,CAACnF,KAAN,CAAYkC,KAApB,CAAzB;;AAEA,UAAIiF,QAAQ,IAAIV,cAAhB,EAAgC;AAC9BF,QAAAA,aAAa,GAAGpB,KAAK,CAACnF,KAAN,CAAYK,QAA5B;AACD;AACF;;AAED,QAAI8G,QAAJ,EAAc;AACZT,MAAAA,UAAU,GAAG,IAAb;AACD;;AAED,WAAO,aAAa9H,KAAK,CAAC2I,YAAN,CAAmBpC,KAAnB,EAA0B;AAC5C,uBAAiBgC,QAAQ,GAAG,MAAH,GAAY9C,SADO;AAE5CyB,MAAAA,OAAO,EAAER,eAAe,CAACH,KAAD,CAFoB;AAG5CqC,MAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBjD,KAAjB,EAAwB;AAC/B,YAAIA,KAAK,CAAC8B,GAAN,KAAc,GAAlB,EAAuB;AACrB;AACA;AACA;AACA9B,UAAAA,KAAK,CAACI,cAAN;AACD;;AAED,YAAIQ,KAAK,CAACnF,KAAN,CAAYwH,OAAhB,EAAyB;AACvBrC,UAAAA,KAAK,CAACnF,KAAN,CAAYwH,OAAZ,CAAoBjD,KAApB;AACD;AACF,OAd2C;AAe5CkD,MAAAA,IAAI,EAAE,QAfsC;AAgB5CN,MAAAA,QAAQ,EAAEA,QAhBkC;AAiB5CjF,MAAAA,KAAK,EAAEmC,SAjBqC;AAkB5C;AACA,oBAAcc,KAAK,CAACnF,KAAN,CAAYkC,KAnBkB,CAmBZ;;AAnBY,KAA1B,CAApB;AAsBD,GA3DW,CAAZ;;AA6DA,MAAI2E,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzC;AACAnI,IAAAA,KAAK,CAACiF,SAAN,CAAgB,YAAY;AAC1B,UAAI,CAAC6C,UAAD,IAAe,CAACzF,QAAhB,IAA4BiB,KAAK,KAAK,EAA1C,EAA8C;AAC5C,YAAIwF,MAAM,GAAG7C,aAAa,CAACK,GAAd,CAAkB,UAAUC,KAAV,EAAiB;AAC9C,iBAAOA,KAAK,CAACnF,KAAN,CAAYkC,KAAnB;AACD,SAFY,CAAb;AAGA8E,QAAAA,OAAO,CAACW,IAAR,CAAa,CAAC,yDAAyDC,MAAzD,CAAgE1F,KAAhE,EAAuE,mBAAvE,EAA4F0F,MAA5F,CAAmG1G,IAAI,GAAG,WAAW0G,MAAX,CAAkB1G,IAAlB,EAAwB,MAAxB,CAAH,GAAqC,EAA5I,EAAgJ,YAAhJ,CAAD,EAAgK,6EAAhK,EAA+O,4BAA4B0G,MAA5B,CAAmCF,MAAM,CAACG,MAAP,CAAc,UAAUC,CAAV,EAAa;AACxT,iBAAOA,CAAC,IAAI,IAAZ;AACD,SAF8R,EAE5R5C,GAF4R,CAExR,UAAU4C,CAAV,EAAa;AAClB,iBAAO,IAAIF,MAAJ,CAAWE,CAAX,EAAc,GAAd,CAAP;AACD,SAJ8R,EAI5RZ,IAJ4R,CAIvR,IAJuR,KAI9Q,IAJ2O,EAIrO,GAJqO,CAA/O,EAIgBA,IAJhB,CAIqB,IAJrB,CAAb;AAKD;AACF,KAXD,EAWG,CAACR,UAAD,EAAa7B,aAAb,EAA4B5D,QAA5B,EAAsCC,IAAtC,EAA4CgB,KAA5C,CAXH;AAYD;;AAED,MAAIuE,cAAJ,EAAoB;AAClB7G,IAAAA,OAAO,GAAGqB,QAAQ,GAAGuF,eAAe,CAACU,IAAhB,CAAqB,IAArB,CAAH,GAAgCX,aAAlD;AACD,GA/T8E,CA+T7E;;;AAGF,MAAIwB,YAAY,GAAG3E,iBAAnB;;AAEA,MAAI,CAAChD,SAAD,IAAc6C,gBAAd,IAAkCH,WAAtC,EAAmD;AACjDiF,IAAAA,YAAY,GAAGjF,WAAW,CAAC0B,WAA3B;AACD;;AAED,MAAIzC,QAAJ;;AAEA,MAAI,OAAOD,YAAP,KAAwB,WAA5B,EAAyC;AACvCC,IAAAA,QAAQ,GAAGD,YAAX;AACD,GAFD,MAEO;AACLC,IAAAA,QAAQ,GAAGtB,QAAQ,GAAG,IAAH,GAAU,CAA7B;AACD;;AAED,MAAIuH,QAAQ,GAAGnG,kBAAkB,CAACoG,EAAnB,KAA0B/G,IAAI,GAAG,wBAAwB0G,MAAxB,CAA+B1G,IAA/B,CAAH,GAA0CmD,SAAxE,CAAf;AACA,SAAO,aAAazF,KAAK,CAACsJ,aAAN,CAAoBtJ,KAAK,CAACuJ,QAA1B,EAAoC,IAApC,EAA0C,aAAavJ,KAAK,CAACsJ,aAAN,CAAoB,KAApB,EAA2B5J,QAAQ,CAAC;AAC7GiC,IAAAA,SAAS,EAAExB,IAAI,CAACuB,OAAO,CAAC8H,IAAT,EAAe;AAC9B9H,IAAAA,OAAO,CAAC+H,MADO,EACC/H,OAAO,CAACgI,UADT,EACqBhI,OAAO,CAAC8B,OAAD,CAD5B,EACuC7B,SADvC,EACkDE,QAAQ,IAAIH,OAAO,CAACG,QADtE,CAD8F;AAG7GR,IAAAA,GAAG,EAAE8C,cAHwG;AAI7GhB,IAAAA,QAAQ,EAAEA,QAJmG;AAK7G0F,IAAAA,IAAI,EAAE,QALuG;AAM7G,qBAAiBhH,QAAQ,GAAG,MAAH,GAAY4D,SANwE;AAO7G,qBAAiB5C,IAAI,GAAG,MAAH,GAAY4C,SAP4E;AAQ7G,qBAAiB,SAR4F;AAS7G,kBAAcnE,SAT+F;AAU7G,uBAAmB,CAACY,OAAD,EAAUkH,QAAV,EAAoBH,MAApB,CAA2BU,OAA3B,EAAoCrB,IAApC,CAAyC,GAAzC,KAAiD7C,SAVyC;AAW7GmE,IAAAA,SAAS,EAAErC,aAXkG;AAY7GsC,IAAAA,WAAW,EAAEhI,QAAQ,IAAIiB,QAAZ,GAAuB,IAAvB,GAA8B+C,eAZkE;AAa7GtD,IAAAA,MAAM,EAAEmF,UAbqG;AAc7GhF,IAAAA,OAAO,EAAEA;AAdoG,GAAD,EAe3GO,kBAf2G,EAevF;AACrB;AACAoG,IAAAA,EAAE,EAAED;AAFiB,GAfuF,CAAnC,EAkBvErI,OAAO,CAACC,OAAD,CAAP;AACJ;AACA;AACAhB,EAAAA,KAAK,CAACsJ,aAAN,CAAoB,MAApB,EAA4B;AAC1BQ,IAAAA,uBAAuB,EAAE;AACvBC,MAAAA,MAAM,EAAE;AADe;AADC,GAA5B,CAHI,GAOC/I,OAzBsE,CAAvD,EAyBL,aAAahB,KAAK,CAACsJ,aAAN,CAAoB,OAApB,EAA6B5J,QAAQ,CAAC;AAChE4D,IAAAA,KAAK,EAAEsD,KAAK,CAACC,OAAN,CAAcvD,KAAd,IAAuBA,KAAK,CAACgF,IAAN,CAAW,GAAX,CAAvB,GAAyChF,KADgB;AAEhEhB,IAAAA,IAAI,EAAEA,IAF0D;AAGhEjB,IAAAA,GAAG,EAAEY,QAH2D;AAIhE,mBAAe,IAJiD;AAKhEO,IAAAA,QAAQ,EAAE4D,YALsD;AAMhEjD,IAAAA,QAAQ,EAAE,CAAC,CANqD;AAOhExB,IAAAA,SAAS,EAAED,OAAO,CAACsI,WAP6C;AAQhEzI,IAAAA,SAAS,EAAEA;AARqD,GAAD,EAS9DkC,KAT8D,CAArC,CAzBR,EAkCR,aAAazD,KAAK,CAACsJ,aAAN,CAAoBvH,aAApB,EAAmC;AAC1DJ,IAAAA,SAAS,EAAExB,IAAI,CAACuB,OAAO,CAACuI,IAAT,EAAevI,OAAO,CAAC,OAAOsH,MAAP,CAAc3I,UAAU,CAACmD,OAAD,CAAxB,CAAD,CAAtB,EAA4DX,IAAI,IAAInB,OAAO,CAACwI,QAA5E,EAAsFrI,QAAQ,IAAIH,OAAO,CAACG,QAA1G;AAD2C,GAAnC,CAlCL,EAoChB,aAAa7B,KAAK,CAACsJ,aAAN,CAAoB/I,IAApB,EAA0Bb,QAAQ,CAAC;AAClD2J,IAAAA,EAAE,EAAE,QAAQL,MAAR,CAAe1G,IAAI,IAAI,EAAvB,CAD8C;AAElD6H,IAAAA,QAAQ,EAAEjG,WAFwC;AAGlDrB,IAAAA,IAAI,EAAEA,IAH4C;AAIlDJ,IAAAA,OAAO,EAAEuD;AAJyC,GAAD,EAKhD5D,SALgD,EAKrC;AACZgI,IAAAA,aAAa,EAAE1K,QAAQ,CAAC;AACtB,yBAAmBwC,OADG;AAEtB2G,MAAAA,IAAI,EAAE,SAFgB;AAGtBwB,MAAAA,eAAe,EAAE;AAHK,KAAD,EAIpBjI,SAAS,CAACgI,aAJU,CADX;AAMZE,IAAAA,UAAU,EAAE5K,QAAQ,CAAC,EAAD,EAAK0C,SAAS,CAACkI,UAAf,EAA2B;AAC7CC,MAAAA,KAAK,EAAE7K,QAAQ,CAAC;AACd8K,QAAAA,QAAQ,EAAErB;AADI,OAAD,EAEZ/G,SAAS,CAACkI,UAAV,IAAwB,IAAxB,GAA+BlI,SAAS,CAACkI,UAAV,CAAqBC,KAApD,GAA4D,IAFhD;AAD8B,KAA3B;AANR,GALqC,CAAlC,EAgBbxC,KAhBa,CApCG,CAApB;AAqDD,CAtY8B,CAA/B;AAuYAE,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCjH,WAAW,CAACuJ,SAAZ,GAAwB;AAC9D;AACF;AACA;AACE,gBAAcvK,SAAS,CAACwK,MAJsC;;AAM9D;AACF;AACA;AACEnJ,EAAAA,SAAS,EAAErB,SAAS,CAACyK,IATyC;;AAW9D;AACF;AACA;AACA;AACEnJ,EAAAA,SAAS,EAAEtB,SAAS,CAACyK,IAfyC;;AAiB9D;AACF;AACA;AACA;AACElJ,EAAAA,QAAQ,EAAEvB,SAAS,CAAC8E,IArB0C;;AAuB9D;AACF;AACA;AACA;AACEtD,EAAAA,OAAO,EAAExB,SAAS,CAAC0K,MAAV,CAAiBC,UA3BoC;;AA6B9D;AACF;AACA;AACElJ,EAAAA,SAAS,EAAEzB,SAAS,CAACwK,MAhCyC;;AAkC9D;AACF;AACA;AACE9I,EAAAA,YAAY,EAAE1B,SAAS,CAAC4K,GArCsC;;AAuC9D;AACF;AACA;AACEjJ,EAAAA,QAAQ,EAAE3B,SAAS,CAACyK,IA1C0C;;AA4C9D;AACF;AACA;AACE7I,EAAAA,YAAY,EAAE5B,SAAS,CAACyK,IA/CsC;;AAiD9D;AACF;AACA;AACE5I,EAAAA,aAAa,EAAE7B,SAAS,CAAC6K,WAAV,CAAsBF,UApDyB;;AAsD9D;AACF;AACA;AACA;AACE5I,EAAAA,QAAQ,EAAE3B,OA1DoD;;AA4D9D;AACF;AACA;AACA;AACE4B,EAAAA,OAAO,EAAEhC,SAAS,CAACwK,MAhE2C;;AAkE9D;AACF;AACA;AACEtI,EAAAA,SAAS,EAAElC,SAAS,CAAC0K,MArEyC;;AAuE9D;AACF;AACA;AACEvI,EAAAA,QAAQ,EAAEnC,SAAS,CAACyK,IA1E0C;;AA4E9D;AACF;AACA;AACErI,EAAAA,IAAI,EAAEpC,SAAS,CAACwK,MA/E8C;;AAiF9D;AACF;AACA;AACEnI,EAAAA,MAAM,EAAErC,SAAS,CAAC8K,IApF4C;;AAsF9D;AACF;AACA;AACA;AACA;AACA;AACA;AACExI,EAAAA,QAAQ,EAAEtC,SAAS,CAAC8K,IA7F0C;;AA+F9D;AACF;AACA;AACA;AACA;AACA;AACEvI,EAAAA,OAAO,EAAEvC,SAAS,CAAC8K,IArG2C;;AAuG9D;AACF;AACA;AACEtI,EAAAA,OAAO,EAAExC,SAAS,CAAC8K,IA1G2C;;AA4G9D;AACF;AACA;AACA;AACA;AACA;AACErI,EAAAA,MAAM,EAAEzC,SAAS,CAAC8K,IAlH4C;;AAoH9D;AACF;AACA;AACEnI,EAAAA,IAAI,EAAE3C,SAAS,CAACyK,IAvH8C;;AAyH9D;AACF;AACA;AACE7H,EAAAA,QAAQ,EAAE5C,SAAS,CAACyK,IA5H0C;;AA8H9D;AACF;AACA;AACA;AACA;AACA;AACE5H,EAAAA,WAAW,EAAE7C,SAAS,CAAC8K,IApIuC;;AAsI9D;AACF;AACA;AACE/H,EAAAA,kBAAkB,EAAE/C,SAAS,CAAC0K,MAzIgC;;AA2I9D;AACF;AACA;AACEzH,EAAAA,QAAQ,EAAEjD,SAAS,CAAC+K,SAAV,CAAoB,CAAC/K,SAAS,CAACgL,MAAX,EAAmBhL,SAAS,CAACwK,MAA7B,CAApB,CA9IoD;;AAgJ9D;AACF;AACA;AACEtH,EAAAA,IAAI,EAAElD,SAAS,CAAC4K,GAnJ8C;;AAqJ9D;AACF;AACA;AACExH,EAAAA,KAAK,EAAEpD,SAAS,CAAC4K,GAxJ6C;;AA0J9D;AACF;AACA;AACEtH,EAAAA,OAAO,EAAEtD,SAAS,CAACiL,KAAV,CAAgB,CAAC,UAAD,EAAa,UAAb,EAAyB,QAAzB,CAAhB;AA7JqD,CAAhE,GA8JI,KAAK,CA9JT;AA+JA,eAAejK,WAAf","sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ownerDocument from '../utils/ownerDocument';\nimport capitalize from '../utils/capitalize';\nimport { refType } from '@material-ui/utils';\nimport Menu from '../Menu/Menu';\nimport { isFilled } from '../InputBase/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\n\nfunction areEqualValues(a, b) {\n if (_typeof(b) === 'object' && b !== null) {\n return a === b;\n }\n\n return String(a) === String(b);\n}\n\nfunction isEmpty(display) {\n return display == null || typeof display === 'string' && !display.trim();\n}\n/**\n * @ignore - internal component.\n */\n\n\nvar SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {\n var ariaLabel = props['aria-label'],\n autoFocus = props.autoFocus,\n autoWidth = props.autoWidth,\n children = props.children,\n classes = props.classes,\n className = props.className,\n defaultValue = props.defaultValue,\n disabled = props.disabled,\n displayEmpty = props.displayEmpty,\n IconComponent = props.IconComponent,\n inputRefProp = props.inputRef,\n labelId = props.labelId,\n _props$MenuProps = props.MenuProps,\n MenuProps = _props$MenuProps === void 0 ? {} : _props$MenuProps,\n multiple = props.multiple,\n name = props.name,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onClose = props.onClose,\n onFocus = props.onFocus,\n onOpen = props.onOpen,\n openProp = props.open,\n readOnly = props.readOnly,\n renderValue = props.renderValue,\n _props$SelectDisplayP = props.SelectDisplayProps,\n SelectDisplayProps = _props$SelectDisplayP === void 0 ? {} : _props$SelectDisplayP,\n tabIndexProp = props.tabIndex,\n type = props.type,\n valueProp = props.value,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"aria-label\", \"autoFocus\", \"autoWidth\", \"children\", \"classes\", \"className\", \"defaultValue\", \"disabled\", \"displayEmpty\", \"IconComponent\", \"inputRef\", \"labelId\", \"MenuProps\", \"multiple\", \"name\", \"onBlur\", \"onChange\", \"onClose\", \"onFocus\", \"onOpen\", \"open\", \"readOnly\", \"renderValue\", \"SelectDisplayProps\", \"tabIndex\", \"type\", \"value\", \"variant\"]);\n\n var _useControlled = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'Select'\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n value = _useControlled2[0],\n setValue = _useControlled2[1];\n\n var inputRef = React.useRef(null);\n\n var _React$useState = React.useState(null),\n displayNode = _React$useState[0],\n setDisplayNode = _React$useState[1];\n\n var _React$useRef = React.useRef(openProp != null),\n isOpenControlled = _React$useRef.current;\n\n var _React$useState2 = React.useState(),\n menuMinWidthState = _React$useState2[0],\n setMenuMinWidthState = _React$useState2[1];\n\n var _React$useState3 = React.useState(false),\n openState = _React$useState3[0],\n setOpenState = _React$useState3[1];\n\n var handleRef = useForkRef(ref, inputRefProp);\n React.useImperativeHandle(handleRef, function () {\n return {\n focus: function focus() {\n displayNode.focus();\n },\n node: inputRef.current,\n value: value\n };\n }, [displayNode, value]);\n React.useEffect(function () {\n if (autoFocus && displayNode) {\n displayNode.focus();\n }\n }, [autoFocus, displayNode]);\n React.useEffect(function () {\n if (displayNode) {\n var label = ownerDocument(displayNode).getElementById(labelId);\n\n if (label) {\n var handler = function handler() {\n if (getSelection().isCollapsed) {\n displayNode.focus();\n }\n };\n\n label.addEventListener('click', handler);\n return function () {\n label.removeEventListener('click', handler);\n };\n }\n }\n\n return undefined;\n }, [labelId, displayNode]);\n\n var update = function update(open, event) {\n if (open) {\n if (onOpen) {\n onOpen(event);\n }\n } else if (onClose) {\n onClose(event);\n }\n\n if (!isOpenControlled) {\n setMenuMinWidthState(autoWidth ? null : displayNode.clientWidth);\n setOpenState(open);\n }\n };\n\n var handleMouseDown = function handleMouseDown(event) {\n // Ignore everything but left-click\n if (event.button !== 0) {\n return;\n } // Hijack the default focus behavior.\n\n\n event.preventDefault();\n displayNode.focus();\n update(true, event);\n };\n\n var handleClose = function handleClose(event) {\n update(false, event);\n };\n\n var childrenArray = React.Children.toArray(children); // Support autofill.\n\n var handleChange = function handleChange(event) {\n var index = childrenArray.map(function (child) {\n return child.props.value;\n }).indexOf(event.target.value);\n\n if (index === -1) {\n return;\n }\n\n var child = childrenArray[index];\n setValue(child.props.value);\n\n if (onChange) {\n onChange(event, child);\n }\n };\n\n var handleItemClick = function handleItemClick(child) {\n return function (event) {\n if (!multiple) {\n update(false, event);\n }\n\n var newValue;\n\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n var itemIndex = value.indexOf(child.props.value);\n\n if (itemIndex === -1) {\n newValue.push(child.props.value);\n } else {\n newValue.splice(itemIndex, 1);\n }\n } else {\n newValue = child.props.value;\n }\n\n if (child.props.onClick) {\n child.props.onClick(event);\n }\n\n if (value === newValue) {\n return;\n }\n\n setValue(newValue);\n\n if (onChange) {\n event.persist(); // Preact support, target is read only property on a native event.\n\n Object.defineProperty(event, 'target', {\n writable: true,\n value: {\n value: newValue,\n name: name\n }\n });\n onChange(event, child);\n }\n };\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (!readOnly) {\n var validKeys = [' ', 'ArrowUp', 'ArrowDown', // The native select doesn't respond to enter on MacOS, but it's recommended by\n // https://www.w3.org/TR/wai-aria-practices/examples/listbox/listbox-collapsible.html\n 'Enter'];\n\n if (validKeys.indexOf(event.key) !== -1) {\n event.preventDefault();\n update(true, event);\n }\n }\n };\n\n var open = displayNode !== null && (isOpenControlled ? openProp : openState);\n\n var handleBlur = function handleBlur(event) {\n // if open event.stopImmediatePropagation\n if (!open && onBlur) {\n event.persist(); // Preact support, target is read only property on a native event.\n\n Object.defineProperty(event, 'target', {\n writable: true,\n value: {\n value: value,\n name: name\n }\n });\n onBlur(event);\n }\n };\n\n delete other['aria-invalid'];\n var display;\n var displaySingle;\n var displayMultiple = [];\n var computeDisplay = false;\n var foundMatch = false; // No need to display any value if the field is empty.\n\n if (isFilled({\n value: value\n }) || displayEmpty) {\n if (renderValue) {\n display = renderValue(value);\n } else {\n computeDisplay = true;\n }\n }\n\n var items = childrenArray.map(function (child) {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Select component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n var selected;\n\n if (multiple) {\n if (!Array.isArray(value)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The `value` prop must be an array when using the `Select` component with `multiple`.\" : _formatMuiErrorMessage(2));\n }\n\n selected = value.some(function (v) {\n return areEqualValues(v, child.props.value);\n });\n\n if (selected && computeDisplay) {\n displayMultiple.push(child.props.children);\n }\n } else {\n selected = areEqualValues(value, child.props.value);\n\n if (selected && computeDisplay) {\n displaySingle = child.props.children;\n }\n }\n\n if (selected) {\n foundMatch = true;\n }\n\n return /*#__PURE__*/React.cloneElement(child, {\n 'aria-selected': selected ? 'true' : undefined,\n onClick: handleItemClick(child),\n onKeyUp: function onKeyUp(event) {\n if (event.key === ' ') {\n // otherwise our MenuItems dispatches a click event\n // it's not behavior of the native <option> and causes\n // the select to close immediately since we open on space keydown\n event.preventDefault();\n }\n\n if (child.props.onKeyUp) {\n child.props.onKeyUp(event);\n }\n },\n role: 'option',\n selected: selected,\n value: undefined,\n // The value is most likely not a valid HTML attribute.\n 'data-value': child.props.value // Instead, we provide it as a data attribute.\n\n });\n });\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(function () {\n if (!foundMatch && !multiple && value !== '') {\n var values = childrenArray.map(function (child) {\n return child.props.value;\n });\n console.warn([\"Material-UI: You have provided an out-of-range value `\".concat(value, \"` for the select \").concat(name ? \"(name=\\\"\".concat(name, \"\\\") \") : '', \"component.\"), \"Consider providing a value that matches one of the available options or ''.\", \"The available values are \".concat(values.filter(function (x) {\n return x != null;\n }).map(function (x) {\n return \"`\".concat(x, \"`\");\n }).join(', ') || '\"\"', \".\")].join('\\n'));\n }\n }, [foundMatch, childrenArray, multiple, name, value]);\n }\n\n if (computeDisplay) {\n display = multiple ? displayMultiple.join(', ') : displaySingle;\n } // Avoid performing a layout computation in the render method.\n\n\n var menuMinWidth = menuMinWidthState;\n\n if (!autoWidth && isOpenControlled && displayNode) {\n menuMinWidth = displayNode.clientWidth;\n }\n\n var tabIndex;\n\n if (typeof tabIndexProp !== 'undefined') {\n tabIndex = tabIndexProp;\n } else {\n tabIndex = disabled ? null : 0;\n }\n\n var buttonId = SelectDisplayProps.id || (name ? \"mui-component-select-\".concat(name) : undefined);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, // TODO v5: merge root and select\n classes.select, classes.selectMenu, classes[variant], className, disabled && classes.disabled),\n ref: setDisplayNode,\n tabIndex: tabIndex,\n role: \"button\",\n \"aria-disabled\": disabled ? 'true' : undefined,\n \"aria-expanded\": open ? 'true' : undefined,\n \"aria-haspopup\": \"listbox\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": [labelId, buttonId].filter(Boolean).join(' ') || undefined,\n onKeyDown: handleKeyDown,\n onMouseDown: disabled || readOnly ? null : handleMouseDown,\n onBlur: handleBlur,\n onFocus: onFocus\n }, SelectDisplayProps, {\n // The id is required for proper a11y\n id: buttonId\n }), isEmpty(display) ?\n /*#__PURE__*/\n // eslint-disable-next-line react/no-danger\n React.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: '​'\n }\n }) : display), /*#__PURE__*/React.createElement(\"input\", _extends({\n value: Array.isArray(value) ? value.join(',') : value,\n name: name,\n ref: inputRef,\n \"aria-hidden\": true,\n onChange: handleChange,\n tabIndex: -1,\n className: classes.nativeInput,\n autoFocus: autoFocus\n }, other)), /*#__PURE__*/React.createElement(IconComponent, {\n className: clsx(classes.icon, classes[\"icon\".concat(capitalize(variant))], open && classes.iconOpen, disabled && classes.disabled)\n }), /*#__PURE__*/React.createElement(Menu, _extends({\n id: \"menu-\".concat(name || ''),\n anchorEl: displayNode,\n open: open,\n onClose: handleClose\n }, MenuProps, {\n MenuListProps: _extends({\n 'aria-labelledby': labelId,\n role: 'listbox',\n disableListWrap: true\n }, MenuProps.MenuListProps),\n PaperProps: _extends({}, MenuProps.PaperProps, {\n style: _extends({\n minWidth: menuMinWidth\n }, MenuProps.PaperProps != null ? MenuProps.PaperProps.style : null)\n })\n }), items));\n});\nprocess.env.NODE_ENV !== \"production\" ? SelectInput.propTypes = {\n /**\n * @ignore\n */\n 'aria-label': PropTypes.string,\n\n /**\n * @ignore\n */\n autoFocus: PropTypes.bool,\n\n /**\n * If `true`, the width of the popover will automatically be set according to the items inside the\n * menu, otherwise it will be at least the width of the select input.\n */\n autoWidth: PropTypes.bool,\n\n /**\n * The option elements to populate the select with.\n * Can be some `<MenuItem>` elements.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * The CSS class name of the select element.\n */\n className: PropTypes.string,\n\n /**\n * The default element value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n\n /**\n * If `true`, the select will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the selected item is displayed even if its value is empty.\n */\n displayEmpty: PropTypes.bool,\n\n /**\n * The icon that displays the arrow.\n */\n IconComponent: PropTypes.elementType.isRequired,\n\n /**\n * Imperative handle implementing `{ value: T, node: HTMLElement, focus(): void }`\n * Equivalent to `ref`\n */\n inputRef: refType,\n\n /**\n * The ID of an element that acts as an additional label. The Select will\n * be labelled by the additional label and the selected value.\n */\n labelId: PropTypes.string,\n\n /**\n * Props applied to the [`Menu`](/api/menu/) element.\n */\n MenuProps: PropTypes.object,\n\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n */\n multiple: PropTypes.bool,\n\n /**\n * Name attribute of the `select` or hidden `input` element.\n */\n name: PropTypes.string,\n\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * Callback function fired when a menu item is selected.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (any).\n * @param {object} [child] The react element that was selected.\n */\n onChange: PropTypes.func,\n\n /**\n * Callback fired when the component requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {object} event The event source of the callback.\n */\n onClose: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * Callback fired when the component requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {object} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n\n /**\n * Control `select` open state.\n */\n open: PropTypes.bool,\n\n /**\n * @ignore\n */\n readOnly: PropTypes.bool,\n\n /**\n * Render the selected value.\n *\n * @param {any} value The `value` provided to the component.\n * @returns {ReactNode}\n */\n renderValue: PropTypes.func,\n\n /**\n * Props applied to the clickable div element.\n */\n SelectDisplayProps: PropTypes.object,\n\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * @ignore\n */\n type: PropTypes.any,\n\n /**\n * The input value.\n */\n value: PropTypes.any,\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default SelectInput;"]},"metadata":{},"sourceType":"module"} |