{"version":3,"file":"index.cjs","sources":["../src/context/auth.ts","../src/context/form.ts","../src/components/form/checkbox/CheckBoxAdditional.tsx","../src/components/form/checkbox/RequiredCheckBoxValidator.tsx","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@mui/utils/esm/deepmerge.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/prop-types/node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/index.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/@mui/utils/esm/getDisplayName.js","../node_modules/@mui/utils/esm/capitalize.js","../node_modules/@mui/utils/esm/formatMuiErrorMessage.js","../node_modules/@mui/utils/esm/resolveProps.js","../node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/responsivePropType.js","../node_modules/@mui/system/esm/merge.js","../node_modules/@mui/system/esm/breakpoints.js","../node_modules/@mui/system/esm/style.js","../node_modules/@mui/system/esm/spacing.js","../node_modules/@mui/system/esm/memoize.js","../node_modules/@mui/system/esm/compose.js","../node_modules/@mui/system/esm/borders.js","../node_modules/@mui/system/esm/cssGrid.js","../node_modules/@mui/system/esm/palette.js","../node_modules/@mui/system/esm/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/useTheme.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/@mui/system/esm/propsToClassKey.js","../node_modules/@mui/system/esm/createStyled.js","../node_modules/@mui/system/esm/styled.js","../node_modules/@mui/styled-engine/index.js","../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../node_modules/@mui/system/esm/Stack/createStack.js","../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../node_modules/@mui/system/esm/Stack/Stack.js","../node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../src/components/icons/icons.tsx","../src/components/form/file/DropFileUpload.tsx","../src/components/form/switch/Switch.tsx","../src/components/form/switch/ToggleVisibility.tsx","../src/components/form/input/MaskInput.tsx","../src/components/form/input/Input.tsx","../src/components/form/input/FetchAutoComplete.tsx","../src/components/form/input/FixedAutoComplete.tsx","../src/components/form/input/GenericFetchAutoComplete.tsx","../src/components/form/input/GenericInput.tsx","../src/components/form/input/GenericMaskInput.tsx","../src/components/form/stepper/Stepper.tsx","../src/components/form/stepper/StepperBlock.tsx","../src/components/modal/Modal.tsx","../src/components/utils/Bt.tsx","../src/components/utils/CustomMenu.tsx","../src/components/form/table/GenericTable.tsx","../src/components/form/table/TableErrorState.tsx","../src/components/form/table/TableLoadingState.tsx","../src/components/form/table/utils.tsx","../src/components/form/table/FilterSection.tsx","../src/components/form/table/Table.tsx","../src/components/map/index.tsx","../src/components/navbar/TabNavBar.tsx","../src/components/providers/OAuthProvider.tsx","../src/components/form/input/ActiveInput.tsx","../src/components/form/input/AutoComplete.tsx","../src/components/detalhes/Category.tsx","../src/components/form/checkbox/CheckBox.tsx","../src/components/form/checkbox/CheckBoxWarning.tsx","../src/components/form/date/DatePicker.tsx","../src/components/detalhes/Field.tsx","../src/components/detalhes/FieldLabel.tsx","../src/components/detalhes/File.tsx","../src/components/form/file/FileUpload.tsx","../src/components/providers/FormProvider.tsx","../src/components/form/date/GenericDatePicker.tsx","../src/components/form/input/GenericMultInput.tsx","../src/components/providers/KeycloakAuthProvider.tsx","../src/components/form/input/MultInput.tsx","../src/components/navbar/NavBar.tsx","../src/components/form/input/OtherCheckBox.tsx","../src/components/providers/SspComponentsProvider.tsx","../src/components/form/date/TimePicker.tsx"],"sourcesContent":["import { createContext } from 'react'\nimport { AuthReturnData } from '../types/auth'\n\nexport const AuthContext = createContext({} as AuthReturnData)","import { createContext, Dispatch, SetStateAction } from 'react'\nimport {\n    Control,\n    FieldErrors,\n    FieldValues,\n    UseFormGetValues,\n    UseFormHandleSubmit,\n    UseFormRegister,\n    UseFormReset,\n    UseFormSetValue,\n    UseFormStateReturn,\n    UseFormTrigger,\n    UseFormUnregister,\n    UseFormWatch,\n} from 'react-hook-form'\n\nexport const FormContext = createContext<{\n    formRegister: UseFormRegister<FieldValues>\n    formWatch: UseFormWatch<FieldValues>\n    formReset: UseFormReset<FieldValues>\n    formSetValue: UseFormSetValue<FieldValues>\n    formControl: Control<FieldValues, any>\n    formTrigger: UseFormTrigger<FieldValues>\n    formUnregister: UseFormUnregister<FieldValues>\n    formHandleSubmit: UseFormHandleSubmit<FieldValues>\n    formGetValues: UseFormGetValues<FieldValues>\n    setFilesUid: Dispatch<\n        SetStateAction<\n            {\n                CO_SEQ_ARQUIVO: number\n                CO_TIPO_ARQUIVO: number\n            }[]\n        >\n    >\n    formState: UseFormStateReturn<FieldValues>\n    errors: FieldErrors<FieldValues>\n    submiting: boolean\n} | null>(null)\n","import React, { useContext, useEffect, useState } from 'react'\nimport { FormContext } from '../../../context/form'\nimport { Box, Grid, InputLabel, Paper, Typography } from '@mui/material'\nimport get from 'lodash.get'\n\nfunction getChildrenNames(children: JSX.Element[]): string[] {\n    let arr: string[] = []\n\n    children.forEach((x) => {\n        if (!x.props) return\n\n        if (x.props.children) {\n            const childrenArr = getChildrenNames(Array.isArray(x.props.children) ? x.props.children : [x.props.children])\n            arr = arr.concat(childrenArr)\n            return\n        }\n\n        if (x.props.name) {\n            arr.push(x.props.name as string)\n            return\n        }\n    })\n\n    return arr\n}\n\nexport default function RequiredCheckBoxAdditional({\n    customText = 'Selecione pelo menos 1 opção',\n    ...props\n}: {\n    name: string\n    children: JSX.Element\n    customText?: string\n    content: JSX.Element | JSX.Element[]\n    nameList: string[]\n}) {\n    const [firstTime, setFirstTime] = useState(false)\n    const [showAfterFirst, setAfterFirst] = useState(true)\n\n    const context = useContext(FormContext)!\n    const children = React.cloneElement(props.children, {\n        onChange: () => {\n            if (firstTime) {\n                const name = children.props.name as string\n                const value = !context.formGetValues(name)\n\n                if (value) setAfterFirst(false)\n            }\n        },\n    })\n\n    return (\n        <Grid container sx={{ padding: 1, borderRadius: 2 }}>\n            <input\n                type='text'\n                {...context.formRegister(props.name, {\n                    validate: (v, f) => {\n                        if (firstTime && showAfterFirst) return true\n                        const names = getChildrenNames(Array.isArray(props.children) ? props.children : [props.children])\n\n                        let canContinue = false\n\n                        names.forEach((x) => {\n                            const nameValue = context.formGetValues(x)\n\n                            if (nameValue) canContinue = true\n                        })\n\n                        if (!canContinue) {\n                            setFirstTime(true)\n                            setAfterFirst(true)\n\n                            return customText\n                        }\n\n                        return true\n                    },\n                })}\n                hidden\n            />\n            {children}\n            <Grid item xs={12}>\n                {firstTime && showAfterFirst && props.content}\n            </Grid>\n        </Grid>\n    )\n}\n","import React, { useContext } from 'react'\nimport { FormContext } from '../../../context/form'\nimport { Box, Grid, InputLabel, Paper, Typography } from '@mui/material'\nimport get from 'lodash.get'\nimport { ElevatorSharp } from '@mui/icons-material'\n\nfunction getChildrenNames(children: JSX.Element[]): string[] {\n    let arr: string[] = []\n\n    children.forEach((x) => {\n        if (!x.props) return\n\n        if (x.props.children) {\n            const childrenArr = getChildrenNames(Array.isArray(x.props.children) ? x.props.children : [x.props.children])\n            arr = arr.concat(childrenArr)\n            return\n        }\n\n        if (x.props.name) {\n            arr.push(x.props.name as string)\n            return\n        }\n    })\n\n    return arr\n}\n\nexport default function RequiredCheckBoxGroup({ customText = 'Selecione pelo menos 1 opção', ...props }: { name: string; children: JSX.Element | JSX.Element[]; customText?: string }) {\n    const context = useContext(FormContext)!\n\n    return (\n        <Grid container sx={{ border: get(context.errors, props.name) ? '2px solid #a51c30' : '', padding: 1, borderRadius: 2 }}>\n            <input\n                key={1}\n                type='text'\n                {...context.formRegister(props.name, {\n                    validate: (v, i) => {\n                        const names = getChildrenNames(Array.isArray(props.children) ? props.children : [props.children])\n\n                        let canContinue = false\n\n                        names.forEach((x, i) => {\n                            const nameValue = context.formGetValues(x)\n\n                            if (nameValue) {\n                                canContinue = true\n                            }\n                       \n                        })\n\n                        if (!canContinue) return customText\n\n                        return true\n                    },\n                })}\n                hidden\n            />\n            {props.children}\n            <Grid item xs={12}>\n                <Typography sx={{ color: '#a51c30', fontSize: 16, paddingLeft: 1 }}>{get(context.errors, props.name)?.message as string}</Typography>\n            </Grid>\n        </Grid>\n    )\n}\n","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function isPlainObject(item) {\n  return item !== null && typeof item === 'object' && item.constructor === Object;\n}\nfunction deepClone(source) {\n  if (!isPlainObject(source)) {\n    return source;\n  }\n  const output = {};\n  Object.keys(source).forEach(key => {\n    output[key] = deepClone(source[key]);\n  });\n  return output;\n}\nexport default function deepmerge(target, source, options = {\n  clone: true\n}) {\n  const output = options.clone ? _extends({}, target) : target;\n  if (isPlainObject(target) && isPlainObject(source)) {\n    Object.keys(source).forEach(key => {\n      // Avoid prototype pollution\n      if (key === '__proto__') {\n        return;\n      }\n      if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) {\n        // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n        output[key] = deepmerge(target[key], source[key], options);\n      } else if (options.clone) {\n        output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n      } else {\n        output[key] = source[key];\n      }\n    });\n  }\n  return output;\n}","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n  var loggedTypeFailures = {};\n  var has = require('./lib/has');\n\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) { /**/ }\n  };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            var err = Error(\n              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n              'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n            );\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        if (error && !(error instanceof Error)) {\n          printWarning(\n            (componentName || 'React class') + ': type specification of ' +\n            location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n            'You may have forgotten to pass an argument to the type checker ' +\n            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n            'shape all require an argument).'\n          );\n        }\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          printWarning(\n            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n          );\n        }\n      }\n    }\n  }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n  if (process.env.NODE_ENV !== 'production') {\n    loggedTypeFailures = {};\n  }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bigint: createPrimitiveTypeChecker('bigint'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    elementType: createElementTypeTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message, data) {\n    this.message = message;\n    this.data = data && typeof data === 'object' ? data: {};\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (process.env.NODE_ENV !== 'production') {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          var err = new Error(\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n          err.name = 'Invariant Violation';\n          throw err;\n        } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError(\n          'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n          {expectedType: expectedType}\n        );\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!ReactIs.isValidElementType(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (arguments.length > 1) {\n          printWarning(\n            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n          );\n        } else {\n          printWarning('Invalid argument supplied to oneOf, expected an array.');\n        }\n      }\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n        var type = getPreciseType(value);\n        if (type === 'symbol') {\n          return String(value);\n        }\n        return value;\n      });\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (has(propValue, key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n      process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var expectedTypes = [];\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n        if (checkerResult == null) {\n          return null;\n        }\n        if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n          expectedTypes.push(checkerResult.data.expectedType);\n        }\n      }\n      var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function invalidValidatorError(componentName, location, propFullName, key, type) {\n    return new PropTypeError(\n      (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n      'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n    );\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (has(shapeTypes, key) && typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // falsy value can't be a Symbol\n    if (!propValue) {\n      return false;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n          case REACT_SUSPENSE_LIST_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_SERVER_CONTEXT_TYPE:\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isConcurrentMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n      hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n  return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","import { ForwardRef, Memo } from 'react-is';\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n  const match = `${fn}`.match(fnNameMatchRegex);\n  const name = match && match[1];\n  return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n  return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  const functionName = getFunctionComponentName(innerType);\n  return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nexport default function getDisplayName(Component) {\n  if (Component == null) {\n    return undefined;\n  }\n  if (typeof Component === 'string') {\n    return Component;\n  }\n  if (typeof Component === 'function') {\n    return getFunctionComponentName(Component, 'Component');\n  }\n\n  // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n  if (typeof Component === 'object') {\n    switch (Component.$$typeof) {\n      case ForwardRef:\n        return getWrappedName(Component, Component.render, 'ForwardRef');\n      case Memo:\n        return getWrappedName(Component, Component.type, 'memo');\n      default:\n        return undefined;\n    }\n  }\n  return undefined;\n}","import _formatMuiErrorMessage from \"./formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n  if (typeof string !== 'string') {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n  }\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/utils/macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n  // Apply babel-plugin-transform-template-literals in loose mode\n  // loose mode is safe iff we're concatenating primitives\n  // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n  /* eslint-disable prefer-template */\n  let url = 'https://mui.com/production-error/?code=' + code;\n  for (let i = 1; i < arguments.length; i += 1) {\n    // rest params over-transpile for this case\n    // eslint-disable-next-line prefer-rest-params\n    url += '&args[]=' + encodeURIComponent(arguments[i]);\n  }\n  return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n  /* eslint-enable prefer-template */\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n  const output = _extends({}, props);\n  Object.keys(defaultProps).forEach(propName => {\n    if (propName.toString().match(/^(components|slots)$/)) {\n      output[propName] = _extends({}, defaultProps[propName], output[propName]);\n    } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n      const defaultSlotProps = defaultProps[propName] || {};\n      const slotProps = props[propName];\n      output[propName] = {};\n      if (!slotProps || !Object.keys(slotProps)) {\n        // Reduce the iteration if the slot props is empty\n        output[propName] = defaultSlotProps;\n      } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n        // Reduce the iteration if the default slot props is empty\n        output[propName] = slotProps;\n      } else {\n        output[propName] = _extends({}, slotProps);\n        Object.keys(defaultSlotProps).forEach(slotPropName => {\n          output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n        });\n      }\n    } else if (output[propName] === undefined) {\n      output[propName] = defaultProps[propName];\n    }\n  });\n  return output;\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n  let generate = defaultGenerator;\n  return {\n    configure(generator) {\n      generate = generator;\n    },\n    generate(componentName) {\n      return generate(componentName);\n    },\n    reset() {\n      generate = defaultGenerator;\n    }\n  };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from '../ClassNameGenerator';\nconst globalStateClassesMapping = {\n  active: 'active',\n  checked: 'checked',\n  completed: 'completed',\n  disabled: 'disabled',\n  readOnly: 'readOnly',\n  error: 'error',\n  expanded: 'expanded',\n  focused: 'focused',\n  focusVisible: 'focusVisible',\n  required: 'required',\n  selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n  const globalStateClass = globalStateClassesMapping[slot];\n  return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n  const breakpointsAsArray = Object.keys(values).map(key => ({\n    key,\n    val: values[key]\n  })) || [];\n  // Sort in ascending order\n  breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n  return breakpointsAsArray.reduce((acc, obj) => {\n    return _extends({}, acc, {\n      [obj.key]: obj.val\n    });\n  }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n  const {\n      // The breakpoint **start** at this value.\n      // For instance with the first breakpoint xs: [xs, sm).\n      values = {\n        xs: 0,\n        // phone\n        sm: 600,\n        // tablet\n        md: 900,\n        // small laptop\n        lg: 1200,\n        // desktop\n        xl: 1536 // large screen\n      },\n\n      unit = 'px',\n      step = 5\n    } = breakpoints,\n    other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n  const sortedValues = sortBreakpointsValues(values);\n  const keys = Object.keys(sortedValues);\n  function up(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (min-width:${value}${unit})`;\n  }\n  function down(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (max-width:${value - step / 100}${unit})`;\n  }\n  function between(start, end) {\n    const endIndex = keys.indexOf(end);\n    return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n  }\n  function only(key) {\n    if (keys.indexOf(key) + 1 < keys.length) {\n      return between(key, keys[keys.indexOf(key) + 1]);\n    }\n    return up(key);\n  }\n  function not(key) {\n    // handle first and last key separately, for better readability\n    const keyIndex = keys.indexOf(key);\n    if (keyIndex === 0) {\n      return up(keys[1]);\n    }\n    if (keyIndex === keys.length - 1) {\n      return down(keys[keyIndex]);\n    }\n    return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n  }\n  return _extends({\n    keys,\n    values: sortedValues,\n    up,\n    down,\n    between,\n    only,\n    not,\n    unit\n  }, other);\n}","const shape = {\n  borderRadius: 4\n};\nexport default shape;","import PropTypes from 'prop-types';\nconst responsivePropType = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object, PropTypes.array]) : {};\nexport default responsivePropType;","import { deepmerge } from '@mui/utils';\nfunction merge(acc, item) {\n  if (!item) {\n    return acc;\n  }\n  return deepmerge(acc, item, {\n    clone: false // No need to clone deep, it's way faster.\n  });\n}\n\nexport default merge;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport { deepmerge } from '@mui/utils';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n  xs: 0,\n  // phone\n  sm: 600,\n  // tablet\n  md: 900,\n  // small laptop\n  lg: 1200,\n  // desktop\n  xl: 1536 // large screen\n};\n\nconst defaultBreakpoints = {\n  // Sorted ASC by size. That's important.\n  // It can't be configured as it's used statically for propTypes.\n  keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n  up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n  const theme = props.theme || {};\n  if (Array.isArray(propValue)) {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return propValue.reduce((acc, item, index) => {\n      acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n      return acc;\n    }, {});\n  }\n  if (typeof propValue === 'object') {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return Object.keys(propValue).reduce((acc, breakpoint) => {\n      // key is breakpoint\n      if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n        const mediaKey = themeBreakpoints.up(breakpoint);\n        acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n      } else {\n        const cssKey = breakpoint;\n        acc[cssKey] = propValue[cssKey];\n      }\n      return acc;\n    }, {});\n  }\n  const output = styleFromPropValue(propValue);\n  return output;\n}\nfunction breakpoints(styleFunction) {\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const newStyleFunction = props => {\n    const theme = props.theme || {};\n    const base = styleFunction(props);\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    const extended = themeBreakpoints.keys.reduce((acc, key) => {\n      if (props[key]) {\n        acc = acc || {};\n        acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n          theme\n        }, props[key]));\n      }\n      return acc;\n    }, null);\n    return merge(base, extended);\n  };\n  newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n    xs: PropTypes.object,\n    sm: PropTypes.object,\n    md: PropTypes.object,\n    lg: PropTypes.object,\n    xl: PropTypes.object\n  }) : {};\n  newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n  return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n  var _breakpointsInput$key;\n  const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n    const breakpointStyleKey = breakpointsInput.up(key);\n    acc[breakpointStyleKey] = {};\n    return acc;\n  }, {});\n  return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n  return breakpointKeys.reduce((acc, key) => {\n    const breakpointOutput = acc[key];\n    const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n    if (isBreakpointUnused) {\n      delete acc[key];\n    }\n    return acc;\n  }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n  const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n  const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n  return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n  // fixed value\n  if (typeof breakpointValues !== 'object') {\n    return {};\n  }\n  const base = {};\n  const breakpointsKeys = Object.keys(themeBreakpoints);\n  if (Array.isArray(breakpointValues)) {\n    breakpointsKeys.forEach((breakpoint, i) => {\n      if (i < breakpointValues.length) {\n        base[breakpoint] = true;\n      }\n    });\n  } else {\n    breakpointsKeys.forEach(breakpoint => {\n      if (breakpointValues[breakpoint] != null) {\n        base[breakpoint] = true;\n      }\n    });\n  }\n  return base;\n}\nexport function resolveBreakpointValues({\n  values: breakpointValues,\n  breakpoints: themeBreakpoints,\n  base: customBase\n}) {\n  const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n  const keys = Object.keys(base);\n  if (keys.length === 0) {\n    return breakpointValues;\n  }\n  let previous;\n  return keys.reduce((acc, breakpoint, i) => {\n    if (Array.isArray(breakpointValues)) {\n      acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n      previous = i;\n    } else if (typeof breakpointValues === 'object') {\n      acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n      previous = breakpoint;\n    } else {\n      acc[breakpoint] = breakpointValues;\n    }\n    return acc;\n  }, {});\n}\nexport default breakpoints;","import { unstable_capitalize as capitalize } from '@mui/utils';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n  if (!path || typeof path !== 'string') {\n    return null;\n  }\n\n  // Check if CSS variables are used\n  if (obj && obj.vars && checkVars) {\n    const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n    if (val != null) {\n      return val;\n    }\n  }\n  return path.split('.').reduce((acc, item) => {\n    if (acc && acc[item] != null) {\n      return acc[item];\n    }\n    return null;\n  }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n  let value;\n  if (typeof themeMapping === 'function') {\n    value = themeMapping(propValueFinal);\n  } else if (Array.isArray(themeMapping)) {\n    value = themeMapping[propValueFinal] || userValue;\n  } else {\n    value = getPath(themeMapping, propValueFinal) || userValue;\n  }\n  if (transform) {\n    value = transform(value, userValue, themeMapping);\n  }\n  return value;\n}\nfunction style(options) {\n  const {\n    prop,\n    cssProperty = options.prop,\n    themeKey,\n    transform\n  } = options;\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    if (props[prop] == null) {\n      return null;\n    }\n    const propValue = props[prop];\n    const theme = props.theme;\n    const themeMapping = getPath(theme, themeKey) || {};\n    const styleFromPropValue = propValueFinal => {\n      let value = getStyleValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, propValue, styleFromPropValue);\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n    [prop]: responsivePropType\n  } : {};\n  fn.filterProps = [prop];\n  return fn;\n}\nexport default style;","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n  m: 'margin',\n  p: 'padding'\n};\nconst directions = {\n  t: 'Top',\n  r: 'Right',\n  b: 'Bottom',\n  l: 'Left',\n  x: ['Left', 'Right'],\n  y: ['Top', 'Bottom']\n};\nconst aliases = {\n  marginX: 'mx',\n  marginY: 'my',\n  paddingX: 'px',\n  paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n  // It's not a shorthand notation.\n  if (prop.length > 2) {\n    if (aliases[prop]) {\n      prop = aliases[prop];\n    } else {\n      return [prop];\n    }\n  }\n  const [a, b] = prop.split('');\n  const property = properties[a];\n  const direction = directions[b] || '';\n  return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n  var _getPath;\n  const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n  if (typeof themeSpacing === 'number') {\n    return abs => {\n      if (typeof abs === 'string') {\n        return abs;\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof abs !== 'number') {\n          console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n        }\n      }\n      return themeSpacing * abs;\n    };\n  }\n  if (Array.isArray(themeSpacing)) {\n    return abs => {\n      if (typeof abs === 'string') {\n        return abs;\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        if (!Number.isInteger(abs)) {\n          console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n        } else if (abs > themeSpacing.length - 1) {\n          console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n        }\n      }\n      return themeSpacing[abs];\n    };\n  }\n  if (typeof themeSpacing === 'function') {\n    return themeSpacing;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n  }\n  return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n  return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n  if (typeof propValue === 'string' || propValue == null) {\n    return propValue;\n  }\n  const abs = Math.abs(propValue);\n  const transformed = transformer(abs);\n  if (propValue >= 0) {\n    return transformed;\n  }\n  if (typeof transformed === 'number') {\n    return -transformed;\n  }\n  return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n  return propValue => cssProperties.reduce((acc, cssProperty) => {\n    acc[cssProperty] = getValue(transformer, propValue);\n    return acc;\n  }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n  // Using a hash computation over an array iteration could be faster, but with only 28 items,\n  // it's doesn't worth the bundle size.\n  if (keys.indexOf(prop) === -1) {\n    return null;\n  }\n  const cssProperties = getCssProperties(prop);\n  const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n  const propValue = props[prop];\n  return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n  const transformer = createUnarySpacing(props.theme);\n  return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n  return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n  return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n  return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n  const cache = {};\n  return arg => {\n    if (cache[arg] === undefined) {\n      cache[arg] = fn(arg);\n    }\n    return cache[arg];\n  };\n}","import merge from './merge';\nfunction compose(...styles) {\n  const handlers = styles.reduce((acc, style) => {\n    style.filterProps.forEach(prop => {\n      acc[prop] = style;\n    });\n    return acc;\n  }, {});\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    return Object.keys(props).reduce((acc, prop) => {\n      if (handlers[prop]) {\n        return merge(acc, handlers[prop](props));\n      }\n      return acc;\n    }, {});\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n  fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n  return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n  if (typeof value !== 'number') {\n    return value;\n  }\n  return `${value}px solid`;\n}\nexport const border = style({\n  prop: 'border',\n  themeKey: 'borders',\n  transform: borderTransform\n});\nexport const borderTop = style({\n  prop: 'borderTop',\n  themeKey: 'borders',\n  transform: borderTransform\n});\nexport const borderRight = style({\n  prop: 'borderRight',\n  themeKey: 'borders',\n  transform: borderTransform\n});\nexport const borderBottom = style({\n  prop: 'borderBottom',\n  themeKey: 'borders',\n  transform: borderTransform\n});\nexport const borderLeft = style({\n  prop: 'borderLeft',\n  themeKey: 'borders',\n  transform: borderTransform\n});\nexport const borderColor = style({\n  prop: 'borderColor',\n  themeKey: 'palette'\n});\nexport const borderTopColor = style({\n  prop: 'borderTopColor',\n  themeKey: 'palette'\n});\nexport const borderRightColor = style({\n  prop: 'borderRightColor',\n  themeKey: 'palette'\n});\nexport const borderBottomColor = style({\n  prop: 'borderBottomColor',\n  themeKey: 'palette'\n});\nexport const borderLeftColor = style({\n  prop: 'borderLeftColor',\n  themeKey: 'palette'\n});\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n  if (props.borderRadius !== undefined && props.borderRadius !== null) {\n    const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n    const styleFromPropValue = propValue => ({\n      borderRadius: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n  }\n  return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n  borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n  if (props.gap !== undefined && props.gap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n    const styleFromPropValue = propValue => ({\n      gap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.gap, styleFromPropValue);\n  }\n  return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n  if (props.columnGap !== undefined && props.columnGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n    const styleFromPropValue = propValue => ({\n      columnGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n  }\n  return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n  if (props.rowGap !== undefined && props.rowGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n    const styleFromPropValue = propValue => ({\n      rowGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n  }\n  return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n  prop: 'gridColumn'\n});\nexport const gridRow = style({\n  prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n  prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n  prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n  prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n  prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n  prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n  prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n  prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n  if (userValue === 'grey') {\n    return userValue;\n  }\n  return value;\n}\nexport const color = style({\n  prop: 'color',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const bgcolor = style({\n  prop: 'bgcolor',\n  cssProperty: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const backgroundColor = style({\n  prop: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n  return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n  prop: 'width',\n  transform: sizingTransform\n});\nexport const maxWidth = props => {\n  if (props.maxWidth !== undefined && props.maxWidth !== null) {\n    const styleFromPropValue = propValue => {\n      var _props$theme, _props$theme$breakpoi, _props$theme$breakpoi2;\n      const breakpoint = ((_props$theme = props.theme) == null ? void 0 : (_props$theme$breakpoi = _props$theme.breakpoints) == null ? void 0 : (_props$theme$breakpoi2 = _props$theme$breakpoi.values) == null ? void 0 : _props$theme$breakpoi2[propValue]) || breakpointsValues[propValue];\n      return {\n        maxWidth: breakpoint || sizingTransform(propValue)\n      };\n    };\n    return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n  }\n  return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n  prop: 'minWidth',\n  transform: sizingTransform\n});\nexport const height = style({\n  prop: 'height',\n  transform: sizingTransform\n});\nexport const maxHeight = style({\n  prop: 'maxHeight',\n  transform: sizingTransform\n});\nexport const minHeight = style({\n  prop: 'minHeight',\n  transform: sizingTransform\n});\nexport const sizeWidth = style({\n  prop: 'size',\n  cssProperty: 'width',\n  transform: sizingTransform\n});\nexport const sizeHeight = style({\n  prop: 'size',\n  cssProperty: 'height',\n  transform: sizingTransform\n});\nexport const boxSizing = style({\n  prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n  // borders\n  border: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderTop: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderRight: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderBottom: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderLeft: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderColor: {\n    themeKey: 'palette'\n  },\n  borderTopColor: {\n    themeKey: 'palette'\n  },\n  borderRightColor: {\n    themeKey: 'palette'\n  },\n  borderBottomColor: {\n    themeKey: 'palette'\n  },\n  borderLeftColor: {\n    themeKey: 'palette'\n  },\n  borderRadius: {\n    themeKey: 'shape.borderRadius',\n    style: borderRadius\n  },\n  // palette\n  color: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  bgcolor: {\n    themeKey: 'palette',\n    cssProperty: 'backgroundColor',\n    transform: paletteTransform\n  },\n  backgroundColor: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  // spacing\n  p: {\n    style: padding\n  },\n  pt: {\n    style: padding\n  },\n  pr: {\n    style: padding\n  },\n  pb: {\n    style: padding\n  },\n  pl: {\n    style: padding\n  },\n  px: {\n    style: padding\n  },\n  py: {\n    style: padding\n  },\n  padding: {\n    style: padding\n  },\n  paddingTop: {\n    style: padding\n  },\n  paddingRight: {\n    style: padding\n  },\n  paddingBottom: {\n    style: padding\n  },\n  paddingLeft: {\n    style: padding\n  },\n  paddingX: {\n    style: padding\n  },\n  paddingY: {\n    style: padding\n  },\n  paddingInline: {\n    style: padding\n  },\n  paddingInlineStart: {\n    style: padding\n  },\n  paddingInlineEnd: {\n    style: padding\n  },\n  paddingBlock: {\n    style: padding\n  },\n  paddingBlockStart: {\n    style: padding\n  },\n  paddingBlockEnd: {\n    style: padding\n  },\n  m: {\n    style: margin\n  },\n  mt: {\n    style: margin\n  },\n  mr: {\n    style: margin\n  },\n  mb: {\n    style: margin\n  },\n  ml: {\n    style: margin\n  },\n  mx: {\n    style: margin\n  },\n  my: {\n    style: margin\n  },\n  margin: {\n    style: margin\n  },\n  marginTop: {\n    style: margin\n  },\n  marginRight: {\n    style: margin\n  },\n  marginBottom: {\n    style: margin\n  },\n  marginLeft: {\n    style: margin\n  },\n  marginX: {\n    style: margin\n  },\n  marginY: {\n    style: margin\n  },\n  marginInline: {\n    style: margin\n  },\n  marginInlineStart: {\n    style: margin\n  },\n  marginInlineEnd: {\n    style: margin\n  },\n  marginBlock: {\n    style: margin\n  },\n  marginBlockStart: {\n    style: margin\n  },\n  marginBlockEnd: {\n    style: margin\n  },\n  // display\n  displayPrint: {\n    cssProperty: false,\n    transform: value => ({\n      '@media print': {\n        display: value\n      }\n    })\n  },\n  display: {},\n  overflow: {},\n  textOverflow: {},\n  visibility: {},\n  whiteSpace: {},\n  // flexbox\n  flexBasis: {},\n  flexDirection: {},\n  flexWrap: {},\n  justifyContent: {},\n  alignItems: {},\n  alignContent: {},\n  order: {},\n  flex: {},\n  flexGrow: {},\n  flexShrink: {},\n  alignSelf: {},\n  justifyItems: {},\n  justifySelf: {},\n  // grid\n  gap: {\n    style: gap\n  },\n  rowGap: {\n    style: rowGap\n  },\n  columnGap: {\n    style: columnGap\n  },\n  gridColumn: {},\n  gridRow: {},\n  gridAutoFlow: {},\n  gridAutoColumns: {},\n  gridAutoRows: {},\n  gridTemplateColumns: {},\n  gridTemplateRows: {},\n  gridTemplateAreas: {},\n  gridArea: {},\n  // positions\n  position: {},\n  zIndex: {\n    themeKey: 'zIndex'\n  },\n  top: {},\n  right: {},\n  bottom: {},\n  left: {},\n  // shadows\n  boxShadow: {\n    themeKey: 'shadows'\n  },\n  // sizing\n  width: {\n    transform: sizingTransform\n  },\n  maxWidth: {\n    style: maxWidth\n  },\n  minWidth: {\n    transform: sizingTransform\n  },\n  height: {\n    transform: sizingTransform\n  },\n  maxHeight: {\n    transform: sizingTransform\n  },\n  minHeight: {\n    transform: sizingTransform\n  },\n  boxSizing: {},\n  // typography\n  fontFamily: {\n    themeKey: 'typography'\n  },\n  fontSize: {\n    themeKey: 'typography'\n  },\n  fontStyle: {\n    themeKey: 'typography'\n  },\n  fontWeight: {\n    themeKey: 'typography'\n  },\n  letterSpacing: {},\n  textTransform: {},\n  lineHeight: {},\n  textAlign: {},\n  typography: {\n    cssProperty: false,\n    themeKey: 'typography'\n  }\n};\nexport default defaultSxConfig;","import { unstable_capitalize as capitalize } from '@mui/utils';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n  const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n  const union = new Set(allKeys);\n  return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n  return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n  function getThemeValue(prop, val, theme, config) {\n    const props = {\n      [prop]: val,\n      theme\n    };\n    const options = config[prop];\n    if (!options) {\n      return {\n        [prop]: val\n      };\n    }\n    const {\n      cssProperty = prop,\n      themeKey,\n      transform,\n      style\n    } = options;\n    if (val == null) {\n      return null;\n    }\n    if (themeKey === 'typography' && val === 'inherit') {\n      return {\n        [prop]: val\n      };\n    }\n    const themeMapping = getPath(theme, themeKey) || {};\n    if (style) {\n      return style(props);\n    }\n    const styleFromPropValue = propValueFinal => {\n      let value = getValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, val, styleFromPropValue);\n  }\n  function styleFunctionSx(props) {\n    var _theme$unstable_sxCon;\n    const {\n      sx,\n      theme = {}\n    } = props || {};\n    if (!sx) {\n      return null; // Emotion & styled-components will neglect null\n    }\n\n    const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n    /*\n     * Receive `sxInput` as object or callback\n     * and then recursively check keys & values to create media query object styles.\n     * (the result will be used in `styled`)\n     */\n    function traverse(sxInput) {\n      let sxObject = sxInput;\n      if (typeof sxInput === 'function') {\n        sxObject = sxInput(theme);\n      } else if (typeof sxInput !== 'object') {\n        // value\n        return sxInput;\n      }\n      if (!sxObject) {\n        return null;\n      }\n      const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n      const breakpointsKeys = Object.keys(emptyBreakpoints);\n      let css = emptyBreakpoints;\n      Object.keys(sxObject).forEach(styleKey => {\n        const value = callIfFn(sxObject[styleKey], theme);\n        if (value !== null && value !== undefined) {\n          if (typeof value === 'object') {\n            if (config[styleKey]) {\n              css = merge(css, getThemeValue(styleKey, value, theme, config));\n            } else {\n              const breakpointsValues = handleBreakpoints({\n                theme\n              }, value, x => ({\n                [styleKey]: x\n              }));\n              if (objectsHaveSameKeys(breakpointsValues, value)) {\n                css[styleKey] = styleFunctionSx({\n                  sx: value,\n                  theme\n                });\n              } else {\n                css = merge(css, breakpointsValues);\n              }\n            }\n          } else {\n            css = merge(css, getThemeValue(styleKey, value, theme, config));\n          }\n        }\n      });\n      return removeUnusedBreakpoints(breakpointsKeys, css);\n    }\n    return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n  }\n  return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport { deepmerge } from '@mui/utils';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nfunction createTheme(options = {}, ...args) {\n  const {\n      breakpoints: breakpointsInput = {},\n      palette: paletteInput = {},\n      spacing: spacingInput,\n      shape: shapeInput = {}\n    } = options,\n    other = _objectWithoutPropertiesLoose(options, _excluded);\n  const breakpoints = createBreakpoints(breakpointsInput);\n  const spacing = createSpacing(spacingInput);\n  let muiTheme = deepmerge({\n    breakpoints,\n    direction: 'ltr',\n    components: {},\n    // Inject component definitions.\n    palette: _extends({\n      mode: 'light'\n    }, paletteInput),\n    spacing,\n    shape: _extends({}, shape, shapeInput)\n  }, other);\n  muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n  muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n  muiTheme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nexport default createTheme;","import { createUnarySpacing } from '../spacing';\n/* tslint:enable:unified-signatures */\n\nexport default function createSpacing(spacingInput = 8) {\n  // Already transformed.\n  if (spacingInput.mui) {\n    return spacingInput;\n  }\n\n  // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n  // Smaller components, such as icons, can align to a 4dp grid.\n  // https://m2.material.io/design/layout/understanding-layout.html\n  const transform = createUnarySpacing({\n    spacing: spacingInput\n  });\n  const spacing = (...argsInput) => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!(argsInput.length <= 4)) {\n        console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n      }\n    }\n    const args = argsInput.length === 0 ? [1] : argsInput;\n    return args.map(argument => {\n      const output = transform(argument);\n      return typeof output === 'number' ? `${output}px` : output;\n    }).join(' ');\n  };\n  spacing.mui = true;\n  return spacing;\n}","import createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n  return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sx\"];\nimport { isPlainObject } from '@mui/utils';\nimport defaultSxConfig from './defaultSxConfig';\nconst splitProps = props => {\n  var _props$theme$unstable, _props$theme;\n  const result = {\n    systemProps: {},\n    otherProps: {}\n  };\n  const config = (_props$theme$unstable = props == null ? void 0 : (_props$theme = props.theme) == null ? void 0 : _props$theme.unstable_sxConfig) != null ? _props$theme$unstable : defaultSxConfig;\n  Object.keys(props).forEach(prop => {\n    if (config[prop]) {\n      result.systemProps[prop] = props[prop];\n    } else {\n      result.otherProps[prop] = props[prop];\n    }\n  });\n  return result;\n};\nexport default function extendSxProp(props) {\n  const {\n      sx: inSx\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    systemProps,\n    otherProps\n  } = splitProps(other);\n  let finalSx;\n  if (Array.isArray(inSx)) {\n    finalSx = [systemProps, ...inSx];\n  } else if (typeof inSx === 'function') {\n    finalSx = (...args) => {\n      const result = inSx(...args);\n      if (!isPlainObject(result)) {\n        return systemProps;\n      }\n      return _extends({}, systemProps, result);\n    };\n  } else {\n    finalSx = _extends({}, systemProps, inSx);\n  }\n  return _extends({}, otherProps, {\n    sx: finalSx\n  });\n}","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"variant\"];\nimport { unstable_capitalize as capitalize } from '@mui/utils';\nfunction isEmpty(string) {\n  return string.length === 0;\n}\n\n/**\n * Generates string classKey based on the properties provided. It starts with the\n * variant if defined, and then it appends all other properties in alphabetical order.\n * @param {object} props - the properties for which the classKey should be created.\n */\nexport default function propsToClassKey(props) {\n  const {\n      variant\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  let classKey = variant || '';\n  Object.keys(other).sort().forEach(key => {\n    if (key === 'color') {\n      classKey += isEmpty(classKey) ? props[key] : capitalize(props[key]);\n    } else {\n      classKey += `${isEmpty(classKey) ? key : capitalize(key)}${capitalize(props[key].toString())}`;\n    }\n  });\n  return classKey;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nimport styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';\nimport { getDisplayName } from '@mui/utils';\nimport createTheme from './createTheme';\nimport propsToClassKey from './propsToClassKey';\nimport styleFunctionSx from './styleFunctionSx';\nfunction isEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n  return typeof tag === 'string' &&\n  // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96;\n}\nconst getStyleOverrides = (name, theme) => {\n  if (theme.components && theme.components[name] && theme.components[name].styleOverrides) {\n    return theme.components[name].styleOverrides;\n  }\n  return null;\n};\nconst getVariantStyles = (name, theme) => {\n  let variants = [];\n  if (theme && theme.components && theme.components[name] && theme.components[name].variants) {\n    variants = theme.components[name].variants;\n  }\n  const variantsStyles = {};\n  variants.forEach(definition => {\n    const key = propsToClassKey(definition.props);\n    variantsStyles[key] = definition.style;\n  });\n  return variantsStyles;\n};\nconst variantsResolver = (props, styles, theme, name) => {\n  var _theme$components, _theme$components$nam;\n  const {\n    ownerState = {}\n  } = props;\n  const variantsStyles = [];\n  const themeVariants = theme == null ? void 0 : (_theme$components = theme.components) == null ? void 0 : (_theme$components$nam = _theme$components[name]) == null ? void 0 : _theme$components$nam.variants;\n  if (themeVariants) {\n    themeVariants.forEach(themeVariant => {\n      let isMatch = true;\n      Object.keys(themeVariant.props).forEach(key => {\n        if (ownerState[key] !== themeVariant.props[key] && props[key] !== themeVariant.props[key]) {\n          isMatch = false;\n        }\n      });\n      if (isMatch) {\n        variantsStyles.push(styles[propsToClassKey(themeVariant.props)]);\n      }\n    });\n  }\n  return variantsStyles;\n};\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n  return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport const systemDefaultTheme = createTheme();\nconst lowercaseFirstLetter = string => {\n  return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n  defaultTheme,\n  theme,\n  themeId\n}) {\n  return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nexport default function createStyled(input = {}) {\n  const {\n    themeId,\n    defaultTheme = systemDefaultTheme,\n    rootShouldForwardProp = shouldForwardProp,\n    slotShouldForwardProp = shouldForwardProp\n  } = input;\n  const systemSx = props => {\n    return styleFunctionSx(_extends({}, props, {\n      theme: resolveTheme(_extends({}, props, {\n        defaultTheme,\n        themeId\n      }))\n    }));\n  };\n  systemSx.__mui_systemSx = true;\n  return (tag, inputOptions = {}) => {\n    // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n    processStyles(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n    const {\n        name: componentName,\n        slot: componentSlot,\n        skipVariantsResolver: inputSkipVariantsResolver,\n        skipSx: inputSkipSx,\n        overridesResolver\n      } = inputOptions,\n      options = _objectWithoutPropertiesLoose(inputOptions, _excluded);\n\n    // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n    const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver : componentSlot && componentSlot !== 'Root' || false;\n    const skipSx = inputSkipSx || false;\n    let label;\n    if (process.env.NODE_ENV !== 'production') {\n      if (componentName) {\n        label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n      }\n    }\n    let shouldForwardPropOption = shouldForwardProp;\n    if (componentSlot === 'Root') {\n      shouldForwardPropOption = rootShouldForwardProp;\n    } else if (componentSlot) {\n      // any other slot specified\n      shouldForwardPropOption = slotShouldForwardProp;\n    } else if (isStringTag(tag)) {\n      // for string (html) tag, preserve the behavior in emotion & styled-components.\n      shouldForwardPropOption = undefined;\n    }\n    const defaultStyledResolver = styledEngineStyled(tag, _extends({\n      shouldForwardProp: shouldForwardPropOption,\n      label\n    }, options));\n    const muiStyledResolver = (styleArg, ...expressions) => {\n      const expressionsWithDefaultTheme = expressions ? expressions.map(stylesArg => {\n        // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n        // component stays as a function. This condition makes sure that we do not interpolate functions\n        // which are basically components used as a selectors.\n        return typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg ? props => {\n          return stylesArg(_extends({}, props, {\n            theme: resolveTheme(_extends({}, props, {\n              defaultTheme,\n              themeId\n            }))\n          }));\n        } : stylesArg;\n      }) : [];\n      let transformedStyleArg = styleArg;\n      if (componentName && overridesResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          const theme = resolveTheme(_extends({}, props, {\n            defaultTheme,\n            themeId\n          }));\n          const styleOverrides = getStyleOverrides(componentName, theme);\n          if (styleOverrides) {\n            const resolvedStyleOverrides = {};\n            Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n              resolvedStyleOverrides[slotKey] = typeof slotStyle === 'function' ? slotStyle(_extends({}, props, {\n                theme\n              })) : slotStyle;\n            });\n            return overridesResolver(props, resolvedStyleOverrides);\n          }\n          return null;\n        });\n      }\n      if (componentName && !skipVariantsResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          const theme = resolveTheme(_extends({}, props, {\n            defaultTheme,\n            themeId\n          }));\n          return variantsResolver(props, getVariantStyles(componentName, theme), theme, componentName);\n        });\n      }\n      if (!skipSx) {\n        expressionsWithDefaultTheme.push(systemSx);\n      }\n      const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n      if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n        const placeholders = new Array(numOfCustomFnsApplied).fill('');\n        // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n        transformedStyleArg = [...styleArg, ...placeholders];\n        transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n      } else if (typeof styleArg === 'function' &&\n      // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n      // component stays as a function. This condition makes sure that we do not interpolate functions\n      // which are basically components used as a selectors.\n      styleArg.__emotion_real !== styleArg) {\n        // If the type is function, we need to define the default theme.\n        transformedStyleArg = props => styleArg(_extends({}, props, {\n          theme: resolveTheme(_extends({}, props, {\n            defaultTheme,\n            themeId\n          }))\n        }));\n      }\n      const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n      if (process.env.NODE_ENV !== 'production') {\n        let displayName;\n        if (componentName) {\n          displayName = `${componentName}${componentSlot || ''}`;\n        }\n        if (displayName === undefined) {\n          displayName = `Styled(${getDisplayName(tag)})`;\n        }\n        Component.displayName = displayName;\n      }\n      if (tag.muiName) {\n        Component.muiName = tag.muiName;\n      }\n      return Component;\n    };\n    if (defaultStyledResolver.withConfig) {\n      muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n    }\n    return muiStyledResolver;\n  };\n}","import createStyled from './createStyled';\nconst styled = createStyled();\nexport default styled;","/**\n * @mui/styled-engine v5.12.0\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nexport default function styled(tag, options) {\n  const stylesFactory = emStyled(tag, options);\n  if (process.env.NODE_ENV !== 'production') {\n    return (...styles) => {\n      const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n      if (styles.length === 0) {\n        console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n      } else if (styles.some(style => style === undefined)) {\n        console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n      }\n      return stylesFactory(...styles);\n    };\n  }\n  return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const internal_processStyles = (tag, processor) => {\n  // Emotion attaches all the styles as `__emotion_styles`.\n  // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n  if (Array.isArray(tag.__emotion_styles)) {\n    tag.__emotion_styles = processor(tag.__emotion_styles);\n  }\n};\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from './StyledEngineProvider';\nexport { default as GlobalStyles } from './GlobalStyles';","import { internal_resolveProps as resolveProps } from '@mui/utils';\nexport default function getThemeProps(params) {\n  const {\n    theme,\n    name,\n    props\n  } = params;\n  if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n    return props;\n  }\n  return resolveProps(theme.components[name].defaultProps, props);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\", \"className\", \"useFlexGap\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { deepmerge, unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';\nimport systemStyled from '../styled';\nimport useThemePropsSystem from '../useThemeProps';\nimport { extendSxProp } from '../styleFunctionSx';\nimport createTheme from '../createTheme';\nimport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues } from '../breakpoints';\nimport { createUnarySpacing, getValue } from '../spacing';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = systemStyled('div', {\n  name: 'MuiStack',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n  return useThemePropsSystem({\n    props,\n    name: 'MuiStack',\n    defaultTheme\n  });\n}\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\nfunction joinChildren(children, separator) {\n  const childrenArray = React.Children.toArray(children).filter(Boolean);\n  return childrenArray.reduce((output, child, index) => {\n    output.push(child);\n    if (index < childrenArray.length - 1) {\n      output.push( /*#__PURE__*/React.cloneElement(separator, {\n        key: `separator-${index}`\n      }));\n    }\n    return output;\n  }, []);\n}\nconst getSideFromDirection = direction => {\n  return {\n    row: 'Left',\n    'row-reverse': 'Right',\n    column: 'Top',\n    'column-reverse': 'Bottom'\n  }[direction];\n};\nexport const style = ({\n  ownerState,\n  theme\n}) => {\n  let styles = _extends({\n    display: 'flex',\n    flexDirection: 'column'\n  }, handleBreakpoints({\n    theme\n  }, resolveBreakpointValues({\n    values: ownerState.direction,\n    breakpoints: theme.breakpoints.values\n  }), propValue => ({\n    flexDirection: propValue\n  })));\n  if (ownerState.spacing) {\n    const transformer = createUnarySpacing(theme);\n    const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n      if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n        acc[breakpoint] = true;\n      }\n      return acc;\n    }, {});\n    const directionValues = resolveBreakpointValues({\n      values: ownerState.direction,\n      base\n    });\n    const spacingValues = resolveBreakpointValues({\n      values: ownerState.spacing,\n      base\n    });\n    if (typeof directionValues === 'object') {\n      Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n        const directionValue = directionValues[breakpoint];\n        if (!directionValue) {\n          const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n          directionValues[breakpoint] = previousDirectionValue;\n        }\n      });\n    }\n    const styleFromPropValue = (propValue, breakpoint) => {\n      if (ownerState.useFlexGap) {\n        return {\n          gap: getValue(transformer, propValue)\n        };\n      }\n      return {\n        '& > :not(style) + :not(style)': {\n          margin: 0,\n          [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n        }\n      };\n    };\n    styles = deepmerge(styles, handleBreakpoints({\n      theme\n    }, spacingValues, styleFromPropValue));\n  }\n  styles = mergeBreakpointsInOrder(theme.breakpoints, styles);\n  return styles;\n};\nexport default function createStack(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiStack'\n  } = options;\n  const useUtilityClasses = () => {\n    const slots = {\n      root: ['root']\n    };\n    return composeClasses(slots, slot => generateUtilityClass(componentName, slot), {});\n  };\n  const StackRoot = createStyledComponent(style);\n  const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n    const themeProps = useThemeProps(inProps);\n    const props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.\n    const {\n        component = 'div',\n        direction = 'column',\n        spacing = 0,\n        divider,\n        children,\n        className,\n        useFlexGap = false\n      } = props,\n      other = _objectWithoutPropertiesLoose(props, _excluded);\n    const ownerState = {\n      direction,\n      spacing,\n      useFlexGap\n    };\n    const classes = useUtilityClasses();\n    return /*#__PURE__*/_jsx(StackRoot, _extends({\n      as: component,\n      ownerState: ownerState,\n      ref: ref,\n      className: clsx(classes.root, className)\n    }, other, {\n      children: divider ? joinChildren(children, divider) : children\n    }));\n  });\n  process.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n    children: PropTypes.node,\n    direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n    divider: PropTypes.node,\n    spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n    sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n  } : void 0;\n  return Stack;\n}","import getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n  props,\n  name,\n  defaultTheme,\n  themeId\n}) {\n  let theme = useTheme(defaultTheme);\n  if (themeId) {\n    theme = theme[themeId] || theme;\n  }\n  const mergedProps = getThemeProps({\n    theme,\n    name,\n    props\n  });\n  return mergedProps;\n}","import * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n  const contextTheme = React.useContext(ThemeContext);\n  return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","import PropTypes from 'prop-types';\nimport createStack from './createStack';\n/**\n *\n * Demos:\n *\n * - [Stack (Joy UI)](https://mui.com/joy/react-stack/)\n * - [Stack (Material UI)](https://mui.com/material-ui/react-stack/)\n * - [Stack (MUI System)](https://mui.com/system/react-stack/)\n *\n * API:\n *\n * - [Stack API](https://mui.com/system/api/stack/)\n */\nconst Stack = createStack();\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Defines the `flex-direction` style property.\n   * It is applied for all screen sizes.\n   * @default 'column'\n   */\n  direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n  /**\n   * Add an element between each child.\n   */\n  divider: PropTypes.node,\n  /**\n   * Defines the space between immediate children.\n   * @default 0\n   */\n  spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * The system prop, which allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * If `true`, the CSS flexbox `gap` is used instead of applying `margin` to children.\n   *\n   * While CSS `gap` removes the [known limitations](https://mui.com/joy-ui/react-stack/#limitations),\n   * it is not fully supported in some browsers. We recommend checking https://caniuse.com/?search=flex%20gap before using this flag.\n   *\n   * To enable this flag globally, follow the theme's default props configuration.\n   * @default false\n   */\n  useFlexGap: PropTypes.bool\n} : void 0;\nexport default Stack;","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n  const output = {};\n  Object.keys(slots).forEach(\n  // `Objet.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n  // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n  slot => {\n    output[slot] = slots[slot].reduce((acc, key) => {\n      if (key) {\n        const utilityClass = getUtilityClass(key);\n        if (utilityClass !== '') {\n          acc.push(utilityClass);\n        }\n        if (classes && classes[key]) {\n          acc.push(classes[key]);\n        }\n      }\n      return acc;\n    }, []).join(' ');\n  });\n  return output;\n}","import { SvgIcon, SvgIconProps } from '@mui/material'\nimport React from 'react'\n\nexport function PDFIcon(props: SvgIconProps) {\n    return (\n        <SvgIcon {...props}>\n            <svg width='26' height='34' viewBox='0 0 26 50' fill='none' xmlns='http://www.w3.org/2000/svg'>\n                <path\n                    d='M24.9717 11.5L14.8333 1.36165C14.5757 1.10371 14.2262 0.958634 13.8617 0.958313H5.66667C4.32953 0.958313 3.04717 1.48949 2.10167 2.43498C1.15617 3.38048 0.625 4.66285 0.625 5.99998V28C0.625 29.3371 1.15617 30.6195 2.10167 31.565C3.04717 32.5105 4.32953 33.0416 5.66667 33.0416H20.3333C21.6705 33.0416 22.9528 32.5105 23.8983 31.565C24.8438 30.6195 25.375 29.3371 25.375 28V12.4166C25.3606 12.0713 25.2166 11.744 24.9717 11.5ZM15.2917 5.65165L20.6817 11.0416H15.2917V5.65165ZM20.3333 30.2916H5.66667C5.05888 30.2916 4.47598 30.0502 4.04621 29.6204C3.61644 29.1907 3.375 28.6078 3.375 28V5.99998C3.375 5.39219 3.61644 4.8093 4.04621 4.37953C4.47598 3.94976 5.05888 3.70831 5.66667 3.70831H12.5417V12.4166C12.5464 12.7798 12.6928 13.1268 12.9496 13.3837C13.2065 13.6405 13.5535 13.7869 13.9167 13.7916H22.625V28C22.625 28.6078 22.3836 29.1907 21.9538 29.6204C21.524 30.0502 20.9411 30.2916 20.3333 30.2916Z'\n                    fill='#fff'\n                />\n                <path\n                    d='M15.7317 22.225C14.6044 21.5176 13.756 20.4425 13.33 19.1817C13.7248 18.0021 13.8439 16.7478 13.6784 15.515C13.6255 15.2044 13.474 14.9191 13.2464 14.7013C13.0187 14.4835 12.727 14.3448 12.4144 14.3058C12.1018 14.2667 11.7849 14.3293 11.5107 14.4844C11.2364 14.6394 11.0194 14.8786 10.8917 15.1667C10.683 16.6487 10.8403 18.1594 11.35 19.5667C10.6537 21.1933 9.87664 22.7842 9.02169 24.3333C7.72002 25.0667 5.94169 26.1667 5.66669 27.4317C5.44669 28.4583 7.37169 31.0983 10.6534 25.3783C12.1126 24.8366 13.6072 24.3956 15.1267 24.0583C16.2499 24.7005 17.5029 25.0827 18.7934 25.1767C19.0897 25.1843 19.3816 25.1043 19.6325 24.9465C19.8835 24.7887 20.0822 24.5603 20.2036 24.2899C20.3251 24.0195 20.3639 23.7193 20.3152 23.4269C20.2666 23.1345 20.1325 22.8631 19.93 22.6467C19.16 21.8583 16.8684 22.0783 15.7317 22.225ZM6.96836 27.725C7.48213 26.8458 8.16063 26.0739 8.96669 25.4517C7.72002 27.4317 6.96836 27.78 6.96836 27.7433V27.725ZM12.3217 15.24C12.7984 15.24 12.7617 17.3483 12.4317 17.9167C12.1831 17.0521 12.1454 16.1405 12.3217 15.2583V15.24ZM10.7267 24.1867C11.3478 23.0533 11.887 21.877 12.34 20.6667C12.8257 21.5704 13.5012 22.3585 14.32 22.9767C13.09 23.2848 11.888 23.6956 10.7267 24.205V24.1867ZM19.3434 23.8567C19.3434 23.8567 19.0134 24.26 16.905 23.3433C19.1967 23.1967 19.5817 23.7283 19.3434 23.875V23.8567Z'\n                    fill='#fff'\n                />\n            </svg>\n        </SvgIcon>\n    )\n}\n\nexport function TrashIcon(props: SvgIconProps) {\n    return (\n        <SvgIcon {...props}>\n            <svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'>\n                <path\n                    d='M20 8.70001H4C3.90151 8.70001 3.80398 8.68061 3.71299 8.64292C3.62199 8.60523 3.53931 8.54999 3.46967 8.48034C3.40003 8.4107 3.34478 8.32802 3.30709 8.23703C3.2694 8.14603 3.25 8.0485 3.25 7.95001C3.25 7.85152 3.2694 7.75399 3.30709 7.663C3.34478 7.57201 3.40003 7.48933 3.46967 7.41968C3.53931 7.35004 3.62199 7.29479 3.71299 7.2571C3.80398 7.21941 3.90151 7.20001 4 7.20001H20C20.1989 7.20001 20.3897 7.27903 20.5303 7.41968C20.671 7.56033 20.75 7.7511 20.75 7.95001C20.75 8.14892 20.671 8.33969 20.5303 8.48034C20.3897 8.621 20.1989 8.70001 20 8.70001Z'\n                    fill='white'\n                />\n                <path\n                    d='M16.44 20.75H7.56C7.24309 20.7717 6.92503 20.7302 6.62427 20.628C6.3235 20.5259 6.04601 20.365 5.80788 20.1548C5.56975 19.9446 5.37572 19.6891 5.23704 19.4034C5.09836 19.1176 5.01779 18.8071 5 18.49V7.99998C5 7.80107 5.07902 7.61031 5.21967 7.46965C5.36032 7.329 5.55109 7.24998 5.75 7.24998C5.94891 7.24998 6.13968 7.329 6.28033 7.46965C6.42098 7.61031 6.5 7.80107 6.5 7.99998V18.49C6.5 18.9 6.97 19.25 7.5 19.25H16.38C16.94 19.25 17.38 18.9 17.38 18.49V7.99998C17.38 7.78516 17.4653 7.57913 17.6172 7.42723C17.7691 7.27532 17.9752 7.18998 18.19 7.18998C18.4048 7.18998 18.6109 7.27532 18.7628 7.42723C18.9147 7.57913 19 7.78516 19 7.99998V18.49C18.9822 18.8071 18.9016 19.1176 18.763 19.4034C18.6243 19.6891 18.4303 19.9446 18.1921 20.1548C17.954 20.365 17.6765 20.5259 17.3757 20.628C17.075 20.7302 16.7569 20.7717 16.44 20.75ZM16.56 7.74998C16.4611 7.75133 16.363 7.73285 16.2714 7.69563C16.1798 7.65842 16.0966 7.60323 16.0267 7.53331C15.9568 7.4634 15.9016 7.38018 15.8644 7.28858C15.8271 7.19698 15.8087 7.09885 15.81 6.99998V5.50998C15.81 5.09999 15.33 4.74998 14.81 4.74998H9.22C8.67 4.74998 8.22 5.09999 8.22 5.50998V6.99998C8.22 7.1989 8.14098 7.38966 8.00033 7.53031C7.85968 7.67097 7.66891 7.74998 7.47 7.74998C7.27109 7.74998 7.08032 7.67097 6.93967 7.53031C6.79902 7.38966 6.72 7.1989 6.72 6.99998V5.50998C6.75872 4.8813 7.04203 4.29275 7.50929 3.87035C7.97655 3.44795 8.5906 3.22527 9.22 3.24998H14.78C15.4145 3.21717 16.0362 3.4362 16.51 3.85944C16.9838 4.28267 17.2713 4.87586 17.31 5.50998V6.99998C17.3113 7.09931 17.2929 7.19792 17.2558 7.29007C17.2187 7.38222 17.1637 7.46608 17.0939 7.53679C17.0241 7.6075 16.941 7.66364 16.8493 7.70195C16.7577 7.74027 16.6593 7.75999 16.56 7.75998V7.74998Z'\n                    fill='white'\n                />\n                <path\n                    d='M10.22 17C10.0219 16.9974 9.8326 16.9175 9.6925 16.7774C9.55241 16.6373 9.47256 16.4481 9.46997 16.25V11.72C9.46997 11.5211 9.54899 11.3303 9.68964 11.1896C9.83029 11.049 10.0211 10.97 10.22 10.97C10.4189 10.97 10.6096 11.049 10.7503 11.1896C10.891 11.3303 10.97 11.5211 10.97 11.72V16.24C10.9713 16.3393 10.9529 16.4379 10.9158 16.5301C10.8787 16.6222 10.8236 16.7061 10.7539 16.7768C10.6841 16.8475 10.601 16.9036 10.5093 16.9419C10.4177 16.9803 10.3193 17 10.22 17Z'\n                    fill='white'\n                />\n                <path\n                    d='M13.78 17C13.5811 17 13.3904 16.921 13.2497 16.7803C13.109 16.6396 13.03 16.4489 13.03 16.25V11.72C13.03 11.5211 13.109 11.3303 13.2497 11.1896C13.3904 11.049 13.5811 10.97 13.78 10.97C13.9789 10.97 14.1697 11.049 14.3104 11.1896C14.451 11.3303 14.53 11.5211 14.53 11.72V16.24C14.53 16.4398 14.4513 16.6316 14.311 16.7739C14.1706 16.9161 13.9799 16.9973 13.78 17Z'\n                    fill='white'\n                />\n            </svg>\n        </SvgIcon>\n    )\n}\n","import { Box, Button, Grid, InputLabel, LinearProgress, Typography, useMediaQuery, useTheme } from '@mui/material'\nimport { Stack } from '@mui/system'\nimport axios, { AxiosProgressEvent, AxiosResponse } from 'axios'\nimport get from 'lodash.get'\nimport React, { FormEvent, useContext, useEffect, useState } from 'react'\nimport { DropzoneOptions, useDropzone } from 'react-dropzone'\nimport { AuthContext } from '../../../context/auth'\nimport { FormContext } from '../../../context/form'\n\nimport { PDFIcon, TrashIcon } from '../../icons/icons'\n\ninterface FileState {\n    id: number\n    name: string\n    size: number\n    loading: boolean\n    error: boolean\n    file: File\n}\n\nfunction bytesToMegabytes(bytes: number): number {\n    const megabytes = bytes / (1024 * 1024)\n    return megabytes\n}\n\nfunction bytesToKBorMB(bytes: number): string {\n    const KB = 1024\n    const MB = 1024 * KB\n\n    if (bytes < MB) {\n        const KBValue = bytes / KB\n        return `${KBValue.toFixed(1)}KB`\n    } else {\n        const MBValue = bytes / MB\n        return `${MBValue.toFixed(1)}MB`\n    }\n}\n\nexport default function DropFileUpload({\n    name,\n    tipoArquivo,\n    title,\n    required = false,\n    multiple = false,\n    apiURL,\n    sizeLimit = 4,\n    xs = 12,\n    sm,\n    md,\n    route = '',\n    tstToken = '',\n    dropZoneOptions,\n}: {\n    name: string\n    tipoArquivo: string\n    title: string\n    apiURL: string\n    route?: string\n    tstToken?: string\n    required?: boolean\n    multiple?: boolean\n    sizeLimit?: number\n    dropZoneOptions?: DropzoneOptions\n    xs?: number\n    sm?: number\n    md?: number\n}) {\n    const { getRootProps, getInputProps } = useDropzone({\n        multiple,\n        useFsAccessApi: true,\n        onDrop: (dropFiles) => {\n            const fileList: FileState[] = []\n            setProgress(-1)\n\n            dropFiles\n                .filter((file) => {\n                    if (bytesToMegabytes(file.size) > sizeLimit) {\n                        setErrorMsg(`Por favor, escolha um arquivo com tamanho inferior a ${sizeLimit} MB`)\n\n                        setTimeout(() => {\n                            setErrorMsg('')\n                        }, 3000)\n\n                        return false\n                    }\n\n                    return true\n                })\n                .forEach((file, index) => {\n                    let id: number = Date.now() + index\n\n                    // fetch API\n\n                    const fd = new FormData()\n\n                    fd.append('files', file)\n                    fd.append('tipoArquivo', tipoArquivo)\n\n                    axios\n                        .post(apiURL, fd, {\n                            onUploadProgress: (progressEvent: AxiosProgressEvent) => {\n                                const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total!)\n                                setProgress(percentCompleted)\n\n                                if (percentCompleted >= 100) {\n                                    setFiles((f) => [...f, { id: id, name: file.name, loading: true, error: false, file: file, size: file.size }])\n                                }\n                            },\n                            headers: { Authorization: `Bearer ${tstToken === '' ? (user ? user.token : '') : tstToken}` },\n                        })\n                        .then((res: AxiosResponse<any, any>) => {\n                            if (res.status > 200) {\n                                const fileIdFromApi = get(res.data, route, res.data)[0]\n                                const fileId: number = fileIdFromApi['coSeqArquivo']\n\n                                context.setFilesUid((fId) => [\n                                    ...fId,\n                                    {\n                                        CO_SEQ_ARQUIVO: fileId,\n                                        CO_TIPO_ARQUIVO: parseInt(tipoArquivo),\n                                    },\n                                ])\n                                setFilesLoaded((fl) => [...fl, id])\n\n                                const f: { [key: number]: number } = {}\n                                f[id] = fileId\n                                setFilesIds((ids) => ({ ...ids, ...f }))\n                            } else {\n                                setProgress(-1)\n                                removeFile(id)\n                            }\n                        })\n                        .catch((err) => {\n                            console.log(err)\n                            setProgress(-1)\n                            removeFile(id)\n                        })\n                })\n        },\n        ...(dropZoneOptions || {}),\n    })\n    const context = useContext(FormContext)!\n    const { user } = useContext(AuthContext)\n\n    const theme = useTheme()\n    const isSmall = useMediaQuery(theme.breakpoints.only('xs'))\n\n    const [progress, setProgress] = useState(-1)\n    const [files, setFiles] = useState<FileState[]>([])\n    const [filesLoaded, setFilesLoaded] = useState<number[]>([])\n    const [fileIds, setFilesIds] = useState<{ [key: number]: number }>({})\n    // const [filesError, setFilesError] = useState<number[]>([])\n\n    const [errorMsg, setErrorMsg] = useState('')\n\n    const removeFile = (id: number, hideMsg?: boolean, fileId?: number) => {\n        setFiles(files.filter((x) => x.id !== id))\n\n        if (fileId) context.setFilesUid((fId) => fId.filter((idd) => idd.CO_SEQ_ARQUIVO !== fileId))\n\n        if (!hideMsg) {\n            setErrorMsg('Erro ao enviar arquivo. Verifique o formato e tente mais tarde.')\n\n            setTimeout(() => {\n                setErrorMsg('')\n            }, 3000)\n        }\n    }\n\n    const deleteFile = (e: FormEvent, id: number) => {\n        if (Object.keys(fileIds).includes(id.toString())) {\n            fetch(`${apiURL}/${fileIds[id]}`, {\n                method: 'DELETE',\n                headers: {\n                    Authorization: `Bearer ${tstToken === '' ? (user ? user.token : '') : tstToken}`,\n                },\n            })\n                .then((res) => {\n                    if (!res.ok) removeFile(id, true, fileIds[id])\n\n                    if (res.status === 200) {\n                        removeFile(id, true, fileIds[id])\n                    }\n                })\n                .catch((err) => console.log(err))\n        }\n    }\n\n    useEffect(() => {\n        const dt = new DataTransfer()\n\n        files.forEach((x) => {\n            dt.items.add(x.file)\n        })\n\n        context?.formSetValue(name!, dt.files)\n    }, [files, context, name])\n\n    useEffect(() => {\n        return () => {\n            context.setFilesUid((files) => files.filter((x) => x.CO_TIPO_ARQUIVO !== parseInt(tipoArquivo)))\n        }\n    }, [])\n\n    return (\n        <Grid item {...{ xs, sm, md }} sx={{ width: '100%' }}>\n            <Box bgcolor='white' p={2} borderRadius='8px' color='#1E293B'>\n                <InputLabel required={required} sx={{ marginBottom: 2, textTransform: 'capitalize' }}>\n                    {title}\n                </InputLabel>\n                <Stack\n                    {...getRootProps({ className: 'dropzone' })}\n                    bgcolor='#EFEFEF'\n                    justifyContent='center'\n                    alignItems='center'\n                    textAlign='center'\n                    borderRadius='6px'\n                    py={8}\n                    border='solid 1.5px #989898'\n                    sx={{\n                        borderStyle: 'dashed',\n                        cursor: 'pointer',\n                    }}\n                >\n                    <input\n                        {...getInputProps()}\n                        {...context.formRegister(name, {\n                            validate: (v, f) => {\n                                if ((v.length && filesLoaded.length) <= 0 && required) return 'O campo de arquivo é obrigatório'\n                            },\n                        })}\n                    />\n                    <Stack spacing={2} alignItems='center'>\n                        <Box>\n                            <Typography fontWeight={600} fontSize={18}>\n                                Arraste seus arquivos até aqui\n                            </Typography>\n                            <Typography>ou selecione arquivos que estão no seu computador</Typography>\n                        </Box>\n                        <Button\n                            variant='contained'\n                            sx={{\n                                backgroundColor: '#64748B',\n                                pointerEvents: 'none',\n                                borderRadius: '8px',\n                                width: 'fit-content',\n                            }}\n                        >\n                            Selecionar\n                        </Button>\n                        <Typography fontWeight={300}>Tamanho máximo por arquivo {sizeLimit}MB</Typography>\n                    </Stack>\n                </Stack>\n\n                <Typography pt={2} fontSize={16} fontWeight={600}>\n                    Você selecionou {files.length} arquivo{files.length > 1 ? 's' : ''}.\n                </Typography>\n\n                <Stack width='100%' marginTop={1} spacing={1}>\n                    {files.map((x) => (\n                        <Stack direction='row' justifyContent='space-between' border='solid 1px #E2E8F0' borderRadius={2} p={1}>\n                            <Stack direction='row'>\n                                <Stack direction='row' justifyContent='center' alignItems='center' minWidth={30} pr={1.5}>\n                                    <PDFIcon\n                                        sx={{\n                                            filter: 'invert(42%) sepia(86%) saturate(2412%) hue-rotate(326deg) brightness(86%) contrast(102%)',\n                                            transform: 'scale(1.5)',\n                                            width: 30,\n                                        }}\n                                    />\n                                </Stack>\n                                <Stack>\n                                    <Typography fontWeight={600}>{x.name}</Typography>\n                                    <Typography fontSize={14}>{bytesToKBorMB(x.size)}</Typography>\n                                </Stack>\n                            </Stack>\n\n                            <Button\n                                size='small'\n                                startIcon={<TrashIcon />}\n                                variant='contained'\n                                onClick={(e) => deleteFile(e, x.id)}\n                                sx={{\n                                    height: 40,\n                                    backgroundColor: '#DE3F50',\n                                    borderRadius: '8px',\n                                }}\n                            >\n                                Remover\n                            </Button>\n                        </Stack>\n                    ))}\n\n                    {progress > 0 && progress < 100 && (\n                        <LinearProgress\n                            value={progress}\n                            sx={{\n                                backgroundColor: '#103D6A',\n                                '.MuiLinearProgress-bar': {\n                                    backgroundColor: '#BDDDFA',\n                                },\n                            }}\n                        />\n                    )}\n                </Stack>\n\n                {errorMsg && (\n                    <>\n                        <Typography variant='caption' color='#e53935' fontWeight={600} fontSize={14} paddingTop={2}>\n                            {errorMsg}\n                        </Typography>\n                        <br />\n                    </>\n                )}\n\n                {get(context?.errors, name!) && (\n                    <Typography variant='caption' color='#e53935' fontWeight={600} fontSize={14}>\n                        * O campo de arquivo é obrigatório\n                    </Typography>\n                )}\n            </Box>\n        </Grid>\n    )\n}\n","import { FormControlLabel, InputLabel, Stack, Switch as MUISwitch, Typography } from '@mui/material'\nimport React, { useContext, useEffect, useMemo } from 'react'\nimport { FormContext } from '../../../context/form'\n\ninterface SwitchProps {\n    name: string\n    defaultChecked?: boolean\n    title?: string\n    overrideYes?: string\n    overrideNo?: string\n}\n\nexport function Switch({ defaultChecked = false, ...props }: SwitchProps) {\n    const context = useContext(FormContext)\n\n    useEffect(() => {\n        context?.formSetValue(props.name, defaultChecked)\n    }, [])\n\n    const yesMessage = useMemo(() => props.overrideYes || 'Sim', [props.overrideYes])\n    const noMessage = useMemo(() => props.overrideNo || 'Não', [props.overrideNo])\n\n    return (\n        <Stack sx={{ alignItems: 'center', justifyContent: 'center' }}>\n            {props.title && <InputLabel>{props.title}</InputLabel>}\n            <FormControlLabel\n                control={<MUISwitch defaultChecked={defaultChecked} {...context?.formRegister(props.name)} />}\n                label={\n                    <Typography width={25} sx={{ userSelect: 'none', fontWeight: 600 }}>\n                        {context?.formWatch(props.name) ? yesMessage : noMessage}\n                    </Typography>\n                }\n                sx={{ paddingLeft: 1 }}\n            />\n        </Stack>\n    )\n}\n\nexport default React.memo(Switch)\n","import React, { useContext, useEffect, useState } from 'react'\nimport { FormContext } from '../../../context/form'\n\n// Coloque esse componente dentro de um bloco que é retirado com o valor do input\nexport function ToggleVisibility({ invert = false, hasCheckValue = false, ...props }: { switchId: string; unregisterNameList: string[]; invert?: boolean; hasCheckValue: boolean }) {\n    const context = useContext(FormContext)!\n\n    useEffect(() => {\n        return () => {\n            if (hasCheckValue ? invert : context.formWatch(props.switchId) === invert) {\n                props.unregisterNameList.forEach((x) => context.formUnregister(x))\n            }\n        }\n    }, [props.unregisterNameList])\n\n    return <></>\n}\n\nexport function SwitchWatch({\n    invert = false,\n    checkValue,\n    ...props\n}: {\n    children: JSX.Element | JSX.Element[]\n    switchId: string\n    unregisterNameList: string[]\n    invert?: boolean\n    checkValue?: string | number\n}) {\n    const context = useContext(FormContext)!\n\n    return (\n        <>\n            {(checkValue ? (context?.formWatch(props.switchId) === checkValue) !== invert : context?.formWatch(props.switchId) !== invert) && (\n                <>\n                    <ToggleVisibility\n                        switchId={props.switchId}\n                        unregisterNameList={props.unregisterNameList}\n                        hasCheckValue={!!checkValue}\n                        invert={checkValue ? (context?.formWatch(props.switchId) === checkValue) !== invert : invert}\n                    />\n                    {props.children}\n                </>\n            )}\n        </>\n    )\n}\n","import { Button, TextField } from '@mui/material'\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react'\nimport { IMaskInput, useIMask } from 'react-imask'\nimport { FormContext } from '../../../context/form'\n\nconst TextMaskCustom = React.forwardRef<HTMLElement>(function TextMaskCustom(props: any, ref: any) {\n    const { onChange, maskProps, onMask, maskValue, setMaskValue, watchValue, ...prop } = props\n    const [mask, setMask] = useState(maskProps.mask)\n\n    delete prop.value\n\n    const myRef = useRef<any | null>(null)\n    const [myValue, setMyValue] = useState('')\n    const context = useContext(FormContext)!\n\n    useEffect(() => {\n        if (watchValue) {\n            setMyValue(watchValue)\n        }\n    }, [watchValue])\n\n    useEffect(() => {\n        context.formSetValue(prop.name, myRef.current.element.value)\n    }, [myValue])\n\n    delete prop.watchValue\n\n    return (\n        <IMaskInput\n            {...prop}\n            {...maskProps}\n            mask={mask}\n            value={myValue}\n            ref={myRef}\n            inputRef={ref}\n            onChange={(e) => {}}\n            onAccept={(value, mask) => {\n                setMyValue(value)\n                mask.updateValue()\n\n                if (!onMask) return\n\n                onMask(value, setMask)\n            }}\n        />\n    )\n})\n\nexport default function MaskInput(props: {\n    formConfig: object\n    defaultValue?: string\n    maskProps: { mask: string | RegExp; definitions?: { [key: string]: string | RegExp } }\n    disabled?: boolean\n    watchValue?: string\n    onMask?: (value: string, setMask: React.Dispatch<React.SetStateAction<string>>) => void\n}) {\n    const context = useContext(FormContext)!\n    const [maskValue, setMaskValue] = useState('')\n\n    return (\n        <>\n            <TextField\n                {...props.formConfig}\n                onInput={(e) => {\n                    const name = (props.formConfig as any).name as string\n                    const value = (e.target as any).value\n\n                    context.formSetValue(name, value)\n                }}\n                InputProps={{\n                    inputComponent: TextMaskCustom as any,\n                    inputProps: { maskProps: props.maskProps, onMask: props.onMask, maskValue, setMaskValue, watchValue: props.watchValue },\n                }}\n                disabled={props.disabled}\n                fullWidth\n            />\n        </>\n    )\n}\n","import { Grid, InputLabel, TextField } from '@mui/material'\nimport get from 'lodash.get'\nimport React, { useContext, useEffect } from 'react'\nimport MaskInput from './MaskInput'\nimport { FormContext } from '../../../context/form'\n\nexport function Input({\n    type = 'input',\n    numberMask = '000000000000000',\n    xs = 12,\n    sm,\n    inputMinLength = 1,\n    inputMaxLength = 255,\n    defaultValue = '',\n    md,\n    disabled = false,\n    watchValue,\n    ...props\n}: {\n    type: 'cnpj' | 'cpf' | 'input' | 'email' | 'cpf_cnpj' | 'phone' | 'input' | 'number' | 'rg' | 'password' | 'cep' | 'sei'\n    name: string\n    watchValue?: string\n    title?: string\n    required?: boolean\n    numberMask?: string\n    customPlaceholder?: string\n    defaultValue?: string\n    inputMinLength?: number\n    inputMaxLength?: number\n    xs?: number\n    sm?: number\n    md?: number\n    disabled?: boolean\n}) {\n    const context = useContext(FormContext)!\n\n    useEffect(() => {\n        if (watchValue !== undefined) context.formSetValue(props.name, watchValue)\n    }, [watchValue])\n\n    const chooseInput = () => {\n        const inputConfig: object = {\n            fullWidth: true,\n            size: 'small',\n            placeholder: props.customPlaceholder ? props.customPlaceholder : props.title,\n        }\n\n        const name = props.name!\n        const errorData = get(context?.errors, props.name!)\n        const helperText: string = errorData?.message as string\n        const error = errorData ? true : false\n\n        const formConfig = {\n            ...context?.formRegister(name, {\n                validate: (v, f) => {\n                    const value = v ?? ''\n\n                    if (value.length <= 0 && props.required) return 'Este campo é obrigatório'\n\n                    if (type === 'cnpj') {\n                        if (value.length < 18 && props.required) return 'O CNPJ precisa ter no mínimo 14 dígitos'\n                    }\n                    //\n                    else if (type === 'cpf') {\n                        if (value.length < 14 && props.required) return 'O CPF precisa ter no mínimo 11 dígitos'\n                    } //\n                    else if (type === 'sei') {\n                        if (value.length < 22 && props.required) return 'O Número SEI precisa ter no mínimo 19 dígitos'\n                    }\n                    //\n                    else if (type === 'cep') {\n                        if (value.length < 9 && props.required) return 'O CPF precisa ter no mínimo 8 dígitos'\n                    }\n                    //\n                    else if (type === 'input' || type === 'password' || type === 'number') {\n                        if (value.length > inputMaxLength) return `Limite máximo de ${inputMaxLength} caracteres`\n                        if (value.length < inputMinLength && props.required) return `Limite mínimo de ${inputMinLength} caracteres`\n                    }\n                    //\n                    else if (type === 'email') {\n                        if (value.length > 50) return 'Limite máximo de 50 caracteres'\n                        if (!/^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/g.test(v) && props.required) return 'O e-mail inserido não é valido'\n                    }\n                    //\n                    else if (type === 'cpf_cnpj') {\n                        if ((value.length < 14 || (value.length > 14 && value.length < 18)) && props.required) return 'O CPF/CNPJ precisa ter no mínimo 11/14 dígitos'\n                    }\n                    //\n                    else if (type === 'phone') {\n                        if (value.length < 14 && props.required) return 'O número precisa ter pelo menos 10 dígitos'\n                    }\n                },\n            }),\n            error,\n            helperText,\n            ...inputConfig,\n            sx: {\n                backgroundColor: 'white',\n            },\n        }\n\n        switch (type) {\n            case 'input':\n            case 'email':\n                return <TextField {...formConfig} defaultValue={defaultValue} disabled={disabled} />\n            case 'password':\n                return <TextField {...formConfig} type='password' disabled={disabled} />\n            case 'number':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: numberMask,\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'cep':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '00000-000',\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'phone':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '(00) [#]0000-0000',\n                            definitions: {\n                                '#': /^9$/,\n                            },\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'sei':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '00000-00000000/0000-00',\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'cpf_cnpj':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '000.000.000-00[0]',\n                        }}\n                        onMask={(value, setMask) => {\n                            if (value.length > 14) setMask('00.000.000/0000-00')\n                            else setMask('000.000.000-00[0]')\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'cpf':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '000.000.000-00',\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'cnpj':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '00.000.000/0000-00',\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'rg':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '00000[000000]',\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n        }\n    }\n\n    return (\n        <Grid item {...{ xs, sm, md }}>\n            {props.title && (\n                <InputLabel htmlFor='campo' required={props.required}>\n                    {props.title}\n                </InputLabel>\n            )}\n            {chooseInput()}\n        </Grid>\n    )\n}\n\nexport default React.memo(Input)\n","import { Autocomplete, Grid, InputLabel, TextField } from '@mui/material'\nimport get from 'lodash.get'\nimport React, { useContext, useEffect, useState } from 'react'\nimport { AuthContext } from '../../../context/auth'\nimport { FormContext } from '../../../context/form'\n\nlet useDefault = true\n\nexport default function FetchAutoComplete({\n    name,\n    url,\n    title,\n    customLoadingText,\n    shouldRefetch = true,\n    required = false,\n    defaultValue,\n    route = '',\n    onChange = () => {},\n    xs = 12,\n    sm,\n    watchValue,\n    md,\n    disabled = false,\n}: {\n    name: string\n    url: string\n    title: string\n    watchValue?: { id: number | string; label: string }\n    customLoadingText?: string\n    defaultValue?: number\n    required?: boolean\n    route?: string\n    onChange?: (id: number | undefined) => void\n    shouldRefetch?: boolean\n    xs?: number\n    sm?: number\n    md?: number\n    disabled?: boolean\n}) {\n    const context = useContext(FormContext)!\n\n    const [loading, setLoading] = useState(true)\n    const [list, setList] = useState<any>([])\n    const [loadingText, setLoadingText] = useState('Carregando...')\n    const [dValue, setDValue] = useState<any | null>(null)\n    const [value, setValue] = useState<{ id: any; label: string } | null>(null)\n    const { user } = useContext(AuthContext)\n\n    useEffect(() => {\n        if (defaultValue) {\n            fetch(url, {\n                method: 'GET',\n                headers: {\n                    Authorization: `Bearer ${user?.token}`,\n                },\n            }).then((res) => {\n                if (res.ok) {\n                    console.log('llll')\n                    res.json().then((j) => {\n                        let value = get(j, route, j).filter((x: any) => x.id === defaultValue)\n                        if (value.length > 0) {\n                            setList(get(j, route, j))\n                            setLoading(false)\n                            context.formSetValue(name, defaultValue)\n                            setDValue(value[0])\n                        } else {\n                            setLoadingText('Erro ao carregar dados. Valor inválido')\n                        }\n                    })\n                } else {\n                    setLoadingText('Erro ao carregar dados')\n                }\n            })\n        }\n    }, [])\n\n    useEffect(() => {\n        if (watchValue && useDefault) {\n            setValue(watchValue)\n            context.formSetValue(name, watchValue.id)\n            onChange(watchValue.id as any)\n        }\n    }, [watchValue])\n\n    function onFocus() {\n        if ((defaultValue || !shouldRefetch) && list.length > 0) return\n\n        setLoading(true)\n        setList([])\n        customLoadingText && setLoadingText(customLoadingText)\n\n        fetch(url, {\n            method: 'GET',\n            headers: {\n                Authorization: `Bearer ${user?.token}`,\n            },\n        }).then((res) => {\n            if (res.ok) {\n                res.json().then((j) => {\n                    setList(get(j, route, j))\n                    setLoading(false)\n                })\n            } else {\n                setLoadingText('Erro ao carregar dados')\n            }\n        })\n    }\n\n    function handleAutoCompleteChange(value: any) {\n        useDefault = false\n\n        if (value) {\n            setValue(value)\n            context.formSetValue(name, value.id)\n            onChange(value.id)\n            return\n        }\n\n        setValue(null)\n        context.formSetValue(name, '')\n        onChange(undefined)\n    }\n\n    if (defaultValue && list.length <= 0 && !dValue)\n        return (\n            <Grid item {...{ xs, sm, md }}>\n                <TextField size='small' fullWidth placeholder={loadingText} disabled />\n            </Grid>\n        )\n\n    return (\n        <Grid item {...{ xs, sm, md }}>\n            {title && <InputLabel required={required}>{title}</InputLabel>}\n            <input\n                type='text'\n                {...context?.formRegister(name!, {\n                    validate: (v, f) => {\n                        if (!v) return 'Este campo é obrigatório'\n                        if (v.length <= 0 && required) return 'Este campo é obrigatório'\n                    },\n                })}\n                hidden\n            />\n            <Autocomplete\n                value={value}\n                loading={loading}\n                loadingText={loadingText}\n                options={list}\n                defaultValue={dValue}\n                getOptionDisabled={(option) => option?.disabled ?? false}\n                isOptionEqualToValue={(op: any, value: any) => op.id === value.id}\n                onChange={(e, v) => handleAutoCompleteChange(v)}\n                renderInput={(params) => (\n                    <TextField\n                        {...params}\n                        size='small'\n                        fullWidth\n                        placeholder={title}\n                        onFocus={onFocus}\n                        error={get(context?.errors, name!) ? true : false}\n                        helperText={get(context?.errors, name!)?.message as string}\n                    />\n                )}\n                sx={{\n                    bgcolor: 'white',\n                }}\n                size='small'\n                fullWidth\n                disabled={disabled}\n            />\n        </Grid>\n    )\n}\n","import { Autocomplete, Grid, InputLabel, TextField } from '@mui/material'\nimport get from 'lodash.get'\nimport React, { useContext, useEffect, useState } from 'react'\nimport { AuthContext } from '../../../context/auth'\nimport { FormContext } from '../../../context/form'\n\nlet useDefault = true\n\nexport function FixedAutoComplete({\n    name,\n    title,\n    required = false,\n    list,\n    defaultValue,\n    onChange = () => {},\n    xs = 12,\n    sm,\n    watchValue,\n    forceUpdate = false,\n    md,\n}: {\n    name: string\n    title: string\n    watchValue?: { id: number | string; label: string }\n    list: Object[]\n    customLoadingText?: string\n    defaultValue?: Object\n    required?: boolean\n    onChange?: (id: number | undefined) => void\n    shouldRefetch?: boolean\n    forceUpdate?: boolean\n    xs?: number\n    sm?: number\n    md?: number\n}) {\n    const context = useContext(FormContext)!\n    const [value, setValue] = useState<{ id: any; label: string } | null>(null)\n\n    useEffect(() => {\n        if (defaultValue) context?.formSetValue(name, (defaultValue as any).id)\n    }, [])\n\n    useEffect(() => {\n        if (watchValue && (useDefault || forceUpdate)) {\n            setValue(watchValue)\n            context.formSetValue(name, watchValue.id)\n            onChange(watchValue.id as any)\n        } else if (watchValue === undefined && (useDefault || forceUpdate)) {\n            setValue(null)\n            context.formSetValue(name, undefined)\n            onChange(undefined)\n        }\n    }, [watchValue])\n\n    function handleAutoCompleteChange(value: any) {\n        useDefault = false\n\n        if (value) {\n            setValue(value)\n            context.formSetValue(name, value.id)\n            onChange(value.id)\n            return\n        }\n\n        setValue(null)\n        context.formSetValue(name, '')\n        onChange(undefined)\n    }\n\n    return (\n        <Grid item {...{ xs, sm, md }}>\n            {title && <InputLabel required={required}>{title}</InputLabel>}\n            <input\n                type='text'\n                {...context?.formRegister(name!, {\n                    validate: (v, f) => {\n                        if (!v) return 'Este campo é obrigatório'\n                        if (v?.length <= 0 && required) return 'Este campo é obrigatório'\n                    },\n                })}\n                hidden\n            />\n            <Autocomplete\n                value={value}\n                options={list}\n                defaultValue={defaultValue}\n                getOptionLabel={(option: any) => (option.label ? option.label.toString() : 'Não Encontrado')}\n                isOptionEqualToValue={(op: any, value: any) => op.id === value.id}\n                onChange={(e, v) => handleAutoCompleteChange(v)}\n                renderInput={(params) => (\n                    <TextField {...params} size='small' fullWidth placeholder={title} error={get(context?.errors, name!) ? true : false} helperText={get(context?.errors, name!)?.message as string} />\n                )}\n                size='small'\n                sx={{\n                    bgcolor: 'white',\n                }}\n                fullWidth\n            />\n        </Grid>\n    )\n}\n","import { Autocomplete, Grid, InputLabel, TextField } from '@mui/material'\nimport get from 'lodash.get'\nimport React, { useContext, useEffect, useState } from 'react'\nimport { AuthContext } from '../../../context/auth'\nimport { useFormContext } from 'react-hook-form'\n\nlet useDefault = true\n\nexport default function GenericFetchAutoComplete({\n    name,\n    url,\n    title,\n    customLoadingText,\n    shouldRefetch = true,\n    required = false,\n    defaultValue,\n    route = '',\n    onChange = () => {},\n    xs = 12,\n    sm,\n    watchValue,\n    md,\n    disabled = false,\n}: {\n    name: string\n    url: string\n    title: string\n    watchValue?: { id: number | string; label: string }\n    customLoadingText?: string\n    defaultValue?: number\n    required?: boolean\n    route?: string\n    onChange?: (id: number | undefined) => void\n    shouldRefetch?: boolean\n    xs?: number\n    sm?: number\n    md?: number\n    disabled?: boolean\n}) {\n    const context = useFormContext()\n\n    const [loading, setLoading] = useState(true)\n    const [list, setList] = useState<any>([])\n    const [loadingText, setLoadingText] = useState('Carregando...')\n    const [dValue, setDValue] = useState<any | null>(null)\n    const [value, setValue] = useState<{ id: any; label: string } | null>(null)\n    const { user } = useContext(AuthContext)\n\n    useEffect(() => {\n        if (defaultValue) {\n            fetch(url, {\n                method: 'GET',\n                headers: {\n                    Authorization: `Bearer ${user?.token}`,\n                },\n            }).then((res) => {\n                if (res.ok) {\n                    console.log('llll')\n                    res.json().then((j) => {\n                        let value = get(j, route, j).filter((x: any) => x.id === defaultValue)\n                        if (value.length > 0) {\n                            setList(get(j, route, j))\n                            setLoading(false)\n                            context.setValue(name, defaultValue)\n                            setDValue(value[0])\n                        } else {\n                            setLoadingText('Erro ao carregar dados. Valor inválido')\n                        }\n                    })\n                } else {\n                    setLoadingText('Erro ao carregar dados')\n                }\n            })\n        }\n    }, [])\n\n    useEffect(() => {\n        if (watchValue && useDefault) {\n            setValue(watchValue)\n            context.setValue(name, watchValue.id)\n            onChange(watchValue.id as any)\n        }\n    }, [watchValue])\n\n    function onFocus() {\n        if ((defaultValue || !shouldRefetch) && list.length > 0) return\n\n        setLoading(true)\n        setList([])\n        customLoadingText && setLoadingText(customLoadingText)\n\n        fetch(url, {\n            method: 'GET',\n            headers: {\n                Authorization: `Bearer ${user?.token}`,\n            },\n        }).then((res) => {\n            if (res.ok) {\n                res.json().then((j) => {\n                    setList(get(j, route, j))\n                    setLoading(false)\n                })\n            } else {\n                setLoadingText('Erro ao carregar dados')\n            }\n        })\n    }\n\n    function handleAutoCompleteChange(value: any) {\n        useDefault = false\n\n        if (value) {\n            setValue(value)\n            context.setValue(name, value.id)\n            onChange(value.id)\n            return\n        }\n\n        setValue(null)\n        context.setValue(name, '')\n        onChange(undefined)\n    }\n\n    if (defaultValue && list.length <= 0 && !dValue)\n        return (\n            <Grid item {...{ xs, sm, md }}>\n                <TextField size='small' fullWidth placeholder={loadingText} disabled />\n            </Grid>\n        )\n\n    return (\n        <Grid item {...{ xs, sm, md }}>\n            {title && <InputLabel required={required}>{title}</InputLabel>}\n            <input\n                type='text'\n                {...context?.register(name!, {\n                    validate: (v, f) => {\n                        if (v.length <= 0 && required) return 'Este campo é obrigatório'\n                    },\n                })}\n                hidden\n            />\n            <Autocomplete\n                value={value}\n                loading={loading}\n                loadingText={loadingText}\n                options={list}\n                defaultValue={dValue}\n                getOptionDisabled={(option) => option?.disabled ?? false}\n                isOptionEqualToValue={(op: any, value: any) => op.id === value.id}\n                onChange={(e, v) => handleAutoCompleteChange(v)}\n                renderInput={(params) => (\n                    <TextField\n                        {...params}\n                        size='small'\n                        fullWidth\n                        placeholder={title}\n                        onFocus={onFocus}\n                        error={get(context.formState.errors, name!) ? true : false}\n                        helperText={get(context.formState.errors, name!)?.message as string}\n                    />\n                )}\n                sx={{\n                    bgcolor: 'white',\n                }}\n                size='small'\n                fullWidth\n                disabled={disabled}\n            />\n        </Grid>\n    )\n}\n","import { Grid, InputLabel, TextField } from '@mui/material'\nimport get from 'lodash.get'\nimport React, { useEffect } from 'react'\nimport MaskInput from './MaskInput'\nimport { useFormContext } from 'react-hook-form'\n\nexport function Input({\n    type = 'input',\n    numberMask = '000000000000000',\n    xs = 12,\n    sm,\n    inputMinLength = 1,\n    inputMaxLength = 255,\n    defaultValue = '',\n    md,\n    disabled = false,\n    watchValue,\n    ...props\n}: {\n    type: 'cnpj' | 'cpf' | 'input' | 'email' | 'cpf_cnpj' | 'phone' | 'input' | 'number' | 'rg' | 'password' | 'cep' | 'sei'\n    name: string\n    watchValue?: string\n    title?: string\n    required?: boolean\n    numberMask?: string\n    customPlaceholder?: string\n    defaultValue?: string\n    inputMinLength?: number\n    inputMaxLength?: number\n    xs?: number\n    sm?: number\n    md?: number\n    disabled?: boolean\n}) {\n    const methods = useFormContext()\n\n    useEffect(() => {\n        if (watchValue !== undefined) methods.setValue(props.name, watchValue)\n    }, [watchValue])\n\n    const chooseInput = () => {\n        const inputConfig: object = {\n            fullWidth: true,\n            size: 'small',\n            placeholder: props.customPlaceholder ? props.customPlaceholder : props.title,\n        }\n\n        const name = props.name!\n        const errorData = get(methods?.formState.errors, props.name!)\n        const helperText: string = errorData?.message as string\n        const error = errorData ? true : false\n\n        const formConfig = {\n            ...methods?.register(name, {\n                validate: (v, f) => {\n                    const value = v ?? ''\n\n                    if (value.length <= 0 && props.required) return 'Este campo é obrigatório'\n\n                    if (type === 'cnpj') {\n                        if (value.length < 18 && props.required) return 'O CNPJ precisa ter no mínimo 14 dígitos'\n                    }\n                    //\n                    else if (type === 'cpf') {\n                        if (value.length < 14 && props.required) return 'O CPF precisa ter no mínimo 11 dígitos'\n                    } //\n                    else if (type === 'sei') {\n                        if (value.length < 22 && props.required) return 'O Número SEI precisa ter no mínimo 19 dígitos'\n                    }\n                    //\n                    else if (type === 'cep') {\n                        if (value.length < 9 && props.required) return 'O CPF precisa ter no mínimo 8 dígitos'\n                    }\n                    //\n                    else if (type === 'input' || type === 'password' || type === 'number') {\n                        if (value.length > inputMaxLength) return `Limite máximo de ${inputMaxLength} caracteres`\n                        if (value.length < inputMinLength && props.required) return `Limite mínimo de ${inputMinLength} caracteres`\n                    }\n                    //\n                    else if (type === 'email') {\n                        if (value.length > 50) return 'Limite máximo de 50 caracteres'\n                        if (!/^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/g.test(v) && props.required) return 'O e-mail inserido não é valido'\n                    }\n                    //\n                    else if (type === 'cpf_cnpj') {\n                        if ((value.length < 14 || (value.length > 14 && value.length < 18)) && props.required) return 'O CPF/CNPJ precisa ter no mínimo 11/14 dígitos'\n                    }\n                    //\n                    else if (type === 'phone') {\n                        if (value.length < 14 && props.required) return 'O número precisa ter pelo menos 10 dígitos'\n                    }\n                },\n            }),\n            error,\n            helperText,\n            ...inputConfig,\n            sx: {\n                backgroundColor: 'white',\n            },\n        }\n\n        switch (type) {\n            case 'input':\n            case 'email':\n                return <TextField {...formConfig} defaultValue={defaultValue} disabled={disabled} />\n            case 'password':\n                return <TextField {...formConfig} type='password' disabled={disabled} />\n            case 'number':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: numberMask,\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'cep':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '00000-000',\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'phone':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '(00) [#]0000-0000',\n                            definitions: {\n                                '#': /^9$/,\n                            },\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'sei':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '00000-00000000/0000-00',\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'cpf_cnpj':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '000.000.000-00[0]',\n                        }}\n                        onMask={(value, setMask) => {\n                            if (value.length > 14) setMask('00.000.000/0000-00')\n                            else setMask('000.000.000-00[0]')\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'cpf':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '000.000.000-00',\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'cnpj':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '00.000.000/0000-00',\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n            case 'rg':\n                return (\n                    <MaskInput\n                        formConfig={formConfig}\n                        defaultValue={defaultValue}\n                        maskProps={{\n                            mask: '00000[000000]',\n                        }}\n                        watchValue={watchValue}\n                        disabled={disabled}\n                    />\n                )\n        }\n    }\n\n    return (\n        <Grid item {...{ xs, sm, md }}>\n            {props.title && (\n                <InputLabel htmlFor='campo' required={props.required}>\n                    {props.title}\n                </InputLabel>\n            )}\n            {chooseInput()}\n        </Grid>\n    )\n}\n\nexport default React.memo(Input)\n","import { TextField } from '@mui/material'\nimport React, { useContext, useEffect, useRef, useState } from 'react'\nimport { IMaskInput } from 'react-imask'\nimport { FormContext } from '../../../context/form'\nimport { useFormContext } from 'react-hook-form'\n\nconst TextMaskCustom = React.forwardRef<HTMLElement>(function TextMaskCustom(props: any, ref: any) {\n    const { onChange, maskProps, onMask, maskValue, setMaskValue, watchValue, ...prop } = props\n    const [mask, setMask] = useState(maskProps.mask)\n\n    delete prop.value\n\n    const myRef = useRef<any | null>(null)\n    const [myValue, setMyValue] = useState('')\n    const context = useFormContext()\n\n    useEffect(() => {\n        if (watchValue) {\n            setMyValue(watchValue)\n        }\n    }, [watchValue])\n\n    useEffect(() => {\n        context.setValue(prop.name, myRef.current.element.value)\n    }, [myValue])\n\n    delete prop.watchValue\n\n    return (\n        <IMaskInput\n            {...prop}\n            {...maskProps}\n            mask={mask}\n            value={myValue}\n            ref={myRef}\n            inputRef={ref}\n            onChange={(e) => {}}\n            onAccept={(value, mask) => {\n                setMyValue(value)\n                mask.updateValue()\n\n                if (!onMask) return\n\n                onMask(value, setMask)\n            }}\n        />\n    )\n})\n\nexport default function GenericMaskInput(props: {\n    formConfig: object\n    defaultValue?: string\n    maskProps: { mask: string | RegExp; definitions?: { [key: string]: string | RegExp } }\n    disabled?: boolean\n    watchValue?: string\n    onMask?: (value: string, setMask: React.Dispatch<React.SetStateAction<string>>) => void\n}) {\n    const context = useContext(FormContext)!\n    const [maskValue, setMaskValue] = useState('')\n\n    return (\n        <>\n            <TextField\n                {...props.formConfig}\n                onInput={(e) => {\n                    const name = (props.formConfig as any).name as string\n                    const value = (e.target as any).value\n\n                    context.formSetValue(name, value)\n                }}\n                InputProps={{\n                    inputComponent: TextMaskCustom as any,\n                    inputProps: { maskProps: props.maskProps, onMask: props.onMask, maskValue, setMaskValue, watchValue: props.watchValue },\n                }}\n                disabled={props.disabled}\n                fullWidth\n            />\n        </>\n    )\n}\n","import KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft'\nimport KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight'\nimport SaveIcon from '@mui/icons-material/Save'\nimport { LoadingButton } from '@mui/lab'\nimport { Box, Button, MobileStepper, Stack, useMediaQuery, useTheme } from '@mui/material'\nimport React, { FormEvent, ReactElement, useContext, useRef, useState } from 'react'\nimport { FieldValues } from 'react-hook-form'\nimport { toast } from 'react-toastify'\nimport { FormContext } from '../../../context/form'\n\nconst getKeys = (values: any, id: number) => {\n    if (!values || Object.keys(values).length <= 0) return []\n    if (!values[id]) return []\n\n    let keys = Object.keys(values[id]).map((x) => `${id}.${x}`)\n    if (values.files) keys = [...keys, ...Object.keys(values.files).map((x) => `files.${x}`)]\n\n    return keys\n}\n\nfunction sleep(ms: number) {\n    return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nexport function Stepper({\n    debugLog = false,\n    test = false,\n    testConfig = {},\n    customMarginBottom = 10,\n    ...props\n}: {\n    customMarginBottom?: number\n    children: ReactElement | (ReactElement | null | undefined | false)[]\n    // children: ReactElement | ReactElement[]\n    debugData?: (data: FieldValues) => void\n    debugLog?: boolean\n    test?: boolean\n    testConfig?: { [key: number]: { [key: string]: string | number | boolean } }\n}) {\n    props.children = Array.isArray(props.children) ? props.children.filter((x, id) => x) : props.children\n\n    const length = Array.isArray(props.children) ? props.children.length : 1\n    const context = useContext(FormContext)!\n    // next button ref\n    const nRef = useRef<HTMLButtonElement | null>(null)\n    const theme = useTheme()\n\n    const [activeStep, setActiveStep] = useState(0)\n\n    const blocks = Array.isArray(props.children) ? props.children : [props.children]\n    const stepperBlocks = blocks.map((x: any, idx) => {\n        return React.cloneElement(x, { ...x.props, prefix: idx })\n    })\n\n    const maxSteps = length\n\n    const handleNext = async () => {\n        if (debugLog) console.log(context.formGetValues())\n\n        // console.log('valores conferidos', getKeys(context.formGetValues(), activeStep), context.formGetValues(getKeys(context.formGetValues(), activeStep)))\n\n        const result = await context.formTrigger(getKeys(context.formGetValues(), activeStep))\n\n        if (!result) {\n            toast('Formulário incompleto! Verifique os campos marcados e tente novamente.', { type: 'warning', theme: 'light' })\n            return\n        }\n        setActiveStep((prevActiveStep) => prevActiveStep + 1)\n    }\n\n    const nextCheck = async (e: FormEvent) => {\n        const result = await context!.formTrigger(getKeys(context.formGetValues(), activeStep))\n\n        if (!result) {\n            e.preventDefault()\n\n            toast('Formulário incompleto! Verifique os campos marcados e tente novamente.', { type: 'warning', theme: 'light' })\n            return\n        }\n    }\n    const handleBack = () => {\n        setActiveStep((prevActiveStep) => prevActiveStep - 1)\n    }\n\n    const preencher = () => {\n        Object.keys(testConfig).forEach((id, idx) => {\n            const obj = testConfig[Number(id)]\n\n            Object.keys(obj).forEach((x) => {\n                context.formUnregister(`${id}.${x}`)\n                context.formSetValue(`${id}.${x}`, obj[x])\n            })\n\n            if (idx < Object.keys(testConfig).length - 1) {\n                sleep(100).then(() => {\n                    const bt = nRef.current!\n\n                    nRef.current?.click()\n                })\n            }\n        })\n    }\n\n    return (\n        <Box>\n            {test && (\n                <Stack direction='row' justifyContent='end'>\n                    <Button variant='contained' color='error' onClick={preencher}>\n                        EXCLUIR BANCO PRODUÇÃO\n                    </Button>\n                </Stack>\n            )}\n            <Stack sx={{ padding: 2, marginBottom: customMarginBottom }}>\n                <Box>\n                    {stepperBlocks.map((b, index) => (\n                        <Box key={'formsB' + index} hidden={!(activeStep === index)}>\n                            {stepperBlocks[index]}\n                        </Box>\n                    ))}\n                </Box>\n\n                <MobileStepper\n                    variant='text'\n                    steps={maxSteps}\n                    // position='bottom'\n                    position={useMediaQuery(theme.breakpoints.only('xs')) ? 'bottom' : 'static'}\n                    activeStep={activeStep}\n                    sx={{ paddingTop: 2, paddingBottom: 4, paddingX: 0 }}\n                    backButton={\n                        <Button variant='contained' startIcon={<KeyboardArrowLeft />} onClick={handleBack} disabled={activeStep === 0} sx={{ textTransform: 'none' }}>\n                            Voltar\n                        </Button>\n                    }\n                    nextButton={\n                        activeStep < maxSteps - 1 ? (\n                            <Button variant='contained' endIcon={<KeyboardArrowRight />} onClick={handleNext} sx={{ textTransform: 'none' }} ref={nRef}>\n                                Próximo\n                            </Button>\n                        ) : (\n                            <Box>\n                                <LoadingButton\n                                    variant='contained'\n                                    type='submit'\n                                    loading={context.submiting}\n                                    loadingPosition='start'\n                                    startIcon={<SaveIcon />}\n                                    onClick={(e) => nextCheck(e)}\n                                    sx={{ textTransform: 'none', backgroundColor: '#22C55E', '&:hover': { backgroundColor: '#48cf7a' } }}\n                                >\n                                    <span>Salvar</span>\n                                </LoadingButton>\n                            </Box>\n                        )\n                    }\n                />\n            </Stack>\n        </Box>\n    )\n}\n\nexport default React.memo(Stepper)\n","import ContentPasteOutlinedIcon from '@mui/icons-material/ContentPasteOutlined'\nimport { Box, Grid, Stack } from '@mui/material'\nimport Typography from '@mui/material/Typography'\nimport React, { ReactElement, useContext } from 'react'\nimport Switch from '../switch/Switch'\nimport { FormContext } from '../../../context/form'\n\nfunction childrenTree(component: ReactElement, prefix: number, idx: number): ReactElement {\n    if (!component.props) return component\n\n    const children = component.props.children as ReactElement | ReactElement[]\n\n    if (!children)\n        return React.cloneElement(component, {\n            ...component.props,\n            name: `${prefix}.${component.props.name}`,\n            key: component.props.name ? `${prefix}.${component.props.name}` : `noListing-${idx}-${prefix}-${component.props.name}`,\n        })\n\n    let newChildren: ReactElement | ReactElement[]\n\n    if (Array.isArray(children)) {\n        let c: ReactElement[] = []\n\n        children.forEach((x, cIdx: number) => {\n            c.push(childrenTree(x, prefix, idx + (cIdx + 1)))\n        })\n        newChildren = c\n    }\n    //\n    else {\n        newChildren = childrenTree(children, prefix, idx + 1)\n    }\n\n    const newComponent = React.cloneElement(component, {\n        ...component.props,\n        children: newChildren,\n        name: `${prefix}.${component.props.name}`,\n        key: component.props.name ? `${prefix}.${component.props.name}` : `noListing-${idx}-${prefix}-${component.props.name}`,\n    })\n\n    return newComponent\n}\n\ninterface StepperBlockProps {\n    title: string\n    prefix?: number\n    children: JSX.Element | JSX.Element[]\n    optional?: boolean\n    optionalMessage?: string | JSX.Element\n    overrideSwitchNo?: string\n    overrideSwitchYes?: string\n    defaultChecked?: boolean\n}\n\nexport function StepperBlock({ optional = false, title, prefix = 0, optionalMessage, defaultChecked, ...props }: StepperBlockProps) {\n    const context = useContext(FormContext)!\n    const switchName = `switch-${prefix}`\n\n    const fields = Array.isArray(props.children) ? props.children : [props.children]\n    const cloneChildren = fields.map((x, index) => {\n        return x && childrenTree(x, prefix, index)\n    })\n\n    return (\n        <Box>\n            <Grid item xs={12}>\n                <Stack direction='row' justifyContent='space-between'>\n                    <Stack direction='row' spacing={2}>\n                        <Box sx={{ marginTop: 0.6 }}>\n                            <Stack sx={{ backgroundColor: '#E6F8EB', borderRadius: '100%', height: '35px', width: '35px' }} justifyContent='center' alignItems='center'>\n                                <ContentPasteOutlinedIcon sx={{ height: '18px', fill: '#01BA35' }} />\n                            </Stack>\n                        </Box>\n                        <Typography\n                            variant='h6'\n                            fontWeight={600}\n                            fontSize={28}\n                            fontFamily='Inter'\n                            sx={{\n                                color: '#1E293B',\n                                paddingBottom: 4,\n                            }}\n                        >\n                            {title}\n                        </Typography>\n                    </Stack>\n                    <Box hidden={!optional}>\n                        <Switch name={switchName} defaultChecked={optional ? defaultChecked : true} overrideNo={props.overrideSwitchNo} overrideYes={props.overrideSwitchYes} />\n                    </Box>\n                </Stack>\n            </Grid>\n            <Stack spacing={2}>\n                {!optional ? (\n                    <Grid container spacing={1}>\n                        {cloneChildren}\n                    </Grid>\n                ) : !context.formWatch(switchName) ? (\n                    <Stack justifyContent='center' alignItems='center'>\n                        <Typography fontFamily='Inter' fontSize={22} paddingY={8} textAlign='center'>\n                            {optionalMessage ? (\n                                optionalMessage\n                            ) : (\n                                <>\n                                    <b>{title}</b> é opcional. <br />\n                                    Marque a opção acima caso haja necessidade.\n                                </>\n                            )}\n                        </Typography>\n                    </Stack>\n                ) : (\n                    <Grid container spacing={1}>\n                        {cloneChildren}\n                    </Grid>\n                )}\n            </Stack>\n        </Box>\n    )\n}\n\nexport default React.memo(StepperBlock)\n","import CloseRoundedIcon from '@mui/icons-material/CloseRounded'\nimport { Box, Button, Modal, Stack, SwipeableDrawer, Typography, useMediaQuery, useTheme } from '@mui/material'\nimport React, { useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nexport let MODAL: {\n    open: (customCompoment?: JSX.Element | JSX.Element[] | (() => JSX.Element)) => void\n    reparent: (child: JSX.Element, id: string | number) => JSX.Element\n    openReparented: (id: string | number) => void\n    close: () => void\n} = {\n    open: () => {},\n    close: () => {},\n    openReparented: () => {},\n    reparent: () => <></>,\n}\n\nfunction ReparentHelper() {\n    const ref = useRef(null)\n\n    return <div ref={ref}></div>\n}\n\nexport function CustomModalProvider() {\n    const [open, setOpen] = useState(false)\n    const [content, setContent] = useState<any>(null)\n    // const contentRef = useRef<JSX.Element | JSX.Element[]>(<></>)\n    const handleClose = () => setOpen(false)\n    const containerRef = useRef(null)\n\n    const theme = useTheme()\n    const isDesktop = useMediaQuery(theme.breakpoints.up('sm'))\n\n    const [idRef, setIdRef] = useState<{ [id: string | number]: JSX.Element }>({})\n    const [currentId, setCurrentId] = useState<string | number>(-1321465654)\n\n    useEffect(() => {\n        MODAL.open = (customCompoment) => {\n            if (customCompoment) setContent(customCompoment)\n            setCurrentId(-1321465654)\n            setOpen(true)\n        }\n\n        MODAL.reparent = (element, id) => {\n            setIdRef((obj) => ({ ...obj, [id]: <>{element}</> }))\n            return <></>\n        }\n\n        MODAL.openReparented = (id) => {\n            setCurrentId(id)\n            setContent(null)\n            setOpen(true)\n        }\n\n        MODAL.close = handleClose\n    }, [setOpen])\n\n    return (\n        <>\n            {!isDesktop ? (\n                <SwipeableDrawer\n                    anchor='bottom'\n                    open={open}\n                    onClose={handleClose}\n                    onOpen={() => {}}\n                    PaperProps={{\n                        sx: {\n                            bgcolor: 'transparent',\n                        },\n                    }}\n                >\n                    <Stack direction='row' onClick={handleClose} maxHeight='8vh' height='8vh' justifyContent='center' alignItems='center'>\n                        <Typography fontWeight={600} color='white'>\n                            Clique fora para fechar\n                        </Typography>\n                    </Stack>\n                    <Box p={2} maxHeight='92vh' bgcolor='white' overflow='auto'>\n                        {content}\n                        {idRef[currentId]}\n                    </Box>\n                </SwipeableDrawer>\n            ) : (\n                <Modal open={open} onClose={handleClose}>\n                    <Box\n                        sx={{\n                            position: 'absolute' as 'absolute',\n                            top: '50%',\n                            left: '50%',\n                            transform: 'translate(-50%, -50%)',\n                            borderRadius: 2,\n                            bgcolor: 'white',\n                            border: '1px solid #454545',\n                            boxShadow: 24,\n                        }}\n                    >\n                        <Box\n                            onClick={handleClose}\n                            width='fit-content'\n                            height='fit-content'\n                            position='absolute'\n                            right={0}\n                            top={0}\n                            margin={0.6}\n                            sx={{\n                                ':hover': {\n                                    transform: 'scale(1.03)',\n                                    transition: 'all 500ms',\n                                    cursor: 'pointer',\n                                },\n                            }}\n                        >\n                            <CloseRoundedIcon\n                                sx={{\n                                    transform: 'scale(.9)',\n                                }}\n                            />\n                        </Box>\n                        <Box overflow='auto' maxHeight='90vh' p={2} marginTop={4} borderTop='solid 1px gray' bgcolor='#F9F9F9' borderRadius={2}>\n                            {content}\n                            {idRef[currentId]}\n                        </Box>\n                    </Box>\n                </Modal>\n            )}\n        </>\n    )\n}\n","import { Button, ButtonProps } from '@mui/material'\nimport React from 'react'\nimport tinycolor from 'tinycolor2'\n\ninterface CustomButton extends ButtonProps {\n    customColor?: tinycolor.ColorInput\n    customFontColor?: tinycolor.ColorInput\n}\n\nexport default function Bt({ customColor = '#383838', customFontColor = 'white', ...props }: CustomButton) {\n    const bgColor = tinycolor(customColor)\n\n    return (\n        <Button\n            {...props}\n            sx={{\n                bgcolor: bgColor.toHexString(),\n                color: tinycolor(customFontColor).toHexString(),\n                ':hover': {\n                    bgcolor: bgColor.darken(10).toHexString(),\n                },\n                boxShadow: 'none',\n                borderRadius: 3,\n                textTransform: 'capitalize',\n                paddingX: 2,\n            }}\n            size='small'\n        >\n            {props.children}\n        </Button>\n    )\n}\n","import { Button, ButtonProps, Menu, MenuItem } from '@mui/material'\nimport React from 'react'\nimport Bt from './Bt'\n\ninterface MenuProps {\n    data: { name: string; onClick?: () => void }[]\n    btProps?: ButtonProps\n    children?: React.ReactNode\n}\n\nexport default function CustomMenu({ data = [], ...props }: MenuProps) {\n    const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null)\n    const open = Boolean(anchorEl)\n    const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n        setAnchorEl(event.currentTarget)\n    }\n    const handleClose = () => {\n        setAnchorEl(null)\n    }\n\n    return (\n        <>\n            <Bt {...props.btProps} onClick={handleClick}>\n                {props.children}\n            </Bt>\n            <Menu\n                id='basic-menu'\n                anchorEl={anchorEl}\n                open={open}\n                onClose={handleClose}\n                MenuListProps={{\n                    'aria-labelledby': 'basic-button',\n                }}\n            >\n                {data.map((x) => (\n                    <MenuItem\n                        onClick={(e) => {\n                            x.onClick && x.onClick()\n                            handleClose()\n                        }}\n                    >\n                        {x.name}\n                    </MenuItem>\n                ))}\n            </Menu>\n        </>\n    )\n}\n","import { ExpandLess, ExpandMore, FilterAlt, KeyboardArrowDown, KeyboardArrowUp, PendingRounded, Refresh, ReportProblemRounded } from '@mui/icons-material'\nimport Clear from '@mui/icons-material/Clear'\nimport FileDownloadIcon from '@mui/icons-material/FileDownload'\nimport NavigateNextRoundedIcon from '@mui/icons-material/NavigateNextRounded'\nimport { default as Search, default as SearchIcon } from '@mui/icons-material/Search'\nimport {\n    Alert,\n    Autocomplete,\n    Box,\n    BoxProps,\n    Button,\n    Collapse,\n    FormControl,\n    IconButton,\n    LinearProgress,\n    Menu,\n    MenuItem,\n    PaginationItem,\n    Paper,\n    Select,\n    Skeleton,\n    Stack,\n    useMediaQuery,\n    useTheme,\n} from '@mui/material'\nimport Grid from '@mui/material/Grid'\nimport Pagination from '@mui/material/Pagination'\nimport TextField from '@mui/material/TextField'\nimport Typography from '@mui/material/Typography'\nimport { DatePicker, LocalizationProvider } from '@mui/x-date-pickers'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport dayjs from 'dayjs'\nimport JSZip from 'jszip'\nimport get from 'lodash.get'\nimport React, { ChangeEvent, ReactNode, useCallback, useContext, useEffect, useRef, useState } from 'react'\nimport { AuthContext } from '../../../context/auth'\nimport { MODAL } from '../../modal/Modal'\nimport CustomMenu from '../../utils/CustomMenu'\nimport { FilterOperators, FilterValue, OrderBy, TableProps, TableProps2 } from './types'\n\nfunction removePunctuationAndAccents(text: string) {\n    // Remove accents and diacritics\n    const normalizedText = text.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')\n\n    // Remove punctuation marks\n    const cleanedText = normalizedText.replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~]/g, '')\n\n    return cleanedText\n}\n\nfunction formatarString(str: string | number) {\n    const value: string = typeof str !== 'string' ? str.toString() : str\n\n    return value\n        .normalize('NFD')\n        .replace(/[\\u0300-\\u036f]/g, '')\n        .toLowerCase()\n        .trim()\n}\n\nlet startData: any[] = []\nlet isExpandAll: boolean = false\nlet localTableName = ''\nlet orderAsc = false\nlet filtersFuncData: { [key: string]: (value: string) => any } = {}\nlet localTableNameCache = ''\n\n/**\n * Tabela cujo dados devem ser passados via props\n */\nexport function GenericTable<T>({\n    mediaQueryLG,\n    columns,\n    emptyMsg = {\n        user: 'Nenhum dado encontrado',\n        public: 'Nenhum dado encontrado',\n    },\n    dataPath = '',\n    tableName = 'Dados',\n    csv,\n    columnSize,\n    action,\n    useKC = true,\n    statusKeyName = '',\n    csvExcludeKeys = [],\n    csvExcludeKeysCSV = [],\n    csvExcludeKeysAll = [],\n    csvCustomKeyNames = {},\n    csvExcludeValidate = (key, value) => false,\n    csvButtonTitle = 'Salvar .CSV',\n    csvNoZipText = 'Salvar .CSV',\n    csvAllButtonTitle = 'Salvar todos em CSV',\n    removeQuotes = false,\n    normalize = false,\n    csvShowAllButton = false,\n    csvWithoutZip = false,\n    itemCount = 10,\n    csvUpper = false,\n    csvZipFileNamesKey = '',\n    generateCsvZip = false,\n    hideTitleCSV = false,\n    csvExcludeUpper = [],\n    multipleDataPath = '',\n    expandTextMaxLength = 50,\n    collapsedSize = 53,\n    customMargin = 4,\n    customMarginMobile = 0,\n    filtersFunc,\n    filters = [],\n    orderBy = [],\n    customErrorMsg = undefined,\n    customTableStyle = {},\n    id,\n    initialData = null,\n    isLoading,\n}: TableProps2) {\n    const [error, setError] = useState<null | { status: number }>(null)\n    const [data, setData] = useState<any>(initialData)\n\n    const { user, userLoaded } = useContext(AuthContext)\n    const [list, setList] = useState<any[]>([])\n    const [listClone, setListClone] = useState<any[]>([])\n    //numero de items pra ser mostrado\n    const [itemsCount, setItemsCount] = useState(itemCount)\n    const [currentPage, setCurrentPage] = useState(0)\n    const [paginationCount, setPagCount] = useState(1)\n    const [listPage, setListPage] = useState(1)\n    const [oldSelectState, setOldSelectState] = useState<string>('')\n    const [expandObj, setExpandObj] = useState<{ [key: number]: boolean }>({})\n    const [showExpandObj, setShowExpandObj] = useState<{ [key: number]: boolean }>({})\n    const [showExpandObjOnExited, setShowExpandObjOnExited] = useState<{ [key: number]: boolean }>({})\n    const [filterKey, setFilterKey] = useState('filterKey')\n    const theme = useTheme()\n    const isSmall = useMediaQuery(theme.breakpoints.only('xs'))\n    const filterContainer = useRef(null)\n\n    const lg = useMediaQuery(theme.breakpoints.up(2000))\n\n    localTableName = `tableFilter_${id}`\n    localTableNameCache = `tableFilterCache_${id}`\n    filtersFuncData = filtersFunc ?? {}\n\n    if (!localStorage.getItem(localTableNameCache)) localStorage.setItem(localTableNameCache, JSON.stringify(filters))\n\n    if (localStorage.getItem(localTableNameCache) !== JSON.stringify(filters)) {\n        localStorage.setItem(localTableNameCache, JSON.stringify(filters))\n        localStorage.removeItem(localTableName)\n    }\n\n    const getCount = useCallback(\n        (countData: any[]) => {\n            if (countData.length <= 0) return 1\n\n            let count = countData.length / itemsCount\n            count = count < 1 ? 1 : count\n            return Math.ceil(count)\n        },\n        [itemsCount]\n    )\n\n    const getData = useCallback((dt: any) => {\n        if (Array.isArray(dt)) return dt\n\n        if (typeof dt === 'object') return get(dt, dataPath)\n    }, [])\n\n    useEffect(() => {\n        if (error || !getData(data)) return\n\n        const value = getData(data)\n\n        setList(value)\n        setListClone(value)\n        setPagCount(getCount(value))\n\n        if (localStorage.getItem(localTableName)) {\n            filtrar(JSON.parse(localStorage.getItem(localTableName) as string) as FilterValue[])\n        }\n    }, [itemsCount, data, getCount, error])\n\n    useEffect(() => {\n        setCurrentPage(listPage - 1)\n    }, [listPage])\n\n    const onPaginationChange = useCallback((e: ChangeEvent<unknown>, page: number) => {\n        setListPage(page)\n    }, [])\n\n    function onInputChange(e: ChangeEvent) {\n        console.log(listClone)\n        const searchValue = (e.target as HTMLInputElement).value\n\n        if (searchValue === '') {\n            setList(listClone)\n            setPagCount(getCount(getData(list)))\n            return\n        }\n\n        const listData: object[] = getData(list)\n\n        const newList: any = []\n\n        listData.forEach((x: any) => {\n            const dataStr: string[] = []\n\n            Object.keys(x).map((key: string) => {\n                let value = get(x, key, '') ?? ''\n\n                if (typeof value === 'number') value = value.toString()\n                if (typeof value !== 'string') return\n\n                dataStr.push(value)\n            })\n\n            if (dataStr.length <= 0) return\n\n            let exists = false\n\n            dataStr.forEach((key) => {\n                const status = ['P', 'C', 'A', 'R', 'L', 'PA']\n\n                if (status.includes(key)) {\n                    switch (key) {\n                        case 'P':\n                            if ('em analise'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                        case 'C':\n                            if ('cancelado'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                        case 'A':\n                            if ('cadastrado'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                        case 'R':\n                            if ('reprovado'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                        case 'L':\n                            if ('licenciado'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                        case 'PA':\n                            if ('pré aprovado'.includes(searchValue.toLowerCase()) || 'pre aprovado'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                        case 'FP':\n                            if ('fora do prazo'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                    }\n                }\n\n                if (removePunctuationAndAccents(key.toLowerCase()).includes(removePunctuationAndAccents(searchValue.toLowerCase()))) {\n                    exists = true\n                }\n            })\n\n            if (!exists) return\n\n            newList.push(x)\n        })\n\n        setList(newList)\n        setPagCount(getCount(newList))\n        setCurrentPage(0)\n        setListPage(1)\n    }\n\n    const getMaxItems = useCallback(() => {\n        const start = currentPage * itemsCount\n        return list.slice(start, start + itemsCount)\n    }, [list, itemsCount, currentPage])\n\n    function defineCSVCells(key: any, cell: any): string {\n        if (typeof cell === 'string') {\n            let item = csvUpper && !csvExcludeUpper.includes(key) ? (cell as string).toUpperCase() : cell\n\n            item = normalize ? item.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : item\n\n            return removeQuotes ? `${item}` : `\"${item}\"`\n        } else if (typeof cell === 'object' && !Array.isArray(cell) && cell !== null) {\n            let strItemAsObject = transformArrayObjectInString(cell).slice(1, -1) // key: label (Ex.: jsNaturezaEvento)\n\n            let item = csvUpper && !csvExcludeUpper.includes(key) ? (strItemAsObject as string).toUpperCase() : strItemAsObject\n\n            item = normalize ? item.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : item\n\n            return removeQuotes ? `${item}` : `\"${item}\"`\n        }\n\n        return cell\n    }\n\n    // download file\n    const downloadCSV = useCallback(\n        (e: React.MouseEvent, zip = false) => {\n            e.preventDefault()\n\n            if (list.length <= 0) return\n\n            const originalKeys = Object.keys(list[0])\n\n            if (generateCsvZip && zip) {\n                const keys = originalKeys.filter((k) => !csvExcludeKeys.includes(k))\n                const header = keys.map((k) => (csvCustomKeyNames[k] ? csvCustomKeyNames[k] : k)).join(',') + '\\n'\n                const zip = new JSZip()\n\n                const obj: any = {}\n\n                list.forEach((x: any) => {\n                    if (!obj[x[csvZipFileNamesKey]]) obj[x[csvZipFileNamesKey]] = []\n\n                    obj[x[csvZipFileNamesKey]].push(x)\n                })\n\n                Object.keys(obj).forEach((objKey: string) => {\n                    const values: string[] = []\n\n                    obj[objKey].forEach((x: any) => {\n                        let include = true\n\n                        originalKeys.forEach((k: string) => {\n                            //verificar se pode incluir\n                            if (csvExcludeValidate(k, x[k])) {\n                                include = false\n                            }\n                        })\n\n                        if (include) {\n                            const value = keys\n                                .map((k: string) => {\n                                    if (typeof x[k] === 'string') {\n                                        let item = csvUpper ? (x[k] as string).toUpperCase() : x[k]\n\n                                        item = normalize ? item.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : item\n\n                                        return removeQuotes ? `${item}` : `\"${item}\"`\n                                    } else if (typeof x[k] === 'object' && !Array.isArray(x[k]) && x[k] !== null) {\n                                        let strItemAsObject = transformArrayObjectInString(x[k]).slice(1, -1) // k: label (Ex.: jsNaturezaEvento)\n\n                                        let item = csvUpper && !csvExcludeUpper.includes(k) ? (strItemAsObject as string).toUpperCase() : strItemAsObject\n\n                                        item = normalize ? item.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : item\n\n                                        return removeQuotes ? `${item}` : `\"${item}\"`\n                                    }\n\n                                    return x[k]\n                                })\n                                .join(',')\n\n                            values.push(value)\n                        }\n                    })\n\n                    const csvData = hideTitleCSV ? values.join('\\n') : '\\uFEFF' + header + values.join('\\n')\n\n                    if (values.length > 0) zip.file(`${objKey.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')}.csv`, csvData)\n                })\n\n                // // download\n                var link = window.document.createElement('a')\n\n                zip.generateAsync({ type: 'base64' }).then((base) => {\n                    link.setAttribute('href', 'data:application/zip;base64,' + base)\n                    link.setAttribute('download', `${csv?.fileName}.zip`)\n                    link.click()\n                })\n            } else {\n                let keys = originalKeys\n                    .filter((k) => !csvExcludeKeysCSV.includes(k))\n                    .map((k) => {\n                        if (k === multipleDataPath) {\n                            return 'hrTermino'\n                        }\n\n                        return k\n                    })\n\n                if (multipleDataPath !== '') {\n                    keys = ['dtInicio', 'hrInicio', ...keys]\n                }\n\n                const header = keys.map((k) => (csvCustomKeyNames[k] ? csvCustomKeyNames[k] : k)).join(',') + '\\n'\n                const values: string[] = []\n\n                list.forEach((x: any) => {\n                    let include = true\n\n                    originalKeys.forEach((k: string) => {\n                        //verificar se pode incluir\n                        if (csvExcludeValidate(k, x[k])) {\n                            include = false\n                        }\n                    })\n\n                    if (include) {\n                        const value = keys\n                            .map((k: string) => {\n                                if (k === 'dtInicio') return '{dtInicio}'\n                                else if (k === 'hrInicio') return '{hrInicio}'\n                                else if (k === 'hrTermino') return '{hrTermino}'\n                                else {\n                                    if (typeof x[k] === 'string') {\n                                        let item = csvUpper && !csvExcludeUpper.includes(k) ? (x[k] as string).toUpperCase() : x[k]\n\n                                        item = normalize ? item.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : item\n\n                                        return removeQuotes ? `${item}` : `\"${item}\"`\n                                    } else if (typeof x[k] === 'object' && !Array.isArray(x[k]) && x[k] !== null) {\n                                        let strItemAsObject = transformArrayObjectInString(x[k]).slice(1, -1) // k: label (Ex.: jsNaturezaEvento)\n\n                                        let item = csvUpper && !csvExcludeUpper.includes(k) ? (strItemAsObject as string).toUpperCase() : strItemAsObject\n\n                                        item = normalize ? item.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : item\n\n                                        return removeQuotes ? `${item}` : `\"${item}\"`\n                                    }\n\n                                    return x[k]\n                                }\n                            })\n                            .join(',')\n\n                        if (multipleDataPath !== '') {\n                            const dates = x[multipleDataPath]\n\n                            if (dates) {\n                                ;(dates as any[]).forEach((d) => {\n                                    values.push(value.replace('{dtInicio}', d.dtInicio).replace('{hrInicio}', d.hrInicio).replace('{hrTermino}', d.hrTermino))\n                                })\n                            }\n                        } else {\n                            values.push(value)\n                        }\n                    }\n                })\n\n                const csvData = header + values.join('\\n')\n\n                // download\n                var link = window.document.createElement('a')\n                link.setAttribute('href', 'data:text/csv;charset=utf-8,%EF%BB%BF' + encodeURI(csvData))\n                link.setAttribute('download', `${csv?.fileName}.csv`)\n                link.click()\n            }\n        },\n        [list]\n    )\n\n    function transformArrayObjectInString(o: Object): String {\n        let arrString: string[] = []\n\n        if (typeof o === 'object' && !Array.isArray(o) && o !== null) {\n            for (let [key, value] of Object.entries(o)) {\n                if (typeof value === 'object' && !Array.isArray(value) && value !== null) {\n                    arrString.push(key + ': ' + transformArrayObjectInString(value))\n                } else {\n                    if (value) {\n                        // Is true\n                        arrString.push(key)\n                    }\n                }\n            }\n        }\n\n        return '[' + arrString.join(' - ') + ']'\n    }\n\n    const downloadCSVAll = useCallback(\n        (e: React.MouseEvent) => {\n            e.preventDefault()\n\n            if (list.length <= 0) return\n\n            const keys = Object.keys(list[0]).filter((k) => !csvExcludeKeysAll.includes(k))\n            const header = keys.join(',') + '\\n'\n\n            const values = list\n                .map((x: any) => {\n                    return keys\n                        .map((k: string) => {\n                            if (k === 'tbRa') return x[k]['NO_CIDADE']\n                            if (k === 'rlEventoData') return `${x[k][0]['DT_INICIO']} - ${x[k][0]['HR_INICIO']}`\n\n                            if (typeof x[k] === 'string') {\n                                let item = csvUpper && !csvExcludeUpper.includes(k) ? (x[k] as string).toUpperCase() : x[k]\n\n                                item = normalize ? item.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : item\n\n                                return removeQuotes ? `${item}` : `\"${item}\"`\n                            } else if (typeof x[k] === 'object' && !Array.isArray(x[k]) && x[k] !== null) {\n                                let strItemAsObject = transformArrayObjectInString(x[k]).slice(1, -1) // k: label (Ex.: jsNaturezaEvento)\n\n                                let item = csvUpper && !csvExcludeUpper.includes(k) ? (strItemAsObject as string).toUpperCase() : strItemAsObject\n\n                                item = normalize ? item.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : item\n\n                                return removeQuotes ? `${item}` : `\"${item}\"`\n                            }\n\n                            return x[k]\n                        })\n                        .join(',')\n                })\n                .join('\\n')\n\n            const csvData = header + values\n\n            // download\n            var link = window.document.createElement('a')\n            link.setAttribute('href', 'data:text/csv;charset=utf-8,%EF%BB%BF' + encodeURI(csvData))\n            link.setAttribute('download', `${csv?.fileName}.csv`)\n            link.click()\n        },\n        [list]\n    )\n\n    function expandAll() {\n        let obj: { [key: number]: boolean } = {}\n\n        for (let i = 0; i < itemCount; i++) {\n            obj[i] = !isExpandAll\n        }\n\n        setShowExpandObjOnExited(obj)\n        setExpandObj(obj)\n\n        isExpandAll = !isExpandAll\n    }\n\n    function reset() {\n        setList(startData)\n        setListClone(startData)\n        setPagCount(getCount(startData))\n        setCurrentPage(0)\n        setListPage(1)\n        localStorage.removeItem(localTableName)\n        setFilterKey(new Date().getTime().toString())\n    }\n\n    function filtrar(filterData: FilterValue[]) {\n        if (!startData) return\n\n        let currentData: any[] = JSON.parse(JSON.stringify(startData))\n\n        filterData\n            .filter((dt) => dt.value || (dt.operator === 'entre' && (dt.value || dt.value2)))\n            .forEach((dt) => {\n                let filteredData: any[] = []\n\n                switch (dt.type) {\n                    case 'number':\n                        switch (dt.operator) {\n                            case 'igual':\n                                currentData.forEach((cd) => {\n                                    const value = Number(get(cd, dt.keyName, ''))\n                                    if (value === Number(dt.value)) {\n                                        filteredData.push(cd)\n                                    }\n                                })\n                                break\n                            case 'maior que':\n                                currentData.forEach((cd) => {\n                                    const value = Number(get(cd, dt.keyName, ''))\n\n                                    if (value > Number(dt.value)) {\n                                        filteredData.push(cd)\n                                    }\n                                })\n                                break\n                            case 'menor que':\n                                currentData.forEach((cd) => {\n                                    const value = Number(get(cd, dt.keyName, ''))\n\n                                    if (value < Number(dt.value)) {\n                                        filteredData.push(cd)\n                                    }\n                                })\n                                break\n                        }\n                        break\n                    case 'string':\n                        console.log('ata: ', dt.operator)\n                        switch (dt.operator) {\n                            case 'igual':\n                                currentData.forEach((cd) => {\n                                    const value = get(cd, dt.keyName, '')\n\n                                    if (dt.useList) {\n                                        if (formatarString(value) === formatarString(dt.value.id)) {\n                                            filteredData.push(cd)\n                                        }\n                                    } else {\n                                        if (formatarString(value) === formatarString(dt.value)) {\n                                            filteredData.push(cd)\n                                        }\n                                    }\n                                })\n                                break\n                            case 'contem':\n                                currentData.forEach((cd) => {\n                                    const value: string = get(cd, dt.keyName, '')\n\n                                    if (!value) return\n\n                                    if (dt.useList) {\n                                        if (formatarString(value).includes(formatarString(dt.value.id))) {\n                                            filteredData.push(cd)\n                                        }\n                                    } else {\n                                        if (formatarString(value).includes(formatarString(dt.value as string))) {\n                                            filteredData.push(cd)\n                                        }\n                                    }\n                                })\n                                break\n                            case 'tem um dos':\n                                currentData.forEach((cd) => {\n                                    const value: string = get(cd, dt.keyName, '')\n\n                                    if (!value) return\n\n                                    if ((dt.value as { id: any; label: string }[]).map((x) => formatarString(x.id)).includes(formatarString(value))) {\n                                        filteredData.push(cd)\n                                    }\n                                })\n                                break\n                        }\n                        break\n                    case 'date':\n                        switch (dt.operator) {\n                            case 'data exata':\n                                currentData.forEach((cd) => {\n                                    const value = dayjs(get(cd, dt.keyName, ''), 'DD/MM/YYYY')\n\n                                    if (!value.isValid()) return\n\n                                    if (value.isSame(dayjs(dt.value as string, 'DD/MM/YYYY'))) {\n                                        filteredData.push(cd)\n                                    }\n                                })\n                                break\n                            case 'entre':\n                                const dateA = dt.value ? dayjs(dt.value as string, 'DD/MM/YYYY') : dayjs('01/01/2000', 'DD/MM/YYYY')\n                                const dateB = dt.value2 ? dayjs(dt.value2 as string, 'DD/MM/YYYY') : dayjs('31/12/2030', 'DD/MM/YYYY')\n\n                                currentData.forEach((cd) => {\n                                    const value = dayjs(get(cd, dt.keyName, ''), 'DD/MM/YYYY')\n\n                                    if ((value.isAfter(dateA) || value.isSame(dateA)) && (value.isBefore(dateB) || value.isSame(dateB))) {\n                                        filteredData.push(cd)\n                                    }\n                                })\n                                break\n                        }\n                        break\n                    case 'dates':\n                        switch (dt.operator) {\n                            case 'data inicio':\n                                currentData.forEach((cd) => {\n                                    const dates: string[] = filtersFuncData[dt.customFunc!](get(cd, dt.keyName, '')) ?? []\n\n                                    if (dates.length <= 0) return\n\n                                    var inicioDate = dates[0]\n                                    var inicioValue = dayjs(inicioDate, 'DD/MM/YYYY')\n\n                                    if (inicioValue.isSame(dayjs(dt.value as string, 'DD/MM/YYYY'))) {\n                                        filteredData.push(cd)\n                                    }\n                                })\n                                break\n                            case 'data fim':\n                                currentData.forEach((cd) => {\n                                    const dates: string[] = filtersFuncData[dt.customFunc!](get(cd, dt.keyName, '')) ?? []\n\n                                    if (dates.length <= 0) return\n\n                                    var fimDate = dates[dates.length - 1]\n                                    var fimValue = dayjs(fimDate, 'DD/MM/YYYY')\n\n                                    if (fimValue.isSame(dayjs(dt.value as string, 'DD/MM/YYYY'))) {\n                                        filteredData.push(cd)\n                                    }\n                                })\n                                break\n                            case 'tem a data':\n                                currentData.forEach((cd) => {\n                                    const dates: string[] = filtersFuncData[dt.customFunc!](get(cd, dt.keyName, '')) ?? []\n\n                                    if (dates.includes(dt.value)) {\n                                        filteredData.push(cd)\n                                    }\n                                })\n                                break\n                            case 'entre':\n                                const dateA = dt.value ? dayjs(dt.value as string, 'DD/MM/YYYY') : dayjs('01/01/2000', 'DD/MM/YYYY')\n                                const dateB = dt.value2 ? dayjs(dt.value2 as string, 'DD/MM/YYYY') : dayjs('31/12/2030', 'DD/MM/YYYY')\n\n                                currentData.forEach((cd) => {\n                                    const dates: string[] = filtersFuncData[dt.customFunc!](get(cd, dt.keyName, '')) ?? []\n\n                                    let isBetween = false\n\n                                    dates.forEach((dtStr) => {\n                                        if (isBetween) return\n\n                                        const dt = dayjs(dtStr, 'DD/MM/YYYY')\n\n                                        if (!dt.isValid()) return\n\n                                        if ((dt.isAfter(dateA) || dt.isSame(dateA)) && (dt.isBefore(dateB) || dt.isSame(dateB))) {\n                                            isBetween = true\n                                        }\n                                    })\n\n                                    if (isBetween) {\n                                        filteredData.push(cd)\n                                    }\n                                })\n                                break\n                        }\n                        break\n                }\n\n                currentData = filteredData\n            })\n\n        setList(currentData)\n        setPagCount(getCount(currentData))\n        setCurrentPage(0)\n        setListPage(1)\n        localStorage.setItem(localTableName, JSON.stringify(filterData))\n        setListClone(currentData)\n    }\n\n    function ordenar(order: OrderBy) {\n        let oldList = [...list]\n\n        oldList.sort((a, b) => {\n            const aValue = order.type === 'string' ? get(a, order.key, '') : Number(get(a, order.key, 0))\n            const bValue = order.type === 'string' ? get(b, order.key, '') : Number(get(b, order.key, 0))\n\n            if (orderAsc) {\n                if (aValue < bValue) return -1\n                if (aValue > bValue) return 1\n            } else {\n                if (aValue > bValue) return -1\n                if (aValue < bValue) return 1\n            }\n\n            return 0\n        })\n\n        orderAsc = !orderAsc\n\n        setList(oldList)\n    }\n\n    // effect usado quando for mostrar \"VER MAIS\" e \"VER MENOS\"\n    useEffect(() => {\n        const start = currentPage * itemsCount\n        const newList = list.slice(start, start + itemsCount)\n        let obj: { [key: number]: boolean } = {}\n\n        newList.forEach((x, index) => {\n            columns.forEach((c) => {\n                obj[index] = obj[index] === true ? true : (get(x, c?.keyName as any, '') ?? 'Não Informado').toString().length >= expandTextMaxLength\n            })\n        })\n\n        setShowExpandObj(obj)\n    }, [list, itemsCount, currentPage])\n\n    useEffect(() => {\n        console.log(filterContainer.current)\n    }, [filterContainer.current])\n\n    if (error)\n        return (\n            <Box bgcolor='#fff2c8' color='#3e3129' padding={2} marginX={2} borderRadius={4}>\n                <Typography fontSize={24} textAlign='center' fontFamily='Inter'>\n                    {error.status === 403 && 'Acesso negado'}\n                    {error.status === 500 && (\n                        <Box fontWeight={500} textAlign='center'>\n                            <ReportProblemRounded sx={{ transform: 'scale(2)', marginY: 1, fill: '#3e3129' }} />\n                            <Box>\n                                {customErrorMsg ? (\n                                    customErrorMsg\n                                ) : (\n                                    <>\n                                        Não foi possível se conectar ao servidor no momento. Por favor, aguarde alguns instantes e tente de novo.\n                                        <br />\n                                        <br />\n                                        Caso precise de ajuda, entre em contato pelo email: <strong>cdes@ssp.df.gov.br</strong>\n                                    </>\n                                )}\n                            </Box>\n                        </Box>\n                    )}\n                </Typography>\n            </Box>\n        )\n    if (isLoading)\n        return (\n            <Stack sx={{ height: '100%', width: '100%' }} justifyContent='center' alignItems='center'>\n                <Box width='100%'>\n                    <Stack direction='row' justifyContent='center' alignItems='center' justifyItems='center' spacing={2} marginY={4}>\n                        <PendingRounded sx={{ fill: '#5e5e5e' }} />\n                        <Typography fontWeight={600} fontSize={20} textTransform='capitalize' textAlign='center' color='#5e5e5e'>\n                            Carregando {tableName}\n                        </Typography>\n                    </Stack>\n                    <LinearProgress color='inherit' />\n                    {Array(10)\n                        .fill('')\n                        .map((x) => (\n                            <Stack\n                                direction={{\n                                    xs: 'column',\n                                    md: 'row',\n                                }}\n                                spacing={{\n                                    xs: 3,\n                                    md: 1,\n                                }}\n                                justifyContent='space-between'\n                                paddingY={8}\n                                borderBottom='1px solid #cacaca'\n                            >\n                                {Array(7)\n                                    .fill(0)\n                                    .map((y) => (\n                                        <Box>\n                                            <Skeleton width={60} />\n                                            <Skeleton width={120} />\n                                        </Box>\n                                    ))}\n                            </Stack>\n                        ))}\n                </Box>\n            </Stack>\n        )\n\n    if (!userLoaded && useKC) return <LinearProgress />\n\n    return (\n        <>\n            <Box marginX={isSmall ? customMarginMobile : customMargin} bgcolor='white' p={2} borderRadius={6} {...customTableStyle}>\n                <Stack spacing={1.5} direction={{ xs: 'column', md: 'row' }}>\n                    <Stack spacing={1.5} direction={{ xs: 'column', md: 'row' }} height={{ md: '40px', xs: 'inherit' }} width='100%'>\n                        <TextField\n                            InputProps={{\n                                startAdornment: <SearchIcon sx={{ marginRight: 1, fill: '#c0c0c0' }} />,\n                                sx: {\n                                    '.MuiOutlinedInput-notchedOutline': { border: 'none' },\n                                },\n                            }}\n                            sx={{\n                                border: 'solid 1px #CBD5E1',\n                                backgroundColor: '#F8FAFC',\n                                borderRadius: '50px',\n                                maxWidth: '600px',\n                            }}\n                            size='small'\n                            onChange={onInputChange}\n                            fullWidth\n                            placeholder={`Pesquisar ${tableName}`}\n                        />\n\n                        {filters.length > 0 && (\n                            <Button\n                                startIcon={<FilterAlt />}\n                                variant='contained'\n                                onClick={(e) =>\n                                    MODAL.open(\n                                        <CriarFiltro\n                                            key={filterKey}\n                                            reset={reset}\n                                            filtrar={filtrar}\n                                            baseFilters={[...filters]}\n                                            filters={localStorage.getItem(localTableName) ? (JSON.parse(localStorage.getItem(localTableName)!) as FilterValue[]) : [...filters]}\n                                        />\n                                    )\n                                }\n                                sx={{\n                                    borderRadius: 3,\n                                    paddingX: '24px',\n                                    paddingY: '8px',\n                                    backgroundColor: '#208FE8',\n                                    textTransform: 'capitalize',\n                                }}\n                            >\n                                <Stack direction='row' borderRadius={5} padding={0}>\n                                    <span>Filtrar</span>\n                                </Stack>\n                            </Button>\n                        )}\n\n                        <Stack direction='row' spacing={1}>\n                            <CustomMenu\n                                data={orderBy.map((x) => ({\n                                    name: x.label,\n                                    onClick: () => ordenar(x),\n                                }))}\n                                btProps={{\n                                    startIcon: <KeyboardArrowDown />,\n                                    fullWidth: true,\n                                }}\n                            >\n                                Ordenar\n                            </CustomMenu>\n\n                            <Button\n                                variant='contained'\n                                fullWidth\n                                startIcon={isExpandAll ? <KeyboardArrowUp /> : <KeyboardArrowDown />}\n                                sx={{\n                                    backgroundColor: '#637082',\n                                    ':hover': {\n                                        backgroundColor: '#3c4757',\n                                    },\n                                    textTransform: 'capitalize',\n                                    borderRadius: 3,\n                                    padding: {\n                                        md: '0px 8px',\n                                    },\n                                }}\n                                onClick={expandAll}\n                            >\n                                {isExpandAll ? 'Recolher' : 'Expandir'}\n                            </Button>\n                        </Stack>\n                    </Stack>\n\n                    <Stack alignItems='end' width={{ xs: '100%', md: '20%' }} direction={{ xs: 'row', md: 'column' }} spacing={{ xs: 1, md: 0 }}>\n                        <Typography fontWeight={600} textAlign='end'>\n                            Registro de {tableName}s\n                        </Typography>\n                        <Stack justifyContent='center'>\n                            <Typography>\n                                Exibindo {currentPage * itemsCount + 1}-{currentPage * itemsCount + 1 + getMaxItems().length - 1} de {list.length}\n                            </Typography>\n                        </Stack>\n                    </Stack>\n                </Stack>\n\n                {localStorage.getItem(localTableName) && (\n                    <Box display='inline-flex' flexWrap='wrap' padding={0.5} borderRadius={4} marginBottom={1}>\n                        {(JSON.parse(localStorage.getItem(localTableName) ?? '[]') as FilterValue[])\n                            .filter((x) => x.value || (x.operator === 'entre' && (x.value || x.value2)))\n                            .map((x) => (\n                                <Stack direction='row' spacing={1} bgcolor='#4e85c1' color='white' width='fit-content' paddingY={0.5} borderRadius={2} paddingX={1} m={0.5}>\n                                    <Typography fontWeight={700}>{x.label}</Typography>\n                                    <Typography fontStyle='italic'>{x.operator}</Typography>\n                                    <Typography bgcolor='white' borderRadius={2} paddingX={1} color='black'>\n                                        {Array.isArray(x.value)\n                                            ? (x.value as { id: string; label: string }[]).map((x) => x.label).join(' - ')\n                                            : typeof x.value === 'object'\n                                            ? (x.value as { id: string; label: string }).label\n                                            : x.operator === 'entre'\n                                            ? `${x.value ? x.value : 'Antes'} e ${x.value2 ? x.value2 : 'Depois'}`\n                                            : x.value.toString()}\n                                    </Typography>\n                                    <IconButton\n                                        onClick={(e) => {\n                                            let currentValue = JSON.parse(localStorage.getItem(localTableName) ?? '[]') as FilterValue[]\n\n                                            currentValue = currentValue.map((item) => {\n                                                if (item.label === x.label) {\n                                                    return { ...item, value: '', ...(item.value2 ? { value2: '' } : {}) }\n                                                }\n\n                                                return item\n                                            })\n\n                                            filtrar(currentValue)\n                                        }}\n                                        size='small'\n                                        sx={{\n                                            padding: 0,\n                                        }}\n                                    >\n                                        <Clear\n                                            sx={{\n                                                fill: 'white',\n                                            }}\n                                        />\n                                    </IconButton>\n                                </Stack>\n                            ))}\n                    </Box>\n                )}\n                <Stack spacing={0.2}>\n                    {getMaxItems().length <= 0 ? (\n                        <Stack sx={{ backgroundColor: '#E2E8F0', padding: 2, marginX: { xs: 2, md: 0 } }} justifyContent='center' alignItems='center'>\n                            <Typography fontSize={21} fontFamily='Inter' fontWeight={600} textAlign='center'>\n                                {user ? emptyMsg.user : emptyMsg.public}\n                            </Typography>\n                        </Stack>\n                    ) : (\n                        getMaxItems().map((x: any, index: number) => (\n                            <Paper\n                                key={index}\n                                sx={{\n                                    padding: 0.5,\n                                    backgroundColor: index % 2 === 0 ? '#F8FAFC' : 'white',\n                                    paddingTop: 2,\n                                    borderTop: 'solid 1.5px #E2E8F0',\n                                    position: 'relative',\n                                }}\n                                elevation={0}\n                            >\n                                <Grid container spacing={isSmall ? 2 : 0} paddingX={2} rowSpacing={2}>\n                                    {columns.map((c) => (\n                                        <Grid\n                                            key={String(c?.keyName) + index}\n                                            item\n                                            xs={12}\n                                            md={lg ? (12 / columnSize) * (!!c.size ? c.size : 1) : mediaQueryLG ? mediaQueryLG.all : (12 / columnSize) * (!!c.size ? c.size : 1)}\n                                            sx={{\n                                                overflow: 'hidden',\n                                            }}\n                                        >\n                                            <Box sx={{ width: 'max-content', paddingX: 1 }}>\n                                                <Typography fontSize={16} fontWeight={700} color='#1E293B' fontFamily='Inter'>\n                                                    {c.title}\n                                                </Typography>\n                                            </Box>\n                                            <Box paddingLeft={1} position='relative'>\n                                                <Collapse in={expandObj[index] === true} collapsedSize={collapsedSize} onExited={(e) => setShowExpandObjOnExited((s) => ({ ...s, [index]: false }))}>\n                                                    <Box\n                                                        sx={{\n                                                            wordWrap: 'break-word',\n                                                            color: '#1E293B',\n                                                            fontSize: 16,\n                                                        }}\n                                                        fontFamily='Inter'\n                                                    >\n                                                        <Box>\n                                                            {c.customComponent ? (\n                                                                c.customComponent(get(x, c.keyName as any), x)\n                                                            ) : (\n                                                                <Box color='transparent' sx={{ pointerEvents: 'none', userSelect: 'none' }}>\n                                                                    {get(x, c.keyName as any, '')}\n                                                                </Box>\n                                                            )}\n                                                        </Box>\n                                                        <Box position='absolute' top={0}>\n                                                            {c.customComponent ? (\n                                                                c.customComponent(get(x, c.keyName as any), x)\n                                                            ) : (\n                                                                <>\n                                                                    {showExpandObjOnExited[index] ? (\n                                                                        get(x, c?.keyName as any, '')\n                                                                    ) : (get(x, c?.keyName as any, '') ?? '').toString().length >= expandTextMaxLength ? (\n                                                                        <>{(get(x, c?.keyName as any, '') ?? '').toString().substring(0, expandTextMaxLength) + '...'}</>\n                                                                    ) : (\n                                                                        get(x, c?.keyName as any, '')\n                                                                    )}\n                                                                </>\n                                                            )}\n                                                        </Box>\n                                                    </Box>\n                                                </Collapse>\n                                            </Box>\n                                        </Grid>\n                                    ))}\n                                    <Grid item xs={12} md={lg ? 12 / columnSize : mediaQueryLG ? mediaQueryLG.action : 12 / columnSize}>\n                                        <Stack direction='row' alignItems='center' justifyContent={isSmall ? 'start' : 'flex-end'} sx={{ height: '100%', paddingBottom: isSmall ? 2 : 0 }}>\n                                            {action(x)}\n                                        </Stack>\n                                    </Grid>\n                                    {showExpandObj[index] && (\n                                        <Stack direction='row' justifyContent='flex-end' bottom={0} width='100%'>\n                                            <Button\n                                                onClick={(e) => {\n                                                    setExpandObj((s) => ({ ...s, [index]: !s[index] }))\n                                                    setShowExpandObjOnExited((s) => ({ ...s, [index]: true }))\n                                                }}\n                                                sx={{\n                                                    padding: 0,\n                                                    color: '#637082',\n                                                    textTransform: 'capitalize',\n                                                }}\n                                                startIcon={expandObj[index] ? <ExpandLess /> : <ExpandMore />}\n                                            >\n                                                {expandObj[index] ? 'Ver Menos' : 'Ver Mais'}\n                                            </Button>\n                                        </Stack>\n                                    )}\n                                </Grid>\n                            </Paper>\n                        ))\n                    )}\n                </Stack>\n\n                {getMaxItems().length > 0 && (\n                    <Stack\n                        padding={1}\n                        direction={{\n                            xs: 'column',\n                            md: 'row',\n                        }}\n                        spacing={{\n                            xs: 2,\n                            md: 0,\n                        }}\n                        justifyContent='space-between'\n                        alignItems='center'\n                    >\n                        {csv && (\n                            <Stack\n                                direction={{\n                                    xs: 'column',\n                                    md: 'row',\n                                }}\n                                justifyContent='flex-end'\n                                spacing={1}\n                            >\n                                {csvWithoutZip && (\n                                    <Button\n                                        startIcon={<FileDownloadIcon />}\n                                        variant='contained'\n                                        size='small'\n                                        onClick={downloadCSV}\n                                        sx={{ backgroundColor: '#5a88b0', marginRight: { xs: 2, md: 0 }, width: { xs: '100%', md: 'fit-content' } }}\n                                    >\n                                        {csvNoZipText}\n                                    </Button>\n                                )}\n                                {csvShowAllButton && (\n                                    <Button\n                                        startIcon={<FileDownloadIcon />}\n                                        variant='contained'\n                                        size='small'\n                                        onClick={downloadCSVAll}\n                                        sx={{ backgroundColor: '#64748B', marginRight: { xs: 2, md: 0 }, width: { xs: '100%', md: 'fit-content' } }}\n                                    >\n                                        {csvAllButtonTitle}\n                                    </Button>\n                                )}\n                                <Button\n                                    startIcon={<FileDownloadIcon />}\n                                    variant='contained'\n                                    size='small'\n                                    onClick={(e) => downloadCSV(e, true)}\n                                    sx={{ backgroundColor: '#22C55E', marginRight: { xs: 2, md: 0 }, width: { xs: '100%', md: 'fit-content' } }}\n                                >\n                                    {csvButtonTitle}\n                                </Button>\n                            </Stack>\n                        )}\n                    </Stack>\n                )}\n            </Box>\n\n            <Stack direction='row' justifyContent='center' paddingY={1} paddingTop={2}>\n                <Stack direction='row' justifyContent='center' alignItems='center' spacing={2}>\n                    <Button\n                        onClick={(e) =>\n                            setListPage((s) => {\n                                if (s > 1) {\n                                    return s - 1\n                                }\n\n                                return 1\n                            })\n                        }\n                        sx={{ bgcolor: 'white', borderRadius: '50px', height: '40px', width: '40px', minWidth: 0, border: 'solid 1px #E2E8F0' }}\n                    >\n                        <NavigateNextRoundedIcon sx={{ transform: 'scale(1.5) scaleX(-1)' }} />\n                    </Button>\n                    <Pagination\n                        renderItem={(item) => {\n                            if (item.type === 'page')\n                                return (\n                                    <Button\n                                        onClick={item.onClick}\n                                        sx={{\n                                            fontWeight: 600,\n                                            ...(item.selected\n                                                ? {\n                                                      bgcolor: '#33B55D',\n                                                      color: 'white',\n                                                  }\n                                                : {\n                                                      color: '#1E293B',\n                                                  }),\n                                            borderRadius: '100%',\n                                            padding: 0,\n                                            margin: 0,\n                                            minWidth: 0,\n                                            width: '40px',\n                                            height: '40px',\n\n                                            marginX: 0.25,\n                                        }}\n                                    >\n                                        {item.page}\n                                    </Button>\n                                )\n\n                            if (!['next', 'previous', 'page'].includes(item.type)) return <PaginationItem {...item} />\n                        }}\n                        count={paginationCount}\n                        siblingCount={isSmall ? 0 : 6}\n                        size='large'\n                        onChange={onPaginationChange}\n                        page={listPage}\n                        shape='circular'\n                        variant='outlined'\n                        sx={{\n                            '.MuiPagination-ul': {\n                                backgroundColor: 'white',\n                                border: 'solid 1px #E2E8F0',\n                                borderRadius: '50px',\n                                paddingX: 0.25,\n                                paddingY: 0.5,\n                            },\n                        }}\n                    />\n                    <Button\n                        onClick={(e) =>\n                            setListPage((s) => {\n                                if (s < paginationCount) {\n                                    return s + 1\n                                }\n\n                                return paginationCount\n                            })\n                        }\n                        sx={{ bgcolor: 'white', borderRadius: '50px', height: '40px', width: '40px', minWidth: 0, border: 'solid 1px #E2E8F0' }}\n                    >\n                        <NavigateNextRoundedIcon sx={{ transform: 'scale(1.5)' }} />\n                    </Button>\n                </Stack>\n            </Stack>\n        </>\n    )\n}\n\nfunction CriarFiltro({ filters, baseFilters, filtrar, reset }: { reset: () => void; filtrar: (dt: FilterValue[]) => void; filters: FilterValue[]; baseFilters: FilterValue[] }) {\n    const [data, setData] = useState<FilterValue[]>(filters)\n    const [resetFields, setResetFields] = useState(false)\n\n    function addRule(filter: FilterValue) {\n        setData((dt) => {\n            return [...dt, filter]\n        })\n    }\n\n    const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null)\n    const open = Boolean(anchorEl)\n    const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n        setAnchorEl(event.currentTarget)\n    }\n    const handleClose = () => {\n        setAnchorEl(null)\n    }\n\n    return (\n        <Box\n            width={{\n                xs: 'inherit',\n                md: 850,\n            }}\n        >\n            <Menu open={open} onClose={handleClose} anchorEl={anchorEl}>\n                {baseFilters.map((x) => (\n                    <MenuItem\n                        onClick={(e) => {\n                            addRule(x)\n                            setAnchorEl(null)\n                        }}\n                    >\n                        {x.label}\n                    </MenuItem>\n                ))}\n            </Menu>\n\n            <Stack direction='row' justifyContent='space-between'>\n                {/* <Button\n                    variant='contained'\n                    onClick={handleClick}\n                    sx={{\n                        marginBottom: 2,\n                        textTransform: 'capitalize',\n                    }}\n                    endIcon={<ExpandMore />}\n                >\n                    Adicionar Regra\n                </Button> */}\n                <Typography fontWeight={700} fontSize={18}>\n                    Filtrar\n                </Typography>\n                <Button\n                    startIcon={<Refresh />}\n                    sx={{\n                        textTransform: 'capitalize',\n                    }}\n                    onClick={(e) => {\n                        reset()\n                        MODAL.close()\n                    }}\n                >\n                    Limpar\n                </Button>\n            </Stack>\n\n            <Box marginBottom={1}>\n                <Alert severity='warning'>Preencha apenas os campos que deseja filtrar.</Alert>\n            </Box>\n\n            <Stack>\n                {resetFields ? (\n                    data.map((d, idx) => (\n                        <FilterRow\n                            filterValue={d}\n                            setReset={setResetFields}\n                            idx={idx}\n                            setDt={(valueData) => {\n                                setData((dt) => {\n                                    let arr = [...dt]\n                                    arr[idx] = valueData\n                                    return arr\n                                })\n                            }}\n                            removeDt={() => {\n                                setData((dt) => {\n                                    let arr = [...dt]\n                                    arr.splice(idx, 1)\n                                    return arr\n                                })\n                            }}\n                        />\n                    ))\n                ) : (\n                    <Box>\n                        {data.map((d, idx) => (\n                            <FilterRow\n                                filterValue={d}\n                                setReset={setResetFields}\n                                idx={idx}\n                                setDt={(valueData) => {\n                                    setData((dt) => {\n                                        let arr = [...dt]\n                                        arr[idx] = valueData\n                                        return arr\n                                    })\n                                }}\n                                removeDt={() => {\n                                    setData((dt) => {\n                                        let arr = [...dt]\n                                        arr.splice(idx, 1)\n                                        return arr\n                                    })\n                                }}\n                            />\n                        ))}\n                    </Box>\n                )}\n            </Stack>\n            <Stack direction='row' justifyContent='flex-end' marginTop={1}>\n                <Button\n                    variant='contained'\n                    color='success'\n                    startIcon={<Search />}\n                    sx={{\n                        textTransform: 'capitalize',\n                    }}\n                    onClick={(e) => {\n                        filtrar(data)\n                        MODAL.close()\n                    }}\n                >\n                    Filtrar\n                </Button>\n            </Stack>\n        </Box>\n    )\n}\n\nfunction FilterRow({\n    filterValue,\n    setDt,\n    removeDt,\n    idx,\n    setReset,\n}: {\n    filterValue: FilterValue\n    setDt: (value: any) => void\n    removeDt: () => void\n    idx: number\n    setReset: React.Dispatch<React.SetStateAction<boolean>>\n}) {\n    const [currentOperator, setCurrentOperator] = useState(filterValue.operator)\n    const [data, setData] = useState<FilterValue>(filterValue)\n    const theme = useTheme()\n    const isSmall = useMediaQuery(theme.breakpoints.only('xs'))\n\n    useEffect(() => {\n        setDt(data)\n    }, [data])\n\n    return (\n        <Stack direction='row' alignItems='end' spacing={1} width='100%' bgcolor={idx % 2 === 0 ? '#ededed' : 'inherit'} padding={0.5} borderRadius={2}>\n            {!isSmall && (\n                <Typography width='100%' alignContent='center' fontWeight={600} color='#323232'>\n                    {filterValue.label}\n                </Typography>\n            )}\n            <FormControl\n                sx={{\n                    width: '100%',\n                }}\n            >\n                {isSmall && <Typography>{filterValue.label}</Typography>}\n                <Select\n                    onChange={(e) => {\n                        const value = e.target.value\n\n                        setData((obj) => ({ ...obj, operator: value as FilterOperators, value: '' }))\n                        setCurrentOperator(value as FilterOperators)\n                    }}\n                    defaultValue={currentOperator}\n                    size='small'\n                    sx={{\n                        bgcolor: 'white',\n                    }}\n                    fullWidth\n                >\n                    {filterValue.operators.map((x) => (\n                        <MenuItem value={x}>{x}</MenuItem>\n                    ))}\n                </Select>\n            </FormControl>\n            <FilterField\n                filterValue={filterValue}\n                operator={data.operator}\n                onChange={(value, type: 'value' | 'value2' = 'value') => {\n                    setData((obj) => ({ ...obj, [type]: value }))\n                }}\n            />\n            {/* <IconButton\n                onClick={(e) => {\n                    setDt({ ...data, value: '' })\n                    setReset((s) => !s)\n                }}\n            >\n                <Refresh />\n            </IconButton> */}\n        </Stack>\n    )\n}\n\nfunction FilterField({ filterValue, operator, onChange }: { filterValue: FilterValue; operator: FilterOperators; onChange: (value: string | any[], type?: 'value' | 'value2') => void }) {\n    switch (filterValue.type) {\n        case 'number':\n            return (\n                <TextField\n                    type='number'\n                    size='small'\n                    placeholder='Valor'\n                    defaultValue={filterValue.value}\n                    onChange={(e) => {\n                        onChange(e.target.value)\n                    }}\n                    sx={{\n                        bgcolor: 'white',\n                    }}\n                    fullWidth\n                />\n            )\n        case 'string':\n            if (filterValue.useList) {\n                switch (operator) {\n                    case 'tem um dos':\n                        return (\n                            <Autocomplete\n                                multiple\n                                id='tags-standard'\n                                onChange={(e, value) => {\n                                    if (value.length <= 0) {\n                                        onChange('')\n                                        return\n                                    }\n\n                                    onChange(value)\n                                }}\n                                options={filterValue.useList}\n                                defaultValue={Array.isArray(filterValue.value) ? filterValue.value : []}\n                                renderInput={(params) => <TextField {...params} variant='standard' placeholder='Escolha os valores' fullWidth />}\n                                fullWidth\n                            />\n                        )\n                    case 'contem':\n                    case 'igual':\n                        return (\n                            <Box width='100%'>\n                                <Autocomplete\n                                    options={filterValue.useList}\n                                    onChange={(e, value) => {\n                                        onChange(value as any)\n                                    }}\n                                    defaultValue={typeof filterValue.value === 'object' ? filterValue.value : undefined}\n                                    isOptionEqualToValue={(option, value) => option.label === value.label}\n                                    renderInput={(params) => (\n                                        <TextField\n                                            {...params}\n                                            size='small'\n                                            placeholder='Escolha um valor'\n                                            fullWidth\n                                            sx={{\n                                                bgcolor: 'white',\n                                            }}\n                                        />\n                                    )}\n                                    fullWidth\n                                />\n                            </Box>\n                        )\n                }\n            }\n\n            return (\n                <TextField\n                    size='small'\n                    placeholder='Valor'\n                    defaultValue={filterValue.value}\n                    onChange={(e) => {\n                        onChange(e.target.value)\n                    }}\n                    sx={{\n                        bgcolor: 'white',\n                    }}\n                    fullWidth\n                />\n            )\n        case 'date':\n        case 'dates':\n            switch (operator) {\n                case 'data exata':\n                case 'data fim':\n                case 'data inicio':\n                case 'tem a data':\n                    return (\n                        <LocalizationProvider adapterLocale={'pt-br'} dateAdapter={AdapterDayjs}>\n                            <DatePicker\n                                format='DD/MM/YYYY'\n                                onChange={(dt: any) => {\n                                    onChange(dt.isValid() ? dt.format('DD/MM/YYYY') : '')\n                                }}\n                                defaultValue={filterValue.value ? dayjs(filterValue.value as string, 'DD/MM/YYYY') : undefined}\n                                sx={{\n                                    div: {\n                                        input: {\n                                            paddingX: 2,\n                                            paddingY: 1.05,\n                                        },\n                                    },\n                                    width: '100%',\n                                    bgcolor: 'white',\n                                }}\n                                inputRef={(params: any) => <TextField {...params} size='small' fullWidth />}\n                            />\n                        </LocalizationProvider>\n                    )\n                case 'entre':\n                    return (\n                        <LocalizationProvider adapterLocale={'pt-br'} dateAdapter={AdapterDayjs}>\n                            <DatePicker\n                                format='DD/MM/YYYY'\n                                onChange={(dt: any) => {\n                                    onChange(dt.isValid() ? dt.format('DD/MM/YYYY') : '')\n                                }}\n                                defaultValue={filterValue.value ? dayjs(filterValue.value as string, 'DD/MM/YYYY') : undefined}\n                                sx={{\n                                    div: {\n                                        input: {\n                                            paddingX: 2,\n                                            paddingY: 1.05,\n                                        },\n                                    },\n                                    width: '100%',\n                                    bgcolor: 'white',\n                                }}\n                                inputRef={(params: any) => <TextField {...params} size='small' fullWidth />}\n                            />\n                            <DatePicker\n                                format='DD/MM/YYYY'\n                                onChange={(dt: any) => {\n                                    onChange(dt.isValid() ? dt.format('DD/MM/YYYY') : '', 'value2')\n                                }}\n                                defaultValue={filterValue.value2 ? dayjs(filterValue.value2 as string, 'DD/MM/YYYY') : undefined}\n                                sx={{\n                                    div: {\n                                        input: {\n                                            paddingX: 2,\n                                            paddingY: 1.05,\n                                        },\n                                    },\n                                    width: '100%',\n                                    bgcolor: 'white',\n                                }}\n                                inputRef={(params: any) => <TextField {...params} size='small' fullWidth />}\n                            />\n                        </LocalizationProvider>\n                    )\n            }\n            break\n    }\n\n    return <></>\n}\n\nexport default React.memo(GenericTable)\n","import { ReportProblemRounded } from '@mui/icons-material'\nimport { Box, Typography } from '@mui/material'\nimport React, { ReactNode } from 'react'\n\ninterface TableErrorStateProps {\n    error: null | { status: number }\n    customErrorMsg?: string | ReactNode\n}\n\nexport function TableErrorState({ customErrorMsg, error }: TableErrorStateProps) {\n    return (\n        <Box bgcolor='#fff2c8' color='#3e3129' padding={2} marginX={2} borderRadius={4}>\n            <Typography fontSize={24} textAlign='center' fontFamily='Inter'>\n                {error.status === 403 && 'Acesso negado'}\n                {error.status === 500 && (\n                    <Box fontWeight={500} textAlign='center'>\n                        <ReportProblemRounded\n                            sx={{\n                                transform: 'scale(2)',\n                                marginY: 1,\n                                fill: '#3e3129',\n                            }}\n                        />\n                        <Box>\n                            {customErrorMsg ? (\n                                customErrorMsg\n                            ) : (\n                                <>\n                                    Não foi possível se conectar ao servidor no momento. Por favor, aguarde alguns instantes e tente de novo.\n                                    <br />\n                                    <br />\n                                    Caso precise de ajuda, entre em contato pelo email: <strong>cdes@ssp.df.gov.br</strong>\n                                </>\n                            )}\n                        </Box>\n                    </Box>\n                )}\n            </Typography>\n        </Box>\n    )\n}\n","import { PendingRounded } from '@mui/icons-material'\nimport { Box, LinearProgress, Skeleton, Stack } from '@mui/material'\nimport Typography from '@mui/material/Typography'\nimport React from 'react'\n\ninterface TableLoadingStateProps {\n    tableName: string\n}\n\nexport function TableLoadingState({ tableName }: TableLoadingStateProps) {\n    return (\n        <Stack\n            sx={{\n                height: '100%',\n                width: '100%',\n            }}\n            justifyContent='center'\n            alignItems='center'\n        >\n            <Box width='100%'>\n                <Stack direction='row' justifyContent='center' alignItems='center' justifyItems='center' spacing={2} marginY={4}>\n                    <PendingRounded\n                        sx={{\n                            fill: '#5e5e5e',\n                        }}\n                    />\n                    <Typography fontWeight={600} fontSize={20} textTransform='capitalize' textAlign='center' color='#5e5e5e'>\n                        Carregando {tableName}\n                    </Typography>\n                </Stack>\n                <LinearProgress color='inherit' />\n                {Array(10)\n                    .fill('')\n                    .map((x) => (\n                        <Stack\n                            direction={{\n                                xs: 'column',\n                                md: 'row',\n                            }}\n                            spacing={{\n                                xs: 3,\n                                md: 1,\n                            }}\n                            justifyContent='space-between'\n                            paddingY={8}\n                            borderBottom='1px solid #cacaca'\n                        >\n                            {Array(7)\n                                .fill(0)\n                                .map((y) => (\n                                    <Box>\n                                        <Skeleton width={60} />\n                                        <Skeleton width={120} />\n                                    </Box>\n                                ))}\n                        </Stack>\n                    ))}\n            </Box>\n        </Stack>\n    )\n}\n","import get from 'lodash.get'\nimport { CsvConfigProp, CsvMapProps, FilterValue, OrderBy } from './types'\nimport dayjs from 'dayjs'\nimport JSZip from 'jszip'\nimport cloneDeep from 'lodash.clonedeep'\nimport * as XLSX from 'xlsx'\n\n\nexport const getCount = (countData: any[], itemsCount: number) => {\n    if (countData.length <= 0) return 1\n\n    let count = countData.length / itemsCount\n    count = count < 1 ? 1 : count\n    return Math.ceil(count)\n}\n\nexport function transformArrayObjectInString(o: Object): String {\n    let arrString = []\n\n    if (typeof o === 'object' && !Array.isArray(o) && o !== null) {\n        for (let [key, value] of Object.entries(o)) {\n            if (typeof value === 'object' && !Array.isArray(value) && value !== null) {\n                arrString.push(key + ': ' + transformArrayObjectInString(value))\n            } else {\n                if (value) {\n                    // Is true\n                    arrString.push(key)\n                }\n            }\n        }\n    }\n\n    return '[' + arrString.join(' - ') + ']'\n}\n\n// export function defineCSVCells({ csvUpper, csvExcludeUpper }: DefineCSVCellsProps): string {\n//     if (typeof cell === 'string') {\n//         let item = csvUpper && !csvExcludeUpper.includes(key) ? (cell as string).toUpperCase() : cell\n//         item = normalize ? item.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : item\n//         return removeQuotes ? `${item}` : `\"${item}\"`\n//     } else if (typeof cell === 'object' && !Array.isArray(cell) && cell !== null) {\n//         let strItemAsObject = transformArrayObjectInString(cell).slice(1, -1) // key: label (Ex.: jsNaturezaEvento)\n\n//         let item = csvUpper && !csvExcludeUpper.includes(key) ? (strItemAsObject as string).toUpperCase() : strItemAsObject\n//         item = normalize ? item.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : item\n//         return removeQuotes ? `${item}` : `\"${item}\"`\n//     }\n\n//     return cell\n// }\n\nexport function removePunctuationAndAccents(text: string) {\n    // Remove accents and diacritics\n    const normalizedText = text.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')\n\n    // Remove punctuation marks\n    const cleanedText = normalizedText.replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~]/g, '')\n\n    return cleanedText\n}\n\nexport function formatarString(str: string | number) {\n    const value: string = typeof str !== 'string' ? str.toString() : str\n\n    return value\n        .normalize('NFD')\n        .replace(/[\\u0300-\\u036f]/g, '')\n        .toLowerCase()\n        .trim()\n}\n\ninterface FiltrarProps {\n    startData: any[]\n    filterData: FilterValue[]\n    filtersFuncData: { [key: string]: (value: string) => any }\n    localTableName: string\n    setList: (arg: any) => void\n    setPagCount: (arg: any) => void\n    setCurrentPage: (arg: number) => void\n    setListPage: (arg: number) => void\n    setListClone: (arg: any) => void\n    itemsCount: number\n}\n\nexport function filtrarDados({ filterData, startData, filtersFuncData = {}, localTableName = '', setCurrentPage, setList, setListClone, setListPage, setPagCount, itemsCount }: FiltrarProps) {\n    if (!startData) return\n\n    let currentData: any[] = JSON.parse(JSON.stringify(startData))\n\n    filterData\n        .filter((dt) => dt.value || (dt.operator === 'entre' && (dt.value || dt.value2)))\n        .forEach((dt) => {\n            let filteredData: any[] = []\n\n            switch (dt.type) {\n                case 'number':\n                    switch (dt.operator) {\n                        case 'igual':\n                            currentData.forEach((cd) => {\n                                const value = Number(get(cd, dt.keyName, ''))\n                                if (value === Number(dt.value)) {\n                                    filteredData.push(cd)\n                                }\n                            })\n                            break\n                        case 'maior que':\n                            currentData.forEach((cd) => {\n                                const value = Number(get(cd, dt.keyName, ''))\n\n                                if (value > Number(dt.value)) {\n                                    filteredData.push(cd)\n                                }\n                            })\n                            break\n                        case 'menor que':\n                            currentData.forEach((cd) => {\n                                const value = Number(get(cd, dt.keyName, ''))\n\n                                if (value < Number(dt.value)) {\n                                    filteredData.push(cd)\n                                }\n                            })\n                            break\n                    }\n                    break\n                case 'string':\n                    switch (dt.operator) {\n                        case 'igual':\n                            currentData.forEach((cd) => {\n                                const value = get(cd, dt.keyName, '')\n\n                                if (dt.useList) {\n                                    if (formatarString(value) === formatarString(dt.value.id)) {\n                                        filteredData.push(cd)\n                                    }\n                                } else {\n                                    if (formatarString(value) === formatarString(dt.value)) {\n                                        filteredData.push(cd)\n                                    }\n                                }\n                            })\n                            break\n                        case 'contem':\n                            currentData.forEach((cd) => {\n                                const value: string = get(cd, dt.keyName, '')\n\n                                if (!value) return\n\n                                if (dt.useList) {\n                                    if (formatarString(value).includes(formatarString(dt.value.id))) {\n                                        filteredData.push(cd)\n                                    }\n                                } else {\n                                    if (formatarString(value).includes(formatarString(dt.value as string))) {\n                                        filteredData.push(cd)\n                                    }\n                                }\n                            })\n                            break\n                        case 'tem um dos':\n                            currentData.forEach((cd) => {\n                                const value: string = get(cd, dt.keyName, '')\n\n                                if (!value) return\n\n                                if ((dt.value as { id: any; label: string }[]).map((x) => formatarString(x.id)).includes(formatarString(value))) {\n                                    filteredData.push(cd)\n                                }\n                            })\n                            break\n                    }\n                    break\n                case 'date':\n                    switch (dt.operator) {\n                        case 'data exata':\n                            currentData.forEach((cd) => {\n                                const value = dayjs(get(cd, dt.keyName, ''), 'DD/MM/YYYY')\n\n                                if (!value.isValid()) return\n\n                                if (value.isSame(dayjs(dt.value as string, 'DD/MM/YYYY'))) {\n                                    filteredData.push(cd)\n                                }\n                            })\n                            break\n                        case 'entre':\n                            const dateA = dt.value ? dayjs(dt.value as string, 'DD/MM/YYYY') : dayjs('01/01/2000', 'DD/MM/YYYY')\n                            const dateB = dt.value2 ? dayjs(dt.value2 as string, 'DD/MM/YYYY') : dayjs('31/12/2030', 'DD/MM/YYYY')\n\n                            currentData.forEach((cd) => {\n                                const value = dayjs(get(cd, dt.keyName, ''), 'DD/MM/YYYY')\n\n                                if ((value.isAfter(dateA) || value.isSame(dateA)) && (value.isBefore(dateB) || value.isSame(dateB))) {\n                                    filteredData.push(cd)\n                                }\n                            })\n                            break\n                    }\n                    break\n                case 'dates':\n                    switch (dt.operator) {\n                        case 'data inicio':\n                            currentData.forEach((cd) => {\n                                const dates: string[] = (filtersFuncData[dt.customFunc!](get(cd, dt.keyName, '')) ?? []).filter(d => d !== undefined && d !== '')\n\n                                if (dates.length <= 0) return\n\n                                var inicioDate = dates[0]\n                                var inicioValue = dayjs(inicioDate, 'DD/MM/YYYY')\n\n                                if (inicioValue.isSame(dayjs(dt.value as string, 'DD/MM/YYYY'))) {\n                                    filteredData.push(cd)\n                                }\n                            })\n                            break\n                        case 'data fim':\n                            currentData.forEach((cd) => {\n                                const dates: string[] = (filtersFuncData[dt.customFunc!](get(cd, dt.keyName, '')) ?? []).filter(d => d !== undefined && d !== '')\n\n                                if (dates.length <= 0) return\n\n                                console.log(dates)\n\n                                var fimDate = dates[dates.length - 1]\n                                var fimValue = dayjs(fimDate, 'DD/MM/YYYY')\n\n                                if (fimValue.isSame(dayjs(dt.value as string, 'DD/MM/YYYY'))) {\n                                    filteredData.push(cd)\n                                }\n                            })\n                            break\n                        case 'tem a data':\n                            currentData.forEach((cd) => {\n                                const dates: string[] = (filtersFuncData[dt.customFunc!](get(cd, dt.keyName, '')) ?? []).filter(d => d !== undefined && d !== '')\n\n                                if (dates.includes(dt.value)) {\n                                    filteredData.push(cd)\n                                }\n                            })\n                            break\n                        case 'entre':\n                            const dateA = dt.value ? dayjs(dt.value as string, 'DD/MM/YYYY') : dayjs('01/01/2000', 'DD/MM/YYYY')\n                            const dateB = dt.value2 ? dayjs(dt.value2 as string, 'DD/MM/YYYY') : dayjs('31/12/2030', 'DD/MM/YYYY')\n\n                            currentData.forEach((cd) => {\n                                const dates: string[] = (filtersFuncData[dt.customFunc!](get(cd, dt.keyName, '')) ?? []).filter(d => d !== undefined && d !== '')\n\n                                let isBetween = false\n\n                                dates.forEach((dtStr) => {\n                                    if (isBetween) return\n\n                                    const dt = dayjs(dtStr, 'DD/MM/YYYY')\n\n                                    if (!dt.isValid()) return\n\n                                    if ((dt.isAfter(dateA) || dt.isSame(dateA)) && (dt.isBefore(dateB) || dt.isSame(dateB))) {\n                                        isBetween = true\n                                    }\n                                })\n\n                                if (isBetween) {\n                                    filteredData.push(cd)\n                                }\n                            })\n                            break\n                    }\n                    break\n            }\n\n            currentData = filteredData\n        })\n\n    setList(currentData)\n    setPagCount(getCount(currentData, itemsCount))\n    setCurrentPage(0)\n    setListPage(1)\n    localStorage.setItem(localTableName, JSON.stringify(filterData))\n    setListClone(currentData)\n}\n\ninterface OrdenarDadosProps {\n    order: OrderBy\n    list: any[]\n    orderAsc: boolean\n}\n\nexport function ordenarDados({ order, list, orderAsc = false }: OrdenarDadosProps) {\n    const sortedList = cloneDeep(list).sort((a, b) => {\n        const aValue = order.type === 'string' ? get(a, order.key, '') : Number(get(a, order.key, 0))\n        const bValue = order.type === 'string' ? get(b, order.key, '') : Number(get(b, order.key, 0))\n\n        if (orderAsc) {\n            if (aValue < bValue) return -1\n            if (aValue > bValue) return 1\n        } else {\n            if (aValue > bValue) return -1\n            if (aValue < bValue) return 1\n        }\n\n        return 0\n    })\n    return sortedList\n}\n\n\nexport async function downloadCSVFile(list: any[], config: CsvConfigProp, filters: FilterValue[]) {\n    if (list.length <= 0) return\n    \n    let data:any[] = []\n\n    if (config.downloadAll && config.customAll) data = config.customAll(list, filters)\n    else if (!config.downloadAll && config.customFiltered) data = config.customFiltered(list, filters)\n    else {\n            // definindo os campos especificados do csv\n            list.forEach(x => {\n                const obj = {}\n            \n                config.map.forEach(m => {\n                    // opção de usar o valor do filtro no próprio campo\n                    if (m.useFilterValue && !config.downloadAll && !m.onlyAll) {\n                        const filterValueList = filters.filter(f => f.label == m.useFilterValue.label && m.useFilterValue.operators.includes(f.operator))  \n                        const filterValue = filterValueList.length > 0 ? (filterValueList.reduce(r => r.value).value || undefined) : undefined\n            \n                        obj[m.name] = filterValue || get(x, m.key)\n                        return\n                    }\n            \n                    if (m.onlyFilter) return\n            \n                    obj[m.name] = get(x, m.key)\n                })\n            \n                data.push(obj)\n            })\n    }\n\n    const worksheet = XLSX.utils.json_to_sheet(data)\n    const workbook = XLSX.utils.book_new()\n    XLSX.utils.book_append_sheet(workbook, worksheet, config.fileName)\n\n    XLSX.writeFile(workbook, `${config.fileName}.xlsx`)\n}\n\nexport function downloadCSVAll(e: React.MouseEvent, list: any[], keys: string[], fileName: string) {\n    e.preventDefault()\n\n    if (list.length <= 0) return\n\n    const header = keys.join(',') + '\\n'\n    const values = list\n        .map((x) =>\n            keys\n                .map((k) => {\n                    if (k === 'tbRa') return x[k]['NO_CIDADE']\n                    if (k === 'rlEventoData') return `${x[k][0]['DT_INICIO']} - ${x[k][0]['HR_INICIO']}`\n                    if (typeof x[k] === 'string') return `\"${x[k]}\"`\n                    if (typeof x[k] === 'object' && x[k] !== null) return `\"${transformArrayObjectInString(x[k]).slice(1, -1)}\"`\n                    return x[k]\n                })\n                .join(',')\n        )\n        .join('\\n')\n\n    const csvData = header + values\n    const link = document.createElement('a')\n    link.href = 'data:text/csv;charset=utf-8,%EF%BB%BF' + encodeURI(csvData)\n    link.download = `${fileName}.csv`\n    link.click()\n}\n","import { Refresh } from '@mui/icons-material'\nimport { default as Search } from '@mui/icons-material/Search'\nimport { Alert, Autocomplete, Box, Button, FormControl, Menu, MenuItem, Select, Stack, useMediaQuery, useTheme } from '@mui/material'\nimport TextField from '@mui/material/TextField'\nimport Typography from '@mui/material/Typography'\nimport { DatePicker, LocalizationProvider } from '@mui/x-date-pickers'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport dayjs from 'dayjs'\nimport React, { useEffect, useState } from 'react'\nimport { MODAL } from '../../modal/Modal'\nimport { FilterOperators, FilterValue } from './types'\n\nexport function FilterMenu({ filters, baseFilters, filtrar, reset }: { reset: () => void; filtrar: (dt: FilterValue[]) => void; filters: FilterValue[]; baseFilters: FilterValue[] }) {\n    const [data, setData] = useState<FilterValue[]>(filters)\n    const [resetFields, setResetFields] = useState(false)\n\n    function addRule(filter: FilterValue) {\n        setData((dt) => {\n            return [...dt, filter]\n        })\n    }\n\n    const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null)\n    const open = Boolean(anchorEl)\n    const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n        setAnchorEl(event.currentTarget)\n    }\n    const handleClose = () => {\n        setAnchorEl(null)\n    }\n\n    return (\n        <Box\n            width={{\n                xs: 'inherit',\n                md: 850,\n            }}\n        >\n            <Menu open={open} onClose={handleClose} anchorEl={anchorEl}>\n                {baseFilters.map((x) => (\n                    <MenuItem\n                        onClick={(e) => {\n                            addRule(x)\n                            setAnchorEl(null)\n                        }}\n                    >\n                        {x.label}\n                    </MenuItem>\n                ))}\n            </Menu>\n\n            <Stack direction='row' justifyContent='space-between'>\n                {/* <Button\n                    variant='contained'\n                    onClick={handleClick}\n                    sx={{\n                        marginBottom: 2,\n                        textTransform: 'capitalize',\n                    }}\n                    endIcon={<ExpandMore />}\n                >\n                    Adicionar Regra\n                </Button> */}\n                <Typography fontWeight={700} fontSize={18}>\n                    Filtrar\n                </Typography>\n                <Button\n                    startIcon={<Refresh />}\n                    sx={{\n                        textTransform: 'capitalize',\n                    }}\n                    onClick={(e) => {\n                        reset()\n                        MODAL.close()\n                    }}\n                >\n                    Limpar\n                </Button>\n            </Stack>\n\n            <Box marginBottom={1}>\n                <Alert severity='warning'>Preencha apenas os campos que deseja filtrar.</Alert>\n            </Box>\n\n            <Stack>\n                {resetFields ? (\n                    data.map((d, idx) => (\n                        <FilterRow\n                            filterValue={d}\n                            setReset={setResetFields}\n                            idx={idx}\n                            setDt={(valueData) => {\n                                setData((dt) => {\n                                    let arr = [...dt]\n                                    arr[idx] = valueData\n                                    return arr\n                                })\n                            }}\n                            removeDt={() => {\n                                setData((dt) => {\n                                    let arr = [...dt]\n                                    arr.splice(idx, 1)\n                                    return arr\n                                })\n                            }}\n                        />\n                    ))\n                ) : (\n                    <Box>\n                        {data.map((d, idx) => (\n                            <FilterRow\n                                filterValue={d}\n                                setReset={setResetFields}\n                                idx={idx}\n                                setDt={(valueData) => {\n                                    setData((dt) => {\n                                        let arr = [...dt]\n                                        arr[idx] = valueData\n                                        return arr\n                                    })\n                                }}\n                                removeDt={() => {\n                                    setData((dt) => {\n                                        let arr = [...dt]\n                                        arr.splice(idx, 1)\n                                        return arr\n                                    })\n                                }}\n                            />\n                        ))}\n                    </Box>\n                )}\n            </Stack>\n            <Stack direction='row' justifyContent='flex-end' marginTop={1}>\n                <Button\n                    variant='contained'\n                    color='success'\n                    startIcon={<Search />}\n                    sx={{\n                        textTransform: 'capitalize',\n                    }}\n                    onClick={(e) => {\n                        filtrar(data)\n                        MODAL.close()\n                    }}\n                >\n                    Filtrar\n                </Button>\n            </Stack>\n        </Box>\n    )\n}\n\nfunction FilterRow({\n    filterValue,\n    setDt,\n    removeDt,\n    idx,\n    setReset,\n}: {\n    filterValue: FilterValue\n    setDt: (value: any) => void\n    removeDt: () => void\n    idx: number\n    setReset: React.Dispatch<React.SetStateAction<boolean>>\n}) {\n    const [currentOperator, setCurrentOperator] = useState(filterValue.operator)\n    const [data, setData] = useState<FilterValue>(filterValue)\n    const theme = useTheme()\n    const isSmall = useMediaQuery(theme.breakpoints.only('xs'))\n\n    useEffect(() => {\n        setDt(data)\n    }, [data])\n\n    return (\n        <Stack direction='row' alignItems='end' spacing={1} width='100%' bgcolor={idx % 2 === 0 ? '#ededed' : 'inherit'} padding={0.5} borderRadius={2}>\n            {!isSmall && (\n                <Typography width='100%' alignContent='center' fontWeight={600} color='#323232'>\n                    {filterValue.label}\n                </Typography>\n            )}\n            <FormControl\n                sx={{\n                    width: '100%',\n                }}\n            >\n                {isSmall && <Typography>{filterValue.label}</Typography>}\n                <Select\n                    onChange={(e) => {\n                        const value = e.target.value\n\n                        setData((obj) => ({ ...obj, operator: value as FilterOperators, value: '' }))\n                        setCurrentOperator(value as FilterOperators)\n                    }}\n                    defaultValue={currentOperator}\n                    size='small'\n                    sx={{\n                        bgcolor: 'white',\n                    }}\n                    fullWidth\n                >\n                    {filterValue.operators.map((x) => (\n                        <MenuItem value={x}>{x}</MenuItem>\n                    ))}\n                </Select>\n            </FormControl>\n            <FilterField\n                filterValue={filterValue}\n                operator={data.operator}\n                onChange={(value, type: 'value' | 'value2' = 'value') => {\n                    setData((obj) => ({ ...obj, [type]: value }))\n                }}\n            />\n            {/* <IconButton\n                onClick={(e) => {\n                    setDt({ ...data, value: '' })\n                    setReset((s) => !s)\n                }}\n            >\n                <Refresh />\n            </IconButton> */}\n        </Stack>\n    )\n}\n\nfunction FilterField({ filterValue, operator, onChange }: { filterValue: FilterValue; operator: FilterOperators; onChange: (value: string | any[], type?: 'value' | 'value2') => void }) {\n    switch (filterValue.type) {\n        case 'number':\n            return (\n                <TextField\n                    type='number'\n                    size='small'\n                    placeholder='Valor'\n                    defaultValue={filterValue.value}\n                    onChange={(e) => {\n                        onChange(e.target.value)\n                    }}\n                    sx={{\n                        bgcolor: 'white',\n                    }}\n                    fullWidth\n                />\n            )\n        case 'string':\n            if (filterValue.useList) {\n                switch (operator) {\n                    case 'tem um dos':\n                        return (\n                            <Autocomplete\n                                multiple\n                                id='tags-standard'\n                                onChange={(e, value) => {\n                                    if (value.length <= 0) {\n                                        onChange('')\n                                        return\n                                    }\n\n                                    onChange(value)\n                                }}\n                                options={filterValue.useList}\n                                defaultValue={Array.isArray(filterValue.value) ? filterValue.value : []}\n                                renderInput={(params) => <TextField {...params} variant='standard' placeholder='Escolha os valores' fullWidth />}\n                                fullWidth\n                            />\n                        )\n                    case 'contem':\n                    case 'igual':\n                        return (\n                            <Box width='100%'>\n                                <Autocomplete\n                                    options={filterValue.useList}\n                                    onChange={(e, value) => {\n                                        onChange(value as any)\n                                    }}\n                                    defaultValue={typeof filterValue.value === 'object' ? filterValue.value : undefined}\n                                    isOptionEqualToValue={(option, value) => option.label === value.label}\n                                    renderInput={(params) => (\n                                        <TextField\n                                            {...params}\n                                            size='small'\n                                            placeholder='Escolha um valor'\n                                            fullWidth\n                                            sx={{\n                                                bgcolor: 'white',\n                                            }}\n                                        />\n                                    )}\n                                    fullWidth\n                                />\n                            </Box>\n                        )\n                }\n            }\n\n            return (\n                <TextField\n                    size='small'\n                    placeholder='Valor'\n                    defaultValue={filterValue.value}\n                    onChange={(e) => {\n                        onChange(e.target.value)\n                    }}\n                    sx={{\n                        bgcolor: 'white',\n                    }}\n                    fullWidth\n                />\n            )\n        case 'date':\n        case 'dates':\n            switch (operator) {\n                case 'data exata':\n                case 'data fim':\n                case 'data inicio':\n                case 'tem a data':\n                    return (\n                        <LocalizationProvider adapterLocale={'pt-br'} dateAdapter={AdapterDayjs}>\n                            <DatePicker\n                                format='DD/MM/YYYY'\n                                onChange={(dt: any) => {\n                                    onChange(dt.isValid() ? dt.format('DD/MM/YYYY') : '')\n                                }}\n                                defaultValue={filterValue.value ? dayjs(filterValue.value as string, 'DD/MM/YYYY') : undefined}\n                                sx={{\n                                    div: {\n                                        input: {\n                                            paddingX: 2,\n                                            paddingY: 1.05,\n                                        },\n                                    },\n                                    width: '100%',\n                                    bgcolor: 'white',\n                                }}\n                                inputRef={(params: any) => <TextField {...params} size='small' fullWidth />}\n                            />\n                        </LocalizationProvider>\n                    )\n                case 'entre':\n                    return (\n                        <LocalizationProvider adapterLocale={'pt-br'} dateAdapter={AdapterDayjs}>\n                            <DatePicker\n                                format='DD/MM/YYYY'\n                                onChange={(dt: any) => {\n                                    onChange(dt.isValid() ? dt.format('DD/MM/YYYY') : '')\n                                }}\n                                defaultValue={filterValue.value ? dayjs(filterValue.value as string, 'DD/MM/YYYY') : undefined}\n                                sx={{\n                                    div: {\n                                        input: {\n                                            paddingX: 2,\n                                            paddingY: 1.05,\n                                        },\n                                    },\n                                    width: '100%',\n                                    bgcolor: 'white',\n                                }}\n                                inputRef={(params: any) => <TextField {...params} size='small' fullWidth />}\n                            />\n                            <DatePicker\n                                format='DD/MM/YYYY'\n                                onChange={(dt: any) => {\n                                    onChange(dt.isValid() ? dt.format('DD/MM/YYYY') : '', 'value2')\n                                }}\n                                defaultValue={filterValue.value2 ? dayjs(filterValue.value2 as string, 'DD/MM/YYYY') : undefined}\n                                sx={{\n                                    div: {\n                                        input: {\n                                            paddingX: 2,\n                                            paddingY: 1.05,\n                                        },\n                                    },\n                                    width: '100%',\n                                    bgcolor: 'white',\n                                }}\n                                inputRef={(params: any) => <TextField {...params} size='small' fullWidth />}\n                            />\n                        </LocalizationProvider>\n                    )\n            }\n            break\n    }\n\n    return <></>\n}\n","import { TableErrorState } from './TableErrorState'\nimport { ExpandLess, ExpandMore, FilterAlt, KeyboardArrowDown, KeyboardArrowUp, ReportProblemRounded } from '@mui/icons-material'\nimport Clear from '@mui/icons-material/Clear'\nimport FileDownloadIcon from '@mui/icons-material/FileDownload'\nimport NavigateNextRoundedIcon from '@mui/icons-material/NavigateNextRounded'\nimport { default as SearchIcon } from '@mui/icons-material/Search'\nimport { Box, Button, Collapse, IconButton, LinearProgress, PaginationItem, Paper, Stack, useMediaQuery, useTheme } from '@mui/material'\nimport Grid from '@mui/material/Grid'\nimport Pagination from '@mui/material/Pagination'\nimport TextField from '@mui/material/TextField'\nimport Typography from '@mui/material/Typography'\nimport get from 'lodash.get'\nimport React, { ChangeEvent, useCallback, useContext, useEffect, useRef, useState } from 'react'\nimport { AuthContext } from '../../../context/auth'\nimport { MODAL } from '../../modal/Modal'\nimport CustomMenu from '../../utils//CustomMenu'\nimport { FilterValue, OrderBy, TableProps } from './types'\nimport { TableLoadingState } from './TableLoadingState'\nimport { removePunctuationAndAccents, getCount, filtrarDados, ordenarDados, downloadCSVFile, downloadCSVAll } from './utils'\nimport { FilterMenu } from './FilterSection'\n\nlet isExpandAll: boolean = false\nlet localTableName = ''\nlet filtersFuncData: { [key: string]: (value: string) => any } = {}\nlet localTableNameCache = ''\n\nexport function Table({\n    mediaQueryLG,\n    columns,\n    csvConfig,\n    fetchFunc,\n    emptyMsg = {\n        user: 'Nenhum dado encontrado',\n        public: 'Nenhum dado encontrado',\n    },\n    dataPath = '',\n    tableName = 'Dado',\n    columnSize,\n    action,\n    useKC = true,\n    itemCount = 10,\n    expandTextMaxLength = 50,\n    collapsedSize = 53,\n    customMargin = 4,\n    customMarginMobile = 0,\n    filtersFunc,\n    filters = [],\n    orderBy = [],\n    customErrorMsg = undefined,\n    customTableStyle = {},\n    id,\n    initialData = null,\n    isExpandable = true,\n}: TableProps) {\n    const [isLoading, setIsLoading] = useState(false)\n    const [error, setError] = useState<null | { status: number }>(null)\n    const [data, setData] = useState<any>(initialData)\n    /** startData Dado puro, sem filtro ou ordenação */\n    const { user, userLoaded } = useContext(AuthContext)\n    const [list, setList] = useState<any[]>([])\n    const [listClone, setListClone] = useState<any[]>([])\n    //numero de items pra ser mostrado\n    const [itemsCount, setItemsCount] = useState(itemCount)\n    const [currentPage, setCurrentPage] = useState(0)\n    const [paginationCount, setPagCount] = useState(1)\n    const [listPage, setListPage] = useState(1)\n    const [expandObj, setExpandObj] = useState<{ [key: number]: boolean }>({})\n    const [showExpandObj, setShowExpandObj] = useState<{ [key: number]: boolean }>({})\n    const [showExpandObjOnExited, setShowExpandObjOnExited] = useState<{ [key: number]: boolean }>({})\n    const [filterKey, setFilterKey] = useState('filterKey')\n    const theme = useTheme()\n    const isSmall = useMediaQuery(theme.breakpoints.only('xs'))\n    const startData = useRef<any[]>(data)\n    const orderAsc = useRef((localStorage.getItem(`order-${id}`) === 'true') || false)\n    const lg = useMediaQuery(theme.breakpoints.up(2000))\n\n    localTableName = `tableFilter_${id}`\n    localTableNameCache = `tableFilterCache_${id}`\n    filtersFuncData = filtersFunc ?? {}\n\n    if (!localStorage.getItem(localTableNameCache)) localStorage.setItem(localTableNameCache, JSON.stringify(filters))\n\n    if (localStorage.getItem(localTableNameCache) !== JSON.stringify(filters)) {\n        localStorage.setItem(localTableNameCache, JSON.stringify(filters))\n        localStorage.removeItem(localTableName)\n    }\n\n    useEffect(() => {\n        setError(null)\n        if (!fetchFunc) return\n        if (userLoaded || !useKC) {\n            setIsLoading(true)\n\n            fetchFunc()\n                .then((res) => {\n                    if (!res.ok) {\n                        setError({\n                            status: 500,\n                        })\n                        setIsLoading(false)\n                        return\n                    }\n\n                    return res.json().then((j) => {\n                        if (j.statusCode === 204) {\n                            setData({ body: { data: [] } })\n                            startData.current = []\n                        } else if (j.statusCode === 403)\n                            setError({\n                                status: j.statusCode,\n                            })\n                        else {\n                            let value = dataPath ? get(j, dataPath) : j\n\n                            if (!value || !Array.isArray(value)) {\n                                setData({ body: { data: [] } })\n                                startData.current = []\n                            } else {\n                                let newValue: any[] = value\n \n                                // começando a ordenação padrão\n                                if (localStorage.getItem(`order-data-${id}`)) {\n                                    try {\n                                        const orderData: OrderBy = JSON.parse(localStorage.getItem(`order-data-${id}`))\n\n                                        newValue = ordenarDados({\n                                            order: orderData,\n                                            list: value,\n                                            orderAsc: orderAsc.current,\n                                        })\n                                    } catch(err){\n                                        console.log(err)\n                                    }\n                                }\n                                else if (orderBy.length > 0) {\n                                    // se não tiver salvo uma ordenação, ordena pelo primeiro da lista\n                                    newValue = ordenarDados({\n                                        order: orderBy[0],\n                                        list: value,\n                                        orderAsc: orderAsc.current,\n                                    })\n                                }\n\n                                setData(newValue)\n                                startData.current = JSON.parse(JSON.stringify(newValue))\n                            }\n                        }\n\n                        setIsLoading(false)\n                    })\n                })\n                .catch((err) => {\n                    setError({\n                        status: 500,\n                    })\n                })\n        }\n    }, [userLoaded, fetchFunc])\n\n    const getData = useCallback((dt: any) => {\n        if (Array.isArray(dt)) return dt\n\n        if (typeof dt === 'object') return get(dt, dataPath)\n    }, [])\n\n    useEffect(() => {\n        if (isLoading || error || !getData(data)) return\n\n        let value = getData(data)\n\n        setList(value)\n        setListClone(value)\n        setPagCount(getCount(value, itemsCount))\n\n        if (localStorage.getItem(localTableName)) {\n            filtrarDados({\n                filterData: JSON.parse(localStorage.getItem(localTableName) as string) as FilterValue[],\n                filtersFuncData: filtersFuncData,\n                localTableName: localTableName,\n                setCurrentPage: setCurrentPage,\n                setList,\n                setListClone,\n                setListPage,\n                setPagCount,\n                startData: startData.current,\n                itemsCount,\n            })\n        }\n    }, [itemsCount, isLoading, data, error])\n\n    useEffect(() => {\n        setCurrentPage(listPage - 1)\n    }, [listPage])\n\n    const onPaginationChange = useCallback((e: ChangeEvent<unknown>, page: number) => {\n        setListPage(page)\n    }, [])\n\n    function onInputChange(e: ChangeEvent) {\n        const searchValue = (e.target as HTMLInputElement).value\n\n        if (searchValue === '') {\n            setList(listClone)\n            setPagCount(getCount(getData(list), itemsCount))\n            return\n        }\n\n        const listData: object[] = getData(list)\n\n        const newList: any = []\n\n        listData.forEach((x: any) => {\n            const dataStr: string[] = []\n\n            Object.keys(x).map((key: string) => {\n                let value = get(x, key, '') ?? ''\n\n                if (typeof value === 'number') value = value.toString()\n                if (typeof value !== 'string') return\n\n                dataStr.push(value)\n            })\n\n            if (dataStr.length <= 0) return\n\n            let exists = false\n\n            dataStr.forEach((key) => {\n                const status = ['P', 'C', 'A', 'R', 'L', 'PA']\n\n                if (status.includes(key)) {\n                    switch (key) {\n                        case 'P':\n                            if ('em analise'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                        case 'C':\n                            if ('cancelado'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                        case 'A':\n                            if ('cadastrado'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                        case 'R':\n                            if ('reprovado'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                        case 'L':\n                            if ('licenciado'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                        case 'PA':\n                            if ('pré aprovado'.includes(searchValue.toLowerCase()) || 'pre aprovado'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                        case 'FP':\n                            if ('fora do prazo'.includes(searchValue.toLowerCase())) {\n                                exists = true\n                            }\n                            return\n                    }\n                }\n\n                if (removePunctuationAndAccents(key.toLowerCase()).includes(removePunctuationAndAccents(searchValue.toLowerCase()))) {\n                    exists = true\n                }\n            })\n\n            if (!exists) return\n\n            newList.push(x)\n        })\n\n        setList(newList)\n        setPagCount(getCount(newList, itemsCount))\n        setCurrentPage(0)\n        setListPage(1)\n    }\n\n    const getMaxItems = useCallback(() => {\n        const start = currentPage * itemsCount\n        return list.slice(start, start + itemsCount)\n    }, [list, itemsCount, currentPage])\n\n    // effect usado quando for mostrar \"VER MAIS\" e \"VER MENOS\"\n    useEffect(() => {\n        const start = currentPage * itemsCount\n        const newList = list.slice(start, start + itemsCount)\n        let obj: { [key: number]: boolean } = {}\n\n        newList.forEach((x, index) => {\n            columns.forEach((c) => {\n                obj[index] = obj[index] === true ? true : (get(x, c.keyName, '') ?? 'Não Informado').toString().length >= expandTextMaxLength\n            })\n        })\n\n        setShowExpandObj(obj)\n    }, [list, itemsCount, currentPage])\n\n    function expandAll() {\n        let obj: { [key: number]: boolean } = {}\n\n        for (let i = 0; i < itemCount; i++) {\n            obj[i] = !isExpandAll\n        }\n\n        setShowExpandObjOnExited(obj)\n        setExpandObj(obj)\n\n        isExpandAll = !isExpandAll\n    }\n\n    function reset() {\n        setList(startData.current)\n        setListClone(startData.current)\n        setPagCount(getCount(startData.current, itemsCount))\n        setCurrentPage(0)\n        setListPage(1)\n        localStorage.removeItem(localTableName)\n        setFilterKey(new Date().getTime().toString())\n    }\n\n    const handleCSVDownload = (list: any[], all: boolean = false) => {\n        if (!csvConfig) return\n        \n        downloadCSVFile(list, {...csvConfig, ...(all ? {downloadAll: true} : {})}, (JSON.parse(localStorage.getItem(localTableName) ?? '[]') as FilterValue[]) || [])\n    }\n\n    const handleFiltrarDados = (dt: FilterValue[]) => {\n        filtrarDados({\n            filterData: dt,\n            filtersFuncData: filtersFuncData,\n            localTableName: localTableName,\n            setCurrentPage: setCurrentPage,\n            setList,\n            setListClone,\n            setListPage,\n            setPagCount,\n            startData: startData.current,\n            itemsCount,\n        })\n    }\n\n    const handleOrdenarDados = (x: OrderBy) => {\n        /** Inverter a ordem de ordenação no segundo clique */\n        orderAsc.current = !orderAsc.current\n\n        const dadosOrdenados = ordenarDados({\n            order: x,\n            list,\n            orderAsc: orderAsc.current,\n        })\n\n        localStorage.setItem(`order-${id}`, orderAsc.current.toString())\n        localStorage.setItem(`order-data-${id}`, JSON.stringify(x))\n\n        setList(dadosOrdenados)\n    }\n\n    if (error) return <TableErrorState customErrorMsg={customErrorMsg} error={error} />\n    if (isLoading) return <TableLoadingState tableName={tableName} />\n    if (!userLoaded && useKC) return <LinearProgress />\n\n    return (\n        <>\n            <Box marginX={isSmall ? customMarginMobile : customMargin} bgcolor='white' p={2} borderRadius={6} {...customTableStyle}>\n                <Stack spacing={1.5} direction={{ xs: 'column', md: 'row' }}>\n                    <Stack spacing={1.5} direction={{ xs: 'column', md: 'row' }} height={{ md: '40px', xs: 'inherit' }} width='100%'>\n                        <TextField\n                            InputProps={{\n                                startAdornment: <SearchIcon sx={{ marginRight: 1, fill: '#c0c0c0' }} />,\n                                sx: {\n                                    '.MuiOutlinedInput-notchedOutline': { border: 'none' },\n                                },\n                            }}\n                            sx={{\n                                border: 'solid 1px #CBD5E1',\n                                backgroundColor: '#F8FAFC',\n                                borderRadius: '50px',\n                                maxWidth: '600px',\n                            }}\n                            size='small'\n                            onChange={onInputChange}\n                            fullWidth\n                            placeholder={`Pesquisar ${tableName}`}\n                        />\n\n                        <Button\n                            startIcon={<FilterAlt />}\n                            variant='contained'\n                            onClick={(e) =>\n                                MODAL.open(\n                                    <FilterMenu\n                                        key={filterKey}\n                                        reset={reset}\n                                        filtrar={(dt) => handleFiltrarDados(dt)}\n                                        baseFilters={[...filters]}\n                                        filters={localStorage.getItem(localTableName) ? (JSON.parse(localStorage.getItem(localTableName)!) as FilterValue[]) : [...filters]}\n                                    />\n                                )\n                            }\n                            sx={{\n                                borderRadius: 3,\n                                paddingX: '24px',\n                                paddingY: '8px',\n                                backgroundColor: '#208FE8',\n                                textTransform: 'capitalize',\n                            }}\n                        >\n                            <Stack direction='row' borderRadius={5} padding={0}>\n                                <span>Filtrar</span>\n                            </Stack>\n                        </Button>\n\n                        <Stack direction='row' spacing={1}>\n                            {orderBy.length > 0 && <CustomMenu\n                                data={orderBy.map((x) => ({\n                                    name: x.label,\n                                    onClick: () => handleOrdenarDados(x),\n                                }))}\n                                btProps={{\n                                    startIcon: <KeyboardArrowDown />,\n                                    fullWidth: true,\n                                }}\n                            >\n                                Ordenar\n                            </CustomMenu>}\n\n                            {isExpandable && (\n                                <Button\n                                    variant='contained'\n                                    fullWidth\n                                    startIcon={isExpandAll ? <KeyboardArrowUp /> : <KeyboardArrowDown />}\n                                    sx={{\n                                        backgroundColor: '#637082',\n                                        ':hover': {\n                                            backgroundColor: '#3c4757',\n                                        },\n                                        textTransform: 'capitalize',\n                                        borderRadius: 3,\n                                        padding: {\n                                            md: '0px 8px',\n                                        },\n                                    }}\n                                    onClick={expandAll}\n                                >\n                                    {isExpandAll ? 'Recolher' : 'Expandir'}\n                                </Button>\n                            )}\n                        </Stack>\n                    </Stack>\n\n                    <Stack alignItems='end' width={{ xs: '100%', md: '20%' }} direction={{ xs: 'row', md: 'column' }} spacing={{ xs: 1, md: 0 }}>\n                        <Typography fontWeight={600} textAlign='end'>\n                            Registro de {tableName}s\n                        </Typography>\n                        <Stack justifyContent='center'>\n                            <Typography>\n                                Exibindo {currentPage * itemsCount + 1}-{currentPage * itemsCount + 1 + getMaxItems().length - 1} de {list.length}\n                            </Typography>\n                        </Stack>\n                    </Stack>\n                </Stack>\n\n                {localStorage.getItem(localTableName) && (\n                    <Box display='inline-flex' flexWrap='wrap' padding={0.5} borderRadius={4} marginBottom={1}>\n                        {(JSON.parse(localStorage.getItem(localTableName) ?? '[]') as FilterValue[])\n                            .filter((x) => x.value || (x.operator === 'entre' && (x.value || x.value2)))\n                            .map((x) => (\n                                <Stack direction='row' spacing={1} bgcolor='#4e85c1' color='white' width='fit-content' paddingY={0.5} borderRadius={2} paddingX={1} m={0.5}>\n                                    <Typography fontWeight={700}>{x.label}</Typography>\n                                    <Typography fontStyle='italic'>{x.operator}</Typography>\n                                    <Typography bgcolor='white' borderRadius={2} paddingX={1} color='black'>\n                                        {Array.isArray(x.value)\n                                            ? (x.value as { id: string; label: string }[]).map((x) => x.label).join(' - ')\n                                            : typeof x.value === 'object'\n                                            ? (x.value as { id: string; label: string }).label\n                                            : x.operator === 'entre'\n                                            ? `${x.value ? x.value : 'Antes'} e ${x.value2 ? x.value2 : 'Depois'}`\n                                            : x.value.toString()}\n                                    </Typography>\n                                    <IconButton\n                                        onClick={(e) => {\n                                            let currentValue = JSON.parse(localStorage.getItem(localTableName) ?? '[]') as FilterValue[]\n                                            currentValue = currentValue.map((item) => {\n                                                if (item.label === x.label) {\n                                                    return { ...item, value: '', ...(item.value2 ? { value2: '' } : {}) }\n                                                }\n\n                                                return item\n                                            })\n\n                                            handleFiltrarDados(currentValue)\n                                        }}\n                                        size='small'\n                                        sx={{\n                                            padding: 0,\n                                        }}\n                                    >\n                                        <Clear\n                                            sx={{\n                                                fill: 'white',\n                                            }}\n                                        />\n                                    </IconButton>\n                                </Stack>\n                            ))}\n                    </Box>\n                )}\n                <Stack spacing={0.2}>\n                    {getMaxItems().length <= 0 ? (\n                        <Stack sx={{ backgroundColor: '#E2E8F0', padding: 2, marginX: { xs: 2, md: 0 } }} justifyContent='center' alignItems='center'>\n                            <Typography fontSize={21} fontFamily='Inter' fontWeight={600} textAlign='center'>\n                                {user ? emptyMsg.user : emptyMsg.public}\n                            </Typography>\n                        </Stack>\n                    ) : (\n                        getMaxItems().map((x: any, index: number) => (\n                            <Paper\n                                key={index}\n                                sx={{\n                                    padding: 0.5,\n                                    backgroundColor: index % 2 === 0 ? '#F8FAFC' : 'white',\n                                    paddingTop: 2,\n                                    borderTop: 'solid 1.5px #E2E8F0',\n                                    position: 'relative',\n                                }}\n                                elevation={0}\n                            >\n                                <Grid container spacing={isSmall ? 2 : 0} paddingX={2} rowSpacing={2}>\n                                    {columns.map((c) => (\n                                        <Grid\n                                            key={c.keyName + index}\n                                            item\n                                            xs={12}\n                                            md={lg ? (12 / columnSize) * (!!c.size ? c.size : 1) : mediaQueryLG ? mediaQueryLG.all : (12 / columnSize) * (!!c.size ? c.size : 1)}\n                                            sx={{\n                                                overflow: 'hidden',\n                                            }}\n                                        >\n                                            <Box sx={{ width: 'max-content', paddingX: 1 }}>\n                                                <Typography fontSize={16} fontWeight={700} color='#1E293B' fontFamily='Inter'>\n                                                    {c.title}\n                                                </Typography>\n                                            </Box>\n                                            <Box paddingLeft={1} position='relative'>\n                                                <Collapse in={expandObj[index] === true} collapsedSize={collapsedSize} onExited={(e) => setShowExpandObjOnExited((s) => ({ ...s, [index]: false }))}>\n                                                    <Box\n                                                        sx={{\n                                                            wordWrap: 'break-word',\n                                                            color: '#1E293B',\n                                                            fontSize: 16,\n                                                        }}\n                                                        fontFamily='Inter'\n                                                    >\n                                                        <Box>\n                                                            {c.customComponent ? (\n                                                                c.customComponent(get(x, c.keyName), x)\n                                                            ) : (\n                                                                <Box color='transparent' sx={{ pointerEvents: 'none', userSelect: 'none' }}>\n                                                                    {get(x, c.keyName, '')}\n                                                                </Box>\n                                                            )}\n                                                        </Box>\n                                                        <Box position='absolute' top={0}>\n                                                            {c.customComponent ? (\n                                                                c.customComponent(get(x, c.keyName), x)\n                                                            ) : (\n                                                                <>\n                                                                    {showExpandObjOnExited[index] ? (\n                                                                        get(x, c.keyName, '')\n                                                                    ) : (get(x, c.keyName, '') ?? '').toString().length >= expandTextMaxLength ? (\n                                                                        <>{(get(x, c.keyName, '') ?? '').toString().substring(0, expandTextMaxLength) + '...'}</>\n                                                                    ) : (\n                                                                        get(x, c.keyName, '')\n                                                                    )}\n                                                                </>\n                                                            )}\n                                                        </Box>\n                                                    </Box>\n                                                </Collapse>\n                                            </Box>\n                                        </Grid>\n                                    ))}\n                                    <Grid item xs={12} md={lg ? 12 / columnSize : mediaQueryLG ? mediaQueryLG.action : 12 / columnSize}>\n                                        <Stack direction='row' alignItems='center' justifyContent={isSmall ? 'start' : 'flex-end'} sx={{ height: '100%', paddingBottom: isSmall ? 2 : 0 }}>\n                                            {action(x)}\n                                        </Stack>\n                                    </Grid>\n                                    {showExpandObj[index] && (\n                                        <Stack direction='row' justifyContent='flex-end' bottom={0} width='100%'>\n                                            <Button\n                                                onClick={(e) => {\n                                                    setExpandObj((s) => ({ ...s, [index]: !s[index] }))\n                                                    setShowExpandObjOnExited((s) => ({ ...s, [index]: true }))\n                                                }}\n                                                sx={{\n                                                    padding: 0,\n                                                    color: '#637082',\n                                                    textTransform: 'capitalize',\n                                                }}\n                                                startIcon={expandObj[index] ? <ExpandLess /> : <ExpandMore />}\n                                            >\n                                                {expandObj[index] ? 'Ver Menos' : 'Ver Mais'}\n                                            </Button>\n                                        </Stack>\n                                    )}\n                                </Grid>\n                            </Paper>\n                        ))\n                    )}\n                </Stack>\n\n                {getMaxItems().length > 0 && (\n                    <Stack\n                        padding={1}\n                        direction={{\n                            xs: 'column',\n                            md: 'row',\n                        }}\n                        spacing={{\n                            xs: 2,\n                            md: 0,\n                        }}\n                        justifyContent='space-between'\n                        alignItems='center'\n                    >\n                        {csvConfig && (\n                            <Stack\n                                direction={{\n                                    xs: 'column',\n                                    md: 'row',\n                                }}\n                                justifyContent='flex-end'\n                                spacing={1}\n                            >\n                                {\n                                    (JSON.parse(localStorage.getItem(localTableName) ?? '[]') as FilterValue[])\n                                    .filter((x) => x.value || (x.operator === 'entre' && (x.value || x.value2))).length > 0 &&\n\n                                    <Button\n                                        startIcon={<FileDownloadIcon />}\n                                        variant='contained'\n                                        size='small'\n                                        onClick={(e) => handleCSVDownload(list)}\n                                        sx={{ backgroundColor: '#a5a5a5', marginRight: { xs: 2, md: 0 }, width: { xs: '100%', md: 'fit-content' } }}\n                                    >\n                                        Baixar Filtrados\n                                    </Button>\n                                }\n                                <Button\n                                    startIcon={<FileDownloadIcon />}\n                                    variant='contained'\n                                    size='small'\n                                    onClick={(e) => handleCSVDownload(startData.current, true)}\n                                    sx={{ backgroundColor: '#22C55E', marginRight: { xs: 2, md: 0 }, width: { xs: '100%', md: 'fit-content' } }}\n                                >\n                                    Baixar Tabela\n                                </Button>\n                            </Stack>\n                        )}\n                    </Stack>\n                )}\n            </Box>\n\n            <Stack direction='row' justifyContent='center' paddingY={1} paddingTop={2}>\n                <Stack direction='row' justifyContent='center' alignItems='center' spacing={2}>\n                    <Button\n                        onClick={(e) =>\n                            setListPage((s) => {\n                                if (s > 1) {\n                                    return s - 1\n                                }\n\n                                return 1\n                            })\n                        }\n                        sx={{ bgcolor: 'white', borderRadius: '50px', height: '40px', width: '40px', minWidth: 0, border: 'solid 1px #E2E8F0' }}\n                    >\n                        <NavigateNextRoundedIcon sx={{ transform: 'scale(1.5) scaleX(-1)' }} />\n                    </Button>\n                    <Pagination\n                        renderItem={(item) => {\n                            if (item.type === 'page')\n                                return (\n                                    <Button\n                                        onClick={item.onClick}\n                                        sx={{\n                                            fontWeight: 600,\n                                            ...(item.selected\n                                                ? {\n                                                      bgcolor: '#33B55D',\n                                                      color: 'white',\n                                                  }\n                                                : {\n                                                      color: '#1E293B',\n                                                  }),\n                                            borderRadius: '100%',\n                                            padding: 0,\n                                            margin: 0,\n                                            minWidth: 0,\n                                            width: '40px',\n                                            height: '40px',\n\n                                            marginX: 0.25,\n                                        }}\n                                    >\n                                        {item.page}\n                                    </Button>\n                                )\n\n                            if (!['next', 'previous', 'page'].includes(item.type)) return <PaginationItem {...item} />\n                        }}\n                        count={paginationCount}\n                        siblingCount={isSmall ? 0 : 6}\n                        size='large'\n                        onChange={onPaginationChange}\n                        page={listPage}\n                        shape='circular'\n                        variant='outlined'\n                        sx={{\n                            '.MuiPagination-ul': {\n                                backgroundColor: 'white',\n                                border: 'solid 1px #E2E8F0',\n                                borderRadius: '50px',\n                                paddingX: 0.25,\n                                paddingY: 0.5,\n                            },\n                        }}\n                    />\n                    <Button\n                        onClick={(e) =>\n                            setListPage((s) => {\n                                if (s < paginationCount) {\n                                    return s + 1\n                                }\n\n                                return paginationCount\n                            })\n                        }\n                        sx={{ bgcolor: 'white', borderRadius: '50px', height: '40px', width: '40px', minWidth: 0, border: 'solid 1px #E2E8F0' }}\n                    >\n                        <NavigateNextRoundedIcon sx={{ transform: 'scale(1.5)' }} />\n                    </Button>\n                </Stack>\n            </Stack>\n        </>\n    )\n}\n\nexport default React.memo(Table)\n","import dynamic from 'next/dynamic'\n\nexport const Map = dynamic(() => import('./Map').then((x) => x.Map), { ssr: false })\n","import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\nimport LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined'\nimport MenuIcon from '@mui/icons-material/Menu'\nimport PersonIcon from '@mui/icons-material/Person'\nimport { AppBar, Avatar, Box, Button, IconButton, Menu, MenuItem, Stack, Typography } from '@mui/material'\nimport LinearProgress from '@mui/material/LinearProgress'\nimport Image from 'next/image'\nimport Link from 'next/link'\nimport { NextRouter, useRouter } from 'next/router'\nimport React, { useCallback, useContext, useState } from 'react'\nimport { AuthContext } from '../../context/auth'\n\nfunction verificarRota(route: string, path: string) {\n    if (path === '/') return route === path\n\n    return route.startsWith(path)\n}\n\nexport default function TabNavBar({\n    links,\n    title,\n    img,\n    pos = 'fixed',\n    next = true,\n    el,\n    menuItems,\n    color = 'blue',\n    route = '/teste/89',\n    paddingBottom = 0,\n    logoutMsg = 'Sair',\n    logoutFunc,\n    ...props\n}: {\n    links: { name: string; path: string }[]\n    title: string\n    img: string\n    color?: string\n    route?: string\n    paddingBottom?: number\n    menuItems: JSX.Element | JSX.Element[]\n    next?: boolean\n    el?: JSX.Element\n    logoutMsg?: string\n    logoutFunc?: () => Promise<void>\n    pos?: 'fixed' | 'inherit'\n}) {\n    let router: NextRouter | undefined | null = undefined\n    if (next) router = useRouter()\n\n    const { user, login, logout, type } = useContext(AuthContext)\n\n    const [anchor, setAnchor] = useState(null)\n    const [avatarAnchor, setAvatarAnchor] = useState(null)\n\n    const menuOpen = Boolean(anchor)\n    const avatarMenu = Boolean(avatarAnchor)\n    const [loading, setLoading] = useState(false)\n\n    const onMenuClick = useCallback((e: React.MouseEvent) => {\n        setAnchor(e.currentTarget as any)\n    }, [])\n\n    const closeMenu = useCallback(() => {\n        setAnchor(null)\n    }, [])\n\n    const onMenuItemClick = useCallback(\n        (e: React.MouseEvent, link: string) => {\n            setLoading(true)\n            setAnchor(null)\n\n            if (router)\n                router\n                    .push({\n                        pathname: link,\n                    })\n                    .finally(() => setLoading(false))\n            else {\n                setLoading(false)\n            }\n        },\n        [router]\n    )\n\n    function changeRoute(e: React.MouseEvent, path: string) {\n        setLoading(true)\n\n        if (router) {\n            router\n                .push({\n                    pathname: path,\n                })\n                .finally(() => setLoading(false))\n        } else {\n            setLoading(false)\n        }\n    }\n\n    return (\n        <>\n            <Box position={pos} sx={{ width: '100%', zIndex: 100 }}>\n                <AppBar position='relative' elevation={0} sx={{ backgroundColor: 'white', color: 'black', paddingX: { xs: 1, md: 4 } }}>\n                    <Stack direction='row' justifyContent='space-between'>\n                        <Stack direction='row' alignItems='center' spacing={2} marginRight={2} sx={{ display: { xs: 'none', md: 'flex' }, width: '100%' }}>\n                            <Link href='/'>{next ? <Image src={img} alt={title} width={40} height={40} /> : <img src={img} height={35} />}</Link>\n                            <Box>\n                                <Typography variant='subtitle1' fontWeight={600}>\n                                    {title}\n                                </Typography>\n                            </Box>\n                        </Stack>\n                        <Stack direction='row' width='100%' justifyContent='center' alignItems='center' spacing={2} sx={{ display: { xs: 'none', md: 'flex' } }}>\n                            {links.map((x, index) => (\n                                <Box\n                                    borderBottom={next ? (verificarRota(router?.pathname ?? '', x.path) ? `solid 4px ${color}` : '') : verificarRota(route, x.path) ? `solid 4px ${color}` : ''}\n                                    height='100%'\n                                    paddingX={2}\n                                    key={JSON.stringify({ x, index })}\n                                    sx={{\n                                        ':hover': {\n                                            backgroundColor: '#fcfcfc',\n                                            cursor: 'pointer',\n                                            userSelect: 'none',\n                                        },\n                                    }}\n                                    onClick={(e) => {\n                                        next && console.log('pathname:', router?.pathname, ':=', x.path)\n                                        changeRoute(e, x.path)\n                                    }}\n                                >\n                                    <Stack height='100%' justifyContent='center'>\n                                        {x.name}\n                                    </Stack>\n                                </Box>\n                            ))}\n                        </Stack>\n                        {/* mobile */}\n                        <Box\n                            sx={{\n                                display: {\n                                    xs: 'flex',\n                                    md: 'none',\n                                },\n                            }}\n                        >\n                            {links.length > 0 && (\n                                <>\n                                    <IconButton onClick={onMenuClick}>\n                                        <MenuIcon />\n                                    </IconButton>\n                                    <Menu open={menuOpen} onClose={closeMenu} anchorEl={anchor}>\n                                        {links.map((x, index) => (\n                                            <MenuItem key={JSON.stringify({ x, index })} onClick={(e) => onMenuItemClick(e, x.path)}>\n                                                <Typography textTransform='capitalize'>{x.name}</Typography>\n                                            </MenuItem>\n                                        ))}\n                                    </Menu>\n                                </>\n                            )}\n                        </Box>\n\n                        {/* Desktop */}\n                        <Stack direction='row' justifyContent='flex-end' alignItems='center' sx={{ width: { md: '100%' } }} paddingY={1}>\n                            <Stack direction='row' spacing={2}>\n                                <Box>{el}</Box>\n\n                                {user ? (\n                                    <Stack\n                                        direction='row'\n                                        spacing={1}\n                                        sx={{\n                                            '&:hover': {\n                                                backgroundColor: '#a9def9',\n                                                cursor: 'pointer',\n                                            },\n                                            padding: 0.5,\n                                            borderRadius: 60,\n                                        }}\n                                    >\n                                        <Box sx={{ display: 'flex', alignItems: 'center' }}>\n                                            <Avatar sx={{ width: 30, height: 30 }} src={user.image as string} />\n                                            <Menu\n                                                open={avatarMenu}\n                                                onClose={(e) => setAvatarAnchor(null)}\n                                                anchorEl={avatarAnchor}\n                                                disableScrollLock={true}\n                                                transformOrigin={{ horizontal: 'right', vertical: 'top' }}\n                                                anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n                                                sx={{ '.MuiMenu-paper': { borderRadius: 4 } }}\n                                            >\n                                                {menuItems}\n\n                                                <MenuItem\n                                                    onClick={async (e) => {\n                                                        setAvatarAnchor(null)\n                                                        if (!!logoutFunc) {\n                                                            try {\n                                                                await logoutFunc()\n                                                            } catch (error) {\n                                                                console.error(error)\n                                                            }\n                                                        }\n                                                        logout()\n                                                    }}\n                                                >\n                                                    <Stack direction='row' spacing={1}>\n                                                        <LogoutOutlinedIcon sx={{ fill: '#545454' }} />\n                                                        <Typography textTransform='capitalize'>{logoutMsg}</Typography>\n                                                    </Stack>\n                                                </MenuItem>\n                                            </Menu>\n                                        </Box>\n                                        <Stack direction='row' spacing={0.4} alignItems='center' onClick={(e) => setAvatarAnchor(e.currentTarget as any)} sx={{ userSelect: 'none' }}>\n                                            <Typography>Olá,</Typography>\n                                            <Typography fontWeight={600}>{user.given_name}</Typography>\n                                            <KeyboardArrowDownIcon />\n                                        </Stack>\n                                    </Stack>\n                                ) : type === 'govbr' ? (\n                                    <Button\n                                        variant='contained'\n                                        size='small'\n                                        startIcon={<PersonIcon />}\n                                        onClick={login}\n                                        sx={{ color: 'white', textTransform: 'inherit', borderRadius: 50, paddingX: 2 }}\n                                    >\n                                        <Typography fontWeight={600} fontSize={15} padding={0.4}>\n                                            Entrar com o gov.br\n                                        </Typography>\n                                    </Button>\n                                ) : (\n                                    <Button\n                                        variant='contained'\n                                        size='small'\n                                        startIcon={<PersonIcon />}\n                                        onClick={login}\n                                        sx={{ color: 'white', textTransform: 'inherit', borderRadius: 50, paddingX: 2 }}\n                                    >\n                                        <Typography fontWeight={600} fontSize={15} padding={0.4}>\n                                            Entrar\n                                        </Typography>\n                                    </Button>\n                                )}\n                            </Stack>\n                        </Stack>\n                    </Stack>\n                </AppBar>\n                {loading && <LinearProgress />}\n            </Box>\n            <Box paddingBottom={paddingBottom} />\n        </>\n    )\n}\n","import { deleteCookie, getCookie, setCookie } from 'cookies-next'\nimport jwt_decode from 'jwt-decode'\nimport { useRouter } from 'next/router'\nimport React, { useEffect, useState } from 'react'\nimport { AuthContext } from '../../context/auth'\nimport { AuthClaims, AuthReturn, AuthSspToken, User } from '../../types/auth'\n\ninterface OiDcConfig {\n    client_id: string\n    scope: string\n    redirect_uri: string\n    authority: string\n}\n\nexport const cookieName = 'nextauth.token'\nconst userImgName = 'user-data.img'\n\nexport function OAuthProvider({\n    children,\n    AUTH_URL,\n    oidcConfig,\n    redirectURL,\n    validateTokenRoute,\n    testToken,\n    testIP,\n    logoutURL = redirectURL,\n}: {\n    children: JSX.Element | JSX.Element[]\n    AUTH_URL: string\n    oidcConfig: OiDcConfig\n    redirectURL: string\n    validateTokenRoute: string\n    testToken: string\n    testIP?: string\n    logoutURL?: string\n}) {\n    const govBrURL = oidcConfig.authority + '/authorize?response_type=code&client_id=' + oidcConfig.client_id + '&scope=' + oidcConfig.scope + '&redirect_uri=' + oidcConfig.redirect_uri\n\n    const [user, setUser] = useState<any | null>()\n    const [userLoaded, setUserLoaded] = useState(false)\n\n    const router = useRouter()\n    const isAuth = !!user\n\n    useEffect(() => {\n        const token = getCookie(cookieName) as string\n\n        if (!token) {\n            setUserLoaded(true)\n            return\n        }\n\n        fetch(`${AUTH_URL}${validateTokenRoute}`, {\n            method: 'POST',\n            headers: {\n                Authorization: `Bearer ${token}`,\n            },\n        }).then((res) => {\n            if (!res.ok) {\n                logout()\n                return\n            } else {\n                const user: AuthClaims = jwt_decode(token)\n                const img = localStorage.getItem(userImgName) as string\n\n                setUser({ name: user.given_name, image: img ?? '', roles: user.roles.map((x) => x.code), token })\n                setUserLoaded(true)\n            }\n        })\n    }, [])\n\n    function login() {\n        // Teste em localhost\n        if (location && (location.hostname === 'localhost' || location.hostname === testIP)) {\n            const token = testToken\n            setCookie(cookieName, token)\n            setUser({\n                name: 'Teste',\n                image: '',\n                roles: [1],\n                token: token,\n            })\n            router.replace(redirectURL).finally(() => setUserLoaded(true))\n        }\n        //\n        else {\n            setUserLoaded(false)\n            router.replace(govBrURL)\n        }\n    }\n\n    // chamado no callback de login\n    async function saveUserData(authData: AuthReturn) {\n        const token = authData.ssp_token\n\n        setCookie(cookieName, token)\n        const userData: AuthSspToken = jwt_decode(token)\n\n        const idToken: AuthClaims = jwt_decode(authData.id_token)\n\n        // pegando foto de usuario\n        await fetch(idToken.picture, {\n            headers: {\n                Authorization: `Bearer ${authData.access_token}`,\n            },\n        }).then((res) => {\n            if (res.status === 200) {\n                res.blob().then((b) => {\n                    const reader = new FileReader()\n                    reader.readAsDataURL(b)\n                    reader.onload = () => {\n                        const base64 = reader.result\n\n                        localStorage.setItem(userImgName, base64 as string)\n                        setUser({ name: userData.name, image: base64 as string, roles: userData.roles.map((x) => x.code), token })\n                        router.replace(redirectURL).finally(() => setUserLoaded(true))\n                    }\n                })\n            }\n\n            setUser({ name: userData.name, image: '', roles: userData.roles.map((x) => x.code), token })\n            router.replace(redirectURL).finally(() => setUserLoaded(true))\n            return\n        })\n\n        router.replace(redirectURL).finally(() => setUserLoaded(true))\n    }\n\n    function logout() {\n        setUserLoaded(false)\n\n        router.replace(logoutURL).finally(() => {\n            setUser(null)\n            deleteCookie(cookieName)\n            localStorage.removeItem(userImgName)\n\n            setUserLoaded(true)\n        })\n    }\n\n    return <AuthContext.Provider value={{ user, isAuth, userLoaded, login, logout, saveUserData, type: 'govbr' }}>{children}</AuthContext.Provider>\n}\n","import { Box, Grid, Stack } from '@mui/material'\nimport InputLabel from '@mui/material/InputLabel'\nimport get from 'lodash.get'\nimport React, { ReactElement, useContext, useEffect, useRef } from 'react'\nimport { FormContext } from '../../../context/form'\nimport Switch from '../switch/Switch'\nimport MaskInput from './MaskInput'\nimport { SwitchWatch } from '../switch/ToggleVisibility'\nimport { Input } from './Input'\n\nexport default function FileUpload({\n    name,\n    required = false,\n    title,\n    defaultChecked = false,\n    xs = 12,\n    unregisterNameList,\n    sm,\n    md,\n    ...props\n}: {\n    name: string\n    children?: [ReactElement, ReactElement]\n    title?: string\n    unregisterNameList: string[]\n    defaultChecked?: boolean\n    required?: boolean\n    xs?: number\n    sm?: number\n    md?: number\n}) {\n    const switchName = `${name}-switch`\n\n    return (\n        <Grid item {...{ xs, sm, md }}>\n            {title && (\n                <InputLabel required={required} sx={{ textTransform: 'capitalize' }}>\n                    {title}\n                </InputLabel>\n            )}\n            <Stack direction='row'>\n                <Switch name={switchName} defaultChecked={defaultChecked} />\n\n                <SwitchWatch switchId={switchName} unregisterNameList={unregisterNameList}>\n                    {/* {props.children![0]} */}\n                    <Input name='ddd' type='input' />\n                </SwitchWatch>\n                {/* <SwitchWatch switchId={switchName} unregisterNameList={unregisterNameList} invert={true}>\n                    {props.children![1]}\n                </SwitchWatch> */}\n            </Stack>\n        </Grid>\n    )\n}\n","import { Autocomplete, Grid, TextField } from '@mui/material'\nimport InputLabel from '@mui/material/InputLabel'\nimport get from 'lodash.get'\nimport React, { SyntheticEvent, useCallback, useContext, useState } from 'react'\nimport { useQuery } from 'react-query'\nimport { AuthContext } from '../../../context/auth'\nimport { FormContext } from '../../../context/form'\n\ninterface Option {\n    id: number\n    label: string\n}\n\nexport default function AutoComplete({\n    name,\n    required = false,\n    title,\n    customPlaceholder,\n    url,\n    xs = 12,\n    sm,\n    md,\n    dataPath = '',\n}: {\n    url: string\n    name: string\n    title?: string\n    dataPath?: string\n    customPlaceholder?: string\n    required?: boolean\n    xs?: number\n    sm?: number\n    md?: number\n}) {\n    const context = useContext(FormContext)\n    const { user } = useContext(AuthContext)\n    const [options, setOptions] = useState([])\n\n    const { isLoading, data, error } = useQuery(`autocomplete-${name!}`, () =>\n        fetch(url, {\n            headers: {\n                Authorization: `Bearer ${user ? user.token : ''}`,\n            },\n        }).then((x) => x.json().then((list) => setOptions(getData(list))))\n    )\n\n    // transformar isso em um component ou utils\n    const getData = useCallback((dt: any) => {\n        if (Array.isArray(dt)) return dt\n        if (typeof dt === 'object') return get(dt, dataPath)\n    }, [])\n\n    const onSelect = useCallback(\n        (e: SyntheticEvent<Element, Event>, value: Option | null) => {\n            context?.formSetValue(name!, value ? value.id : '')\n            context?.formTrigger(name!)\n        },\n        [context, name]\n    )\n\n    return (\n        <Grid item {...{ xs, sm, md }}>\n            {title && <InputLabel required={required}>{title}</InputLabel>}\n            <input\n                type='text'\n                {...context?.formRegister(name!, {\n                    validate: (v, f) => {\n                        if (v.length <= 0 && required) return 'Este campo é obrigatório'\n                    },\n                })}\n                hidden\n            />\n            <Autocomplete\n                options={options}\n                isOptionEqualToValue={(option: any, value: any) => option.id === value.id}\n                onChange={onSelect}\n                renderInput={(params) => (\n                    <TextField\n                        {...params}\n                        placeholder={customPlaceholder}\n                        size='small'\n                        error={get(context?.errors, name!) ? true : false}\n                        helperText={get(context?.errors, name!)?.message as string}\n                    />\n                )}\n            />\n        </Grid>\n    )\n}\n","import { Grid, Typography, Box } from '@mui/material'\nimport React from 'react'\n\nexport function Category({ title }: { title: string }) {\n    return (\n        <Grid paddingY={1} item marginTop={1} marginBottom={3} xs={12}>\n            <Typography textTransform='uppercase' fontWeight={600}>\n                {title}\n            </Typography>\n            <Box sx={{ backgroundColor: '#94A3B8', height: 6, borderRadius: 1 }}></Box>\n        </Grid>\n    )\n}\n","import { Checkbox, FormControlLabel, Grid } from '@mui/material'\nimport { useCallback, useContext } from 'react'\nimport { FormContext } from '../../../context/form'\n\nimport React from 'react'\n\nexport default function CheckBox({\n    name,\n    title,\n    defaultValue = false,\n    xs = 12,\n    sm,\n    md,\n    onChange,\n\n\n}: {\n    name: string\n    title: string | JSX.Element\n    defaultValue?: boolean\n    onChange?: (e: React.SyntheticEvent<Element, Event>) => void\n    xs?: number\n    sm?: number\n    md?: number\n\n   \n}) {\n    const context = useContext(FormContext)\n\n    const onClick = useCallback(\n        (e: React.SyntheticEvent<Element, Event>) => {\n            context?.formSetValue(name!, !context?.formGetValues(name))\n        },\n        [context, name]\n    )\n\n    return (\n        <Grid item {...{ xs, sm, md }}>\n            <FormControlLabel control={<Checkbox size='small' defaultChecked={defaultValue} />} label={title} {...context?.formRegister(name!)} onChange={onChange} onClick={onClick} />\n        </Grid>\n    )\n}\n","import { Card, Checkbox, FormControlLabel, Grid } from '@mui/material'\nimport Typography from '@mui/material/Typography'\nimport React, { ReactElement, useContext } from 'react'\nimport { FormContext } from '../../../context/form'\n\nexport default function CheckBoxWarning({\n    name,\n    title,\n    customWarning,\n    defaultValue = false,\n    xs = 12,\n    sm,\n    md,\n}: {\n    name: string\n    title: string\n    customWarning?: ReactElement\n    defaultValue?: boolean\n    xs?: number\n    sm?: number\n    md?: number\n}) {\n    const context = useContext(FormContext)!\n\n    return (\n        <Grid item {...{ xs, sm, md }}>\n            <FormControlLabel control={<Checkbox size='small' {...context.formRegister(name!)} defaultChecked={defaultValue} />} label={title} />\n            {context.formWatch(name!) && (\n                <Card sx={{ bgcolor: '#FFFBF5', color: '#F59E0B', padding: 1, paddingLeft: 2 }}>\n                    {customWarning ? (\n                        customWarning\n                    ) : (\n                        <Typography>\n                            <b>Atenção</b> <i>{title}</i> possui regras específicas.\n                        </Typography>\n                    )}\n                </Card>\n            )}\n        </Grid>\n    )\n}\n","import { Grid, InputLabel, TextField, Typography } from '@mui/material'\nimport { LocalizationProvider, DatePicker as MUIDatePicker } from '@mui/x-date-pickers'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport dayjs, { Dayjs } from 'dayjs'\nimport 'dayjs/locale/pt-br'\nimport get from 'lodash.get'\nimport hasIn from 'lodash.hasin'\nimport { useContext, useEffect, useState } from 'react'\nimport { FormContext } from '../../../context/form'\n\nexport default function DatePicker({\n    name,\n    required = false,\n    title,\n    xs = 12,\n    sm,\n    md,\n    minDt,\n    defaultValue,\n    persistValue,\n    maxDt,\n    ...props\n}: {\n    minDt?: string\n    maxDt?: string\n    name: string\n    title?: string\n    required?: boolean\n    defaultValue?: string\n    persistValue?: boolean\n    xs?: number\n    sm?: number\n    md?: number\n}) {\n    const context = useContext(FormContext)!\n\n    const [value, setValue] = useState<Dayjs | undefined>(defaultValue !== undefined ? dayjs(defaultValue, 'DD/MM/YYYY') : undefined)\n\n    const handleChange = (newValue: Dayjs | null) => {\n        setValue(newValue)\n    }\n\n    useEffect(() => {\n        if (value === undefined) return\n        context.formSetValue(name, value ? value.format('DD/MM/YYYY') : value)\n    }, [value])\n\n    useEffect(() => {\n        // Vamos executar o unregister em casos em que não queremos persistir o valor\n        if (persistValue) return\n        return () => {\n            context.formUnregister(name)\n        }\n    }, [])\n\n    return (\n        <>\n            <Grid item {...{ xs, sm, md }}>\n                {title && <InputLabel required={required}>{title}</InputLabel>}\n                <LocalizationProvider adapterLocale={'pt-br'} dateAdapter={AdapterDayjs}>\n                    <MUIDatePicker\n                        minDate={dayjs(minDt, 'DD/MM/YYYY')}\n                        maxDate={dayjs(maxDt, 'DD/MM/YYYY')}\n                        format='DD/MM/YYYY'\n                        value={value}\n                        onChange={handleChange}\n                        disableHighlightToday\n                        sx={{\n                            outline: get(context.errors, name!) ? '1px solid #a51c30' : '',\n                            backgroundColor: 'white',\n                            width: '100%',\n                            div: {\n                                input: {\n                                    paddingX: 2,\n                                    paddingY: 1.05,\n                                },\n                            },\n                        }}\n                        inputRef={(params: any) => (\n                            <TextField\n                                size='small'\n                                {...params}\n                                {...context?.formRegister(name!, {\n                                    validate: (v, f) => {\n                                        if (!hasIn(f, name)) {\n                                            return true\n                                        }\n\n                                        if (!v) v = ''\n\n                                        if (v.length <= 0 && required) return 'Este campo é obrigatório'\n                                        if (v.length < 10 && required) return 'A data precisa seguir o padrão DD/MM/AAAA'\n\n                                        if (minDt && !(dayjs(minDt, 'DD/MM/YYYY').isSame(dayjs(v, 'DD/MM/YYYY')) || dayjs(minDt, 'DD/MM/YYYY').isBefore(dayjs(v, 'DD/MM/YYYY'))))\n                                            return `A data tem que ser depois de ${minDt} e antes de ${maxDt}`\n\n                                        if (maxDt && !(dayjs(maxDt, 'DD/MM/YYYY').isSame(dayjs(v, 'DD/MM/YYYY')) || dayjs(maxDt, 'DD/MM/YYYY').isAfter(dayjs(v, 'DD/MM/YYYY'))))\n                                            return 'A data escolhida não é válida'\n                                    },\n                                    shouldUnregister: true,\n                                })}\n                                fullWidth\n                            />\n                        )}\n                    />\n                    <Typography sx={{ color: '#a51c30', fontSize: 14, paddingLeft: 1 }}>{get(context.errors, name!)?.message as string}</Typography>\n                </LocalizationProvider>\n            </Grid>\n        </>\n    )\n}\n","import { Box, Grid, Stack, Typography } from '@mui/material'\nimport React from 'react'\n\nexport function Field({ name, title, tag, xs = 12, md, lg }: { title: string; name: string; tag?: string; xs?: number; md?: number; lg?: number }) {\n    let color =\n        tag && tag === 'Distrital'\n            ? '#BFDBFE'\n            : tag === 'Estadual'\n            ? '#BBF7D0'\n            : tag === 'Federal'\n            ? '#FEF08A'\n            : tag === 'Internacional'\n            ? '#FED7AA'\n            : tag === 'Não'\n            ? '#FECACA'\n            : tag === 'Sim'\n            ? '#BBF7D0'\n            : '#BBF7D0'\n\n    return (\n        <Grid paddingBottom={3} item {...{ xs, md, lg }} paddingRight={2}>\n            <Stack spacing={1}>\n                <Stack spacing={1} direction={'row'}>\n                    <Typography\n                        sx={{\n                            backgroundColor: '#E2E8F0',\n                            maxWidth: 'max-content',\n                            paddingX: 1,\n                            borderRadius: 2,\n                            color: '#1E293B',\n                        }}\n                        fontWeight={600}\n                    >\n                        {title}\n                    </Typography>\n\n                    {tag && (\n                        <Typography\n                            sx={{\n                                backgroundColor: color,\n                                maxWidth: 'max-content',\n                                paddingX: 1,\n                                borderRadius: 2,\n                                color: '#1E293B',\n                            }}\n                            fontWeight={600}\n                        >\n                            {tag}\n                        </Typography>\n                    )}\n                </Stack>\n                {name && <Box>{String(name) === 'false' ? 'Não' : String(name) === 'true' ? 'Sim' : String(name) === '' ? '' : !name ? 'Não informado' : String(name)}</Box>}\n            </Stack>\n        </Grid>\n    )\n}\n","import { Grid, Stack, Typography } from '@mui/material'\nimport React from 'react'\n\nexport function FieldLabel({ title, xs = 12, tag, md, lg, paddingBottom = 3 }: { title: string; tag?: string; xs?: number; md?: number; lg?: number; paddingBottom?: number }) {\n    let color = tag && tag === 'Não' ? '#FECACA' : tag === 'Sim' ? '#BBF7D0' : '#E2E8F0'\n\n    return (\n        <Grid paddingBottom={paddingBottom} item {...{ xs, md, lg }} paddingRight={2}>\n            <Stack spacing={1} direction='row'>\n                <Typography\n                    sx={{\n                        backgroundColor: '#E2E8F0',\n                        maxWidth: 'max-content',\n                        paddingX: 1,\n                        borderRadius: 2,\n                        color: '#1E293B',\n                    }}\n                    fontWeight={600}\n                    fontSize={16}\n                >\n                    {title}\n                </Typography>\n                {tag && (\n                    <Typography\n                        sx={{\n                            backgroundColor: color,\n                            maxWidth: 'max-content',\n                            paddingX: 1,\n                            borderRadius: 2,\n                            color: '#1E293B',\n                        }}\n                        fontWeight={600}\n                    >\n                        {tag}\n                    </Typography>\n                )}\n            </Stack>\n        </Grid>\n    )\n}\n","import { Button, Grid, Stack, Typography } from '@mui/material'\nimport { FileDownload } from '@mui/icons-material'\nimport React, { useContext } from 'react'\nimport { AuthContext } from '../../context/auth'\n\nexport function File({ title, name, md, fileURL, fileExt = 'pdf' }: { title: string; fileURL: string; name: string; md?: number; fileExt?: string }) {\n    const { user } = useContext(AuthContext)\n\n    return (\n        <Grid paddingBottom={3} paddingRight={3} {...{ md }}>\n            <Stack\n                spacing={1}\n                sx={{\n                    backgroundColor: '#F8FAFC',\n                    paddingY: 1,\n                    paddingX: 3,\n                    borderRadius: 2,\n                    border: 1,\n                    borderColor: '#CBD5E1',\n                }}\n            >\n                <Typography fontWeight={600} sx={{ textAlign: 'center' }}>\n                    {title}\n                </Typography>\n                <Stack direction='row' spacing={2} alignItems='center'>\n                    <FileDownload sx={{ fill: 'red' }} />\n                    <Typography>{name}</Typography>\n                </Stack>\n                <Stack alignItems='center'>\n                    <Button\n                        variant='outlined'\n                        color='error'\n                        size='small'\n                        endIcon={<FileDownload />}\n                        onClick={() =>\n                            fetch(fileURL, {\n                                method: 'GET',\n                                headers: {\n                                    Authorization: `Bearer ${user?.token}`,\n                                },\n                            })\n                                .then((res) => res.blob())\n                                .then((blob) => {\n                                    var file = window.URL.createObjectURL(blob)\n                                    const a = document.createElement('a')\n                                    a.href = file\n\n                                    a.download = name.split('.')[0] + `.${fileExt}`\n                                    a.click()\n                                })\n                        }\n                    >\n                        Baixar\n                    </Button>\n                </Stack>\n            </Stack>\n        </Grid>\n    )\n}\n","import CameraAltIcon from '@mui/icons-material/CameraAlt'\nimport ClearIcon from '@mui/icons-material/Clear'\nimport Delete from '@mui/icons-material/Delete'\nimport DoneIcon from '@mui/icons-material/Done'\nimport InsertDriveFileIcon from '@mui/icons-material/InsertDriveFile'\nimport PictureAsPdf from '@mui/icons-material/PictureAsPdf'\nimport { Box, Button, CircularProgress, Grid, InputLabel, Paper, TableContainer, Typography, useMediaQuery, useTheme } from '@mui/material'\nimport { Stack } from '@mui/system'\nimport get from 'lodash.get'\nimport React, { FormEvent, useCallback, useContext, useEffect, useState } from 'react'\nimport { AuthContext } from '../../../context/auth'\nimport { FormContext } from '../../../context/form'\n\ninterface FileState {\n    id: number\n    name: string\n    loading: boolean\n    error: boolean\n    file: File\n}\n\nfunction bytesToMegabytes(bytes: number): number {\n    const megabytes = bytes / (1024 * 1024)\n    return megabytes\n}\n\nexport default function FileUpload({\n    name,\n    tipoArquivo,\n    title,\n    required = false,\n    multiple = false,\n    apiURL,\n    route = '',\n    sizeLimit = 4,\n    xs = 12,\n    sm,\n    md,\n}: {\n    name: string\n    tipoArquivo: string\n    title: string\n    apiURL: string\n    route?: string\n    required?: boolean\n    multiple?: boolean\n    sizeLimit?: number\n    xs?: number\n    sm?: number\n    md?: number\n}) {\n    const context = useContext(FormContext)!\n    const { user } = useContext(AuthContext)\n\n    const theme = useTheme()\n    const isSmall = useMediaQuery(theme.breakpoints.only('xs'))\n\n    const [files, setFiles] = useState<FileState[]>([])\n    const [filesLoaded, setFilesLoaded] = useState<number[]>([])\n    const [fileIds, setFilesIds] = useState<{ [key: number]: number }>({})\n    // const [filesError, setFilesError] = useState<number[]>([])\n\n    const [errorMsg, setErrorMsg] = useState('')\n\n    const onFile = useCallback(\n        (e: FormEvent) => {\n            const newFiles = (e.target as HTMLInputElement).files!\n            const filesTo = Object.keys(newFiles).map((key: number | string) => newFiles[key as number])\n\n            setFiles([\n                ...files,\n                ...filesTo\n                    .filter((file) => {\n                        if (bytesToMegabytes(file.size) > sizeLimit) {\n                            setErrorMsg(`Por favor, escolha um arquivo com tamanho inferior a ${sizeLimit} MB`)\n\n                            setTimeout(() => {\n                                setErrorMsg('')\n                            }, 3000)\n\n                            return false\n                        }\n\n                        return true\n                    })\n                    .map((file, index) => {\n                        let id: number = Date.now() + index\n\n                        // fetch API\n\n                        const fd = new FormData()\n\n                        fd.append('files', file)\n                        fd.append('tipoArquivo', tipoArquivo)\n\n                        fetch(apiURL, {\n                            method: 'POST',\n                            body: fd,\n                            headers: {\n                                Authorization: `Bearer ${user ? user.token : ''}`,\n                            },\n                        })\n                            .then((res) => {\n                                if (!res.ok) {\n                                    removeFile(id)\n                                    return\n                                }\n\n                                res.json().then((j: any) => {\n                                    if (j.status && j.status.status === 200) {\n                                        const fileIdFromApi = get(j, route, j)[0]\n                                        const fileId: number = fileIdFromApi['coSeqArquivo']\n\n                                        context.setFilesUid((fId) => [\n                                            ...fId,\n                                            {\n                                                CO_SEQ_ARQUIVO: fileId,\n                                                CO_TIPO_ARQUIVO: parseInt(tipoArquivo),\n                                            },\n                                        ])\n                                        setFilesLoaded((fl) => [...fl, id])\n\n                                        const f: { [key: number]: number } = {}\n                                        f[id] = fileId\n                                        setFilesIds((ids) => ({ ...ids, ...f }))\n                                    } else {\n                                        removeFile(id)\n                                    }\n                                })\n                            })\n                            .catch((err) => {\n                                removeFile(id)\n                            })\n\n                        return { id: id, name: file.name, loading: true, error: false, file: file }\n                    }),\n            ])\n        },\n        [files, context]\n    )\n\n    const removeFile = (id: number, hideMsg?: boolean, fileId?: number) => {\n        setFiles(files.filter((x) => x.id !== id))\n\n        if (fileId) context.setFilesUid((fId) => fId.filter((idd) => idd.CO_SEQ_ARQUIVO !== fileId))\n\n        if (!hideMsg) {\n            setErrorMsg('Erro ao enviar arquivo. Tente novamente mais tarde')\n\n            setTimeout(() => {\n                setErrorMsg('')\n            }, 3000)\n        }\n    }\n\n    const deleteFile = (e: FormEvent, id: number) => {\n        if (Object.keys(fileIds).includes(id.toString())) {\n            fetch(`${apiURL}/${fileIds[id]}`, {\n                method: 'DELETE',\n                headers: {\n                    Authorization: `Bearer ${user?.token}`,\n                },\n            })\n                .then((res) => {\n                    if (!res.ok) removeFile(id, true, fileIds[id])\n\n                    if (res.status === 200) {\n                        removeFile(id, true, fileIds[id])\n                    }\n                })\n                .catch((err) => console.log(err))\n        }\n    }\n\n    useEffect(() => {\n        const dt = new DataTransfer()\n\n        files.forEach((x) => {\n            dt.items.add(x.file)\n        })\n\n        context?.formSetValue(name!, dt.files)\n    }, [files, context, name])\n\n    useEffect(() => {\n        return () => {\n            context.setFilesUid((files) => files.filter((x) => x.CO_TIPO_ARQUIVO !== parseInt(tipoArquivo)))\n        }\n    }, [])\n\n    return (\n        <Grid item {...{ xs, sm, md }} sx={{ width: '100%' }}>\n            <InputLabel required={required} sx={{ marginBottom: 2, textTransform: 'capitalize' }}>\n                {title}\n            </InputLabel>\n            <Box sx={{ backgroundColor: '#e2eafc', padding: 1, borderRadius: 1, marginTop: 1 }}>\n                <input\n                    id={name}\n                    type='file'\n                    multiple={multiple}\n                    {...context?.formRegister(name!, {\n                        validate: (v, f) => {\n                            if ((v.length && filesLoaded.length) <= 0 && required) return 'O campo de arquivo é obrigatório'\n                        },\n                    })}\n                    onChange={onFile}\n                    accept='.pdf'\n                    style={{ display: 'none' }}\n                />\n                <input\n                    id={name + 'foto'}\n                    type='file'\n                    capture='environment'\n                    multiple={multiple}\n                    {...context?.formRegister(name!, {\n                        validate: (v, f) => {\n                            if ((v.length && filesLoaded.length) <= 0 && required) return 'O campo de arquivo é obrigatório'\n                        },\n                    })}\n                    onChange={onFile}\n                    accept='.jpg, .png, .jpeg'\n                    style={{ display: 'none' }}\n                />\n                <Box\n                    sx={{\n                        display: {\n                            sx: 'block',\n                            md: 'flex',\n                        },\n                    }}\n                >\n                    <Box sx={{ width: '100%', marginRight: { xs: 0, md: 1 }, marginBottom: { xs: 1, md: 0 } }}>\n                        {!multiple && files.length >= 1 ? (\n                            <Button disabled={true} variant='contained' disableElevation startIcon={<InsertDriveFileIcon />} component='span' sx={{ textTransform: 'none' }} fullWidth>\n                                Escolher Documento\n                            </Button>\n                        ) : (\n                            <label htmlFor={name}>\n                                <Button variant='contained' disableElevation startIcon={<InsertDriveFileIcon />} component='span' sx={{ textTransform: 'none' }} fullWidth>\n                                    Escolher Documento\n                                </Button>\n                            </label>\n                        )}\n                    </Box>\n                    <Box sx={{ width: '100%' }}>\n                        {!multiple && files.length >= 1 ? (\n                            <Button\n                                disabled={true}\n                                variant='contained'\n                                disableElevation\n                                startIcon={<CameraAltIcon />}\n                                component='span'\n                                sx={{ textTransform: 'none', backgroundColor: '#0096c7' }}\n                                fullWidth\n                            >\n                                {isSmall ? 'Tirar Foto' : 'Escolher Imagem'}\n                            </Button>\n                        ) : (\n                            <label htmlFor={name + 'foto'}>\n                                <Button variant='contained' disableElevation startIcon={<CameraAltIcon />} component='span' sx={{ textTransform: 'none', backgroundColor: '#0096c7' }} fullWidth>\n                                    {isSmall ? 'Tirar Foto' : 'Escolher Imagem'}\n                                </Button>\n                            </label>\n                        )}\n                    </Box>\n                </Box>\n                <Typography fontWeight={600} paddingY={1} color='black'>\n                    Você selecionou {files.length} arquivo{files.length > 1 && 's'}\n                </Typography>\n                {files.length > 0 && (\n                    <TableContainer component={Paper}>\n                        <Stack direction='column'>\n                            {files.map((x) => (\n                                <Stack key={x.name} direction='row' justifyContent='space-between' padding={0.5}>\n                                    <Box>\n                                        <Stack direction='row' spacing={2}>\n                                            {filesLoaded.includes(x.id) ? <DoneIcon sx={{ fill: '#06d6a0' }} /> : <CircularProgress size={22} sx={{ color: 'black' }} />}\n                                            <PictureAsPdf color='error' />\n                                            <Typography fontWeight={600}>{x.name}</Typography>\n                                        </Stack>\n                                    </Box>\n                                    <Box>\n                                        {filesLoaded.includes(x.id) && (\n                                            <Button\n                                                variant='contained'\n                                                size='small'\n                                                sx={{ textTransform: 'none', backgroundColor: '#d1495b', '&:hover': { backgroundColor: '#c1121f' } }}\n                                                onClick={(e) => deleteFile(e, x.id)}\n                                                startIcon={<Delete />}\n                                            >\n                                                Remover\n                                            </Button>\n                                        )}\n                                    </Box>\n                                </Stack>\n                            ))}\n                        </Stack>\n                    </TableContainer>\n                )}\n                {errorMsg && (\n                    <>\n                        <Typography variant='caption' color='#e53935' fontWeight={600} fontSize={14} paddingTop={2}>\n                            {errorMsg}\n                        </Typography>\n                        <br />\n                    </>\n                )}\n                {get(context?.errors, name!) && (\n                    <Typography variant='caption' color='#e53935' fontWeight={600} fontSize={14}>\n                        * O campo de arquivo é obrigatório\n                    </Typography>\n                )}\n            </Box>\n        </Grid>\n    )\n}\n","import React, { ReactElement, useState } from 'react'\nimport { Control, FieldValues, useForm, UseFormReturn } from 'react-hook-form'\nimport { FormContext } from '../../context/form'\nimport type { FilesID } from '../../types/form'\nimport { toast } from 'react-toastify'\n\ninterface FormProviderProps<T extends FieldValues> {\n    children: ReactElement | ReactElement[]\n    onSubmit: (data: T, filesUid: FilesID) => void\n    formMethod?: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'UPDATE'\n    submiting?: boolean\n}\n\nexport default function FormProvider<T extends FieldValues>({ children, onSubmit, formMethod = 'GET', submiting = false }: FormProviderProps<T>) {\n    const { register, handleSubmit, control, formState, reset, watch, trigger, setValue, unregister, getValues } = useForm<T>()\n\n    const [filesUid, setFilesUid] = useState<FilesID>([])\n\n    return (\n        <FormContext.Provider\n            value={{\n                formRegister: register as UseFormReturn<FieldValues>['register'], // Cast `register` to a compatible type\n                formWatch: watch as UseFormReturn<FieldValues>['watch'], // Cast `watch` to a compatible type\n                formReset: reset as UseFormReturn<FieldValues>['reset'], // Cast `reset` to a compatible type\n                formControl: control as Control<FieldValues, any>,\n                formSetValue: setValue as UseFormReturn<FieldValues>['setValue'], // Cast `setValue` to a compatible type\n                formTrigger: trigger as UseFormReturn<FieldValues>['trigger'], // Cast `trigger` to a compatible type\n                formUnregister: unregister as UseFormReturn<FieldValues>['unregister'], // Cast `unregister` to a compatible type\n                formGetValues: getValues as UseFormReturn<FieldValues>['getValues'], // Cast `getValues` to a compatible type\n                formHandleSubmit: handleSubmit as UseFormReturn<FieldValues>['handleSubmit'], // Cast `handleSubmit` to a compatible type\n                setFilesUid: setFilesUid,\n                formState: formState as UseFormReturn<FieldValues>['formState'],\n                errors: formState?.errors,\n                submiting: submiting,\n            }}\n        >\n            <form\n                method={formMethod}\n                onSubmit={handleSubmit(\n                    (data) => onSubmit(data, filesUid),\n                    () =>\n                        toast('Formulário incompleto! Verifique os campos marcados e tente novamente.', {\n                            type: 'warning',\n                            position: 'top-right',\n                            theme: 'colored',\n                        })\n                )}\n            >\n                {children}\n            </form>\n        </FormContext.Provider>\n    )\n}\n","import { Grid, InputLabel, TextField, Typography } from '@mui/material'\nimport { LocalizationProvider } from '@mui/x-date-pickers'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport { DatePicker as MUIDatePicker } from '@mui/x-date-pickers'\nimport dayjs, { Dayjs } from 'dayjs'\nimport 'dayjs/locale/pt-br'\nimport get from 'lodash.get'\nimport hasIn from 'lodash.hasin'\nimport React, { useEffect, useState } from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nexport default function GenericDatePicker({\n    name,\n    required = false,\n    title,\n    xs = 12,\n    sm,\n    md,\n    minDt,\n    defaultValue,\n    persistValue,\n    maxDt,\n    ...props\n}: {\n    minDt?: string\n    maxDt?: string\n    name: string\n    title?: string\n    required?: boolean\n    defaultValue?: string\n    persistValue?: boolean\n    xs?: number\n    sm?: number\n    md?: number\n}) {\n    const context = useFormContext()\n\n    const [value, setValue] = useState<Dayjs | undefined>(defaultValue !== undefined ? dayjs(defaultValue, 'DD/MM/YYYY') : undefined)\n\n    const handleChange = (newValue: Dayjs | null) => {\n        setValue(undefined)\n    }\n\n    useEffect(() => {\n        if (value === undefined) return\n        context.setValue(name, value ? value.format('DD/MM/YYYY') : value)\n    }, [value])\n\n    useEffect(() => {\n        // Vamos executar o unregister em casos em que não queremos persistir o valor\n        if (persistValue) return\n        return () => {\n            context.unregister(name)\n        }\n    }, [])\n\n    return (\n        <>\n            <Grid item {...{ xs, sm, md }}>\n                {title && <InputLabel required={required}>{title}</InputLabel>}\n                <LocalizationProvider adapterLocale={'pt-br'} dateAdapter={AdapterDayjs}>\n                    <MUIDatePicker\n                        minDate={dayjs(minDt, 'DD/MM/YYYY')}\n                        maxDate={dayjs(maxDt, 'DD/MM/YYYY')}\n                        format='DD/MM/YYYY'\n                        value={value}\n                        onChange={handleChange}\n                        disableHighlightToday\n                        sx={{\n                            outline: get(context.formState.errors, name!) ? '1px solid #a51c30' : '',\n                            backgroundColor: 'white',\n                            width: '100%',\n                            div: {\n                                input: {\n                                    paddingX: 2,\n                                    paddingY: 1.05,\n                                },\n                            },\n                        }}\n                        inputRef={(params: any) => (\n                            <TextField\n                                size='small'\n                                {...params}\n                                {...context?.register(name!, {\n                                    validate: (v, f) => {\n                                        if (!hasIn(f, name)) {\n                                            return true\n                                        }\n\n                                        if (!v) v = ''\n\n                                        if (v.length <= 0 && required) return 'Este campo é obrigatório'\n                                        if (v.length < 10 && required) return 'A data precisa seguir o padrão DD/MM/AAAA'\n\n                                        if (minDt && !(dayjs(minDt, 'DD/MM/YYYY').isSame(dayjs(v, 'DD/MM/YYYY')) || dayjs(minDt, 'DD/MM/YYYY').isBefore(dayjs(v, 'DD/MM/YYYY'))))\n                                            return `A data tem que ser depois de ${minDt} e antes de ${maxDt}`\n\n                                        if (maxDt && !(dayjs(maxDt, 'DD/MM/YYYY').isSame(dayjs(v, 'DD/MM/YYYY')) || dayjs(maxDt, 'DD/MM/YYYY').isAfter(dayjs(v, 'DD/MM/YYYY'))))\n                                            return 'A data escolhida não é válida'\n                                    },\n                                    shouldUnregister: true,\n                                })}\n                                fullWidth\n                            />\n                        )}\n                    />\n                    <Typography sx={{ color: '#a51c30', fontSize: 14, paddingLeft: 1 }}>{get(context.formState.errors, name!)?.message as string}</Typography>\n                </LocalizationProvider>\n            </Grid>\n        </>\n    )\n}\n","import { Grid, TextField } from '@mui/material'\nimport InputLabel from '@mui/material/InputLabel'\nimport get from 'lodash.get'\nimport React, { useEffect } from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nexport default function MultInput({\n    name,\n    required = false,\n    title,\n    customPlaceholder,\n    defaultValue = '',\n    xs = 12,\n    sm,\n    watchValue = '',\n    inputMinLength = 3,\n    inputMaxLength = 255,\n    md,\n    ...props\n}: {\n    name: string\n    title?: string\n    watchValue?: string\n    customPlaceholder?: string\n    required?: boolean\n    defaultValue?: string\n    inputMinLength?: number\n    inputMaxLength?: number\n    xs?: number\n    sm?: number\n    md?: number\n}) {\n    const context = useFormContext()\n\n    useEffect(() => {\n        context.setValue(name, watchValue)\n    }, [watchValue])\n\n    return (\n        <Grid item {...{ xs, sm, md }}>\n            {title && (\n                <InputLabel required={required} sx={{ textTransform: 'capitalize' }}>\n                    {title}\n                </InputLabel>\n            )}\n            <TextField\n                multiline\n                fullWidth\n                minRows={3}\n                defaultValue={defaultValue}\n                {...context.register(name!, {\n                    validate: (v, f) => {\n                        if (required && v.length <= 0) return 'Este campo é obrigatório'\n\n                        if (v.length > inputMaxLength) return `Limite máximo de ${inputMaxLength} caracteres`\n                        if (v.length < inputMinLength && required) return `Limite mínimo de ${inputMinLength} caracteres`\n                    },\n                })}\n                error={get(context.formState.errors, name!) ? true : false}\n                helperText={get(context.formState.errors, name!)?.message as string}\n                sx={{\n                    bgcolor: 'white',\n                }}\n                placeholder={customPlaceholder ? customPlaceholder : title}\n            />\n        </Grid>\n    )\n}\n","import { useRouter } from 'next/router'\nimport React, { useEffect, useState } from 'react'\nimport { AuthContext } from '../../context/auth'\n\nimport Keycloak from 'keycloak-js'\nimport { User } from '../../types/auth'\n\nexport const cookieName = 'nextauth.token'\nconst userImgName = 'user-data.img'\n\nexport function KeycloakAuthProvider({\n    url,\n    realm,\n    clientId,\n    children,\n    type = 'ad',\n    resource_name = 'eventos-front',\n    redirectUri = '',\n}: {\n    url: string\n    realm: string\n    clientId: string\n    children: JSX.Element | JSX.Element[]\n    type?: 'govbr' | 'ad'\n    resource_name?: string\n    redirectUri?: string\n}) {\n    const [user, setUser] = useState<User | null | undefined>()\n    const [userLoaded, setUserLoaded] = useState(false)\n\n    const [kc, setKc] = useState<Keycloak | null>(null)\n\n    const router = useRouter()\n    const isAuth = !!user\n\n    useEffect(() => {\n        const keycloak = new Keycloak({\n            url: url,\n            realm: realm,\n            clientId: clientId,\n        })\n\n        setKc(keycloak)\n\n        keycloak.onTokenExpired = async () => {\n            console.log('token expired')\n\n            try {\n                const refreshed = await keycloak.updateToken(5)\n\n                if (refreshed) {\n                    setUser((prevUser) => ({ ...prevUser, token: keycloak.token } as User))\n                }\n\n                console.log(refreshed ? 'Token was refreshed' : 'Token is still valid')\n            } catch (error) {\n                console.log('Failed to refresh token', error)\n            }\n        }\n\n        keycloak\n            .init({\n                onLoad: 'check-sso', // check-sso | login-required\n                pkceMethod: 'S256',\n            })\n            .then(\n                (auth) => {\n                    setUserLoaded(true)\n\n                    if (!auth) {\n                        console.log('NAO AUTENTICADO')\n                        //window.location.reload();\n                    } else {\n                        const tokenParsed = keycloak.tokenParsed\n\n                        console.log('TOKEN-> ', tokenParsed)\n\n                        const userData: User = {\n                            ...tokenParsed,\n                            token: keycloak.token,\n                            roles: (((tokenParsed?.resource_access ?? {})[resource_name] ?? []) as any).roles,\n                        }\n\n                        setUser(userData)\n                        console.info('Authenticated!!!')\n                    }\n                },\n                () => {\n                    console.error('Authenticated Failed')\n                }\n            )\n            .catch((err) => console.log(err))\n\n        const s = router.query['status']\n        if (!s) return\n\n        if (s === 'success') {\n            window.history.replaceState(null, '', '/')\n        }\n    }, [])\n\n    function login() {\n        console.log('Tentando logar...')\n        console.log('KC: ', {\n            instancia: kc,\n            logado: kc?.authenticated,\n            client_id: kc?.clientId,\n        })\n\n        kc?.login({ redirectUri })\n    }\n\n    function logout() {\n        setUserLoaded(false)\n\n        kc?.logout()\n\n        setUser(null)\n        localStorage.removeItem(userImgName)\n    }\n\n    return <AuthContext.Provider value={{ user, isAuth, userLoaded, login, logout, saveUserData: () => {}, type }}>{children}</AuthContext.Provider>\n}\n","import { Grid, TextField } from '@mui/material'\nimport InputLabel from '@mui/material/InputLabel'\nimport get from 'lodash.get'\nimport React, { useContext, useEffect } from 'react'\nimport { FormContext } from '../../../context/form'\n\nexport default function MultInput({\n    name,\n    required = false,\n    title,\n    customPlaceholder,\n    defaultValue = '',\n    xs = 12,\n    sm,\n    watchValue = '',\n    inputMinLength = 3,\n    inputMaxLength = 255,\n    md,\n    ...props\n}: {\n    name: string\n    title?: string\n    watchValue?: string\n    customPlaceholder?: string\n    required?: boolean\n    defaultValue?: string\n    inputMinLength?: number\n    inputMaxLength?: number\n    xs?: number\n    sm?: number\n    md?: number\n}) {\n    const context = useContext(FormContext)!\n\n    useEffect(() => {\n        context.formSetValue(name, watchValue)\n    }, [watchValue])\n\n    return (\n        <Grid item {...{ xs, sm, md }}>\n            {title && (\n                <InputLabel required={required} sx={{ textTransform: 'capitalize' }}>\n                    {title}\n                </InputLabel>\n            )}\n            <TextField\n                multiline\n                fullWidth\n                minRows={3}\n                defaultValue={defaultValue}\n                {...context.formRegister(name!, {\n                    validate: (v, f) => {\n                        if (required && v.length <= 0) return 'Este campo é obrigatório'\n\n                        if (v.length > inputMaxLength) return `Limite máximo de ${inputMaxLength} caracteres`\n                        if (v.length < inputMinLength && required) return `Limite mínimo de ${inputMinLength} caracteres`\n                    },\n                })}\n                error={get(context.errors, name!) ? true : false}\n                helperText={get(context.errors, name!)?.message as string}\n                sx={{\n                    bgcolor: 'white',\n                }}\n                placeholder={customPlaceholder ? customPlaceholder : title}\n            />\n        </Grid>\n    )\n}\n","import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\nimport LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined'\nimport MenuIcon from '@mui/icons-material/Menu'\nimport PersonIcon from '@mui/icons-material/Person'\nimport { AppBar, Avatar, Box, Button, IconButton, Menu, MenuItem, Stack, Typography } from '@mui/material'\nimport LinearProgress from '@mui/material/LinearProgress'\nimport Image from 'next/image'\nimport Link from 'next/link'\nimport { NextRouter, useRouter } from 'next/router'\nimport React, { useCallback, useContext, useState } from 'react'\nimport { AuthContext } from '../../context/auth'\n\nexport default function NavBar({\n    links,\n    title,\n    img,\n    pos = 'fixed',\n    next = true,\n    el,\n    menuItems,\n    paddingBottom = 0,\n    logoutMsg = 'Sair',\n    logoutFunc,\n    ...props\n}: {\n    links: { name: string; path: string }[]\n    title: string\n    img: string\n    paddingBottom?: number\n    menuItems: JSX.Element | JSX.Element[]\n    next?: boolean\n    el?: JSX.Element\n    logoutMsg?: string\n    logoutFunc?: () => Promise<void>\n    pos?: 'fixed' | 'inherit'\n}) {\n    let router: NextRouter | undefined | null = undefined\n    if (next) router = useRouter()\n\n    const { user, login, logout, type } = useContext(AuthContext)\n\n    const [anchor, setAnchor] = useState(null)\n    const [avatarAnchor, setAvatarAnchor] = useState(null)\n\n    const menuOpen = Boolean(anchor)\n    const avatarMenu = Boolean(avatarAnchor)\n    const [loading, setLoading] = useState(false)\n\n    const onMenuClick = useCallback((e: React.MouseEvent) => {\n        setAnchor(e.currentTarget as any)\n    }, [])\n\n    const closeMenu = useCallback(() => {\n        setAnchor(null)\n    }, [])\n\n    const onMenuItemClick = useCallback(\n        (e: React.MouseEvent, link: string) => {\n            setLoading(true)\n            setAnchor(null)\n\n            if (router)\n                router\n                    .push({\n                        pathname: link,\n                    })\n                    .finally(() => setLoading(false))\n            else {\n                setLoading(false)\n            }\n        },\n        [router]\n    )\n\n    function changeRoute(e: React.MouseEvent, path: string) {\n        setLoading(true)\n\n        if (router) {\n            router\n                .push({\n                    pathname: path,\n                })\n                .finally(() => setLoading(false))\n        } else {\n            setLoading(false)\n        }\n    }\n\n    return (\n        <>\n            <Box position={pos} sx={{ width: '100%', zIndex: 100 }}>\n                <AppBar position='relative' elevation={0} sx={{ backgroundColor: '#F1F5F9', color: 'black', paddingY: 1, paddingX: { xs: 1, md: 4 } }}>\n                    <Stack direction='row' justifyContent='space-between'>\n                        <Stack direction='row' alignItems='center' spacing={2} marginRight={2} sx={{ display: { xs: 'none', md: 'flex' }, width: '100%' }}>\n                            <Link href='/'>{next ? <Image src={img} alt={title} width={40} height={40} /> : <img src={img} height={35} />}</Link>\n                            <Box>\n                                <Typography variant='subtitle1' fontWeight={600}>\n                                    {title}\n                                </Typography>\n                            </Box>\n                        </Stack>\n                        {/* mobile */}\n                        <Box\n                            sx={{\n                                display: {\n                                    xs: 'flex',\n                                    md: 'none',\n                                },\n                            }}\n                        >\n                            {links.length > 0 && (\n                                <>\n                                    <IconButton onClick={onMenuClick}>\n                                        <MenuIcon />\n                                    </IconButton>\n                                    <Menu open={menuOpen} onClose={closeMenu} anchorEl={anchor}>\n                                        {links.map((x) => (\n                                            <MenuItem key={`navmenu${x}`} onClick={(e) => onMenuItemClick(e, x.path)}>\n                                                <Typography textTransform='capitalize'>{x.name}</Typography>\n                                            </MenuItem>\n                                        ))}\n                                    </Menu>\n                                </>\n                            )}\n                        </Box>\n\n                        {/* Desktop */}\n                        <Stack direction='row' justifyContent='flex-end' alignItems='center' sx={{ width: { md: '100%' } }}>\n                            <Stack direction='row' spacing={2} sx={{ display: { xs: 'none', md: 'flex' } }}>\n                                {links.map((x) => (\n                                    <Box\n                                        key={`navigation${x.path}`}\n                                        sx={{\n                                            a: {\n                                                color: '#2c7da0',\n                                                textDecoration: 'none',\n                                                textTransform: 'capitalize',\n                                                '&:hover': {\n                                                    color: '#90e0ef',\n                                                },\n                                            },\n                                        }}\n                                    >\n                                        {/* <Link href={x.path} onClick={changeRoute}>\n                                            {x.name}\n                                        </Link> */}\n                                        <Button onClick={(e) => changeRoute(e, x.path)} sx={{ textTransform: 'capitalize' }}>\n                                            {x.name}\n                                        </Button>\n                                    </Box>\n                                ))}\n                            </Stack>\n                            <Stack direction='row' spacing={2}>\n                                <Box>{el}</Box>\n\n                                {user ? (\n                                    <Stack\n                                        direction='row'\n                                        spacing={1}\n                                        sx={{\n                                            '&:hover': {\n                                                backgroundColor: '#a9def9',\n                                                cursor: 'pointer',\n                                            },\n                                            padding: 0.5,\n                                            borderRadius: 60,\n                                        }}\n                                    >\n                                        <Box sx={{ display: 'flex', alignItems: 'center' }}>\n                                            <Avatar sx={{ width: 30, height: 30 }} src={user.image as string} />\n                                            <Menu\n                                                open={avatarMenu}\n                                                onClose={(e) => setAvatarAnchor(null)}\n                                                anchorEl={avatarAnchor}\n                                                disableScrollLock={true}\n                                                transformOrigin={{ horizontal: 'right', vertical: 'top' }}\n                                                anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n                                                sx={{ '.MuiMenu-paper': { borderRadius: 4 } }}\n                                            >\n                                                {menuItems}\n\n                                                <MenuItem\n                                                    onClick={async (e) => {\n                                                        setAvatarAnchor(null)\n                                                        if (!!logoutFunc) {\n                                                            try {\n                                                                await logoutFunc()\n                                                            } catch (error) {\n                                                                console.error(error)\n                                                            }\n                                                        }\n                                                        logout()\n                                                    }}\n                                                >\n                                                    <Stack direction='row' spacing={1}>\n                                                        <LogoutOutlinedIcon sx={{ fill: '#545454' }} />\n                                                        <Typography textTransform='capitalize'>{logoutMsg}</Typography>\n                                                    </Stack>\n                                                </MenuItem>\n                                            </Menu>\n                                        </Box>\n                                        <Stack direction='row' spacing={0.4} alignItems='center' onClick={(e) => setAvatarAnchor(e.currentTarget as any)} sx={{ userSelect: 'none' }}>\n                                            <Typography>Olá,</Typography>\n                                            <Typography fontWeight={600}>{(user as any)?.given_name}</Typography>\n                                            <KeyboardArrowDownIcon />\n                                        </Stack>\n                                    </Stack>\n                                ) : type === 'govbr' ? (\n                                    <Button\n                                        variant='contained'\n                                        size='small'\n                                        startIcon={<PersonIcon />}\n                                        onClick={login}\n                                        sx={{ color: 'white', textTransform: 'inherit', borderRadius: 50, paddingX: 2 }}\n                                    >\n                                        <Typography fontWeight={600} fontSize={15} padding={0.4}>\n                                            Entrar com o gov.br\n                                        </Typography>\n                                    </Button>\n                                ) : (\n                                    <Button\n                                        variant='contained'\n                                        size='small'\n                                        startIcon={<PersonIcon />}\n                                        onClick={login}\n                                        sx={{ color: 'white', textTransform: 'inherit', borderRadius: 50, paddingX: 2 }}\n                                    >\n                                        <Typography fontWeight={600} fontSize={15} padding={0.4}>\n                                            Entrar\n                                        </Typography>\n                                    </Button>\n                                )}\n                            </Stack>\n                        </Stack>\n                    </Stack>\n                </AppBar>\n                {loading && <LinearProgress />}\n            </Box>\n            <Box paddingBottom={paddingBottom} />\n        </>\n    )\n}\n","import { Box, Checkbox, Grid, Stack, TextField } from '@mui/material'\nimport get from 'lodash.get'\nimport React, { useContext, useEffect } from 'react'\nimport { FormContext } from '../../../context/form'\nimport { SwitchWatch } from '../switch/ToggleVisibility'\n\nexport default function SSPOtherCheckBox({ name, required = false, xs = 12, sm, md }: { name: string; required?: boolean; xs?: number; sm?: number; md?: number }) {\n    const context = useContext(FormContext)!\n    const checkName = `switch-${name}`\n\n    useEffect(() => {\n        const checkValue = context.formWatch(checkName)\n\n        if (!checkValue) context.formSetValue(name, undefined)\n    }, [context])\n\n    return (\n        <Grid item {...{ xs, sm, md }}>\n            <Stack direction='row'>\n                <Box>\n                    <Checkbox size='small' {...context.formRegister(checkName)} sx={{ paddingLeft: 0, margin: 0 }} />\n                </Box>\n                {context.formWatch(checkName) ? (\n                    <TextField\n                        size='small'\n                        {...context.formRegister(name!, {\n                            validate: (v, f) => {\n                                const value = context.formWatch(checkName)\n                                if (value === true) {\n                                    if (!v || (v.length <= 0 && required)) return 'Este campo não pode ser vazio'\n                                }\n                            },\n                        })}\n                        required\n                        error={get(context.errors, name!) ? true : false}\n                        helperText={get(context.errors, name!)?.message as string}\n                        placeholder='Outro'\n                    />\n                ) : (\n                    <TextField size='small' disabled placeholder='Outro' />\n                )}\n            </Stack>\n        </Grid>\n    )\n}\n","import React from 'react'\nimport { ToastContainer } from 'react-toastify'\n\nimport { CustomModalProvider } from '../modal/Modal'\n\n// import '../../css/ReactToastify.css'\n\n//components principal da aplicação\nexport function SspComponentsProvider(props: { children: JSX.Element | JSX.Element[] }) {\n    return (\n        <>\n            <CustomModalProvider />\n            {props.children}\n            <ToastContainer position='bottom-right' theme='colored' />\n        </>\n    )\n}\n","import { Grid, InputLabel, TextField, Typography } from '@mui/material'\nimport { LocalizationProvider, TimePicker as MUITimePicker } from '@mui/x-date-pickers'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport dayjs, { Dayjs } from 'dayjs'\nimport get from 'lodash.get'\nimport 'dayjs/locale/pt-br'\nimport React, { useContext, useEffect, useState } from 'react'\nimport { FormContext } from '../../../context/form'\nimport hasIn from 'lodash.hasin'\n\nexport default function TimePicker({\n    name,\n    required = false,\n    title,\n    defaultValue = '',\n    xs = 12,\n    sm,\n    md,\n}: {\n    name: string\n    title?: string\n    required?: boolean\n    defaultValue?: string\n    xs?: number\n    sm?: number\n    md?: number\n}) {\n    const context = useContext(FormContext)!\n    const [value, setValue] = useState<Dayjs | null>(defaultValue ? dayjs(defaultValue, 'HH:mm') : null)\n\n    const handleChange = (newValue: Dayjs | null) => {\n        setValue(newValue)\n    }\n\n    useEffect(() => {\n        context.formSetValue(name, value ? value.format('HH:mm') : value)\n    }, [value])\n\n    useEffect(() => {\n        return () => {\n            context.formUnregister(name)\n        }\n    }, [])\n\n    return (\n        <Grid item {...{ xs, sm, md }}>\n            {title && <InputLabel required={required}>{title}</InputLabel>}\n            <LocalizationProvider adapterLocale={'pt-br'} dateAdapter={AdapterDayjs}>\n                <MUITimePicker\n                    value={value}\n                    ampm={false}\n                    onChange={handleChange}\n                    sx={{\n                        outline: get(context.errors, name!) ? '1px solid #a51c30' : '',\n                        backgroundColor: 'white',\n                        width: '100%',\n                        div: {\n                            input: {\n                                paddingX: 2,\n                                paddingY: 1.05,\n                            },\n                        },\n                    }}\n                    inputRef={(params: any) => (\n                        <TextField\n                            size='small'\n                            {...params}\n                            {...context?.formRegister(name!, {\n                                validate: (v, f) => {\n                                    if (!hasIn(f, name)) {\n                                        return true\n                                    }\n                                    if (!v) v = ''\n\n                                    if (v.length <= 0 && required) return 'Este campo é obrigatório'\n                                    if (v.length < 5 && required) return 'A hora precisa seguir o padrão HH:MM'\n                                },\n                                shouldUnregister: true,\n                            })}\n                            fullWidth\n                        />\n                    )}\n                />\n                <Typography sx={{ color: '#a51c30', fontSize: 15, paddingLeft: 1 }}>{get(context.errors, name!)?.message as string}</Typography>\n            </LocalizationProvider>\n        </Grid>\n    )\n}\n"],"names":["AuthContext","createContext","FormContext","getChildrenNames","children","arr","forEach","x","props","childrenArr","Array","isArray","concat","name","push","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","isPlainObject","item","constructor","deepClone","output","keys","deepmerge","options","clone","b","Symbol","for","c","d","e","f","g","h","k","l","m","n","p","q","r","t","v","w","y","z","a","u","$$typeof","type","A","process","env","NODE_ENV","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","typeOf","object","$$typeofType","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isConcurrentMode","exports","AsyncMode","isAsyncMode","console","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","module","require$$0","require$$1","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","objectAssign","test1","String","getOwnPropertyNames","test2","fromCharCode","order2","map","join","test3","split","letter","err","shouldUseNative","from","symbols","to","val","TypeError","toObject","s","has","Function","printWarning","ReactPropTypesSecret","loggedTypeFailures","text","message","error","Error","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","ex","stack","resetWarningCache","emptyFunctionThatReturnsNull","emptyFunction","emptyFunctionWithReset","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","number","string","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","propName","propFullName","PropTypeError","propValue","getPropType","element","elementType","ReactIs","instanceOf","expectedClass","node","isNode","objectOf","propType","oneOf","expectedValues","is","valuesString","JSON","stringify","value","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","data","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","shim","getShim","require$$2","getModuleId","REACT_MODULE_REFERENCE","REACT_SERVER_CONTEXT_TYPE","REACT_OFFSCREEN_TYPE","SuspenseList","hasWarnedAboutDeprecatedIsConcurrentMode","isSuspenseList","undefined","fnNameMatchRegex","getFunctionComponentName","Component","fallback","displayName","fn","match","getFunctionName","getWrappedName","outerType","innerType","wrapperName","functionName","capitalize","code","url","encodeURIComponent","_formatMuiErrorMessage","charAt","toUpperCase","slice","resolveProps","defaultProps","toString","defaultSlotProps","slotProps","slotPropName","defaultGenerator","ClassNameGenerator$1","generate","configure","generator","reset","createClassNameGenerator","globalStateClassesMapping","active","checked","completed","disabled","readOnly","expanded","focused","focusVisible","required","selected","_objectWithoutPropertiesLoose","excluded","sourceKeys","indexOf","_excluded","shape$1","borderRadius","responsivePropType$1","merge","acc","xs","sm","md","lg","xl","defaultBreakpoints","up","handleBreakpoints","styleFromPropValue","theme","themeBreakpoints","breakpoints","reduce","index","breakpoint","createEmptyBreakpointObject","breakpointsInput","_breakpointsInput$key","removeUnusedBreakpoints","breakpointKeys","style","breakpointOutput","resolveBreakpointValues","breakpointValues","base","customBase","breakpointsKeys","computeBreakpointsBase","previous","getPath","obj","path","checkVars","vars","getStyleValue","themeMapping","transform","propValueFinal","userValue","prop","cssProperty","themeKey","propTypes","responsivePropType","filterProps","properties","directions","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","cache","arg","property","direction","dir","memoize","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","defaultValue","_getPath","themeSpacing","abs","Number","isInteger","createUnarySpacing","getValue","transformer","transformed","Math","cssProperties","getStyleFromPropValue","resolveCssProperty","margin","padding","compose","styles","handlers","borderTransform","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","gap","columnGap","rowGap","paletteTransform","sizingTransform","width","maxWidth","_props$theme","_props$theme$breakpoi","_props$theme$breakpoi2","breakpointsValues","minWidth","height","maxHeight","minHeight","defaultSxConfig$1","color","bgcolor","backgroundColor","pt","pr","pb","pl","px","py","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mt","mr","mb","ml","mx","my","marginTop","marginRight","marginBottom","marginLeft","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","display","overflow","textOverflow","visibility","whiteSpace","flexBasis","flexDirection","flexWrap","justifyContent","alignItems","alignContent","order","flex","flexGrow","flexShrink","alignSelf","justifyItems","justifySelf","gridColumn","gridRow","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","position","zIndex","top","right","bottom","left","boxShadow","boxSizing","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","textTransform","lineHeight","textAlign","typography","styleFunctionSx","getThemeValue","config","_theme$unstable_sxCon","sx","unstable_sxConfig","defaultSxConfig","traverse","sxInput","sxObject","emptyBreakpoints","css","styleKey","maybeFn","objects","union","Set","size","objectsHaveSameKeys","unstable_createStyleFunctionSx","styleFunctionSx$1","createTheme","args","palette","paletteInput","spacing","spacingInput","shapeInput","other","unit","sortedValues","breakpointsAsArray","sort","breakpoint1","breakpoint2","sortBreakpointsValues","down","between","start","end","endIndex","only","not","keyIndex","replace","createBreakpoints","mui","argsInput","argument","createSpacing","muiTheme","components","mode","unstable_sx","systemDefaultTheme","clsx","isEmpty","propsToClassKey","variant","classKey","shouldForwardProp","resolveTheme","defaultTheme","themeId","styled","input","rootShouldForwardProp","slotShouldForwardProp","systemSx","__mui_systemSx","tag","inputOptions","processor","__emotion_styles","filter","processStyles","slot","componentSlot","skipVariantsResolver","inputSkipVariantsResolver","skipSx","inputSkipSx","overridesResolver","label","toLowerCase","shouldForwardPropOption","charCodeAt","isStringTag","defaultStyledResolver","stylesFactory","emStyled","component","some","styledEngineStyled","muiStyledResolver","styleArg","expressions","expressionsWithDefaultTheme","stylesArg","__emotion_real","transformedStyleArg","styleOverrides","getStyleOverrides","resolvedStyleOverrides","slotKey","slotStyle","_theme$components","_theme$components$nam","ownerState","variantsStyles","themeVariants","variants","themeVariant","isMatch","variantsResolver","definition","getVariantStyles","numOfCustomFnsApplied","placeholders","fill","raw","render","getDisplayName","muiName","withConfig","createStyled","systemStyled","getThemeProps","params","defaultCreateStyledComponent","root","useThemePropsDefault","contextTheme","React","useContext","ThemeContext","useThemeWithoutDefault","useTheme","useThemePropsSystem","joinChildren","separator","childrenArray","Children","toArray","Boolean","child","cloneElement","directionValues","spacingValues","useFlexGap","row","column","mergedOutput","prev","mergeBreakpointsInOrder","Stack","createStyledComponent","useThemeProps","StackRoot","forwardRef","inProps","ref","inSx","systemProps","otherProps","_props$theme$unstable","result","splitProps","finalSx","extendSxProp","divider","className","classes","slots","getUtilityClass","utilityClass","composeClasses","globalStatePrefix","globalStateClass","ClassNameGenerator","generateUtilityClass","_jsx","jsx","as","createStack","Stack$1","PDFIcon","SvgIcon","_jsxs","jsxs","viewBox","xmlns","TrashIcon","bytesToKBorMB","bytes","MB","toFixed","Switch","defaultChecked","context","useEffect","formSetValue","yesMessage","useMemo","overrideYes","noMessage","overrideNo","title","InputLabel","FormControlLabel","control","MUISwitch","formRegister","Typography","userSelect","formWatch","Switch$1","memo","ToggleVisibility","invert","hasCheckValue","switchId","unregisterNameList","formUnregister","SwitchWatch","checkValue","TextMaskCustom","onChange","maskProps","onMask","maskValue","setMaskValue","watchValue","mask","setMask","useState","myRef","useRef","myValue","setMyValue","current","IMaskInput","inputRef","onAccept","updateValue","MaskInput","_Fragment","TextField","formConfig","onInput","InputProps","inputComponent","inputProps","fullWidth","Input","numberMask","inputMinLength","inputMaxLength","Grid","htmlFor","chooseInput","inputConfig","placeholder","customPlaceholder","errorData","get","errors","helperText","test","definitions","useDefault","methods","useFormContext","setValue","formState","register","getKeys","id","files","Stepper","debugLog","testConfig","customMarginBottom","nRef","activeStep","setActiveStep","stepperBlocks","idx","prefix","maxSteps","Box","Button","onClick","preencher","Promise","resolve","setTimeout","then","click","hidden","MobileStepper","steps","useMediaQuery","backButton","startIcon","KeyboardArrowLeft","handleBack","prevActiveStep","nextButton","endIcon","KeyboardArrowRight","log","formGetValues","formTrigger","toast","reject","LoadingButton","loading","submiting","loadingPosition","SaveIcon","nextCheck","preventDefault","Stepper$1","childrenTree","newChildren","cIdx","StepperBlock","optional","optionalMessage","switchName","cloneChildren","ContentPasteOutlinedIcon","overrideSwitchNo","overrideSwitchYes","container","MODAL","open","close","openReparented","reparent","CustomModalProvider","setOpen","content","setContent","handleClose","isDesktop","idRef","setIdRef","currentId","setCurrentId","customCompoment","Modal","onClose","transition","cursor","CloseRoundedIcon","SwipeableDrawer","anchor","onOpen","PaperProps","Bt","customColor","customFontColor","bgColor","tinycolor","toHexString","darken","CustomMenu","anchorEl","setAnchorEl","btProps","event","currentTarget","Menu","MenuListProps","MenuItem","removePunctuationAndAccents","normalize","formatarString","str","trim","startData","isExpandAll","localTableName","orderAsc","filtersFuncData","localTableNameCache","GenericTable","mediaQueryLG","columns","emptyMsg","user","public","dataPath","tableName","csv","columnSize","action","useKC","statusKeyName","csvExcludeKeys","csvExcludeKeysCSV","csvExcludeKeysAll","csvCustomKeyNames","csvExcludeValidate","csvButtonTitle","csvNoZipText","csvAllButtonTitle","removeQuotes","csvShowAllButton","csvWithoutZip","itemCount","csvUpper","csvZipFileNamesKey","generateCsvZip","hideTitleCSV","csvExcludeUpper","multipleDataPath","expandTextMaxLength","collapsedSize","customMargin","customMarginMobile","filtersFunc","filters","orderBy","customErrorMsg","customTableStyle","initialData","isLoading","setError","setData","userLoaded","list","setList","listClone","setListClone","itemsCount","setItemsCount","currentPage","setCurrentPage","paginationCount","setPagCount","listPage","setListPage","expandObj","setExpandObj","showExpandObj","setShowExpandObj","showExpandObjOnExited","setShowExpandObjOnExited","filterKey","setFilterKey","isSmall","filterContainer","localStorage","getItem","setItem","removeItem","getCount","useCallback","countData","count","ceil","getData","dt","filtrar","parse","onPaginationChange","page","getMaxItems","downloadCSV","zip","originalKeys","includes","header","JSZip","objKey","include","strItemAsObject","transformArrayObjectInString","csvData","file","link","window","document","createElement","generateAsync","setAttribute","fileName","dates","dtInicio","hrInicio","hrTermino","encodeURI","o","arrString","downloadCSVAll","getTime","filterData","currentData","operator","value2","filteredData","cd","keyName","useList","dayjs","isValid","isSame","dateA","dateB","isAfter","isBefore","customFunc","isBetween","dtStr","newList","status","ReportProblemRounded","PendingRounded","LinearProgress","Skeleton","startAdornment","SearchIcon","searchValue","listData","dataStr","exists","FilterAlt","CriarFiltro","baseFilters","oldList","aValue","bValue","ordenar","KeyboardArrowDown","KeyboardArrowUp","IconButton","currentValue","Clear","Paper","elevation","rowSpacing","all","Collapse","in","onExited","wordWrap","customComponent","pointerEvents","substring","ExpandLess","ExpandMore","FileDownloadIcon","NavigateNextRoundedIcon","Pagination","renderItem","PaginationItem","siblingCount","resetFields","setResetFields","Refresh","Alert","severity","FilterRow","filterValue","setReset","setDt","valueData","removeDt","splice","Search","currentOperator","setCurrentOperator","FormControl","Select","operators","FilterField","Autocomplete","multiple","renderInput","isOptionEqualToValue","option","LocalizationProvider","adapterLocale","dateAdapter","AdapterDayjs","DatePicker","format","div","TableErrorState","TableLoadingState","filtrarDados","ordenarDados","sortedList","cloneDeep","FilterMenu","Table","csvConfig","fetchFunc","isExpandable","setIsLoading","res","ok","json","j","statusCode","body","newValue","catch","handleCSVDownload","downloadCSVFile","downloadAll","customAll","customFiltered","useFilterValue","onlyAll","onlyFilter","filterValueList","worksheet","XLSX","utils","json_to_sheet","workbook","book_new","book_append_sheet","writeFile","handleFiltrarDados","dadosOrdenados","handleOrdenarDados","Table$1","Map","dynamic","require","ssr","verificarRota","route","startsWith","cookieName","userImgName","setOptions","useQuery","fetch","headers","Authorization","token","onSelect","Checkbox","customText","firstTime","setFirstTime","showAfterFirst","setAfterFirst","names","canContinue","customWarning","Card","minDt","persistValue","maxDt","MUIDatePicker","minDate","maxDate","disableHighlightToday","outline","hasIn","shouldUnregister","tipoArquivo","apiURL","sizeLimit","tstToken","dropZoneOptions","getRootProps","getInputProps","useDropzone","useFsAccessApi","onDrop","dropFiles","setProgress","setErrorMsg","now","fd","FormData","append","axios","post","onUploadProgress","progressEvent","percentCompleted","round","loaded","total","setFiles","fileId","setFilesUid","fId","CO_SEQ_ARQUIVO","CO_TIPO_ARQUIVO","parseInt","setFilesLoaded","fl","setFilesIds","ids","removeFile","progress","filesLoaded","fileIds","errorMsg","hideMsg","idd","DataTransfer","items","add","borderStyle","deleteFile","method","customLoadingText","shouldRefetch","setLoading","loadingText","setLoadingText","dValue","setDValue","onFocus","getOptionDisabled","op","handleAutoCompleteChange","fileURL","fileExt","FileDownload","blob","URL","createObjectURL","href","download","onFile","newFiles","filesTo","accept","capture","disableElevation","InsertDriveFileIcon","CameraAltIcon","TableContainer","DoneIcon","CircularProgress","PictureAsPdf","Delete","forceUpdate","getOptionLabel","onSubmit","formMethod","handleSubmit","watch","trigger","unregister","getValues","useForm","filesUid","Provider","formReset","formControl","formHandleSubmit","multiline","minRows","realm","clientId","resource_name","redirectUri","setUser","setUserLoaded","kc","setKc","router","useRouter","isAuth","keycloak","Keycloak","onTokenExpired","_temp","updateToken","refreshed","prevUser","_catch","init","onLoad","pkceMethod","auth","tokenParsed","userData","roles","resource_access","info","query","history","replaceState","login","instancia","logado","authenticated","client_id","logout","saveUserData","links","img","pos","el","menuItems","logoutMsg","logoutFunc","setAnchor","avatarAnchor","setAvatarAnchor","menuOpen","avatarMenu","onMenuClick","closeMenu","onMenuItemClick","pathname","finally","AppBar","Link","Image","src","alt","MenuIcon","textDecoration","changeRoute","Avatar","image","disableScrollLock","transformOrigin","horizontal","vertical","anchorOrigin","_temp3","_temp2","LogoutOutlinedIcon","given_name","KeyboardArrowDownIcon","PersonIcon","AUTH_URL","oidcConfig","redirectURL","validateTokenRoute","testToken","testIP","logoutURL","govBrURL","authority","scope","redirect_uri","deleteCookie","getCookie","jwt_decode","hostname","setCookie","authData","ssp_token","idToken","id_token","picture","access_token","reader","FileReader","readAsDataURL","onload","base64","checkName","ToastContainer","MUITimePicker","TimePicker","ampm"],"mappings":"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"}